-
Playground composants
+
+ Playground composants
+
Selectionne un composant dans la liste pour afficher sa page de demo.
@@ -45,6 +48,8 @@
diff --git a/app/story/inputText.story.vue b/app/story/inputText.story.vue
index b79b23f..e6db366 100644
--- a/app/story/inputText.story.vue
+++ b/app/story/inputText.story.vue
@@ -1,56 +1,200 @@
-
+
-# Input Text
+# MalioInputText
-## Liste des props
+Composant input texte avec masque optionnel (maska), label flottant,
+états visuels (erreur / succès) et icône configurable.
-Le composant Input Text permet de saisir du texte. Il peut afficher des messages d'erreur, de succès ou d'information.
-On peut lui passer plusieurs props pour personnaliser son comportement et son apparence.
- - id: Identifiant HTML du champ. Si non fourni, un id est généré automatiquement.
- - label: Texte du label affiché au-dessus du champ (floating label).
- - name: Attribut name de l’input.
- - autocomplete: Attribut autocomplete de l’input.
- - modelValue: Valeur du champ (utilisée avec v-model) ou si valeur brut mettre des " ".
- - minWidth: Classe utilitaire pour la largeur minimale du conteneur. Classe Tailwind de largeur (ex: w-64, w-full).
- - maxWidth: Classe utilitaire pour la largeur maximale du conteneur. Classe Tailwind de largeur maximale.
- - textInput: Classe(s) de style du texte de l’input. Classe(s) Tailwind de couleur ou de typographie (ex : text-gray-700, text-sm).
- - textLabel: Classe(s) de style du texte du label. Classe(s) Tailwind de couleur ou de typographie (ex : text-gray-700, text-sm).
- - required: Rend le champ obligatoire (required).
- - maxLength: Nombre de caractère maximal autorisé.
- - minLength: Nombre de caractère minimal autorisé.
- - disabled: Désactive le champ et applique le style désactivé.
- - readonly: Met le champ en lecture seule.
- - hint: Message informatif affiché sous le champ.
- - error: Message d’erreur affiché sous le champ. Active le style erreur.
- - success: Message de succès affiché sous le champ. Active le style succès.
- - iconName: Nom de l’icône affichée à droite dans le champ.
- - rounded: Classe utilitaire pour le rayon des coins ( rounded- ).
- - iconSize: Taille de l’icône. (ex : 24, 26, 85 ,99, ... ).
- - iconColor: Classe(s) personnalisée(s) de couleur pour l’icône ( text- ).
- - mask: Masque de saisie pour formater la valeur :
- - \# : chiffre
- - A : lettre majuscule
- - a : lettre minuscule
- - \* : chiffre ou lettre
+------------------------------------------------------------------------
-Événement émis :
+## Props détaillées
-- update:modelValue: Émis à chaque saisie pour mettre à jour v-model.
+### id
-Règles d’affichage des messages :
+- Type: string
+- Description: Identifiant HTML de l’input.
+- Comportement: Si non fourni, un id unique est généré
+automatiquement.
-Priorité d’affichage :
- 1) error
- 2) success
- 3) hint
+### label
+- Type: string
+- Description: Texte affiché comme label flottant.
+- Comportement: Si absent, aucun label n’est rendu.
+
+### name
+
+- Type: string
+- Description: Attribut name de l’input (utile pour les formulaires).
+
+### autocomplete
+
+- Type: string
+- Description: Active ou configure l’autocomplétion navigateur.
+- Défaut: vide
+
+### modelValue
+
+- Type: string | null | undefined
+- Description: Valeur contrôlée du composant.
+- Comportement:
+- Si défini → composant contrôlé (v-model).
+- Sinon → gestion interne de l’état.
+
+### mask
+
+- Type: string | undefined
+- Description: Masque appliqué via la directive maska.
+- Comportement: Formate la saisie selon les tokens définis.
+
+------------------------------------------------------------------------
+
+## Apparence & Style
+
+### textInput
+
+- Type: string
+- Description: Classes CSS appliquées à l’input (taille de texte,
+etc.).
+
+### textLabel
+
+- Type: string
+- Description: Classes CSS appliquées au label.
+
+### rounded
+
+- Type: string
+- Description: Classe Tailwind pour le border-radius.
+- Défaut: rounded-md
+
+### minWidth / maxWidth
+
+- Type: string
+- Description: Classes utilitaires Tailwind pour contraindre la
+largeur.
+
+------------------------------------------------------------------------
+
+## Validation & Contraintes
+
+### required
+
+- Type: boolean
+- Description: Ajoute l’attribut HTML required.
+
+### maxLength
+
+- Type: number | string
+- Description: Longueur maximale autorisée.
+
+### minLength
+
+- Type: number | string
+- Description: Longueur minimale autorisée.
+
+### disabled
+
+- Type: boolean
+- Description: Désactive complètement le champ.
+
+### readonly
+
+- Type: boolean
+- Description: Rend le champ non modifiable mais focusable.
+
+------------------------------------------------------------------------
+
+## États & Messages
+
+### hint
+
+- Type: string
+- Description: Message d’aide affiché sous le champ.
+
+### error
+
+- Type: string
+- Description: Message d’erreur.
+- Effet:
+- Active l’état visuel erreur.
+- aria-invalid=true
+- Prioritaire sur success et hint.
+
+### success
+
+- Type: string
+- Description: Message de succès.
+- Effet:
+- Actif uniquement si error est absent.
+
+------------------------------------------------------------------------
+
+## Icône
+
+### iconName
+
+- Type: string
+- Description: Nom de l’icône (ex: mdi:magnify).
+
+### iconSize
+
+- Type: string | number
+- Description: Taille de l’icône.
+
+### iconColor
+
+- Type: string
+- Description: Couleur de l’icône.
+
+------------------------------------------------------------------------
+
+## Comportement de validation
+
+- Aucune validation interne.
+- Les états sont pilotés uniquement par les props.
+
+## Priorité visuelle
+
+1. error
+2. success
+3. neutre
+
+------------------------------------------------------------------------
+
+## Tokens de masque
+
+- \# : chiffre
+- A : lettre majuscule
+- a : lettre minuscule
+- \* : chiffre ou lettre
+
+------------------------------------------------------------------------
+
+## Accessibilité
+
+- aria-invalid est activé si error existe.
+- aria-describedby référence dynamiquement le message affiché.
+- Fonctionne avec ou sans v-model.
+
+------------------------------------------------------------------------
+
+## Events
+
+### update:modelValue
+
+- Émis à chaque modification de l’input.
+- Permet l’utilisation avec v-model.
+
diff --git a/app/story/inputTextArea.story.vue b/app/story/inputTextArea.story.vue
new file mode 100644
index 0000000..ef903ed
--- /dev/null
+++ b/app/story/inputTextArea.story.vue
@@ -0,0 +1,192 @@
+
+
+
+
+
+
+
+# MalioInputTextArea
+
+Composant textarea avec label flottant, états visuels (erreur / succès),
+gestion du redimensionnement et compteur optionnel.
+
+------------------------------------------------------------------------
+
+## Props détaillées
+
+### id
+
+- Type: string
+- Description: Identifiant HTML du textarea.
+- Comportement: Si non fourni, un id unique est généré
+automatiquement.
+
+### label
+
+- Type: string
+- Description: Texte affiché comme label flottant.
+- Comportement: Si absent, aucun label n’est rendu.
+
+### name
+
+- Type: string
+- Description: Attribut name du textarea (utile pour les formulaires).
+
+### autocomplete
+
+- Type: string
+- Description: Active ou configure l’autocomplétion navigateur.
+
+### modelValue
+
+- Type: string | null | undefined
+- Description: Valeur contrôlée du composant.
+- Comportement:
+- Si défini → composant contrôlé (v-model).
+- Sinon → gestion interne de l’état.
+
+------------------------------------------------------------------------
+
+## Apparence & Style
+
+### textInput
+
+- Type: string
+- Description: Classes CSS appliquées au textarea (taille de texte,
+etc.).
+- Défaut: text-lg
+
+### textLabel
+
+- Type: string
+- Description: Classes CSS appliquées au label.
+- Défaut: text-sm
+
+### rounded
+
+- Type: string
+- Description: Classe Tailwind pour le border-radius.
+- Défaut: rounded-md
+
+------------------------------------------------------------------------
+
+## Dimensions
+
+### size
+
+- Type: number | string
+- Description: Nombre de lignes initiales (rows).
+- Défaut: 2
+
+### minResizeWidth / maxResizeWidth
+
+- Type: number | string
+- Description: Largeur minimale / maximale autorisée lors du
+redimensionnement.
+
+### minResizeHeight / maxResizeHeight
+
+- Type: number | string
+- Description: Hauteur minimale / maximale autorisée lors du
+redimensionnement.
+
+### resize
+- Type: 'none' | 'both' | 'horizontal' | 'vertical'
+- Description: Définit le comportement de redimensionnement CSS.
+- Défaut: both
+
+------------------------------------------------------------------------
+
+## Validation & États
+
+### required
+
+- Type: boolean
+- Description: Ajoute l’attribut HTML required.
+
+### maxLength
+
+- Type: number | string
+- Description: Longueur maximale autorisée.
+- Effet: Limite la saisie et alimente le compteur.
+
+### disabled
+
+- Type: boolean
+- Description: Désactive complètement le champ.
+
+### readonly
+
+- Type: boolean
+- Description: Rend le champ non modifiable mais focusable.
+
+### hint
+
+- Type: string
+- Description: Message d’aide affiché sous le champ.
+
+### error
+
+- Type: string
+- Description: Message d’erreur.
+- Effet:
+- Active l’état visuel erreur.
+- aria-invalid=true
+- Prioritaire sur success et hint.
+
+### success
+
+- Type: string
+- Description: Message de succès.
+- Effet:
+- Actif uniquement si error est absent.
+
+------------------------------------------------------------------------
+
+## Compteur
+
+### showCounter
+
+- Type: boolean
+- Description: Affiche le compteur x / maxLength.
+- Condition:
+- showCounter = true
+- maxLength défini et > 0
+- Position: Bas gauche du textarea.
+- Mise à jour: Dynamique à chaque saisie.
+
+------------------------------------------------------------------------
+
+## Priorité d’affichage
+
+### Messages
+
+1. error
+2. success
+3. hint
+
+
+------------------------------------------------------------------------
+
+## Accessibilité
+
+- aria-invalid est activé si error existe.
+- aria-describedby référence le message affiché.
+- Fonctionne avec ou sans v-model.
+
+------------------------------------------------------------------------
+
+## Events
+
+### update:modelValue
+
+- Émis à chaque modification du textarea.
+- Permet l’utilisation avec v-model.
+
+
+
+
diff --git a/tailwind.config.ts b/tailwind.config.ts
index bc5b42e..4d24081 100644
--- a/tailwind.config.ts
+++ b/tailwind.config.ts
@@ -9,7 +9,7 @@ export default {
],
safelist: [
{
- pattern: /(sm:|md:|lg:|xl:|2xl:)?(text|rounded|w|min-w|max-w)-.+/,
+ pattern: /^(?:(?:sm|md|lg|xl|2xl):)?(?:text|rounded|w|min-w|max-w)-[^\s]+$/,
},
],
theme: {