@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/README.md +64 -0
- package/fesm2022/kaufmann-lab-ui.mjs +4752 -0
- package/fesm2022/kaufmann-lab-ui.mjs.map +1 -0
- package/package.json +30 -0
- package/src/tokens/base.css +116 -0
- package/src/tokens/index.css +23 -0
- package/src/tokens/themes/andes-maq.css +25 -0
- package/src/tokens/themes/default.css +17 -0
- package/src/tokens/themes/divemotor-star.css +25 -0
- package/src/tokens/themes/divemotor.css +25 -0
- package/src/tokens/themes/kaufmann-ar.css +25 -0
- package/types/kaufmann-lab-ui.d.ts +1499 -0
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
|
+
}
|