Skip to content

Toaster

Sistema de notificaciones toast basado en Sonner. Simple de usar y accesible por defecto.


Import

jsx
import { Toaster, toast } from '@imansi/ui';

Setup

Poné el <Toaster /> una sola vez en el root de tu app:

jsx
// App.jsx
import { Toaster } from '@imansi/ui';

export default function App() {
  return (
    <>
      {/* tu app */}
      <Toaster />
    </>
  );
}

Uso básico

jsx
import { toast } from '@imansi/ui';

<Button onClick={() => toast('Cambios guardados')}>
  Guardar
</Button>

Variantes

jsx
toast.success('Usuario creado correctamente');
toast.error('No se pudo conectar con el servidor');
toast.warning('Tu sesión expira en 5 minutos');
toast.info('Hay una nueva versión disponible');
toast.loading('Guardando cambios...');

Con descripción

jsx
toast.success('Usuario creado', {
  description: 'Se envió un correo de confirmación a juan@ejemplo.com',
});

Con acción

jsx
toast('Cambio eliminado', {
  action: {
    label: 'Deshacer',
    onClick: () => restaurarCambio(),
  },
});

Con duración custom

jsx
toast.success('Guardado', { duration: 5000 }); // 5 segundos
toast.info('Info', { duration: Infinity });     // persistente

Promise (loading → success/error)

jsx
toast.promise(guardarUsuario(), {
  loading: 'Guardando usuario...',
  success: 'Usuario guardado correctamente',
  error: 'Error al guardar el usuario',
});

Con botón de cerrar

jsx
toast.success('Guardado', { closeButton: true });

Posición

En <Toaster />:

jsx
<Toaster position="top-right" />
<Toaster position="bottom-center" />
<Toaster position="top-center" />

Opciones: top-left, top-center, top-right, bottom-left, bottom-center, bottom-right.


Props del <Toaster />

PropTipoDefaultDescripción
position'top-left' | 'top-center' | 'top-right' | 'bottom-left' | 'bottom-center' | 'bottom-right''bottom-right'Posición
richColorsbooleanfalseColores más ricos por variante
closeButtonbooleanfalseMuestra botón de cerrar
expandbooleanfalseExpande las notificaciones apiladas
theme'light' | 'dark' | 'system''system'Tema visual

Accesibilidad

  • role="status" + aria-live="polite" para success/info
  • role="alert" + aria-live="assertive" para error/warning
  • Los toast se cierran solos después de la duración (default 4s)
  • Se apilan automáticamente si hay varios

Hecho con ❤️ en Argentina