@revikornmann/muka-ui 0.4.0 → 0.5.0

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.
Files changed (41) hide show
  1. package/dist/cjs/components/DataPieChart/DataPieChart.js +1 -1
  2. package/dist/cjs/components/DataPieChart/DataPieChart.js.map +1 -1
  3. package/dist/cjs/components/DataTable/DataTable.css +17 -0
  4. package/dist/cjs/components/{FormProgressBar/FormProgressBar.css → ProgressTracker/ProgressTracker.css} +28 -22
  5. package/dist/cjs/components/{FormProgressBar/FormProgressBar.js → ProgressTracker/ProgressTracker.js} +20 -20
  6. package/dist/cjs/components/{FormProgressBar/FormProgressBar.js.map → ProgressTracker/ProgressTracker.js.map} +1 -1
  7. package/dist/cjs/components/ProgressTracker/index.js +8 -0
  8. package/dist/cjs/components/{FormProgressBar → ProgressTracker}/index.js.map +1 -1
  9. package/dist/cjs/components/index.js +3 -3
  10. package/dist/esm/components/DataPieChart/DataPieChart.js +1 -1
  11. package/dist/esm/components/DataPieChart/DataPieChart.js.map +1 -1
  12. package/dist/esm/components/DataTable/DataTable.css +17 -0
  13. package/dist/{styles/components/FormProgressBar.css → esm/components/ProgressTracker/ProgressTracker.css} +28 -22
  14. package/dist/esm/components/{FormProgressBar/FormProgressBar.js → ProgressTracker/ProgressTracker.js} +18 -18
  15. package/dist/esm/components/{FormProgressBar/FormProgressBar.js.map → ProgressTracker/ProgressTracker.js.map} +1 -1
  16. package/dist/esm/components/ProgressTracker/index.js +3 -0
  17. package/dist/esm/components/{FormProgressBar → ProgressTracker}/index.js.map +1 -1
  18. package/dist/esm/components/index.js +1 -1
  19. package/dist/styles/components/DataTable.css +17 -0
  20. package/dist/{esm/components/FormProgressBar/FormProgressBar.css → styles/components/ProgressTracker.css} +28 -22
  21. package/dist/styles/index.css +899 -876
  22. package/dist/styles/muka-dark.css +899 -876
  23. package/dist/styles/muka-light.css +899 -876
  24. package/dist/styles/tokens-bouwplan-dark.css +391 -391
  25. package/dist/styles/tokens-bouwplan-light.css +387 -387
  26. package/dist/styles/wireframe-dark.css +899 -876
  27. package/dist/styles/wireframe-light.css +899 -876
  28. package/dist/types/components/DataPieChart/DataPieChart.d.ts +1 -1
  29. package/dist/types/components/DataPieChart/DataPieChart.d.ts.map +1 -1
  30. package/dist/types/components/{FormProgressBar/FormProgressBar.d.ts → ProgressTracker/ProgressTracker.d.ts} +9 -9
  31. package/dist/types/components/{FormProgressBar/FormProgressBar.d.ts.map → ProgressTracker/ProgressTracker.d.ts.map} +1 -1
  32. package/dist/types/components/ProgressTracker/index.d.ts +3 -0
  33. package/dist/types/components/{FormProgressBar → ProgressTracker}/index.d.ts.map +1 -1
  34. package/dist/types/components/index.d.ts +1 -1
  35. package/package.json +1 -1
  36. package/tokens/t2-alias/brand/bouwplan/dark.json +45 -45
  37. package/tokens/t2-alias/brand/bouwplan/fonts.json +6 -6
  38. package/tokens/t2-alias/brand/bouwplan/light.json +43 -43
  39. package/dist/cjs/components/FormProgressBar/index.js +0 -8
  40. package/dist/esm/components/FormProgressBar/index.js +0 -3
  41. package/dist/types/components/FormProgressBar/index.d.ts +0 -3
@@ -5533,6 +5533,219 @@ body {
5533
5533
  }
5534
5534
 
5535
5535
 
5536
+ /* PullToRefresh */
5537
+ /* PullToRefresh Component Styles */
5538
+
5539
+ .muka-pull-to-refresh {
5540
+ position: relative;
5541
+ display: flex;
5542
+ flex-direction: column;
5543
+ width: 100%;
5544
+ height: 100%;
5545
+ overflow: hidden;
5546
+ }
5547
+
5548
+ .muka-pull-to-refresh__indicator {
5549
+ position: absolute;
5550
+ top: 0;
5551
+ left: 0;
5552
+ right: 0;
5553
+ display: flex;
5554
+ align-items: flex-end;
5555
+ justify-content: center;
5556
+ padding-bottom: var(--spacing-2);
5557
+ color: var(--color-text-subtle-default);
5558
+ overflow: hidden;
5559
+ pointer-events: none;
5560
+ z-index: 1;
5561
+ }
5562
+
5563
+ .muka-pull-to-refresh__chevron {
5564
+ display: inline-flex;
5565
+ align-items: center;
5566
+ justify-content: center;
5567
+ transition: transform 0.16s ease;
5568
+ }
5569
+
5570
+ .muka-pull-to-refresh__scroller {
5571
+ flex: 1 1 auto;
5572
+ min-height: 0;
5573
+ width: 100%;
5574
+ overflow-x: clip;
5575
+ overflow-y: auto;
5576
+ -webkit-overflow-scrolling: touch;
5577
+ overscroll-behavior-y: contain;
5578
+ touch-action: pan-y;
5579
+ will-change: transform;
5580
+ }
5581
+
5582
+
5583
+ /* ProgressTracker */
5584
+ /* ProgressTracker Component Styles — Using Muka Design Tokens */
5585
+
5586
+ /* ─── Root ──────────────────────────────────────────────── */
5587
+ .muka-progress-tracker {
5588
+ width: 100%;
5589
+ padding-bottom: var(--spacing-7);
5590
+ }
5591
+
5592
+ /* ─── Track (layered container) ─────────────────────────── */
5593
+ .muka-progress-tracker__track {
5594
+ position: relative;
5595
+ /* Vertical padding = (indicator size - connector height) / 2 = (32 - 4) / 2 = 14px */
5596
+ padding-top: 14px;
5597
+ padding-bottom: 14px;
5598
+ }
5599
+
5600
+ /* ─── Steps layer (on top) ──────────────────────────────── */
5601
+ .muka-progress-tracker__steps {
5602
+ position: absolute;
5603
+ inset: 0;
5604
+ display: flex;
5605
+ align-items: flex-start;
5606
+ justify-content: space-between;
5607
+ z-index: 2;
5608
+ }
5609
+
5610
+ /* ─── Individual step ───────────────────────────────────── */
5611
+ .muka-progress-tracker__step {
5612
+ display: flex;
5613
+ flex-direction: column;
5614
+ align-items: center;
5615
+ gap: 7px;
5616
+ position: relative;
5617
+ }
5618
+
5619
+ /* ─── Step indicator (circle) ───────────────────────────── */
5620
+ .muka-progress-tracker__indicator {
5621
+ width: 32px;
5622
+ height: 32px;
5623
+ border-radius: var(--border-radius-full);
5624
+ display: flex;
5625
+ align-items: center;
5626
+ justify-content: center;
5627
+ flex-shrink: 0;
5628
+ position: relative;
5629
+ }
5630
+
5631
+ /* Past: dark accent contrast circle with white checkmark */
5632
+ .muka-progress-tracker__indicator--past {
5633
+ background-color: var(--alias-color-accent-contrast);
5634
+ color: var(--color-text-default-inverse);
5635
+ cursor: pointer;
5636
+ }
5637
+
5638
+ .muka-progress-tracker__indicator--past:hover {
5639
+ background-color: var(--alias-color-accent-pressed);
5640
+ }
5641
+
5642
+ .muka-progress-tracker__indicator--past:focus-visible {
5643
+ outline: 2px solid var(--color-border-focus);
5644
+ outline-offset: 2px;
5645
+ }
5646
+
5647
+ /* Current: accent default circle with white number */
5648
+ .muka-progress-tracker__indicator--current {
5649
+ background-color: var(--alias-color-accent-default);
5650
+ color: var(--color-text-default-inverse);
5651
+ }
5652
+
5653
+ /* Upcoming: sunken/gray circle with dark number */
5654
+ .muka-progress-tracker__indicator--upcoming {
5655
+ background-color: var(--color-surface-sunken);
5656
+ color: var(--color-text-default-default);
5657
+ }
5658
+
5659
+ /* ─── Step number text ──────────────────────────────────── */
5660
+ .muka-progress-tracker__number {
5661
+ font-family: var(--text-label-md-bold-fontFamily);
5662
+ font-weight: var(--text-label-md-bold-fontWeight);
5663
+ font-size: var(--text-label-md-bold-fontSize);
5664
+ line-height: var(--text-label-md-bold-lineHeight);
5665
+ text-align: center;
5666
+ user-select: none;
5667
+ }
5668
+
5669
+ /* ─── Checkmark icon ────────────────────────────────────── */
5670
+ .muka-progress-tracker__check-icon {
5671
+ width: 20px;
5672
+ height: 20px;
5673
+ }
5674
+
5675
+ /* Past checkmark uses inverse foreground, matching the active step number.
5676
+ Scoped under the indicator to override the Icon component's default color. */
5677
+ .muka-progress-tracker__indicator--past .muka-progress-tracker__check-icon {
5678
+ color: var(--color-text-default-inverse);
5679
+ }
5680
+
5681
+ /* ─── Step label ────────────────────────────────────────── */
5682
+ .muka-progress-tracker__label {
5683
+ font-family: var(--text-label-sm-regular-fontFamily);
5684
+ font-weight: var(--text-label-sm-regular-fontWeight);
5685
+ font-size: var(--text-label-sm-regular-fontSize);
5686
+ line-height: var(--text-label-sm-regular-lineHeight);
5687
+ color: var(--color-text-default-default);
5688
+ text-align: center;
5689
+ max-width: 120px;
5690
+ white-space: nowrap;
5691
+ overflow: hidden;
5692
+ text-overflow: ellipsis;
5693
+ }
5694
+
5695
+ /* Current step label is bold */
5696
+ .muka-progress-tracker__label--current {
5697
+ font-family: var(--text-label-sm-bold-fontFamily);
5698
+ font-weight: var(--text-label-sm-bold-fontWeight);
5699
+ }
5700
+
5701
+ /* ─── Connectors layer (behind indicators) ──────────────── */
5702
+ .muka-progress-tracker__connectors {
5703
+ display: flex;
5704
+ align-items: center;
5705
+ /* Horizontal padding = indicator radius (32/2 = 16px) so lines meet circle centers */
5706
+ padding-left: var(--spacing-4);
5707
+ padding-right: var(--spacing-4);
5708
+ position: relative;
5709
+ z-index: 1;
5710
+ }
5711
+
5712
+ /* ─── Individual connector line ─────────────────────────── */
5713
+ .muka-progress-tracker__connector {
5714
+ flex: 1 0 0;
5715
+ height: 4px;
5716
+ min-width: 1px;
5717
+ }
5718
+
5719
+ /* Past: solid dark line */
5720
+ .muka-progress-tracker__connector--past {
5721
+ background-color: var(--alias-color-accent-contrast);
5722
+ }
5723
+
5724
+ /* Current: gradient from past (dark) toward current step */
5725
+ .muka-progress-tracker__connector--current {
5726
+ background: linear-gradient(
5727
+ to right,
5728
+ var(--alias-color-accent-contrast) 0%,
5729
+ var(--alias-color-accent-default) 100%
5730
+ );
5731
+ }
5732
+
5733
+ /* Current-right: gradient fading from current step into upcoming */
5734
+ .muka-progress-tracker__connector--current-right {
5735
+ background: linear-gradient(
5736
+ to right,
5737
+ var(--alias-color-accent-default) 0%,
5738
+ var(--alias-color-accent-default) 15%,
5739
+ var(--color-surface-sunken) 50%
5740
+ );
5741
+ }
5742
+
5743
+ /* Upcoming: solid gray line */
5744
+ .muka-progress-tracker__connector--upcoming {
5745
+ background-color: var(--color-surface-sunken);
5746
+ }
5747
+
5748
+
5536
5749
  /* Progress */
