{% extends 'base.html.twig' %} {% block title %}Landing Hero Tool - Design System - Bubul{% endblock %} {% block body %}
Hero parametrable pour les pages de presentation d'outils
Section hero reutilisable pour les pages de presentation de chaque outil Bubul. Fond identique au hero principal (FAFCFF + orbes floutees + grille de points). Support de 1 ou 2 CTA, d'un badge optionnel et d'une grille de stats. Le dégradé des orbes s'adapte aux couleurs de l'outil.
90vh
Hauteur
2
CTA max
orbes
Fond anime
visualHtml
Mockup custom
Atomes utilises
button
CTA principal (gradient) et CTA secondaire (outline)
badge
Badge optionnel au-dessus du H1
icon
Icone de l'outil dans le chip de nom
Exemple de code Twig
Exemple simple (placeholder)
{% verbatim %}{% include '_organisms/landing/hero-tool.html.twig' with {
toolName: 'Slidia',
toolIcon: 'bubul-slidia',
h1: 'Des slides professionnels en 2 minutes',
subtitle: 'Slidia genere des presentations PowerPoint...',
badge: 'Slidia · Bubul.app',
ctaUrl: '#beta-signup',
ctaLabel: 'Essayer gratuitement',
gradientStart: '#C4167A',
gradientEnd: '#EC4899'
} only %}{% endverbatim %}
Exemple complet (mockup injecte via visualHtml)
{% verbatim %}{# 1. Capturer le HTML du mockup dans une variable Twig #}
{% set myToolMockup %}
{# Votre mockup HTML ici — variables Twig evaluees dans ce contexte #}
...
{% include '_atoms/icon/icon.html.twig' with { name: 'bubul-serenia' } only %}
{% endset %}
{# 2. Passer la variable au param visualHtml #}
{% include '_organisms/landing/hero-tool.html.twig' with {
toolName: 'Serenia',
toolIcon: 'bubul-serenia',
h1: 'L’assistant IA
pedagogique',
subtitle: 'Analysez vos documents, generez des visuels.',
badge: 'Serenia · Bubul.app',
liveBadge: betaCount > 0 ? (betaCount ~ '+ formateurs') : 'Beta ouverte',
ctaUrl: path('app_login'),
ctaLabel: 'Commencer maintenant',
ctaSecondaryUrl: path('app_landing') ~ '#pricing',
ctaSecondaryLabel: 'Voir les tarifs',
pills: ['0 donnee stockee', 'PDF · DOCX · Excel', 'Streaming temps reel'],
gradientStart: c1,
gradientEnd: c2,
visualHtml: myToolMockup
} only %}{% endverbatim %}
Options de configuration
| Parametre | Type | Defaut | Description |
|---|---|---|---|
toolName |
string | '' | Nom de l'outil (affiche dans un chip) |
toolColor |
string | 'primary' | Token couleur CSS pour l'icone |
toolIcon |
string | 'rocket' | Nom de l'icone Solar |
h1 |
string | '' | H1 SEO (obligatoire) |
subtitle |
string | '' | Sous-titre sous le H1 |
badge |
string|null | null | Badge optionnel au-dessus du H1 |
ctaUrl |
string | '#beta-signup' | URL CTA principal |
ctaLabel |
string | 'Essayer gratuitement' | Label CTA principal |
ctaSecondaryUrl |
string|null | null | URL CTA secondaire (optionnel) |
ctaSecondaryLabel |
string|null | null | Label CTA secondaire |
stats |
array | [] | Stats optionnelles: { value, label, sublabel } |
screenshotNote |
string | 'Screenshot de l\'interface...' | Note du placeholder screenshot |
gradientStart |
string | '#0A6BC4' | Couleur de debut du degrade des orbes |
gradientEnd |
string | '#3AB8E8' | Couleur de fin du degrade des orbes |
liveBadge |
string|null | null | Badge pulsant au-dessus du badge outil (ex: "42+ formateurs" ou "Beta ouverte"). Utilise un point anime aux couleurs du gradient. |
pills |
array | [] | Liste de trust pills affiches sous les CTA. Chaque pill = une chaine de caracteres. Checkmark avec gradient de couleur outil. |
visualHtml |
string|null | null | HTML du mockup outil injecte a droite. Remplace entierement le placeholder. Utiliser avec un bloc {% set %} Twig pour inclure du HTML dynamique. |
class |
string | '' | Classes CSS additionnelles |
Implementation
Les orbes floutees utilisent hidden lg:block — elles n'apparaissent pas sur mobile pour eviter un rendu lourd.
Si stats est vide, la grille de stats n'est pas rendue. Les valeurs sont affichees avec le gradient de couleur de l'outil.
Le fond inclut une grille de points SVG subtile via un pattern CSS radial-gradient.
Pour passer un mockup HTML riche (avec Twig includes et variables dynamiques), utiliser un bloc {% set myMockup %}...{% endset %} avant l'include. Les variables du contexte parent (c1, c2...) sont disponibles dans le bloc set.
La colonne droite est automatiquement animee en flottement via hero-tool-visual-wrapper. Ne pas ajouter de classe mockup-float ou slide-float dans le HTML passe a visualHtml.