Skip to main content
Clever Ops

Grid Break

A deconstructing editorial grid for React, scroll shears each cell off its seat along seeded vectors as the drafting skeleton surfaces, then reseats in reverse. Tailwind-themed, zero dependencies.

Preview & code

Loading Grid Break preview

Installation

pnpm dlx shadcn@latest add @cleverui/grid-break

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

Usage

tsx
import { GridBreak } from '@/components/blocks/grid-break'
Exampletsx
import { GridBreak } from '@/components/blocks/grid-break'

export default function GridBreakDemo() {
  return (
    <div>
      <GridBreak
        eyebrow="Lab · Deconstruction"
        heading="A grid that shows its working."
        cells={[
          {
            kicker: 'Structure',
            title: 'Seated on the twelve-column seat',
            body: 'At rest this is an ordinary ruled editorial grid, hairline borders, strict spans, nothing loose.',
          },
          {
            kicker: 'Shear',
            title: 'Scroll breaks the seat',
            body: 'Every cell leaves along its own seeded vector, translation and a few tenths of a degree, never chaos.',
          },
          {
            kicker: 'Skeleton',
            title: 'The drafting layer surfaces',
            body: 'Cell coordinates and construction lines fade up as the layout comes apart, like a pasteboard showing its marks.',
          },
          {
            kicker: 'Reseat',
            title: 'Reverse restores the grid',
            body: 'The break is a pure function of scroll position, scrub back and every cell reseats to the millimetre.',
          },
          {
            kicker: 'Doctrine',
            title: 'Seeded, scroll-driven, still under reduced motion',
            body: 'mulberry32 vectors, no loop at rest, and the assembled grid is the reduced-motion poster.',
          },
        ]}
      />
      {/* scroll runway so the break has room to play in context */}
      <div aria-hidden="true" className="h-[60vh]" />
    </div>
  )
}

API reference

GridBreak accepts the following props.

PropTypeDefaultDescription
eyebrowstring
headingstring
cells*GridBreakCell[]3–6 editorial cells
seednumber7deterministic seed for the break choreography
amplitudenumber46how far the grid shears at full break, in px (default 46)

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

Referenced types

Typestsx
export interface GridBreakCell {
  kicker?: string
  title: string
  body?: string
  /** 12-col span at lg (4–8), defaults derived from position */
  span?: number
}

Frequently asked questions

How do I install the Grid Break component?

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

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

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