feat: thème dark/light/system, taille police, page config, paste photo todo

ThemeContext
- ThemeMode dark/light/system persisté en localStorage
- fontScale 0.8–1.4 appliqué via CSS zoom sur <html>
- Écoute prefers-color-scheme pour le mode système

index.html
- Script anti-flash : applique thème et zoom synchrone avant le premier rendu

Layout
- TopBar fixe 44px : bouton icône qui cycle dark→light→system→dark
- Contenu décalé de 44px vers le bas

ConfigPage (/config)
- Sélecteur de thème (3 boutons avec icônes)
- Slider taille de texte avec aperçu temps réel
- Bouton Réinitialiser

HomePage
- Tuile Paramètres (fa-sliders) → /config

TodoForm
- Paste Ctrl+V pour ajouter une photo (même mécanique que CatalogueModal)
- Indice visuel "ou Ctrl+V"

v0.5.0

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-05-25 13:41:42 +02:00
parent 3dbd554eeb
commit bd0e06c5dd
8 changed files with 342 additions and 59 deletions
+11 -1
View File
@@ -1,5 +1,5 @@
<!doctype html>
<html lang="fr" data-theme="dark">
<html lang="fr">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no" />
@@ -11,6 +11,16 @@
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.5.1/css/all.min.css" />
<link rel="icon" type="image/svg+xml" href="/favicon.svg" />
<title>HomeHub</title>
<!-- Anti-flash : applique thème et zoom avant le premier rendu -->
<script>
(function(){
var t=localStorage.getItem('theme')||'system';
var r=t==='system'?(matchMedia('(prefers-color-scheme:dark)').matches?'dark':'light'):t;
document.documentElement.setAttribute('data-theme',r);
var z=localStorage.getItem('fontScale');
if(z)document.documentElement.style.zoom=z;
})();
</script>
</head>
<body>
<div id="root"></div>