Page

1.3.4

El componente Page actúa como contenedor principal de vistas. Estructura el contenido en secciones jerárquicas, proporciona contexto con títulos y descripciones, y puede incluir acciones principales (como botones). Su objetivo es ofrecer un marco consistente, claro y accesible que facilite la comprensión y ejecución de tareas.

import React from "react";
import { Page } from "@nimbus-ds/patterns";
import {
  IconButton,
  Button,
  Tag,
  Alert,
  Box,
  Icon,
  Text,
} from "@nimbus-ds/components";
import {
  ChevronLeftIcon,
  ChevronRightIcon,
  ChevronDownIcon,
  DownloadIcon,
  PlusCircleIcon,
} from "@nimbus-ds/icons";

const Example: React.FC = () => {
  const headerButtons = (
    <>
      <IconButton source={<ChevronLeftIcon />} size="2rem" />
      <IconButton source={<ChevronRightIcon />} size="2rem" />
      <Button>
        Mis aplicaciones
        <Icon source={<ChevronDownIcon />} />
      </Button>
      <Button>
        Exportar lista
        <Icon source={<DownloadIcon />} />
      </Button>
      <Button appearance="primary">
        <Icon color="neutral-background" source={<PlusCircleIcon />} />
        Agregar orden de compra
      </Button>
    </>
  );

  return (
    <Page>
      <Page.Header
        title="Page title"
        subtitle="Page subtitle"
        buttonStack={headerButtons}
      >
        <Box display="flex" gap="2">
          <Tag appearance="primary">Example tag</Tag>
          <Tag>Example tag</Tag>
        </Box>
        <Alert appearance="warning" title="Example alert">
          This is an example Alert component inside the Page Header.
        </Alert>
      </Page.Header>
      <Page.Body>
        <Box
          backgroundColor="primary-surface"
          borderColor="primary-interactive"
          borderStyle="dashed"
          borderWidth="1"
          borderRadius="2"
          width="100%"
          height="500px"
          display="flex"
          alignItems="center"
          justifyContent="center"
        >
          <Text fontSize="base" color="primary-interactive">
            Body content
          </Text>
        </Box>
      </Page.Body>
    </Page>
  );
};

export default Example;

Instalá el componente via terminal.

npm install @nimbus-ds/page

Page

Usá Page cuando necesites estructurar una vista completa que represente una funcionalidad o sección clave del producto: como listas, formularios o configuraciones. Es el layout base para cualquier pantalla de primer nivel.

No utilices Page fragmentos de interfaz dentro de modales, popovers o componentes compuestos. Tampoco en flujos que ya están contenidos dentro de otro layout jerárquico (como tabs, steps o wizards).

  • Foco en la acción principal: Colocar el CTA clave en el header para acceso inmediato.
  • Persistencia de contexto: Mantener el título visible al hacer scroll para reforzar el foco.
  • Layout flexible: Permitir que la estructura se adapte según el contenido y objetivo del flujo.
  • Soporte completo de navegación por teclado.
  • Títulos marcados con h1, h2… de forma semántica.
  • Áreas de interacción accesibles y etiquetas visibles.
  • Evitar scroll horizontal. El diseño debe ser responsive.
  • ARIA roles apropiados para estructurar la jerarquía del contenido.
  • Áreas táctiles adecuadas en dispositivos mobiles (mínimo 44x44px).

El patrón Page se compone de:

  1. Título principal
  2. Titulo secundario o descripción
  3. Acciones principales
  4. Contenido
  • Title
  • Button
  • Icon
  • Tabs

Do

  • Usar Page como base para cualquier vista principal.
  • Incluir acciones visibles en el header.
  • Agregar tabs solo si hay secciones independientes.
  • Mostrar feedback inmediato ante errores o estados vacíos (por ejemplo: Alerts o. Empty message).

Don't

  • No anidar Page dentro de otro Page.
  • No usarlo para vistas secundarias (usá Card, Modalen su lugar).
  • No ocultar el título principal.
  • No usar títulos genéricos como "Pantalla" o "Configuración".

Additional props are passed to the <Page> element. See div docs for a list of props accepted by the <Page> element.

Page

NameTypeDefaultDescription

maxWidth

string

children

Page.Header

NameTypeDefaultDescription

title*

string

Main title of the page. Corresponds to an h1 HTML tag.

subtitle

string

Optional subtitle for the page.

buttonStack

React.ReactNode

Button stack that appears on the right-hand side of the title.

children

React.ReactNode

Optional header content that appears underneath the title and button stack.

Page.Body

NameTypeDefaultDescription

children*

React.ReactNode

Content of the page body.