Alerta

Una alerta le cuenta al lector algo sobre la página o sobre una acción que acaba de hacer. El color elige a la vez el icono y el rol ARIA: danger y warning se anuncian como role="alert"; todo lo más tranquilo es un role="status" cortés.

Colores

Atención
Hay una nueva versión de sitelo disponible.
Desplegado
169 páginas publicadas en 1,7 segundos.
Nota
Las islas están desactivadas en este proyecto.
stack({ gap: 'sm' },
  alert({ color: 'primary', title: 'Atención' }, 'Hay una nueva versión de sitelo disponible.'),
  alert({ color: 'success', title: 'Desplegado' }, '169 páginas publicadas en 1,7 segundos.'),
  alert({ color: 'warning', title: 'Página lenta' }, 'Una página tardó más de 500 ms en renderizarse.'),
  alert({ color: 'danger', title: 'Compilación fallida' }, 'Dos enlaces internos apuntan a páginas que no existen.'),
  alert({ color: 'neutral', title: 'Nota' }, 'Las islas están desactivadas en este proyecto.'),
)

Sin título

Una alerta de una línea no necesita un encabezado sobre la frase.

Guardado.
stack({ gap: 'sm' },
  alert({ color: 'success' }, 'Guardado.'),
  alert({ color: 'danger' }, 'Ese correo ya está en uso.'),
)

Variantes

stack({ gap: 'sm' },
  alert({ color: 'warning', variant: 'soft', title: 'Soft' }, 'La opción por defecto: una superficie teñida.'),
  alert({ color: 'warning', variant: 'outline', title: 'Outline' }, 'Transparente, con un borde de color.'),
  alert({ color: 'warning', variant: 'solid', title: 'Solid' }, 'El color pleno de la paleta, para algo que no se puede pasar por alto.'),
)

Iconos

Cada color tiene un icono por defecto. Pasa tu propio marcado en icon, o icon: false para ninguno.

Sin icono
Solo el texto.
Un icono propio
Vale cualquier SVG: los iconos son marcado, no una dependencia.
stack({ gap: 'sm' },
  alert({ color: 'primary', icon: false, title: 'Sin icono' }, 'Solo el texto.'),
  alert({
    color: 'primary',
    title: 'Un icono propio',
    icon: icon('star'),
  }, 'Vale cualquier SVG: los iconos son marcado, no una dependencia.'),
)

Descartable

El botón de cerrar lleva su propio manejador:

onclick="import('/su/alert.js').then(m=>m.dismiss(this))"

Así que la alerta de abajo se cierra de verdad sin que esta página importe nada. Si ese módulo no llega nunca, el botón se dibuja y no hace nada, y por eso una alerta no debería ser el único sitio donde aparece un mensaje.

Descartable
Pulsa la × — el manejador se descarga solo en la primera pulsación.
alert({ color: 'primary', title: 'Descartable', dismissible: true },
  'Pulsa la × — el manejador se descarga solo en la primera pulsación.',
)

Contenido enriquecido

Las alertas admiten cualquier hijo, así que dentro puede vivir una acción o una lista.

alert({ color: 'danger', title: 'Falló la comprobación de enlaces' },
  stack({ gap: 'sm' },
    text({ variant: 'small' }, 'Dos enlaces apuntan a páginas que no se generaron:'),
    list({ plain: true },
      listItem({ title: '/docs/old-routing', description: 'enlazado desde /docs' }),
      listItem({ title: '/blog/draft', description: 'enlazado desde /blog' }),
    ),
    stack({ direction: 'row', gap: 'sm' },
      button({ size: 'sm', color: 'danger' }, 'Ver detalles'),
      button({ size: 'sm', variant: 'ghost', color: 'danger' }, 'Ignorar'),
    ),
  ),
)

Props

PropTipoPor defectoDescripción
color'primary' | 'neutral' | 'success' | 'warning' | 'danger''primary'Elige la paleta, el icono por defecto y el rol ARIA.
variant'soft' | 'outline' | 'solid''soft'Cuánto peso tiene la alerta.
titleChild—Primera línea en negrita.
iconChild | false—Marcado de icono propio, o false para ninguno.
dismissiblebooleanfalseAñade un botón de cerrar que importa su propio manejador.
dismissLabelstring'Dismiss'Nombre accesible de ese botón.