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