diff --git a/.playground/pages/composant/divers/disabled.vue b/.playground/pages/composant/divers/disabled.vue
new file mode 100644
index 0000000..47c2896
--- /dev/null
+++ b/.playground/pages/composant/divers/disabled.vue
@@ -0,0 +1,294 @@
+
+
+
Champs désactivés (disabled)
+
+ Tous les champs de formulaire dans leur état disabled, vides puis remplis.
+ Règles : texte + label grisés, cursor-not-allowed, et aucune affordance
+ interactive (pas de bouton « + », pas de croix « x », pas de chevron, pas d'œil ;
+ tags et valeurs grisés).
+
+
+
+
+
MalioInputText
+
+
+
+
+
+
+
+
MalioInputEmail (addable → pas de « + »)
+
+
+
+
+
+
+
+
MalioInputPhone (addable → pas de « + »)
+
+
+
+
+
+
+
+
MalioInputPassword (pas d'œil)
+
+
+
+
+
+
+
+
MalioInputAmount
+
+
+
+
+
+
+
+
MalioInputNumber
+
+
+
+
+
+
+
+
MalioInputTextArea
+
+
+
+
+
+
+
+
MalioInputUpload (pas de croix)
+
+
+
+
+
+
+
+
MalioInputAutocomplete (pas de chevron)
+
+
+
+
+
+
+
+
MalioSelect (pas de chevron)
+
+
+
+
+
+
+
+
MalioSelectCheckbox — version tags (grisés)
+
+
+
+
+
+
+
+
MalioDate (pas de croix)
+
+
+
+
+
+
+
+
MalioDateTime
+
+
+
+
+
+
+
+
MalioDateRange
+
+
+
+
+
+
+
+
MalioDateWeek
+
+
+
+
+
+
+
+
MalioTimePicker (pas de croix)
+
+
+
+
+
+
+
+
+
+
diff --git a/.playground/playground.nav.ts b/.playground/playground.nav.ts
index c10706f..8d8d165 100644
--- a/.playground/playground.nav.ts
+++ b/.playground/playground.nav.ts
@@ -70,6 +70,7 @@ export const navSections: SidebarSection[] = [
icon: 'mdi:dots-horizontal',
items: [
{label: 'Champs readonly', to: '/composant/divers/readonly'},
+ {label: 'Champs disabled', to: '/composant/divers/disabled'},
{label: 'Heure', to: '/composant/time/time'},
{label: 'Sélecteur de site', to: '/composant/site/siteSelector'},
{label: 'Formulaire client', to: '/composant/form/client'},
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 6271e43..5fa6dc2 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -58,6 +58,7 @@ Liste des évolutions de la librairie Malio layer UI
* [#MUI-45] MalioDate : prop `markedDates` (`Record<"YYYY-MM-DD", 'success' | 'danger'>`) appliquant un fond tokenisé par jour dans la grille (générique, fourni par le consommateur ; précédence sélection/`today` > variante marquée > défaut) + event `month-change` (`{ month: 0-11, year }`) émis à l'ouverture du popover et à chaque navigation de mois. Sert l'écran *Heures* de SIRH (jours validés en vert, chargement du mois visible à la volée).
### Changed
+* Cohérence du mode **`disabled`** sur toute la famille formulaire (calqué sur InputText : texte + label grisés, `cursor-not-allowed`, aucune affordance interactive). Concrètement, quand `disabled` : le **bouton « + »** d'ajout disparaît (InputPhone, InputEmail), l'**œil** de révélation disparaît (InputPassword), le **chevron** disparaît (Select, SelectCheckbox, InputAutocomplete), la **croix d'effacement** reste masquée (date, upload, time), le **label** passe en `text-m-muted` (Select, SelectCheckbox, famille Date via CalendarField, TimePicker), et les **tags** du SelectCheckbox + la valeur du Select passent en gris. (InputText, InputAmount, InputNumber, InputTextArea, InputRichText, Checkbox, RadioButton, InputUpload étaient déjà conformes.)
* TabList : le nombre d'onglets visibles en mode fenêtré s'**adapte automatiquement à la largeur réelle** (mesure via `ResizeObserver` + ligne de mesure cachée), au lieu d'un `maxVisibleTabs` fixe qui pouvait faire déborder les onglets sur les chevrons. Les chevrons restent fixés aux bords et le nombre affiché est choisi pour que les onglets tiennent (pas de chevauchement ni de rognage). `maxVisibleTabs` devient un **plafond optionnel**. Calcul isolé dans une fonction pure testable (`tabFit.ts`, basée sur les largeurs réelles des onglets). Sans layout (SSR), repli sur le plafond / tous les onglets. **Breaking** : la prop `maxWidth` est supprimée (la barre utilise désormais toute la largeur disponible au lieu d'être plafonnée à 1100px).
* TabList : au **survol** d'un onglet inactif, on applique désormais le même style que l'onglet actif — texte `m-primary` plein + barre soulignée `m-primary` (`hover:after:*`) — au lieu du discret `text-m-primary/70`, pour bien marquer la cible.
* Sidebar : états visuels des liens de navigation — **survol** : highlight pleine largeur entièrement porté par le `
` (fond `m-primary` à 10 % + texte `m-primary` + semi-bold, `hover:bg-m-primary/10 hover:text-m-primary hover:font-semibold`, espacement `pt-1 pb-1`). La couleur de base (`text-black`) est aussi sur le `