27ea881738
Extrait la logique fetch/CRUD inline de la page categories (ERP-49) vers deux composables dedies, conformement au pattern Starseed : - useCategoriesAdmin : singleton state (categories + types + loading + error). Pre-chargement des types au mount de la page (au lieu du fetch par ouverture du drawer). Reset au logout via onAuthSessionCleared + appel explicite dans logout.vue. - useCategoryForm : state local par form (pas singleton). Valide cote client en miroir des RG back (RG-1.02 / RG-1.04 / RG-1.05), mappe les erreurs 409 (doublon RG-1.07) et 422 (violations API Platform) sur les bons champs. submitCreate / submitUpdate / submitDelete renvoient la ressource ou null pour decoupler la decision de fermeture du drawer. La page et le drawer deviennent purement presentationnels. Aucune regression UX : meme validations, memes toasts, meme pattern view -> edit du drawer (via isDirty expose par useCategoryForm).