MenuChevron Down
Grid Grade - Docs - Artefact

Grid Grade

Layout
Apresentacional

Introdução

Um primitive de layout responsivo com CSS Grid. Organize os filhos com um número explícito de colunas/linhas, ou deixe-os se autoajustarem com base em uma largura mínima de filho — ambos suportam valores responsivos (por breakpoint).

Uso

Colunas fixas

1
2
3
import { Grid } from "../components/ui";

export default function MyPage() {
  return (
    <Grid columns={3} gap="4">
      <div>1</div>
      <div>2</div>
      <div>3</div>
    </Grid>
  );
}

Autoajuste pela largura mínima de filho

Nenhum breakpoint necessário — colunas são adicionadas ou removidas automaticamente conforme o contêiner é redimensionado.

A
B
C
D
import { Grid } from "../components/ui";

export default function MyPage() {
  return (
    <Grid minChildWidth="120px" gap="4">
      <div>A</div>
      <div>B</div>
      <div>C</div>
      <div>D</div>
    </Grid>
  );
}

Número de colunas responsivo

import { Grid } from "../components/ui";

export default function MyPage() {
  return (
    <Grid columns={{ base: 1, md: 2, lg: 3 }} gap="4">
      <div>1</div>
      <div>2</div>
      <div>3</div>
    </Grid>
  );
}

Espaçamentos de coluna e linha separados

import { Grid } from "../components/ui";

export default function MyPage() {
  return (
    <Grid columns={2} columnGap="6" rowGap="2">
      <div>1</div>
      <div>2</div>
      <div>3</div>
      <div>4</div>
    </Grid>
  );
}

Construtor de páginas CMS

Este componente está disponível como um bloco grid no Construtor de páginas (content/pages/*.json):

{
  "type": "grid",
  "columns": 3,
  "gap": "4",
  "children": [
    { "type": "text", "content": "1" },
    { "type": "text", "content": "2" },
    { "type": "text", "content": "3" }
  ]
}

Propriedades

PropTipoDescrição
childrenanyConteúdo a ser renderizado dentro da grade.
classstringClasses CSS personalizadas.

| columns | `Responsive<number \ | string>` | Número de colunas (repeat(columns, minmax(0, 1fr))). Tem precedência sobre minChildWidth se ambos estiverem definidos. | | rows | `Responsive<number \ | string>` | Número de linhas (repeat(rows, minmax(0, 1fr))). | | minChildWidth | `Responsive<number \ | string>` | Autoajusta quantas colunas couberem, cada uma com pelo menos essa largura (repeat(auto-fit, minmax(width, 1fr))). Ignorado quando columns é definido. |

| gap | `string \ | number \ | Responsive<...>` | Espaçamento entre células. Padrão "8px" a menos que columnGap/rowGap seja definido. | | columnGap | `string \ | number \ | Responsive<...>` | Espaçamento apenas entre colunas. | | rowGap | `string \ | number \ | Responsive<...>` | Espaçamento apenas entre linhas. |

Responsive<T> aceita um valor simples ou um objeto por breakpoint, por exemplo { base: 1, md: 2, lg: 3 }, usando os mesmos breakpoints do restante do design system (base, sm, md, lg, xl, 2xl).