Saltar al contenido
npm ↗ GitHub ↗

Documentación

03/Empezar

Personalización

Todos los colores pasan por variables CSS. Cambia una y se recolorea toda la librería, sin tocar los componentes.

Personalizador en vivo

Elige un color y mira cómo cambia esta página. El CSS de abajo está listo para pegar en tu proyecto. Los colores se ajustan solos para mantener contraste AA en ambos modos.

Acepta cualquier color en hexadecimal.

Modo
Activo Pro

Vista previa

Los componentes de toda la página usan el nuevo color. Un enlace

Contraste (mín. 4.5)OscuroClaro
Texto sobre fondo
Texto atenuado
Acento sobre fondo
Botón primario
tu-tema.css

Tres niveles

1. Una variable. Cambia --cb-accent y se recalculan la escala 50–950, el relleno de botones, los fondos suaves y el foco.

CSS
:root {
  --cb-accent: #e11d48;
}

2. Un tema predefinido. Seis temas, cada uno con su versión clara y oscura.

HTML
<html data-cb-accent="esmeralda">

3. Un tema propio. Define los valores de cada modo con los prefijos --cb-dark-* y --cb-light-*. Mira el ejemplo completo en Crear un tema propio.

Dónde va este CSS

Es CSS normal, así que funciona igual en Laravel, Vite, TypeScript o un HTML sin build. Pégalo en tu propia hoja de estilos, después de importar Cobalto. En Laravel es resources/css/app.css:

resources/css/app.css
@import 'tailwindcss';
@import 'cobalto/tailwind';

:root {
  --cb-dark-accent: #808080;
  --cb-light-accent: #000000;
}

Sin build, ponlo en un archivo o en un <style> que cargue después del CSS de Cobalto:

HTML
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/cobalto@0.1.0/dist/cobalto.min.css">
<link rel="stylesheet" href="/css/mi-tema.css">

Un bloque en :root gana siempre, incluso sobre data-cb-accent: mientras esté, los temas predefinidos no cambian el color. Si quieres tu tema y además poder cambiar entre temas, dale un nombre:

resources/css/app.css
[data-cb-accent="marca"] {
  --cb-dark-accent: #808080;
  --cb-light-accent: #000000;
}

Y actívalo en el HTML, o desde JS cuando el usuario lo elija. Queda guardado igual que los temas predefinidos:

HTML
<html data-cb-accent="marca">
JS
cobalto.theme.setAccent('marca');

Temas predefinidos

Haz clic para aplicarlo a esta página. La elección se guarda en localStorage. Los puntos de color usan data-cb-accent anidado: un tema también se puede aplicar solo a una parte de la página.

HTML
<html data-cb-accent="violeta">

<section data-cb-accent="ambar">...</section>
Esmeralda

Sección con data-cb-accent="esmeralda".

Ámbar

Sección con data-cb-accent="ambar".

Rubí

Sección con data-cb-accent="rubi".

Violeta

Sección con data-cb-accent="violeta".

Claro y oscuro

Sin atributo, Cobalto sigue prefers-color-scheme (oscuro si el sistema no indica nada). data-cb-theme lo fija, en html o en cualquier sección.

HTML
<html data-cb-theme="light">

<section data-cb-theme="dark">...</section>

Las variantes dark: y light: de Tailwind siguen las mismas reglas:

HTML
<div class="bg-cb-bg-2 dark:bg-cb-bg-3 light:shadow-cb-sm">...</div>

Desde JS:

JS
cobalto.theme.set('light'); // 'dark', 'light', 'system'
cobalto.theme.toggle();
cobalto.theme.setAccent('rubi');

document.addEventListener('cb:theme', (event) => console.log(event.detail.resolved));

Escala de acento

Generada con color-mix(in oklab) a partir de --cb-accent. Disponible como variables (--cb-accent-500) y utilidades (bg-cb-accent-200).

50
100
200
300
400
500
600
700
800
900
950

Tokens de color

Cada token existe como variable --cb-* y como utilidad de Tailwind: bg-cb-bg-2, text-cb-muted, border-cb-line, bg-cb-accent/20...

--cb-bg
Fondo de la página
--cb-bg-2
Superficie elevada (cards en hover, paneles)
--cb-bg-3
Superficie más elevada (hover de menús, kbd)
--cb-line
Bordes y divisiones
--cb-line-2
Bordes de controles
--cb-text
Texto principal
--cb-muted
Texto secundario
--cb-dim
Texto atenuado (metadatos)
--cb-accent
Color de marca
--cb-accent-ink
Texto sobre relleno de acento
--cb-accent-bg
Relleno de acento (botón primario)
--cb-accent-soft
Fondo suave de acento
--cb-success
Éxito
--cb-warning
Aviso
--cb-danger
Error
--cb-info
Información

Crear un tema propio

Copia este bloque, cambia los valores y actívalo con data-cb-accent="marca". Si omites un token, se usa el de Cobalto. Revisa que el texto tenga al menos 4.5:1 de contraste con el fondo.

tema-marca.css
[data-cb-accent="marca"] {
  --cb-dark-bg: #0c0a09;
  --cb-dark-bg-2: #141210;
  --cb-dark-bg-3: #1c1917;
  --cb-dark-line: #292524;
  --cb-dark-line-2: #3a3431;
  --cb-dark-text: #f5f5f4;
  --cb-dark-muted: #a8a29e;
  --cb-dark-dim: #8a837e;
  --cb-dark-accent: #fb923c;
  --cb-dark-accent-ink: #0c0a09;

  --cb-light-bg: #fafaf9;
  --cb-light-bg-2: #f5f5f4;
  --cb-light-bg-3: #e7e5e4;
  --cb-light-line: #d6d3d1;
  --cb-light-line-2: #c4bfbb;
  --cb-light-text: #1c1917;
  --cb-light-muted: #57534e;
  --cb-light-dim: #6b645f;
  --cb-light-accent: #c2410c;
  --cb-light-accent-ink: #ffffff;
}

Los colores de estado también se pueden cambiar por modo: --cb-dark-success, --cb-light-danger, etc.

Otros tokens

Definidos en @theme, así que también generan utilidades (font-cb-mono, rounded-cb-lg, py-cb-section, text-cb-4xl...).

GrupoTokens
Fuentes--font-cb-mono, --font-cb-sans
Tipografía--text-cb-xs (11px) … --text-cb-6xl (clamp(64px, 17vw, 230px)), --text-cb-lead
Tracking--tracking-cb-tight|tighter|display|huge|wide|wider
Radios--radius-cb-sm (5px), --radius-cb (8px), --radius-cb-lg (10px), --radius-cb-full
Espaciado--spacing-cb-section (110px), --spacing-cb-block (56px), --spacing-cb-gutter (24px), --spacing-cb-nav (64px)
Contenedor--cb-max (1180px) → max-w-cb
Breakpoints--breakpoint-cb-sm (600px), --breakpoint-cb-md (960px) → cb-sm:, max-cb-md:
Sombras--shadow-cb-sm|md|lg (--cb-scrim)
Movimiento--cb-duration-fast|pop|duration|slow|reveal, --ease-cb, --ease-cb-out
Capas--cb-z-dropdown|mobile|sticky|drawer|overlay|toast|tooltip