Skip to main content
Clever Ops

Cinematic Handover

A directed match-cut between two full-bleed React scenes, scroll scrubs a hairline figure that travels and grows from scene A into scene B's focal element. Reversible, Tailwind-themed.

Preview & code

Loading Cinematic Handover preview

Installation

pnpm dlx shadcn@latest add @cleverui/cinematic-handover

Requires the @cleverui registry in your components.json, a one-off, two-line setup.

Usage

tsx
import { CinematicHandover } from '@/components/blocks/cinematic-handover'
Exampletsx
import { CinematicHandover } from '@/components/blocks/cinematic-handover'

export default function CinematicHandoverDemo() {
  return (
    <div>
      <CinematicHandover
        sceneA={{
          kicker: 'Scene A · Night watch',
          title: 'One lens on the southern sky.',
          body: 'The array holds a single aperture open all night, sampling the same square degree every eleven seconds. Keep scrolling, do not lose the circle.',
        }}
        sceneB={{
          kicker: 'Scene B · First light',
          title: 'The same circle, now a horizon.',
          body: 'What you tracked as a lens is the dish itself, cut against the dawn line. One figure carried across the cut, that is the whole grammar of a match-cut.',
        }}
      />
      {/* scroll runway so the handover has room to play in context */}
      <div aria-hidden="true" className="h-[60vh]" />
    </div>
  )
}

API reference

CinematicHandover accepts the following props.

PropTypeDefaultDescription
sceneA*HandoverScenethe opening scene, copy left, keyed to the small circle figure
sceneB*HandoverScenethe arriving scene, copy right, keyed to the large circle figure
handoverVhnumber240scroll runway for the handover in vh (default 240)

…plus everything from React.HTMLAttributes<HTMLElement>: className, event handlers, aria attributes and the rest pass straight through.

Referenced types

Typestsx
export interface HandoverScene {
  kicker?: string
  title: string
  body: string
}

Frequently asked questions

How do I install the Cinematic Handover component?

Register the @cleverui registry in your components.json ("@cleverui": "https://cleverops.com.au/r/{name}.json"), then run `npx shadcn@latest add @cleverui/cinematic-handover`. The shadcn CLI copies the source into your project, you own the code from that point. You can also copy the source directly from this page.

What dependencies does Cinematic Handover require?

Cinematic Handover has no npm dependencies beyond React and Tailwind CSS itself, so there is nothing extra to install or keep updated.

Can I theme Cinematic Handover to match my brand?

Yes. The component is styled entirely with Tailwind utilities over standard design tokens (primary, background, muted, border), so it inherits your existing shadcn/ui theme automatically. Change your CSS variables and the component follows, no source edits needed for palette, radius, or fonts.

Want this built for you?

CleverUI is built by the Clever Ops web team. If you'd rather ship a hand-coded, fast, custom website than assemble one, we build them for Australian businesses every week.

Explore web development services