@khipu/design-system 0.1.0-alpha.46 → 0.1.0-alpha.48

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-04-23T17:10:43.679Z
14
+ * Generated: 2026-04-23T20:33:31.235Z
15
15
  *
16
16
  * To regenerate:
17
17
  * cd design-system && npm run tokens:generate
@@ -4569,12 +4569,13 @@ dialog#surveyModal button.circle {
4569
4569
  width: 100%;
4570
4570
  padding: var(--kds-spacing-1-75);
4571
4571
  background: var(--kds-color-surface);
4572
+ color: var(--kds-color-text-primary);
4572
4573
  border: 1px solid var(--kds-color-divider);
4573
4574
  border-radius: var(--kds-radius-lg);
4574
4575
  text-align: left;
4575
4576
  cursor: pointer;
4576
4577
  transition: border-color 0.2s, background 0.2s;
4577
- margin-bottom: var(--kds-spacing-2);
4578
+ min-height: fit-content;
4578
4579
  }
4579
4580
 
4580
4581
  .kds-bank-row:hover {
@@ -4853,6 +4854,7 @@ dialog#surveyModal button.circle {
4853
4854
  transition: background 0.15s, border-color 0.15s;
4854
4855
  font-size: var(--kds-font-size-sm);
4855
4856
  color: var(--kds-color-text-primary);
4857
+ min-height: fit-content;
4856
4858
  }
4857
4859
 
4858
4860
  .kds-copy-row:hover {
@@ -5149,3 +5151,577 @@ dialog#surveyModal button.circle {
5149
5151
  color: var(--kds-color-primary-contrast);
5150
5152
  box-shadow: var(--kds-shadow-card);
5151
5153
  }