5537
5750
  /* Progress Component Styles - Using Muka Design Tokens */
5538
5751
 
@@ -5705,53 +5918,6 @@ body {
5705
5918
  }
5706
5919
 
5707
5920
 
5708
- /* PullToRefresh */
5709
- /* PullToRefresh Component Styles */
5710
-
5711
- .muka-pull-to-refresh {
5712
- position: relative;
5713
- display: flex;
5714
- flex-direction: column;
5715
- width: 100%;
5716
- height: 100%;
5717
- overflow: hidden;
5718
- }
5719
-
5720
- .muka-pull-to-refresh__indicator {
5721
- position: absolute;
5722
- top: 0;
5723
- left: 0;
5724
- right: 0;
5725
- display: flex;
5726
- align-items: flex-end;
5727
- justify-content: center;
5728
- padding-bottom: var(--spacing-2);
5729
- color: var(--color-text-subtle-default);
5730
- overflow: hidden;
5731
- pointer-events: none;
5732
- z-index: 1;
5733
- }
5734
-
5735
- .muka-pull-to-refresh__chevron {
5736
- display: inline-flex;
5737
- align-items: center;
5738
- justify-content: center;
5739
- transition: transform 0.16s ease;
5740
- }
5741
-
5742
- .muka-pull-to-refresh__scroller {
5743
- flex: 1 1 auto;
5744
- min-height: 0;
5745
- width: 100%;
5746
- overflow-x: clip;
5747
- overflow-y: auto;
5748
- -webkit-overflow-scrolling: touch;
5749
- overscroll-behavior-y: contain;
5750
- touch-action: pan-y;
5751
- will-change: transform;
5752
- }
5753
-
5754
-
5755
5921
  /* ProfileBadge */
5756
5922
  /* ProfileBadge Component Styles - Using Muka Design Tokens */
5757
5923
 
@@ -6180,49 +6346,21 @@ body {
6180
6346
  }
6181
6347
 
6182
6348
 
6183
- /* NavigationTransition */
6184
- /* NavigationTransition Component Styles */
6349
+ /* Menu */
6350
+ /* Menu Component Styles */
6185
6351
 
6186
- /* ─── Wrapper ────────────────────────────────────────── */
6352
+ /* ─── Content Container ──────────────────────────────────────────────────── */
6187
6353
 
