// 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);