@revikornmann/muka-ui 0.4.1 → 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 (113) 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/DataPieChart/DataPieChart.js +1 -1
  6. package/dist/cjs/components/DataPieChart/DataPieChart.js.map +1 -1
  7. package/dist/cjs/components/DataTable/DataTable.css +17 -0
  8. package/dist/cjs/components/DataTable/DataTable.js +15 -2
  9. package/dist/cjs/components/DataTable/DataTable.js.map +1 -1
  10. package/dist/cjs/components/ListItem/ListItem.css +10 -4
  11. package/dist/cjs/components/ProgressAccordeon/ProgressAccordeon.css +207 -0
  12. package/dist/cjs/components/ProgressAccordeon/ProgressAccordeon.js +66 -0
  13. package/dist/cjs/components/ProgressAccordeon/ProgressAccordeon.js.map +1 -0
  14. package/dist/cjs/components/ProgressAccordeon/index.js +11 -0
  15. package/dist/cjs/components/ProgressAccordeon/index.js.map +1 -0
  16. package/dist/cjs/components/{FormProgressBar/FormProgressBar.css → ProgressTracker/ProgressTracker.css} +28 -22
  17. package/dist/cjs/components/{FormProgressBar/FormProgressBar.js → ProgressTracker/ProgressTracker.js} +20 -20
  18. package/dist/cjs/components/{FormProgressBar/FormProgressBar.js.map → ProgressTracker/ProgressTracker.js.map} +1 -1
  19. package/dist/cjs/components/ProgressTracker/index.js +8 -0
  20. package/dist/cjs/components/{FormProgressBar → ProgressTracker}/index.js.map +1 -1
  21. package/dist/cjs/components/index.js +7 -5
  22. package/dist/cjs/components/index.js.map +1 -1
  23. package/dist/esm/components/DataPieChart/DataPieChart.js +1 -1
  24. package/dist/esm/components/DataPieChart/DataPieChart.js.map +1 -1
  25. package/dist/esm/components/DataTable/DataTable.css +17 -0
  26. package/dist/esm/components/DataTable/DataTable.js +15 -2
  27. package/dist/esm/components/DataTable/DataTable.js.map +1 -1
  28. package/dist/esm/components/ListItem/ListItem.css +10 -4
  29. package/dist/esm/components/ProgressAccordeon/ProgressAccordeon.css +207 -0
  30. package/dist/esm/components/ProgressAccordeon/ProgressAccordeon.js +62 -0
  31. package/dist/esm/components/ProgressAccordeon/ProgressAccordeon.js.map +1 -0
  32. package/dist/esm/components/ProgressAccordeon/index.js +3 -0
  33. package/dist/esm/components/ProgressAccordeon/index.js.map +1 -0
  34. package/dist/{styles/components/FormProgressBar.css → esm/components/ProgressTracker/ProgressTracker.css} +28 -22
  35. package/dist/esm/components/{FormProgressBar/FormProgressBar.js → ProgressTracker/ProgressTracker.js} +18 -18
  36. package/dist/esm/components/{FormProgressBar/FormProgressBar.js.map → ProgressTracker/ProgressTracker.js.map} +1 -1
  37. package/dist/esm/components/ProgressTracker/index.js +3 -0
  38. package/dist/esm/components/{FormProgressBar → ProgressTracker}/index.js.map +1 -1
  39. package/dist/esm/components/index.js +2 -1
  40. package/dist/esm/components/index.js.map +1 -1
  41. package/dist/styles/components/DataTable.css +17 -0
  42. package/dist/styles/components/ListItem.css +10 -4
  43. package/dist/styles/components/ProgressAccordeon.css +207 -0
  44. package/dist/{esm/components/FormProgressBar/FormProgressBar.css → styles/components/ProgressTracker.css} +28 -22
  45. package/dist/styles/fonts/funnel-display-latin-wght-normal.woff2 +0 -0
  46. package/dist/styles/fonts/funnel-display.LICENSE.txt +93 -0
  47. package/dist/styles/fonts/funnel-sans-latin-wght-normal.woff2 +0 -0
  48. package/dist/styles/fonts/funnel-sans.LICENSE.txt +93 -0
  49. package/dist/styles/fonts/ibm-plex-sans-latin-wght-normal.woff2 +0 -0
  50. package/dist/styles/fonts/ibm-plex-sans.LICENSE.txt +93 -0
  51. package/dist/styles/fonts/lora-latin-wght-normal.woff2 +0 -0
  52. package/dist/styles/fonts/lora.LICENSE.txt +93 -0
  53. package/dist/styles/fonts/quicksand-latin-wght-normal.woff2 +0 -0
  54. package/dist/styles/fonts/quicksand.LICENSE.txt +93 -0
  55. package/dist/styles/fonts/red-hat-display-latin-wght-normal.woff2 +0 -0
  56. package/dist/styles/fonts/red-hat-display.LICENSE.txt +93 -0
  57. package/dist/styles/fonts/red-hat-text-latin-wght-normal.woff2 +0 -0
  58. package/dist/styles/fonts/red-hat-text.LICENSE.txt +93 -0
  59. package/dist/styles/fonts/yesteryear-latin-400-normal.woff2 +0 -0
  60. package/dist/styles/fonts/yesteryear.LICENSE.txt +93 -0
  61. package/dist/styles/fonts-all.css +75 -0
  62. package/dist/styles/fonts-bouwplan.css +30 -0
  63. package/dist/styles/fonts-fscl.css +21 -0
  64. package/dist/styles/fonts-grip.css +21 -0
  65. package/dist/styles/fonts-muka.css +30 -0
  66. package/dist/styles/fonts-wireframe.css +5 -0
  67. package/dist/styles/index.css +947 -568
  68. package/dist/styles/muka-dark.css +947 -568
  69. package/dist/styles/muka-light.css +947 -568
  70. package/dist/styles/tokens-bouwplan-dark.css +174 -66
  71. package/dist/styles/tokens-bouwplan-light.css +174 -66
  72. package/dist/styles/tokens-fscl-dark.css +113 -5
  73. package/dist/styles/tokens-fscl-light.css +113 -5
  74. package/dist/styles/tokens-grip-dark.css +113 -5
  75. package/dist/styles/tokens-grip-light.css +113 -5
  76. package/dist/styles/tokens-muka-dark.css +113 -5
  77. package/dist/styles/tokens-muka-light.css +113 -5
  78. package/dist/styles/tokens-wireframe-dark.css +113 -5
  79. package/dist/styles/tokens-wireframe-light.css +113 -5
  80. package/dist/styles/wireframe-dark.css +915 -568
  81. package/dist/styles/wireframe-light.css +915 -568
  82. package/dist/types/components/DataPieChart/DataPieChart.d.ts +1 -1
  83. package/dist/types/components/DataPieChart/DataPieChart.d.ts.map +1 -1
  84. package/dist/types/components/DataTable/DataTable.d.ts.map +1 -1
  85. package/dist/types/components/ProgressAccordeon/ProgressAccordeon.d.ts +91 -0
  86. package/dist/types/components/ProgressAccordeon/ProgressAccordeon.d.ts.map +1 -0
  87. package/dist/types/components/ProgressAccordeon/index.d.ts +3 -0
  88. package/dist/types/components/ProgressAccordeon/index.d.ts.map +1 -0
  89. package/dist/types/components/{FormProgressBar/FormProgressBar.d.ts → ProgressTracker/ProgressTracker.d.ts} +9 -9
  90. package/dist/types/components/{FormProgressBar/FormProgressBar.d.ts.map → ProgressTracker/ProgressTracker.d.ts.map} +1 -1
  91. package/dist/types/components/ProgressTracker/index.d.ts +3 -0
  92. package/dist/types/components/{FormProgressBar → ProgressTracker}/index.d.ts.map +1 -1
  93. package/dist/types/components/index.d.ts +2 -1
  94. package/dist/types/components/index.d.ts.map +1 -1
  95. package/docs/consumers/setup-instructions.md +22 -3
  96. package/package.json +12 -2
  97. package/scripts/build-fonts.js +248 -0
  98. package/tokens/t1-primitives/color.json +400 -0
  99. package/tokens/t2-alias/brand/bouwplan/dark.json +15 -1
  100. package/tokens/t2-alias/brand/bouwplan/fonts.json +5 -5
  101. package/tokens/t2-alias/brand/bouwplan/light.json +15 -1
  102. package/tokens/t2-alias/brand/fscl/dark.json +15 -1
  103. package/tokens/t2-alias/brand/fscl/light.json +15 -1
  104. package/tokens/t2-alias/brand/grip/dark.json +51 -1
  105. package/tokens/t2-alias/brand/grip/light.json +51 -1
  106. package/tokens/t2-alias/brand/muka/dark.json +51 -1
  107. package/tokens/t2-alias/brand/muka/light.json +51 -1
  108. package/tokens/t2-alias/brand/wireframe/dark.json +51 -1
  109. package/tokens/t2-alias/brand/wireframe/light.json +51 -1
  110. package/tokens/t3-semantics/ui.json +13 -13
  111. package/dist/cjs/components/FormProgressBar/index.js +0 -8
  112. package/dist/esm/components/FormProgressBar/index.js +0 -3
  113. package/dist/types/components/FormProgressBar/index.d.ts +0 -3
