crucıble

Chassis

A code-built browser or app-card window whose interior is a living dashboard instead of a screenshot: on scroll-in, skeleton shimmer bars resolve into real KPI tiles, a live sparkline strip, and activity rows — each panel snapping in with a one-frame brightness kiss, top-left to bottom-right — then quiet idle life keeps it breathing: the sparkline streams, a number re-rolls, a ghost cursor drifts in and clicks. Stage any children through the exported ChassisPanel boot wrapper.

motionpro

Installation

CLI

npx shadcn@latest add @crucible/chassis

Manual — install dependencies, then copy the source

npm install motion

Props

PropTypeDefaultDescription
variantChassisVariant"browser"Window frame: full browser chrome, or a bare app-card shell.
addressstring"app.example.com/overview"Address-bar text (browser variant).
trafficLightsbooleantrueShow the three traffic-light dots (browser variant).
tabsstring[]Optional tab row above the address bar (browser variant). Omit for no tabs.
activeTabnumber0Index of the highlighted tab when tabs is set.
bootbooleantrueRun the boot sequence: skeleton shimmer bars that resolve into the real content, staggered top-left to bottom-right, once the window scrolls into view. false renders the interior fully resolved.
bootStaggernumber0.11Seconds between each panel's resolve during boot.
shimmerSpeednumber1Skeleton shimmer sweep speed multiplier (higher = faster).
idleLifebooleantrueQuiet idle life after boot: the sparkline strip streams, a KPI number occasionally re-rolls, and the cursor ghost makes its rounds.
idleIntensitynumber1How busy the idle life is, 02. Scales event frequency; 0 disables idle life entirely.
cursorGhostbooleantrueDrift a ghost cursor to an element and click it on a long seeded loop.
tiltnumber0Static 3D presentation tilt in degrees (perspective rotateY(-tilt) with a matching half-strength rotateX). Not animated.
edgeMaskbooleanfalseFade the bottom of the window into the page with a gradient mask.
seednumber7Seed for all idle-life timing, ghost paths, and demo data.
colorsChassisColorsShell + skeleton + ghost palette. Interior data components keep their own accents.
pausedbooleanfalseFreeze everything: resolved interior, no boot, no idle life.
labelstringAccessible description, e.g. "Product dashboard preview". Without it the whole window is decorative (aria-hidden).
childrenReact.ReactNodeCustom interior. Wrap regions in <ChassisPanel> to give them the skeleton-to-resolve boot treatment. Omit for the built-in preset dashboard.
Also accepts all props of React.ComponentPropsWithoutRef<"div">they pass through to the underlying element.

Honors prefers-reduced-motion with a designed static fallback, and passes className through.