4 KiB
4 KiB
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)
- 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.). - Champs de formulaire répétés avec plusieurs variantes de classes (
input,select,textarea) non centralisées. - Cartes/blocs de contenu dupliqués (
rounded-lg border border-gray-200 bg-white p-4) avec petites divergences de spacing. - Alertes (
error,warning,success,info) construites page par page avec des styles proches mais non unifiés. - 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()danssrc/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,textAreaClassdanssrc/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/cardContentClassdanssrc/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)danssrc/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 - 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.tspour les patterns UI transversesTicketStatusBadge.tsxpour les badges de statuts ticket
Cela réduit la divergence visuelle et simplifie les évolutions de design futures.
Limites / reste à harmoniser
- Certaines zones très contextuelles (ex: bulles de conversation live, badges de session archivée, blocs de diff) conservent des styles spécifiques, volontairement.
- Une seconde passe peut encore factoriser quelques micro-patterns (ex: tabs, badges non-ticket, liens d'action inline) si nécessaire.