Stratégie des composants
Nous distinguons les primitives UI et les composants métier.
1. Système UI (components/ui)
Nous utilisons ShadCN UI. Ce sont des composants « muets » sans logique métier.
- Boutons, champs, dialogues, cartes.
- Ne pas modifier ces fichiers sauf pour changer le design system global.
2. Composants métier (components/dashboard, components/auth, features/*/components)
Ils contiennent la logique métier. Les composants spécifiques à un domaine sont dans features/<domain>/components/.
features/cameras/components/camera-card.tsx(CameraCard) : Affiche un flux caméra et son statut.features/cameras/components/camera-alerts-panel.tsx,camera-events-timeline.tsx: Historique des alertes et timelines d'événements.features/cameras/components/camera-form.tsx: Formulaire création/édition caméra (souvent dans un modal).
Composants serveur vs client
- Composants serveur (par défaut) : Pour la récupération de données.
app/**/page.tsx,layout.tsx.- Accès DB direct ou appels API sécurisés.
- Composants client : Pour l'interaction.
- Formulaires et modaux (ex. camera-form, filter-dialog) qui utilisent
useState. - Graphiques et vues temps réel (ex.
TrendLineChart,RealTimeMetrics) qui utilisentuseEffect.
- Formulaires et modaux (ex. camera-form, filter-dialog) qui utilisent