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