{% extends 'admin/_layout.html.twig' %} {% block title %}Dashboard Admin — Skeleton{% endblock %} {% block page_title %}Dashboard Admin{% endblock %} {% block admin_body %} {# ── KPIs ── #}
{{ totalUsers }}
Utilisateur{{ totalUsers > 1 ? 's' : '' }}
{{ totalSocials }}
Réseau{{ totalSocials > 1 ? 'x sociaux' : ' social' }}
{{ totalMessages }}
Message{{ totalMessages > 1 ? 's' : '' }}{% if unreadMessages > 0 %} ({{ unreadMessages }} non lu{{ unreadMessages > 1 ? 's' : '' }}){% endif %}
{% if is_granted('ROLE_SUPER_ADMIN') %}
{{ totalErrors }}
Erreur{{ totalErrors > 1 ? 's' : '' }}{% if unresolvedErrors > 0 %} ({{ unresolvedErrors }} non résolu{{ unresolvedErrors > 1 ? 'es' : 'e' }}){% endif %}
{% endif %}
{# ── Anciennes KPIs (désactivé) ──
↑ 14%
1 284
Utilisateurs actifs
↑ 8%
48 290 €
Revenus MRR
↑ 5%
94,2%
Taux de rétention
↓ 2
7
Tickets ouverts
#} {# ── Charts (désactivé) ──
Revenus mensuels
Jan Fév Mar Avr Mai Jun Jul Aoû Sep Oct Nov Déc
Répartition plans
1 284 utilisateurs
Starter
38%
Pro
34%
Enterprise
18%
Free
10%
#} {# ── Bottom grid ── #}
{# Users table #}
Derniers utilisateurs Voir tout →
{% for user in latestUsers %} {% else %} {% endfor %}
UtilisateurFournisseurRôleStatut
{{ user.firstName ? user.firstName|first|upper : '?' }}{{ user.lastName ? user.lastName|first|upper : '?' }}
{{ user.firstName ?? '' }} {{ user.lastName ?? '' }}
{{ user.email }}
{% if user.provider == 'google' %} Google {% else %} Email {% endif %} {% include 'admin/user/_role.html.twig' with {roles: user.roles} %} {% if user.isBanned %} Banni {% elseif not user.isVerified %} Non vérifié {% else %} Actif {% endif %}
Aucun utilisateur
{# Activity feed #}
Activité récenteVoir tout →
{% for activity in activities %} {% set _cat = activity.category %} {% set _act = activity.action %} {# Color & icon per category/action #} {% if _act == 'deleted' or _act == 'batch_deleted' or _act == 'banned' %} {% set _color = 'var(--red)' %} {% set _bg = 'rgba(255,107,138,.1)' %} {% set _svg = '' %} {% elseif _act == 'created' or _act == 'received' %} {% set _color = 'var(--green)' %} {% set _bg = 'rgba(94,207,174,.12)' %} {% if _cat == 'user' %} {% set _svg = '' %} {% elseif _cat == 'contact' %} {% set _svg = '' %} {% else %} {% set _svg = '' %} {% endif %} {% elseif _act == 'updated' or _act == 'reordered' %} {% set _color = 'var(--accent)' %} {% set _bg = 'rgba(124,158,255,.12)' %} {% set _svg = '' %} {% elseif _act == 'toggled' %} {% set _color = 'var(--orange)' %} {% set _bg = 'rgba(255,184,108,.12)' %} {% set _svg = '' %} {% elseif _act == 'resolved' or _act == 'batch_resolved' or _act == 'unbanned' %} {% set _color = 'var(--green)' %} {% set _bg = 'rgba(94,207,174,.12)' %} {% set _svg = '' %} {% elseif _act == 'replied' %} {% set _color = 'var(--accent2)' %} {% set _bg = 'rgba(195,184,248,.15)' %} {% set _svg = '' %} {% elseif _act == 'reset_password' %} {% set _color = 'var(--orange)' %} {% set _bg = 'rgba(255,184,108,.12)' %} {% set _svg = '' %} {% else %} {% set _color = 'var(--muted)' %} {% set _bg = 'rgba(180,190,220,.1)' %} {% set _svg = '' %} {% endif %}
{{ _svg|raw }}
{{ activity.description }}
{{ activity.createdAt|date('d/m/Y H:i') }} {% if activity.performedBy %}· {{ activity.performedBy }}{% endif %}
{% else %}
Aucune activité enregistrée.
{% endfor %}
{% endblock %}