Layouts publishes a shadcn registry at layout.csikie.com, with 7 components installable through the shadcn CLI.
Copy a prompt for your agent, copy the install command, or open the docs that ship it.
Typed React layout primitives for shadcn/ui and Tailwind CSS 4: Stack, Row, Col, Grid, GridItem, and Page. They ship as a shadcn registry, so the CLI copies the source into your project and you own the code.
Use Layout Kit for consistent spacing, responsive grids, and page frames in dashboards, forms, settings, and detail screens. It arranges your existing UI; buttons, inputs, routing, and data fetching stay with your application. For a one-off layout, direct Tailwind utilities may be all you need.
Documentation and live examples: layout.csikie.com
New order} />
} asideWidth="sm">
{stats.map((stat) => (
))}
Requirements: a shadcn project (components.json and the cn helper),
Tailwind CSS 4, and React 19.
Register the namespace in components.json:
{
"registries": {
"@layout-kit": "https://layout.csikie.com/r/{name}.json"
}
}
Add everything, or only what you need:
npx shadcn@latest add @layout-kit/layout
npx shadcn@latest add @layout-kit/page @layout-kit/grid
| Item | Contents |
|---|---|
layout | Every primitive below |
layout-spacing | Shared vocabulary; added automatically as a dependency |
stack | Vertical flex container |
row | Horizontal flex container |
col | Flex child with grow, shrink, and self |
grid | CSS grid with responsive columns |
grid-item | Responsive column span |
page | Page frame: header, actions, body, aside |
Files land in components/ui/ and lib/spacing.ts, with imports rewritten to
your aliases. The primitives depend on @base-ui/react, which the CLI installs.
There is no Layout Kit npm package. Responsive behavior uses CSS media queries,
without JavaScript viewport measurements; React and Base UI still perform rendering.
Review the CLI diff before accepting updates to customized files.
The packages and primitives its components pull in, counted across the registry.
Every appearance and removal our crawl has seen in the registry index.
Each guide includes prerequisites, a live example, its complete source, and verification advice. No specific router is required. Examples use the default shadcn import aliases; the CLI adapts paths to your project.
| Component | Props | Defaults |
|---|---|---|
Stack | gap, align, justify | gap 4, align "stretch", justify "start" |
Row | gap, align, justify, wrap | gap 4, align "center", justify "start" |
Col | grow, shrink, self | false, true, "auto" |
Grid | cols, gap, align | cols 1, gap 4, align "stretch" |
GridItem | span | 1 |
Page | size, gutter; Page.Header title, titleAs, description, metadata, actions; Page.Body aside, asideWidth, asidePosition, asideBreakpoint, asideCollapse | size "lg", titleAs "h1" |
Responsive values. gap, align, justify, cols, and span take a
single value or a mobile-first map: cols={{ base: 1, md: 2, xl: 4 }}.
Native props. Every primitive accepts the props of its element and merges
className last, so `` ends up with gap-2.
Any element. Primitives render a div; render swaps it while keeping
the layout classes, ref, and handlers:
} gap={2}>…
} justify="between">…
Stack and Row are containers, Col is a flex child. Stack and Row own
gap, align, and justify. Col says how one region shares space inside
them (grow, shrink, self) and sets min-w-0 so text can truncate; nest
a Stack inside it to space its children.
Page keeps one h1 per document (titleAs for nested pages), never
competes with your app shell's ``, and keeps the content first in
reading order whichever side the aside sits on.
Shared value sets, from lib/spacing.ts:
Gap: 0 | 1 | 2 | 3 | 4 | 6 | 8 | 12Align: "start" | "center" | "end" | "stretch" | "baseline"Justify: "start" | "center" | "end" | "between" | "around" | "evenly"Issues and pull requests are welcome. See CONTRIBUTING.md. Maintained by Erik Csiki-Gecse.
MIT © Erik Csiki-Gecse (@csikie). You may use, copy, modify, and distribute the code, provided the copyright and license notice stay in every copy or substantial portion.
Layouts is a component library on 21st.dev by 0xUrvish with 24 public React components. Every component ships with a live interactive preview and full TSX source — copy the code, install it through the shadcn CLI, or pull it into Cursor or Claude Code over MCP.