@kaufmann-lab/ui 0.1.0

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/package.json ADDED
@@ -0,0 +1,30 @@
1
+ {
2
+ "name": "@kaufmann-lab/ui",
3
+ "version": "0.1.0",
4
+ "description": "Shared Angular component library for the Kaufmann frontends",
5
+ "license": "MIT",
6
+ "author": "Kaufmann Lab",
7
+ "publishConfig": {
8
+ "access": "public"
9
+ },
10
+ "peerDependencies": {
11
+ "@angular/common": "^22.1.0",
12
+ "@angular/core": "^22.1.0"
13
+ },
14
+ "dependencies": {
15
+ "tslib": "^2.3.0"
16
+ },
17
+ "sideEffects": false,
18
+ "module": "fesm2022/kaufmann-lab-ui.mjs",
19
+ "typings": "types/kaufmann-lab-ui.d.ts",
20
+ "exports": {
21
+ "./package.json": {
22
+ "default": "./package.json"
23
+ },
24
+ ".": {
25
+ "types": "./types/kaufmann-lab-ui.d.ts",
26
+ "default": "./fesm2022/kaufmann-lab-ui.mjs"
27
+ }
28
+ },
29
+ "type": "module"
30
+ }
@@ -0,0 +1,116 @@
1
+ /*
2
+ * Base de tokens semánticos de @kaufmann-lab/ui.
3
+ *
4
+ * Este archivo NO define colores de marca. Define los NOMBRES de variable
5
+ * que cualquier componente de la librería puede usar (--kf-color-primary,
6
+ * --kf-space-md, etc.) y les da un valor de respaldo aquí mismo, bajo :root,
7
+ * sin necesitar ningún atributo en el HTML.
8
+ *
9
+ * Ese valor de respaldo es el tema "default" — ver themes/default.css, que
10
+ * hoy usa los mismos colores que "divemotor" a propósito: si algún día se
11
+ * agrega un cliente/tema nuevo sin colores confirmados todavía, cae en un
12
+ * placeholder neutro, no en la marca de otra división.
13
+ *
14
+ * Los archivos de themes/*.css SOBRESCRIBEN estas mismas variables bajo un
15
+ * selector [data-theme="..."] — nunca agregan variables nuevas. Un componente
16
+ * nunca debe usar un color fuera de este archivo.
17
+ */
18
+
19
+ :root {
20
+ /* ---------- Color de marca ---------- */
21
+ --kf-color-primary: #0066cc;
22
+ --kf-color-primary-hover: #0b5fff;
23
+ --kf-color-primary-active: #004f9e;
24
+ --kf-color-primary-soft: #e8f2ff;
25
+
26
+ /*
27
+ * Azul profundo de marca — fondo de superficies oscuras (Portal Header,
28
+ * Feature Card, slide destacado de Carousel). Distinto de `-active`
29
+ * (que es un estado de interacción, no un color de superficie): este es
30
+ * el "Tertiary / Deep" de la página 2 del design system.
31
+ */
32
+ --kf-color-tertiary-deep: #003252;
33
+
34
+ --kf-color-secondary: #e6750c;
35
+ --kf-color-secondary-hover: #c4650a;
36
+ --kf-color-secondary-soft: #fff0e3;
37
+ --kf-color-secondary-strong: #954e08;
38
+
39
+ /* ---------- Semánticos de estado (iguales en todos los temas) ---------- */
40
+ --kf-color-success: #27ae60;
41
+ --kf-color-success-soft: #e7f6ee;
42
+ --kf-color-success-strong: #146c38;
43
+
44
+ --kf-color-warning: #e2b93b;
45
+ --kf-color-warning-soft: #fff8db;
46
+ --kf-color-warning-strong: #8a6a00;
47
+
48
+ --kf-color-error: #eb5757;
49
+ /* Usado también como estado hover/active del botón `danger` — mismo rojo
50
+ que "error", ver Button.ts (el PDF define un único rojo semántico). */
51
+ --kf-color-error-hover: #d64545;
52
+ --kf-color-error-soft: #fdecec;
53
+ --kf-color-error-strong: #a42d2d;
54
+
55
+ --kf-color-info: #2f80ed;
56
+ --kf-color-info-soft: #eaf3ff;
57
+ --kf-color-info-strong: #155bb5;
58
+
59
+ /* ---------- Neutros (iguales en todos los temas) ---------- */
60
+ --kf-color-ink: #171d25;
61
+ --kf-color-surface: #f5f7fa;
62
+ --kf-color-white: #ffffff;
63
+ --kf-color-border: #dde3ee;
64
+ --kf-color-border-strong: #c1c6d5;
65
+ --kf-color-text: #414753;
66
+ --kf-color-text-muted: #727784;
67
+
68
+ /*
69
+ * Escala de grises neutros (página 3 del design system), expuesta por
70
+ * número para los casos que no encajan en un alias semántico de arriba.
71
+ * Donde SÍ hay alias, apuntan al mismo valor — nunca uses el alias y el
72
+ * número con distinto propósito en un mismo componente:
73
+ * gray-800 (#242a33) → sin alias todavía
74
+ * gray-700 (#414753) → alias: --kf-color-text
75
+ * gray-600 (#727784) → alias: --kf-color-text-muted
76
+ * gray-500 (#9aa0ad) → sin alias todavía
77
+ * gray-400 (#c1c6d5) → alias: --kf-color-border-strong
78
+ * gray-300 (#dde3ee) → alias: --kf-color-border
79
+ * gray-200 (#e7ebf2) → sin alias todavía
80
+ * gray-100 (#f1f4f9) → sin alias todavía
81
+ */
82
+ --kf-color-gray-800: #242a33;
83
+ --kf-color-gray-700: var(--kf-color-text);
84
+ --kf-color-gray-600: var(--kf-color-text-muted);
85
+ --kf-color-gray-500: #9aa0ad;
86
+ --kf-color-gray-400: var(--kf-color-border-strong);
87
+ --kf-color-gray-300: var(--kf-color-border);
88
+ --kf-color-gray-200: #e7ebf2;
89
+ --kf-color-gray-100: #f1f4f9;
90
+
91
+ /* ---------- Tipografía ---------- */
92
+ --kf-font-title: 'Roboto Condensed', 'Arial Narrow', sans-serif;
93
+ --kf-font-body: 'Roboto', system-ui, -apple-system, sans-serif;
94
+ --kf-font-mono: 'Roboto Mono', ui-monospace, 'SFMono-Regular', Menlo, monospace;
95
+
96
+ /* ---------- Espaciado (escala 4/8px) ---------- */
97
+ --kf-space-xs: 4px;
98
+ --kf-space-sm: 8px;
99
+ --kf-space-md: 16px;
100
+ --kf-space-lg: 24px;
101
+ --kf-space-xl: 32px;
102
+
103
+ /* ---------- Radios ---------- */
104
+ --kf-radius-xs: 6px;
105
+ --kf-radius-sm: 8px;
106
+ --kf-radius-md: 12px;
107
+ --kf-radius-lg: 16px;
108
+ --kf-radius-pill: 999px;
109
+
110
+ /* ---------- Sombras ---------- */
111
+ --kf-shadow-xs: 0 1px 2px rgba(16, 24, 40, 0.05);
112
+ --kf-shadow-sm: 0 1px 3px rgba(16, 24, 40, 0.08), 0 1px 2px rgba(16, 24, 40, 0.04);
113
+ --kf-shadow-md: 0 6px 18px rgba(16, 24, 40, 0.08);
114
+ --kf-shadow-lg: 0 18px 48px rgba(16, 24, 40, 0.16);
115
+ --kf-shadow-focus: 0 0 0 3px rgba(0, 102, 204, 0.22);
116
+ }
@@ -0,0 +1,23 @@
1
+ /*
2
+ * Punto de entrada único de los tokens de @kaufmann-lab/ui.
3
+ *
4
+ * Cada frontend que consume la librería importa SOLO este archivo (no cada
5
+ * tema por separado) y activa un tema con un atributo en el elemento raíz:
6
+ *
7
+ * <html data-theme="andes-maq">
8
+ *
9
+ * Sin ningún atributo, la app ya tiene colores válidos (tema "default",
10
+ * definido directo en base.css bajo :root) — ninguna pantalla queda sin
11
+ * estilo por un data-theme olvidado.
12
+ *
13
+ * El orden de importación importa: base.css primero (declara las variables
14
+ * y su valor de respaldo), los temas después (las sobrescriben bajo su
15
+ * propio selector [data-theme="..."]).
16
+ */
17
+
18
+ @import './base.css';
19
+ @import './themes/default.css';
20
+ @import './themes/divemotor.css';
21
+ @import './themes/divemotor-star.css';
22
+ @import './themes/andes-maq.css';
23
+ @import './themes/kaufmann-ar.css';
@@ -0,0 +1,25 @@
1
+ /*
2
+ * Tema "andes-maq" — división Andes Maq del ERP de Asistencia en Ruta y
3
+ * Terreno (Chile y Perú, maquinaria pesada).
4
+ *
5
+ * ⚠️ REFERENCIAL, NO VALIDADO. Fuente: "Presentación_ERP_Asistencia_Terreno_v2.pdf",
6
+ * página 6, nota al pie: "Paletas referenciales construidas a partir de la
7
+ * identidad pública de cada sitio — validar los valores exactos con
8
+ * Marketing antes de la implementación."
9
+ *
10
+ * Cuando Marketing confirme la paleta real, reemplazar solo los valores
11
+ * hex de este archivo. No requiere ningún otro cambio de código ni de
12
+ * arquitectura — ese es el propósito de tener el theming en un archivo
13
+ * separado por tema.
14
+ */
15
+
16
+ [data-theme='andes-maq'] {
17
+ --kf-color-primary: #1a1a1a;
18
+ --kf-color-primary-hover: #000000;
19
+ --kf-color-primary-active: #000000;
20
+ --kf-color-primary-soft: #f1f4f9;
21
+
22
+ --kf-color-secondary: #c47f00;
23
+ --kf-color-secondary-hover: #a66900;
24
+ --kf-color-secondary-soft: #fdf3e0;
25
+ }
@@ -0,0 +1,17 @@
1
+ /*
2
+ * Tema "default" — rol técnico, no una marca real.
3
+ *
4
+ * Estos valores viven directo en base.css bajo :root, así que este archivo
5
+ * no necesita ningún selector [data-theme]: es lo que ya está activo si
6
+ * nadie aplicó ningún atributo de tema. Existe para que ninguna pantalla
7
+ * quede sin color por un data-theme olvidado.
8
+ *
9
+ * Hoy coincide con "divemotor" a propósito (ver themes/divemotor.css) — son
10
+ * el mismo valor por casualidad, no por definición. Si mañana se agrega un
11
+ * cliente nuevo sin paleta confirmada todavía, cae en ESTE fallback neutro,
12
+ * nunca en la marca de otra división.
13
+ *
14
+ * Este archivo se deja vacío de overrides intencionalmente: los valores de
15
+ * base.css ya son el default. No agregar aquí un selector [data-theme="default"]
16
+ * — si se necesita, sería redundante con :root.
17
+ */
@@ -0,0 +1,25 @@
1
+ /*
2
+ * Tema "divemotor-star" — división Divemotor STAR del ERP de Asistencia
3
+ * en Ruta y Terreno (Perú).
4
+ *
5
+ * ⚠️ REFERENCIAL, NO VALIDADO. Fuente: "Presentación_ERP_Asistencia_Terreno_v2.pdf",
6
+ * página 6, nota al pie: "Paletas referenciales construidas a partir de la
7
+ * identidad pública de cada sitio — validar los valores exactos con
8
+ * Marketing antes de la implementación."
9
+ *
10
+ * Cuando Marketing confirme la paleta real, reemplazar solo los valores
11
+ * hex de este archivo. No requiere ningún otro cambio de código ni de
12
+ * arquitectura — ese es el propósito de tener el theming en un archivo
13
+ * separado por tema.
14
+ */
15
+
16
+ [data-theme='divemotor-star'] {
17
+ --kf-color-primary: #0c3b75;
18
+ --kf-color-primary-hover: #0a2f5e;
19
+ --kf-color-primary-active: #072347;
20
+ --kf-color-primary-soft: #e8f0fd;
21
+
22
+ --kf-color-secondary: #c8102e;
23
+ --kf-color-secondary-hover: #a80d26;
24
+ --kf-color-secondary-soft: #fdecef;
25
+ }
@@ -0,0 +1,25 @@
1
+ /*
2
+ * Tema "divemotor" — marca real, validada.
3
+ *
4
+ * Fuente: design system oficial de Divemotor (tokens/colors.css,
5
+ * divemotor-color-tokens.json). Usado por Portal LATAM, Portal OTD y
6
+ * Portal Star del ecosistema base — no requiere el ERP de Asistencia en
7
+ * Ruta para aplicarse.
8
+ *
9
+ * Coincide en valor con el tema "default" (ver themes/default.css) porque
10
+ * hoy Divemotor ES la marca principal del ecosistema. Se mantiene como
11
+ * archivo separado para que un cliente nuevo sin paleta confirmada nunca
12
+ * caiga por accidente en la marca de Divemotor — cae en "default", que es
13
+ * un fallback neutro documentado como tal.
14
+ */
15
+
16
+ [data-theme='divemotor'] {
17
+ --kf-color-primary: #0066cc;
18
+ --kf-color-primary-hover: #0b5fff;
19
+ --kf-color-primary-active: #004f9e;
20
+ --kf-color-primary-soft: #e8f2ff;
21
+
22
+ --kf-color-secondary: #e6750c;
23
+ --kf-color-secondary-hover: #c4650a;
24
+ --kf-color-secondary-soft: #fff0e3;
25
+ }
@@ -0,0 +1,25 @@
1
+ /*
2
+ * Tema "kaufmann-ar" — división Asistencia Remota Kaufmann del ERP de
3
+ * Asistencia en Ruta y Terreno (Chile).
4
+ *
5
+ * ⚠️ REFERENCIAL, NO VALIDADO. Fuente: "Presentación_ERP_Asistencia_Terreno_v2.pdf",
6
+ * página 6, nota al pie: "Paletas referenciales construidas a partir de la
7
+ * identidad pública de cada sitio — validar los valores exactos con
8
+ * Marketing antes de la implementación."
9
+ *
10
+ * Cuando Marketing confirme la paleta real, reemplazar solo los valores
11
+ * hex de este archivo. No requiere ningún otro cambio de código ni de
12
+ * arquitectura — ese es el propósito de tener el theming en un archivo
13
+ * separado por tema.
14
+ */
15
+
16
+ [data-theme='kaufmann-ar'] {
17
+ --kf-color-primary: #0c2f52;
18
+ --kf-color-primary-hover: #092743;
19
+ --kf-color-primary-active: #061c33;
20
+ --kf-color-primary-soft: #e8f0fd;
21
+
22
+ --kf-color-secondary: #1a5fd0;
23
+ --kf-color-secondary-hover: #164fac;
24
+ --kf-color-secondary-soft: #e8f0fd;
25
+ }