@@ -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,194 +5528,379 @@ 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);
5563
+ gap: 7px;
5564
+ position: relative;
5565
+ }
5566
+
5567
+ /* ─── Step indicator (circle) ───────────────────────────── */
5568
+ .muka-progress-tracker__indicator {
5569
+ width: 32px;
5570
+ height: 32px;
5437
5571
  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);
5572
+ display: flex;
5573
+ align-items: center;
5574
+ justify-content: center;
5575
+ flex-shrink: 0;
5576
+ position: relative;
5442
5577
  }
5443
5578
 
5444
- /* Size variants */
5445
- .muka-radio--sm .muka-radio__indicator {
5446
- width: var(--radio-size-sm);
5447
- height: var(--radio-size-sm);
5579
+ /* Past: dark accent contrast circle with white checkmark */
5580
+ .muka-progress-tracker__indicator--past {
5581
+ background-color: var(--alias-color-accent-contrast);
5582
+ color: var(--color-text-default-inverse);
5583
+ cursor: pointer;
5448
5584
  }
5449
5585
 
5450
- .muka-radio--lg .muka-radio__indicator {
5451
- width: var(--radio-size-lg);
5452
- height: var(--radio-size-lg);
5586
+ .muka-progress-tracker__indicator--past:hover {
5587
+ background-color: var(--alias-color-accent-pressed);
5453
5588
  }
5454
5589
 
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;
5590
+ .muka-progress-tracker__indicator--past:focus-visible {
5591
+ outline: 2px solid var(--color-border-focus);
5592
+ outline-offset: 2px;
5463
5593
  }
5464
5594
 
5465
- .muka-radio--sm .muka-radio__dot {
5466
- width: var(--radio-dot-size-sm);
5467
- height: var(--radio-dot-size-sm);
5595
+ /* Current: accent default circle with white number */
5596
+ .muka-progress-tracker__indicator--current {
5597
+ background-color: var(--alias-color-accent-default);
5598
+ color: var(--color-text-default-inverse);
5468
5599
  }
5469
5600
 
5470
- .muka-radio--lg .muka-radio__dot {
5471
- width: var(--radio-dot-size-lg);
5472
- height: var(--radio-dot-size-lg);
5601
+ /* Upcoming: sunken/gray circle with dark number */
5602
+ .muka-progress-tracker__indicator--upcoming {
5603
+ background-color: var(--color-surface-sunken);
5604
+ color: var(--color-text-default-default);
5473
5605
  }
5474
5606
 
5475
- /* Hover state - removed per design */
5607
+ /* ─── Step number text ──────────────────────────────────── */
5608
+ .muka-progress-tracker__number {
5609
+ font-family: var(--text-label-md-bold-fontFamily);
5610
+ font-weight: var(--text-label-md-bold-fontWeight);
5611
+ font-size: var(--text-label-md-bold-fontSize);
5612
+ line-height: var(--text-label-md-bold-lineHeight);
5613
+ text-align: center;
5614
+ user-select: none;
5615
+ }
5476
5616
 
5477
- /* Focus state */
5478
- .muka-radio__input:focus-visible + .muka-radio__indicator {
5479
- outline: 2px solid var(--color-border-focus);
5480
- outline-offset: 2px;
5617
+ /* ─── Checkmark icon ────────────────────────────────────── */
5618
+ .muka-progress-tracker__check-icon {
5619
+ width: 20px;
5620
+ height: 20px;
5481
5621
  }
5482
5622
 
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;
5623
+ /* Past checkmark uses inverse foreground, matching the active step number.
5624
+ Scoped under the indicator to override the Icon component's default color. */
5625
+ .muka-progress-tracker__indicator--past .muka-progress-tracker__check-icon {
5626
+ color: var(--color-text-default-inverse);
5489
5627
  }
5490
5628
 
5491
- .muka-radio__input:checked + .muka-radio__indicator .muka-radio__dot {
5492
- background-color: var(--radio-color-checked-dot);
5493
- transform: scale(1);
5629
+ /* ─── Step label ────────────────────────────────────────── */
5630
+ .muka-progress-tracker__label {
5631
+ font-family: var(--text-label-sm-regular-fontFamily);
5632
+ font-weight: var(--text-label-sm-regular-fontWeight);
5633
+ font-size: var(--text-label-sm-regular-fontSize);
5634
+ line-height: var(--text-label-sm-regular-lineHeight);
5635
+ color: var(--color-text-default-default);
5636
+ text-align: center;
5637
+ max-width: 120px;
5638
+ white-space: nowrap;
5639
+ overflow: hidden;
5640
+ text-overflow: ellipsis;
5494
5641
  }
5495
5642
 
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;
5643
+ /* Current step label is bold */
5644
+ .muka-progress-tracker__label--current {
5645
+ font-family: var(--text-label-sm-bold-fontFamily);
5646
+ font-weight: var(--text-label-sm-bold-fontWeight);
5501
5647
  }
5502
5648
 
5503
- .muka-radio__input:disabled:checked + .muka-radio__indicator .muka-radio__dot {
5504
- background-color: var(--radio-color-disabled-dot);
5649
+ /* ─── Connectors layer (behind indicators) ──────────────── */
5650
+ .muka-progress-tracker__connectors {
5651
+ display: flex;
5652
+ align-items: center;
5653
+ /* Horizontal padding = indicator radius (32/2 = 16px) so lines meet circle centers */
5654
+ padding-left: var(--spacing-4);
5655
+ padding-right: var(--spacing-4);
5656
+ position: relative;
5657
+ z-index: 1;
5505
5658
  }
5506
5659
 
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);
5660
+ /* ─── Individual connector line ─────────────────────────── */
5661
+ .muka-progress-tracker__connector {
5662
+ flex: 1 0 0;
5663
+ height: 4px;
5664
+ min-width: 1px;
5514
5665
  }
5515
5666
 
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);
5667
+ /* Past: solid dark line */
5668
+ .muka-progress-tracker__connector--past {
5669
+ background-color: var(--alias-color-accent-contrast);
5521
5670
  }
5522
5671
 
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);
5672
+ /* Current: gradient from past (dark) toward current step */
5673
+ .muka-progress-tracker__connector--current {
5674
+ background: linear-gradient(
5675
+ to right,
5676
+ var(--alias-color-accent-contrast) 0%,
5677
+ var(--alias-color-accent-default) 100%
5678
+ );
5528
5679
  }
5529
5680
 
5530
- .muka-radio--disabled .muka-radio__label {
5531
- color: var(--color-text-subtle-default);
5681
+ /* Current-right: gradient fading from current step into upcoming */
5682
+ .muka-progress-tracker__connector--current-right {
5683
+ background: linear-gradient(
5684
+ to right,
5685
+ var(--alias-color-accent-default) 0%,
5686
+ var(--alias-color-accent-default) 15%,
5687
+ var(--color-surface-sunken) 50%
5688
+ );
5532
5689
  }
5533
5690
 
5691
+ /* Upcoming: solid gray line */
5692
+ .muka-progress-tracker__connector--upcoming {
5693
+ background-color: var(--color-surface-sunken);
5694
+ }
5534
5695
 
5535
- /* PullToRefresh */
5536
- /* PullToRefresh Component Styles */
5537
5696
 
5538
- .muka-pull-to-refresh {
5539
- position: relative;
5697
+ /* ProgressAccordeon */
5698
+ /* ProgressAccordeon Component Styles — Using Muka Design Tokens */
5699
+
5700
+ /* ─── Root ──────────────────────────────────────────────── */
5701
+ .muka-progress-accordeon {
5702
+ container-type: inline-size;
5540
5703
  display: flex;
5541
5704
  flex-direction: column;
5705
+ align-items: stretch;
5542
5706
  width: 100%;
5543
- height: 100%;
5544
- overflow: hidden;
5707
+ /* Top padding provides the vertical rhythm between stacked steps */
5708
+ padding-top: var(--spacing-8);
5545
5709
  }
5546
5710
 
5547
- .muka-pull-to-refresh__indicator {
5548
- position: absolute;
5549
- top: 0;
5550
- left: 0;
5551
- right: 0;
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);
5715
+ }
5716
+
5717
+ .muka-progress-accordeon--upcoming,
5718
+ .muka-progress-accordeon--past.muka-progress-accordeon--collapsed {
5719
+ gap: var(--spacing-8);
5720
+ }
5721
+
5722
+ /* Past-expanded groups header + slot with a tighter internal gap */
5723
+ .muka-progress-accordeon__body {
5552
5724
  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;
5725
+ flex-direction: column;
5726
+ gap: var(--spacing-4);
5727
+ width: 100%;
5560
5728
  }
5561
5729
 
5562
- .muka-pull-to-refresh__chevron {
5563
- display: inline-flex;
5730
+ /* ─── Header ─────────────────────────────────────────────── */
5731
+ .muka-progress-accordeon__header {
5732
+ display: flex;
5733
+ flex-direction: column;
5734
+ gap: var(--spacing-3);
5735
+ width: 100%;
5736
+ }
5737
+
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;
5744
+ }
5745
+
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);
5752
+ }
5753
+
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);
5757
+ }
5758
+
5759
+ .muka-progress-accordeon__controls {
5760
+ display: flex;
5761
+ flex-shrink: 0;
5762
+ align-items: center;
5763
+ gap: var(--spacing-3);
5764
+ }
5765
+
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;
5564
5773
  align-items: center;
5565
5774
  justify-content: center;
5566
- transition: transform 0.16s ease;
5567
5775
  }
