export class Toast { private container: HTMLElement; private timeout: number; constructor(timeout: number = 3000) { this.container = document.querySelector('.toast-container') as HTMLElement; this.timeout = timeout; } public show(message: string): void { const toast = document.createElement('div'); toast.className = 'toast'; toast.textContent = message; this.container.appendChild(toast); requestAnimationFrame(() => { toast.classList.add('show'); }); setTimeout(() => { this.hide(toast); }, this.timeout); } private hide(toast: HTMLElement): void { toast.classList.remove('show'); toast.addEventListener('transitionend', () => { toast.remove(); }); } }