// Toast notification function function showToast(message, type = 'info') { const toast = document.createElement('div'); toast.className = `fixed bottom-5 right-5 px-6 py-3 rounded-lg shadow-lg text-white animate__animated animate__fadeInUp animate__faster ${ type === 'success' ? 'bg-green-500' : type === 'error' ? 'bg-red-500' : 'bg-blue-500' }`; toast.innerHTML = `
${message}
`; document.body.appendChild(toast); setTimeout(() => { toast.classList.add('animate__fadeOutDown'); setTimeout(() => toast.remove(), 500); }, 3000); } // Add ripple effect to buttons document.addEventListener('DOMContentLoaded', () => { const buttons = document.querySelectorAll('button'); buttons.forEach(button => { button.addEventListener('click', function(e) { const x = e.clientX - e.target.getBoundingClientRect().left; const y = e.clientY - e.target.getBoundingClientRect().top; const ripple = document.createElement('span'); ripple.className = 'ripple'; ripple.style.left = `${x}px`; ripple.style.top = `${y}px`; this.appendChild(ripple); setTimeout(() => ripple.remove(), 1000); }); }); }); // Add ripple effect styles const style = document.createElement('style'); style.innerHTML = ` .ripple { position: absolute; background: rgba(255, 255, 255, 0.4); border-radius: 50%; transform: scale(0); animation: ripple 600ms linear; pointer-events: none; } @keyframes ripple { to { transform: scale(4); opacity: 0; } } `; document.head.appendChild(style);