Formulaires

Composants de saisie pour collecter proprement les données usagers, inspirés de l'esthétique minimaliste de shadcn/ui et de la robustesse de GOV.UK.

1. Champs de saisie & Sélecteurs

Champs standards agrémentés de textes d'aide explicatifs sous le champ.

Saisissez votre nom tel qu'il figure sur votre acte de naissance.
HTML
<!-- Simple input with helper text -->
<div class="ml-form-group">
  <label class="ml-label" for="name">Nom complet</label>
  <input type="text" class="ml-input" id="name" placeholder="Ex...">
  <span class="ml-form-helper">Texte d'aide explicatif...</span>
</div>

<div class="ml-form-group">
  <label class="ml-label" for="select">Démarche requise</label>
  <select class="ml-select" id="select">
    <option>Sélectionner</option>
  </select>
</div>

2. Sélection & Commutateurs

Composants interactifs stylisés pour les choix multiples ou binaires.

Cases à cocher (.ml-checkbox)
Boutons radio (.ml-radio)
Commutateur (.ml-switch)
HTML
<!-- Custom checkbox -->
<label class="ml-checkbox-container">
  <input type="checkbox" class="ml-checkbox" checked>
  J'accepte les conditions
</label>
 
<label class="ml-radio-container">
  <input type="radio" name="options" class="ml-radio" checked>
  Option A
</label>
 
<label class="ml-switch-container">
  <input type="checkbox" class="ml-switch">
  Activer les notifications SMS
</label>

3. États Désactivé (Disabled) & Lecture seule (Read-Only)

Champs bloqués ou affichés à titre informatif.

HTML
<input type="text" class="ml-input" value="Donnée" disabled>
<input type="text" class="ml-input" value="Donnée" readonly>

4. Groupes d'éléments (Input Groups)

Pour accoler des unités ou des boutons d'action directement aux champs.

FCFA
🔍
HTML
<!-- Input group with suffix -->
<div class="ml-input-group">
  <input type="number" class="ml-input" placeholder="Montant">
  <span class="ml-input-group-addon">FCFA</span>
</div>

<!-- Input group with prefix and action button -->
<div class="ml-input-group">
  <span class="ml-input-group-addon">🔍</span>
  <input type="text" class="ml-input" placeholder="Rechercher...">
  <button class="ml-btn ml-btn-primary">Rechercher</button>
</div>

5. États de validation (Succès / Erreur)

Retours colorés et messages explicatifs pour guider l'utilisateur.

⚠️ Le numéro NINA doit comporter 14 chiffres.
✓ L'adresse e-mail est valide.
HTML
<!-- Error state -->
<div class="ml-form-group">
  <label class="ml-label" for="nina">Numéro NINA</label>
  <input type="text" class="ml-input ml-input-error" id="nina">
  <span class="ml-error-message">⚠️ Message d'erreur...</span>
</div>

6. Zone de téléversement (Drag & Drop Upload)

Composant premium pour envoyer des justificatifs ou des pièces jointes.

📤
Glissez-déposez vos fichiers ici
Formats acceptés : PDF, PNG, JPG (Max. 5 Mo)
HTML
<div class="ml-upload">
  <input type="file" id="my-file">
  <div class="ml-upload-icon">📤</div>
  <div class="ml-upload-text">Glissez-déposez vos fichiers ici</div>
  <div class="ml-upload-desc">PDF, PNG, JPG jusqu'à 5 Mo</div>
</div>

7. Commandes segmentées (Segmented Control)

Composant de sélection exclusive à plusieurs options (boutons radio visuels), idéal pour changer de mode de vue (ex. Édition / Aperçu) ou filtrer des sous-ensembles de données.

Mode clair (.ml-segmented-control)
Mode sombre / Barres d'outils (.ml-segmented-control-dark)
HTML
<!-- Standard Light Mode -->
<div class="ml-segmented-control" role="radiogroup" aria-label="Filtre">
  <button type="button" class="ml-segment-btn active" role="radio" aria-checked="true">Tous</button>
  <button type="button" class="ml-segment-btn" role="radio" aria-checked="false">En cours</button>
</div>

<!-- Dark / Toolbar Mode -->
<div class="ml-segmented-control ml-segmented-control-dark" role="radiogroup" aria-label="Mode">
  <button type="button" class="ml-segment-btn active" role="radio" aria-checked="true">
    <i class="ml-icon-edit-line ml-icon--xs"></i>
    <span>Édition</span>
  </button>
  <button type="button" class="ml-segment-btn" role="radio" aria-checked="false">
    <i class="ml-icon-eye-line ml-icon--xs"></i>
    <span>Aperçu</span>
  </button>
</div>

Recherche dans la documentation

🔍