Mobile·7 min de lecture·1,325 mots

Inventaire composants mobile

Component Inventory — Mobile

239 fichiers .tsx dans mobile-staging/components/. Organisés par domaine.

Vue d'ensemble

mobile-staging/components/
├── ui/                          # Building blocks réutilisables (18 fichiers)
├── navigation/                  # AnimatedTabBar + StickySearchBar + SearchOverlay
├── home/                        # Accueil : SectionHeader, banners
├── boutique/                    # BoutiqueCard
├── produit/                     # Cards + galerie + sélecteur variantes + CTAs + ContactVendeur
├── vitrine/                     # Header vitrine + CanauxRow
├── activite/                    # Row compactes (commandes, RDV, accès)
├── compte/                      # Profil + MaVitrineButton
├── panier/                      # PanierRepasFlottant (restau)
├── search/                      # SearchOverlay + ResultRow
├── stories/                     # Bandeau + viewer + composer
├── chat/                        # MessageBubble + QuickReplies + ChatComposer
├── restaurant/                  # CarteMenu + PlatCard + OptionsModal + SuiviCommandeRepas
├── reviews/                     # ReviewCard + RatingStars
├── notif/                       # InboxBadge + NotifList
├── feedback/                    # Toasts + snackbars
├── acces/                       # AccesRequis + DemandeAccesBanner
├── onboarding/                  # OnboardingWizard + SetupChecklist
└── vitrine-pro/                 # **Espace gérant** (60+ fichiers, sous-dossiers par feature)

Building blocks components/ui/ (18)

ComposantUsage
Badge.tsxPastilles compteurs / statuts
Button.tsxBouton principal/secondaire/danger
FilterChip.tsxPill [Icon · Label · Badge?] — 2 sizes (sm 36px / md 44px), 2 variants (filter / cta brandColor). DEC-137
FilterSheet.tsxBottom-sheet Modal slide-up + sections pliables LayoutAnimation + sticky CTA. DEC-138
CategorieTile.tsxTile catégorie (Accueil)
CategoriesChips.tsxChips catégories sticky-ready avec accent themeCouleur
EmptyState.tsxIcône 48px light + titre + texte + CTA optionnel
LoadingSkeleton.tsxSkeleton placeholder
OfflineBanner.tsxBanner offline NetInfo
RatingStars.tsxÉtoiles avis
SafeImage.tsxexpo-image wrapper avec fallback + blurRadius pour photos masquées
SearchInput.tsxInput recherche (loupe + X clear)
SectionHeader.tsxTitre + "Voir tout"
SuivreButton.tsxBouton follow/unfollow (vitrines/produits/clients)
TopBar.tsxTopBar utilitaire écrans détail
VideoPlayer.tsx + VideoUploader.tsxLecture + upload vidéos prestations
WizardSteps.tsxDots + barre + label "Étape N/total" (DEC-168)

Navigation components/navigation/

  • AnimatedTabBar.tsx — tabbar 5 onglets client (animations Reanimated)
  • StickySearchBar.tsx — TopBar absolute glass (DEC-153)
  • SearchOverlay.tsx — overlay résultats au-dessus du contenu

Produit components/produit/

ComposantUsage
ProduitCard.tsxCard grille catalogue — masque prix/photo si configAcces le requiert (DEC-213, BUG-131)
ProduitGalerie.tsxGalerie horizontale fiche détail avec zoom + blurRadius 25 si masquée (BUG-132)
VarianteSelector.tsxSélecteur axes (Taille/Couleur...) — grouped par axe (DEC-159)
CTAsDynamiques.tsxBoutons CTA selon canaux tenant configurés (priorité Paiement > Panier > Messaging > Devis)
ContactVendeur.tsxChips canaux brand-color (WhatsApp/Snap/Insta/Telegram/Email/Phone) via FilterChip variant cta
WhatsAppCTA.tsxDeep link wa.me/<num>?text=...
ProduitGalerieModal.tsxZoom plein écran
PrestationCard.tsxCard prestation (5 cas affichage prix DEC-175)

Vitrine components/vitrine/

  • VitrineHeader.tsx — Header vitrine (logo + bannière + CanauxRow + badges)
  • CanauxRow.tsx — Scrollview horizontale boutons icon+label canaux

Activité components/activite/

  • CommandeRowCompact.tsx — Photo + tenant + produit + statut coloré + date + total
  • RdvRowCompact.tsx — Avec bouton Annuler (Alert confirm) + Calendrier (iCal)
  • DemandeAccesRowCompact.tsx

Restaurant components/restaurant/

  • CarteMenu.tsx — Sections + plats avec chips modes en haut
  • PlatCard.tsx — Card plat avec bouton + ajout panier
  • OptionsModal.tsx — Modal options obligatoires/facultatives
  • SuiviCommandeRepas.tsx — Stepper 4 ou 5 étapes (LIVRAISON)
  • PanierRepasFlottant.tsx (sous panier/) — Flottant conditionnel sur panierSlug

Stories components/stories/

  • StoryBandeau.tsx — Carousel horizontal Avatar+ring (client)
  • StoryViewer.tsx — Plein écran auto-advance + barres de progression
  • StoryComposer.tsx — Composer gérant (caption + média picker)

Espace gérant components/vitrine-pro/ (60+ fichiers)

