feat(theme): add the page-enter and content-enter arrival animations - #896
Open
gabriel-lisboa-azion wants to merge 2 commits into
Open
feat(theme): add the page-enter and content-enter arrival animations#896gabriel-lisboa-azion wants to merge 2 commits into
gabriel-lisboa-azion wants to merge 2 commits into
Conversation
The two entrances an app shell needs, as a pair. page-enter is the route transition: it starts one --layout-boundary-inline to the LEFT of where it lands and travels right while fading up, so a page reads as arriving FROM the nav row that was clicked — a plain fade has no origin and a right-side arrival reads as going back. content-enter is content settling inside a page already on screen, so it rises a hair instead of travelling, and takes a --content-enter-delay stagger (with backwards fill, or a delayed follower would paint its landed state first). Neither fills forwards: page-enter's box is usually the scroll container, and a lingering translate would make it a containing block for any fixed descendant.
Documents both utilities and their knobs, and the failure they exist to prevent: a page arrives once, so a mount-time entrance inside a page whose route transition is still running lockesteps with it into one diagonal move (identical opacities frame for frame is the tell). Adds that shape and the two-shells-per- screen variant to the silent-failure table. catalog.json rebuilt so the two animations reach the MCP and validate-spec-compliance.
gabriel-lisboa-azion
force-pushed
the
feat/theme-arrival-animations
branch
from
August 17, 2026 12:40
0721c8c to
979583c
Compare
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.
Summary
animate-page-enter— the route transition. Starts one--layout-boundary-inlineto the left of where it lands and travels right while fading up, so a page reads as arriving from the nav row that was clicked; a plain fade has no origin and a right-side arrival reads as going back. Retune per shell with--page-enter-distance.animate-content-enter— content settling inside a page that is already on screen. Rises a hair instead of travelling, and takes a--content-enter-delaystagger (backwardsfill is load-bearing: without it a delayed follower paints its landed state and then jumps back).forwards, deliberately —page-enter's box is usually the scroll container, and a lingeringtranslatewould make it a containing block for anyposition: fixeddescendant.webkit-motion-polishdocuments both, plus the failure they exist to prevent: a page arrives once, so a mount-time entrance inside a page whose route transition is still running lock-steps with it into one diagonal move.How to test
node packages/theme/src/scripts/build-tokens.mjs→packages/theme/dist/v4/globals.{css,scss}diff is exactly the two--animate-*entries (light + dark) and the two@keyframes; nothing else moves..claude/rules/styling.md), through the v4 compile API with a bogus class as the control:animation: var(--animate-page-enter|content-enter), the control emits nothing.node packages/webkit/scripts/build-catalog.mjs→tokens.animationsis 21 and contains both.cd packages/webkit && node --test "test/**/*.test.mjs"→ 115 pass.Notes
moderate-02+productive-entrancefor both — the pairing the system already uses for a panel of content arriving, so a page and the components on it move as one system.catalog.jsonis rebuilt in the same PR: until it carries the two names,validate-spec-compliancerejectsanimate-page-enterin a component.