@khipu/design-system 0.2.0-alpha.13 → 0.2.0-alpha.15

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-18T17:09:39.680Z
14
+ * Generated: 2026-05-19T17:14:11.113Z
15
15
  *
16
16
  * To regenerate:
17
17
  * cd design-system && npm run tokens:generate
@@ -2161,6 +2161,17 @@ body.dark {
2161
2161
  transition: border-color 0.2s, box-shadow 0.2s, outline-color 0.2s;
2162
2162
  }
2163
2163
 
2164
+ /* === TEXTAREA FIX === */
2165
+ /* BeerCSS base sets minimal block padding; add breathing room for textarea */
2166
+ .field > textarea {
2167
+ padding-block: 0.75rem;
2168
+ resize: vertical;
2169
+ }
2170
+
2171
+ .field.label > textarea {
2172
+ padding-block-start: 1.5rem;
2173
+ }
2174
+
2164
2175
  /* ==========================================
2165
2176
  NOTCH VISIBILITY (opacity)
2166
2177
  ========================================== */
@@ -5032,7 +5043,6 @@ dialog#surveyModal button.circle {
5032
5043
  color: var(--kds-color-primary-main);
5033
5044
  font-weight: var(--kds-font-weight-medium);
5034
5045
  font-size: var(--kds-font-size-sm);
5035
- padding-bottom: var(--kds-spacing-1-25);
5036
5046
  cursor: pointer;
5037
5047
  display: inline-flex;
5038
5048
  align-items: center;
@@ -5648,6 +5658,13 @@ div.kds-invoice-header,
5648
5658
  align-content: initial;
5649
5659
  }
5650
5660
 
5661
+ /* Mobile collapsed state: center-align so merchant tile aligns with the smaller amount */
5662
+ @media (max-width: 767px) {
5663
+ .kds-invoice-sticky.is-collapsed .kds-invoice-header {
5664
+ align-items: center;
5665
+ }
5666
+ }
5667
+
5651
5668
  /* Reset BeerCSS sibling margin on <p> inside invoice header — specificity (0,4,1) ties BeerCSS, wins by source order */
5652
5669
  .kds-card-elevated.kds-invoice-sticky .kds-invoice-header p.kds-invoice-amount,
5653
5670
  .kds-card-elevated.kds-invoice-sticky .kds-invoice-header p.kds-invoice-code {
@@ -5655,7 +5672,7 @@ div.kds-invoice-header,
5655
5672
  }
5656
5673
 
