@revikornmann/muka-ui 0.4.1 → 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 (39) 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 +927 -904
  22. package/dist/styles/muka-dark.css +927 -904
  23. package/dist/styles/muka-light.css +927 -904
  24. package/dist/styles/tokens-bouwplan-dark.css +61 -61
  25. package/dist/styles/tokens-bouwplan-light.css +61 -61
  26. package/dist/styles/wireframe-dark.css +927 -904
  27. package/dist/styles/wireframe-light.css +927 -904
  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/fonts.json +5 -5
  37. package/dist/cjs/components/FormProgressBar/index.js +0 -8
  38. package/dist/esm/components/FormProgressBar/index.js +0 -3
  39. package/dist/types/components/FormProgressBar/index.d.ts +0 -3
@@ -5580,6 +5580,172 @@ body {
5580
5580
  }
5581
5581
 
5582
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
+
5583
5749
  /* Progress */
5584
5750
  /* Progress Component Styles - Using Muka Design Tokens */
5585
5751
 
@@ -6180,34 +6346,6 @@ body {
6180
6346
  }
6181
6347
 
6182
6348
 
6183
- /* NavigationTransition */
6184
- /* NavigationTransition Component Styles */
6185
-
6186
- /* ─── Wrapper ────────────────────────────────────────── */
6187
-
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
6349
  /* Menu */
6212
6350
  /* Menu Component Styles */
6213
6351
 
@@ -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
 
@@ -6872,6 +7038,47 @@ li.muka-listitem {
6872
7038
  }
6873
7039
 
6874
7040
 
7041
+ /* Label */
7042
+ /* Label Component Styles - Using Muka Design Tokens */
7043
+
7044
+ .muka-label {
7045
+ display: inline-flex;
7046
+ align-items: center;
7047
+ color: var(--color-text-default-default);
7048
+ cursor: pointer;
7049
+ }
7050
+
7051
+ .muka-label--sm {
7052
+ font-family: var(--text-label-sm-semibold-fontFamily);
7053
+ font-weight: var(--text-label-sm-semibold-fontWeight);
7054
+ font-size: var(--text-label-sm-semibold-fontSize);
7055
+ line-height: var(--text-label-sm-semibold-lineHeight);
7056
+ }
7057
+
7058
+ .muka-label--md {
7059
+ font-family: var(--text-label-md-semibold-fontFamily);
7060
+ font-weight: var(--text-label-md-semibold-fontWeight);
7061
+ font-size: var(--text-label-md-semibold-fontSize);
7062
+ line-height: var(--text-label-md-semibold-lineHeight);
7063
+ }
7064
+
7065
+ .muka-label--lg {
7066
+ font-family: var(--text-label-lg-semibold-fontFamily);
7067
+ font-weight: var(--text-label-lg-semibold-fontWeight);
7068
+ font-size: var(--text-label-lg-semibold-fontSize);
7069
+ line-height: var(--text-label-lg-semibold-lineHeight);
7070
+ }
7071
+
7072
+ .muka-label--disabled {
7073
+ color: var(--color-text-subtle-default);
7074
+ cursor: not-allowed;
7075
+ }
7076
+
7077
+ .muka-label__required {
7078
+ color: var(--color-state-error-foreground);
7079
+ }
7080
+
7081
+
6875
7082
  /* Input */
6876
7083
  /* Input Component Styles - Using Muka Design Tokens */
6877
7084
 
@@ -7142,851 +7349,388 @@ li.muka-listitem {
7142
7349
  }
7143
7350
 
7144
7351
 
7145
- /* FormProgressBar */
7146
- /* FormProgressBar Component Styles — Using Muka Design Tokens */
7352
+ /* FAB */
7353
+ /* FAB (Floating Action Button) Component Styles */
7147
7354
 
