{% extends 'base.html.twig' %} {% block title %}Member Slider - Design System - Bubul{% endblock %} {% block body %}
Molécules /

Member Slider

Slider de contrôle avec input numérique synchronisé

{# ===== USAGE ===== #}

Usage

{% verbatim %}{% include '_molecules/member-slider/member-slider.html.twig' with {
    value: 50000,
    min: 0,
    max: 500000,
    step: 1000,
    unit: 'tokens/mois'
} %}{% endverbatim %}
{# ===== APERÇU INTERACTIF ===== #}

Aperçu interactif

Déplacez le slider ou modifiez l'input - ils sont synchronisés

Allocation de tokens

{% include '_molecules/member-slider/member-slider.html.twig' with { value: 150000, min: 0, max: 500000, step: 1000, unit: 'tokens/mois' } %}

Pourcentage de quota

{% include '_molecules/member-slider/member-slider.html.twig' with { value: 75, min: 0, max: 100, step: 5, unit: '%' } %}
{# ===== VARIANTES ===== #}

Variantes de couleur

Paramètre : variant

primary (défaut)

{% include '_molecules/member-slider/member-slider.html.twig' with { value: 60, max: 100, variant: 'primary' } %}

success

{% include '_molecules/member-slider/member-slider.html.twig' with { value: 80, max: 100, variant: 'success' } %}

warning

{% include '_molecules/member-slider/member-slider.html.twig' with { value: 45, max: 100, variant: 'warning' } %}
{# ===== ÉTAT DÉSACTIVÉ ===== #}

État désactivé

Paramètre : disabled: true

{% include '_molecules/member-slider/member-slider.html.twig' with { value: 50, max: 100, unit: '%', disabled: true } %}
{# ===== ÉCOUTER LES CHANGEMENTS ===== #}

Écouter les changements

Événement : shared--member-slider:change

{% verbatim %}// JavaScript
document.addEventListener('shared--member-slider:change', (event) => {
    console.log('Nouvelle valeur:', event.detail.value);
    console.log('Pourcentage:', event.detail.percentage);
    console.log('Min/Max:', event.detail.min, event.detail.max);
});

// Ou avec Stimulus (dans un autre controller)
// data-action="shared--member-slider:change->myController#onSliderChange"{% endverbatim %}
{# ===== INTÉGRATION AVEC USER-CARD ===== #}

Intégration avec User Card

Utilisation dans le block controls

{% verbatim %}{% embed '_molecules/user-card/user-card.html.twig' with {
    name: 'Jean Dupont',
    subtitle: 'Solde : 250 000 tokens',
    variant: 'bordered'
} %}
    {% block controls %}
        {% include '_molecules/member-slider/member-slider.html.twig' with {
            value: user.monthlyAllocation,
            max: 500000,
            step: 1000,
            unit: 'tokens/mois',
            name: 'allocation[' ~ user.id ~ ']'
        } %}
    {% endblock %}
{% endembed %}{% endverbatim %}
{# Exemple live #}
JD
Jean Dupont Solde : 250 000 tokens
{% include '_molecules/member-slider/member-slider.html.twig' with { value: 125000, min: 0, max: 500000, step: 1000, unit: 'tokens/mois' } %}
{# ===== PARAMÈTRES ===== #}

Paramètres

Paramètre Type Défaut Description
valuenumber0Valeur actuelle
minnumber0Valeur minimum
maxnumber100Valeur maximum
stepnumber1Pas d'incrémentation
unitstringnullUnité affichée (ex: 'tokens/mois', '%')
namestringnullNom du champ pour formulaire
disabledboolfalseDésactiver le slider
variantstringprimaryprimary, success, warning
classstring''Classes CSS additionnelles
{% endblock %}