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