@revikornmann/muka-ui 0.5.0 → 0.6.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 (85) hide show
  1. package/cli/commands/brand.js +7 -0
  2. package/cli/commands/init.js +7 -1
  3. package/cli/templates/CLAUDE.md +18 -4
  4. package/cli/templates/muka-ui-guidelines.md +20 -0
  5. package/dist/cjs/components/DataTable/DataTable.js +15 -2
  6. package/dist/cjs/components/DataTable/DataTable.js.map +1 -1
  7. package/dist/cjs/components/ListItem/ListItem.css +10 -4
  8. package/dist/cjs/components/ProgressAccordeon/ProgressAccordeon.css +207 -0
  9. package/dist/cjs/components/ProgressAccordeon/ProgressAccordeon.js +66 -0
  10. package/dist/cjs/components/ProgressAccordeon/ProgressAccordeon.js.map +1 -0
  11. package/dist/cjs/components/ProgressAccordeon/index.js +11 -0
  12. package/dist/cjs/components/ProgressAccordeon/index.js.map +1 -0
  13. package/dist/cjs/components/index.js +5 -3
  14. package/dist/cjs/components/index.js.map +1 -1
  15. package/dist/esm/components/DataTable/DataTable.js +15 -2
  16. package/dist/esm/components/DataTable/DataTable.js.map +1 -1
  17. package/dist/esm/components/ListItem/ListItem.css +10 -4
  18. package/dist/esm/components/ProgressAccordeon/ProgressAccordeon.css +207 -0
  19. package/dist/esm/components/ProgressAccordeon/ProgressAccordeon.js +62 -0
  20. package/dist/esm/components/ProgressAccordeon/ProgressAccordeon.js.map +1 -0
  21. package/dist/esm/components/ProgressAccordeon/index.js +3 -0
  22. package/dist/esm/components/ProgressAccordeon/index.js.map +1 -0
  23. package/dist/esm/components/index.js +1 -0
  24. package/dist/esm/components/index.js.map +1 -1
  25. package/dist/styles/components/ListItem.css +10 -4
  26. package/dist/styles/components/ProgressAccordeon.css +207 -0
  27. package/dist/styles/fonts/funnel-display-latin-wght-normal.woff2 +0 -0
  28. package/dist/styles/fonts/funnel-display.LICENSE.txt +93 -0
  29. package/dist/styles/fonts/funnel-sans-latin-wght-normal.woff2 +0 -0
  30. package/dist/styles/fonts/funnel-sans.LICENSE.txt +93 -0
  31. package/dist/styles/fonts/ibm-plex-sans-latin-wght-normal.woff2 +0 -0
  32. package/dist/styles/fonts/ibm-plex-sans.LICENSE.txt +93 -0
  33. package/dist/styles/fonts/lora-latin-wght-normal.woff2 +0 -0
  34. package/dist/styles/fonts/lora.LICENSE.txt +93 -0
  35. package/dist/styles/fonts/quicksand-latin-wght-normal.woff2 +0 -0
  36. package/dist/styles/fonts/quicksand.LICENSE.txt +93 -0
  37. package/dist/styles/fonts/red-hat-display-latin-wght-normal.woff2 +0 -0
  38. package/dist/styles/fonts/red-hat-display.LICENSE.txt +93 -0
  39. package/dist/styles/fonts/red-hat-text-latin-wght-normal.woff2 +0 -0
  40. package/dist/styles/fonts/red-hat-text.LICENSE.txt +93 -0
  41. package/dist/styles/fonts/yesteryear-latin-400-normal.woff2 +0 -0
  42. package/dist/styles/fonts/yesteryear.LICENSE.txt +93 -0
  43. package/dist/styles/fonts-all.css +75 -0
  44. package/dist/styles/fonts-bouwplan.css +30 -0
  45. package/dist/styles/fonts-fscl.css +21 -0
  46. package/dist/styles/fonts-grip.css +21 -0
  47. package/dist/styles/fonts-muka.css +30 -0
  48. package/dist/styles/fonts-wireframe.css +5 -0
  49. package/dist/styles/index.css +1936 -1580
  50. package/dist/styles/muka-dark.css +1936 -1580
  51. package/dist/styles/muka-light.css +1936 -1580
  52. package/dist/styles/tokens-bouwplan-dark.css +113 -5
  53. package/dist/styles/tokens-bouwplan-light.css +113 -5
  54. package/dist/styles/tokens-fscl-dark.css +113 -5
  55. package/dist/styles/tokens-fscl-light.css +113 -5
  56. package/dist/styles/tokens-grip-dark.css +113 -5
  57. package/dist/styles/tokens-grip-light.css +113 -5
  58. package/dist/styles/tokens-muka-dark.css +113 -5
  59. package/dist/styles/tokens-muka-light.css +113 -5
  60. package/dist/styles/tokens-wireframe-dark.css +113 -5
  61. package/dist/styles/tokens-wireframe-light.css +113 -5
  62. package/dist/styles/wireframe-dark.css +1303 -979
  63. package/dist/styles/wireframe-light.css +1303 -979
  64. package/dist/types/components/DataTable/DataTable.d.ts.map +1 -1
  65. package/dist/types/components/ProgressAccordeon/ProgressAccordeon.d.ts +91 -0
  66. package/dist/types/components/ProgressAccordeon/ProgressAccordeon.d.ts.map +1 -0
  67. package/dist/types/components/ProgressAccordeon/index.d.ts +3 -0
  68. package/dist/types/components/ProgressAccordeon/index.d.ts.map +1 -0
  69. package/dist/types/components/index.d.ts +1 -0
  70. package/dist/types/components/index.d.ts.map +1 -1
  71. package/docs/consumers/setup-instructions.md +22 -3
  72. package/package.json +12 -2
  73. package/scripts/build-fonts.js +248 -0
  74. package/tokens/t1-primitives/color.json +400 -0
  75. package/tokens/t2-alias/brand/bouwplan/dark.json +15 -1
  76. package/tokens/t2-alias/brand/bouwplan/light.json +15 -1
  77. package/tokens/t2-alias/brand/fscl/dark.json +15 -1
  78. package/tokens/t2-alias/brand/fscl/light.json +15 -1
  79. package/tokens/t2-alias/brand/grip/dark.json +51 -1
  80. package/tokens/t2-alias/brand/grip/light.json +51 -1
  81. package/tokens/t2-alias/brand/muka/dark.json +51 -1
  82. package/tokens/t2-alias/brand/muka/light.json +51 -1
  83. package/tokens/t2-alias/brand/wireframe/dark.json +51 -1
  84. package/tokens/t2-alias/brand/wireframe/light.json +51 -1
  85. package/tokens/t3-semantics/ui.json +13 -13
@@ -2,6 +2,38 @@
2
2
  /* Generated by build-styles.js - DO NOT EDIT */
3
3
  /* Default theme: muka-light */
4
4
 
5
+ /* ========== Self-hosted brand fonts ========== */
6
+ /* Muka UI - muka fonts */
7
+ /* Generated by build-fonts.js - DO NOT EDIT */
8
+ /* Self-hosted brand fonts (SIL OFL). See ./fonts/*.LICENSE.txt */
9
+
10
+ @font-face {
11
+ font-family: 'Funnel Display';
12
+ font-style: normal;
13
+ font-weight: 300 800;
14
+ font-display: swap;
15
+ src: url('./fonts/funnel-display-latin-wght-normal.woff2') format('woff2');
16
+ unicode-range: U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;
17
+ }
18
+
19
+ @font-face {
20
+ font-family: 'Funnel Sans';
21
+ font-style: normal;
22
+ font-weight: 300 800;
23
+ font-display: swap;
24
+ src: url('./fonts/funnel-sans-latin-wght-normal.woff2') format('woff2');
25
+ unicode-range: U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;
26
+ }
27
+
28
+ @font-face {
29
+ font-family: 'Yesteryear';
30
+ font-style: normal;
31
+ font-weight: 400;
32
+ font-display: swap;
33
+ src: url('./fonts/yesteryear-latin-400-normal.woff2') format('woff2');
34
+ unicode-range: U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;
35
+ }
36
+
5
37
  /* ========== Base Styles ========== */
6
38
  /* Base styles for Storybook preview */
7
39
  /* Fallback values in case tokens don't load */
