Toast
Mensajes breves que se apilan con orden, se expanden al pasar el cursor, se descartan deslizando y convierten un estado de carga en éxito o error en el mismo lugar.
pnpm dlx shadcn@latest add https://hextaui.com/r/toast.jsonAñade el componente, los tokens del tema de HextaUI y los componentes de HextaUI de los que depende.
Añade los tokens del tema a tu CSS global, si aún no lo has hecho.
Instala las dependencias.
pnpm add @base-ui/react @tabler/icons-react cnCopia y pega el siguiente código en tu proyecto.
components/ui/toast.tsx components/ui/button.tsx components/ui/spinner.tsx Actualiza las rutas de importación para que coincidan con la configuración de tu proyecto.
Añade <Toaster /> una vez, cerca de la raíz de tu app.
Después llama a toast desde cualquier lugar, incluso fuera de los componentes de React.
Los toasts se apilan en un montón ordenado con el más reciente delante. Pasa el cursor o enfoca el montón para desplegarlo en abanico; todos los temporizadores se pausan mientras lees. Desliza un toast hacia su borde para descartarlo.
Tipos
Todos los toasts usan la misma superficie calmada; solo el icono lleva el color.
Promise
toast.promise muestra un spinner y luego se convierte en su sitio en un toast de éxito o de error, con el icono apareciendo de golpe al cambiar.
Acción
Pasa action para un botón como Deshacer. Al hacer clic, también descarta el toast.
Actualizar en su sitio
Conserva el id de toast.loading y cámbialo con toast.update, incluido su tipo.
Sin duplicados
Dale un id a un toast y, al llamarlo de nuevo, actualiza el existente en lugar de apilar una copia.
| Key | Acción |
|---|---|
| F6 | Mueve el foco a los toasts y los despliega en abanico. |
| Tab | Se mueve entre las acciones de los toasts y los botones de cierre. |
| Esc | Descarta el toast enfocado. |
- Los toasts se anuncian de forma educada;
toast.errorse anuncia de inmediato. - Los temporizadores se pausan mientras el puntero o el foco están sobre los toasts, así que nadie tiene que correr contra una cuenta atrás.
- Los botones de cierre aparecen al pasar el cursor y al enfocar, y siempre están visibles en pantallas táctiles.
- Con movimiento reducido, los toasts se desvanecen en lugar de deslizarse.
| Prop | Tipo | Predeterminado |
|---|---|---|
positionLos teléfonos siempre usan el ancho completo. | "top-left" | "top-center" | "top-right" | "bottom-left" | "bottom-center" | "bottom-right" | "bottom-right" |
limitToasts mostrados a la vez; los más antiguos se desvanecen. | number | 3 |
timeoutTiempo por defecto en pantalla, en ms. | number | 5000 |
| Atributo | Descripción |
|---|---|
data-slot="toaster" | El viewport, con data-position. |
data-slot="toast" | Cada toast, con data-type, data-expanded y data-swiping. |
| Prop | Tipo | Predeterminado |
|---|---|---|
description | ReactNode | – |
action | { label: ReactNode; onClick?: (event) => void } | – |
idReutilízalo para actualizar en lugar de duplicar. | string | – |
timeoutPor defecto usa el timeout del Toaster. Los mensajes largos permanecen más tiempo, a unas 250 palabras por minuto. | number | – |
priority | "low" | "high" | "low" |
onClose | () => void | – |
onRemove | () => void | – |
También toast.success, toast.error, toast.warning, toast.info, toast.loading, toast.promise, toast.update y toast.dismiss. Cada uno devuelve o recibe el id del toast.
- ButtonBotones en todas las variantes y tamaños, con un flujo integrado de carga, éxito y error que omite el spinner en las peticiones rápidas.
- SpinnerUn indicador de carga con marcas al estilo Apple o un anillo que respira, que puede esperar antes de mostrarse y permanecer el tiempo suficiente para no parpadear.
- AlertMensajes en línea para estado y comentarios, con una superficie neutra, un icono de color y un descarte que se colapsa con suavidad.
- EmptyUn marcador de posición para pantallas que aún no tienen nada que mostrar, con un icono, un mensaje y la siguiente acción.
- ProgressUna barra o anillo que muestra cuánto ha avanzado una tarea, se suaviza entre actualizaciones y se desliza mientras el total es desconocido.
- SkeletonMarcadores de posición que esperan 150ms antes de mostrarse, toman el tamaño exacto del contenido que envuelven y lo hacen aparecer con un fundido sin mover nada.
Usado en bloques
Bloques que se construyen sobre Toast.
- API keysLa página de claves de API de un producto de IA, como las consolas de OpenAI y Anthropic. Crea claves con permisos acotados y caducidad, ve el secreto una sola vez con una copia que lo confirma, revoca con deshacer, renombra en el sitio, rota con un periodo de gracia y consulta el uso por clave.
- ArtifactEl panel junto a un chat de IA que muestra lo que creó el modelo. Páginas web, SVG, documentos y código llegan en streaming y luego pasan a una vista previa en sandbox, con versiones que puedes comparar y restaurar, una división redimensionable y una hoja inferior en móviles.
- Chat SidebarLa barra lateral de una app de chat. Logo, búsqueda y Nuevo chat arriba, tus propios enlaces debajo, chats fijados, proyectos que se expanden para mostrar sus chats, recientes agrupados por día y filas con menús al pasar el cursor y con clic derecho, renombrado en línea, eliminación con deshacer y estados de respuesta en vivo.
- HextaAIUna app de chat de IA completa construida con todos los bloques de IA de HextaUI. Chats en una barra lateral, razonamiento con fuentes, llamadas a herramientas con diffs y aprobaciones, un plan que revisas antes de que el agente se ejecute, Markdown y código en streaming y modo de voz silencioso, todo impulsado por las message parts de AI SDK.