{% extends 'base.html.twig' %} {% block title %}Feedback Widget - Design System - Bubul{% endblock %} {% block body %}
{% include '_atoms/icon/icon.html.twig' with { name: 'chevron-left', size: 'sm', color: 'gray' } %}
Organisme /

Feedback Widget

Bouton flottant + modal de feedback utilisateur

{# ===== EXPLICATION ===== #}
{% include '_atoms/icon/icon.html.twig' with { name: 'message', size: 'lg', color: 'white' } %}

Widget de Feedback

Global

Le Feedback Widget est un organisme autonome qui permet aux utilisateurs d'envoyer un retour d'experience directement depuis n'importe quelle page de l'application. Il se compose d'un bouton flottant fixe en bas a droite de l'ecran et d'une modal qui s'ouvre au clic pour afficher un formulaire de feedback charge dynamiquement via AJAX. L'ensemble est pilote par le controller Stimulus shared--feedback.

1

Atome

0

Molecules

1

Controller

0

Parametres

{# ===== COMPOSITION ===== #}

Composition

Atomes et controllers utilises

Atomes

  • icon - Icone message (bouton), close (modal), token (reward)

Controller Stimulus

  • shared--feedback - Gestion ouverture/fermeture modal + chargement AJAX
{# ===== USAGE ===== #}

Utilisation

Exemple de code Twig

{% verbatim %}{# Dans base.html.twig ou tout template global #}
{% include '_organisms/feedback-widget/feedback-widget.html.twig' %}

{# Aucun parametre necessaire - composant entierement autonome #}{% endverbatim %}

Le composant est deja inclus dans le template de base de l'application. Il n'est pas affiche ici en demo pour eviter de creer un second bouton flottant sur la page.

{# ===== COMPORTEMENT ===== #}

Comportement

Interactions et animations

{# Bouton flottant #}
{% include '_atoms/icon/icon.html.twig' with { name: 'message', size: 'md', color: 'primary' } %}

Bouton flottant

  • - Position fixe en bas a droite (fixed bottom-6 right-6)
  • - Gradient primary avec ombre portee
  • - Hover : scale 110% + rotation -6deg
  • - Transition duration-300
{# Modal #}
{% include '_atoms/icon/icon.html.twig' with { name: 'close', size: 'md', color: 'cohorts' } %}

Modal de feedback

  • - Overlay avec backdrop-filter: blur(4px)
  • - Animation ouverture : scale 0.95 vers 1 + translateY
  • - Formulaire charge dynamiquement via AJAX
  • - Fermeture : clic overlay ou bouton close
{# Reward Box #}
{% include '_atoms/icon/icon.html.twig' with { name: 'token', size: 'md', color: 'success' } %}

Reward Box

  • - Footer de la modal avec fond gradient primary
  • - Indique que les retours pertinents sont recompenses en tokens
{# Controller Stimulus #}
{% include '_atoms/icon/icon.html.twig' with { name: 'settings', size: 'md', color: 'warning' } %}

Controller Stimulus

  • - shared--feedback#openModal : ouvre la modal
  • - shared--feedback#closeModal : ferme la modal
  • - shared--feedback#preventClose : empeche la fermeture au clic dans la modal
{# ===== STRUCTURE ===== #}

Structure

Organisation hierarchique du composant

Feedback Widget
├── Bouton Flottant
│   └── Icon (message, xl, white)
│
└── Modal Overlay (.feedback-modal-overlay)
    └── Modal Container (.feedback-modal)
        ├── Header
        │   ├── Icon (message, 2xl, primary)
        │   ├── Titre + Description
        │   └── Bouton Close
        │       └── Icon (close, md)
        │
        ├── Body (formContainer)
        │   └── Spinner (chargement AJAX)
        │
        └── Footer (Reward Box)
            ├── Icon (token, lg, primary)
            └── Texte recompense
{# ===== PARAMETRES ===== #}

Parametres

Options de configuration

{% include '_atoms/icon/icon.html.twig' with { name: 'info-circle', size: 'md', color: 'secondary' } %}

Ce composant est entierement autonome et ne prend aucun parametre. Son comportement est gere par le controller Stimulus shared--feedback et le formulaire est charge dynamiquement via AJAX.

{# ===== FICHIER SOURCE ===== #}

Fichier source

templates/_organisms/feedback-widget/feedback-widget.html.twig
{% endblock %}