Files
roi-apu-search/admin/assets/dashboard.css
FrankZamora 287de596f2 feat(dashboard): cards colapsables en Analytics Dashboard
- Convertir 9 cards a estructura colapsable con Bootstrap 5 Collapse
- Headers fuera de cards como botones clickeables
- Cards contraídos por defecto para reducir scroll
- Añadir animación de rotación del chevron (180°)
- Ajustar selector JS de loading overlay a .collapsible-section
- CSS para estados hover, focus y bordes redondeados

Cards modificados:
1. CTR 0% (collapse-ctr-zero)
2. Quick Wins (collapse-quick-wins)
3. Contenido Decadencia (collapse-decay)
4. Contenido Estrella (collapse-star)
5. Infraposicionados (collapse-infrapos)
6. Click Distribution (collapse-click-dist)
7. Top Búsquedas (collapse-top-searches)
8. Top Clicks (collapse-top-clicks)
9. Sin Resultados (collapse-zero-results)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-04 19:58:01 -06:00

318 lines
7.7 KiB
CSS

/**
* ROI APU Search - Analytics Dashboard Styles
*
* @package ROI_APU_Search
* @since 1.2.0
*/
/* =================================================================
WordPress Admin Fixes
================================================================= */
/* Fix: WordPress limita ancho de cards */
body .card {
max-width: none !important;
}
/* Fix: WordPress admin puede afectar tipografia */
.dashboard-analytics-wrap {
font-family: 'Poppins', -apple-system, BlinkMacSystemFont, sans-serif;
}
/* Fix: Asegurar que Bootstrap no colisione con WP admin */
.dashboard-analytics-wrap .btn {
text-transform: none;
}
/* Fix: Reset WP admin styles dentro del dashboard */
.dashboard-analytics-wrap h1,
.dashboard-analytics-wrap h2,
.dashboard-analytics-wrap h3,
.dashboard-analytics-wrap h4,
.dashboard-analytics-wrap h5,
.dashboard-analytics-wrap h6 {
font-family: 'Poppins', -apple-system, BlinkMacSystemFont, sans-serif;
}
/* =================================================================
Admin Notice Styles
================================================================= */
.admin-notice {
border-left: 4px solid;
border-radius: 4px;
padding: 1rem;
margin-bottom: 1rem;
}
/* Error - CTR 0% (critico) */
.admin-notice.notice-error {
border-color: #ef4444;
background-color: #fef2f2;
color: #7f1d1d;
}
/* Warning - Posts infraposicionados (oportunidad) */
.admin-notice.notice-warning {
border-color: #f59e0b;
background-color: #fffbeb;
color: #78350f;
}
/* Info - Sin resultados */
.admin-notice.notice-info {
border-color: #0284c7;
background-color: #e7f3ff;
color: #0c4a6e;
}
/* Success - Feedback export */
.admin-notice.notice-success {
border-color: #22c55e;
background-color: #f0fdf4;
color: #166534;
}
/* =================================================================
Loading State
================================================================= */
#loadingState {
display: none;
}
.dashboard-analytics-wrap.is-loading #loadingState {
display: block;
}
.dashboard-analytics-wrap.is-loading #dashboardContent {
display: none;
}
/* =================================================================
Table Loading State (overlay sin cambiar tamaño)
================================================================= */
.dashboard-analytics-wrap .card.is-loading-table {
position: relative;
pointer-events: none;
}
.dashboard-analytics-wrap .card.is-loading-table::after {
content: '';
position: absolute;
top: 0;
left: 0;
right: 0;
bottom: 0;
background: rgba(255, 255, 255, 0.7);
z-index: 10;
}
.dashboard-analytics-wrap .card.is-loading-table::before {
content: '';
position: absolute;
top: 50%;
left: 50%;
width: 24px;
height: 24px;
margin: -12px 0 0 -12px;
border: 3px solid #f3f3f3;
border-top: 3px solid #FF8600;
border-radius: 50%;
z-index: 11;
animation: spin 0.8s linear infinite;
}
@keyframes spin {
0% { transform: rotate(0deg); }
100% { transform: rotate(360deg); }
}
/* =================================================================
KPI Cards - Sin efecto hover
================================================================= */
.dashboard-analytics-wrap .card {
/* Sin transiciones de movimiento */
}
/* =================================================================
Tables
================================================================= */
.dashboard-analytics-wrap .table {
font-size: 0.875rem;
}
.dashboard-analytics-wrap .table th {
font-weight: 600;
white-space: nowrap;
}
/* =================================================================
Export Card
================================================================= */
.export-card {
border: 2px dashed #dee2e6;
transition: border-color 0.2s ease;
}
.export-card:hover {
border-color: #FF8600;
}
/* =================================================================
Pagination - Estilo igual al sitio principal
================================================================= */
.dashboard-analytics-wrap .pagination {
gap: 0.25rem;
flex-wrap: wrap;
}
.dashboard-analytics-wrap .pagination .page-item .page-link {
padding: 8px 16px;
margin: 0 4px;
border-radius: 6px;
border: 1px solid #e5e7eb;
font-size: 1rem;
min-height: 42px;
display: flex;
align-items: center;
justify-content: center;
color: #374151;
background-color: #fff;
text-decoration: none;
transition: all 0.2s ease;
}
.dashboard-analytics-wrap .pagination .page-item .page-link:hover {
background-color: #f3f4f6;
border-color: #d1d5db;
color: #111827;
}
.dashboard-analytics-wrap .pagination .page-item.active .page-link {
background-color: #FF8600;
border-color: #FF8600;
color: #fff;
}
.dashboard-analytics-wrap .pagination .page-item.disabled .page-link {
background-color: #f9fafb;
border-color: #e5e7eb;
color: #9ca3af;
cursor: not-allowed;
}
/* Botones de navegación (flechas) */
.dashboard-analytics-wrap .pagination .page-item .page-link i {
font-size: 0.875rem;
}
/* =================================================================
Collapsible Cards
================================================================= */
.dashboard-analytics-wrap .collapsible-section {
margin-bottom: 1rem;
}
.dashboard-analytics-wrap .collapsible-header {
cursor: pointer;
transition: all 0.2s ease;
text-align: left;
font-family: 'Poppins', -apple-system, BlinkMacSystemFont, sans-serif;
}
.dashboard-analytics-wrap .collapsible-header:hover {
filter: brightness(1.1);
}
.dashboard-analytics-wrap .collapsible-header:focus {
outline: none;
box-shadow: 0 0 0 2px rgba(255, 134, 0, 0.5);
}
/* Chevron rotation */
.dashboard-analytics-wrap .collapse-chevron {
transition: transform 0.3s ease;
font-size: 1rem;
}
.dashboard-analytics-wrap .collapsible-header:not(.collapsed) .collapse-chevron {
transform: rotate(180deg);
}
/* Header bordes */
.dashboard-analytics-wrap .collapsible-header {
border-radius: 0.375rem;
}
.dashboard-analytics-wrap .collapsible-header:not(.collapsed) {
border-radius: 0.375rem 0.375rem 0 0;
}
/* Card sin borde superior cuando está expandido */
.dashboard-analytics-wrap .collapsible-section .card {
border-top-left-radius: 0;
border-top-right-radius: 0;
border-top: none;
}
/* Loading en collapsible section */
.dashboard-analytics-wrap .collapsible-section.is-loading-table {
position: relative;
pointer-events: none;
}
.dashboard-analytics-wrap .collapsible-section.is-loading-table::after {
content: '';
position: absolute;
top: 0;
left: 0;
right: 0;
bottom: 0;
background: rgba(255, 255, 255, 0.7);
z-index: 10;
border-radius: 0.375rem;
}
.dashboard-analytics-wrap .collapsible-section.is-loading-table::before {
content: '';
position: absolute;
top: 50%;
left: 50%;
width: 24px;
height: 24px;
margin: -12px 0 0 -12px;
border: 3px solid #f3f3f3;
border-top: 3px solid #FF8600;
border-radius: 50%;
z-index: 11;
animation: spin 0.8s linear infinite;
}
/* =================================================================
Responsive
================================================================= */
@media (max-width: 782px) {
.dashboard-analytics-wrap .admin-notice {
padding: 0.75rem;
}
.dashboard-analytics-wrap .card-body {
padding: 0.75rem;
}
.dashboard-analytics-wrap .pagination .page-item .page-link {
padding: 6px 12px;
font-size: 0.875rem;
min-height: 36px;
margin: 0 2px;
}
}