{# # ============================================================================ # MOLECULE: FORM-CHECKBOX # ============================================================================ # # Checkbox avec label inline et messages. # Molécule réutilisable pour tous les formulaires de l'application. # # ============================================================================ # COMPOSITION (Atomes utilisés) # ============================================================================ # # - _atoms/form/checkbox.html.twig # # ============================================================================ # PARAMÈTRES # ============================================================================ # # | Paramètre | Type | Défaut | Description | # |----------------|---------|-----------|------------------------------------------| # | name | string | (requis) | Nom du champ | # | label | string | (requis) | Texte du label | # | checked | bool | false | État coché | # | disabled | bool | false | Champ désactivé | # | error | string | null | Message d'erreur | # | hint | string | null | Texte d'aide | # | size | string | 'md' | Taille: sm, md, lg | # | variant | string | 'default' | Style: default, card | # | value | string | '1' | Valeur quand coché | # | class | string | '' | Classes additionnelles | # # ============================================================================ # EXEMPLES D'UTILISATION # ============================================================================ # # Checkbox simple: # {% include '_molecules/form/form-checkbox.html.twig' with { # name: 'remember_me', # label: 'Se souvenir de moi', # checked: true # } %} # # Avec erreur: # {% include '_molecules/form/form-checkbox.html.twig' with { # name: 'terms', # label: 'J\'accepte les conditions', # error: 'Vous devez accepter les conditions' # } %} # # Style card: # {% include '_molecules/form/form-checkbox.html.twig' with { # name: 'newsletter', # label: 'Recevoir la newsletter', # hint: 'Une fois par semaine maximum', # variant: 'card' # } %} # # ============================================================================ #} {# ============================================================================ CONFIGURATION DES VALEURS PAR DÉFAUT ============================================================================ #} {% set name = name ?? '' %} {% set label = label ?? '' %} {% set checked = checked ?? false %} {% set disabled = disabled ?? false %} {% set error = error ?? null %} {% set hint = hint ?? null %} {% set size = size ?? 'md' %} {% set variant = variant ?? 'default' %} {% set value = value ?? '1' %} {% set class = class ?? '' %} {# ID auto-généré #} {% set fieldId = 'checkbox-' ~ name %} {# ============================================================================ CLASSES TAILWIND - TAILLES ============================================================================ #} {% set checkboxSizes = { 'sm': 'w-4 h-4', 'md': 'w-5 h-5', 'lg': 'w-6 h-6' } %} {% set labelSizes = { 'sm': 'text-xs', 'md': 'text-sm', 'lg': 'text-base' } %} {# ============================================================================ CLASSES TAILWIND - VARIANTES ============================================================================ #} {% set wrapperClasses = { 'default': 'flex items-start gap-3', 'card': 'flex items-start gap-3 p-4 border-2 border-gray-200 rounded-lg hover:border-primary/50 transition-colors has-[:checked]:border-primary has-[:checked]:bg-primary/5' } %} {# ============================================================================ RENDU HTML ============================================================================ #}
{# Error message #} {% if error %}

{% include '_atoms/icon/icon.html.twig' with { name: 'alert', size: 'xs' } only %} {{ error }}

{% endif %}