crucıble

Slipway

App-download section block: headline, a rating row whose stars fill in sequence while the review count rolls on Tally drums, Detent platform tabs that swap store badges and requirements, and a QR card with a seeded module grid and scan-line sweep. A CSS phone frame runs a swipeable, auto-advancing screen carousel with dot pagination and a floating callout chip tethered by a drawn leader line.

motionpro

Installation

CLI

npx shadcn@latest add @crucible/slipway

Manual — install dependencies, then copy the source

npm install motion

Props

PropTypeDefaultDescription
titleReact.ReactNode"Your whole day, in your pocket."Headline.
subtitleReact.ReactNodeSupporting line under the headline.
eyebrowReact.ReactNode | false"Now on {platform labels}"Small pill above the headline. Pass false to hide.
platformsSlipwayPlatform[]Platform tabs, each with its own badges and requirements line. Omit for iOS / Android / Desktop samples.
platformstringControlled selected platform id.
defaultPlatformstringfirst platformInitial platform id when uncontrolled.
onPlatformChange(id: string) => voidFires when the platform tab changes.
onBadgeClick(platformId: string, badge: SlipwayBadge, event: React.MouseEvent<HTMLAnchorElement>) => voidFires when a store badge is activated (before navigation).
screensSlipwayScreen[]Phone screens (auto-advancing carousel). Omit for 4 seeded sample screens.
onScreenChange(index: number) => voidFires with the new index whenever the visible screen changes.
ratingSlipwayRating | false{ value: 4.8, count: 12480 }Rating row config, or false to hide it.
urlstringDownload URL — seeds the decorative QR pattern and is what "Copy link" copies.
qrReact.ReactNode | falseYour own QR node (e.g. a real generated QR code) to replace the decorative seeded pattern, or false to hide the QR card entirely.
intervalnumber4200Milliseconds each screen stays up during the idle loop.
accentColorstring"#2dd4bf"Accent hex for stars, focus rings, chip, scan line and screen highlights.
pausedbooleanfalseFreeze the ambient idle loop (auto-advance + QR scan sweep).
refReact.Ref<SlipwayHandle>Imperative handle (replay(), goTo(i)). React 19 ref-as-prop.
classNamestringExtra classes for the <section> root.
Also accepts all props of Omit<React.ComponentPropsWithoutRef<"section">, "title" | "children"> — they pass through to the underlying element.

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