@@ -667,6 +699,102 @@ body {
667
699
  --color-white-alpha-10: rgba(255, 255, 255, 0.478);
668
700
  --color-white-alpha-11: rgba(255, 255, 255, 0.565);
669
701
  --color-white-alpha-12: rgba(255, 255, 255, 0.910);
702
+ --color-mauveA-1: rgba(85, 0, 85, 0.012);
703
+ --color-mauveA-2: rgba(43, 0, 85, 0.024);
704
+ --color-mauveA-3: rgba(48, 0, 64, 0.063);
705
+ --color-mauveA-4: rgba(32, 0, 54, 0.094);
706
+ --color-mauveA-5: rgba(32, 0, 56, 0.125);
707
+ --color-mauveA-6: rgba(20, 0, 53, 0.153);
708
+ --color-mauveA-7: rgba(16, 0, 51, 0.196);
709
+ --color-mauveA-8: rgba(8, 0, 49, 0.271);
710
+ --color-mauveA-9: rgba(5, 0, 29, 0.451);
711
+ --color-mauveA-10: rgba(5, 0, 25, 0.49);
712
+ --color-mauveA-11: rgba(4, 0, 17, 0.612);
713
+ --color-mauveA-12: rgba(2, 0, 8, 0.878);
714
+ --color-grayA-1: rgba(0, 0, 0, 0.012);
715
+ --color-grayA-2: rgba(0, 0, 0, 0.024);
716
+ --color-grayA-3: rgba(0, 0, 0, 0.059);
717
+ --color-grayA-4: rgba(0, 0, 0, 0.09);
718
+ --color-grayA-5: rgba(0, 0, 0, 0.122);
719
+ --color-grayA-6: rgba(0, 0, 0, 0.149);
720
+ --color-grayA-7: rgba(0, 0, 0, 0.192);
721
+ --color-grayA-8: rgba(0, 0, 0, 0.267);
722
+ --color-grayA-9: rgba(0, 0, 0, 0.447);
723
+ --color-grayA-10: rgba(0, 0, 0, 0.486);
724
+ --color-grayA-11: rgba(0, 0, 0, 0.608);
725
+ --color-grayA-12: rgba(0, 0, 0, 0.875);
726
+ --color-sandA-1: rgba(85, 85, 0, 0.012);
727
+ --color-sandA-2: rgba(37, 37, 0, 0.027);
728
+ --color-sandA-3: rgba(32, 16, 0, 0.063);
729
+ --color-sandA-4: rgba(31, 21, 0, 0.098);
730
+ --color-sandA-5: rgba(31, 24, 0, 0.129);
731
+ --color-sandA-6: rgba(25, 19, 0, 0.161);
732
+ --color-sandA-7: rgba(25, 20, 0, 0.208);
733
+ --color-sandA-8: rgba(25, 21, 1, 0.29);
734
+ --color-sandA-9: rgba(15, 15, 0, 0.475);
735
+ --color-sandA-10: rgba(12, 12, 0, 0.514);
736
+ --color-sandA-11: rgba(8, 8, 0, 0.631);
737
+ --color-sandA-12: rgba(6, 5, 0, 0.89);
738
+ --color-sageA-1: rgba(0, 128, 64, 0.016);
739
+ --color-sageA-2: rgba(0, 64, 32, 0.031);
740
+ --color-sageA-3: rgba(0, 45, 30, 0.067);
741
+ --color-sageA-4: rgba(0, 31, 21, 0.098);
742
+ --color-sageA-5: rgba(0, 24, 8, 0.125);
743
+ --color-sageA-6: rgba(0, 20, 13, 0.157);
744
+ --color-sageA-7: rgba(0, 20, 10, 0.204);
745
+ --color-sageA-8: rgba(0, 15, 8, 0.278);
746
+ --color-sageA-9: rgba(0, 17, 11, 0.475);
747
+ --color-sageA-10: rgba(0, 16, 10, 0.514);
748
+ --color-sageA-11: rgba(0, 10, 7, 0.627);
749
+ --color-sageA-12: rgba(0, 8, 5, 0.898);
750
+ --color-mauveDarkA-1: rgba(0, 0, 0, 0.0);
751
+ --color-mauveDarkA-2: rgba(245, 244, 246, 0.035);
752
+ --color-mauveDarkA-3: rgba(235, 234, 248, 0.078);
753
+ --color-mauveDarkA-4: rgba(238, 229, 248, 0.114);
754
+ --color-mauveDarkA-5: rgba(239, 230, 254, 0.145);
755
+ --color-mauveDarkA-6: rgba(241, 230, 253, 0.188);
756
+ --color-mauveDarkA-7: rgba(238, 233, 255, 0.251);
757
+ --color-mauveDarkA-8: rgba(238, 231, 255, 0.365);
758
+ --color-mauveDarkA-9: rgba(234, 230, 253, 0.431);
759
+ --color-mauveDarkA-10: rgba(236, 233, 253, 0.486);
760
+ --color-mauveDarkA-11: rgba(245, 241, 255, 0.718);
761
+ --color-mauveDarkA-12: rgba(253, 253, 255, 0.937);
762
+ --color-grayDarkA-1: rgba(0, 0, 0, 0.0);
763
+ --color-grayDarkA-2: rgba(255, 255, 255, 0.035);
764
+ --color-grayDarkA-3: rgba(255, 255, 255, 0.071);
765
+ --color-grayDarkA-4: rgba(255, 255, 255, 0.106);
766
+ --color-grayDarkA-5: rgba(255, 255, 255, 0.133);
767
+ --color-grayDarkA-6: rgba(255, 255, 255, 0.173);
768
+ --color-grayDarkA-7: rgba(255, 255, 255, 0.231);
769
+ --color-grayDarkA-8: rgba(255, 255, 255, 0.333);
770
+ --color-grayDarkA-9: rgba(255, 255, 255, 0.392);
771
+ --color-grayDarkA-10: rgba(255, 255, 255, 0.447);
772
+ --color-grayDarkA-11: rgba(255, 255, 255, 0.686);
773
+ --color-grayDarkA-12: rgba(255, 255, 255, 0.929);
774
+ --color-sandDarkA-1: rgba(0, 0, 0, 0.0);
775
+ --color-sandDarkA-2: rgba(244, 244, 243, 0.035);
776
+ --color-sandDarkA-3: rgba(246, 246, 245, 0.075);
777
+ --color-sandDarkA-4: rgba(254, 254, 243, 0.106);
778
+ --color-sandDarkA-5: rgba(251, 251, 235, 0.137);
779
+ --color-sandDarkA-6: rgba(255, 250, 237, 0.176);
780
+ --color-sandDarkA-7: rgba(255, 251, 237, 0.235);
781
+ --color-sandDarkA-8: rgba(255, 249, 235, 0.341);
782
+ --color-sandDarkA-9: rgba(255, 250, 233, 0.396);
783
+ --color-sandDarkA-10: rgba(255, 253, 238, 0.451);
784
+ --color-sandDarkA-11: rgba(255, 252, 244, 0.69);
785
+ --color-sandDarkA-12: rgba(255, 255, 253, 0.929);
786
+ --color-sageDarkA-1: rgba(0, 0, 0, 0.0);
787
+ --color-sageDarkA-2: rgba(240, 242, 241, 0.031);
788
+ --color-sageDarkA-3: rgba(243, 245, 244, 0.071);
789
+ --color-sageDarkA-4: rgba(242, 254, 253, 0.102);
790
+ --color-sageDarkA-5: rgba(241, 251, 250, 0.133);
791
+ --color-sageDarkA-6: rgba(237, 251, 244, 0.176);
792
+ --color-sageDarkA-7: rgba(237, 252, 247, 0.235);
793
+ --color-sageDarkA-8: rgba(235, 253, 246, 0.341);
794
+ --color-sageDarkA-9: rgba(223, 253, 242, 0.4);
795
+ --color-sageDarkA-10: rgba(229, 253, 246, 0.455);
796
+ --color-sageDarkA-11: rgba(244, 254, 251, 0.69);
797
+ --color-sageDarkA-12: rgba(253, 255, 254, 0.929);
670
798
  --color-grayDark-1: #111111;
671
799
  --color-grayDark-2: #191919;
672
800
  --color-grayDark-3: #222222;
@@ -1044,8 +1172,8 @@ body {
1044
1172
  --color-surface-level1: #eae7ec;
1045
1173
  --color-surface-level2: #f2eff3;
1046
1174
  --color-surface-level3: #fdfcfd;
1047
- --color-surface-hover: #faf9fb;
1048
- --color-surface-pressed: #fdfcfd;
1175
+ --color-surface-hover: rgba(43, 0, 85, 0.024);
1176
+ --color-surface-pressed: rgba(48, 0, 64, 0.063);
1049
1177
  --color-surface-backdrop: rgba(0, 0, 0, 0.565);
1050
1178
  --color-surface-inverse: #211f26;
1051
1179
  --color-surface-white: #ffffff;
@@ -1108,6 +1236,18 @@ body {
1108
1236
  --alias-color-neutral-alpha-7: rgba(0, 0, 0, 0.565);
1109
1237
  --alias-color-neutral-alpha-8: rgba(0, 0, 0, 0.910);
1110
1238
  --alias-color-neutral-alpha-9: rgba(0, 0, 0, 0.910);
1239
+ --alias-color-neutral-alphaHued-1: rgba(85, 0, 85, 0.012);
1240
+ --alias-color-neutral-alphaHued-2: rgba(43, 0, 85, 0.024);
1241
+ --alias-color-neutral-alphaHued-3: rgba(48, 0, 64, 0.063);
1242
+ --alias-color-neutral-alphaHued-4: rgba(32, 0, 54, 0.094);
1243
+ --alias-color-neutral-alphaHued-5: rgba(32, 0, 56, 0.125);
1244
+ --alias-color-neutral-alphaHued-6: rgba(20, 0, 53, 0.153);
1245
+ --alias-color-neutral-alphaHued-7: rgba(16, 0, 51, 0.196);
1246
+ --alias-color-neutral-alphaHued-8: rgba(8, 0, 49, 0.271);
1247
+ --alias-color-neutral-alphaHued-9: rgba(5, 0, 29, 0.451);
1248
+ --alias-color-neutral-alphaHued-10: rgba(5, 0, 25, 0.49);
1249
+ --alias-color-neutral-alphaHued-11: rgba(4, 0, 17, 0.612);
1250
+ --alias-color-neutral-alphaHued-12: rgba(2, 0, 8, 0.878);
1111
1251
  --alias-color-brand-primary-regular: #3a5ccc;
1112
1252
  --alias-color-brand-primary-contrast: #1f2d5c;
1113
1253
  --alias-color-brand-primary-muted: #edf2fe;
@@ -1675,7 +1815,7 @@ body {
1675
1815
  --menu-item-color-default-background: transparent;
1676
1816
  --menu-item-color-default-foreground: #211f26;
1677
1817
  --menu-item-color-default-icon: #8e8c99;
1678
- --menu-item-color-hover-background: #faf9fb;
1818
+ --menu-item-color-hover-background: rgba(43, 0, 85, 0.024);
1679
1819
  --menu-item-color-hover-foreground: #211f26;
1680
1820
  --menu-item-color-hover-icon: #211f26;
1681
1821
  --menu-item-color-focus-background: #8da4ef;
@@ -1905,8 +2045,8 @@ body {
1905
2045
  --datatable-row-background: #fdfcfd;
1906
2046
  --datatable-row-foreground: #211f26;
1907
2047
  --datatable-row-border: #eae7ec;
1908
- --datatable-row-hover-background: #faf9fb;
1909
- --datatable-row-pressed-background: #fdfcfd;
2048
+ --datatable-row-hover-background: rgba(43, 0, 85, 0.024);
2049
+ --datatable-row-pressed-background: rgba(48, 0, 64, 0.063);
1910
2050
  --datatable-row-selected-background: #edf2fe;
1911
2051
  --datatable-cell-padding-x-sm: 0.5rem;
1912
2052
  --datatable-cell-padding-x-md: 0.75rem;
@@ -2617,196 +2757,6 @@ body {
2617
2757
  }
2618
2758
 
2619
2759
 
2620
- /* Toast */
2621
- /* Toast Component Styles - Using Muka Design Tokens */
2622
-
2623
- .muka-toast {
2624
- display: flex;
2625
- align-items: flex-start;
2626
- gap: var(--toast-gap);
2627
- padding: var(--toast-padding-y) var(--toast-padding-x);
2628
- border-radius: var(--toast-radius);
2629
- box-shadow: var(--toast-shadow);
2630
- min-width: var(--toast-width-min);
2631
- max-width: var(--toast-width-max);
2632
- pointer-events: auto;
2633
- animation: muka-toast-slide-in 0.2s ease-out;
2634
- }
2635
-
2636
- /* Entry animation */
2637
- @keyframes muka-toast-slide-in {
2638
- from {
2639
- opacity: 0;
2640
- transform: translateY(8px);
2641
- }
2642
- to {
2643
- opacity: 1;
2644
- transform: translateY(0);
2645
- }
2646
- }
2647
-
2648
- /* Position variants (for standalone use - typically managed by ToastProvider) */
2649
- .muka-toast--top-right,
2650
- .muka-toast--top-left,
2651
- .muka-toast--top-center,
2652
- .muka-toast--bottom-right,
2653
- .muka-toast--bottom-left,
2654
- .muka-toast--bottom-center {
2655
- position: fixed;
2656
- z-index: 9999;
2657
- }
2658
-
2659
- .muka-toast--top-right {
2660
- top: var(--spacing-4);
2661
- right: var(--spacing-4);
2662
- }
2663
-
2664
- .muka-toast--top-left {
2665
- top: var(--spacing-4);
2666
- left: var(--spacing-4);
2667
- }
2668
-
2669
- .muka-toast--top-center {
2670
- top: var(--spacing-4);
2671
- left: 50%;
2672
- transform: translateX(-50%);
2673
- }
2674
-
2675
- .muka-toast--bottom-right {
2676
- bottom: var(--spacing-4);
2677
- right: var(--spacing-4);
2678
- }
2679
-
2680
- .muka-toast--bottom-left {
2681
- bottom: var(--spacing-4);
2682
- left: var(--spacing-4);
2683
- }
2684
-
2685
- .muka-toast--bottom-center {
2686
- bottom: var(--spacing-4);
2687
- left: 50%;
2688
- transform: translateX(-50%);
2689
- }
2690
-
2691
- /* Variant: Info */
2692
- .muka-toast--info {
2693
- background-color: var(--toast-color-info-background);
2694
- color: var(--toast-color-info-foreground);
2695
- }
2696
-
2697
- .muka-toast--info .muka-toast__icon {
2698
- color: var(--toast-color-info-accent);
2699
- }
2700
-
2701
- /* Variant: Success */
2702
- .muka-toast--success {
2703
- background-color: var(--toast-color-success-background);
2704
- color: var(--toast-color-success-foreground);
2705
- }
2706
-
2707
- .muka-toast--success .muka-toast__icon {
2708
- color: var(--toast-color-success-accent);
2709
- }
2710
-
2711
- /* Variant: Warning */
2712
- .muka-toast--warning {
2713
- background-color: var(--toast-color-warning-background);
2714
- color: var(--toast-color-warning-foreground);
2715
- }
2716
-
2717
- .muka-toast--warning .muka-toast__icon {
2718
- color: var(--toast-color-warning-accent);
2719
- }
2720
-
2721
- /* Variant: Error */
2722
- .muka-toast--error {
2723
- background-color: var(--toast-color-error-background);
2724
- color: var(--toast-color-error-foreground);
2725
- }
2726
-
2727
- .muka-toast--error .muka-toast__icon {
2728
- color: var(--toast-color-error-accent);
2729
- }
2730
-
2731
- /* Icon */
2732
- .muka-toast__icon {
2733
- display: flex;
2734
- align-items: center;
2735
- justify-content: center;
2736
- flex-shrink: 0;
2737
- width: var(--toast-icon-size);
2738
- height: var(--toast-icon-size);
2739
- }
2740
-
2741
- .muka-toast__icon svg {
2742
- width: 100%;
2743
- height: 100%;
2744
- }
2745
-
2746
- /* Content */
2747
- .muka-toast__content {
2748
- flex: 1;
2749
- min-width: 0;
2750
- }
2751
-
2752
- .muka-toast__title {
2753
- font-family: var(--text-label-md-semibold-fontFamily);
2754
- font-weight: var(--text-label-md-semibold-fontWeight);
2755
- font-size: var(--text-label-md-semibold-fontSize);
2756
- line-height: var(--text-label-md-semibold-lineHeight);
2757
- margin-bottom: var(--spacing-1);
2758
- }
2759
-
2760
- .muka-toast__message {
2761
- font-family: var(--text-body-sm-regular-fontFamily);
2762
- font-weight: var(--text-body-sm-regular-fontWeight);
2763
- font-size: var(--text-body-sm-regular-fontSize);
2764
- line-height: var(--text-body-sm-regular-lineHeight);
2765
- }
2766
-
2767
- /* Action slot */
2768
- .muka-toast__action {
2769
- display: flex;
2770
- align-items: center;
2771
- flex-shrink: 0;
2772
- }
2773
-
2774
- /* Dismiss button */
2775
- .muka-toast__dismiss {
2776
- display: flex;
2777
- align-items: center;
2778
- justify-content: center;
2779
- flex-shrink: 0;
2780
- width: 24px;
2781
- height: 24px;
2782
- padding: 0;
2783
- margin: -2px -4px -2px 0;
2784
- border: none;
2785
- background: transparent;
2786
- color: inherit;
2787
- opacity: 0.7;
2788
- cursor: pointer;
2789
- border-radius: var(--border-radius-sm);
2790
- transition: opacity 0.15s ease, background-color 0.15s ease;
2791
- }
2792
-
2793
- .muka-toast__dismiss:hover {
2794
- opacity: 1;
2795
- background-color: rgba(0, 0, 0, 0.05);
2796
- }
2797
-
2798
- .muka-toast__dismiss:focus-visible {
2799
- outline: 2px solid var(--color-border-focus);
2800
- outline-offset: 2px;
2801
- opacity: 1;
2802
- }
2803
-
2804
- .muka-toast__dismiss svg {
2805
- width: 16px;
2806
- height: 16px;
2807
- }
2808
-
2809
-
2810
2760
  /* Tile */
2811
2761
  /* Tile Component Styles - Using Muka Design Tokens */
2812
2762
 
@@ -3168,43 +3118,233 @@ body {
3168
3118
  }
3169
3119
 
3170
3120
 
3171
- /* Textarea */
3172
- /* Textarea Component Styles - Using Muka Design Tokens */
3121
+ /* Toast */
3122
+ /* Toast Component Styles - Using Muka Design Tokens */
3173
3123
 
3174
- .muka-textarea {
3175
- display: inline-flex;
3176
- flex-direction: column;
3177
- gap: var(--spacing-2);
3124
+ .muka-toast {
3125
+ display: flex;
3126
+ align-items: flex-start;
3127
+ gap: var(--toast-gap);
3128
+ padding: var(--toast-padding-y) var(--toast-padding-x);
3129
+ border-radius: var(--toast-radius);
3130
+ box-shadow: var(--toast-shadow);
3131
+ min-width: var(--toast-width-min);
3132
+ max-width: var(--toast-width-max);
3133
+ pointer-events: auto;
3134
+ animation: muka-toast-slide-in 0.2s ease-out;
3178
3135
  }
3179
3136
 
3180
- /* Label */
3181
- .muka-textarea__label {
3182
- color: var(--color-text-default-default);
3183
- cursor: pointer;
3137
+ /* Entry animation */
3138
+ @keyframes muka-toast-slide-in {
3139
+ from {
3140
+ opacity: 0;
3141
+ transform: translateY(8px);
3142
+ }
3143
+ to {
3144
+ opacity: 1;
3145
+ transform: translateY(0);
3146
+ }
3184
3147
  }
3185
3148
 
3186
- .muka-textarea__label--sm {
3187
- font-family: var(--text-label-sm-semibold-fontFamily);
3188
- font-weight: var(--text-label-sm-semibold-fontWeight);
3189
- font-size: var(--text-label-sm-semibold-fontSize);
3190
- line-height: var(--text-label-sm-semibold-lineHeight);
3149
+ /* Position variants (for standalone use - typically managed by ToastProvider) */
3150
+ .muka-toast--top-right,
3151
+ .muka-toast--top-left,
3152
+ .muka-toast--top-center,
3153
+ .muka-toast--bottom-right,
3154
+ .muka-toast--bottom-left,
3155
+ .muka-toast--bottom-center {
3156
+ position: fixed;
3157
+ z-index: 9999;
3191
3158
  }
3192
3159
 
3193
- .muka-textarea__label--md {
3194
- font-family: var(--text-label-md-semibold-fontFamily);
3195
- font-weight: var(--text-label-md-semibold-fontWeight);
3196
- font-size: var(--text-label-md-semibold-fontSize);
3197
- line-height: var(--text-label-md-semibold-lineHeight);
3160
+ .muka-toast--top-right {
3161
+ top: var(--spacing-4);
3162
+ right: var(--spacing-4);
3198
3163
  }
3199
3164
 
3200
- .muka-textarea__label--lg {
3201
- font-family: var(--text-label-lg-semibold-fontFamily);
3202
- font-weight: var(--text-label-lg-semibold-fontWeight);
3203
- font-size: var(--text-label-lg-semibold-fontSize);
3204
- line-height: var(--text-label-lg-semibold-lineHeight);
3165
+ .muka-toast--top-left {
3166
+ top: var(--spacing-4);
3167
+ left: var(--spacing-4);
3205
3168
  }
3206
3169
 
3207
- .muka-textarea__required {
3170
+ .muka-toast--top-center {
3171
+ top: var(--spacing-4);
3172
+ left: 50%;
3173
+ transform: translateX(-50%);
3174
+ }
3175
+
3176
+ .muka-toast--bottom-right {
3177
+ bottom: var(--spacing-4);
3178
+ right: var(--spacing-4);
3179
+ }
3180
+
3181
+ .muka-toast--bottom-left {
3182
+ bottom: var(--spacing-4);
3183
+ left: var(--spacing-4);
3184
+ }
3185
+
3186
+ .muka-toast--bottom-center {
3187
+ bottom: var(--spacing-4);
3188
+ left: 50%;
3189
+ transform: translateX(-50%);
3190
+ }
3191
+
3192
+ /* Variant: Info */
3193
+ .muka-toast--info {
3194
+ background-color: var(--toast-color-info-background);
3195
+ color: var(--toast-color-info-foreground);
3196
+ }
3197
+
3198
+ .muka-toast--info .muka-toast__icon {
3199
+ color: var(--toast-color-info-accent);
3200
+ }
3201
+
3202
+ /* Variant: Success */
3203
+ .muka-toast--success {
3204
+ background-color: var(--toast-color-success-background);
3205
+ color: var(--toast-color-success-foreground);
3206
+ }
3207
+
3208
+ .muka-toast--success .muka-toast__icon {
3209
+ color: var(--toast-color-success-accent);
3210
+ }
3211
+
3212
+ /* Variant: Warning */
3213
+ .muka-toast--warning {
3214
+ background-color: var(--toast-color-warning-background);
3215
+ color: var(--toast-color-warning-foreground);
3216
+ }
3217
+
3218
+ .muka-toast--warning .muka-toast__icon {
3219
+ color: var(--toast-color-warning-accent);
3220
+ }
3221
+
3222
+ /* Variant: Error */
3223
+ .muka-toast--error {
3224
+ background-color: var(--toast-color-error-background);
3225
+ color: var(--toast-color-error-foreground);
3226
+ }
3227
+
3228
+ .muka-toast--error .muka-toast__icon {
3229
+ color: var(--toast-color-error-accent);
3230
+ }
3231
+
3232
+ /* Icon */
3233
+ .muka-toast__icon {
3234
+ display: flex;
3235
+ align-items: center;
3236
+ justify-content: center;
3237
+ flex-shrink: 0;
3238
+ width: var(--toast-icon-size);
3239
+ height: var(--toast-icon-size);
3240
+ }
3241
+
3242
+ .muka-toast__icon svg {
3243
+ width: 100%;
3244
+ height: 100%;
3245
+ }
3246
+
3247
+ /* Content */
3248
+ .muka-toast__content {
3249
+ flex: 1;
3250
+ min-width: 0;
3251
+ }
3252
+
3253
+ .muka-toast__title {
3254
+ font-family: var(--text-label-md-semibold-fontFamily);
3255
+ font-weight: var(--text-label-md-semibold-fontWeight);
3256
+ font-size: var(--text-label-md-semibold-fontSize);
3257
+ line-height: var(--text-label-md-semibold-lineHeight);
3258
+ margin-bottom: var(--spacing-1);
3259
+ }
3260
+
3261
+ .muka-toast__message {
3262
+ font-family: var(--text-body-sm-regular-fontFamily);
3263
+ font-weight: var(--text-body-sm-regular-fontWeight);
3264
+ font-size: var(--text-body-sm-regular-fontSize);
3265
+ line-height: var(--text-body-sm-regular-lineHeight);
3266
+ }
3267
+
3268
+ /* Action slot */
3269
+ .muka-toast__action {
3270
+ display: flex;
3271
+ align-items: center;
3272
+ flex-shrink: 0;
3273
+ }
3274
+
3275
+ /* Dismiss button */
3276
+ .muka-toast__dismiss {
3277
+ display: flex;
3278
+ align-items: center;
3279
+ justify-content: center;
3280
+ flex-shrink: 0;
3281
+ width: 24px;
3282
+ height: 24px;
3283
+ padding: 0;
3284
+ margin: -2px -4px -2px 0;
3285
+ border: none;
3286
+ background: transparent;
3287
+ color: inherit;
3288
+ opacity: 0.7;
3289
+ cursor: pointer;
3290
+ border-radius: var(--border-radius-sm);
3291
+ transition: opacity 0.15s ease, background-color 0.15s ease;
3292
+ }
3293
+
3294
+ .muka-toast__dismiss:hover {
3295
+ opacity: 1;
3296
+ background-color: rgba(0, 0, 0, 0.05);
3297
+ }
3298
+
3299
+ .muka-toast__dismiss:focus-visible {
3300
+ outline: 2px solid var(--color-border-focus);
3301
+ outline-offset: 2px;
3302
+ opacity: 1;
3303
+ }
3304
+
3305
+ .muka-toast__dismiss svg {
3306
+ width: 16px;
3307
+ height: 16px;
3308
+ }
3309
+
3310
+
3311
+ /* Textarea */
3312
+ /* Textarea Component Styles - Using Muka Design Tokens */
3313
+
3314
+ .muka-textarea {
3315
+ display: inline-flex;
3316
+ flex-direction: column;
3317
+ gap: var(--spacing-2);
3318
+ }
3319
+
3320
+ /* Label */
3321
+ .muka-textarea__label {
3322
+ color: var(--color-text-default-default);
3323
+ cursor: pointer;
3324
+ }
3325
+
3326
+ .muka-textarea__label--sm {
3327
+ font-family: var(--text-label-sm-semibold-fontFamily);
3328
+ font-weight: var(--text-label-sm-semibold-fontWeight);
3329
+ font-size: var(--text-label-sm-semibold-fontSize);
3330
+ line-height: var(--text-label-sm-semibold-lineHeight);
3331
+ }
3332
+
3333
+ .muka-textarea__label--md {
3334
+ font-family: var(--text-label-md-semibold-fontFamily);
3335
+ font-weight: var(--text-label-md-semibold-fontWeight);
3336
+ font-size: var(--text-label-md-semibold-fontSize);
3337
+ line-height: var(--text-label-md-semibold-lineHeight);
3338
+ }
3339
+
3340
+ .muka-textarea__label--lg {
3341
+ font-family: var(--text-label-lg-semibold-fontFamily);
3342
+ font-weight: var(--text-label-lg-semibold-fontWeight);
3343
+ font-size: var(--text-label-lg-semibold-fontSize);
3344
+ line-height: var(--text-label-lg-semibold-lineHeight);
3345
+ }
3346
+
3347
+ .muka-textarea__required {
3208
3348
  color: var(--color-state-error-foreground);
3209
3349
  }
3210
3350
 
@@ -5389,243 +5529,52 @@ body {
5389
5529
  }
5390
5530
 
5391
5531
 
5392
- /* Radio */
5393
- /* Radio Component Styles - Using Muka Design Tokens */
5394
-
5395
- /* Wrapper - clickable label container */
5396
- .muka-radio {
5397
- display: inline-flex;
5398
- align-items: center;
5399
- gap: var(--spacing-4);
5400
- cursor: pointer;
5401
- user-select: none;
5402
- }
5532
+ /* ProgressTracker */
5533
+ /* ProgressTracker Component Styles — Using Muka Design Tokens */
5403
5534
 
5404
- .muka-radio--disabled {
5405
- cursor: not-allowed;
5406
- opacity: 0.6;
5535
+ /* ─── Root ──────────────────────────────────────────────── */
5536
+ .muka-progress-tracker {
5537
+ width: 100%;
5538
+ padding-bottom: var(--spacing-7);
5407
5539
  }
5408
5540
 
5409
- /* Control container */
5410
- .muka-radio__control {
5541
+ /* ─── Track (layered container) ─────────────────────────── */
5542
+ .muka-progress-tracker__track {
5411
5543
  position: relative;
5412
- display: inline-flex;
5413
- align-items: center;
5414
- justify-content: center;
5415
- flex-shrink: 0;
5544
+ /* Vertical padding = (indicator size - connector height) / 2 = (32 - 4) / 2 = 14px */
5545
+ padding-top: 14px;
5546
+ padding-bottom: 14px;
5416
5547
  }
5417
5548
 
5418
- /* Hidden native input */
5419
- .muka-radio__input {
5549
+ /* ─── Steps layer (on top) ──────────────────────────────── */
5550
+ .muka-progress-tracker__steps {
5420
5551
  position: absolute;
5421
- width: 1px;
5422
- height: 1px;
5423
- padding: 0;
5424
- margin: -1px;
5425
- overflow: hidden;
5426
- clip: rect(0, 0, 0, 0);
5427
- white-space: nowrap;
5428
- border: 0;
5552
+ inset: 0;
5553
+ display: flex;
5554
+ align-items: flex-start;
5555
+ justify-content: space-between;
5556
+ z-index: 2;
5429
5557
  }
5430
5558
 
5431
- /* Visual indicator (circle) */
5432
- .muka-radio__indicator {
5559
+ /* ─── Individual step ───────────────────────────────────── */
5560
+ .muka-progress-tracker__step {
5433
5561
  display: flex;
5562
+ flex-direction: column;
5434
5563
  align-items: center;
5435
- justify-content: center;
5436
- width: var(--radio-size-default);
5437
- height: var(--radio-size-default);
5438
- border-radius: var(--border-radius-full);
5439
- background-color: var(--radio-color-default-background);
5440
- border: var(--border-width-regular) solid var(--radio-color-default-border);
5441
- transition: all 0.15s ease;
5442
- box-shadow: inset 0 1px 2px 0 rgba(26, 26, 26, 0.15);
5564
+ gap: 7px;
5565
+ position: relative;
5443
5566
  }
5444
5567
 
5445
- /* Size variants */
5446
- .muka-radio--sm .muka-radio__indicator {
5447
- width: var(--radio-size-sm);
5448
- height: var(--radio-size-sm);
5449
- }
5450
-
5451
- .muka-radio--lg .muka-radio__indicator {
5452
- width: var(--radio-size-lg);
5453
- height: var(--radio-size-lg);
5454
- }
5455
-
5456
- /* Inner dot (shown when checked) */
5457
- .muka-radio__dot {
5458
- width: var(--radio-dot-size-default);
5459
- height: var(--radio-dot-size-default);
5460
- border-radius: var(--border-radius-full);
5461
- background-color: var(--radio-color-default-dot);
5462
- transform: scale(0);
5463
- transition: transform 0.15s ease;
5464
- }
5465
-
5466
- .muka-radio--sm .muka-radio__dot {
5467
- width: var(--radio-dot-size-sm);
5468
- height: var(--radio-dot-size-sm);
5469
- }
5470
-
5471
- .muka-radio--lg .muka-radio__dot {
5472
- width: var(--radio-dot-size-lg);
5473
- height: var(--radio-dot-size-lg);
5474
- }
5475
-
5476
- /* Hover state - removed per design */
5477
-
5478
- /* Focus state */
5479
- .muka-radio__input:focus-visible + .muka-radio__indicator {
5480
- outline: 2px solid var(--color-border-focus);
5481
- outline-offset: 2px;
5482
- }
5483
-
5484
- /* Checked state */
5485
- .muka-radio__input:checked + .muka-radio__indicator {
5486
- background-color: var(--radio-color-checked-background);
5487
- border-width: var(--border-width-bold);
5488
- border-color: var(--radio-color-checked-border);
5489
- box-shadow: none;
5490
- }
5491
-
5492
- .muka-radio__input:checked + .muka-radio__indicator .muka-radio__dot {
5493
- background-color: var(--radio-color-checked-dot);
5494
- transform: scale(1);
5495
- }
5496
-
5497
- /* Disabled state */
5498
- .muka-radio--disabled .muka-radio__indicator {
5499
- background-color: var(--radio-color-disabled-background);
5500
- border-color: var(--radio-color-disabled-border);
5501
- box-shadow: none;
5502
- }
5503
-
5504
- .muka-radio__input:disabled:checked + .muka-radio__indicator .muka-radio__dot {
5505
- background-color: var(--radio-color-disabled-dot);
5506
- }
5507
-
5508
- /* Label text */
5509
- .muka-radio__label {
5510
- font-family: var(--text-label-lg-regular-fontFamily);
5511
- font-weight: var(--text-label-lg-regular-fontWeight);
5512
- font-size: var(--text-label-lg-regular-fontSize);
5513
- line-height: var(--text-label-lg-regular-lineHeight);
5514
- color: var(--color-text-default-default);
5515
- }
5516
-
5517
- .muka-radio--sm .muka-radio__label {
5518
- font-family: var(--text-label-md-regular-fontFamily);
5519
- font-weight: var(--text-label-md-regular-fontWeight);
5520
- font-size: var(--text-label-md-regular-fontSize);
5521
- line-height: var(--text-label-md-regular-lineHeight);
5522
- }
5523
-
5524
- .muka-radio--lg .muka-radio__label {
5525
- font-family: var(--text-label-xl-regular-fontFamily);
5526
- font-weight: var(--text-label-xl-regular-fontWeight);
5527
- font-size: var(--text-label-xl-regular-fontSize);
5528
- line-height: var(--text-label-xl-regular-lineHeight);
5529
- }
5530
-
5531
- .muka-radio--disabled .muka-radio__label {
5532
- color: var(--color-text-subtle-default);
5533
- }
5534
-
5535
-
5536
- /* PullToRefresh */
5537
- /* PullToRefresh Component Styles */
5538
-
5539
- .muka-pull-to-refresh {
5540
- position: relative;
5541
- display: flex;
5542
- flex-direction: column;
5543
- width: 100%;
5544
- height: 100%;
5545
- overflow: hidden;
5546
- }
5547
-
5548
- .muka-pull-to-refresh__indicator {
5549
- position: absolute;
5550
- top: 0;
5551
- left: 0;
5552
- right: 0;
5553
- display: flex;
5554
- align-items: flex-end;
5555
- justify-content: center;
5556
- padding-bottom: var(--spacing-2);
5557
- color: var(--color-text-subtle-default);
5558
- overflow: hidden;
5559
- pointer-events: none;
5560
- z-index: 1;
5561
- }
5562
-
5563
- .muka-pull-to-refresh__chevron {
5564
- display: inline-flex;
5565
- align-items: center;
5566
- justify-content: center;
5567
- transition: transform 0.16s ease;
5568
- }
5569
-
5570
- .muka-pull-to-refresh__scroller {
5571
- flex: 1 1 auto;
5572
- min-height: 0;
5573
- width: 100%;
5574
- overflow-x: clip;
5575
- overflow-y: auto;
5576
- -webkit-overflow-scrolling: touch;
5577
- overscroll-behavior-y: contain;
5578
- touch-action: pan-y;
5579
- will-change: transform;
5580
- }
5581
-
5582
-
5583
- /* ProgressTracker */
5584
- /* ProgressTracker Component Styles — Using Muka Design Tokens */
5585
-
5586
- /* ─── Root ──────────────────────────────────────────────── */
5587
- .muka-progress-tracker {
5588
- width: 100%;
5589
- padding-bottom: var(--spacing-7);
5590
- }
5591
-
5592
- /* ─── Track (layered container) ─────────────────────────── */
5593
- .muka-progress-tracker__track {
5594
- position: relative;
5595
- /* Vertical padding = (indicator size - connector height) / 2 = (32 - 4) / 2 = 14px */
5596
- padding-top: 14px;
5597
- padding-bottom: 14px;
5598
- }
5599
-
5600
- /* ─── Steps layer (on top) ──────────────────────────────── */
5601
- .muka-progress-tracker__steps {
5602
- position: absolute;
5603
- inset: 0;
5604
- display: flex;
5605
- align-items: flex-start;
5606
- justify-content: space-between;
5607
- z-index: 2;
5608
- }
5609
-
5610
- /* ─── Individual step ───────────────────────────────────── */
5611
- .muka-progress-tracker__step {
5612
- display: flex;
5613
- flex-direction: column;
5614
- align-items: center;
5615
- gap: 7px;
5616
- position: relative;
5617
- }
5618
-
5619
- /* ─── Step indicator (circle) ───────────────────────────── */
5620
- .muka-progress-tracker__indicator {
5621
- width: 32px;
5622
- height: 32px;
5623
- border-radius: var(--border-radius-full);
5624
- display: flex;
5625
- align-items: center;
5626
- justify-content: center;
5627
- flex-shrink: 0;
5628
- position: relative;
5568
+ /* ─── Step indicator (circle) ───────────────────────────── */
5569
+ .muka-progress-tracker__indicator {
5570
+ width: 32px;
5571
+ height: 32px;
5572
+ border-radius: var(--border-radius-full);
5573
+ display: flex;
5574
+ align-items: center;
5575
+ justify-content: center;
5576
+ flex-shrink: 0;
5577
+ position: relative;
5629
5578
  }
5630
5579
 
5631
5580
  /* Past: dark accent contrast circle with white checkmark */
@@ -5746,75 +5695,285 @@ body {
5746
5695
  }
5747
5696
 
5748
5697
 
5749
- /* Progress */
5750
- /* Progress Component Styles - Using Muka Design Tokens */
5751
-
5752
- /* ========================================
5753
- BAR VARIANT
5754
- ======================================== */
5698
+ /* ProgressAccordeon */
5699
+ /* ProgressAccordeon Component Styles — Using Muka Design Tokens */
5755
5700
 
5756
- .muka-progress--bar {
5701
+ /* ─── Root ──────────────────────────────────────────────── */
5702
+ .muka-progress-accordeon {
5703
+ container-type: inline-size;
5757
5704
  display: flex;
5758
- align-items: center;
5759
- gap: var(--spacing-2);
5705
+ flex-direction: column;
5706
+ align-items: stretch;
5760
5707
  width: 100%;
5708
+ /* Top padding provides the vertical rhythm between stacked steps */
5709
+ padding-top: var(--spacing-8);
5761
5710
  }
5762
5711
 
5763
- .muka-progress--bar .muka-progress__track {
5764
- flex: 1;
5765
- background-color: var(--color-surface-level1);
5766
- border-radius: var(--border-radius-full);
5767
- overflow: hidden;
5712
+ /* Per-state gap: content-bearing steps are tighter, header-only steps looser */
5713
+ .muka-progress-accordeon--current,
5714
+ .muka-progress-accordeon--past.muka-progress-accordeon--expanded {
5715
+ gap: var(--spacing-6);
5768
5716
  }
5769
5717
 
5770
- .muka-progress--bar.muka-progress--sm .muka-progress__track {
5771
- height: var(--progress-size-bar-height-sm);
5718
+ .muka-progress-accordeon--upcoming,
5719
+ .muka-progress-accordeon--past.muka-progress-accordeon--collapsed {
5720
+ gap: var(--spacing-8);
5772
5721
  }
5773
5722
 
5774
- .muka-progress--bar.muka-progress--md .muka-progress__track {
5775
- height: var(--progress-size-bar-height-md);
5723
+ /* Past-expanded groups header + slot with a tighter internal gap */
5724
+ .muka-progress-accordeon__body {
5725
+ display: flex;
5726
+ flex-direction: column;
5727
+ gap: var(--spacing-4);
5728
+ width: 100%;
5776
5729
  }
5777
5730
 
5778
- .muka-progress--bar.muka-progress--lg .muka-progress__track {
5779
- height: var(--progress-size-bar-height-lg);
5731
+ /* ─── Header ─────────────────────────────────────────────── */
5732
+ .muka-progress-accordeon__header {
5733
+ display: flex;
5734
+ flex-direction: column;
5735
+ gap: var(--spacing-3);
5736
+ width: 100%;
5780
5737
  }
5781
5738
 
5782
- .muka-progress--bar .muka-progress__fill {
5783
- height: 100%;
5784
- background-color: var(--color-action-default);
5785
- border-radius: var(--border-radius-full);
5786
- transition: width 0.3s ease;
5739
+ .muka-progress-accordeon__header-row {
5740
+ display: flex;
5741
+ align-items: flex-start;
5742
+ gap: var(--spacing-3);
5743
+ width: 100%;
5744
+ min-height: 40px;
5787
5745
  }
5788
5746
 
5789
- .muka-progress--bar .muka-progress__label {
5790
- flex-shrink: 0;
5791
- font-family: var(--text-label-sm-semibold-fontFamily);
5792
- font-weight: var(--text-label-sm-semibold-fontWeight);
5793
- font-size: var(--text-label-sm-semibold-fontSize);
5794
- line-height: var(--text-label-sm-semibold-lineHeight);
5795
- color: var(--color-text-default-default);
5796
- min-width: 3ch;
5797
- text-align: right;
5747
+ .muka-progress-accordeon__heading-group {
5748
+ display: flex;
5749
+ flex: 1 0 0;
5750
+ min-width: 0;
5751
+ align-items: flex-start;
5752
+ gap: var(--spacing-4);
5798
5753
  }
5799
5754
 
5800
- /* Indeterminate animation for bar */
5801
- .muka-progress--bar.muka-progress--indeterminate .muka-progress__fill {
5802
- width: 40%;
5803
- animation: muka-progress-bar-indeterminate 1.5s ease-in-out infinite;
5755
+ /* Past steps carry 40px controls; nudge the heading to vertically centre it */
5756
+ .muka-progress-accordeon--past .muka-progress-accordeon__heading-group {
5757
+ padding-top: var(--spacing-1);
5804
5758
  }
5805
5759
 
5806
- @keyframes muka-progress-bar-indeterminate {
5807
- 0% {
5808
- transform: translateX(-100%);
5809
- }
5810
- 100% {
5811
- transform: translateX(250%);
5812
- }
5760
+ .muka-progress-accordeon__controls {
5761
+ display: flex;
5762
+ flex-shrink: 0;
5763
+ align-items: center;
5764
+ gap: var(--spacing-3);
5813
5765
  }
5814
5766
 
5815
- /* ========================================
5816
- CIRCLE VARIANT
5817
- ======================================== */
5767
+ /* ─── Step indicator (circle) ───────────────────────────── */
5768
+ .muka-progress-accordeon__indicator {
5769
+ width: 32px;
5770
+ height: 32px;
5771
+ flex-shrink: 0;
5772
+ border-radius: var(--border-radius-full);
5773
+ display: flex;
5774
+ align-items: center;
5775
+ justify-content: center;
5776
+ }
5777
+
5778
+ /* Past: dark accent-contrast circle with inverse checkmark */
5779
+ .muka-progress-accordeon__indicator--past {
5780
+ background-color: var(--alias-color-accent-contrast);
5781
+ color: var(--color-text-default-inverse);
5782
+ }
5783
+
5784
+ /* Current: accent circle with inverse bold number */
5785
+ .muka-progress-accordeon__indicator--current {
5786
+ background-color: var(--alias-color-accent-default);
5787
+ color: var(--color-text-default-inverse);
5788
+ }
5789
+
5790
+ /* Upcoming: sunken/muted circle with default-color number */
5791
+ .muka-progress-accordeon__indicator--upcoming {
5792
+ background-color: var(--color-surface-sunken);
5793
+ color: var(--color-text-default-default);
5794
+ }
5795
+
5796
+ .muka-progress-accordeon__check-icon {
5797
+ width: 20px;
5798
+ height: 20px;
5799
+ color: var(--color-text-default-inverse);
5800
+ }
5801
+
5802
+ .muka-progress-accordeon__number {
5803
+ font-family: var(--text-label-md-bold-fontFamily);
5804
+ font-weight: var(--text-label-md-bold-fontWeight);
5805
+ font-size: var(--text-label-md-bold-fontSize);
5806
+ line-height: var(--text-label-md-bold-lineHeight);
5807
+ text-align: center;
5808
+ user-select: none;
5809
+ }
5810
+
5811
+ /* Upcoming number is semibold (not bold) per Figma */
5812
+ .muka-progress-accordeon__indicator--upcoming .muka-progress-accordeon__number {
5813
+ font-family: var(--text-label-md-semibold-fontFamily);
5814
+ font-weight: var(--text-label-md-semibold-fontWeight);
5815
+ }
5816
+
5817
+ /* ─── Heading (responsive: heading/md on wide, heading/sm on narrow) ─────── */
5818
+ .muka-progress-accordeon__heading {
5819
+ flex: 1 0 0;
5820
+ min-width: 0;
5821
+ margin: 0;
5822
+ font-family: var(--text-heading-md-fontFamily);
5823
+ font-weight: var(--text-heading-md-fontWeight);
5824
+ font-size: var(--text-heading-md-fontSize);
5825
+ line-height: var(--text-heading-md-lineHeight);
5826
+ letter-spacing: var(--text-heading-md-letterSpacing);
5827
+ color: var(--color-text-default-default);
5828
+ }
5829
+
5830
+ /* ─── Description ────────────────────────────────────────── */
5831
+ /* Indented 48px (32px indicator + 16px gap) to align under the heading text */
5832
+ .muka-progress-accordeon__description {
5833
+ width: 100%;
5834
+ padding-left: 48px;
5835
+ font-family: var(--text-body-base-regular-fontFamily);
5836
+ font-weight: var(--text-body-base-regular-fontWeight);
5837
+ font-size: var(--text-body-base-regular-fontSize);
5838
+ line-height: var(--text-body-base-regular-lineHeight);
5839
+ color: var(--color-text-default-default);
5840
+ }
5841
+
5842
+ /* ─── Edit button ────────────────────────────────────────── */
5843
+ .muka-progress-accordeon__edit {
5844
+ flex-shrink: 0;
5845
+ }
5846
+
5847
+ /* Wide container shows the labelled button; the icon-only one is hidden */
5848
+ .muka-progress-accordeon__edit--narrow {
5849
+ display: none;
5850
+ }
5851
+
5852
+ /* ─── Content slot ───────────────────────────────────────── */
5853
+ .muka-progress-accordeon__slot {
5854
+ display: flex;
5855
+ flex-direction: column;
5856
+ align-items: stretch;
5857
+ width: 100%;
5858
+ }
5859
+
5860
+ /* ─── Action buttons (current state) ─────────────────────── */
5861
+ .muka-progress-accordeon__actions {
5862
+ display: flex;
5863
+ justify-content: flex-end;
5864
+ gap: var(--spacing-4);
5865
+ width: 100%;
5866
+ }
5867
+
5868
+ .muka-progress-accordeon__action {
5869
+ min-width: 160px;
5870
+ }
5871
+
5872
+ /* ─── Divider ────────────────────────────────────────────── */
5873
+ .muka-progress-accordeon__divider {
5874
+ width: 100%;
5875
+ }
5876
+
5877
+ /* ─── Responsive (narrow container) ──────────────────────── */
5878
+ @container (max-width: 480px) {
5879
+ /* Heading steps down to heading/sm. The 24px line-height is shorter than the
5880
+ 32px step indicator, so nudge the text down to keep a single line centred. */
5881
+ .muka-progress-accordeon__heading {
5882
+ font-size: var(--text-heading-sm-fontSize);
5883
+ line-height: var(--text-heading-sm-lineHeight);
5884
+ padding-top: var(--spacing-1);
5885
+ }
5886
+
5887
+ /* Edit button swaps to the icon-only variant */
5888
+ .muka-progress-accordeon__edit--wide {
5889
+ display: none;
5890
+ }
5891
+
5892
+ .muka-progress-accordeon__edit--narrow {
5893
+ display: inline-flex;
5894
+ }
5895
+
5896
+ /* Action buttons stretch to fill the row */
5897
+ .muka-progress-accordeon__actions {
5898
+ justify-content: stretch;
5899
+ }
5900
+
5901
+ .muka-progress-accordeon__action {
5902
+ flex: 1 0 0;
5903
+ min-width: 0;
5904
+ }
5905
+ }
5906
+
5907
+
5908
+ /* Progress */
5909
+ /* Progress Component Styles - Using Muka Design Tokens */
5910
+
5911
+ /* ========================================
5912
+ BAR VARIANT
5913
+ ======================================== */
5914
+
5915
+ .muka-progress--bar {
5916
+ display: flex;
5917
+ align-items: center;
5918
+ gap: var(--spacing-2);
5919
+ width: 100%;
5920
+ }
5921
+
5922
+ .muka-progress--bar .muka-progress__track {
5923
+ flex: 1;
5924
+ background-color: var(--color-surface-level1);
5925
+ border-radius: var(--border-radius-full);
5926
+ overflow: hidden;
5927
+ }
5928
+
5929
+ .muka-progress--bar.muka-progress--sm .muka-progress__track {
5930
+ height: var(--progress-size-bar-height-sm);
5931
+ }
5932
+
5933
+ .muka-progress--bar.muka-progress--md .muka-progress__track {
5934
+ height: var(--progress-size-bar-height-md);
5935
+ }
5936
+
5937
+ .muka-progress--bar.muka-progress--lg .muka-progress__track {
5938
+ height: var(--progress-size-bar-height-lg);
5939
+ }
5940
+
5941
+ .muka-progress--bar .muka-progress__fill {
5942
+ height: 100%;
5943
+ background-color: var(--color-action-default);
5944
+ border-radius: var(--border-radius-full);
5945
+ transition: width 0.3s ease;
5946
+ }
5947
+
5948
+ .muka-progress--bar .muka-progress__label {
5949
+ flex-shrink: 0;
5950
+ font-family: var(--text-label-sm-semibold-fontFamily);
5951
+ font-weight: var(--text-label-sm-semibold-fontWeight);
5952
+ font-size: var(--text-label-sm-semibold-fontSize);
5953
+ line-height: var(--text-label-sm-semibold-lineHeight);
5954
+ color: var(--color-text-default-default);
5955
+ min-width: 3ch;
5956
+ text-align: right;
5957
+ }
5958
+
5959
+ /* Indeterminate animation for bar */
5960
+ .muka-progress--bar.muka-progress--indeterminate .muka-progress__fill {
5961
+ width: 40%;
5962
+ animation: muka-progress-bar-indeterminate 1.5s ease-in-out infinite;
5963
+ }
5964
+
5965
+ @keyframes muka-progress-bar-indeterminate {
5966
+ 0% {
5967
+ transform: translateX(-100%);
5968
+ }
5969
+ 100% {
5970
+ transform: translateX(250%);
5971
+ }
5972
+ }
5973
+
5974
+ /* ========================================
5975
+ CIRCLE VARIANT
5976
+ ======================================== */
5818
5977
 
5819
5978
  .muka-progress--circle {
5820
5979
  position: relative;
@@ -6346,6 +6505,34 @@ body {
6346
6505
  }
6347
6506
 
6348
6507
 
6508
+ /* NavigationTransition */
6509
+ /* NavigationTransition Component Styles */
6510
+
6511
+ /* ─── Wrapper ────────────────────────────────────────── */
6512
+
6513
+ .muka-nav-transition {
6514
+ position: relative;
6515
+ height: 100vh;
6516
+ overflow: hidden;
6517
+ }
6518
+
6519
+ /* Disable interaction during animation */
6520
+ .muka-nav-transition--active {
6521
+ pointer-events: none;
6522
+ }
6523
+
6524
+ /* ─── View slots ─────────────────────────────────────── */
6525
+
6526
+ .muka-nav-transition--active .muka-nav-transition__view {
6527
+ position: absolute;
6528
+ inset: 0;
6529
+ }
6530
+
6531
+ /* Z-index layering */
6532
+ .muka-nav-transition__view--bottom { z-index: 1; }
6533
+ .muka-nav-transition__view--top { z-index: 2; }
6534
+
6535
+
6349
6536
  /* Menu */
6350
6537
  /* Menu Component Styles */
6351
6538
 
@@ -6629,34 +6816,6 @@ body {
6629
6816
  }
6630
6817
 
6631
6818
 
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
-
6660
6819
  /* ListItem */
6661
6820
  /* ListItem Component Styles - Using Muka Design Tokens */
6662
6821
 
@@ -6679,7 +6838,7 @@ body {
6679
6838
  position: relative;
6680
6839
 
6681
6840
  /* Interaction - only apply if interactive */
6682
- transition: background-color 0.2s ease;
6841
+ transition: background-color 0.2s ease, box-shadow 0.2s ease;
6683
6842
  }
6684
6843
 
6685
6844
  /* Interactive state */
@@ -6687,13 +6846,19 @@ body {
6687
6846
  cursor: pointer;
6688
6847
  }
6689
6848
 
6849
+ /*
6850
+ * surface.hover / surface.pressed are theme-adaptive translucent tints, so they
6851
+ * are layered on top of the item's base surface via an inset box-shadow overlay
6852
+ * rather than replacing background-color. This preserves the base level (level3,
6853
+ * or level2 when selected) and lets the tint read correctly on any surface.
6854
+ */
6690
6855
  .muka-listitem--interactive:hover:not(:disabled):not(.muka-listitem--disabled) {
6691
- background-color: var(--color-surface-hover);
6856
+ box-shadow: inset 0 0 0 9999px var(--color-surface-hover);
6692
6857
  }
6693
6858
 
6694
6859
  .muka-listitem--interactive:active:not(:disabled):not(.muka-listitem--disabled),
6695
6860
  .muka-listitem--interactive.muka-listitem--pressed:not(:disabled):not(.muka-listitem--disabled) {
6696
- background-color: var(--color-surface-pressed);
6861
+ box-shadow: inset 0 0 0 9999px var(--color-surface-pressed);
6697
6862
  }
6698
6863
 
6699
6864
  /* Focus styles for accessibility */
@@ -6719,7 +6884,7 @@ body {
6719
6884
  }
6720
6885
 
6721
6886
  .muka-listitem--selected:hover {
6722
- background-color: var(--color-surface-hover);
6887
+ box-shadow: inset 0 0 0 9999px var(--color-surface-hover);
6723
6888
  }
6724
6889
 
6725
6890
  /* No divider modifier */
@@ -7349,851 +7514,1113 @@ li.muka-listitem {
7349
7514
  }
7350
7515
 
7351
7516
 
7352
- /* FAB */
7353
- /* FAB (Floating Action Button) Component Styles */
7517
+ /* FileUpload */
7518
+ /* FileUpload Component Styles */
7354
7519
 
7355
- .muka-fab {
7356
- position: fixed;
7357
- z-index: 40;
7520
+ .muka-fileupload-wrapper {
7521
+ display: flex;
7522
+ flex-direction: column;
7523
+ gap: var(--spacing-3);
7524
+ width: 100%;
7525
+ }
7358
7526
 
7359
- display: inline-flex;
7527
+ /* Dropzone */
7528
+ .muka-fileupload {
7529
+ display: flex;
7530
+ flex-direction: column;
7360
7531
  align-items: center;
7361
7532
  justify-content: center;
7362
- gap: var(--spacing-2);
7363
-
7364
- border: none;
7533
+ gap: var(--fileupload-dropzone-gap);
7534
+ padding: var(--fileupload-dropzone-padding-md);
7535
+ background-color: var(--fileupload-dropzone-color-default-background);
7536
+ border: var(--fileupload-dropzone-border-width) dashed var(--fileupload-dropzone-color-default-border);
7537
+ border-radius: var(--fileupload-dropzone-radius);
7365
7538
  cursor: pointer;
7366
- font-family: inherit;
7367
- box-shadow: var(--shadow-level4);
7368
-
7369
- transition: transform 0.12s ease, box-shadow 0.12s ease, background-color 0.12s ease;
7370
- -webkit-tap-highlight-color: transparent;
7539
+ transition: background-color 0.2s ease, border-color 0.2s ease;
7540
+ text-align: center;
7541
+ min-height: 120px;
7371
7542
  }
7372
7543
 
7373
- .muka-fab:active {
7374
- transform: scale(0.96);
7375
- box-shadow: var(--shadow-level3);
7376
- }
7377
-
7378
- .muka-fab:focus-visible {
7379
- outline: 2px solid var(--color-action-default);
7544
+ .muka-fileupload:focus-visible {
7545
+ outline: 2px solid var(--color-border-focus);
7380
7546
  outline-offset: 2px;
7381
7547
  }
7382
7548
 
7383
- .muka-fab:disabled {
7384
- opacity: 0.5;
7385
- cursor: not-allowed;
7386
- box-shadow: none;
7387
- }
7388
-
7389
- /* ─── Variants ────────────────────────────────────────── */
7390
-
7391
- .muka-fab--primary {
7392
- background-color: var(--color-action-default);
7393
- color: var(--color-text-inverse-default);
7549
+ /* Size variants */
7550
+ .muka-fileupload--sm {
7551
+ padding: var(--fileupload-dropzone-padding-sm);
7552
+ min-height: 80px;
7394
7553
  }
7395
7554
 
7396
- .muka-fab--primary:hover:not(:disabled) {
7397
- background-color: var(--color-action-hover);
7555
+ .muka-fileupload--lg {
7556
+ padding: var(--fileupload-dropzone-padding-lg);
7557
+ min-height: 160px;
7398
7558
  }
7399
7559
 
7400
- .muka-fab--secondary {
7401
- background-color: var(--color-surface-level3);
7402
- color: var(--color-text-default-default);
7560
+ /* Button variant */
7561
+ .muka-fileupload--button {
7562
+ flex-direction: row;
7563
+ min-height: auto;
7564
+ padding: var(--spacing-2) var(--spacing-3);
7565
+ border-style: solid;
7566
+ border-width: var(--border-width-regular);
7567
+ border-radius: var(--border-radius-md);
7403
7568
  }
7404
7569
 
7405
- .muka-fab--secondary:hover:not(:disabled) {
7406
- background-color: var(--color-surface-level2);
7570
+ /* Hover state */
7571
+ .muka-fileupload:hover:not(.muka-fileupload--disabled) {
7572
+ background-color: var(--fileupload-dropzone-color-hover-background);
7573
+ border-color: var(--fileupload-dropzone-color-hover-border);
7407
7574
  }
7408
7575
 
7409
- /* ─── Sizes (circular by default) ─────────────────────── */
7410
-
7411
- .muka-fab--md {
7412
- width: 56px;
7413
- height: 56px;
7414
- border-radius: 50%;
7576
+ /* Active/drag state */
7577
+ .muka-fileupload--active:not(.muka-fileupload--disabled) {
7578
+ background-color: var(--fileupload-dropzone-color-active-background);
7579
+ border-color: var(--fileupload-dropzone-color-active-border);
7415
7580
  }
7416
7581
 
7417
- .muka-fab--lg {
7418
- width: 64px;
7419
- height: 64px;
7420
- border-radius: 50%;
7582
+ /* Disabled state */
7583
+ .muka-fileupload--disabled {
7584
+ background-color: var(--fileupload-dropzone-color-disabled-background);
7585
+ border-color: var(--fileupload-dropzone-color-disabled-border);
7586
+ cursor: not-allowed;
7587
+ opacity: 0.6;
7421
7588
  }
7422
7589
 
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);
7590
+ /* Hidden file input */
7591
+ .muka-fileupload__input {
7592
+ position: absolute;
7593
+ width: 1px;
7594
+ height: 1px;
7595
+ padding: 0;
7596
+ margin: -1px;
7597
+ overflow: hidden;
7598
+ clip: rect(0, 0, 0, 0);
7599
+ white-space: nowrap;
7600
+ border: 0;
7430
7601
  }
7431
7602
 
7432
- .muka-fab--extended.muka-fab--lg {
7433
- padding: var(--spacing-4) var(--spacing-5);
7603
+ /* Content container */
7604
+ .muka-fileupload__content {
7605
+ display: flex;
7606
+ flex-direction: column;
7607
+ align-items: center;
7608
+ gap: var(--spacing-2);
7434
7609
  }
7435
7610
 
7436
- .muka-fab__icon {
7437
- display: inline-flex;
7611
+ /* Upload icon */
7612
+ .muka-fileupload__icon {
7613
+ display: flex;
7438
7614
  align-items: center;
7439
7615
  justify-content: center;
7440
- width: 24px;
7441
- height: 24px;
7616
+ width: var(--size-3xl);
7617
+ height: var(--size-3xl);
7618
+ color: var(--fileupload-dropzone-color-default-foreground);
7442
7619
  }
7443
7620
 
7444
- .muka-fab__icon svg {
7621
+ .muka-fileupload__icon svg {
7445
7622
  width: 100%;
7446
7623
  height: 100%;
7447
7624
  }
7448
7625
 
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);
7454
- }
7455
-
7456
- /* ─── Positioning ─────────────────────────────────────── */
7457
-
7458
- .muka-fab--bottom-right {
7459
- right: var(--spacing-4);
7460
- bottom: var(--spacing-4);
7461
- }
7462
-
7463
- .muka-fab--bottom-left {
7464
- left: var(--spacing-4);
7465
- bottom: var(--spacing-4);
7466
- }
7467
-
7468
- .muka-fab--bottom-center {
7469
- left: 50%;
7470
- bottom: var(--spacing-4);
7471
- transform: translateX(-50%);
7626
+ .muka-fileupload--sm .muka-fileupload__icon {
7627
+ width: var(--size-2xl);
7628
+ height: var(--size-2xl);
7472
7629
  }
7473
7630
 
7474
- .muka-fab--bottom-center:active {
7475
- transform: translateX(-50%) scale(0.96);
7631
+ .muka-fileupload--lg .muka-fileupload__icon {
7632
+ width: var(--size-4xl);
7633
+ height: var(--size-4xl);
7476
7634
  }
7477
7635
 
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));
7636
+ /* Text */
7637
+ .muka-fileupload__text {
7638
+ font-family: var(--text-body-md-regular-fontFamily);
7639
+ font-size: var(--text-body-md-regular-fontSize);
7640
+ font-weight: var(--text-body-md-regular-fontWeight);
7641
+ line-height: var(--text-body-md-regular-lineHeight);
7642
+ color: var(--color-text-default-default);
7481
7643
  }
7482
7644
 
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));
7645
+ .muka-fileupload--sm .muka-fileupload__text {
7646
+ font-size: var(--text-body-sm-regular-fontSize);
7486
7647
  }
7487
7648
 
7488
- .muka-fab--bottom-left:not(.muka-fab--no-safe-area) {
7489
- left: max(var(--spacing-4), env(safe-area-inset-left));
7649
+ /* Hint text */
7650
+ .muka-fileupload__hint {
7651
+ font-family: var(--text-label-sm-regular-fontFamily);
7652
+ font-size: var(--text-label-sm-regular-fontSize);
7653
+ font-weight: var(--text-label-sm-regular-fontWeight);
7654
+ line-height: var(--text-label-sm-regular-lineHeight);
7655
+ color: var(--fileupload-dropzone-color-default-foreground);
7490
7656
  }
7491
7657
 
7492
-
7493
- /* EmptyState */
7494
- /* EmptyState Component Styles - Using Muka Design Tokens */
7495
-
7496
- .muka-emptystate {
7658
+ /* File list */
7659
+ .muka-fileupload__list {
7497
7660
  display: flex;
7498
7661
  flex-direction: column;
7499
- align-items: center;
7500
- justify-content: center;
7501
- gap: var(--emptystate-container-gap);
7502
- max-width: var(--emptystate-container-maxWidth);
7503
- margin: 0 auto;
7504
- text-align: center;
7662
+ gap: var(--spacing-2);
7663
+ list-style: none;
7664
+ margin: 0;
7665
+ padding: 0;
7505
7666
  }
7506
7667
 
7507
- /* Alignment variants */
7508
- .muka-emptystate--left {
7509
- align-items: flex-start;
7510
- text-align: left;
7668
+ .muka-fileupload__list li {
7669
+ margin: 0;
7670
+ padding: 0;
7511
7671
  }
7512
7672
 
7513
- /* Size variants */
7514
- .muka-emptystate--sm {
7515
- padding: var(--emptystate-container-padding-sm);
7673
+ /* File item */
7674
+ .muka-fileupload-item {
7675
+ display: flex;
7676
+ align-items: center;
7677
+ gap: var(--fileupload-item-gap);
7678
+ padding: var(--fileupload-item-padding-y) var(--fileupload-item-padding-x);
7679
+ background-color: var(--fileupload-item-color-default-background);
7680
+ border-radius: var(--fileupload-item-radius);
7516
7681
  }
7517
7682
 
7518
- .muka-emptystate--md {
7519
- padding: var(--emptystate-container-padding-md);
7683
+ .muka-fileupload-item--error {
7684
+ background-color: var(--fileupload-item-color-error-background);
7520
7685
  }
7521
7686
 
7522
- .muka-emptystate--lg {
7523
- padding: var(--emptystate-container-padding-lg);
7687
+ .muka-fileupload-item--success {
7688
+ background-color: var(--fileupload-item-color-default-background);
7524
7689
  }
7525
7690
 
7526
- /* Visual (icon or illustration) */
7527
- .muka-emptystate__visual {
7691
+ /* Preview/Icon container */
7692
+ .muka-fileupload-item__preview {
7528
7693
  display: flex;
7529
7694
  align-items: center;
7530
7695
  justify-content: center;
7531
- color: var(--emptystate-icon-color);
7532
7696
  flex-shrink: 0;
7697
+ width: var(--fileupload-preview-size);
7698
+ height: var(--fileupload-preview-size);
7699
+ border-radius: var(--fileupload-preview-radius);
7700
+ overflow: hidden;
7701
+ background-color: var(--color-surface-level1);
7533
7702
  }
7534
7703
 
7535
- .muka-emptystate--sm .muka-emptystate__visual {
7536
- width: var(--emptystate-icon-size-sm);
7537
- height: var(--emptystate-icon-size-sm);
7538
- }
7539
-
7540
- .muka-emptystate--md .muka-emptystate__visual {
7541
- width: var(--emptystate-icon-size-md);
7542
- height: var(--emptystate-icon-size-md);
7543
- }
7544
-
7545
- .muka-emptystate--lg .muka-emptystate__visual {
7546
- width: var(--emptystate-icon-size-lg);
7547
- height: var(--emptystate-icon-size-lg);
7548
- }
7549
-
7550
- .muka-emptystate__visual svg {
7704
+ .muka-fileupload-item__thumbnail {
7551
7705
  width: 100%;
7552
7706
  height: 100%;
7707
+ object-fit: cover;
7553
7708
  }
7554
7709
 
7555
- .muka-emptystate__visual img {
7556
- width: 100%;
7557
- height: 100%;
7558
- object-fit: contain;
7710
+ .muka-fileupload-item__icon {
7711
+ color: var(--color-text-subtle-default);
7559
7712
  }
7560
7713
 
7561
- /* Content */
7562
- .muka-emptystate__content {
7714
+ /* File info */
7715
+ .muka-fileupload-item__info {
7716
+ flex: 1;
7717
+ min-width: 0;
7563
7718
  display: flex;
7564
7719
  flex-direction: column;
7565
- gap: var(--spacing-2);
7720
+ gap: var(--spacing-1);
7566
7721
  }
7567
7722
 
7568
- .muka-emptystate--left .muka-emptystate__content {
7569
- align-items: flex-start;
7723
+ .muka-fileupload-item__name {
7724
+ font-family: var(--text-body-sm-medium-fontFamily);
7725
+ font-size: var(--text-body-sm-medium-fontSize);
7726
+ font-weight: var(--text-body-sm-medium-fontWeight);
7727
+ line-height: var(--text-body-sm-medium-lineHeight);
7728
+ color: var(--fileupload-item-color-default-foreground);
7729
+ white-space: nowrap;
7730
+ overflow: hidden;
7731
+ text-overflow: ellipsis;
7570
7732
  }
7571
7733
 
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);
7734
+ .muka-fileupload-item--error .muka-fileupload-item__name {
7735
+ color: var(--fileupload-item-color-error-foreground);
7580
7736
  }
7581
7737
 
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);
7738
+ .muka-fileupload-item__meta {
7739
+ font-family: var(--text-label-sm-regular-fontFamily);
7740
+ font-size: var(--text-label-sm-regular-fontSize);
7741
+ font-weight: var(--text-label-sm-regular-fontWeight);
7742
+ line-height: var(--text-label-sm-regular-lineHeight);
7743
+ color: var(--color-text-subtle-default);
7587
7744
  }
7588
7745
 
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);
7746
+ .muka-fileupload-item__error {
7747
+ color: var(--fileupload-item-color-error-foreground);
7594
7748
  }
7595
7749
 
7596
- /* Description */
7597
- .muka-emptystate__description {
7598
- color: var(--emptystate-description-color);
7599
- margin: 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);
7750
+ .muka-fileupload-item__progress {
7751
+ margin-top: var(--spacing-1);
7604
7752
  }
7605
7753
 
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);
7754
+ /* Actions */
7755
+ .muka-fileupload-item__actions {
7756
+ display: flex;
7757
+ align-items: center;
7758
+ gap: var(--spacing-2);
7759
+ flex-shrink: 0;
7611
7760
  }
7612
7761
 
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);
7762
+ .muka-fileupload-item__status-icon--success {
7763
+ color: var(--color-state-success-foreground);
7618
7764
  }
7619
7765
 
7620
- /* Actions */
7621
- .muka-emptystate__actions {
7622
- display: flex;
7623
- gap: var(--emptystate-actions-gap);
7624
- margin-top: var(--emptystate-actions-marginTop);
7625
- flex-wrap: wrap;
7626
- justify-content: center;
7766
+ .muka-fileupload-item__status-icon--error {
7767
+ color: var(--color-state-error-foreground);
7627
7768
  }
7628
7769
 
7629
- .muka-emptystate--left .muka-emptystate__actions {
7630
- justify-content: flex-start;
7770
+ .muka-fileupload-item__remove {
7771
+ opacity: 0.7;
7631
7772
  }
7632
7773
 
7774
+ .muka-fileupload-item__remove:hover {
7775
+ opacity: 1;
7776
+ }
7633
7777
 
7634
- /* Drawer */
7635
- /* Drawer Component Styles */
7636
7778
 
7637
- /* Size tokens (local to Drawer) */
7638
- .muka-drawer {
7639
- --drawer-width-sm: 18rem;
7640
- --drawer-width-md: 26rem;
7641
- --drawer-width-lg: 36rem;
7642
- }
7779
+ /* FAB */
7780
+ /* FAB (Floating Action Button) Component Styles */
7781
+
7782
+ .muka-fab {
7783
+ position: fixed;
7784
+ z-index: 40;
7785
+
7786
+ display: inline-flex;
7787
+ align-items: center;
7788
+ justify-content: center;
7789
+ gap: var(--spacing-2);
7643
7790
 
7644
- /* Reset native dialog */
7645
- .muka-drawer {
7646
7791
  border: none;
7647
- padding: 0;
7648
- max-width: none;
7649
- max-height: none;
7650
- background: transparent;
7651
- overflow: visible;
7652
- }
7792
+ cursor: pointer;
7793
+ font-family: inherit;
7794
+ box-shadow: var(--shadow-level4);
7653
7795
 
7654
- /* Backdrop */
7655
- .muka-drawer::backdrop {
7656
- background-color: var(--color-surface-backdrop);
7657
- opacity: 0;
7658
- transition: opacity 200ms ease;
7796
+ transition: transform 0.12s ease, box-shadow 0.12s ease, background-color 0.12s ease;
7797
+ -webkit-tap-highlight-color: transparent;
7659
7798
  }
7660
7799
 
7661
- .muka-drawer--slide-in::backdrop {
7662
- opacity: 1;
7800
+ .muka-fab:active {
7801
+ transform: scale(0.96);
7802
+ box-shadow: var(--shadow-level3);
7663
7803
  }
7664
7804
 
7665
- /* Surface */
7666
- .muka-drawer__surface {
7667
- display: flex;
7668
- flex-direction: column;
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);
7805
+ .muka-fab:focus-visible {
7806
+ outline: 2px solid var(--color-action-default);
7807
+ outline-offset: 2px;
7675
7808
  }
7676
7809
 
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%);
7810
+ .muka-fab:disabled {
7811
+ opacity: 0.5;
7812
+ cursor: not-allowed;
7813
+ box-shadow: none;
7684
7814
  }
7685
7815
 
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%);
7692
- }
7816
+ /* ─── Variants ────────────────────────────────────────── */
7693
7817
 
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%);
7818
+ .muka-fab--primary {
7819
+ background-color: var(--color-action-default);
7820
+ color: var(--color-text-inverse-default);
7700
7821
  }
7701
7822
 
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%);
7823
+ .muka-fab--primary:hover:not(:disabled) {
7824
+ background-color: var(--color-action-hover);
7708
7825
  }
7709
7826
 
7710
- /* Slide-in state */
7711
- .muka-drawer--slide-in .muka-drawer__surface {
7712
- transform: translate(0, 0);
7827
+ .muka-fab--secondary {
7828
+ background-color: var(--color-surface-level3);
7829
+ color: var(--color-text-default-default);
7713
7830
  }
7714
7831
 
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);
7832
+ .muka-fab--secondary:hover:not(:disabled) {
7833
+ background-color: var(--color-surface-level2);
7719
7834
  }
7720
7835
 
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);
7724
- }
7836
+ /* ─── Sizes (circular by default) ─────────────────────── */
7725
7837
 
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);
7838
+ .muka-fab--md {
7839
+ width: 56px;
7840
+ height: 56px;
7841
+ border-radius: 50%;
7729
7842
  }
7730
7843
 
7731
- .muka-drawer--full.muka-drawer--right .muka-drawer__surface,
7732
- .muka-drawer--full.muka-drawer--left .muka-drawer__surface {
7733
- width: 100%;
7844
+ .muka-fab--lg {
7845
+ width: 64px;
7846
+ height: 64px;
7847
+ border-radius: 50%;
7734
7848
  }
7735
7849
 
7736
- /* Height sizes (top/bottom) */
7737
- .muka-drawer--top .muka-drawer__surface,
7738
- .muka-drawer--bottom .muka-drawer__surface {
7850
+ /* ─── Extended (pill shape with label) ────────────────── */
7851
+
7852
+ .muka-fab--extended {
7853
+ width: auto;
7739
7854
  height: auto;
7740
- max-height: 80vh;
7855
+ padding: var(--spacing-3) var(--spacing-4);
7856
+ border-radius: var(--radius-full);
7741
7857
  }
7742
7858
 
7743
- .muka-drawer--full.muka-drawer--top .muka-drawer__surface,
7744
- .muka-drawer--full.muka-drawer--bottom .muka-drawer__surface {
7745
- max-height: 100vh;
7859
+ .muka-fab--extended.muka-fab--lg {
7860
+ padding: var(--spacing-4) var(--spacing-5);
7746
7861
  }
7747
7862
 
7748
- /* Header */
7749
- .muka-drawer__header {
7750
- display: flex;
7863
+ .muka-fab__icon {
7864
+ display: inline-flex;
7751
7865
  align-items: center;
7752
- gap: var(--spacing-3);
7753
- padding: var(--spacing-4);
7754
- border-bottom: var(--border-width-regular) solid var(--color-border-default);
7755
- flex-shrink: 0;
7866
+ justify-content: center;
7867
+ width: 24px;
7868
+ height: 24px;
7756
7869
  }
7757
7870
 
7758
- .muka-drawer__title {
7759
- flex: 1;
7760
- margin: 0;
7761
- font-family: var(--text-label-lg-semibold-fontFamily);
7762
- font-weight: var(--text-label-lg-semibold-fontWeight);
7763
- font-size: var(--text-label-lg-semibold-fontSize);
7764
- line-height: var(--text-label-lg-semibold-lineHeight);
7765
- color: var(--color-text-default-default);
7871
+ .muka-fab__icon svg {
7872
+ width: 100%;
7873
+ height: 100%;
7766
7874
  }
7767
7875
 
7768
- .muka-drawer__leading,
7769
- .muka-drawer__trailing {
7770
- display: flex;
7771
- align-items: center;
7772
- flex-shrink: 0;
7876
+ .muka-fab__label {
7877
+ font-family: var(--text-label-md-semibold-fontFamily);
7878
+ font-weight: var(--text-label-md-semibold-fontWeight);
7879
+ font-size: var(--text-label-md-semibold-fontSize);
7880
+ line-height: var(--text-label-md-semibold-lineHeight);
7773
7881
  }
7774
7882
 
7775
- /* Body */
7776
- .muka-drawer__body {
7777
- flex: 1;
7778
- overflow-y: auto;
7779
- padding: var(--spacing-4);
7780
- }
7883
+ /* ─── Positioning ─────────────────────────────────────── */
7781
7884
 
7782
- /* Footer */
7783
- .muka-drawer__footer {
7784
- padding: var(--spacing-4);
7785
- border-top: var(--border-width-regular) solid var(--color-border-default);
7786
- flex-shrink: 0;
7885
+ .muka-fab--bottom-right {
7886
+ right: var(--spacing-4);
7887
+ bottom: var(--spacing-4);
7787
7888
  }
7788
7889
 
7789
-
7790
- /* DocumentViewer */
7791
- /* DocumentViewer Component Styles - Using Muka Design Tokens */
7792
-
7793
- .muka-documentviewer {
7794
- display: flex;
7795
- flex-direction: column;
7796
- background-color: var(--documentviewer-container-background);
7797
- border-radius: var(--documentviewer-container-borderRadius);
7798
- overflow: hidden;
7799
- position: relative;
7890
+ .muka-fab--bottom-left {
7891
+ left: var(--spacing-4);
7892
+ bottom: var(--spacing-4);
7800
7893
  }
7801
7894
 
7802
- .muka-documentviewer--fullscreen {
7803
- position: fixed;
7804
- top: 0;
7805
- left: 0;
7806
- right: 0;
7807
- bottom: 0;
7808
- width: 100vw;
7809
- height: 100vh;
7810
- z-index: 9999;
7811
- border-radius: 0;
7895
+ .muka-fab--bottom-center {
7896
+ left: 50%;
7897
+ bottom: var(--spacing-4);
7898
+ transform: translateX(-50%);
7812
7899
  }
7813
7900
 
7814
- /* Toolbar */
7815
- .muka-documentviewer__toolbar {
7816
- display: flex;
7817
- align-items: center;
7818
- justify-content: space-between;
7819
- height: var(--documentviewer-toolbar-height);
7820
- padding: var(--documentviewer-toolbar-padding-y) var(--documentviewer-toolbar-padding-x);
7821
- background-color: var(--documentviewer-toolbar-background);
7822
- border-bottom: 1px solid var(--documentviewer-toolbar-border);
7823
- gap: var(--documentviewer-toolbar-gap);
7824
- flex-shrink: 0;
7901
+ .muka-fab--bottom-center:active {
7902
+ transform: translateX(-50%) scale(0.96);
7825
7903
  }
7826
7904
 
7827
- .muka-documentviewer__toolbar-section {
7828
- display: flex;
7829
- align-items: center;
7830
- gap: var(--documentviewer-toolbar-gap);
7905
+ /* Add the iOS home-indicator inset to the bottom offset. */
7906
+ .muka-fab:not(.muka-fab--no-safe-area) {
7907
+ bottom: calc(var(--spacing-4) + env(safe-area-inset-bottom));
7831
7908
  }
7832
7909
 
7833
- .muka-documentviewer__toolbar-section--center {
7834
- flex: 1;
7835
- justify-content: center;
7910
+ /* Lateral safe-area for landscape iPhone with notch. */
7911
+ .muka-fab--bottom-right:not(.muka-fab--no-safe-area) {
7912
+ right: max(var(--spacing-4), env(safe-area-inset-right));
7836
7913
  }
7837
7914
 
7838
- .muka-documentviewer__toolbar-section--end {
7839
- justify-content: flex-end;
7915
+ .muka-fab--bottom-left:not(.muka-fab--no-safe-area) {
7916
+ left: max(var(--spacing-4), env(safe-area-inset-left));
7840
7917
  }
7841
7918
 
7842
- /* Page navigation */
7843
- .muka-documentviewer__page-input {
7919
+
7920
+ /* EmptyState */
7921
+ /* EmptyState Component Styles - Using Muka Design Tokens */
7922
+
7923
+ .muka-emptystate {
7844
7924
  display: flex;
7925
+ flex-direction: column;
7845
7926
  align-items: center;
7846
- gap: var(--spacing-1);
7847
- }
7848
-
7849
- .muka-documentviewer__page-number {
7850
- width: 3rem;
7851
- padding: var(--spacing-1) var(--spacing-2);
7927
+ justify-content: center;
7928
+ gap: var(--emptystate-container-gap);
7929
+ max-width: var(--emptystate-container-maxWidth);
7930
+ margin: 0 auto;
7852
7931
  text-align: center;
7853
- font-family: var(--alias-font-brand-family);
7854
- font-size: var(--text-label-sm-fontSize);
7855
- line-height: var(--text-label-sm-lineHeight);
7856
- border: 1px solid var(--color-border-default);
7857
- border-radius: var(--border-radius-md);
7858
- background-color: var(--color-surface-default);
7859
- color: var(--color-text-default-default);
7860
- }
7861
-
7862
- .muka-documentviewer__page-number:focus {
7863
- outline: 2px solid var(--color-border-focus);
7864
- outline-offset: 0;
7865
- border-color: var(--color-border-focus);
7866
- }
7867
-
7868
- .muka-documentviewer__page-total {
7869
- font-family: var(--alias-font-brand-family);
7870
- font-size: var(--text-label-sm-fontSize);
7871
- color: var(--color-text-subtle-default);
7872
7932
  }
7873
7933
 
7874
- /* Zoom controls */
7875
- .muka-documentviewer__zoom-display {
7876
- min-width: var(--documentviewer-zoom-button-width);
7877
- padding: var(--spacing-1) var(--spacing-2);
7878
- font-family: var(--alias-font-brand-family);
7879
- font-size: var(--text-label-sm-fontSize);
7880
- font-weight: var(--alias-font-brand-weight-semibold);
7881
- color: var(--color-text-default-default);
7882
- background: transparent;
7883
- border: none;
7884
- border-radius: var(--border-radius-md);
7885
- cursor: pointer;
7886
- transition: background-color 0.2s ease;
7934
+ /* Alignment variants */
7935
+ .muka-emptystate--left {
7936
+ align-items: flex-start;
7937
+ text-align: left;
7887
7938
  }
7888
7939
 
7889
- .muka-documentviewer__zoom-display:hover {
7890
- background-color: var(--color-surface-level2);
7940
+ /* Size variants */
7941
+ .muka-emptystate--sm {
7942
+ padding: var(--emptystate-container-padding-sm);
7891
7943
  }
7892
7944
 
7893
- .muka-documentviewer__zoom-display:focus {
7894
- outline: 2px solid var(--color-border-focus);
7895
- outline-offset: 0;
7945
+ .muka-emptystate--md {
7946
+ padding: var(--emptystate-container-padding-md);
7896
7947
  }
7897
7948
 
7898
- /* Content area */
7899
- .muka-documentviewer__content {
7900
- display: flex;
7901
- flex: 1;
7902
- overflow: hidden;
7949
+ .muka-emptystate--lg {
7950
+ padding: var(--emptystate-container-padding-lg);
7903
7951
  }
7904
7952
 
7905
- .muka-documentviewer__main {
7906
- flex: 1;
7953
+ /* Visual (icon or illustration) */
7954
+ .muka-emptystate__visual {
7907
7955
  display: flex;
7908
- flex-direction: column;
7909
- overflow: hidden;
7910
- position: relative;
7956
+ align-items: center;
7957
+ justify-content: center;
7958
+ color: var(--emptystate-icon-color);
7959
+ flex-shrink: 0;
7911
7960
  }
7912
7961
 
7913
- /* Canvas */
7914
- .muka-documentviewer__canvas {
7915
- flex: 1;
7916
- background-color: var(--documentviewer-canvas-background);
7917
- padding: var(--documentviewer-canvas-padding);
7918
- overflow: auto;
7919
- display: flex;
7920
- align-items: flex-start;
7921
- justify-content: center;
7962
+ .muka-emptystate--sm .muka-emptystate__visual {
7963
+ width: var(--emptystate-icon-size-sm);
7964
+ height: var(--emptystate-icon-size-sm);
7922
7965
  }
7923
7966
 
7924
- .muka-documentviewer__page {
7925
- background-color: var(--documentviewer-page-background);
7926
- box-shadow: var(--documentviewer-page-shadow);
7927
- border-radius: var(--documentviewer-page-borderRadius);
7928
- overflow: hidden;
7967
+ .muka-emptystate--md .muka-emptystate__visual {
7968
+ width: var(--emptystate-icon-size-md);
7969
+ height: var(--emptystate-icon-size-md);
7929
7970
  }
7930
7971
 
7931
- .muka-documentviewer__page canvas {
7932
- display: block;
7933
- max-width: 100%;
7934
- height: auto;
7972
+ .muka-emptystate--lg .muka-emptystate__visual {
7973
+ width: var(--emptystate-icon-size-lg);
7974
+ height: var(--emptystate-icon-size-lg);
7935
7975
  }
7936
7976
 
7937
- .muka-documentviewer__page-number {
7938
- text-align: center;
7939
- padding: var(--spacing-2);
7940
- font-family: var(--alias-font-brand-family);
7941
- font-size: var(--text-label-sm-fontSize);
7942
- color: var(--color-text-subtle-default);
7977
+ .muka-emptystate__visual svg {
7978
+ width: 100%;
7979
+ height: 100%;
7943
7980
  }
7944
7981
 
7945
- /* Thumbnails */
7946
- .muka-documentviewer__thumbnails {
7947
- width: var(--documentviewer-thumbnails-width);
7948
- background-color: var(--documentviewer-thumbnails-background);
7949
- border-right: 1px solid var(--documentviewer-thumbnails-border);
7950
- overflow-y: auto;
7951
- flex-shrink: 0;
7982
+ .muka-emptystate__visual img {
7983
+ width: 100%;
7984
+ height: 100%;
7985
+ object-fit: contain;
7952
7986
  }
7953
7987
 
7954
- .muka-documentviewer__thumbnails-list {
7988
+ /* Content */
7989
+ .muka-emptystate__content {
7955
7990
  display: flex;
7956
7991
  flex-direction: column;
7957
- gap: var(--documentviewer-thumbnails-item-gap);
7958
- padding: var(--spacing-2);
7992
+ gap: var(--spacing-2);
7959
7993
  }
7960
7994
 
7961
- .muka-documentviewer__thumbnail-item {
7962
- display: flex;
7963
- flex-direction: column;
7964
- align-items: center;
7965
- gap: var(--spacing-1);
7966
- padding: var(--documentviewer-thumbnails-item-padding);
7967
- border-radius: var(--documentviewer-thumbnails-item-borderRadius);
7968
- border: 2px solid var(--documentviewer-thumbnails-item-border-default);
7969
- background-color: var(--documentviewer-thumbnails-item-background-default);
7970
- cursor: pointer;
7971
- transition: all 0.2s ease;
7972
- width: 100%;
7995
+ .muka-emptystate--left .muka-emptystate__content {
7996
+ align-items: flex-start;
7973
7997
  }
7974
7998
 
7975
- .muka-documentviewer__thumbnail-item:hover {
7976
- background-color: var(--documentviewer-thumbnails-item-background-hover);
7999
+ /* Title */
8000
+ .muka-emptystate__title {
8001
+ color: var(--emptystate-title-color);
8002
+ margin: 0;
8003
+ font-family: var(--text-heading-h4-fontFamily);
8004
+ font-weight: var(--text-heading-h4-fontWeight);
8005
+ font-size: var(--text-heading-h4-fontSize);
8006
+ line-height: var(--text-heading-h4-lineHeight);
7977
8007
  }
7978
8008
 
7979
- .muka-documentviewer__thumbnail-item--selected {
7980
- background-color: var(--documentviewer-thumbnails-item-background-selected);
7981
- border-color: var(--documentviewer-thumbnails-item-border-selected);
8009
+ .muka-emptystate--sm .muka-emptystate__title {
8010
+ font-family: var(--text-label-lg-semibold-fontFamily);
8011
+ font-weight: var(--text-label-lg-semibold-fontWeight);
8012
+ font-size: var(--text-label-lg-semibold-fontSize);
8013
+ line-height: var(--text-label-lg-semibold-lineHeight);
7982
8014
  }
7983
8015
 
7984
- .muka-documentviewer__thumbnail-item:focus {
7985
- outline: 2px solid var(--color-border-focus);
7986
- outline-offset: 2px;
8016
+ .muka-emptystate--lg .muka-emptystate__title {
8017
+ font-family: var(--text-heading-h3-fontFamily);
8018
+ font-weight: var(--text-heading-h3-fontWeight);
8019
+ font-size: var(--text-heading-h3-fontSize);
8020
+ line-height: var(--text-heading-h3-lineHeight);
7987
8021
  }
7988
8022
 
7989
- .muka-documentviewer__thumbnail-preview {
7990
- width: 100%;
7991
- overflow: hidden;
7992
- border-radius: var(--border-radius-sm);
8023
+ /* Description */
8024
+ .muka-emptystate__description {
8025
+ color: var(--emptystate-description-color);
8026
+ margin: 0;
8027
+ font-family: var(--text-body-sm-regular-fontFamily);
8028
+ font-weight: var(--text-body-sm-regular-fontWeight);
8029
+ font-size: var(--text-body-sm-regular-fontSize);
8030
+ line-height: var(--text-body-sm-regular-lineHeight);
7993
8031
  }
7994
8032
 
7995
- .muka-documentviewer__thumbnail-preview canvas {
7996
- display: block;
7997
- width: 100%;
7998
- height: auto;
8033
+ .muka-emptystate--md .muka-emptystate__description {
8034
+ font-family: var(--text-body-base-regular-fontFamily);
8035
+ font-weight: var(--text-body-base-regular-fontWeight);
8036
+ font-size: var(--text-body-base-regular-fontSize);
8037
+ line-height: var(--text-body-base-regular-lineHeight);
7999
8038
  }
8000
8039
 
8001
- .muka-documentviewer__thumbnail-label {
8002
- font-family: var(--alias-font-brand-family);
8003
- font-size: var(--text-label-xs-fontSize);
8004
- color: var(--color-text-default-default);
8005
- font-weight: var(--alias-font-brand-weight-medium);
8040
+ .muka-emptystate--lg .muka-emptystate__description {
8041
+ font-family: var(--text-body-lg-regular-fontFamily);
8042
+ font-weight: var(--text-body-lg-regular-fontWeight);
8043
+ font-size: var(--text-body-lg-regular-fontSize);
8044
+ line-height: var(--text-body-lg-regular-lineHeight);
8006
8045
  }
8007
8046
 
8008
- /* Loading state */
8009
- .muka-documentviewer__loading {
8047
+ /* Actions */
8048
+ .muka-emptystate__actions {
8010
8049
  display: flex;
8011
- align-items: center;
8050
+ gap: var(--emptystate-actions-gap);
8051
+ margin-top: var(--emptystate-actions-marginTop);
8052
+ flex-wrap: wrap;
8012
8053
  justify-content: center;
8013
- flex: 1;
8014
- background-color: var(--documentviewer-loading-overlay-background);
8015
8054
  }
8016
8055
 
8017
- /* Error state */
8018
- .muka-documentviewer__error {
8019
- display: flex;
8020
- align-items: center;
8021
- justify-content: center;
8022
- flex: 1;
8023
- padding: var(--spacing-4);
8024
- background-color: var(--documentviewer-error-background);
8056
+ .muka-emptystate--left .muka-emptystate__actions {
8057
+ justify-content: flex-start;
8025
8058
  }
8026
8059
 
8027
- /* Accessibility - visually hidden */
8028
- .visually-hidden {
8029
- position: absolute;
8030
- width: 1px;
8031
- height: 1px;
8032
- margin: -1px;
8033
- padding: 0;
8034
- overflow: hidden;
8035
- clip: rect(0, 0, 0, 0);
8036
- white-space: nowrap;
8037
- border-width: 0;
8038
- }
8039
8060
 
8040
- /* React-PDF specific styles */
8041
- .react-pdf__Document {
8042
- display: flex;
8043
- flex-direction: column;
8044
- align-items: center;
8045
- }
8061
+ /* Drawer */
8062
+ /* Drawer Component Styles */
8046
8063
 
8047
- .react-pdf__Page {
8048
- max-width: 100%;
8049
- box-shadow: var(--documentviewer-page-shadow);
8050
- border-radius: var(--documentviewer-page-borderRadius);
8051
- overflow: hidden;
8064
+ /* Size tokens (local to Drawer) */
8065
+ .muka-drawer {
8066
+ --drawer-width-sm: 18rem;
8067
+ --drawer-width-md: 26rem;
8068
+ --drawer-width-lg: 36rem;
8052
8069
  }
8053
8070
 
8054
- .react-pdf__Page__canvas {
8055
- max-width: 100%;
8056
- height: auto !important;
8057
- display: block;
8071
+ /* Reset native dialog */
8072
+ .muka-drawer {
8073
+ border: none;
8074
+ padding: 0;
8075
+ max-width: none;
8076
+ max-height: none;
8077
+ background: transparent;
8078
+ overflow: visible;
8058
8079
  }
8059
8080
 
8060
- .react-pdf__Page__textContent {
8061
- max-width: 100%;
8081
+ /* Backdrop */
8082
+ .muka-drawer::backdrop {
8083
+ background-color: var(--color-surface-backdrop);
8084
+ opacity: 0;
8085
+ transition: opacity 200ms ease;
8062
8086
  }
8063
8087
 
8064
- .react-pdf__Page__annotations {
8065
- max-width: 100%;
8088
+ .muka-drawer--slide-in::backdrop {
8089
+ opacity: 1;
8066
8090
  }
8067
8091
 
8068
-
8069
- /* Divider */
8070
- /* Divider Component Styles - Using Muka Design Tokens */
8071
-
8072
- .muka-divider {
8073
- flex-shrink: 0;
8092
+ /* Surface */
8093
+ .muka-drawer__surface {
8094
+ display: flex;
8095
+ flex-direction: column;
8096
+ background-color: var(--color-surface-level3);
8097
+ box-shadow: var(--shadow-level5);
8098
+ height: 100%;
8099
+ overflow: hidden;
8100
+ position: fixed;
8101
+ transition: transform 200ms cubic-bezier(0.16, 1, 0.3, 1);
8074
8102
  }
8075
8103
 
8076
- .muka-divider--horizontal {
8077
- width: 100%;
8078
- height: var(--separator-width);
8104
+ /* Side positioning + initial transforms */
8105
+ .muka-drawer--right .muka-drawer__surface {
8106
+ top: 0;
8107
+ right: 0;
8108
+ bottom: 0;
8109
+ border-radius: var(--radius-lg) 0 0 var(--radius-lg);
8110
+ transform: translateX(100%);
8079
8111
  }
8080
8112
 
8081
- .muka-divider--vertical {
8082
- height: 100%;
8083
- width: var(--separator-width);
8084
- align-self: stretch;
8113
+ .muka-drawer--left .muka-drawer__surface {
8114
+ top: 0;
8115
+ left: 0;
8116
+ bottom: 0;
8117
+ border-radius: 0 var(--radius-lg) var(--radius-lg) 0;
8118
+ transform: translateX(-100%);
8085
8119
  }
8086
8120
 
8087
- .muka-divider--default {
8088
- background-color: var(--separator-color-default);
8121
+ .muka-drawer--bottom .muka-drawer__surface {
8122
+ left: 0;
8123
+ right: 0;
8124
+ bottom: 0;
8125
+ border-radius: var(--radius-lg) var(--radius-lg) 0 0;
8126
+ transform: translateY(100%);
8089
8127
  }
8090
8128
 
8091
- .muka-divider--contrast {
8092
- background-color: var(--separator-color-contrast);
8129
+ .muka-drawer--top .muka-drawer__surface {
8130
+ left: 0;
8131
+ right: 0;
8132
+ top: 0;
8133
+ border-radius: 0 0 var(--radius-lg) var(--radius-lg);
8134
+ transform: translateY(-100%);
8093
8135
  }
8094
8136
 
8095
-
8096
- /* Dialog */
8097
- /* Dialog Component Styles */
8098
-
8099
- /* ─── Native dialog reset ─────────────────────────────── */
8100
-
8101
- .muka-dialog {
8102
- border: none;
8103
- padding: 0;
8104
- max-width: none;
8105
- max-height: none;
8106
- overflow: visible;
8107
- background: transparent;
8108
- color: inherit;
8109
- box-shadow: none;
8137
+ /* Slide-in state */
8138
+ .muka-drawer--slide-in .muka-drawer__surface {
8139
+ transform: translate(0, 0);
8110
8140
  }
8111
8141
 
8112
- .muka-dialog:not([open]) {
8113
- display: none;
8142
+ /* Width sizes (left/right) */
8143
+ .muka-drawer--right .muka-drawer__surface,
8144
+ .muka-drawer--left .muka-drawer__surface {
8145
+ width: var(--drawer-width-md);
8114
8146
  }
8115
8147
 
8116
- /* ─── Backdrop ────────────────────────────────────────── */
8117
-
8118
- .muka-dialog::backdrop {
8119
- background-color: var(--dialog-color-backdrop);
8148
+ .muka-drawer--sm.muka-drawer--right .muka-drawer__surface,
8149
+ .muka-drawer--sm.muka-drawer--left .muka-drawer__surface {
8150
+ width: var(--drawer-width-sm);
8120
8151
  }
8121
8152
 
8122
- /* ─── Non-modal modifier ──────────────────────────────── */
8123
-
8124
- .muka-dialog--non-modal::backdrop {
8125
- pointer-events: auto;
8153
+ .muka-drawer--lg.muka-drawer--right .muka-drawer__surface,
8154
+ .muka-drawer--lg.muka-drawer--left .muka-drawer__surface {
8155
+ width: var(--drawer-width-lg);
8126
8156
  }
8127
8157
 
8128
- /* ─── Mobile: all sizes bottom-attached (< 1024px) ───── */
8129
-
8130
- .muka-dialog--sm,
8131
- .muka-dialog--md,
8132
- .muka-dialog--lg {
8158
+ .muka-drawer--full.muka-drawer--right .muka-drawer__surface,
8159
+ .muka-drawer--full.muka-drawer--left .muka-drawer__surface {
8133
8160
  width: 100%;
8134
- height: 100%;
8135
- max-width: 100vw;
8136
- max-height: 100vh;
8137
- margin: 0;
8138
- display: flex;
8139
- flex-direction: column;
8140
- justify-content: flex-end;
8141
- align-items: stretch;
8142
8161
  }
8143
8162
 
8144
- .muka-dialog__surface:focus {
8145
- outline: none;
8163
+ /* Height sizes (top/bottom) */
8164
+ .muka-drawer--top .muka-drawer__surface,
8165
+ .muka-drawer--bottom .muka-drawer__surface {
8166
+ height: auto;
8167
+ max-height: 80vh;
8146
8168
  }
8147
8169
 
8148
- .muka-dialog--sm .muka-dialog__surface,
8149
- .muka-dialog--md .muka-dialog__surface,
8150
- .muka-dialog--lg .muka-dialog__surface {
8151
- background-color: var(--dialog-color-background);
8152
- border-radius: var(--dialog-border-radius) var(--dialog-border-radius) 0 0;
8153
- box-shadow: var(--dialog-shadow-default);
8154
- display: flex;
8155
- flex-direction: column;
8156
- overflow: hidden;
8157
- min-height: var(--dialog-min-height-mobile);
8170
+ .muka-drawer--full.muka-drawer--top .muka-drawer__surface,
8171
+ .muka-drawer--full.muka-drawer--bottom .muka-drawer__surface {
8172
+ max-height: 100vh;
8158
8173
  }
8159
8174
 
8160
- /* Mobile per-size heights */
8161
- .muka-dialog--sm .muka-dialog__surface {
8162
- height: var(--dialog-height-mobile-sm);
8175
+ /* Header */
8176
+ .muka-drawer__header {
8177
+ display: flex;
8178
+ align-items: center;
8179
+ gap: var(--spacing-3);
8180
+ padding: var(--spacing-4);
8181
+ border-bottom: var(--border-width-regular) solid var(--color-border-default);
8182
+ flex-shrink: 0;
8163
8183
  }
8164
8184
 
8165
- .muka-dialog--md .muka-dialog__surface {
8166
- height: var(--dialog-height-mobile-md);
8185
+ .muka-drawer__title {
8186
+ flex: 1;
8187
+ margin: 0;
8188
+ font-family: var(--text-label-lg-semibold-fontFamily);
8189
+ font-weight: var(--text-label-lg-semibold-fontWeight);
8190
+ font-size: var(--text-label-lg-semibold-fontSize);
8191
+ line-height: var(--text-label-lg-semibold-lineHeight);
8192
+ color: var(--color-text-default-default);
8167
8193
  }
8168
8194
 
8169
- .muka-dialog--lg .muka-dialog__surface {
8170
- height: calc(100vh - var(--dialog-margin-top-mobile));
8195
+ .muka-drawer__leading,
8196
+ .muka-drawer__trailing {
8197
+ display: flex;
8198
+ align-items: center;
8199
+ flex-shrink: 0;
8171
8200
  }
8172
8201
 
8173
8202
  /* Body */
8174
- .muka-dialog--sm .muka-dialog__body,
8175
- .muka-dialog--md .muka-dialog__body,
8176
- .muka-dialog--lg .muka-dialog__body {
8203
+ .muka-drawer__body {
8177
8204
  flex: 1;
8178
8205
  overflow-y: auto;
8179
- padding: var(--dialog-padding-x);
8180
- background-color: var(--dialog-color-body-background);
8206
+ padding: var(--spacing-4);
8181
8207
  }
8182
8208
 
8183
- /* ─── Surface level variants ─────────────────────────── */
8184
-
8185
- .muka-dialog--surface-2 .muka-dialog__body {
8186
- background-color: var(--color-surface-level2);
8209
+ /* Footer */
8210
+ .muka-drawer__footer {
8211
+ padding: var(--spacing-4);
8212
+ border-top: var(--border-width-regular) solid var(--color-border-default);
8213
+ flex-shrink: 0;
8187
8214
  }
8188
8215
 
8189
- /* ─── Footer ──────────────────────────────────────────── */
8190
8216
 
8191
- .muka-dialog__footer {
8192
- flex-shrink: 0;
8193
- }
8217
+ /* DocumentViewer */
8218
+ /* DocumentViewer Component Styles - Using Muka Design Tokens */
8194
8219
 
8195
- /* Hide footer on mobile for modal dialogs with inputs (actions move to TopBar) */
8196
- @media (max-width: 1023px) {
8220
+ .muka-documentviewer {
8221
+ display: flex;
8222
+ flex-direction: column;
8223
+ background-color: var(--documentviewer-container-background);
8224
+ border-radius: var(--documentviewer-container-borderRadius);
8225
+ overflow: hidden;
8226
+ position: relative;
8227
+ }
8228
+
8229
+ .muka-documentviewer--fullscreen {
8230
+ position: fixed;
8231
+ top: 0;
8232
+ left: 0;
8233
+ right: 0;
8234
+ bottom: 0;
8235
+ width: 100vw;
8236
+ height: 100vh;
8237
+ z-index: 9999;
8238
+ border-radius: 0;
8239
+ }
8240
+
8241
+ /* Toolbar */
8242
+ .muka-documentviewer__toolbar {
8243
+ display: flex;
8244
+ align-items: center;
8245
+ justify-content: space-between;
8246
+ height: var(--documentviewer-toolbar-height);
8247
+ padding: var(--documentviewer-toolbar-padding-y) var(--documentviewer-toolbar-padding-x);
8248
+ background-color: var(--documentviewer-toolbar-background);
8249
+ border-bottom: 1px solid var(--documentviewer-toolbar-border);
8250
+ gap: var(--documentviewer-toolbar-gap);
8251
+ flex-shrink: 0;
8252
+ }
8253
+
8254
+ .muka-documentviewer__toolbar-section {
8255
+ display: flex;
8256
+ align-items: center;
8257
+ gap: var(--documentviewer-toolbar-gap);
8258
+ }
8259
+
8260
+ .muka-documentviewer__toolbar-section--center {
8261
+ flex: 1;
8262
+ justify-content: center;
8263
+ }
8264
+
8265
+ .muka-documentviewer__toolbar-section--end {
8266
+ justify-content: flex-end;
8267
+ }
8268
+
8269
+ /* Page navigation */
8270
+ .muka-documentviewer__page-input {
8271
+ display: flex;
8272
+ align-items: center;
8273
+ gap: var(--spacing-1);
8274
+ }
8275
+
8276
+ .muka-documentviewer__page-number {
8277
+ width: 3rem;
8278
+ padding: var(--spacing-1) var(--spacing-2);
8279
+ text-align: center;
8280
+ font-family: var(--alias-font-brand-family);
8281
+ font-size: var(--text-label-sm-fontSize);
8282
+ line-height: var(--text-label-sm-lineHeight);
8283
+ border: 1px solid var(--color-border-default);
8284
+ border-radius: var(--border-radius-md);
8285
+ background-color: var(--color-surface-default);
8286
+ color: var(--color-text-default-default);
8287
+ }
8288
+
8289
+ .muka-documentviewer__page-number:focus {
8290
+ outline: 2px solid var(--color-border-focus);
8291
+ outline-offset: 0;
8292
+ border-color: var(--color-border-focus);
8293
+ }
8294
+
8295
+ .muka-documentviewer__page-total {
8296
+ font-family: var(--alias-font-brand-family);
8297
+ font-size: var(--text-label-sm-fontSize);
8298
+ color: var(--color-text-subtle-default);
8299
+ }
8300
+
8301
+ /* Zoom controls */
8302
+ .muka-documentviewer__zoom-display {
8303
+ min-width: var(--documentviewer-zoom-button-width);
8304
+ padding: var(--spacing-1) var(--spacing-2);
8305
+ font-family: var(--alias-font-brand-family);
8306
+ font-size: var(--text-label-sm-fontSize);
8307
+ font-weight: var(--alias-font-brand-weight-semibold);
8308
+ color: var(--color-text-default-default);
8309
+ background: transparent;
8310
+ border: none;
8311
+ border-radius: var(--border-radius-md);
8312
+ cursor: pointer;
8313
+ transition: background-color 0.2s ease;
8314
+ }
8315
+
8316
+ .muka-documentviewer__zoom-display:hover {
8317
+ background-color: var(--color-surface-level2);
8318
+ }
8319
+
8320
+ .muka-documentviewer__zoom-display:focus {
8321
+ outline: 2px solid var(--color-border-focus);
8322
+ outline-offset: 0;
8323
+ }
8324
+
8325
+ /* Content area */
8326
+ .muka-documentviewer__content {
8327
+ display: flex;
8328
+ flex: 1;
8329
+ overflow: hidden;
8330
+ }
8331
+
8332
+ .muka-documentviewer__main {
8333
+ flex: 1;
8334
+ display: flex;
8335
+ flex-direction: column;
8336
+ overflow: hidden;
8337
+ position: relative;
8338
+ }
8339
+
8340
+ /* Canvas */
8341
+ .muka-documentviewer__canvas {
8342
+ flex: 1;
8343
+ background-color: var(--documentviewer-canvas-background);
8344
+ padding: var(--documentviewer-canvas-padding);
8345
+ overflow: auto;
8346
+ display: flex;
8347
+ align-items: flex-start;
8348
+ justify-content: center;
8349
+ }
8350
+
8351
+ .muka-documentviewer__page {
8352
+ background-color: var(--documentviewer-page-background);
8353
+ box-shadow: var(--documentviewer-page-shadow);
8354
+ border-radius: var(--documentviewer-page-borderRadius);
8355
+ overflow: hidden;
8356
+ }
8357
+
8358
+ .muka-documentviewer__page canvas {
8359
+ display: block;
8360
+ max-width: 100%;
8361
+ height: auto;
8362
+ }
8363
+
8364
+ .muka-documentviewer__page-number {
8365
+ text-align: center;
8366
+ padding: var(--spacing-2);
8367
+ font-family: var(--alias-font-brand-family);
8368
+ font-size: var(--text-label-sm-fontSize);
8369
+ color: var(--color-text-subtle-default);
8370
+ }
8371
+
8372
+ /* Thumbnails */
8373
+ .muka-documentviewer__thumbnails {
8374
+ width: var(--documentviewer-thumbnails-width);
8375
+ background-color: var(--documentviewer-thumbnails-background);
8376
+ border-right: 1px solid var(--documentviewer-thumbnails-border);
8377
+ overflow-y: auto;
8378
+ flex-shrink: 0;
8379
+ }
8380
+
8381
+ .muka-documentviewer__thumbnails-list {
8382
+ display: flex;
8383
+ flex-direction: column;
8384
+ gap: var(--documentviewer-thumbnails-item-gap);
8385
+ padding: var(--spacing-2);
8386
+ }
8387
+
8388
+ .muka-documentviewer__thumbnail-item {
8389
+ display: flex;
8390
+ flex-direction: column;
8391
+ align-items: center;
8392
+ gap: var(--spacing-1);
8393
+ padding: var(--documentviewer-thumbnails-item-padding);
8394
+ border-radius: var(--documentviewer-thumbnails-item-borderRadius);
8395
+ border: 2px solid var(--documentviewer-thumbnails-item-border-default);
8396
+ background-color: var(--documentviewer-thumbnails-item-background-default);
8397
+ cursor: pointer;
8398
+ transition: all 0.2s ease;
8399
+ width: 100%;
8400
+ }
8401
+
8402
+ .muka-documentviewer__thumbnail-item:hover {
8403
+ background-color: var(--documentviewer-thumbnails-item-background-hover);
8404
+ }
8405
+
8406
+ .muka-documentviewer__thumbnail-item--selected {
8407
+ background-color: var(--documentviewer-thumbnails-item-background-selected);
8408
+ border-color: var(--documentviewer-thumbnails-item-border-selected);
8409
+ }
8410
+
8411
+ .muka-documentviewer__thumbnail-item:focus {
8412
+ outline: 2px solid var(--color-border-focus);
8413
+ outline-offset: 2px;
8414
+ }
8415
+
8416
+ .muka-documentviewer__thumbnail-preview {
8417
+ width: 100%;
8418
+ overflow: hidden;
8419
+ border-radius: var(--border-radius-sm);
8420
+ }
8421
+
8422
+ .muka-documentviewer__thumbnail-preview canvas {
8423
+ display: block;
8424
+ width: 100%;
8425
+ height: auto;
8426
+ }
8427
+
8428
+ .muka-documentviewer__thumbnail-label {
8429
+ font-family: var(--alias-font-brand-family);
8430
+ font-size: var(--text-label-xs-fontSize);
8431
+ color: var(--color-text-default-default);
8432
+ font-weight: var(--alias-font-brand-weight-medium);
8433
+ }
8434
+
8435
+ /* Loading state */
8436
+ .muka-documentviewer__loading {
8437
+ display: flex;
8438
+ align-items: center;
8439
+ justify-content: center;
8440
+ flex: 1;
8441
+ background-color: var(--documentviewer-loading-overlay-background);
8442
+ }
8443
+
8444
+ /* Error state */
8445
+ .muka-documentviewer__error {
8446
+ display: flex;
8447
+ align-items: center;
8448
+ justify-content: center;
8449
+ flex: 1;
8450
+ padding: var(--spacing-4);
8451
+ background-color: var(--documentviewer-error-background);
8452
+ }
8453
+
8454
+ /* Accessibility - visually hidden */
8455
+ .visually-hidden {
8456
+ position: absolute;
8457
+ width: 1px;
8458
+ height: 1px;
8459
+ margin: -1px;
8460
+ padding: 0;
8461
+ overflow: hidden;
8462
+ clip: rect(0, 0, 0, 0);
8463
+ white-space: nowrap;
8464
+ border-width: 0;
8465
+ }
8466
+
8467
+ /* React-PDF specific styles */
8468
+ .react-pdf__Document {
8469
+ display: flex;
8470
+ flex-direction: column;
8471
+ align-items: center;
8472
+ }
8473
+
8474
+ .react-pdf__Page {
8475
+ max-width: 100%;
8476
+ box-shadow: var(--documentviewer-page-shadow);
8477
+ border-radius: var(--documentviewer-page-borderRadius);
8478
+ overflow: hidden;
8479
+ }
8480
+
8481
+ .react-pdf__Page__canvas {
8482
+ max-width: 100%;
8483
+ height: auto !important;
8484
+ display: block;
8485
+ }
8486
+
8487
+ .react-pdf__Page__textContent {
8488
+ max-width: 100%;
8489
+ }
8490
+
8491
+ .react-pdf__Page__annotations {
8492
+ max-width: 100%;
8493
+ }
8494
+
8495
+
8496
+ /* Divider */
8497
+ /* Divider Component Styles - Using Muka Design Tokens */
8498
+
8499
+ .muka-divider {
8500
+ flex-shrink: 0;
8501
+ }
8502
+
8503
+ .muka-divider--horizontal {
8504
+ width: 100%;
8505
+ height: var(--separator-width);
8506
+ }
8507
+
8508
+ .muka-divider--vertical {
8509
+ height: 100%;
8510
+ width: var(--separator-width);
8511
+ align-self: stretch;
8512
+ }
8513
+
8514
+ .muka-divider--default {
8515
+ background-color: var(--separator-color-default);
8516
+ }
8517
+
8518
+ .muka-divider--contrast {
8519
+ background-color: var(--separator-color-contrast);
8520
+ }
8521
+
8522
+
8523
+ /* Dialog */
8524
+ /* Dialog Component Styles */
8525
+
8526
+ /* ─── Native dialog reset ─────────────────────────────── */
8527
+
8528
+ .muka-dialog {
8529
+ border: none;
8530
+ padding: 0;
8531
+ max-width: none;
8532
+ max-height: none;
8533
+ overflow: visible;
8534
+ background: transparent;
8535
+ color: inherit;
8536
+ box-shadow: none;
8537
+ }
8538
+
8539
+ .muka-dialog:not([open]) {
8540
+ display: none;
8541
+ }
8542
+
8543
+ /* ─── Backdrop ────────────────────────────────────────── */
8544
+
8545
+ .muka-dialog::backdrop {
8546
+ background-color: var(--dialog-color-backdrop);
8547
+ }
8548
+
8549
+ /* ─── Non-modal modifier ──────────────────────────────── */
8550
+
8551
+ .muka-dialog--non-modal::backdrop {
8552
+ pointer-events: auto;
8553
+ }
8554
+
8555
+ /* ─── Mobile: all sizes bottom-attached (< 1024px) ───── */
8556
+
8557
+ .muka-dialog--sm,
8558
+ .muka-dialog--md,
8559
+ .muka-dialog--lg {
8560
+ width: 100%;
8561
+ height: 100%;
8562
+ max-width: 100vw;
8563
+ max-height: 100vh;
8564
+ margin: 0;
8565
+ display: flex;
8566
+ flex-direction: column;
8567
+ justify-content: flex-end;
8568
+ align-items: stretch;
8569
+ }
8570
+
8571
+ .muka-dialog__surface:focus {
8572
+ outline: none;
8573
+ }
8574
+
8575
+ .muka-dialog--sm .muka-dialog__surface,
8576
+ .muka-dialog--md .muka-dialog__surface,
8577
+ .muka-dialog--lg .muka-dialog__surface {
8578
+ background-color: var(--dialog-color-background);
8579
+ border-radius: var(--dialog-border-radius) var(--dialog-border-radius) 0 0;
8580
+ box-shadow: var(--dialog-shadow-default);
8581
+ display: flex;
8582
+ flex-direction: column;
8583
+ overflow: hidden;
8584
+ min-height: var(--dialog-min-height-mobile);
8585
+ }
8586
+
8587
+ /* Mobile per-size heights */
8588
+ .muka-dialog--sm .muka-dialog__surface {
8589
+ height: var(--dialog-height-mobile-sm);
8590
+ }
8591
+
8592
+ .muka-dialog--md .muka-dialog__surface {
8593
+ height: var(--dialog-height-mobile-md);
8594
+ }
8595
+
8596
+ .muka-dialog--lg .muka-dialog__surface {
8597
+ height: calc(100vh - var(--dialog-margin-top-mobile));
8598
+ }
8599
+
8600
+ /* Body */
8601
+ .muka-dialog--sm .muka-dialog__body,
8602
+ .muka-dialog--md .muka-dialog__body,
8603
+ .muka-dialog--lg .muka-dialog__body {
8604
+ flex: 1;
8605
+ overflow-y: auto;
8606
+ padding: var(--dialog-padding-x);
8607
+ background-color: var(--dialog-color-body-background);
8608
+ }
8609
+
8610
+ /* ─── Surface level variants ─────────────────────────── */
8611
+
8612
+ .muka-dialog--surface-2 .muka-dialog__body {
8613
+ background-color: var(--color-surface-level2);
8614
+ }
8615
+
8616
+ /* ─── Footer ──────────────────────────────────────────── */
8617
+
8618
+ .muka-dialog__footer {
8619
+ flex-shrink: 0;
8620
+ }
8621
+
8622
+ /* Hide footer on mobile for modal dialogs with inputs (actions move to TopBar) */
8623
+ @media (max-width: 1023px) {
8197
8624
  .muka-dialog:not(.muka-dialog--non-modal):not(.muka-dialog--no-inputs) .muka-dialog__footer {
8198
8625
  display: none;
8199
8626
  }
@@ -8863,377 +9290,246 @@ li.muka-listitem {
8863
9290
  }
8864
9291
 
8865
9292
  .muka-data-table--responsive.muka-data-table--selectable .muka-data-table__row {
8866
- grid-template-columns: auto 1fr auto auto;
8867
- }
8868
-
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
- }
9293
+ grid-template-columns: auto 1fr auto auto;
9294
+ }
8935
9295
 
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
- }
9296
+ .muka-data-table--responsive.muka-data-table--selectable .muka-data-table__td--mobile-stack {
9297
+ grid-column: 2;
9298
+ }
8941
9299
 
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
- }
9300
+ .muka-data-table--responsive.muka-data-table--selectable .muka-data-table__td--m-secondary {
9301
+ grid-column: 3;
9302
+ }
8947
9303
 
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;
9304
+ .muka-data-table--responsive.muka-data-table--selectable .muka-data-table__td--action {
9305
+ grid-column: 4;
9306
+ }
8954
9307
  }
8955
9308
 
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
- }
8968
9309
 
8969
- /* Content container */
8970
- .muka-fileupload__content {
8971
- display: flex;
8972
- flex-direction: column;
8973
- align-items: center;
8974
- gap: var(--spacing-2);
8975
- }
9310
+ /* DataPieChart */
9311
+ /* DataPieChart Component Styles - Using Muka Design Tokens */
8976
9312
 
8977
- /* Upload icon */
8978
- .muka-fileupload__icon {
8979
- display: flex;
9313
+ .muka-data-pie-chart {
9314
+ position: relative;
9315
+ display: inline-flex;
8980
9316
  align-items: center;
8981
9317
  justify-content: center;
8982
- width: var(--size-3xl);
8983
- height: var(--size-3xl);
8984
- color: var(--fileupload-dropzone-color-default-foreground);
9318
+ flex-shrink: 0;
8985
9319
  }
8986
9320
 
8987
- .muka-fileupload__icon svg {
9321
+ .muka-data-pie-chart__svg {
9322
+ display: block;
8988
9323
  width: 100%;
8989
9324
  height: 100%;
9325
+ /* Start the segment at 12 o'clock instead of 3 o'clock */
9326
+ transform: rotate(-90deg);
8990
9327
  }
8991
9328
 
8992
- .muka-fileupload--sm .muka-fileupload__icon {
8993
- width: var(--size-2xl);
8994
- height: var(--size-2xl);
9329
+ .muka-data-pie-chart__track {
9330
+ fill: none;
8995
9331
  }
8996
9332
 
8997
- .muka-fileupload--lg .muka-fileupload__icon {
8998
- width: var(--size-4xl);
8999
- height: var(--size-4xl);
9333
+ .muka-data-pie-chart__segment {
9334
+ fill: none;
9335
+ /* Subtle lift on the filled segment, matching the Figma elevation */
9336
+ filter: drop-shadow(0 2px 4px var(--color-black-alpha-5, rgba(0, 0, 0, 0.05)));
9337
+ transition: stroke-dasharray 0.3s ease;
9000
9338
  }
9001
9339
 
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);
9340
+ .muka-data-pie-chart__value {
9341
+ position: absolute;
9342
+ inset: 0;
9343
+ display: flex;
9344
+ align-items: center;
9345
+ justify-content: center;
9346
+ font-family: var(--text-body-base-bold-fontFamily);
9347
+ font-weight: var(--text-body-base-bold-fontWeight);
9348
+ font-size: var(--text-body-base-bold-fontSize);
9349
+ line-height: var(--text-body-base-bold-lineHeight);
9008
9350
  color: var(--color-text-default-default);
9009
9351
  }
9010
9352
 
9011
- .muka-fileupload--sm .muka-fileupload__text {
9012
- font-size: var(--text-body-sm-regular-fontSize);
9013
- }
9014
-
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);
9022
- }
9023
-
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;
9032
- }
9033
9353
 
9034
- .muka-fileupload__list li {
9035
- margin: 0;
9036
- padding: 0;
9037
- }
9354
+ /* Container */
9355
+ /* Container Component - Layout tokens (container.max-width, container.gap) */
9038
9356
 
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);
9357
+ .muka-container {
9358
+ box-sizing: border-box;
9359
+ width: 100%;
9360
+ margin-inline: auto;
9047
9361
  }
9048
9362
 
9049
- .muka-fileupload-item--error {
9050
- background-color: var(--fileupload-item-color-error-background);
9363
+ /* Max-width variants */
9364
+ .muka-container--max-width-small {
9365
+ max-width: var(--container-max-width-small);
9051
9366
  }
9052
9367
 
9053
- .muka-fileupload-item--success {
9054
- background-color: var(--fileupload-item-color-default-background);
9368
+ .muka-container--max-width-medium {
9369
+ max-width: var(--container-max-width-medium);
9055
9370
  }
9056
9371
 
9057
- /* Preview/Icon container */
9058
- .muka-fileupload-item__preview {
9059
- display: flex;
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);
9372
+ .muka-container--max-width-large {
9373
+ max-width: var(--container-max-width-large);
9068
9374
  }
9069
9375
 
9070
- .muka-fileupload-item__thumbnail {
9071
- width: 100%;
9072
- height: 100%;
9073
- object-fit: cover;
9376
+ .muka-container--max-width-xlarge {
9377
+ max-width: var(--container-max-width-xlarge);
9074
9378
  }
9075
9379
 
9076
- .muka-fileupload-item__icon {
9077
- color: var(--color-text-subtle-default);
9380
+ /* No gap — max-width only, no flex */
9381
+ .muka-container--gap-none {
9382
+ /* block layout by default */
9078
9383
  }
9079
9384
 
9080
- /* File info */
9081
- .muka-fileupload-item__info {
9082
- flex: 1;
9083
- min-width: 0;
9385
+ /* Gap variants — flex column with token gap */
9386
+ .muka-container--gap-compact {
9084
9387
  display: flex;
9085
9388
  flex-direction: column;
9086
- gap: var(--spacing-1);
9389
+ gap: var(--container-gap-compact);
9087
9390
  }
9088
9391
 
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;
9392
+ .muka-container--gap-default {
9393
+ display: flex;
9394
+ flex-direction: column;
9395
+ gap: var(--container-gap-default);
9098
9396
  }
9099
9397
 
9100
- .muka-fileupload-item--error .muka-fileupload-item__name {
9101
- color: var(--fileupload-item-color-error-foreground);
9398
+ .muka-container--gap-spacious {
9399
+ display: flex;
9400
+ flex-direction: column;
9401
+ gap: var(--container-gap-spacious);
9102
9402
  }
9103
9403
 
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
- }
9111
9404
 
9112
- .muka-fileupload-item__error {
9113
- color: var(--fileupload-item-color-error-foreground);
9114
- }
9405
+ /* Combobox */
9406
+ /* Combobox Component Styles */
9115
9407
 
9116
- .muka-fileupload-item__progress {
9117
- margin-top: var(--spacing-1);
9118
- }
9408
+ /* ─── Trigger (looks like an Input field, behaves like a button) ── */
9119
9409
 
9120
- /* Actions */
9121
- .muka-fileupload-item__actions {
9122
- display: flex;
9410
+ .muka-combobox {
9411
+ display: inline-flex;
9123
9412
  align-items: center;
9124
9413
  gap: var(--spacing-2);
9125
- flex-shrink: 0;
9126
- }
9127
-
9128
- .muka-fileupload-item__status-icon--success {
9129
- color: var(--color-state-success-foreground);
9130
- }
9131
-
9132
- .muka-fileupload-item__status-icon--error {
9133
- color: var(--color-state-error-foreground);
9134
- }
9135
-
9136
- .muka-fileupload-item__remove {
9137
- opacity: 0.7;
9138
- }
9139
-
9140
- .muka-fileupload-item__remove:hover {
9141
- opacity: 1;
9414
+ width: 100%;
9415
+ padding: 0 var(--input-field-padding-x);
9416
+ background-color: var(--input-field-color-default-background);
9417
+ border: var(--border-width-regular) solid var(--input-field-color-default-border);
9418
+ color: var(--color-text-default-default);
9419
+ text-align: left;
9420
+ cursor: pointer;
9421
+ font-family: var(--text-body-md-regular-fontFamily);
9422
+ font-weight: var(--text-body-md-regular-fontWeight);
9423
+ font-size: var(--text-body-md-regular-fontSize);
9424
+ line-height: var(--text-body-md-regular-lineHeight);
9425
+ -webkit-tap-highlight-color: transparent;
9426
+ transition: border-color 0.12s ease;
9142
9427
  }
9143
9428
 
9144
-
9145
- /* DataPieChart */
9146
- /* DataPieChart Component Styles - Using Muka Design Tokens */
9147
-
9148
- .muka-data-pie-chart {
9149
- position: relative;
9150
- display: inline-flex;
9151
- align-items: center;
9152
- justify-content: center;
9153
- flex-shrink: 0;
9429
+ .muka-combobox--sm {
9430
+ min-height: var(--input-field-height-sm);
9431
+ border-radius: var(--input-field-radius-sm);
9154
9432
  }
9155
9433
 
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);
9434
+ .muka-combobox--md {
9435
+ min-height: var(--input-field-height-default);
9436
+ border-radius: var(--input-field-radius-md);
9162
9437
  }
9163
9438
 
9164
- .muka-data-pie-chart__track {
9165
- fill: none;
9439
+ .muka-combobox--lg {
9440
+ min-height: var(--input-field-height-lg);
9441
+ border-radius: var(--input-field-radius-lg);
9166
9442
  }
9167
9443
 
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;
9444
+ .muka-combobox:hover:not(:disabled) {
9445
+ border-color: var(--input-field-color-hover-border, var(--input-field-color-default-border));
9173
9446
  }
9174
9447
 
9175
- .muka-data-pie-chart__value {
9176
- position: absolute;
9177
- inset: 0;
9178
- display: flex;
9179
- align-items: center;
9180
- justify-content: center;
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);
9448
+ .muka-combobox:focus-visible {
9449
+ outline: none;
9450
+ border-color: var(--input-field-color-focus-border, var(--color-action-default));
9186
9451
  }
9187
9452
 
9453
+ .muka-combobox--disabled,
9454
+ .muka-combobox:disabled {
9455
+ opacity: 0.5;
9456
+ cursor: not-allowed;
9457
+ }
9188
9458
 
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;
9459
+ .muka-combobox--placeholder .muka-combobox__label {
9460
+ color: var(--color-text-subtle-default);
9196
9461
  }
9197
9462
 
9198
- /* Max-width variants */
9199
- .muka-container--max-width-small {
9200
- max-width: var(--container-max-width-small);
9463
+ .muka-combobox__leading {
9464
+ display: inline-flex;
9465
+ align-items: center;
9466
+ justify-content: center;
9467
+ flex-shrink: 0;
9468
+ color: var(--color-text-subtle-default);
9201
9469
  }
9202
9470
 
9203
- .muka-container--max-width-medium {
9204
- max-width: var(--container-max-width-medium);
9471
+ .muka-combobox__label {
9472
+ flex: 1 1 auto;
9473
+ min-width: 0;
9474
+ white-space: nowrap;
9475
+ overflow: hidden;
9476
+ text-overflow: ellipsis;
9205
9477
  }
9206
9478
 
9207
- .muka-container--max-width-large {
9208
- max-width: var(--container-max-width-large);
9479
+ .muka-combobox__clear,
9480
+ .muka-combobox__chevron {
9481
+ display: inline-flex;
9482
+ align-items: center;
9483
+ justify-content: center;
9484
+ flex-shrink: 0;
9485
+ color: var(--color-text-subtle-default);
9209
9486
  }
9210
9487
 
9211
- .muka-container--max-width-xlarge {
9212
- max-width: var(--container-max-width-xlarge);
9488
+ .muka-combobox__clear {
9489
+ cursor: pointer;
9490
+ padding: var(--spacing-1);
9491
+ border-radius: var(--radius-sm);
9213
9492
  }
9214
9493
 
9215
- /* No gap — max-width only, no flex */
9216
- .muka-container--gap-none {
9217
- /* block layout by default */
9494
+ .muka-combobox__clear:hover {
9495
+ color: var(--color-text-default-default);
9496
+ background-color: var(--color-surface-level1);
9218
9497
  }
9219
9498
 
9220
- /* Gap variants — flex column with token gap */
9221
- .muka-container--gap-compact {
9499
+ /* ─── Picker sheet body ───────────────────────────────── */
9500
+
9501
+ .muka-combobox__picker {
9222
9502
  display: flex;
9223
9503
  flex-direction: column;
9224
- gap: var(--container-gap-compact);
9504
+ gap: var(--spacing-3);
9505
+ padding: 0 var(--spacing-4) var(--spacing-4);
9506
+ min-height: 0;
9507
+ max-height: 80vh;
9225
9508
  }
9226
9509
 
9227
- .muka-container--gap-default {
9228
- display: flex;
9229
- flex-direction: column;
9230
- gap: var(--container-gap-default);
9510
+ .muka-combobox__title {
9511
+ margin: 0;
9512
+ padding: var(--spacing-2) 0;
9513
+ color: var(--color-text-default-default);
9514
+ font-family: var(--text-heading-sm-fontFamily);
9515
+ font-weight: var(--text-heading-sm-fontWeight);
9516
+ font-size: var(--text-heading-sm-fontSize);
9517
+ line-height: var(--text-heading-sm-lineHeight);
9231
9518
  }
9232
9519
 
9233
- .muka-container--gap-spacious {
9234
- display: flex;
9235
- flex-direction: column;
9236
- gap: var(--container-gap-spacious);
9520
+ .muka-combobox__search {
9521
+ position: sticky;
9522
+ top: 0;
9523
+ z-index: 1;
9524
+ padding-bottom: var(--spacing-2);
9525
+ background-color: var(--color-surface-level3);
9526
+ }
9527
+
9528
+ .muka-combobox__list {
9529
+ flex: 1 1 auto;
9530
+ min-height: 0;
9531
+ overflow-y: auto;
9532
+ -webkit-overflow-scrolling: touch;
9237
9533
  }
9238
9534
 
9239
9535
 
@@ -9437,183 +9733,52 @@ li.muka-listitem {
9437
9733
  color: var(--chip-dismiss-error-foreground-hover);
9438
9734
  }
9439
9735
  .muka-chip--error .muka-chip__remove:active {
9440
- background-color: var(--chip-dismiss-error-background-pressed);
9441
- color: var(--chip-dismiss-error-foreground-pressed);
9442
- }
9443
-
9444
- .muka-chip--info .muka-chip__remove {
9445
- background-color: var(--chip-dismiss-info-background-default);
9446
- color: var(--chip-dismiss-info-foreground-default);
9447
- }
9448
- .muka-chip--info .muka-chip__remove:hover {
9449
- background-color: var(--chip-dismiss-info-background-hover);
9450
- color: var(--chip-dismiss-info-foreground-hover);
9451
- }
9452
- .muka-chip--info .muka-chip__remove:active {
9453
- background-color: var(--chip-dismiss-info-background-pressed);
9454
- color: var(--chip-dismiss-info-foreground-pressed);
9455
- }
9456
-
9457
- /* Variants (solid fill) — icons inherit these foreground colors (see below) */
9458
- .muka-chip--default {
9459
- background-color: var(--color-surface-level1);
9460
- color: var(--color-text-default-default);
9461
- }
9462
-
9463
- .muka-chip--success {
9464
- background-color: var(--color-state-success-background);
9465
- color: var(--color-state-success-contrast);
9466
- }
9467
-
9468
- .muka-chip--warning {
9469
- background-color: var(--color-state-warning-background);
9470
- color: var(--color-state-warning-contrast);
9471
- }
9472
-
9473
- .muka-chip--error {
9474
- background-color: var(--color-state-error-background);
9475
- color: var(--color-state-error-contrast);
9476
- }
9477
-
9478
- .muka-chip--info {
9479
- background-color: var(--color-state-info-background);
9480
- color: var(--color-state-info-contrast);
9481
- }
9482
-
9483
- /* Icons (leading + dismiss) inherit the chip's per-variant foreground color */
9484
- .muka-chip .muka-icon {
9485
- color: inherit;
9486
- }
9487
-
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);
9736
+ background-color: var(--chip-dismiss-error-background-pressed);
9737
+ color: var(--chip-dismiss-error-foreground-pressed);
9570
9738
  }
9571
9739
 
9572
- .muka-combobox__clear {
9573
- cursor: pointer;
9574
- padding: var(--spacing-1);
9575
- border-radius: var(--radius-sm);
9740
+ .muka-chip--info .muka-chip__remove {
9741
+ background-color: var(--chip-dismiss-info-background-default);
9742
+ color: var(--chip-dismiss-info-foreground-default);
9743
+ }
9744
+ .muka-chip--info .muka-chip__remove:hover {
9745
+ background-color: var(--chip-dismiss-info-background-hover);
9746
+ color: var(--chip-dismiss-info-foreground-hover);
9747
+ }
9748
+ .muka-chip--info .muka-chip__remove:active {
9749
+ background-color: var(--chip-dismiss-info-background-pressed);
9750
+ color: var(--chip-dismiss-info-foreground-pressed);
9576
9751
  }
9577
9752
 
9578
- .muka-combobox__clear:hover {
9579
- color: var(--color-text-default-default);
9753
+ /* Variants (solid fill) — icons inherit these foreground colors (see below) */
9754
+ .muka-chip--default {
9580
9755
  background-color: var(--color-surface-level1);
9756
+ color: var(--color-text-default-default);
9581
9757
  }
9582
9758
 
9583
- /* ─── Picker sheet body ───────────────────────────────── */
9759
+ .muka-chip--success {
9760
+ background-color: var(--color-state-success-background);
9761
+ color: var(--color-state-success-contrast);
9762
+ }
9584
9763
 
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;
9764
+ .muka-chip--warning {
9765
+ background-color: var(--color-state-warning-background);
9766
+ color: var(--color-state-warning-contrast);
9592
9767
  }
9593
9768
 
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);
9769
+ .muka-chip--error {
9770
+ background-color: var(--color-state-error-background);
9771
+ color: var(--color-state-error-contrast);
9602
9772
  }
9603
9773
 
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);
9774
+ .muka-chip--info {
9775
+ background-color: var(--color-state-info-background);
9776
+ color: var(--color-state-info-contrast);
9610
9777
  }
9611
9778
 
9612
- .muka-combobox__list {
9613
- flex: 1 1 auto;
9614
- min-height: 0;
9615
- overflow-y: auto;
9616
- -webkit-overflow-scrolling: touch;
9779
+ /* Icons (leading + dismiss) inherit the chip's per-variant foreground color */
9780
+ .muka-chip .muka-icon {
9781
+ color: inherit;
9617
9782
  }
9618
9783
 
9619
9784
 
@@ -12250,3 +12415,194 @@ li.muka-listitem {
12250
12415
  border-bottom: none;
12251
12416
  }
12252
12417
 
12418
+
12419
+ /* Radio */
12420
+ /* Radio Component Styles - Using Muka Design Tokens */
12421
+
12422
+ /* Wrapper - clickable label container */
12423
+ .muka-radio {
12424
+ display: inline-flex;
12425
+ align-items: center;
12426
+ gap: var(--spacing-4);
12427
+ cursor: pointer;
12428
+ user-select: none;
12429
+ }
12430
+
12431
+ .muka-radio--disabled {
12432
+ cursor: not-allowed;
12433
+ opacity: 0.6;
12434
+ }
12435
+
12436
+ /* Control container */
12437
+ .muka-radio__control {
12438
+ position: relative;
12439
+ display: inline-flex;
12440
+ align-items: center;
12441
+ justify-content: center;
12442
+ flex-shrink: 0;
12443
+ }
12444
+
12445
+ /* Hidden native input */
12446
+ .muka-radio__input {
12447
+ position: absolute;
12448
+ width: 1px;
12449
+ height: 1px;
12450
+ padding: 0;
12451
+ margin: -1px;
12452
+ overflow: hidden;
12453
+ clip: rect(0, 0, 0, 0);
12454
+ white-space: nowrap;
12455
+ border: 0;
12456
+ }
12457
+
12458
+ /* Visual indicator (circle) */
12459
+ .muka-radio__indicator {
12460
+ display: flex;
12461
+ align-items: center;
12462
+ justify-content: center;
12463
+ width: var(--radio-size-default);
12464
+ height: var(--radio-size-default);
12465
+ border-radius: var(--border-radius-full);
12466
+ background-color: var(--radio-color-default-background);
12467
+ border: var(--border-width-regular) solid var(--radio-color-default-border);
12468
+ transition: all 0.15s ease;
12469
+ box-shadow: inset 0 1px 2px 0 rgba(26, 26, 26, 0.15);
12470
+ }
12471
+
12472
+ /* Size variants */
12473
+ .muka-radio--sm .muka-radio__indicator {
12474
+ width: var(--radio-size-sm);
12475
+ height: var(--radio-size-sm);
12476
+ }
12477
+
12478
+ .muka-radio--lg .muka-radio__indicator {
12479
+ width: var(--radio-size-lg);
12480
+ height: var(--radio-size-lg);
12481
+ }
12482
+
12483
+ /* Inner dot (shown when checked) */
12484
+ .muka-radio__dot {
12485
+ width: var(--radio-dot-size-default);
12486
+ height: var(--radio-dot-size-default);
12487
+ border-radius: var(--border-radius-full);
12488
+ background-color: var(--radio-color-default-dot);
12489
+ transform: scale(0);
12490
+ transition: transform 0.15s ease;
12491
+ }
12492
+
12493
+ .muka-radio--sm .muka-radio__dot {
12494
+ width: var(--radio-dot-size-sm);
12495
+ height: var(--radio-dot-size-sm);
12496
+ }
12497
+
12498
+ .muka-radio--lg .muka-radio__dot {
12499
+ width: var(--radio-dot-size-lg);
12500
+ height: var(--radio-dot-size-lg);
12501
+ }
12502
+
12503
+ /* Hover state - removed per design */
12504
+
12505
+ /* Focus state */
12506
+ .muka-radio__input:focus-visible + .muka-radio__indicator {
12507
+ outline: 2px solid var(--color-border-focus);
12508
+ outline-offset: 2px;
12509
+ }
12510
+
12511
+ /* Checked state */
12512
+ .muka-radio__input:checked + .muka-radio__indicator {
12513
+ background-color: var(--radio-color-checked-background);
12514
+ border-width: var(--border-width-bold);
12515
+ border-color: var(--radio-color-checked-border);
12516
+ box-shadow: none;
12517
+ }
12518
+
12519
+ .muka-radio__input:checked + .muka-radio__indicator .muka-radio__dot {
12520
+ background-color: var(--radio-color-checked-dot);
12521
+ transform: scale(1);
12522
+ }
12523
+
12524
+ /* Disabled state */
12525
+ .muka-radio--disabled .muka-radio__indicator {
12526
+ background-color: var(--radio-color-disabled-background);
12527
+ border-color: var(--radio-color-disabled-border);
12528
+ box-shadow: none;
12529
+ }
12530
+
12531
+ .muka-radio__input:disabled:checked + .muka-radio__indicator .muka-radio__dot {
12532
+ background-color: var(--radio-color-disabled-dot);
12533
+ }
12534
+
12535
+ /* Label text */
12536
+ .muka-radio__label {
12537
+ font-family: var(--text-label-lg-regular-fontFamily);
12538
+ font-weight: var(--text-label-lg-regular-fontWeight);
12539
+ font-size: var(--text-label-lg-regular-fontSize);
12540
+ line-height: var(--text-label-lg-regular-lineHeight);
12541
+ color: var(--color-text-default-default);
12542
+ }
12543
+
12544
+ .muka-radio--sm .muka-radio__label {
12545
+ font-family: var(--text-label-md-regular-fontFamily);
12546
+ font-weight: var(--text-label-md-regular-fontWeight);
12547
+ font-size: var(--text-label-md-regular-fontSize);
12548
+ line-height: var(--text-label-md-regular-lineHeight);
12549
+ }
12550
+
12551
+ .muka-radio--lg .muka-radio__label {
12552
+ font-family: var(--text-label-xl-regular-fontFamily);
12553
+ font-weight: var(--text-label-xl-regular-fontWeight);
12554
+ font-size: var(--text-label-xl-regular-fontSize);
12555
+ line-height: var(--text-label-xl-regular-lineHeight);
12556
+ }
12557
+
12558
+ .muka-radio--disabled .muka-radio__label {
12559
+ color: var(--color-text-subtle-default);
12560
+ }
12561
+
12562
+
12563
+ /* PullToRefresh */
12564
+ /* PullToRefresh Component Styles */
12565
+
12566
+ .muka-pull-to-refresh {
12567
+ position: relative;
12568
+ display: flex;
12569
+ flex-direction: column;
12570
+ width: 100%;
12571
+ height: 100%;
12572
+ overflow: hidden;
12573
+ }
12574
+
12575
+ .muka-pull-to-refresh__indicator {
12576
+ position: absolute;
12577
+ top: 0;
12578
+ left: 0;
12579
+ right: 0;
12580
+ display: flex;
12581
+ align-items: flex-end;
12582
+ justify-content: center;
12583
+ padding-bottom: var(--spacing-2);
12584
+ color: var(--color-text-subtle-default);
12585
+ overflow: hidden;
12586
+ pointer-events: none;
12587
+ z-index: 1;
12588
+ }
12589
+
12590
+ .muka-pull-to-refresh__chevron {
12591
+ display: inline-flex;
12592
+ align-items: center;
12593
+ justify-content: center;
12594
+ transition: transform 0.16s ease;
12595
+ }
12596
+
12597
+ .muka-pull-to-refresh__scroller {
12598
+ flex: 1 1 auto;
12599
+ min-height: 0;
12600
+ width: 100%;
12601
+ overflow-x: clip;
12602
+ overflow-y: auto;
12603
+ -webkit-overflow-scrolling: touch;
12604
+ overscroll-behavior-y: contain;
12605
+ touch-action: pan-y;
12606
+ will-change: transform;
12607
+ }
12608
+