section: Feature User — Pages | prio: P1 | est: 6h | deps: FE-U-01
Pourquoi
Ces pages complètent lexpérience utilisateur. AccountSettings inclut la gestion des sessions actives et la suppression de compte avec vérifications multi-steps.
Acceptance Criteria
- ContactListPage : onglets Tous/En attente (badge count)/Acceptés/Bloqués, infinite scroll, search parmi contacts acceptés, card avec avatar+username+alias+badge "Admin compteur", actions contextuelles selon statut, SocialGate si !isSocialReady (banner doux), empty states, modal "Ajouter contact" par username
- PublicProfilePage route
/u/:username : avatar + display_name + @username + bio + badges rôles publics (SELLER/SERVICE_PROVIDER uniquement) + membre depuis (année) + bouton "Ajouter en contact" (SocialGate), si propre profil → "Modifier mon profil", SEO Open Graph meta tags
- NotificationPreferencesPage : IN_APP toggle désactivé + tooltip, EMAIL toggle (grayed si pas email + message), SMS toggle + warning coût, WhatsApp badge "Bientôt", fréquences par type (alertes critiques readonly), langue + timezone searchable, auto-save debounce 800ms
- AccountSettingsPage : section sécurité (changement MDP délègue AUTH, lier/délier Google), sessions actives liste (device/IP/date/bouton révoquer), activité récente (5 derniers événements), danger zone (suppression multi-step : vérification prérequis → mot de passe → checkbox → confirmation)
- Toutes les pages : responsive mobile-first, dark mode (CSS vars Quantify brand)
Fichiers
src/features/user/ui/
├── ContactListPage.tsx + ContactCard.tsx + AddContactModal.tsx
├── PublicProfilePage.tsx
├── NotificationPreferencesPage.tsx
└── AccountSettingsPage.tsx + ActiveSessionsList.tsx + DeleteAccountDialog.tsx
Scale
Infinite scroll contacts = chargement progressif. PublicProfile cache 5min = supporte la charge marketplace.
section: Feature User — Pages | prio: P1 | est: 6h | deps: FE-U-01
Pourquoi
Ces pages complètent lexpérience utilisateur. AccountSettings inclut la gestion des sessions actives et la suppression de compte avec vérifications multi-steps.
Acceptance Criteria
/u/:username: avatar + display_name + @username + bio + badges rôles publics (SELLER/SERVICE_PROVIDER uniquement) + membre depuis (année) + bouton "Ajouter en contact" (SocialGate), si propre profil → "Modifier mon profil", SEO Open Graph meta tagsFichiers
Scale
Infinite scroll contacts = chargement progressif. PublicProfile cache 5min = supporte la charge marketplace.