5154
+
5155
+
5156
+ /* ========================================
5157
+ PAYMENT FLOW — DOMAIN COMPONENTS
5158
+ Invoice header, KV grid, dividers,
5159
+ amount summary, recap, success button
5160
+ ======================================== */
5161
+
5162
+ /* -- Invoice Header (amount + merchant tile) -- */
5163
+ .kds-invoice-header {
5164
+ display: flex;
5165
+ align-items: flex-start;
5166
+ justify-content: space-between;
5167
+ gap: var(--kds-spacing-2);
5168
+ }
5169
+
5170
+ .kds-invoice-amount {
5171
+ font-weight: 700;
5172
+ font-size: 30px;
5173
+ line-height: 1.25;
5174
+ letter-spacing: 0.4px;
5175
+ color: var(--kds-color-text-primary);
5176
+ margin: 0;
5177
+ }
5178
+
5179
+ .kds-invoice-amount.success {
5180
+ color: var(--kds-color-success-main);
5181
+ }
5182
+
5183
+ .kds-invoice-code {
5184
+ font-size: var(--kds-font-size-xs);
5185
+ color: var(--kds-color-text-hint);
5186
+ margin-top: var(--kds-spacing-0-5);
5187
+ }
5188
+
5189
+ .kds-invoice-merchant {
5190
+ width: 64px;
5191
+ height: 64px;
5192
+ border-radius: var(--kds-radius-md);
5193
+ background: var(--kds-color-primary-deep);
5194
+ display: grid;
5195
+ place-items: center;
5196
+ color: #fff;
5197
+ flex-shrink: 0;
5198
+ }
5199
+
5200
+ .kds-invoice-merchant i {
5201
+ font-size: 30px;
5202
+ }
5203
+
5204
+ /* -- Card Title -- */
5205
+ .kds-card-title {
5206
+ font-weight: 700;
5207
+ font-size: var(--kds-font-size-base);
5208
+ line-height: 1.5;
5209
+ letter-spacing: -0.31px;
5210
+ color: var(--kds-color-text-primary);
5211
+ margin: 0 0 var(--kds-spacing-2);
5212
+ }
5213
+
5214
+ /* -- Key-Value Grid -- */
5215
+ .kds-kv {
5216
+ display: grid;
5217
+ grid-template-columns: auto 1fr;
5218
+ row-gap: var(--kds-spacing-1);
5219
+ column-gap: var(--kds-spacing-1-5);
5220
+ align-items: baseline;
5221
+ }
5222
+
5223
+ .kds-kv dt {
5224
+ font-size: var(--kds-font-size-xs);
5225
+ letter-spacing: 0.2px;
5226
+ color: var(--kds-color-text-hint);
5227
+ text-transform: uppercase;
5228
+ margin: 0;
5229
+ }
5230
+
5231
+ .kds-kv dd {
5232
+ margin: 0;
5233
+ font-size: var(--kds-font-size-sm);
5234
+ font-weight: 600;
5235
+ color: var(--kds-color-text-primary);
5236
+ }
5237
+
5238
+ /* -- Dividers -- */
5239
+ .kds-hr {
5240
+ height: 1px;
5241
+ background: var(--kds-color-divider);
5242
+ margin: var(--kds-spacing-2) 0;
5243
+ border: 0;
5244
+ }
5245
+
5246
+ .kds-hr-dashed {
5247
+ height: 0;
5248
+ border: 0;
5249
+ border-top: 1px dashed var(--kds-color-divider);
5250
+ margin: var(--kds-spacing-2) 0;
5251
+ }
5252
+
5253
+ /* -- Detail List + Group (dt/dd in expand panels) -- */
5254
+ .kds-detail-list {
5255
+ display: flex;
5256
+ flex-direction: column;
5257
+ gap: var(--kds-spacing-1-75);
5258
+ margin: var(--kds-spacing-1-75) 0 0;
5259
+ padding: 0;
5260
+ }
5261
+
5262
+ .kds-detail-group {
5263
+ margin-bottom: var(--kds-spacing-1-75);
5264
+ }
5265
+
5266
+ .kds-detail-group:last-child {
5267
+ margin-bottom: 0;
5268
+ }
5269
+
5270
+ .kds-detail-group dt {
5271
+ font-size: var(--kds-font-size-xs);
5272
+ letter-spacing: 0.2px;
5273
+ color: var(--kds-color-text-hint);
5274
+ text-transform: uppercase;
5275
+ margin: 0 0 var(--kds-spacing-0-5);
5276
+ }
5277
+
5278
+ .kds-detail-group dd {
5279
+ margin: 0;
5280
+ font-size: var(--kds-font-size-sm);
5281
+ line-height: 1.45;
5282
+ color: var(--kds-color-text-primary);
5283
+ }
5284
+
5285
+ /* -- Amount Summary Row -- */
5286
+ .kds-amount-row {
5287
+ display: flex;
5288
+ justify-content: space-between;
5289
+ align-items: flex-start;
5290
+ padding: var(--kds-spacing-1-75) 0 var(--kds-spacing-1);
5291
+ border-top: 1px dashed var(--kds-color-divider);
5292
+ margin-top: var(--kds-spacing-1-75);
5293
+ }
5294
+
5295
+ .kds-amount-row-title {
5296
+ font-weight: 700;
5297
+ font-size: var(--kds-font-size-base);
5298
+ color: var(--kds-color-text-primary);
5299
+ }
5300
+
5301
+ .kds-amount-row-subtitle {
5302
+ font-size: var(--kds-font-size-xs);
5303
+ color: var(--kds-color-text-hint);
5304
+ margin-top: var(--kds-spacing-0-5);
5305
+ }
5306
+
5307
+ .kds-amount-row-value {
5308
+ font-weight: 700;
5309
+ font-size: 24px;
5310
+ color: var(--kds-color-text-primary);
5311
+ }
5312
+
5313
+ /* -- Recap Section -- */
5314
+ .kds-recap-header {
5315
+ display: flex;
5316
+ align-items: center;
5317
+ gap: var(--kds-spacing-0-75);
5318
+ font-weight: 700;
5319
+ font-size: var(--kds-font-size-sm);
5320
+ color: var(--kds-color-text-primary);
5321
+ }
5322
+
5323
+ .kds-recap-header i {
5324
+ font-size: var(--kds-font-size-base);
5325
+ color: var(--kds-color-primary-main);
5326
+ }
5327
+
5328
+ .kds-recap-list {
5329
+ margin: var(--kds-spacing-1-25) 0 0;
5330
+ padding: 0;
5331
+ list-style: none;
5332
+ display: flex;
5333
+ flex-direction: column;
5334
+ gap: var(--kds-spacing-0-75);
5335
+ }
5336
+
5337
+ .kds-recap-list li {
5338
+ display: flex;
5339
+ justify-content: space-between;
5340
+ align-items: center;
5341
+ font-size: var(--kds-font-size-sm);
5342
+ }
5343
+
5344
+ .kds-recap-list .k {
5345
+ color: var(--kds-color-text-secondary);
5346
+ }
5347
+
5348
+ .kds-recap-list .v {
5349
+ color: var(--kds-color-text-primary);
5350
+ font-weight: 500;
5351
+ }
5352
+
5353
+ .kds-recap-list .v.placeholder {
5354
+ color: var(--kds-color-text-hint);
5355
+ }
5356
+
5357
+ /* -- Button Success (green CTA) -- */
5358
+ button.kds-btn-success,
5359
+ a.kds-btn-success {
5360
+ background: var(--kds-color-success-main);
5361
+ color: #fff;
5362
+ border: none;
5363
+ box-shadow: 0px 3px 1px -2px rgba(0,0,0,.2),
5364
+ 0px 2px 2px 0px rgba(0,0,0,.14),
5365
+ 0px 1px 5px 0px rgba(0,0,0,.12);
5366
+ }
5367
+
5368
+ button.kds-btn-success:hover:not(:disabled),
5369
+ a.kds-btn-success:hover:not(:disabled) {
5370
+ background: var(--kds-color-success-dark);
5371
+ }
5372
+
5373
+ button.kds-btn-success:disabled,
5374
+ a.kds-btn-success:disabled {
5375
+ background-color: var(--kds-color-action-disabled-bg);
5376
+ color: var(--kds-color-action-disabled);
5377
+ box-shadow: none;
5378
+ }
5379
+
5380
+ /* -- Field Helper Text -- */
5381
+ .kds-field-helper {
5382
+ font-size: var(--kds-font-size-xs);
5383
+ color: var(--kds-color-text-secondary);
5384
+ margin: var(--kds-spacing-0-75) var(--kds-spacing-1-75) 0;
5385
+ }
5386
+
5387
+ /* -- Bank Row Avatar with initials -- */
5388
+ .kds-bank-row-logo.initials {
5389
+ border-radius: var(--kds-radius-full);
5390
+ color: #fff;
5391
+ font-weight: 700;
5392
+ font-size: 11px;
5393
+ width: 32px;
5394
+ height: 32px;
5395
+ }
5396
+
5397
+ .kds-bank-row-logo.neutral {
5398
+ background: var(--kds-color-divider);
5399
+ color: var(--kds-color-text-secondary);
5400
+ }
5401
+
5402
+ .kds-bank-row-logo.neutral i {
5403
+ font-size: 18px;
5404
+ }
5405
+
5406
+ /* Reset ripple on additional interactive elements */
5407
+ .kds-bank-row::after,
5408
+ button.kds-btn-success::after {
5409
+ display: none;
5410
+ }
5411
+
5412
+ /* -- Expand Section (border-top separator before expand toggle) -- */
5413
+ .kds-expand-section {
5414
+ margin-top: var(--kds-spacing-2);
5415
+ border-top: 1px solid var(--kds-color-divider);
5416
+ padding-top: var(--kds-spacing-1-5);
5417
+ }
5418
+
5419
+ /* -- Alert inline (borderless, used inside cards) -- */
5420
+ .kds-alert-inline {
5421
+ border: none;
5422
+ }
5423
+
5424
+ /* -- Card dimmed (behind overlays) -- */
5425
+ .kds-card-dimmed {
5426
+ opacity: 0.45;
5427
+ pointer-events: none;
5428
+ }
5429
+
5430
+ /* -- Button stack (vertical button group) -- */
5431
+ .kds-btn-stack {
5432
+ display: flex;
5433
+ flex-direction: column;
5434
+ gap: var(--kds-spacing-1-25);
5435
+ margin-top: var(--kds-spacing-2);
5436
+ }
5437
+
5438
+ /* -- Bank list (bank row container) -- */
5439
+ .kds-bank-list {
5440
+ display: flex;
5441
+ flex-direction: column;
5442
+ gap: var(--kds-spacing-1);
5443
+ margin-top: var(--kds-spacing-1);
5444
+ }
5445
+
5446
+ /* -- Field group spacing -- */
5447
+ .kds-field-group {
5448
+ margin-top: var(--kds-spacing-1-75);
5449
+ }
5450
+
5451
+ /* -- Color utilities -- */
5452
+ .kds-color-primary { color: var(--kds-color-primary-main); }
5453
+ .kds-color-success { color: var(--kds-color-success-main); }
5454
+ .kds-color-warning { color: var(--kds-color-warning-main); }
5455
+ .kds-color-error { color: var(--kds-color-error-main); }
5456
+ .kds-color-info { color: var(--kds-color-info-main); }
5457
+
5458
+ /* -- Text utilities -- */
5459
+ .kds-text-secondary {
5460
+ color: var(--kds-color-text-secondary);
5461
+ font-size: var(--kds-font-size-sm);
5462
+ }
5463
+
5464
+ .kds-link {
5465
+ color: var(--kds-color-primary-main);
5466
+ text-decoration: none;
5467
+ }
5468
+ .kds-link:hover { text-decoration: underline; }
5469
+
5470
+ /* -- Field helper (centered) -- */
5471
+ .kds-field-helper-center {
5472
+ text-align: center;
5473
+ margin-top: var(--kds-spacing-1-25);
5474
+ }
5475
+
5476
+ /* -- Bottom sheet illustration -- */
5477
+ .kds-bottom-sheet-illustration {
5478
+ margin: var(--kds-spacing-1) auto var(--kds-spacing-1-75);
5479
+ display: grid;
5480
+ place-items: center;
5481
+ }
5482
+ .kds-bottom-sheet-illustration svg {
5483
+ fill: none;
5484
+ }
5485
+
5486
+ /* -- Bottom sheet description (subtle / smaller) -- */
5487
+ .kds-bottom-sheet-description-subtle {
5488
+ color: var(--kds-color-text-secondary);
5489
+ font-size: var(--kds-font-size-sm);
5490
+ }
5491
+
5492
+ /* -- Copy header with top spacing -- */
5493
+ .kds-copy-header.spaced {
5494
+ margin-top: var(--kds-spacing-2-5);
5495
+ }
5496
+
5497
+ /* ================================================================
5498
+ PAYMENT FLOW LAYOUT
5499
+ Stage, flow container, brand row, screen transitions
5500
+ ================================================================ */
5501
+
5502
+ /* Prevent card hover elevation in payment flow */
5503
+ .kds-payment-stage .kds-card-elevated:hover {
5504
+ box-shadow: var(--kds-shadow-card);
5505
+ }
5506
+
5507
+ /* Payment stage — full-viewport centered wrapper */
5508
+ .kds-payment-stage {
5509
+ min-height: 100vh;
5510
+ display: flex;
5511
+ justify-content: center;
5512
+ padding: var(--kds-spacing-2-5) var(--kds-spacing-2) var(--kds-spacing-8);
5513
+ }
5514
+
5515
+ /* Payment flow — narrow column */
5516
+ .kds-payment-flow {
5517
+ width: 100%;
5518
+ max-width: var(--kds-stage-narrow-max-width, 448px);
5519
+ display: flex;
5520
+ flex-direction: column;
5521
+ gap: var(--kds-spacing-3);
5522
+ }
5523
+
5524
+ /* Brand logo row */
5525
+ .kds-brand-row {
5526
+ padding: 0 var(--kds-spacing-0-5);
5527
+ display: flex;
5528
+ align-items: center;
5529
+ }
5530
+ .kds-brand-row svg {
5531
+ height: 22px;
5532
+ display: block;
5533
+ }
5534
+
5535
+ /* Screen transitions (multi-step flows) */
5536
+ .kds-screen {
5537
+ display: none;
5538
+ animation: kds-fadein .22s ease both;
5539
+ }
5540
+ .kds-screen.active {
5541
+ display: flex;
5542
+ flex-direction: column;
5543
+ gap: var(--kds-spacing-3);
5544
+ }
5545
+ @keyframes kds-fadein {
5546
+ from { opacity: 0; transform: translateY(var(--kds-spacing-0-5)); }
5547
+ to { opacity: 1; transform: none; }
5548
+ }
5549
+
5550
+ /* ================================================================
5551
+ PROTOTYPE NAVIGATION & TWEAKS
5552
+ Dev-only components for navigating and tweaking prototypes
5553
+ ================================================================ */
5554
+
5555
+ /* Proto nav — floating pill navigation */
5556
+ .kds-proto-nav {
5557
+ position: fixed;
5558
+ left: 50%;
5559
+ bottom: var(--kds-spacing-1-75);
5560
+ transform: translateX(-50%);
5561
+ display: flex;
5562
+ align-items: center;
5563
+ gap: var(--kds-spacing-0-75);
5564
+ background: var(--kds-color-text-primary);
5565
+ color: var(--kds-color-background-paper);
5566
+ padding: var(--kds-spacing-0-75) var(--kds-spacing-1);
5567
+ border-radius: 9999px;
5568
+ box-shadow: var(--kds-shadow-4);
5569
+ z-index: 40;
5570
+ font-size: var(--kds-font-size-xs);
5571
+ }
5572
+ .kds-proto-nav-label {
5573
+ padding: 0 var(--kds-spacing-0-75);
5574
+ color: var(--kds-color-text-hint);
5575
+ }
5576
+ .kds-proto-nav-arrow {
5577
+ background: transparent;
5578
+ border: 0;
5579
+ color: var(--kds-color-text-disabled);
5580
+ cursor: pointer;
5581
+ width: var(--kds-spacing-3-5);
5582
+ height: var(--kds-spacing-3-5);
5583
+ border-radius: 9999px;
5584
+ display: grid;
5585
+ place-items: center;
5586
+ }
5587
+ .kds-proto-nav-arrow:hover {
5588
+ color: var(--kds-color-background-paper);
5589
+ background: rgba(255, 255, 255, .08);
5590
+ }
5591
+
5592
+ /* Tweaks panel — floating config panel */
5593
+ .kds-proto-tweaks {
5594
+ position: fixed;
5595
+ right: var(--kds-spacing-2);
5596
+ bottom: var(--kds-spacing-8);
5597
+ width: 260px;
5598
+ background: var(--kds-color-background-paper);
5599
+ border-radius: var(--kds-radius-card);
5600
+ box-shadow: var(--kds-shadow-4);
5601
+ border: 1px solid var(--kds-color-divider);
5602
+ padding: var(--kds-spacing-1-75);
5603
+ font-size: var(--kds-font-size-body2);
5604
+ z-index: 45;
5605
+ display: none;
5606
+ }
5607
+ .kds-proto-tweaks.open { display: block; }
5608
+ .kds-proto-tweaks h4 {
5609
+ margin: 0 0 var(--kds-spacing-1);
5610
+ font-size: var(--kds-font-size-body2);
5611
+ font-weight: var(--kds-font-weight-bold);
5612
+ }
5613
+ .kds-proto-tweak {
5614
+ display: flex;
5615
+ align-items: center;
5616
+ justify-content: space-between;
5617
+ gap: var(--kds-spacing-1);
5618
+ margin-bottom: var(--kds-spacing-1);
5619
+ }
5620
+ .kds-proto-tweak-column {
5621
+ display: flex;
5622
+ flex-direction: column;
5623
+ align-items: stretch;
5624
+ gap: var(--kds-spacing-0-75);
5625
+ margin-bottom: var(--kds-spacing-1);
5626
+ }
5627
+ .kds-proto-chips {
5628
+ display: flex;
5629
+ gap: var(--kds-spacing-0-75);
5630
+ flex-wrap: wrap;
5631
+ }
5632
+ .kds-proto-chip {
5633
+ border: 1px solid var(--kds-color-divider);
5634
+ background: var(--kds-color-background-paper);
5635
+ color: var(--kds-color-text-primary);
5636
+ padding: var(--kds-spacing-0-5) var(--kds-spacing-1);
5637
+ border-radius: 9999px;
5638
+ font-size: var(--kds-font-size-xs);
5639
+ cursor: pointer;
5640
+ }
5641
+ .kds-proto-chip.active {
5642
+ background: var(--kds-color-primary-faint);
5643
+ border-color: var(--kds-color-primary-main);
5644
+ color: var(--kds-color-primary-main);
5645
+ }
5646
+ .kds-proto-swatch {
5647
+ width: 22px;
5648
+ height: 22px;
5649
+ border-radius: var(--kds-spacing-0-75);
5650
+ border: 1px solid rgba(0, 0, 0, .08);
5651
+ cursor: pointer;
5652
+ }
5653
+ .kds-proto-swatch.active {
5654
+ outline: 2px solid var(--kds-color-primary-main);
5655
+ outline-offset: var(--kds-spacing-0-25);
5656
+ }
5657
+ .kds-proto-input {
5658
+ margin-top: var(--kds-spacing-0-75);
5659
+ padding: var(--kds-spacing-0-75) var(--kds-spacing-1);
5660
+ border: 1px solid var(--kds-color-divider);
5661
+ border-radius: var(--kds-spacing-0-75);
5662
+ font: inherit;
5663
+ }
5664
+
5665
+ /* ================================================================
5666
+ DEMO PAGE LAYOUT
5667
+ Showcase container, sections, labels for component demo pages
5668
+ ================================================================ */
5669
+
5670
+ .kds-demo-container {
5671
+ max-width: 480px;
5672
+ margin: 0 auto;
5673
+ display: flex;
5674
+ flex-direction: column;
5675
+ gap: var(--kds-spacing-3);
5676
+ padding: var(--kds-spacing-3) var(--kds-spacing-2);
5677
+ }
5678
+
5679
+ .kds-demo-hero { text-align: center; }
5680
+ .kds-demo-hero h1 { font-size: var(--kds-font-size-xl); margin: 0; }
5681
+ .kds-demo-hero p {
5682
+ font-size: var(--kds-font-size-sm);
5683
+ color: var(--kds-color-text-secondary);
5684
+ margin: var(--kds-spacing-0-5) 0 0;
5685
+ }
5686
+
5687
+ .kds-demo-section {
5688
+ background: var(--kds-color-background-paper);
5689
+ border-radius: var(--kds-radius-card);
5690
+ box-shadow: var(--kds-shadow-card);
5691
+ padding: var(--kds-spacing-2);
5692
+ }
5693
+ .kds-demo-section + .kds-demo-section { margin-top: var(--kds-spacing-1-5); }
5694
+
5695
+ .kds-demo-label {
5696
+ font-size: var(--kds-font-size-caption);
5697
+ color: var(--kds-color-text-hint);
5698
+ text-transform: uppercase;
5699
+ letter-spacing: 0.06em;
5700
+ }
5701
+
5702
+ .kds-demo-section-title {
5703
+ font-size: var(--kds-font-size-sm);
5704
+ font-weight: var(--kds-font-weight-semibold);
5705
+ }
5706
+
5707
+ .kds-demo-tab-output {
5708
+ font-size: var(--kds-font-size-xs);
5709
+ color: var(--kds-color-text-hint);
5710
+ text-align: center;
5711
+ margin: 0;
5712
+ }
5713
+
5714
+ .kds-demo-expand-header {
5715
+ display: flex;
5716
+ justify-content: space-between;
5717
+ align-items: baseline;
5718
+ }
5719
+
5720
+ .kds-demo-tabs-grid {
5721
+ display: flex;
5722
+ flex-direction: column;
5723
+ gap: var(--kds-spacing-2);
5724
+ }
5725
+
5726
+ .kds-demo-center { text-align: center; }
5727
+ .kds-demo-spacer { height: var(--kds-spacing-3); }