@revikornmann/muka-ui 0.18.0 → 0.20.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 (195) hide show
  1. package/README.md +81 -60
  2. package/cli/bin/muka-ui.js +12 -5
  3. package/cli/commands/brand.js +33 -14
  4. package/cli/commands/init.js +21 -17
  5. package/cli/commands/install-skill.js +84 -26
  6. package/cli/templates/AGENTS.md +128 -0
  7. package/cli/templates/CLAUDE.md +8 -88
  8. package/cli/templates/muka-ui-guidelines.md +50 -14
  9. package/dist/cjs/components/ActionSheet/ActionSheet.css +4 -4
  10. package/dist/cjs/components/BottomBar/BottomBar.css +0 -3
  11. package/dist/cjs/components/Breadcrumb/Breadcrumb.css +26 -2
  12. package/dist/cjs/components/Combobox/Combobox.css +116 -132
  13. package/dist/cjs/components/Combobox/Combobox.js +175 -52
  14. package/dist/cjs/components/Combobox/Combobox.js.map +1 -1
  15. package/dist/cjs/components/Combobox/index.js.map +1 -1
  16. package/dist/cjs/components/ContextSelect/ContextSelect.css +4 -4
  17. package/dist/cjs/components/DocumentViewer/DocumentViewer.css +2 -2
  18. package/dist/cjs/components/DropdownSelect/DropdownSelect.css +225 -0
  19. package/dist/cjs/components/DropdownSelect/DropdownSelect.js +106 -0
  20. package/dist/cjs/components/DropdownSelect/DropdownSelect.js.map +1 -0
  21. package/dist/cjs/components/DropdownSelect/index.js +6 -0
  22. package/dist/cjs/components/DropdownSelect/index.js.map +1 -0
  23. package/dist/cjs/components/EmptyState/EmptyState.css +8 -8
  24. package/dist/cjs/components/FAB/FAB.css +1 -1
  25. package/dist/cjs/components/FileUpload/FileUpload.css +10 -10
  26. package/dist/cjs/components/Icon/custom/ArrowReturnIcon.js +11 -0
  27. package/dist/cjs/components/Icon/custom/ArrowReturnIcon.js.map +1 -0
  28. package/dist/cjs/components/Icon/iconRegistry.js +14 -1
  29. package/dist/cjs/components/Icon/iconRegistry.js.map +1 -1
  30. package/dist/cjs/components/Input/Input.css +47 -10
  31. package/dist/cjs/components/Input/Input.js +14 -3
  32. package/dist/cjs/components/Input/Input.js.map +1 -1
  33. package/dist/cjs/components/Label/Label.css +1 -1
  34. package/dist/cjs/components/LicensePlateInput/LicensePlateInput.css +1 -1
  35. package/dist/cjs/components/Menu/Menu.css +124 -38
  36. package/dist/cjs/components/Menu/Menu.js +283 -25
  37. package/dist/cjs/components/Menu/Menu.js.map +1 -1
  38. package/dist/cjs/components/Pagination/Pagination.css +15 -15
  39. package/dist/cjs/components/PhotoUploader/PhotoUploader.css +4 -4
  40. package/dist/cjs/components/ProgressAccordeon/ProgressAccordeon.css +10 -6
  41. package/dist/cjs/components/ProgressAccordeon/ProgressAccordeon.js +27 -16
  42. package/dist/cjs/components/ProgressAccordeon/ProgressAccordeon.js.map +1 -1
  43. package/dist/cjs/components/ProgressTracker/ProgressTracker.css +273 -22
  44. package/dist/cjs/components/ProgressTracker/ProgressTracker.js +109 -9
  45. package/dist/cjs/components/ProgressTracker/ProgressTracker.js.map +1 -1
  46. package/dist/cjs/components/Scrollbar/Scrollbar.css +7 -6
  47. package/dist/cjs/components/SearchInput/SearchInput.css +4 -4
  48. package/dist/cjs/components/Select/Select.css +2 -2
  49. package/dist/cjs/components/SmsOtpField/SmsOtpField.css +2 -2
  50. package/dist/cjs/components/SpecList/SpecList.css +8 -8
  51. package/dist/cjs/components/Spinner/Spinner.css +1 -1
  52. package/dist/cjs/components/SwipeActions/SwipeActions.css +6 -6
  53. package/dist/cjs/components/Table/Table.css +3 -3
  54. package/dist/cjs/components/Table/TablePagination.css +1 -1
  55. package/dist/cjs/components/Tabs/Tabs.css +6 -6
  56. package/dist/cjs/components/Textarea/Textarea.css +2 -2
  57. package/dist/cjs/components/Waveform/Waveform.css +1 -1
  58. package/dist/cjs/components/index.js +5 -3
  59. package/dist/cjs/components/index.js.map +1 -1
  60. package/dist/esm/components/ActionSheet/ActionSheet.css +4 -4
  61. package/dist/esm/components/BottomBar/BottomBar.css +0 -3
  62. package/dist/esm/components/Breadcrumb/Breadcrumb.css +26 -2
  63. package/dist/esm/components/Combobox/Combobox.css +116 -132
  64. package/dist/esm/components/Combobox/Combobox.js +177 -54
  65. package/dist/esm/components/Combobox/Combobox.js.map +1 -1
  66. package/dist/esm/components/Combobox/index.js +1 -1
  67. package/dist/esm/components/Combobox/index.js.map +1 -1
  68. package/dist/esm/components/ContextSelect/ContextSelect.css +4 -4
  69. package/dist/esm/components/DocumentViewer/DocumentViewer.css +2 -2
  70. package/dist/esm/components/DropdownSelect/DropdownSelect.css +225 -0
  71. package/dist/esm/components/DropdownSelect/DropdownSelect.js +102 -0
  72. package/dist/esm/components/DropdownSelect/DropdownSelect.js.map +1 -0
  73. package/dist/esm/components/DropdownSelect/index.js +2 -0
  74. package/dist/esm/components/DropdownSelect/index.js.map +1 -0
  75. package/dist/esm/components/EmptyState/EmptyState.css +8 -8
  76. package/dist/esm/components/FAB/FAB.css +1 -1
  77. package/dist/esm/components/FileUpload/FileUpload.css +10 -10
  78. package/dist/esm/components/Icon/custom/ArrowReturnIcon.js +7 -0
  79. package/dist/esm/components/Icon/custom/ArrowReturnIcon.js.map +1 -0
  80. package/dist/esm/components/Icon/iconRegistry.js +14 -1
  81. package/dist/esm/components/Icon/iconRegistry.js.map +1 -1
  82. package/dist/esm/components/Input/Input.css +47 -10
  83. package/dist/esm/components/Input/Input.js +14 -3
  84. package/dist/esm/components/Input/Input.js.map +1 -1
  85. package/dist/esm/components/Label/Label.css +1 -1
  86. package/dist/esm/components/LicensePlateInput/LicensePlateInput.css +1 -1
  87. package/dist/esm/components/Menu/Menu.css +124 -38
  88. package/dist/esm/components/Menu/Menu.js +284 -26
  89. package/dist/esm/components/Menu/Menu.js.map +1 -1
  90. package/dist/esm/components/Pagination/Pagination.css +15 -15
  91. package/dist/esm/components/PhotoUploader/PhotoUploader.css +4 -4
  92. package/dist/esm/components/ProgressAccordeon/ProgressAccordeon.css +10 -6
  93. package/dist/esm/components/ProgressAccordeon/ProgressAccordeon.js +27 -16
  94. package/dist/esm/components/ProgressAccordeon/ProgressAccordeon.js.map +1 -1
  95. package/dist/esm/components/ProgressTracker/ProgressTracker.css +273 -22
  96. package/dist/esm/components/ProgressTracker/ProgressTracker.js +110 -10
  97. package/dist/esm/components/ProgressTracker/ProgressTracker.js.map +1 -1
  98. package/dist/esm/components/Scrollbar/Scrollbar.css +7 -6
  99. package/dist/esm/components/SearchInput/SearchInput.css +4 -4
  100. package/dist/esm/components/Select/Select.css +2 -2
  101. package/dist/esm/components/SmsOtpField/SmsOtpField.css +2 -2
  102. package/dist/esm/components/SpecList/SpecList.css +8 -8
  103. package/dist/esm/components/Spinner/Spinner.css +1 -1
  104. package/dist/esm/components/SwipeActions/SwipeActions.css +6 -6
  105. package/dist/esm/components/Table/Table.css +3 -3
  106. package/dist/esm/components/Table/TablePagination.css +1 -1
  107. package/dist/esm/components/Tabs/Tabs.css +6 -6
  108. package/dist/esm/components/Textarea/Textarea.css +2 -2
  109. package/dist/esm/components/Waveform/Waveform.css +1 -1
  110. package/dist/esm/components/index.js +1 -0
  111. package/dist/esm/components/index.js.map +1 -1
  112. package/dist/styles/components/ActionSheet.css +4 -4
  113. package/dist/styles/components/BottomBar.css +0 -3
  114. package/dist/styles/components/Breadcrumb.css +26 -2
  115. package/dist/styles/components/Combobox.css +116 -132
  116. package/dist/styles/components/ContextSelect.css +4 -4
  117. package/dist/styles/components/DocumentViewer.css +2 -2
  118. package/dist/styles/components/DropdownSelect.css +225 -0
  119. package/dist/styles/components/EmptyState.css +8 -8
  120. package/dist/styles/components/FAB.css +1 -1
  121. package/dist/styles/components/FileUpload.css +10 -10
  122. package/dist/styles/components/Input.css +47 -10
  123. package/dist/styles/components/Label.css +1 -1
  124. package/dist/styles/components/LicensePlateInput.css +1 -1
  125. package/dist/styles/components/Menu.css +124 -38
  126. package/dist/styles/components/Pagination.css +15 -15
  127. package/dist/styles/components/PhotoUploader.css +4 -4
  128. package/dist/styles/components/ProgressAccordeon.css +10 -6
  129. package/dist/styles/components/ProgressTracker.css +273 -22
  130. package/dist/styles/components/Scrollbar.css +7 -6
  131. package/dist/styles/components/SearchInput.css +4 -4
  132. package/dist/styles/components/Select.css +2 -2
  133. package/dist/styles/components/SmsOtpField.css +2 -2
  134. package/dist/styles/components/SpecList.css +8 -8
  135. package/dist/styles/components/Spinner.css +1 -1
  136. package/dist/styles/components/SwipeActions.css +6 -6
  137. package/dist/styles/components/Table.css +3 -3
  138. package/dist/styles/components/Tabs.css +6 -6
  139. package/dist/styles/components/Textarea.css +2 -2
  140. package/dist/styles/components/Typography.css +89 -0
  141. package/dist/styles/components/Waveform.css +1 -1
  142. package/dist/styles/index.css +1167 -462
  143. package/dist/styles/muka-dark.css +1167 -462
  144. package/dist/styles/muka-light.css +1167 -462
  145. package/dist/styles/tokens-bouwplan-dark.css +5 -4
  146. package/dist/styles/tokens-bouwplan-light.css +5 -4
  147. package/dist/styles/tokens-fscl-dark.css +25 -24
  148. package/dist/styles/tokens-fscl-light.css +25 -24
  149. package/dist/styles/tokens-grip-dark.css +4 -3
  150. package/dist/styles/tokens-grip-light.css +4 -3
  151. package/dist/styles/tokens-muka-dark.css +4 -3
  152. package/dist/styles/tokens-muka-light.css +4 -3
  153. package/dist/styles/tokens-wireframe-dark.css +49 -48
  154. package/dist/styles/tokens-wireframe-light.css +49 -48
  155. package/dist/styles/wireframe-dark.css +1212 -507
  156. package/dist/styles/wireframe-light.css +1212 -507
  157. package/dist/types/components/Combobox/Combobox.d.ts +38 -38
  158. package/dist/types/components/Combobox/Combobox.d.ts.map +1 -1
  159. package/dist/types/components/Combobox/index.d.ts +1 -1
  160. package/dist/types/components/Combobox/index.d.ts.map +1 -1
  161. package/dist/types/components/DropdownSelect/DropdownSelect.d.ts +71 -0
  162. package/dist/types/components/DropdownSelect/DropdownSelect.d.ts.map +1 -0
  163. package/dist/types/components/DropdownSelect/index.d.ts +2 -0
  164. package/dist/types/components/DropdownSelect/index.d.ts.map +1 -0
  165. package/dist/types/components/Icon/custom/ArrowReturnIcon.d.ts +9 -0
  166. package/dist/types/components/Icon/custom/ArrowReturnIcon.d.ts.map +1 -0
  167. package/dist/types/components/Icon/iconRegistry.d.ts.map +1 -1
  168. package/dist/types/components/Input/Input.d.ts +5 -0
  169. package/dist/types/components/Input/Input.d.ts.map +1 -1
  170. package/dist/types/components/Menu/Menu.d.ts +42 -2
  171. package/dist/types/components/Menu/Menu.d.ts.map +1 -1
  172. package/dist/types/components/ProgressAccordeon/ProgressAccordeon.d.ts +17 -12
  173. package/dist/types/components/ProgressAccordeon/ProgressAccordeon.d.ts.map +1 -1
  174. package/dist/types/components/ProgressTracker/ProgressTracker.d.ts +29 -8
  175. package/dist/types/components/ProgressTracker/ProgressTracker.d.ts.map +1 -1
  176. package/dist/types/components/index.d.ts +1 -0
  177. package/dist/types/components/index.d.ts.map +1 -1
  178. package/docs/consumers/README.md +116 -37
  179. package/docs/consumers/brand.md +261 -0
  180. package/docs/consumers/figma-console-mcp.md +116 -0
  181. package/docs/consumers/setup-instructions.md +98 -12
  182. package/docs/consumers/skills.md +79 -0
  183. package/package.json +5 -6
  184. package/scripts/postinstall-nudge.js +8 -4
  185. package/skills/add-brand/SKILL.md +204 -0
  186. package/skills/add-brand/reference.md +160 -0
  187. package/skills/figma-to-code/SKILL.md +127 -0
  188. package/skills/pull-from-figma/SKILL.md +123 -0
  189. package/skills/push-to-figma/SKILL.md +172 -0
  190. package/skills/setup-muka/SKILL.md +73 -13
  191. package/tokens/README.md +39 -17
  192. package/tokens/t2-alias/brand/bouwplan/fonts.json +1 -1
  193. package/tokens/t2-alias/brand/fscl/fonts.json +3 -3
  194. package/tokens/t2-alias/brand/wireframe/fonts.json +2 -2
  195. package/tokens/t4-components/menu.json +8 -3
