@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
@@ -1922,12 +1922,12 @@ body {
1922
1922
  --dialog-drag-handle-radius: 999rem;
1923
1923
  --dialog-padding-x: 1rem;
1924
1924
  --menu-content-color-background: #fdfcfd;
1925
- --menu-content-color-border: #f2eff3;
1925
+ --menu-content-color-border: #d0cdd7;
1926
1926
  --menu-content-border-radius: 0.75rem;
1927
1927
  --menu-content-border-width: 0.0625rem;
1928
1928
  --menu-content-shadow: 0 0 1px 0 rgba(0, 0, 0, 0.090), 0 8px 16px 0 rgba(0, 0, 0, 0.090);
1929
1929
  --menu-content-padding: 0.25rem;
1930
- --menu-content-min-width: 12rem;
1930
+ --menu-content-min-width: 280px;
1931
1931
  --menu-content-max-height: 20rem;
1932
1932
  --menu-content-scroll-height: 20.625rem;
1933
1933
  --menu-item-color-default-background: transparent;
@@ -1950,7 +1950,8 @@ body {
1950
1950
  --menu-item-color-destructive-hover-icon: #cd2b31;
1951
1951
  --menu-item-border-radius: 0.1875rem;
1952
1952
  --menu-item-padding-x: 0.75rem;
1953
- --menu-item-padding-y: 0.5rem;
1953
+ --menu-item-padding-right: 2.25rem;
1954
+ --menu-item-padding-y: 0.75rem;
1954
1955
  --menu-item-gap: 0.5rem;
1955
1956
  --menu-item-height: 2.5rem;
1956
1957
  --menu-separator-color: #f2eff3;
@@ -2561,6 +2562,98 @@ body {
2561
2562
  }
2562
2563
 
2563
2564
 
2565
+ /* Typography */
2566
+ .muka-typography-catalog {
2567
+ display: flex;
2568
+ flex-direction: column;
2569
+ gap: 2.5rem;
2570
+ max-width: 52rem;
2571
+ color: var(--color-text-default-default);
2572
+ }
2573
+
2574
+ .muka-typography-catalog__intro {
2575
+ display: flex;
2576
+ flex-direction: column;
2577
+ gap: 0.75rem;
2578
+ }
2579
+
2580
+ .muka-typography-catalog__heading {
2581
+ margin: 0;
2582
+ font-family: var(--text-heading-md-fontFamily);
2583
+ font-weight: var(--text-heading-md-fontWeight);
2584
+ font-size: var(--text-heading-md-fontSize);
2585
+ line-height: var(--text-heading-md-lineHeight);
2586
+ }
2587
+
2588
+ .muka-typography-catalog__lede {
2589
+ margin: 0;
2590
+ font-family: var(--text-body-base-regular-fontFamily);
2591
+ font-weight: var(--text-body-base-regular-fontWeight);
2592
+ font-size: var(--text-body-base-regular-fontSize);
2593
+ line-height: var(--text-body-base-regular-lineHeight);
2594
+ color: var(--color-text-subtle-default);
2595
+ }
2596
+
2597
+ .muka-typography-catalog__lede code {
2598
+ font-family: var(--alias-font-mono-family, ui-monospace, monospace);
2599
+ font-size: 0.875em;
2600
+ }
2601
+
2602
+ .muka-typography-section {
2603
+ display: flex;
2604
+ flex-direction: column;
2605
+ gap: 1rem;
2606
+ }
2607
+
2608
+ .muka-typography-section__header {
2609
+ display: flex;
2610
+ flex-direction: column;
2611
+ gap: 0.35rem;
2612
+ padding-bottom: 0.75rem;
2613
+ border-bottom: 1px solid var(--color-border-default);
2614
+ }
2615
+
2616
+ .muka-typography-section__title {
2617
+ margin: 0;
2618
+ font-family: var(--text-heading-sm-fontFamily);
2619
+ font-weight: var(--text-heading-sm-fontWeight);
2620
+ font-size: var(--text-heading-sm-fontSize);
2621
+ line-height: var(--text-heading-sm-lineHeight);
2622
+ }
2623
+
2624
+ .muka-typography-section__description {
2625
+ margin: 0;
2626
+ font-family: var(--text-body-sm-regular-fontFamily);
2627
+ font-weight: var(--text-body-sm-regular-fontWeight);
2628
+ font-size: var(--text-body-sm-regular-fontSize);
2629
+ line-height: var(--text-body-sm-regular-lineHeight);
2630
+ color: var(--color-text-subtle-default);
2631
+ }
2632
+
2633
+ .muka-typography-section__list {
2634
+ display: flex;
2635
+ flex-direction: column;
2636
+ gap: 1rem;
2637
+ }
2638
+
2639
+ .muka-typography-specimen {
2640
+ display: flex;
2641
+ flex-direction: column;
2642
+ gap: 0.35rem;
2643
+ }
2644
+
2645
+ .muka-typography-specimen__token {
2646
+ font-family: var(--alias-font-mono-family, ui-monospace, monospace);
2647
+ font-size: 0.75rem;
2648
+ line-height: 1;
2649
+ color: var(--color-text-subtle-default);
2650
+ }
2651
+
2652
+ .muka-typography-specimen__sample {
2653
+ margin: 0;
2654
+ }
2655
+
2656
+
2564
2657
  /* TypingIndicator */
2565
2658
  /* TypingIndicator Component Styles */
2566
2659
 
@@ -4580,84 +4673,6 @@ body {
4580
4673
  }
4581
4674
 
4582
4675
 
4583
- /* Spinner */
4584
- /* Spinner Component Styles */
4585
-
4586
- .muka-spinner {
4587
- display: inline-flex;
4588
- align-items: center;
4589
- justify-content: center;
4590
- color: var(--color-text-default-default);
4591
- line-height: 0;
4592
- }
4593
-
4594
- .muka-spinner--subtle {
4595
- color: var(--color-text-subtle-default);
4596
- }
4597
-
4598
- .muka-spinner--inverse {
4599
- color: var(--color-text-inverse-default);
4600
- }
4601
-
4602
- .muka-spinner__circle {
4603
- display: inline-block;
4604
- border-radius: 50%;
4605
- border-style: solid;
4606
- border-color: currentColor;
4607
- border-right-color: transparent;
4608
- animation: muka-spinner-rotate 0.7s linear infinite;
4609
- box-sizing: border-box;
4610
- }
4611
-
4612
- /* ─── Sizes ───────────────────────────────────────────── */
4613
-
4614
- .muka-spinner--sm .muka-spinner__circle {
4615
- width: 16px;
4616
- height: 16px;
4617
- border-width: 2px;
4618
- }
4619
-
4620
- .muka-spinner--md .muka-spinner__circle {
4621
- width: 20px;
4622
- height: 20px;
4623
- border-width: 2px;
4624
- }
4625
-
4626
- .muka-spinner--lg .muka-spinner__circle {
4627
- width: 24px;
4628
- height: 24px;
4629
- border-width: 3px;
4630
- }
4631
-
4632
- /* ─── Visually-hidden label ───────────────────────────── */
4633
-
4634
- .muka-spinner__sr-label {
4635
- position: absolute;
4636
- width: 1px;
4637
- height: 1px;
4638
- padding: 0;
4639
- margin: -1px;
4640
- overflow: hidden;
4641
- clip: rect(0, 0, 0, 0);
4642
- white-space: nowrap;
4643
- border: 0;
4644
- }
4645
-
4646
- /* ─── Reduced motion ──────────────────────────────────── */
4647
-
4648
- @keyframes muka-spinner-rotate {
4649
- to {
4650
- transform: rotate(360deg);
4651
- }
4652
- }
4653
-
4654
- @media (prefers-reduced-motion: reduce) {
4655
- .muka-spinner__circle {
4656
- animation-duration: 2.5s;
4657
- }
4658
- }
4659
-
4660
-
4661
4676
  /* SpecList */
4662
4677
  /* SpecList Component Styles */
4663
4678
 
@@ -4743,49 +4758,58 @@ body {
4743
4758
  }
4744
4759
 
4745
4760
 
4746
- /* SmsOtpField */
4747
- /* SmsOtpField Component Styles - Using Muka Design Tokens */
4761
+ /* Spinner */
4762
+ /* Spinner Component Styles */
4748
4763
 
4749
- /* Wrapper */
4750
- .muka-sms-otp-field {
4764
+ .muka-spinner {
4751
4765
  display: inline-flex;
4752
- flex-direction: column;
4753
- gap: var(--spacing-2);
4766
+ align-items: center;
4767
+ justify-content: center;
4768
+ color: var(--color-text-default-default);
4769
+ line-height: 0;
4754
4770
  }
4755
4771
 
4756
- /* Label */
4757
- .muka-sms-otp-field__label {
4758
- color: var(--color-text-default-default);
4759
- cursor: pointer;
4772
+ .muka-spinner--subtle {
4773
+ color: var(--color-text-subtle-default);
4760
4774
  }
4761
4775
 
4762
- .muka-sms-otp-field__label--sm {
4763
- font-family: var(--text-label-sm-semibold-fontFamily);
4764
- font-weight: var(--text-label-sm-semibold-fontWeight);
4765
- font-size: var(--text-label-sm-semibold-fontSize);
4766
- line-height: var(--text-label-sm-semibold-lineHeight);
4776
+ .muka-spinner--inverse {
4777
+ color: var(--color-text-inverse-default);
4767
4778
  }
4768
4779
 
4769
- .muka-sms-otp-field__label--md {
4770
- font-family: var(--text-label-md-semibold-fontFamily);
4771
- font-weight: var(--text-label-md-semibold-fontWeight);
4772
- font-size: var(--text-label-md-semibold-fontSize);
4773
- line-height: var(--text-label-md-semibold-lineHeight);
4780
+ .muka-spinner__circle {
4781
+ display: inline-block;
4782
+ border-radius: 50%;
4783
+ border-style: solid;
4784
+ border-color: currentColor;
4785
+ border-right-color: transparent;
4786
+ animation: muka-spinner-rotate 0.7s linear infinite;
4787
+ box-sizing: border-box;
4774
4788
  }
4775
4789
 
4776
- .muka-sms-otp-field__label--lg {
4777
- font-family: var(--text-label-lg-semibold-fontFamily);
4778
- font-weight: var(--text-label-lg-semibold-fontWeight);
4779
- font-size: var(--text-label-lg-semibold-fontSize);
4780
- line-height: var(--text-label-lg-semibold-lineHeight);
4790
+ /* ─── Sizes ───────────────────────────────────────────── */
4791
+
4792
+ .muka-spinner--sm .muka-spinner__circle {
4793
+ width: 16px;
4794
+ height: 16px;
4795
+ border-width: 2px;
4781
4796
  }
4782
4797
 
4783
- .muka-sms-otp-field__required {
4784
- color: var(--color-state-error-foreground);
4798
+ .muka-spinner--md .muka-spinner__circle {
4799
+ width: 20px;
4800
+ height: 20px;
4801
+ border-width: 2px;
4785
4802
  }
4786
4803
 
4787
- /* Hidden input for browser autofill */
4788
- .muka-sms-otp-field__hidden-input {
4804
+ .muka-spinner--lg .muka-spinner__circle {
4805
+ width: 24px;
4806
+ height: 24px;
4807
+ border-width: 3px;
4808
+ }
4809
+
4810
+ /* ─── Visually-hidden label ───────────────────────────── */
4811
+
4812
+ .muka-spinner__sr-label {
4789
4813
  position: absolute;
4790
4814
  width: 1px;
4791
4815
  height: 1px;
@@ -4795,143 +4819,20 @@ body {
4795
4819
  clip: rect(0, 0, 0, 0);
4796
4820
  white-space: nowrap;
4797
4821
  border: 0;
4798
- opacity: 0;
4799
- pointer-events: none;
4800
4822
  }
4801
4823
 
4802
- /* Digits container */
4803
- .muka-sms-otp-field__digits {
4804
- display: flex;
4805
- align-items: center;
4806
- gap: var(--spacing-2);
4807
- }
4824
+ /* ─── Reduced motion ──────────────────────────────────── */
4808
4825
 
4809
- /* Separator */
4810
- .muka-sms-otp-field__separator {
4811
- display: inline-flex;
4812
- align-items: center;
4813
- justify-content: center;
4814
- color: var(--color-text-subtle-default);
4815
- font-size: 1.25rem;
4816
- padding: 0 var(--spacing-1);
4817
- user-select: none;
4826
+ @keyframes muka-spinner-rotate {
4827
+ to {
4828
+ transform: rotate(360deg);
4829
+ }
4818
4830
  }
4819
4831
 
4820
- /* Individual digit box */
4821
- .muka-sms-otp-field__digit {
4822
- display: flex;
4823
- align-items: center;
4824
- justify-content: center;
4825
- text-align: center;
4826
- background-color: var(--input-field-color-default-background);
4827
- border: var(--border-width-regular) solid var(--input-field-color-default-border);
4828
- color: var(--input-field-color-default-foreground);
4829
- transition: border-color 0.2s ease, background-color 0.2s ease;
4830
- box-sizing: border-box;
4831
- caret-color: var(--input-field-color-focus-border);
4832
- -moz-appearance: textfield;
4833
- appearance: textfield;
4834
- }
4835
-
4836
- /* Remove spinner buttons */
4837
- .muka-sms-otp-field__digit::-webkit-inner-spin-button,
4838
- .muka-sms-otp-field__digit::-webkit-outer-spin-button {
4839
- -webkit-appearance: none;
4840
- margin: 0;
4841
- }
4842
-
4843
- /* Size variants */
4844
- .muka-sms-otp-field__digit--sm {
4845
- width: 36px;
4846
- height: var(--input-field-height-sm);
4847
- border-radius: var(--input-field-radius-sm);
4848
- font-family: var(--text-input-sm-fontFamily);
4849
- font-weight: var(--text-input-sm-fontWeight);
4850
- font-size: var(--text-input-sm-fontSize);
4851
- line-height: var(--text-input-sm-lineHeight);
4852
- }
4853
-
4854
- .muka-sms-otp-field__digit--md {
4855
- width: 44px;
4856
- height: var(--input-field-height-default);
4857
- border-radius: var(--input-field-radius-md);
4858
- font-family: var(--text-input-md-fontFamily);
4859
- font-weight: var(--text-input-md-fontWeight);
4860
- font-size: var(--text-input-md-fontSize);
4861
- line-height: var(--text-input-md-lineHeight);
4862
- }
4863
-
4864
- .muka-sms-otp-field__digit--lg {
4865
- width: 52px;
4866
- height: var(--input-field-height-lg);
4867
- border-radius: var(--input-field-radius-lg);
4868
- font-family: var(--text-input-lg-fontFamily);
4869
- font-weight: var(--text-input-lg-fontWeight);
4870
- font-size: var(--text-input-lg-fontSize);
4871
- line-height: var(--text-input-lg-lineHeight);
4872
- }
4873
-
4874
- /* Inset shadow (matches Input component) */
4875
- .muka-sms-otp-field__digit::after {
4876
- content: '';
4877
- position: absolute;
4878
- inset: 0;
4879
- border-radius: inherit;
4880
- box-shadow: inset 0 1px 2px 0 rgba(26, 26, 26, 0.08);
4881
- pointer-events: none;
4882
- }
4883
-
4884
- /* Focus state */
4885
- .muka-sms-otp-field__digit--focused:not(.muka-sms-otp-field__digit--disabled) {
4886
- border-width: var(--border-width-bold);
4887
- border-color: var(--input-field-color-focus-border);
4888
- background-color: var(--input-field-color-focus-background);
4889
- outline: none;
4890
- }
4891
-
4892
- /* Also handle native :focus for keyboard navigation */
4893
- .muka-sms-otp-field__digit:focus {
4894
- outline: none;
4895
- }
4896
-
4897
- /* Error state */
4898
- .muka-sms-otp-field__digit--error:not(.muka-sms-otp-field__digit--disabled) {
4899
- border-width: var(--border-width-bold);
4900
- border-color: var(--input-field-color-error-border);
4901
- background-color: var(--input-field-color-error-background);
4902
- }
4903
-
4904
- /* Disabled state */
4905
- .muka-sms-otp-field__digit--disabled {
4906
- background-color: var(--input-field-color-disabled-background);
4907
- border-color: var(--input-field-color-disabled-border);
4908
- color: var(--input-field-color-disabled-foreground);
4909
- cursor: not-allowed;
4910
- }
4911
-
4912
- /* Filled state — slightly bolder text */
4913
- .muka-sms-otp-field__digit--filled {
4914
- color: var(--input-field-color-default-foreground);
4915
- }
4916
-
4917
- /* Helper text */
4918
- .muka-sms-otp-field__helper {
4919
- font-family: var(--text-label-sm-regular-fontFamily);
4920
- font-weight: var(--text-label-sm-regular-fontWeight);
4921
- font-size: var(--text-label-sm-regular-fontSize);
4922
- line-height: var(--text-label-sm-regular-lineHeight);
4923
- color: var(--color-text-subtle-default);
4924
- margin: 0;
4925
- }
4926
-
4927
- /* Error message */
4928
- .muka-sms-otp-field__error {
4929
- font-family: var(--text-label-sm-regular-fontFamily);
4930
- font-weight: var(--text-label-sm-regular-fontWeight);
4931
- font-size: var(--text-label-sm-regular-fontSize);
4932
- line-height: var(--text-label-sm-regular-lineHeight);
4933
- color: var(--color-state-error-foreground);
4934
- margin: 0;
4832
+ @media (prefers-reduced-motion: reduce) {
4833
+ .muka-spinner__circle {
4834
+ animation-duration: 2.5s;
4835
+ }
4935
4836
  }
4936
4837
 
4937
4838
 
@@ -5741,25 +5642,26 @@ body {
5741
5642
 
5742
5643
  .muka-scrollbar__thumb {
5743
5644
  position: absolute;
5744
- left: 50%;
5645
+ left: 0;
5745
5646
  top: 0;
5746
5647
  z-index: 1;
5747
5648
  display: flex;
5748
5649
  align-items: center;
5749
5650
  justify-content: center;
5750
- width: 14px;
5751
- margin-left: -7px;
5651
+ width: 100%;
5652
+ /* Figma: scrollbar thumb fill = surface/level3 */
5653
+ background-color: var(--color-surface-level3);
5752
5654
  cursor: grab;
5753
5655
  touch-action: none;
5754
5656
  }
5755
5657
 
5756
5658
  .muka-scrollbar--horizontal .muka-scrollbar__thumb {
5757
5659
  left: 0;
5758
- top: 50%;
5660
+ top: 0;
5759
5661
  width: auto;
5760
- height: 14px;
5662
+ height: 100%;
5761
5663
  margin-left: 0;
5762
- margin-top: -7px;
5664
+ margin-top: 0;
5763
5665
  }
5764
5666
 
5765
5667
  .muka-scrollbar__thumb:active {
@@ -6396,19 +6298,22 @@ body {
6396
6298
  /* ─── Root ──────────────────────────────────────────────── */
6397
6299
  .muka-progress-tracker {
6398
6300
  width: 100%;
6301
+ }
6302
+
6303
+ .muka-progress-tracker--horizontal {
6399
6304
  padding-bottom: var(--spacing-7);
6400
6305
  }
6401
6306
 
6402
6307
  /* ─── Track (layered container) ─────────────────────────── */
6403
- .muka-progress-tracker__track {
6308
+ .muka-progress-tracker--horizontal .muka-progress-tracker__track {
6404
6309
  position: relative;
6405
6310
  /* Vertical padding = (indicator size - connector height) / 2 = (32 - 4) / 2 = 14px */
6406
6311
  padding-top: 14px;
6407
6312
  padding-bottom: 14px;
6408
6313
  }
6409
6314
 
6410
- /* ─── Steps layer (on top) ──────────────────────────────── */
6411
- .muka-progress-tracker__steps {
6315
+ /* ─── Steps layer (on top) — horizontal ─────────────────── */
6316
+ .muka-progress-tracker--horizontal .muka-progress-tracker__steps {
6412
6317
  position: absolute;
6413
6318
  inset: 0;
6414
6319
  display: flex;
@@ -6417,13 +6322,16 @@ body {
6417
6322
  z-index: 2;
6418
6323
  }
6419
6324
 
6420
- /* ─── Individual step ───────────────────────────────────── */
6421
- .muka-progress-tracker__step {
6325
+ /* ─── Individual step — horizontal ──────────────────────── */
6326
+ .muka-progress-tracker--horizontal .muka-progress-tracker__step {
6422
6327
  display: flex;
6423
6328
  flex-direction: column;
6424
6329
  align-items: center;
6425
- gap: 7px;
6426
6330
  position: relative;
6331
+ /* Labels are absolutely positioned so the step stays 32px and
6332
+ circle centers line up with the connector padding. */
6333
+ width: 32px;
6334
+ flex: 0 0 32px;
6427
6335
  }
6428
6336
 
6429
6337
  /* ─── Step indicator (circle) ───────────────────────────── */
@@ -6436,20 +6344,24 @@ body {
6436
6344
  justify-content: center;
6437
6345
  flex-shrink: 0;
6438
6346
  position: relative;
6347
+ z-index: 1;
6439
6348
  }
6440
6349
 
6441
6350
  /* Past: dark accent contrast circle with white checkmark */
6442
6351
  .muka-progress-tracker__indicator--past {
6443
6352
  background-color: var(--alias-color-accent-contrast);
6444
6353
  color: var(--color-text-default-inverse);
6354
+ }
6355
+
6356
+ .muka-progress-tracker--horizontal .muka-progress-tracker__indicator--past {
6445
6357
  cursor: pointer;
6446
6358
  }
6447
6359
 
6448
- .muka-progress-tracker__indicator--past:hover {
6360
+ .muka-progress-tracker--horizontal .muka-progress-tracker__indicator--past:hover {
6449
6361
  background-color: var(--alias-color-accent-pressed);
6450
6362
  }
6451
6363
 
6452
- .muka-progress-tracker__indicator--past:focus-visible {
6364
+ .muka-progress-tracker--horizontal .muka-progress-tracker__indicator--past:focus-visible {
6453
6365
  outline: 2px solid var(--color-border-focus);
6454
6366
  outline-offset: 2px;
6455
6367
  }
@@ -6476,6 +6388,18 @@ body {
6476
6388
  user-select: none;
6477
6389
  }
6478
6390
 
6391
+ .muka-progress-tracker--horizontal .muka-progress-tracker__indicator--upcoming .muka-progress-tracker__number {
6392
+ font-family: var(--text-label-md-bold-fontFamily);
6393
+ font-weight: var(--text-label-md-bold-fontWeight);
6394
+ }
6395
+
6396
+ .muka-progress-tracker--vertical .muka-progress-tracker__indicator--upcoming .muka-progress-tracker__number {
6397
+ font-family: var(--text-label-md-semibold-fontFamily);
6398
+ font-weight: var(--text-label-md-semibold-fontWeight);
6399
+ font-size: var(--text-label-md-semibold-fontSize);
6400
+ line-height: var(--text-label-md-semibold-lineHeight);
6401
+ }
6402
+
6479
6403
  /* ─── Checkmark icon ────────────────────────────────────── */
6480
6404
  .muka-progress-tracker__check-icon {
6481
6405
  width: 20px;
@@ -6488,8 +6412,12 @@ body {
6488
6412
  color: var(--color-text-default-inverse);
6489
6413
  }
6490
6414
 
6491
- /* ─── Step label ────────────────────────────────────────── */
6492
- .muka-progress-tracker__label {
6415
+ /* ─── Step label — horizontal ───────────────────────────── */
6416
+ .muka-progress-tracker--horizontal .muka-progress-tracker__label {
6417
+ position: absolute;
6418
+ top: 39px;
6419
+ left: 50%;
6420
+ transform: translateX(-50%);
6493
6421
  font-family: var(--text-label-sm-regular-fontFamily);
6494
6422
  font-weight: var(--text-label-sm-regular-fontWeight);
6495
6423
  font-size: var(--text-label-sm-regular-fontSize);
@@ -6502,14 +6430,14 @@ body {
6502
6430
  text-overflow: ellipsis;
6503
6431
  }
6504
6432
 
6505
- /* Current step label is bold */
6506
- .muka-progress-tracker__label--current {
6433
+ /* Current step label is bold (horizontal only) */
6434
+ .muka-progress-tracker--horizontal .muka-progress-tracker__label--current {
6507
6435
  font-family: var(--text-label-sm-bold-fontFamily);
6508
6436
  font-weight: var(--text-label-sm-bold-fontWeight);
6509
6437
  }
6510
6438
 
6511
- /* ─── Connectors layer (behind indicators) ──────────────── */
6512
- .muka-progress-tracker__connectors {
6439
+ /* ─── Connectors layer (behind indicators) — horizontal ─── */
6440
+ .muka-progress-tracker--horizontal .muka-progress-tracker__connectors {
6513
6441
  display: flex;
6514
6442
  align-items: center;
6515
6443
  /* Horizontal padding = indicator radius (32/2 = 16px) so lines meet circle centers */
@@ -6519,20 +6447,31 @@ body {
6519
6447
  z-index: 1;
6520
6448
  }
6521
6449
 
6522
- /* ─── Individual connector line ─────────────────────────── */
6523
- .muka-progress-tracker__connector {
6450
+ /* Rounder, bar, rounder in a row. Chromium treats a negative gap as invalid,
6451
+ so the overlap is margins: the bar runs 2px under each circle. */
6452
+ .muka-progress-tracker--horizontal .muka-progress-tracker__connector {
6453
+ display: flex;
6454
+ flex-direction: row;
6455
+ align-items: center;
6524
6456
  flex: 1 0 0;
6525
6457
  height: 4px;
6526
6458
  min-width: 1px;
6459
+ position: relative;
6460
+ overflow: visible;
6461
+ background: none;
6462
+ }
6463
+
6464
+ .muka-progress-tracker--horizontal .muka-progress-tracker__connector-line {
6465
+ flex: 1 1 auto;
6466
+ height: 4px;
6467
+ min-width: 1px;
6527
6468
  }
6528
6469
 
6529
- /* Past: solid dark line */
6530
- .muka-progress-tracker__connector--past {
6470
+ .muka-progress-tracker--horizontal .muka-progress-tracker__connector--past .muka-progress-tracker__connector-line {
6531
6471
  background-color: var(--alias-color-accent-contrast);
6532
6472
  }
6533
6473
 
6534
- /* Current: gradient from past (dark) toward current step */
6535
- .muka-progress-tracker__connector--current {
6474
+ .muka-progress-tracker--horizontal .muka-progress-tracker__connector--current .muka-progress-tracker__connector-line {
6536
6475
  background: linear-gradient(
6537
6476
  to right,
6538
6477
  var(--alias-color-accent-contrast) 0%,
@@ -6540,8 +6479,7 @@ body {
6540
6479
  );
6541
6480
  }
6542
6481
 
6543
- /* Current-right: gradient fading from current step into upcoming */
6544
- .muka-progress-tracker__connector--current-right {
6482
+ .muka-progress-tracker--horizontal .muka-progress-tracker__connector--current-right .muka-progress-tracker__connector-line {
6545
6483
  background: linear-gradient(
6546
6484
  to right,
6547
6485
  var(--alias-color-accent-default) 0%,
@@ -6550,128 +6488,343 @@ body {
6550
6488
  );
6551
6489
  }
6552
6490
 
6491
+ .muka-progress-tracker--horizontal .muka-progress-tracker__connector--upcoming .muka-progress-tracker__connector-line {
6492
+ background-color: var(--color-surface-sunken);
6493
+ }
6494
+
6495
+ /* Past: solid dark line (vertical; horizontal uses the inner line) */
6496
+ .muka-progress-tracker__connector--past {
6497
+ background-color: var(--alias-color-accent-contrast);
6498
+ }
6499
+
6553
6500
  /* Upcoming: solid gray line */
6554
6501
  .muka-progress-tracker__connector--upcoming {
6555
6502
  background-color: var(--color-surface-sunken);
6556
6503
  }
6557
6504
 
6505
+ /* ═══════════════════════════════════════════════════════════
6506
+ Vertical orientation
6507
+ ═══════════════════════════════════════════════════════════ */
6558
6508
 
6559
- /* ProgressAccordeon */
6560
- /* ProgressAccordeon Component Styles — Using Muka Design Tokens */
6561
-
6562
- /* ─── Root ──────────────────────────────────────────────── */
6563
- .muka-progress-accordeon {
6564
- container-type: inline-size;
6509
+ .muka-progress-tracker--vertical .muka-progress-tracker__track {
6565
6510
  display: flex;
6566
6511
  flex-direction: column;
6567
6512
  align-items: stretch;
6513
+ gap: var(--spacing-6);
6568
6514
  width: 100%;
6569
- /* Top padding provides the vertical rhythm between stacked steps */
6570
- padding-top: var(--spacing-8);
6571
6515
  }
6572
6516
 
6573
- /* Per-state gap: content-bearing steps are tighter, header-only steps looser */
6574
- .muka-progress-accordeon--current,
6575
- .muka-progress-accordeon--past.muka-progress-accordeon--expanded {
6576
- gap: var(--spacing-6);
6517
+ .muka-progress-tracker--vertical .muka-progress-tracker__step {
6518
+ display: flex;
6519
+ flex-direction: row;
6520
+ align-items: flex-start;
6521
+ gap: var(--spacing-3);
6522
+ padding-right: var(--spacing-1);
6523
+ position: relative;
6524
+ width: 100%;
6525
+ min-height: 32px;
6577
6526
  }
6578
6527
 
6579
- .muka-progress-accordeon--upcoming,
6580
- .muka-progress-accordeon--past.muka-progress-accordeon--collapsed {
6581
- gap: var(--spacing-8);
6528
+ .muka-progress-tracker--vertical .muka-progress-tracker__step--interactive {
6529
+ cursor: pointer;
6582
6530
  }
6583
6531
 
6584
- /* Past steps group header + slot. The header↔content gap lives inside the
6585
- collapsing slot (as padding-top) so it collapses with the content, so the
6586
- body gap itself is 0. */
6587
- .muka-progress-accordeon__body {
6588
- display: flex;
6589
- flex-direction: column;
6590
- gap: 0;
6591
- width: 100%;
6532
+ .muka-progress-tracker--vertical .muka-progress-tracker__step--interactive:focus-visible {
6533
+ outline: 2px solid var(--color-border-focus);
6534
+ outline-offset: 4px;
6535
+ border-radius: 20px;
6592
6536
  }
6593
6537
 
6594
- /* ─── Header ─────────────────────────────────────────────── */
6595
- .muka-progress-accordeon__header {
6538
+ /* Indicator column: circle only; connector is absolutely positioned on the step */
6539
+ .muka-progress-tracker--vertical .muka-progress-tracker__indicator-col {
6596
6540
  display: flex;
6597
6541
  flex-direction: column;
6598
- gap: var(--spacing-3);
6599
- width: 100%;
6542
+ align-items: center;
6543
+ flex-shrink: 0;
6544
+ position: relative;
6545
+ width: 32px;
6546
+ z-index: 1;
6600
6547
  }
6601
6548
 
6602
- .muka-progress-accordeon__header-row {
6603
- display: flex;
6604
- align-items: flex-start;
6605
- gap: var(--spacing-3);
6606
- width: 100%;
6607
- min-height: 40px;
6549
+ /* Vertical connector: from mid-indicator through gap to next mid-indicator */
6550
+ .muka-progress-tracker--vertical .muka-progress-tracker__connector {
6551
+ position: absolute;
6552
+ left: 14px; /* (32px indicator - 4px line) / 2 */
6553
+ top: 16px;
6554
+ /* Through track gap (spacing-6) into the next indicator's top half */
6555
+ bottom: calc(-1 * var(--spacing-6) - 16px);
6556
+ width: 4px;
6557
+ z-index: 0;
6558
+ overflow: visible;
6608
6559
  }
6609
6560
 
6610
- .muka-progress-accordeon__heading-group {
6611
- display: flex;
6612
- flex: 1 0 0;
6613
- min-width: 0;
6614
- align-items: flex-start;
6615
- gap: var(--spacing-4);
6561
+ /* Divider rounders: circle bleeds into the connector (Figma Divider Rounder) */
6562
+ .muka-progress-tracker__rounder {
6563
+ position: absolute;
6564
+ display: block;
6565
+ pointer-events: none;
6566
+ overflow: visible;
6616
6567
  }
6617
6568
 
6618
- /* Past steps carry 40px controls; nudge the heading to vertically centre it */
6619
- .muka-progress-accordeon--past .muka-progress-accordeon__heading-group {
6620
- padding-top: var(--spacing-1);
6569
+ .muka-progress-tracker__rounder--past {
6570
+ color: var(--alias-color-accent-contrast);
6621
6571
  }
6622
6572
 
6623
- .muka-progress-accordeon__controls {
6624
- display: flex;
6625
- flex-shrink: 0;
6626
- align-items: center;
6627
- gap: var(--spacing-3);
6573
+ .muka-progress-tracker__rounder--current {
6574
+ color: var(--alias-color-accent-default);
6628
6575
  }
6629
6576
 
6630
- /* ─── Step indicator (circle) ───────────────────────────── */
6631
- .muka-progress-accordeon__indicator {
6632
- width: 32px;
6633
- height: 32px;
6577
+ .muka-progress-tracker__rounder--upcoming {
6578
+ color: var(--color-surface-sunken);
6579
+ }
6580
+
6581
+ .muka-progress-tracker--horizontal .muka-progress-tracker__rounder {
6582
+ position: relative;
6583
+ z-index: 1;
6634
6584
  flex-shrink: 0;
6635
- border-radius: var(--border-radius-full);
6636
- display: flex;
6637
- align-items: center;
6638
- justify-content: center;
6585
+ top: auto;
6586
+ right: auto;
6587
+ bottom: auto;
6588
+ left: auto;
6589
+ transform: none;
6639
6590
  }
6640
6591
 
6641
- /* Past: dark accent-contrast circle with inverse checkmark */
6642
- .muka-progress-accordeon__indicator--past {
6643
- background-color: var(--alias-color-accent-contrast);
6644
- color: var(--color-text-default-inverse);
6592
+ .muka-progress-tracker--horizontal .muka-progress-tracker__rounder--start {
6593
+ margin-left: 14px;
6594
+ /* Rounder overhangs the circle by 3px; -5px tucks the bar 2px under the circle. */
6595
+ margin-right: -5px;
6645
6596
  }
6646
6597
 
6647
- /* Current: accent circle with inverse bold number */
6648
- .muka-progress-accordeon__indicator--current {
6649
- background-color: var(--alias-color-accent-default);
6650
- color: var(--color-text-default-inverse);
6598
+ .muka-progress-tracker--horizontal .muka-progress-tracker__rounder--end {
6599
+ margin-left: -5px;
6600
+ margin-right: 14px;
6651
6601
  }
6652
6602
 
6653
- /* Upcoming: sunken/muted circle with default-color number */
6654
- .muka-progress-accordeon__indicator--upcoming {
6655
- background-color: var(--color-surface-sunken);
6656
- color: var(--color-text-default-default);
6603
+ .muka-progress-tracker--vertical .muka-progress-tracker__rounder--start {
6604
+ left: 50%;
6605
+ top: 14px;
6606
+ transform: translateX(-50%);
6657
6607
  }
6658
6608
 
6659
- .muka-progress-accordeon__check-icon {
6660
- width: 20px;
6661
- height: 20px;
6662
- color: var(--color-text-default-inverse);
6609
+ .muka-progress-tracker--vertical .muka-progress-tracker__rounder--end {
6610
+ left: 50%;
6611
+ bottom: 14px;
6612
+ transform: translateX(-50%);
6663
6613
  }
6664
6614
 
6665
- .muka-progress-accordeon__number {
6666
- font-family: var(--text-label-md-bold-fontFamily);
6667
- font-weight: var(--text-label-md-bold-fontWeight);
6668
- font-size: var(--text-label-md-bold-fontSize);
6669
- line-height: var(--text-label-md-bold-lineHeight);
6670
- text-align: center;
6671
- user-select: none;
6615
+ .muka-progress-tracker--vertical .muka-progress-tracker__connector--current {
6616
+ background: linear-gradient(
6617
+ to bottom,
6618
+ var(--alias-color-accent-contrast) 0%,
6619
+ var(--alias-color-accent-default) 100%
6620
+ );
6672
6621
  }
6673
6622
 
6674
- /* Upcoming number is semibold (not bold) per Figma */
6623
+ .muka-progress-tracker--vertical .muka-progress-tracker__connector--current-right {
6624
+ background: linear-gradient(
6625
+ to bottom,
6626
+ var(--alias-color-accent-default) 0%,
6627
+ var(--alias-color-accent-default) 15%,
6628
+ var(--color-surface-sunken) 50%
6629
+ );
6630
+ }
6631
+
6632
+ /* Vertical label: body/base/regular, wraps, not bold for current */
6633
+ .muka-progress-tracker--vertical .muka-progress-tracker__label {
6634
+ font-family: var(--text-body-base-regular-fontFamily);
6635
+ font-weight: var(--text-body-base-regular-fontWeight);
6636
+ font-size: var(--text-body-base-regular-fontSize);
6637
+ line-height: var(--text-body-base-regular-lineHeight);
6638
+ color: var(--color-text-default-default);
6639
+ text-align: left;
6640
+ flex: 1 0 0;
6641
+ min-width: 0;
6642
+ padding-top: var(--spacing-1);
6643
+ padding-bottom: var(--spacing-1);
6644
+ word-break: break-word;
6645
+ }
6646
+
6647
+ /* Current label stays regular weight in vertical layout */
6648
+ .muka-progress-tracker--vertical .muka-progress-tracker__label--current {
6649
+ font-family: var(--text-body-base-regular-fontFamily);
6650
+ font-weight: var(--text-body-base-regular-fontWeight);
6651
+ }
6652
+
6653
+ /* Ensure step content paints above hover/selected backgrounds */
6654
+ .muka-progress-tracker--vertical .muka-progress-tracker__indicator-col,
6655
+ .muka-progress-tracker--vertical .muka-progress-tracker__label {
6656
+ position: relative;
6657
+ z-index: 1;
6658
+ }
6659
+
6660
+ /* ─── Hover halo (vertical interactive only) ────────────── */
6661
+ .muka-progress-tracker--vertical .muka-progress-tracker__step--interactive:hover::before,
6662
+ .muka-progress-tracker--vertical .muka-progress-tracker__step--interactive:active::before,
6663
+ .muka-progress-tracker--vertical .muka-progress-tracker__step[data-selected='true']::before {
6664
+ content: '';
6665
+ position: absolute;
6666
+ background-color: var(--color-surface-level1);
6667
+ pointer-events: none;
6668
+ z-index: 0;
6669
+ }
6670
+
6671
+ /* Hover: 40px circle behind indicator only */
6672
+ .muka-progress-tracker--vertical .muka-progress-tracker__step--interactive:hover::before {
6673
+ left: -4px;
6674
+ top: -4px;
6675
+ width: 40px;
6676
+ height: 40px;
6677
+ border-radius: 20px;
6678
+ }
6679
+
6680
+ /* Selected / :active: pill behind full step row — wins over hover */
6681
+ .muka-progress-tracker--vertical .muka-progress-tracker__step--interactive:active::before,
6682
+ .muka-progress-tracker--vertical .muka-progress-tracker__step[data-selected='true']::before {
6683
+ left: -4px;
6684
+ right: -8px;
6685
+ top: -4px;
6686
+ bottom: -4px;
6687
+ width: auto;
6688
+ height: auto;
6689
+ border-radius: 20px;
6690
+ }
6691
+
6692
+ /* Selected steps without interactive class still show the pill */
6693
+ .muka-progress-tracker--vertical .muka-progress-tracker__step[data-selected='true']:not(.muka-progress-tracker__step--interactive)::before {
6694
+ content: '';
6695
+ position: absolute;
6696
+ left: -4px;
6697
+ right: -8px;
6698
+ top: -4px;
6699
+ bottom: -4px;
6700
+ background-color: var(--color-surface-level1);
6701
+ border-radius: 20px;
6702
+ pointer-events: none;
6703
+ z-index: 0;
6704
+ }
6705
+
6706
+ /* Connector stays behind indicators (indicator-col is z-index 1) */
6707
+ .muka-progress-tracker--vertical .muka-progress-tracker__connector {
6708
+ z-index: 0;
6709
+ }
6710
+
6711
+
6712
+ /* ProgressAccordeon */
6713
+ /* ProgressAccordeon Component Styles — Using Muka Design Tokens */
6714
+
6715
+ /* ─── Root ──────────────────────────────────────────────── */
6716
+ .muka-progress-accordeon {
6717
+ container-type: inline-size;
6718
+ display: flex;
6719
+ flex-direction: column;
6720
+ align-items: stretch;
6721
+ width: 100%;
6722
+ /* Top padding provides the vertical rhythm between stacked steps */
6723
+ padding-top: var(--spacing-8);
6724
+ }
6725
+
6726
+ /* Per-state gap: content-bearing steps are tighter, header-only steps looser */
6727
+ .muka-progress-accordeon--current,
6728
+ .muka-progress-accordeon--past.muka-progress-accordeon--expanded {
6729
+ gap: var(--spacing-6);
6730
+ }
6731
+
6732
+ .muka-progress-accordeon--upcoming,
6733
+ .muka-progress-accordeon--past.muka-progress-accordeon--collapsed {
6734
+ gap: var(--spacing-8);
6735
+ }
6736
+
6737
+ /* Past steps group header + slot. The header↔content gap lives inside the
6738
+ collapsing slot (as padding-top) so it collapses with the content, so the
6739
+ body gap itself is 0. */
6740
+ .muka-progress-accordeon__body {
6741
+ display: flex;
6742
+ flex-direction: column;
6743
+ gap: 0;
6744
+ width: 100%;
6745
+ }
6746
+
6747
+ /* ─── Header ─────────────────────────────────────────────── */
6748
+ .muka-progress-accordeon__header {
6749
+ display: flex;
6750
+ flex-direction: column;
6751
+ gap: var(--spacing-3);
6752
+ width: 100%;
6753
+ }
6754
+
6755
+ .muka-progress-accordeon__header-row {
6756
+ display: flex;
6757
+ align-items: flex-start;
6758
+ gap: var(--spacing-3);
6759
+ width: 100%;
6760
+ min-height: 40px;
6761
+ }
6762
+
6763
+ .muka-progress-accordeon__heading-group {
6764
+ display: flex;
6765
+ flex: 1 0 0;
6766
+ min-width: 0;
6767
+ align-items: flex-start;
6768
+ gap: var(--spacing-4);
6769
+ }
6770
+
6771
+ /* Past steps carry 40px controls; nudge the heading to vertically centre it */
6772
+ .muka-progress-accordeon--past .muka-progress-accordeon__heading-group {
6773
+ padding-top: var(--spacing-1);
6774
+ }
6775
+
6776
+ .muka-progress-accordeon__controls {
6777
+ display: flex;
6778
+ flex-shrink: 0;
6779
+ align-items: center;
6780
+ gap: var(--spacing-3);
6781
+ }
6782
+
6783
+ /* ─── Step indicator (circle) ───────────────────────────── */
6784
+ .muka-progress-accordeon__indicator {
6785
+ width: 32px;
6786
+ height: 32px;
6787
+ flex-shrink: 0;
6788
+ border-radius: var(--border-radius-full);
6789
+ display: flex;
6790
+ align-items: center;
6791
+ justify-content: center;
6792
+ }
6793
+
6794
+ /* Past: dark accent-contrast circle with inverse checkmark */
6795
+ .muka-progress-accordeon__indicator--past {
6796
+ background-color: var(--alias-color-accent-contrast);
6797
+ color: var(--color-text-default-inverse);
6798
+ }
6799
+
6800
+ /* Current: accent circle with inverse bold number */
6801
+ .muka-progress-accordeon__indicator--current {
6802
+ background-color: var(--alias-color-accent-default);
6803
+ color: var(--color-text-default-inverse);
6804
+ }
6805
+
6806
+ /* Upcoming: sunken/muted circle with default-color number */
6807
+ .muka-progress-accordeon__indicator--upcoming {
6808
+ background-color: var(--color-surface-sunken);
6809
+ color: var(--color-text-default-default);
6810
+ }
6811
+
6812
+ .muka-progress-accordeon__check-icon {
6813
+ width: 20px;
6814
+ height: 20px;
6815
+ color: var(--color-text-default-inverse);
6816
+ }
6817
+
6818
+ .muka-progress-accordeon__number {
6819
+ font-family: var(--text-label-md-bold-fontFamily);
6820
+ font-weight: var(--text-label-md-bold-fontWeight);
6821
+ font-size: var(--text-label-md-bold-fontSize);
6822
+ line-height: var(--text-label-md-bold-lineHeight);
6823
+ text-align: center;
6824
+ user-select: none;
6825
+ }
6826
+
6827
+ /* Upcoming number is semibold (not bold) per Figma */
6675
6828
  .muka-progress-accordeon__indicator--upcoming .muka-progress-accordeon__number {
6676
6829
  font-family: var(--text-label-md-semibold-fontFamily);
6677
6830
  font-weight: var(--text-label-md-semibold-fontWeight);
@@ -7635,32 +7788,62 @@ body {
7635
7788
  .muka-menu__search {
7636
7789
  display: flex;
7637
7790
  align-items: center;
7638
- gap: var(--spacing-2);
7639
7791
  flex-shrink: 0;
7640
- height: var(--size-3xl, 48px);
7641
- padding: 0 var(--spacing-4);
7792
+ /* Figma dropdown filter header: 48px, 8px inset, 32px icon slots. */
7793
+ height: var(--input-field-height-lg, 3rem);
7794
+ padding: 0 var(--spacing-2);
7642
7795
  border-bottom: var(--border-width-regular) solid var(--color-border-default);
7643
7796
  }
7644
7797
 
7645
- .muka-menu__search-icon {
7798
+ .muka-menu__search--sm {
7799
+ height: calc(var(--size-xl, 1.5rem) + var(--spacing-2) * 2);
7800
+ }
7801
+
7802
+ .muka-menu__search-icon,
7803
+ .muka-menu__search-clear {
7646
7804
  display: flex;
7805
+ align-items: center;
7806
+ justify-content: center;
7647
7807
  flex-shrink: 0;
7808
+ width: var(--size-2xl, 2rem);
7809
+ height: var(--size-2xl, 2rem);
7648
7810
  color: var(--color-text-subtle-default);
7649
7811
  }
7650
7812
 
7813
+ .muka-menu__search-icon .muka-icon,
7814
+ .muka-menu__search-clear .muka-icon,
7815
+ .muka-menu__search-clear:hover,
7816
+ .muka-menu__search-clear:hover .muka-icon {
7817
+ color: var(--color-text-subtle-default);
7818
+ }
7819
+
7820
+ .muka-menu__search--sm .muka-menu__search-icon,
7821
+ .muka-menu__search--sm .muka-menu__search-clear {
7822
+ width: var(--size-xl, 1.5rem);
7823
+ height: var(--size-xl, 1.5rem);
7824
+ }
7825
+
7651
7826
  .muka-menu__search-input {
7652
7827
  flex: 1 1 auto;
7653
7828
  min-width: 0;
7654
7829
  border: none;
7655
7830
  outline: none;
7656
7831
  background: transparent;
7657
- font-family: var(--text-label-md-regular-font-family);
7658
- font-size: var(--text-label-md-regular-font-size);
7659
- font-weight: var(--text-label-md-regular-font-weight);
7660
- line-height: var(--text-label-md-regular-line-height);
7832
+ padding: 0 var(--spacing-1);
7833
+ font-family: var(--text-input-md-fontFamily);
7834
+ font-size: var(--text-input-md-fontSize);
7835
+ font-weight: var(--text-input-md-fontWeight);
7836
+ line-height: var(--text-input-md-lineHeight);
7661
7837
  color: var(--color-text-default-default);
7662
7838
  }
7663
7839
 
7840
+ .muka-menu__search--sm .muka-menu__search-input {
7841
+ font-family: var(--text-input-sm-fontFamily);
7842
+ font-size: var(--text-input-sm-fontSize);
7843
+ font-weight: var(--text-input-sm-fontWeight);
7844
+ line-height: var(--text-input-sm-lineHeight);
7845
+ }
7846
+
7664
7847
  .muka-menu__search-input::placeholder {
7665
7848
  color: var(--color-text-subtle-default);
7666
7849
  }
@@ -7671,22 +7854,27 @@ body {
7671
7854
  appearance: none;
7672
7855
  }
7673
7856
 
7674
- .muka-menu__search-clear {
7857
+ .muka-menu__empty {
7675
7858
  display: flex;
7676
7859
  align-items: center;
7677
- justify-content: center;
7678
- flex-shrink: 0;
7860
+ min-height: var(--menu-item-height);
7861
+ padding: var(--menu-item-padding-y) var(--menu-item-padding-x);
7862
+ color: var(--color-text-subtle-default);
7863
+ font-family: var(--text-input-md-fontFamily);
7864
+ font-size: var(--text-input-md-fontSize);
7865
+ font-weight: var(--text-input-md-fontWeight);
7866
+ line-height: var(--text-input-md-lineHeight);
7867
+ pointer-events: none;
7868
+ user-select: none;
7869
+ }
7870
+
7871
+ .muka-menu__search-clear {
7679
7872
  padding: 0;
7680
7873
  border: none;
7681
7874
  background: transparent;
7682
- color: var(--color-text-subtle-default);
7683
7875
  cursor: pointer;
7684
7876
  }
7685
7877
 
7686
- .muka-menu__search-clear:hover {
7687
- color: var(--color-text-default-default);
7688
- }
7689
-
7690
7878
  .muka-menu__match {
7691
7879
  font-weight: var(--font-weight-bold, 700);
7692
7880
  }
@@ -7723,22 +7911,26 @@ body {
7723
7911
  /* ─── Menu Item ──────────────────────────────────────────────────────────── */
7724
7912
 
7725
7913
  .muka-menu__item {
7914
+ position: relative;
7726
7915
  display: flex;
7727
7916
  align-items: center;
7728
7917
  gap: var(--menu-item-gap);
7729
7918
  min-height: var(--menu-item-height);
7730
- padding: var(--menu-item-padding-y) var(--menu-item-padding-x);
7919
+ /* Right gutter always reserved for floating trailers (enter / check). */
7920
+ padding: var(--menu-item-padding-y) var(--menu-item-padding-right) var(--menu-item-padding-y)
7921
+ var(--menu-item-padding-x);
7731
7922
  border-radius: var(--menu-item-border-radius);
7732
7923
  cursor: pointer;
7733
7924
  user-select: none;
7734
7925
  outline: none;
7735
- font-family: var(--text-label-md-regular-font-family);
7736
- font-size: var(--text-label-md-regular-font-size);
7737
- font-weight: var(--text-label-md-regular-font-weight);
7738
- line-height: var(--text-label-md-regular-line-height);
7926
+ font-family: var(--text-label-md-regular-fontFamily);
7927
+ font-size: var(--text-label-md-regular-fontSize);
7928
+ font-weight: var(--text-label-md-regular-fontWeight);
7929
+ line-height: var(--text-label-md-regular-lineHeight);
7739
7930
  color: var(--menu-item-color-default-foreground);
7740
7931
  background-color: var(--menu-item-color-default-background);
7741
7932
  transition: background-color 100ms ease, color 100ms ease;
7933
+ white-space: nowrap;
7742
7934
  }
7743
7935
 
7744
7936
  .muka-menu__item:hover,
@@ -7804,25 +7996,55 @@ body {
7804
7996
  }
7805
7997
 
7806
7998
  .muka-menu__item-label {
7807
- flex: 1;
7999
+ flex: 1 1 auto;
7808
8000
  min-width: 0;
8001
+ white-space: nowrap;
8002
+ }
8003
+
8004
+ /* Shortcut trailers replace icons and sit with an 8px right inset. */
8005
+ .muka-menu__item--has-shortcut {
8006
+ padding-right: var(--spacing-2);
7809
8007
  }
7810
8008
 
7811
8009
  .muka-menu__item-shortcut {
7812
8010
  flex-shrink: 0;
7813
8011
  margin-left: auto;
7814
8012
  padding-left: var(--menu-item-gap);
7815
- font-size: var(--text-label-sm-regular-font-size);
7816
- color: var(--menu-shortcut-color);
7817
- opacity: 0.7;
8013
+ font-family: var(--text-label-sm-regular-fontFamily);
8014
+ font-size: var(--text-label-sm-regular-fontSize);
8015
+ font-weight: var(--text-label-sm-regular-fontWeight);
8016
+ line-height: var(--text-label-sm-regular-lineHeight);
8017
+ color: var(--color-text-muted-default);
8018
+ white-space: nowrap;
8019
+ }
8020
+
8021
+ .muka-menu__item-hint {
8022
+ /* Figma: trailer sits with 8px margin top / right / bottom; 24px glyph centered inside. */
8023
+ position: absolute;
8024
+ top: var(--spacing-2);
8025
+ right: var(--spacing-2);
8026
+ bottom: var(--spacing-2);
8027
+ display: none;
8028
+ align-items: center;
8029
+ justify-content: center;
8030
+ width: var(--icon-size-default, 1.5rem);
8031
+ color: var(--color-text-muted-default);
8032
+ pointer-events: none;
8033
+ }
8034
+
8035
+ .muka-menu__item--hint-enter[data-highlighted] .muka-menu__item-hint {
8036
+ display: flex;
7818
8037
  }
7819
8038
 
7820
8039
  .muka-menu__item-chevron {
8040
+ position: absolute;
8041
+ top: var(--spacing-2);
8042
+ right: var(--spacing-2);
8043
+ bottom: var(--spacing-2);
7821
8044
  display: flex;
7822
8045
  align-items: center;
7823
8046
  justify-content: center;
7824
- flex-shrink: 0;
7825
- margin-left: auto;
8047
+ width: var(--icon-size-default, 1.5rem);
7826
8048
  color: var(--menu-shortcut-color);
7827
8049
  }
7828
8050
 
@@ -7843,9 +8065,10 @@ body {
7843
8065
  padding-left: var(--menu-item-padding-x);
7844
8066
  }
7845
8067
 
8068
+ .muka-menu__item--checkbox-trailing,
7846
8069
  .muka-menu__item--radio-check {
7847
- position: relative;
7848
- padding-right: calc(var(--menu-item-padding-x) + var(--menu-checkbox-indicator-size) + var(--menu-item-gap));
8070
+ /* Same reserved right gutter as default items — trailing indicator floats. */
8071
+ padding-right: var(--menu-item-padding-right);
7849
8072
  }
7850
8073
 
7851
8074
  .muka-menu__item--radio-check[data-state='checked'] {
@@ -7853,11 +8076,27 @@ body {
7853
8076
  }
7854
8077
 
7855
8078
  .muka-menu__item-indicator--trailing {
8079
+ /* Match enter-hint trailer: 8px inset, 24px box (override leading indicator size). */
7856
8080
  position: absolute;
7857
- right: var(--menu-item-padding-x);
7858
- top: 50%;
7859
- transform: translateY(-50%);
7860
- color: var(--menu-checkbox-indicator-color);
8081
+ top: var(--spacing-2);
8082
+ right: var(--spacing-2);
8083
+ bottom: var(--spacing-2);
8084
+ display: flex;
8085
+ align-items: center;
8086
+ justify-content: center;
8087
+ width: var(--icon-size-default, 1.5rem);
8088
+ height: auto;
8089
+ max-height: none;
8090
+ transform: none;
8091
+ color: var(--color-text-subtle-default);
8092
+ }
8093
+
8094
+ .muka-menu__item-indicator--trailing > [data-state] {
8095
+ display: flex;
8096
+ align-items: center;
8097
+ justify-content: center;
8098
+ width: 100%;
8099
+ height: 100%;
7861
8100
  }
7862
8101
 
7863
8102
  .muka-menu__radio-dot {
@@ -7883,10 +8122,10 @@ body {
7883
8122
 
7884
8123
  .muka-menu__group-label {
7885
8124
  padding: var(--menu-group-label-padding-y) var(--menu-group-label-padding-x);
7886
- font-family: var(--text-label-sm-semibold-font-family);
7887
- font-size: var(--text-label-sm-semibold-font-size);
7888
- font-weight: var(--text-label-sm-semibold-font-weight);
7889
- line-height: var(--text-label-sm-semibold-line-height);
8125
+ font-family: var(--text-label-sm-semibold-fontFamily);
8126
+ font-size: var(--text-label-sm-semibold-fontSize);
8127
+ font-weight: var(--text-label-sm-semibold-fontWeight);
8128
+ line-height: var(--text-label-sm-semibold-lineHeight);
7890
8129
  color: var(--menu-group-label-color);
7891
8130
  text-transform: uppercase;
7892
8131
  letter-spacing: 0.05em;
@@ -8569,27 +8808,58 @@ li.muka-listitem {
8569
8808
  color: var(--input-field-color-disabled-foreground);
8570
8809
  }
8571
8810
 
8572
- /* Icons */
8811
+ /* Icons — Figma inputfield content: sm 16px, md 20px, lg 24px. */
8573
8812
  .muka-input__icon {
8574
8813
  display: inline-flex;
8575
8814
  align-items: center;
8815
+ justify-content: center;
8576
8816
  flex-shrink: 0;
8577
8817
  color: var(--color-text-subtle-default);
8578
- width: var(--icon-size-default);
8579
- height: var(--icon-size-default);
8818
+ width: var(--icon-size-sm);
8819
+ height: var(--icon-size-sm);
8580
8820
  }
8581
8821
 
8582
8822
  .muka-input__field--sm .muka-input__icon {
8583
- width: var(--icon-size-sm);
8584
- height: var(--icon-size-sm);
8823
+ width: var(--icon-size-xs);
8824
+ height: var(--icon-size-xs);
8585
8825
  }
8586
8826
 
8587
8827
  .muka-input__field--lg .muka-input__icon {
8588
- width: var(--icon-size-lg);
8589
- height: var(--icon-size-lg);
8828
+ width: var(--icon-size-default);
8829
+ height: var(--icon-size-default);
8590
8830
  }
8591
8831
 
8592
- .muka-input__field--disabled .muka-input__icon {
8832
+ .muka-input__clear {
8833
+ display: inline-flex;
8834
+ align-items: center;
8835
+ justify-content: center;
8836
+ flex-shrink: 0;
8837
+ width: var(--size-2xl, 2rem);
8838
+ height: var(--size-2xl, 2rem);
8839
+ padding: 0;
8840
+ border: none;
8841
+ background: transparent;
8842
+ color: var(--color-text-subtle-default);
8843
+ cursor: pointer;
8844
+ }
8845
+
8846
+ .muka-input__field--sm .muka-input__clear {
8847
+ width: var(--size-xl, 1.5rem);
8848
+ height: var(--size-xl, 1.5rem);
8849
+ }
8850
+
8851
+ /* Icon sets its own color; pin the glyph to text subtle, including hover. */
8852
+ .muka-input__icon .muka-icon,
8853
+ .muka-input__clear .muka-icon,
8854
+ .muka-input__clear:hover,
8855
+ .muka-input__clear:hover .muka-icon {
8856
+ color: var(--color-text-subtle-default);
8857
+ }
8858
+
8859
+ .muka-input__field--disabled .muka-input__icon,
8860
+ .muka-input__field--disabled .muka-input__icon .muka-icon,
8861
+ .muka-input__field--disabled .muka-input__clear,
8862
+ .muka-input__field--disabled .muka-input__clear .muka-icon {
8593
8863
  color: var(--input-field-color-disabled-foreground);
8594
8864
  }
8595
8865
 
@@ -8598,6 +8868,12 @@ li.muka-listitem {
8598
8868
  height: 100%;
8599
8869
  }
8600
8870
 
8871
+ .muka-input__native::-webkit-search-cancel-button,
8872
+ .muka-input__native::-webkit-search-decoration {
8873
+ -webkit-appearance: none;
8874
+ appearance: none;
8875
+ }
8876
+
8601
8877
  /* Helper text */
8602
8878
  .muka-input__helper {
8603
8879
  font-family: var(--text-label-sm-regular-fontFamily);
@@ -9148,114 +9424,342 @@ li.muka-listitem {
9148
9424
  height: var(--emptystate-icon-size-md);
9149
9425
  }
9150
9426
 
9151
- .muka-emptystate--lg .muka-emptystate__visual {
9152
- width: var(--emptystate-icon-size-lg);
9153
- height: var(--emptystate-icon-size-lg);
9427
+ .muka-emptystate--lg .muka-emptystate__visual {
9428
+ width: var(--emptystate-icon-size-lg);
9429
+ height: var(--emptystate-icon-size-lg);
9430
+ }
9431
+
9432
+ .muka-emptystate__visual svg {
9433
+ width: 100%;
9434
+ height: 100%;
9435
+ }
9436
+
9437
+ .muka-emptystate__visual img {
9438
+ width: 100%;
9439
+ height: 100%;
9440
+ object-fit: contain;
9441
+ }
9442
+
9443
+ /* Content */
9444
+ .muka-emptystate__content {
9445
+ display: flex;
9446
+ flex-direction: column;
9447
+ gap: var(--spacing-2);
9448
+ }
9449
+
9450
+ .muka-emptystate--left .muka-emptystate__content {
9451
+ align-items: flex-start;
9452
+ }
9453
+
9454
+ /* Title */
9455
+ .muka-emptystate__title {
9456
+ color: var(--emptystate-title-color);
9457
+ margin: 0;
9458
+ font-family: var(--text-heading-h4-fontFamily);
9459
+ font-weight: var(--text-heading-h4-fontWeight);
9460
+ font-size: var(--text-heading-h4-fontSize);
9461
+ line-height: var(--text-heading-h4-lineHeight);
9462
+ }
9463
+
9464
+ .muka-emptystate--sm .muka-emptystate__title {
9465
+ font-family: var(--text-label-lg-semibold-fontFamily);
9466
+ font-weight: var(--text-label-lg-semibold-fontWeight);
9467
+ font-size: var(--text-label-lg-semibold-fontSize);
9468
+ line-height: var(--text-label-lg-semibold-lineHeight);
9469
+ }
9470
+
9471
+ .muka-emptystate--lg .muka-emptystate__title {
9472
+ font-family: var(--text-heading-h3-fontFamily);
9473
+ font-weight: var(--text-heading-h3-fontWeight);
9474
+ font-size: var(--text-heading-h3-fontSize);
9475
+ line-height: var(--text-heading-h3-lineHeight);
9476
+ }
9477
+
9478
+ /* Description */
9479
+ .muka-emptystate__description {
9480
+ color: var(--emptystate-description-color);
9481
+ margin: 0;
9482
+ font-family: var(--text-body-sm-regular-fontFamily);
9483
+ font-weight: var(--text-body-sm-regular-fontWeight);
9484
+ font-size: var(--text-body-sm-regular-fontSize);
9485
+ line-height: var(--text-body-sm-regular-lineHeight);
9486
+ }
9487
+
9488
+ .muka-emptystate--md .muka-emptystate__description {
9489
+ font-family: var(--text-body-base-regular-fontFamily);
9490
+ font-weight: var(--text-body-base-regular-fontWeight);
9491
+ font-size: var(--text-body-base-regular-fontSize);
9492
+ line-height: var(--text-body-base-regular-lineHeight);
9493
+ }
9494
+
9495
+ .muka-emptystate--lg .muka-emptystate__description {
9496
+ font-family: var(--text-body-lg-regular-fontFamily);
9497
+ font-weight: var(--text-body-lg-regular-fontWeight);
9498
+ font-size: var(--text-body-lg-regular-fontSize);
9499
+ line-height: var(--text-body-lg-regular-lineHeight);
9500
+ }
9501
+
9502
+ /* Actions */
9503
+ .muka-emptystate__actions {
9504
+ display: flex;
9505
+ gap: var(--emptystate-actions-gap);
9506
+ margin-top: var(--emptystate-actions-marginTop);
9507
+ flex-wrap: wrap;
9508
+ justify-content: center;
9509
+ }
9510
+
9511
+ .muka-emptystate--left .muka-emptystate__actions {
9512
+ justify-content: flex-start;
9513
+ }
9514
+
9515
+
9516
+ /* EmojiPicker */
9517
+ /* EmojiPicker Component Styles */
9518
+
9519
+ .muka-emoji-picker {
9520
+ display: grid;
9521
+ grid-template-columns: repeat(8, 1fr);
9522
+ gap: var(--spacing-1);
9523
+ padding: var(--spacing-2);
9524
+ max-height: 12rem;
9525
+ overflow-y: auto;
9526
+ background: var(--color-surface-level2);
9527
+ border: var(--border-width-regular, 1px) solid var(--color-border-default);
9528
+ border-radius: var(--radius-lg);
9529
+ box-shadow: var(--menu-content-shadow, 0 4px 12px rgba(0, 0, 0, 0.12));
9530
+ }
9531
+
9532
+ .muka-emoji-picker__glyph {
9533
+ font-size: 1.25rem;
9534
+ line-height: 1;
9535
+ }
9536
+
9537
+
9538
+ /* DropdownSelect */
9539
+ /* DropdownSelect — Figma Dropdown Menu form field (Menu + chips) */
9540
+
9541
+ .muka-dropdown-select {
9542
+ display: inline-flex;
9543
+ flex-direction: column;
9544
+ gap: var(--spacing-2);
9545
+ min-width: 200px;
9546
+ }
9547
+
9548
+ .muka-dropdown-select--full-width {
9549
+ width: 100%;
9550
+ }
9551
+
9552
+ .muka-dropdown-select__label {
9553
+ color: var(--color-text-default-default);
9554
+ cursor: pointer;
9555
+ }
9556
+
9557
+ .muka-dropdown-select__label--sm {
9558
+ font-family: var(--text-label-sm-semibold-fontFamily);
9559
+ font-weight: var(--text-label-sm-semibold-fontWeight);
9560
+ font-size: var(--text-label-sm-semibold-fontSize);
9561
+ line-height: var(--text-label-sm-semibold-lineHeight);
9562
+ }
9563
+
9564
+ .muka-dropdown-select__label--md {
9565
+ font-family: var(--text-label-md-semibold-fontFamily);
9566
+ font-weight: var(--text-label-md-semibold-fontWeight);
9567
+ font-size: var(--text-label-md-semibold-fontSize);
9568
+ line-height: var(--text-label-md-semibold-lineHeight);
9569
+ }
9570
+
9571
+ .muka-dropdown-select__label--lg {
9572
+ font-family: var(--text-label-lg-semibold-fontFamily);
9573
+ font-weight: var(--text-label-lg-semibold-fontWeight);
9574
+ font-size: var(--text-label-lg-semibold-fontSize);
9575
+ line-height: var(--text-label-lg-semibold-lineHeight);
9576
+ }
9577
+
9578
+ .muka-dropdown-select__required {
9579
+ color: var(--color-state-error-foreground);
9580
+ }
9581
+
9582
+ .muka-dropdown-select__field {
9583
+ display: flex;
9584
+ align-items: center;
9585
+ gap: var(--spacing-1);
9586
+ width: 100%;
9587
+ position: relative;
9588
+ box-sizing: border-box;
9589
+ background-color: var(--input-field-color-default-background);
9590
+ border: var(--border-width-regular) solid var(--input-field-color-default-border);
9591
+ border-radius: var(--input-field-radius-lg);
9592
+ padding: var(--spacing-2);
9593
+ padding-right: calc(var(--spacing-2) + var(--size-2xl, 2rem));
9594
+ text-align: left;
9595
+ cursor: pointer;
9596
+ color: var(--color-text-default-default);
9597
+ transition: border-color 0.12s ease, background-color 0.12s ease;
9598
+ -webkit-tap-highlight-color: transparent;
9599
+ }
9600
+
9601
+ .muka-dropdown-select__field::after {
9602
+ content: '';
9603
+ position: absolute;
9604
+ inset: 0;
9605
+ border-radius: inherit;
9606
+ box-shadow: inset 0 1px 2px 0 rgba(26, 26, 26, 0.08);
9607
+ pointer-events: none;
9608
+ }
9609
+
9610
+ .muka-dropdown-select__field--sm {
9611
+ min-height: var(--input-field-height-sm);
9612
+ border-radius: var(--input-field-radius-sm);
9613
+ padding-right: calc(var(--spacing-2) + var(--size-xl, 1.5rem));
9614
+ }
9615
+
9616
+ .muka-dropdown-select__field--md {
9617
+ min-height: var(--input-field-height-default);
9618
+ border-radius: var(--input-field-radius-md);
9619
+ }
9620
+
9621
+ .muka-dropdown-select__field--lg {
9622
+ min-height: var(--input-field-height-lg);
9623
+ border-radius: var(--input-field-radius-lg);
9624
+ }
9625
+
9626
+ .muka-dropdown-select__field--focused:not(.muka-dropdown-select__field--disabled) {
9627
+ border-width: var(--border-width-bold);
9628
+ border-color: var(--input-field-color-focus-border);
9629
+ background-color: var(--input-field-color-focus-background);
9630
+ padding: calc(var(--spacing-2) - 1px);
9631
+ padding-right: calc(var(--spacing-2) + var(--size-2xl, 2rem) - 1px);
9632
+ }
9633
+
9634
+ .muka-dropdown-select__field--sm.muka-dropdown-select__field--focused:not(.muka-dropdown-select__field--disabled) {
9635
+ padding-right: calc(var(--spacing-2) + var(--size-xl, 1.5rem) - 1px);
9154
9636
  }
9155
9637
 
9156
- .muka-emptystate__visual svg {
9157
- width: 100%;
9158
- height: 100%;
9638
+ .muka-dropdown-select__field--error:not(.muka-dropdown-select__field--disabled) {
9639
+ border-color: var(--color-state-error-border, var(--color-state-error-foreground));
9159
9640
  }
9160
9641
 
9161
- .muka-emptystate__visual img {
9162
- width: 100%;
9163
- height: 100%;
9164
- object-fit: contain;
9642
+ .muka-dropdown-select__field--disabled {
9643
+ opacity: 0.5;
9644
+ cursor: not-allowed;
9165
9645
  }
9166
9646
 
9167
- /* Content */
9168
- .muka-emptystate__content {
9647
+ .muka-dropdown-select__content {
9648
+ position: relative;
9649
+ z-index: 1;
9169
9650
  display: flex;
9170
- flex-direction: column;
9171
- gap: var(--spacing-2);
9651
+ flex: 1 1 auto;
9652
+ min-width: 0;
9653
+ align-items: center;
9654
+ /* Let empty-field / value clicks reach the full-field MenuTrigger underneath. */
9655
+ pointer-events: none;
9172
9656
  }
9173
9657
 
9174
- .muka-emptystate--left .muka-emptystate__content {
9175
- align-items: flex-start;
9658
+ .muka-dropdown-select__placeholder {
9659
+ color: var(--color-text-subtle-default);
9660
+ font-family: var(--text-label-md-regular-fontFamily);
9661
+ font-size: var(--text-label-md-regular-fontSize);
9662
+ font-weight: var(--text-label-md-regular-fontWeight);
9663
+ line-height: var(--text-label-md-regular-lineHeight);
9664
+ padding-inline: var(--spacing-1);
9176
9665
  }
9177
9666
 
9178
- /* Title */
9179
- .muka-emptystate__title {
9180
- color: var(--emptystate-title-color);
9181
- margin: 0;
9182
- font-family: var(--text-heading-h4-fontFamily);
9183
- font-weight: var(--text-heading-h4-fontWeight);
9184
- font-size: var(--text-heading-h4-fontSize);
9185
- line-height: var(--text-heading-h4-lineHeight);
9667
+ .muka-dropdown-select__value {
9668
+ font-family: var(--text-label-md-regular-fontFamily);
9669
+ font-size: var(--text-label-md-regular-fontSize);
9670
+ font-weight: var(--text-label-md-regular-fontWeight);
9671
+ line-height: var(--text-label-md-regular-lineHeight);
9672
+ padding-inline: var(--spacing-1);
9673
+ white-space: nowrap;
9674
+ overflow: hidden;
9675
+ text-overflow: ellipsis;
9186
9676
  }
9187
9677
 
9188
- .muka-emptystate--sm .muka-emptystate__title {
9189
- font-family: var(--text-label-lg-semibold-fontFamily);
9190
- font-weight: var(--text-label-lg-semibold-fontWeight);
9191
- font-size: var(--text-label-lg-semibold-fontSize);
9192
- line-height: var(--text-label-lg-semibold-lineHeight);
9678
+ .muka-dropdown-select__chips {
9679
+ display: flex;
9680
+ flex: 1 1 auto;
9681
+ flex-wrap: wrap;
9682
+ gap: var(--spacing-2);
9683
+ align-items: flex-start;
9684
+ min-width: 0;
9685
+ /* Chip remove controls must remain clickable above the field hit target. */
9686
+ pointer-events: auto;
9193
9687
  }
9194
9688
 
9195
- .muka-emptystate--lg .muka-emptystate__title {
9196
- font-family: var(--text-heading-h3-fontFamily);
9197
- font-weight: var(--text-heading-h3-fontWeight);
9198
- font-size: var(--text-heading-h3-fontSize);
9199
- line-height: var(--text-heading-h3-lineHeight);
9689
+ .muka-dropdown-select__field--multiline {
9690
+ align-items: flex-start;
9691
+ min-height: 7rem;
9200
9692
  }
9201
9693
 
9202
- /* Description */
9203
- .muka-emptystate__description {
9204
- color: var(--emptystate-description-color);
9205
- margin: 0;
9206
- font-family: var(--text-body-sm-regular-fontFamily);
9207
- font-weight: var(--text-body-sm-regular-fontWeight);
9208
- font-size: var(--text-body-sm-regular-fontSize);
9209
- line-height: var(--text-body-sm-regular-lineHeight);
9694
+ .muka-dropdown-select__menu-button {
9695
+ position: absolute;
9696
+ inset: 0;
9697
+ z-index: 0;
9698
+ display: inline-flex;
9699
+ align-items: center;
9700
+ justify-content: flex-end;
9701
+ width: auto;
9702
+ height: auto;
9703
+ padding: 0;
9704
+ padding-right: var(--spacing-2);
9705
+ border: none;
9706
+ border-radius: inherit;
9707
+ background: transparent;
9708
+ color: var(--color-text-subtle-default);
9709
+ cursor: pointer;
9210
9710
  }
9211
9711
 
9212
- .muka-emptystate--md .muka-emptystate__description {
9213
- font-family: var(--text-body-base-regular-fontFamily);
9214
- font-weight: var(--text-body-base-regular-fontWeight);
9215
- font-size: var(--text-body-base-regular-fontSize);
9216
- line-height: var(--text-body-base-regular-lineHeight);
9712
+ .muka-dropdown-select__field--multiline .muka-dropdown-select__menu-button {
9713
+ align-items: flex-start;
9714
+ padding-top: calc(var(--spacing-2) + 8px);
9217
9715
  }
9218
9716
 
9219
- .muka-emptystate--lg .muka-emptystate__description {
9220
- font-family: var(--text-body-lg-regular-fontFamily);
9221
- font-weight: var(--text-body-lg-regular-fontWeight);
9222
- font-size: var(--text-body-lg-regular-fontSize);
9223
- line-height: var(--text-body-lg-regular-lineHeight);
9717
+ .muka-dropdown-select__chevron {
9718
+ display: inline-flex;
9719
+ align-items: center;
9720
+ justify-content: center;
9721
+ width: var(--size-2xl, 2rem);
9722
+ height: var(--size-2xl, 2rem);
9723
+ pointer-events: none;
9724
+ color: var(--color-text-subtle-default);
9224
9725
  }
9225
9726
 
9226
- /* Actions */
9227
- .muka-emptystate__actions {
9228
- display: flex;
9229
- gap: var(--emptystate-actions-gap);
9230
- margin-top: var(--emptystate-actions-marginTop);
9231
- flex-wrap: wrap;
9232
- justify-content: center;
9727
+ .muka-dropdown-select__chevron .muka-icon,
9728
+ .muka-dropdown-select__menu-button:hover .muka-dropdown-select__chevron,
9729
+ .muka-dropdown-select__menu-button:hover .muka-icon {
9730
+ color: var(--color-text-subtle-default);
9233
9731
  }
9234
9732
 
9235
- .muka-emptystate--left .muka-emptystate__actions {
9236
- justify-content: flex-start;
9733
+ .muka-dropdown-select__field--sm .muka-dropdown-select__chevron {
9734
+ width: var(--size-xl, 1.5rem);
9735
+ height: var(--size-xl, 1.5rem);
9237
9736
  }
9238
9737
 
9738
+ .muka-dropdown-select__menu-button:focus-visible {
9739
+ outline: 2px solid var(--color-border-focus, var(--color-action-default));
9740
+ outline-offset: 2px;
9741
+ }
9239
9742
 
9240
- /* EmojiPicker */
9241
- /* EmojiPicker Component Styles */
9743
+ .muka-dropdown-select__helper {
9744
+ margin: 0;
9745
+ color: var(--color-text-subtle-default);
9746
+ font-family: var(--text-label-sm-regular-fontFamily);
9747
+ font-size: var(--text-label-sm-regular-fontSize);
9748
+ font-weight: var(--text-label-sm-regular-fontWeight);
9749
+ line-height: var(--text-label-sm-regular-lineHeight);
9750
+ }
9242
9751
 
9243
- .muka-emoji-picker {
9244
- display: grid;
9245
- grid-template-columns: repeat(8, 1fr);
9246
- gap: var(--spacing-1);
9247
- padding: var(--spacing-2);
9248
- max-height: 12rem;
9249
- overflow-y: auto;
9250
- background: var(--color-surface-level2);
9251
- border: var(--border-width-regular, 1px) solid var(--color-border-default);
9252
- border-radius: var(--radius-lg);
9253
- box-shadow: var(--menu-content-shadow, 0 4px 12px rgba(0, 0, 0, 0.12));
9752
+ .muka-dropdown-select__error {
9753
+ margin: 0;
9754
+ color: var(--color-state-error-foreground);
9755
+ font-family: var(--text-label-sm-regular-fontFamily);
9756
+ font-size: var(--text-label-sm-regular-fontSize);
9757
+ font-weight: var(--text-label-sm-regular-fontWeight);
9758
+ line-height: var(--text-label-sm-regular-lineHeight);
9254
9759
  }
9255
9760
 
9256
- .muka-emoji-picker__glyph {
9257
- font-size: 1.25rem;
9258
- line-height: 1;
9761
+ .muka-dropdown-select__menu {
9762
+ /* Uses Menu min-width (280px); grows with long labels; left-aligned to the field. */
9259
9763
  }
9260
9764
 
9261
9765
 
@@ -10753,191 +11257,175 @@ li.muka-listitem {
10753
11257
 
10754
11258
 
10755
11259
  /* Combobox */
10756
- /* Combobox Component Styles */
11260
+ /* Combobox — Figma Input Combobox (free-input chips + suggestion Menu) */
10757
11261
 
10758
- /* ─── Trigger group (positioning context for the trailing controls) ── */
11262
+ .muka-combobox {
11263
+ display: inline-flex;
11264
+ flex-direction: column;
11265
+ gap: var(--spacing-2);
11266
+ min-width: 200px;
11267
+ }
10759
11268
 
10760
- /*
10761
- * The clear control is a sibling of the trigger, not a child (a <button> may
10762
- * not contain interactive content), so it is overlaid on the trigger's trailing
10763
- * padding. The trigger reserves that space with padding-right below.
10764
- */
10765
- .muka-combobox__trigger-group {
10766
- position: relative;
10767
- display: block;
11269
+ .muka-combobox--full-width {
10768
11270
  width: 100%;
10769
11271
  }
10770
11272
 
10771
- /* ─── Trigger (looks like an Input field, behaves like a button) ── */
11273
+ .muka-combobox__label {
11274
+ color: var(--color-text-default-default);
11275
+ cursor: pointer;
11276
+ }
10772
11277
 
10773
- .muka-combobox {
10774
- display: inline-flex;
11278
+ .muka-combobox__label--sm {
11279
+ font-family: var(--text-label-sm-semibold-fontFamily);
11280
+ font-weight: var(--text-label-sm-semibold-fontWeight);
11281
+ font-size: var(--text-label-sm-semibold-fontSize);
11282
+ line-height: var(--text-label-sm-semibold-lineHeight);
11283
+ }
11284
+
11285
+ .muka-combobox__label--md {
11286
+ font-family: var(--text-label-md-semibold-fontFamily);
11287
+ font-weight: var(--text-label-md-semibold-fontWeight);
11288
+ font-size: var(--text-label-md-semibold-fontSize);
11289
+ line-height: var(--text-label-md-semibold-lineHeight);
11290
+ }
11291
+
11292
+ .muka-combobox__label--lg {
11293
+ font-family: var(--text-label-lg-semibold-fontFamily);
11294
+ font-weight: var(--text-label-lg-semibold-fontWeight);
11295
+ font-size: var(--text-label-lg-semibold-fontSize);
11296
+ line-height: var(--text-label-lg-semibold-lineHeight);
11297
+ }
11298
+
11299
+ .muka-combobox__field {
11300
+ display: flex;
10775
11301
  align-items: center;
10776
- gap: var(--spacing-2);
10777
11302
  width: 100%;
10778
- padding: 0 var(--muka-combobox-trailing-space) 0 var(--input-field-padding-x);
11303
+ position: relative;
11304
+ isolation: isolate;
11305
+ box-sizing: border-box;
10779
11306
  background-color: var(--input-field-color-default-background);
10780
11307
  border: var(--border-width-regular) solid var(--input-field-color-default-border);
10781
- color: var(--color-text-default-default);
10782
- text-align: left;
10783
- cursor: pointer;
10784
- font-family: var(--text-body-md-regular-fontFamily);
10785
- font-weight: var(--text-body-md-regular-fontWeight);
10786
- font-size: var(--text-body-md-regular-fontSize);
10787
- line-height: var(--text-body-md-regular-lineHeight);
10788
- -webkit-tap-highlight-color: transparent;
10789
- transition: border-color 0.12s ease;
10790
-
10791
- /* Room for the chevron overlaid on the trailing edge. */
10792
- --muka-combobox-trailing-space: calc(
10793
- var(--input-field-padding-x) + var(--icon-size-sm) + var(--spacing-2)
10794
- );
11308
+ border-radius: var(--input-field-radius-lg);
11309
+ padding: var(--spacing-2);
11310
+ cursor: text;
11311
+ transition: border-color 0.12s ease, background-color 0.12s ease;
10795
11312
  }
10796
11313
 
10797
- /* …and for the clear button next to it, when one is rendered. */
10798
- .muka-combobox--clearable {
10799
- --muka-combobox-trailing-space: calc(
10800
- var(--input-field-padding-x) + var(--icon-size-sm) + var(--spacing-2) +
10801
- var(--icon-size-xs) + var(--spacing-1) * 2 + var(--spacing-2)
10802
- );
11314
+ .muka-combobox__field::after {
11315
+ content: '';
11316
+ position: absolute;
11317
+ inset: 0;
11318
+ border-radius: inherit;
11319
+ box-shadow: inset 0 1px 2px 0 rgba(26, 26, 26, 0.08);
11320
+ pointer-events: none;
10803
11321
  }
10804
11322
 
10805
- .muka-combobox--sm {
11323
+ .muka-combobox__field--sm {
10806
11324
  min-height: var(--input-field-height-sm);
10807
11325
  border-radius: var(--input-field-radius-sm);
10808
11326
  }
10809
11327
 
10810
- .muka-combobox--md {
11328
+ .muka-combobox__field--md {
10811
11329
  min-height: var(--input-field-height-default);
10812
11330
  border-radius: var(--input-field-radius-md);
10813
11331
  }
10814
11332
 
10815
- .muka-combobox--lg {
11333
+ .muka-combobox__field--lg {
10816
11334
  min-height: var(--input-field-height-lg);
10817
11335
  border-radius: var(--input-field-radius-lg);
10818
11336
  }
10819
11337
 
10820
- .muka-combobox:hover:not(:disabled) {
10821
- border-color: var(--input-field-color-hover-border, var(--input-field-color-default-border));
11338
+ .muka-combobox__field--focused:not(.muka-combobox__field--disabled) {
11339
+ border-width: var(--border-width-bold);
11340
+ border-color: var(--input-field-color-focus-border);
11341
+ background-color: var(--input-field-color-focus-background);
11342
+ padding: calc(var(--spacing-2) - 1px);
10822
11343
  }
10823
11344
 
10824
- .muka-combobox:focus-visible {
10825
- outline: none;
10826
- border-color: var(--input-field-color-focus-border, var(--color-action-default));
11345
+ .muka-combobox__field--error:not(.muka-combobox__field--disabled) {
11346
+ border-color: var(--color-state-error-border, var(--color-state-error-foreground));
10827
11347
  }
10828
11348
 
10829
- .muka-combobox--disabled,
10830
- .muka-combobox:disabled {
11349
+ .muka-combobox__field--disabled {
10831
11350
  opacity: 0.5;
10832
11351
  cursor: not-allowed;
10833
11352
  }
10834
11353
 
10835
- .muka-combobox--placeholder .muka-combobox__label {
10836
- color: var(--color-text-subtle-default);
10837
- }
10838
-
10839
- .muka-combobox__leading {
10840
- display: inline-flex;
10841
- align-items: center;
10842
- justify-content: center;
10843
- flex-shrink: 0;
10844
- color: var(--color-text-subtle-default);
10845
- }
10846
-
10847
- .muka-combobox__label {
10848
- flex: 1 1 auto;
10849
- min-width: 0;
10850
- white-space: nowrap;
10851
- overflow: hidden;
10852
- text-overflow: ellipsis;
11354
+ .muka-combobox__field--multiline {
11355
+ align-items: flex-start;
11356
+ min-height: 7rem;
10853
11357
  }
10854
11358
 
10855
- /* ─── Trailing controls (clear + chevron) ─────────────── */
10856
-
10857
- .muka-combobox__actions {
10858
- position: absolute;
10859
- top: 0;
10860
- right: var(--input-field-padding-x);
10861
- height: 100%;
11359
+ .muka-combobox__chips {
10862
11360
  display: flex;
10863
- align-items: center;
11361
+ flex: 1 1 auto;
11362
+ flex-wrap: wrap;
10864
11363
  gap: var(--spacing-2);
10865
- /*
10866
- * The strip sits on top of the trigger, so it must not swallow taps meant to
10867
- * open the picker. Only the clear button takes pointer events back.
10868
- */
10869
- pointer-events: none;
10870
- }
10871
-
10872
- .muka-combobox__clear,
10873
- .muka-combobox__chevron {
10874
- display: inline-flex;
10875
- align-items: center;
10876
- justify-content: center;
10877
- flex-shrink: 0;
10878
- color: var(--color-text-subtle-default);
10879
- }
10880
-
10881
- .muka-combobox__clear {
10882
- pointer-events: auto;
10883
- cursor: pointer;
10884
- padding: var(--spacing-1);
10885
- border: none;
10886
- background: none;
10887
- border-radius: var(--radius-sm);
10888
- -webkit-tap-highlight-color: transparent;
10889
- }
10890
-
10891
- .muka-combobox__clear:hover {
10892
- color: var(--color-text-default-default);
10893
- background-color: var(--color-surface-level1);
11364
+ align-items: center;
11365
+ min-width: 0;
11366
+ width: 100%;
11367
+ position: relative;
11368
+ z-index: 1;
10894
11369
  }
10895
11370
 
10896
- .muka-combobox__clear:focus-visible {
10897
- outline: 2px solid var(--color-border-focus);
10898
- outline-offset: 2px;
10899
- color: var(--color-text-default-default);
11371
+ .muka-combobox__input {
11372
+ flex: 1 1 5rem;
11373
+ min-width: 5rem;
11374
+ min-height: 2rem;
11375
+ margin: 0;
11376
+ padding: 0 var(--spacing-1);
11377
+ border: none;
11378
+ outline: none;
11379
+ background: transparent;
11380
+ color: var(--input-field-color-default-foreground);
11381
+ caret-color: var(--input-field-color-default-foreground);
11382
+ font-family: var(--text-label-md-regular-fontFamily);
11383
+ font-size: var(--text-label-md-regular-fontSize);
11384
+ font-weight: var(--text-label-md-regular-fontWeight);
11385
+ line-height: var(--text-label-md-regular-lineHeight);
10900
11386
  }
10901
11387
 
10902
- .muka-combobox--disabled ~ .muka-combobox__actions,
10903
- .muka-combobox:disabled ~ .muka-combobox__actions {
10904
- opacity: 0.5;
11388
+ .muka-combobox__input::placeholder {
11389
+ color: var(--color-text-subtle-default);
10905
11390
  }
10906
11391
 
10907
- /* ─── Picker sheet body ───────────────────────────────── */
10908
-
10909
- .muka-combobox__picker {
10910
- display: flex;
10911
- flex-direction: column;
10912
- gap: var(--spacing-3);
10913
- padding: 0 var(--spacing-4) var(--spacing-4);
10914
- min-height: 0;
10915
- max-height: 80vh;
11392
+ .muka-combobox__helper {
11393
+ margin: 0;
11394
+ color: var(--color-text-subtle-default);
11395
+ font-family: var(--text-label-sm-regular-fontFamily);
11396
+ font-size: var(--text-label-sm-regular-fontSize);
11397
+ font-weight: var(--text-label-sm-regular-fontWeight);
11398
+ line-height: var(--text-label-sm-regular-lineHeight);
10916
11399
  }
10917
11400
 
10918
- .muka-combobox__title {
11401
+ .muka-combobox__error {
10919
11402
  margin: 0;
10920
- padding: var(--spacing-2) 0;
10921
- color: var(--color-text-default-default);
10922
- font-family: var(--text-heading-sm-fontFamily);
10923
- font-weight: var(--text-heading-sm-fontWeight);
10924
- font-size: var(--text-heading-sm-fontSize);
10925
- line-height: var(--text-heading-sm-lineHeight);
11403
+ color: var(--color-state-error-foreground);
11404
+ font-family: var(--text-label-sm-regular-fontFamily);
11405
+ font-size: var(--text-label-sm-regular-fontSize);
11406
+ font-weight: var(--text-label-sm-regular-fontWeight);
11407
+ line-height: var(--text-label-sm-regular-lineHeight);
10926
11408
  }
10927
11409
 
10928
- .muka-combobox__search {
10929
- position: sticky;
10930
- top: 0;
10931
- z-index: 1;
10932
- padding-bottom: var(--spacing-2);
10933
- background-color: var(--color-surface-level3);
11410
+ .muka-combobox__menu-anchor {
11411
+ position: absolute;
11412
+ inset: 0;
11413
+ z-index: 0;
11414
+ width: 100%;
11415
+ height: 100%;
11416
+ margin: 0;
11417
+ padding: 0;
11418
+ border: none;
11419
+ background: transparent;
11420
+ pointer-events: none;
11421
+ opacity: 0;
10934
11422
  }
10935
11423
 
10936
- .muka-combobox__list {
10937
- flex: 1 1 auto;
10938
- min-height: 0;
10939
- overflow-y: auto;
10940
- -webkit-overflow-scrolling: touch;
11424
+ .muka-combobox__menu {
11425
+ /* Prefer Menu token min-width (280px); may exceed the field when left-aligned. */
11426
+ min-width: var(--menu-content-min-width);
11427
+ width: max-content;
11428
+ max-width: min(100vw - 2rem, 24rem);
10941
11429
  }
10942
11430
 
10943
11431
 
@@ -14486,3 +14974,195 @@ button.muka-chat-photo-grid__tile:focus-visible {
14486
14974
  border-bottom: none;
14487
14975
  }
14488
14976
 
14977
+
14978
+ /* SmsOtpField */
14979
+ /* SmsOtpField Component Styles - Using Muka Design Tokens */
14980
+
14981
+ /* Wrapper */
14982
+ .muka-sms-otp-field {
14983
+ display: inline-flex;
14984
+ flex-direction: column;
14985
+ gap: var(--spacing-2);
14986
+ }
14987
+
14988
+ /* Label */
14989
+ .muka-sms-otp-field__label {
14990
+ color: var(--color-text-default-default);
14991
+ cursor: pointer;
14992
+ }
14993
+
14994
+ .muka-sms-otp-field__label--sm {
14995
+ font-family: var(--text-label-sm-semibold-fontFamily);
14996
+ font-weight: var(--text-label-sm-semibold-fontWeight);
14997
+ font-size: var(--text-label-sm-semibold-fontSize);
14998
+ line-height: var(--text-label-sm-semibold-lineHeight);
14999
+ }
15000
+
15001
+ .muka-sms-otp-field__label--md {
15002
+ font-family: var(--text-label-md-semibold-fontFamily);
15003
+ font-weight: var(--text-label-md-semibold-fontWeight);
15004
+ font-size: var(--text-label-md-semibold-fontSize);
15005
+ line-height: var(--text-label-md-semibold-lineHeight);
15006
+ }
15007
+
15008
+ .muka-sms-otp-field__label--lg {
15009
+ font-family: var(--text-label-lg-semibold-fontFamily);
15010
+ font-weight: var(--text-label-lg-semibold-fontWeight);
15011
+ font-size: var(--text-label-lg-semibold-fontSize);
15012
+ line-height: var(--text-label-lg-semibold-lineHeight);
15013
+ }
15014
+
15015
+ .muka-sms-otp-field__required {
15016
+ color: var(--color-state-error-foreground);
15017
+ }
15018
+
15019
+ /* Hidden input for browser autofill */
15020
+ .muka-sms-otp-field__hidden-input {
15021
+ position: absolute;
15022
+ width: 1px;
15023
+ height: 1px;
15024
+ padding: 0;
15025
+ margin: -1px;
15026
+ overflow: hidden;
15027
+ clip: rect(0, 0, 0, 0);
15028
+ white-space: nowrap;
15029
+ border: 0;
15030
+ opacity: 0;
15031
+ pointer-events: none;
15032
+ }
15033
+
15034
+ /* Digits container */
15035
+ .muka-sms-otp-field__digits {
15036
+ display: flex;
15037
+ align-items: center;
15038
+ gap: var(--spacing-2);
15039
+ }
15040
+
15041
+ /* Separator */
15042
+ .muka-sms-otp-field__separator {
15043
+ display: inline-flex;
15044
+ align-items: center;
15045
+ justify-content: center;
15046
+ color: var(--color-text-subtle-default);
15047
+ font-size: 1.25rem;
15048
+ padding: 0 var(--spacing-1);
15049
+ user-select: none;
15050
+ }
15051
+
15052
+ /* Individual digit box */
15053
+ .muka-sms-otp-field__digit {
15054
+ display: flex;
15055
+ align-items: center;
15056
+ justify-content: center;
15057
+ text-align: center;
15058
+ background-color: var(--input-field-color-default-background);
15059
+ border: var(--border-width-regular) solid var(--input-field-color-default-border);
15060
+ color: var(--input-field-color-default-foreground);
15061
+ transition: border-color 0.2s ease, background-color 0.2s ease;
15062
+ box-sizing: border-box;
15063
+ caret-color: var(--input-field-color-focus-border);
15064
+ -moz-appearance: textfield;
15065
+ appearance: textfield;
15066
+ }
15067
+
15068
+ /* Remove spinner buttons */
15069
+ .muka-sms-otp-field__digit::-webkit-inner-spin-button,
15070
+ .muka-sms-otp-field__digit::-webkit-outer-spin-button {
15071
+ -webkit-appearance: none;
15072
+ margin: 0;
15073
+ }
15074
+
15075
+ /* Size variants */
15076
+ .muka-sms-otp-field__digit--sm {
15077
+ width: 36px;
15078
+ height: var(--input-field-height-sm);
15079
+ border-radius: var(--input-field-radius-sm);
15080
+ font-family: var(--text-input-sm-fontFamily);
15081
+ font-weight: var(--text-input-sm-fontWeight);
15082
+ font-size: var(--text-input-sm-fontSize);
15083
+ line-height: var(--text-input-sm-lineHeight);
15084
+ }
15085
+
15086
+ .muka-sms-otp-field__digit--md {
15087
+ width: 44px;
15088
+ height: var(--input-field-height-default);
15089
+ border-radius: var(--input-field-radius-md);
15090
+ font-family: var(--text-input-md-fontFamily);
15091
+ font-weight: var(--text-input-md-fontWeight);
15092
+ font-size: var(--text-input-md-fontSize);
15093
+ line-height: var(--text-input-md-lineHeight);
15094
+ }
15095
+
15096
+ .muka-sms-otp-field__digit--lg {
15097
+ width: 52px;
15098
+ height: var(--input-field-height-lg);
15099
+ border-radius: var(--input-field-radius-lg);
15100
+ font-family: var(--text-input-lg-fontFamily);
15101
+ font-weight: var(--text-input-lg-fontWeight);
15102
+ font-size: var(--text-input-lg-fontSize);
15103
+ line-height: var(--text-input-lg-lineHeight);
15104
+ }
15105
+
15106
+ /* Inset shadow (matches Input component) */
15107
+ .muka-sms-otp-field__digit::after {
15108
+ content: '';
15109
+ position: absolute;
15110
+ inset: 0;
15111
+ border-radius: inherit;
15112
+ box-shadow: inset 0 1px 2px 0 rgba(26, 26, 26, 0.08);
15113
+ pointer-events: none;
15114
+ }
15115
+
15116
+ /* Focus state */
15117
+ .muka-sms-otp-field__digit--focused:not(.muka-sms-otp-field__digit--disabled) {
15118
+ border-width: var(--border-width-bold);
15119
+ border-color: var(--input-field-color-focus-border);
15120
+ background-color: var(--input-field-color-focus-background);
15121
+ outline: none;
15122
+ }
15123
+
15124
+ /* Also handle native :focus for keyboard navigation */
15125
+ .muka-sms-otp-field__digit:focus {
15126
+ outline: none;
15127
+ }
15128
+
15129
+ /* Error state */
15130
+ .muka-sms-otp-field__digit--error:not(.muka-sms-otp-field__digit--disabled) {
15131
+ border-width: var(--border-width-bold);
15132
+ border-color: var(--input-field-color-error-border);
15133
+ background-color: var(--input-field-color-error-background);
15134
+ }
15135
+
15136
+ /* Disabled state */
15137
+ .muka-sms-otp-field__digit--disabled {
15138
+ background-color: var(--input-field-color-disabled-background);
15139
+ border-color: var(--input-field-color-disabled-border);
15140
+ color: var(--input-field-color-disabled-foreground);
15141
+ cursor: not-allowed;
15142
+ }
15143
+
15144
+ /* Filled state — slightly bolder text */
15145
+ .muka-sms-otp-field__digit--filled {
15146
+ color: var(--input-field-color-default-foreground);
15147
+ }
15148
+
15149
+ /* Helper text */
15150
+ .muka-sms-otp-field__helper {
15151
+ font-family: var(--text-label-sm-regular-fontFamily);
15152
+ font-weight: var(--text-label-sm-regular-fontWeight);
15153
+ font-size: var(--text-label-sm-regular-fontSize);
15154
+ line-height: var(--text-label-sm-regular-lineHeight);
15155
+ color: var(--color-text-subtle-default);
15156
+ margin: 0;
15157
+ }
15158
+
15159
+ /* Error message */
15160
+ .muka-sms-otp-field__error {
15161
+ font-family: var(--text-label-sm-regular-fontFamily);
15162
+ font-weight: var(--text-label-sm-regular-fontWeight);
15163
+ font-size: var(--text-label-sm-regular-fontSize);
15164
+ line-height: var(--text-label-sm-regular-lineHeight);
15165
+ color: var(--color-state-error-foreground);
15166
+ margin: 0;
15167
+ }
15168
+