@kaufmann-lab/ui 0.1.9 → 0.1.13

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.
@@ -0,0 +1,6 @@
1
+ // Asset copiado tal cual por `ng-package.json` — nunca pasa por el compilador
2
+ // de Angular/TypeScript. Ver el comentario en `MapView.ts` sobre por qué
3
+ // `new Worker(new URL('./mapbox-gl-csp.worker.js', import.meta.url))` necesita
4
+ // que este archivo exista de forma real, junto al bundle publicado, en vez de
5
+ // ser solo un import de TypeScript más.
6
+ import 'mapbox-gl/dist/mapbox-gl-csp-worker.js';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@kaufmann-lab/ui",
3
- "version": "0.1.9",
3
+ "version": "0.1.13",
4
4
  "description": "Shared Angular component library for the Kaufmann frontends",
5
5
  "license": "MIT",
6
6
  "author": "Kaufmann Lab",
@@ -13,6 +13,7 @@
13
13
  "@angular/core": "^22.1.0"
14
14
  },
15
15
  "dependencies": {
16
+ "mapbox-gl": "^3.30.0",
16
17
  "tslib": "^2.3.0"
17
18
  },
18
19
  "sideEffects": false,
@@ -31,6 +31,18 @@
31
31
  */
32
32
  --kf-color-tertiary-deep: #003252;
33
33
 
34
+ /*
35
+ * Gradiente del sidebar de navegación persistente (`kf-sidebar-shell`) y,
36
+ * a futuro, Servicio Star, que usa el mismo patrón de sidebar según el
37
+ * design system. Valores propios — NO reutilizar `-primary-active`/
38
+ * `-tertiary-deep` de arriba: son visualmente parecidos pero no iguales
39
+ * (ver `css/otd.css` del design system, regla `.side`), y quedaron
40
+ * confundidos entre sí una vez ya (versión inicial de `kf-sidebar-shell`
41
+ * usaba los tokens de marca genéricos por error).
42
+ */
43
+ --kf-color-sidebar-gradient-from: #002a47;
44
+ --kf-color-sidebar-gradient-to: #001f36;
45
+
34
46
  /*
35
47
  * Oscurecido desde el naranja de marca original (#e6750c) — con texto
36
48
  * blanco (kf-button variant="secondary") el tono original daba 3.04:1,
@@ -69,6 +81,17 @@
69
81
  --kf-color-info-soft: #eaf3ff;
70
82
  --kf-color-info-strong: #155bb5;
71
83
 
84
+ /*
85
+ * Acento morado — no es un color semántico de estado (no significa
86
+ * éxito/error/warning), es un acento de marca puntual del portal OTD
87
+ * (bonos/beneficios en el Design System Divemotor). Documentado como
88
+ * caso aislado a propósito: si aparece en más de un portal o más de
89
+ * una sección, conviene revisar si merece nombre semántico propio.
90
+ */
91
+ --kf-color-purple: #4a2f82;
92
+ --kf-color-purple-soft: #efeaf8;
93
+ --kf-color-purple-strong: #33215c;
94
+
72
95
  /* ---------- Neutros (iguales en todos los temas) ---------- */
73
96
  --kf-color-ink: #171d25;
74
97
  --kf-color-surface: #f5f7fa;
@@ -122,8 +145,19 @@
122
145
  --kf-font-size-body-sm: 0.875rem;
123
146
  --kf-font-size-caption: 0.75rem;
124
147
 
148
+ /*
149
+ * Tier "hero" — por encima del máximo de la auditoría de arriba (2.125rem).
150
+ * No cubre contenido de página, sino títulos protagonistas de una sola
151
+ * pantalla (ej. bienvenida del home vía `kf-page-header[size=xl|xxl]`).
152
+ * Se agregan acá para que sigan siendo variantes de `kf-text` en vez de
153
+ * un tamaño local duplicado por componente.
154
+ */
155
+ --kf-font-size-title-xl: 2rem;
156
+ --kf-font-size-title-xxl: 2.5rem;
157
+
125
158
  /* ---------- Peso de fuente ---------- */
126
159
  --kf-font-weight-title: 700;
160
+ --kf-font-weight-medium: 600;
127
161
  --kf-font-weight-body: 400;
128
162
 
129
163
  /* ---------- Espaciado (escala 4/8px) ---------- */
@@ -146,4 +180,43 @@
146
180
  --kf-shadow-md: 0 6px 18px rgba(16, 24, 40, 0.08);
147
181
  --kf-shadow-lg: 0 18px 48px rgba(16, 24, 40, 0.16);
148
182
  --kf-shadow-focus: 0 0 0 3px rgba(0, 102, 204, 0.22);
