veza/.cursorrules
senke ccf98983fe
Some checks failed
Backend API CI / test-unit (push) Failing after 0s
Backend API CI / test-integration (push) Failing after 0s
Frontend CI / test (push) Failing after 0s
Storybook Audit / Build & audit Storybook (push) Failing after 0s
chore(v0.103): finalize release — CHANGELOG, FEATURE_STATUS, .cursorrules scope
2026-02-20 15:14:25 +01:00

46 lines
3 KiB
Text
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Règles de Développement UI - Projet SaaS
## 0. Scope v0.103 (priorité absolue)
- **Référence** : `docs/V0_103_RELEASE_SCOPE.md` et `docs/SCOPE_CONTROL.md`
- Avant toute modification : vérifier si le changement est **dans le scope v0.103**
- **Autorisé v0.103** : lots AF (Auth avancée, Profils, Player avancé, Queue avancée, Métadonnées, Seller dashboard)
- **Interdit** : nouvelles routes/pages hors scope, nouvelles dépendances (sauf correctif sécurité)
- En cas de doute : ne pas ajouter. Créer une issue pour une version ultérieure.
## 1. Standards Tailwind & Layout
- **Interdiction formelle** d'utiliser des valeurs arbitraires (ex: `w-[300px]`, `gap-[7px]`, `rounded-[12px]`, `shadow-[...]`) pour les espacements, tailles, rayons ou ombres sans justification (voir exceptions dans `apps/web/docs/DESIGN_TOKENS.md`).
- 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)
- Référence unique : **DESIGN_TOKENS.md** et **APP_SHELL.md** dans `apps/web/docs/` pour layout, espacements, ombres, typo, transitions.
## 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.
## 5. Tests visuels et valeurs arbitraires
- **Commandes visuelles** (depuis `apps/web`) : `npm run visual:capture` (capture écrans → `visual-tests/current/`), `npm run visual:compare` (diff vs baselines), `npm run visual:update` (mise à jour des baselines). Procédure détaillée dans `apps/web/visual-tests/README.md`.
- **Rapport des valeurs arbitraires** : `node scripts/report-arbitrary-values.mjs` (optionnel `--json` ou `--dir src/features`) pour lister les patterns à migrer ; pas de remplacement automatique sans revue.
- **Nouvelle page full layout** : suivre `apps/web/docs/FULL_LAYOUT_PAGE.md` (route, story, MSW, viewport).