Add motion tokens and interaction choreography (D52) - #22
Merged
Conversation
- Motion tokens + useRowExit two-phase exit-commit hook (D52) - Custom drawn-tick checkbox + satisfying completion choreography - Row-level hover move control and touch swipe gestures via useSwipeAction - task__surface wrapper so a swipe translates row content over a colour cue - Self-labelling, destination-coloured editor move button; fixed action order - Generalised arrival flash (created/completed/moved) across all three columns Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_0138ccb6URP1H46oAjNs3Toz
…3/5/7/8) - WP3: barely-there hover wash on rows, hover-capable media only - WP5: click-away closes and persists the editor (click, not pointerdown) - WP7a: mirror-overlay ochre pill highlighting the live date token - WP7b: add-commit sweep + longer, richer arrival flash + scroll-into-view - WP8: physical rest/hover/press states for handles, mark dot, checkboxes, buttons Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_0138ccb6URP1H46oAjNs3Toz
- DECISIONS.md: D52 (two-phase exit), D53 (move control + swipe), D54 (click-away), D55 (editor consistency), D56 (token highlight + flash), D57 (hover wash + micro-states) - CLAUDE.md: file map + extended D51 interaction-model paragraph - verify/SKILL.md: replace the stale pre-D51 hover-toolbar gotchas with the new .task__move / swipe / animation-commit / click-away recipes Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_0138ccb6URP1H46oAjNs3Toz
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Implements "Warm Bauhaus" motion design and refined interaction feedback across the app, introducing CSS motion tokens, exit-commit animation patterns, and gesture support for touch swipe actions.
Summary
This PR adds a comprehensive motion system to the UI, replacing static interactions with choreographed animations that provide clear feedback for task state changes. It introduces two new custom hooks (
useRowExitanduseSwipeAction) to coordinate animations with state commits, ensuring visual feedback completes before data changes land.Key Changes
Motion tokens & animations:
--dur-quick,--dur-move,--ease-brisk,--ease-settle) tostyles.csswith a "crisp and physical" aesthetic (no bouncy springs)--flash-sage,--hover-wash,--token-wash) for visual feedback across light/dark themestask-completing,task-strike), task entry (task-enter), and add-form feedback (add-sweep,token-pop)Task row interactions (D52):
.taskstructure: visible content now wraps in.task__surfaceto enable swipe translation without moving the row's border or background.task__move) on hover/focus, with destination-coloured stylingCustom checkbox styling (D52/WP8):
Add form enhancements (D52/WP7):
.add__mirror) tracks input text with transparent glyphs, revealing an ochre pill (.add__token) under recognized date tokensTouch swipe gesture (D52):
useSwipeActionhook implements horizontal swipe-to-act for touchExit-commit pattern (D52):
useRowExithook opens an animation window for instant state reducersanimationendevent is droppedColumn flash states:
TodayColumnandDoneColumnnow acceptflashIdprop to highlight newly arrived taskstask--flash(ochre, for created/moved tasks) andtask--flash-done(sage, for completed tasks)Drag handle & mark button feedback:
Edit panel:
edit-panel-in) on mountImplementation Details
:rootonly (theme-independent, crisp aesthetic)prefers-reduced-motion, but animations still fire so commits aren't gated on visible durationhttps://claude.ai/code/session_0138ccb6URP1H46oAjNs3Toz