5657
5674
  .kds-invoice-amount {
5658
- font-weight: var(--kds-font-weight-bold);
5675
+ font-weight: var(--kds-font-weight-semibold);
5659
5676
  font-size: var(--kds-font-size-3xl);
5660
5677
  line-height: var(--kds-line-height-tight);
5661
5678
  letter-spacing: var(--kds-letter-spacing-wide);
@@ -5721,7 +5738,7 @@ div.kds-invoice-header,
5721
5738
 
5722
5739
  /* -- Card Title -- */
5723
5740
  .kds-card-title {
5724
- font-weight: 700;
5741
+ font-weight: var(--kds-font-weight-semibold);
5725
5742
  font-size: var(--kds-font-size-base);
5726
5743
  line-height: 1.5;
5727
5744
  letter-spacing: -0.31px;
@@ -5750,7 +5767,7 @@ div.kds-invoice-header,
5750
5767
  margin: 0;
5751
5768
  font-size: var(--kds-font-size-sm);
5752
5769
  line-height: var(--kds-line-height-relaxed);
5753
- font-weight: var(--kds-font-weight-bold);
5770
+ font-weight: var(--kds-font-weight-semibold);
5754
5771
  letter-spacing: normal;
5755
5772
  color: var(--kds-color-gray-800);
5756
5773
  min-width: 0;
@@ -5780,7 +5797,13 @@ div.kds-invoice-header,
5780
5797
  flex-direction: column;
5781
5798
  gap: var(--kds-spacing-1-5);
5782
5799
  margin: 0;
5783
- padding: 0 0 var(--kds-spacing-2);
5800
+ padding: 0;
5801
+ }
5802
+
5803
+ @media (max-width: 767px) {
5804
+ .kds-detail-list {
5805
+ padding-bottom: var(--kds-spacing-2);
5806
+ }
5784
5807
  }
5785
5808
 
5786
5809
  .kds-detail-group {
@@ -6043,17 +6066,39 @@ button.kds-btn-success::after {
6043
6066
  }
6044
6067
 
6045
6068
  .kds-bill-description-picture {
6046
- width: 120px;
6047
- height: 120px;
6069
+ max-width: 100px;
6048
6070
  object-fit: contain;
6049
6071
  background: var(--kds-color-background-paper);
6050
- padding: var(--kds-spacing-1-25);
6051
- border-radius: var(--kds-radius-md);
6052
- margin-top: var(--kds-spacing-1);
6072
+ margin-top: var(--kds-spacing-1-25);
6053
6073
  display: block;
6054
6074
  box-sizing: content-box;
6055
6075
  }
6056
6076
 
6077
+ /* -- Bill Attachments -- */
6078
+ .kds-bill-attachments {
6079
+ display: flex;
6080
+ flex-direction: column;
6081
+ gap: var(--kds-spacing-0-75);
6082
+ }
6083
+
6084
+ .kds-bill-attachment {
6085
+ display: inline-flex;
6086
+ align-items: center;
6087
+ gap: var(--kds-spacing-0-75);
6088
+ color: var(--kds-color-primary-main);
6089
+ font-size: var(--kds-font-size-sm);
6090
+ font-weight: var(--kds-font-weight-medium);
6091
+ text-decoration: none;
6092
+ }
6093
+
6094
+ .kds-bill-attachment:hover span {
6095
+ text-decoration: underline;
6096
+ }
6097
+
6098
+ .kds-bill-attachment i {
6099
+ font-size: var(--kds-font-size-lg);
6100
+ }
6101
+
6057
6102
  /* -- Share Card (mustContinue) -- */
6058
6103
  .kds-share-card {
6059
6104
  margin-top: var(--kds-spacing-2);
@@ -7002,7 +7047,7 @@ a.kds-copy-all-btn.copied:hover {
7002
7047
  .kds-monto-row {
7003
7048
  display: flex;
7004
7049
  justify-content: space-between;
7005
- align-items: flex-end;
7050
+ align-items: flex-start;
7006
7051
  padding: var(--kds-spacing-1-75) 0 var(--kds-spacing-1);
7007
7052
  border-top: 1px dashed var(--kds-color-divider);
7008
7053
  margin-top: var(--kds-spacing-1-75);
@@ -1330,9 +1330,9 @@ const ui = _context.ui;
1330
1330
  function initStickyInvoice(root) {
1331
1331
  root = root || document;
1332
1332
 
1333
- // Progressive collapse range: 0px (expanded) to 30px (collapsed)
1333
+ // Progressive collapse range: 0px (expanded) to 20px (collapsed)
1334
1334
  var COLLAPSE_START = 0;
1335
- var COLLAPSE_END = 30;
1335
+ var COLLAPSE_END = 20;
1336
1336
 
1337
1337
  var lastScrollY = 0;
1338
1338
  var ticking = false;
@@ -1380,13 +1380,16 @@ const ui = _context.ui;
1380
1380
  if (!currentScreen.style.getPropertyValue('--collapse-collapsible-h')) {
1381
1381
  var collapsible = currentSticky.querySelector('.kds-invoice-collapsible');
1382
1382
  if (collapsible) {
1383
- currentScreen.style.setProperty('--collapse-collapsible-h', Math.min(collapsible.offsetHeight, 87) + 'px');
1383
+ currentScreen.style.setProperty('--collapse-collapsible-h', collapsible.offsetHeight + 'px');
1384
1384
  }
1385
1385
  }
1386
1386
 
1387
1387
  // Single DOM write per frame — set on screen (parent) so it cascades to sticky + siblings
1388
1388
  currentScreen.style.setProperty('--collapse-progress', progress);
1389
1389
 
1390
+ // Toggle collapsed state class for discrete styling that can't interpolate (e.g. align-items)
1391
+ currentSticky.classList.toggle('is-collapsed', progress >= 1);
1392
+
1390
1393
  // Close expand panels as soon as the sticky header starts collapsing
1391
1394
  if (progress > 0) {
1392
1395
  currentSticky.querySelectorAll('[data-expand-toggle][aria-expanded="true"]').forEach(function(toggle) {
@@ -1410,6 +1413,9 @@ const ui = _context.ui;
1410
1413
  screen.style.removeProperty('--collapse-progress');
1411
1414
  screen.style.removeProperty('--collapse-collapsible-h');
1412
1415
  });
1416
+ root.querySelectorAll('.kds-invoice-sticky.is-collapsed').forEach(function(el) {
1417
+ el.classList.remove('is-collapsed');
1418
+ });
1413
1419
  }
1414
1420
  });
1415
1421