@revikornmann/muka-ui 0.18.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 (118) 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/Combobox/Combobox.css +116 -132
  10. package/dist/cjs/components/Combobox/Combobox.js +175 -52
  11. package/dist/cjs/components/Combobox/Combobox.js.map +1 -1
  12. package/dist/cjs/components/Combobox/index.js.map +1 -1
  13. package/dist/cjs/components/DropdownSelect/DropdownSelect.css +225 -0
  14. package/dist/cjs/components/DropdownSelect/DropdownSelect.js +106 -0
  15. package/dist/cjs/components/DropdownSelect/DropdownSelect.js.map +1 -0
  16. package/dist/cjs/components/DropdownSelect/index.js +6 -0
  17. package/dist/cjs/components/DropdownSelect/index.js.map +1 -0
  18. package/dist/cjs/components/Icon/custom/ArrowReturnIcon.js +11 -0
  19. package/dist/cjs/components/Icon/custom/ArrowReturnIcon.js.map +1 -0
  20. package/dist/cjs/components/Icon/iconRegistry.js +5 -0
  21. package/dist/cjs/components/Icon/iconRegistry.js.map +1 -1
  22. package/dist/cjs/components/Input/Input.css +45 -8
  23. package/dist/cjs/components/Input/Input.js +14 -3
  24. package/dist/cjs/components/Input/Input.js.map +1 -1
  25. package/dist/cjs/components/Menu/Menu.css +123 -37
  26. package/dist/cjs/components/Menu/Menu.js +283 -25
  27. package/dist/cjs/components/Menu/Menu.js.map +1 -1
  28. package/dist/cjs/components/ProgressTracker/ProgressTracker.css +273 -22
  29. package/dist/cjs/components/ProgressTracker/ProgressTracker.js +109 -9
  30. package/dist/cjs/components/ProgressTracker/ProgressTracker.js.map +1 -1
  31. package/dist/cjs/components/Scrollbar/Scrollbar.css +7 -6
  32. package/dist/cjs/components/index.js +5 -3
  33. package/dist/cjs/components/index.js.map +1 -1
  34. package/dist/esm/components/Combobox/Combobox.css +116 -132
  35. package/dist/esm/components/Combobox/Combobox.js +177 -54
  36. package/dist/esm/components/Combobox/Combobox.js.map +1 -1
  37. package/dist/esm/components/Combobox/index.js +1 -1
  38. package/dist/esm/components/Combobox/index.js.map +1 -1
  39. package/dist/esm/components/DropdownSelect/DropdownSelect.css +225 -0
  40. package/dist/esm/components/DropdownSelect/DropdownSelect.js +102 -0
  41. package/dist/esm/components/DropdownSelect/DropdownSelect.js.map +1 -0
  42. package/dist/esm/components/DropdownSelect/index.js +2 -0
  43. package/dist/esm/components/DropdownSelect/index.js.map +1 -0
  44. package/dist/esm/components/Icon/custom/ArrowReturnIcon.js +7 -0
  45. package/dist/esm/components/Icon/custom/ArrowReturnIcon.js.map +1 -0
  46. package/dist/esm/components/Icon/iconRegistry.js +5 -0
  47. package/dist/esm/components/Icon/iconRegistry.js.map +1 -1
  48. package/dist/esm/components/Input/Input.css +45 -8
  49. package/dist/esm/components/Input/Input.js +14 -3
  50. package/dist/esm/components/Input/Input.js.map +1 -1
  51. package/dist/esm/components/Menu/Menu.css +123 -37
  52. package/dist/esm/components/Menu/Menu.js +284 -26
  53. package/dist/esm/components/Menu/Menu.js.map +1 -1
  54. package/dist/esm/components/ProgressTracker/ProgressTracker.css +273 -22
  55. package/dist/esm/components/ProgressTracker/ProgressTracker.js +110 -10
  56. package/dist/esm/components/ProgressTracker/ProgressTracker.js.map +1 -1
  57. package/dist/esm/components/Scrollbar/Scrollbar.css +7 -6
  58. package/dist/esm/components/index.js +1 -0
  59. package/dist/esm/components/index.js.map +1 -1
  60. package/dist/styles/components/Combobox.css +116 -132
  61. package/dist/styles/components/DropdownSelect.css +225 -0
  62. package/dist/styles/components/Input.css +45 -8
  63. package/dist/styles/components/Menu.css +123 -37
  64. package/dist/styles/components/ProgressTracker.css +273 -22
  65. package/dist/styles/components/Scrollbar.css +7 -6
  66. package/dist/styles/components/Typography.css +89 -0
  67. package/dist/styles/index.css +1285 -605
  68. package/dist/styles/muka-dark.css +1285 -605
  69. package/dist/styles/muka-light.css +1285 -605
  70. package/dist/styles/tokens-bouwplan-dark.css +5 -4
  71. package/dist/styles/tokens-bouwplan-light.css +5 -4
  72. package/dist/styles/tokens-fscl-dark.css +25 -24
  73. package/dist/styles/tokens-fscl-light.css +25 -24
  74. package/dist/styles/tokens-grip-dark.css +4 -3
  75. package/dist/styles/tokens-grip-light.css +4 -3
  76. package/dist/styles/tokens-muka-dark.css +4 -3
  77. package/dist/styles/tokens-muka-light.css +4 -3
  78. package/dist/styles/tokens-wireframe-dark.css +49 -48
  79. package/dist/styles/tokens-wireframe-light.css +49 -48
  80. package/dist/styles/wireframe-dark.css +1330 -650
  81. package/dist/styles/wireframe-light.css +1330 -650
  82. package/dist/types/components/Combobox/Combobox.d.ts +38 -38
  83. package/dist/types/components/Combobox/Combobox.d.ts.map +1 -1
  84. package/dist/types/components/Combobox/index.d.ts +1 -1
  85. package/dist/types/components/Combobox/index.d.ts.map +1 -1
  86. package/dist/types/components/DropdownSelect/DropdownSelect.d.ts +71 -0
  87. package/dist/types/components/DropdownSelect/DropdownSelect.d.ts.map +1 -0
  88. package/dist/types/components/DropdownSelect/index.d.ts +2 -0
  89. package/dist/types/components/DropdownSelect/index.d.ts.map +1 -0
  90. package/dist/types/components/Icon/custom/ArrowReturnIcon.d.ts +9 -0
  91. package/dist/types/components/Icon/custom/ArrowReturnIcon.d.ts.map +1 -0
  92. package/dist/types/components/Icon/iconRegistry.d.ts.map +1 -1
  93. package/dist/types/components/Input/Input.d.ts +5 -0
  94. package/dist/types/components/Input/Input.d.ts.map +1 -1
  95. package/dist/types/components/Menu/Menu.d.ts +42 -2
  96. package/dist/types/components/Menu/Menu.d.ts.map +1 -1
  97. package/dist/types/components/ProgressTracker/ProgressTracker.d.ts +29 -8
  98. package/dist/types/components/ProgressTracker/ProgressTracker.d.ts.map +1 -1
  99. package/dist/types/components/index.d.ts +1 -0
  100. package/dist/types/components/index.d.ts.map +1 -1
  101. package/docs/consumers/README.md +116 -37
  102. package/docs/consumers/brand.md +261 -0
  103. package/docs/consumers/figma-console-mcp.md +116 -0
  104. package/docs/consumers/setup-instructions.md +98 -12
  105. package/docs/consumers/skills.md +79 -0
  106. package/package.json +4 -6
  107. package/scripts/postinstall-nudge.js +8 -4
  108. package/skills/add-brand/SKILL.md +204 -0
  109. package/skills/add-brand/reference.md +160 -0
  110. package/skills/figma-to-code/SKILL.md +127 -0
  111. package/skills/pull-from-figma/SKILL.md +123 -0
  112. package/skills/push-to-figma/SKILL.md +172 -0
  113. package/skills/setup-muka/SKILL.md +73 -13
  114. package/tokens/README.md +39 -17
  115. package/tokens/t2-alias/brand/bouwplan/fonts.json +1 -1
  116. package/tokens/t2-alias/brand/fscl/fonts.json +3 -3
  117. package/tokens/t2-alias/brand/wireframe/fonts.json +2 -2
  118. package/tokens/t4-components/menu.json +8 -3
