style: adopt pine motion duration tokens for component transitions#755
Merged
Conversation
There was a problem hiding this comment.
Cursor Bugbot has reviewed your changes and found 1 potential issue.
❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.
Reviewed by Cursor Bugbot for commit f348213. Configure here.
14 tasks
10 tasks
f348213 to
c02baf7
Compare
✅ Deploy Preview for pine-design-system ready!
To edit notification comments on pull requests, go to your Netlify project configuration. |
pixelflips
approved these changes
Jun 3, 2026
pixelflips
left a comment
Member
There was a problem hiding this comment.
Dev qa'd each component and LGTM! 👍🏼
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.

Description
Implementation-plan item #3 (part 1 of 2): adopt the
--pine-motion-*duration tokens (introduced in #736) across component transitions, so they inherit theprefers-reduced-motionoverride automatically.Behavior-preserving by design. Only values with an exact token match are migrated:
0.2s→var(--pine-motion-duration-base)(radio, input, combobox, multiselect, filter)0.3s→var(--pine-motion-duration-slow),cubic-bezier(0.4, 0, 0.2, 1)→var(--pine-motion-easing-in-out)(exact)Easing keywords (
ease,ease-out) are intentionally left as-is: they are not equal to the token curves (ease=cubic-bezier(0.25,0.1,0.25,1)≠easing-in-out), so swapping them would change motion. Off-grid durations (0.15s,0.1s) and bespoke keyframe animations (loader/progress spinners, toast spinner/dash) are deliberately untouched — they have no exact token and aren't interaction transitions.The reduced-motion win still lands: tokenized durations collapse to
0msunderprefers-reduced-motion.Stacked on #736 (
docs/foundations), which defines_motion.scss/ the--pine-motion-*tokens. Merge #736 first; this retargets tomain. Part 2 (apine-design-system/no-hardcoded-motionstylelint rule) follows in a separate PR.New dependencies: none.
Fixes #(no-issue)
Type of change
How Has This Been Tested?
stylelintpasses on all six changed SCSS files.Mirrors the existing
pds-modaltoken usage shipped in docs(foundations): add motion, RTL, status, and Code Connect coverage docs #736 (same:roottokens, which pierce shadow DOM).Durations are exact 1:1 substitutions (0.2s = 200ms = base, 0.3s = 300ms = slow); no perceptible change at default motion, and transitions collapse under reduced-motion.
unit tests
e2e tests
accessibility tests
tested manually
other: stylelint + exact-value review
Test Configuration:
Checklist:
Note
Low Risk
SCSS token swaps are 1:1 duration replacements; toast dismiss logic is slightly more complex but covered by an added reduced-motion test.
Overview
Replaces hardcoded 0.2s transition durations with
var(--pine-motion-duration-base)on combobox, filter, input, multiselect, and radio image borders so those interactions pick up globalprefers-reduced-motionhandling from Pine motion tokens.easeeasing is unchanged where it was already used.pds-toastmaps entrance/exit timing to--pine-motion-duration-slowand--pine-motion-easing-in-out, anddismiss()no longer uses a fixed 300ms wait: it reads computed--animation-duration, skips the delay whenprefers-reduced-motion: reduce, with a 300ms fallback. A unit test covers the reduced-motion dismiss path.Reviewed by Cursor Bugbot for commit c0ffd3c. Bugbot is set up for automated code reviews on this repo. Configure here.