@khipu/design-system 0.3.5-alpha.30 → 0.3.5-alpha.32

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.
@@ -13,7 +13,7 @@
13
13
  *
14
14
  * AUTO-GENERATED FILE - DO NOT EDIT MANUALLY
15
15
  * Source: design-system/src/tokens/tokens.json
16
- * Generated: 2026-10-06T20:11:26.407Z
16
+ * Generated: 2026-10-07T16:45:16.034Z
17
17
  *
18
18
  * To regenerate:
19
19
  * cd design-system && npm run tokens:generate
@@ -2525,7 +2525,8 @@ a.kds-btn-google:disabled {
2525
2525
  el minimo aplique solo a la carga: el resto de las pantallas crece con su contenido.
2526
2526
  El valor de escritorio es moderado a proposito: el minimo de telefono (36rem) dejaba
2527
2527
  la card de la carga mucho mas alta que cualquier otra pantalla, y al entrar y salir
2528
- del loader el widget crecia y volvia a encoger. */
2528
+ del loader el widget crecia y volvia a encoger.
2529
+ Dentro de .kds-card-elevated--action el loader no usa este minimo: lo da el card. */
2529
2530
  min-height: 18rem;
2530
2531
  }
2531
2532
 
@@ -7251,6 +7252,10 @@ button.kds-fab:active:not(:disabled) {
7251
7252
  max-height: calc(100vh - var(--kds-spacing-12) - var(--kds-spacing-4));
7252
7253
  max-height: calc(100dvh - var(--kds-spacing-12) - var(--kds-spacing-4));
7253
7254
  overflow-y: auto;
7255
+ /* El caret de "Detalle del cobro" baja 0.09em (corrección óptica de .kds-expand-toggle i)
7256
+ y asomaba ~1.3px bajo el borde: con overflow auto eso bastaba para mostrar una barra
7257
+ de scroll con el detalle cerrado. 2px de aire lo dejan dentro (KTUF-388). */
7258
+ padding-bottom: 2px;
7254
7259
  overflow-x: hidden;
7255
7260
  overscroll-behavior-y: auto;
7256
7261
  scrollbar-width: thin;
@@ -7490,15 +7495,22 @@ div.kds-invoice-header,
7490
7495
  animation: kds-skeleton-pulse 1.4s ease-in-out infinite;
7491
7496
  }
7492
7497
 
7493
- /* Línea de texto: inline-block de 1em puesto DENTRO del elemento real (p.kds-invoice-amount,
7494
- dd, ...), hereda su font-size y line-height, así la caja mide lo mismo que con texto y el
7495
- reemplazo no desplaza el layout. */
7498
+ /* Texto: un texto de relleno con la tinta transparente, puesto DENTRO del elemento real
7499
+ (p.kds-invoice-amount, dd, ...). Usa la fuente, el tamaño y el alto de línea del slot, así
7500
+ que ancho y alto calzan con el contenido que reemplaza (también dentro de contenedores
7501
+ flex, donde una caja de alto fijo perdía el alto de línea) y el cambio no desplaza nada. */
7496
7502
  .kds-skeleton--text {
7497
- display: inline-block;
7498
- width: 100%;
7499
- height: 1em;
7500
- vertical-align: middle;
7503
+ color: transparent;
7501
7504
  border-radius: var(--kds-radius-sm);
7505
+ -webkit-box-decoration-break: clone;
7506
+ box-decoration-break: clone;
7507
+ user-select: none;
7508
+ /* Inline, el gris cubre la altura de la letra; se recorta arriba y abajo para que las
7509
+ barras de líneas vecinas no se toquen. Solo visual: el layout no cambia. Va inline
7510
+ también dentro de un flex (envuelto en un span): como item de flex cubriría todo el
7511
+ alto de línea y quedaría más grueso que el resto. */
7512
+ -webkit-clip-path: inset(0.2em 0 round var(--kds-radius-sm));
7513
+ clip-path: inset(0.2em 0 round var(--kds-radius-sm));
7502
7514
  }
7503
7515
 
7504
7516
  [data-theme="dark"] .kds-skeleton {
@@ -7517,11 +7529,13 @@ div.kds-invoice-header,
7517
7529
  }
7518
7530
 
