{# # ============================================================================ # ORGANISM: LANDING HERO TOOL # ============================================================================ # # Section hero paramétrée pour les pages de présentation d'outils. # Réutilisable pour Moodia, Slidia, Serenia, Castia, Monalisia, SAM. # Fond identique au hero principal : FAFCFF + orbes floutées + grille de points. # # ============================================================================ # PARAMÈTRES # ============================================================================ # # | Paramètre | Type | Défaut | Description | # |---------------------|--------|-------------------------|-----------------------------| # | toolName | string | '' | Nom de l'outil | # | toolColor | string | 'primary' | Token couleur CSS | # | toolIcon | string | 'rocket' | Icône Solar | # | h1 | string | '' | H1 SEO (obligatoire) | # | subtitle | string | '' | Sous-titre sous le H1 | # | badge | string | null | Badge outil (dot + label) | # | liveBadge | string | null | Badge live pulsant | # | pills | array | [] | Trust pills [string] | # | ctaUrl | string | '#beta-signup' | URL CTA principal | # | ctaLabel | string | 'Essayer gratuitement' | Label CTA principal | # | ctaSecondaryUrl | string | null | URL CTA secondaire | # | ctaSecondaryLabel | string | null | Label CTA secondaire | # | stats | array | [] | [{value, label, sublabel}] | # | screenshotNote | string | '' | Note placeholder screenshot | # | gradientStart | string | '#0A6BC4' | Couleur début dégradé | # | gradientEnd | string | '#3AB8E8' | Couleur fin dégradé | # | visualHtml | string | null | HTML mockup custom (droite) | # | class | string | '' | Classes CSS additionnelles | # # ============================================================================ #} {% set toolName = toolName ?? '' %} {% set toolColor = toolColor ?? 'primary' %} {% set toolIcon = toolIcon ?? 'rocket' %} {% set h1 = h1 ?? '' %} {% set subtitle = subtitle ?? '' %} {% set badge = badge ?? null %} {% set betaBadge = betaBadge ?? false %} {% set ctaUrl = ctaUrl ?? '#beta-signup' %} {% set ctaLabel = ctaLabel ?? 'Commencer maintenant' %} {% set ctaSecondaryUrl = ctaSecondaryUrl ?? null %} {% set ctaSecondaryLabel = ctaSecondaryLabel ?? null %} {% set stats = stats ?? [] %} {% set liveBadge = liveBadge ?? null %} {% set pills = pills ?? [] %} {% set visualHtml = visualHtml ?? null %} {% set userCount = userCount ?? (tool_user_counts[toolName|lower] ?? null) %} {% set userCountLabel = userCountLabel ?? ('formateurs utilisent déjà ' ~ toolName) %} {% set screenshotNote = screenshotNote ?? ('Screenshot de l\'interface ' ~ toolName) %} {% set gradientStart = gradientStart ?? '#0A6BC4' %} {% set gradientEnd = gradientEnd ?? '#3AB8E8' %} {% set class = class ?? '' %} {% set visualWide = visualWide ?? false %}
{# ===== Background ===== #}
{# Orbes floutées — dégradé aux couleurs de l'outil #} {# Grille de points subtile #}
{# Fondu bas pour enchaîner avec la section suivante #}
{# ===== Contenu ===== #}
{# ===== Gauche : Texte ===== #}
{# Live badge — pulsing (ex: betaCount, Bêta ouverte) #} {% if liveBadge %}
{{ liveBadge }}
{% endif %} {# Badge — couleur dynamique de l'outil via customColor ; badge BETA optionnel à droite #} {% if badge %}
{% include '_atoms/badge/badge.html.twig' with { label: badge, customColor: gradientStart, dot: true, pulse: true, size: 'md', rounded: 'full' } only %} {% if betaBadge %} {% include '_atoms/badge/badge.html.twig' with { label: 'BETA', customColor: gradientStart, size: 'md', rounded: 'full' } only %} {% endif %}
{% endif %} {# H1 #}

{{ h1|raw }}

{# Sous-titre #} {% if subtitle %}

{{ subtitle|raw }}

{% endif %} {# CTAs — layout responsive sans chevauchement #}
{% include '_atoms/button/button.html.twig' with { label: ctaLabel, href: ctaUrl, gradientFrom: gradientStart, gradientTo: gradientEnd, size: 'lg' } only %} {% if ctaSecondaryUrl and ctaSecondaryLabel %} {% include '_atoms/button/button.html.twig' with { label: ctaSecondaryLabel, href: ctaSecondaryUrl, variant: 'outline', size: 'lg' } only %} {% endif %}
{# Social proof sous les CTAs #} {% if userCount is not null and userCount > 0 %}
{% for i in 1..3 %}
{{ ['F','A','M'][i-1] }}
{% endfor %}

{{ userCount }}+ {{ userCountLabel }}

{% else %}
{% endif %} {# Trust pills #} {% if pills|length > 0 %}
{% for pill in pills %}
{{ pill }}
{% endfor %}
{% endif %} {# Barre de stats #} {% if stats|length > 0 %}
{% for stat in stats %}
{{ stat.value }}
{{ stat.label }}
{% if stat.sublabel is defined and stat.sublabel %}
{{ stat.sublabel }}
{% endif %}
{% endfor %}
{% endif %}
{# ===== Droite : Aperçu de l'interface ===== #}
{% if visualHtml %} {{ visualHtml|raw }} {% else %}
{# Barre navigateur colorée #}
bubul.app
{# Zone screenshot / placeholder #}
{% include '_atoms/icon/icon.html.twig' with { name: toolIcon, size: '4xl', color: toolColor } only %}

{{ screenshotNote }}

{% endif %}