{# # ============================================================================ # MOLECULE: STEPPER # ============================================================================ # # Composant de progression par étapes pour les wizards et formulaires multi-step. # # ============================================================================ # PARAMÈTRES # ============================================================================ # # | Paramètre | Type | Défaut | Description | # |---------------|---------|-----------|-------------------------------------| # | steps | array | [] | Liste des étapes {label, icon?} | # | currentStep | int | 1 | Étape active (1-indexed) | # | size | string | 'md' | Taille: sm, md, lg | # | variant | string | 'default' | default, compact, minimal | # | clickable | bool | false | Étapes précédentes cliquables | # | baseUrl | string | null | URL de base pour les liens | # # ============================================================================ # EXEMPLES D'UTILISATION # ============================================================================ # # Basique: # {% include '_molecules/stepper/stepper.html.twig' with { # steps: [ # { label: 'Source' }, # { label: 'Configuration' }, # { label: 'Génération' } # ], # currentStep: 2 # } only %} # # Avec icônes: # {% include '_molecules/stepper/stepper.html.twig' with { # steps: [ # { label: 'Source', icon: 'document' }, # { label: 'Config', icon: 'settings' }, # { label: 'Preview', icon: 'eye' }, # { label: 'Générer', icon: 'rocket' } # ], # currentStep: 2, # size: 'lg' # } only %} # # ============================================================================ #} {% set steps = steps ?? [] %} {% set currentStep = currentStep ?? 1 %} {% set size = size ?? 'md' %} {% set variant = variant ?? 'default' %} {% set clickable = clickable ?? false %} {% set baseUrl = baseUrl ?? null %} {# Configuration des tailles #} {% set sizeConfig = { 'sm': { 'dot': 'w-6 h-6 text-xs', 'dotActive': 'w-7 h-7', 'icon': 'xs', 'line': 'h-0.5', 'label': 'text-[10px]', 'gap': 'gap-1' }, 'md': { 'dot': 'w-8 h-8 text-sm', 'dotActive': 'w-9 h-9', 'icon': 'sm', 'line': 'h-0.5', 'label': 'text-xs', 'gap': 'gap-1.5' }, 'lg': { 'dot': 'w-10 h-10 text-base', 'dotActive': 'w-11 h-11', 'icon': 'md', 'line': 'h-1', 'label': 'text-sm', 'gap': 'gap-2' } } %} {% set cfg = sizeConfig[size] ?? sizeConfig['md'] %}