import { Controller } from '@hotwired/stimulus'; /** * Contrôleur Stimulus pour le toggle du thème * Compatible avec Turbo et les rechargements traditionnel */ export default class extends Controller { static targets = ['button']; connect() { this.applyBackground(); this.setupListener(); } setupListener() { this.buttonTarget.addEventListener('click', (e) => { e.preventDefault(); this.toggle(); }); } toggle() { const current = document.documentElement.getAttribute('data-theme'); const next = current === 'dark' ? 'light' : 'dark'; document.documentElement.setAttribute('data-theme', next); localStorage.setItem('mc-theme', next); this.applyBackground(); } applyBackground() { const body = document.getElementById('page-body'); if (!body) return; const theme = document.documentElement.getAttribute('data-theme'); const bg = theme === 'dark' ? body.dataset.bgDark : body.dataset.bgLight; if (bg) { body.style.backgroundImage = `url('${bg}')`; } } }