feat(brainstorm): UX fixes — modal confirmation + destination carnet + race fix
Some checks failed
CI / Lint, Unit Tests & Build (push) Failing after 4m29s
CI / Deploy production (on server) (push) Has been skipped

UX Pro Max appliqué selon les best practices 2026 (Heptabase, Obsidian, Tana):
- confirmation-dialogs (HIGH): modal de confirmation avant brainstorm
- success-feedback (MEDIUM): toast avec destination du carnet
- nav-state-active (MEDIUM): indication claire de la session active

3 fixes:

1. Modal de confirmation (brainstorm-confirm-dialog.tsx, 181 lignes):
   - Design system respecté: brand-accent, memento-paper, font-memento-serif
   - Aperçu seed en card paper
   - Sélecteur de carnet avec animation d'expansion
   - Bouton 'Annuler' + 'Lancer le brainstorm' avec loader
   - role=dialog, aria-modal, aria-label
   - focus-visible, keyboard nav
   - backdrop-blur-sm + click-to-close
   - Lazy loaded via next/dynamic

2. Race condition fix (brainstorm-page.tsx L111):
   - Auto-select session désactivé si urlSeed présent
   - urlSeed + urlInviteToken court-circuitent le useEffect

3. Toast avec destination (handleConvert + noteCreatedIn key):
   - message: 'Note créée dans [Nom du carnet]'
   - useConvertIdea accepte notebookId optionnel
   - API convert accepte notebookId via zod schema
   - useConvertIdea(mutationFn) accepte string | {ideaId, notebookId}

i18n: 9 nouvelles clés brainstorm.* en EN/FR
This commit is contained in:
Antigravity
2026-07-05 19:44:07 +00:00
parent d1336b1fea
commit 02b835fb13
7 changed files with 234 additions and 14 deletions

View File

@@ -3072,7 +3072,15 @@
"legendWave1": "Variations",
"legendWave2": "Analogies",
"legendWave3": "Disruptions",
"legendConverted": "Convertie"
"legendConverted": "Convertie",
"confirmTitle": "Brainstormer cette idée",
"confirmSubtitle": "L'IA va développer votre idée",
"destinationLabel": "Les notes seront sauvegardées dans",
"defaultNotebook": "Brainstorm",
"noNotebook": "Aucun carnet",
"launching": "Lancement…",
"launch": "Brainstormer",
"noteCreatedIn": "Note créée dans"
},
"byokSettings": {
"title": "Vos clés API (BYOK)",