Files
notytex/docs/frontend/CLASS_DASHBOARD_DESIGN.md

417 lines
15 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 🎨 **Design System - Class Dashboard**
> **Guide complet du design et des composants visuels pour la page de présentation de classe**
> Version : 2.0 - Janvier 2025
> Expertise : UI/UX Designer
---
## 🎯 **Philosophie Design**
Le Class Dashboard suit une **approche Mobile-First** avec une **hiérarchie visuelle claire** et des **micro-interactions soignées**. Le design privilégie la **lisibilité des données statistiques** tout en maintenant une **esthétique moderne et accessible**.
### **Principes Directeurs**
- **Clarté de l'information** : Hiérarchie visuelle marquée pour les données importantes
- **Cohérence systémique** : Components réutilisables avec variations d'état
- **Performance visuelle** : Animations fluides optimisées pour 60fps
- **Accessibilité universelle** : Contraste élevé, navigation clavier, screen readers
- **Progressive enhancement** : Dégradation gracieuse selon les capacités device
---
## 🎨 **Design System Global**
### **Palette de Couleurs**
#### **Couleurs Primaires**
- **Bleu Principal** : `#3B82F6` - Actions principales, liens actifs
- **Indigo Accent** : `#6366F1` - Gradients hero, éléments premium
- **Orange Highlight** : `#F97316` - Métriques principales, call-to-action
- **Gris Neutre** : `#6B7280` - Textes secondaires, borders subtiles
#### **Couleurs Sémantiques**
- **Succès (Vert)** : `#10B981` - Évaluations terminées, excellentes performances
- **Attention (Jaune)** : `#F59E0B` - En cours, performances moyennes
- **Erreur (Rouge)** : `#EF4444` - Non commencées, performances faibles
- **Information (Bleu)** : `#3B82F6` - Notifications neutres, help tooltips
#### **Couleurs de Performance**
- **Excellence (>16/20)** : Vert saturé `#059669`
- **Bon niveau (12-16/20)** : Bleu confiance `#2563EB`
- **Moyen (8-12/20)** : Orange attention `#EA580C`
- **Insuffisant (<8/20)** : Rouge alerte `#DC2626`
### **Typographie**
#### **Hiérarchie des Titres**
- **H1 Dashboard** : `text-3xl font-bold` (30px) - Titre principal classe
- **H2 Sections** : `text-2xl font-bold` (24px) - Domaines, Compétences
- **H3 Cards** : `text-lg font-semibold` (18px) - Titres de cartes
- **H4 Metrics** : `text-xl font-bold` (20px) - Valeurs statistiques importantes
#### **Corps de Texte**
- **Body Principal** : `text-base` (16px) - Texte standard lisible
- **Body Secondaire** : `text-sm text-gray-600` (14px) - Métadonnées, descriptions
- **Micro-données** : `text-xs text-gray-500` (12px) - Labels, unités de mesure
- **Labels UI** : `text-sm font-medium` (14px) - Formulaires, boutons
### **Système d'Espacement**
#### **Grille de Base**
- **Base unit** : 4px (0.25rem)
- **Spacing scale** : 4px, 8px, 12px, 16px, 24px, 32px, 48px, 64px
- **TailwindCSS mapping** : p-1, p-2, p-3, p-4, p-6, p-8, p-12, p-16
#### **Règles d'Application**
- **Cards padding** : `p-6` (24px) pour confort de lecture
- **Grid gaps** : `gap-6` (24px) entre cards principales, `gap-4` (16px) pour contenus
- **Sections margin** : `mb-8` (32px) séparation des grandes sections
- **Micro-spacing** : `space-y-2` (8px) entre éléments liés
---
## 🏗️ **Architecture Visuelle**
### **Layout Principal**
#### **Structure Hiérarchique**
```
Hero Section (100vw, gradient background)
├── Container max-width centré (1200px desktop)
├── Grid responsive principal
└── Breadcrumb navigation
Statistics Grid (4 colonnes desktop → 1 colonne mobile)
├── Cards principales avec shadow elevation
├── Hover states avec scale léger
└── Loading skeleton structure
Content Sections (2 colonnes desktop → 1 colonne mobile)
├── Domaines dynamiques
├── Compétences adaptatives
└── Empty states informatifs
```
#### **Grille Responsive**
- **Desktop (lg+)** : `grid-cols-4` puis `grid-cols-2` pour sections
- **Tablet (md)** : `grid-cols-2` puis stack vertical sections
- **Mobile (sm)** : `grid-cols-1` stack complet avec optimisations tactiles
### **Elevation et Profondeur**
#### **Système de Shadows**
- **Level 0** : Pas de shadow - éléments intégrés
- **Level 1** : `shadow-sm` - Borders légères, separators
- **Level 2** : `shadow-md` - Cards au repos, conteneurs
- **Level 3** : `shadow-lg` - Cards hover, modals
- **Level 4** : `shadow-xl` - Overlays, tooltips flottants
---
## 🧩 **Composants Principaux**
### **Hero Section**
#### **Structure Visuelle**
- **Background gradient** : `bg-gradient-to-br from-blue-50 to-indigo-100`
- **Corner radius** : `rounded-xl` (12px) pour modernité
- **Padding responsive** : `p-6` mobile → `p-8` desktop
- **Content layout** : Flexbox justify-between pour distribution
#### **Éléments Constitutifs**
- **Titre classe** : Typographie H1 avec `text-gray-900` pour contrast élevé
- **Description** : Text secondaire `text-gray-600` avec line-height optimisé
- **Selector trimestre** : Form control avec focus states personnalisés
### **Statistics Cards**
#### **Card Container Base**
- **Background** : `bg-white` pure pour lisibilité maximale
- **Border radius** : `rounded-xl` cohérent avec hero
- **Shadow** : `shadow-md` au repos, `shadow-lg` au hover
- **Padding** : `p-6` pour breathing room optimal
- **Transition** : `transition-all duration-300` pour fluidité
#### **Variantes par Type**
**Card Quantité :**
- **Layout** : Stack vertical avec `space-y-3`
- **Metrics display** : Flex justify-between pour alignement
- **Color coding** : Vert/Orange/Rouge selon statut
- **Typography** : Labels text-sm, valeurs font-bold
**Card Résultats :**
- **Hero metric** : Centre avec `text-3xl font-bold`
- **Supporting data** : Grid 2x2 pour min/max/médiane/écart-type
- **Color emphasis** : Orange pour métrique principale
- **Micro-data** : Nombre d'évaluations en text-xs
### **Dynamic Cards (Domaines/Compétences)**
#### **Layout Structure**
- **Header** : Flex justify-between avec titre tronqué si nécessaire
- **Content area** : Métriques avec `space-y-2`
- **Footer** : Progress bar full-width avec animation
#### **Progress Bar Design**
- **Container** : `w-full bg-gray-200 rounded-full h-2`
- **Fill bar** : Couleur contextuelle, `transition-all duration-1000 ease-out`
- **Animation** : Width de 0% à target% avec délai séquentiel
- **Accessibility** : Attributes ARIA pour screen readers
### **Interactive Elements**
#### **Trimester Selector**
- **Base style** : Form select avec custom styling
- **Focus state** : Ring blue pour accessibilité
- **Options** : Clear labeling avec noms complets trimestres
- **Mobile optimization** : Touch-friendly size (44px minimum)
#### **Loading States**
- **Skeleton cards** : `animate-pulse bg-gray-200` avec forme cards
- **Spinners** : `animate-spin` avec couleurs contextuelles
- **Overlay** : Semi-transparent avec pointer-events disabled
- **Text feedback** : Messages informatifs pendant chargement
---
## 🎬 **Animations et Micro-interactions**
### **Système de Transitions**
#### **Durées Standard**
- **Ultra-fast** : 150ms - Hover states, focus indicators
- **Fast** : 300ms - Cards transforms, color changes
- **Normal** : 500ms - Layout changes, section updates
- **Slow** : 800ms - Progress bars, number animations
- **Extra-slow** : 1000ms - Page transitions, major state changes
#### **Easing Functions**
- **ease-out** : Transitions d'entrée naturelles
- **ease-in-out** : Hover states bidirectionnels
- **cubic-bezier** : Custom curves pour animations complexes
### **Animation Patterns**
#### **Cards Introduction**
- **Stagger animation** : Délais de 50ms entre cards (0ms, 50ms, 100ms...)
- **Transform entrance** : `translateY(20px)``translateY(0)`
- **Opacity fade** : `opacity-0``opacity-1`
- **Duration** : 300ms avec ease-out
#### **Number Animations**
- **RequestAnimationFrame** : Pour fluidité 60fps
- **Easing** : Cubic ease-out pour décélération naturelle
- **Precision** : Arrondi approprié selon type donnée
- **Accessibility** : Respecte prefers-reduced-motion
#### **Progress Bars**
- **Sequential reveal** : Chaque barre après la précédente
- **Smooth width transition** : 0% à valeur cible
- **Color morphing** : Transition couleurs selon performance
- **Completion feedback** : Micro-animation de fin
---
## 📱 **Design Responsive et Mobile**
### **Breakpoints Strategy**
#### **Mobile-First Approach**
- **Base (sm)** : 0px - Design pour mobile d'abord
- **Tablet (md)** : 768px - Adaptations pour tablettes
- **Desktop (lg)** : 1024px - Layout multi-colonnes
- **Wide (xl)** : 1280px - Optimisations grands écrans
### **Mobile Optimizations**
#### **Touch Targets**
- **Minimum size** : 44px × 44px pour confort tactile
- **Spacing** : 8px minimum entre targets adjacents
- **Visual feedback** : Ripple effects, highlight states
- **Gestures** : Swipe support pour navigation
#### **Content Adaptation**
- **Typography scaling** : Tailles adaptées par breakpoint
- **Grid collapse** : 4-col → 2-col → 1-col progressif
- **Padding reduction** : p-6 → p-4 sur petits écrans
- **Navigation** : Collapse/expand patterns
### **Desktop Enhancements**
#### **Hover States**
- **Cards elevation** : Shadow-md → shadow-lg
- **Scale subtle** : transform scale(1.02) pour depth
- **Color intensification** : Couleurs légèrement plus saturées
- **Cursor indicators** : Pointer, grab selon interaction
#### **Layout Expansions**
- **Multi-column** : Exploitation largeur disponible
- **Sidebar potential** : Space pour navigation secondaire
- **Modal overlays** : Interactions riches avec overlays
- **Keyboard shortcuts** : Support touches rapides
---
## ♿ **Accessibilité Visuelle**
### **Contraste et Lisibilité**
#### **WCAG 2.1 Compliance**
- **AA Level** : Ratio 4.5:1 pour texte normal
- **AAA Level** : Ratio 7:1 pour texte critique
- **Large text** : Ratio 3:1 pour text-lg+
- **UI elements** : Ratio 3:1 pour borders, icons
#### **Color Blindness Support**
- **Pas de couleur seule** : Information via forme/texte aussi
- **Patterns distinctifs** : Textures, icons pour différenciation
- **High contrast mode** : Adaptation système preferences
- **Alternative indicators** : Icons + couleur pour statuts
### **Navigation et Focus**
#### **Keyboard Navigation**
- **Focus visible** : Ring blue claire sur tous éléments
- **Tab order** : Logique de lecture naturelle
- **Skip links** : Navigation rapide aux contenus principaux
- **Keyboard shortcuts** : Raccourcis pour actions communes
#### **Screen Reader Support**
- **ARIA labels** : Descriptions complètes pour contexts
- **Live regions** : Annonces mises à jour dynamiques
- **Landmark roles** : Structure sémantique claire
- **Alt texts** : Descriptions images/graphiques
### **Motion et Animation**
#### **Prefers-Reduced-Motion**
- **Detection system** : `@media (prefers-reduced-motion: reduce)`
- **Animation disable** : Transitions instantanées si demandé
- **Alternative feedback** : Visual sans animation
- **Graceful degradation** : Fonctionnalités préservées
---
## 🔧 **Guidelines d'Implémentation**
### **Classes TailwindCSS Recommandées**
#### **Structure Cards**
- **Container** : `bg-white rounded-xl shadow-md p-6 hover:shadow-lg transition-all duration-300`
- **Title** : `text-lg font-semibold text-gray-800 mb-4`
- **Content** : `space-y-3` pour espacement vertical cohérent
- **Footer** : `mt-4 pt-4 border-t border-gray-100` si nécessaire
#### **Typography Hierarchy**
- **Page title** : `text-3xl font-bold text-gray-900 mb-2`
- **Section headers** : `text-2xl font-bold text-gray-900 mb-6`
- **Metrics large** : `text-xl font-bold text-{color}-600`
- **Supporting text** : `text-sm text-gray-600`
#### **Interactive States**
- **Hover cards** : `hover:scale-105 hover:shadow-lg`
- **Focus elements** : `focus:ring-2 focus:ring-blue-500 focus:outline-none`
- **Active buttons** : `active:scale-95 active:bg-{color}-600`
- **Disabled states** : `disabled:opacity-50 disabled:cursor-not-allowed`
### **Animation Implementation**
#### **CSS Transitions**
- **Default** : `transition-all duration-300 ease-out`
- **Colors only** : `transition-colors duration-200`
- **Transform only** : `transition-transform duration-300`
- **Custom timing** : `transition-[property] duration-[time]`
#### **Custom Animations**
- **Fade in up** : Entrée cards avec transform + opacity
- **Pulse** : Loading states avec scale animation
- **Slide** : Navigation transitions avec translateX
- **Bounce** : Feedback succès avec scale + elasticity
---
## 📊 **Métriques de Qualité Design**
### **Performance Visuelle**
- **First Contentful Paint** : < 1.8s pour première impression
- **Largest Contentful Paint** : < 2.5s pour contenu principal
- **Cumulative Layout Shift** : < 0.1 pour stabilité visuelle
- **Animation framerate** : 60fps constant pour fluidité
### **Accessibilité**
- **Color contrast** : 100% compliance WCAG AA
- **Keyboard navigation** : Tous éléments accessibles
- **Screen reader** : Contenu 100% navigable
- **Touch targets** : 44px minimum respecté
### **Responsive Quality**
- **Mobile usability** : Score Google 100/100
- **Cross-browser** : Compatibilité IE11+ garantie
- **Device coverage** : iPhone SE à desktop 4K
- **Touch optimization** : Gestures naturels supportés
---
## 🚀 **Évolutions Futures**
### **Dark Theme**
- **Color palette** : Variables CSS pour switch automatique
- **Contrast adaptation** : Niveaux ajustés pour dark mode
- **Media query** : `@media (prefers-color-scheme: dark)`
- **Toggle manual** : Contrôle utilisateur avec persistence
### **Advanced Interactions**
- **Drag & drop** : Réorganisation cards personnalisée
- **Chart overlays** : Graphiques détaillés en modal
- **Bulk actions** : Sélection multiple avec toolbar
- **Real-time updates** : WebSocket pour données live
### **Micro-animations Avancées**
- **Morphing numbers** : Transitions chiffres plus fluides
- **Particle effects** : Célébrations achievements
- **Parallax subtle** : Depth effect sur scroll
- **Physics-based** : Spring animations réalistes
---
## 🎯 **Checklist Qualité Design**
### **Avant Déploiement**
- [ ] **Contraste colors** vérifié WCAG AA
- [ ] **Navigation clavier** testée complète
- [ ] **Responsive** validé sur tous breakpoints
- [ ] **Performance** animations 60fps confirmé
- [ ] **Cross-browser** testé Chrome/Firefox/Safari/Edge
- [ ] **Touch targets** 44px minimum respectés
- [ ] **Loading states** tous scenarios couverts
- [ ] **Error states** feedback utilisateur clair
### **Maintenance Continue**
- [ ] **Design tokens** mis à jour si évolutions
- [ ] **Component library** synchronisée
- [ ] **Documentation** à jour avec changes
- [ ] **Accessibility audit** périodique
- [ ] **Performance monitoring** métriques suivies
- [ ] **User feedback** intégré dans itérations
---
## 📚 **Ressources Design**
### **Assets et Outils**
- **Color palette** : Variables CSS dans design-system.css
- **Icons** : FontAwesome 6 pour cohérence
- **Fonts** : System fonts stack pour performance
- **Images** : Formats WebP avec fallback PNG
### **Documentation Technique**
- **Storybook** : Catalogue composants interactifs
- **Design tokens** : Variables Figma → CSS automation
- **Style guide** : Guidelines équipe développement
- **Pattern library** : Composants réutilisables documentés
---
*Documentation réalisée avec expertise UI/UX Designer*
*Version 2.0 - Janvier 2025 - Notytex Design System* 🎨