7519
7531
  /* Header de la factura mientras carga (KdsInvoiceHeaderSkeleton): mismo markup que el
7520
- header real, con anchos fijos por slot. */
7521
- .kds-invoice-skeleton .kds-invoice-amount .kds-skeleton--text { width: 7.5em; }
7522
- .kds-invoice-skeleton .kds-invoice-code .kds-skeleton--text { width: 13em; }
7523
- .kds-invoice-skeleton .kds-kv dt .kds-skeleton--text { width: 4.5em; }
7524
- .kds-invoice-skeleton .kds-kv dd .kds-skeleton--text { width: 65%; }
7532
+ header real. El "Detalle del cobro" es decorativo, no un botón: replica lo que da el alto
7533
+ al toggle real (line-height normal de button + caret de 1.25em de font-size-base). */
7534
+ .kds-invoice-skeleton .kds-expand-toggle {
7535
+ cursor: default;
7536
+ line-height: normal;
7537
+ min-height: calc(var(--kds-font-size-base) * 1.25);
7538
+ }
7525
7539
 
7526
7540
  /* Titulo del body de la card: alineado a la izquierda, sin importar que el consumidor
7527
7541
  traiga .kds-text-center. Va con especificidad de contexto (screen + card) a proposito:
@@ -8207,17 +8221,18 @@ svg[fill='none'] {
8207
8221
  border-radius: var(--kds-radius-card);
8208
8222
  }
8209
8223
 
8210
- /* Body card con acción (opt-in, KTUF-388): alto mínimo acotado para que el card no salte de
8211
- alto entre pasos y la acción (submit) quede anclada al fondo con `.kds-mt-auto`. No cambia
8212
- el default de arriba: lo pide cada app.
8224
+ /* Body card con acción (opt-in, KTUF-388): un mismo alto mínimo para el loader, los pasos de
8225
+ progreso, los formularios y los resultados, así el card no salta de alto entre pasos, y la
8226
+ acción (submit) queda anclada al fondo con `.kds-mt-auto`. No cambia el default de arriba:
8227
+ solo lo toma quien pone el modificador (khenshin-web, también en su card de carga).
8228
+ - 36rem + el padding del card (624px): el alto del formulario de login de un banco, la
8229
+ pantalla más alta del flujo, en teléfono y en desktop.
8213
8230
  - Valor fijo, sin vh/dvh: en un iframe (KTUF-239) el viewport es el propio iframe, cuyo
8214
8231
  alto lo da el RESIZE del contenido; un mínimo relativo al viewport se realimenta.
8215
- - 21rem = alto del card de carga en desktop (loader 18rem + padding spacing-3 x2), así el
8216
- paso loader -> formulario no cambia de alto. Ajustable con el token.
8217
8232
  - El contenido directo (form) crece para que la acción baje dentro de él y no compita
8218
8233
  con el `margin-top: auto` de .kds-card-version. */
8219
8234
  .kds-screen > .kds-card-elevated.kds-card-elevated--action {
8220
- min-height: var(--kds-card-action-min-height, 21rem);
8235
+ min-height: calc(36rem + 2 * var(--kds-spacing-3));
8221
8236
  }
8222
8237
 
8223
8238
  .kds-card-elevated--action > form {
@@ -8226,6 +8241,27 @@ svg[fill='none'] {
8226
8241
  flex-direction: column;
8227
8242
  }
8228
8243
 
8244
+ /* Pantallas cuyas acciones van en un .kds-btn-stack hijo directo del card (resultados:
8245
+ éxito, fallo, timeout, pago manual): el stack se ancla al fondo como el submit de un form.
8246
+ Su margen de siempre (spacing-2) pasa a padding para conservar el respiro mínimo, y la
8247
+ versión que le sigue deja de absorber espacio; si no, el libre se repartía entre los dos
8248
+ márgenes automáticos y el botón quedaba a media altura. */
8249
+ .kds-card-elevated--action > .kds-btn-stack {
8250
+ margin-top: auto;
8251
+ padding-top: var(--kds-spacing-2);
8252
+ }
8253
+
8254
+ .kds-card-elevated--action > .kds-btn-stack ~ .kds-card-version {
8255
+ margin-top: 0;
8256
+ }
8257
+
8258
+ /* Un loader dentro del card (pasos de progreso) no suma su propio mínimo: ya lo da el card.
8259
+ Si no, el card crecía el alto de la línea de versión en cada paso de carga y volvía a
8260
+ encoger al llegar el formulario. El loader se centra en el alto que el card le deja. */
8261
+ .kds-card-elevated--action .kds-secure-loader {
8262
+ min-height: 0;
8263
+ }
8264
+
8229
8265
  /* Variante sin radio superior: pantallas de resultado (éxito/fallo/timeout) que van
8230
8266
  SIN header arriba — la body card va sola y su tope queda plano (flush) en vez de
8231
8267
  con esquinas redondeadas sueltas. El padding del card sigue manejando el inset. */