5568
5776
 
5569
- .muka-pull-to-refresh__scroller {
5570
- flex: 1 1 auto;
5571
- min-height: 0;
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 {
5572
5873
  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;
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
+ }
5579
5904
  }
5580
5905
 
5581
5906
 
@@ -6512,7 +6837,7 @@ body {
6512
6837
  position: relative;
6513
6838
 
6514
6839
  /* Interaction - only apply if interactive */
6515
- transition: background-color 0.2s ease;
6840
+ transition: background-color 0.2s ease, box-shadow 0.2s ease;
6516
6841
  }
6517
6842
 
6518
6843
  /* Interactive state */
@@ -6520,13 +6845,19 @@ body {
6520
6845
  cursor: pointer;
6521
6846
  }
6522
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
+ */
6523
6854
  .muka-listitem--interactive:hover:not(:disabled):not(.muka-listitem--disabled) {
6524
- background-color: var(--color-surface-hover);
6855
+ box-shadow: inset 0 0 0 9999px var(--color-surface-hover);
6525
6856
  }
6526
6857
 
6527
6858
  .muka-listitem--interactive:active:not(:disabled):not(.muka-listitem--disabled),
6528
6859
  .muka-listitem--interactive.muka-listitem--pressed:not(:disabled):not(.muka-listitem--disabled) {
6529
- background-color: var(--color-surface-pressed);
6860
+ box-shadow: inset 0 0 0 9999px var(--color-surface-pressed);
6530
6861
  }
