sv5ui 1.1.3 → 1.3.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 (187) hide show
  1. package/README.md +6 -0
  2. package/dist/Alert/Alert.svelte +33 -22
  3. package/dist/Alert/Alert.svelte.d.ts +1 -1
  4. package/dist/Alert/alert.types.d.ts +4 -0
  5. package/dist/Avatar/Avatar.svelte +72 -46
  6. package/dist/Avatar/avatar.types.d.ts +36 -3
  7. package/dist/Avatar/avatar.variants.d.ts +138 -0
  8. package/dist/Avatar/avatar.variants.js +23 -12
  9. package/dist/Avatar/index.d.ts +1 -1
  10. package/dist/AvatarGroup/AvatarGroup.svelte +11 -6
  11. package/dist/AvatarGroup/AvatarGroup.svelte.d.ts +1 -1
  12. package/dist/AvatarGroup/avatar-group.types.d.ts +18 -3
  13. package/dist/AvatarGroup/avatar-group.variants.d.ts +85 -0
  14. package/dist/AvatarGroup/avatar-group.variants.js +19 -29
  15. package/dist/Badge/Badge.svelte +4 -3
  16. package/dist/Badge/Badge.svelte.d.ts +1 -1
  17. package/dist/Badge/badge.types.d.ts +9 -0
  18. package/dist/Breadcrumb/Breadcrumb.svelte +20 -7
  19. package/dist/Breadcrumb/Breadcrumb.svelte.d.ts +1 -1
  20. package/dist/Breadcrumb/breadcrumb.types.d.ts +5 -1
  21. package/dist/Breadcrumb/breadcrumb.variants.d.ts +15 -5
  22. package/dist/Breadcrumb/breadcrumb.variants.js +7 -3
  23. package/dist/Button/Button.svelte +71 -16
  24. package/dist/Button/Button.svelte.d.ts +0 -1
  25. package/dist/Button/button.types.d.ts +61 -2
  26. package/dist/Calendar/Calendar.svelte +4 -0
  27. package/dist/Calendar/Calendar.svelte.d.ts +1 -1
  28. package/dist/Calendar/calendar.types.d.ts +4 -0
  29. package/dist/Card/Card.svelte +5 -4
  30. package/dist/Card/Card.svelte.d.ts +1 -1
  31. package/dist/Card/card.types.d.ts +5 -1
  32. package/dist/Checkbox/Checkbox.svelte +37 -11
  33. package/dist/Checkbox/Checkbox.svelte.d.ts +1 -1
  34. package/dist/Checkbox/checkbox.types.d.ts +16 -1
  35. package/dist/Checkbox/checkbox.variants.d.ts +90 -0
  36. package/dist/Checkbox/checkbox.variants.js +73 -4
  37. package/dist/CheckboxGroup/CheckboxGroup.svelte +215 -0
  38. package/dist/CheckboxGroup/CheckboxGroup.svelte.d.ts +5 -0
  39. package/dist/CheckboxGroup/checkbox-group.types.d.ts +130 -0
  40. package/dist/CheckboxGroup/checkbox-group.types.js +1 -0
  41. package/dist/CheckboxGroup/checkbox-group.variants.d.ts +553 -0
  42. package/dist/CheckboxGroup/checkbox-group.variants.js +231 -0
  43. package/dist/CheckboxGroup/index.d.ts +2 -0
  44. package/dist/CheckboxGroup/index.js +1 -0
  45. package/dist/Chip/Chip.svelte +3 -2
  46. package/dist/Chip/Chip.svelte.d.ts +1 -1
  47. package/dist/Chip/chip.types.d.ts +5 -1
  48. package/dist/Chip/chip.variants.d.ts +135 -45
  49. package/dist/Chip/chip.variants.js +9 -9
  50. package/dist/ContextMenu/ContextMenu.svelte +87 -77
  51. package/dist/ContextMenu/ContextMenu.svelte.d.ts +1 -1
  52. package/dist/ContextMenu/context-menu.types.d.ts +9 -3
  53. package/dist/ContextMenu/context-menu.types.js +1 -1
  54. package/dist/ContextMenu/context-menu.variants.d.ts +74 -160
  55. package/dist/ContextMenu/context-menu.variants.js +63 -95
  56. package/dist/DropdownMenu/DropdownMenu.svelte +37 -43
  57. package/dist/DropdownMenu/DropdownMenu.svelte.d.ts +1 -1
  58. package/dist/DropdownMenu/dropdown-menu.types.d.ts +9 -3
  59. package/dist/DropdownMenu/dropdown-menu.types.js +1 -1
  60. package/dist/DropdownMenu/dropdown-menu.variants.d.ts +79 -230
  61. package/dist/DropdownMenu/dropdown-menu.variants.js +68 -111
  62. package/dist/DropdownMenu/index.d.ts +1 -1
  63. package/dist/Empty/Empty.svelte +68 -33
  64. package/dist/Empty/Empty.svelte.d.ts +1 -1
  65. package/dist/Empty/empty.types.d.ts +26 -9
  66. package/dist/Empty/empty.variants.d.ts +150 -130
  67. package/dist/Empty/empty.variants.js +33 -324
  68. package/dist/FieldGroup/FieldGroup.svelte +11 -6
  69. package/dist/FieldGroup/FieldGroup.svelte.d.ts +1 -1
  70. package/dist/FieldGroup/field-group.types.d.ts +4 -0
  71. package/dist/FileUpload/FileUpload.svelte +561 -0
  72. package/dist/FileUpload/FileUpload.svelte.d.ts +8 -0
  73. package/dist/FileUpload/file-upload.types.d.ts +164 -0
  74. package/dist/FileUpload/file-upload.types.js +1 -0
  75. package/dist/FileUpload/file-upload.variants.d.ts +397 -0
  76. package/dist/FileUpload/file-upload.variants.js +224 -0
  77. package/dist/FileUpload/index.d.ts +2 -0
  78. package/dist/FileUpload/index.js +1 -0
  79. package/dist/FormField/FormField.svelte +17 -18
  80. package/dist/FormField/FormField.svelte.d.ts +1 -1
  81. package/dist/FormField/form-field.types.d.ts +4 -0
  82. package/dist/Icon/Icon.svelte +13 -7
  83. package/dist/Icon/icon.types.d.ts +18 -9
  84. package/dist/Input/Input.svelte +30 -29
  85. package/dist/Kbd/Kbd.svelte +13 -3
  86. package/dist/Kbd/Kbd.svelte.d.ts +1 -1
  87. package/dist/Kbd/index.d.ts +1 -1
  88. package/dist/Kbd/kbd.types.d.ts +15 -1
  89. package/dist/Kbd/kbd.variants.d.ts +92 -30
  90. package/dist/Kbd/kbd.variants.js +55 -35
  91. package/dist/Kbd/useKbd.svelte.d.ts +2 -2
  92. package/dist/Kbd/useKbd.svelte.js +34 -41
  93. package/dist/Link/Link.svelte +69 -24
  94. package/dist/Link/Link.svelte.d.ts +1 -1
  95. package/dist/Link/link.types.d.ts +26 -8
  96. package/dist/Link/link.variants.d.ts +35 -60
  97. package/dist/Link/link.variants.js +8 -110
  98. package/dist/Modal/Modal.svelte +9 -1
  99. package/dist/Modal/modal.types.d.ts +5 -0
  100. package/dist/Modal/modal.variants.d.ts +5 -0
  101. package/dist/Modal/modal.variants.js +1 -0
  102. package/dist/Pagination/Pagination.svelte +143 -94
  103. package/dist/Pagination/Pagination.svelte.d.ts +1 -1
  104. package/dist/Pagination/index.d.ts +1 -1
  105. package/dist/Pagination/pagination.types.d.ts +21 -2
  106. package/dist/Pagination/pagination.variants.d.ts +21 -387
  107. package/dist/Pagination/pagination.variants.js +63 -59
  108. package/dist/PinInput/PinInput.svelte +150 -0
  109. package/dist/PinInput/PinInput.svelte.d.ts +6 -0
  110. package/dist/PinInput/index.d.ts +2 -0
  111. package/dist/PinInput/index.js +1 -0
  112. package/dist/PinInput/pin-input.types.d.ts +99 -0
  113. package/dist/PinInput/pin-input.types.js +1 -0
  114. package/dist/PinInput/pin-input.variants.d.ts +303 -0
  115. package/dist/PinInput/pin-input.variants.js +196 -0
  116. package/dist/Popover/Popover.svelte +9 -12
  117. package/dist/Popover/Popover.svelte.d.ts +1 -1
  118. package/dist/Popover/popover.types.d.ts +4 -0
  119. package/dist/Popover/popover.variants.d.ts +5 -75
  120. package/dist/Popover/popover.variants.js +6 -16
  121. package/dist/Progress/Progress.svelte +58 -30
  122. package/dist/Progress/progress.types.d.ts +9 -1
  123. package/dist/Progress/progress.variants.d.ts +55 -25
  124. package/dist/Progress/progress.variants.js +34 -28
  125. package/dist/RadioGroup/RadioGroup.svelte +105 -61
  126. package/dist/RadioGroup/RadioGroup.svelte.d.ts +1 -1
  127. package/dist/RadioGroup/radio-group.types.d.ts +16 -1
  128. package/dist/RadioGroup/radio-group.variants.d.ts +90 -0
  129. package/dist/RadioGroup/radio-group.variants.js +73 -4
  130. package/dist/Select/Select.svelte +9 -6
  131. package/dist/Select/Select.svelte.d.ts +1 -1
  132. package/dist/Select/select.types.d.ts +4 -0
  133. package/dist/SelectMenu/SelectMenu.svelte +436 -0
  134. package/dist/SelectMenu/SelectMenu.svelte.d.ts +5 -0
  135. package/dist/SelectMenu/index.d.ts +2 -0
  136. package/dist/SelectMenu/index.js +1 -0
  137. package/dist/SelectMenu/select-menu.types.d.ts +262 -0
  138. package/dist/SelectMenu/select-menu.types.js +1 -0
  139. package/dist/SelectMenu/select-menu.variants.d.ts +759 -0
  140. package/dist/SelectMenu/select-menu.variants.js +33 -0
  141. package/dist/Separator/Separator.svelte +1 -2
  142. package/dist/Separator/separator.variants.d.ts +1 -5
  143. package/dist/Separator/separator.variants.js +2 -2
  144. package/dist/Skeleton/Skeleton.svelte +18 -2
  145. package/dist/Skeleton/Skeleton.svelte.d.ts +1 -1
  146. package/dist/Skeleton/skeleton.types.d.ts +10 -1
  147. package/dist/Slideover/Slideover.svelte +9 -1
  148. package/dist/Slideover/slideover.types.d.ts +5 -0
  149. package/dist/Slideover/slideover.variants.d.ts +20 -5
  150. package/dist/Slideover/slideover.variants.js +4 -29
  151. package/dist/Slider/Slider.svelte +135 -0
  152. package/dist/Slider/Slider.svelte.d.ts +6 -0
  153. package/dist/Slider/index.d.ts +2 -0
  154. package/dist/Slider/index.js +1 -0
  155. package/dist/Slider/slider.types.d.ts +55 -0
  156. package/dist/Slider/slider.types.js +1 -0
  157. package/dist/Slider/slider.variants.d.ts +383 -0
  158. package/dist/Slider/slider.variants.js +102 -0
  159. package/dist/Switch/Switch.svelte +32 -31
  160. package/dist/Switch/Switch.svelte.d.ts +1 -1
  161. package/dist/Switch/switch.types.d.ts +6 -1
  162. package/dist/Switch/switch.variants.js +6 -6
  163. package/dist/Tabs/Tabs.svelte +6 -9
  164. package/dist/Tabs/Tabs.svelte.d.ts +1 -1
  165. package/dist/Tabs/tabs.types.d.ts +4 -0
  166. package/dist/Tabs/tabs.variants.js +2 -0
  167. package/dist/Textarea/Textarea.svelte +26 -25
  168. package/dist/ThemeModeButton/theme-mode-button.types.d.ts +7 -2
  169. package/dist/Timeline/Timeline.svelte +62 -19
  170. package/dist/Timeline/Timeline.svelte.d.ts +1 -1
  171. package/dist/Timeline/index.d.ts +1 -1
  172. package/dist/Timeline/timeline.types.d.ts +8 -0
  173. package/dist/Tooltip/Tooltip.svelte +12 -10
  174. package/dist/Tooltip/Tooltip.svelte.d.ts +1 -1
  175. package/dist/Tooltip/tooltip.types.d.ts +8 -4
  176. package/dist/Tooltip/tooltip.variants.d.ts +10 -75
  177. package/dist/Tooltip/tooltip.variants.js +8 -17
  178. package/dist/User/User.svelte +13 -9
  179. package/dist/User/User.svelte.d.ts +1 -1
  180. package/dist/User/user.types.d.ts +4 -0
  181. package/dist/User/user.variants.d.ts +60 -0
  182. package/dist/User/user.variants.js +13 -1
  183. package/dist/config.d.ts +8 -0
  184. package/dist/config.js +9 -1
  185. package/dist/index.d.ts +5 -0
  186. package/dist/index.js +5 -0
  187. package/package.json +2 -2
@@ -1,235 +1,185 @@
1
1
  import { type VariantProps } from 'tailwind-variants';
2
+ export declare const itemColorClasses: Record<string, {
3
+ item: string;
4
+ itemLeadingIcon: string;
5
+ }>;
2
6
  export declare const contextMenuVariants: import("tailwind-variants").TVReturnType<{
3
7
  transition: {
4
8
  true: {
5
- content: string;
6
- subContent: string;
9
+ content: string[];
10
+ subContent: string[];
7
11
  };
8
12
  };
9
13
  size: {
10
14
  xs: {
11
15
  item: string;
12
16
  subTrigger: string;
13
- itemIcon: string;
17
+ itemLeadingIcon: string;
14
18
  subTriggerIcon: string;
15
- checkboxIndicator: string;
16
- radioIndicator: string;
19
+ itemIndicator: string;
17
20
  label: string;
18
21
  };
19
22
  sm: {
20
23
  item: string;
21
24
  subTrigger: string;
22
- itemIcon: string;
25
+ itemLeadingIcon: string;
23
26
  subTriggerIcon: string;
24
- checkboxIndicator: string;
25
- radioIndicator: string;
27
+ itemIndicator: string;
26
28
  label: string;
27
29
  };
28
30
  md: {
29
31
  item: string;
30
32
  subTrigger: string;
31
- itemIcon: string;
33
+ itemLeadingIcon: string;
32
34
  subTriggerIcon: string;
33
- checkboxIndicator: string;
34
- radioIndicator: string;
35
+ itemIndicator: string;
35
36
  };
36
37
  lg: {
37
38
  item: string;
38
39
  subTrigger: string;
39
- itemIcon: string;
40
+ itemLeadingIcon: string;
40
41
  subTriggerIcon: string;
41
- checkboxIndicator: string;
42
- radioIndicator: string;
42
+ itemIndicator: string;
43
43
  };
44
44
  xl: {
45
45
  item: string;
46
46
  subTrigger: string;
47
- itemIcon: string;
47
+ itemLeadingIcon: string;
48
48
  subTriggerIcon: string;
49
- checkboxIndicator: string;
50
- radioIndicator: string;
49
+ itemIndicator: string;
51
50
  };
52
51
  };
53
- color: {
54
- default: {};
55
- primary: {};
56
- secondary: {};
57
- tertiary: {};
58
- success: {};
59
- warning: {};
60
- error: {};
61
- info: {};
62
- surface: {};
63
- };
64
52
  }, {
65
53
  content: string[];
66
54
  group: string;
67
55
  separator: string;
68
56
  label: string;
69
57
  item: string[];
70
- itemIcon: string;
58
+ itemLeadingIcon: string;
71
59
  itemLabel: string;
72
- itemKbd: string;
60
+ itemTrailingKbds: string;
73
61
  itemIndicator: string;
74
62
  subTrigger: string[];
75
63
  subTriggerIcon: string;
76
64
  subContent: string[];
77
- checkboxIndicator: string;
78
- radioIndicator: string;
79
65
  }, undefined, {
80
66
  transition: {
81
67
  true: {
82
- content: string;
83
- subContent: string;
68
+ content: string[];
69
+ subContent: string[];
84
70
  };
85
71
  };
86
72
  size: {
87
73
  xs: {
88
74
  item: string;
89
75
  subTrigger: string;
90
- itemIcon: string;
76
+ itemLeadingIcon: string;
91
77
  subTriggerIcon: string;
92
- checkboxIndicator: string;
93
- radioIndicator: string;
78
+ itemIndicator: string;
94
79
  label: string;
95
80
  };
96
81
  sm: {
97
82
  item: string;
98
83
  subTrigger: string;
99
- itemIcon: string;
84
+ itemLeadingIcon: string;
100
85
  subTriggerIcon: string;
101
- checkboxIndicator: string;
102
- radioIndicator: string;
86
+ itemIndicator: string;
103
87
  label: string;
104
88
  };
105
89
  md: {
106
90
  item: string;
107
91
  subTrigger: string;
108
- itemIcon: string;
92
+ itemLeadingIcon: string;
109
93
  subTriggerIcon: string;
110
- checkboxIndicator: string;
111
- radioIndicator: string;
94
+ itemIndicator: string;
112
95
  };
113
96
  lg: {
114
97
  item: string;
115
98
  subTrigger: string;
116
- itemIcon: string;
99
+ itemLeadingIcon: string;
117
100
  subTriggerIcon: string;
118
- checkboxIndicator: string;
119
- radioIndicator: string;
101
+ itemIndicator: string;
120
102
  };
121
103
  xl: {
122
104
  item: string;
123
105
  subTrigger: string;
124
- itemIcon: string;
106
+ itemLeadingIcon: string;
125
107
  subTriggerIcon: string;
126
- checkboxIndicator: string;
127
- radioIndicator: string;
108
+ itemIndicator: string;
128
109
  };
129
110
  };
130
- color: {
131
- default: {};
132
- primary: {};
133
- secondary: {};
134
- tertiary: {};
135
- success: {};
136
- warning: {};
137
- error: {};
138
- info: {};
139
- surface: {};
140
- };
141
111
  }, {
142
112
  content: string[];
143
113
  group: string;
144
114
  separator: string;
145
115
  label: string;
146
116
  item: string[];
147
- itemIcon: string;
117
+ itemLeadingIcon: string;
148
118
  itemLabel: string;
149
- itemKbd: string;
119
+ itemTrailingKbds: string;
150
120
  itemIndicator: string;
151
121
  subTrigger: string[];
152
122
  subTriggerIcon: string;
153
123
  subContent: string[];
154
- checkboxIndicator: string;
155
- radioIndicator: string;
156
124
  }, import("tailwind-variants").TVReturnType<{
157
125
  transition: {
158
126
  true: {
159
- content: string;
160
- subContent: string;
127
+ content: string[];
128
+ subContent: string[];
161
129
  };
162
130
  };
163
131
  size: {
164
132
  xs: {
165
133
  item: string;
166
134
  subTrigger: string;
167
- itemIcon: string;
135
+ itemLeadingIcon: string;
168
136
  subTriggerIcon: string;
169
- checkboxIndicator: string;
170
- radioIndicator: string;
137
+ itemIndicator: string;
171
138
  label: string;
172
139
  };
173
140
  sm: {
174
141
  item: string;
175
142
  subTrigger: string;
176
- itemIcon: string;
143
+ itemLeadingIcon: string;
177
144
  subTriggerIcon: string;
178
- checkboxIndicator: string;
179
- radioIndicator: string;
145
+ itemIndicator: string;
180
146
  label: string;
181
147
  };
182
148
  md: {
183
149
  item: string;
184
150
  subTrigger: string;
185
- itemIcon: string;
151
+ itemLeadingIcon: string;
186
152
  subTriggerIcon: string;
187
- checkboxIndicator: string;
188
- radioIndicator: string;
153
+ itemIndicator: string;
189
154
  };
190
155
  lg: {
191
156
  item: string;
192
157
  subTrigger: string;
193
- itemIcon: string;
158
+ itemLeadingIcon: string;
194
159
  subTriggerIcon: string;
195
- checkboxIndicator: string;
196
- radioIndicator: string;
160
+ itemIndicator: string;
197
161
  };
198
162
  xl: {
199
163
  item: string;
200
164
  subTrigger: string;
201
- itemIcon: string;
165
+ itemLeadingIcon: string;
202
166
  subTriggerIcon: string;
203
- checkboxIndicator: string;
204
- radioIndicator: string;
167
+ itemIndicator: string;
205
168
  };
206
169
  };
207
- color: {
208
- default: {};
209
- primary: {};
210
- secondary: {};
211
- tertiary: {};
212
- success: {};
213
- warning: {};
214
- error: {};
215
- info: {};
216
- surface: {};
217
- };
218
170
  }, {
219
171
  content: string[];
220
172
  group: string;
221
173
  separator: string;
222
174
  label: string;
223
175
  item: string[];
224
- itemIcon: string;
176
+ itemLeadingIcon: string;
225
177
  itemLabel: string;
226
- itemKbd: string;
178
+ itemTrailingKbds: string;
227
179
  itemIndicator: string;
228
180
  subTrigger: string[];
229
181
  subTriggerIcon: string;
230
182
  subContent: string[];
231
- checkboxIndicator: string;
232
- radioIndicator: string;
233
183
  }, undefined, unknown, unknown, undefined>>;
234
184
  export type ContextMenuVariantProps = VariantProps<typeof contextMenuVariants>;
235
185
  export type ContextMenuSlots = keyof ReturnType<typeof contextMenuVariants>;
@@ -237,157 +187,121 @@ export declare const contextMenuDefaults: {
237
187
  defaultVariants: import("tailwind-variants").TVDefaultVariants<{
238
188
  transition: {
239
189
  true: {
240
- content: string;
241
- subContent: string;
190
+ content: string[];
191
+ subContent: string[];
242
192
  };
243
193
  };
244
194
  size: {
245
195
  xs: {
246
196
  item: string;
247
197
  subTrigger: string;
248
- itemIcon: string;
198
+ itemLeadingIcon: string;
249
199
  subTriggerIcon: string;
250
- checkboxIndicator: string;
251
- radioIndicator: string;
200
+ itemIndicator: string;
252
201
  label: string;
253
202
  };
254
203
  sm: {
255
204
  item: string;
256
205
  subTrigger: string;
257
- itemIcon: string;
206
+ itemLeadingIcon: string;
258
207
  subTriggerIcon: string;
259
- checkboxIndicator: string;
260
- radioIndicator: string;
208
+ itemIndicator: string;
261
209
  label: string;
262
210
  };
263
211
  md: {
264
212
  item: string;
265
213
  subTrigger: string;
266
- itemIcon: string;
214
+ itemLeadingIcon: string;
267
215
  subTriggerIcon: string;
268
- checkboxIndicator: string;
269
- radioIndicator: string;
216
+ itemIndicator: string;
270
217
  };
271
218
  lg: {
272
219
  item: string;
273
220
  subTrigger: string;
274
- itemIcon: string;
221
+ itemLeadingIcon: string;
275
222
  subTriggerIcon: string;
276
- checkboxIndicator: string;
277
- radioIndicator: string;
223
+ itemIndicator: string;
278
224
  };
279
225
  xl: {
280
226
  item: string;
281
227
  subTrigger: string;
282
- itemIcon: string;
228
+ itemLeadingIcon: string;
283
229
  subTriggerIcon: string;
284
- checkboxIndicator: string;
285
- radioIndicator: string;
230
+ itemIndicator: string;
286
231
  };
287
232
  };
288
- color: {
289
- default: {};
290
- primary: {};
291
- secondary: {};
292
- tertiary: {};
293
- success: {};
294
- warning: {};
295
- error: {};
296
- info: {};
297
- surface: {};
298
- };
299
233
  }, {
300
234
  content: string[];
301
235
  group: string;
302
236
  separator: string;
303
237
  label: string;
304
238
  item: string[];
305
- itemIcon: string;
239
+ itemLeadingIcon: string;
306
240
  itemLabel: string;
307
- itemKbd: string;
241
+ itemTrailingKbds: string;
308
242
  itemIndicator: string;
309
243
  subTrigger: string[];
310
244
  subTriggerIcon: string;
311
245
  subContent: string[];
312
- checkboxIndicator: string;
313
- radioIndicator: string;
314
246
  }, {
315
247
  transition: {
316
248
  true: {
317
- content: string;
318
- subContent: string;
249
+ content: string[];
250
+ subContent: string[];
319
251
  };
320
252
  };
321
253
  size: {
322
254
  xs: {
323
255
  item: string;
324
256
  subTrigger: string;
325
- itemIcon: string;
257
+ itemLeadingIcon: string;
326
258
  subTriggerIcon: string;
327
- checkboxIndicator: string;
328
- radioIndicator: string;
259
+ itemIndicator: string;
329
260
  label: string;
330
261
  };
331
262
  sm: {
332
263
  item: string;
333
264
  subTrigger: string;
334
- itemIcon: string;
265
+ itemLeadingIcon: string;
335
266
  subTriggerIcon: string;
336
- checkboxIndicator: string;
337
- radioIndicator: string;
267
+ itemIndicator: string;
338
268
  label: string;
339
269
  };
340
270
  md: {
341
271
  item: string;
342
272
  subTrigger: string;
343
- itemIcon: string;
273
+ itemLeadingIcon: string;
344
274
  subTriggerIcon: string;
345
- checkboxIndicator: string;
346
- radioIndicator: string;
275
+ itemIndicator: string;
347
276
  };
348
277
  lg: {
349
278
  item: string;
350
279
  subTrigger: string;
351
- itemIcon: string;
280
+ itemLeadingIcon: string;
352
281
  subTriggerIcon: string;
353
- checkboxIndicator: string;
354
- radioIndicator: string;
282
+ itemIndicator: string;
355
283
  };
356
284
  xl: {
357
285
  item: string;
358
286
  subTrigger: string;
359
- itemIcon: string;
287
+ itemLeadingIcon: string;
360
288
  subTriggerIcon: string;
361
- checkboxIndicator: string;
362
- radioIndicator: string;
289
+ itemIndicator: string;
363
290
  };
364
291
  };
365
- color: {
366
- default: {};
367
- primary: {};
368
- secondary: {};
369
- tertiary: {};
370
- success: {};
371
- warning: {};
372
- error: {};
373
- info: {};
374
- surface: {};
375
- };
376
292
  }, {
377
293
  content: string[];
378
294
  group: string;
379
295
  separator: string;
380
296
  label: string;
381
297
  item: string[];
382
- itemIcon: string;
298
+ itemLeadingIcon: string;
383
299
  itemLabel: string;
384
- itemKbd: string;
300
+ itemTrailingKbds: string;
385
301
  itemIndicator: string;
386
302
  subTrigger: string[];
387
303
  subTriggerIcon: string;
388
304
  subContent: string[];
389
- checkboxIndicator: string;
390
- radioIndicator: string;
391
305
  }>;
392
306
  slots: Partial<Record<ContextMenuSlots, string>>;
393
307
  };
@@ -1,4 +1,44 @@
1
1
  import { tv } from 'tailwind-variants';
2
+ // Per-item color classes — static map, O(1) lookup, no TV re-instantiation per item
3
+ // Default highlight is here (not in base item slot) to avoid class conflicts
4
+ export const itemColorClasses = {
5
+ default: {
6
+ item: 'data-[highlighted]:bg-surface-container-highest',
7
+ itemLeadingIcon: ''
8
+ },
9
+ primary: {
10
+ item: 'text-primary data-[highlighted]:bg-primary-container data-[highlighted]:text-on-primary-container',
11
+ itemLeadingIcon: 'text-primary group-data-[highlighted]:text-on-primary-container'
12
+ },
13
+ secondary: {
14
+ item: 'text-secondary data-[highlighted]:bg-secondary-container data-[highlighted]:text-on-secondary-container',
15
+ itemLeadingIcon: 'text-secondary group-data-[highlighted]:text-on-secondary-container'
16
+ },
17
+ tertiary: {
18
+ item: 'text-tertiary data-[highlighted]:bg-tertiary-container data-[highlighted]:text-on-tertiary-container',
19
+ itemLeadingIcon: 'text-tertiary group-data-[highlighted]:text-on-tertiary-container'
20
+ },
21
+ success: {
22
+ item: 'text-success data-[highlighted]:bg-success-container data-[highlighted]:text-on-success-container',
23
+ itemLeadingIcon: 'text-success group-data-[highlighted]:text-on-success-container'
24
+ },
25
+ warning: {
26
+ item: 'text-warning data-[highlighted]:bg-warning-container data-[highlighted]:text-on-warning-container',
27
+ itemLeadingIcon: 'text-warning group-data-[highlighted]:text-on-warning-container'
28
+ },
29
+ error: {
30
+ item: 'text-error data-[highlighted]:bg-error-container data-[highlighted]:text-on-error-container',
31
+ itemLeadingIcon: 'text-error group-data-[highlighted]:text-on-error-container'
32
+ },
33
+ info: {
34
+ item: 'text-info data-[highlighted]:bg-info-container data-[highlighted]:text-on-info-container',
35
+ itemLeadingIcon: 'text-info group-data-[highlighted]:text-on-info-container'
36
+ },
37
+ surface: {
38
+ item: 'text-on-surface-variant data-[highlighted]:bg-surface-container-highest data-[highlighted]:text-on-surface',
39
+ itemLeadingIcon: 'text-on-surface-variant group-data-[highlighted]:text-on-surface'
40
+ }
41
+ };
2
42
  export const contextMenuVariants = tv({
3
43
  slots: {
4
44
  content: [
@@ -16,12 +56,11 @@ export const contextMenuVariants = tv({
16
56
  item: [
17
57
  'group relative flex items-center gap-2 w-full rounded-sm px-2 cursor-pointer select-none',
18
58
  'focus:outline-none',
19
- 'data-[disabled]:pointer-events-none data-[disabled]:opacity-50',
20
- 'data-[highlighted]:bg-surface-container-highest'
59
+ 'data-[disabled]:pointer-events-none data-[disabled]:opacity-50'
21
60
  ],
22
- itemIcon: 'shrink-0',
61
+ itemLeadingIcon: 'shrink-0',
23
62
  itemLabel: 'flex-1 truncate',
24
- itemKbd: 'ml-auto flex items-center gap-0.5',
63
+ itemTrailingKbds: 'ml-auto flex items-center gap-0.5',
25
64
  itemIndicator: 'shrink-0',
26
65
  subTrigger: [
27
66
  'relative flex items-center gap-2 w-full rounded-sm px-2 cursor-pointer select-none',
@@ -39,135 +78,64 @@ export const contextMenuVariants = tv({
39
78
  'shadow-lg',
40
79
  'focus:outline-none',
41
80
  'overflow-hidden'
42
- ],
43
- checkboxIndicator: 'shrink-0',
44
- radioIndicator: 'shrink-0'
81
+ ]
45
82
  },
46
83
  variants: {
47
84
  transition: {
48
85
  true: {
49
- content: 'data-[state=open]:animate-[fade-in_150ms_ease-out,scale-in_150ms_ease-out] data-[state=closed]:animate-[fade-out_100ms_ease-in,scale-out_100ms_ease-in]',
50
- subContent: 'data-[state=open]:animate-[fade-in_150ms_ease-out,scale-in_150ms_ease-out] data-[state=closed]:animate-[fade-out_100ms_ease-in,scale-out_100ms_ease-in]'
86
+ content: [
87
+ 'data-[state=open]:animate-in data-[state=open]:fade-in-0 data-[state=open]:zoom-in-95',
88
+ 'data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95'
89
+ ],
90
+ subContent: [
91
+ 'data-[state=open]:animate-in data-[state=open]:fade-in-0 data-[state=open]:zoom-in-95',
92
+ 'data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95'
93
+ ]
51
94
  }
52
95
  },
53
96
  size: {
54
97
  xs: {
55
98
  item: 'py-1 text-xs',
56
99
  subTrigger: 'py-1 text-xs',
57
- itemIcon: 'size-3',
100
+ itemLeadingIcon: 'size-3',
58
101
  subTriggerIcon: 'size-3',
59
- checkboxIndicator: 'size-3',
60
- radioIndicator: 'size-3',
102
+ itemIndicator: 'size-3',
61
103
  label: 'text-[10px]'
62
104
  },
63
105
  sm: {
64
106
  item: 'py-1.5 text-xs',
65
107
  subTrigger: 'py-1.5 text-xs',
66
- itemIcon: 'size-3.5',
108
+ itemLeadingIcon: 'size-3.5',
67
109
  subTriggerIcon: 'size-3.5',
68
- checkboxIndicator: 'size-3.5',
69
- radioIndicator: 'size-3.5',
110
+ itemIndicator: 'size-3.5',
70
111
  label: 'text-[11px]'
71
112
  },
72
113
  md: {
73
114
  item: 'py-1.5 text-sm',
74
115
  subTrigger: 'py-1.5 text-sm',
75
- itemIcon: 'size-4',
116
+ itemLeadingIcon: 'size-4',
76
117
  subTriggerIcon: 'size-4',
77
- checkboxIndicator: 'size-4',
78
- radioIndicator: 'size-4'
118
+ itemIndicator: 'size-4'
79
119
  },
80
120
  lg: {
81
121
  item: 'py-2 text-sm',
82
122
  subTrigger: 'py-2 text-sm',
83
- itemIcon: 'size-5',
123
+ itemLeadingIcon: 'size-5',
84
124
  subTriggerIcon: 'size-5',
85
- checkboxIndicator: 'size-5',
86
- radioIndicator: 'size-5'
125
+ itemIndicator: 'size-5'
87
126
  },
88
127
  xl: {
89
128
  item: 'py-2.5 text-base',
90
129
  subTrigger: 'py-2.5 text-base',
91
- itemIcon: 'size-5',
130
+ itemLeadingIcon: 'size-5',
92
131
  subTriggerIcon: 'size-5',
93
- checkboxIndicator: 'size-5',
94
- radioIndicator: 'size-5'
132
+ itemIndicator: 'size-5'
95
133
  }
96
- },
97
- color: {
98
- default: {},
99
- primary: {},
100
- secondary: {},
101
- tertiary: {},
102
- success: {},
103
- warning: {},
104
- error: {},
105
- info: {},
106
- surface: {}
107
134
  }
108
135
  },
109
- compoundVariants: [
110
- {
111
- color: 'error',
112
- class: {
113
- item: 'text-error data-[highlighted]:bg-error-container data-[highlighted]:text-on-error-container',
114
- itemIcon: 'text-error group-data-[highlighted]:text-on-error-container'
115
- }
116
- },
117
- {
118
- color: 'success',
119
- class: {
120
- item: 'text-success data-[highlighted]:bg-success-container data-[highlighted]:text-on-success-container',
121
- itemIcon: 'text-success group-data-[highlighted]:text-on-success-container'
122
- }
123
- },
124
- {
125
- color: 'warning',
126
- class: {
127
- item: 'text-warning data-[highlighted]:bg-warning-container data-[highlighted]:text-on-warning-container',
128
- itemIcon: 'text-warning group-data-[highlighted]:text-on-warning-container'
129
- }
130
- },
131
- {
132
- color: 'info',
133
- class: {
134
- item: 'text-info data-[highlighted]:bg-info-container data-[highlighted]:text-on-info-container',
135
- itemIcon: 'text-info group-data-[highlighted]:text-on-info-container'
136
- }
137
- },
138
- {
139
- color: 'primary',
140
- class: {
141
- item: 'text-primary data-[highlighted]:bg-primary-container data-[highlighted]:text-on-primary-container',
142
- itemIcon: 'text-primary group-data-[highlighted]:text-on-primary-container'
143
- }
144
- },
145
- {
146
- color: 'secondary',
147
- class: {
148
- item: 'text-secondary data-[highlighted]:bg-secondary-container data-[highlighted]:text-on-secondary-container',
149
- itemIcon: 'text-secondary group-data-[highlighted]:text-on-secondary-container'
150
- }
151
- },
152
- {
153
- color: 'tertiary',
154
- class: {
155
- item: 'text-tertiary data-[highlighted]:bg-tertiary-container data-[highlighted]:text-on-tertiary-container',
156
- itemIcon: 'text-tertiary group-data-[highlighted]:text-on-tertiary-container'
157
- }
158
- },
159
- {
160
- color: 'surface',
161
- class: {
162
- item: 'text-on-surface-variant data-[highlighted]:bg-surface-container-highest data-[highlighted]:text-on-surface',
163
- itemIcon: 'text-on-surface-variant group-data-[highlighted]:text-on-surface'
164
- }
165
- }
166
- ],
167
136
  defaultVariants: {
168
137
  transition: true,
169
- size: 'md',
170
- color: 'default'
138
+ size: 'md'
171
139
  }
172
140
  });
173
141
  export const contextMenuDefaults = {