Skip to content

Tokens de Diseño ​

Kaleo usa un sistema de diseño propio basado en CSS custom properties (variables CSS). No usa Tailwind, Bootstrap ni ningún framework de CSS. Todos los componentes Ui* referencian exclusivamente estas variables.

El sistema está definido en frontend/src/assets/main.css y soporta modo oscuro automático via la clase .dark en <html>.

Activar / desactivar modo oscuro ​

ts
// frontend/src/composables/useTheme.ts
const { isDark, toggle } = useTheme()
toggle() // añade/quita .dark en <html>

El modo oscuro persiste en localStorage y también respeta prefers-color-scheme del sistema operativo.


Fondos ​

TokenValor claroUso
--bg-app#f9fafbFondo principal de la aplicación
--bg-card#ffffffFondo de tarjetas y modales
--bg-sidebar#ffffffFondo del sidebar
--bg-navbar#ffffffFondo de la barra de navegación superior
--bg-hoverrgba(0,0,0,0.04)Estado hover en listas e ítems
--bg-input#ffffffFondo de inputs y selects
--bg-elevated#ffffffElementos flotantes (dropdowns, tooltips)

Bordes ​

TokenValorUso
--border#e5e7ebBorde estándar en cards, inputs, tablas
--border-light#f3f4f6Borde sutil, separadores secundarios

Tipografía / Texto ​

TokenUso
--text-mainTexto principal, contenido primario
--text-mutedTexto secundario, etiquetas, metadatos
--text-lightTexto terciario, placeholders activos
--text-placeholderPlaceholders de inputs

Color primario (verde Kaleo) ​

TokenValor
--primary#1c9c5a
--primary-hover#158a4c
--primary-foreground#ffffff
--primary-active#0d7a3e
--focus-ringrgba(28, 156, 90, 0.3)

Colores de estado ​

Cada estado tiene 4 tokens: base, fondo (-bg), borde (-border) y texto (-text).

EstadoBaseUso
--color-success#16a34aOperaciones exitosas, estado activo
--color-warning#d97706Advertencias, estados temporales
--color-danger#dc2626Errores, acciones destructivas
--color-info#2563ebInformación neutral
css
/* Ejemplo de uso en componente */
.alert-error {
  background: var(--color-danger-bg);
  border-color: var(--color-danger-border);
  color: var(--color-danger-text);
}

Colores de acento ​

TokenUso típico
--accent-purple / --accent-purple-bgRoles, permisos, métricas
--accent-blue / --accent-blue-bgMiembros, información, acciones primarias
--accent-green / --accent-green-bgÉxito, estados activos, empresa
--accent-orange / --accent-orange-bgAdvertencias, estados pendientes
--accent-amber / --accent-amber-bgTags especiales (Owner, Principal)

Colores de módulo ​

Cada módulo tiene su color de identificación visual:

TokenMódulo
--module-authAutenticación
--module-usersUsuarios / Miembros
--module-rolesRoles y permisos
--module-companyEmpresa
--module-settingsConfiguración
--module-profilePerfil
--module-dashboardDashboard
--module-branchesSedes
--module-auditAuditoría
--module-billingFacturación
--module-notificationsNotificaciones
--module-integrationsIntegraciones

Sombras ​

TokenUso
--shadow-smCards en reposo
--shadowCards en hover, dropdowns
--shadow-mdModales, elementos flotantes
--shadow-lgDiálogos, popovers

Espaciado ​

El sistema usa una escala de 8 niveles donde --space-1 = 0.25rem (4px):

TokenValorpx
--space-000
--space-10.25rem4
--space-20.5rem8
--space-30.75rem12
--space-41rem16
--space-51.25rem20
--space-61.5rem24
--space-82rem32
--space-102.5rem40
--space-123rem48
--space-164rem64

Radios de borde ​

TokenValorUso típico
--radius-sm0.375remBadges, inputs pequeños
--radius0.5remBotones, inputs, tags
--radius-lg0.75remCards, dropdowns
--radius-xl1remModales
--radius-full9999pxAvatares, indicadores circulares

Tipografía ​

Escala de tamaños ​

TokenValorUso
--text-xs0.75remMetadatos, badges, timestamps
--text-sm0.875remTexto de interfaz secundario
--text-base0.9375remTexto base de interfaz
--text-md1remTexto de lectura
--text-lg1.125remTítulos de cards
--text-xl1.5remTítulos de sección

Familias tipográficas ​

TokenValor
--font-sansInter, ui-sans-serif, system-ui, sans-serif
--font-monoui-monospace, 'Cascadia Code', Menlo, Consolas, monospace

Tokens de layout ​

TokenValorDescripción
--sidebar-width220pxAncho del sidebar expandido
--sidebar-collapsed52pxAncho del sidebar colapsado
--topbar-height48pxAltura de la barra de navegación superior

Tokens de diff (auditoría) ​

Usados en AuditLogEntry.vue para mostrar cambios antes/después:

TokenUso
--diff-add-bgFondo de líneas agregadas
--diff-add-textTexto de líneas agregadas
--diff-remove-bgFondo de líneas eliminadas
--diff-remove-textTexto de líneas eliminadas

Cómo usar tokens en componentes ​

vue
<style scoped>
.my-component {
  background: var(--bg-card);
  border: 1px solid var(--border);
  border-radius: var(--radius-lg);
  padding: var(--space-5) var(--space-6);
  color: var(--text-main);
  font-size: var(--text-sm);
  box-shadow: var(--shadow-sm);
}

.my-component:hover {
  border-color: var(--text-light);
  box-shadow: var(--shadow);
}
</style>

TIP

Nunca uses valores hardcodeados como #ffffff, #1f2937, 16px, etc. en los estilos de los componentes. Siempre referencia los tokens. Así el modo oscuro funciona automáticamente.

Documentación de Kaleo — plataforma SaaS multi-tenant