6188
- .muka-nav-transition {
6189
- position: relative;
6190
- height: 100vh;
6191
- overflow: hidden;
6192
- }
6193
-
6194
- /* Disable interaction during animation */
6195
- .muka-nav-transition--active {
6196
- pointer-events: none;
6197
- }
6198
-
6199
- /* ─── View slots ─────────────────────────────────────── */
6200
-
6201
- .muka-nav-transition--active .muka-nav-transition__view {
6202
- position: absolute;
6203
- inset: 0;
6204
- }
6205
-
6206
- /* Z-index layering */
6207
- .muka-nav-transition__view--bottom { z-index: 1; }
6208
- .muka-nav-transition__view--top { z-index: 2; }
6209
-
6210
-
6211
- /* Menu */
6212
- /* Menu Component Styles */
6213
-
6214
- /* ─── Content Container ──────────────────────────────────────────────────── */
6215
-
6216
- .muka-menu__content {
6217
- min-width: var(--menu-content-min-width);
6218
- max-height: var(--menu-content-max-height);
6219
- overflow-y: auto;
6220
- background-color: var(--menu-content-color-background);
6221
- border: var(--menu-content-border-width) solid var(--menu-content-color-border);
6222
- border-radius: var(--menu-content-border-radius);
6223
- box-shadow: var(--menu-content-shadow);
6224
- padding: var(--menu-content-padding);
6225
- z-index: 50;
6354
+ .muka-menu__content {
6355
+ min-width: var(--menu-content-min-width);
6356
+ max-height: var(--menu-content-max-height);
6357
+ overflow-y: auto;
6358
+ background-color: var(--menu-content-color-background);
6359
+ border: var(--menu-content-border-width) solid var(--menu-content-color-border);
6360
+ border-radius: var(--menu-content-border-radius);
6361
+ box-shadow: var(--menu-content-shadow);
6362
+ padding: var(--menu-content-padding);
6363
+ z-index: 50;
6226
6364
 
6227
6365
  /* Animation */
6228
6366
  animation-duration: 150ms;
@@ -6491,6 +6629,34 @@ body {
6491
6629
  }
6492
6630
 
6493
6631
 
6632
+ /* NavigationTransition */
6633
+ /* NavigationTransition Component Styles */
6634
+
6635
+ /* ─── Wrapper ────────────────────────────────────────── */
6636
+
6637
+ .muka-nav-transition {
6638
+ position: relative;
6639
+ height: 100vh;
6640
+ overflow: hidden;
6641
+ }
6642
+
6643
+ /* Disable interaction during animation */
6644
+ .muka-nav-transition--active {
6645
+ pointer-events: none;
6646
+ }
6647
+
6648
+ /* ─── View slots ─────────────────────────────────────── */
6649
+
6650
+ .muka-nav-transition--active .muka-nav-transition__view {
6651
+ position: absolute;
6652
+ inset: 0;
6653
+ }
6654
+
6655
+ /* Z-index layering */
6656
+ .muka-nav-transition__view--bottom { z-index: 1; }
6657
+ .muka-nav-transition__view--top { z-index: 2; }
6658
+
6659
+
6494
6660
  /* ListItem */
6495
6661
  /* ListItem Component Styles - Using Muka Design Tokens */
6496
6662
 
@@ -7183,743 +7349,321 @@ li.muka-listitem {
7183
7349
  }
7184
7350
 
7185
7351
 
7186
- /* FormProgressBar */
7187
- /* FormProgressBar Component Styles — Using Muka Design Tokens */
7352
+ /* FAB */
7353
+ /* FAB (Floating Action Button) Component Styles */
7188
7354
 
7189
- /* ─── Root ──────────────────────────────────────────────── */
7190
- .muka-progress-bar {
7191
- width: 100%;
7192
- padding-bottom: var(--spacing-7);
7193
- }
7355
+ .muka-fab {
7356
+ position: fixed;
7357
+ z-index: 40;
7194
7358
 
7195
- /* ─── Track (layered container) ─────────────────────────── */
7196
- .muka-progress-bar__track {
7197
- position: relative;
7198
- /* Vertical padding = (indicator size - connector height) / 2 = (32 - 4) / 2 = 14px */
7199
- padding-top: 14px;
7200
- padding-bottom: 14px;
7201
- }
7359
+ display: inline-flex;
7360
+ align-items: center;
7361
+ justify-content: center;
7362
+ gap: var(--spacing-2);
7202
7363
 
7203
- /* ─── Steps layer (on top) ──────────────────────────────── */
7204
- .muka-progress-bar__steps {
7205
- position: absolute;
7206
- inset: 0;
7207
- display: flex;
7208
- align-items: flex-start;
7209
- justify-content: space-between;
7210
- z-index: 2;
7211
- }
7364
+ border: none;
7365
+ cursor: pointer;
7366
+ font-family: inherit;
7367
+ box-shadow: var(--shadow-level4);
7212
7368
 
7213
- /* ─── Individual step ───────────────────────────────────── */
7214
- .muka-progress-bar__step {
7215
- display: flex;
7216
- flex-direction: column;
7217
- align-items: center;
7218
- gap: 7px;
7219
- position: relative;
7369
+ transition: transform 0.12s ease, box-shadow 0.12s ease, background-color 0.12s ease;
7370
+ -webkit-tap-highlight-color: transparent;
7220
7371
  }
7221
7372
 
7222
- /* ─── Step indicator (circle) ───────────────────────────── */
7223
- .muka-progress-bar__indicator {
7224
- width: 32px;
7225
- height: 32px;
7226
- border-radius: var(--border-radius-full);
7227
- display: flex;
7228
- align-items: center;
7229
- justify-content: center;
7230
- flex-shrink: 0;
7231
- position: relative;
7373
+ .muka-fab:active {
7374
+ transform: scale(0.96);
7375
+ box-shadow: var(--shadow-level3);
7232
7376
  }
7233
7377
 
7234
- /* Past: dark accent contrast circle with white checkmark */
7235
- .muka-progress-bar__indicator--past {
7236
- background-color: var(--alias-color-accent-contrast);
7237
- color: var(--color-text-default-inverse);
7238
- cursor: pointer;
7378
+ .muka-fab:focus-visible {
7379
+ outline: 2px solid var(--color-action-default);
7380
+ outline-offset: 2px;
7239
7381
  }
7240
7382
 
7241
- .muka-progress-bar__indicator--past:hover {
7242
- opacity: 0.85;
7383
+ .muka-fab:disabled {
7384
+ opacity: 0.5;
7385
+ cursor: not-allowed;
7386
+ box-shadow: none;
7243
7387
  }
7244
7388
 
7245
- .muka-progress-bar__indicator--past:focus-visible {
7246
- outline: 2px solid var(--color-border-focus);
7247
- outline-offset: 2px;
7389
+ /* ─── Variants ────────────────────────────────────────── */
7390
+
7391
+ .muka-fab--primary {
7392
+ background-color: var(--color-action-default);
7393
+ color: var(--color-text-inverse-default);
7248
7394
  }
7249
7395
 
7250
- /* Current: accent default circle with white number */
7251
- .muka-progress-bar__indicator--current {
7252
- background-color: var(--alias-color-accent-default);
7253
- color: var(--color-text-default-inverse);
7396
+ .muka-fab--primary:hover:not(:disabled) {
7397
+ background-color: var(--color-action-hover);
7254
7398
  }
7255
7399
 
7256
- /* Upcoming: sunken/gray circle with dark number */
7257
- .muka-progress-bar__indicator--upcoming {
7258
- background-color: var(--color-surface-sunken);
7400
+ .muka-fab--secondary {
7401
+ background-color: var(--color-surface-level3);
7259
7402
  color: var(--color-text-default-default);
7260
7403
  }
7261
7404
 
7262
- /* ─── Step number text ──────────────────────────────────── */
7263
- .muka-progress-bar__number {
7264
- font-family: var(--text-label-md-bold-fontFamily);
7265
- font-weight: var(--text-label-md-bold-fontWeight);
7266
- font-size: var(--text-label-md-bold-fontSize);
7267
- line-height: var(--text-label-md-bold-lineHeight);
7268
- text-align: center;
7269
- user-select: none;
7405
+ .muka-fab--secondary:hover:not(:disabled) {
7406
+ background-color: var(--color-surface-level2);
7270
7407
  }
7271
7408
 
7272
- /* ─── Checkmark icon ────────────────────────────────────── */
7273
- .muka-progress-bar__check-icon {
7274
- width: 20px;
7275
- height: 20px;
7409
+ /* ─── Sizes (circular by default) ─────────────────────── */
7410
+
7411
+ .muka-fab--md {
7412
+ width: 56px;
7413
+ height: 56px;
7414
+ border-radius: 50%;
7276
7415
  }
7277
7416
 
7278
- /* ─── Step label ────────────────────────────────────────── */
7279
- .muka-progress-bar__label {
7280
- font-family: var(--text-label-sm-regular-fontFamily);
7281
- font-weight: var(--text-label-sm-regular-fontWeight);
7282
- font-size: var(--text-label-sm-regular-fontSize);
7283
- line-height: var(--text-label-sm-regular-lineHeight);
7284
- color: var(--color-text-default-default);
7285
- text-align: center;
7286
- max-width: 120px;
7287
- white-space: nowrap;
7288
- overflow: hidden;
7289
- text-overflow: ellipsis;
7417
+ .muka-fab--lg {
7418
+ width: 64px;
7419
+ height: 64px;
7420
+ border-radius: 50%;
7290
7421
  }
7291
7422
 
7292
- /* Current step label is bold */
7293
- .muka-progress-bar__label--current {
7294
- font-family: var(--text-label-sm-bold-fontFamily);
7295
- font-weight: var(--text-label-sm-bold-fontWeight);
7423
+ /* ─── Extended (pill shape with label) ────────────────── */
7424
+
7425
+ .muka-fab--extended {
7426
+ width: auto;
7427
+ height: auto;
7428
+ padding: var(--spacing-3) var(--spacing-4);
7429
+ border-radius: var(--radius-full);
7296
7430
  }
7297
7431
 
7298
- /* ─── Connectors layer (behind indicators) ──────────────── */
7299
- .muka-progress-bar__connectors {
7300
- display: flex;
7432
+ .muka-fab--extended.muka-fab--lg {
7433
+ padding: var(--spacing-4) var(--spacing-5);
7434
+ }
7435
+
7436
+ .muka-fab__icon {
7437
+ display: inline-flex;
7301
7438
  align-items: center;
7302
- /* Horizontal padding = indicator radius (32/2 = 16px) so lines meet circle centers */
7303
- padding-left: var(--spacing-4);
7304
- padding-right: var(--spacing-4);
7305
- position: relative;
7306
- z-index: 1;
7439
+ justify-content: center;
7440
+ width: 24px;
7441
+ height: 24px;
7307
7442
  }
7308
7443
 
7309
- /* ─── Individual connector line ─────────────────────────── */
7310
- .muka-progress-bar__connector {
7311
- flex: 1 0 0;
7312
- height: 4px;
7313
- min-width: 1px;
7444
+ .muka-fab__icon svg {
7445
+ width: 100%;
7446
+ height: 100%;
7314
7447
  }
7315
7448
 
7316
- /* Past: solid dark line */
7317
- .muka-progress-bar__connector--past {
7318
- background-color: var(--alias-color-accent-contrast);
7449
+ .muka-fab__label {
7450
+ font-family: var(--text-label-md-semibold-fontFamily);
7451
+ font-weight: var(--text-label-md-semibold-fontWeight);
7452
+ font-size: var(--text-label-md-semibold-fontSize);
7453
+ line-height: var(--text-label-md-semibold-lineHeight);
7319
7454
  }
7320
7455
 
7321
- /* Current: gradient from past (dark) toward current step */
7322
- .muka-progress-bar__connector--current {
7323
- background: linear-gradient(
7324
- to right,
7325
- var(--alias-color-accent-contrast) 0%,
7326
- var(--alias-color-accent-default) 100%
7327
- );
7456
+ /* ─── Positioning ─────────────────────────────────────── */
7457
+
7458
+ .muka-fab--bottom-right {
7459
+ right: var(--spacing-4);
7460
+ bottom: var(--spacing-4);
7328
7461
  }
7329
7462
 
7330
- /* Current-right: gradient fading from current step into upcoming */
7331
- .muka-progress-bar__connector--current-right {
7332
- background: linear-gradient(
7333
- to right,
7334
- var(--alias-color-accent-default) 0%,
7335
- var(--alias-color-accent-default) 15%,
7336
- var(--color-surface-sunken) 50%
7337
- );
7463
+ .muka-fab--bottom-left {
7464
+ left: var(--spacing-4);
7465
+ bottom: var(--spacing-4);
7338
7466
  }
7339
7467
 
7340
- /* Upcoming: solid gray line */
7341
- .muka-progress-bar__connector--upcoming {
7342
- background-color: var(--color-surface-sunken);
7468
+ .muka-fab--bottom-center {
7469
+ left: 50%;
7470
+ bottom: var(--spacing-4);
7471
+ transform: translateX(-50%);
7343
7472
  }
7344
7473
 
7474
+ .muka-fab--bottom-center:active {
7475
+ transform: translateX(-50%) scale(0.96);
7476
+ }
7345
7477
 
7346
- /* FileUpload */
7347
- /* FileUpload Component Styles */
7478
+ /* Add the iOS home-indicator inset to the bottom offset. */
7479
+ .muka-fab:not(.muka-fab--no-safe-area) {
7480
+ bottom: calc(var(--spacing-4) + env(safe-area-inset-bottom));
7481
+ }
7348
7482
 
7349
- .muka-fileupload-wrapper {
7350
- display: flex;
7351
- flex-direction: column;
7352
- gap: var(--spacing-3);
7353
- width: 100%;
7483
+ /* Lateral safe-area for landscape iPhone with notch. */
7484
+ .muka-fab--bottom-right:not(.muka-fab--no-safe-area) {
7485
+ right: max(var(--spacing-4), env(safe-area-inset-right));
7354
7486
  }
7355
7487
 
7356
- /* Dropzone */
7357
- .muka-fileupload {
7488
+ .muka-fab--bottom-left:not(.muka-fab--no-safe-area) {
7489
+ left: max(var(--spacing-4), env(safe-area-inset-left));
7490
+ }
7491
+
7492
+
7493
+ /* EmptyState */
7494
+ /* EmptyState Component Styles - Using Muka Design Tokens */
7495
+
7496
+ .muka-emptystate {
7358
7497
  display: flex;
7359
7498
  flex-direction: column;
7360
7499
  align-items: center;
7361
7500
  justify-content: center;
7362
- gap: var(--fileupload-dropzone-gap);
7363
- padding: var(--fileupload-dropzone-padding-md);
7364
- background-color: var(--fileupload-dropzone-color-default-background);
7365
- border: var(--fileupload-dropzone-border-width) dashed var(--fileupload-dropzone-color-default-border);
7366
- border-radius: var(--fileupload-dropzone-radius);
7367
- cursor: pointer;
7368
- transition: background-color 0.2s ease, border-color 0.2s ease;
7501
+ gap: var(--emptystate-container-gap);
7502
+ max-width: var(--emptystate-container-maxWidth);
7503
+ margin: 0 auto;
7369
7504
  text-align: center;
7370
- min-height: 120px;
7371
7505
  }
7372
7506
 
7373
- .muka-fileupload:focus-visible {
7374
- outline: 2px solid var(--color-border-focus);
7375
- outline-offset: 2px;
7507
+ /* Alignment variants */
7508
+ .muka-emptystate--left {
7509
+ align-items: flex-start;
7510
+ text-align: left;
7376
7511
  }
7377
7512
 
7378
7513
  /* Size variants */
7379
- .muka-fileupload--sm {
7380
- padding: var(--fileupload-dropzone-padding-sm);
7381
- min-height: 80px;
7382
- }
7383
-
7384
- .muka-fileupload--lg {
7385
- padding: var(--fileupload-dropzone-padding-lg);
7386
- min-height: 160px;
7514
+ .muka-emptystate--sm {
7515
+ padding: var(--emptystate-container-padding-sm);
7387
7516
  }
7388
7517
 
7389
- /* Button variant */
7390
- .muka-fileupload--button {
7391
- flex-direction: row;
7392
- min-height: auto;
7393
- padding: var(--spacing-2) var(--spacing-3);
7394
- border-style: solid;
7395
- border-width: var(--border-width-regular);
7396
- border-radius: var(--border-radius-md);
7518
+ .muka-emptystate--md {
7519
+ padding: var(--emptystate-container-padding-md);
7397
7520
  }
7398
7521
 
7399
- /* Hover state */
7400
- .muka-fileupload:hover:not(.muka-fileupload--disabled) {
7401
- background-color: var(--fileupload-dropzone-color-hover-background);
7402
- border-color: var(--fileupload-dropzone-color-hover-border);
7522
+ .muka-emptystate--lg {
7523
+ padding: var(--emptystate-container-padding-lg);
7403
7524
  }
7404
7525
 
7405
- /* Active/drag state */
7406
- .muka-fileupload--active:not(.muka-fileupload--disabled) {
7407
- background-color: var(--fileupload-dropzone-color-active-background);
7408
- border-color: var(--fileupload-dropzone-color-active-border);
7526
+ /* Visual (icon or illustration) */
7527
+ .muka-emptystate__visual {
7528
+ display: flex;
7529
+ align-items: center;
7530
+ justify-content: center;
7531
+ color: var(--emptystate-icon-color);
7532
+ flex-shrink: 0;
7409
7533
  }
7410
7534
 
7411
- /* Disabled state */
7412
- .muka-fileupload--disabled {
7413
- background-color: var(--fileupload-dropzone-color-disabled-background);
7414
- border-color: var(--fileupload-dropzone-color-disabled-border);
7415
- cursor: not-allowed;
7416
- opacity: 0.6;
7535
+ .muka-emptystate--sm .muka-emptystate__visual {
7536
+ width: var(--emptystate-icon-size-sm);
7537
+ height: var(--emptystate-icon-size-sm);
7417
7538
  }
7418
7539
 
7419
- /* Hidden file input */
7420
- .muka-fileupload__input {
7421
- position: absolute;
7422
- width: 1px;
7423
- height: 1px;
7424
- padding: 0;
7425
- margin: -1px;
7426
- overflow: hidden;
7427
- clip: rect(0, 0, 0, 0);
7428
- white-space: nowrap;
7429
- border: 0;
7540
+ .muka-emptystate--md .muka-emptystate__visual {
7541
+ width: var(--emptystate-icon-size-md);
7542
+ height: var(--emptystate-icon-size-md);
7430
7543
  }
7431
7544
 
7432
- /* Content container */
7433
- .muka-fileupload__content {
7434
- display: flex;
7435
- flex-direction: column;
7436
- align-items: center;
7437
- gap: var(--spacing-2);
7545
+ .muka-emptystate--lg .muka-emptystate__visual {
7546
+ width: var(--emptystate-icon-size-lg);
7547
+ height: var(--emptystate-icon-size-lg);
7438
7548
  }
7439
7549
 
7440
- /* Upload icon */
7441
- .muka-fileupload__icon {
7442
- display: flex;
7443
- align-items: center;
7444
- justify-content: center;
7445
- width: var(--size-3xl);
7446
- height: var(--size-3xl);
7447
- color: var(--fileupload-dropzone-color-default-foreground);
7550
+ .muka-emptystate__visual svg {
7551
+ width: 100%;
7552
+ height: 100%;
7448
7553
  }
7449
7554
 
7450
- .muka-fileupload__icon svg {
7555
+ .muka-emptystate__visual img {
7451
7556
  width: 100%;
7452
7557
  height: 100%;
7558
+ object-fit: contain;
7453
7559
  }
7454
7560
 
7455
- .muka-fileupload--sm .muka-fileupload__icon {
7456
- width: var(--size-2xl);
7457
- height: var(--size-2xl);
7561
+ /* Content */
7562
+ .muka-emptystate__content {
7563
+ display: flex;
7564
+ flex-direction: column;
7565
+ gap: var(--spacing-2);
7458
7566
  }
7459
7567
 
7460
- .muka-fileupload--lg .muka-fileupload__icon {
7461
- width: var(--size-4xl);
7462
- height: var(--size-4xl);
7568
+ .muka-emptystate--left .muka-emptystate__content {
7569
+ align-items: flex-start;
7463
7570
  }
7464
7571
 
7465
- /* Text */
7466
- .muka-fileupload__text {
7467
- font-family: var(--text-body-md-regular-fontFamily);
7468
- font-size: var(--text-body-md-regular-fontSize);
7469
- font-weight: var(--text-body-md-regular-fontWeight);
7470
- line-height: var(--text-body-md-regular-lineHeight);
7471
- color: var(--color-text-default-default);
7572
+ /* Title */
7573
+ .muka-emptystate__title {
7574
+ color: var(--emptystate-title-color);
7575
+ margin: 0;
7576
+ font-family: var(--text-heading-h4-fontFamily);
7577
+ font-weight: var(--text-heading-h4-fontWeight);
7578
+ font-size: var(--text-heading-h4-fontSize);
7579
+ line-height: var(--text-heading-h4-lineHeight);
7472
7580
  }
7473
7581
 
7474
- .muka-fileupload--sm .muka-fileupload__text {
7475
- font-size: var(--text-body-sm-regular-fontSize);
7582
+ .muka-emptystate--sm .muka-emptystate__title {
7583
+ font-family: var(--text-label-lg-semibold-fontFamily);
7584
+ font-weight: var(--text-label-lg-semibold-fontWeight);
7585
+ font-size: var(--text-label-lg-semibold-fontSize);
7586
+ line-height: var(--text-label-lg-semibold-lineHeight);
7476
7587
  }
7477
7588
 
7478
- /* Hint text */
7479
- .muka-fileupload__hint {
7480
- font-family: var(--text-label-sm-regular-fontFamily);
7481
- font-size: var(--text-label-sm-regular-fontSize);
7482
- font-weight: var(--text-label-sm-regular-fontWeight);
7483
- line-height: var(--text-label-sm-regular-lineHeight);
7484
- color: var(--fileupload-dropzone-color-default-foreground);
7589
+ .muka-emptystate--lg .muka-emptystate__title {
7590
+ font-family: var(--text-heading-h3-fontFamily);
7591
+ font-weight: var(--text-heading-h3-fontWeight);
7592
+ font-size: var(--text-heading-h3-fontSize);
7593
+ line-height: var(--text-heading-h3-lineHeight);
7485
7594
  }
7486
7595
 
7487
- /* File list */
7488
- .muka-fileupload__list {
7489
- display: flex;
7490
- flex-direction: column;
7491
- gap: var(--spacing-2);
7492
- list-style: none;
7596
+ /* Description */
7597
+ .muka-emptystate__description {
7598
+ color: var(--emptystate-description-color);
7493
7599
  margin: 0;
7494
- padding: 0;
7600
+ font-family: var(--text-body-sm-regular-fontFamily);
7601
+ font-weight: var(--text-body-sm-regular-fontWeight);
7602
+ font-size: var(--text-body-sm-regular-fontSize);
7603
+ line-height: var(--text-body-sm-regular-lineHeight);
7495
7604
  }
7496
7605
 
7497
- .muka-fileupload__list li {
7498
- margin: 0;
7499
- padding: 0;
7606
+ .muka-emptystate--md .muka-emptystate__description {
7607
+ font-family: var(--text-body-base-regular-fontFamily);
7608
+ font-weight: var(--text-body-base-regular-fontWeight);
7609
+ font-size: var(--text-body-base-regular-fontSize);
7610
+ line-height: var(--text-body-base-regular-lineHeight);
7500
7611
  }
7501
7612
 
7502
- /* File item */
7503
- .muka-fileupload-item {
7613
+ .muka-emptystate--lg .muka-emptystate__description {
7614
+ font-family: var(--text-body-lg-regular-fontFamily);
7615
+ font-weight: var(--text-body-lg-regular-fontWeight);
7616
+ font-size: var(--text-body-lg-regular-fontSize);
7617
+ line-height: var(--text-body-lg-regular-lineHeight);
7618
+ }
7619
+
7620
+ /* Actions */
7621
+ .muka-emptystate__actions {
7504
7622
  display: flex;
7505
- align-items: center;
7506
- gap: var(--fileupload-item-gap);
7507
- padding: var(--fileupload-item-padding-y) var(--fileupload-item-padding-x);
7508
- background-color: var(--fileupload-item-color-default-background);
7509
- border-radius: var(--fileupload-item-radius);
7623
+ gap: var(--emptystate-actions-gap);
7624
+ margin-top: var(--emptystate-actions-marginTop);
7625
+ flex-wrap: wrap;
7626
+ justify-content: center;
7510
7627
  }
7511
7628
 
7512
- .muka-fileupload-item--error {
7513
- background-color: var(--fileupload-item-color-error-background);
7629
+ .muka-emptystate--left .muka-emptystate__actions {
7630
+ justify-content: flex-start;
7514
7631
  }
7515
7632
 
7516
- .muka-fileupload-item--success {
7517
- background-color: var(--fileupload-item-color-default-background);
7633
+
7634
+ /* Drawer */
7635
+ /* Drawer Component Styles */
7636
+
7637
+ /* Size tokens (local to Drawer) */
7638
+ .muka-drawer {
7639
+ --drawer-width-sm: 18rem;
7640
+ --drawer-width-md: 26rem;
7641
+ --drawer-width-lg: 36rem;
7518
7642
  }
7519
7643
 
7520
- /* Preview/Icon container */
7521
- .muka-fileupload-item__preview {
7522
- display: flex;
7523
- align-items: center;
7524
- justify-content: center;
7525
- flex-shrink: 0;
7526
- width: var(--fileupload-preview-size);
7527
- height: var(--fileupload-preview-size);
7528
- border-radius: var(--fileupload-preview-radius);
7529
- overflow: hidden;
7530
- background-color: var(--color-surface-level1);
7644
+ /* Reset native dialog */
7645
+ .muka-drawer {
7646
+ border: none;
7647
+ padding: 0;
7648
+ max-width: none;
7649
+ max-height: none;
7650
+ background: transparent;
7651
+ overflow: visible;
7531
7652
  }
7532
7653
 
7533
- .muka-fileupload-item__thumbnail {
7534
- width: 100%;
7535
- height: 100%;
7536
- object-fit: cover;
7654
+ /* Backdrop */
7655
+ .muka-drawer::backdrop {
7656
+ background-color: var(--color-surface-backdrop);
7657
+ opacity: 0;
7658
+ transition: opacity 200ms ease;
7537
7659
  }
7538
7660
 
7539
- .muka-fileupload-item__icon {
7540
- color: var(--color-text-subtle-default);
7661
+ .muka-drawer--slide-in::backdrop {
7662
+ opacity: 1;
7541
7663
  }
7542
7664
 
7543
- /* File info */
7544
- .muka-fileupload-item__info {
7545
- flex: 1;
7546
- min-width: 0;
7547
- display: flex;
7548
- flex-direction: column;
7549
- gap: var(--spacing-1);
7550
- }
7551
-
7552
- .muka-fileupload-item__name {
7553
- font-family: var(--text-body-sm-medium-fontFamily);
7554
- font-size: var(--text-body-sm-medium-fontSize);
7555
- font-weight: var(--text-body-sm-medium-fontWeight);
7556
- line-height: var(--text-body-sm-medium-lineHeight);
7557
- color: var(--fileupload-item-color-default-foreground);
7558
- white-space: nowrap;
7559
- overflow: hidden;
7560
- text-overflow: ellipsis;
7561
- }
7562
-
7563
- .muka-fileupload-item--error .muka-fileupload-item__name {
7564
- color: var(--fileupload-item-color-error-foreground);
7565
- }
7566
-
7567
- .muka-fileupload-item__meta {
7568
- font-family: var(--text-label-sm-regular-fontFamily);
7569
- font-size: var(--text-label-sm-regular-fontSize);
7570
- font-weight: var(--text-label-sm-regular-fontWeight);
7571
- line-height: var(--text-label-sm-regular-lineHeight);
7572
- color: var(--color-text-subtle-default);
7573
- }
7574
-
7575
- .muka-fileupload-item__error {
7576
- color: var(--fileupload-item-color-error-foreground);
7577
- }
7578
-
7579
- .muka-fileupload-item__progress {
7580
- margin-top: var(--spacing-1);
7581
- }
7582
-
7583
- /* Actions */
7584
- .muka-fileupload-item__actions {
7585
- display: flex;
7586
- align-items: center;
7587
- gap: var(--spacing-2);
7588
- flex-shrink: 0;
7589
- }
7590
-
7591
- .muka-fileupload-item__status-icon--success {
7592
- color: var(--color-state-success-foreground);
7593
- }
7594
-
7595
- .muka-fileupload-item__status-icon--error {
7596
- color: var(--color-state-error-foreground);
7597
- }
7598
-
7599
- .muka-fileupload-item__remove {
7600
- opacity: 0.7;
7601
- }
7602
-
7603
- .muka-fileupload-item__remove:hover {
7604
- opacity: 1;
7605
- }
7606
-
7607
-
7608
- /* FAB */
7609
- /* FAB (Floating Action Button) Component Styles */
7610
-
7611
- .muka-fab {
7612
- position: fixed;
7613
- z-index: 40;
7614
-
7615
- display: inline-flex;
7616
- align-items: center;
7617
- justify-content: center;
7618
- gap: var(--spacing-2);
7619
-
7620
- border: none;
7621
- cursor: pointer;
7622
- font-family: inherit;
7623
- box-shadow: var(--shadow-level4);
7624
-
7625
- transition: transform 0.12s ease, box-shadow 0.12s ease, background-color 0.12s ease;
7626
- -webkit-tap-highlight-color: transparent;
7627
- }
7628
-
7629
- .muka-fab:active {
7630
- transform: scale(0.96);
7631
- box-shadow: var(--shadow-level3);
7632
- }
7633
-
7634
- .muka-fab:focus-visible {
7635
- outline: 2px solid var(--color-action-default);
7636
- outline-offset: 2px;
7637
- }
7638
-
7639
- .muka-fab:disabled {
7640
- opacity: 0.5;
7641
- cursor: not-allowed;
7642
- box-shadow: none;
7643
- }
7644
-
7645
- /* ─── Variants ────────────────────────────────────────── */
7646
-
7647
- .muka-fab--primary {
7648
- background-color: var(--color-action-default);
7649
- color: var(--color-text-inverse-default);
7650
- }
7651
-
7652
- .muka-fab--primary:hover:not(:disabled) {
7653
- background-color: var(--color-action-hover);
7654
- }
7655
-
7656
- .muka-fab--secondary {
7657
- background-color: var(--color-surface-level3);
7658
- color: var(--color-text-default-default);
7659
- }
7660
-
7661
- .muka-fab--secondary:hover:not(:disabled) {
7662
- background-color: var(--color-surface-level2);
7663
- }
7664
-
7665
- /* ─── Sizes (circular by default) ─────────────────────── */
7666
-
7667
- .muka-fab--md {
7668
- width: 56px;
7669
- height: 56px;
7670
- border-radius: 50%;
7671
- }
7672
-
7673
- .muka-fab--lg {
7674
- width: 64px;
7675
- height: 64px;
7676
- border-radius: 50%;
7677
- }
7678
-
7679
- /* ─── Extended (pill shape with label) ────────────────── */
7680
-
7681
- .muka-fab--extended {
7682
- width: auto;
7683
- height: auto;
7684
- padding: var(--spacing-3) var(--spacing-4);
7685
- border-radius: var(--radius-full);
7686
- }
7687
-
7688
- .muka-fab--extended.muka-fab--lg {
7689
- padding: var(--spacing-4) var(--spacing-5);
7690
- }
7691
-
7692
- .muka-fab__icon {
7693
- display: inline-flex;
7694
- align-items: center;
7695
- justify-content: center;
7696
- width: 24px;
7697
- height: 24px;
7698
- }
7699
-
7700
- .muka-fab__icon svg {
7701
- width: 100%;
7702
- height: 100%;
7703
- }
7704
-
7705
- .muka-fab__label {
7706
- font-family: var(--text-label-md-semibold-fontFamily);
7707
- font-weight: var(--text-label-md-semibold-fontWeight);
7708
- font-size: var(--text-label-md-semibold-fontSize);
7709
- line-height: var(--text-label-md-semibold-lineHeight);
7710
- }
7711
-
7712
- /* ─── Positioning ─────────────────────────────────────── */
7713
-
7714
- .muka-fab--bottom-right {
7715
- right: var(--spacing-4);
7716
- bottom: var(--spacing-4);
7717
- }
7718
-
7719
- .muka-fab--bottom-left {
7720
- left: var(--spacing-4);
7721
- bottom: var(--spacing-4);
7722
- }
7723
-
7724
- .muka-fab--bottom-center {
7725
- left: 50%;
7726
- bottom: var(--spacing-4);
7727
- transform: translateX(-50%);
7728
- }
7729
-
7730
- .muka-fab--bottom-center:active {
7731
- transform: translateX(-50%) scale(0.96);
7732
- }
7733
-
7734
- /* Add the iOS home-indicator inset to the bottom offset. */
7735
- .muka-fab:not(.muka-fab--no-safe-area) {
7736
- bottom: calc(var(--spacing-4) + env(safe-area-inset-bottom));
7737
- }
7738
-
7739
- /* Lateral safe-area for landscape iPhone with notch. */
7740
- .muka-fab--bottom-right:not(.muka-fab--no-safe-area) {
7741
- right: max(var(--spacing-4), env(safe-area-inset-right));
7742
- }
7743
-
7744
- .muka-fab--bottom-left:not(.muka-fab--no-safe-area) {
7745
- left: max(var(--spacing-4), env(safe-area-inset-left));
7746
- }
7747
-
7748
-
7749
- /* EmptyState */
7750
- /* EmptyState Component Styles - Using Muka Design Tokens */
7751
-
7752
- .muka-emptystate {
7753
- display: flex;
7754
- flex-direction: column;
7755
- align-items: center;
7756
- justify-content: center;
7757
- gap: var(--emptystate-container-gap);
7758
- max-width: var(--emptystate-container-maxWidth);
7759
- margin: 0 auto;
7760
- text-align: center;
7761
- }
7762
-
7763
- /* Alignment variants */
7764
- .muka-emptystate--left {
7765
- align-items: flex-start;
7766
- text-align: left;
7767
- }
7768
-
7769
- /* Size variants */
7770
- .muka-emptystate--sm {
7771
- padding: var(--emptystate-container-padding-sm);
7772
- }
7773
-
7774
- .muka-emptystate--md {
7775
- padding: var(--emptystate-container-padding-md);
7776
- }
7777
-
7778
- .muka-emptystate--lg {
7779
- padding: var(--emptystate-container-padding-lg);
7780
- }
7781
-
7782
- /* Visual (icon or illustration) */
7783
- .muka-emptystate__visual {
7784
- display: flex;
7785
- align-items: center;
7786
- justify-content: center;
7787
- color: var(--emptystate-icon-color);
7788
- flex-shrink: 0;
7789
- }
7790
-
7791
- .muka-emptystate--sm .muka-emptystate__visual {
7792
- width: var(--emptystate-icon-size-sm);
7793
- height: var(--emptystate-icon-size-sm);
7794
- }
7795
-
7796
- .muka-emptystate--md .muka-emptystate__visual {
7797
- width: var(--emptystate-icon-size-md);
7798
- height: var(--emptystate-icon-size-md);
7799
- }
7800
-
7801
- .muka-emptystate--lg .muka-emptystate__visual {
7802
- width: var(--emptystate-icon-size-lg);
7803
- height: var(--emptystate-icon-size-lg);
7804
- }
7805
-
7806
- .muka-emptystate__visual svg {
7807
- width: 100%;
7808
- height: 100%;
7809
- }
7810
-
7811
- .muka-emptystate__visual img {
7812
- width: 100%;
7813
- height: 100%;
7814
- object-fit: contain;
7815
- }
7816
-
7817
- /* Content */
7818
- .muka-emptystate__content {
7819
- display: flex;
7820
- flex-direction: column;
7821
- gap: var(--spacing-2);
7822
- }
7823
-
7824
- .muka-emptystate--left .muka-emptystate__content {
7825
- align-items: flex-start;
7826
- }
7827
-
7828
- /* Title */
7829
- .muka-emptystate__title {
7830
- color: var(--emptystate-title-color);
7831
- margin: 0;
7832
- font-family: var(--text-heading-h4-fontFamily);
7833
- font-weight: var(--text-heading-h4-fontWeight);
7834
- font-size: var(--text-heading-h4-fontSize);
7835
- line-height: var(--text-heading-h4-lineHeight);
7836
- }
7837
-
7838
- .muka-emptystate--sm .muka-emptystate__title {
7839
- font-family: var(--text-label-lg-semibold-fontFamily);
7840
- font-weight: var(--text-label-lg-semibold-fontWeight);
7841
- font-size: var(--text-label-lg-semibold-fontSize);
7842
- line-height: var(--text-label-lg-semibold-lineHeight);
7843
- }
7844
-
7845
- .muka-emptystate--lg .muka-emptystate__title {
7846
- font-family: var(--text-heading-h3-fontFamily);
7847
- font-weight: var(--text-heading-h3-fontWeight);
7848
- font-size: var(--text-heading-h3-fontSize);
7849
- line-height: var(--text-heading-h3-lineHeight);
7850
- }
7851
-
7852
- /* Description */
7853
- .muka-emptystate__description {
7854
- color: var(--emptystate-description-color);
7855
- margin: 0;
7856
- font-family: var(--text-body-sm-regular-fontFamily);
7857
- font-weight: var(--text-body-sm-regular-fontWeight);
7858
- font-size: var(--text-body-sm-regular-fontSize);
7859
- line-height: var(--text-body-sm-regular-lineHeight);
7860
- }
7861
-
7862
- .muka-emptystate--md .muka-emptystate__description {
7863
- font-family: var(--text-body-base-regular-fontFamily);
7864
- font-weight: var(--text-body-base-regular-fontWeight);
7865
- font-size: var(--text-body-base-regular-fontSize);
7866
- line-height: var(--text-body-base-regular-lineHeight);
7867
- }
7868
-
7869
- .muka-emptystate--lg .muka-emptystate__description {
7870
- font-family: var(--text-body-lg-regular-fontFamily);
7871
- font-weight: var(--text-body-lg-regular-fontWeight);
7872
- font-size: var(--text-body-lg-regular-fontSize);
7873
- line-height: var(--text-body-lg-regular-lineHeight);
7874
- }
7875
-
7876
- /* Actions */
7877
- .muka-emptystate__actions {
7878
- display: flex;
7879
- gap: var(--emptystate-actions-gap);
7880
- margin-top: var(--emptystate-actions-marginTop);
7881
- flex-wrap: wrap;
7882
- justify-content: center;
7883
- }
7884
-
7885
- .muka-emptystate--left .muka-emptystate__actions {
7886
- justify-content: flex-start;
7887
- }
7888
-
7889
-
7890
- /* Drawer */
7891
- /* Drawer Component Styles */
7892
-
7893
- /* Size tokens (local to Drawer) */
7894
- .muka-drawer {
7895
- --drawer-width-sm: 18rem;
7896
- --drawer-width-md: 26rem;
7897
- --drawer-width-lg: 36rem;
7898
- }
7899
-
7900
- /* Reset native dialog */
7901
- .muka-drawer {
7902
- border: none;
7903
- padding: 0;
7904
- max-width: none;
7905
- max-height: none;
7906
- background: transparent;
7907
- overflow: visible;
7908
- }
7909
-
7910
- /* Backdrop */
7911
- .muka-drawer::backdrop {
7912
- background-color: var(--color-surface-backdrop);
7913
- opacity: 0;
7914
- transition: opacity 200ms ease;
7915
- }
7916
-
7917
- .muka-drawer--slide-in::backdrop {
7918
- opacity: 1;
7919
- }
7920
-
7921
- /* Surface */
7922
- .muka-drawer__surface {
7665
+ /* Surface */
7666
+ .muka-drawer__surface {
7923
7667
  display: flex;
7924
7668
  flex-direction: column;
7925
7669
  background-color: var(--color-surface-level3);
@@ -8992,6 +8736,10 @@ li.muka-listitem {
8992
8736
  min-content, collapsing the flexible (1fr) stack track to 0. */
8993
8737
  .muka-data-table--responsive {
8994
8738
  display: block;
8739
+ /* Collapsed cards always use md cell padding regardless of the table's `size`
8740
+ — sm is too tight and lg wastes horizontal room, forcing the name to wrap. */
8741
+ --dt-pad-x: var(--datatable-cell-padding-x-md);
8742
+ --dt-pad-y: var(--datatable-cell-padding-y-md);
8995
8743
  }
8996
8744
 
8997
8745
  .muka-data-table--responsive .muka-data-table__body {
@@ -9035,6 +8783,11 @@ li.muka-listitem {
9035
8783
  .muka-data-table--responsive .muka-data-table__td--m-secondary {
9036
8784
  display: block;
9037
8785
  grid-column: 2;
8786
+ /* Hug the widest secondary content (e.g. a status badge). The desktop column's
8787
+ min/max-width are inline styles, so `!important` is required to drop them and
8788
+ let the `auto` grid track shrink to the badge — freeing space for the name. */
8789
+ min-width: 0 !important;
8790
+ max-width: none !important;
9038
8791
  }
9039
8792
 
9040
8793
  .muka-data-table--responsive .muka-data-table__td--action {
@@ -9052,6 +8805,14 @@ li.muka-listitem {
9052
8805
  justify-content: flex-end;
9053
8806
  }
9054
8807
 
8808
+ /* Utility for cell content: hide a sub-element in the collapsed card. Use it to
8809
+ drop a redundant text label next to a compact visual (e.g. the "75%" beside a
8810
+ donut) so only the visual shows and the secondary column hugs to its width.
8811
+ `display: none` also collapses any surrounding flex `gap`, leaving no gutter. */
8812
+ .muka-data-table--responsive .muka-data-table__mobile-hidden {
8813
+ display: none;
8814
+ }
8815
+
9055
8816
  /* Stacked primary column: first field is the title, the rest are subtitle lines. */
9056
8817
  .muka-data-table__stack {
9057
8818
  display: flex;
@@ -9105,243 +8866,374 @@ li.muka-listitem {
9105
8866
  grid-template-columns: auto 1fr auto auto;
9106
8867
  }
9107
8868
 
9108
- .muka-data-table--responsive.muka-data-table--selectable .muka-data-table__td--mobile-stack {
9109
- grid-column: 2;
9110
- }
8869
+ .muka-data-table--responsive.muka-data-table--selectable .muka-data-table__td--mobile-stack {
8870
+ grid-column: 2;
8871
+ }
8872
+
8873
+ .muka-data-table--responsive.muka-data-table--selectable .muka-data-table__td--m-secondary {
8874
+ grid-column: 3;
8875
+ }
8876
+
8877
+ .muka-data-table--responsive.muka-data-table--selectable .muka-data-table__td--action {
8878
+ grid-column: 4;
8879
+ }
8880
+ }
8881
+
8882
+
8883
+ /* FileUpload */
8884
+ /* FileUpload Component Styles */
8885
+
8886
+ .muka-fileupload-wrapper {
8887
+ display: flex;
8888
+ flex-direction: column;
8889
+ gap: var(--spacing-3);
8890
+ width: 100%;
8891
+ }
8892
+
8893
+ /* Dropzone */
8894
+ .muka-fileupload {
8895
+ display: flex;
8896
+ flex-direction: column;
8897
+ align-items: center;
8898
+ justify-content: center;
8899
+ gap: var(--fileupload-dropzone-gap);
8900
+ padding: var(--fileupload-dropzone-padding-md);
8901
+ background-color: var(--fileupload-dropzone-color-default-background);
8902
+ border: var(--fileupload-dropzone-border-width) dashed var(--fileupload-dropzone-color-default-border);
8903
+ border-radius: var(--fileupload-dropzone-radius);
8904
+ cursor: pointer;
8905
+ transition: background-color 0.2s ease, border-color 0.2s ease;
8906
+ text-align: center;
8907
+ min-height: 120px;
8908
+ }
8909
+
8910
+ .muka-fileupload:focus-visible {
8911
+ outline: 2px solid var(--color-border-focus);
8912
+ outline-offset: 2px;
8913
+ }
8914
+
8915
+ /* Size variants */
8916
+ .muka-fileupload--sm {
8917
+ padding: var(--fileupload-dropzone-padding-sm);
8918
+ min-height: 80px;
8919
+ }
8920
+
8921
+ .muka-fileupload--lg {
8922
+ padding: var(--fileupload-dropzone-padding-lg);
8923
+ min-height: 160px;
8924
+ }
8925
+
8926
+ /* Button variant */
8927
+ .muka-fileupload--button {
8928
+ flex-direction: row;
8929
+ min-height: auto;
8930
+ padding: var(--spacing-2) var(--spacing-3);
8931
+ border-style: solid;
8932
+ border-width: var(--border-width-regular);
8933
+ border-radius: var(--border-radius-md);
8934
+ }
9111
8935
 
9112
- .muka-data-table--responsive.muka-data-table--selectable .muka-data-table__td--m-secondary {
9113
- grid-column: 3;
9114
- }
8936
+ /* Hover state */
8937
+ .muka-fileupload:hover:not(.muka-fileupload--disabled) {
8938
+ background-color: var(--fileupload-dropzone-color-hover-background);
8939
+ border-color: var(--fileupload-dropzone-color-hover-border);
8940
+ }
9115
8941
 
9116
- .muka-data-table--responsive.muka-data-table--selectable .muka-data-table__td--action {
9117
- grid-column: 4;
9118
- }
8942
+ /* Active/drag state */
8943
+ .muka-fileupload--active:not(.muka-fileupload--disabled) {
8944
+ background-color: var(--fileupload-dropzone-color-active-background);
8945
+ border-color: var(--fileupload-dropzone-color-active-border);
8946
+ }
8947
+
8948
+ /* Disabled state */
8949
+ .muka-fileupload--disabled {
8950
+ background-color: var(--fileupload-dropzone-color-disabled-background);
8951
+ border-color: var(--fileupload-dropzone-color-disabled-border);
8952
+ cursor: not-allowed;
8953
+ opacity: 0.6;
9119
8954
  }
9120
8955
 
8956
+ /* Hidden file input */
8957
+ .muka-fileupload__input {
8958
+ position: absolute;
8959
+ width: 1px;
8960
+ height: 1px;
8961
+ padding: 0;
8962
+ margin: -1px;
8963
+ overflow: hidden;
8964
+ clip: rect(0, 0, 0, 0);
8965
+ white-space: nowrap;
8966
+ border: 0;
8967
+ }
9121
8968
 
9122
- /* DataPieChart */
9123
- /* DataPieChart Component Styles - Using Muka Design Tokens */
8969
+ /* Content container */
8970
+ .muka-fileupload__content {
8971
+ display: flex;
8972
+ flex-direction: column;
8973
+ align-items: center;
8974
+ gap: var(--spacing-2);
8975
+ }
9124
8976
 
9125
- .muka-data-pie-chart {
9126
- position: relative;
9127
- display: inline-flex;
8977
+ /* Upload icon */
8978
+ .muka-fileupload__icon {
8979
+ display: flex;
9128
8980
  align-items: center;
9129
8981
  justify-content: center;
9130
- flex-shrink: 0;
8982
+ width: var(--size-3xl);
8983
+ height: var(--size-3xl);
8984
+ color: var(--fileupload-dropzone-color-default-foreground);
9131
8985
  }
9132
8986
 
9133
- .muka-data-pie-chart__svg {
9134
- display: block;
8987
+ .muka-fileupload__icon svg {
9135
8988
  width: 100%;
9136
8989
  height: 100%;
9137
- /* Start the segment at 12 o'clock instead of 3 o'clock */
9138
- transform: rotate(-90deg);
9139
8990
  }
9140
8991
 
9141
- .muka-data-pie-chart__track {
9142
- fill: none;
8992
+ .muka-fileupload--sm .muka-fileupload__icon {
8993
+ width: var(--size-2xl);
8994
+ height: var(--size-2xl);
9143
8995
  }
9144
8996
 
9145
- .muka-data-pie-chart__segment {
9146
- fill: none;
9147
- /* Subtle lift on the filled segment, matching the Figma elevation */
9148
- filter: drop-shadow(0 2px 4px var(--color-black-alpha-5, rgba(0, 0, 0, 0.05)));
9149
- transition: stroke-dasharray 0.3s ease;
8997
+ .muka-fileupload--lg .muka-fileupload__icon {
8998
+ width: var(--size-4xl);
8999
+ height: var(--size-4xl);
9150
9000
  }
9151
9001
 
9152
- .muka-data-pie-chart__value {
9153
- position: absolute;
9154
- inset: 0;
9155
- display: flex;
9156
- align-items: center;
9157
- justify-content: center;
9158
- font-family: var(--text-body-base-bold-fontFamily);
9159
- font-weight: var(--text-body-base-bold-fontWeight);
9160
- font-size: var(--text-body-base-bold-fontSize);
9161
- line-height: var(--text-body-base-bold-lineHeight);
9002
+ /* Text */
9003
+ .muka-fileupload__text {
9004
+ font-family: var(--text-body-md-regular-fontFamily);
9005
+ font-size: var(--text-body-md-regular-fontSize);
9006
+ font-weight: var(--text-body-md-regular-fontWeight);
9007
+ line-height: var(--text-body-md-regular-lineHeight);
9162
9008
  color: var(--color-text-default-default);
9163
9009
  }
9164
9010
 
9011
+ .muka-fileupload--sm .muka-fileupload__text {
9012
+ font-size: var(--text-body-sm-regular-fontSize);
9013
+ }
9165
9014
 
9166
- /* Container */
9167
- /* Container Component - Layout tokens (container.max-width, container.gap) */
9168
-
9169
- .muka-container {
9170
- box-sizing: border-box;
9171
- width: 100%;
9172
- margin-inline: auto;
9015
+ /* Hint text */
9016
+ .muka-fileupload__hint {
9017
+ font-family: var(--text-label-sm-regular-fontFamily);
9018
+ font-size: var(--text-label-sm-regular-fontSize);
9019
+ font-weight: var(--text-label-sm-regular-fontWeight);
9020
+ line-height: var(--text-label-sm-regular-lineHeight);
9021
+ color: var(--fileupload-dropzone-color-default-foreground);
9173
9022
  }
9174
9023
 
9175
- /* Max-width variants */
9176
- .muka-container--max-width-small {
9177
- max-width: var(--container-max-width-small);
9024
+ /* File list */
9025
+ .muka-fileupload__list {
9026
+ display: flex;
9027
+ flex-direction: column;
9028
+ gap: var(--spacing-2);
9029
+ list-style: none;
9030
+ margin: 0;
9031
+ padding: 0;
9178
9032
  }
9179
9033
 
9180
- .muka-container--max-width-medium {
9181
- max-width: var(--container-max-width-medium);
9034
+ .muka-fileupload__list li {
9035
+ margin: 0;
9036
+ padding: 0;
9182
9037
  }
9183
9038
 
9184
- .muka-container--max-width-large {
9185
- max-width: var(--container-max-width-large);
9039
+ /* File item */
9040
+ .muka-fileupload-item {
9041
+ display: flex;
9042
+ align-items: center;
9043
+ gap: var(--fileupload-item-gap);
9044
+ padding: var(--fileupload-item-padding-y) var(--fileupload-item-padding-x);
9045
+ background-color: var(--fileupload-item-color-default-background);
9046
+ border-radius: var(--fileupload-item-radius);
9186
9047
  }
9187
9048
 
9188
- .muka-container--max-width-xlarge {
9189
- max-width: var(--container-max-width-xlarge);
9049
+ .muka-fileupload-item--error {
9050
+ background-color: var(--fileupload-item-color-error-background);
9190
9051
  }
9191
9052
 
9192
- /* No gap — max-width only, no flex */
9193
- .muka-container--gap-none {
9194
- /* block layout by default */
9053
+ .muka-fileupload-item--success {
9054
+ background-color: var(--fileupload-item-color-default-background);
9195
9055
  }
9196
9056
 
9197
- /* Gap variants — flex column with token gap */
9198
- .muka-container--gap-compact {
9057
+ /* Preview/Icon container */
9058
+ .muka-fileupload-item__preview {
9199
9059
  display: flex;
9200
- flex-direction: column;
9201
- gap: var(--container-gap-compact);
9060
+ align-items: center;
9061
+ justify-content: center;
9062
+ flex-shrink: 0;
9063
+ width: var(--fileupload-preview-size);
9064
+ height: var(--fileupload-preview-size);
9065
+ border-radius: var(--fileupload-preview-radius);
9066
+ overflow: hidden;
9067
+ background-color: var(--color-surface-level1);
9202
9068
  }
9203
9069
 
9204
- .muka-container--gap-default {
9205
- display: flex;
9206
- flex-direction: column;
9207
- gap: var(--container-gap-default);
9070
+ .muka-fileupload-item__thumbnail {
9071
+ width: 100%;
9072
+ height: 100%;
9073
+ object-fit: cover;
9208
9074
  }
9209
9075
 
9210
- .muka-container--gap-spacious {
9076
+ .muka-fileupload-item__icon {
9077
+ color: var(--color-text-subtle-default);
9078
+ }
9079
+
9080
+ /* File info */
9081
+ .muka-fileupload-item__info {
9082
+ flex: 1;
9083
+ min-width: 0;
9211
9084
  display: flex;
9212
9085
  flex-direction: column;
9213
- gap: var(--container-gap-spacious);
9086
+ gap: var(--spacing-1);
9214
9087
  }
9215
9088
 
9089
+ .muka-fileupload-item__name {
9090
+ font-family: var(--text-body-sm-medium-fontFamily);
9091
+ font-size: var(--text-body-sm-medium-fontSize);
9092
+ font-weight: var(--text-body-sm-medium-fontWeight);
9093
+ line-height: var(--text-body-sm-medium-lineHeight);
9094
+ color: var(--fileupload-item-color-default-foreground);
9095
+ white-space: nowrap;
9096
+ overflow: hidden;
9097
+ text-overflow: ellipsis;
9098
+ }
9216
9099
 
9217
- /* Combobox */
9218
- /* Combobox Component Styles */
9100
+ .muka-fileupload-item--error .muka-fileupload-item__name {
9101
+ color: var(--fileupload-item-color-error-foreground);
9102
+ }
9219
9103
 
9220
- /* ─── Trigger (looks like an Input field, behaves like a button) ── */
9104
+ .muka-fileupload-item__meta {
9105
+ font-family: var(--text-label-sm-regular-fontFamily);
9106
+ font-size: var(--text-label-sm-regular-fontSize);
9107
+ font-weight: var(--text-label-sm-regular-fontWeight);
9108
+ line-height: var(--text-label-sm-regular-lineHeight);
9109
+ color: var(--color-text-subtle-default);
9110
+ }
9221
9111
 
9222
- .muka-combobox {
9223
- display: inline-flex;
9224
- align-items: center;
9225
- gap: var(--spacing-2);
9226
- width: 100%;
9227
- padding: 0 var(--input-field-padding-x);
9228
- background-color: var(--input-field-color-default-background);
9229
- border: var(--border-width-regular) solid var(--input-field-color-default-border);
9230
- color: var(--color-text-default-default);
9231
- text-align: left;
9232
- cursor: pointer;
9233
- font-family: var(--text-body-md-regular-fontFamily);
9234
- font-weight: var(--text-body-md-regular-fontWeight);
9235
- font-size: var(--text-body-md-regular-fontSize);
9236
- line-height: var(--text-body-md-regular-lineHeight);
9237
- -webkit-tap-highlight-color: transparent;
9238
- transition: border-color 0.12s ease;
9112
+ .muka-fileupload-item__error {
9113
+ color: var(--fileupload-item-color-error-foreground);
9239
9114
  }
9240
9115
 
9241
- .muka-combobox--sm {
9242
- min-height: var(--input-field-height-sm);
9243
- border-radius: var(--input-field-radius-sm);
9116
+ .muka-fileupload-item__progress {
9117
+ margin-top: var(--spacing-1);
9244
9118
  }
9245
9119
 
9246
- .muka-combobox--md {
9247
- min-height: var(--input-field-height-default);
9248
- border-radius: var(--input-field-radius-md);
9120
+ /* Actions */
9121
+ .muka-fileupload-item__actions {
9122
+ display: flex;
9123
+ align-items: center;
9124
+ gap: var(--spacing-2);
9125
+ flex-shrink: 0;
9249
9126
  }
9250
9127
 
9251
- .muka-combobox--lg {
9252
- min-height: var(--input-field-height-lg);
9253
- border-radius: var(--input-field-radius-lg);
9128
+ .muka-fileupload-item__status-icon--success {
9129
+ color: var(--color-state-success-foreground);
9254
9130
  }
9255
9131
 
9256
- .muka-combobox:hover:not(:disabled) {
9257
- border-color: var(--input-field-color-hover-border, var(--input-field-color-default-border));
9132
+ .muka-fileupload-item__status-icon--error {
9133
+ color: var(--color-state-error-foreground);
9258
9134
  }
9259
9135
 
9260
- .muka-combobox:focus-visible {
9261
- outline: none;
9262
- border-color: var(--input-field-color-focus-border, var(--color-action-default));
9136
+ .muka-fileupload-item__remove {
9137
+ opacity: 0.7;
9263
9138
  }
9264
9139
 
9265
- .muka-combobox--disabled,
9266
- .muka-combobox:disabled {
9267
- opacity: 0.5;
9268
- cursor: not-allowed;
9140
+ .muka-fileupload-item__remove:hover {
9141
+ opacity: 1;
9269
9142
  }
9270
9143
 
9271
- .muka-combobox--placeholder .muka-combobox__label {
9272
- color: var(--color-text-subtle-default);
9273
- }
9274
9144
 
9275
- .muka-combobox__leading {
9145
+ /* DataPieChart */
9146
+ /* DataPieChart Component Styles - Using Muka Design Tokens */
9147
+
9148
+ .muka-data-pie-chart {
9149
+ position: relative;
9276
9150
  display: inline-flex;
9277
9151
  align-items: center;
9278
9152
  justify-content: center;
9279
9153
  flex-shrink: 0;
9280
- color: var(--color-text-subtle-default);
9281
9154
  }
9282
9155
 
9283
- .muka-combobox__label {
9284
- flex: 1 1 auto;
9285
- min-width: 0;
9286
- white-space: nowrap;
9287
- overflow: hidden;
9288
- text-overflow: ellipsis;
9156
+ .muka-data-pie-chart__svg {
9157
+ display: block;
9158
+ width: 100%;
9159
+ height: 100%;
9160
+ /* Start the segment at 12 o'clock instead of 3 o'clock */
9161
+ transform: rotate(-90deg);
9289
9162
  }
9290
9163
 
9291
- .muka-combobox__clear,
9292
- .muka-combobox__chevron {
9293
- display: inline-flex;
9164
+ .muka-data-pie-chart__track {
9165
+ fill: none;
9166
+ }
9167
+
9168
+ .muka-data-pie-chart__segment {
9169
+ fill: none;
9170
+ /* Subtle lift on the filled segment, matching the Figma elevation */
9171
+ filter: drop-shadow(0 2px 4px var(--color-black-alpha-5, rgba(0, 0, 0, 0.05)));
9172
+ transition: stroke-dasharray 0.3s ease;
9173
+ }
9174
+
9175
+ .muka-data-pie-chart__value {
9176
+ position: absolute;
9177
+ inset: 0;
9178
+ display: flex;
9294
9179
  align-items: center;
9295
9180
  justify-content: center;
9296
- flex-shrink: 0;
9297
- color: var(--color-text-subtle-default);
9181
+ font-family: var(--text-body-base-bold-fontFamily);
9182
+ font-weight: var(--text-body-base-bold-fontWeight);
9183
+ font-size: var(--text-body-base-bold-fontSize);
9184
+ line-height: var(--text-body-base-bold-lineHeight);
9185
+ color: var(--color-text-default-default);
9298
9186
  }
9299
9187
 
9300
- .muka-combobox__clear {
9301
- cursor: pointer;
9302
- padding: var(--spacing-1);
9303
- border-radius: var(--radius-sm);
9188
+
9189
+ /* Container */
9190
+ /* Container Component - Layout tokens (container.max-width, container.gap) */
9191
+
9192
+ .muka-container {
9193
+ box-sizing: border-box;
9194
+ width: 100%;
9195
+ margin-inline: auto;
9304
9196
  }
9305
9197
 
9306
- .muka-combobox__clear:hover {
9307
- color: var(--color-text-default-default);
9308
- background-color: var(--color-surface-level1);
9198
+ /* Max-width variants */
9199
+ .muka-container--max-width-small {
9200
+ max-width: var(--container-max-width-small);
9309
9201
  }
9310
9202
 
9311
- /* ─── Picker sheet body ───────────────────────────────── */
9203
+ .muka-container--max-width-medium {
9204
+ max-width: var(--container-max-width-medium);
9205
+ }
9312
9206
 
9313
- .muka-combobox__picker {
9314
- display: flex;
9315
- flex-direction: column;
9316
- gap: var(--spacing-3);
9317
- padding: 0 var(--spacing-4) var(--spacing-4);
9318
- min-height: 0;
9319
- max-height: 80vh;
9207
+ .muka-container--max-width-large {
9208
+ max-width: var(--container-max-width-large);
9320
9209
  }
9321
9210
 
9322
- .muka-combobox__title {
9323
- margin: 0;
9324
- padding: var(--spacing-2) 0;
9325
- color: var(--color-text-default-default);
9326
- font-family: var(--text-heading-sm-fontFamily);
9327
- font-weight: var(--text-heading-sm-fontWeight);
9328
- font-size: var(--text-heading-sm-fontSize);
9329
- line-height: var(--text-heading-sm-lineHeight);
9211
+ .muka-container--max-width-xlarge {
9212
+ max-width: var(--container-max-width-xlarge);
9330
9213
  }
9331
9214
 
9332
- .muka-combobox__search {
9333
- position: sticky;
9334
- top: 0;
9335
- z-index: 1;
9336
- padding-bottom: var(--spacing-2);
9337
- background-color: var(--color-surface-level3);
9215
+ /* No gap — max-width only, no flex */
9216
+ .muka-container--gap-none {
9217
+ /* block layout by default */
9338
9218
  }
9339
9219
 
9340
- .muka-combobox__list {
9341
- flex: 1 1 auto;
9342
- min-height: 0;
9343
- overflow-y: auto;
9344
- -webkit-overflow-scrolling: touch;
9220
+ /* Gap variants — flex column with token gap */
9221
+ .muka-container--gap-compact {
9222
+ display: flex;
9223
+ flex-direction: column;
9224
+ gap: var(--container-gap-compact);
9225
+ }
9226
+
9227
+ .muka-container--gap-default {
9228
+ display: flex;
9229
+ flex-direction: column;
9230
+ gap: var(--container-gap-default);
9231
+ }
9232
+
9233
+ .muka-container--gap-spacious {
9234
+ display: flex;
9235
+ flex-direction: column;
9236
+ gap: var(--container-gap-spacious);
9345
9237
  }
9346
9238
 
9347
9239
 
@@ -9594,6 +9486,137 @@ li.muka-listitem {
9594
9486
  }
9595
9487
 
9596
9488
 
9489
+ /* Combobox */
9490
+ /* Combobox Component Styles */
9491
+
9492
+ /* ─── Trigger (looks like an Input field, behaves like a button) ── */
9493
+
9494
+ .muka-combobox {
9495
+ display: inline-flex;
9496
+ align-items: center;
9497
+ gap: var(--spacing-2);
9498
+ width: 100%;
9499
+ padding: 0 var(--input-field-padding-x);
9500
+ background-color: var(--input-field-color-default-background);
9501
+ border: var(--border-width-regular) solid var(--input-field-color-default-border);
9502
+ color: var(--color-text-default-default);
9503
+ text-align: left;
9504
+ cursor: pointer;
9505
+ font-family: var(--text-body-md-regular-fontFamily);
9506
+ font-weight: var(--text-body-md-regular-fontWeight);
9507
+ font-size: var(--text-body-md-regular-fontSize);
9508
+ line-height: var(--text-body-md-regular-lineHeight);
9509
+ -webkit-tap-highlight-color: transparent;
9510
+ transition: border-color 0.12s ease;
9511
+ }
9512
+
9513
+ .muka-combobox--sm {
9514
+ min-height: var(--input-field-height-sm);
9515
+ border-radius: var(--input-field-radius-sm);
9516
+ }
9517
+
9518
+ .muka-combobox--md {
9519
+ min-height: var(--input-field-height-default);
9520
+ border-radius: var(--input-field-radius-md);
9521
+ }
9522
+
9523
+ .muka-combobox--lg {
9524
+ min-height: var(--input-field-height-lg);
9525
+ border-radius: var(--input-field-radius-lg);
9526
+ }
9527
+
9528
+ .muka-combobox:hover:not(:disabled) {
9529
+ border-color: var(--input-field-color-hover-border, var(--input-field-color-default-border));
9530
+ }
9531
+
9532
+ .muka-combobox:focus-visible {
9533
+ outline: none;
9534
+ border-color: var(--input-field-color-focus-border, var(--color-action-default));
9535
+ }
9536
+
9537
+ .muka-combobox--disabled,
9538
+ .muka-combobox:disabled {
9539
+ opacity: 0.5;
9540
+ cursor: not-allowed;
9541
+ }
9542
+
9543
+ .muka-combobox--placeholder .muka-combobox__label {
9544
+ color: var(--color-text-subtle-default);
9545
+ }
9546
+
9547
+ .muka-combobox__leading {
9548
+ display: inline-flex;
9549
+ align-items: center;
9550
+ justify-content: center;
9551
+ flex-shrink: 0;
9552
+ color: var(--color-text-subtle-default);
9553
+ }
9554
+
9555
+ .muka-combobox__label {
9556
+ flex: 1 1 auto;
9557
+ min-width: 0;
9558
+ white-space: nowrap;
9559
+ overflow: hidden;
9560
+ text-overflow: ellipsis;
9561
+ }
9562
+
9563
+ .muka-combobox__clear,
9564
+ .muka-combobox__chevron {
9565
+ display: inline-flex;
9566
+ align-items: center;
9567
+ justify-content: center;
9568
+ flex-shrink: 0;
9569
+ color: var(--color-text-subtle-default);
9570
+ }
9571
+
9572
+ .muka-combobox__clear {
9573
+ cursor: pointer;
9574
+ padding: var(--spacing-1);
9575
+ border-radius: var(--radius-sm);
9576
+ }
9577
+
9578
+ .muka-combobox__clear:hover {
9579
+ color: var(--color-text-default-default);
9580
+ background-color: var(--color-surface-level1);
9581
+ }
9582
+
9583
+ /* ─── Picker sheet body ───────────────────────────────── */
9584
+
9585
+ .muka-combobox__picker {
9586
+ display: flex;
9587
+ flex-direction: column;
9588
+ gap: var(--spacing-3);
9589
+ padding: 0 var(--spacing-4) var(--spacing-4);
9590
+ min-height: 0;
9591
+ max-height: 80vh;
9592
+ }
9593
+
9594
+ .muka-combobox__title {
9595
+ margin: 0;
9596
+ padding: var(--spacing-2) 0;
9597
+ color: var(--color-text-default-default);
9598
+ font-family: var(--text-heading-sm-fontFamily);
9599
+ font-weight: var(--text-heading-sm-fontWeight);
9600
+ font-size: var(--text-heading-sm-fontSize);
9601
+ line-height: var(--text-heading-sm-lineHeight);
9602
+ }
9603
+
9604
+ .muka-combobox__search {
9605
+ position: sticky;
9606
+ top: 0;
9607
+ z-index: 1;
9608
+ padding-bottom: var(--spacing-2);
9609
+ background-color: var(--color-surface-level3);
9610
+ }
9611
+
9612
+ .muka-combobox__list {
9613
+ flex: 1 1 auto;
9614
+ min-height: 0;
9615
+ overflow-y: auto;
9616
+ -webkit-overflow-scrolling: touch;
9617
+ }
9618
+
9619
+
9597
9620
  /* CheckboxTile */
9598
9621
  /* CheckboxTile Component Styles - Using Muka Design Tokens */
9599
9622