@netzi/tokens 0.1.0-beta.8 → 0.1.0-beta.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +27 -0
- package/README.md +28 -2
- package/package.json +1 -1
- package/styles/tokens.css +25 -0
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,32 @@
|
|
|
1
1
|
# @netzi/tokens
|
|
2
2
|
|
|
3
|
+
## 0.1.0-beta.9
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- 9819de5: **El indicador de foco llega a 3:1 en todos los presets y temas** (#76). Se pintaba con
|
|
8
|
+
`--netzi-primary`, que en claro se quedaba en 2.7:1 con azul, 1.6 con verde, 2.2 con
|
|
9
|
+
naranja y 2.4 con cian, por debajo de WCAG 1.4.11; y varios controles solo tenían un
|
|
10
|
+
halo del tinte, de 1.1:1.
|
|
11
|
+
- Nuevo token `--netzi-focus-ring`, apoyado en `--netzi-primary-text` y declarado en la
|
|
12
|
+
raíz y en cada elemento con `data-theme` o `data-preset`.
|
|
13
|
+
- Lo usan los contornos y bordes de foco de todo el kit (chip, cron-picker, icon-picker,
|
|
14
|
+
el enlace «ir al contenido», timeline y los campos de formulario) y la imagen
|
|
15
|
+
seleccionada del editor.
|
|
16
|
+
- Checkbox, radio, toggle, rating y segmented pasan del halo o del borde a un contorno de
|
|
17
|
+
2px, que se distingue igual marcado que sin marcar; el pulgar de los sliders, a un
|
|
18
|
+
doble anillo; y el editor de texto enriquecido marca el foco en su recuadro.
|
|
19
|
+
|
|
20
|
+
- 749ad6b: **El hover del botón primario cumple 4.5:1** (#68). Pintaba `--netzi-primary-dark`
|
|
21
|
+
debajo de la tinta oscura `--netzi-on-primary`: 3.93:1 en azul y 4.0:1 en rojo, por
|
|
22
|
+
debajo de WCAG 2.1 AA para un texto de 15px. Nuevo token `--netzi-primary-hover`,
|
|
23
|
+
calibrado por preset y tema (el peor queda en 4.98:1, en rojo), que usan
|
|
24
|
+
`netzi-button` primario y el botón de reintentar de `netzi-connection-guard`.
|
|
25
|
+
`--netzi-primary-dark` sigue siendo el fondo de lo que lleva blanco encima.
|
|
26
|
+
- 03e4440: **La instalación ya no fija el canal `@beta`**: `pnpm add @netzi/ui @netzi/tokens`.
|
|
27
|
+
Mientras un paquete solo tenga versiones beta en npm, cada versión nueva se publica en
|
|
28
|
+
`latest`, que es lo que se instala por defecto. El dist-tag `beta` deja de mantenerse.
|
|
29
|
+
|
|
3
30
|
## 0.1.0-beta.8
|
|
4
31
|
|
|
5
32
|
### Patch Changes
|
package/README.md
CHANGED
|
@@ -11,10 +11,11 @@ se construyen `@netzi/ui` y cualquier app de Netzi Tech.
|
|
|
11
11
|
## Instalación
|
|
12
12
|
|
|
13
13
|
En el **npm público**, bajo el scope `@netzi` de Netzi Tech: sin registry especial ni
|
|
14
|
-
token. Mientras el kit esté en beta,
|
|
14
|
+
token. Mientras el kit esté en beta, cada versión nueva es una beta y es la que se
|
|
15
|
+
instala por defecto:
|
|
15
16
|
|
|
16
17
|
```bash
|
|
17
|
-
pnpm add @netzi/tokens
|
|
18
|
+
pnpm add @netzi/tokens
|
|
18
19
|
```
|
|
19
20
|
|
|
20
21
|
Licencia de uso libre con código privado: ver `LICENSE.md` dentro del paquete. Las
|
|
@@ -234,6 +235,31 @@ sobre fondo claro (`--netzi-blue` da 2.9:1; `--netzi-primary-dark`, 4.3:1). Si s
|
|
|
234
235
|
lee, va `--netzi-primary-text` o el `-text` del color, que están calibrados por
|
|
235
236
|
tema y por preset. Es lo que le pasó al botón `soft` (#56).
|
|
236
237
|
|
|
238
|
+
Y un relleno del primario tiene **dos fondos oscuros** según lo que lleve encima.
|
|
239
|
+
`--netzi-primary-hover` es el del estado hover de un botón relleno: su tinta es la
|
|
240
|
+
misma `--netzi-on-primary` del reposo, y cada preset lo calibra para que no baje de
|
|
241
|
+
4.5:1 (5.4:1 en azul). `--netzi-primary-dark` es el fondo de lo que lleva **blanco**
|
|
242
|
+
(`--netzi-on-primary-dark`): la pista de un interruptor encendido, la marca de un
|
|
243
|
+
checkbox. Si se cruzan, la tinta oscura sobre el azul oscuro se queda en 3.9:1 (#68).
|
|
244
|
+
|
|
245
|
+
### El foco va con `--netzi-focus-ring`, no con el primario
|
|
246
|
+
|
|
247
|
+
Un indicador de foco, contorno o borde, tiene que llegar a **3:1** sobre el fondo (WCAG
|
|
248
|
+
1.4.11). El primario no llega en claro con azul (2.7:1), verde (1.6), naranja (2.2) ni cian
|
|
249
|
+
(2.4). `--netzi-focus-ring` se apoya en `--netzi-primary-text`, que cada preset y cada tema
|
|
250
|
+
calibran a 4.5:1 sobre las superficies, también en alto contraste. Se declara en la raíz y
|
|
251
|
+
en cada elemento con `data-theme` o `data-preset`, así que una sección oscura dentro de una
|
|
252
|
+
página clara tiene su propio anillo.
|
|
253
|
+
|
|
254
|
+
Todo `:focus`, `:focus-visible` y `:focus-within` del kit lo usa como contorno o borde (los
|
|
255
|
+
halos del tinte no cuentan: dan 1.1:1). Dos guardianes de `tokens-contrast.spec.ts` impiden
|
|
256
|
+
volver al primario y quitar el contorno sin poner otro indicador (#76).
|
|
257
|
+
|
|
258
|
+
Sobre una capa de **cristal** el anillo se ve contra lo que haya detrás: sobre el fondo del
|
|
259
|
+
kit cumple, pero con una imagen muy oscura (en claro) o muy clara (en oscuro) debajo puede
|
|
260
|
+
bajar de 3:1. Si la app pone cristal sobre fondos así, conviene darle a esa capa un tinte
|
|
261
|
+
más opaco.
|
|
262
|
+
|
|
237
263
|
## Los tres niveles de texto
|
|
238
264
|
|
|
239
265
|
Tienen **papeles distintos**, no son tres grados de gris intercambiables. El ratio
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@netzi/tokens",
|
|
3
|
-
"version": "0.1.0-beta.
|
|
3
|
+
"version": "0.1.0-beta.9",
|
|
4
4
|
"description": "Design tokens de Netzi (CSS custom properties): marca, tema claro/oscuro, tipografía, radios, sombras. Agnóstico de framework.",
|
|
5
5
|
"license": "SEE LICENSE IN LICENSE.md",
|
|
6
6
|
"homepage": "https://ui.netzi.tech",
|
package/styles/tokens.css
CHANGED
|
@@ -68,6 +68,12 @@
|
|
|
68
68
|
/* --- Color PRIMARIO (themeable por preset; default = azul) --- */
|
|
69
69
|
--netzi-primary: var(--netzi-blue);
|
|
70
70
|
--netzi-primary-dark: var(--netzi-blue-dark);
|
|
71
|
+
/* El relleno del primario al pasar el puntero, con la MISMA tinta encima
|
|
72
|
+
(`--netzi-on-primary`). No es `--netzi-primary-dark`: ese es el fondo de lo que
|
|
73
|
+
lleva blanco (pulgar, marca del checkbox), y la tinta oscura sobre él se quedaba
|
|
74
|
+
en 3.93:1 en azul y 4.0:1 en rojo (#68). Cada preset declara el suyo: más oscuro
|
|
75
|
+
que su primario, pero sin bajar de 4.5:1 con su tinta. */
|
|
76
|
+
--netzi-primary-hover: #0a8fdd;
|
|
71
77
|
/* La TINTA sobre el relleno del primario. Cada preset usa la que cumple sobre
|
|
72
78
|
SU color, no una fija: el blanco sobre el azul da 2.68:1 y la tinta oscura
|
|
73
79
|
7.05:1. Verde, naranja y cyan ya venían así; el azul y el rojo se suman. */
|
|
@@ -305,6 +311,7 @@
|
|
|
305
311
|
[data-preset='green'] {
|
|
306
312
|
--netzi-primary: #0ae972;
|
|
307
313
|
--netzi-primary-dark: #07a352;
|
|
314
|
+
--netzi-primary-hover: #07a352;
|
|
308
315
|
--netzi-on-primary: #04121f;
|
|
309
316
|
--netzi-primary-text: #05793b;
|
|
310
317
|
}
|
|
@@ -313,28 +320,45 @@
|
|
|
313
320
|
[data-preset='purple'] {
|
|
314
321
|
--netzi-primary: #8c4cff;
|
|
315
322
|
--netzi-primary-dark: #6a2fd6;
|
|
323
|
+
--netzi-primary-hover: #6a2fd6;
|
|
316
324
|
--netzi-on-primary: #ffffff;
|
|
317
325
|
--netzi-primary-text: #7841db;
|
|
318
326
|
}
|
|
319
327
|
[data-preset='orange'] {
|
|
320
328
|
--netzi-primary: #f0a020;
|
|
321
329
|
--netzi-primary-dark: #c97e0a;
|
|
330
|
+
--netzi-primary-hover: #c97e0a;
|
|
322
331
|
--netzi-on-primary: #04121f;
|
|
323
332
|
--netzi-primary-text: #8e5e13;
|
|
324
333
|
}
|
|
325
334
|
[data-preset='red'] {
|
|
326
335
|
--netzi-primary: #ff5630;
|
|
327
336
|
--netzi-primary-dark: #d63916;
|
|
337
|
+
--netzi-primary-hover: #eb4a25;
|
|
328
338
|
--netzi-on-primary: #04121f;
|
|
329
339
|
--netzi-primary-text: #b53d22;
|
|
330
340
|
}
|
|
331
341
|
[data-preset='cyan'] {
|
|
332
342
|
--netzi-primary: #00b8d9;
|
|
333
343
|
--netzi-primary-dark: #0892ab;
|
|
344
|
+
--netzi-primary-hover: #0892ab;
|
|
334
345
|
--netzi-on-primary: #04121f;
|
|
335
346
|
--netzi-primary-text: #007287;
|
|
336
347
|
}
|
|
337
348
|
|
|
349
|
+
/* El indicador de FOCO: contorno o borde que marca el control enfocado. Tiene que
|
|
350
|
+
llegar a 3:1 sobre el fondo (WCAG 1.4.11) y el primario no llega en claro con azul,
|
|
351
|
+
verde, naranja ni cian (2.7, 1.6, 2.2 y 2.4:1; #76). Se apoya en el primario para
|
|
352
|
+
texto, que cada preset y cada tema ya calibran a 4.5:1 sobre las superficies. Se
|
|
353
|
+
declara también en cada elemento con tema o preset propios: una variable que usa
|
|
354
|
+
otra se resuelve donde se declara, y una sección oscura dentro de una página clara
|
|
355
|
+
heredaría el anillo claro. */
|
|
356
|
+
:root,
|
|
357
|
+
[data-theme],
|
|
358
|
+
[data-preset] {
|
|
359
|
+
--netzi-focus-ring: var(--netzi-primary-text);
|
|
360
|
+
}
|
|
361
|
+
|
|
338
362
|
/* El primario para TEXTO en oscuro: los saturados ya sirven, salvo dos. */
|
|
339
363
|
[data-theme='dark'][data-preset='green'] {
|
|
340
364
|
--netzi-primary-text: #0ae972;
|
|
@@ -344,6 +368,7 @@
|
|
|
344
368
|
/* El morado oscuro de claro (#6a2fd6) se hunde en el fondo oscuro (2.7:1): un
|
|
345
369
|
interruptor encendido apenas se distinguía de la tarjeta. */
|
|
346
370
|
--netzi-primary-dark: #7d48f2;
|
|
371
|
+
--netzi-primary-hover: #7d48f2;
|
|
347
372
|
}
|
|
348
373
|
[data-theme='dark'][data-preset='orange'] {
|
|
349
374
|
--netzi-primary-text: #f0a020;
|