No se pudo guardar el proyecto.
@archeblack/ui
Fundamentos
Las decisiones que comparten todos los productos Arche: el vacío y la luz, la tipografía, el espaciado, la forma, el brillo y el movimiento. Cada valor de esta página se lee de los tokens generados; si cambia un token, cambia la página.
- Pares de contraste
- 1040
- Fallas
- 0
- Productos
- 5
- Formato
- DTCG 2025.10
Color
Dos primitivos y nada más: el vacío y la luz. Cada capa, borde y nivel de texto es la luz mezclada con el vacío en una proporción fija. Los estados son los únicos colores con tono propio.
Primitivos
--arche-color-void Primitivo: el fondo más oscuro.--arche-color-light Primitivo: la luz. Es la marca y el acento de Arche.Capas
El fondo es el vacío. Cada capa que sube suma un poco de luz, mezclada en OKLab. La capa flotante suma además borde y brillo.
--arche-color-bg Fondo de la página.
--arche-color-surface Capa base: tarjetas, paneles, campos.
--arche-color-surface-raised Capa elevada: controles secundarios, bloques destacados.
Bordes
-
--arche-color-border-subtleSeparadores y bordes de tarjetas. -
--arche-color-borderBorde de controles. -
--arche-color-border-strongBorde en hover y de casillas. -
--arche-color-border-controlLímite de todo control: la línea de los campos y el borde de casillas, radios y el riel del switch. Llega a 3:1 contra el fondo y las tres capas. -
--arche-color-border-control-hoverLímite de un control en hover.
Velos
-
--arche-color-hoverVelo de hover; se compone sobre la capa de abajo. -
--arche-color-pressVelo de press; se compone sobre la capa de abajo. -
--arche-color-scrimVelo detrás de un diálogo o una hoja modal: el vacío al 55 % (el del demo).
Niveles de texto
El texto baja de intensidad por nivel, mezclando la luz con el vacío en sRGB. Todo nivel cumple AA contra el fondo, las tres capas y los velos de hover y press. El deshabilitado está exento.
--arche-color-text-strongProyecto sincronizado hace dos minutos--arche-color-textProyecto sincronizado hace dos minutos--arche-color-text-mutedProyecto sincronizado hace dos minutos--arche-color-text-subtleProyecto sincronizado hace dos minutos--arche-color-text-disabledProyecto sincronizado hace dos minutos
Estados
Definidos en OKLCH con luminosidad parecida, para que ninguno pese más que otro. Siempre van con ícono o texto: el color solo nunca alcanza. El texto sobre un estado sólido es el vacío, así que su contraste es el mismo que el del estado sobre el fondo. Cada estado se mide también contra el fondo más exigente, press sobre surface-overlay, y contra su fondo suave.
Quedan tres días de prueba.
Cambios guardados.
Hay una versión nueva disponible.
Acento y roles
Cada producto aporta un acento y el build lo normaliza para que siempre se lea sobre el vacío. Los componentes nunca leen el acento: usan roles. El color de marca (el favicon y la versión de color del sigilo), los links, la selección, el foco y las citas siguen al acento; la marca de la cabecera y la acción principal siguen blancas en todos los productos.
Normalización
- OKLCH
- L 0,7219 C 0,1378 h 49,88°
- Resultado
- Se ajustaron la luminosidad o el croma.
Reglas: la luminosidad queda entre 0,72 y 0,84, y el croma no pasa de 0,2. El build avisa si el tono queda a menos de 28° de un estado.
Choque con danger. El tono está a 25,88° de danger (mínimo 28°). Un link o una selección podrían leerse como un estado.
Familia del acento
-
--arche-color-accent -
--arche-color-accent-hover -
--arche-color-accent-soft -
--arche-color-accent-border -
--arche-color-accent-tint
Roles
- Consola
--arche-color-brand→ accentEl color de marca: el sigilo en su versión de color, en el favicon y los íconos de app. En la cabecera la marca va en blanco.
-
--arche-color-link→ accentLinks dentro del texto y botones de tipo link.
--arche-color-selected→ accentCasillas, pestañas, switches y paginación marcados. Su fondo suave, selected-soft, es el tinte del acento: la fila elegida de una tabla.
--arche-color-focus→ accentAnillo de foco de todos los controles.
--arche-color-quote→ accentLa regla de las citas en la prosa (Prose). Es decorativa, pero el build la mide como el foco: 3:1 contra el fondo y las tres capas.
--arche-color-primary→ lightAcción principal. Blanca siempre, también en los productos.
Pares no textuales · mínimo 3:1
El foco y la selección no son texto, pero tienen que distinguirse de lo que los rodea.
La regla de las citas es decorativa y se mide igual, para que un acento nuevo no la
apague sin aviso. El chequeo falla si alguno baja de 3:1 contra el fondo o una capa. Lo
mismo vale para el límite de los controles (border-control), que no depende del producto y está con los bordes.
| Rol | bg | surface | surface-raised | surface-overlay |
|---|---|---|---|---|
| focus | 7,77:1 | 7,44:1 | 7,08:1 | 6,68:1 |
| selected | 7,77:1 | 7,44:1 | 7,08:1 | 6,68:1 |
| quote | 7,77:1 | 7,44:1 | 7,08:1 | 6,68:1 |
Tipografía
Tres familias con trabajos distintos. La interfaz usa Archivo a 15 px; los títulos, Archivo condensada en mayúsculas; la lectura larga, Piazzolla; los datos y las etiquetas, IBM Plex Mono.
Familias
-
Archivo
Interfaz y títulos. Eje de ancho de 62 a 125 y pesos de 400 a 900.
Crear proyecto, invitar al equipo y revisar la facturación del mes.
- 400
- 500
- 600
- 700
- 800
- Proyectos
- Proyectos
--arche-font-family-sans -
Piazzolla
Lectura larga: artículos, documentación y textos con voz propia.
Un sistema oscuro no es un sistema apagado: la luz se reserva para lo que importa y todo lo demás descansa en el vacío.
La itálica acompaña citas, notas y énfasis dentro de un párrafo.
--arche-font-family-serif -
IBM Plex Mono
Datos, cifras, código y etiquetas en mayúsculas.
#07080d · 4,54:1 · 160 ms · 0123456789
--arche-font-family-mono
Escala
Nueve tamaños. El más chico, 12 px, es solo para etiquetas mono en mayúsculas. El tamaño menu, 40 px, es solo para los links del menú a pantalla completa (typography.menu). 4xl es fluido: 44 px con 320 px de ancho o menos y 88 px desde 1280 px. El token guarda el máximo y el CSS es un clamp().
- Etiqueta de sección
- Proyectos activos
- Proyectos activos
- Proyectos activos
- Proyectos activos
- Proyectos activos
- Publicaciones
- Proyectos activos
-
Titular
Titular
Titular
clamp(2.75rem, 1.8333rem + 4.5833vw, 5.5rem)En el medio, 1,8333 rem + 4,5833 vw: crece 4,58 px por cada 100 px de ancho. El intercepto en rem hace que el zoom del navegador la siga agrandando. Con 200 % de zoom, a 1280 px, crece 1,33 veces: el zoom achica la pantalla y la medida baja hacia su mínimo. Llega al doble desde 400 % de zoom. Cumple WCAG 1.4.4 porque los navegadores llegan a 500 % y el máximo es como mucho 2,5 veces el mínimo.
Estilos compuestos
Cada estilo da cuatro variables: --arche-typography-<n> para la propiedad font, y sus -letter-spacing, -font-width y -text-transform.
-
El alma pide locura
-
Superficies y texto
-
La interfaz usa 15 px: botones, campos, tablas y menús.
-
La lectura larga pide una letra con ritmo propio. Piazzolla aguanta párrafos enteros sin cansar la vista sobre el vacío.
-
Hay caminos fuera del jardín. Sobre la sed que el saber no calma, y la disposición que el alma estaba pidiendo.
-
Acento del producto
-
npm run tokens:check
Espaciado
Escala de espaciado con base de 4 px (0,25 rem). El nombre es la cantidad de pasos.
- 0
- 1
- 2
- 3
- 4
- 5
- 6
- 8
- 10
- 12
- 16
- 20
- 24
Maquetación
Medidas de texto, anchos de página y de columna y margen lateral. Las medidas (measure) van en el elemento de texto; los anchos (width), en contenedores y grillas. Las medidas acotan el ancho del texto; el margen lateral es fluido, como el titular.
-
- 16 px · mínimo
- … · ahora
- 40 px · máximo
Una bajada presenta el texto sin repetirlo. La medida angosta la deja en dos o tres renglones, a la vista junto al titular.
--arche-layout-measure-narrowEsta es la medida de lectura: Piazzolla a 17 px en 55ch, unos 578 px, que dan alrededor de 75 caracteres por línea (el ch es el ancho del «0», más ancho que el promedio de las letras). Un renglón más largo obliga a buscar el comienzo del siguiente; uno más corto corta la frase antes de tiempo. Con este ancho, el ojo vuelve al margen sin perderse y el párrafo respira sobre el vacío.
--arche-layout-measure-readingRadios
Esquinas casi rectas. Los controles usan 2 px y las tarjetas y diálogos el doble, 4 px. Los radios grandes no son parte del sistema.
--arche-radius-noneTablas, separadores y bordes que tocan otro borde.
--arche-radius-mdControles: botones, campos, casillas, badges.
--arche-radius-lgTarjetas, diálogos, menús y avisos.
--arche-radius-fullPíldoras, avatares, puntos y switches.
Brillo y elevación
En el vacío la sombra sola no alcanza: lo que sube se aclara, gana borde y emite un brillo
tenue. La intensidad va de 0 a 3 y Arche usa 1. Cambiarla en un
contenedor con data-glow recalcula todos los brillos dentro de él.
--arche-glow-focusAnillo de foco completo para box-shadow: separación del fondo, aro y halo.
--arche-glow-focus-haloSolo el halo del foco. base.css lo usa junto al outline, que dibuja el aro.
--arche-glow-focus-fieldFoco de un campo de solo línea: una línea de 1 px del foco bajo el borde inferior (que también toma el color del foco, así la línea queda de 2 px) y un halo que cae hacia abajo.
--arche-glow-danger-fieldFoco de un campo inválido: el borde inferior toma el color del foco y esta sombra suma debajo la línea de 1 px y el halo de glow.focus-field, en danger.
--arche-glow-hoverHalo de hover de controles secundarios.
--arche-glow-primaryHalo de la acción principal en hover.
--arche-glow-selectedHalo de una selección.
--arche-glow-textBrillo de titulares (text-shadow).
Capa flotante
Diálogos, menús y avisos: surface-overlay, borde border y un halo de luz que crece con la intensidad.
--arche-elevation-overlay Capa flotante: borde, sombra y un brillo tenue. En el vacío la sombra sola no alcanza.
El anillo de foco también está vivo: recorre la página con Tab. La luz de fondo usa la intensidad de la raíz, así que no cambia con este control.
Movimiento
Transiciones cortas con una sola curva, y una luz de fondo que respira en un ciclo de 12 segundos. Con movimiento reducido las duraciones pasan a 0,01 ms (instantáneas, pero los eventos de fin de transición se siguen disparando) y la luz se queda quieta.
Duraciones
--arche-duration-fastHover, cambios de color y de borde.
--arche-duration-baseFoco, casillas, switches y pestañas.
--arche-duration-slowPaneles, menús y avisos que entran o salen.
--arche-duration-breatheCiclo de la luz de fondo, de ida y vuelta. Corre siempre, salvo con movimiento reducido.
Curvas
-
--arche-easing-standardEntra rápido y se asienta despacio: la curva de todas las transiciones.
-
--arche-easing-breatheIda y vuelta suave de la luz de fondo.
Capas de apilamiento
Una escala fija de z-index con saltos de 100 entre capas flotantes, para que nada compita por el número más alto.
| Capa | Variable | Valor | Uso |
|---|---|---|---|
| base | --arche-z-index-base | 0 | Contenido normal del documento. |
| raised | --arche-z-index-raised | 10 | Lo que se superpone dentro del flujo: una fila arrastrada, una cabecera de tabla fija. |
| dropdown | --arche-z-index-dropdown | 1000 | Listas desplegables dentro del flujo, sin portal. |
| sticky | --arche-z-index-sticky | 1100 | Barras que quedan fijas al hacer scroll. |
| overlay | --arche-z-index-overlay | 1200 | Velo detrás de un diálogo o de un panel lateral. |
| modal | --arche-z-index-modal | 1300 | Diálogos y paneles laterales. |
| popover | --arche-z-index-popover | 1400 | Popovers, menús, listas de combobox y calendarios, también cuando se abren desde un diálogo o una cabecera fija. |
| toast | --arche-z-index-toast | 1500 | Avisos temporales. |
| tooltip | --arche-z-index-tooltip | 1600 | Tooltips: siempre por encima de todo. |