vaiperui

componentes / alert

Alert

Mensaje en línea con título, descripción, icono, acción opcional y botón de cerrar.

Cómo usar

Úsalo para feedback ligado a un lugar de la página, como validación de formularios o estado de una integración. `warning` y `danger` se anuncian de forma asertiva (`role="alert"`), los demás de forma cortés. El botón de cerrar solo aparece con `onDismiss`. Para avisos temporales usa `Toast`, para los de toda la página `Banner`.

preview
Guardado
Tus cambios se guardaron.
Alert.tsx
import { Alert, Button } from "vaiperui";
<Alert variantColor="success" title="Guardado">
Tus cambios se guardaron.
</Alert>
<Alert
variantColor="warning"
title="Cambios sin guardar"
action={<Button size="sm" variant="transparent">Guardar ahora</Button>}
onDismiss={() => setOpen(false)}
>
...
</Alert>

Colores

preview
primary
primary
success
success
warning
danger
colores.tsx
<Alert variantColor="primary">primary</Alert>
<Alert variantColor="success">success</Alert>
<Alert variantColor="warning">warning</Alert>
<Alert variantColor="danger">danger</Alert>

Tamaños

preview
sm
sm
md
md
lg
lg
tamanos.tsx
<Alert size="sm">sm</Alert>
<Alert size="md">md</Alert>
<Alert size="lg">lg</Alert>

Color personalizado

preview
Violeta
Violeta
color-personalizado.tsx
<Alert customColor="#8b5cf6">Violeta</Alert>

Props

PropValoresPredeterminadoDescripción
variantColorprimary | success | warning | dangerprimaryColor e icono por defecto. warning y danger usan role=alert, los demás role=status
customColorstring | { light, dark }ningunoCualquier color CSS (o un par por tema). Reemplaza a variantColor
sizesm | md | lgmdEspaciado y tamaño del texto
radiusnone | sm | md | lg | fulllgRedondeo de las esquinas
titleReactNodeningunoResumen en negrita sobre la descripción (los children)
iconReactNode | falseicono de estadoTu propio icono, o false para ocultarlo
actionReactNodeningunoEspacio para una acción, como un Button pequeño transparente o un enlace
onDismiss() => voidningunoMuestra el botón de cerrar y se ejecuta al hacer clic; tú decides si desmontar
dismissLabelstringDismissNombre accesible del botón de cerrar
(nativas)HTMLAttributes<HTMLDivElement>ningunorole (reemplaza el predeterminado), className, style, aria-*, ref, etc.

Accesibilidad

  • `warning` y `danger` usan `role="alert"` (asertivo); `primary` y `success` usan `role="status"` (cortés).
  • Pasa `role` para sobrescribir el valor por defecto, por ejemplo `role="status"` en una alerta `danger` que no debe interrumpir.
  • El icono de estado por defecto es `aria-hidden`; es decoración y no aporta significado a los lectores de pantalla.
  • El botón de cerrar es un `<button>` real con `aria-label` tomado de `dismissLabel` (por defecto "Dismiss") y anillo de foco visible.
  • El slot `action` renderiza tu propio elemento, así que mantenlo enfocable (botón o enlace) con una etiqueta clara.

Ten en cuenta

  • Traduce `dismissLabel` tú mismo; el valor por defecto está en inglés.
  • No dependas solo del color: incluye siempre un `title` o texto que diga el significado.
  • Cerrar no mueve el foco; si el foco estaba dentro de la alerta, llévalo a un lugar adecuado en `onDismiss`.