- libelles de toast generiques passes en i18n (errors.title/generic/unknown,
success.title) dans useFormErrors, useApi et useCategoryForm
- nouveau composable useClientFormErrors : factorise l'etat d'erreurs
(3 useFormErrors scalaires + 3 tableaux par ligne + mapRowError) partage
entre clients/new.vue et [id]/edit.vue
- mapRowError retourne un booleen et ne toaste plus : chaque page garde son
fallback (toast generique en creation, showError en edition)
- bloc adresse : pays, code postal, ville, adresse passes en required
- comptabilite : siren, n° compte, mode TVA, n° TVA, delai et type de
reglement passes en required (banque deja required si virement, RIB si LCR)
- bump @malio/layer-ui ^1.7.3 -> ^1.7.4
- required sur les champs obligatoires (categories, distributeur/courtier,
banque si virement, RIB si LCR) desormais supportes par les Malio*
- consultation/edition : champs passes en readonly (au lieu de disabled)
pour les etats sans droit de modification / lecture seule
- MalioTabList : carrousel (max 5 onglets visibles, max-width 1100px) en
consultation et edition
- composable useFormErrors + util mapViolationsToRecord (shared)
- formulaire Client (new + edit) : erreurs inline par champ (scalaires)
et par ligne pour les collections (contacts / adresses / RIB)
- blocs ClientContactBlock / ClientAddressBlock : prop errors
- migration de useCategoryForm sur useFormErrors
- convention documentee dans .claude/rules/frontend.md