/**
 * Bi-thème (charte §2) : « auto » suit le système ; le choix explicite est
 * posé en data-theme sur <html> — tokens.css garantit qu'il GAGNE dans les
 * deux sens. Persisté en localStorage.
 */
export type ThemeMode = 'auto' | 'light' | 'dark';

const THEME_KEY = 'siop.theme';
const ORDER: ThemeMode[] = ['auto', 'light', 'dark'];

export function getThemeMode(): ThemeMode {
  const saved = localStorage.getItem(THEME_KEY);
  return saved === 'light' || saved === 'dark' ? saved : 'auto';
}

export function applyThemeMode(mode: ThemeMode): void {
  if (mode === 'auto') {
    document.documentElement.removeAttribute('data-theme');
    localStorage.removeItem(THEME_KEY);
  } else {
    document.documentElement.setAttribute('data-theme', mode);
    localStorage.setItem(THEME_KEY, mode);
  }
}

export function nextThemeMode(current: ThemeMode): ThemeMode {
  return ORDER[(ORDER.indexOf(current) + 1) % ORDER.length]!;
}

export const THEME_LABELS: Record<ThemeMode, string> = {
  auto: 'Thème : auto',
  light: 'Thème : clair',
  dark: 'Thème : sombre',
};