6531
6862
 
6532
6863
  /* Focus styles for accessibility */
@@ -6552,7 +6883,7 @@ body {
6552
6883
  }
6553
6884
 
6554
6885
  .muka-listitem--selected:hover {
6555
- background-color: var(--color-surface-hover);
6886
+ box-shadow: inset 0 0 0 9999px var(--color-surface-hover);
6556
6887
  }
6557
6888
 
6558
6889
  /* No divider modifier */
@@ -6871,6 +7202,47 @@ li.muka-listitem {
6871
7202
  }
6872
7203
 
6873
7204
 
7205
+ /* Label */
7206
+ /* Label Component Styles - Using Muka Design Tokens */
7207
+
7208
+ .muka-label {
7209
+ display: inline-flex;
7210
+ align-items: center;
7211
+ color: var(--color-text-default-default);
7212
+ cursor: pointer;
7213
+ }
7214
+
7215
+ .muka-label--sm {
7216
+ font-family: var(--text-label-sm-semibold-fontFamily);
7217
+ font-weight: var(--text-label-sm-semibold-fontWeight);
7218
+ font-size: var(--text-label-sm-semibold-fontSize);
7219
+ line-height: var(--text-label-sm-semibold-lineHeight);
7220
+ }
7221
+
7222
+ .muka-label--md {
7223
+ font-family: var(--text-label-md-semibold-fontFamily);
7224
+ font-weight: var(--text-label-md-semibold-fontWeight);
7225
+ font-size: var(--text-label-md-semibold-fontSize);
7226
+ line-height: var(--text-label-md-semibold-lineHeight);
7227
+ }
7228
+
7229
+ .muka-label--lg {
7230
+ font-family: var(--text-label-lg-semibold-fontFamily);
7231
+ font-weight: var(--text-label-lg-semibold-fontWeight);
7232
+ font-size: var(--text-label-lg-semibold-fontSize);
7233
+ line-height: var(--text-label-lg-semibold-lineHeight);
7234
+ }
7235
+
7236
+ .muka-label--disabled {
7237
+ color: var(--color-text-subtle-default);
7238
+ cursor: not-allowed;
7239
+ }
7240
+
7241
+ .muka-label__required {
7242
+ color: var(--color-state-error-foreground);
7243
+ }
7244
+
7245
+
6874
7246
  /* Input */
