Engram

Paged grid

component

A paginated grid (the in-game Triumphs / Collections / vault pager): the page of cells flanked by full-height previous/next arrow bars, with page-indicator segments below and a fade+slide in the travel direction on change.

Install

npx shadcn@latest add @engram/paged-grid

Registry item: /r/paged-grid.json — the machine-readable definition agents install from.

Example

Festival Flight
510
Horror's Least
506
Seventh Seraph SAW
503
Mask of Bakris
510
Triumphal Anthem Grips
509
Iron Battalion Vest
506
Triumphal Anthem Strides
508
Iron Battalion Cloak
506

Props

PropTypeDefaultDescription
items*T[]
renderItem*(item: T, index: number) => ReactNode
itemKey*(item: T, index: number) => stringStable key per item.
columnsnumber2Columns on `sm`+ (mobile is always a single column). Default 2.
rowsnumber5Rows per page — page size is `columns × rows`. Default 5.
gapnumber8Gap between cells (px). Default 8.
cellWidthnumberFixed cell width (px). When set, columns are sized to the cell instead of stretching to fill the row, and the packed grid is centered — keeping fixed-size content (e.g. item tiles) tight at every breakpoint. Omit for the default fluid columns.
minRowHeightnumberReserve `rows × minRowHeight` so partial last pages keep the page height.
labelstring"Paged grid"Accessible label for the paged region.
classNamestring

Own the code: shadcn add copies this component's source into your repo to read and edit directly. Extend without forking — edit the source, use asChild to swap the element, or pass the typed annotations prop for curated data.