| Patrón | Ocurrencias totales |
|---|---|
| Badge admin | 151 |
| Nav / Sidebar | 17 |
| Card admin | 17 |
| Glass card | 10 |
| Toolbar búsqueda | 9 |
| Tabla admin | 8 |
| Empty state | 6 |
| Page header | 6 |
| Form group | 6 |
| Section header | 3 |
Afecta: Admin – Usuarios, Admin – Grupos, Admin – Eventos, Admin – Juegos, Admin – Auditoría, Admin – Notificaciones
Cada página de listado admin replica la misma estructura de toolbar con campo de búsqueda, botón submit y enlace "Limpiar". El código se copia literalmente en 7 templates.
Solución sugerida: Extraer a templates/admin/_toolbar.html.twig con variables action, buscar y filtros.
Afecta: Admin – Usuarios, Admin – Grupos, Admin – Eventos, Admin – Juegos, Admin – Auditoría, Admin – Notificaciones
Estructura admin-card > admin-table > thead/tbody con fila vacía (No data) repetida en 6 templates. Solo cambian las columnas, no el esqueleto.
Solución sugerida: Macro Twig renderTable(headers, rows, emptyText) en admin/_macros.html.twig.
Afecta: Admin – Usuarios, Admin – Grupos, Admin – Eventos, Admin – Juegos
Las páginas show de admin duplican el patrón admin-card-header + admin-card-title + admin-badge para mostrar el estado de una entidad.
Solución sugerida: Partial admin/_card_header.html.twig con variables title, status, status_label.
Afecta: Dashboard, Eventos – lista, Grupos – lista
34 ocurrencias de .glass-card con variantes card-event, card-group, card-invitation. El interior cambia ligeramente pero la estructura y clases son idénticas.
Solución sugerida: Macro renderCard(type, title, meta, badge, href) o componente Twig CardComponent.
Afecta: Eventos – lista, Grupos – lista, Colección grupo, Notificaciones, Admin – Usuarios, Admin – Grupos, Admin – Eventos
13 ocurrencias de .empty-state con ícono, titular y mensaje de texto vacío, cada una escrita a mano.
Solución sugerida: Partial shared/_empty_state.html.twig con variables icon, title, message y bloque opcional actions.
Afecta: Eventos – lista, Grupos – lista, Colección grupo, Colección personal, Notificaciones, Perfil
12 templates repiten .page-header > .page-title + .page-subtitle.
Solución sugerida: Bloque en base.html.twig o partial shared/_page_header.html.twig.
Afecta: Perfil, Grupos – nuevo, Eventos – nuevo, Admin – Config SMTP
46 ocurrencias de la tripla form_label / form_widget / form_errors con clases form-label / form-control.
Solución sugerida: Form theme Twig o macro formField(form, field) centralizado.
Cada página muestra la vista limpia y la vista con los patrones resaltados mediante bordes de color.
/
/eventos
/grupos
/coleccion
/coleccion/personal
/notificaciones
/perfil
/admin
/admin/usuarios
/admin/grupos
/admin/eventos
/admin/juegos
/admin/auditoria
/admin/estadisticas
/admin/notificaciones
/admin/integraciones
/admin/consola