# Audit UI/UX transverse - 2026-04-20 ## Périmètre audité Front React complet sous `src/components`: - `agents/*` - `projects/*` - `tickets/*` - `trackers/*` - `settings/*` - `layout/*` ## Incohérences détectées (avant refactor) 1. Boutons d'action dupliqués avec variations de couleurs et de tailles selon les pages (`bg-blue-600`, `bg-gray-900`, `bg-red-100`, etc.). 2. Champs de formulaire répétés avec plusieurs variantes de classes (`input`, `select`, `textarea`) non centralisées. 3. Cartes/blocs de contenu dupliqués (`rounded-lg border border-gray-200 bg-white p-4`) avec petites divergences de spacing. 4. Alertes (`error`, `warning`, `success`, `info`) construites page par page avec des styles proches mais non unifiés. 5. Badges de statut ticket réimplémentés dans plusieurs pages avec logique dupliquée et couverture de statuts non homogène. ## Composants réutilisés sur plusieurs pages ### 1) Boutons (multi-pages) Usage sur: - Agents: `AgentList`, `AgentForm` - Projets: `ProjectForm`, `ProjectDashboard`, `ProjectGraylog`, `ProjectLiveAgent`, `ProjectModules`, `ProjectTasks` - Tickets: `TicketList`, `TicketDetail` - Trackers: `TrackerConfig`, `TrackerList`, `FilterBuilder` - Settings: `SettingsPage` - Layout: `WindowControls`, `NotificationCenter` - UI: `ConfirmModal` Unification appliquée: - Ajout de `buttonClass()` dans [`src/components/ui/primitives.ts`](/home/leclere/Projets/IA/orchai/src/components/ui/primitives.ts) - Variantes centralisées: `primary`, `secondary`, `danger`, `dangerSoft`, `neutralDark`, `success`, `ghost` - Tailles centralisées: `xs`, `sm`, `md`, `icon` ### 2) Formulaires (input/select/textarea + labels) Usage sur: - `AgentForm`, `ProjectForm`, `SettingsPage`, `TrackerConfig`, `ProjectGraylog`, `ProjectLiveAgent`, `ProjectTasks`, `TicketDetail`, `FilterBuilder` Unification appliquée: - `labelClass`, `inputClass`, `textAreaClass` dans [`src/components/ui/primitives.ts`](/home/leclere/Projets/IA/orchai/src/components/ui/primitives.ts) - Remplacement des classes inline répétées par ces styles partagés. ### 3) Cartes de contenu Usage sur: - `ProjectDashboard`, `ProjectGraylog`, `ProjectLiveAgent`, `ProjectModules`, `ProjectTasks`, `TrackerConfig`, `TrackerList`, `TicketList`, `TicketDetail`, `AgentList` Unification appliquée: - `cardClass` / `cardContentClass` dans [`src/components/ui/primitives.ts`](/home/leclere/Projets/IA/orchai/src/components/ui/primitives.ts) - Réemploi des mêmes classes de surface sur les pages. ### 4) Alertes (erreur/succès/warning/info) Usage sur: - `AgentForm`, `AgentList`, `ProjectForm`, `ProjectGraylog`, `ProjectLiveAgent`, `ProjectModules`, `ProjectTasks`, `SettingsPage`, `TrackerConfig`, `TicketDetail` Unification appliquée: - `noticeClass(tone, compact)` dans [`src/components/ui/primitives.ts`](/home/leclere/Projets/IA/orchai/src/components/ui/primitives.ts) - Tons standards: `error`, `success`, `warning`, `info`. ### 5) Badges de statut ticket Usage sur: - `TicketList`, `TicketDetail`, `ProjectDashboard` Unification appliquée: - Nouveau composant [`src/components/ui/TicketStatusBadge.tsx`](/home/leclere/Projets/IA/orchai/src/components/ui/TicketStatusBadge.tsx) - Mapping de statuts mutualisé via `ticketStatusClass()` - Suppression des mappings locaux dupliqués dans les pages tickets/dashboard. ## Méthode de génération commune Oui, pour les composants réutilisés multi-pages identifiés, la génération du style passe désormais par une couche commune: - `primitives.ts` pour les patterns UI transverses - `TicketStatusBadge.tsx` pour les badges de statuts ticket Cela réduit la divergence visuelle et simplifie les évolutions de design futures. ## Limites / reste à harmoniser 1. Certaines zones très contextuelles (ex: bulles de conversation live, badges de session archivée, blocs de diff) conservent des styles spécifiques, volontairement. 2. Une seconde passe peut encore factoriser quelques micro-patterns (ex: tabs, badges non-ticket, liens d'action inline) si nécessaire.