Page
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:
- Título principal
- Titulo secundario o descripción
- Acciones principales
- 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
Name | Type | Default | Description |
---|---|---|---|
maxWidth | string | ||
children |
Page.Header
Name | Type | Default | Description |
---|---|---|---|
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
Name | Type | Default | Description |
---|---|---|---|
children* | React.ReactNode | Content of the page body. |