@revikornmann/muka-ui 0.17.0 → 0.19.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 (182) hide show
  1. package/README.md +81 -60
  2. package/cli/bin/muka-ui.js +12 -5
  3. package/cli/commands/brand.js +33 -14
  4. package/cli/commands/init.js +21 -17
  5. package/cli/commands/install-skill.js +84 -26
  6. package/cli/templates/AGENTS.md +128 -0
  7. package/cli/templates/CLAUDE.md +8 -88
  8. package/cli/templates/muka-ui-guidelines.md +50 -14
  9. package/dist/cjs/components/ActionSheet/ActionSheet.js +1 -1
  10. package/dist/cjs/components/Breadcrumb/Breadcrumb.css +11 -3
  11. package/dist/cjs/components/Breadcrumb/Breadcrumb.js +19 -1
  12. package/dist/cjs/components/Breadcrumb/Breadcrumb.js.map +1 -1
  13. package/dist/cjs/components/Combobox/Combobox.css +116 -132
  14. package/dist/cjs/components/Combobox/Combobox.js +175 -52
  15. package/dist/cjs/components/Combobox/Combobox.js.map +1 -1
  16. package/dist/cjs/components/Combobox/index.js.map +1 -1
  17. package/dist/cjs/components/ContextSelect/ContextSelect.css +117 -0
  18. package/dist/cjs/components/ContextSelect/ContextSelect.js +49 -0
  19. package/dist/cjs/components/ContextSelect/ContextSelect.js.map +1 -0
  20. package/dist/cjs/components/ContextSelect/index.js +11 -0
  21. package/dist/cjs/components/ContextSelect/index.js.map +1 -0
  22. package/dist/cjs/components/DropdownSelect/DropdownSelect.css +225 -0
  23. package/dist/cjs/components/DropdownSelect/DropdownSelect.js +106 -0
  24. package/dist/cjs/components/DropdownSelect/DropdownSelect.js.map +1 -0
  25. package/dist/cjs/components/DropdownSelect/index.js +6 -0
  26. package/dist/cjs/components/DropdownSelect/index.js.map +1 -0
  27. package/dist/cjs/components/Icon/custom/ArrowDropUpDownIcon.js +11 -0
  28. package/dist/cjs/components/Icon/custom/ArrowDropUpDownIcon.js.map +1 -0
  29. package/dist/cjs/components/Icon/custom/ArrowReturnIcon.js +11 -0
  30. package/dist/cjs/components/Icon/custom/ArrowReturnIcon.js.map +1 -0
  31. package/dist/cjs/components/Icon/iconRegistry.js +11 -0
  32. package/dist/cjs/components/Icon/iconRegistry.js.map +1 -1
  33. package/dist/cjs/components/Input/Input.css +45 -8
  34. package/dist/cjs/components/Input/Input.js +14 -3
  35. package/dist/cjs/components/Input/Input.js.map +1 -1
  36. package/dist/cjs/components/Menu/Menu.css +213 -17
  37. package/dist/cjs/components/Menu/Menu.js +429 -39
  38. package/dist/cjs/components/Menu/Menu.js.map +1 -1
  39. package/dist/cjs/components/Menu/index.js +5 -1
  40. package/dist/cjs/components/Menu/index.js.map +1 -1
  41. package/dist/cjs/components/ProgressTracker/ProgressTracker.css +273 -22
  42. package/dist/cjs/components/ProgressTracker/ProgressTracker.js +109 -9
  43. package/dist/cjs/components/ProgressTracker/ProgressTracker.js.map +1 -1
  44. package/dist/cjs/components/Scrollbar/Scrollbar.css +124 -0
  45. package/dist/cjs/components/Scrollbar/Scrollbar.js +118 -0
  46. package/dist/cjs/components/Scrollbar/Scrollbar.js.map +1 -0
  47. package/dist/cjs/components/Scrollbar/index.js +11 -0
  48. package/dist/cjs/components/Scrollbar/index.js.map +1 -0
  49. package/dist/cjs/components/index.js +13 -16
  50. package/dist/cjs/components/index.js.map +1 -1
  51. package/dist/esm/components/ActionSheet/ActionSheet.js +1 -1
  52. package/dist/esm/components/Breadcrumb/Breadcrumb.css +11 -3
  53. package/dist/esm/components/Breadcrumb/Breadcrumb.js +19 -1
  54. package/dist/esm/components/Breadcrumb/Breadcrumb.js.map +1 -1
  55. package/dist/esm/components/Combobox/Combobox.css +116 -132
  56. package/dist/esm/components/Combobox/Combobox.js +177 -54
  57. package/dist/esm/components/Combobox/Combobox.js.map +1 -1
  58. package/dist/esm/components/Combobox/index.js +1 -1
  59. package/dist/esm/components/Combobox/index.js.map +1 -1
  60. package/dist/esm/components/ContextSelect/ContextSelect.css +117 -0
  61. package/dist/esm/components/ContextSelect/ContextSelect.js +45 -0
  62. package/dist/esm/components/ContextSelect/ContextSelect.js.map +1 -0
  63. package/dist/esm/components/ContextSelect/index.js +3 -0
  64. package/dist/esm/components/ContextSelect/index.js.map +1 -0
  65. package/dist/esm/components/DropdownSelect/DropdownSelect.css +225 -0
  66. package/dist/esm/components/DropdownSelect/DropdownSelect.js +102 -0
  67. package/dist/esm/components/DropdownSelect/DropdownSelect.js.map +1 -0
  68. package/dist/esm/components/DropdownSelect/index.js +2 -0
  69. package/dist/esm/components/DropdownSelect/index.js.map +1 -0
  70. package/dist/esm/components/Icon/custom/ArrowDropUpDownIcon.js +7 -0
  71. package/dist/esm/components/Icon/custom/ArrowDropUpDownIcon.js.map +1 -0
  72. package/dist/esm/components/Icon/custom/ArrowReturnIcon.js +7 -0
  73. package/dist/esm/components/Icon/custom/ArrowReturnIcon.js.map +1 -0
  74. package/dist/esm/components/Icon/iconRegistry.js +11 -0
  75. package/dist/esm/components/Icon/iconRegistry.js.map +1 -1
  76. package/dist/esm/components/Input/Input.css +45 -8
  77. package/dist/esm/components/Input/Input.js +14 -3
  78. package/dist/esm/components/Input/Input.js.map +1 -1
  79. package/dist/esm/components/Menu/Menu.css +213 -17
  80. package/dist/esm/components/Menu/Menu.js +428 -40
  81. package/dist/esm/components/Menu/Menu.js.map +1 -1
  82. package/dist/esm/components/Menu/index.js +1 -1
  83. package/dist/esm/components/Menu/index.js.map +1 -1
  84. package/dist/esm/components/ProgressTracker/ProgressTracker.css +273 -22
  85. package/dist/esm/components/ProgressTracker/ProgressTracker.js +110 -10
  86. package/dist/esm/components/ProgressTracker/ProgressTracker.js.map +1 -1
  87. package/dist/esm/components/Scrollbar/Scrollbar.css +124 -0
  88. package/dist/esm/components/Scrollbar/Scrollbar.js +114 -0
  89. package/dist/esm/components/Scrollbar/Scrollbar.js.map +1 -0
  90. package/dist/esm/components/Scrollbar/index.js +3 -0
  91. package/dist/esm/components/Scrollbar/index.js.map +1 -0
  92. package/dist/esm/components/index.js +4 -2
  93. package/dist/esm/components/index.js.map +1 -1
  94. package/dist/styles/components/Breadcrumb.css +11 -3
  95. package/dist/styles/components/Combobox.css +116 -132
  96. package/dist/styles/components/ContextSelect.css +117 -0
  97. package/dist/styles/components/DropdownSelect.css +225 -0
  98. package/dist/styles/components/Input.css +45 -8
  99. package/dist/styles/components/Menu.css +213 -17
  100. package/dist/styles/components/ProgressTracker.css +273 -22
  101. package/dist/styles/components/Scrollbar.css +124 -0
  102. package/dist/styles/components/Typography.css +89 -0
  103. package/dist/styles/index.css +1526 -480
  104. package/dist/styles/muka-dark.css +1526 -480
  105. package/dist/styles/muka-light.css +1526 -480
  106. package/dist/styles/tokens-bouwplan-dark.css +9 -6
  107. package/dist/styles/tokens-bouwplan-light.css +9 -6
  108. package/dist/styles/tokens-fscl-dark.css +29 -26
  109. package/dist/styles/tokens-fscl-light.css +29 -26
  110. package/dist/styles/tokens-grip-dark.css +8 -5
  111. package/dist/styles/tokens-grip-light.css +8 -5
  112. package/dist/styles/tokens-muka-dark.css +8 -5
  113. package/dist/styles/tokens-muka-light.css +8 -5
  114. package/dist/styles/tokens-wireframe-dark.css +53 -50
  115. package/dist/styles/tokens-wireframe-light.css +53 -50
  116. package/dist/styles/wireframe-dark.css +1571 -525
  117. package/dist/styles/wireframe-light.css +1571 -525
  118. package/dist/types/components/ActionSheet/ActionSheet.d.ts +1 -1
  119. package/dist/types/components/Breadcrumb/Breadcrumb.d.ts +27 -3
  120. package/dist/types/components/Breadcrumb/Breadcrumb.d.ts.map +1 -1
  121. package/dist/types/components/Combobox/Combobox.d.ts +38 -38
  122. package/dist/types/components/Combobox/Combobox.d.ts.map +1 -1
  123. package/dist/types/components/Combobox/index.d.ts +1 -1
  124. package/dist/types/components/Combobox/index.d.ts.map +1 -1
  125. package/dist/types/components/ContextSelect/ContextSelect.d.ts +62 -0
  126. package/dist/types/components/ContextSelect/ContextSelect.d.ts.map +1 -0
  127. package/dist/types/components/ContextSelect/index.d.ts +3 -0
  128. package/dist/types/components/ContextSelect/index.d.ts.map +1 -0
  129. package/dist/types/components/DataTable/DataTable.d.ts +1 -1
  130. package/dist/types/components/DropdownSelect/DropdownSelect.d.ts +71 -0
  131. package/dist/types/components/DropdownSelect/DropdownSelect.d.ts.map +1 -0
  132. package/dist/types/components/DropdownSelect/index.d.ts +2 -0
  133. package/dist/types/components/DropdownSelect/index.d.ts.map +1 -0
  134. package/dist/types/components/Icon/custom/ArrowDropUpDownIcon.d.ts +9 -0
  135. package/dist/types/components/Icon/custom/ArrowDropUpDownIcon.d.ts.map +1 -0
  136. package/dist/types/components/Icon/custom/ArrowReturnIcon.d.ts +9 -0
  137. package/dist/types/components/Icon/custom/ArrowReturnIcon.d.ts.map +1 -0
  138. package/dist/types/components/Icon/iconRegistry.d.ts.map +1 -1
  139. package/dist/types/components/Input/Input.d.ts +5 -0
  140. package/dist/types/components/Input/Input.d.ts.map +1 -1
  141. package/dist/types/components/Menu/Menu.d.ts +99 -29
  142. package/dist/types/components/Menu/Menu.d.ts.map +1 -1
  143. package/dist/types/components/Menu/index.d.ts +2 -2
  144. package/dist/types/components/Menu/index.d.ts.map +1 -1
  145. package/dist/types/components/ProgressTracker/ProgressTracker.d.ts +29 -8
  146. package/dist/types/components/ProgressTracker/ProgressTracker.d.ts.map +1 -1
  147. package/dist/types/components/Scrollbar/Scrollbar.d.ts +19 -0
  148. package/dist/types/components/Scrollbar/Scrollbar.d.ts.map +1 -0
  149. package/dist/types/components/Scrollbar/index.d.ts +3 -0
  150. package/dist/types/components/Scrollbar/index.d.ts.map +1 -0
  151. package/dist/types/components/index.d.ts +5 -4
  152. package/dist/types/components/index.d.ts.map +1 -1
  153. package/docs/consumers/README.md +116 -37
  154. package/docs/consumers/brand.md +261 -0
  155. package/docs/consumers/figma-console-mcp.md +116 -0
  156. package/docs/consumers/setup-instructions.md +98 -12
  157. package/docs/consumers/skills.md +79 -0
  158. package/package.json +4 -6
  159. package/scripts/postinstall-nudge.js +8 -4
  160. package/skills/add-brand/SKILL.md +204 -0
  161. package/skills/add-brand/reference.md +160 -0
  162. package/skills/figma-to-code/SKILL.md +127 -0
  163. package/skills/pull-from-figma/SKILL.md +123 -0
  164. package/skills/push-to-figma/SKILL.md +172 -0
  165. package/skills/setup-muka/SKILL.md +73 -13
  166. package/tokens/README.md +40 -18
  167. package/tokens/t2-alias/brand/bouwplan/fonts.json +1 -1
  168. package/tokens/t2-alias/brand/fscl/fonts.json +3 -3
  169. package/tokens/t2-alias/brand/wireframe/fonts.json +2 -2
  170. package/tokens/t4-components/menu.json +20 -5
  171. package/dist/cjs/components/ContextMenu/ContextMenu.js +0 -186
  172. package/dist/cjs/components/ContextMenu/ContextMenu.js.map +0 -1
  173. package/dist/cjs/components/ContextMenu/index.js +0 -17
  174. package/dist/cjs/components/ContextMenu/index.js.map +0 -1
  175. package/dist/esm/components/ContextMenu/ContextMenu.js +0 -145
  176. package/dist/esm/components/ContextMenu/ContextMenu.js.map +0 -1
  177. package/dist/esm/components/ContextMenu/index.js +0 -2
  178. package/dist/esm/components/ContextMenu/index.js.map +0 -1
  179. package/dist/types/components/ContextMenu/ContextMenu.d.ts +0 -188
  180. package/dist/types/components/ContextMenu/ContextMenu.d.ts.map +0 -1
  181. package/dist/types/components/ContextMenu/index.d.ts +0 -3
  182. package/dist/types/components/ContextMenu/index.d.ts.map +0 -1
