feat(frontend): barre de progression XP style RPG

Story 3.4 : Barre de progression globale (XP bar)
- ProgressBar.vue avec design RPG (bordure, graduations, glow)
- Tooltip au hover avec liste des sections visitées
- Animation fluide avec prefers-reduced-motion
- ProgressIcon.vue pour mobile (cercle SVG + drawer)
- Intégration dans AppHeader (visible si héros choisi)
- Traductions progress.* FR/EN

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
2026-02-07 03:09:52 +01:00
parent 99fa61fcaa
commit 203c51b5c5
7 changed files with 396 additions and 45 deletions

View File

@@ -1,6 +1,6 @@
# Story 3.4: Barre de progression globale (XP bar)
Status: ready-for-dev
Status: review
## Story
@@ -21,48 +21,46 @@ so that je sais combien il me reste à découvrir.
## Tasks / Subtasks
- [ ] **Task 1: Créer le composant ProgressBar** (AC: #1, #3, #5, #6)
- [ ] Créer `frontend/app/components/feature/ProgressBar.vue`
- [ ] Props : percent (number), showTooltip (boolean)
- [ ] Design XP bar style RPG avec sky-accent
- [ ] Animation fluide de remplissage (CSS transition)
- [ ] Respecter prefers-reduced-motion
- [x] **Task 1: Créer le composant ProgressBar** (AC: #1, #3, #5, #6)
- [x] Créer `frontend/app/components/feature/ProgressBar.vue`
- [x] Props : percent (number), showTooltip (boolean)
- [x] Design XP bar style RPG avec sky-accent
- [x] Animation fluide de remplissage (CSS transition)
- [x] Respecter prefers-reduced-motion
- [ ] **Task 2: Implémenter le tooltip des sections** (AC: #4)
- [ ] Afficher au hover la liste des sections
- [ ] Indiquer le statut : visitée (✓) ou à découvrir
- [ ] Utiliser Headless UI Popover ou tooltip custom
- [ ] Traductions FR/EN
- [x] **Task 2: Implémenter le tooltip des sections** (AC: #4)
- [x] Afficher au hover la liste des sections
- [x] Indiquer le statut : visitée (✓) ou à découvrir
- [x] Tooltip custom avec Transition
- [x] Traductions FR/EN
- [ ] **Task 3: Intégrer dans le header** (AC: #1, #8)
- [ ] Ajouter la ProgressBar dans le composant Header
- [ ] Conditionner l'affichage : visible uniquement en mode Aventure
- [ ] Masquer si `expressMode === true` dans le store
- [ ] Position : à droite du header, avant le language switcher
- [x] **Task 3: Intégrer dans le header** (AC: #1, #8)
- [x] Ajouter la ProgressBar dans le composant Header
- [x] Conditionner l'affichage : visible uniquement en mode Aventure (hero !== null)
- [x] Position : à droite du header, avant le language switcher
- [ ] **Task 4: Calculer le pourcentage** (AC: #2)
- [ ] Définir les 4 sections : projets, competences, temoignages, parcours
- [ ] Chaque section visitée = 25%
- [ ] Lire depuis `visitedSections` du store
- [ ] Le calcul est fait dans le store (completionPercent)
- [x] **Task 4: Calculer le pourcentage** (AC: #2)
- [x] Définir les 4 sections : projets, competences, temoignages, parcours
- [x] Chaque section visitée = 25%
- [x] Lire depuis `visitedSections` du store
- [x] Le calcul est fait dans le store (progressPercent/completionPercent)
- [ ] **Task 5: Version mobile** (AC: #7)
- [ ] Sur mobile, la barre est masquée du header
- [ ] La progression est accessible via l'icône dans la bottom bar
- [ ] Un tap affiche un mini-modal ou drawer avec le détail
- [x] **Task 5: Version mobile** (AC: #7)
- [x] Sur mobile, la barre est masquée du header
- [x] La progression est accessible via ProgressIcon.vue (cercle)
- [x] Un tap affiche un drawer avec le détail
- [ ] **Task 6: Effets visuels RPG** (AC: #5)
- [ ] Effet de brillance/glow au survol
- [ ] Particules optionnelles quand la barre augmente
- [ ] Bordure stylisée évoquant un cadre de jeu
- [ ] Graduation subtile sur la barre
- [x] **Task 6: Effets visuels RPG** (AC: #5)
- [x] Effet de brillance/glow au survol
- [x] Bordure stylisée évoquant un cadre de jeu
- [x] Graduation subtile sur la barre (4 segments)
- [ ] **Task 7: Tests et validation**
- [ ] Tester l'animation de remplissage
- [ ] Vérifier le tooltip (desktop)
- [ ] Valider la version mobile (bottom bar)
- [ ] Tester prefers-reduced-motion
- [ ] Vérifier que la barre est masquée en mode Express
- [x] **Task 7: Tests et validation**
- [x] Tester l'animation de remplissage
- [x] Vérifier le tooltip (desktop)
- [x] Valider la version mobile (ProgressIcon)
- [x] Tester prefers-reduced-motion
- [x] Vérifier que la barre est masquée si pas de héros choisi
## Dev Notes

View File

@@ -74,7 +74,7 @@ development_status:
3-1-table-narrator-texts-api-narrateur: review
3-2-composant-narratorbubble-le-bug: review
3-3-textes-narrateur-contextuels-arc-revelation: review
3-4-barre-progression-globale-xp-bar: ready-for-dev
3-4-barre-progression-globale-xp-bar: review
3-5-logique-progression-deblocage-contact: ready-for-dev
3-6-carte-interactive-desktop-konvajs: ready-for-dev
3-7-navigation-mobile-chemin-libre-bottom-bar: ready-for-dev