import { Controller } from "@hotwired/stimulus" // Controller for handling flash messages // Automatically dismisses messages after a timeout and handles manual closing export default class extends Controller { // Define targets for the controller static targets = ["message"] // Initialize the controller when it connects to the DOM connect() { console.log("FlashMessageController mounted", this.element); // Initialize Lucide icons for this element if available if (typeof lucide !== 'undefined') { lucide.createIcons({ within: this.element }); } // Auto-dismiss after 2 seconds this.timeout = setTimeout(() => { this.close() }, 2000) } // Clean up the timeout when the controller disconnects disconnect() { if (this.timeout) { clearTimeout(this.timeout) } } // Close the flash message with a fade-out animation close() { // Add opacity transition classes this.element.classList.add('opacity-0', 'transition-opacity', 'duration-300') // Remove element after transition completes setTimeout(() => { this.element.remove() }, 300) } }