# Frontend — Regles Nuxt 4 / Vue 3 / @malio/layer-ui ## Base - TypeScript strict - 4 espaces d'indentation - Commentaires (JSDoc, inline, bloc) **en francais** ; code (variables, types) en anglais - Chaque module front = un layer Nuxt auto-detecte (`frontend/modules/*/nuxt.config.ts` minimal) ## Appels API - Toujours `useApi()` — jamais `$fetch`, `ofetch`, `axios` en direct - `useApi()` gere : cookies JWT, erreurs, toasts i18n, parsing Hydra ## Stores (Pinia) - `useAuthStore` pour l'authentification - `useUiStore` pour l'etat UI global (sidebar, modales, etc.) - Composables avec state singleton (refs module-level) : exposer une fonction `reset*()` et la rappeler au logout (ex: `useSidebar().resetSidebar()`) ## Middlewares globaux - `auth.global.ts` protege les routes + charge la sidebar apres login - `modules.global.ts` redirige si la route demandee est dans `disabledRoutes` ## i18n et sidebar - Labels de sidebar = cles i18n `sidebar..*`, jamais du texte brut - Le layout `default.vue` applique `t()` sur les labels retournes par `/api/sidebar` - Traductions dans `frontend/i18n/locales/` ## Composants formulaires — @malio/layer-ui obligatoire Tout champ de formulaire / filtre doit utiliser les composants `Malio*` plutot que `` / `