Football / src /components /Toast.js
Prataykarali's picture
VANTAGE — Hugging Face Spaces Docker deploy
d83f37d
Raw
History Blame Contribute Delete
1.22 kB
/**
* Toast Notification System Component
*/
export class Toast {
static container = null;
static init() {
this.container = document.getElementById('toast-container');
if (!this.container) {
this.container = document.createElement('div');
this.container.id = 'toast-container';
this.container.className = 'toast-container';
this.container.setAttribute('role', 'status');
this.container.setAttribute('aria-live', 'polite');
document.body.appendChild(this.container);
}
}
static show({ message, type = 'info', duration = 4000, vibrate = false }) {
if (!this.container) this.init();
const toast = document.createElement('div');
toast.className = `toast toast--${type}`;
toast.textContent = message;
if (vibrate && typeof navigator !== 'undefined' && 'vibrate' in navigator) {
try {
navigator.vibrate([200, 100, 200]);
} catch {
// Ignore
}
}
this.container.appendChild(toast);
if (duration > 0) {
setTimeout(() => {
toast.style.opacity = '0';
toast.style.transition = 'opacity 0.3s ease';
setTimeout(() => toast.remove(), 300);
}, duration);
}
}
}