{# # ============================================================================ # ATOM: SPINNER # ============================================================================ # # Indicateur de chargement paramétrable utilisant 100% Tailwind CSS. # # ============================================================================ # PARAMÈTRES # ============================================================================ # # | Paramètre | Type | Défaut | Description | # |-----------|---------|-----------|------------------------------------------| # | size | string | 'md' | Taille: xs, sm, md, lg, xl | # | variant | string | 'primary' | Couleur: primary, white, gray, current | # | label | string | null | Texte accessible (sr-only) | # | class | string | '' | Classes additionnelles | # # ============================================================================ # EXEMPLES D'UTILISATION # ============================================================================ # # Spinner simple: # {% include '_atoms/spinner/spinner.html.twig' %} # # Spinner dans un bouton: # {% include '_atoms/spinner/spinner.html.twig' with { size: 'sm', variant: 'white' } %} # # Spinner pleine page: # {% include '_atoms/spinner/spinner.html.twig' with { size: 'xl', label: 'Chargement...' } %} # # ============================================================================ #} {# ============================================================================ CONFIGURATION DES VALEURS PAR DÉFAUT ============================================================================ #} {% set size = size ?? 'md' %} {% set variant = variant ?? 'primary' %} {% set label = label ?? 'Chargement' %} {% set class = class ?? '' %} {# ============================================================================ CLASSES TAILWIND - TAILLES ============================================================================ #} {% set sizeClasses = { 'xs': 'w-3 h-3', 'sm': 'w-4 h-4', 'md': 'w-6 h-6', 'lg': 'w-8 h-8', 'xl': 'w-12 h-12' } %} {% set strokeWidth = { 'xs': '4', 'sm': '4', 'md': '3', 'lg': '3', 'xl': '2' } %} {# ============================================================================ CLASSES TAILWIND - VARIANTES ============================================================================ #} {% set variantClasses = { 'primary': 'text-primary', 'white': 'text-white', 'gray': 'text-gray-400', 'current': 'text-current', 'success': 'text-success', 'error': 'text-error' } %} {# ============================================================================ RENDU HTML ============================================================================ #} {{ label }}