Barra de aplicación

Una barra de aplicación es un <header> con una fila dentro. Las piezas están separadas para que puedas ordenarlas: appBarNav() para los enlaces, appBarSpacer() para empujar lo que sigue al extremo, y appBarActions() para los botones del final.

Barra básica

sitelo
appBar({ brand: 'sitelo' },
  appBarSpacer(),
  appBarActions(
    button({ size: 'sm', variant: 'soft' }, 'Iniciar sesión'),
  ),
)

Con navegación

navLink() es el estilo de enlace para una barra; current marca la página activa con aria-current además de con color.

appBar({ brand: 'sitelo' },
  appBarNav(
    navLink({ href: '#docs', current: true }, 'Documentación'),
    navLink({ href: '#ui' }, 'UI'),
    navLink({ href: '#examples' }, 'Ejemplos'),
  ),
  appBarSpacer(),
  appBarActions(
    button({ size: 'sm', variant: 'outline', color: 'neutral' }, 'GitHub'),
    button({ size: 'sm' }, 'Empezar'),
  ),
)

Una marca con logotipo

La marca admite cualquier marcado, y enlaza a / salvo que href diga otra cosa.

Ssitelo
v2.6.3
appBar({
  href: '#home',
  brand: stack({ direction: 'row', gap: 'sm', inline: true, align: 'center' },
    avatar({ name: 'S', size: 'sm', square: true, color: 'primary' }),
    'sitelo',
  ),
},
  appBarSpacer(),
  appBarActions(chip({ size: 'sm', color: 'neutral' }, 'v2.6.3')),
)

Fija y difuminada

sticky fija la barra arriba del contenedor de scroll; blur la vuelve translúcida para que el contenido pase por debajo. Aquí se muestran ambas dentro de una caja con scroll, no en la página misma.

sitelo
sticky

Desplázame — párrafo 1.

Desplázame — párrafo 2.

Desplázame — párrafo 3.

Desplázame — párrafo 4.

Desplázame — párrafo 5.

Desplázame — párrafo 6.

div({ style: 'height: 12rem; overflow: auto; border: 1px solid var(--su-border); border-radius: 0.6rem' },
  appBar({ brand: 'sitelo', sticky: true, blur: true },
    appBarSpacer(),
    appBarActions(chip({ size: 'sm', color: 'primary' }, 'sticky')),
  ),
  container({ size: 'sm', style: 'padding-block: 1rem' },
    stack({ gap: 'md' },
      ...Array.from({ length: 6 }, (unused, index) =>
        text({ variant: 'small', tone: 'muted' }, 'Desplázame — párrafo ' + (index + 1) + '.'),
      ),
    ),
  ),
)

Con un panel lateral en pantallas pequeñas

El patrón habitual: enlaces en la barra en escritorio y un botón que abre un drawer() en el móvil. El panel es un popover, así que el botón no necesita script.

fragment(
  appBar({ brand: 'sitelo' },
    appBarSpacer(),
    appBarActions(
      themeToggle(),
      iconButton({
        label: 'Abrir la navegación',
        variant: 'ghost',
        color: 'neutral',
        popovertarget: 'app-bar-drawer',
        icon: icon('menu'),
      }),
    ),
  ),
  drawer({ id: 'app-bar-drawer', title: 'Navegación' },
    navLink({ href: '#docs' }, 'Documentación'),
    navLink({ href: '#ui' }, 'UI'),
    navLink({ href: '#examples' }, 'Ejemplos'),
  ),
)

Props

appBar():

PropTipoPor defectoDescripción
brandChild—Contenido del enlace de marca al principio.
hrefstring'/'Adónde enlaza la marca.
stickybooleanfalseFija la barra arriba al hacer scroll.
blurbooleanfalseFondo translúcido con desenfoque detrás.
asstring'header'Elemento que se renderiza.

Las piezas:

PiezaPropsPor defectoDescripción
appBarNav—Un elemento nav que contiene los enlaces.
appBarSpacer—Hueco flexible; todo lo que vaya después se va al extremo.
appBarActions—Grupo de botones al final.
navLinkhref, current, color—Un enlace con estilo de barra; current marca la página activa.