# Masonry Grid

> A masonry wall that drops each item into the shortest column, in order, so reading and tab order still run top to bottom. Column count follows the container's width, items are re-placed when one resizes, and they glide to new spots. CSS columns cover the first paint, so there's no jump. Demo: a moodboard with load more.

- Slug: `masonry-grid`
- Category: [Bento & Grids](https://www.assembli.design/category/bento-grids.md)
- Type: component
- Tags: masonry, grid, gallery, pinterest, layout, responsive
- npm dependencies: motion
- shadcn/ui dependencies: none
- Live preview: https://www.assembli.design/preview/masonry-grid
- Page: https://www.assembli.design/components/masonry-grid

![Masonry Grid preview](https://www.assembli.design/thumbnails/masonry-grid-light.png)

## Props

Other props pass through to the root element.

| Prop | Type | Default | Description |
| --- | --- | --- | --- |
| `minColumnWidth` | `number` | `240` | Columns never get narrower than this, in px. The count follows the container's width, not the viewport's. |
| `maxColumns` | `number` | `4` | The most columns to use, however wide the container. |
| `gap` | `number` | `16` | Space between items, in px. |
| `animate` | `boolean` | `true` | Glide items to their new spots when the layout changes. Off under reduced motion. Defaults to `true`. |

## Install

One-time setup (needs a subscription):

1. Add the registry to the project's `components.json`: `{"@assembli":{"url":"https://www.assembli.design/r/{name}.json","headers":{"Authorization":"Bearer ${ASSEMBLI_API_KEY}"}}}` (merge into `"registries"`).
2. Put an API key from https://www.assembli.design/account in `.env.local` as `ASSEMBLI_API_KEY=asm_…`.

Then install with the shadcn CLI (writes `components/masonry-grid/masonry-grid.tsx` and installs dependencies):

```bash
npx shadcn@latest add @assembli/masonry-grid
```

Registry item JSON: https://www.assembli.design/r/masonry-grid.json (send `Authorization: Bearer <api key>`)

## Code

> Component source needs an Assembli subscription ($12/month or $96/year) and an API key sent as `Authorization: Bearer <key>`. To get one without copying anything, POST https://www.assembli.design/api/agent/login (or call the MCP tool connect_account), show the user the link it returns, and poll https://www.assembli.design/api/agent/token for the key. Or subscribe at https://www.assembli.design/pricing and create a key at https://www.assembli.design/account.
