Saltar al contenido
EspañolEnglish
Todos los componentes (204)

Armazón de aplicación

Estructura · AppShell · .amset-shell

Qué es y cuándo usarlo

El armazón de una aplicación: cabecera, columna lateral, contenido y pie, en una rejilla de CSS y en un solo componente: header, sider, children y footer.

Cuándo usarlo

  • La carcasa de una pantalla de gestión: TopBar arriba, SideNav a la izquierda y el contenido en medio.

Cuándo no

  • Una página pública o una landing: ahí no hay columna ni cabecera de aplicación.

Lo que da sin pedirlo: el contenido es un <main> con id (mainId, content por defecto) y tabindex="-1" —el destino de «saltar al contenido» del TopBar (skipTo)—, la cabecera se queda fija (stickyHeader={false} para que no), y la columna lateral se queda fija justo debajo de ella (mide su alto) con su propio desplazamiento si el menú es más alto que la ventana.

Pantalla estrecha (menos de 48 rem): la columna pasa encima del contenido y deja de ser fija, salvo si es un SideNav: ese ya se queda en su carril de baldosas por debajo de 40 rem y sigue al lado del contenido, fijo y hasta abajo. Un menú que se esconde tras un botón necesita su propio panel (Drawer) y eso se monta fuera.

Teclado: Tab recorre cabecera, columna y contenido en ese orden. Con un TopBar que lleve skipTo, el primer Tab ofrece «Saltar al contenido».

Aspecto fino: --amset-shell-sider-width (16 rem; también con la prop siderWidth) y --amset-shell-gap (relleno del contenido).

Cómo se ve

Saltar al contenido
Joyería Aurelia

Pedidos

Pedido 1040

Pendiente de envío

Dos anillos y un colgante.

Pedido 1041

Pendiente de envío

Dos anillos y un colgante.

Pedido 1042

Pendiente de envío

Dos anillos y un colgante.

Pedido 1043

Pendiente de envío

Dos anillos y un colgante.

Pedido 1044

Pendiente de envío

Dos anillos y un colgante.

Pedido 1045

Pendiente de envío

Dos anillos y un colgante.

<AppShell
  header={<TopBar brand="Joyeria Aurelia" skipTo="contenido" actions={<Avatar name="Lucia Ferrer" size="sm" />} />}
  sider={
    <SideNav
      label="Menú principal"
      sections={secciones}
      active={activo}
      onNavigate={(clave) => setActivo(clave)}
      collapsed={plegado}
      onCollapsedChange={setPlegado}
    />
  }
  siderWidth="auto"
  mainId="contenido"
>
  <Pedidos />
</AppShell>

Props

Se importa con import { AppShell } from '@amset/ui'. Las obligatorias van marcadas.

PropTipoPara qué sirve
childrenobligatoriaReactNodeEl contenido de la pantalla.
classNamestringSe une a las clases de la biblioteca, no las sustituye.
footerReactNodeEl pie de la pagina, bajo el contenido.
headerReactNodeLa barra de arriba: normalmente un `TopBar`. Se queda fija al desplazar.
mainIdstringEl `id` del contenido principal. A el apunta el enlace «saltar al contenido» del `TopBar` (`skipTo`). Por defecto, `content`.
siderReactNodeLa columna de la izquierda: normalmente un `SideNav`. Se queda fija bajo la cabecera.
siderWidthstringAncho de la columna de la izquierda. Por defecto, el de `--amset-shell-sider-width` (16 rem).
stickyHeaderbooleanLa cabecera se queda pegada arriba al desplazar. Por defecto, si.

Acepta además los atributos del elemento que pinta: className, style, data-*, aria-* y sus eventos.

Mandos

Estas variables CSS son la forma de adaptarlo. Se declaran sobre el selector del componente, no en :root: la hoja las redeclara en la propia regla y una declaración en el mismo elemento gana siempre.

VariablePor defecto
--amset-shell-sider-width16rem
--amset-shell-gapvar(--amset-space-6)

Cómo se cambia

.amset-shell {
  --amset-shell-sider-width: ...;
  --amset-shell-gap: ...;
}

En el banco de pruebas

Cada estado y cada variante, para tocarlos de uno en uno, en su ficha de ui.amset.tech: