@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
@@ -39,7 +39,7 @@
39
39
  }
40
40
 
41
41
  .muka-input__required {
42
- color: var(--color-state-error-foreground);
42
+ color: var(--color-state-error-default);
43
43
  }
44
44
 
45
45
  .muka-input__label--sm + .muka-input__field--disabled,
@@ -163,27 +163,58 @@
163
163
  color: var(--input-field-color-disabled-foreground);
164
164
  }
165
165
 
166
- /* Icons */
166
+ /* Icons — Figma inputfield content: sm 16px, md 20px, lg 24px. */
167
167
  .muka-input__icon {
168
168
  display: inline-flex;
169
169
  align-items: center;
170
+ justify-content: center;
170
171
  flex-shrink: 0;
171
172
  color: var(--color-text-subtle-default);
172
- width: var(--icon-size-default);
173
- height: var(--icon-size-default);
173
+ width: var(--icon-size-sm);
174
+ height: var(--icon-size-sm);
174
175
  }
175
176
 
176
177
  .muka-input__field--sm .muka-input__icon {
177
- width: var(--icon-size-sm);
178
- height: var(--icon-size-sm);
178
+ width: var(--icon-size-xs);
179
+ height: var(--icon-size-xs);
179
180
  }
180
181
 
181
182
  .muka-input__field--lg .muka-input__icon {
182
- width: var(--icon-size-lg);
183
- height: var(--icon-size-lg);
183
+ width: var(--icon-size-default);
184
+ height: var(--icon-size-default);
184
185
  }
185
186
 
186
- .muka-input__field--disabled .muka-input__icon {
187
+ .muka-input__clear {
188
+ display: inline-flex;
189
+ align-items: center;
190
+ justify-content: center;
191
+ flex-shrink: 0;
192
+ width: var(--size-2xl, 2rem);
193
+ height: var(--size-2xl, 2rem);
194
+ padding: 0;
195
+ border: none;
196
+ background: transparent;
197
+ color: var(--color-text-subtle-default);
198
+ cursor: pointer;
199
+ }
200
+
201
+ .muka-input__field--sm .muka-input__clear {
202
+ width: var(--size-xl, 1.5rem);
203
+ height: var(--size-xl, 1.5rem);
204
+ }
205
+
206
+ /* Icon sets its own color; pin the glyph to text subtle, including hover. */
207
+ .muka-input__icon .muka-icon,
208
+ .muka-input__clear .muka-icon,
209
+ .muka-input__clear:hover,
210
+ .muka-input__clear:hover .muka-icon {
211
+ color: var(--color-text-subtle-default);
212
+ }
213
+
214
+ .muka-input__field--disabled .muka-input__icon,
215
+ .muka-input__field--disabled .muka-input__icon .muka-icon,
216
+ .muka-input__field--disabled .muka-input__clear,
217
+ .muka-input__field--disabled .muka-input__clear .muka-icon {
187
218
  color: var(--input-field-color-disabled-foreground);
188
219
  }
189
220
 
@@ -192,6 +223,12 @@
192
223
  height: 100%;
193
224
  }
194
225
 
226
+ .muka-input__native::-webkit-search-cancel-button,
227
+ .muka-input__native::-webkit-search-decoration {
228
+ -webkit-appearance: none;
229
+ appearance: none;
230
+ }
231
+
195
232
  /* Helper text */
196
233
  .muka-input__helper {
197
234
  font-family: var(--text-label-sm-regular-fontFamily);
@@ -208,6 +245,6 @@
208
245
  font-weight: var(--text-label-sm-regular-fontWeight);
209
246
  font-size: var(--text-label-sm-regular-fontSize);
210
247
  line-height: var(--text-label-sm-regular-lineHeight);
211
- color: var(--color-state-error-foreground);
248
+ color: var(--color-state-error-default);
212
249
  margin: 0;
213
250
  }
@@ -34,5 +34,5 @@
34
34
  }
35
35
 
36
36
  .muka-label__required {
37
- color: var(--color-state-error-foreground);
37
+ color: var(--color-state-error-default);
38
38
  }
@@ -185,6 +185,6 @@
185
185
  font-weight: var(--text-label-sm-regular-fontWeight);
186
186
  font-size: var(--text-label-sm-regular-fontSize);
187
187
  line-height: var(--text-label-sm-regular-lineHeight);
188
- color: var(--color-state-error-foreground);
188
+ color: var(--color-state-error-default);
189
189
  margin: 0;
190
190
  }
@@ -50,32 +50,62 @@
50
50
  .muka-menu__search {
51
51
  display: flex;
52
52
  align-items: center;
53
- gap: var(--spacing-2);
54
53
  flex-shrink: 0;
55
- height: var(--size-3xl, 48px);
56
- padding: 0 var(--spacing-4);
54
+ /* Figma dropdown filter header: 48px, 8px inset, 32px icon slots. */
55
+ height: var(--input-field-height-lg, 3rem);
56
+ padding: 0 var(--spacing-2);
57
57
  border-bottom: var(--border-width-regular) solid var(--color-border-default);
58
58
  }
59
59
 
60
- .muka-menu__search-icon {
60
+ .muka-menu__search--sm {
61
+ height: calc(var(--size-xl, 1.5rem) + var(--spacing-2) * 2);
62
+ }
63
+
64
+ .muka-menu__search-icon,
65
+ .muka-menu__search-clear {
61
66
  display: flex;
67
+ align-items: center;
68
+ justify-content: center;
62
69
  flex-shrink: 0;
70
+ width: var(--size-2xl, 2rem);
71
+ height: var(--size-2xl, 2rem);
72
+ color: var(--color-text-subtle-default);
73
+ }
74
+
75
+ .muka-menu__search-icon .muka-icon,
76
+ .muka-menu__search-clear .muka-icon,
77
+ .muka-menu__search-clear:hover,
78
+ .muka-menu__search-clear:hover .muka-icon {
63
79
  color: var(--color-text-subtle-default);
64
80
  }
65
81
 
82
+ .muka-menu__search--sm .muka-menu__search-icon,
83
+ .muka-menu__search--sm .muka-menu__search-clear {
84
+ width: var(--size-xl, 1.5rem);
85
+ height: var(--size-xl, 1.5rem);
86
+ }
87
+
66
88
  .muka-menu__search-input {
67
89
  flex: 1 1 auto;
68
90
  min-width: 0;
69
91
  border: none;
70
92
  outline: none;
71
93
  background: transparent;
72
- font-family: var(--text-label-md-regular-font-family);
73
- font-size: var(--text-label-md-regular-font-size);
74
- font-weight: var(--text-label-md-regular-font-weight);
75
- line-height: var(--text-label-md-regular-line-height);
94
+ padding: 0 var(--spacing-1);
95
+ font-family: var(--text-input-md-fontFamily);
96
+ font-size: var(--text-input-md-fontSize);
97
+ font-weight: var(--text-input-md-fontWeight);
98
+ line-height: var(--text-input-md-lineHeight);
76
99
  color: var(--color-text-default-default);
77
100
  }
78
101
 
102
+ .muka-menu__search--sm .muka-menu__search-input {
103
+ font-family: var(--text-input-sm-fontFamily);
104
+ font-size: var(--text-input-sm-fontSize);
105
+ font-weight: var(--text-input-sm-fontWeight);
106
+ line-height: var(--text-input-sm-lineHeight);
107
+ }
108
+
79
109
  .muka-menu__search-input::placeholder {
80
110
  color: var(--color-text-subtle-default);
81
111
  }
@@ -86,24 +116,29 @@
86
116
  appearance: none;
87
117
  }
88
118
 
89
- .muka-menu__search-clear {
119
+ .muka-menu__empty {
90
120
  display: flex;
91
121
  align-items: center;
92
- justify-content: center;
93
- flex-shrink: 0;
122
+ min-height: var(--menu-item-height);
123
+ padding: var(--menu-item-padding-y) var(--menu-item-padding-x);
124
+ color: var(--color-text-subtle-default);
125
+ font-family: var(--text-input-md-fontFamily);
126
+ font-size: var(--text-input-md-fontSize);
127
+ font-weight: var(--text-input-md-fontWeight);
128
+ line-height: var(--text-input-md-lineHeight);
129
+ pointer-events: none;
130
+ user-select: none;
131
+ }
132
+
133
+ .muka-menu__search-clear {
94
134
  padding: 0;
95
135
  border: none;
96
136
  background: transparent;
97
- color: var(--color-text-subtle-default);
98
137
  cursor: pointer;
99
138
  }
100
139
 
101
- .muka-menu__search-clear:hover {
102
- color: var(--color-text-default-default);
103
- }
104
-
105
140
  .muka-menu__match {
106
- font-weight: var(--font-weight-bold, 700);
141
+ font-weight: var(--text-label-md-bold-fontWeight);
107
142
  }
108
143
 
109
144
  .muka-menu__content--scrollbar {
@@ -138,22 +173,26 @@
138
173
  /* ─── Menu Item ──────────────────────────────────────────────────────────── */
139
174
 
140
175
  .muka-menu__item {
176
+ position: relative;
141
177
  display: flex;
142
178
  align-items: center;
143
179
  gap: var(--menu-item-gap);
144
180
  min-height: var(--menu-item-height);
145
- padding: var(--menu-item-padding-y) var(--menu-item-padding-x);
181
+ /* Right gutter always reserved for floating trailers (enter / check). */
182
+ padding: var(--menu-item-padding-y) var(--menu-item-padding-right) var(--menu-item-padding-y)
183
+ var(--menu-item-padding-x);
146
184
  border-radius: var(--menu-item-border-radius);
147
185
  cursor: pointer;
148
186
  user-select: none;
149
187
  outline: none;
150
- font-family: var(--text-label-md-regular-font-family);
151
- font-size: var(--text-label-md-regular-font-size);
152
- font-weight: var(--text-label-md-regular-font-weight);
153
- line-height: var(--text-label-md-regular-line-height);
188
+ font-family: var(--text-label-md-regular-fontFamily);
189
+ font-size: var(--text-label-md-regular-fontSize);
190
+ font-weight: var(--text-label-md-regular-fontWeight);
191
+ line-height: var(--text-label-md-regular-lineHeight);
154
192
  color: var(--menu-item-color-default-foreground);
155
193
  background-color: var(--menu-item-color-default-background);
156
194
  transition: background-color 100ms ease, color 100ms ease;
195
+ white-space: nowrap;
157
196
  }
158
197
 
159
198
  .muka-menu__item:hover,
@@ -219,25 +258,55 @@
219
258
  }
220
259
 
221
260
  .muka-menu__item-label {
222
- flex: 1;
261
+ flex: 1 1 auto;
223
262
  min-width: 0;
263
+ white-space: nowrap;
264
+ }
265
+
266
+ /* Shortcut trailers replace icons and sit with an 8px right inset. */
267
+ .muka-menu__item--has-shortcut {
268
+ padding-right: var(--spacing-2);
224
269
  }
225
270
 
226
271
  .muka-menu__item-shortcut {
227
272
  flex-shrink: 0;
228
273
  margin-left: auto;
229
274
  padding-left: var(--menu-item-gap);
230
- font-size: var(--text-label-sm-regular-font-size);
231
- color: var(--menu-shortcut-color);
232
- opacity: 0.7;
275
+ font-family: var(--text-label-sm-regular-fontFamily);
276
+ font-size: var(--text-label-sm-regular-fontSize);
277
+ font-weight: var(--text-label-sm-regular-fontWeight);
278
+ line-height: var(--text-label-sm-regular-lineHeight);
279
+ color: var(--color-text-muted-default);
280
+ white-space: nowrap;
281
+ }
282
+
283
+ .muka-menu__item-hint {
284
+ /* Figma: trailer sits with 8px margin top / right / bottom; 24px glyph centered inside. */
285
+ position: absolute;
286
+ top: var(--spacing-2);
287
+ right: var(--spacing-2);
288
+ bottom: var(--spacing-2);
289
+ display: none;
290
+ align-items: center;
291
+ justify-content: center;
292
+ width: var(--icon-size-default, 1.5rem);
293
+ color: var(--color-text-muted-default);
294
+ pointer-events: none;
295
+ }
296
+
297
+ .muka-menu__item--hint-enter[data-highlighted] .muka-menu__item-hint {
298
+ display: flex;
233
299
  }
234
300
 
235
301
  .muka-menu__item-chevron {
302
+ position: absolute;
303
+ top: var(--spacing-2);
304
+ right: var(--spacing-2);
305
+ bottom: var(--spacing-2);
236
306
  display: flex;
237
307
  align-items: center;
238
308
  justify-content: center;
239
- flex-shrink: 0;
240
- margin-left: auto;
309
+ width: var(--icon-size-default, 1.5rem);
241
310
  color: var(--menu-shortcut-color);
242
311
  }
243
312
 
@@ -258,9 +327,10 @@
258
327
  padding-left: var(--menu-item-padding-x);
259
328
  }
260
329
 
330
+ .muka-menu__item--checkbox-trailing,
261
331
  .muka-menu__item--radio-check {
262
- position: relative;
263
- padding-right: calc(var(--menu-item-padding-x) + var(--menu-checkbox-indicator-size) + var(--menu-item-gap));
332
+ /* Same reserved right gutter as default items — trailing indicator floats. */
333
+ padding-right: var(--menu-item-padding-right);
264
334
  }
265
335
 
266
336
  .muka-menu__item--radio-check[data-state='checked'] {
@@ -268,11 +338,27 @@
268
338
  }
269
339
 
270
340
  .muka-menu__item-indicator--trailing {
341
+ /* Match enter-hint trailer: 8px inset, 24px box (override leading indicator size). */
271
342
  position: absolute;
272
- right: var(--menu-item-padding-x);
273
- top: 50%;
274
- transform: translateY(-50%);
275
- color: var(--menu-checkbox-indicator-color);
343
+ top: var(--spacing-2);
344
+ right: var(--spacing-2);
345
+ bottom: var(--spacing-2);
346
+ display: flex;
347
+ align-items: center;
348
+ justify-content: center;
349
+ width: var(--icon-size-default, 1.5rem);
350
+ height: auto;
351
+ max-height: none;
352
+ transform: none;
353
+ color: var(--color-text-subtle-default);
354
+ }
355
+
356
+ .muka-menu__item-indicator--trailing > [data-state] {
357
+ display: flex;
358
+ align-items: center;
359
+ justify-content: center;
360
+ width: 100%;
361
+ height: 100%;
276
362
  }
277
363
 
278
364
  .muka-menu__radio-dot {
@@ -298,10 +384,10 @@
298
384
 
299
385
  .muka-menu__group-label {
300
386
  padding: var(--menu-group-label-padding-y) var(--menu-group-label-padding-x);
301
- font-family: var(--text-label-sm-semibold-font-family);
302
- font-size: var(--text-label-sm-semibold-font-size);
303
- font-weight: var(--text-label-sm-semibold-font-weight);
304
- line-height: var(--text-label-sm-semibold-line-height);
387
+ font-family: var(--text-label-sm-semibold-fontFamily);
388
+ font-size: var(--text-label-sm-semibold-fontSize);
389
+ font-weight: var(--text-label-sm-semibold-fontWeight);
390
+ line-height: var(--text-label-sm-semibold-lineHeight);
305
391
  color: var(--menu-group-label-color);
306
392
  text-transform: uppercase;
307
393
  letter-spacing: 0.05em;
@@ -30,9 +30,9 @@
30
30
 
31
31
  /* Active page */
32
32
  .muka-pagination__button--active {
33
- background-color: var(--button-color-primary-default-background);
34
- color: var(--button-color-primary-default-foreground);
35
- border-color: var(--button-color-primary-default-background);
33
+ background-color: var(--button-color-primary-background-default);
34
+ color: var(--button-color-primary-foreground-default);
35
+ border-color: var(--button-color-primary-background-default);
36
36
  font-weight: 600;
37
37
  }
38
38
 
@@ -63,37 +63,37 @@
63
63
 
64
64
  /* Size variants */
65
65
  .muka-pagination--sm .muka-pagination__button {
66
- min-width: var(--button-height-sm);
67
- height: var(--button-height-sm);
66
+ min-width: var(--size-2xl);
67
+ height: var(--size-2xl);
68
68
  font-size: var(--text-label-sm-regular-fontSize);
69
69
  }
70
70
 
71
71
  .muka-pagination--sm .muka-pagination__ellipsis {
72
- min-width: var(--button-height-sm);
73
- height: var(--button-height-sm);
72
+ min-width: var(--size-2xl);
73
+ height: var(--size-2xl);
74
74
  font-size: var(--text-label-sm-regular-fontSize);
75
75
  }
76
76
 
77
77
  .muka-pagination--md .muka-pagination__button {
78
- min-width: var(--button-height-default);
79
- height: var(--button-height-default);
78
+ min-width: var(--size-3xl);
79
+ height: var(--size-3xl);
80
80
  font-size: var(--text-label-md-regular-fontSize);
81
81
  }
82
82
 
83
83
  .muka-pagination--md .muka-pagination__ellipsis {
84
- min-width: var(--button-height-default);
85
- height: var(--button-height-default);
84
+ min-width: var(--size-3xl);
85
+ height: var(--size-3xl);
86
86
  font-size: var(--text-label-md-regular-fontSize);
87
87
  }
88
88
 
89
89
  .muka-pagination--lg .muka-pagination__button {
90
- min-width: var(--button-height-lg);
91
- height: var(--button-height-lg);
90
+ min-width: var(--size-4xl);
91
+ height: var(--size-4xl);
92
92
  font-size: var(--text-label-lg-regular-fontSize);
93
93
  }
94
94
 
95
95
  .muka-pagination--lg .muka-pagination__ellipsis {
96
- min-width: var(--button-height-lg);
97
- height: var(--button-height-lg);
96
+ min-width: var(--size-4xl);
97
+ height: var(--size-4xl);
98
98
  font-size: var(--text-label-lg-regular-fontSize);
99
99
  }
@@ -79,10 +79,10 @@
79
79
  }
80
80
 
81
81
  .muka-photo-uploader__dropzone-text {
82
- font-family: var(--text-body-md-regular-fontFamily);
83
- font-size: var(--text-body-md-regular-fontSize);
84
- font-weight: var(--text-body-md-regular-fontWeight);
85
- line-height: var(--text-body-md-regular-lineHeight);
82
+ font-family: var(--text-body-base-regular-fontFamily);
83
+ font-size: var(--text-body-base-regular-fontSize);
84
+ font-weight: var(--text-body-base-regular-fontWeight);
85
+ line-height: var(--text-body-base-regular-lineHeight);
86
86
  color: var(--color-text-subtle-default);
87
87
  }
88
88
 
@@ -13,16 +13,18 @@
13
13
 
14
14
  /* Per-state gap: content-bearing steps are tighter, header-only steps looser */
15
15
  .muka-progress-accordeon--current,
16
- .muka-progress-accordeon--past.muka-progress-accordeon--expanded {
16
+ .muka-progress-accordeon--past.muka-progress-accordeon--expanded,
17
+ .muka-progress-accordeon--upcoming.muka-progress-accordeon--expanded {
17
18
  gap: var(--spacing-6);
18
19
  }
19
20
 
20
21
  .muka-progress-accordeon--upcoming,
21
- .muka-progress-accordeon--past.muka-progress-accordeon--collapsed {
22
+ .muka-progress-accordeon--past.muka-progress-accordeon--collapsed,
23
+ .muka-progress-accordeon--upcoming.muka-progress-accordeon--collapsed {
22
24
  gap: var(--spacing-8);
23
25
  }
24
26
 
25
- /* Past steps group header + slot. The header↔content gap lives inside the
27
+ /* Collapsible steps group header + slot. The header↔content gap lives inside the
26
28
  collapsing slot (as padding-top) so it collapses with the content, so the
27
29
  body gap itself is 0. */
28
30
  .muka-progress-accordeon__body {
@@ -56,8 +58,10 @@
56
58
  gap: var(--spacing-4);
57
59
  }
58
60
 
59
- /* Past steps carry 40px controls; nudge the heading to vertically centre it */
60
- .muka-progress-accordeon--past .muka-progress-accordeon__heading-group {
61
+ /* Steps with header controls (edit / chevron) are 40px tall; nudge the heading
62
+ so a single line centres against the indicator + controls row. */
63
+ .muka-progress-accordeon:has(.muka-progress-accordeon__controls)
64
+ .muka-progress-accordeon__heading-group {
61
65
  padding-top: var(--spacing-1);
62
66
  }
63
67
 
@@ -161,7 +165,7 @@
161
165
  width: 100%;
162
166
  }
163
167
 
164
- /* ─── Collapse/expand animation (past steps) ─────────────────
168
+ /* ─── Collapse/expand animation (past & upcoming steps) ──────
165
169
  The grid-template-rows 1fr → 0fr technique animates the content to/from its
166
170
  intrinsic (auto) height with no magic max-height. Under prefers-reduced-motion
167
171
  --motion-duration-view resolves to 0ms, so the toggle stays instant. */