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