Generic Grid

Intent-based grid layout that replaces manual CSS with simple configuration.

Quickstart

  1. Ensure the registry is set up in Installation.
  2. Run the registry command:
npx shadcn@latest add https://gen-ui-eta-two.vercel.app/r/generic-grid

Why Generic Grid?

Generic Grid provides a clean API for responsive layouts, spacing, and alignment without sprinkling CSS throughout your components. It also exposes a GridItem helper for precise span and placement control.

Basic Usage

import { GenericGrid, GridItem } from "@/components/systems/generic-grid/generic-grid"

<GenericGrid columns={{ base: 1, md: 2, lg: 4 }} gap="md">
  <GridItem colSpan={{ base: 1, md: 2 }}>Featured</GridItem>
  <GridItem>Item</GridItem>
  <GridItem>Item</GridItem>
  <GridItem>Item</GridItem>
</GenericGrid>

Auto-Fit Columns

Let the grid fit as many columns as possible based on min/max widths.

<GenericGrid
  autoFit
  minColumnWidth="240px"
  maxColumnWidth="1fr"
  gap="lg"
>
  {cards.map((card) => (
    <Card key={card.id} {...card} />
  ))}
</GenericGrid>

GridItem Placement

Use spans or explicit start/end lines to control layout precisely.

<GenericGrid columns={6} gap="sm">
  <GridItem colSpan={4}>Main</GridItem>
  <GridItem colSpan={2}>Sidebar</GridItem>
  <GridItem colStart={2} colEnd={6}>Banner</GridItem>
</GenericGrid>

API Reference

PropTypeNotes
columnsnumber | responsiveGrid column count
gap / rowGap / columnGapSpacingTokenSpacing control
align / justifyAlignmentRow/column alignment
autoFitbooleanAuto-fit columns
minColumnWidth / maxColumnWidthstringAuto-fit sizing
GridItem.colSpan / rowSpannumber | responsiveItem span controls
GridItem.colStart / colEndnumber | responsiveExplicit placement
← Previous: Generic RendererNext: Generic List