diff --git a/.cursorrules b/.cursorrules new file mode 100644 index 000000000..bea5c20ef --- /dev/null +++ b/.cursorrules @@ -0,0 +1,31 @@ +# Règles de Développement UI - Projet SaaS + +## 1. Standards Tailwind & Layout + +- **Interdiction formelle** d'utiliser des valeurs arbitraires (ex: `w-[300px]`) pour les espacements, tailles ou marges. +- Utilise exclusivement l'échelle de spacing native de Tailwind ou les **Layout Primitives** définies dans `apps/web/src/index.css` : + - `max-w-layout-content` (1600px) + - `min-h-layout-main` (calc(100vh - 4rem)) + - `min-h-layout-page` (600px) + - `min-h-layout-page-sm` (400px) + - `min-h-layout-story` (192px, pour les stories) + +## 2. Cycle de Vie des Composants (Storybook-First) + +- Toute modification d'UI doit d'abord être validée dans sa **Story**. +- Chaque composant "Feature" doit obligatoirement posséder les états suivants dans sa Story : + - `Loading` (utilisant des Skeletons) + - `Error` (état de repli) + - `Empty` (si liste ou data) +- Référence toujours le `docs/STORYBOOK_CONTRACT.md` avant de créer une story. +- N'importer jamais les providers applicatifs dans les stories ; utiliser le décorateur global (StorybookDecorator). + +## 3. Modularité & IA-Friendliness + +- Si un composant dépasse **300 lignes**, il DOIT être découpé en sous-composants atomiques. +- Les composants doivent être "purs" : la logique de fetch doit être mockée via MSW dans `apps/web/src/mocks/handlers.ts`. +- Lors de l'ajout d'une nouvelle fonctionnalité qui appelle l'API, ajouter le handler correspondant dans `handlers.ts` sans qu'on te le demande. + +## 4. Audit & Qualité + +- Avant de finaliser une tâche, lance `npm run test:storybook` (depuis `apps/web`) après build + serve sur 6007 pour garantir 0 erreur réseau/console.