@@ -1921,12 +1921,12 @@ body {
1921
1921
  --dialog-drag-handle-radius: 999rem;
1922
1922
  --dialog-padding-x: 1rem;
1923
1923
  --menu-content-color-background: #fdfcfd;
1924
- --menu-content-color-border: #f2eff3;
1924
+ --menu-content-color-border: #d0cdd7;
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
1931
  --menu-content-scroll-height: 20.625rem;
1932
1932
  --menu-item-color-default-background: transparent;
@@ -1949,7 +1949,8 @@ body {
1949
1949
  --menu-item-color-destructive-hover-icon: #cd2b31;
1950
1950
  --menu-item-border-radius: 0.1875rem;
1951
1951
  --menu-item-padding-x: 0.75rem;
1952
- --menu-item-padding-y: 0.5rem;
1952
+ --menu-item-padding-right: 2.25rem;
1953
+ --menu-item-padding-y: 0.75rem;
1953
1954
  --menu-item-gap: 0.5rem;
1954
1955
  --menu-item-height: 2.5rem;
1955
1956
  --menu-separator-color: #f2eff3;
@@ -2560,6 +2561,98 @@ body {
2560
2561
  }
2561
2562
 
2562
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
+
2563
2656
  /* TypingIndicator */
2564
2657
  /* TypingIndicator Component Styles */
2565
2658
 
@@ -4579,84 +4672,6 @@ body {
4579
4672
  }
4580
4673
 
4581
4674
 
4582
- /* Spinner */
4583
- /* Spinner Component Styles */
4584
-
4585
- .muka-spinner {
4586
- display: inline-flex;
4587
- align-items: center;
4588
- justify-content: center;
4589
- color: var(--color-text-default-default);
4590
- line-height: 0;
4591
- }
4592
-
4593
- .muka-spinner--subtle {
4594
- color: var(--color-text-subtle-default);
4595
- }
4596
-
4597
- .muka-spinner--inverse {
4598
- color: var(--color-text-inverse-default);
4599
- }
4600
-
4601
- .muka-spinner__circle {
4602
- display: inline-block;
4603
- border-radius: 50%;
4604
- border-style: solid;
4605
- border-color: currentColor;
4606
- border-right-color: transparent;
4607
- animation: muka-spinner-rotate 0.7s linear infinite;
4608
- box-sizing: border-box;
4609
- }
4610
-
4611
- /* ─── Sizes ───────────────────────────────────────────── */
4612
-
4613
- .muka-spinner--sm .muka-spinner__circle {
4614
- width: 16px;
4615
- height: 16px;
4616
- border-width: 2px;
4617
- }
4618
-
4619
- .muka-spinner--md .muka-spinner__circle {
4620
- width: 20px;
4621
- height: 20px;
4622
- border-width: 2px;
4623
- }
4624
-
4625
- .muka-spinner--lg .muka-spinner__circle {
4626
- width: 24px;
4627
- height: 24px;
4628
- border-width: 3px;
4629
- }
4630
-
4631
- /* ─── Visually-hidden label ───────────────────────────── */
4632
-
4633
- .muka-spinner__sr-label {
4634
- position: absolute;
4635
- width: 1px;
4636
- height: 1px;
4637
- padding: 0;
4638
- margin: -1px;
4639
- overflow: hidden;
4640
- clip: rect(0, 0, 0, 0);
4641
- white-space: nowrap;
4642
- border: 0;
4643
- }
4644
-
4645
- /* ─── Reduced motion ──────────────────────────────────── */
4646
-
4647
- @keyframes muka-spinner-rotate {
4648
- to {
4649
- transform: rotate(360deg);
4650
- }
4651
- }
4652
-
4653
- @media (prefers-reduced-motion: reduce) {
4654
- .muka-spinner__circle {
4655
- animation-duration: 2.5s;
4656
- }
4657
- }
4658
-
4659
-
4660
4675
  /* SpecList */
4661
4676
  /* SpecList Component Styles */
4662
4677
 
@@ -4742,49 +4757,58 @@ body {
4742
4757
  }
4743
4758
 
4744
4759
 
4745
- /* SmsOtpField */
4746
- /* SmsOtpField Component Styles - Using Muka Design Tokens */
4760
+ /* Spinner */
4761
+ /* Spinner Component Styles */
4747
4762
 
4748
- /* Wrapper */
4749
- .muka-sms-otp-field {
4763
+ .muka-spinner {
4750
4764
  display: inline-flex;
4751
- flex-direction: column;
4752
- gap: var(--spacing-2);
4765
+ align-items: center;
4766
+ justify-content: center;
4767
+ color: var(--color-text-default-default);
4768
+ line-height: 0;
4753
4769
  }
4754
4770
 
4755
- /* Label */
4756
- .muka-sms-otp-field__label {
4757
- color: var(--color-text-default-default);
4758
- cursor: pointer;
4771
+ .muka-spinner--subtle {
4772
+ color: var(--color-text-subtle-default);
4759
4773
  }
4760
4774
 
4761
- .muka-sms-otp-field__label--sm {
4762
- font-family: var(--text-label-sm-semibold-fontFamily);
4763
- font-weight: var(--text-label-sm-semibold-fontWeight);
4764
- font-size: var(--text-label-sm-semibold-fontSize);
4765
- line-height: var(--text-label-sm-semibold-lineHeight);
4775
+ .muka-spinner--inverse {
4776
+ color: var(--color-text-inverse-default);
4766
4777
  }
4767
4778
 
4768
- .muka-sms-otp-field__label--md {
4769
- font-family: var(--text-label-md-semibold-fontFamily);
4770
- font-weight: var(--text-label-md-semibold-fontWeight);
4771
- font-size: var(--text-label-md-semibold-fontSize);
4772
- 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;
4773
4787
  }
4774
4788
 
4775
- .muka-sms-otp-field__label--lg {
4776
- font-family: var(--text-label-lg-semibold-fontFamily);
4777
- font-weight: var(--text-label-lg-semibold-fontWeight);
4778
- font-size: var(--text-label-lg-semibold-fontSize);
4779
- 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;
4780
4795
  }
4781
4796
 
4782
- .muka-sms-otp-field__required {
4783
- color: var(--color-state-error-foreground);
4797
+ .muka-spinner--md .muka-spinner__circle {
4798
+ width: 20px;
4799
+ height: 20px;
4800
+ border-width: 2px;
4784
4801
  }
4785
4802
 
4786
- /* Hidden input for browser autofill */
4787
- .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 {
4788
4812
  position: absolute;
4789
4813
  width: 1px;
4790
4814
  height: 1px;
@@ -4794,143 +4818,20 @@ body {
4794
4818
  clip: rect(0, 0, 0, 0);
4795
4819
  white-space: nowrap;
4796
4820
  border: 0;
4797
- opacity: 0;
4798
- pointer-events: none;
4799
4821
  }
4800
4822
 
4801
- /* Digits container */
4802
- .muka-sms-otp-field__digits {
4803
- display: flex;
4804
- align-items: center;
4805
- gap: var(--spacing-2);
4806
- }
4823
+ /* ─── Reduced motion ──────────────────────────────────── */
4807
4824
 
4808
- /* Separator */
4809
- .muka-sms-otp-field__separator {
4810
- display: inline-flex;
4811
- align-items: center;
4812
- justify-content: center;
4813
- color: var(--color-text-subtle-default);
4814
- font-size: 1.25rem;
4815
- padding: 0 var(--spacing-1);
4816
- user-select: none;
4825
+ @keyframes muka-spinner-rotate {
4826
+ to {
4827
+ transform: rotate(360deg);
4828
+ }
4817
4829
  }
4818
4830
 
4819
- /* Individual digit box */
4820
- .muka-sms-otp-field__digit {
4821
- display: flex;
4822
- align-items: center;
4823
- justify-content: center;
4824
- text-align: center;
4825
- background-color: var(--input-field-color-default-background);
4826
- border: var(--border-width-regular) solid var(--input-field-color-default-border);
4827
- color: var(--input-field-color-default-foreground);
4828
- transition: border-color 0.2s ease, background-color 0.2s ease;
4829
- box-sizing: border-box;
4830
- caret-color: var(--input-field-color-focus-border);
4831
- -moz-appearance: textfield;
4832
- appearance: textfield;
4833
- }
4834
-
4835
- /* Remove spinner buttons */
4836
- .muka-sms-otp-field__digit::-webkit-inner-spin-button,
4837
- .muka-sms-otp-field__digit::-webkit-outer-spin-button {
4838
- -webkit-appearance: none;
4839
- margin: 0;
4840
- }
4841
-
4842
- /* Size variants */
4843
- .muka-sms-otp-field__digit--sm {
4844
- width: 36px;
4845
- height: var(--input-field-height-sm);
4846
- border-radius: var(--input-field-radius-sm);
4847
- font-family: var(--text-input-sm-fontFamily);
4848
- font-weight: var(--text-input-sm-fontWeight);
4849
- font-size: var(--text-input-sm-fontSize);
4850
- line-height: var(--text-input-sm-lineHeight);
4851
- }
4852
-
4853
- .muka-sms-otp-field__digit--md {
4854
- width: 44px;
4855
- height: var(--input-field-height-default);
4856
- border-radius: var(--input-field-radius-md);
4857
- font-family: var(--text-input-md-fontFamily);
4858
- font-weight: var(--text-input-md-fontWeight);
4859
- font-size: var(--text-input-md-fontSize);
4860
- line-height: var(--text-input-md-lineHeight);
4861
- }
4862
-
4863
- .muka-sms-otp-field__digit--lg {
4864
- width: 52px;
4865
- height: var(--input-field-height-lg);
4866
- border-radius: var(--input-field-radius-lg);
4867
- font-family: var(--text-input-lg-fontFamily);
4868
- font-weight: var(--text-input-lg-fontWeight);
4869
- font-size: var(--text-input-lg-fontSize);
4870
- line-height: var(--text-input-lg-lineHeight);
4871
- }
4872
-
4873
- /* Inset shadow (matches Input component) */
4874
- .muka-sms-otp-field__digit::after {
4875
- content: '';
4876
- position: absolute;
4877
- inset: 0;
4878
- border-radius: inherit;
4879
- box-shadow: inset 0 1px 2px 0 rgba(26, 26, 26, 0.08);
4880
- pointer-events: none;
4881
- }
4882
-
4883
- /* Focus state */
4884
- .muka-sms-otp-field__digit--focused:not(.muka-sms-otp-field__digit--disabled) {
4885
- border-width: var(--border-width-bold);
4886
- border-color: var(--input-field-color-focus-border);
4887
- background-color: var(--input-field-color-focus-background);
4888
- outline: none;
4889
- }
4890
-
4891
- /* Also handle native :focus for keyboard navigation */
4892
- .muka-sms-otp-field__digit:focus {
4893
- outline: none;
4894
- }
4895
-
4896
- /* Error state */
4897
- .muka-sms-otp-field__digit--error:not(.muka-sms-otp-field__digit--disabled) {
4898
- border-width: var(--border-width-bold);
4899
- border-color: var(--input-field-color-error-border);
4900
- background-color: var(--input-field-color-error-background);
4901
- }
4902
-
4903
- /* Disabled state */
4904
- .muka-sms-otp-field__digit--disabled {
4905
- background-color: var(--input-field-color-disabled-background);
4906
- border-color: var(--input-field-color-disabled-border);
4907
- color: var(--input-field-color-disabled-foreground);
4908
- cursor: not-allowed;
4909
- }
4910
-
4911
- /* Filled state — slightly bolder text */
4912
- .muka-sms-otp-field__digit--filled {
4913
- color: var(--input-field-color-default-foreground);
4914
- }
4915
-
4916
- /* Helper text */
4917
- .muka-sms-otp-field__helper {
4918
- font-family: var(--text-label-sm-regular-fontFamily);
4919
- font-weight: var(--text-label-sm-regular-fontWeight);
4920
- font-size: var(--text-label-sm-regular-fontSize);
4921
- line-height: var(--text-label-sm-regular-lineHeight);
4922
- color: var(--color-text-subtle-default);
4923
- margin: 0;
4924
- }
4925
-
4926
- /* Error message */
4927
- .muka-sms-otp-field__error {
4928
- font-family: var(--text-label-sm-regular-fontFamily);
4929
- font-weight: var(--text-label-sm-regular-fontWeight);
4930
- font-size: var(--text-label-sm-regular-fontSize);
4931
- line-height: var(--text-label-sm-regular-lineHeight);
4932
- color: var(--color-state-error-foreground);
4933
- margin: 0;
4831
+ @media (prefers-reduced-motion: reduce) {
4832
+ .muka-spinner__circle {
4833
+ animation-duration: 2.5s;
4834
+ }
4934
4835
  }
4935
4836
 
4936
4837
 
@@ -5740,25 +5641,26 @@ body {
5740
5641
 
5741
5642
  .muka-scrollbar__thumb {
5742
5643
  position: absolute;
5743
- left: 50%;
5644
+ left: 0;
5744
5645
  top: 0;
5745
5646
  z-index: 1;
5746
5647
  display: flex;
5747
5648
  align-items: center;
5748
5649
  justify-content: center;
5749
- width: 14px;
5750
- margin-left: -7px;
5650
+ width: 100%;
5651
+ /* Figma: scrollbar thumb fill = surface/level3 */
5652
+ background-color: var(--color-surface-level3);
5751
5653
  cursor: grab;
5752
5654
  touch-action: none;
5753
5655
  }
5754
5656
 
5755
5657
  .muka-scrollbar--horizontal .muka-scrollbar__thumb {
5756
5658
  left: 0;
5757
- top: 50%;
5659
+ top: 0;
5758
5660
  width: auto;
5759
- height: 14px;
5661
+ height: 100%;
5760
5662
  margin-left: 0;
5761
- margin-top: -7px;
5663
+ margin-top: 0;
5762
5664
  }
5763
5665
 
5764
5666
  .muka-scrollbar__thumb:active {
@@ -6395,19 +6297,22 @@ body {
6395
6297
  /* ─── Root ──────────────────────────────────────────────── */
6396
6298
  .muka-progress-tracker {
6397
6299
  width: 100%;
6300
+ }
6301
+
6302
+ .muka-progress-tracker--horizontal {
6398
6303
  padding-bottom: var(--spacing-7);
6399
6304
  }
6400
6305
 
6401
6306
  /* ─── Track (layered container) ─────────────────────────── */
6402
- .muka-progress-tracker__track {
6307
+ .muka-progress-tracker--horizontal .muka-progress-tracker__track {
6403
6308
  position: relative;
6404
6309
  /* Vertical padding = (indicator size - connector height) / 2 = (32 - 4) / 2 = 14px */
6405
6310
  padding-top: 14px;
6406
6311
  padding-bottom: 14px;
6407
6312
  }
6408
6313
 
6409
- /* ─── Steps layer (on top) ──────────────────────────────── */
6410
- .muka-progress-tracker__steps {
6314
+ /* ─── Steps layer (on top) — horizontal ─────────────────── */
6315
+ .muka-progress-tracker--horizontal .muka-progress-tracker__steps {
6411
6316
  position: absolute;
6412
6317
  inset: 0;
6413
6318
  display: flex;
@@ -6416,13 +6321,16 @@ body {
6416
6321
  z-index: 2;
6417
6322
  }
6418
6323
 
6419
- /* ─── Individual step ───────────────────────────────────── */
6420
- .muka-progress-tracker__step {
6324
+ /* ─── Individual step — horizontal ──────────────────────── */
6325
+ .muka-progress-tracker--horizontal .muka-progress-tracker__step {
6421
6326
  display: flex;
6422
6327
  flex-direction: column;
6423
6328
  align-items: center;
6424
- gap: 7px;
6425
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;
6426
6334
  }
6427
6335
 
6428
6336
  /* ─── Step indicator (circle) ───────────────────────────── */
@@ -6435,20 +6343,24 @@ body {
6435
6343
  justify-content: center;
6436
6344
  flex-shrink: 0;
6437
6345
  position: relative;
6346
+ z-index: 1;
6438
6347
  }
6439
6348
 
6440
6349
  /* Past: dark accent contrast circle with white checkmark */
6441
6350
  .muka-progress-tracker__indicator--past {
6442
6351
  background-color: var(--alias-color-accent-contrast);
6443
6352
  color: var(--color-text-default-inverse);
6353
+ }
6354
+
6355
+ .muka-progress-tracker--horizontal .muka-progress-tracker__indicator--past {
6444
6356
  cursor: pointer;
6445
6357
  }
6446
6358
 
6447
- .muka-progress-tracker__indicator--past:hover {
6359
+ .muka-progress-tracker--horizontal .muka-progress-tracker__indicator--past:hover {
6448
6360
  background-color: var(--alias-color-accent-pressed);
6449
6361
  }
6450
6362
 
6451
- .muka-progress-tracker__indicator--past:focus-visible {
6363
+ .muka-progress-tracker--horizontal .muka-progress-tracker__indicator--past:focus-visible {
6452
6364
  outline: 2px solid var(--color-border-focus);
6453
6365
  outline-offset: 2px;
6454
6366
  }
@@ -6475,6 +6387,18 @@ body {
6475
6387
  user-select: none;
6476
6388
  }
6477
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
+
6478
6402
  /* ─── Checkmark icon ────────────────────────────────────── */
6479
6403
  .muka-progress-tracker__check-icon {
6480
6404
  width: 20px;
@@ -6487,8 +6411,12 @@ body {
6487
6411
  color: var(--color-text-default-inverse);
6488
6412
  }
6489
6413
 
6490
- /* ─── Step label ────────────────────────────────────────── */
6491
- .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%);
6492
6420
  font-family: var(--text-label-sm-regular-fontFamily);
6493
6421
  font-weight: var(--text-label-sm-regular-fontWeight);
6494
6422
  font-size: var(--text-label-sm-regular-fontSize);
@@ -6501,14 +6429,14 @@ body {
6501
6429
  text-overflow: ellipsis;
6502
6430
  }
6503
6431
 
6504
- /* Current step label is bold */
6505
- .muka-progress-tracker__label--current {
6432
+ /* Current step label is bold (horizontal only) */
6433
+ .muka-progress-tracker--horizontal .muka-progress-tracker__label--current {
6506
6434
  font-family: var(--text-label-sm-bold-fontFamily);
6507
6435
  font-weight: var(--text-label-sm-bold-fontWeight);
6508
6436
  }
6509
6437
 
6510
- /* ─── Connectors layer (behind indicators) ──────────────── */
6511
- .muka-progress-tracker__connectors {
6438
+ /* ─── Connectors layer (behind indicators) — horizontal ─── */
6439
+ .muka-progress-tracker--horizontal .muka-progress-tracker__connectors {
6512
6440
  display: flex;
6513
6441
  align-items: center;
6514
6442
  /* Horizontal padding = indicator radius (32/2 = 16px) so lines meet circle centers */
@@ -6518,20 +6446,31 @@ body {
6518
6446
  z-index: 1;
6519
6447
  }
6520
6448
 
6521
- /* ─── Individual connector line ─────────────────────────── */
6522
- .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;
6523
6455
  flex: 1 0 0;
6524
6456
  height: 4px;
6525
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;
6526
6467
  }
6527
6468
 
6528
- /* Past: solid dark line */
6529
- .muka-progress-tracker__connector--past {
6469
+ .muka-progress-tracker--horizontal .muka-progress-tracker__connector--past .muka-progress-tracker__connector-line {
6530
6470
  background-color: var(--alias-color-accent-contrast);
6531
6471
  }
6532
6472
 
6533
- /* Current: gradient from past (dark) toward current step */
6534
- .muka-progress-tracker__connector--current {
6473
+ .muka-progress-tracker--horizontal .muka-progress-tracker__connector--current .muka-progress-tracker__connector-line {
6535
6474
  background: linear-gradient(
6536
6475
  to right,
6537
6476
  var(--alias-color-accent-contrast) 0%,
@@ -6539,8 +6478,7 @@ body {
6539
6478
  );
6540
6479
  }
6541
6480
 
6542
- /* Current-right: gradient fading from current step into upcoming */
6543
- .muka-progress-tracker__connector--current-right {
6481
+ .muka-progress-tracker--horizontal .muka-progress-tracker__connector--current-right .muka-progress-tracker__connector-line {
6544
6482
  background: linear-gradient(
6545
6483
  to right,
6546
6484
  var(--alias-color-accent-default) 0%,
@@ -6549,128 +6487,343 @@ body {
6549
6487
  );
6550
6488
  }
6551
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
+
6552
6499
  /* Upcoming: solid gray line */
6553
6500
  .muka-progress-tracker__connector--upcoming {
6554
6501
  background-color: var(--color-surface-sunken);
6555
6502
  }
6556
6503
 
6504
+ /* ═══════════════════════════════════════════════════════════
6505
+ Vertical orientation
6506
+ ═══════════════════════════════════════════════════════════ */
6557
6507
 
6558
- /* ProgressAccordeon */
6559
- /* ProgressAccordeon Component Styles — Using Muka Design Tokens */
6560
-
6561
- /* ─── Root ──────────────────────────────────────────────── */
6562
- .muka-progress-accordeon {
6563
- container-type: inline-size;
6508
+ .muka-progress-tracker--vertical .muka-progress-tracker__track {
6564
6509
  display: flex;
6565
6510
  flex-direction: column;
6566
6511
  align-items: stretch;
6512
+ gap: var(--spacing-6);
6567
6513
  width: 100%;
6568
- /* Top padding provides the vertical rhythm between stacked steps */
6569
- padding-top: var(--spacing-8);
6570
6514
  }
6571
6515
 
6572
- /* Per-state gap: content-bearing steps are tighter, header-only steps looser */
6573
- .muka-progress-accordeon--current,
6574
- .muka-progress-accordeon--past.muka-progress-accordeon--expanded {
6575
- 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;
6576
6525
  }
6577
6526
 
6578
- .muka-progress-accordeon--upcoming,
6579
- .muka-progress-accordeon--past.muka-progress-accordeon--collapsed {
6580
- gap: var(--spacing-8);
6527
+ .muka-progress-tracker--vertical .muka-progress-tracker__step--interactive {
6528
+ cursor: pointer;
6581
6529
  }
6582
6530
 
6583
- /* Past steps group header + slot. The header↔content gap lives inside the
6584
- collapsing slot (as padding-top) so it collapses with the content, so the
6585
- body gap itself is 0. */
6586
- .muka-progress-accordeon__body {
6587
- display: flex;
6588
- flex-direction: column;
6589
- gap: 0;
6590
- width: 100%;
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;
6591
6535
  }
6592
6536
 
6593
- /* ─── Header ─────────────────────────────────────────────── */
6594
- .muka-progress-accordeon__header {
6537
+ /* Indicator column: circle only; connector is absolutely positioned on the step */
6538
+ .muka-progress-tracker--vertical .muka-progress-tracker__indicator-col {
6595
6539
  display: flex;
6596
6540
  flex-direction: column;
6597
- gap: var(--spacing-3);
6598
- width: 100%;
6541
+ align-items: center;
6542
+ flex-shrink: 0;
6543
+ position: relative;
6544
+ width: 32px;
6545
+ z-index: 1;
6599
6546
  }
6600
6547
 
6601
- .muka-progress-accordeon__header-row {
6602
- display: flex;
6603
- align-items: flex-start;
6604
- gap: var(--spacing-3);
6605
- width: 100%;
6606
- min-height: 40px;
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;
6607
6558
  }
6608
6559
 
6609
- .muka-progress-accordeon__heading-group {
6610
- display: flex;
6611
- flex: 1 0 0;
6612
- min-width: 0;
6613
- align-items: flex-start;
6614
- gap: var(--spacing-4);
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;
6615
6566
  }
6616
6567
 
6617
- /* Past steps carry 40px controls; nudge the heading to vertically centre it */
6618
- .muka-progress-accordeon--past .muka-progress-accordeon__heading-group {
6619
- padding-top: var(--spacing-1);
6568
+ .muka-progress-tracker__rounder--past {
6569
+ color: var(--alias-color-accent-contrast);
6620
6570
  }
6621
6571
 
6622
- .muka-progress-accordeon__controls {
6623
- display: flex;
6624
- flex-shrink: 0;
6625
- align-items: center;
6626
- gap: var(--spacing-3);
6572
+ .muka-progress-tracker__rounder--current {
6573
+ color: var(--alias-color-accent-default);
6627
6574
  }
6628
6575
 
6629
- /* ─── Step indicator (circle) ───────────────────────────── */
6630
- .muka-progress-accordeon__indicator {
6631
- width: 32px;
6632
- height: 32px;
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;
6633
6583
  flex-shrink: 0;
6634
- border-radius: var(--border-radius-full);
6635
- display: flex;
6636
- align-items: center;
6637
- justify-content: center;
6584
+ top: auto;
6585
+ right: auto;
6586
+ bottom: auto;
6587
+ left: auto;
6588
+ transform: none;
6638
6589
  }
6639
6590
 
6640
- /* Past: dark accent-contrast circle with inverse checkmark */
6641
- .muka-progress-accordeon__indicator--past {
6642
- background-color: var(--alias-color-accent-contrast);
6643
- color: var(--color-text-default-inverse);
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;
6644
6595
  }
6645
6596
 
6646
- /* Current: accent circle with inverse bold number */
6647
- .muka-progress-accordeon__indicator--current {
6648
- background-color: var(--alias-color-accent-default);
6649
- color: var(--color-text-default-inverse);
6597
+ .muka-progress-tracker--horizontal .muka-progress-tracker__rounder--end {
6598
+ margin-left: -5px;
6599
+ margin-right: 14px;
6650
6600
  }
6651
6601
 
6652
- /* Upcoming: sunken/muted circle with default-color number */
6653
- .muka-progress-accordeon__indicator--upcoming {
6654
- background-color: var(--color-surface-sunken);
6655
- color: var(--color-text-default-default);
6602
+ .muka-progress-tracker--vertical .muka-progress-tracker__rounder--start {
6603
+ left: 50%;
6604
+ top: 14px;
6605
+ transform: translateX(-50%);
6656
6606
  }
6657
6607
 
6658
- .muka-progress-accordeon__check-icon {
6659
- width: 20px;
6660
- height: 20px;
6661
- color: var(--color-text-default-inverse);
6608
+ .muka-progress-tracker--vertical .muka-progress-tracker__rounder--end {
6609
+ left: 50%;
6610
+ bottom: 14px;
6611
+ transform: translateX(-50%);
6662
6612
  }
6663
6613
 
6664
- .muka-progress-accordeon__number {
6665
- font-family: var(--text-label-md-bold-fontFamily);
6666
- font-weight: var(--text-label-md-bold-fontWeight);
6667
- font-size: var(--text-label-md-bold-fontSize);
6668
- line-height: var(--text-label-md-bold-lineHeight);
6669
- text-align: center;
6670
- user-select: none;
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
+ );
6671
6620
  }
6672
6621
 
6673
- /* Upcoming number is semibold (not bold) per Figma */
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. */
6739
+ .muka-progress-accordeon__body {
6740
+ display: flex;
6741
+ flex-direction: column;
6742
+ gap: 0;
6743
+ width: 100%;
6744
+ }
6745
+
6746
+ /* ─── Header ─────────────────────────────────────────────── */
6747
+ .muka-progress-accordeon__header {
6748
+ display: flex;
6749
+ flex-direction: column;
6750
+ gap: var(--spacing-3);
6751
+ width: 100%;
6752
+ }
6753
+
6754
+ .muka-progress-accordeon__header-row {
6755
+ display: flex;
6756
+ align-items: flex-start;
6757
+ gap: var(--spacing-3);
6758
+ width: 100%;
6759
+ min-height: 40px;
6760
+ }
6761
+
6762
+ .muka-progress-accordeon__heading-group {
6763
+ display: flex;
6764
+ flex: 1 0 0;
6765
+ min-width: 0;
6766
+ align-items: flex-start;
6767
+ gap: var(--spacing-4);
6768
+ }
6769
+
6770
+ /* Past steps carry 40px controls; nudge the heading to vertically centre it */
6771
+ .muka-progress-accordeon--past .muka-progress-accordeon__heading-group {
6772
+ padding-top: var(--spacing-1);
6773
+ }
6774
+
6775
+ .muka-progress-accordeon__controls {
6776
+ display: flex;
6777
+ flex-shrink: 0;
6778
+ align-items: center;
6779
+ gap: var(--spacing-3);
6780
+ }
6781
+
6782
+ /* ─── Step indicator (circle) ───────────────────────────── */
6783
+ .muka-progress-accordeon__indicator {
6784
+ width: 32px;
6785
+ height: 32px;
6786
+ flex-shrink: 0;
6787
+ border-radius: var(--border-radius-full);
6788
+ display: flex;
6789
+ align-items: center;
6790
+ justify-content: center;
6791
+ }
6792
+
6793
+ /* Past: dark accent-contrast circle with inverse checkmark */
6794
+ .muka-progress-accordeon__indicator--past {
6795
+ background-color: var(--alias-color-accent-contrast);
6796
+ color: var(--color-text-default-inverse);
6797
+ }
6798
+
6799
+ /* Current: accent circle with inverse bold number */
6800
+ .muka-progress-accordeon__indicator--current {
6801
+ background-color: var(--alias-color-accent-default);
6802
+ color: var(--color-text-default-inverse);
6803
+ }
6804
+
6805
+ /* Upcoming: sunken/muted circle with default-color number */
6806
+ .muka-progress-accordeon__indicator--upcoming {
6807
+ background-color: var(--color-surface-sunken);
6808
+ color: var(--color-text-default-default);
6809
+ }
6810
+
6811
+ .muka-progress-accordeon__check-icon {
6812
+ width: 20px;
6813
+ height: 20px;
6814
+ color: var(--color-text-default-inverse);
6815
+ }
6816
+
6817
+ .muka-progress-accordeon__number {
6818
+ font-family: var(--text-label-md-bold-fontFamily);
6819
+ font-weight: var(--text-label-md-bold-fontWeight);
6820
+ font-size: var(--text-label-md-bold-fontSize);
6821
+ line-height: var(--text-label-md-bold-lineHeight);
6822
+ text-align: center;
6823
+ user-select: none;
6824
+ }
6825
+
6826
+ /* Upcoming number is semibold (not bold) per Figma */
6674
6827
  .muka-progress-accordeon__indicator--upcoming .muka-progress-accordeon__number {
6675
6828
  font-family: var(--text-label-md-semibold-fontFamily);
6676
6829
  font-weight: var(--text-label-md-semibold-fontWeight);
@@ -7634,32 +7787,62 @@ body {
7634
7787
  .muka-menu__search {
7635
7788
  display: flex;
7636
7789
  align-items: center;
7637
- gap: var(--spacing-2);
7638
7790
  flex-shrink: 0;
7639
- height: var(--size-3xl, 48px);
7640
- padding: 0 var(--spacing-4);
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);
7641
7794
  border-bottom: var(--border-width-regular) solid var(--color-border-default);
7642
7795
  }
7643
7796
 
7644
- .muka-menu__search-icon {
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 {
7645
7803
  display: flex;
7804
+ align-items: center;
7805
+ justify-content: center;
7646
7806
  flex-shrink: 0;
7807
+ width: var(--size-2xl, 2rem);
7808
+ height: var(--size-2xl, 2rem);
7647
7809
  color: var(--color-text-subtle-default);
7648
7810
  }
7649
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
+
7650
7825
  .muka-menu__search-input {
7651
7826
  flex: 1 1 auto;
7652
7827
  min-width: 0;
7653
7828
  border: none;
7654
7829
  outline: none;
7655
7830
  background: transparent;
7656
- font-family: var(--text-label-md-regular-font-family);
7657
- font-size: var(--text-label-md-regular-font-size);
7658
- font-weight: var(--text-label-md-regular-font-weight);
7659
- line-height: var(--text-label-md-regular-line-height);
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);
7660
7836
  color: var(--color-text-default-default);
7661
7837
  }
7662
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
+
7663
7846
  .muka-menu__search-input::placeholder {
7664
7847
  color: var(--color-text-subtle-default);
7665
7848
  }
@@ -7670,22 +7853,27 @@ body {
7670
7853
  appearance: none;
7671
7854
  }
7672
7855
 
7673
- .muka-menu__search-clear {
7856
+ .muka-menu__empty {
7674
7857
  display: flex;
7675
7858
  align-items: center;
7676
- justify-content: center;
7677
- flex-shrink: 0;
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 {
7678
7871
  padding: 0;
7679
7872
  border: none;
7680
7873
  background: transparent;
7681
- color: var(--color-text-subtle-default);
7682
7874
  cursor: pointer;
7683
7875
  }
7684
7876
 
7685
- .muka-menu__search-clear:hover {
7686
- color: var(--color-text-default-default);
7687
- }
7688
-
7689
7877
  .muka-menu__match {
7690
7878
  font-weight: var(--font-weight-bold, 700);
7691
7879
  }
@@ -7722,22 +7910,26 @@ body {
7722
7910
  /* ─── Menu Item ──────────────────────────────────────────────────────────── */
7723
7911
 
7724
7912
  .muka-menu__item {
7913
+ position: relative;
7725
7914
  display: flex;
7726
7915
  align-items: center;
7727
7916
  gap: var(--menu-item-gap);
7728
7917
  min-height: var(--menu-item-height);
7729
- 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);
7730
7921
  border-radius: var(--menu-item-border-radius);
7731
7922
  cursor: pointer;
7732
7923
  user-select: none;
7733
7924
  outline: none;
7734
- font-family: var(--text-label-md-regular-font-family);
7735
- font-size: var(--text-label-md-regular-font-size);
7736
- font-weight: var(--text-label-md-regular-font-weight);
7737
- 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);
7738
7929
  color: var(--menu-item-color-default-foreground);
7739
7930
  background-color: var(--menu-item-color-default-background);
7740
7931
  transition: background-color 100ms ease, color 100ms ease;
7932
+ white-space: nowrap;
7741
7933
  }
7742
7934
 
7743
7935
  .muka-menu__item:hover,
@@ -7803,25 +7995,55 @@ body {
7803
7995
  }
7804
7996
 
7805
7997
  .muka-menu__item-label {
7806
- flex: 1;
7998
+ flex: 1 1 auto;
7807
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);
7808
8006
  }
7809
8007
 
7810
8008
  .muka-menu__item-shortcut {
7811
8009
  flex-shrink: 0;
7812
8010
  margin-left: auto;
7813
8011
  padding-left: var(--menu-item-gap);
7814
- font-size: var(--text-label-sm-regular-font-size);
7815
- color: var(--menu-shortcut-color);
7816
- 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;
7817
8036
  }
7818
8037
 
7819
8038
  .muka-menu__item-chevron {
8039
+ position: absolute;
8040
+ top: var(--spacing-2);
8041
+ right: var(--spacing-2);
8042
+ bottom: var(--spacing-2);
7820
8043
  display: flex;
7821
8044
  align-items: center;
7822
8045
  justify-content: center;
7823
- flex-shrink: 0;
7824
- margin-left: auto;
8046
+ width: var(--icon-size-default, 1.5rem);
7825
8047
  color: var(--menu-shortcut-color);
7826
8048
  }
7827
8049
 
@@ -7842,9 +8064,10 @@ body {
7842
8064
  padding-left: var(--menu-item-padding-x);
7843
8065
  }
7844
8066
 
8067
+ .muka-menu__item--checkbox-trailing,
7845
8068
  .muka-menu__item--radio-check {
7846
- position: relative;
7847
- padding-right: calc(var(--menu-item-padding-x) + var(--menu-checkbox-indicator-size) + var(--menu-item-gap));
8069
+ /* Same reserved right gutter as default items — trailing indicator floats. */
8070
+ padding-right: var(--menu-item-padding-right);
7848
8071
  }
7849
8072
 
7850
8073
  .muka-menu__item--radio-check[data-state='checked'] {
@@ -7852,11 +8075,27 @@ body {
7852
8075
  }
7853
8076
 
7854
8077
  .muka-menu__item-indicator--trailing {
8078
+ /* Match enter-hint trailer: 8px inset, 24px box (override leading indicator size). */
7855
8079
  position: absolute;
7856
- right: var(--menu-item-padding-x);
7857
- top: 50%;
7858
- transform: translateY(-50%);
7859
- color: var(--menu-checkbox-indicator-color);
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%;
7860
8099
  }
7861
8100
 
7862
8101
  .muka-menu__radio-dot {
@@ -7882,10 +8121,10 @@ body {
7882
8121
 
7883
8122
  .muka-menu__group-label {
7884
8123
  padding: var(--menu-group-label-padding-y) var(--menu-group-label-padding-x);
7885
- font-family: var(--text-label-sm-semibold-font-family);
7886
- font-size: var(--text-label-sm-semibold-font-size);
7887
- font-weight: var(--text-label-sm-semibold-font-weight);
7888
- 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);
7889
8128
  color: var(--menu-group-label-color);
7890
8129
  text-transform: uppercase;
7891
8130
  letter-spacing: 0.05em;
@@ -8568,27 +8807,58 @@ li.muka-listitem {
8568
8807
  color: var(--input-field-color-disabled-foreground);
8569
8808
  }
8570
8809
 
8571
- /* Icons */
8810
+ /* Icons — Figma inputfield content: sm 16px, md 20px, lg 24px. */
8572
8811
  .muka-input__icon {
8573
8812
  display: inline-flex;
8574
8813
  align-items: center;
8814
+ justify-content: center;
8575
8815
  flex-shrink: 0;
8576
8816
  color: var(--color-text-subtle-default);
8577
- width: var(--icon-size-default);
8578
- height: var(--icon-size-default);
8817
+ width: var(--icon-size-sm);
8818
+ height: var(--icon-size-sm);
8579
8819
  }
8580
8820
 
8581
8821
  .muka-input__field--sm .muka-input__icon {
8582
- width: var(--icon-size-sm);
8583
- height: var(--icon-size-sm);
8822
+ width: var(--icon-size-xs);
8823
+ height: var(--icon-size-xs);
8584
8824
  }
8585
8825
 
8586
8826
  .muka-input__field--lg .muka-input__icon {
8587
- width: var(--icon-size-lg);
8588
- height: var(--icon-size-lg);
8827
+ width: var(--icon-size-default);
8828
+ height: var(--icon-size-default);
8589
8829
  }
8590
8830
 
8591
- .muka-input__field--disabled .muka-input__icon {
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);
8856
+ }
8857
+
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 {
8592
8862
  color: var(--input-field-color-disabled-foreground);
8593
8863
  }
8594
8864
 
@@ -8597,6 +8867,12 @@ li.muka-listitem {
8597
8867
  height: 100%;
8598
8868
  }
8599
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
+
8600
8876
  /* Helper text */
8601
8877
  .muka-input__helper {
8602
8878
  font-family: var(--text-label-sm-regular-fontFamily);
@@ -9147,114 +9423,342 @@ li.muka-listitem {
9147
9423
  height: var(--emptystate-icon-size-md);
9148
9424
  }
9149
9425
 
9150
- .muka-emptystate--lg .muka-emptystate__visual {
9151
- width: var(--emptystate-icon-size-lg);
9152
- height: var(--emptystate-icon-size-lg);
9426
+ .muka-emptystate--lg .muka-emptystate__visual {
9427
+ width: var(--emptystate-icon-size-lg);
9428
+ height: var(--emptystate-icon-size-lg);
9429
+ }
9430
+
9431
+ .muka-emptystate__visual svg {
9432
+ width: 100%;
9433
+ height: 100%;
9434
+ }
9435
+
9436
+ .muka-emptystate__visual img {
9437
+ width: 100%;
9438
+ height: 100%;
9439
+ object-fit: contain;
9440
+ }
9441
+
9442
+ /* Content */
9443
+ .muka-emptystate__content {
9444
+ display: flex;
9445
+ flex-direction: column;
9446
+ gap: var(--spacing-2);
9447
+ }
9448
+
9449
+ .muka-emptystate--left .muka-emptystate__content {
9450
+ align-items: flex-start;
9451
+ }
9452
+
9453
+ /* Title */
9454
+ .muka-emptystate__title {
9455
+ color: var(--emptystate-title-color);
9456
+ margin: 0;
9457
+ font-family: var(--text-heading-h4-fontFamily);
9458
+ font-weight: var(--text-heading-h4-fontWeight);
9459
+ font-size: var(--text-heading-h4-fontSize);
9460
+ line-height: var(--text-heading-h4-lineHeight);
9461
+ }
9462
+
9463
+ .muka-emptystate--sm .muka-emptystate__title {
9464
+ font-family: var(--text-label-lg-semibold-fontFamily);
9465
+ font-weight: var(--text-label-lg-semibold-fontWeight);
9466
+ font-size: var(--text-label-lg-semibold-fontSize);
9467
+ line-height: var(--text-label-lg-semibold-lineHeight);
9468
+ }
9469
+
9470
+ .muka-emptystate--lg .muka-emptystate__title {
9471
+ font-family: var(--text-heading-h3-fontFamily);
9472
+ font-weight: var(--text-heading-h3-fontWeight);
9473
+ font-size: var(--text-heading-h3-fontSize);
9474
+ line-height: var(--text-heading-h3-lineHeight);
9475
+ }
9476
+
9477
+ /* Description */
9478
+ .muka-emptystate__description {
9479
+ color: var(--emptystate-description-color);
9480
+ margin: 0;
9481
+ font-family: var(--text-body-sm-regular-fontFamily);
9482
+ font-weight: var(--text-body-sm-regular-fontWeight);
9483
+ font-size: var(--text-body-sm-regular-fontSize);
9484
+ line-height: var(--text-body-sm-regular-lineHeight);
9485
+ }
9486
+
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);
9153
9635
  }
9154
9636
 
9155
- .muka-emptystate__visual svg {
9156
- width: 100%;
9157
- height: 100%;
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));
9158
9639
  }
9159
9640
 
9160
- .muka-emptystate__visual img {
9161
- width: 100%;
9162
- height: 100%;
9163
- object-fit: contain;
9641
+ .muka-dropdown-select__field--disabled {
9642
+ opacity: 0.5;
9643
+ cursor: not-allowed;
9164
9644
  }
9165
9645
 
9166
- /* Content */
9167
- .muka-emptystate__content {
9646
+ .muka-dropdown-select__content {
9647
+ position: relative;
9648
+ z-index: 1;
9168
9649
  display: flex;
9169
- flex-direction: column;
9170
- gap: var(--spacing-2);
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;
9171
9655
  }
9172
9656
 
9173
- .muka-emptystate--left .muka-emptystate__content {
9174
- align-items: flex-start;
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);
9175
9664
  }
9176
9665
 
9177
- /* Title */
9178
- .muka-emptystate__title {
9179
- color: var(--emptystate-title-color);
9180
- margin: 0;
9181
- font-family: var(--text-heading-h4-fontFamily);
9182
- font-weight: var(--text-heading-h4-fontWeight);
9183
- font-size: var(--text-heading-h4-fontSize);
9184
- line-height: var(--text-heading-h4-lineHeight);
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;
9185
9675
  }
9186
9676
 
9187
- .muka-emptystate--sm .muka-emptystate__title {
9188
- font-family: var(--text-label-lg-semibold-fontFamily);
9189
- font-weight: var(--text-label-lg-semibold-fontWeight);
9190
- font-size: var(--text-label-lg-semibold-fontSize);
9191
- line-height: var(--text-label-lg-semibold-lineHeight);
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;
9192
9686
  }
9193
9687
 
9194
- .muka-emptystate--lg .muka-emptystate__title {
9195
- font-family: var(--text-heading-h3-fontFamily);
9196
- font-weight: var(--text-heading-h3-fontWeight);
9197
- font-size: var(--text-heading-h3-fontSize);
9198
- line-height: var(--text-heading-h3-lineHeight);
9688
+ .muka-dropdown-select__field--multiline {
9689
+ align-items: flex-start;
9690
+ min-height: 7rem;
9199
9691
  }
9200
9692
 
9201
- /* Description */
9202
- .muka-emptystate__description {
9203
- color: var(--emptystate-description-color);
9204
- margin: 0;
9205
- font-family: var(--text-body-sm-regular-fontFamily);
9206
- font-weight: var(--text-body-sm-regular-fontWeight);
9207
- font-size: var(--text-body-sm-regular-fontSize);
9208
- line-height: var(--text-body-sm-regular-lineHeight);
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;
9209
9709
  }
9210
9710
 
9211
- .muka-emptystate--md .muka-emptystate__description {
9212
- font-family: var(--text-body-base-regular-fontFamily);
9213
- font-weight: var(--text-body-base-regular-fontWeight);
9214
- font-size: var(--text-body-base-regular-fontSize);
9215
- line-height: var(--text-body-base-regular-lineHeight);
9711
+ .muka-dropdown-select__field--multiline .muka-dropdown-select__menu-button {
9712
+ align-items: flex-start;
9713
+ padding-top: calc(var(--spacing-2) + 8px);
9216
9714
  }
9217
9715
 
9218
- .muka-emptystate--lg .muka-emptystate__description {
9219
- font-family: var(--text-body-lg-regular-fontFamily);
9220
- font-weight: var(--text-body-lg-regular-fontWeight);
9221
- font-size: var(--text-body-lg-regular-fontSize);
9222
- 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);
9223
9724
  }
9224
9725
 
9225
- /* Actions */
9226
- .muka-emptystate__actions {
9227
- display: flex;
9228
- gap: var(--emptystate-actions-gap);
9229
- margin-top: var(--emptystate-actions-marginTop);
9230
- flex-wrap: wrap;
9231
- 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);
9232
9730
  }
9233
9731
 
9234
- .muka-emptystate--left .muka-emptystate__actions {
9235
- 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);
9236
9735
  }
9237
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
+ }
9238
9741
 
9239
- /* EmojiPicker */
9240
- /* 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
+ }
9241
9750
 
9242
- .muka-emoji-picker {
9243
- display: grid;
9244
- grid-template-columns: repeat(8, 1fr);
9245
- gap: var(--spacing-1);
9246
- padding: var(--spacing-2);
9247
- max-height: 12rem;
9248
- overflow-y: auto;
9249
- background: var(--color-surface-level2);
9250
- border: var(--border-width-regular, 1px) solid var(--color-border-default);
9251
- border-radius: var(--radius-lg);
9252
- 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);
9253
9758
  }
9254
9759
 
9255
- .muka-emoji-picker__glyph {
9256
- font-size: 1.25rem;
9257
- line-height: 1;
9760
+ .muka-dropdown-select__menu {
9761
+ /* Uses Menu min-width (280px); grows with long labels; left-aligned to the field. */
9258
9762
  }
9259
9763
 
9260
9764
 
@@ -10752,191 +11256,175 @@ li.muka-listitem {
10752
11256
 
10753
11257
 
10754
11258
  /* Combobox */
10755
- /* Combobox Component Styles */
11259
+ /* Combobox — Figma Input Combobox (free-input chips + suggestion Menu) */
10756
11260
 
10757
- /* ─── 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
+ }
10758
11267
 
10759
- /*
10760
- * The clear control is a sibling of the trigger, not a child (a <button> may
10761
- * not contain interactive content), so it is overlaid on the trigger's trailing
10762
- * padding. The trigger reserves that space with padding-right below.
10763
- */
10764
- .muka-combobox__trigger-group {
10765
- position: relative;
10766
- display: block;
11268
+ .muka-combobox--full-width {
10767
11269
  width: 100%;
10768
11270
  }
10769
11271
 
10770
- /* ─── 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
+ }
10771
11276
 
10772
- .muka-combobox {
10773
- 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;
10774
11300
  align-items: center;
10775
- gap: var(--spacing-2);
10776
11301
  width: 100%;
10777
- padding: 0 var(--muka-combobox-trailing-space) 0 var(--input-field-padding-x);
11302
+ position: relative;
11303
+ isolation: isolate;
11304
+ box-sizing: border-box;
10778
11305
  background-color: var(--input-field-color-default-background);
10779
11306
  border: var(--border-width-regular) solid var(--input-field-color-default-border);
10780
- color: var(--color-text-default-default);
10781
- text-align: left;
10782
- cursor: pointer;
10783
- font-family: var(--text-body-md-regular-fontFamily);
10784
- font-weight: var(--text-body-md-regular-fontWeight);
10785
- font-size: var(--text-body-md-regular-fontSize);
10786
- line-height: var(--text-body-md-regular-lineHeight);
10787
- -webkit-tap-highlight-color: transparent;
10788
- transition: border-color 0.12s ease;
10789
-
10790
- /* Room for the chevron overlaid on the trailing edge. */
10791
- --muka-combobox-trailing-space: calc(
10792
- var(--input-field-padding-x) + var(--icon-size-sm) + var(--spacing-2)
10793
- );
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;
10794
11311
  }
10795
11312
 
10796
- /* …and for the clear button next to it, when one is rendered. */
10797
- .muka-combobox--clearable {
10798
- --muka-combobox-trailing-space: calc(
10799
- var(--input-field-padding-x) + var(--icon-size-sm) + var(--spacing-2) +
10800
- var(--icon-size-xs) + var(--spacing-1) * 2 + var(--spacing-2)
10801
- );
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;
10802
11320
  }
10803
11321
 
10804
- .muka-combobox--sm {
11322
+ .muka-combobox__field--sm {
10805
11323
  min-height: var(--input-field-height-sm);
10806
11324
  border-radius: var(--input-field-radius-sm);
10807
11325
  }
10808
11326
 
10809
- .muka-combobox--md {
11327
+ .muka-combobox__field--md {
10810
11328
  min-height: var(--input-field-height-default);
10811
11329
  border-radius: var(--input-field-radius-md);
10812
11330
  }
10813
11331
 
10814
- .muka-combobox--lg {
11332
+ .muka-combobox__field--lg {
10815
11333
  min-height: var(--input-field-height-lg);
10816
11334
  border-radius: var(--input-field-radius-lg);
10817
11335
  }
10818
11336
 
10819
- .muka-combobox:hover:not(:disabled) {
10820
- 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);
10821
11342
  }
10822
11343
 
10823
- .muka-combobox:focus-visible {
10824
- outline: none;
10825
- 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));
10826
11346
  }
10827
11347
 
10828
- .muka-combobox--disabled,
10829
- .muka-combobox:disabled {
11348
+ .muka-combobox__field--disabled {
10830
11349
  opacity: 0.5;
10831
11350
  cursor: not-allowed;
10832
11351
  }
10833
11352
 
10834
- .muka-combobox--placeholder .muka-combobox__label {
10835
- color: var(--color-text-subtle-default);
10836
- }
10837
-
10838
- .muka-combobox__leading {
10839
- display: inline-flex;
10840
- align-items: center;
10841
- justify-content: center;
10842
- flex-shrink: 0;
10843
- color: var(--color-text-subtle-default);
10844
- }
10845
-
10846
- .muka-combobox__label {
10847
- flex: 1 1 auto;
10848
- min-width: 0;
10849
- white-space: nowrap;
10850
- overflow: hidden;
10851
- text-overflow: ellipsis;
11353
+ .muka-combobox__field--multiline {
11354
+ align-items: flex-start;
11355
+ min-height: 7rem;
10852
11356
  }
10853
11357
 
10854
- /* ─── Trailing controls (clear + chevron) ─────────────── */
10855
-
10856
- .muka-combobox__actions {
10857
- position: absolute;
10858
- top: 0;
10859
- right: var(--input-field-padding-x);
10860
- height: 100%;
11358
+ .muka-combobox__chips {
10861
11359
  display: flex;
10862
- align-items: center;
11360
+ flex: 1 1 auto;
11361
+ flex-wrap: wrap;
10863
11362
  gap: var(--spacing-2);
10864
- /*
10865
- * The strip sits on top of the trigger, so it must not swallow taps meant to
10866
- * open the picker. Only the clear button takes pointer events back.
10867
- */
10868
- pointer-events: none;
10869
- }
10870
-
10871
- .muka-combobox__clear,
10872
- .muka-combobox__chevron {
10873
- display: inline-flex;
10874
- align-items: center;
10875
- justify-content: center;
10876
- flex-shrink: 0;
10877
- color: var(--color-text-subtle-default);
10878
- }
10879
-
10880
- .muka-combobox__clear {
10881
- pointer-events: auto;
10882
- cursor: pointer;
10883
- padding: var(--spacing-1);
10884
- border: none;
10885
- background: none;
10886
- border-radius: var(--radius-sm);
10887
- -webkit-tap-highlight-color: transparent;
10888
- }
10889
-
10890
- .muka-combobox__clear:hover {
10891
- color: var(--color-text-default-default);
10892
- background-color: var(--color-surface-level1);
11363
+ align-items: center;
11364
+ min-width: 0;
11365
+ width: 100%;
11366
+ position: relative;
11367
+ z-index: 1;
10893
11368
  }
10894
11369
 
10895
- .muka-combobox__clear:focus-visible {
10896
- outline: 2px solid var(--color-border-focus);
10897
- outline-offset: 2px;
10898
- 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);
10899
11385
  }
10900
11386
 
10901
- .muka-combobox--disabled ~ .muka-combobox__actions,
10902
- .muka-combobox:disabled ~ .muka-combobox__actions {
10903
- opacity: 0.5;
11387
+ .muka-combobox__input::placeholder {
11388
+ color: var(--color-text-subtle-default);
10904
11389
  }
10905
11390
 
10906
- /* ─── Picker sheet body ───────────────────────────────── */
10907
-
10908
- .muka-combobox__picker {
10909
- display: flex;
10910
- flex-direction: column;
10911
- gap: var(--spacing-3);
10912
- padding: 0 var(--spacing-4) var(--spacing-4);
10913
- min-height: 0;
10914
- 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);
10915
11398
  }
10916
11399
 
10917
- .muka-combobox__title {
11400
+ .muka-combobox__error {
10918
11401
  margin: 0;
10919
- padding: var(--spacing-2) 0;
10920
- color: var(--color-text-default-default);
10921
- font-family: var(--text-heading-sm-fontFamily);
10922
- font-weight: var(--text-heading-sm-fontWeight);
10923
- font-size: var(--text-heading-sm-fontSize);
10924
- 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);
10925
11407
  }
10926
11408
 
10927
- .muka-combobox__search {
10928
- position: sticky;
10929
- top: 0;
10930
- z-index: 1;
10931
- padding-bottom: var(--spacing-2);
10932
- 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;
10933
11421
  }
10934
11422
 
10935
- .muka-combobox__list {
10936
- flex: 1 1 auto;
10937
- min-height: 0;
10938
- overflow-y: auto;
10939
- -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);
10940
11428
  }
10941
11429
 
10942
11430
 
@@ -14485,3 +14973,195 @@ button.muka-chat-photo-grid__tile:focus-visible {
14485
14973
  border-bottom: none;
14486
14974
  }
14487
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
+