Alerta
En esta página
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
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.
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.
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.
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.
Dos enlaces apuntan a páginas que no se generaron:
- /docs/old-routingenlazado desde /docs
- /blog/draftenlazado desde /blog
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
| Prop | Tipo | Por defecto | Descripció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. |
title | Child | — | Primera línea en negrita. |
icon | Child | false | — | Marcado de icono propio, o false para ninguno. |
dismissible | boolean | false | Añade un botón de cerrar que importa su propio manejador. |
dismissLabel | string | 'Dismiss' | Nombre accesible de ese botón. |