Skip to main content
Clever Ops

Sticky Grid Unfold

A pinned React deck that unfolds into a ruled grid on scroll, cards travel from a neat pile to their seats as outlines and skeleton lines draw in, fully reversible. Seeded, Tailwind-themed.

Preview & code

Loading Sticky Grid Unfold preview

Installation

pnpm dlx shadcn@latest add @cleverui/sticky-grid-unfold

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

Usage

tsx
import { StickyGridUnfold } from '@/components/blocks/sticky-grid-unfold'
Exampletsx
import { StickyGridUnfold } from '@/components/blocks/sticky-grid-unfold'

export default function StickyGridUnfoldDemo() {
  return (
    <div>
      <StickyGridUnfold
        eyebrow="Lab · Deck to grid"
        heading="Six capabilities, dealt from one pile."
        cards={[
          {
            kicker: 'Pipelines',
            title: 'Deploys in under 90 seconds',
            body: 'Build, test, and release stages fan out across 12 parallel executors.',
          },
          {
            kicker: 'Observability',
            title: 'Traces stitched end to end',
            body: 'Every request carries its span tree from edge to database and back.',
          },
          {
            kicker: 'Previews',
            title: 'A URL for every branch',
            body: 'Push a commit and the full stack is live for review in one minute.',
          },
          {
            kicker: 'Rollbacks',
            title: 'One command to yesterday',
            body: 'Immutable releases mean recovery is a pointer swap, not a rebuild.',
          },
          {
            kicker: 'Secrets',
            title: 'Sealed at rest and in flight',
            body: 'Keys rotate on a 24-hour cycle without a single redeploy.',
          },
          {
            kicker: 'Audit',
            title: 'Every change has an author',
            body: 'Immutable logs pair each deploy with its diff, approver, and time.',
          },
        ]}
      />
      {/* scroll runway so the unfold has room to play in context */}
      <div aria-hidden="true" className="h-[60vh]" />
    </div>
  )
}

API reference

StickyGridUnfold accepts the following props.

PropTypeDefaultDescription
eyebrowstring
headingstring
cards*UnfoldCard[]4–6 cards; the deck unfolds into a 2-col (sm: 3-col) grid
seednumber11deterministic seed for the pile jitter
unfoldVhnumber220scroll runway for the unfold in vh (default 220)

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

Referenced types

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

Frequently asked questions

How do I install the Sticky Grid Unfold component?

Register the @cleverui registry in your components.json ("@cleverui": "https://cleverops.com.au/r/{name}.json"), then run `npx shadcn@latest add @cleverui/sticky-grid-unfold`. 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 Sticky Grid Unfold require?

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

Can I theme Sticky Grid Unfold 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