Saltar al contenido principal

openSnackbar

Paquetes: @tiendana/utils @tiendana/web-foundation

Sistema de notificaciones tipo snackbar con cola automática, animaciones, stacking y expresiones personalizadas.

Características​

✅ Cola con máximo 3 snackbars visibles
✅ Stacking visual con escala y sombras
✅ 13 expresiones faciales disponibles
✅ Auto-dismiss configurable
✅ CTA buttons con callbacks
✅ Variante accent
✅ Animaciones suaves de entrada/salida

Firma​

interface SnackbarOpts {
msj: string;
iconExpression?: 'congrat_dark' | 'congrat_forrest' | 'congrat_light' |
'done_dark' | 'done_light' | 'error_dark' | 'error_light' |
'error_green_neon_dark' | 'error_green_neon_light' |
'play_dark' | 'play_light' | 'smile_dark' | 'smile_light';
duration?: number;
showClose?: boolean;
ctaText?: string;
ctaCallback?: () => void;
accent?: boolean;
}

function openSnackbar(opts: SnackbarOpts): void

Parámetros​

ParámetroTipoDescripciónDefault
msjstringMensaje a mostrar-
iconExpressionstringIcono de expresión facial'done_light'
durationnumberDuración en ms (0 = sin auto-dismiss)4000
showClosebooleanMostrar botón de cierretrue
ctaTextstringTexto del botón CTA-
ctaCallback() => voidCallback del botón CTA-
accentbooleanUsar variante accentfalse

Demo - Snackbar Básico​

Cargando demo...
Ver código

Demo - Con Botón CTA​

Cargando demo...
Ver código

Demo - Variante Accent​

Cargando demo...
Ver código

Demo - Cola de Snackbars​

Cargando demo...
Ver código

Uso en Código​

import { openSnackbar } from '@tiendana/utils';

// Básico
openSnackbar({
msj: 'Operación completada exitosamente',
iconExpression: 'done_light',
duration: 4000
});

// Con CTA
openSnackbar({
msj: 'Archivo listo para descargar',
iconExpression: 'smile_light',
ctaText: 'Descargar',
ctaCallback: () => downloadFile(url),
duration: 0
});

// Accent variant
openSnackbar({
msj: 'Nueva notificación importante',
iconExpression: 'congrat_forrest',
accent: true,
duration: 5000
});

Expresiones Disponibles​

Light ModeDark ModeForrest
done_lightdone_dark-
error_lighterror_dark-
smile_lightsmile_dark-
play_lightplay_dark-
congrat_lightcongrat_darkcongrat_forrest
error_green_neon_lighterror_green_neon_dark-

Comportamiento​

Cola de Snackbars​

  • Máximo 3 snackbars visibles simultáneamente
  • Nuevos snackbars se agregan a la cola
  • Cuando uno se cierra, el siguiente en cola aparece

Stacking Visual​

// Cada snackbar tiene:
- scale: 1 - (index * 0.04) // 1, 0.96, 0.92
- bottom: 24 + (index * 8) // 24px, 32px, 40px
- zIndex: 9000 + index
- boxShadow: Aumenta con el índice

Animaciones​

  1. Entrada: Muestra icono primero, luego expande texto (1000ms)
  2. Salida: Contrae y desvanece (1400ms)
  3. Auto-dismiss: Solo el snackbar superior cuenta duración

Casos de Uso​

  • Feedback de acciones: Confirmar operaciones (guardar, eliminar, copiar)
  • Notificaciones: Mensajes del sistema, actualizaciones
  • Errores no críticos: Alertas que no bloquean la UI
  • CTAs opcionales: Acciones secundarias (deshacer, ver detalles)

Notas Técnicas​

  • Dependencias: Requiere estilos de @tiendana/web-foundation
  • Expresiones: Cargadas desde CloudFront (assets/icons/logos/expressions/)
  • DOM: Se agrega directamente a document.body
  • Timeouts: Gestionados con Map<HTMLDivElement, number> para limpieza correcta

Ver También​