183
+ /*
184
+ * Variante del anillo de foco para campos `invalid` + enfocados
185
+ * (`kf-input`/`kf-select`/`kf-textarea`). El valor RGB es
186
+ * `--kf-color-error` (#bc4545) escrito a mano porque `rgba()` no puede
187
+ * resolver un color hex vía `var()` — si `--kf-color-error` cambia, este
188
+ * token hay que actualizarlo a mano también.
189
+ */
190
+ --kf-shadow-focus-error: 0 0 0 3px rgba(188, 69, 69, 0.22);
191
+
192
+ /*
193
+ * ---------- Anchos de controles de formulario ----------
194
+ * Usados por `width` de `kf-select`/`kf-multi-select`. `md` (240px) es
195
+ * el ancho fijo histórico de ambos componentes, ahora expresado como
196
+ * token en vez de un valor suelto en cada CSS — el valor no cambia.
197
+ */
198
+ --kf-select-width-sm: 160px;
199
+ --kf-select-width-md: 240px;
200
+ --kf-select-width-lg: 320px;
201
+
202
+ /*
203
+ * ---------- Geometría del checkbox ----------
204
+ * Compartida por `kf-checkbox` y el checkbox visual interno de
205
+ * `kf-multi-select` (ver shared/checkbox-mark.css). Vive acá y no en ese
206
+ * archivo porque es un stylesheet de componente (`styleUrl`, encapsulación
207
+ * Emulated por defecto): Angular le agrega el atributo de scoping a
208
+ * cualquier selector que declare, `:root` incluido, y `:root[_ngcontent-xxx]`
209
+ * nunca matchea el `<html>` real — las variables quedaban sin definir y
210
+ * cada `var()` que las consumía caía a su valor inicial (0px/none), sin
211
+ * checkmark ni barra "−" visibles pese a que el resto del box sí se veía.
212
+ * Es geometría fija, no color de marca: no depende de tema, por eso no
213
+ * hay overrides en themes/*.css para estas variables (mismo criterio que
214
+ * los anchos de select de arriba).
215
+ */
216
+ --kf-checkbox-mark-width: 4px;
217
+ --kf-checkbox-mark-height: 8px;
218
+ --kf-checkbox-mark-border: solid var(--kf-color-white);
219
+ --kf-checkbox-mark-border-width: 0 2px 2px 0;
220
+ --kf-checkbox-dash-width: 8px;
221
+ --kf-checkbox-dash-height: 2px;
149
222
  }
@@ -11,6 +11,13 @@
11
11
  * hex de este archivo. No requiere ningún otro cambio de código ni de
12
12
  * arquitectura — ese es el propósito de tener el theming en un archivo
13
13
  * separado por tema.
14
+ *
15
+ * La swatch de la página 6 lista negro → ocre → rojo → blanco; el rojo no
16
+ * tiene token propio acá a propósito — es acento de marca, no un color de
17
+ * acción de `kf-button` (`--kf-color-secondary` cumple ese rol y ya lo hace
18
+ * con el ocre). Mismo criterio aplicado en `divemotor-star.css`, donde SÍ
19
+ * hacía falta corregirlo porque el rojo de esa marca había quedado
20
+ * mapeado al color de acción.
14
21
  */
15
22
 
16
23
  [data-theme='andes-maq'] {
@@ -11,6 +11,19 @@
11
11
  * hex de este archivo. No requiere ningún otro cambio de código ni de
12
12
  * arquitectura — ese es el propósito de tener el theming en un archivo
13
13
  * separado por tema.
14
+ *
15
+ * `--kf-color-secondary` NO es el rojo de la identidad de STAR (la propia
16
+ * swatch de la página 6 lo lista como acento, no como color dominante) —
17
+ * es el mismo rol que cumple en cualquier otro tema: segundo color de
18
+ * acción de `kf-button`. Pintar botones de acción con el rojo de marca los
19
+ * volvía indistinguibles de una alerta real (`--kf-color-error`, el rojo
20
+ * semántico que ya usa el tablero para "en riesgo") — dos rojos con
21
+ * significados distintos compitiendo por la misma atención. El azul
22
+ * elegido (`#0e6ba8`) es un tono propio, distinto del `primary` marino y
23
+ * del secondary de `kaufmann-ar` (`#1a5fd0`), para que los temas de la
24
+ * familia azul sigan siendo distinguibles entre sí — 5.7:1 contra blanco,
25
+ * sobre el mínimo AA de 4.5:1 (mismo criterio que ya oscureció el ocre de
26
+ * `andes-maq` por la misma razón).
14
27
  */
15
28
 
16
29
  [data-theme='divemotor-star'] {
@@ -19,7 +32,7 @@
19
32
  --kf-color-primary-active: #072347;
20
33
  --kf-color-primary-soft: #e8f0fd;
21
34
 
22
- --kf-color-secondary: #c8102e;
23
- --kf-color-secondary-hover: #a80d26;
24
- --kf-color-secondary-soft: #fdecef;
35
+ --kf-color-secondary: #0e6ba8;
36
+ --kf-color-secondary-hover: #0b568a;
37
+ --kf-color-secondary-soft: #e5f2fa;
25
38
  }