6875
7247
  /* Input Component Styles - Using Muka Design Tokens */
6876
7248
 
@@ -7122,182 +7494,22 @@ li.muka-listitem {
7122
7494
 
7123
7495
  .muka-icon--sm {
7124
7496
  width: var(--icon-size-sm);
7125
- height: var(--icon-size-sm);
7126
- }
7127
-
7128
- .muka-icon--md {
7129
- width: var(--icon-size-default);
7130
- height: var(--icon-size-default);
7131
- }
7132
-
7133
- .muka-icon--lg {
7134
- width: var(--icon-size-lg);
7135
- height: var(--icon-size-lg);
7136
- }
7137
-
7138
- .muka-icon svg {
7139
- width: 100%;
7140
- height: 100%;
7141
- }
7142
-
7143
-
7144
- /* FormProgressBar */
7145
- /* FormProgressBar Component Styles — Using Muka Design Tokens */
7146
-
7147
- /* ─── Root ──────────────────────────────────────────────── */
7148
- .muka-progress-bar {
7149
- width: 100%;
7150
- padding-bottom: var(--spacing-7);
7151
- }
7152
-
7153
- /* ─── Track (layered container) ─────────────────────────── */
7154
- .muka-progress-bar__track {
7155
- position: relative;
7156
- /* Vertical padding = (indicator size - connector height) / 2 = (32 - 4) / 2 = 14px */
7157
- padding-top: 14px;
7158
- padding-bottom: 14px;
7159
- }
7160
-
7161
- /* ─── Steps layer (on top) ──────────────────────────────── */
7162
- .muka-progress-bar__steps {
7163
- position: absolute;
7164
- inset: 0;
7165
- display: flex;
7166
- align-items: flex-start;
7167
- justify-content: space-between;
7168
- z-index: 2;
7169
- }
7170
-
7171
- /* ─── Individual step ───────────────────────────────────── */
7172
- .muka-progress-bar__step {
7173
- display: flex;
7174
- flex-direction: column;
7175
- align-items: center;
7176
- gap: 7px;
7177
- position: relative;
7178
- }
7179
-
7180
- /* ─── Step indicator (circle) ───────────────────────────── */
7181
- .muka-progress-bar__indicator {
7182
- width: 32px;
7183
- height: 32px;
7184
- border-radius: var(--border-radius-full);
7185
- display: flex;
7186
- align-items: center;
7187
- justify-content: center;
7188
- flex-shrink: 0;
7189
- position: relative;
7190
- }
7191
-
7192
- /* Past: dark accent contrast circle with white checkmark */
7193
- .muka-progress-bar__indicator--past {
7194
- background-color: var(--alias-color-accent-contrast);
7195
- color: var(--color-text-default-inverse);
7196
- cursor: pointer;
7197
- }
7198
-
7199
- .muka-progress-bar__indicator--past:hover {
7200
- opacity: 0.85;
7201
- }
7202
-
7203
- .muka-progress-bar__indicator--past:focus-visible {
7204
- outline: 2px solid var(--color-border-focus);
7205
- outline-offset: 2px;
7206
- }
7207
-
7208
- /* Current: accent default circle with white number */
7209
- .muka-progress-bar__indicator--current {
7210
- background-color: var(--alias-color-accent-default);
7211
- color: var(--color-text-default-inverse);
7212
- }
7213
-
7214
- /* Upcoming: sunken/gray circle with dark number */
7215
- .muka-progress-bar__indicator--upcoming {
7216
- background-color: var(--color-surface-sunken);
7217
- color: var(--color-text-default-default);
7218
- }
7219
-
7220
- /* ─── Step number text ──────────────────────────────────── */
7221
- .muka-progress-bar__number {
7222
- font-family: var(--text-label-md-bold-fontFamily);
7223
- font-weight: var(--text-label-md-bold-fontWeight);
7224
- font-size: var(--text-label-md-bold-fontSize);
7225
- line-height: var(--text-label-md-bold-lineHeight);
7226
- text-align: center;
7227
- user-select: none;
7228
- }
7229
-
7230
- /* ─── Checkmark icon ────────────────────────────────────── */
7231
- .muka-progress-bar__check-icon {
7232
- width: 20px;
7233
- height: 20px;
7234
- }
7235
-
7236
- /* ─── Step label ────────────────────────────────────────── */
7237
- .muka-progress-bar__label {
7238
- font-family: var(--text-label-sm-regular-fontFamily);
7239
- font-weight: var(--text-label-sm-regular-fontWeight);
7240
- font-size: var(--text-label-sm-regular-fontSize);
7241
- line-height: var(--text-label-sm-regular-lineHeight);
7242
- color: var(--color-text-default-default);
7243
- text-align: center;
7244
- max-width: 120px;
7245
- white-space: nowrap;
7246
- overflow: hidden;
7247
- text-overflow: ellipsis;
7248
- }
7249
-
7250
- /* Current step label is bold */
7251
- .muka-progress-bar__label--current {
7252
- font-family: var(--text-label-sm-bold-fontFamily);
7253
- font-weight: var(--text-label-sm-bold-fontWeight);
7254
- }
7255
-
7256
- /* ─── Connectors layer (behind indicators) ──────────────── */
7257
- .muka-progress-bar__connectors {
7258
- display: flex;
7259
- align-items: center;
7260
- /* Horizontal padding = indicator radius (32/2 = 16px) so lines meet circle centers */
7261
- padding-left: var(--spacing-4);
7262
- padding-right: var(--spacing-4);
7263
- position: relative;
7264
- z-index: 1;
7265
- }
7266
-
7267
- /* ─── Individual connector line ─────────────────────────── */
7268
- .muka-progress-bar__connector {
7269
- flex: 1 0 0;
7270
- height: 4px;
7271
- min-width: 1px;
7272
- }
7273
-
7274
- /* Past: solid dark line */
7275
- .muka-progress-bar__connector--past {
7276
- background-color: var(--alias-color-accent-contrast);
7277
- }
7278
-
7279
- /* Current: gradient from past (dark) toward current step */
7280
- .muka-progress-bar__connector--current {
7281
- background: linear-gradient(
7282
- to right,
7283
- var(--alias-color-accent-contrast) 0%,
7284
- var(--alias-color-accent-default) 100%
7285
- );
7497
+ height: var(--icon-size-sm);
7286
7498
  }
7287
7499
 
7288
- /* Current-right: gradient fading from current step into upcoming */
7289
- .muka-progress-bar__connector--current-right {
7290
- background: linear-gradient(
7291
- to right,
7292
- var(--alias-color-accent-default) 0%,
7293
- var(--alias-color-accent-default) 15%,
7294
- var(--color-surface-sunken) 50%
7295
- );
7500
+ .muka-icon--md {
7501
+ width: var(--icon-size-default);
7502
+ height: var(--icon-size-default);
7296
7503
  }
7297
7504
 
7298
- /* Upcoming: solid gray line */
7299
- .muka-progress-bar__connector--upcoming {
7300
- background-color: var(--color-surface-sunken);
7505
+ .muka-icon--lg {
7506
+ width: var(--icon-size-lg);
7507
+ height: var(--icon-size-lg);
7508
+ }
7509
+
7510
+ .muka-icon svg {
7511
+ width: 100%;
7512
+ height: 100%;
7301
7513
  }
7302
7514
 
7303
7515
 
@@ -7563,47 +7775,6 @@ li.muka-listitem {
7563
7775
  }
7564
7776
 
7565
7777
 
7566
- /* Label */
7567
- /* Label Component Styles - Using Muka Design Tokens */
7568
-
7569
- .muka-label {
7570
- display: inline-flex;
7571
- align-items: center;
7572
- color: var(--color-text-default-default);
7573
- cursor: pointer;
7574
- }
7575
-
7576
- .muka-label--sm {
7577
- font-family: var(--text-label-sm-semibold-fontFamily);
7578
- font-weight: var(--text-label-sm-semibold-fontWeight);
7579
- font-size: var(--text-label-sm-semibold-fontSize);
7580
- line-height: var(--text-label-sm-semibold-lineHeight);
7581
- }
7582
-
7583
- .muka-label--md {
7584
- font-family: var(--text-label-md-semibold-fontFamily);
7585
- font-weight: var(--text-label-md-semibold-fontWeight);
7586
- font-size: var(--text-label-md-semibold-fontSize);
7587
- line-height: var(--text-label-md-semibold-lineHeight);
7588
- }
7589
-
7590
- .muka-label--lg {
7591
- font-family: var(--text-label-lg-semibold-fontFamily);
7592
- font-weight: var(--text-label-lg-semibold-fontWeight);
7593
- font-size: var(--text-label-lg-semibold-fontSize);
7594
- line-height: var(--text-label-lg-semibold-lineHeight);
7595
- }
7596
-
7597
- .muka-label--disabled {
7598
- color: var(--color-text-subtle-default);
7599
- cursor: not-allowed;
7600
- }
7601
-
7602
- .muka-label__required {
7603
- color: var(--color-state-error-foreground);
7604
- }
7605
-
7606
-
7607
7778
  /* FAB */
7608
7779
  /* FAB (Floating Action Button) Component Styles */
7609
7780
 
@@ -8991,6 +9162,10 @@ li.muka-listitem {
8991
9162
  min-content, collapsing the flexible (1fr) stack track to 0. */
8992
9163
  .muka-data-table--responsive {
8993
9164
  display: block;
9165
+ /* Collapsed cards always use md cell padding regardless of the table's `size`
9166
+ — sm is too tight and lg wastes horizontal room, forcing the name to wrap. */
9167
+ --dt-pad-x: var(--datatable-cell-padding-x-md);
9168
+ --dt-pad-y: var(--datatable-cell-padding-y-md);
8994
9169
  }
8995
9170
 
8996
9171
  .muka-data-table--responsive .muka-data-table__body {
@@ -9034,6 +9209,11 @@ li.muka-listitem {
9034
9209
  .muka-data-table--responsive .muka-data-table__td--m-secondary {
9035
9210
  display: block;
9036
9211
  grid-column: 2;
9212
+ /* Hug the widest secondary content (e.g. a status badge). The desktop column's
9213
+ min/max-width are inline styles, so `!important` is required to drop them and
9214
+ let the `auto` grid track shrink to the badge — freeing space for the name. */
9215
+ min-width: 0 !important;
9216
+ max-width: none !important;
9037
9217
  }
9038
9218
 
9039
9219
  .muka-data-table--responsive .muka-data-table__td--action {
@@ -9051,6 +9231,14 @@ li.muka-listitem {
9051
9231
  justify-content: flex-end;
9052
9232
  }
9053
9233
 
9234
+ /* Utility for cell content: hide a sub-element in the collapsed card. Use it to
9235
+ drop a redundant text label next to a compact visual (e.g. the "75%" beside a
9236
+ donut) so only the visual shows and the secondary column hugs to its width.
9237
+ `display: none` also collapses any surrounding flex `gap`, leaving no gutter. */
9238
+ .muka-data-table--responsive .muka-data-table__mobile-hidden {
9239
+ display: none;
9240
+ }
9241
+
9054
9242
  /* Stacked primary column: first field is the title, the rest are subtitle lines. */
9055
9243
  .muka-data-table__stack {
9056
9244
  display: flex;
@@ -12226,3 +12414,194 @@ li.muka-listitem {
12226
12414
  border-bottom: none;
12227
12415
  }
12228
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
+