7148
- /* ─── Root ──────────────────────────────────────────────── */
7149
- .muka-progress-bar {
7150
- width: 100%;
7151
- padding-bottom: var(--spacing-7);
7152
- }
7355
+ .muka-fab {
7356
+ position: fixed;
7357
+ z-index: 40;
7153
7358
 
7154
- /* ─── Track (layered container) ─────────────────────────── */
7155
- .muka-progress-bar__track {
7156
- position: relative;
7157
- /* Vertical padding = (indicator size - connector height) / 2 = (32 - 4) / 2 = 14px */
7158
- padding-top: 14px;
7159
- padding-bottom: 14px;
7160
- }
7359
+ display: inline-flex;
7360
+ align-items: center;
7361
+ justify-content: center;
7362
+ gap: var(--spacing-2);
7161
7363
 
7162
- /* ─── Steps layer (on top) ──────────────────────────────── */
7163
- .muka-progress-bar__steps {
7164
- position: absolute;
7165
- inset: 0;
7166
- display: flex;
7167
- align-items: flex-start;
7168
- justify-content: space-between;
7169
- z-index: 2;
7170
- }
7364
+ border: none;
7365
+ cursor: pointer;
7366
+ font-family: inherit;
7367
+ box-shadow: var(--shadow-level4);
7171
7368
 
7172
- /* ─── Individual step ───────────────────────────────────── */
7173
- .muka-progress-bar__step {
7174
- display: flex;
7175
- flex-direction: column;
7176
- align-items: center;
7177
- gap: 7px;
7178
- position: relative;
7369
+ transition: transform 0.12s ease, box-shadow 0.12s ease, background-color 0.12s ease;
7370
+ -webkit-tap-highlight-color: transparent;
7179
7371
  }
7180
7372
 
7181
- /* ─── Step indicator (circle) ───────────────────────────── */
7182
- .muka-progress-bar__indicator {
7183
- width: 32px;
7184
- height: 32px;
7185
- border-radius: var(--border-radius-full);
7186
- display: flex;
7187
- align-items: center;
7188
- justify-content: center;
7189
- flex-shrink: 0;
7190
- position: relative;
7373
+ .muka-fab:active {
7374
+ transform: scale(0.96);
7375
+ box-shadow: var(--shadow-level3);
7191
7376
  }
7192
7377
 
7193
- /* Past: dark accent contrast circle with white checkmark */
7194
- .muka-progress-bar__indicator--past {
7195
- background-color: var(--alias-color-accent-contrast);
7196
- color: var(--color-text-default-inverse);
7197
- cursor: pointer;
7378
+ .muka-fab:focus-visible {
7379
+ outline: 2px solid var(--color-action-default);
7380
+ outline-offset: 2px;
7198
7381
  }
7199
7382
 
7200
- .muka-progress-bar__indicator--past:hover {
7201
- opacity: 0.85;
7383
+ .muka-fab:disabled {
7384
+ opacity: 0.5;
7385
+ cursor: not-allowed;
7386
+ box-shadow: none;
7202
7387
  }
7203
7388
 
7204
- .muka-progress-bar__indicator--past:focus-visible {
7205
- outline: 2px solid var(--color-border-focus);
7206
- outline-offset: 2px;
7389
+ /* ─── Variants ────────────────────────────────────────── */
7390
+
7391
+ .muka-fab--primary {
7392
+ background-color: var(--color-action-default);
7393
+ color: var(--color-text-inverse-default);
7207
7394
  }
7208
7395
 
7209
- /* Current: accent default circle with white number */
7210
- .muka-progress-bar__indicator--current {
7211
- background-color: var(--alias-color-accent-default);
7212
- color: var(--color-text-default-inverse);
7396
+ .muka-fab--primary:hover:not(:disabled) {
7397
+ background-color: var(--color-action-hover);
7213
7398
  }
7214
7399
 
7215
- /* Upcoming: sunken/gray circle with dark number */
7216
- .muka-progress-bar__indicator--upcoming {
7217
- background-color: var(--color-surface-sunken);
7400
+ .muka-fab--secondary {
7401
+ background-color: var(--color-surface-level3);
7218
7402
  color: var(--color-text-default-default);
7219
7403
  }
7220
7404
 
7221
- /* ─── Step number text ──────────────────────────────────── */
7222
- .muka-progress-bar__number {
7223
- font-family: var(--text-label-md-bold-fontFamily);
7224
- font-weight: var(--text-label-md-bold-fontWeight);
7225
- font-size: var(--text-label-md-bold-fontSize);
7226
- line-height: var(--text-label-md-bold-lineHeight);
7227
- text-align: center;
7228
- user-select: none;
7405
+ .muka-fab--secondary:hover:not(:disabled) {
7406
+ background-color: var(--color-surface-level2);
7229
7407
  }
7230
7408
 
7231
- /* ─── Checkmark icon ────────────────────────────────────── */
7232
- .muka-progress-bar__check-icon {
7233
- width: 20px;
7234
- height: 20px;
7409
+ /* ─── Sizes (circular by default) ─────────────────────── */
7410
+
7411
+ .muka-fab--md {
7412
+ width: 56px;
7413
+ height: 56px;
7414
+ border-radius: 50%;
7235
7415
  }
7236
7416
 
7237
- /* ─── Step label ────────────────────────────────────────── */
7238
- .muka-progress-bar__label {
7239
- font-family: var(--text-label-sm-regular-fontFamily);
7240
- font-weight: var(--text-label-sm-regular-fontWeight);
7241
- font-size: var(--text-label-sm-regular-fontSize);
7242
- line-height: var(--text-label-sm-regular-lineHeight);
7243
- color: var(--color-text-default-default);
7244
- text-align: center;
7245
- max-width: 120px;
7246
- white-space: nowrap;
7247
- overflow: hidden;
7248
- text-overflow: ellipsis;
7417
+ .muka-fab--lg {
7418
+ width: 64px;
7419
+ height: 64px;
7420
+ border-radius: 50%;
7249
7421
  }
7250
7422
 
7251
- /* Current step label is bold */
7252
- .muka-progress-bar__label--current {
7253
- font-family: var(--text-label-sm-bold-fontFamily);
7254
- 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);
7255
7430
  }
7256
7431
 
7257
- /* ─── Connectors layer (behind indicators) ──────────────── */
7258
- .muka-progress-bar__connectors {
7259
- 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;
7260
7438
  align-items: center;
7261
- /* Horizontal padding = indicator radius (32/2 = 16px) so lines meet circle centers */
7262
- padding-left: var(--spacing-4);
7263
- padding-right: var(--spacing-4);
7264
- position: relative;
7265
- z-index: 1;
7439
+ justify-content: center;
7440
+ width: 24px;
7441
+ height: 24px;
7266
7442
  }
7267
7443
 
7268
- /* ─── Individual connector line ─────────────────────────── */
7269
- .muka-progress-bar__connector {
7270
- flex: 1 0 0;
7271
- height: 4px;
7272
- min-width: 1px;
7444
+ .muka-fab__icon svg {
7445
+ width: 100%;
7446
+ height: 100%;
7273
7447
  }
7274
7448
 
7275
- /* Past: solid dark line */
7276
- .muka-progress-bar__connector--past {
7277
- 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);
7278
7454
  }
7279
7455
 
7280
- /* Current: gradient from past (dark) toward current step */
7281
- .muka-progress-bar__connector--current {
7282
- background: linear-gradient(
7283
- to right,
7284
- var(--alias-color-accent-contrast) 0%,
7285
- var(--alias-color-accent-default) 100%
7286
- );
7456
+ /* ─── Positioning ─────────────────────────────────────── */
7457
+
7458
+ .muka-fab--bottom-right {
7459
+ right: var(--spacing-4);
7460
+ bottom: var(--spacing-4);
7287
7461
  }
7288
7462
 
7289
- /* Current-right: gradient fading from current step into upcoming */
7290
- .muka-progress-bar__connector--current-right {
7291
- background: linear-gradient(
7292
- to right,
7293
- var(--alias-color-accent-default) 0%,
7294
- var(--alias-color-accent-default) 15%,
7295
- var(--color-surface-sunken) 50%
7296
- );
7463
+ .muka-fab--bottom-left {
7464
+ left: var(--spacing-4);
7465
+ bottom: var(--spacing-4);
7297
7466
  }
7298
7467
 
7299
- /* Upcoming: solid gray line */
7300
- .muka-progress-bar__connector--upcoming {
7301
- background-color: var(--color-surface-sunken);
7468
+ .muka-fab--bottom-center {
7469
+ left: 50%;
7470
+ bottom: var(--spacing-4);
7471
+ transform: translateX(-50%);
7302
7472
  }
7303
7473
 
7474
+ .muka-fab--bottom-center:active {
7475
+ transform: translateX(-50%) scale(0.96);
7476
+ }
7304
7477
 
7305
- /* FileUpload */
7306
- /* 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
+ }
7307
7482
 
7308
- .muka-fileupload-wrapper {
7309
- display: flex;
7310
- flex-direction: column;
7311
- gap: var(--spacing-3);
7312
- 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));
7313
7486
  }
7314
7487
 
7315
- /* Dropzone */
7316
- .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 {
7317
7497
  display: flex;
7318
7498
  flex-direction: column;
7319
7499
  align-items: center;
7320
7500
  justify-content: center;
7321
- gap: var(--fileupload-dropzone-gap);
7322
- padding: var(--fileupload-dropzone-padding-md);
7323
- background-color: var(--fileupload-dropzone-color-default-background);
7324
- border: var(--fileupload-dropzone-border-width) dashed var(--fileupload-dropzone-color-default-border);
7325
- border-radius: var(--fileupload-dropzone-radius);
7326
- cursor: pointer;
7327
- 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;
7328
7504
  text-align: center;
7329
- min-height: 120px;
7330
7505
  }
7331
7506
 
7332
- .muka-fileupload:focus-visible {
7333
- outline: 2px solid var(--color-border-focus);
7334
- outline-offset: 2px;
7507
+ /* Alignment variants */
7508
+ .muka-emptystate--left {
7509
+ align-items: flex-start;
7510
+ text-align: left;
7335
7511
  }
7336
7512
 
7337
7513
  /* Size variants */
7338
- .muka-fileupload--sm {
7339
- padding: var(--fileupload-dropzone-padding-sm);
7340
- min-height: 80px;
7514
+ .muka-emptystate--sm {
7515
+ padding: var(--emptystate-container-padding-sm);
7341
7516
  }
7342
7517
 
7343
- .muka-fileupload--lg {
7344
- padding: var(--fileupload-dropzone-padding-lg);
7345
- min-height: 160px;
7518
+ .muka-emptystate--md {
7519
+ padding: var(--emptystate-container-padding-md);
7346
7520
  }
7347
7521
 
7348
- /* Button variant */
7349
- .muka-fileupload--button {
7350
- flex-direction: row;
7351
- min-height: auto;
7352
- padding: var(--spacing-2) var(--spacing-3);
7353
- border-style: solid;
7354
- border-width: var(--border-width-regular);
7355
- border-radius: var(--border-radius-md);
7522
+ .muka-emptystate--lg {
7523
+ padding: var(--emptystate-container-padding-lg);
7356
7524
  }
7357
7525
 
7358
- /* Hover state */
7359
- .muka-fileupload:hover:not(.muka-fileupload--disabled) {
7360
- background-color: var(--fileupload-dropzone-color-hover-background);
7361
- border-color: var(--fileupload-dropzone-color-hover-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;
7362
7533
  }
7363
7534
 
7364
- /* Active/drag state */
7365
- .muka-fileupload--active:not(.muka-fileupload--disabled) {
7366
- background-color: var(--fileupload-dropzone-color-active-background);
7367
- border-color: var(--fileupload-dropzone-color-active-border);
7535
+ .muka-emptystate--sm .muka-emptystate__visual {
7536
+ width: var(--emptystate-icon-size-sm);
7537
+ height: var(--emptystate-icon-size-sm);
7368
7538
  }
7369
7539
 
7370
- /* Disabled state */
7371
- .muka-fileupload--disabled {
7372
- background-color: var(--fileupload-dropzone-color-disabled-background);
7373
- border-color: var(--fileupload-dropzone-color-disabled-border);
7374
- cursor: not-allowed;
7375
- opacity: 0.6;
7540
+ .muka-emptystate--md .muka-emptystate__visual {
7541
+ width: var(--emptystate-icon-size-md);
7542
+ height: var(--emptystate-icon-size-md);
7376
7543
  }
7377
7544
 
7378
- /* Hidden file input */
7379
- .muka-fileupload__input {
7380
- position: absolute;
7381
- width: 1px;
7382
- height: 1px;
7383
- padding: 0;
7384
- margin: -1px;
7385
- overflow: hidden;
7386
- clip: rect(0, 0, 0, 0);
7387
- white-space: nowrap;
7388
- border: 0;
7389
- }
7390
-
7391
- /* Content container */
7392
- .muka-fileupload__content {
7393
- display: flex;
7394
- flex-direction: column;
7395
- align-items: center;
7396
- 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);
7397
7548
  }
7398
7549
 
7399
- /* Upload icon */
7400
- .muka-fileupload__icon {
7401
- display: flex;
7402
- align-items: center;
7403
- justify-content: center;
7404
- width: var(--size-3xl);
7405
- height: var(--size-3xl);
7406
- color: var(--fileupload-dropzone-color-default-foreground);
7550
+ .muka-emptystate__visual svg {
7551
+ width: 100%;
7552
+ height: 100%;
7407
7553
  }
7408
7554
 
7409
- .muka-fileupload__icon svg {
7555
+ .muka-emptystate__visual img {
7410
7556
  width: 100%;
7411
7557
  height: 100%;
7558
+ object-fit: contain;
7412
7559
  }
7413
7560
 
7414
- .muka-fileupload--sm .muka-fileupload__icon {
7415
- width: var(--size-2xl);
7416
- height: var(--size-2xl);
7561
+ /* Content */
7562
+ .muka-emptystate__content {
7563
+ display: flex;
7564
+ flex-direction: column;
7565
+ gap: var(--spacing-2);
7417
7566
  }
7418
7567
 
7419
- .muka-fileupload--lg .muka-fileupload__icon {
7420
- width: var(--size-4xl);
7421
- height: var(--size-4xl);
7568
+ .muka-emptystate--left .muka-emptystate__content {
7569
+ align-items: flex-start;
7422
7570
  }
7423
7571
 
7424
- /* Text */
7425
- .muka-fileupload__text {
7426
- font-family: var(--text-body-md-regular-fontFamily);
7427
- font-size: var(--text-body-md-regular-fontSize);
7428
- font-weight: var(--text-body-md-regular-fontWeight);
7429
- line-height: var(--text-body-md-regular-lineHeight);
7430
- 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);
7431
7580
  }
7432
7581
 
7433
- .muka-fileupload--sm .muka-fileupload__text {
7434
- 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);
7435
7587
  }
7436
7588
 
7437
- /* Hint text */
7438
- .muka-fileupload__hint {
7439
- font-family: var(--text-label-sm-regular-fontFamily);
7440
- font-size: var(--text-label-sm-regular-fontSize);
7441
- font-weight: var(--text-label-sm-regular-fontWeight);
7442
- line-height: var(--text-label-sm-regular-lineHeight);
7443
- 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);
7444
7594
  }
7445
7595
 
7446
- /* File list */
7447
- .muka-fileupload__list {
7448
- display: flex;
7449
- flex-direction: column;
7450
- gap: var(--spacing-2);
7451
- list-style: none;
7596
+ /* Description */
7597
+ .muka-emptystate__description {
7598
+ color: var(--emptystate-description-color);
7452
7599
  margin: 0;
7453
- 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);
7454
7604
  }
7455
7605
 
7456
- .muka-fileupload__list li {
7457
- margin: 0;
7458
- 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);
7459
7611
  }
7460
7612
 
7461
- /* File item */
7462
- .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 {
7463
7622
  display: flex;
7464
- align-items: center;
7465
- gap: var(--fileupload-item-gap);
7466
- padding: var(--fileupload-item-padding-y) var(--fileupload-item-padding-x);
7467
- background-color: var(--fileupload-item-color-default-background);
7468
- 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;
7469
7627
  }
7470
7628
 
7471
- .muka-fileupload-item--error {
7472
- background-color: var(--fileupload-item-color-error-background);
7629
+ .muka-emptystate--left .muka-emptystate__actions {
7630
+ justify-content: flex-start;
7473
7631
  }
7474
7632
 
7475
- .muka-fileupload-item--success {
7476
- 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;
7477
7642
  }
7478
7643
 
7479
- /* Preview/Icon container */
7480
- .muka-fileupload-item__preview {
7481
- display: flex;
7482
- align-items: center;
7483
- justify-content: center;
7484
- flex-shrink: 0;
7485
- width: var(--fileupload-preview-size);
7486
- height: var(--fileupload-preview-size);
7487
- border-radius: var(--fileupload-preview-radius);
7488
- overflow: hidden;
7489
- 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;
7490
7652
  }
7491
7653
 
7492
- .muka-fileupload-item__thumbnail {
7493
- width: 100%;
7494
- height: 100%;
7495
- object-fit: cover;
7654
+ /* Backdrop */
7655
+ .muka-drawer::backdrop {
7656
+ background-color: var(--color-surface-backdrop);
7657
+ opacity: 0;
7658
+ transition: opacity 200ms ease;
7496
7659
  }
7497
7660
 
7498
- .muka-fileupload-item__icon {
7499
- color: var(--color-text-subtle-default);
7661
+ .muka-drawer--slide-in::backdrop {
7662
+ opacity: 1;
7500
7663
  }
7501
7664
 
7502
- /* File info */
7503
- .muka-fileupload-item__info {
7504
- flex: 1;
7505
- min-width: 0;
7665
+ /* Surface */
7666
+ .muka-drawer__surface {
7506
7667
  display: flex;
7507
7668
  flex-direction: column;
7508
- gap: var(--spacing-1);
7669
+ background-color: var(--color-surface-level3);
7670
+ box-shadow: var(--shadow-level5);
7671
+ height: 100%;
7672
+ overflow: hidden;
7673
+ position: fixed;
7674
+ transition: transform 200ms cubic-bezier(0.16, 1, 0.3, 1);
7509
7675
  }
7510
7676
 
7511
- .muka-fileupload-item__name {
7512
- font-family: var(--text-body-sm-medium-fontFamily);
7513
- font-size: var(--text-body-sm-medium-fontSize);
7514
- font-weight: var(--text-body-sm-medium-fontWeight);
7515
- line-height: var(--text-body-sm-medium-lineHeight);
7516
- color: var(--fileupload-item-color-default-foreground);
7517
- white-space: nowrap;
7518
- overflow: hidden;
7519
- text-overflow: ellipsis;
7677
+ /* Side positioning + initial transforms */
7678
+ .muka-drawer--right .muka-drawer__surface {
7679
+ top: 0;
7680
+ right: 0;
7681
+ bottom: 0;
7682
+ border-radius: var(--radius-lg) 0 0 var(--radius-lg);
7683
+ transform: translateX(100%);
7520
7684
  }
7521
7685
 
7522
- .muka-fileupload-item--error .muka-fileupload-item__name {
7523
- color: var(--fileupload-item-color-error-foreground);
7686
+ .muka-drawer--left .muka-drawer__surface {
7687
+ top: 0;
7688
+ left: 0;
7689
+ bottom: 0;
7690
+ border-radius: 0 var(--radius-lg) var(--radius-lg) 0;
7691
+ transform: translateX(-100%);
7524
7692
  }
7525
7693
 
7526
- .muka-fileupload-item__meta {
7527
- font-family: var(--text-label-sm-regular-fontFamily);
7528
- font-size: var(--text-label-sm-regular-fontSize);
7529
- font-weight: var(--text-label-sm-regular-fontWeight);
7530
- line-height: var(--text-label-sm-regular-lineHeight);
7531
- color: var(--color-text-subtle-default);
7694
+ .muka-drawer--bottom .muka-drawer__surface {
7695
+ left: 0;
7696
+ right: 0;
7697
+ bottom: 0;
7698
+ border-radius: var(--radius-lg) var(--radius-lg) 0 0;
7699
+ transform: translateY(100%);
7532
7700
  }
7533
7701
 
7534
- .muka-fileupload-item__error {
7535
- color: var(--fileupload-item-color-error-foreground);
7702
+ .muka-drawer--top .muka-drawer__surface {
7703
+ left: 0;
7704
+ right: 0;
7705
+ top: 0;
7706
+ border-radius: 0 0 var(--radius-lg) var(--radius-lg);
7707
+ transform: translateY(-100%);
7536
7708
  }
7537
7709
 
7538
- .muka-fileupload-item__progress {
7539
- margin-top: var(--spacing-1);
7710
+ /* Slide-in state */
7711
+ .muka-drawer--slide-in .muka-drawer__surface {
7712
+ transform: translate(0, 0);
7540
7713
  }
7541
7714
 
7542
- /* Actions */
7543
- .muka-fileupload-item__actions {
7544
- display: flex;
7545
- align-items: center;
7546
- gap: var(--spacing-2);
7547
- flex-shrink: 0;
7715
+ /* Width sizes (left/right) */
7716
+ .muka-drawer--right .muka-drawer__surface,
7717
+ .muka-drawer--left .muka-drawer__surface {
7718
+ width: var(--drawer-width-md);
7548
7719
  }
7549
7720
 
7550
- .muka-fileupload-item__status-icon--success {
7551
- color: var(--color-state-success-foreground);
7721
+ .muka-drawer--sm.muka-drawer--right .muka-drawer__surface,
7722
+ .muka-drawer--sm.muka-drawer--left .muka-drawer__surface {
7723
+ width: var(--drawer-width-sm);
7552
7724
  }
7553
7725
 
7554
- .muka-fileupload-item__status-icon--error {
7555
- color: var(--color-state-error-foreground);
7726
+ .muka-drawer--lg.muka-drawer--right .muka-drawer__surface,
7727
+ .muka-drawer--lg.muka-drawer--left .muka-drawer__surface {
7728
+ width: var(--drawer-width-lg);
7556
7729
  }
7557
7730
 
7558
- .muka-fileupload-item__remove {
7559
- opacity: 0.7;
7560
- }
7561
-
7562
- .muka-fileupload-item__remove:hover {
7563
- opacity: 1;
7564
- }
7565
-
7566
-
7567
- /* Label */
7568
- /* Label Component Styles - Using Muka Design Tokens */
7569
-
7570
- .muka-label {
7571
- display: inline-flex;
7572
- align-items: center;
7573
- color: var(--color-text-default-default);
7574
- cursor: pointer;
7575
- }
7576
-
7577
- .muka-label--sm {
7578
- font-family: var(--text-label-sm-semibold-fontFamily);
7579
- font-weight: var(--text-label-sm-semibold-fontWeight);
7580
- font-size: var(--text-label-sm-semibold-fontSize);
7581
- line-height: var(--text-label-sm-semibold-lineHeight);
7582
- }
7583
-
7584
- .muka-label--md {
7585
- font-family: var(--text-label-md-semibold-fontFamily);
7586
- font-weight: var(--text-label-md-semibold-fontWeight);
7587
- font-size: var(--text-label-md-semibold-fontSize);
7588
- line-height: var(--text-label-md-semibold-lineHeight);
7589
- }
7590
-
7591
- .muka-label--lg {
7592
- font-family: var(--text-label-lg-semibold-fontFamily);
7593
- font-weight: var(--text-label-lg-semibold-fontWeight);
7594
- font-size: var(--text-label-lg-semibold-fontSize);
7595
- line-height: var(--text-label-lg-semibold-lineHeight);
7596
- }
7597
-
7598
- .muka-label--disabled {
7599
- color: var(--color-text-subtle-default);
7600
- cursor: not-allowed;
7601
- }
7602
-
7603
- .muka-label__required {
7604
- color: var(--color-state-error-foreground);
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 {
7923
- display: flex;
7924
- flex-direction: column;
7925
- background-color: var(--color-surface-level3);
7926
- box-shadow: var(--shadow-level5);
7927
- height: 100%;
7928
- overflow: hidden;
7929
- position: fixed;
7930
- transition: transform 200ms cubic-bezier(0.16, 1, 0.3, 1);
7931
- }
7932
-
7933
- /* Side positioning + initial transforms */
7934
- .muka-drawer--right .muka-drawer__surface {
7935
- top: 0;
7936
- right: 0;
7937
- bottom: 0;
7938
- border-radius: var(--radius-lg) 0 0 var(--radius-lg);
7939
- transform: translateX(100%);
7940
- }
7941
-
7942
- .muka-drawer--left .muka-drawer__surface {
7943
- top: 0;
7944
- left: 0;
7945
- bottom: 0;
7946
- border-radius: 0 var(--radius-lg) var(--radius-lg) 0;
7947
- transform: translateX(-100%);
7948
- }
7949
-
7950
- .muka-drawer--bottom .muka-drawer__surface {
7951
- left: 0;
7952
- right: 0;
7953
- bottom: 0;
7954
- border-radius: var(--radius-lg) var(--radius-lg) 0 0;
7955
- transform: translateY(100%);
7956
- }
7957
-
7958
- .muka-drawer--top .muka-drawer__surface {
7959
- left: 0;
7960
- right: 0;
7961
- top: 0;
7962
- border-radius: 0 0 var(--radius-lg) var(--radius-lg);
7963
- transform: translateY(-100%);
7964
- }
7965
-
7966
- /* Slide-in state */
7967
- .muka-drawer--slide-in .muka-drawer__surface {
7968
- transform: translate(0, 0);
7969
- }
7970
-
7971
- /* Width sizes (left/right) */
7972
- .muka-drawer--right .muka-drawer__surface,
7973
- .muka-drawer--left .muka-drawer__surface {
7974
- width: var(--drawer-width-md);
7975
- }
7976
-
7977
- .muka-drawer--sm.muka-drawer--right .muka-drawer__surface,
7978
- .muka-drawer--sm.muka-drawer--left .muka-drawer__surface {
7979
- width: var(--drawer-width-sm);
7980
- }
7981
-
7982
- .muka-drawer--lg.muka-drawer--right .muka-drawer__surface,
7983
- .muka-drawer--lg.muka-drawer--left .muka-drawer__surface {
7984
- width: var(--drawer-width-lg);
7985
- }
7986
-
7987
- .muka-drawer--full.muka-drawer--right .muka-drawer__surface,
7988
- .muka-drawer--full.muka-drawer--left .muka-drawer__surface {
7989
- width: 100%;
7731
+ .muka-drawer--full.muka-drawer--right .muka-drawer__surface,
7732
+ .muka-drawer--full.muka-drawer--left .muka-drawer__surface {
7733
+ width: 100%;
7990
7734
  }
7991
7735
 
7992
7736
  /* Height sizes (top/bottom) */
@@ -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