Design System / 07.11
Effects
Effects must clarify a change, route, layer, or process. Choose the smallest treatment that makes the relationship easier to read.
Compare reveal
A native range control for comparing two states in the same frame. Both states remain present in the DOM with explicit labels; the clipped surface and hairline follow direct pointer or keyboard input without eased lag. Use it when aligned layers make a visual difference easier to judge.
Live specimen
Rendered output
Garden shed portrait
- Crop
- 4:3 / sign cut
- Caption
- Clipped
- Credit
- Missing
- Output
- 1600 × 1200
Caption and credit incomplete
Garden shed portrait
- Crop
- 3:2 / full sign
- Caption
- Two lines
- Credit
- M. Santos
- Output
- 2400 × 1600
Caption and credit included
API reference
Inputs, types, and behavior
- Inputbefore / after
- TypeReactNode / ReactNode
- BehaviorTwo renderable, positionally comparable states. Blank content omits the figure.
- InputbeforeLabel / afterLabel / label
- Typestring / string / string
- BehaviorWritten names for both layers and the visible figure caption; defaults protect blank strings.
- InputdefaultPosition / position
- Typenumber = 50 / number?
- BehaviorUncontrolled start or controlled percentage, clamped to 0–100. onPositionChange reports the safe value.
- InputmediaClassName / className
- Typestring? / string?
- BehaviorMedia sizing is separate from the figure wrapper; both merge consumer classes last.
Knowledge graph
A relationship figure for a finite set of named items. CurrentColor hairlines sit behind an HTML node list; hover or focus dims only unrelated relationships, and reduced motion shows the complete graph.
Live specimen
Rendered output
API reference
Inputs, types, and behavior
- Inputnodes
- TypeKnowledgeNode[]
- BehaviorReads at most 1,000 entries and renders 120. Ids and labels have length limits; if any coordinate is missing, every node uses auto-layout.
- Inputedges
- Type[fromId, toId][]
- BehaviorReads at most 1,000 entries. Unknown, self-referential, duplicate, and malformed edges are omitted.
- InputariaLabel / showLabels
- Typestring = "Knowledge graph" / boolean = true
- BehaviorThe named group exposes each node and its connections; visible labels can be hidden without removing that relation text.
- InputnodeSize / drawDuration
- Typenumber = 9 / number = 1000
- BehaviorSquares clamp to 4–18px. Edge entry clamps to 0–2,000ms and begins after a 180ms lead-in with 65ms cadence bounded to 1.2s; nodes settle over 600ms with staging bounded to 900ms.
- InputclassName
- Typestring?
- BehaviorMerged last on the horizontally scrollable graph wrapper.
Layer stack
A tabbed stack for revisions or document states. Tabs select one semantic panel while two offset paper hairlines preserve the stack metaphor. The active sheet settles once over 300ms; reduced motion presents the selected content at rest.
Live specimen
Rendered output
Cover revision stack
Cover 01 / first setting
Narrow title block
The author line collides with the lower crop at small sizes.
API reference
Inputs, types, and behavior
- Inputitems
- TypeLayerStackItem[]
- BehaviorUp to twelve { label, meta?, content } layers. Blank labels and empty content are omitted.
- InputdefaultIndex / activeIndex
- Typenumber = 0 / number?
- BehaviorUncontrolled or controlled selection with native tab semantics and arrow, Home, and End keys.
- Inputlabel / description / headingAs
- Typestring / ReactNode? / "h2"–"h6"
- BehaviorVisible heading, optional instruction, and a semantic heading level appropriate to the host page.
- InputpanelClassName / className
- Typestring? / string?
- BehaviorPanel and outer wrapper classes merge last without altering the internal stack geometry.
QR tree
One isometric scene read from two camera stations. At rest it is a tree standing on a paved plaza; tapped, the camera rises to straight overhead, where the height axis drops out of the projection and the drawing resolves into a scannable code. Nothing is drawn twice — a mark is only ever placed over a module the code already needs dark, and it never leaves that module’s footprint, so the union of the marks seen from above is the matrix. The canopy is carried by hairline outlines and takes its fill only as the code resolves, because only then does the fill carry information. A mark is not a square: paving stays hard-edged so the finder patterns a scanner hunts for stay crisp, wood narrows toward the twigs, and each leaf is a rotated almond that relaxes back into a clean dot as the camera rises. Overhead that leaves the code reading its own footprint — the dotted middle is exactly where the canopy stood. Resting a mouse on the plate previews that reading; the button pins it. The drawing sits on the fixed media ink and paper pair rather than the page palette, because a code that inverts with the theme is unreliable to scan, and the control sits beside the plate rather than over it so nothing can occlude a module.
Live specimen
Rendered output
Encoded value: https://design-system.vvver.com/components/effects
API reference
Inputs, types, and behavior
- Inputvalue
- Typestring?
- BehaviorText to encode. Byte mode, versions 1-10; an over-capacity payload renders a stated failure rather than an unreadable code.
- Inputmatrix
- TypeQRMatrix?
- BehaviorPre-encoded square module grid. Supply this instead of value to bring your own encoder; the packaged one is then unused.
- Inputcorrection
- Type"L" | "M" | "Q" | "H"
- BehaviorError correction level, default M. Higher levels survive more occlusion at the cost of a denser code.
- Inputstate / defaultState / onStateChange
- Type"tree" | "code" / same / (state) => void
- BehaviorControlled and uncontrolled view. Both readings are complete at every point in the move, so nothing is withheld while it runs.
- Inputcontrols
- Typeboolean
- BehaviorRenders the built-in button, default true. Turn it off when the host drives state from its own control.
- InputhoverPreview
- Typeboolean
- BehaviorPreviews the code while a mouse rests on the plate, default true. Gated on pointer type, so a touch tap cannot latch it on with no way to leave. A preview only: it never changes state or fires onStateChange.
- Inputseed
- Typenumber
- BehaviorSeeds the canopy scatter. The same seed always draws the same tree, so specimens stay reproducible.
- Inputlabel / caption / className
- Typestring? / ReactNode? / string?
- BehaviorAccessible name for the drawing, mono caption beneath it, and wrapper classes merged last. The encoded value is also exposed to assistive technology, which cannot scan.
Route map
A branching architecture figure for fan-out, fallback, and fan-in. Permanent currentColor paths and readable HTML labels share the available width without a nested scroller. Phones receive a complete stage ledger and visible route register instead of a miniature or clipped canvas. Selected routes may carry one brief signal on entry; reduced motion keeps only the complete written map.
Live specimen
Rendered output
- Stage 1: Source
- Master PDF: Issue 04
- Stage 2: Check
- Preflight: Images + type
- Stage 3: Output
- Press PDF: CMYK
- Web edition: sRGB
- Stage 4: Record
- Archive: Sources + outputs
Route register / 5
- Master PDFtoPreflight01 / direct
- PreflighttoPress PDF02 / CMYK
- PreflighttoWeb edition03 / sRGB
- Press PDFtoArchive04 / bound copy
- Web editiontoArchive05 / published
API reference
Inputs, types, and behavior
- Inputstages / routes
- TypeRouteMapStage[] / RouteMapRoute[]
- BehaviorUp to eight stages, eight uniquely identified nodes per stage, and eighty valid directed routes; malformed relations are omitted.
- Inputroute.signal / route.label
- Typeboolean? / string?
- BehaviorEnables the one-shot signal on selected paths. label names the relationship in the route register.
- InputsignalDuration
- Typenumber = 320
- BehaviorSignal duration clamped to 180–360ms. Permanent paths remain visible after it ends.
- Inputlabel / description / className
- Typestring / ReactNode? / string?
- BehaviorVisible caption, optional reading instruction, and consumer wrapper classes merged last; the figure itself never scrolls.
Scan field
A user-started scan cue over content that remains fully readable. The currentColor hairline crosses once in at most 380ms, then yields to a written result; hidden tabs finish rather than queueing motion. Reduced motion moves directly from ready to complete.
Live specimen
Rendered output
Image preflight
API reference
Inputs, types, and behavior
- Inputchildren / result
- TypeReactNode / ReactNode?
- BehaviorContent shown at all times and an optional result revealed after the user starts the scan.
- Inputlabel / completeLabel / headingAs
- Typestring / string = "Verified" / "h2"–"h6"
- BehaviorVisible title, host-appropriate heading level, and completion message announced through the live region.
- Inputduration / onComplete
- Typenumber = 360 / (() => void)?
- BehaviorSweep duration clamps to 180–380ms. Reduced motion calls completion immediately without drawing the sweep.
- InputcontentClassName / className
- Typestring? / string?
- BehaviorField and outer wrapper classes merge last for authored sizing and composition.
System flow
Ordered architecture stages with nested actors, permanent currentColor arrow lanes, and one semantic list that is also the visual composition. The field keeps fixed-size labels and scrolls on narrow screens. Each connector receives one 360ms signal pass on entry; reduced motion retains the complete diagram without the travelling mark.
Live specimen
Rendered output
- Editorial
- ManuscriptCopy edited
- Image setCredits attached
- Assembly
- LayoutPages imposed
- IndexEntries checked
- Prepress
- ImagesCMYK / 300 ppi
- FontsEmbedded
- Delivery
- Press PDFBleed included
- Web editionsRGB images
API reference
Inputs, types, and behavior
- Inputstages
- TypeSystemFlowStage[]
- BehaviorUp to twelve ordered stages, each with a written label and up to eight { label, meta? } items; blank stages and items are omitted.
- Inputlabel / description
- Typestring / ReactNode?
- BehaviorVisible figure caption, optional reading instruction, and accessible name for the horizontal diagram.
- InputclassName
- Typestring?
- BehaviorMerged last on the figure; the internal fixed-size diagram rail owns horizontal overflow.
Spotlight
A centered currentColor registration frame behind its children. The wrapped content always remains fully present; hover or focus simply lets the decorative hairline recede. There is no global pointer listener, cursor drift, radial mask, or reveal that can lower readable content below the contrast floor.
Live specimen
Rendered output
Focus study / content remains primary
Attention without concealment
Review the route mapAPI reference
Inputs, types, and behavior
- Inputchildren
- TypeReactNode
- BehaviorNever masked or dimmed by the component.
- Inputfloor / size
- Typenumber = 0.15 / number = 260
- BehaviorControls frame opacity (capped at /15) and square edge length (44–1,200px).
- InputclassName
- Typestring?
- BehaviorMerged last on the positioned group wrapper.