Saltar al contenido
Alea0.1
Pro
  1. Alea
  2. Componentes
  3. Maquetación
  4. AppShell

Maquetación

AppShell

El marco de la app: un encabezado fijo, una barra lateral que se vuelve cajón en pantallas pequeñas, el área principal y un enlace para saltar.

import { AppShell, SidebarNav, SidebarGroup, SidebarLink } from '@alea/ui';

Ejemplos

Tokens

Los tokens de diseño que usa este componente, con su valor en el tema actual. Cambia cualquiera para darle otro estilo.

Color

  • --alea-bg…
  • --alea-border…
  • --alea-chip-bg…
  • --alea-chip-text…

Space

  • --alea-space-2…
  • --alea-space-3…
  • --alea-space-5…
  • --alea-space-6…

Radius

  • --alea-radius-full…

Type

  • --alea-font-family-display…
  • --alea-font-weight-light…
  • --alea-font-weight-semibold…

Motion

  • --alea-motion-duration-base…
  • --alea-motion-ease-out…

Layer

  • --alea-z-sticky…
  • --alea-z-toast…

Component

  • --alea-shell-sidebar…

Props

AppShell props

El marco de la app: encabezado fijo, barra lateral, contenido con scroll y un skip link.

PropTipoPor defectoDescripción
brandReactNode-Logo o nombre del producto, arriba a la izquierda.
classNamestring-Clases extra para el elemento raíz.
collapseBelownumber900Por debajo de este ancho la barra lateral pasa a un drawer. Por defecto 900 px.
headerEndReactNode-Cosas a la derecha del encabezado: búsqueda, interruptor de tema, avatar.
mainAs"div" | "main"'main'El elemento del contenido: main (por defecto), o div cuando el marco está dentro de una página que ya tiene un main (demos, embeds).
sidebarReactNode-La navegación lateral (un SidebarNav). En pantallas pequeñas pasa a un drawer.
sidebarWidthnumber248Ancho de la barra lateral. Por defecto 248 px.

SidebarNav props

Navegación vertical con grupos; la página actual queda marcada.

PropTipoPor defectoDescripción
aria-labelstring-Nombre de la navegación. Por defecto "Barra lateral".
classNamestring-Clases extra para el elemento raíz.

SidebarGroup props

PropTipoPor defectoDescripción
childrenobligatoriaReactNode-Los SidebarLinks.
titleReactNode-Pequeño título en mayúsculas del grupo.

Especificaciones

Generado desde el código: las variantes de los tipos, los estados y tokens del CSS, y los patrones de motion que aplican. Las grillas muestran el componente real en ambos temas; los números se miden en la página.

AppShell

Variantes
mainAsdivmain
Estados
Focus (CSS)
Oscuro y claro
Cada color viene de tokens del tema, así que sigue a data-theme (y a presets como Graphite) en la página o en cualquier contenedor. El contraste se revisa en ambos temas.
Clases para estilos
.alea-shell.alea-main.alea-skip-link.alea-shell-header.alea-shell-menu.alea-shell-brand.alea-shell-end.alea-shell-body.alea-shell-sidebar.alea-shell-main.alea-shell-drawer
Atributos data
data-custom-collapsedata-collapsed

SidebarNav

Oscuro y claro
Cada color viene de tokens del tema, así que sigue a data-theme (y a presets como Graphite) en la página o en cualquier contenedor. El contraste se revisa en ambos temas.
Clases para estilos
.alea-sidenav

SidebarGroup

Oscuro y claro
Cada color viene de tokens del tema, así que sigue a data-theme (y a presets como Graphite) en la página o en cualquier contenedor. El contraste se revisa en ambos temas.
Clases para estilos
.alea-sidenav-group.alea-sidenav-title

SidebarLink

Estados
Hover
Oscuro y claro
Cada color viene de tokens del tema, así que sigue a data-theme (y a presets como Graphite) en la página o en cualquier contenedor. El contraste se revisa en ambos temas.
Clases para estilos
.alea-sidenav-link.alea-sidenav-icon.alea-sidenav-label.alea-sidenav-end

Accesibilidad

  • Encabezado, navegación y contenido principal son landmarks; el enlace para saltar va al contenido principal.
  • La página actual se marca con aria-current.
  • En pantallas pequeñas la barra lateral se abre en un cajón que atrapa el foco y se cierra con Escape.

Teclado

TeclaAcción
Tab (el primero)Muestra el enlace para saltar
EscapeCierra la navegación móvil

Qué hacer y qué evitar

Hacer

  • Agrupa los enlaces bajo títulos cortos.
  • Marca la página actual con isCurrent.

Evitar

  • No anides más de dos niveles en la barra lateral: usa un Tree o una página.
Probado con axe, teclado y roles de lector de pantalla