MenuChevron Down
Grid Cuadrícula - Docs - Artefact

Grid Cuadrícula

Layout
Presentacional

Introducción

Un primitive de layout responsivo con CSS Grid. Organiza los hijos con un número explícito de columnas/filas, o deja que se autoajusten según un ancho mínimo de hijo —ambos admiten valores responsivos (por punto de ruptura).

Uso

Columnas fijas

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 por ancho mínimo de hijo

No se necesitan puntos de ruptura —las columnas se añaden o eliminan automáticamente a medida que el contenedor cambia de tamaño.

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 columnas 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>
  );
}

Espaciados de columna y fila independientes

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>
  );
}

Constructor de páginas CMS

Este componente está disponible como un bloque grid en el Constructor 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" }
  ]
}

Propiedades

PropTipoDescripción
childrenanyContenido a renderizar dentro de la cuadrícula.
classstringClases CSS personalizadas.

| columns | `Responsive<number \ | string>` | Número de columnas (repeat(columns, minmax(0, 1fr))). Tiene prioridad sobre minChildWidth si ambos están establecidos. | | rows | `Responsive<number \ | string>` | Número de filas (repeat(rows, minmax(0, 1fr))). | | minChildWidth | `Responsive<number \ | string>` | Autoajusta tantas columnas como quepan, cada una con al menos este ancho (repeat(auto-fit, minmax(width, 1fr))). Se ignora cuando se establece columns. |

| gap | `string \ | number \ | Responsive<...>` | Espaciado entre celdas. Por defecto "8px" a menos que se establezca columnGap/rowGap. | | columnGap | `string \ | number \ | Responsive<...>` | Espaciado solo entre columnas. | | rowGap | `string \ | number \ | Responsive<...>` | Espaciado solo entre filas. |

Responsive<T> acepta un valor plano o un objeto por punto de ruptura, por ejemplo { base: 1, md: 2, lg: 3 }, usando los mismos puntos de ruptura que el resto del sistema de diseño (base, sm, md, lg, xl, 2xl).