LUZLUZ Sistema de diseño para el humano, listo para la IA
Tokens, CSS y un poco de JavaScript, sobre lo que el navegador ya hace: empieza un proyecto con LUZ, el sistema de diseño Light, Usable and Zero-dependency, o mígralo página a página. Cada componente funciona antes de que cargue JavaScript y cada cambio empieza con una prueba que falla.
Con JavaScript activado, aquí se dibuja la luz de tu hora.
Base
Tu marca, en tokens
Colores, escalas y los tres modos como propiedades personalizadas de CSS. Sin componentes: tu marcado, tus clases. En un proyecto que ya existe, empieza aquí: no tocan nada.
Colores. 53 primitivos y 63 tokens semánticos, en claro, oscuro y alto contraste.
Escalas. Espacio, texto, radios y sombras, desde tres mandos.
Los componentes y la maquetación encima de los tokens, en una capa de cascada que tu CSS siempre gana. Para empezar un proyecto, o para migrar uno por partes con luz.conditional.css.
Componentes. 29, de botones y formularios a pestañas y un reproductor.
Maquetación. 10 objetos para filas, rejillas, pilas y contenedores.
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@luz-ds/tokens@0.3.0/dist/luz-tokens.min.css">
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@luz-ds/core@0.3.0/dist/luz.min.css">
<!-- One link per catalog component the page uses: here the search -->
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@luz-ds/catalog@0.3.0/dist/components/search.min.css">
<script type="module" src="https://cdn.jsdelivr.net/npm/@luz-ds/core@0.3.0/dist/luz.min.js"></script>
<script type="module" src="https://cdn.jsdelivr.net/npm/@luz-ds/catalog@0.3.0/dist/catalog.min.js"></script>
Un sistema de diseño para la web que parte del CSS y no necesita compilación. Tu CSS siempre gana, JavaScript solo mejora la experiencia y cada página funciona antes de que cargue.
Light
Poco código y ningún paso de compilación.
tokens3,0 KB3,0 KB
core23,5 KB23,5 KB
catalog32,1 KB32,1 KB
Los tres paquetes base: 58,6 KB. El peso gzip de lo que publica cada paquete, medido en dist al construir esta página.
CSS sin más y módulos ES pequeños, desde un CDN o desde npm. Sin preprocesador, sin compilador y sin paso de build: lo que lees en los archivos es justo lo que ejecuta el navegador. Tokens y core se mantienen tan pequeños como se puede, y su techo de peso nunca sube. Catalog es ligero porque viene en piezas: cada componente es su propio archivo y una página carga solo los que usa.
Usable
La accesibilidad es el punto de partida, no un añadido.
Contraste de color100 %100 %
Probado en RTL97 %97 %
Sin JavaScript72 %72 %
Foco propio41 %41 %
Colores forzados41 %41 %
Sin problemas conocidos45 %45 %
Tests sin JavaScript29 %29 %
29 componentes, 362 archivos de test. Contado al construir. Lo que no llega al 100 %, en la declaración.
Apunta a WCAG 2.2 AA, el nivel de la versión 4.1.1 de EN 301 549, la norma europea de accesibilidad digital. Parte de lo que el navegador ya hace bien, añade foco visible, contraste y movimiento reducido, y lo comprueba con axe en cada cambio. Todavía no cumple todos los criterios: la declaración enumera lo que se comprueba, lo que no se ha probado y lo que falla.
Zero-dependency
Tu código, no un árbol del código de otros.
Frameworks de CSS00
Preprocesadores de CSS00
Frameworks de JavaScript00
Resaltadores de código00
Librerías de iconos00
Librerías de utilidades00
Búsqueda y animación00
Dependencias en tiempo de ejecución: 0. Contado en el package.json de cada paquete al construir esta página.
Los paquetes de LUZ se publican sin dependencias: solo CSS y módulos ES sobre lo que el navegador ya ofrece. Nada que instalar para probarlo, ningún framework que seguir y nada que se rompa cuando otra librería publica una versión mayor.
Encaja bien
Sitios de contenido, documentación y servicios públicos que deben cumplir WCAG 2.1 o 2.2 AA: LUZ ayuda, y el resultado lo compruebas tú.
Páginas generadas en el servidor y sitios estáticos, con cualquier lenguaje de servidor.
Equipos que quieren entender su CSS y controlarlo.
No encaja
Necesitas componentes de React o Vue ya hechos.
Necesitas una tabla de datos avanzada, gráficos o un selector de rango de fechas: LUZ no los incluye.
Necesitas una API estable hoy: LUZ está en beta y los nombres aún pueden cambiar.
HTML semántico, con estilo
Tu HTML ya tiene estilo
Escribe el elemento que quieres decir y LUZ le da estilo, sin clase. Empieza un proyecto con LUZ, o mígralo página a página: tu CSS siempre gana.
Sin clase. 68 etiquetas salen con estilo tal cual, formularios y tablas incluidos.
Una clase. El papel y el componente completo: un enlace con aspecto de botón, un botón de peligro, una tarjeta.
En tu proyecto.luz.conditional.css da estilo solo a lo que está dentro de [data-luz]; el resto de tu página queda como está.
21 de 29 componentes son solo CSS; el resto mejora con un script y funciona sin él.
Tres modos para todos. El día entero, si lo quieres.
Cada color semántico está definido para claro, oscuro y alto contraste, y un atributo, data-theme, los cambia: en toda la página o en una caja, como en estas. Eso viene con core. El resto del día lo decides tú.
Core · incluido
Claro
Claro, para leer de día
Papel cálido y tinta marrón: el tono de Vejer. Es el modo por defecto con un sistema claro: sin data-theme, la página sigue al sistema.
Oscuro
Oscuro, para la noche
Fondos profundos y un texto claro que no deslumbra. Los mismos tokens con otros valores: ningún componente cambia una línea.
Alto contraste
Alto contraste, para ver cada borde
Negro sobre blanco y bordes marcados, para quien necesita más. No es el modo oscuro: es un modo propio, medido como los otros dos.
Modo de color por hora del día · Catalog, opcional
Seis momentos, no un interruptor
Declara en HTML los momentos de tu día, del amanecer a la noche, y deja que quien lee elija uno o recorra el día. Auto sigue siendo el del sistema, y el alto contraste nunca se repinta.
Medido, no supuesto. Cada momento se mide en contraste sobre su modo base, igual que los tres modos.
Opcional, cero bytes. Vive en catalog: una hoja de estilos y un chunk perezoso. Si no lo enlazas, tu página no carga nada de él.
Respuestas cortas a lo que se pregunta sobre LUZ: qué es y cómo se usa.
Sobre LUZ
¿Qué es LUZ?
LUZ es un sistema de diseño para la web en tres partes: tokens, core y catálogo, con prompts para que una IA construya el sitio contigo. Deja trabajar al navegador, se comprueba en vez de prometer y una IA puede escribirlo sin inventarse nada.
¿Qué hace cada parte de LUZ?
Los tokens guardan el aspecto, core da estilo a tu HTML y te da componentes, y el catálogo añade lo que necesita un sitio entero. Los tokens son los colores, las escalas, la tipografía y los tres modos de color como propiedades personalizadas de CSS, y se usan solos. Core es el reset, el estilo de cada etiqueta HTML, los objetos de maquetación (o-container, o-stack, o-grid), los componentes (.luz-btn, .luz-card, .luz-tabs) y un poco de JavaScript opcional. El catálogo son piezas para el sitio entero, como el buscador y el banner de cookies.
¿Qué hace distinto a LUZ de los sistemas que más se usan?
LUZ parte del navegador y no de un framework: HTML nativo, sin compilación, en cualquier stack, y funciona sin JavaScript. La accesibilidad se comprueba, no se promete: tests con axe, cada contraste calculado en cada modo, colores forzados y movimiento reducido. Pide menos marcado, porque el HTML sale completo sin clases, y se personaliza sin pelearse, con capas, :where() y tokens, nunca !important. Está lista para la IA de forma comprobable: los prompts se generan desde los paquetes, así que nunca llevan una clase inventada.
¿Dónde se queda corto LUZ?
LUZ se queda corto en comunidad, en widgets complejos (selector de fecha, combobox, tabla de datos), en componentes para React o Vue y en madurez: sigue en 0.x.
Cómo se usa
¿Cuál es la mejor forma de usar LUZ?
La mejor forma son seis pasos, sin nada que compilar:
Carga luz-tokens.css, luz.css y luz.js por CDN o npm.
Escribe HTML semántico.
Pon una clase solo para lo que el HTML no puede decir, y maqueta con los objetos de core.
Pon tu marca con tokens: copia _template.css y cambia los valores.
Del catálogo, enlaza solo lo que uses.
JavaScript es opcional: todo funciona sin él.
La vía rápida: pega en una IA el prompt de tu tipo de sitio y revisa el resultado con luz-check.
¿Necesito JavaScript para usar LUZ?
No. La mayoría de los componentes de LUZ son solo CSS, y los que tienen script también funcionan sin él. La página de cada componente explica qué obtienes sin JavaScript.
¿Puedo cambiar después los estilos por defecto?
Sí, sin pelearte con ellos. Los tokens son la forma prevista de cambiar el aspecto entero, y tu CSS gana: LUZ va en capas de cascada, así que el CSS sin capa lo vence sin !important. Lo que no sobrescribes se queda: si a un h1 solo le cambias el color, mantiene el tamaño de LUZ.
¿Para qué vale LUZ?
LUZ vale para sitios escritos en HTML, nuevos o ya hechos: landing, blog, documentación, web de empresa. Encaja con cualquier generador o CMS que produzca HTML, Markdown incluido (Hugo, Astro, Eleventy), con proyectos sin paso de compilación y con sitios que deben ser accesibles y funcionar sin JavaScript. Un sitio que ya existe puede pasar a LUZ por partes.
¿Para qué no vale LUZ?
LUZ no vale para utilidades al estilo de Tailwind ni para apps de React o Vue que esperan los componentes de su framework: LUZ da HTML y clases. Tampoco da la estructura de página ya hecha (cabecera, hero, pie): la escribes tú o la IA.