# Bento Grid

Grid of themed feature tiles that reveal one after another and reflow to four, three or two columns by orientation.

```bash
npx shadcn add https://www.reelcn.dev/r/bento-grid.json
```

Usage:

```tsx
<Center>
  <BentoGrid
    tiles={[
      { title: "Themes", body: "Six presets, one prop", span: 2, accent: true },
      { title: "Responsive", body: "16:9, 9:16 and 1:1" },
      { title: "Deterministic", body: "Seeded, frame-driven" },
    ]}
  />
</Center>
```

Use for:

- Product feature overviews, launch recaps and "what's new" slides
- Summing up four to eight short points on one screen

Avoid:

- Cards in a single row or column, use `stagger`


## Props

| Name | Type | Default | Description |
| --- | --- | --- | --- |
| delay? | `number` | — | Frames to wait before entering. |
| duration? | `number` | — | Enter duration in frames. Defaults to 0.6s. Some items reuse `duration` for an unrelated local timing. See that item's own prop docs. |
| exit? | `number \| boolean` | — | Exit at the end of the parent `<Sequence>`. `false` keeps it on screen, a number sets the exit length in frames. |
| motion? | `MotionPersonality` | — | Override the theme's motion personality. |
| poster? | `boolean` | — | Renders fully entered, with no exit: for a still frame or thumbnail. Defaults to `false`. |
| holdFrames? | `number` | — | Delays the start of the exit window by this many frames, for a minimum on-screen hold. Defaults to `0`. |
| tiles | `BentoTile[]` | — |  |
| columns? | `number` | — | Defaults to 4 in landscape, 3 in square and 2 in portrait. |
| gap? | `number` | `24` | Space between tiles, in design units. |
| minHeight? | `number` | `190` | Minimum tile height, in design units. |
| effect? | `AnimateEffect` | `"up"` |  |
| step? | `number` | — | Frames between one tile's entrance and the next. Defaults to 0.1s. |
| background? | `string` | — | Tile fill. Defaults to the theme surface. |
| color? | `string` | — | Title color. Defaults to the theme foreground. |
| mutedColor? | `string` | — | Body color. Defaults to the theme muted color. |
| borderColor? | `string` | — | Tile border. Defaults to the theme border. |
| accentColor? | `string` | — | Fill of accent tiles. Defaults to the theme accent. |
| accentForeground? | `string` | — | Text on accent tiles. Defaults to the theme accent foreground. |
| style? | `CSSProperties` | — |  |
| className? | `string` | — |  |