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

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-07T15:44:56.536Z
17
17
  *
18
18
  * To regenerate:
19
19
  * cd design-system && npm run tokens:generate
@@ -2525,15 +2525,18 @@ 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
+ .kds-card-elevated--action espeja este valor (y el de telefono): cambiarlos juntos. */
2529
2530
  min-height: 18rem;
2530
2531
  }
2531
2532
 
2532
- /* En telefono la carga si ocupa el alto util de la pantalla: ahi la card va a ancho
2533
- completo y un loader corto se lee como una franja perdida en el medio. */
2533
+ /* En telefono la carga es mas alta: ahi la card va a ancho completo y un loader corto se
2534
+ lee como una franja perdida en el medio. 22rem (card de 400px con su padding) en vez de
2535
+ los 36rem de antes (624px): con el header arriba, la pantalla entera cabe en el alto util
2536
+ de la mayoria de los telefonos (KTUF-388). */
2534
2537
  @media (max-width: 767px) {
2535
2538
  .kds-secure-loader {
2536
- min-height: 36rem;
2539
+ min-height: 22rem;
2537
2540
  }
2538
2541
  }
2539
2542
 
@@ -7490,15 +7493,22 @@ div.kds-invoice-header,
7490
7493
  animation: kds-skeleton-pulse 1.4s ease-in-out infinite;
7491
7494
  }
7492
7495
 
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. */
7496
+ /* Texto: un texto de relleno con la tinta transparente, puesto DENTRO del elemento real
7497
+ (p.kds-invoice-amount, dd, ...). Usa la fuente, el tamaño y el alto de línea del slot, así
7498
+ que ancho y alto calzan con el contenido que reemplaza (también dentro de contenedores
7499
+ flex, donde una caja de alto fijo perdía el alto de línea) y el cambio no desplaza nada. */
7496
7500
  .kds-skeleton--text {
7497
- display: inline-block;
7498
- width: 100%;
7499
- height: 1em;
7500
- vertical-align: middle;
7501
+ color: transparent;
7501
7502
  border-radius: var(--kds-radius-sm);
7503
+ -webkit-box-decoration-break: clone;
7504
+ box-decoration-break: clone;
7505
+ user-select: none;
7506
+ /* Inline, el gris cubre la altura de la letra; se recorta arriba y abajo para que las
7507
+ barras de líneas vecinas no se toquen. Solo visual: el layout no cambia. Va inline
7508
+ también dentro de un flex (envuelto en un span): como item de flex cubriría todo el
7509
+ alto de línea y quedaría más grueso que el resto. */
7510
+ -webkit-clip-path: inset(0.2em 0 round var(--kds-radius-sm));
7511
+ clip-path: inset(0.2em 0 round var(--kds-radius-sm));
7502
7512
  }
7503
7513
 
7504
7514
  [data-theme="dark"] .kds-skeleton {
@@ -7517,11 +7527,13 @@ div.kds-invoice-header,
7517
7527
  }
7518
7528
 
7519
7529
  /* 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%; }
7530
+ header real. El "Detalle del cobro" es decorativo, no un botón: replica lo que da el alto
7531
+ al toggle real (line-height normal de button + caret de 1.25em de font-size-base). */
7532
+ .kds-invoice-skeleton .kds-expand-toggle {
7533
+ cursor: default;
7534
+ line-height: normal;
7535
+ min-height: calc(var(--kds-font-size-base) * 1.25);
7536
+ }
7525
7537
 
7526
7538
  /* Titulo del body de la card: alineado a la izquierda, sin importar que el consumidor
7527
7539
  traiga .kds-text-center. Va con especificidad de contexto (screen + card) a proposito:
@@ -8207,17 +8219,24 @@ svg[fill='none'] {
8207
8219
  border-radius: var(--kds-radius-card);
8208
8220
  }
8209
8221
 
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.
8213
- - Valor fijo, sin vh/dvh: en un iframe (KTUF-239) el viewport es el propio iframe, cuyo
8222
+ /* Body card con acción (opt-in, KTUF-388): mismo alto mínimo que el card de carga, para que
8223
+ el card no salte de alto entre el loader, los pasos de progreso y los formularios, y la
8224
+ acción (submit) quede anclada al fondo con `.kds-mt-auto`. No cambia el default de arriba:
8225
+ solo lo toma quien pone el modificador (khenshin-web).
8226
+ - Espeja el min-height de .kds-secure-loader (18rem / 22rem en teléfono) más el padding
8227
+ vertical del card en el flujo (spacing-3 x2). Si cambia el del loader, cambia acá.
8228
+ - Valores fijos, sin vh/dvh: en un iframe (KTUF-239) el viewport es el propio iframe, cuyo
8214
8229
  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
8230
  - El contenido directo (form) crece para que la acción baje dentro de él y no compita
8218
8231
  con el `margin-top: auto` de .kds-card-version. */
8219
8232
  .kds-screen > .kds-card-elevated.kds-card-elevated--action {
8220
- min-height: var(--kds-card-action-min-height, 21rem);
8233
+ min-height: calc(18rem + 2 * var(--kds-spacing-3));
8234
+ }
8235
+
8236
+ @media (max-width: 767px) {
8237
+ .kds-screen > .kds-card-elevated.kds-card-elevated--action {
8238
+ min-height: calc(22rem + 2 * var(--kds-spacing-3));
8239
+ }
8221
8240
  }
8222
8241
 
8223
8242
  .kds-card-elevated--action > form {
@@ -8226,6 +8245,27 @@ svg[fill='none'] {
8226
8245
  flex-direction: column;
8227
8246
  }
8228
8247
 
8248
+ /* Pantallas cuyas acciones van en un .kds-btn-stack hijo directo del card (resultados:
8249
+ éxito, fallo, timeout, pago manual): el stack se ancla al fondo como el submit de un form.
8250
+ Su margen de siempre (spacing-2) pasa a padding para conservar el respiro mínimo, y la
8251
+ versión que le sigue deja de absorber espacio; si no, el libre se repartía entre los dos
8252
+ márgenes automáticos y el botón quedaba a media altura. */
8253
+ .kds-card-elevated--action > .kds-btn-stack {
8254
+ margin-top: auto;
8255
+ padding-top: var(--kds-spacing-2);
8256
+ }
8257
+
8258
+ .kds-card-elevated--action > .kds-btn-stack ~ .kds-card-version {
8259
+ margin-top: 0;
8260
+ }
8261
+
8262
+ /* Un loader dentro del card (pasos de progreso) no suma su propio mínimo: ya lo da el card.
8263
+ Si no, el card crecía el alto de la línea de versión en cada paso de carga y volvía a
8264
+ encoger al llegar el formulario. El loader se centra en el alto que el card le deja. */
8265
+ .kds-card-elevated--action .kds-secure-loader {
8266
+ min-height: 0;
8267
+ }
8268
+
8229
8269
  /* Variante sin radio superior: pantallas de resultado (éxito/fallo/timeout) que van
8230
8270
  SIN header arriba — la body card va sola y su tope queda plano (flush) en vez de
8231
8271
  con esquinas redondeadas sueltas. El padding del card sigue manejando el inset. */