{# # ============================================================================ # ATOM: CHECKBOX # ============================================================================ # # Case à cocher paramétrable utilisant 100% Tailwind CSS. # # ============================================================================ # PARAMÈTRES # ============================================================================ # # | Paramètre | Type | Défaut | Description | # |-------------|---------|-----------|------------------------------------------| # | label | string | null | Label de la checkbox | # | checked | bool | false | État coché | # | name | string | null | Attribut name | # | id | string | null | Attribut id (auto-généré si absent) | # | value | string | '1' | Valeur quand coché | # | disabled | bool | false | Désactivée | # | required | bool | false | Obligatoire | # | 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 | # | class | string | '' | Classes additionnelles | # | attr | object | {} | Attributs HTML additionnels | # # ============================================================================ # EXEMPLES D'UTILISATION # ============================================================================ # # Checkbox simple: # {% include '_atoms/form/checkbox.html.twig' with { # label: 'Se souvenir de moi', # name: 'remember_me' # } %} # # Checkbox cochée avec hint: # {% include '_atoms/form/checkbox.html.twig' with { # label: 'Accepter les CGU', # checked: true, # hint: 'Vous devez accepter pour continuer', # required: true # } %} # # Checkbox style card: # {% include '_atoms/form/checkbox.html.twig' with { # label: 'Option premium', # variant: 'card', # hint: 'Accès à toutes les fonctionnalités' # } %} # # ============================================================================ #} {# ============================================================================ CONFIGURATION DES VALEURS PAR DÉFAUT ============================================================================ #} {% set label = label ?? null %} {% set labelHtml = labelHtml ?? null %} {% set checked = checked ?? false %} {% set name = name ?? null %} {% set id = id ?? (name ? 'checkbox-' ~ name : 'checkbox-' ~ random()) %} {% set value = value ?? '1' %} {% set disabled = disabled ?? false %} {% set required = required ?? false %} {% set error = error ?? null %} {% set hint = hint ?? null %} {% set size = size ?? 'md' %} {% set variant = variant ?? 'default' %} {% set class = class ?? '' %} {% set attr = attr ?? {} %} {# ============================================================================ CLASSES TAILWIND - TAILLES CHECKBOX ============================================================================ #} {% set checkboxSizeClasses = { 'sm': 'w-4 h-4', 'md': 'w-5 h-5', 'lg': 'w-6 h-6' } %} {% set labelSizeClasses = { 'sm': 'text-sm', 'md': 'text-base', 'lg': 'text-lg' } %} {% set checkmarkSizes = { 'sm': 'w-2.5 h-2.5', 'md': 'w-3 h-3', 'lg': 'w-3.5 h-3.5' } %} {# ============================================================================ CLASSES TAILWIND - VARIANTES ============================================================================ #} {% set wrapperVariantClasses = { 'default': '', 'card': 'p-4 bg-white border border-gray-200 rounded-lg hover:border-primary/30 hover:bg-primary/5 transition-all cursor-pointer' } %} {# ============================================================================ CLASSES TAILWIND - ÉTATS ============================================================================ #} {% set disabledClasses = disabled ? 'opacity-50 cursor-not-allowed' : 'cursor-pointer' %} {% set errorBorderClasses = error ? 'border-error' : 'border-gray-300' %} {# ============================================================================ RENDU HTML ============================================================================ #}
{{ error }}
{% endif %}