# Sistema de Temas - Analítica Núcleo > **Documentación definitiva del sistema de temas personalizable** > Versión: 2.0 | Última actualización: 2025-10-30 ## Índice 1. [Introducción](#introducción) 2. [Arquitectura del Sistema](#arquitectura-del-sistema) 3. [Variables CSS Disponibles](#variables-css-disponibles) 4. [Reglas de Uso Obligatorias](#reglas-de-uso-obligatorias) 5. [Clases Utilitarias](#clases-utilitarias) 6. [Composable useTheme()](#composable-usetheme) 7. [Ejemplos de Uso](#ejemplos-de-uso) 8. [Integración con Nuxt UI](#integración-con-nuxt-ui) 9. [Casos Especiales](#casos-especiales) 10. [Troubleshooting](#troubleshooting) --- ## Introducción Analítica Núcleo cuenta con un sistema de temas completamente dinámico que permite personalizar todos los colores de la interfaz en tiempo real. Los cambios se aplican instantáneamente a todos los componentes de la aplicación. **Características principales:** - ✅ 8 variables de color personalizables - ✅ 4 temas predefinidos (Café, Azul, Verde, Carbón) - ✅ Persistencia en localStorage - ✅ Vista previa en tiempo real - ✅ Exportar/importar temas en JSON - ✅ Integración completa con Nuxt UI --- ## Arquitectura del Sistema ### Flujo de Datos ``` Usuario modifica tema en /settings ↓ useTheme() composable ↓ Actualiza variables CSS (--brand-*) ↓ Variables --ui-color-neutral-* mapeadas automáticamente ↓ Todos los componentes se actualizan instantáneamente ``` ### Archivos Clave | Archivo | Propósito | |---------|-----------| | `app/assets/css/main.css` | Definición de variables CSS y clases utilitarias | | `app/composables/useTheme.ts` | Lógica del sistema de temas | | `app/pages/settings.vue` | Interfaz de configuración | --- ## Variables CSS Disponibles ### Variables Base (`--brand-*`) Estas variables controlan la apariencia general de la aplicación: | Variable | Uso | Ejemplo de valor | |----------|-----|------------------| | `--brand-bg` | Fondo principal de la app | `#14100b` | | `--brand-surface` | Fondos de cards, modales, elementos elevados | `#1f180f` | | `--brand-border` | Bordes de todos los elementos | `#3a2a16` | | `--brand-primary` | Color principal para enlaces, títulos destacados | `#e0c080` | | `--brand-primary-strong` | Variante más intensa del primario | `#c08040` | | `--brand-accent` | Highlights, elementos de énfasis | `#ffe0a0` | | `--brand-text` | Texto principal (alta legibilidad) | `#fef9f0` | | `--brand-text-muted` | Texto secundario, descripciones | `#d8c7a6` | ### Variables de Tipos de Café (`--coffee-*`) Estas variables se usan para identificar visualmente los tipos de café en gráficas y tablas: | Variable | Uso | Ejemplo de valor | |----------|-----|------------------| | `--coffee-uva` | Color de identificación para Café Uva | `#a855f7` (Purple) | | `--coffee-oreado` | Color de identificación para Café Oreado | `#f97316` (Orange) | | `--coffee-mojado` | Color de identificación para Café Mojado | `#06b6d4` (Cyan) | | `--coffee-verde` | Color de identificación para Café Verde | `#22c55e` (Green) | ### Variables de Estados (`--status-*`) Estas variables se usan para indicar estados de pago en tablas y badges: | Variable | Uso | Ejemplo de valor | |----------|-----|------------------| | `--status-pendiente` | Estado de pago pendiente | `#f59e0b` (Amber) | | `--status-pagado` | Estado pagado completamente | `#10b981` (Emerald) | | `--status-anulado` | Estado anulado o cancelado | `#6b7280` (Gray) | ### Variables de Nuxt UI (`--ui-color-neutral-*`) ⚠️ **NO uses estas variables directamente**. Están mapeadas automáticamente a `--brand-*` en `main.css`. **Mapeo actual (NO modificar):** ```css --ui-color-neutral-50: var(--brand-text); /* Texto más claro */ --ui-color-neutral-100: var(--brand-text-muted); /* Texto secundario */ --ui-color-neutral-200: var(--brand-primary); /* Primario claro */ --ui-color-neutral-300: var(--brand-primary); /* Primario */ --ui-color-neutral-400: var(--brand-primary-strong); /* Primario fuerte */ --ui-color-neutral-500: var(--brand-border); /* Bordes */ --ui-color-neutral-600: var(--brand-border); /* Bordes */ --ui-color-neutral-700: var(--brand-surface); /* Surface */ --ui-color-neutral-800: var(--brand-surface); /* Surface */ --ui-color-neutral-900: var(--brand-bg); /* Fondo más oscuro */ --ui-color-neutral-950: var(--brand-bg); /* Fondo */ ``` > **IMPORTANTE:** Nuxt UI usa la escala neutral de forma invertida en dark mode: > - `neutral-50/100` → Colores claros (texto) > - `neutral-900/950` → Colores oscuros (fondos) --- ## Reglas de Uso Obligatorias ### ✅ SIEMPRE Hacer 1. **Usar variables CSS en lugar de colores hardcoded:** ```vue
Contenido
Descripción del contenido
```
### Gradientes
```vue