@khipu/design-system 0.3.4 → 0.3.5-alpha.10
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/dist/beercss/khipu-beercss.css +107 -23
- package/dist/beercss/khipu-beercss.js +6 -0
- package/dist/beercss/khipu-beercss.min.css +1 -1
- package/dist/beercss/khipu-beercss.scoped.css +107 -23
- package/dist/beercss/khipu-beercss.scoped.min.css +1 -1
- package/dist/beercss/metadata.json +5 -5
- package/dist/index.d.mts +3 -1
- package/dist/index.d.ts +3 -1
- package/dist/index.js +15 -1
- package/dist/index.mjs +14 -1
- package/package.json +2 -2
|
@@ -15,7 +15,7 @@
|
|
|
15
15
|
*
|
|
16
16
|
* AUTO-GENERATED FILE - DO NOT EDIT MANUALLY
|
|
17
17
|
* Source: design-system/src/tokens/tokens.json
|
|
18
|
-
* Generated: 2026-08-
|
|
18
|
+
* Generated: 2026-08-14T20:37:28.660Z
|
|
19
19
|
*
|
|
20
20
|
* To regenerate:
|
|
21
21
|
* cd design-system && npm run tokens:generate
|
|
@@ -687,6 +687,37 @@
|
|
|
687
687
|
--outline: var(--kds-color-input-border);
|
|
688
688
|
--outline-variant: var(--kds-border-light);
|
|
689
689
|
|
|
690
|
+
/* ========================================
|
|
691
|
+
EXTENDED BRAND ROLES
|
|
692
|
+
|
|
693
|
+
Several roles used to resolve straight to --kds-color-primary-main, which
|
|
694
|
+
meant a brand could not have (say) a green link next to a navy button.
|
|
695
|
+
They are split into their own tokens:
|
|
696
|
+
|
|
697
|
+
--kds-color-accent form icon, expand toggle, checkbox/radio
|
|
698
|
+
--kds-color-accent-soft form icon backdrop
|
|
699
|
+
--kds-font-family-heading display/heading tier
|
|
700
|
+
--kds-invoice-amount-font-family
|
|
701
|
+
--kds-invoice-amount-color
|
|
702
|
+
--kds-button-font-family
|
|
703
|
+
--kds-button-text-transform
|
|
704
|
+
--kds-button-primary-bg
|
|
705
|
+
--kds-button-primary-bg-hover
|
|
706
|
+
|
|
707
|
+
These are deliberately NOT declared here. Each one is consumed as
|
|
708
|
+
var(--new-token, <the expression it used to be>), so the default is
|
|
709
|
+
supplied at the point of use.
|
|
710
|
+
|
|
711
|
+
Declaring them as :root aliases looks equivalent but is not. A custom
|
|
712
|
+
property is substituted on the element that DECLARES it, so
|
|
713
|
+
`--kds-color-accent: var(--kds-color-primary-main)` on :root freezes to
|
|
714
|
+
whatever the primary is at :root. A brand that sets its primary further
|
|
715
|
+
down the tree (which is how khenshin-web applies merchant styles) would
|
|
716
|
+
inherit the already-resolved Khipu purple and lose its own colour. Using
|
|
717
|
+
them as fallbacks resolves against the primary in effect at the consuming
|
|
718
|
+
element, so unbranded output and existing brands are both unchanged.
|
|
719
|
+
======================================== */
|
|
720
|
+
|
|
690
721
|
/* ========================================
|
|
691
722
|
ONBOARDING COMPONENTS TOKENS
|
|
692
723
|
======================================== */
|
|
@@ -1012,12 +1043,12 @@
|
|
|
1012
1043
|
width: 100%;
|
|
1013
1044
|
|
|
1014
1045
|
/* Typography - Using design tokens */
|
|
1015
|
-
font-family: var(--kds-font-family-secondary);
|
|
1046
|
+
font-family: var(--kds-button-font-family, var(--kds-font-family-secondary));
|
|
1016
1047
|
font-weight: var(--kds-font-weight-medium); /* 500 */
|
|
1017
1048
|
font-size: var(--kds-typography-button-font-size); /* 0.875rem = 14px */
|
|
1018
1049
|
line-height: var(--kds-typography-button-line-height); /* 1.5 */
|
|
1019
1050
|
letter-spacing: var(--kds-typography-button-letter-spacing); /* 0.46px */
|
|
1020
|
-
text-transform: uppercase;
|
|
1051
|
+
text-transform: var(--kds-button-text-transform, uppercase);
|
|
1021
1052
|
|
|
1022
1053
|
/* Spacing - Using design tokens */
|
|
1023
1054
|
padding: var(--kds-spacing-button-padding); /* 0 16px */
|
|
@@ -1074,16 +1105,19 @@
|
|
|
1074
1105
|
/* Primary button - Khipu purple */
|
|
1075
1106
|
.kds-theme-root button.kds-btn-primary,
|
|
1076
1107
|
.kds-theme-root a.kds-btn-primary {
|
|
1077
|
-
background: var(--kds-color-primary-main);
|
|
1108
|
+
background: var(--kds-button-primary-bg, var(--kds-color-primary-main)); /* #8347AD */
|
|
1078
1109
|
color: var(--kds-color-primary-contrast); /* #FFF light / dark-purple on dark (lavender bg) */
|
|
1079
1110
|
border: none;
|
|
1080
1111
|
box-shadow: 0 1px 2px rgba(131, 71, 173, .25);
|
|
1081
1112
|
}
|
|
1082
1113
|
|
|
1083
|
-
/* Hover State - background más oscuro
|
|
1114
|
+
/* Hover State - background más oscuro.
|
|
1115
|
+
Its own token, not primary-dark: once a brand sets the button background
|
|
1116
|
+
independently of the primary, deriving hover from the primary would snap it
|
|
1117
|
+
back to the brand's other colour on the first pointer-over. */
|
|
1084
1118
|
.kds-theme-root button.kds-btn-primary:hover:not(:disabled),
|
|
1085
1119
|
.kds-theme-root a.kds-btn-primary:hover:not(:disabled) {
|
|
1086
|
-
background: var(--kds-color-primary-dark);
|
|
1120
|
+
background: var(--kds-button-primary-bg-hover, var(--kds-color-primary-dark)); /* #5B3179 */
|
|
1087
1121
|
}
|
|
1088
1122
|
|
|
1089
1123
|
/* Active/Focus State */
|
|
@@ -1091,7 +1125,7 @@
|
|
|
1091
1125
|
.kds-theme-root button.kds-btn-primary:focus-visible:not(:disabled),
|
|
1092
1126
|
.kds-theme-root a.kds-btn-primary:active:not(:disabled),
|
|
1093
1127
|
.kds-theme-root a.kds-btn-primary:focus-visible:not(:disabled) {
|
|
1094
|
-
background: var(--kds-color-primary-dark);
|
|
1128
|
+
background: var(--kds-button-primary-bg-hover, var(--kds-color-primary-dark));
|
|
1095
1129
|
}
|
|
1096
1130
|
|
|
1097
1131
|
/* Dark mode: the button is a light lavender with dark text, so hover/active must
|
|
@@ -2424,12 +2458,21 @@
|
|
|
2424
2458
|
/* Llena y centra dentro de contenedores flex (pantalla de carga); en flujo
|
|
2425
2459
|
normal (contenedor no-flex) se reduce a su contenido. */
|
|
2426
2460
|
flex: 1 1 auto;
|
|
2427
|
-
/* Alto propio: el loader es contenido minimo por definicion, asi que sin esto la
|
|
2428
|
-
|
|
2429
|
-
|
|
2430
|
-
|
|
2431
|
-
|
|
2432
|
-
|
|
2461
|
+
/* Alto propio: el loader es contenido minimo por definicion, asi que sin esto la card
|
|
2462
|
+
queda del alto del spinner y se lee como un recorte. Va aca y no en la card para que
|
|
2463
|
+
el minimo aplique solo a la carga: el resto de las pantallas crece con su contenido.
|
|
2464
|
+
El valor de escritorio es moderado a proposito: el minimo de telefono (36rem) dejaba
|
|
2465
|
+
la card de la carga mucho mas alta que cualquier otra pantalla, y al entrar y salir
|
|
2466
|
+
del loader el widget crecia y volvia a encoger. */
|
|
2467
|
+
min-height: 18rem;
|
|
2468
|
+
}
|
|
2469
|
+
|
|
2470
|
+
/* En telefono la carga si ocupa el alto util de la pantalla: ahi la card va a ancho
|
|
2471
|
+
completo y un loader corto se lee como una franja perdida en el medio. */
|
|
2472
|
+
@media (max-width: 767px) {
|
|
2473
|
+
.kds-theme-root .kds-secure-loader {
|
|
2474
|
+
min-height: 36rem;
|
|
2475
|
+
}
|
|
2433
2476
|
}
|
|
2434
2477
|
|
|
2435
2478
|
.kds-theme-root .kds-secure-loader-text {
|
|
@@ -3242,7 +3285,7 @@
|
|
|
3242
3285
|
/* Checked state */
|
|
3243
3286
|
.kds-theme-root label.checkbox input[type="checkbox"]:checked,
|
|
3244
3287
|
.kds-theme-root label.radio input[type="radio"]:checked {
|
|
3245
|
-
accent-color: var(--primary);
|
|
3288
|
+
accent-color: var(--kds-color-accent, var(--primary));
|
|
3246
3289
|
}
|
|
3247
3290
|
|
|
3248
3291
|
/* Disabled state */
|
|
@@ -5011,9 +5054,12 @@
|
|
|
5011
5054
|
background-color: var(--kds-color-info-soft);
|
|
5012
5055
|
}
|
|
5013
5056
|
|
|
5014
|
-
/* ── Typography variants ──
|
|
5057
|
+
/* ── Typography variants ──
|
|
5058
|
+
The display/heading tier resolves through --kds-font-family-heading so a
|
|
5059
|
+
brand can pair a display face with a different body face. Unset by default,
|
|
5060
|
+
so it falls through to the primary family and output is unchanged. */
|
|
5015
5061
|
.kds-theme-root .kds-text-display1 {
|
|
5016
|
-
font-family: var(--kds-font-family-primary, 'Public Sans', sans-serif);
|
|
5062
|
+
font-family: var(--kds-font-family-heading, var(--kds-font-family-primary, 'Public Sans', sans-serif));
|
|
5017
5063
|
font-size: var(--kds-font-size-4xl, 36px);
|
|
5018
5064
|
font-weight: var(--kds-font-weight-bold, 700);
|
|
5019
5065
|
line-height: var(--kds-line-height-tight, 1.2);
|
|
@@ -5021,7 +5067,7 @@
|
|
|
5021
5067
|
}
|
|
5022
5068
|
|
|
5023
5069
|
.kds-theme-root .kds-text-display2 {
|
|
5024
|
-
font-family: var(--kds-font-family-primary, 'Public Sans', sans-serif);
|
|
5070
|
+
font-family: var(--kds-font-family-heading, var(--kds-font-family-primary, 'Public Sans', sans-serif));
|
|
5025
5071
|
font-size: var(--kds-font-size-3xl, 30px);
|
|
5026
5072
|
font-weight: var(--kds-font-weight-bold, 700);
|
|
5027
5073
|
line-height: var(--kds-line-height-tight, 1.2);
|
|
@@ -5029,21 +5075,21 @@
|
|
|
5029
5075
|
}
|
|
5030
5076
|
|
|
5031
5077
|
.kds-theme-root .kds-text-heading1 {
|
|
5032
|
-
font-family: var(--kds-font-family-primary, 'Public Sans', sans-serif);
|
|
5078
|
+
font-family: var(--kds-font-family-heading, var(--kds-font-family-primary, 'Public Sans', sans-serif));
|
|
5033
5079
|
font-size: var(--kds-font-size-2xl, 24px);
|
|
5034
5080
|
font-weight: var(--kds-font-weight-semibold, 600);
|
|
5035
5081
|
line-height: var(--kds-line-height-snug, 1.375);
|
|
5036
5082
|
}
|
|
5037
5083
|
|
|
5038
5084
|
.kds-theme-root .kds-text-heading2 {
|
|
5039
|
-
font-family: var(--kds-font-family-primary, 'Public Sans', sans-serif);
|
|
5085
|
+
font-family: var(--kds-font-family-heading, var(--kds-font-family-primary, 'Public Sans', sans-serif));
|
|
5040
5086
|
font-size: var(--kds-font-size-xl, 20px);
|
|
5041
5087
|
font-weight: var(--kds-font-weight-semibold, 600);
|
|
5042
5088
|
line-height: var(--kds-line-height-snug, 1.375);
|
|
5043
5089
|
}
|
|
5044
5090
|
|
|
5045
5091
|
.kds-theme-root .kds-text-heading3 {
|
|
5046
|
-
font-family: var(--kds-font-family-primary, 'Public Sans', sans-serif);
|
|
5092
|
+
font-family: var(--kds-font-family-heading, var(--kds-font-family-primary, 'Public Sans', sans-serif));
|
|
5047
5093
|
font-size: var(--kds-font-size-lg, 18px);
|
|
5048
5094
|
font-weight: var(--kds-font-weight-semibold, 600);
|
|
5049
5095
|
line-height: var(--kds-line-height-normal, 1.5);
|
|
@@ -6268,7 +6314,7 @@
|
|
|
6268
6314
|
irregular arriba (pegado al resumen) y abajo (~26px hasta el panel). Con height
|
|
6269
6315
|
auto el botón ajusta a su contenido y el ritmo lo gobiernan los márgenes. */
|
|
6270
6316
|
height: auto;
|
|
6271
|
-
color: var(--kds-color-primary-main);
|
|
6317
|
+
color: var(--kds-color-accent, var(--kds-color-primary-main));
|
|
6272
6318
|
font-weight: var(--kds-font-weight-medium);
|
|
6273
6319
|
font-size: var(--kds-font-size-sm);
|
|
6274
6320
|
cursor: pointer;
|
|
@@ -7098,11 +7144,13 @@
|
|
|
7098
7144
|
}
|
|
7099
7145
|
|
|
7100
7146
|
.kds-theme-root .kds-invoice-amount {
|
|
7147
|
+
/* inherit: the amount had no family of its own before, it took the body's. */
|
|
7148
|
+
font-family: var(--kds-invoice-amount-font-family, inherit);
|
|
7101
7149
|
font-weight: var(--kds-font-weight-semibold);
|
|
7102
7150
|
font-size: var(--kds-font-size-3xl);
|
|
7103
7151
|
line-height: var(--kds-line-height-tight);
|
|
7104
7152
|
letter-spacing: var(--kds-letter-spacing-wide);
|
|
7105
|
-
color: var(--kds-color-gray-900);
|
|
7153
|
+
color: var(--kds-invoice-amount-color, var(--kds-color-gray-900));
|
|
7106
7154
|
margin: 0;
|
|
7107
7155
|
}
|
|
7108
7156
|
|
|
@@ -7200,6 +7248,8 @@
|
|
|
7200
7248
|
|
|
7201
7249
|
/* -- Card Title -- */
|
|
7202
7250
|
.kds-theme-root .kds-card-title {
|
|
7251
|
+
/* inherit: the card title had no family of its own before. */
|
|
7252
|
+
font-family: var(--kds-font-family-heading, inherit);
|
|
7203
7253
|
font-weight: var(--kds-font-weight-semibold);
|
|
7204
7254
|
font-size: var(--kds-font-size-base);
|
|
7205
7255
|
line-height: 1.5;
|
|
@@ -7949,6 +7999,36 @@
|
|
|
7949
7999
|
}
|
|
7950
8000
|
}
|
|
7951
8001
|
|
|
8002
|
+
/* Widget embebido: dentro de un iframe los media queries de ancho evalúan el viewport
|
|
8003
|
+
DEL IFRAME (~420px), no la pantalla, así que el flujo se ve siempre como mobile
|
|
8004
|
+
aunque el usuario esté en desktop — y el tope plano, pensado para cuando la card se
|
|
8005
|
+
pega al borde del teléfono, queda cortando una card que en realidad flota centrada.
|
|
8006
|
+
`hover`/`pointer` describen el dispositivo de entrada y no el viewport, así que
|
|
8007
|
+
sobreviven al iframe: con mouse las cards conservan las esquinas superiores. */
|
|
8008
|
+
@media (hover: hover) and (pointer: fine) {
|
|
8009
|
+
.kds-theme-root .kds-card-elevated.kds-invoice-sticky {
|
|
8010
|
+
border-radius: var(--kds-radius-card);
|
|
8011
|
+
/* El clip-path del colapso recorta con `round 0 0 R R` y eso PISA al
|
|
8012
|
+
border-radius: aunque la card declare las cuatro esquinas, el recorte las
|
|
8013
|
+
deja rectas arriba. Hay que redondearlas también acá o el fix no se ve. */
|
|
8014
|
+
clip-path: inset(
|
|
8015
|
+
0 0
|
|
8016
|
+
calc(
|
|
8017
|
+
var(--collapse-collapsible-h) * var(--collapse-progress)
|
|
8018
|
+
+ var(--kds-spacing-1) * var(--collapse-progress)
|
|
8019
|
+
)
|
|
8020
|
+
0
|
|
8021
|
+
round var(--kds-radius-card)
|
|
8022
|
+
);
|
|
8023
|
+
}
|
|
8024
|
+
|
|
8025
|
+
.kds-theme-root .kds-screen > .kds-card-elevated.kds-card-elevated--flush-top,
|
|
8026
|
+
.kds-theme-root .kds-card-elevated.kds-card-elevated--flush-top {
|
|
8027
|
+
border-top-left-radius: var(--kds-radius-card);
|
|
8028
|
+
border-top-right-radius: var(--kds-radius-card);
|
|
8029
|
+
}
|
|
8030
|
+
}
|
|
8031
|
+
|
|
7952
8032
|
/* Brand logo row (external, outside cards) */
|
|
7953
8033
|
.kds-theme-root .kds-brand-row {
|
|
7954
8034
|
padding: 0 var(--kds-spacing-0-5);
|
|
@@ -9081,7 +9161,11 @@
|
|
|
9081
9161
|
|
|
9082
9162
|
.kds-theme-root .kds-form-icon-box {
|
|
9083
9163
|
align-items: center;
|
|
9084
|
-
background: var(--kds-color-background-brand-subtle, #f0f0fa);
|
|
9164
|
+
background: var(--kds-color-accent-soft, var(--kds-color-background-brand-subtle, #f0f0fa));
|
|
9165
|
+
/* The glyph inherits this, so the icon tracks the accent role without the
|
|
9166
|
+
markup having to name a colour utility. Falls back to the primary, which
|
|
9167
|
+
is what the .kds-text-primary utility on the glyph resolved to. */
|
|
9168
|
+
color: var(--kds-color-accent, var(--kds-color-primary-main));
|
|
9085
9169
|
border-radius: var(--kds-radius-md);
|
|
9086
9170
|
display: flex;
|
|
9087
9171
|
height: 52px;
|