Component intelligence
A product card combines semantic content with independent entry and interaction channels.
Elements // state has a lifecycle
Native elements carry their own lifecycle — open, focus, expand, top-layer — while Velora channels handle entry, hover and scroll independently. Hover the card below; tab through the form; open the popover.
No component runtime. Each demo is plain HTML + vl-* attributes you can copy into any host.
Act 02 // try enter + hover
Each card stacks channels — vl-enter on scroll, vl-hover on intent — without one overwriting the other.
Core entry + hover channelsSkin type + surface + rhythmShowcase element families
A product card combines semantic content with independent entry and interaction channels.
“Motion is useful when it clarifies hierarchy before it asks for attention.”
Quote, divider, kicker and status retain their hierarchy in every Skin.
Act 03 // focus is motion
Keyboard-first: every control below is operable without a mouse. Skin owns geometry; Core owns focus and state timing.
Standard controls keep semantics; Velora adds focus choreography and custom select where supported.
Checkbox, radio, toggle and range remain keyboard-operable and visibly focused.
Act 04 // inspect and decide
Click Open context · Review scene · expand accordion · focus Why channels? for the tooltip.
Core display + overlay transitionsSkin top-layer materialShowcase review decisions
Popover state and dismissal remain native; anchor positioning enhances placement.
Entry, exit, overlay and discrete display are coordinated by CSS.
<button popovertarget="ctx">Open</button> <div id="ctx" popover vl-state="top-layer enter-exit"> … </div>
commandfor can open a native dialog without an application controller where supported.
Baseline: Scene 07 is ready for review. The command opens the richer top-layer version where supported.
<button commandfor="scene-dialog" command="show-modal"> Review </button> <dialog id="scene-dialog" vl-state="top-layer">…</dialog>
Behavior, lifecycle, fallbacks and reduced motion. The active Skin owns geometry, surface and timing voice.
<details class="vl-accordion" vl-state="expand"> <summary>Inspect</summary> <div class="vl-accordion__content">…</div> </details>
Type in the search field; tab to Why channels? for hover/focus tooltip feedback.
<input class="vl-command__input" type="search" /> <span class="vl-tooltip-trigger" tabindex="0"> Why channels? <span class="vl-tooltip">Independent channels.</span> </span>
Act 05 // confirm the system
Core status timing + reductionSkin semantic color + materialShowcase sync and loading states
Four Skins now consume the same semantic contract.
Act 06 // follow progress
Core path + scroll progressSkin track + marker voiceShowcase category journey
offset-path provides geometry; the view timeline provides progress.
Markers progressively enhance a keyboard-scrollable, snap-based list.
Arrival and reveal.
Lifecycle and change.
Shared narrative clock.