Scene Engine
Channel / Layer / Reveal Predictable channel composition for enter, loop, scroll and state.Internal QA // exhaustive coverage
Test every preset. Protect every fallback.
Internal exhaustive inventory for regression testing, experimental proofs and preset inspection. The public Catalog stays concise and decision-oriented.
Runtime State
entry 0% -> cover 65% Range, speed and replay per card with instant readout.Select a card to inspect its active motion attributes.
Optional Showcase inspection only—the shipped motion remains CSS. D/T/S adjust delay, duration and playback rate; scene replay repositions scroll.
Catalog sections are grouped by API stability level to improve review and maintenance without removing any functional demos.
Engine
motion-core
Host-agnostic scene + channel motion: vl-scene, vl-stage, vl-act, vl-enter / vl-scroll / vl-hover. Works with any UI host.
Skins
theme + recipes
Named look via data-editorial-theme and optional vl-scene="…" recipes. Not required for motion. See Skins.
How to read this Catalog
Every useful recipe answers five questions.
- 01Intent
What should the interface communicate?
- 02Channel
Which independent behavior owns the change?
- 03Support
Stable, progressive or experimental?
- 04Fallback
What readable state survives without it?
- 05Proof
Where is it used in a real Showcase flow?
Start with intent
Choose what the interface needs to communicate.
The Catalog is the exhaustive reference. Product components live in Elements; complete narrative compositions live in Scenes.
Bring content in, take it out or transition native state.
Respond to hover, focus, press, disclosure and top-layer intent.
Connect motion to viewport progress, geometry or horizontal flow.
Coordinate children, beats, acts and shared scene clocks.
Direct cross-document movement while keeping semantic links.
Inspect emerging platform features without making them a dependency.
Every card should state intent, channel, support level, reduced-motion behavior and where the recipe is proven in the Showcase.
Modern Platform Matrix
Feature status is part of the public contract. Progressive and experimental syntax never gates semantic content or baseline interaction.
@starting-style, discrete display/overlay transitions, intrinsic-size interpolation, scroll-driven animations, popover and dialog state.
calc-size(), customizable select, anchor positioning, scroll markers, sibling-index() and offset-path refinements.
CSS @function, scroll-triggered animations, emerging border shapes and element-scoped View Transitions.
Intrinsic size
No measured height or JavaScript observer.
--vl-ease-natural uses the native linear() syntax for a physical decay curve.
@supports (animation-trigger: --reveal play-forwards) { /* lab only */ }
@supports (result: if(style(--state: active): 1; else: 0)) { /* lab only */ }
/* Element-scoped View Transitions require JavaScript:
element.startViewTransition(). They are intentionally outside Core. */
Channel Architecture
Demonstrates the main v2 API channels and the recommended composition order.
base -> enter -> scroll -> loop -> hover -> state -> exit
Channel composition reduces conflicts and maintains predictability across pages.
<article vl-enter="fade-up" vl-scroll="parallax" vl-loop="-1" vl-loop-effect="glow-breathe" vl-duration="1200ms" vl-direction="reverse" vl-hover="hover-lift" vl-state="smooth" vl-range="scene-focus" vl-speed="normal"> </article>
Timeline Modes
Use canonical timeline contracts to define what drives each motion channel: view, scroll, hover, or auto.
<!-- recommended pattern --> <div vl-enter="fade-up" vl-timeline="view">...</div> <!-- scrubbed parallax --> <img vl-effect="parallax" vl-timeline="scroll"> <!-- ambient loop --> <div vl-loop="-1" vl-loop-effect="float">...</div> <!-- no timeline (time-based) --> <div vl-enter="fade-up">...</div>
vl-timeline controls what drives the animation — viewport, page scroll, hover gate, or default time-based playback.
scroll-triggered, holds state
alias for single
scroll-scrubbed
infinite ambient
paused until hovered
no explicit timeline binding
Entrances and 3D
View-timeline entry effects — prefer vl-enter for channel-first authorship; vl-effect remains a supported alias.
Stable CONTRACT extensions — same presets as vl-effect, bound to the enter channel.
Coverage completion
Every known preset has a visible proof.
These compact boards close the previous Catalog gaps without turning each alias into another full-size section.
Stage 3D
Reusable 3D stage contract for perspective, preserve-3d and interaction triggers. Cube-specific demonstrations remain in the experimental Cube Triad.
<!-- canonical 3D stage baseline --> <section vl-scene vl-scene-trigger="zone"> <div vl-scene-trigger-zone tabindex="0"></div> <article vl-effect="spring-3d" vl-timeline="view">...</article> </section>
Positional stage contract — not tied to cube-triad choreography.
Hover and Interaction
Pointer feedback — prefer vl-hover for channel-first presets. Extended interaction cards below may still use vl-effect.
Stable hover channel extensions — gradient sweep and border trace.
Hover Card Components
Card-first interaction components grouped in their own section for API and component testing.
Hover a card — siblings fan on the Y axis. Group container uses preserve-3d.
Hover the stack — parent tilts in 3D and layers lift with staggered depth.
Token-driven duotone blend for image-based components.
Illustration Editor Component
Visual editor component with HTML, CSS and JS panels over a technical block — animated purely with CSS.
Editor-inspired composition converted to a declarative, tokenized, no-JS component.
Text Effects
Animated reveals and typographic effects for headings and editorial excerpts.
System.out.println("
");
Hover or focus this card to swap the greeting set.
Ambient and Continuous
Loop animations for live surfaces, status indicators and cinematic backgrounds.
Cube Triad
Experimental extended effect — not the reusable stage-3d contract. Prefer positional stage-3d vars for production stages.
Tokenized 3D cube scene with layered fold choreography, no JavaScript.
Scroll and Timeline
Scroll-linked motion — use vl-scroll for channel-first presets; legacy cards below still use vl-effect.
Stable scroll channel values from CONTRACT — scrub ranges are preset-defined on the channel.
enter & exit in one scroll arc
rises in, holds, fades out
Scene engine
Host-agnostic track / stage / acts — shared clock, numeric pin, scrub. Canonical authorship for scroll stories. Full page: Scene Timeline.
<section vl-scene vl-timeline="view" vl-pin="3" vl-scrub>
<div vl-stage>
<h1 vl-enter="fade-up" vl-act="1">Title</h1>
<p vl-enter="fade-up" vl-act="2">Later act</p>
</div>
</section>
vl-pin is numeric viewport heights on the track (vl-scene). Sticky subject is vl-stage. Values like top/center are not the scene-engine API (boolean vl-pin alone remains a legacy sticky helper).
Act 1 · shared clock
Track · Stage · Acts
Act 2 enters on the same scene timeline.
Act 3–4 span · holds while the track scrubs.
Act 5 · hand-off
Scroll this card’s track. Motion is CSS-only (03c-scene-engine.css + channels). Kicker + title share vl-act="1" — same beat, overlapping range.
Shared act 1
Title + kicker overlap
Act 2 only after act 1 window
Assign the same vl-act to stage children to choreograph overlap on one beat.
Beat 1 · immediate
Beat 2 · +1 beat delay
Beat 3 · +2 beat delay
vl-timeline="auto" maps acts to time delays (no scroll pin). Use for load-in sequences outside scroll stories.
vl-span extends an act across multiple beats (see live demo act 3–4).
Named vl-scene="…" values need theme / full bundle. Prefer track/stage/acts for host-agnostic work. Skins
Timeline Breakdown
Direct comparison of view vs scroll timelines, focusing on vl-range, vl-once and vl-scrub.
Fires when the element enters the viewport. Supports vl-once for single-play.
Progresses with the scroll position. Pairs best with vl-scrub for timeline scrubbing.
Page Transitions
Card previews of every page-transition style used in the framework — hover, focus or click to replay.
Hover, focus or click to replay.
Directional cover transition.
Lateral movement with easing.
Radial expansion reveal.
Instant cut with micro accent.
Children Modes
Choreography modes for collections of child elements — stagger, cascade, wave and more.
Ranges, Speed and Runtime Params
Visual reference for all range presets, speed profiles and utility attributes for fine-tuning motion behaviour.
Skin recipes (theme). Prefer track/stage/acts for host-agnostic scenes — see Scene Timeline.