Hudocs organiza sus estilos utilizando capas en cascada CSS (@layer) y tokens de diseño semánticos definidos mediante propiedades personalizadas de CSS en _tokens.scss. Puedes personalizar la apariencia visual de tu documentación sin modificar los archivos originales del tema.

Sobrescribir estilos #

Para personalizar los estilos, crea un archivo assets/scss/_custom.scss en tu proyecto de Hugo:

mi-proyecto/
├── assets/
│   └── scss/
│       └── _custom.scss
└── hugo.toml

Debido a que Hudocs importa _custom.scss fuera de las capas de cascada, las reglas sin capa en tu archivo personalizado tienen precedencia natural sobre los estilos del tema sin requerir alta especificidad o !important.

Variables SCSS #

Hudocs define variables de color base utilizando la bandera !default de Sass. Puedes sobrescribir estas variables antes de que se compilen las reglas del tema:

VariablePor defectoDescripción
$primary#0f766eColor primario de marca predeterminado.
$secondary#4338caColor secundario de acento.
// assets/scss/_custom.scss
$primary: #2563eb;
$secondary: #7c3aed;

Tokens de Diseño CSS #

Todas las propiedades visuales en Hudocs están vinculadas a propiedades personalizadas de CSS declaradas en :root. Puedes personalizarlas en tu _custom.scss apuntando a :root (para modo claro o valores universales) o a :root.dark (para modo oscuro).

Dimensiones y Diseño #

Estas variables controlan la cuadrícula de la página, los espaciados y las dimensiones de componentes:

TokenPor defectoDescripción
--container-width1500pxAncho máximo del contenedor principal.
--container-paddingclamp(1rem, 2.5vw, 1.5rem)Relleno horizontal del contenedor.
--space-blockclamp(1.5rem, 2vw, 1.75rem)Separación vertical entre bloques.
--header-height70pxAltura de la barra de navegación superior.
--aside-width246pxAncho de la barra lateral de navegación.
--timingcubic-bezier(0.7, 0.006, 0.2, 1)Curva de aceleración para transiciones.

Tipografía #

TokenPor defectoDescripción
--font-primary'Inter', sans-serifFamilia tipográfica para interfaz y texto.
--font-monospaceSFMono-Regular, Menlo...Pila tipográfica monoespaciada de código.

Colores de Marca #

Los tokens de marca definen los roles de acento primario y secundario junto con sus matices para contenedores:

TokenModo ClaroModo OscuroDescripción
--primary#0f766e#2dd4bfColor de marca primario.
--on-primary#ffffff#09090bColor del texto sobre fondo primario.
--primary-container12% primary12% primaryFondo sutil para elementos activos e insignias.
--on-primary-containervar(--primary)var(--primary)Color del texto sobre fondos de contenedor primario.
--secondary#4338ca#818cf8Color secundario de acento.
--on-secondary#ffffff#09090bColor del texto sobre fondo secundario.
--secondary-container12% secondary12% secondaryFondo sutil para contenedores secundarios.
--on-secondary-containervar(--secondary)var(--secondary)Texto sobre contenedor secundario.

Superficies y Fondos #

Las superficies definen los fondos de la página, contenedores de tarjetas, menús y elementos elevados:

TokenModo ClaroModo OscuroDescripción
--surface#ffffff#18181bFondo principal de la página.
--surface-container#f4f4f5#222225Fondo de tarjetas, campos de entrada y barra lateral.
--surface-container-hover#e4e4e7#2e2e33Estado hover para contenedores interactivos.
--surface-inverse#18181b#f4f4f5Fondo de alto contraste para tooltips.
--on-surface-inverse#ffffff#18181bColor de texto sobre superficies inversas.
--surface-mark30% #fbbf2425% #fbbf24Fondo de resaltado para coincidencias de búsqueda.

Textos y Bordes #

TokenModo ClaroModo OscuroDescripción
--on-surface#27272a#ffffffColor principal del texto del cuerpo.
--on-surface-variant#52525b#d4d4d8Etiquetas secundarias, subtítulos e iconos.
--on-surface-muted#71717a#a1a1aaTexto atenuado o deshabilitado.
--outline#d4d4d8#27272aDivisores, bordes de tablas y contornos de inputs.
--scrimrgb(0 0 0 / 50%)rgb(0 0 0 / 50%)Fondo oscuro superpuesto para ventanas modales.

Notificaciones y Estados #

Estos tokens dan estilo a alertas (shortcode hint), estados y validaciones:

TokenModo ClaroModo OscuroUso
--info#0369a1#38bdf8Notas informativas.
--success#047857#34d399Estados exitosos e insignias.
--warning#b45309#fbbf24Alertas y avisos de precaución.
--error#be123c#fb7185Errores críticos y peligros.

Insignias de Tipos de Datos #

Utilizados por el shortcode type para clasificar tipos de datos de programación:

TokenModo ClaroModo OscuroUso
--type-textualvar(--info)var(--info)Cadenas, caracteres y bytes.
--type-numericvar(--warning)var(--warning)Números, enteros y decimales.
--type-logicalvar(--primary)var(--primary)Valores booleanos.
--type-structuralvar(--secondary)var(--secondary)Objetos, arreglos y mapas.
--type-custom#7e22ce#c084fcTipos y clases personalizados.

Bloques de Código y Sintaxis #

Controlan el fondo, tipografía y selección dentro de bloques de código:

TokenModo ClaroModo OscuroDescripción
--syntax-bg#18181b#09090bFondo principal del bloque de código.
--syntax-bg-deep#09090b#000000Fondo más profundo para cabeceras.
--syntax-fgvar(--syntax-uno-2)var(--syntax-uno-2)Color de texto por defecto.
--syntax-commentvar(--syntax-uno-5)var(--syntax-uno-5)Líneas de comentarios.
--syntax-keywordvar(--syntax-duo-1)var(--syntax-duo-1)Palabras clave del lenguaje.
--syntax-stringvar(--syntax-duo-1)var(--syntax-duo-1)Literales de texto entre comillas.
--syntax-selectioncolor-mix(...)color-mix(...)Selección de texto dentro del bloque.

Ejemplo de Personalización #

A continuación se muestra un ejemplo completo de assets/scss/_custom.scss que establece una tipografía personalizada, adapta la paleta principal y ajusta las superficies de fondo:

// 1. Sobrescribir variables SCSS
$primary: #0284c7;

// 2. Sobrescribir tokens CSS
:root {
  --font-primary: 'Poppins', sans-serif;
  --header-height: 64px;

  // Superficies personalizadas en modo claro
  --surface: #ffffff;
  --surface-container: #f8fafc;
}

:root.dark {
  // Superficies personalizadas en modo oscuro
  --surface: #0f172a;
  --surface-container: #1e293b;
  --primary: #38bdf8;
}