@@ -1922,22 +1922,24 @@ body {
1922
1922
  --dialog-drag-handle-radius: 999rem;
1923
1923
  --dialog-padding-x: 1rem;
1924
1924
  --menu-content-color-background: #fdfcfd;
1925
- --menu-content-color-border: #f2eff3;
1925
+ --menu-content-color-border: #d0cdd7;
1926
1926
  --menu-content-border-radius: 0.75rem;
1927
1927
  --menu-content-border-width: 0.0625rem;
1928
1928
  --menu-content-shadow: 0 0 1px 0 rgba(0, 0, 0, 0.090), 0 8px 16px 0 rgba(0, 0, 0, 0.090);
1929
1929
  --menu-content-padding: 0.25rem;
1930
- --menu-content-min-width: 12rem;
1930
+ --menu-content-min-width: 280px;
1931
1931
  --menu-content-max-height: 20rem;
1932
+ --menu-content-scroll-height: 20.625rem;
1932
1933
  --menu-item-color-default-background: transparent;
1933
1934
  --menu-item-color-default-foreground: #211f26;
1934
1935
  --menu-item-color-default-icon: #8e8c99;
1935
- --menu-item-color-hover-background: rgba(43, 0, 85, 0.024);
1936
+ --menu-item-color-hover-background: #f2eff3;
1936
1937
  --menu-item-color-hover-foreground: #211f26;
1937
1938
  --menu-item-color-hover-icon: #211f26;
1938
- --menu-item-color-focus-background: #8da4ef;
1939
+ --menu-item-color-focus-background: #f2eff3;
1939
1940
  --menu-item-color-focus-foreground: #211f26;
1940
1941
  --menu-item-color-focus-icon: #211f26;
1942
+ --menu-item-color-selected-background: #eae7ec;
1941
1943
  --menu-item-color-disabled-background: transparent;
1942
1944
  --menu-item-color-disabled-foreground: #d0cdd7;
1943
1945
  --menu-item-color-disabled-icon: #d0cdd7;
@@ -1948,7 +1950,8 @@ body {
1948
1950
  --menu-item-color-destructive-hover-icon: #cd2b31;
1949
1951
  --menu-item-border-radius: 0.1875rem;
1950
1952
  --menu-item-padding-x: 0.75rem;
1951
- --menu-item-padding-y: 0.5rem;
1953
+ --menu-item-padding-right: 2.25rem;
1954
+ --menu-item-padding-y: 0.75rem;
1952
1955
  --menu-item-gap: 0.5rem;
1953
1956
  --menu-item-height: 2.5rem;
1954
1957
  --menu-separator-color: #f2eff3;
@@ -2559,6 +2562,98 @@ body {
2559
2562
  }
2560
2563
 
2561
2564
 
2565
+ /* Typography */
2566
+ .muka-typography-catalog {
2567
+ display: flex;
2568
+ flex-direction: column;
2569
+ gap: 2.5rem;
2570
+ max-width: 52rem;
2571
+ color: var(--color-text-default-default);
2572
+ }
2573
+
2574
+ .muka-typography-catalog__intro {
2575
+ display: flex;
2576
+ flex-direction: column;
2577
+ gap: 0.75rem;
2578
+ }
2579
+
2580
+ .muka-typography-catalog__heading {
2581
+ margin: 0;
2582
+ font-family: var(--text-heading-md-fontFamily);
2583
+ font-weight: var(--text-heading-md-fontWeight);
2584
+ font-size: var(--text-heading-md-fontSize);
2585
+ line-height: var(--text-heading-md-lineHeight);
2586
+ }
2587
+
2588
+ .muka-typography-catalog__lede {
2589
+ margin: 0;
2590
+ font-family: var(--text-body-base-regular-fontFamily);
2591
+ font-weight: var(--text-body-base-regular-fontWeight);
2592
+ font-size: var(--text-body-base-regular-fontSize);
2593
+ line-height: var(--text-body-base-regular-lineHeight);
2594
+ color: var(--color-text-subtle-default);
2595
+ }
2596
+
2597
+ .muka-typography-catalog__lede code {
2598
+ font-family: var(--alias-font-mono-family, ui-monospace, monospace);
2599
+ font-size: 0.875em;
2600
+ }
2601
+
2602
+ .muka-typography-section {
2603
+ display: flex;
2604
+ flex-direction: column;
2605
+ gap: 1rem;
2606
+ }
2607
+
2608
+ .muka-typography-section__header {
2609
+ display: flex;
2610
+ flex-direction: column;
2611
+ gap: 0.35rem;
2612
+ padding-bottom: 0.75rem;
2613
+ border-bottom: 1px solid var(--color-border-default);
2614
+ }
2615
+
2616
+ .muka-typography-section__title {
2617
+ margin: 0;
2618
+ font-family: var(--text-heading-sm-fontFamily);
2619
+ font-weight: var(--text-heading-sm-fontWeight);
2620
+ font-size: var(--text-heading-sm-fontSize);
2621
+ line-height: var(--text-heading-sm-lineHeight);
2622
+ }
2623
+
2624
+ .muka-typography-section__description {
2625
+ margin: 0;
2626
+ font-family: var(--text-body-sm-regular-fontFamily);
2627
+ font-weight: var(--text-body-sm-regular-fontWeight);
2628
+ font-size: var(--text-body-sm-regular-fontSize);
2629
+ line-height: var(--text-body-sm-regular-lineHeight);
2630
+ color: var(--color-text-subtle-default);
2631
+ }
2632
+
2633
+ .muka-typography-section__list {
2634
+ display: flex;
2635
+ flex-direction: column;
2636
+ gap: 1rem;
2637
+ }
2638
+
2639
+ .muka-typography-specimen {
2640
+ display: flex;
2641
+ flex-direction: column;
2642
+ gap: 0.35rem;
2643
+ }
2644
+
2645
+ .muka-typography-specimen__token {
2646
+ font-family: var(--alias-font-mono-family, ui-monospace, monospace);
2647
+ font-size: 0.75rem;
2648
+ line-height: 1;
2649
+ color: var(--color-text-subtle-default);
2650
+ }
2651
+
2652
+ .muka-typography-specimen__sample {
2653
+ margin: 0;
2654
+ }
2655
+
2656
+
2562
2657
  /* TypingIndicator */
2563
2658
  /* TypingIndicator Component Styles */
2564
2659
 
@@ -4578,84 +4673,6 @@ body {
4578
4673
  }
4579
4674
 
4580
4675
 
4581
- /* Spinner */
4582
- /* Spinner Component Styles */
4583
-
4584
- .muka-spinner {
4585
- display: inline-flex;
4586
- align-items: center;
4587
- justify-content: center;
4588
- color: var(--color-text-default-default);
4589
- line-height: 0;
4590
- }
4591
-
4592
- .muka-spinner--subtle {
4593
- color: var(--color-text-subtle-default);
4594
- }
4595
-
4596
- .muka-spinner--inverse {
4597
- color: var(--color-text-inverse-default);
4598
- }
4599
-
4600
- .muka-spinner__circle {
4601
- display: inline-block;
4602
- border-radius: 50%;
4603
- border-style: solid;
4604
- border-color: currentColor;
4605
- border-right-color: transparent;
4606
- animation: muka-spinner-rotate 0.7s linear infinite;
4607
- box-sizing: border-box;
4608
- }
4609
-
4610
- /* ─── Sizes ───────────────────────────────────────────── */
4611
-
4612
- .muka-spinner--sm .muka-spinner__circle {
4613
- width: 16px;
4614
- height: 16px;
4615
- border-width: 2px;
4616
- }
4617
-
4618
- .muka-spinner--md .muka-spinner__circle {
4619
- width: 20px;
4620
- height: 20px;
4621
- border-width: 2px;
4622
- }
4623
-
4624
- .muka-spinner--lg .muka-spinner__circle {
4625
- width: 24px;
4626
- height: 24px;
4627
- border-width: 3px;
4628
- }
4629
-
4630
- /* ─── Visually-hidden label ───────────────────────────── */
4631
-
4632
- .muka-spinner__sr-label {
4633
- position: absolute;
4634
- width: 1px;
4635
- height: 1px;
4636
- padding: 0;
4637
- margin: -1px;
4638
- overflow: hidden;
4639
- clip: rect(0, 0, 0, 0);
4640
- white-space: nowrap;
4641
- border: 0;
4642
- }
4643
-
4644
- /* ─── Reduced motion ──────────────────────────────────── */
4645
-
4646
- @keyframes muka-spinner-rotate {
4647
- to {
4648
- transform: rotate(360deg);
4649
- }
4650
- }
4651
-
4652
- @media (prefers-reduced-motion: reduce) {
4653
- .muka-spinner__circle {
4654
- animation-duration: 2.5s;
4655
- }
4656
- }
4657
-
4658
-
4659
4676
  /* SpecList */
4660
4677
  /* SpecList Component Styles */
4661
4678
 
@@ -4741,49 +4758,58 @@ body {
4741
4758
  }
4742
4759
 
4743
4760
 
4744
- /* SmsOtpField */
4745
- /* SmsOtpField Component Styles - Using Muka Design Tokens */
4761
+ /* Spinner */
4762
+ /* Spinner Component Styles */
4746
4763
 
4747
- /* Wrapper */
4748
- .muka-sms-otp-field {
4764
+ .muka-spinner {
4749
4765
  display: inline-flex;
4750
- flex-direction: column;
4751
- gap: var(--spacing-2);
4766
+ align-items: center;
4767
+ justify-content: center;
4768
+ color: var(--color-text-default-default);
4769
+ line-height: 0;
4752
4770
  }
4753
4771
 
4754
- /* Label */
4755
- .muka-sms-otp-field__label {
4756
- color: var(--color-text-default-default);
4757
- cursor: pointer;
4772
+ .muka-spinner--subtle {
4773
+ color: var(--color-text-subtle-default);
4758
4774
  }
4759
4775
 
4760
- .muka-sms-otp-field__label--sm {
4761
- font-family: var(--text-label-sm-semibold-fontFamily);
4762
- font-weight: var(--text-label-sm-semibold-fontWeight);
4763
- font-size: var(--text-label-sm-semibold-fontSize);
4764
- line-height: var(--text-label-sm-semibold-lineHeight);
4776
+ .muka-spinner--inverse {
4777
+ color: var(--color-text-inverse-default);
4765
4778
  }
4766
4779
 
4767
- .muka-sms-otp-field__label--md {
4768
- font-family: var(--text-label-md-semibold-fontFamily);
4769
- font-weight: var(--text-label-md-semibold-fontWeight);
4770
- font-size: var(--text-label-md-semibold-fontSize);
4771
- line-height: var(--text-label-md-semibold-lineHeight);
4780
+ .muka-spinner__circle {
4781
+ display: inline-block;
4782
+ border-radius: 50%;
4783
+ border-style: solid;
4784
+ border-color: currentColor;
4785
+ border-right-color: transparent;
4786
+ animation: muka-spinner-rotate 0.7s linear infinite;
4787
+ box-sizing: border-box;
4772
4788
  }
4773
4789
 
4774
- .muka-sms-otp-field__label--lg {
4775
- font-family: var(--text-label-lg-semibold-fontFamily);
4776
- font-weight: var(--text-label-lg-semibold-fontWeight);
4777
- font-size: var(--text-label-lg-semibold-fontSize);
4778
- line-height: var(--text-label-lg-semibold-lineHeight);
4790
+ /* ─── Sizes ───────────────────────────────────────────── */
4791
+
4792
+ .muka-spinner--sm .muka-spinner__circle {
4793
+ width: 16px;
4794
+ height: 16px;
4795
+ border-width: 2px;
4779
4796
  }
4780
4797
 
4781
- .muka-sms-otp-field__required {
4782
- color: var(--color-state-error-foreground);
4798
+ .muka-spinner--md .muka-spinner__circle {
4799
+ width: 20px;
4800
+ height: 20px;
4801
+ border-width: 2px;
4783
4802
  }
4784
4803
 
4785
- /* Hidden input for browser autofill */
4786
- .muka-sms-otp-field__hidden-input {
4804
+ .muka-spinner--lg .muka-spinner__circle {
4805
+ width: 24px;
4806
+ height: 24px;
4807
+ border-width: 3px;
4808
+ }
4809
+
4810
+ /* ─── Visually-hidden label ───────────────────────────── */
4811
+
4812
+ .muka-spinner__sr-label {
4787
4813
  position: absolute;
4788
4814
  width: 1px;
4789
4815
  height: 1px;
@@ -4793,143 +4819,20 @@ body {
4793
4819
  clip: rect(0, 0, 0, 0);
4794
4820
  white-space: nowrap;
4795
4821
  border: 0;
4796
- opacity: 0;
4797
- pointer-events: none;
4798
4822
  }
4799
4823
 
4800
- /* Digits container */
4801
- .muka-sms-otp-field__digits {
4802
- display: flex;
4803
- align-items: center;
4804
- gap: var(--spacing-2);
4805
- }
4824
+ /* ─── Reduced motion ──────────────────────────────────── */
4806
4825
 
4807
- /* Separator */
4808
- .muka-sms-otp-field__separator {
4809
- display: inline-flex;
4810
- align-items: center;
4811
- justify-content: center;
4812
- color: var(--color-text-subtle-default);
4813
- font-size: 1.25rem;
4814
- padding: 0 var(--spacing-1);
4815
- user-select: none;
4826
+ @keyframes muka-spinner-rotate {
4827
+ to {
4828
+ transform: rotate(360deg);
4829
+ }
4816
4830
  }
4817
4831
 
4818
- /* Individual digit box */
4819
- .muka-sms-otp-field__digit {
4820
- display: flex;
4821
- align-items: center;
4822
- justify-content: center;
4823
- text-align: center;
4824
- background-color: var(--input-field-color-default-background);
4825
- border: var(--border-width-regular) solid var(--input-field-color-default-border);
4826
- color: var(--input-field-color-default-foreground);
4827
- transition: border-color 0.2s ease, background-color 0.2s ease;
4828
- box-sizing: border-box;
4829
- caret-color: var(--input-field-color-focus-border);
4830
- -moz-appearance: textfield;
4831
- appearance: textfield;
4832
- }
4833
-
4834
- /* Remove spinner buttons */
4835
- .muka-sms-otp-field__digit::-webkit-inner-spin-button,
4836
- .muka-sms-otp-field__digit::-webkit-outer-spin-button {
4837
- -webkit-appearance: none;
4838
- margin: 0;
4839
- }
4840
-
4841
- /* Size variants */
4842
- .muka-sms-otp-field__digit--sm {
4843
- width: 36px;
4844
- height: var(--input-field-height-sm);
4845
- border-radius: var(--input-field-radius-sm);
4846
- font-family: var(--text-input-sm-fontFamily);
4847
- font-weight: var(--text-input-sm-fontWeight);
4848
- font-size: var(--text-input-sm-fontSize);
4849
- line-height: var(--text-input-sm-lineHeight);
4850
- }
4851
-
4852
- .muka-sms-otp-field__digit--md {
4853
- width: 44px;
4854
- height: var(--input-field-height-default);
4855
- border-radius: var(--input-field-radius-md);
4856
- font-family: var(--text-input-md-fontFamily);
4857
- font-weight: var(--text-input-md-fontWeight);
4858
- font-size: var(--text-input-md-fontSize);
4859
- line-height: var(--text-input-md-lineHeight);
4860
- }
4861
-
4862
- .muka-sms-otp-field__digit--lg {
4863
- width: 52px;
4864
- height: var(--input-field-height-lg);
4865
- border-radius: var(--input-field-radius-lg);
4866
- font-family: var(--text-input-lg-fontFamily);
4867
- font-weight: var(--text-input-lg-fontWeight);
4868
- font-size: var(--text-input-lg-fontSize);
4869
- line-height: var(--text-input-lg-lineHeight);
4870
- }
4871
-
4872
- /* Inset shadow (matches Input component) */
4873
- .muka-sms-otp-field__digit::after {
4874
- content: '';
4875
- position: absolute;
4876
- inset: 0;
4877
- border-radius: inherit;
4878
- box-shadow: inset 0 1px 2px 0 rgba(26, 26, 26, 0.08);
4879
- pointer-events: none;
4880
- }
4881
-
4882
- /* Focus state */
4883
- .muka-sms-otp-field__digit--focused:not(.muka-sms-otp-field__digit--disabled) {
4884
- border-width: var(--border-width-bold);
4885
- border-color: var(--input-field-color-focus-border);
4886
- background-color: var(--input-field-color-focus-background);
4887
- outline: none;
4888
- }
4889
-
4890
- /* Also handle native :focus for keyboard navigation */
4891
- .muka-sms-otp-field__digit:focus {
4892
- outline: none;
4893
- }
4894
-
4895
- /* Error state */
4896
- .muka-sms-otp-field__digit--error:not(.muka-sms-otp-field__digit--disabled) {
4897
- border-width: var(--border-width-bold);
4898
- border-color: var(--input-field-color-error-border);
4899
- background-color: var(--input-field-color-error-background);
4900
- }
4901
-
4902
- /* Disabled state */
4903
- .muka-sms-otp-field__digit--disabled {
4904
- background-color: var(--input-field-color-disabled-background);
4905
- border-color: var(--input-field-color-disabled-border);
4906
- color: var(--input-field-color-disabled-foreground);
4907
- cursor: not-allowed;
4908
- }
4909
-
4910
- /* Filled state — slightly bolder text */
4911
- .muka-sms-otp-field__digit--filled {
4912
- color: var(--input-field-color-default-foreground);
4913
- }
4914
-
4915
- /* Helper text */
4916
- .muka-sms-otp-field__helper {
4917
- font-family: var(--text-label-sm-regular-fontFamily);
4918
- font-weight: var(--text-label-sm-regular-fontWeight);
4919
- font-size: var(--text-label-sm-regular-fontSize);
4920
- line-height: var(--text-label-sm-regular-lineHeight);
4921
- color: var(--color-text-subtle-default);
4922
- margin: 0;
4923
- }
4924
-
4925
- /* Error message */
4926
- .muka-sms-otp-field__error {
4927
- font-family: var(--text-label-sm-regular-fontFamily);
4928
- font-weight: var(--text-label-sm-regular-fontWeight);
4929
- font-size: var(--text-label-sm-regular-fontSize);
4930
- line-height: var(--text-label-sm-regular-lineHeight);
4931
- color: var(--color-state-error-foreground);
4932
- margin: 0;
4832
+ @media (prefers-reduced-motion: reduce) {
4833
+ .muka-spinner__circle {
4834
+ animation-duration: 2.5s;
4835
+ }
4933
4836
  }
4934
4837
 
4935
4838
 
@@ -5662,6 +5565,133 @@ body {
5662
5565
  }
5663
5566
 
5664
5567
 
5568
+ /* Scrollbar */
5569
+ /* Scrollbar — Figma menu scrollbar (32px rail, chevrons, grip thumb) */
5570
+
5571
+ .muka-scrollbar {
5572
+ display: flex;
5573
+ flex-shrink: 0;
5574
+ border-left: var(--border-width-regular) solid var(--color-border-default);
5575
+ background-color: var(--color-surface-level3);
5576
+ user-select: none;
5577
+ }
5578
+
5579
+ .muka-scrollbar--vertical {
5580
+ flex-direction: column;
5581
+ width: var(--size-2xl, 32px);
5582
+ align-self: stretch;
5583
+ }
5584
+
5585
+ .muka-scrollbar--horizontal {
5586
+ flex-direction: row;
5587
+ height: var(--size-2xl, 32px);
5588
+ width: 100%;
5589
+ border-left: none;
5590
+ border-top: var(--border-width-regular) solid var(--color-border-default);
5591
+ }
5592
+
5593
+ .muka-scrollbar__button {
5594
+ display: flex;
5595
+ align-items: center;
5596
+ justify-content: center;
5597
+ flex-shrink: 0;
5598
+ width: 100%;
5599
+ height: var(--size-2xl, 32px);
5600
+ padding: 0;
5601
+ border: none;
5602
+ background-color: var(--button-color-tertiary-background-default, var(--color-surface-level3));
5603
+ color: var(--color-text-default-default);
5604
+ cursor: pointer;
5605
+ }
5606
+
5607
+ .muka-scrollbar--horizontal .muka-scrollbar__button {
5608
+ width: var(--size-2xl, 32px);
5609
+ height: 100%;
5610
+ }
5611
+
5612
+ .muka-scrollbar__button:hover {
5613
+ background-color: var(--color-surface-hover);
5614
+ }
5615
+
5616
+ .muka-scrollbar__divider {
5617
+ flex-shrink: 0;
5618
+ width: 100%;
5619
+ height: 1px;
5620
+ background-color: var(--color-border-default);
5621
+ }
5622
+
5623
+ .muka-scrollbar--horizontal .muka-scrollbar__divider {
5624
+ width: 1px;
5625
+ height: 100%;
5626
+ }
5627
+
5628
+ .muka-scrollbar__track {
5629
+ position: relative;
5630
+ display: flex;
5631
+ flex-direction: column;
5632
+ flex: 1 1 auto;
5633
+ min-height: 0;
5634
+ width: 100%;
5635
+ }
5636
+
5637
+ .muka-scrollbar--horizontal .muka-scrollbar__track {
5638
+ flex-direction: row;
5639
+ min-width: 0;
5640
+ height: 100%;
5641
+ }
5642
+
5643
+ .muka-scrollbar__thumb {
5644
+ position: absolute;
5645
+ left: 0;
5646
+ top: 0;
5647
+ z-index: 1;
5648
+ display: flex;
5649
+ align-items: center;
5650
+ justify-content: center;
5651
+ width: 100%;
5652
+ /* Figma: scrollbar thumb fill = surface/level3 */
5653
+ background-color: var(--color-surface-level3);
5654
+ cursor: grab;
5655
+ touch-action: none;
5656
+ }
5657
+
5658
+ .muka-scrollbar--horizontal .muka-scrollbar__thumb {
5659
+ left: 0;
5660
+ top: 0;
5661
+ width: auto;
5662
+ height: 100%;
5663
+ margin-left: 0;
5664
+ margin-top: 0;
5665
+ }
5666
+
5667
+ .muka-scrollbar__thumb:active {
5668
+ cursor: grabbing;
5669
+ }
5670
+
5671
+ .muka-scrollbar__grip {
5672
+ display: flex;
5673
+ flex-direction: column;
5674
+ gap: 2px;
5675
+ width: 14px;
5676
+ }
5677
+
5678
+ .muka-scrollbar__grip::before,
5679
+ .muka-scrollbar__grip::after {
5680
+ content: '';
5681
+ display: block;
5682
+ width: 100%;
5683
+ height: 2px;
5684
+ border-radius: var(--border-radius-md);
5685
+ background-color: var(--color-text-subtle-default);
5686
+ }
5687
+
5688
+ .muka-scrollbar__spacer {
5689
+ flex: 1 1 auto;
5690
+ min-height: 0;
5691
+ background-color: var(--color-surface-level2);
5692
+ }
5693
+
5694
+
5665
5695
  /* RecordingBar */
5666
5696
  /* RecordingBar Component Styles */
5667
5697
 
@@ -6268,19 +6298,22 @@ body {
6268
6298
  /* ─── Root ──────────────────────────────────────────────── */
6269
6299
  .muka-progress-tracker {
6270
6300
  width: 100%;
6301
+ }
6302
+
6303
+ .muka-progress-tracker--horizontal {
6271
6304
  padding-bottom: var(--spacing-7);
6272
6305
  }
6273
6306
 
6274
6307
  /* ─── Track (layered container) ─────────────────────────── */
6275
- .muka-progress-tracker__track {
6308
+ .muka-progress-tracker--horizontal .muka-progress-tracker__track {
6276
6309
  position: relative;
6277
6310
  /* Vertical padding = (indicator size - connector height) / 2 = (32 - 4) / 2 = 14px */
6278
6311
  padding-top: 14px;
6279
6312
  padding-bottom: 14px;
6280
6313
  }
6281
6314
 
6282
- /* ─── Steps layer (on top) ──────────────────────────────── */
6283
- .muka-progress-tracker__steps {
6315
+ /* ─── Steps layer (on top) — horizontal ─────────────────── */
6316
+ .muka-progress-tracker--horizontal .muka-progress-tracker__steps {
6284
6317
  position: absolute;
6285
6318
  inset: 0;
6286
6319
  display: flex;
@@ -6289,13 +6322,16 @@ body {
6289
6322
  z-index: 2;
6290
6323
  }
6291
6324
 
6292
- /* ─── Individual step ───────────────────────────────────── */
6293
- .muka-progress-tracker__step {
6325
+ /* ─── Individual step — horizontal ──────────────────────── */
6326
+ .muka-progress-tracker--horizontal .muka-progress-tracker__step {
6294
6327
  display: flex;
6295
6328
  flex-direction: column;
6296
6329
  align-items: center;
6297
- gap: 7px;
6298
6330
  position: relative;
6331
+ /* Labels are absolutely positioned so the step stays 32px and
6332
+ circle centers line up with the connector padding. */
6333
+ width: 32px;
6334
+ flex: 0 0 32px;
6299
6335
  }
6300
6336
 
6301
6337
  /* ─── Step indicator (circle) ───────────────────────────── */
@@ -6308,20 +6344,24 @@ body {
6308
6344
  justify-content: center;
6309
6345
  flex-shrink: 0;
6310
6346
  position: relative;
6347
+ z-index: 1;
6311
6348
  }
6312
6349
 
6313
6350
  /* Past: dark accent contrast circle with white checkmark */
6314
6351
  .muka-progress-tracker__indicator--past {
6315
6352
  background-color: var(--alias-color-accent-contrast);
6316
6353
  color: var(--color-text-default-inverse);
6354
+ }
6355
+
6356
+ .muka-progress-tracker--horizontal .muka-progress-tracker__indicator--past {
6317
6357
  cursor: pointer;
6318
6358
  }
6319
6359
 
6320
- .muka-progress-tracker__indicator--past:hover {
6360
+ .muka-progress-tracker--horizontal .muka-progress-tracker__indicator--past:hover {
6321
6361
  background-color: var(--alias-color-accent-pressed);
6322
6362
  }
6323
6363
 
6324
- .muka-progress-tracker__indicator--past:focus-visible {
6364
+ .muka-progress-tracker--horizontal .muka-progress-tracker__indicator--past:focus-visible {
6325
6365
  outline: 2px solid var(--color-border-focus);
6326
6366
  outline-offset: 2px;
6327
6367
  }
@@ -6348,6 +6388,18 @@ body {
6348
6388
  user-select: none;
6349
6389
  }
6350
6390
 
6391
+ .muka-progress-tracker--horizontal .muka-progress-tracker__indicator--upcoming .muka-progress-tracker__number {
6392
+ font-family: var(--text-label-md-bold-fontFamily);
6393
+ font-weight: var(--text-label-md-bold-fontWeight);
6394
+ }
6395
+
6396
+ .muka-progress-tracker--vertical .muka-progress-tracker__indicator--upcoming .muka-progress-tracker__number {
6397
+ font-family: var(--text-label-md-semibold-fontFamily);
6398
+ font-weight: var(--text-label-md-semibold-fontWeight);
6399
+ font-size: var(--text-label-md-semibold-fontSize);
6400
+ line-height: var(--text-label-md-semibold-lineHeight);
6401
+ }
6402
+
6351
6403
  /* ─── Checkmark icon ────────────────────────────────────── */
6352
6404
  .muka-progress-tracker__check-icon {
6353
6405
  width: 20px;
@@ -6360,8 +6412,12 @@ body {
6360
6412
  color: var(--color-text-default-inverse);
6361
6413
  }
6362
6414
 
6363
- /* ─── Step label ────────────────────────────────────────── */
6364
- .muka-progress-tracker__label {
6415
+ /* ─── Step label — horizontal ───────────────────────────── */
6416
+ .muka-progress-tracker--horizontal .muka-progress-tracker__label {
6417
+ position: absolute;
6418
+ top: 39px;
6419
+ left: 50%;
6420
+ transform: translateX(-50%);
6365
6421
  font-family: var(--text-label-sm-regular-fontFamily);
6366
6422
  font-weight: var(--text-label-sm-regular-fontWeight);
6367
6423
  font-size: var(--text-label-sm-regular-fontSize);
@@ -6374,14 +6430,14 @@ body {
6374
6430
  text-overflow: ellipsis;
6375
6431
  }
6376
6432
 
6377
- /* Current step label is bold */
6378
- .muka-progress-tracker__label--current {
6433
+ /* Current step label is bold (horizontal only) */
6434
+ .muka-progress-tracker--horizontal .muka-progress-tracker__label--current {
6379
6435
  font-family: var(--text-label-sm-bold-fontFamily);
6380
6436
  font-weight: var(--text-label-sm-bold-fontWeight);
6381
6437
  }
6382
6438
 
6383
- /* ─── Connectors layer (behind indicators) ──────────────── */
6384
- .muka-progress-tracker__connectors {
6439
+ /* ─── Connectors layer (behind indicators) — horizontal ─── */
6440
+ .muka-progress-tracker--horizontal .muka-progress-tracker__connectors {
6385
6441
  display: flex;
6386
6442
  align-items: center;
6387
6443
  /* Horizontal padding = indicator radius (32/2 = 16px) so lines meet circle centers */
@@ -6391,20 +6447,31 @@ body {
6391
6447
  z-index: 1;
6392
6448
  }
6393
6449
 
6394
- /* ─── Individual connector line ─────────────────────────── */
6395
- .muka-progress-tracker__connector {
6450
+ /* Rounder, bar, rounder in a row. Chromium treats a negative gap as invalid,
6451
+ so the overlap is margins: the bar runs 2px under each circle. */
6452
+ .muka-progress-tracker--horizontal .muka-progress-tracker__connector {
6453
+ display: flex;
6454
+ flex-direction: row;
6455
+ align-items: center;
6396
6456
  flex: 1 0 0;
6397
6457
  height: 4px;
6398
6458
  min-width: 1px;
6459
+ position: relative;
6460
+ overflow: visible;
6461
+ background: none;
6462
+ }
6463
+
6464
+ .muka-progress-tracker--horizontal .muka-progress-tracker__connector-line {
6465
+ flex: 1 1 auto;
6466
+ height: 4px;
6467
+ min-width: 1px;
6399
6468
  }
6400
6469
 
6401
- /* Past: solid dark line */
6402
- .muka-progress-tracker__connector--past {
6470
+ .muka-progress-tracker--horizontal .muka-progress-tracker__connector--past .muka-progress-tracker__connector-line {
6403
6471
  background-color: var(--alias-color-accent-contrast);
6404
6472
  }
6405
6473
 
6406
- /* Current: gradient from past (dark) toward current step */
6407
- .muka-progress-tracker__connector--current {
6474
+ .muka-progress-tracker--horizontal .muka-progress-tracker__connector--current .muka-progress-tracker__connector-line {
6408
6475
  background: linear-gradient(
6409
6476
  to right,
6410
6477
  var(--alias-color-accent-contrast) 0%,
@@ -6412,8 +6479,7 @@ body {
6412
6479
  );
6413
6480
  }
6414
6481
 
6415
- /* Current-right: gradient fading from current step into upcoming */
6416
- .muka-progress-tracker__connector--current-right {
6482
+ .muka-progress-tracker--horizontal .muka-progress-tracker__connector--current-right .muka-progress-tracker__connector-line {
6417
6483
  background: linear-gradient(
6418
6484
  to right,
6419
6485
  var(--alias-color-accent-default) 0%,
@@ -6422,40 +6488,255 @@ body {
6422
6488
  );
6423
6489
  }
6424
6490
 
6491
+ .muka-progress-tracker--horizontal .muka-progress-tracker__connector--upcoming .muka-progress-tracker__connector-line {
6492
+ background-color: var(--color-surface-sunken);
6493
+ }
6494
+
6495
+ /* Past: solid dark line (vertical; horizontal uses the inner line) */
6496
+ .muka-progress-tracker__connector--past {
6497
+ background-color: var(--alias-color-accent-contrast);
6498
+ }
6499
+
6425
6500
  /* Upcoming: solid gray line */
6426
6501
  .muka-progress-tracker__connector--upcoming {
6427
6502
  background-color: var(--color-surface-sunken);
6428
6503
  }
6429
6504
 
6505
+ /* ═══════════════════════════════════════════════════════════
6506
+ Vertical orientation
6507
+ ═══════════════════════════════════════════════════════════ */
6430
6508
 
6431
- /* ProgressAccordeon */
6432
- /* ProgressAccordeon Component Styles — Using Muka Design Tokens */
6433
-
6434
- /* ─── Root ──────────────────────────────────────────────── */
6435
- .muka-progress-accordeon {
6436
- container-type: inline-size;
6509
+ .muka-progress-tracker--vertical .muka-progress-tracker__track {
6437
6510
  display: flex;
6438
6511
  flex-direction: column;
6439
6512
  align-items: stretch;
6513
+ gap: var(--spacing-6);
6440
6514
  width: 100%;
6441
- /* Top padding provides the vertical rhythm between stacked steps */
6442
- padding-top: var(--spacing-8);
6443
6515
  }
6444
6516
 
6445
- /* Per-state gap: content-bearing steps are tighter, header-only steps looser */
6446
- .muka-progress-accordeon--current,
6447
- .muka-progress-accordeon--past.muka-progress-accordeon--expanded {
6448
- gap: var(--spacing-6);
6517
+ .muka-progress-tracker--vertical .muka-progress-tracker__step {
6518
+ display: flex;
6519
+ flex-direction: row;
6520
+ align-items: flex-start;
6521
+ gap: var(--spacing-3);
6522
+ padding-right: var(--spacing-1);
6523
+ position: relative;
6524
+ width: 100%;
6525
+ min-height: 32px;
6449
6526
  }
6450
6527
 
6451
- .muka-progress-accordeon--upcoming,
6452
- .muka-progress-accordeon--past.muka-progress-accordeon--collapsed {
6453
- gap: var(--spacing-8);
6528
+ .muka-progress-tracker--vertical .muka-progress-tracker__step--interactive {
6529
+ cursor: pointer;
6454
6530
  }
6455
6531
 
6456
- /* Past steps group header + slot. The header↔content gap lives inside the
6457
- collapsing slot (as padding-top) so it collapses with the content, so the
6458
- body gap itself is 0. */
6532
+ .muka-progress-tracker--vertical .muka-progress-tracker__step--interactive:focus-visible {
6533
+ outline: 2px solid var(--color-border-focus);
6534
+ outline-offset: 4px;
6535
+ border-radius: 20px;
6536
+ }
6537
+
6538
+ /* Indicator column: circle only; connector is absolutely positioned on the step */
6539
+ .muka-progress-tracker--vertical .muka-progress-tracker__indicator-col {
6540
+ display: flex;
6541
+ flex-direction: column;
6542
+ align-items: center;
6543
+ flex-shrink: 0;
6544
+ position: relative;
6545
+ width: 32px;
6546
+ z-index: 1;
6547
+ }
6548
+
6549
+ /* Vertical connector: from mid-indicator through gap to next mid-indicator */
6550
+ .muka-progress-tracker--vertical .muka-progress-tracker__connector {
6551
+ position: absolute;
6552
+ left: 14px; /* (32px indicator - 4px line) / 2 */
6553
+ top: 16px;
6554
+ /* Through track gap (spacing-6) into the next indicator's top half */
6555
+ bottom: calc(-1 * var(--spacing-6) - 16px);
6556
+ width: 4px;
6557
+ z-index: 0;
6558
+ overflow: visible;
6559
+ }
6560
+
6561
+ /* Divider rounders: circle bleeds into the connector (Figma Divider Rounder) */
6562
+ .muka-progress-tracker__rounder {
6563
+ position: absolute;
6564
+ display: block;
6565
+ pointer-events: none;
6566
+ overflow: visible;
6567
+ }
6568
+
6569
+ .muka-progress-tracker__rounder--past {
6570
+ color: var(--alias-color-accent-contrast);
6571
+ }
6572
+
6573
+ .muka-progress-tracker__rounder--current {
6574
+ color: var(--alias-color-accent-default);
6575
+ }
6576
+
6577
+ .muka-progress-tracker__rounder--upcoming {
6578
+ color: var(--color-surface-sunken);
6579
+ }
6580
+
6581
+ .muka-progress-tracker--horizontal .muka-progress-tracker__rounder {
6582
+ position: relative;
6583
+ z-index: 1;
6584
+ flex-shrink: 0;
6585
+ top: auto;
6586
+ right: auto;
6587
+ bottom: auto;
6588
+ left: auto;
6589
+ transform: none;
6590
+ }
6591
+
6592
+ .muka-progress-tracker--horizontal .muka-progress-tracker__rounder--start {
6593
+ margin-left: 14px;
6594
+ /* Rounder overhangs the circle by 3px; -5px tucks the bar 2px under the circle. */
6595
+ margin-right: -5px;
6596
+ }
6597
+
6598
+ .muka-progress-tracker--horizontal .muka-progress-tracker__rounder--end {
6599
+ margin-left: -5px;
6600
+ margin-right: 14px;
6601
+ }
6602
+
6603
+ .muka-progress-tracker--vertical .muka-progress-tracker__rounder--start {
6604
+ left: 50%;
6605
+ top: 14px;
6606
+ transform: translateX(-50%);
6607
+ }
6608
+
6609
+ .muka-progress-tracker--vertical .muka-progress-tracker__rounder--end {
6610
+ left: 50%;
6611
+ bottom: 14px;
6612
+ transform: translateX(-50%);
6613
+ }
6614
+
6615
+ .muka-progress-tracker--vertical .muka-progress-tracker__connector--current {
6616
+ background: linear-gradient(
6617
+ to bottom,
6618
+ var(--alias-color-accent-contrast) 0%,
6619
+ var(--alias-color-accent-default) 100%
6620
+ );
6621
+ }
6622
+
6623
+ .muka-progress-tracker--vertical .muka-progress-tracker__connector--current-right {
6624
+ background: linear-gradient(
6625
+ to bottom,
6626
+ var(--alias-color-accent-default) 0%,
6627
+ var(--alias-color-accent-default) 15%,
6628
+ var(--color-surface-sunken) 50%
6629
+ );
6630
+ }
6631
+
6632
+ /* Vertical label: body/base/regular, wraps, not bold for current */
6633
+ .muka-progress-tracker--vertical .muka-progress-tracker__label {
6634
+ font-family: var(--text-body-base-regular-fontFamily);
6635
+ font-weight: var(--text-body-base-regular-fontWeight);
6636
+ font-size: var(--text-body-base-regular-fontSize);
6637
+ line-height: var(--text-body-base-regular-lineHeight);
6638
+ color: var(--color-text-default-default);
6639
+ text-align: left;
6640
+ flex: 1 0 0;
6641
+ min-width: 0;
6642
+ padding-top: var(--spacing-1);
6643
+ padding-bottom: var(--spacing-1);
6644
+ word-break: break-word;
6645
+ }
6646
+
6647
+ /* Current label stays regular weight in vertical layout */
6648
+ .muka-progress-tracker--vertical .muka-progress-tracker__label--current {
6649
+ font-family: var(--text-body-base-regular-fontFamily);
6650
+ font-weight: var(--text-body-base-regular-fontWeight);
6651
+ }
6652
+
6653
+ /* Ensure step content paints above hover/selected backgrounds */
6654
+ .muka-progress-tracker--vertical .muka-progress-tracker__indicator-col,
6655
+ .muka-progress-tracker--vertical .muka-progress-tracker__label {
6656
+ position: relative;
6657
+ z-index: 1;
6658
+ }
6659
+
6660
+ /* ─── Hover halo (vertical interactive only) ────────────── */
6661
+ .muka-progress-tracker--vertical .muka-progress-tracker__step--interactive:hover::before,
6662
+ .muka-progress-tracker--vertical .muka-progress-tracker__step--interactive:active::before,
6663
+ .muka-progress-tracker--vertical .muka-progress-tracker__step[data-selected='true']::before {
6664
+ content: '';
6665
+ position: absolute;
6666
+ background-color: var(--color-surface-level1);
6667
+ pointer-events: none;
6668
+ z-index: 0;
6669
+ }
6670
+
6671
+ /* Hover: 40px circle behind indicator only */
6672
+ .muka-progress-tracker--vertical .muka-progress-tracker__step--interactive:hover::before {
6673
+ left: -4px;
6674
+ top: -4px;
6675
+ width: 40px;
6676
+ height: 40px;
6677
+ border-radius: 20px;
6678
+ }
6679
+
6680
+ /* Selected / :active: pill behind full step row — wins over hover */
6681
+ .muka-progress-tracker--vertical .muka-progress-tracker__step--interactive:active::before,
6682
+ .muka-progress-tracker--vertical .muka-progress-tracker__step[data-selected='true']::before {
6683
+ left: -4px;
6684
+ right: -8px;
6685
+ top: -4px;
6686
+ bottom: -4px;
6687
+ width: auto;
6688
+ height: auto;
6689
+ border-radius: 20px;
6690
+ }
6691
+
6692
+ /* Selected steps without interactive class still show the pill */
6693
+ .muka-progress-tracker--vertical .muka-progress-tracker__step[data-selected='true']:not(.muka-progress-tracker__step--interactive)::before {
6694
+ content: '';
6695
+ position: absolute;
6696
+ left: -4px;
6697
+ right: -8px;
6698
+ top: -4px;
6699
+ bottom: -4px;
6700
+ background-color: var(--color-surface-level1);
6701
+ border-radius: 20px;
6702
+ pointer-events: none;
6703
+ z-index: 0;
6704
+ }
6705
+
6706
+ /* Connector stays behind indicators (indicator-col is z-index 1) */
6707
+ .muka-progress-tracker--vertical .muka-progress-tracker__connector {
6708
+ z-index: 0;
6709
+ }
6710
+
6711
+
6712
+ /* ProgressAccordeon */
6713
+ /* ProgressAccordeon Component Styles — Using Muka Design Tokens */
6714
+
6715
+ /* ─── Root ──────────────────────────────────────────────── */
6716
+ .muka-progress-accordeon {
6717
+ container-type: inline-size;
6718
+ display: flex;
6719
+ flex-direction: column;
6720
+ align-items: stretch;
6721
+ width: 100%;
6722
+ /* Top padding provides the vertical rhythm between stacked steps */
6723
+ padding-top: var(--spacing-8);
6724
+ }
6725
+
6726
+ /* Per-state gap: content-bearing steps are tighter, header-only steps looser */
6727
+ .muka-progress-accordeon--current,
6728
+ .muka-progress-accordeon--past.muka-progress-accordeon--expanded {
6729
+ gap: var(--spacing-6);
6730
+ }
6731
+
6732
+ .muka-progress-accordeon--upcoming,
6733
+ .muka-progress-accordeon--past.muka-progress-accordeon--collapsed {
6734
+ gap: var(--spacing-8);
6735
+ }
6736
+
6737
+ /* Past steps group header + slot. The header↔content gap lives inside the
6738
+ collapsing slot (as padding-top) so it collapses with the content, so the
6739
+ body gap itself is 0. */
6459
6740
  .muka-progress-accordeon__body {
6460
6741
  display: flex;
6461
6742
  flex-direction: column;
@@ -7460,14 +7741,16 @@ body {
7460
7741
  /* ─── Content Container ──────────────────────────────────────────────────── */
7461
7742
 
7462
7743
  .muka-menu__content {
7744
+ display: flex;
7745
+ flex-direction: column;
7463
7746
  min-width: var(--menu-content-min-width);
7464
7747
  max-height: var(--menu-content-max-height);
7465
- overflow-y: auto;
7748
+ overflow: hidden;
7466
7749
  background-color: var(--menu-content-color-background);
7467
7750
  border: var(--menu-content-border-width) solid var(--menu-content-color-border);
7468
7751
  border-radius: var(--menu-content-border-radius);
7469
7752
  box-shadow: var(--menu-content-shadow);
7470
- padding: var(--menu-content-padding);
7753
+ padding: 0;
7471
7754
  z-index: 50;
7472
7755
 
7473
7756
  /* Animation */
@@ -7475,6 +7758,132 @@ body {
7475
7758
  animation-timing-function: cubic-bezier(0.16, 1, 0.3, 1);
7476
7759
  }
7477
7760
 
7761
+ .muka-menu__body {
7762
+ display: flex;
7763
+ flex: 1 1 auto;
7764
+ min-height: 0;
7765
+ align-items: stretch;
7766
+ width: 100%;
7767
+ }
7768
+
7769
+ .muka-menu__viewport {
7770
+ flex: 1 1 auto;
7771
+ min-width: 0;
7772
+ min-height: 0;
7773
+ overflow-y: auto;
7774
+ padding: var(--menu-content-padding);
7775
+ }
7776
+
7777
+ .muka-menu__content--scrollbar .muka-menu__viewport {
7778
+ /* Custom scrollbar owns the chrome; hide native track */
7779
+ scrollbar-width: none;
7780
+ }
7781
+
7782
+ .muka-menu__content--scrollbar .muka-menu__viewport::-webkit-scrollbar {
7783
+ display: none;
7784
+ }
7785
+
7786
+ /* ─── Search header ──────────────────────────────────────────────────────── */
7787
+
7788
+ .muka-menu__search {
7789
+ display: flex;
7790
+ align-items: center;
7791
+ flex-shrink: 0;
7792
+ /* Figma dropdown filter header: 48px, 8px inset, 32px icon slots. */
7793
+ height: var(--input-field-height-lg, 3rem);
7794
+ padding: 0 var(--spacing-2);
7795
+ border-bottom: var(--border-width-regular) solid var(--color-border-default);
7796
+ }
7797
+
7798
+ .muka-menu__search--sm {
7799
+ height: calc(var(--size-xl, 1.5rem) + var(--spacing-2) * 2);
7800
+ }
7801
+
7802
+ .muka-menu__search-icon,
7803
+ .muka-menu__search-clear {
7804
+ display: flex;
7805
+ align-items: center;
7806
+ justify-content: center;
7807
+ flex-shrink: 0;
7808
+ width: var(--size-2xl, 2rem);
7809
+ height: var(--size-2xl, 2rem);
7810
+ color: var(--color-text-subtle-default);
7811
+ }
7812
+
7813
+ .muka-menu__search-icon .muka-icon,
7814
+ .muka-menu__search-clear .muka-icon,
7815
+ .muka-menu__search-clear:hover,
7816
+ .muka-menu__search-clear:hover .muka-icon {
7817
+ color: var(--color-text-subtle-default);
7818
+ }
7819
+
7820
+ .muka-menu__search--sm .muka-menu__search-icon,
7821
+ .muka-menu__search--sm .muka-menu__search-clear {
7822
+ width: var(--size-xl, 1.5rem);
7823
+ height: var(--size-xl, 1.5rem);
7824
+ }
7825
+
7826
+ .muka-menu__search-input {
7827
+ flex: 1 1 auto;
7828
+ min-width: 0;
7829
+ border: none;
7830
+ outline: none;
7831
+ background: transparent;
7832
+ padding: 0 var(--spacing-1);
7833
+ font-family: var(--text-input-md-fontFamily);
7834
+ font-size: var(--text-input-md-fontSize);
7835
+ font-weight: var(--text-input-md-fontWeight);
7836
+ line-height: var(--text-input-md-lineHeight);
7837
+ color: var(--color-text-default-default);
7838
+ }
7839
+
7840
+ .muka-menu__search--sm .muka-menu__search-input {
7841
+ font-family: var(--text-input-sm-fontFamily);
7842
+ font-size: var(--text-input-sm-fontSize);
7843
+ font-weight: var(--text-input-sm-fontWeight);
7844
+ line-height: var(--text-input-sm-lineHeight);
7845
+ }
7846
+
7847
+ .muka-menu__search-input::placeholder {
7848
+ color: var(--color-text-subtle-default);
7849
+ }
7850
+
7851
+ .muka-menu__search-input::-webkit-search-cancel-button,
7852
+ .muka-menu__search-input::-webkit-search-decoration {
7853
+ -webkit-appearance: none;
7854
+ appearance: none;
7855
+ }
7856
+
7857
+ .muka-menu__empty {
7858
+ display: flex;
7859
+ align-items: center;
7860
+ min-height: var(--menu-item-height);
7861
+ padding: var(--menu-item-padding-y) var(--menu-item-padding-x);
7862
+ color: var(--color-text-subtle-default);
7863
+ font-family: var(--text-input-md-fontFamily);
7864
+ font-size: var(--text-input-md-fontSize);
7865
+ font-weight: var(--text-input-md-fontWeight);
7866
+ line-height: var(--text-input-md-lineHeight);
7867
+ pointer-events: none;
7868
+ user-select: none;
7869
+ }
7870
+
7871
+ .muka-menu__search-clear {
7872
+ padding: 0;
7873
+ border: none;
7874
+ background: transparent;
7875
+ cursor: pointer;
7876
+ }
7877
+
7878
+ .muka-menu__match {
7879
+ font-weight: var(--font-weight-bold, 700);
7880
+ }
7881
+
7882
+ .muka-menu__content--scrollbar {
7883
+ height: var(--menu-content-scroll-height, 20.625rem);
7884
+ max-height: var(--menu-content-scroll-height, 20.625rem);
7885
+ }
7886
+
7478
7887
  .muka-menu__content[data-state='open'] {
7479
7888
  animation-name: muka-menu-fade-in;
7480
7889
  }
@@ -7502,22 +7911,26 @@ body {
7502
7911
  /* ─── Menu Item ──────────────────────────────────────────────────────────── */
7503
7912
 
7504
7913
  .muka-menu__item {
7914
+ position: relative;
7505
7915
  display: flex;
7506
7916
  align-items: center;
7507
7917
  gap: var(--menu-item-gap);
7508
7918
  min-height: var(--menu-item-height);
7509
- padding: var(--menu-item-padding-y) var(--menu-item-padding-x);
7919
+ /* Right gutter always reserved for floating trailers (enter / check). */
7920
+ padding: var(--menu-item-padding-y) var(--menu-item-padding-right) var(--menu-item-padding-y)
7921
+ var(--menu-item-padding-x);
7510
7922
  border-radius: var(--menu-item-border-radius);
7511
7923
  cursor: pointer;
7512
7924
  user-select: none;
7513
7925
  outline: none;
7514
- font-family: var(--text-label-md-regular-font-family);
7515
- font-size: var(--text-label-md-regular-font-size);
7516
- font-weight: var(--text-label-md-regular-font-weight);
7517
- line-height: var(--text-label-md-regular-line-height);
7926
+ font-family: var(--text-label-md-regular-fontFamily);
7927
+ font-size: var(--text-label-md-regular-fontSize);
7928
+ font-weight: var(--text-label-md-regular-fontWeight);
7929
+ line-height: var(--text-label-md-regular-lineHeight);
7518
7930
  color: var(--menu-item-color-default-foreground);
7519
7931
  background-color: var(--menu-item-color-default-background);
7520
7932
  transition: background-color 100ms ease, color 100ms ease;
7933
+ white-space: nowrap;
7521
7934
  }
7522
7935
 
7523
7936
  .muka-menu__item:hover,
@@ -7583,25 +7996,55 @@ body {
7583
7996
  }
7584
7997
 
7585
7998
  .muka-menu__item-label {
7586
- flex: 1;
7999
+ flex: 1 1 auto;
7587
8000
  min-width: 0;
8001
+ white-space: nowrap;
8002
+ }
8003
+
8004
+ /* Shortcut trailers replace icons and sit with an 8px right inset. */
8005
+ .muka-menu__item--has-shortcut {
8006
+ padding-right: var(--spacing-2);
7588
8007
  }
7589
8008
 
7590
8009
  .muka-menu__item-shortcut {
7591
8010
  flex-shrink: 0;
7592
8011
  margin-left: auto;
7593
8012
  padding-left: var(--menu-item-gap);
7594
- font-size: var(--text-label-sm-regular-font-size);
7595
- color: var(--menu-shortcut-color);
7596
- opacity: 0.7;
8013
+ font-family: var(--text-label-sm-regular-fontFamily);
8014
+ font-size: var(--text-label-sm-regular-fontSize);
8015
+ font-weight: var(--text-label-sm-regular-fontWeight);
8016
+ line-height: var(--text-label-sm-regular-lineHeight);
8017
+ color: var(--color-text-muted-default);
8018
+ white-space: nowrap;
8019
+ }
8020
+
8021
+ .muka-menu__item-hint {
8022
+ /* Figma: trailer sits with 8px margin top / right / bottom; 24px glyph centered inside. */
8023
+ position: absolute;
8024
+ top: var(--spacing-2);
8025
+ right: var(--spacing-2);
8026
+ bottom: var(--spacing-2);
8027
+ display: none;
8028
+ align-items: center;
8029
+ justify-content: center;
8030
+ width: var(--icon-size-default, 1.5rem);
8031
+ color: var(--color-text-muted-default);
8032
+ pointer-events: none;
8033
+ }
8034
+
8035
+ .muka-menu__item--hint-enter[data-highlighted] .muka-menu__item-hint {
8036
+ display: flex;
7597
8037
  }
7598
8038
 
7599
8039
  .muka-menu__item-chevron {
8040
+ position: absolute;
8041
+ top: var(--spacing-2);
8042
+ right: var(--spacing-2);
8043
+ bottom: var(--spacing-2);
7600
8044
  display: flex;
7601
8045
  align-items: center;
7602
8046
  justify-content: center;
7603
- flex-shrink: 0;
7604
- margin-left: auto;
8047
+ width: var(--icon-size-default, 1.5rem);
7605
8048
  color: var(--menu-shortcut-color);
7606
8049
  }
7607
8050
 
@@ -7622,6 +8065,40 @@ body {
7622
8065
  padding-left: var(--menu-item-padding-x);
7623
8066
  }
7624
8067
 
8068
+ .muka-menu__item--checkbox-trailing,
8069
+ .muka-menu__item--radio-check {
8070
+ /* Same reserved right gutter as default items — trailing indicator floats. */
8071
+ padding-right: var(--menu-item-padding-right);
8072
+ }
8073
+
8074
+ .muka-menu__item--radio-check[data-state='checked'] {
8075
+ background-color: var(--menu-item-color-selected-background);
8076
+ }
8077
+
8078
+ .muka-menu__item-indicator--trailing {
8079
+ /* Match enter-hint trailer: 8px inset, 24px box (override leading indicator size). */
8080
+ position: absolute;
8081
+ top: var(--spacing-2);
8082
+ right: var(--spacing-2);
8083
+ bottom: var(--spacing-2);
8084
+ display: flex;
8085
+ align-items: center;
8086
+ justify-content: center;
8087
+ width: var(--icon-size-default, 1.5rem);
8088
+ height: auto;
8089
+ max-height: none;
8090
+ transform: none;
8091
+ color: var(--color-text-subtle-default);
8092
+ }
8093
+
8094
+ .muka-menu__item-indicator--trailing > [data-state] {
8095
+ display: flex;
8096
+ align-items: center;
8097
+ justify-content: center;
8098
+ width: 100%;
8099
+ height: 100%;
8100
+ }
8101
+
7625
8102
  .muka-menu__radio-dot {
7626
8103
  width: 8px;
7627
8104
  height: 8px;
@@ -7645,10 +8122,10 @@ body {
7645
8122
 
7646
8123
  .muka-menu__group-label {
7647
8124
  padding: var(--menu-group-label-padding-y) var(--menu-group-label-padding-x);
7648
- font-family: var(--text-label-sm-semibold-font-family);
7649
- font-size: var(--text-label-sm-semibold-font-size);
7650
- font-weight: var(--text-label-sm-semibold-font-weight);
7651
- line-height: var(--text-label-sm-semibold-line-height);
8125
+ font-family: var(--text-label-sm-semibold-fontFamily);
8126
+ font-size: var(--text-label-sm-semibold-fontSize);
8127
+ font-weight: var(--text-label-sm-semibold-fontWeight);
8128
+ line-height: var(--text-label-sm-semibold-lineHeight);
7652
8129
  color: var(--menu-group-label-color);
7653
8130
  text-transform: uppercase;
7654
8131
  letter-spacing: 0.05em;
@@ -8331,27 +8808,58 @@ li.muka-listitem {
8331
8808
  color: var(--input-field-color-disabled-foreground);
8332
8809
  }
8333
8810
 
8334
- /* Icons */
8811
+ /* Icons — Figma inputfield content: sm 16px, md 20px, lg 24px. */
8335
8812
  .muka-input__icon {
8336
8813
  display: inline-flex;
8337
8814
  align-items: center;
8815
+ justify-content: center;
8338
8816
  flex-shrink: 0;
8339
8817
  color: var(--color-text-subtle-default);
8340
- width: var(--icon-size-default);
8341
- height: var(--icon-size-default);
8818
+ width: var(--icon-size-sm);
8819
+ height: var(--icon-size-sm);
8342
8820
  }
8343
8821
 
8344
8822
  .muka-input__field--sm .muka-input__icon {
8345
- width: var(--icon-size-sm);
8346
- height: var(--icon-size-sm);
8823
+ width: var(--icon-size-xs);
8824
+ height: var(--icon-size-xs);
8347
8825
  }
8348
8826
 
8349
8827
  .muka-input__field--lg .muka-input__icon {
8350
- width: var(--icon-size-lg);
8351
- height: var(--icon-size-lg);
8828
+ width: var(--icon-size-default);
8829
+ height: var(--icon-size-default);
8830
+ }
8831
+
8832
+ .muka-input__clear {
8833
+ display: inline-flex;
8834
+ align-items: center;
8835
+ justify-content: center;
8836
+ flex-shrink: 0;
8837
+ width: var(--size-2xl, 2rem);
8838
+ height: var(--size-2xl, 2rem);
8839
+ padding: 0;
8840
+ border: none;
8841
+ background: transparent;
8842
+ color: var(--color-text-subtle-default);
8843
+ cursor: pointer;
8844
+ }
8845
+
8846
+ .muka-input__field--sm .muka-input__clear {
8847
+ width: var(--size-xl, 1.5rem);
8848
+ height: var(--size-xl, 1.5rem);
8849
+ }
8850
+
8851
+ /* Icon sets its own color; pin the glyph to text subtle, including hover. */
8852
+ .muka-input__icon .muka-icon,
8853
+ .muka-input__clear .muka-icon,
8854
+ .muka-input__clear:hover,
8855
+ .muka-input__clear:hover .muka-icon {
8856
+ color: var(--color-text-subtle-default);
8352
8857
  }
8353
8858
 
8354
- .muka-input__field--disabled .muka-input__icon {
8859
+ .muka-input__field--disabled .muka-input__icon,
8860
+ .muka-input__field--disabled .muka-input__icon .muka-icon,
8861
+ .muka-input__field--disabled .muka-input__clear,
8862
+ .muka-input__field--disabled .muka-input__clear .muka-icon {
8355
8863
  color: var(--input-field-color-disabled-foreground);
8356
8864
  }
8357
8865
 
@@ -8360,6 +8868,12 @@ li.muka-listitem {
8360
8868
  height: 100%;
8361
8869
  }
8362
8870
 
8871
+ .muka-input__native::-webkit-search-cancel-button,
8872
+ .muka-input__native::-webkit-search-decoration {
8873
+ -webkit-appearance: none;
8874
+ appearance: none;
8875
+ }
8876
+
8363
8877
  /* Helper text */
8364
8878
  .muka-input__helper {
8365
8879
  font-family: var(--text-label-sm-regular-fontFamily);
@@ -8971,53 +9485,281 @@ li.muka-listitem {
8971
9485
  line-height: var(--text-body-sm-regular-lineHeight);
8972
9486
  }
8973
9487
 
8974
- .muka-emptystate--md .muka-emptystate__description {
8975
- font-family: var(--text-body-base-regular-fontFamily);
8976
- font-weight: var(--text-body-base-regular-fontWeight);
8977
- font-size: var(--text-body-base-regular-fontSize);
8978
- line-height: var(--text-body-base-regular-lineHeight);
9488
+ .muka-emptystate--md .muka-emptystate__description {
9489
+ font-family: var(--text-body-base-regular-fontFamily);
9490
+ font-weight: var(--text-body-base-regular-fontWeight);
9491
+ font-size: var(--text-body-base-regular-fontSize);
9492
+ line-height: var(--text-body-base-regular-lineHeight);
9493
+ }
9494
+
9495
+ .muka-emptystate--lg .muka-emptystate__description {
9496
+ font-family: var(--text-body-lg-regular-fontFamily);
9497
+ font-weight: var(--text-body-lg-regular-fontWeight);
9498
+ font-size: var(--text-body-lg-regular-fontSize);
9499
+ line-height: var(--text-body-lg-regular-lineHeight);
9500
+ }
9501
+
9502
+ /* Actions */
9503
+ .muka-emptystate__actions {
9504
+ display: flex;
9505
+ gap: var(--emptystate-actions-gap);
9506
+ margin-top: var(--emptystate-actions-marginTop);
9507
+ flex-wrap: wrap;
9508
+ justify-content: center;
9509
+ }
9510
+
9511
+ .muka-emptystate--left .muka-emptystate__actions {
9512
+ justify-content: flex-start;
9513
+ }
9514
+
9515
+
9516
+ /* EmojiPicker */
9517
+ /* EmojiPicker Component Styles */
9518
+
9519
+ .muka-emoji-picker {
9520
+ display: grid;
9521
+ grid-template-columns: repeat(8, 1fr);
9522
+ gap: var(--spacing-1);
9523
+ padding: var(--spacing-2);
9524
+ max-height: 12rem;
9525
+ overflow-y: auto;
9526
+ background: var(--color-surface-level2);
9527
+ border: var(--border-width-regular, 1px) solid var(--color-border-default);
9528
+ border-radius: var(--radius-lg);
9529
+ box-shadow: var(--menu-content-shadow, 0 4px 12px rgba(0, 0, 0, 0.12));
9530
+ }
9531
+
9532
+ .muka-emoji-picker__glyph {
9533
+ font-size: 1.25rem;
9534
+ line-height: 1;
9535
+ }
9536
+
9537
+
9538
+ /* DropdownSelect */
9539
+ /* DropdownSelect — Figma Dropdown Menu form field (Menu + chips) */
9540
+
9541
+ .muka-dropdown-select {
9542
+ display: inline-flex;
9543
+ flex-direction: column;
9544
+ gap: var(--spacing-2);
9545
+ min-width: 200px;
9546
+ }
9547
+
9548
+ .muka-dropdown-select--full-width {
9549
+ width: 100%;
9550
+ }
9551
+
9552
+ .muka-dropdown-select__label {
9553
+ color: var(--color-text-default-default);
9554
+ cursor: pointer;
9555
+ }
9556
+
9557
+ .muka-dropdown-select__label--sm {
9558
+ font-family: var(--text-label-sm-semibold-fontFamily);
9559
+ font-weight: var(--text-label-sm-semibold-fontWeight);
9560
+ font-size: var(--text-label-sm-semibold-fontSize);
9561
+ line-height: var(--text-label-sm-semibold-lineHeight);
9562
+ }
9563
+
9564
+ .muka-dropdown-select__label--md {
9565
+ font-family: var(--text-label-md-semibold-fontFamily);
9566
+ font-weight: var(--text-label-md-semibold-fontWeight);
9567
+ font-size: var(--text-label-md-semibold-fontSize);
9568
+ line-height: var(--text-label-md-semibold-lineHeight);
9569
+ }
9570
+
9571
+ .muka-dropdown-select__label--lg {
9572
+ font-family: var(--text-label-lg-semibold-fontFamily);
9573
+ font-weight: var(--text-label-lg-semibold-fontWeight);
9574
+ font-size: var(--text-label-lg-semibold-fontSize);
9575
+ line-height: var(--text-label-lg-semibold-lineHeight);
9576
+ }
9577
+
9578
+ .muka-dropdown-select__required {
9579
+ color: var(--color-state-error-foreground);
9580
+ }
9581
+
9582
+ .muka-dropdown-select__field {
9583
+ display: flex;
9584
+ align-items: center;
9585
+ gap: var(--spacing-1);
9586
+ width: 100%;
9587
+ position: relative;
9588
+ box-sizing: border-box;
9589
+ background-color: var(--input-field-color-default-background);
9590
+ border: var(--border-width-regular) solid var(--input-field-color-default-border);
9591
+ border-radius: var(--input-field-radius-lg);
9592
+ padding: var(--spacing-2);
9593
+ padding-right: calc(var(--spacing-2) + var(--size-2xl, 2rem));
9594
+ text-align: left;
9595
+ cursor: pointer;
9596
+ color: var(--color-text-default-default);
9597
+ transition: border-color 0.12s ease, background-color 0.12s ease;
9598
+ -webkit-tap-highlight-color: transparent;
9599
+ }
9600
+
9601
+ .muka-dropdown-select__field::after {
9602
+ content: '';
9603
+ position: absolute;
9604
+ inset: 0;
9605
+ border-radius: inherit;
9606
+ box-shadow: inset 0 1px 2px 0 rgba(26, 26, 26, 0.08);
9607
+ pointer-events: none;
9608
+ }
9609
+
9610
+ .muka-dropdown-select__field--sm {
9611
+ min-height: var(--input-field-height-sm);
9612
+ border-radius: var(--input-field-radius-sm);
9613
+ padding-right: calc(var(--spacing-2) + var(--size-xl, 1.5rem));
9614
+ }
9615
+
9616
+ .muka-dropdown-select__field--md {
9617
+ min-height: var(--input-field-height-default);
9618
+ border-radius: var(--input-field-radius-md);
9619
+ }
9620
+
9621
+ .muka-dropdown-select__field--lg {
9622
+ min-height: var(--input-field-height-lg);
9623
+ border-radius: var(--input-field-radius-lg);
9624
+ }
9625
+
9626
+ .muka-dropdown-select__field--focused:not(.muka-dropdown-select__field--disabled) {
9627
+ border-width: var(--border-width-bold);
9628
+ border-color: var(--input-field-color-focus-border);
9629
+ background-color: var(--input-field-color-focus-background);
9630
+ padding: calc(var(--spacing-2) - 1px);
9631
+ padding-right: calc(var(--spacing-2) + var(--size-2xl, 2rem) - 1px);
9632
+ }
9633
+
9634
+ .muka-dropdown-select__field--sm.muka-dropdown-select__field--focused:not(.muka-dropdown-select__field--disabled) {
9635
+ padding-right: calc(var(--spacing-2) + var(--size-xl, 1.5rem) - 1px);
9636
+ }
9637
+
9638
+ .muka-dropdown-select__field--error:not(.muka-dropdown-select__field--disabled) {
9639
+ border-color: var(--color-state-error-border, var(--color-state-error-foreground));
9640
+ }
9641
+
9642
+ .muka-dropdown-select__field--disabled {
9643
+ opacity: 0.5;
9644
+ cursor: not-allowed;
9645
+ }
9646
+
9647
+ .muka-dropdown-select__content {
9648
+ position: relative;
9649
+ z-index: 1;
9650
+ display: flex;
9651
+ flex: 1 1 auto;
9652
+ min-width: 0;
9653
+ align-items: center;
9654
+ /* Let empty-field / value clicks reach the full-field MenuTrigger underneath. */
9655
+ pointer-events: none;
9656
+ }
9657
+
9658
+ .muka-dropdown-select__placeholder {
9659
+ color: var(--color-text-subtle-default);
9660
+ font-family: var(--text-label-md-regular-fontFamily);
9661
+ font-size: var(--text-label-md-regular-fontSize);
9662
+ font-weight: var(--text-label-md-regular-fontWeight);
9663
+ line-height: var(--text-label-md-regular-lineHeight);
9664
+ padding-inline: var(--spacing-1);
9665
+ }
9666
+
9667
+ .muka-dropdown-select__value {
9668
+ font-family: var(--text-label-md-regular-fontFamily);
9669
+ font-size: var(--text-label-md-regular-fontSize);
9670
+ font-weight: var(--text-label-md-regular-fontWeight);
9671
+ line-height: var(--text-label-md-regular-lineHeight);
9672
+ padding-inline: var(--spacing-1);
9673
+ white-space: nowrap;
9674
+ overflow: hidden;
9675
+ text-overflow: ellipsis;
9676
+ }
9677
+
9678
+ .muka-dropdown-select__chips {
9679
+ display: flex;
9680
+ flex: 1 1 auto;
9681
+ flex-wrap: wrap;
9682
+ gap: var(--spacing-2);
9683
+ align-items: flex-start;
9684
+ min-width: 0;
9685
+ /* Chip remove controls must remain clickable above the field hit target. */
9686
+ pointer-events: auto;
9687
+ }
9688
+
9689
+ .muka-dropdown-select__field--multiline {
9690
+ align-items: flex-start;
9691
+ min-height: 7rem;
9692
+ }
9693
+
9694
+ .muka-dropdown-select__menu-button {
9695
+ position: absolute;
9696
+ inset: 0;
9697
+ z-index: 0;
9698
+ display: inline-flex;
9699
+ align-items: center;
9700
+ justify-content: flex-end;
9701
+ width: auto;
9702
+ height: auto;
9703
+ padding: 0;
9704
+ padding-right: var(--spacing-2);
9705
+ border: none;
9706
+ border-radius: inherit;
9707
+ background: transparent;
9708
+ color: var(--color-text-subtle-default);
9709
+ cursor: pointer;
9710
+ }
9711
+
9712
+ .muka-dropdown-select__field--multiline .muka-dropdown-select__menu-button {
9713
+ align-items: flex-start;
9714
+ padding-top: calc(var(--spacing-2) + 8px);
8979
9715
  }
8980
9716
 
8981
- .muka-emptystate--lg .muka-emptystate__description {
8982
- font-family: var(--text-body-lg-regular-fontFamily);
8983
- font-weight: var(--text-body-lg-regular-fontWeight);
8984
- font-size: var(--text-body-lg-regular-fontSize);
8985
- line-height: var(--text-body-lg-regular-lineHeight);
9717
+ .muka-dropdown-select__chevron {
9718
+ display: inline-flex;
9719
+ align-items: center;
9720
+ justify-content: center;
9721
+ width: var(--size-2xl, 2rem);
9722
+ height: var(--size-2xl, 2rem);
9723
+ pointer-events: none;
9724
+ color: var(--color-text-subtle-default);
8986
9725
  }
8987
9726
 
8988
- /* Actions */
8989
- .muka-emptystate__actions {
8990
- display: flex;
8991
- gap: var(--emptystate-actions-gap);
8992
- margin-top: var(--emptystate-actions-marginTop);
8993
- flex-wrap: wrap;
8994
- justify-content: center;
9727
+ .muka-dropdown-select__chevron .muka-icon,
9728
+ .muka-dropdown-select__menu-button:hover .muka-dropdown-select__chevron,
9729
+ .muka-dropdown-select__menu-button:hover .muka-icon {
9730
+ color: var(--color-text-subtle-default);
8995
9731
  }
8996
9732
 
8997
- .muka-emptystate--left .muka-emptystate__actions {
8998
- justify-content: flex-start;
9733
+ .muka-dropdown-select__field--sm .muka-dropdown-select__chevron {
9734
+ width: var(--size-xl, 1.5rem);
9735
+ height: var(--size-xl, 1.5rem);
8999
9736
  }
9000
9737
 
9738
+ .muka-dropdown-select__menu-button:focus-visible {
9739
+ outline: 2px solid var(--color-border-focus, var(--color-action-default));
9740
+ outline-offset: 2px;
9741
+ }
9001
9742
 
9002
- /* EmojiPicker */
9003
- /* EmojiPicker Component Styles */
9743
+ .muka-dropdown-select__helper {
9744
+ margin: 0;
9745
+ color: var(--color-text-subtle-default);
9746
+ font-family: var(--text-label-sm-regular-fontFamily);
9747
+ font-size: var(--text-label-sm-regular-fontSize);
9748
+ font-weight: var(--text-label-sm-regular-fontWeight);
9749
+ line-height: var(--text-label-sm-regular-lineHeight);
9750
+ }
9004
9751
 
9005
- .muka-emoji-picker {
9006
- display: grid;
9007
- grid-template-columns: repeat(8, 1fr);
9008
- gap: var(--spacing-1);
9009
- padding: var(--spacing-2);
9010
- max-height: 12rem;
9011
- overflow-y: auto;
9012
- background: var(--color-surface-level2);
9013
- border: var(--border-width-regular, 1px) solid var(--color-border-default);
9014
- border-radius: var(--radius-lg);
9015
- box-shadow: var(--menu-content-shadow, 0 4px 12px rgba(0, 0, 0, 0.12));
9752
+ .muka-dropdown-select__error {
9753
+ margin: 0;
9754
+ color: var(--color-state-error-foreground);
9755
+ font-family: var(--text-label-sm-regular-fontFamily);
9756
+ font-size: var(--text-label-sm-regular-fontSize);
9757
+ font-weight: var(--text-label-sm-regular-fontWeight);
9758
+ line-height: var(--text-label-sm-regular-lineHeight);
9016
9759
  }
9017
9760
 
9018
- .muka-emoji-picker__glyph {
9019
- font-size: 1.25rem;
9020
- line-height: 1;
9761
+ .muka-dropdown-select__menu {
9762
+ /* Uses Menu min-width (280px); grows with long labels; left-aligned to the field. */
9021
9763
  }
9022
9764
 
9023
9765
 
@@ -10343,6 +11085,126 @@ li.muka-listitem {
10343
11085
  }
10344
11086
 
10345
11087
 
11088
+ /* ContextSelect */
11089
+ /* ContextSelect — split label (navigate) + chevron menu button (switch)
11090
+ *
11091
+ * Figma (5623:8651 / 5631:9344):
11092
+ * - Root: gap spacing/1 (4px) between label group and chevron
11093
+ * - Label group: gap spacing/2 (8px) icon↔label, pl spacing/2 (8px)
11094
+ * - Icons: 16px (icon.size.xs)
11095
+ */
11096
+
11097
+ .muka-context-select {
11098
+ display: inline-flex;
11099
+ position: relative;
11100
+ align-items: flex-start;
11101
+ gap: var(--spacing-1, 4px);
11102
+ }
11103
+
11104
+ .muka-context-select__label-group {
11105
+ display: inline-flex;
11106
+ align-items: center;
11107
+ gap: var(--spacing-2, 8px);
11108
+ height: var(--size-2xl, 32px);
11109
+ padding-left: var(--spacing-2, 8px);
11110
+ padding-right: 0;
11111
+ border-radius: var(--border-radius-lg);
11112
+ color: var(--color-text-default-default);
11113
+ text-decoration: none;
11114
+ border: none;
11115
+ background: transparent;
11116
+ font: inherit;
11117
+ cursor: default;
11118
+ }
11119
+
11120
+ .muka-context-select__label-group--link,
11121
+ .muka-context-select__label-group--button {
11122
+ cursor: pointer;
11123
+ }
11124
+
11125
+ .muka-context-select__label-group--link:hover .muka-context-select__label,
11126
+ .muka-context-select__label-group--button:hover .muka-context-select__label,
11127
+ .muka-context-select__label-group--link:focus-visible .muka-context-select__label,
11128
+ .muka-context-select__label-group--button:focus-visible .muka-context-select__label {
11129
+ text-decoration: underline;
11130
+ text-underline-offset: 2px;
11131
+ }
11132
+
11133
+ .muka-context-select__label-group--link:focus-visible,
11134
+ .muka-context-select__label-group--button:focus-visible {
11135
+ outline: 2px solid var(--color-border-focus);
11136
+ outline-offset: 2px;
11137
+ }
11138
+
11139
+ .muka-context-select__label-group--button:disabled,
11140
+ .muka-context-select__label-group--link[aria-disabled='true'] {
11141
+ cursor: not-allowed;
11142
+ opacity: 0.5;
11143
+ pointer-events: none;
11144
+ }
11145
+
11146
+ .muka-context-select__icon {
11147
+ display: inline-flex;
11148
+ flex-shrink: 0;
11149
+ align-items: center;
11150
+ justify-content: center;
11151
+ width: var(--icon-size-xs, 16px);
11152
+ height: var(--icon-size-xs, 16px);
11153
+ color: var(--color-text-default-default);
11154
+ }
11155
+
11156
+ .muka-context-select__icon .muka-icon {
11157
+ width: var(--icon-size-xs, 16px);
11158
+ height: var(--icon-size-xs, 16px);
11159
+ }
11160
+
11161
+ .muka-context-select__label {
11162
+ font-family: var(--text-label-sm-regular-font-family);
11163
+ font-size: var(--text-label-sm-regular-font-size);
11164
+ font-weight: var(--text-label-sm-regular-font-weight);
11165
+ line-height: var(--text-label-sm-regular-line-height);
11166
+ white-space: nowrap;
11167
+ }
11168
+
11169
+ .muka-context-select__menu-button {
11170
+ position: relative;
11171
+ display: inline-flex;
11172
+ flex-shrink: 0;
11173
+ align-items: center;
11174
+ justify-content: center;
11175
+ width: var(--size-2xl, 32px);
11176
+ height: var(--size-2xl, 32px);
11177
+ margin: 0;
11178
+ padding: 0;
11179
+ border: none;
11180
+ border-radius: var(--border-radius-lg);
11181
+ background: transparent;
11182
+ color: var(--color-text-default-default);
11183
+ cursor: pointer;
11184
+ }
11185
+
11186
+ .muka-context-select__menu-button:hover,
11187
+ .muka-context-select__menu-button:focus-visible,
11188
+ .muka-context-select__menu-button[data-state='open'],
11189
+ .muka-context-select--expanded .muka-context-select__menu-button {
11190
+ border: var(--border-width-regular) solid var(--color-border-default);
11191
+ }
11192
+
11193
+ .muka-context-select__menu-button:focus-visible {
11194
+ outline: 2px solid var(--color-border-focus);
11195
+ outline-offset: 2px;
11196
+ }
11197
+
11198
+ .muka-context-select__menu-button:disabled {
11199
+ cursor: not-allowed;
11200
+ opacity: 0.5;
11201
+ }
11202
+
11203
+ .muka-context-select__content {
11204
+ min-width: 17.5rem;
11205
+ }
11206
+
11207
+
10346
11208
  /* Container */
10347
11209
  /* Container Component - Layout tokens (container.max-width, container.gap) */
10348
11210
 
@@ -10395,191 +11257,175 @@ li.muka-listitem {
10395
11257
 
10396
11258
 
10397
11259
  /* Combobox */
10398
- /* Combobox Component Styles */
11260
+ /* Combobox — Figma Input Combobox (free-input chips + suggestion Menu) */
10399
11261
 
10400
- /* ─── Trigger group (positioning context for the trailing controls) ── */
11262
+ .muka-combobox {
11263
+ display: inline-flex;
11264
+ flex-direction: column;
11265
+ gap: var(--spacing-2);
11266
+ min-width: 200px;
11267
+ }
10401
11268
 
10402
- /*
10403
- * The clear control is a sibling of the trigger, not a child (a <button> may
10404
- * not contain interactive content), so it is overlaid on the trigger's trailing
10405
- * padding. The trigger reserves that space with padding-right below.
10406
- */
10407
- .muka-combobox__trigger-group {
10408
- position: relative;
10409
- display: block;
11269
+ .muka-combobox--full-width {
10410
11270
  width: 100%;
10411
11271
  }
10412
11272
 
10413
- /* ─── Trigger (looks like an Input field, behaves like a button) ── */
11273
+ .muka-combobox__label {
11274
+ color: var(--color-text-default-default);
11275
+ cursor: pointer;
11276
+ }
10414
11277
 
10415
- .muka-combobox {
10416
- display: inline-flex;
11278
+ .muka-combobox__label--sm {
11279
+ font-family: var(--text-label-sm-semibold-fontFamily);
11280
+ font-weight: var(--text-label-sm-semibold-fontWeight);
11281
+ font-size: var(--text-label-sm-semibold-fontSize);
11282
+ line-height: var(--text-label-sm-semibold-lineHeight);
11283
+ }
11284
+
11285
+ .muka-combobox__label--md {
11286
+ font-family: var(--text-label-md-semibold-fontFamily);
11287
+ font-weight: var(--text-label-md-semibold-fontWeight);
11288
+ font-size: var(--text-label-md-semibold-fontSize);
11289
+ line-height: var(--text-label-md-semibold-lineHeight);
11290
+ }
11291
+
11292
+ .muka-combobox__label--lg {
11293
+ font-family: var(--text-label-lg-semibold-fontFamily);
11294
+ font-weight: var(--text-label-lg-semibold-fontWeight);
11295
+ font-size: var(--text-label-lg-semibold-fontSize);
11296
+ line-height: var(--text-label-lg-semibold-lineHeight);
11297
+ }
11298
+
11299
+ .muka-combobox__field {
11300
+ display: flex;
10417
11301
  align-items: center;
10418
- gap: var(--spacing-2);
10419
11302
  width: 100%;
10420
- padding: 0 var(--muka-combobox-trailing-space) 0 var(--input-field-padding-x);
11303
+ position: relative;
11304
+ isolation: isolate;
11305
+ box-sizing: border-box;
10421
11306
  background-color: var(--input-field-color-default-background);
10422
11307
  border: var(--border-width-regular) solid var(--input-field-color-default-border);
10423
- color: var(--color-text-default-default);
10424
- text-align: left;
10425
- cursor: pointer;
10426
- font-family: var(--text-body-md-regular-fontFamily);
10427
- font-weight: var(--text-body-md-regular-fontWeight);
10428
- font-size: var(--text-body-md-regular-fontSize);
10429
- line-height: var(--text-body-md-regular-lineHeight);
10430
- -webkit-tap-highlight-color: transparent;
10431
- transition: border-color 0.12s ease;
10432
-
10433
- /* Room for the chevron overlaid on the trailing edge. */
10434
- --muka-combobox-trailing-space: calc(
10435
- var(--input-field-padding-x) + var(--icon-size-sm) + var(--spacing-2)
10436
- );
11308
+ border-radius: var(--input-field-radius-lg);
11309
+ padding: var(--spacing-2);
11310
+ cursor: text;
11311
+ transition: border-color 0.12s ease, background-color 0.12s ease;
10437
11312
  }
10438
11313
 
10439
- /* …and for the clear button next to it, when one is rendered. */
10440
- .muka-combobox--clearable {
10441
- --muka-combobox-trailing-space: calc(
10442
- var(--input-field-padding-x) + var(--icon-size-sm) + var(--spacing-2) +
10443
- var(--icon-size-xs) + var(--spacing-1) * 2 + var(--spacing-2)
10444
- );
11314
+ .muka-combobox__field::after {
11315
+ content: '';
11316
+ position: absolute;
11317
+ inset: 0;
11318
+ border-radius: inherit;
11319
+ box-shadow: inset 0 1px 2px 0 rgba(26, 26, 26, 0.08);
11320
+ pointer-events: none;
10445
11321
  }
10446
11322
 
10447
- .muka-combobox--sm {
11323
+ .muka-combobox__field--sm {
10448
11324
  min-height: var(--input-field-height-sm);
10449
11325
  border-radius: var(--input-field-radius-sm);
10450
11326
  }
10451
11327
 
10452
- .muka-combobox--md {
11328
+ .muka-combobox__field--md {
10453
11329
  min-height: var(--input-field-height-default);
10454
11330
  border-radius: var(--input-field-radius-md);
10455
11331
  }
10456
11332
 
10457
- .muka-combobox--lg {
11333
+ .muka-combobox__field--lg {
10458
11334
  min-height: var(--input-field-height-lg);
10459
11335
  border-radius: var(--input-field-radius-lg);
10460
11336
  }
10461
11337
 
10462
- .muka-combobox:hover:not(:disabled) {
10463
- border-color: var(--input-field-color-hover-border, var(--input-field-color-default-border));
11338
+ .muka-combobox__field--focused:not(.muka-combobox__field--disabled) {
11339
+ border-width: var(--border-width-bold);
11340
+ border-color: var(--input-field-color-focus-border);
11341
+ background-color: var(--input-field-color-focus-background);
11342
+ padding: calc(var(--spacing-2) - 1px);
10464
11343
  }
10465
11344
 
10466
- .muka-combobox:focus-visible {
10467
- outline: none;
10468
- border-color: var(--input-field-color-focus-border, var(--color-action-default));
11345
+ .muka-combobox__field--error:not(.muka-combobox__field--disabled) {
11346
+ border-color: var(--color-state-error-border, var(--color-state-error-foreground));
10469
11347
  }
10470
11348
 
10471
- .muka-combobox--disabled,
10472
- .muka-combobox:disabled {
11349
+ .muka-combobox__field--disabled {
10473
11350
  opacity: 0.5;
10474
11351
  cursor: not-allowed;
10475
11352
  }
10476
11353
 
10477
- .muka-combobox--placeholder .muka-combobox__label {
10478
- color: var(--color-text-subtle-default);
10479
- }
10480
-
10481
- .muka-combobox__leading {
10482
- display: inline-flex;
10483
- align-items: center;
10484
- justify-content: center;
10485
- flex-shrink: 0;
10486
- color: var(--color-text-subtle-default);
10487
- }
10488
-
10489
- .muka-combobox__label {
10490
- flex: 1 1 auto;
10491
- min-width: 0;
10492
- white-space: nowrap;
10493
- overflow: hidden;
10494
- text-overflow: ellipsis;
11354
+ .muka-combobox__field--multiline {
11355
+ align-items: flex-start;
11356
+ min-height: 7rem;
10495
11357
  }
10496
11358
 
10497
- /* ─── Trailing controls (clear + chevron) ─────────────── */
10498
-
10499
- .muka-combobox__actions {
10500
- position: absolute;
10501
- top: 0;
10502
- right: var(--input-field-padding-x);
10503
- height: 100%;
11359
+ .muka-combobox__chips {
10504
11360
  display: flex;
10505
- align-items: center;
11361
+ flex: 1 1 auto;
11362
+ flex-wrap: wrap;
10506
11363
  gap: var(--spacing-2);
10507
- /*
10508
- * The strip sits on top of the trigger, so it must not swallow taps meant to
10509
- * open the picker. Only the clear button takes pointer events back.
10510
- */
10511
- pointer-events: none;
10512
- }
10513
-
10514
- .muka-combobox__clear,
10515
- .muka-combobox__chevron {
10516
- display: inline-flex;
10517
11364
  align-items: center;
10518
- justify-content: center;
10519
- flex-shrink: 0;
10520
- color: var(--color-text-subtle-default);
10521
- }
10522
-
10523
- .muka-combobox__clear {
10524
- pointer-events: auto;
10525
- cursor: pointer;
10526
- padding: var(--spacing-1);
10527
- border: none;
10528
- background: none;
10529
- border-radius: var(--radius-sm);
10530
- -webkit-tap-highlight-color: transparent;
10531
- }
10532
-
10533
- .muka-combobox__clear:hover {
10534
- color: var(--color-text-default-default);
10535
- background-color: var(--color-surface-level1);
11365
+ min-width: 0;
11366
+ width: 100%;
11367
+ position: relative;
11368
+ z-index: 1;
10536
11369
  }
10537
11370
 
10538
- .muka-combobox__clear:focus-visible {
10539
- outline: 2px solid var(--color-border-focus);
10540
- outline-offset: 2px;
10541
- color: var(--color-text-default-default);
11371
+ .muka-combobox__input {
11372
+ flex: 1 1 5rem;
11373
+ min-width: 5rem;
11374
+ min-height: 2rem;
11375
+ margin: 0;
11376
+ padding: 0 var(--spacing-1);
11377
+ border: none;
11378
+ outline: none;
11379
+ background: transparent;
11380
+ color: var(--input-field-color-default-foreground);
11381
+ caret-color: var(--input-field-color-default-foreground);
11382
+ font-family: var(--text-label-md-regular-fontFamily);
11383
+ font-size: var(--text-label-md-regular-fontSize);
11384
+ font-weight: var(--text-label-md-regular-fontWeight);
11385
+ line-height: var(--text-label-md-regular-lineHeight);
10542
11386
  }
10543
11387
 
10544
- .muka-combobox--disabled ~ .muka-combobox__actions,
10545
- .muka-combobox:disabled ~ .muka-combobox__actions {
10546
- opacity: 0.5;
11388
+ .muka-combobox__input::placeholder {
11389
+ color: var(--color-text-subtle-default);
10547
11390
  }
10548
11391
 
10549
- /* ─── Picker sheet body ───────────────────────────────── */
10550
-
10551
- .muka-combobox__picker {
10552
- display: flex;
10553
- flex-direction: column;
10554
- gap: var(--spacing-3);
10555
- padding: 0 var(--spacing-4) var(--spacing-4);
10556
- min-height: 0;
10557
- max-height: 80vh;
11392
+ .muka-combobox__helper {
11393
+ margin: 0;
11394
+ color: var(--color-text-subtle-default);
11395
+ font-family: var(--text-label-sm-regular-fontFamily);
11396
+ font-size: var(--text-label-sm-regular-fontSize);
11397
+ font-weight: var(--text-label-sm-regular-fontWeight);
11398
+ line-height: var(--text-label-sm-regular-lineHeight);
10558
11399
  }
10559
11400
 
10560
- .muka-combobox__title {
11401
+ .muka-combobox__error {
10561
11402
  margin: 0;
10562
- padding: var(--spacing-2) 0;
10563
- color: var(--color-text-default-default);
10564
- font-family: var(--text-heading-sm-fontFamily);
10565
- font-weight: var(--text-heading-sm-fontWeight);
10566
- font-size: var(--text-heading-sm-fontSize);
10567
- line-height: var(--text-heading-sm-lineHeight);
11403
+ color: var(--color-state-error-foreground);
11404
+ font-family: var(--text-label-sm-regular-fontFamily);
11405
+ font-size: var(--text-label-sm-regular-fontSize);
11406
+ font-weight: var(--text-label-sm-regular-fontWeight);
11407
+ line-height: var(--text-label-sm-regular-lineHeight);
10568
11408
  }
10569
11409
 
10570
- .muka-combobox__search {
10571
- position: sticky;
10572
- top: 0;
10573
- z-index: 1;
10574
- padding-bottom: var(--spacing-2);
10575
- background-color: var(--color-surface-level3);
11410
+ .muka-combobox__menu-anchor {
11411
+ position: absolute;
11412
+ inset: 0;
11413
+ z-index: 0;
11414
+ width: 100%;
11415
+ height: 100%;
11416
+ margin: 0;
11417
+ padding: 0;
11418
+ border: none;
11419
+ background: transparent;
11420
+ pointer-events: none;
11421
+ opacity: 0;
10576
11422
  }
10577
11423
 
10578
- .muka-combobox__list {
10579
- flex: 1 1 auto;
10580
- min-height: 0;
10581
- overflow-y: auto;
10582
- -webkit-overflow-scrolling: touch;
11424
+ .muka-combobox__menu {
11425
+ /* Prefer Menu token min-width (280px); may exceed the field when left-aligned. */
11426
+ min-width: var(--menu-content-min-width);
11427
+ width: max-content;
11428
+ max-width: min(100vw - 2rem, 24rem);
10583
11429
  }
10584
11430
 
10585
11431
 
@@ -12473,9 +13319,17 @@ button.muka-chat-photo-grid__tile:focus-visible {
12473
13319
  user-select: none;
12474
13320
  }
12475
13321
 
12476
- /* Ellipsis */
12477
- .muka-breadcrumb__ellipsis {
12478
- color: var(--color-text-subtle-default);
13322
+ .muka-breadcrumb__item--context {
13323
+ gap: 0;
13324
+ }
13325
+
13326
+ .muka-breadcrumb__list:has(.muka-breadcrumb__item--context) {
13327
+ gap: 0;
13328
+ }
13329
+
13330
+ .muka-breadcrumb__item--context .muka-breadcrumb__separator {
13331
+ margin: 0;
13332
+ padding-inline: var(--spacing-1, 4px);
12479
13333
  }
12480
13334
 
12481
13335
  /* Size variants */
@@ -14120,3 +14974,195 @@ button.muka-chat-photo-grid__tile:focus-visible {
14120
14974
  border-bottom: none;
14121
14975
  }
14122
14976
 
14977
+
14978
+ /* SmsOtpField */
14979
+ /* SmsOtpField Component Styles - Using Muka Design Tokens */
14980
+
14981
+ /* Wrapper */
14982
+ .muka-sms-otp-field {
14983
+ display: inline-flex;
14984
+ flex-direction: column;
14985
+ gap: var(--spacing-2);
14986
+ }
14987
+
14988
+ /* Label */
14989
+ .muka-sms-otp-field__label {
14990
+ color: var(--color-text-default-default);
14991
+ cursor: pointer;
14992
+ }
14993
+
14994
+ .muka-sms-otp-field__label--sm {
14995
+ font-family: var(--text-label-sm-semibold-fontFamily);
14996
+ font-weight: var(--text-label-sm-semibold-fontWeight);
14997
+ font-size: var(--text-label-sm-semibold-fontSize);
14998
+ line-height: var(--text-label-sm-semibold-lineHeight);
14999
+ }
15000
+
15001
+ .muka-sms-otp-field__label--md {
15002
+ font-family: var(--text-label-md-semibold-fontFamily);
15003
+ font-weight: var(--text-label-md-semibold-fontWeight);
15004
+ font-size: var(--text-label-md-semibold-fontSize);
15005
+ line-height: var(--text-label-md-semibold-lineHeight);
15006
+ }
15007
+
15008
+ .muka-sms-otp-field__label--lg {
15009
+ font-family: var(--text-label-lg-semibold-fontFamily);
15010
+ font-weight: var(--text-label-lg-semibold-fontWeight);
15011
+ font-size: var(--text-label-lg-semibold-fontSize);
15012
+ line-height: var(--text-label-lg-semibold-lineHeight);
15013
+ }
15014
+
15015
+ .muka-sms-otp-field__required {
15016
+ color: var(--color-state-error-foreground);
15017
+ }
15018
+
15019
+ /* Hidden input for browser autofill */
15020
+ .muka-sms-otp-field__hidden-input {
15021
+ position: absolute;
15022
+ width: 1px;
15023
+ height: 1px;
15024
+ padding: 0;
15025
+ margin: -1px;
15026
+ overflow: hidden;
15027
+ clip: rect(0, 0, 0, 0);
15028
+ white-space: nowrap;
15029
+ border: 0;
15030
+ opacity: 0;
15031
+ pointer-events: none;
15032
+ }
15033
+
15034
+ /* Digits container */
15035
+ .muka-sms-otp-field__digits {
15036
+ display: flex;
15037
+ align-items: center;
15038
+ gap: var(--spacing-2);
15039
+ }
15040
+
15041
+ /* Separator */
15042
+ .muka-sms-otp-field__separator {
15043
+ display: inline-flex;
15044
+ align-items: center;
15045
+ justify-content: center;
15046
+ color: var(--color-text-subtle-default);
15047
+ font-size: 1.25rem;
15048
+ padding: 0 var(--spacing-1);
15049
+ user-select: none;
15050
+ }
15051
+
15052
+ /* Individual digit box */
15053
+ .muka-sms-otp-field__digit {
15054
+ display: flex;
15055
+ align-items: center;
15056
+ justify-content: center;
15057
+ text-align: center;
15058
+ background-color: var(--input-field-color-default-background);
15059
+ border: var(--border-width-regular) solid var(--input-field-color-default-border);
15060
+ color: var(--input-field-color-default-foreground);
15061
+ transition: border-color 0.2s ease, background-color 0.2s ease;
15062
+ box-sizing: border-box;
15063
+ caret-color: var(--input-field-color-focus-border);
15064
+ -moz-appearance: textfield;
15065
+ appearance: textfield;
15066
+ }
15067
+
15068
+ /* Remove spinner buttons */
15069
+ .muka-sms-otp-field__digit::-webkit-inner-spin-button,
15070
+ .muka-sms-otp-field__digit::-webkit-outer-spin-button {
15071
+ -webkit-appearance: none;
15072
+ margin: 0;
15073
+ }
15074
+
15075
+ /* Size variants */
15076
+ .muka-sms-otp-field__digit--sm {
15077
+ width: 36px;
15078
+ height: var(--input-field-height-sm);
15079
+ border-radius: var(--input-field-radius-sm);
15080
+ font-family: var(--text-input-sm-fontFamily);
15081
+ font-weight: var(--text-input-sm-fontWeight);
15082
+ font-size: var(--text-input-sm-fontSize);
15083
+ line-height: var(--text-input-sm-lineHeight);
15084
+ }
15085
+
15086
+ .muka-sms-otp-field__digit--md {
15087
+ width: 44px;
15088
+ height: var(--input-field-height-default);
15089
+ border-radius: var(--input-field-radius-md);
15090
+ font-family: var(--text-input-md-fontFamily);
15091
+ font-weight: var(--text-input-md-fontWeight);
15092
+ font-size: var(--text-input-md-fontSize);
15093
+ line-height: var(--text-input-md-lineHeight);
15094
+ }
15095
+
15096
+ .muka-sms-otp-field__digit--lg {
15097
+ width: 52px;
15098
+ height: var(--input-field-height-lg);
15099
+ border-radius: var(--input-field-radius-lg);
15100
+ font-family: var(--text-input-lg-fontFamily);
15101
+ font-weight: var(--text-input-lg-fontWeight);
15102
+ font-size: var(--text-input-lg-fontSize);
15103
+ line-height: var(--text-input-lg-lineHeight);
15104
+ }
15105
+
15106
+ /* Inset shadow (matches Input component) */
15107
+ .muka-sms-otp-field__digit::after {
15108
+ content: '';
15109
+ position: absolute;
15110
+ inset: 0;
15111
+ border-radius: inherit;
15112
+ box-shadow: inset 0 1px 2px 0 rgba(26, 26, 26, 0.08);
15113
+ pointer-events: none;
15114
+ }
15115
+
15116
+ /* Focus state */
15117
+ .muka-sms-otp-field__digit--focused:not(.muka-sms-otp-field__digit--disabled) {
15118
+ border-width: var(--border-width-bold);
15119
+ border-color: var(--input-field-color-focus-border);
15120
+ background-color: var(--input-field-color-focus-background);
15121
+ outline: none;
15122
+ }
15123
+
15124
+ /* Also handle native :focus for keyboard navigation */
15125
+ .muka-sms-otp-field__digit:focus {
15126
+ outline: none;
15127
+ }
15128
+
15129
+ /* Error state */
15130
+ .muka-sms-otp-field__digit--error:not(.muka-sms-otp-field__digit--disabled) {
15131
+ border-width: var(--border-width-bold);
15132
+ border-color: var(--input-field-color-error-border);
15133
+ background-color: var(--input-field-color-error-background);
15134
+ }
15135
+
15136
+ /* Disabled state */
15137
+ .muka-sms-otp-field__digit--disabled {
15138
+ background-color: var(--input-field-color-disabled-background);
15139
+ border-color: var(--input-field-color-disabled-border);
15140
+ color: var(--input-field-color-disabled-foreground);
15141
+ cursor: not-allowed;
15142
+ }
15143
+
15144
+ /* Filled state — slightly bolder text */
15145
+ .muka-sms-otp-field__digit--filled {
15146
+ color: var(--input-field-color-default-foreground);
15147
+ }
15148
+
15149
+ /* Helper text */
15150
+ .muka-sms-otp-field__helper {
15151
+ font-family: var(--text-label-sm-regular-fontFamily);
15152
+ font-weight: var(--text-label-sm-regular-fontWeight);
15153
+ font-size: var(--text-label-sm-regular-fontSize);
15154
+ line-height: var(--text-label-sm-regular-lineHeight);
15155
+ color: var(--color-text-subtle-default);
15156
+ margin: 0;
15157
+ }
15158
+
15159
+ /* Error message */
15160
+ .muka-sms-otp-field__error {
15161
+ font-family: var(--text-label-sm-regular-fontFamily);
15162
+ font-weight: var(--text-label-sm-regular-fontWeight);
15163
+ font-size: var(--text-label-sm-regular-fontSize);
15164
+ line-height: var(--text-label-sm-regular-lineHeight);
15165
+ color: var(--color-state-error-foreground);
15166
+ margin: 0;
15167
+ }
15168
+