@khipu/design-system 0.3.3 → 0.3.5-alpha.1
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.
|
@@ -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-12T21:54:49.906Z
|
|
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,6 +2458,12 @@
|
|
|
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;
|
|
2461
|
+
/* Alto propio: el loader es contenido minimo por definicion, asi que sin esto la
|
|
2462
|
+
card queda del alto del spinner y se lee como un recorte. Ocupa el body completo
|
|
2463
|
+
de un telefono para que la pantalla de carga se lea como una pantalla y no como
|
|
2464
|
+
una franja. Va aca y no en la card para que el minimo aplique solo a la carga:
|
|
2465
|
+
el resto de las pantallas crece con su contenido. */
|
|
2466
|
+
min-height: 36rem;
|
|
2427
2467
|
}
|
|
2428
2468
|
|
|
2429
2469
|
.kds-theme-root .kds-secure-loader-text {
|
|
@@ -3236,7 +3276,7 @@
|
|
|
3236
3276
|
/* Checked state */
|
|
3237
3277
|
.kds-theme-root label.checkbox input[type="checkbox"]:checked,
|
|
3238
3278
|
.kds-theme-root label.radio input[type="radio"]:checked {
|
|
3239
|
-
accent-color: var(--primary);
|
|
3279
|
+
accent-color: var(--kds-color-accent, var(--primary));
|
|
3240
3280
|
}
|
|
3241
3281
|
|
|
3242
3282
|
/* Disabled state */
|
|
@@ -5005,9 +5045,12 @@
|
|
|
5005
5045
|
background-color: var(--kds-color-info-soft);
|
|
5006
5046
|
}
|
|
5007
5047
|
|
|
5008
|
-
/* ── Typography variants ──
|
|
5048
|
+
/* ── Typography variants ──
|
|
5049
|
+
The display/heading tier resolves through --kds-font-family-heading so a
|
|
5050
|
+
brand can pair a display face with a different body face. Unset by default,
|
|
5051
|
+
so it falls through to the primary family and output is unchanged. */
|
|
5009
5052
|
.kds-theme-root .kds-text-display1 {
|
|
5010
|
-
font-family: var(--kds-font-family-primary, 'Public Sans', sans-serif);
|
|
5053
|
+
font-family: var(--kds-font-family-heading, var(--kds-font-family-primary, 'Public Sans', sans-serif));
|
|
5011
5054
|
font-size: var(--kds-font-size-4xl, 36px);
|
|
5012
5055
|
font-weight: var(--kds-font-weight-bold, 700);
|
|
5013
5056
|
line-height: var(--kds-line-height-tight, 1.2);
|
|
@@ -5015,7 +5058,7 @@
|
|
|
5015
5058
|
}
|
|
5016
5059
|
|
|
5017
5060
|
.kds-theme-root .kds-text-display2 {
|
|
5018
|
-
font-family: var(--kds-font-family-primary, 'Public Sans', sans-serif);
|
|
5061
|
+
font-family: var(--kds-font-family-heading, var(--kds-font-family-primary, 'Public Sans', sans-serif));
|
|
5019
5062
|
font-size: var(--kds-font-size-3xl, 30px);
|
|
5020
5063
|
font-weight: var(--kds-font-weight-bold, 700);
|
|
5021
5064
|
line-height: var(--kds-line-height-tight, 1.2);
|
|
@@ -5023,21 +5066,21 @@
|
|
|
5023
5066
|
}
|
|
5024
5067
|
|
|
5025
5068
|
.kds-theme-root .kds-text-heading1 {
|
|
5026
|
-
font-family: var(--kds-font-family-primary, 'Public Sans', sans-serif);
|
|
5069
|
+
font-family: var(--kds-font-family-heading, var(--kds-font-family-primary, 'Public Sans', sans-serif));
|
|
5027
5070
|
font-size: var(--kds-font-size-2xl, 24px);
|
|
5028
5071
|
font-weight: var(--kds-font-weight-semibold, 600);
|
|
5029
5072
|
line-height: var(--kds-line-height-snug, 1.375);
|
|
5030
5073
|
}
|
|
5031
5074
|
|
|
5032
5075
|
.kds-theme-root .kds-text-heading2 {
|
|
5033
|
-
font-family: var(--kds-font-family-primary, 'Public Sans', sans-serif);
|
|
5076
|
+
font-family: var(--kds-font-family-heading, var(--kds-font-family-primary, 'Public Sans', sans-serif));
|
|
5034
5077
|
font-size: var(--kds-font-size-xl, 20px);
|
|
5035
5078
|
font-weight: var(--kds-font-weight-semibold, 600);
|
|
5036
5079
|
line-height: var(--kds-line-height-snug, 1.375);
|
|
5037
5080
|
}
|
|
5038
5081
|
|
|
5039
5082
|
.kds-theme-root .kds-text-heading3 {
|
|
5040
|
-
font-family: var(--kds-font-family-primary, 'Public Sans', sans-serif);
|
|
5083
|
+
font-family: var(--kds-font-family-heading, var(--kds-font-family-primary, 'Public Sans', sans-serif));
|
|
5041
5084
|
font-size: var(--kds-font-size-lg, 18px);
|
|
5042
5085
|
font-weight: var(--kds-font-weight-semibold, 600);
|
|
5043
5086
|
line-height: var(--kds-line-height-normal, 1.5);
|
|
@@ -6262,7 +6305,7 @@
|
|
|
6262
6305
|
irregular arriba (pegado al resumen) y abajo (~26px hasta el panel). Con height
|
|
6263
6306
|
auto el botón ajusta a su contenido y el ritmo lo gobiernan los márgenes. */
|
|
6264
6307
|
height: auto;
|
|
6265
|
-
color: var(--kds-color-primary-main);
|
|
6308
|
+
color: var(--kds-color-accent, var(--kds-color-primary-main));
|
|
6266
6309
|
font-weight: var(--kds-font-weight-medium);
|
|
6267
6310
|
font-size: var(--kds-font-size-sm);
|
|
6268
6311
|
cursor: pointer;
|
|
@@ -7092,11 +7135,13 @@
|
|
|
7092
7135
|
}
|
|
7093
7136
|
|
|
7094
7137
|
.kds-theme-root .kds-invoice-amount {
|
|
7138
|
+
/* inherit: the amount had no family of its own before, it took the body's. */
|
|
7139
|
+
font-family: var(--kds-invoice-amount-font-family, inherit);
|
|
7095
7140
|
font-weight: var(--kds-font-weight-semibold);
|
|
7096
7141
|
font-size: var(--kds-font-size-3xl);
|
|
7097
7142
|
line-height: var(--kds-line-height-tight);
|
|
7098
7143
|
letter-spacing: var(--kds-letter-spacing-wide);
|
|
7099
|
-
color: var(--kds-color-gray-900);
|
|
7144
|
+
color: var(--kds-invoice-amount-color, var(--kds-color-gray-900));
|
|
7100
7145
|
margin: 0;
|
|
7101
7146
|
}
|
|
7102
7147
|
|
|
@@ -7179,8 +7224,23 @@
|
|
|
7179
7224
|
padding: var(--kds-spacing-0-5);
|
|
7180
7225
|
}
|
|
7181
7226
|
|
|
7227
|
+
/* Titulo del body de la card: alineado a la izquierda, sin importar que el consumidor
|
|
7228
|
+
traiga .kds-text-center. Va con especificidad de contexto (screen + card) a proposito:
|
|
7229
|
+
el centrado se venia pidiendo app por app y el resultado era inconsistente entre
|
|
7230
|
+
pantallas. Si alguna necesita centrarlo, el modificador explicito es
|
|
7231
|
+
.kds-card-title--centered. */
|
|
7232
|
+
.kds-theme-root .kds-screen > .kds-card-elevated :is(h1, .kds-card-title) {
|
|
7233
|
+
text-align: left;
|
|
7234
|
+
}
|
|
7235
|
+
|
|
7236
|
+
.kds-theme-root .kds-screen > .kds-card-elevated :is(h1, .kds-card-title).kds-card-title--centered {
|
|
7237
|
+
text-align: center;
|
|
7238
|
+
}
|
|
7239
|
+
|
|
7182
7240
|
/* -- Card Title -- */
|
|
7183
7241
|
.kds-theme-root .kds-card-title {
|
|
7242
|
+
/* inherit: the card title had no family of its own before. */
|
|
7243
|
+
font-family: var(--kds-font-family-heading, inherit);
|
|
7184
7244
|
font-weight: var(--kds-font-weight-semibold);
|
|
7185
7245
|
font-size: var(--kds-font-size-base);
|
|
7186
7246
|
line-height: 1.5;
|
|
@@ -9062,7 +9122,11 @@
|
|
|
9062
9122
|
|
|
9063
9123
|
.kds-theme-root .kds-form-icon-box {
|
|
9064
9124
|
align-items: center;
|
|
9065
|
-
background: var(--kds-color-background-brand-subtle, #f0f0fa);
|
|
9125
|
+
background: var(--kds-color-accent-soft, var(--kds-color-background-brand-subtle, #f0f0fa));
|
|
9126
|
+
/* The glyph inherits this, so the icon tracks the accent role without the
|
|
9127
|
+
markup having to name a colour utility. Falls back to the primary, which
|
|
9128
|
+
is what the .kds-text-primary utility on the glyph resolved to. */
|
|
9129
|
+
color: var(--kds-color-accent, var(--kds-color-primary-main));
|
|
9066
9130
|
border-radius: var(--kds-radius-md);
|
|
9067
9131
|
display: flex;
|
|
9068
9132
|
height: 52px;
|