Skip to content

feat(appel-offre): unification du module appel d'offre vers le design shadcn

yahya.elmokhtari a demandé de fusionner VSN-2848 vers develop

Architecture & Navigation

  • Module dashboard/appel-offre aligné sur le design system unifié (purple gradient + neo-shadow)
  • Routes inchangées : liste-appel-offre, historiques, recherche-avancee, documents
  • Fiche détail (tender-details) et workspace de rédaction de réponse (tender-application) repensés

Module Features

  • Liste des appels d'offre migrée vers le pattern shadcn unifié (TableHeadCustom + grid rows + scroll sync)
  • Table historique des consultations migrée vers le même pattern
  • Recherche avancée : hero violet, filtres iconifiés, Popover multi-select pour Type d'avis
  • Espace documents : hero adaptatif (root vs dossier), toolbar shadcn, empty states contextuels
  • Cartes dossier et fichier deux-zones (hero violet + bande blanche), pills colorées par type (PDF/DOCX/XLSX/IMG)

Components Architecture

  • liste-appel-offre/view/tender-details.tsx : hero gradient, cards à bandeau violet (bg-[hsl(var(--p-200))]), padding interne harmonisé
  • tender-history/view/* : table shadcn + Select inline pour le statut, chips de type marché ring-bordered
  • advanced-search/view/* : table shadcn + sections de filtres iconifiées
  • staff/document/documents/components/{folder-card,document-card}.tsx : refonte cartes
  • tender/application-for-tender/tender-application.tsx : empty states et tokens couleur projet
  • tender/tender-docs-editor/* : header gradient + éditeur flat

Key Features

  • Hero gradient cohérent : linear-gradient(135deg, hsl(var(--primary)) → hsl(var(--p-500)) → hsl(var(--p-600)))
  • Hover 3D sur les cartes (hover:-translate-y-0.5 hover:shadow-[var(--neo-shadow-md)])
  • Empty states adaptatifs (filtre actif / dossier vide / racine vide)
  • Tooltip Radix sur le bouton "Résumer avec IA" quand désactivé (label constant)
  • Animations de collapse propres avec overflow: hidden (plus de fuite de contenu)
  • Fix UX : champ Ancienneté de la fiche véhicule aligné sur le rendu read-only standard

Technical Implementation

  • shadcn/ui + Tailwind + CSS variables (--primary, --p-100..600, --neo-shadow-*)
  • Lucide React pour toutes les icônes (suppression FontAwesome / MUI icons sur les nouveaux composants)
  • framer-motion pour les transitions hero / collapse
  • Pattern grid unifié : buildGridTemplate(COLUMN_MIN_WIDTHS) + useSyncedHorizontalScroll
  • shrink-0 sur hero + toolbar pour éviter le clipping dans les conteneurs flex à hauteur fixe

Closes VSN-2848

Rapports de requête de fusion