@khipu/design-system 0.2.0-alpha.2 → 0.2.0-alpha.3

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.
@@ -11,7 +11,7 @@
11
11
  *
12
12
  * AUTO-GENERATED FILE - DO NOT EDIT MANUALLY
13
13
  * Source: design-system/src/tokens/tokens.json
14
- * Generated: 2026-05-05T20:41:24.239Z
14
+ * Generated: 2026-05-13T19:14:37.483Z
15
15
  *
16
16
  * To regenerate:
17
17
  * cd design-system && npm run tokens:generate
@@ -4907,19 +4907,45 @@ dialog#surveyModal button.circle {
4907
4907
  align-items: center;
4908
4908
  justify-content: center;
4909
4909
  gap: var(--kds-spacing-1);
4910
- color: var(--kds-color-text-disabled);
4910
+ color: var(--kds-color-gray-400);
4911
4911
  font-size: var(--kds-font-size-xs);
4912
+ letter-spacing: var(--kds-letter-spacing-wide);
4912
4913
  padding: var(--kds-spacing-1) 0;
4913
4914
  }
4914
4915
 
4915
- .kds-secure-footer i {
4916
- font-size: var(--kds-font-size-sm);
4916
+ /* Desktop: footer inside card hidden; Mobile: footer outside card hidden */
4917
+ .kds-card-elevated > .kds-secure-footer {
4918
+ display: none;
4917
4919
  }
4918
4920
 
4919
- /* Inside a card: push to bottom with auto margin, subtle top spacing */
4920
- .kds-secure-footer.inside {
4921
- margin-top: auto;
4922
- padding-top: var(--kds-spacing-3);
4921
+ @media (max-width: 767px) {
4922
+ .kds-card-elevated > .kds-secure-footer {
4923
+ display: flex;
4924
+ }
4925
+ .kds-screen > .kds-secure-footer {
4926
+ display: none;
4927
+ }
4928
+ }
4929
+
4930
+ .kds-secure-footer-lock {
4931
+ width: 12px;
4932
+ height: 12px;
4933
+ flex: 0 0 auto;
4934
+ display: block;
4935
+ fill: none;
4936
+ stroke: currentColor;
4937
+ stroke-width: 1.75;
4938
+ stroke-linecap: round;
4939
+ stroke-linejoin: round;
4940
+ }
4941
+
4942
+ .kds-secure-footer .khipu-mark {
4943
+ height: 11px;
4944
+ width: auto;
4945
+ flex: 0 0 auto;
4946
+ display: block;
4947
+ object-fit: contain;
4948
+ overflow: visible;
4923
4949
  }
4924
4950
 
4925
4951
  .kds-secure-footer-code {
@@ -4934,7 +4960,7 @@ dialog#surveyModal button.circle {
4934
4960
  .kds-expand-toggle {
4935
4961
  background: none;
4936
4962
  border: 0;
4937
- padding: var(--kds-spacing-0-5) 0;
4963
+ padding: 0;
4938
4964
  color: var(--kds-color-primary-main);
4939
4965
  font-weight: var(--kds-font-weight-medium);
4940
4966
  font-size: var(--kds-font-size-sm);
@@ -4974,7 +5000,7 @@ dialog#surveyModal button.circle {
4974
5000
 
4975
5001
  .kds-expand-panel.open {
4976
5002
  max-height: 800px;
4977
- margin-top: var(--kds-spacing-1);
5003
+ margin-top: 0;
4978
5004
  }
4979
5005
 
4980
5006
  /* ========================================
@@ -5451,7 +5477,13 @@ dialog#surveyModal button.circle {
5451
5477
  opacity: calc(1 - var(--collapse-progress) * 1.5);
5452
5478
  }
5453
5479
 
5454
- /* Amount: NO font-size change (source keeps 30px always) */
5480
+ /* Amount: 30px 24px (progressive) */
5481
+ .kds-invoice-sticky .kds-invoice-amount {
5482
+ font-size: calc(
5483
+ var(--kds-font-size-3xl) -
5484
+ (var(--kds-font-size-3xl) - var(--kds-font-size-2xl)) * var(--collapse-progress)
5485
+ );
5486
+ }
5455
5487
 
5456
5488
  /* Merchant tile: 64×64px → 50×50px, radius 8px → 6px (progressive) */
5457
5489
  .kds-invoice-sticky .kds-invoice-merchant {
@@ -5477,10 +5509,11 @@ dialog#surveyModal button.circle {
5477
5509
  );
5478
5510
  }
5479
5511
 
5480
- /* Code: margin-top 4px → 0 (progressive). Font-size stays 12px. */
5512
+ /* Code: margin-top 8px → 0, font-size 12px → 11px (progressive) */
5481
5513
  .kds-invoice-sticky .kds-invoice-code {
5482
5514
  margin-top: calc(var(--kds-spacing-1) * (1 - var(--collapse-progress)));
5483
5515
  margin-bottom: 0;
5516
+ font-size: calc(var(--kds-font-size-xs) - 1px * var(--collapse-progress));
5484
5517
  }
5485
5518
 
5486
5519
  /* Pull all siblings after sticky wrapper up to fill clipped gap.
@@ -5510,23 +5543,19 @@ dialog#surveyModal button.circle {
5510
5543
 
5511
5544
  /* -- Invoice Collapsible (kv rows below header) -- */
5512
5545
  .kds-invoice-collapsible {
5513
- margin-top: var(--kds-spacing-1-5);
5546
+ margin-top: var(--kds-spacing-1);
5514
5547
  }
5515
5548
 
5516
- /* -- Invoice Summary (kv + expand toggle side by side) -- */
5549
+ /* -- Invoice Summary -- */
5517
5550
  .kds-invoice-summary {
5518
5551
  display: flex;
5519
5552
  align-items: flex-end;
5520
- gap: var(--kds-spacing-2);
5553
+ gap: var(--kds-spacing-1);
5521
5554
  }
5522
5555
  .kds-invoice-summary .kds-kv {
5523
5556
  flex: 1;
5524
5557
  min-width: 0;
5525
5558
  }
5526
- .kds-invoice-summary .kds-expand-toggle {
5527
- flex-shrink: 0;
5528
- white-space: nowrap;
5529
- }
5530
5559
 
5531
5560
  /* -- Invoice Header (amount + merchant tile) -- */
5532
5561
  /* Compound selector overrides BeerCSS `header { padding:0 1rem; display:grid; align-content:center }` */
@@ -5549,11 +5578,11 @@ div.kds-invoice-header,
5549
5578
  }
5550
5579
 
5551
5580
  .kds-invoice-amount {
5552
- font-weight: 700;
5553
- font-size: 30px;
5554
- line-height: 1.25;
5555
- letter-spacing: 0.4px;
5556
- color: var(--kds-color-text-primary);
5581
+ font-weight: var(--kds-font-weight-bold);
5582
+ font-size: var(--kds-font-size-3xl);
5583
+ line-height: var(--kds-line-height-tight);
5584
+ letter-spacing: var(--kds-letter-spacing-wide);
5585
+ color: var(--kds-color-gray-900);
5557
5586
  margin: 0;
5558
5587
  }
5559
5588
 
@@ -5562,12 +5591,21 @@ div.kds-invoice-header,
5562
5591
  }
5563
5592
 
5564
5593
  .kds-invoice-code {
5594
+ font-family: var(--kds-font-family-mono);
5565
5595
  font-size: var(--kds-font-size-xs);
5566
- color: var(--kds-color-text-hint);
5596
+ font-weight: var(--kds-font-weight-regular);
5597
+ letter-spacing: var(--kds-letter-spacing-wider);
5598
+ font-variant-numeric: tabular-nums;
5599
+ color: var(--kds-color-gray-400);
5600
+ text-transform: uppercase;
5567
5601
  margin: 0;
5568
5602
  margin-top: var(--kds-spacing-1);
5569
5603
  }
5570
5604
 
5605
+ .kds-invoice-code::first-letter {
5606
+ text-transform: uppercase;
5607
+ }
5608
+
5571
5609
  .kds-invoice-merchant {
5572
5610
  width: 64px;
5573
5611
  height: 64px;
@@ -5595,6 +5633,13 @@ div.kds-invoice-header,
5595
5633
  line-height: 1;
5596
5634
  }
5597
5635
 
5636
+ .kds-invoice-merchant img {
5637
+ width: 100%;
5638
+ height: 100%;
5639
+ object-fit: cover;
5640
+ border-radius: var(--kds-radius-md);
5641
+ }
5642
+
5598
5643
  /* -- Card Title -- */
5599
5644
  .kds-card-title {
5600
5645
  font-weight: 700;
@@ -5616,17 +5661,21 @@ div.kds-invoice-header,
5616
5661
 
5617
5662
  .kds-kv dt {
5618
5663
  font-size: var(--kds-font-size-xs);
5619
- letter-spacing: 0.2px;
5620
- color: var(--kds-color-text-hint);
5664
+ line-height: var(--kds-line-height-relaxed);
5665
+ letter-spacing: normal;
5666
+ color: var(--kds-color-text-secondary);
5621
5667
  text-transform: uppercase;
5622
5668
  margin: 0;
5623
5669
  }
5624
5670
 
5625
5671
  .kds-kv dd {
5626
5672
  margin: 0;
5627
- font-size: var(--kds-font-size-sm);
5628
- font-weight: 600;
5629
- color: var(--kds-color-text-primary);
5673
+ font-size: var(--kds-font-size-xs);
5674
+ line-height: var(--kds-line-height-relaxed);
5675
+ font-weight: var(--kds-font-weight-bold);
5676
+ letter-spacing: normal;
5677
+ color: var(--kds-color-gray-800);
5678
+ min-width: 0;
5630
5679
  }
5631
5680
 
5632
5681
  /* -- Dividers -- */
@@ -5648,13 +5697,13 @@ div.kds-invoice-header,
5648
5697
  .kds-detail-list {
5649
5698
  display: flex;
5650
5699
  flex-direction: column;
5651
- gap: var(--kds-spacing-1-75);
5652
- margin: var(--kds-spacing-1-75) 0 0;
5653
- padding: 0;
5700
+ gap: var(--kds-spacing-1-5);
5701
+ margin: 0;
5702
+ padding: 0 0 var(--kds-spacing-1);
5654
5703
  }
5655
5704
 
5656
5705
  .kds-detail-group {
5657
- margin-bottom: var(--kds-spacing-1-75);
5706
+ margin-bottom: var(--kds-spacing-1-5);
5658
5707
  }
5659
5708
 
5660
5709
  .kds-detail-group:last-child {
@@ -5663,7 +5712,7 @@ div.kds-invoice-header,
5663
5712
 
5664
5713
  .kds-detail-group dt {
5665
5714
  font-size: var(--kds-font-size-xs);
5666
- letter-spacing: 0.2px;
5715
+ letter-spacing: var(--kds-letter-spacing-wide);
5667
5716
  color: var(--kds-color-text-hint);
5668
5717
  text-transform: uppercase;
5669
5718
  margin: 0 0 var(--kds-spacing-0-5);
@@ -5672,7 +5721,7 @@ div.kds-invoice-header,
5672
5721
  .kds-detail-group dd {
5673
5722
  margin: 0;
5674
5723
  font-size: var(--kds-font-size-sm);
5675
- line-height: 1.45;
5724
+ line-height: var(--kds-line-height-normal);
5676
5725
  color: var(--kds-color-text-primary);
5677
5726
  }
5678
5727
 
@@ -5888,6 +5937,134 @@ button.kds-btn-success::after {
5888
5937
  margin-top: var(--kds-spacing-2-5);
5889
5938
  }
5890
5939
 
5940
+ /* -- PSP Banner -- */
5941
+ .kds-psp-banner {
5942
+ padding: var(--kds-spacing-0-5) var(--kds-spacing-1-25);
5943
+ font-size: var(--kds-font-size-sm);
5944
+ border-radius: var(--kds-radius-sm);
5945
+ margin-top: var(--kds-spacing-1-5);
5946
+ }
5947
+
5948
+ /* -- Bill Description -- */
5949
+ .kds-bill-description-body {
5950
+ font-family: inherit;
5951
+ white-space: pre-wrap;
5952
+ overflow-wrap: anywhere;
5953
+ margin: 0;
5954
+ padding: 0;
5955
+ background: transparent;
5956
+ color: var(--kds-color-text-secondary);
5957
+ font-size: var(--kds-font-size-sm);
5958
+ line-height: var(--kds-line-height-normal);
5959
+ }
5960
+
5961
+ .kds-bill-description-picture {
5962
+ width: 120px;
5963
+ height: 120px;
5964
+ object-fit: contain;
5965
+ background: var(--kds-color-background-paper);
5966
+ padding: var(--kds-spacing-1-25);
5967
+ border-radius: var(--kds-radius-md);
5968
+ margin-top: var(--kds-spacing-1);
5969
+ display: block;
5970
+ box-sizing: content-box;
5971
+ }
5972
+
5973
+ /* -- Share Card (mustContinue) -- */
5974
+ .kds-share-card {
5975
+ margin-top: var(--kds-spacing-2);
5976
+ padding: var(--kds-spacing-2);
5977
+ border: var(--kds-border-width-sm) solid var(--kds-color-gray-200);
5978
+ border-radius: var(--kds-radius-lg);
5979
+ background: var(--kds-color-background-paper);
5980
+ }
5981
+
5982
+ .kds-share-eyebrow {
5983
+ font-size: var(--kds-font-size-caption);
5984
+ letter-spacing: var(--kds-letter-spacing-wide);
5985
+ color: var(--kds-color-gray-500);
5986
+ text-transform: uppercase;
5987
+ font-weight: var(--kds-font-weight-bold);
5988
+ margin: 0 0 var(--kds-spacing-0-75);
5989
+ }
5990
+
5991
+ .kds-share-copy {
5992
+ font-size: var(--kds-font-size-body1);
5993
+ line-height: var(--kds-line-height-normal);
5994
+ color: var(--kds-color-gray-800);
5995
+ margin: 0 0 var(--kds-spacing-1-5);
5996
+ }
5997
+
5998
+ .kds-share-divider {
5999
+ height: 0;
6000
+ border: 0;
6001
+ border-top: var(--kds-border-width-sm) dashed var(--kds-color-gray-200);
6002
+ margin: var(--kds-spacing-1-5) 0;
6003
+ }
6004
+
6005
+ .kds-share-link {
6006
+ display: block;
6007
+ font-size: var(--kds-font-size-sm);
6008
+ color: var(--kds-color-primary-main);
6009
+ text-decoration: none;
6010
+ word-break: break-all;
6011
+ margin: 0 0 var(--kds-spacing-1-5);
6012
+ }
6013
+
6014
+ .kds-share-link:hover {
6015
+ text-decoration: underline;
6016
+ }
6017
+
6018
+ .kds-share-action {
6019
+ display: flex;
6020
+ align-items: center;
6021
+ justify-content: center;
6022
+ gap: var(--kds-spacing-0-75);
6023
+ background: none;
6024
+ border: 0;
6025
+ padding: var(--kds-spacing-0-75) var(--kds-spacing-1-25);
6026
+ cursor: pointer;
6027
+ color: var(--kds-color-text-primary);
6028
+ font-size: var(--kds-font-size-sm);
6029
+ font-family: inherit;
6030
+ border-radius: var(--kds-radius-sm);
6031
+ margin: 0 auto;
6032
+ }
6033
+
6034
+ .kds-share-action:hover {
6035
+ background: var(--kds-color-primary-hover);
6036
+ color: var(--kds-color-primary-main);
6037
+ }
6038
+
6039
+ .kds-share-action .material-symbols-outlined {
6040
+ font-size: var(--kds-font-size-2xl);
6041
+ }
6042
+
6043
+ /* -- Participants List (mustContinue) -- */
6044
+ .kds-participants {
6045
+ margin: 0 0 var(--kds-spacing-2);
6046
+ padding: var(--kds-spacing-1-5) var(--kds-spacing-1-75);
6047
+ background: var(--kds-alert-success-bg);
6048
+ border-radius: var(--kds-radius-md);
6049
+ }
6050
+
6051
+ .kds-participants-label {
6052
+ font-size: var(--kds-font-size-xs);
6053
+ font-weight: var(--kds-font-weight-bold);
6054
+ color: var(--kds-alert-success-text);
6055
+ margin: 0 0 var(--kds-spacing-0-75);
6056
+ text-transform: uppercase;
6057
+ letter-spacing: var(--kds-letter-spacing-wide);
6058
+ }
6059
+
6060
+ .kds-participants-list {
6061
+ margin: 0;
6062
+ padding-left: var(--kds-spacing-2);
6063
+ color: var(--kds-alert-success-text);
6064
+ font-size: var(--kds-font-size-sm);
6065
+ line-height: var(--kds-line-height-relaxed);
6066
+ }
6067
+
5891
6068
  /* ================================================================
5892
6069
  PAYMENT FLOW LAYOUT
5893
6070
  Stage, flow container, brand row, screen transitions
@@ -5930,6 +6107,7 @@ button.kds-btn-success::after {
5930
6107
  /* Mobile: Cards full-width with rounded corners */
5931
6108
  @media (max-width: 767px) {
5932
6109
  .kds-payment-stage {
6110
+ padding-top: 0;
5933
6111
  padding-left: 0;
5934
6112
  padding-right: 0;
5935
6113
  }
@@ -5939,7 +6117,7 @@ button.kds-btn-success::after {
5939
6117
  padding: 0;
5940
6118
  }
5941
6119
 
5942
- /* Cards: rounded corners, full width within padded stage */
6120
+ /* Cards: rounded corners, full width, explicit vertical padding */
5943
6121
  .kds-card-elevated,
5944
6122
  .khipu-card-elevated {
5945
6123
  margin-left: 0;
@@ -5948,6 +6126,18 @@ button.kds-btn-success::after {
5948
6126
  width: 100%;
5949
6127
  }
5950
6128
 
6129
+ .kds-payment-flow .kds-card-elevated {
6130
+ padding-top: var(--kds-spacing-2);
6131
+ padding-bottom: var(--kds-spacing-2);
6132
+ }
6133
+
6134
+ /* Invoice sticky card: progressive padding-top (expanded 20px → collapsed 8px).
6135
+ Overrides base rule at same specificity; source order wins here. */
6136
+ .kds-payment-flow .kds-card-elevated.kds-invoice-sticky {
6137
+ padding-top: var(--kds-spacing-1-5);
6138
+ }
6139
+
6140
+
5951
6141
  }
5952
6142
 
5953
6143
  /* Desktop: restore card padding and full border-radius on invoice sticky */
@@ -5995,6 +6185,7 @@ button.kds-btn-success::after {
5995
6185
  .kds-brand-inner {
5996
6186
  display: flex;
5997
6187
  }
6188
+
5998
6189
  }
5999
6190
 
6000
6191
  /* Screen transitions (multi-step flows) */
@@ -6008,8 +6199,8 @@ button.kds-btn-success::after {
6008
6199
  gap: var(--kds-spacing-3);
6009
6200
  }
6010
6201
  @keyframes kds-fadein {
6011
- from { opacity: 0; transform: translateY(var(--kds-spacing-0-5)); }
6012
- to { opacity: 1; transform: none; }
6202
+ from { opacity: 0; }
6203
+ to { opacity: 1; }
6013
6204
  }
6014
6205
 
6015
6206
  /* ================================================================