@@ -1,186 +1,170 @@
1
- /* Combobox Component Styles */
1
+ /* Combobox — Figma Input Combobox (free-input chips + suggestion Menu) */
2
2
 
3
- /* ─── Trigger group (positioning context for the trailing controls) ── */
3
+ .muka-combobox {
4
+ display: inline-flex;
5
+ flex-direction: column;
6
+ gap: var(--spacing-2);
7
+ min-width: 200px;
8
+ }
4
9
 
5
- /*
6
- * The clear control is a sibling of the trigger, not a child (a <button> may
7
- * not contain interactive content), so it is overlaid on the trigger's trailing
8
- * padding. The trigger reserves that space with padding-right below.
9
- */
10
- .muka-combobox__trigger-group {
11
- position: relative;
12
- display: block;
10
+ .muka-combobox--full-width {
13
11
  width: 100%;
14
12
  }
15
13
 
16
- /* ─── Trigger (looks like an Input field, behaves like a button) ── */
14
+ .muka-combobox__label {
15
+ color: var(--color-text-default-default);
16
+ cursor: pointer;
17
+ }
18
+
19
+ .muka-combobox__label--sm {
20
+ font-family: var(--text-label-sm-semibold-fontFamily);
21
+ font-weight: var(--text-label-sm-semibold-fontWeight);
22
+ font-size: var(--text-label-sm-semibold-fontSize);
23
+ line-height: var(--text-label-sm-semibold-lineHeight);
24
+ }
17
25
 
18
- .muka-combobox {
19
- display: inline-flex;
26
+ .muka-combobox__label--md {
27
+ font-family: var(--text-label-md-semibold-fontFamily);
28
+ font-weight: var(--text-label-md-semibold-fontWeight);
29
+ font-size: var(--text-label-md-semibold-fontSize);
30
+ line-height: var(--text-label-md-semibold-lineHeight);
31
+ }
32
+
33
+ .muka-combobox__label--lg {
34
+ font-family: var(--text-label-lg-semibold-fontFamily);
35
+ font-weight: var(--text-label-lg-semibold-fontWeight);
36
+ font-size: var(--text-label-lg-semibold-fontSize);
37
+ line-height: var(--text-label-lg-semibold-lineHeight);
38
+ }
39
+
40
+ .muka-combobox__field {
41
+ display: flex;
20
42
  align-items: center;
21
- gap: var(--spacing-2);
22
43
  width: 100%;
23
- padding: 0 var(--muka-combobox-trailing-space) 0 var(--input-field-padding-x);
44
+ position: relative;
45
+ isolation: isolate;
46
+ box-sizing: border-box;
24
47
  background-color: var(--input-field-color-default-background);
25
48
  border: var(--border-width-regular) solid var(--input-field-color-default-border);
26
- color: var(--color-text-default-default);
27
- text-align: left;
28
- cursor: pointer;
29
- font-family: var(--text-body-md-regular-fontFamily);
30
- font-weight: var(--text-body-md-regular-fontWeight);
31
- font-size: var(--text-body-md-regular-fontSize);
32
- line-height: var(--text-body-md-regular-lineHeight);
33
- -webkit-tap-highlight-color: transparent;
34
- transition: border-color 0.12s ease;
35
-
36
- /* Room for the chevron overlaid on the trailing edge. */
37
- --muka-combobox-trailing-space: calc(
38
- var(--input-field-padding-x) + var(--icon-size-sm) + var(--spacing-2)
39
- );
49
+ border-radius: var(--input-field-radius-lg);
50
+ padding: var(--spacing-2);
51
+ cursor: text;
52
+ transition: border-color 0.12s ease, background-color 0.12s ease;
40
53
  }
41
54
 
42
- /* …and for the clear button next to it, when one is rendered. */
43
- .muka-combobox--clearable {
44
- --muka-combobox-trailing-space: calc(
45
- var(--input-field-padding-x) + var(--icon-size-sm) + var(--spacing-2) +
46
- var(--icon-size-xs) + var(--spacing-1) * 2 + var(--spacing-2)
47
- );
55
+ .muka-combobox__field::after {
56
+ content: '';
57
+ position: absolute;
58
+ inset: 0;
59
+ border-radius: inherit;
60
+ box-shadow: inset 0 1px 2px 0 rgba(26, 26, 26, 0.08);
61
+ pointer-events: none;
48
62
  }
49
63
 
50
- .muka-combobox--sm {
64
+ .muka-combobox__field--sm {
51
65
  min-height: var(--input-field-height-sm);
52
66
  border-radius: var(--input-field-radius-sm);
53
67
  }
54
68
 
55
- .muka-combobox--md {
69
+ .muka-combobox__field--md {
56
70
  min-height: var(--input-field-height-default);
57
71
  border-radius: var(--input-field-radius-md);
58
72
  }
59
73
 
60
- .muka-combobox--lg {
74
+ .muka-combobox__field--lg {
61
75
  min-height: var(--input-field-height-lg);
62
76
  border-radius: var(--input-field-radius-lg);
63
77
  }
64
78
 
65
- .muka-combobox:hover:not(:disabled) {
66
- border-color: var(--input-field-color-hover-border, var(--input-field-color-default-border));
79
+ .muka-combobox__field--focused:not(.muka-combobox__field--disabled) {
80
+ border-width: var(--border-width-bold);
81
+ border-color: var(--input-field-color-focus-border);
82
+ background-color: var(--input-field-color-focus-background);
83
+ padding: calc(var(--spacing-2) - 1px);
67
84
  }
68
85
 
69
- .muka-combobox:focus-visible {
70
- outline: none;
71
- border-color: var(--input-field-color-focus-border, var(--color-action-default));
86
+ .muka-combobox__field--error:not(.muka-combobox__field--disabled) {
87
+ border-color: var(--color-state-error-contrast);
72
88
  }
73
89
 
74
- .muka-combobox--disabled,
75
- .muka-combobox:disabled {
90
+ .muka-combobox__field--disabled {
76
91
  opacity: 0.5;
77
92
  cursor: not-allowed;
78
93
  }
79
94
 
80
- .muka-combobox--placeholder .muka-combobox__label {
81
- color: var(--color-text-subtle-default);
82
- }
83
-
84
- .muka-combobox__leading {
85
- display: inline-flex;
86
- align-items: center;
87
- justify-content: center;
88
- flex-shrink: 0;
89
- color: var(--color-text-subtle-default);
90
- }
91
-
92
- .muka-combobox__label {
93
- flex: 1 1 auto;
94
- min-width: 0;
95
- white-space: nowrap;
96
- overflow: hidden;
97
- text-overflow: ellipsis;
95
+ .muka-combobox__field--multiline {
96
+ align-items: flex-start;
97
+ min-height: 7rem;
98
98
  }
99
99
 
100
- /* ─── Trailing controls (clear + chevron) ─────────────── */
101
-
102
- .muka-combobox__actions {
103
- position: absolute;
104
- top: 0;
105
- right: var(--input-field-padding-x);
106
- height: 100%;
100
+ .muka-combobox__chips {
107
101
  display: flex;
108
- align-items: center;
102
+ flex: 1 1 auto;
103
+ flex-wrap: wrap;
109
104
  gap: var(--spacing-2);
110
- /*
111
- * The strip sits on top of the trigger, so it must not swallow taps meant to
112
- * open the picker. Only the clear button takes pointer events back.
113
- */
114
- pointer-events: none;
115
- }
116
-
117
- .muka-combobox__clear,
118
- .muka-combobox__chevron {
119
- display: inline-flex;
120
105
  align-items: center;
121
- justify-content: center;
122
- flex-shrink: 0;
123
- color: var(--color-text-subtle-default);
106
+ min-width: 0;
107
+ width: 100%;
108
+ position: relative;
109
+ z-index: 1;
124
110
  }
125
111
 
126
- .muka-combobox__clear {
127
- pointer-events: auto;
128
- cursor: pointer;
129
- padding: var(--spacing-1);
112
+ .muka-combobox__input {
113
+ flex: 1 1 5rem;
114
+ min-width: 5rem;
115
+ min-height: 2rem;
116
+ margin: 0;
117
+ padding: 0 var(--spacing-1);
130
118
  border: none;
131
- background: none;
132
- border-radius: var(--radius-sm);
133
- -webkit-tap-highlight-color: transparent;
134
- }
135
-
136
- .muka-combobox__clear:hover {
137
- color: var(--color-text-default-default);
138
- background-color: var(--color-surface-level1);
139
- }
140
-
141
- .muka-combobox__clear:focus-visible {
142
- outline: 2px solid var(--color-border-focus);
143
- outline-offset: 2px;
144
- color: var(--color-text-default-default);
119
+ outline: none;
120
+ background: transparent;
121
+ color: var(--input-field-color-default-foreground);
122
+ caret-color: var(--input-field-color-default-foreground);
123
+ font-family: var(--text-label-md-regular-fontFamily);
124
+ font-size: var(--text-label-md-regular-fontSize);
125
+ font-weight: var(--text-label-md-regular-fontWeight);
126
+ line-height: var(--text-label-md-regular-lineHeight);
145
127
  }
146
128
 
147
- .muka-combobox--disabled ~ .muka-combobox__actions,
148
- .muka-combobox:disabled ~ .muka-combobox__actions {
149
- opacity: 0.5;
129
+ .muka-combobox__input::placeholder {
130
+ color: var(--color-text-subtle-default);
150
131
  }
151
132
 
152
- /* ─── Picker sheet body ───────────────────────────────── */
153
-
154
- .muka-combobox__picker {
155
- display: flex;
156
- flex-direction: column;
157
- gap: var(--spacing-3);
158
- padding: 0 var(--spacing-4) var(--spacing-4);
159
- min-height: 0;
160
- max-height: 80vh;
133
+ .muka-combobox__helper {
134
+ margin: 0;
135
+ color: var(--color-text-subtle-default);
136
+ font-family: var(--text-label-sm-regular-fontFamily);
137
+ font-size: var(--text-label-sm-regular-fontSize);
138
+ font-weight: var(--text-label-sm-regular-fontWeight);
139
+ line-height: var(--text-label-sm-regular-lineHeight);
161
140
  }
162
141
 
163
- .muka-combobox__title {
142
+ .muka-combobox__error {
164
143
  margin: 0;
165
- padding: var(--spacing-2) 0;
166
- color: var(--color-text-default-default);
167
- font-family: var(--text-heading-sm-fontFamily);
168
- font-weight: var(--text-heading-sm-fontWeight);
169
- font-size: var(--text-heading-sm-fontSize);
170
- line-height: var(--text-heading-sm-lineHeight);
144
+ color: var(--color-state-error-default);
145
+ font-family: var(--text-label-sm-regular-fontFamily);
146
+ font-size: var(--text-label-sm-regular-fontSize);
147
+ font-weight: var(--text-label-sm-regular-fontWeight);
148
+ line-height: var(--text-label-sm-regular-lineHeight);
171
149
  }
172
150
 
173
- .muka-combobox__search {
174
- position: sticky;
175
- top: 0;
176
- z-index: 1;
177
- padding-bottom: var(--spacing-2);
178
- background-color: var(--color-surface-level3);
151
+ .muka-combobox__menu-anchor {
152
+ position: absolute;
153
+ inset: 0;
154
+ z-index: 0;
155
+ width: 100%;
156
+ height: 100%;
157
+ margin: 0;
158
+ padding: 0;
159
+ border: none;
160
+ background: transparent;
161
+ pointer-events: none;
162
+ opacity: 0;
179
163
  }
180
164
 
181
- .muka-combobox__list {
182
- flex: 1 1 auto;
183
- min-height: 0;
184
- overflow-y: auto;
185
- -webkit-overflow-scrolling: touch;
165
+ .muka-combobox__menu {
166
+ /* Prefer Menu token min-width (280px); may exceed the field when left-aligned. */
167
+ min-width: var(--menu-content-min-width);
168
+ width: max-content;
169
+ max-width: min(100vw - 2rem, 24rem);
186
170
  }
@@ -71,10 +71,10 @@
71
71
  }
72
72
 
73
73
  .muka-context-select__label {
74
- font-family: var(--text-label-sm-regular-font-family);
75
- font-size: var(--text-label-sm-regular-font-size);
76
- font-weight: var(--text-label-sm-regular-font-weight);
77
- line-height: var(--text-label-sm-regular-line-height);
74
+ font-family: var(--text-label-sm-regular-fontFamily);
75
+ font-size: var(--text-label-sm-regular-fontSize);
76
+ font-weight: var(--text-label-sm-regular-fontWeight);
77
+ line-height: var(--text-label-sm-regular-lineHeight);
78
78
  white-space: nowrap;
79
79
  }
80
80
 
@@ -65,7 +65,7 @@
65
65
  line-height: var(--text-label-sm-lineHeight);
66
66
  border: 1px solid var(--color-border-default);
67
67
  border-radius: var(--border-radius-md);
68
- background-color: var(--color-surface-default);
68
+ background-color: var(--color-surface-level0);
69
69
  color: var(--color-text-default-default);
70
70
  }
71
71
 
@@ -210,7 +210,7 @@
210
210
 
211
211
  .muka-documentviewer__thumbnail-label {
212
212
  font-family: var(--alias-font-brand-family);
213
- font-size: var(--text-label-xs-fontSize);
213
+ font-size: var(--text-label-xs-regular-fontSize);
214
214
  color: var(--color-text-default-default);
215
215
  font-weight: var(--alias-font-brand-weight-medium);
216
216
  }
@@ -0,0 +1,225 @@
1
+ /* DropdownSelect — Figma Dropdown Menu form field (Menu + chips) */
2
+
3
+ .muka-dropdown-select {
4
+ display: inline-flex;
5
+ flex-direction: column;
6
+ gap: var(--spacing-2);
7
+ min-width: 200px;
8
+ }
9
+
10
+ .muka-dropdown-select--full-width {
11
+ width: 100%;
12
+ }
13
+
14
+ .muka-dropdown-select__label {
15
+ color: var(--color-text-default-default);
16
+ cursor: pointer;
17
+ }
18
+
19
+ .muka-dropdown-select__label--sm {
20
+ font-family: var(--text-label-sm-semibold-fontFamily);
21
+ font-weight: var(--text-label-sm-semibold-fontWeight);
22
+ font-size: var(--text-label-sm-semibold-fontSize);
23
+ line-height: var(--text-label-sm-semibold-lineHeight);
24
+ }
25
+
26
+ .muka-dropdown-select__label--md {
27
+ font-family: var(--text-label-md-semibold-fontFamily);
28
+ font-weight: var(--text-label-md-semibold-fontWeight);
29
+ font-size: var(--text-label-md-semibold-fontSize);
30
+ line-height: var(--text-label-md-semibold-lineHeight);
31
+ }
32
+
33
+ .muka-dropdown-select__label--lg {
34
+ font-family: var(--text-label-lg-semibold-fontFamily);
35
+ font-weight: var(--text-label-lg-semibold-fontWeight);
36
+ font-size: var(--text-label-lg-semibold-fontSize);
37
+ line-height: var(--text-label-lg-semibold-lineHeight);
38
+ }
39
+
40
+ .muka-dropdown-select__required {
41
+ color: var(--color-state-error-default);
42
+ }
43
+
44
+ .muka-dropdown-select__field {
45
+ display: flex;
46
+ align-items: center;
47
+ gap: var(--spacing-1);
48
+ width: 100%;
49
+ position: relative;
50
+ box-sizing: border-box;
51
+ background-color: var(--input-field-color-default-background);
52
+ border: var(--border-width-regular) solid var(--input-field-color-default-border);
53
+ border-radius: var(--input-field-radius-lg);
54
+ padding: var(--spacing-2);
55
+ padding-right: calc(var(--spacing-2) + var(--size-2xl, 2rem));
56
+ text-align: left;
57
+ cursor: pointer;
58
+ color: var(--color-text-default-default);
59
+ transition: border-color 0.12s ease, background-color 0.12s ease;
60
+ -webkit-tap-highlight-color: transparent;
61
+ }
62
+
63
+ .muka-dropdown-select__field::after {
64
+ content: '';
65
+ position: absolute;
66
+ inset: 0;
67
+ border-radius: inherit;
68
+ box-shadow: inset 0 1px 2px 0 rgba(26, 26, 26, 0.08);
69
+ pointer-events: none;
70
+ }
71
+
72
+ .muka-dropdown-select__field--sm {
73
+ min-height: var(--input-field-height-sm);
74
+ border-radius: var(--input-field-radius-sm);
75
+ padding-right: calc(var(--spacing-2) + var(--size-xl, 1.5rem));
76
+ }
77
+
78
+ .muka-dropdown-select__field--md {
79
+ min-height: var(--input-field-height-default);
80
+ border-radius: var(--input-field-radius-md);
81
+ }
82
+
83
+ .muka-dropdown-select__field--lg {
84
+ min-height: var(--input-field-height-lg);
85
+ border-radius: var(--input-field-radius-lg);
86
+ }
87
+
88
+ .muka-dropdown-select__field--focused:not(.muka-dropdown-select__field--disabled) {
89
+ border-width: var(--border-width-bold);
90
+ border-color: var(--input-field-color-focus-border);
91
+ background-color: var(--input-field-color-focus-background);
92
+ padding: calc(var(--spacing-2) - 1px);
93
+ padding-right: calc(var(--spacing-2) + var(--size-2xl, 2rem) - 1px);
94
+ }
95
+
96
+ .muka-dropdown-select__field--sm.muka-dropdown-select__field--focused:not(.muka-dropdown-select__field--disabled) {
97
+ padding-right: calc(var(--spacing-2) + var(--size-xl, 1.5rem) - 1px);
98
+ }
99
+
100
+ .muka-dropdown-select__field--error:not(.muka-dropdown-select__field--disabled) {
101
+ border-color: var(--color-state-error-contrast);
102
+ }
103
+
104
+ .muka-dropdown-select__field--disabled {
105
+ opacity: 0.5;
106
+ cursor: not-allowed;
107
+ }
108
+
109
+ .muka-dropdown-select__content {
110
+ position: relative;
111
+ z-index: 1;
112
+ display: flex;
113
+ flex: 1 1 auto;
114
+ min-width: 0;
115
+ align-items: center;
116
+ /* Let empty-field / value clicks reach the full-field MenuTrigger underneath. */
117
+ pointer-events: none;
118
+ }
119
+
120
+ .muka-dropdown-select__placeholder {
121
+ color: var(--color-text-subtle-default);
122
+ font-family: var(--text-label-md-regular-fontFamily);
123
+ font-size: var(--text-label-md-regular-fontSize);
124
+ font-weight: var(--text-label-md-regular-fontWeight);
125
+ line-height: var(--text-label-md-regular-lineHeight);
126
+ padding-inline: var(--spacing-1);
127
+ }
128
+
129
+ .muka-dropdown-select__value {
130
+ font-family: var(--text-label-md-regular-fontFamily);
131
+ font-size: var(--text-label-md-regular-fontSize);
132
+ font-weight: var(--text-label-md-regular-fontWeight);
133
+ line-height: var(--text-label-md-regular-lineHeight);
134
+ padding-inline: var(--spacing-1);
135
+ white-space: nowrap;
136
+ overflow: hidden;
137
+ text-overflow: ellipsis;
138
+ }
139
+
140
+ .muka-dropdown-select__chips {
141
+ display: flex;
142
+ flex: 1 1 auto;
143
+ flex-wrap: wrap;
144
+ gap: var(--spacing-2);
145
+ align-items: flex-start;
146
+ min-width: 0;
147
+ /* Chip remove controls must remain clickable above the field hit target. */
148
+ pointer-events: auto;
149
+ }
150
+
151
+ .muka-dropdown-select__field--multiline {
152
+ align-items: flex-start;
153
+ min-height: 7rem;
154
+ }
155
+
156
+ .muka-dropdown-select__menu-button {
157
+ position: absolute;
158
+ inset: 0;
159
+ z-index: 0;
160
+ display: inline-flex;
161
+ align-items: center;
162
+ justify-content: flex-end;
163
+ width: auto;
164
+ height: auto;
165
+ padding: 0;
166
+ padding-right: var(--spacing-2);
167
+ border: none;
168
+ border-radius: inherit;
169
+ background: transparent;
170
+ color: var(--color-text-subtle-default);
171
+ cursor: pointer;
172
+ }
173
+
174
+ .muka-dropdown-select__field--multiline .muka-dropdown-select__menu-button {
175
+ align-items: flex-start;
176
+ padding-top: calc(var(--spacing-2) + 8px);
177
+ }
178
+
179
+ .muka-dropdown-select__chevron {
180
+ display: inline-flex;
181
+ align-items: center;
182
+ justify-content: center;
183
+ width: var(--size-2xl, 2rem);
184
+ height: var(--size-2xl, 2rem);
185
+ pointer-events: none;
186
+ color: var(--color-text-subtle-default);
187
+ }
188
+
189
+ .muka-dropdown-select__chevron .muka-icon,
190
+ .muka-dropdown-select__menu-button:hover .muka-dropdown-select__chevron,
191
+ .muka-dropdown-select__menu-button:hover .muka-icon {
192
+ color: var(--color-text-subtle-default);
193
+ }
194
+
195
+ .muka-dropdown-select__field--sm .muka-dropdown-select__chevron {
196
+ width: var(--size-xl, 1.5rem);
197
+ height: var(--size-xl, 1.5rem);
198
+ }
199
+
200
+ .muka-dropdown-select__menu-button:focus-visible {
201
+ outline: 2px solid var(--color-border-focus, var(--color-action-default));
202
+ outline-offset: 2px;
203
+ }
204
+
205
+ .muka-dropdown-select__helper {
206
+ margin: 0;
207
+ color: var(--color-text-subtle-default);
208
+ font-family: var(--text-label-sm-regular-fontFamily);
209
+ font-size: var(--text-label-sm-regular-fontSize);
210
+ font-weight: var(--text-label-sm-regular-fontWeight);
211
+ line-height: var(--text-label-sm-regular-lineHeight);
212
+ }
213
+
214
+ .muka-dropdown-select__error {
215
+ margin: 0;
216
+ color: var(--color-state-error-default);
217
+ font-family: var(--text-label-sm-regular-fontFamily);
218
+ font-size: var(--text-label-sm-regular-fontSize);
219
+ font-weight: var(--text-label-sm-regular-fontWeight);
220
+ line-height: var(--text-label-sm-regular-lineHeight);
221
+ }
222
+
223
+ .muka-dropdown-select__menu {
224
+ /* Uses Menu min-width (280px); grows with long labels; left-aligned to the field. */
225
+ }
@@ -80,10 +80,10 @@
80
80
  .muka-emptystate__title {
81
81
  color: var(--emptystate-title-color);
82
82
  margin: 0;
83
- font-family: var(--text-heading-h4-fontFamily);
84
- font-weight: var(--text-heading-h4-fontWeight);
85
- font-size: var(--text-heading-h4-fontSize);
86
- line-height: var(--text-heading-h4-lineHeight);
83
+ font-family: var(--text-heading-sm-fontFamily);
84
+ font-weight: var(--text-heading-sm-fontWeight);
85
+ font-size: var(--text-heading-sm-fontSize);
86
+ line-height: var(--text-heading-sm-lineHeight);
87
87
  }
88
88
 
89
89
  .muka-emptystate--sm .muka-emptystate__title {
@@ -94,10 +94,10 @@
94
94
  }
95
95
 
96
96
  .muka-emptystate--lg .muka-emptystate__title {
97
- font-family: var(--text-heading-h3-fontFamily);
98
- font-weight: var(--text-heading-h3-fontWeight);
99
- font-size: var(--text-heading-h3-fontSize);
100
- line-height: var(--text-heading-h3-lineHeight);
97
+ font-family: var(--text-heading-md-fontFamily);
98
+ font-weight: var(--text-heading-md-fontWeight);
99
+ font-size: var(--text-heading-md-fontSize);
100
+ line-height: var(--text-heading-md-lineHeight);
101
101
  }
102
102
 
103
103
  /* Description */
@@ -38,7 +38,7 @@
38
38
 
39
39
  .muka-fab--primary {
40
40
  background-color: var(--color-action-default);
41
- color: var(--color-text-inverse-default);
41
+ color: var(--color-text-default-inverse);
42
42
  }
43
43
 
44
44
  .muka-fab--primary:hover:not(:disabled) {
@@ -118,10 +118,10 @@
118
118
 
119
119
  /* Text */
120
120
  .muka-fileupload__text {
121
- font-family: var(--text-body-md-regular-fontFamily);
122
- font-size: var(--text-body-md-regular-fontSize);
123
- font-weight: var(--text-body-md-regular-fontWeight);
124
- line-height: var(--text-body-md-regular-lineHeight);
121
+ font-family: var(--text-body-base-regular-fontFamily);
122
+ font-size: var(--text-body-base-regular-fontSize);
123
+ font-weight: var(--text-body-base-regular-fontWeight);
124
+ line-height: var(--text-body-base-regular-lineHeight);
125
125
  color: var(--color-text-default-default);
126
126
  }
127
127
 
@@ -204,10 +204,10 @@
204
204
  }
205
205
 
206
206
  .muka-fileupload-item__name {
207
- font-family: var(--text-body-sm-medium-fontFamily);
208
- font-size: var(--text-body-sm-medium-fontSize);
209
- font-weight: var(--text-body-sm-medium-fontWeight);
210
- line-height: var(--text-body-sm-medium-lineHeight);
207
+ font-family: var(--text-body-sm-regular-fontFamily);
208
+ font-size: var(--text-body-sm-regular-fontSize);
209
+ font-weight: var(--text-body-sm-regular-fontWeight);
210
+ line-height: var(--text-body-sm-regular-lineHeight);
211
211
  color: var(--fileupload-item-color-default-foreground);
212
212
  white-space: nowrap;
213
213
  overflow: hidden;
@@ -243,11 +243,11 @@
243
243
  }
244
244
 
245
245
  .muka-fileupload-item__status-icon--success {
246
- color: var(--color-state-success-foreground);
246
+ color: var(--fileupload-item-color-success-foreground);
247
247
  }
248
248
 
249
249
  .muka-fileupload-item__status-icon--error {
250
- color: var(--color-state-error-foreground);
250
+ color: var(--fileupload-item-color-error-foreground);
251
251
  }
252
252
 
253
253
  .muka-fileupload-item__remove {