components/vitrine-pro/
├── GerantLayout.tsx          # Animated.View overlay (zIndex 200) + header + slot
├── GerantTabBar.tsx          # TabBar custom dynamique selon modulesActifs + badges
├── GerantLoginForm.tsx
├── GerantPlaceholder.tsx
├── GerantReglages.tsx        # 4 tabs WP-232 (Vitrine / Contact / Accès / Avancé)
├── BoutiqueActivite.tsx      # Pivot sous-tabs Commandes/RDV (DEC-200)
├── BoutiqueCatalogue.tsx     # Pivot sous-tabs Produits/Services (DEC-179)
├── BoutiqueClientes.tsx
├── BoutiqueMessagesContent.tsx
├── BoutiqueServices.tsx
├── StatutBadge.tsx           # Badge coloré par enum statut (avec icônes Phosphor depuis WP-X)
├── StatutSheet.tsx           # Bottom sheet transitions valides

├── acces/                    # DemandesAccesList + AccesRow approve-refuse
├── arrivages/                # Modal arrivage + composer
├── builder/                  # WebView builder embed
├── carte/                    # CRUD carte restau (sections + PlatFormModal)
├── catalogue/                # ProduitFormModal + VariantesSheet + ModeleSheet + ProduitRow
├── categories/               # CategorieRow + Modal create/edit
├── clientes/                 # InviterClienteForm + ClienteRow
├── cuisine/                  # CuisineKanban (3 colonnes scrollables) + CommandeRepasCard
├── dashboard/                # KpiCard + Sparkline + TopProduits + Alerts (DEC-188/189/190)
├── dashboard-v2/             # Evolution dashboard (V2)
├── disponibilites/           # CreneauSheet + IndispoSheet + SectionList LUN-DIM
├── evenements/               # CRUD événements
├── inbox/                    # Inbox SLA gérant (5 sprints correctifs)
├── medias/                   # Médiathèque (upload + albums)
├── modeles/                  # ModeleSheet wizard 3 étapes
├── parametres/               # Sections Réglages (LogoUploader, BanniereSection, BoutiqueSection,
│                             #  CategoriesWariSection, ChartGraphiqueSection, CanauxSection,
│                             #  SiteWebSection, SynchronisationSection, BoutiqueAccesModal,
│                             #  AccesVisibiliteSection, PaiementSection, RestaurantConfigSection,
│                             #  VisibiliteSection, CompteSection)
├── prestations/              # PrestationFormModal + PrestationRow + DureeSheet + RangePrixSheet
├── produits/                 # ProduitRow + ProduitFormModal
└── ... (catalogue-pricing, snap-bulk, story, tables, tags)

Patterns notables

  • Bottom sheet clavier-safe : DEC-170/174 — keyboardShouldPersistTaps="handled", pas de KeyboardAvoidingView sur position absolute, padding dynamique 2 variantes (Modal vs GerantLayout).
  • Save sticky en bas : Réglages = 1 bouton CTA global (bundlé PATCH parametres + diff dirty). Sections self-contained ont leurs propres saves internes (CanauxSection, PaiementSection, RestaurantConfigSection, SynchronisationSection).
  • Forms : pattern PrestationFormModal / ProduitFormModal — bottom sheet plein écran avec sections empilées (photos + nom + prix + variantes + catégories + tags + description + disponibilité).
  • Wizard : <WizardSteps /> pour multi-step (VariantesSheet 2 étapes, ModeleSheet 3 étapes).
  • Kanban Cuisine : 3 colonnes horizontales scrollables (RECUE / EN_PREPARATION / PRETE), drag-or-tap pour transition.

Hooks (mobile-staging/hooks/ — ~60)

Pattern : 1 fichier par domaine. Tous basés sur React Query.

HookDomaine
useAuthsendMagicLink, verifyMagicToken, logout
useNotificationsregister push token + tap handler
useCartPanier produits Zustand-bridge
useCheckoutusePaiementVitrine + useCreerCommande
useBoutiquesLIST vitrines + DETAIL
useProduitsuseCatalogueInfini + useProduit
usePrestationsLIST prestations
usePrestationDetailDETAIL + modeContact aware
useVitrineHooks gérant (dashboard, commandes, catalogue, mutations)
useRdvRéservations gérant (transition + push)
useReservationsCôté client
useDisponibilitesCréneaux dispo public
useCreneaux + useIndisponibilitesGérant CRUD
useConfigReservationPer-prestation
useRestaurant17 hooks restau (config, sections, plats, tables, commandes polling 30s, transitions, table info, suivi)
useAccesDemandes accès SUR_DEMANDE (mes-demandes + demander + annuler)
useCanauxVitrineCRUD TenantCanal + sync TenantCanal[]→Tenant.whatsapp
usePaiementConfigConfigPaiementGerant
useIcalSynciCal token gérant + génération
useStoriesFeedBandeau stories client
useVitrineStoriesComposer gérant
useStoryDuJourStory matin 7h push
useExplorerFeedExplorer 3 tabs
useHomeData / useHomeV15/api/mobile/home
useActiviteMes commandes en cours + nouveautés + favoris
useFavorisFavoris store sync
useInvitationAcceptation magic link invitation
useMessagerie + useRealtimeChat + useQuickRepliesChat
useReviewsAvis
useTags + useArrivagesGerant + useEvenements + useMediatheque + useClienteDetail + useClientsAgreges + useCategoriesAdmin + useCategoriesVitrines + useModelesAdmin + useTablesStatsCRUD divers gérant
useTheme + useReduceMotion + useNetworkStatus + useOfflineSync + useScrollTabBar + useGlobalTickUtilitaires
useOnboardingGerant + useSetupScore + useRushHour + useChatFunnel + useSnapBulk + useSnapToList + usePanierAssistant + useInboxActions + useNotifs + useResetPassword + useParrainage + useGeolocation + useHeatmapClients + useCataloguePricing + useBuilder + useCompte + useLogoutFeatures avancées (sagas refonte gérant A-E + V1.5 + V2)

Stores Zustand (mobile-staging/store/ — 16)

Voir architecture-mobile.md section "State management".