| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849 | import { Controller } from '@hotwired/stimulus';export default class extends Controller {  connect() {    this.initThemeToggle();    console.log("Stimulus: chargement du contrôler du switch");  }  initThemeToggle() {    const themeToggleBtn = document.getElementById('theme-toggle');    if (!themeToggleBtn) return;    let currentTheme = localStorage.getItem('theme') || 'auto';    const applyTheme = (theme) => {      if (theme === 'auto') {        const systemPrefersDark = window.matchMedia('(prefers-color-scheme: dark)').matches;        theme = systemPrefersDark ? 'dark' : 'light';      }      document.documentElement.setAttribute('data-theme', theme);    };    const toggleTheme = () => {      if (currentTheme === 'dark') {        currentTheme = 'light';        console.log('Thème clair activé');      } else if (currentTheme === 'light') {        currentTheme = 'dark';        console.log('Thème sombre activé');      } else {        const systemPrefersDark = window.matchMedia('(prefers-color-scheme: dark)').matches;        currentTheme = systemPrefersDark ? 'light' : 'dark';      }      localStorage.setItem('theme', currentTheme);      applyTheme(currentTheme);    };    applyTheme(currentTheme);    themeToggleBtn.addEventListener('click', toggleTheme);    window.matchMedia('(prefers-color-scheme: dark)').addEventListener('change', (e) => {      if (currentTheme === 'auto') {        applyTheme(e.matches ? 'dark' : 'light');      }    });  }}
 |