6.8 KiB
		
	
	
	
	
	
	
	
			
		
		
	
	
			6.8 KiB
		
	
	
	
	
	
	
	
🎨 État du Système de Théming - ObsiViewer
Date : 20 octobre 2025
Statut : 🟢 Infrastructure complète - Refactoring en cours
✅ Complété
1. Architecture de base (100%)
- 
✅ themes.css : 14 variantes (7 thèmes × 2 modes) avec tokens CSS complets - Light, Dark, Obsidian, Nord, Notion, GitHub, Discord, Monokai
- Chaque thème a une version light ET dark
- Tokens : backgrounds, text, borders, brand, status, UI, editor, shadows
 
- 
✅ tailwind.config.js : Configuration complète - Mapping de tous les tokens CSS vers classes Tailwind
- 40+ tokens mappés (bg, fg, surface1/2, primary, accent, etc.)
- Support des variantes (hover, focus, dark)
 
- 
✅ ThemeService : Service Angular fonctionnel - Gestion mode (system/light/dark) + thème
- Persistance localStorage
- Observable pour réactivité
- Application sur <html>(classe.dark+data-theme)
 
- 
✅ codemirror-themes.ts : 14 variantes CodeMirror 6 - Fonction cm6ThemeFor(themeId, mode)complète
- Chaque thème a sa palette de coloration syntaxique
- Cohérence avec les tokens CSS
 
- Fonction 
- 
✅ Anti-FOUC : Script inline dans index.html- Lecture des préférences avant Angular
- Application immédiate du thème
- Pas de flash de contenu non stylé
 
2. Refactoring automatisé (68%)
- ✅ Script refactor-colors.mjscréé
- ✅ 66 fichiers mis à jour automatiquement
- ✅ 232 occurrences de couleurs hardcodées remplacées
- bg-slate-*→- bg-surface1/2
- text-gray-*→- text-main/muted
- border-slate-*→- border-border
- Variantes dark:, hover:, focus: gérées
 
3. Documentation
- ✅ THEMING_IMPLEMENTATION.md : Documentation technique complète
- ✅ THEMING_STATUS.md : Ce fichier (état du projet)
🔄 En cours
Refactoring manuel (109 occurrences restantes)
Fichiers prioritaires (14+ matches) :
- app-sidebar-drawer.component.ts(14 matches)
- graph-options-panel.component.ts(11 matches)
- app-shell-nimbus.component.ts(9 matches)
Fichiers moyens (4-8 matches) :
- quick-links.component.ts(8)
- nimbus-sidebar.component.ts(8)
- markdown-playground.component.ts(6)
- add-bookmark-modal.component.html(6)
- search-query-assistant.component.ts(5)
- filters-section.component.ts(4)
Fichiers mineurs (1-3 matches) :
- 23 fichiers avec 1-3 occurrences chacun
Types de cas restants :
- Styles conditionnels complexes
- Classes dynamiques avec logique métier
- Variantes rares (active:, disabled:, group-hover:)
- Couleurs dans des contextes spécifiques (graphes, visualisations)
⏳ À faire
1. Refactoring manuel (Priorité : Haute)
Approche recommandée :
- Traiter les 3 fichiers prioritaires (34 matches)
- Traiter les 7 fichiers moyens (47 matches)
- Traiter les 23 fichiers mineurs (28 matches)
Commande pour identifier :
grep -rn "bg-slate-\|bg-gray-\|text-slate-\|text-gray-" src/ | wc -l
2. Tests de la matrice complète (Priorité : Haute)
14 combinaisons à tester :
| Thème | Light | Dark | 
|---|---|---|
| Light | ✅ | N/A | 
| Dark | N/A | ✅ | 
| Obsidian | ⏳ | ⏳ | 
| Nord | ⏳ | ⏳ | 
| Notion | ⏳ | ⏳ | 
| GitHub | ⏳ | ⏳ | 
| Discord | ⏳ | ⏳ | 
| Monokai | ⏳ | ⏳ | 
Checklist par combinaison :
- Sidebar (fond, hover, actif, badges)
- Topbar + search (input, focus, placeholder)
- Liste notes (items, hover, selected)
- Page détail (titres, liens, code, tables)
- Mode édition (inputs, buttons, CodeMirror)
- Panneaux (TOC, propriétés, tags)
- Modales (fond, overlay, bordure)
- Menus contextuels
- Toasts
- Tables (headers, zebra, hover)
- Chips/Tags (fond, hover, selected)
- Scrollbars
- Page Parameters
- Mobile (bottom nav, drawers)
3. Validation contrastes (Priorité : Moyenne)
Outils :
- WebAIM Contrast Checker
- Chrome DevTools (Lighthouse)
Critères WCAG AA :
- Texte normal : ratio ≥ 4.5:1
- Texte large : ratio ≥ 3:1
- Éléments UI : ratio ≥ 3:1
À vérifier pour chaque thème :
- Texte principal / fond
- Texte muted / fond
- Liens / fond
- Boutons / fond
- Bordures / fond
4. Vérification finale (Priorité : Basse)
- Aucune couleur hardcodée restante (grep complet)
- Tous les composants utilisent les tokens
- Documentation à jour
- Screenshots comparatifs (avant/après)
- Guide utilisateur pour la page Parameters
📊 Métriques
Progression globale
Infrastructure :    ████████████████████ 100% (5/5)
Refactoring :       █████████████░░░░░░░  68% (232/341)
Tests :             ░░░░░░░░░░░░░░░░░░░░   0% (0/14)
Documentation :     ████████████████████ 100% (2/2)
---
TOTAL :             ████████████░░░░░░░░  67%
Détails refactoring
| Catégorie | Avant | Après | Restant | 
|---|---|---|---|
| Couleurs hardcodées | 341 | 109 | 109 | 
| Fichiers touchés | 0 | 66 | ~32 | 
| Tokens créés | 0 | 40+ | - | 
| Thèmes complets | 2 | 14 | - | 
🚀 Commandes rapides
# Refactoring automatique (réexécuter si besoin)
node scripts/refactor-colors.mjs
# Rechercher couleurs hardcodées
grep -rn "bg-slate-\|bg-gray-\|text-slate-\|text-gray-" src/
# Lancer l'application
npm run dev
# Tests E2E
npm run test:e2e
# Build production
npm run build
🎯 Objectif final
Application entièrement thémable :
- ✅ 7 thèmes × 2 modes = 14 combinaisons
- ✅ Aucune couleur hardcodée
- ✅ Cohérence visuelle totale
- ✅ Accessibilité WCAG AA
- ✅ Performance optimale (CSS variables)
- ✅ Expérience utilisateur fluide (anti-FOUC)
📝 Notes
Points d'attention
- CodeMirror 6 : Les thèmes sont appliqués dynamiquement via ThemeService.getCodeMirrorExtensions()
- Persistance : Clé localStorage obsiviewer.preferences.v1
- Réactivité : Tous les composants doivent s'abonner à ThemeService.onPrefs$si nécessaire
- Mobile : Vérifier les overlays et bottom sheets dans chaque thème
- Graphes : Les visualisations D3/Canvas peuvent nécessiter un traitement spécial
Améliorations futures
- Thème personnalisé (éditeur de couleurs)
- Import/export de thèmes
- Prévisualisation live dans Parameters
- Thèmes communautaires
- Mode haute contraste dédié
Dernière mise à jour : 20 octobre 2025, 17:05 UTC-04:00