@cooperco/cooper-component-library 0.0.10

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 (139) hide show
  1. package/README.md +11 -0
  2. package/package.json +85 -0
  3. package/src/assets/main.css +155 -0
  4. package/src/assets/theme.css +67 -0
  5. package/src/assets/usercard.jpg +0 -0
  6. package/src/assets/vue.svg +1 -0
  7. package/src/components/Accordion.vue +33 -0
  8. package/src/components/AccordionItem.vue +53 -0
  9. package/src/components/CTA.vue +39 -0
  10. package/src/components/CarouselModule.vue +46 -0
  11. package/src/components/ContainerCollectionModule.vue +33 -0
  12. package/src/components/ContainerModule.vue +116 -0
  13. package/src/components/ContentAndImage.vue +34 -0
  14. package/src/components/ContentMediaModule.vue +50 -0
  15. package/src/components/ContentModule.vue +51 -0
  16. package/src/components/FooterNavigation.vue +57 -0
  17. package/src/components/IconChevron.vue +107 -0
  18. package/src/components/Image.vue +15 -0
  19. package/src/components/LogoCollectionModule.vue +30 -0
  20. package/src/components/LogoContainerModule.vue +30 -0
  21. package/src/components/NavigationElement.vue +92 -0
  22. package/src/components/PrimaryNavigation.vue +68 -0
  23. package/src/components/SplitModule.vue +42 -0
  24. package/src/components/Testimonial.vue +48 -0
  25. package/src/components/TestimonialModule.vue +48 -0
  26. package/src/components/TileCollection.vue +37 -0
  27. package/src/components/TileCollectionModule.vue +45 -0
  28. package/src/components/TileContent.vue +105 -0
  29. package/src/components/Video.vue +18 -0
  30. package/src/components/types/Accordion.ts +18 -0
  31. package/src/components/types/AccordionItem.ts +19 -0
  32. package/src/components/types/CTA.ts +13 -0
  33. package/src/components/types/CarouselModule.ts +21 -0
  34. package/src/components/types/ContainerCollectionModule.ts +12 -0
  35. package/src/components/types/ContainerModule.ts +35 -0
  36. package/src/components/types/ContentAndImage.ts +14 -0
  37. package/src/components/types/ContentMediaModule.ts +14 -0
  38. package/src/components/types/ContentModule.ts +21 -0
  39. package/src/components/types/FooterNavigation.ts +12 -0
  40. package/src/components/types/Image.ts +12 -0
  41. package/src/components/types/LogoCollectionModule.ts +12 -0
  42. package/src/components/types/LogoContainerModule.ts +12 -0
  43. package/src/components/types/NavigationElement.ts +19 -0
  44. package/src/components/types/PrimaryNavigation.ts +10 -0
  45. package/src/components/types/SplitModule.ts +16 -0
  46. package/src/components/types/Testimonial.ts +17 -0
  47. package/src/components/types/TileCollection.ts +14 -0
  48. package/src/components/types/TileContent.ts +34 -0
  49. package/src/components/types/Video.ts +8 -0
  50. package/src/components/types/index.ts +10 -0
  51. package/src/presets/aura/accordion/index.js +81 -0
  52. package/src/presets/aura/autocomplete/index.js +280 -0
  53. package/src/presets/aura/avatar/index.js +46 -0
  54. package/src/presets/aura/badge/index.js +43 -0
  55. package/src/presets/aura/badgedirective/index.js +49 -0
  56. package/src/presets/aura/blockui/index.js +8 -0
  57. package/src/presets/aura/breadcrumb/index.js +63 -0
  58. package/src/presets/aura/button/index.js +511 -0
  59. package/src/presets/aura/calendar/index.js +702 -0
  60. package/src/presets/aura/card/index.js +53 -0
  61. package/src/presets/aura/carousel/index.js +160 -0
  62. package/src/presets/aura/cascadeselect/index.js +220 -0
  63. package/src/presets/aura/checkbox/index.js +107 -0
  64. package/src/presets/aura/chip/index.js +45 -0
  65. package/src/presets/aura/chips/index.js +126 -0
  66. package/src/presets/aura/colorpicker/index.js +132 -0
  67. package/src/presets/aura/confirmpopup/index.js +111 -0
  68. package/src/presets/aura/contextmenu/index.js +132 -0
  69. package/src/presets/aura/datatable/index.js +1290 -0
  70. package/src/presets/aura/dataview/index.js +40 -0
  71. package/src/presets/aura/deferred/index.js +3 -0
  72. package/src/presets/aura/dialog/index.js +250 -0
  73. package/src/presets/aura/divider/index.js +72 -0
  74. package/src/presets/aura/dock/index.js +97 -0
  75. package/src/presets/aura/dropdown/index.js +297 -0
  76. package/src/presets/aura/fieldset/index.js +95 -0
  77. package/src/presets/aura/fileupload/index.js +175 -0
  78. package/src/presets/aura/floatlabel/index.js +26 -0
  79. package/src/presets/aura/galleria/index.js +353 -0
  80. package/src/presets/aura/global.js +90 -0
  81. package/src/presets/aura/iconfield/index.js +22 -0
  82. package/src/presets/aura/image/index.js +206 -0
  83. package/src/presets/aura/index.js +181 -0
  84. package/src/presets/aura/inlinemessage/index.js +46 -0
  85. package/src/presets/aura/inplace/index.js +27 -0
  86. package/src/presets/aura/inputgroup/index.js +5 -0
  87. package/src/presets/aura/inputgroupaddon/index.js +28 -0
  88. package/src/presets/aura/inputmask/index.js +47 -0
  89. package/src/presets/aura/inputnumber/index.js +293 -0
  90. package/src/presets/aura/inputotp/index.js +69 -0
  91. package/src/presets/aura/inputswitch/index.js +94 -0
  92. package/src/presets/aura/inputtext/index.js +63 -0
  93. package/src/presets/aura/knob/index.js +47 -0
  94. package/src/presets/aura/listbox/index.js +158 -0
  95. package/src/presets/aura/megamenu/index.js +206 -0
  96. package/src/presets/aura/menu/index.js +122 -0
  97. package/src/presets/aura/menubar/index.js +184 -0
  98. package/src/presets/aura/message/index.js +112 -0
  99. package/src/presets/aura/metergroup/index.js +110 -0
  100. package/src/presets/aura/multiselect/index.js +579 -0
  101. package/src/presets/aura/orderlist/index.js +281 -0
  102. package/src/presets/aura/organizationchart/index.js +142 -0
  103. package/src/presets/aura/overlaypanel/index.js +34 -0
  104. package/src/presets/aura/paginator/index.js +566 -0
  105. package/src/presets/aura/panel/index.js +102 -0
  106. package/src/presets/aura/panelmenu/index.js +130 -0
  107. package/src/presets/aura/password/index.js +143 -0
  108. package/src/presets/aura/picklist/index.js +718 -0
  109. package/src/presets/aura/progressbar/index.js +64 -0
  110. package/src/presets/aura/progressspinner/index.js +51 -0
  111. package/src/presets/aura/radiobutton/index.js +121 -0
  112. package/src/presets/aura/rating/index.js +95 -0
  113. package/src/presets/aura/ripple/index.js +6 -0
  114. package/src/presets/aura/scrollpanel/index.js +77 -0
  115. package/src/presets/aura/scrolltop/index.js +45 -0
  116. package/src/presets/aura/selectbutton/index.js +66 -0
  117. package/src/presets/aura/sidebar/index.js +160 -0
  118. package/src/presets/aura/skeleton/index.js +19 -0
  119. package/src/presets/aura/slider/index.js +144 -0
  120. package/src/presets/aura/speeddial/index.js +579 -0
  121. package/src/presets/aura/splitbutton/index.js +1185 -0
  122. package/src/presets/aura/splitter/index.js +71 -0
  123. package/src/presets/aura/stepper/index.js +183 -0
  124. package/src/presets/aura/steps/index.js +117 -0
  125. package/src/presets/aura/tabmenu/index.js +75 -0
  126. package/src/presets/aura/tabview/index.js +162 -0
  127. package/src/presets/aura/tag/index.js +44 -0
  128. package/src/presets/aura/terminal/index.js +60 -0
  129. package/src/presets/aura/textarea/index.js +49 -0
  130. package/src/presets/aura/tieredmenu/index.js +125 -0
  131. package/src/presets/aura/timeline/index.js +114 -0
  132. package/src/presets/aura/toast/index.js +151 -0
  133. package/src/presets/aura/togglebutton/index.js +98 -0
  134. package/src/presets/aura/toolbar/index.js +28 -0
  135. package/src/presets/aura/tooltip/index.js +73 -0
  136. package/src/presets/aura/tree/index.js +294 -0
  137. package/src/presets/aura/treeselect/index.js +404 -0
  138. package/src/presets/aura/treetable/index.js +513 -0
  139. package/src/presets/aura/tristatecheckbox/index.js +121 -0
@@ -0,0 +1,1185 @@
1
+ export default {
2
+ root: ({ props }) => ({
3
+ class: [
4
+ // Flexbox and Position
5
+ 'inline-flex',
6
+ 'relative',
7
+
8
+ // Shape
9
+ 'rounded-md',
10
+ { 'shadow-lg': props.raised },
11
+ ],
12
+ }),
13
+ button: {
14
+ root: ({ parent }) => ({
15
+ class: [
16
+ 'relative',
17
+
18
+ // Alignments
19
+ 'items-center inline-flex text-center align-bottom justify-center',
20
+
21
+ // Sizes & Spacing
22
+ 'leading-[normal]',
23
+ {
24
+ 'px-4 py-2': parent.props.size === null,
25
+ 'text-sm py-1.5 px-3': parent.props.size === 'small',
26
+ 'text-xl py-3 px-4': parent.props.size === 'large',
27
+ },
28
+ {
29
+ 'px-0 py-2': parent.props.label == null && parent.props.icon !== null,
30
+ },
31
+
32
+ // Shape
33
+ 'rounded-r-none',
34
+ 'border-r-0',
35
+ { 'rounded-l-full': parent.props.rounded },
36
+ {
37
+ 'rounded-md': !parent.props.rounded,
38
+ 'rounded-full': parent.props.rounded,
39
+ },
40
+
41
+ // Link Button
42
+ {
43
+ 'text-primary-600 bg-transparent border-transparent':
44
+ parent.props.link,
45
+ },
46
+
47
+ // Plain Button
48
+ {
49
+ 'text-white bg-gray-500 border border-gray-500':
50
+ parent.props.plain && !parent.props.outlined && !parent.props.text,
51
+ },
52
+ // Plain Text Button
53
+ { 'text-surface-500': parent.props.plain && parent.props.text },
54
+ // Plain Outlined Button
55
+ {
56
+ 'text-surface-500 border border-gray-500':
57
+ parent.props.plain && parent.props.outlined,
58
+ },
59
+
60
+ // Text Button
61
+ {
62
+ 'bg-transparent border-transparent':
63
+ parent.props.text && !parent.props.plain,
64
+ },
65
+
66
+ // Outlined Button
67
+ {
68
+ 'bg-transparent border': parent.props.outlined && !parent.props.plain,
69
+ },
70
+
71
+ // --- Severity Buttons ---
72
+
73
+ // Primary Button
74
+ {
75
+ 'text-primary-inverse':
76
+ !parent.props.link &&
77
+ parent.props.severity === null &&
78
+ !parent.props.text &&
79
+ !parent.props.outlined &&
80
+ !parent.props.plain,
81
+ 'bg-primary':
82
+ !parent.props.link &&
83
+ parent.props.severity === null &&
84
+ !parent.props.text &&
85
+ !parent.props.outlined &&
86
+ !parent.props.plain,
87
+ 'border border-primary':
88
+ !parent.props.link &&
89
+ parent.props.severity === null &&
90
+ !parent.props.text &&
91
+ !parent.props.outlined &&
92
+ !parent.props.plain,
93
+ },
94
+ // Primary Text Button
95
+ {
96
+ 'text-primary':
97
+ parent.props.text &&
98
+ parent.props.severity === null &&
99
+ !parent.props.plain,
100
+ },
101
+ // Primary Outlined Button
102
+ {
103
+ 'text-primary border border-primary':
104
+ parent.props.outlined &&
105
+ parent.props.severity === null &&
106
+ !parent.props.plain,
107
+ },
108
+
109
+ // Secondary Button
110
+ {
111
+ 'text-surface-900 dark:text-white':
112
+ parent.props.severity === 'secondary' &&
113
+ !parent.props.text &&
114
+ !parent.props.outlined &&
115
+ !parent.props.plain,
116
+ 'bg-surface-100 dark:bg-surface-700':
117
+ parent.props.severity === 'secondary' &&
118
+ !parent.props.text &&
119
+ !parent.props.outlined &&
120
+ !parent.props.plain,
121
+ 'border border-surface-100 dark:border-surface-700':
122
+ parent.props.severity === 'secondary' &&
123
+ !parent.props.text &&
124
+ !parent.props.outlined &&
125
+ !parent.props.plain,
126
+ },
127
+ // Secondary Text Button
128
+ {
129
+ 'text-surface-500 dark:text-surface-300':
130
+ parent.props.text &&
131
+ parent.props.severity === 'secondary' &&
132
+ !parent.props.plain,
133
+ },
134
+ // Secondary Outlined Button
135
+ {
136
+ 'text-surface-500 dark:text-surface-300 border border-surface-500 hover:bg-surface-300/10':
137
+ parent.props.outlined &&
138
+ parent.props.severity === 'secondary' &&
139
+ !parent.props.plain,
140
+ },
141
+
142
+ // Success Button
143
+ {
144
+ 'text-white dark:text-green-900':
145
+ parent.props.severity === 'success' &&
146
+ !parent.props.text &&
147
+ !parent.props.outlined &&
148
+ !parent.props.plain,
149
+ 'bg-green-500 dark:bg-green-400':
150
+ parent.props.severity === 'success' &&
151
+ !parent.props.text &&
152
+ !parent.props.outlined &&
153
+ !parent.props.plain,
154
+ 'border border-green-500 dark:border-green-400':
155
+ parent.props.severity === 'success' &&
156
+ !parent.props.text &&
157
+ !parent.props.outlined &&
158
+ !parent.props.plain,
159
+ },
160
+ // Success Text Button
161
+ {
162
+ 'text-green-500 dark:text-green-400':
163
+ parent.props.text &&
164
+ parent.props.severity === 'success' &&
165
+ !parent.props.plain,
166
+ },
167
+ // Success Outlined Button
168
+ {
169
+ 'text-green-500 border border-green-500 hover:bg-green-300/10':
170
+ parent.props.outlined &&
171
+ parent.props.severity === 'success' &&
172
+ !parent.props.plain,
173
+ },
174
+
175
+ // Info Button
176
+ {
177
+ 'text-white dark:text-surface-900':
178
+ parent.props.severity === 'info' &&
179
+ !parent.props.text &&
180
+ !parent.props.outlined &&
181
+ !parent.props.plain,
182
+ 'bg-blue-500 dark:bg-blue-400':
183
+ parent.props.severity === 'info' &&
184
+ !parent.props.text &&
185
+ !parent.props.outlined &&
186
+ !parent.props.plain,
187
+ 'border border-blue-500 dark:border-blue-400':
188
+ parent.props.severity === 'info' &&
189
+ !parent.props.text &&
190
+ !parent.props.outlined &&
191
+ !parent.props.plain,
192
+ },
193
+ // Info Text Button
194
+ {
195
+ 'text-blue-500 dark:text-blue-400':
196
+ parent.props.text &&
197
+ parent.props.severity === 'info' &&
198
+ !parent.props.plain,
199
+ },
200
+ // Info Outlined Button
201
+ {
202
+ 'text-blue-500 border border-blue-500 hover:bg-blue-300/10 ':
203
+ parent.props.outlined &&
204
+ parent.props.severity === 'info' &&
205
+ !parent.props.plain,
206
+ },
207
+
208
+ // Warning Button
209
+ {
210
+ 'text-white dark:text-surface-900':
211
+ parent.props.severity === 'warning' &&
212
+ !parent.props.text &&
213
+ !parent.props.outlined &&
214
+ !parent.props.plain,
215
+ 'bg-orange-500 dark:bg-orange-400':
216
+ parent.props.severity === 'warning' &&
217
+ !parent.props.text &&
218
+ !parent.props.outlined &&
219
+ !parent.props.plain,
220
+ 'border border-orange-500 dark:border-orange-400':
221
+ parent.props.severity === 'warning' &&
222
+ !parent.props.text &&
223
+ !parent.props.outlined &&
224
+ !parent.props.plain,
225
+ },
226
+ // Warning Text Button
227
+ {
228
+ 'text-orange-500 dark:text-orange-400':
229
+ parent.props.text &&
230
+ parent.props.severity === 'warning' &&
231
+ !parent.props.plain,
232
+ },
233
+ // Warning Outlined Button
234
+ {
235
+ 'text-orange-500 border border-orange-500 hover:bg-orange-300/10':
236
+ parent.props.outlined &&
237
+ parent.props.severity === 'warning' &&
238
+ !parent.props.plain,
239
+ },
240
+
241
+ // Help Button
242
+ {
243
+ 'text-white dark:text-surface-900':
244
+ parent.props.severity === 'help' &&
245
+ !parent.props.text &&
246
+ !parent.props.outlined &&
247
+ !parent.props.plain,
248
+ 'bg-purple-500 dark:bg-purple-400':
249
+ parent.props.severity === 'help' &&
250
+ !parent.props.text &&
251
+ !parent.props.outlined &&
252
+ !parent.props.plain,
253
+ 'border border-purple-500 dark:border-purple-400':
254
+ parent.props.severity === 'help' &&
255
+ !parent.props.text &&
256
+ !parent.props.outlined &&
257
+ !parent.props.plain,
258
+ },
259
+ // Help Text Button
260
+ {
261
+ 'text-purple-500 dark:text-purple-400':
262
+ parent.props.text &&
263
+ parent.props.severity === 'help' &&
264
+ !parent.props.plain,
265
+ },
266
+ // Help Outlined Button
267
+ {
268
+ 'text-purple-500 border border-purple-500 hover:bg-purple-300/10':
269
+ parent.props.outlined &&
270
+ parent.props.severity === 'help' &&
271
+ !parent.props.plain,
272
+ },
273
+
274
+ // Danger Button
275
+ {
276
+ 'text-white dark:text-surface-900':
277
+ parent.props.severity === 'danger' &&
278
+ !parent.props.text &&
279
+ !parent.props.outlined &&
280
+ !parent.props.plain,
281
+ 'bg-red-500 dark:bg-red-400':
282
+ parent.props.severity === 'danger' &&
283
+ !parent.props.text &&
284
+ !parent.props.outlined &&
285
+ !parent.props.plain,
286
+ 'border border-red-500 dark:border-red-400':
287
+ parent.props.severity === 'danger' &&
288
+ !parent.props.text &&
289
+ !parent.props.outlined &&
290
+ !parent.props.plain,
291
+ },
292
+ // Danger Text Button
293
+ {
294
+ 'text-red-500 dark:text-red-400':
295
+ parent.props.text &&
296
+ parent.props.severity === 'danger' &&
297
+ !parent.props.plain,
298
+ },
299
+ // Danger Outlined Button
300
+ {
301
+ 'text-red-500 border border-red-500 hover:bg-red-300/10':
302
+ parent.props.outlined &&
303
+ parent.props.severity === 'danger' &&
304
+ !parent.props.plain,
305
+ },
306
+
307
+ // Contrast Button
308
+ {
309
+ 'text-white dark:text-surface-900':
310
+ parent.props.severity === 'contrast' &&
311
+ !parent.props.text &&
312
+ !parent.props.outlined &&
313
+ !parent.props.plain,
314
+ 'bg-surface-900 dark:bg-surface-0':
315
+ parent.props.severity === 'contrast' &&
316
+ !parent.props.text &&
317
+ !parent.props.outlined &&
318
+ !parent.props.plain,
319
+ 'border border-surface-900 dark:border-surface-0':
320
+ parent.props.severity === 'contrast' &&
321
+ !parent.props.text &&
322
+ !parent.props.outlined &&
323
+ !parent.props.plain,
324
+ },
325
+ // Contrast Text Button
326
+ {
327
+ 'text-surface-900 dark:text-surface-0':
328
+ parent.props.text &&
329
+ parent.props.severity === 'contrast' &&
330
+ !parent.props.plain,
331
+ },
332
+ // Contrast Outlined Button
333
+ {
334
+ 'text-surface-900 dark:text-surface-0 border border-surface-900 dark:border-surface-0':
335
+ parent.props.outlined &&
336
+ parent.props.severity === 'contrast' &&
337
+ !parent.props.plain,
338
+ },
339
+
340
+ // --- Severity Button States ---
341
+ 'focus:outline-none focus:outline-offset-0 focus:ring-1',
342
+
343
+ // Link
344
+ { 'focus:ring-primary': parent.props.link },
345
+
346
+ // Plain
347
+ {
348
+ 'hover:bg-gray-600 hover:border-gray-600':
349
+ parent.props.plain && !parent.props.outlined && !parent.props.text,
350
+ },
351
+ // Text & Outlined Button
352
+ {
353
+ 'hover:bg-surface-300/10':
354
+ parent.props.plain && (parent.props.text || parent.props.outlined),
355
+ },
356
+
357
+ // Primary
358
+ {
359
+ 'hover:bg-primary-hover hover:border-primary-hover':
360
+ !parent.props.link &&
361
+ parent.props.severity === null &&
362
+ !parent.props.text &&
363
+ !parent.props.outlined &&
364
+ !parent.props.plain,
365
+ },
366
+ { 'focus:ring-primary': parent.props.severity === null },
367
+ // Text & Outlined Button
368
+ {
369
+ 'hover:bg-primary-300/10':
370
+ (parent.props.text || parent.props.outlined) &&
371
+ parent.props.severity === null &&
372
+ !parent.props.plain,
373
+ },
374
+
375
+ // Secondary
376
+ {
377
+ 'hover:bg-surface-200 dark:hover:bg-surface-600 hover:border-surface-200 dark:hover:border-surface-600':
378
+ parent.props.severity === 'secondary' &&
379
+ !parent.props.text &&
380
+ !parent.props.outlined &&
381
+ !parent.props.plain,
382
+ },
383
+ {
384
+ 'focus:ring-surface-500 dark:focus:ring-surface-400':
385
+ parent.props.severity === 'secondary',
386
+ },
387
+ // Text & Outlined Button
388
+ {
389
+ 'hover:bg-surface-300/10':
390
+ (parent.props.text || parent.props.outlined) &&
391
+ parent.props.severity === 'secondary' &&
392
+ !parent.props.plain,
393
+ },
394
+
395
+ // Success
396
+ {
397
+ 'hover:bg-green-600 dark:hover:bg-green-300 hover:border-green-600 dark:hover:border-green-300':
398
+ parent.props.severity === 'success' &&
399
+ !parent.props.text &&
400
+ !parent.props.outlined &&
401
+ !parent.props.plain,
402
+ },
403
+ {
404
+ 'focus:ring-green-500 dark:focus:ring-green-400':
405
+ parent.props.severity === 'success',
406
+ },
407
+ // Text & Outlined Button
408
+ {
409
+ 'hover:bg-green-300/10':
410
+ (parent.props.text || parent.props.outlined) &&
411
+ parent.props.severity === 'success' &&
412
+ !parent.props.plain,
413
+ },
414
+
415
+ // Info
416
+ {
417
+ 'hover:bg-blue-600 dark:hover:bg-blue-300 hover:border-blue-600 dark:hover:border-blue-300':
418
+ parent.props.severity === 'info' &&
419
+ !parent.props.text &&
420
+ !parent.props.outlined &&
421
+ !parent.props.plain,
422
+ },
423
+ {
424
+ 'focus:ring-blue-500 dark:focus:ring-blue-400':
425
+ parent.props.severity === 'info',
426
+ },
427
+ // Text & Outlined Button
428
+ {
429
+ 'hover:bg-blue-300/10':
430
+ (parent.props.text || parent.props.outlined) &&
431
+ parent.props.severity === 'info' &&
432
+ !parent.props.plain,
433
+ },
434
+
435
+ // Warning
436
+ {
437
+ 'hover:bg-orange-600 dark:hover:bg-orange-300 hover:border-orange-600 dark:hover:border-orange-300':
438
+ parent.props.severity === 'warning' &&
439
+ !parent.props.text &&
440
+ !parent.props.outlined &&
441
+ !parent.props.plain,
442
+ },
443
+ {
444
+ 'focus:ring-orange-500 dark:focus:ring-orange-400':
445
+ parent.props.severity === 'warning',
446
+ },
447
+ // Text & Outlined Button
448
+ {
449
+ 'hover:bg-orange-300/10':
450
+ (parent.props.text || parent.props.outlined) &&
451
+ parent.props.severity === 'warning' &&
452
+ !parent.props.plain,
453
+ },
454
+
455
+ // Help
456
+ {
457
+ 'hover:bg-purple-600 dark:hover:bg-purple-300 hover:border-purple-600 dark:hover:border-purple-300':
458
+ parent.props.severity === 'help' &&
459
+ !parent.props.text &&
460
+ !parent.props.outlined &&
461
+ !parent.props.plain,
462
+ },
463
+ {
464
+ 'focus:ring-purple-500 dark:focus:ring-purple-400':
465
+ parent.props.severity === 'help',
466
+ },
467
+ // Text & Outlined Button
468
+ {
469
+ 'hover:bg-purple-300/10':
470
+ (parent.props.text || parent.props.outlined) &&
471
+ parent.props.severity === 'help' &&
472
+ !parent.props.plain,
473
+ },
474
+
475
+ // Danger
476
+ {
477
+ 'hover:bg-red-600 dark:hover:bg-red-300 hover:border-red-600 dark:hover:border-red-300':
478
+ parent.props.severity === 'danger' &&
479
+ !parent.props.text &&
480
+ !parent.props.outlined &&
481
+ !parent.props.plain,
482
+ },
483
+ {
484
+ 'focus:ring-red-500 dark:focus:ring-red-400':
485
+ parent.props.severity === 'danger',
486
+ },
487
+ // Text & Outlined Button
488
+ {
489
+ 'hover:bg-red-300/10':
490
+ (parent.props.text || parent.props.outlined) &&
491
+ parent.props.severity === 'danger' &&
492
+ !parent.props.plain,
493
+ },
494
+
495
+ // Contrast
496
+ {
497
+ 'hover:bg-surface-800 dark:hover:bg-surface-100 hover:border-surface-800 dark:hover:border-surface-100':
498
+ parent.props.severity === 'contrast' &&
499
+ !parent.props.text &&
500
+ !parent.props.outlined &&
501
+ !parent.props.plain,
502
+ },
503
+ {
504
+ 'focus:ring-surface-500 dark:focus:ring-surface-400':
505
+ parent.props.severity === 'contrast',
506
+ },
507
+ // Text & Outlined Button
508
+ {
509
+ 'hover:bg-surface-900/10 dark:hover:bg-[rgba(255,255,255,0.03)]':
510
+ (parent.props.text || parent.props.outlined) &&
511
+ parent.props.severity === 'contrast' &&
512
+ !parent.props.plain,
513
+ },
514
+
515
+ // Transitions
516
+ 'transition duration-200 ease-in-out',
517
+
518
+ // Misc
519
+ 'cursor-pointer overflow-hidden select-none',
520
+ ],
521
+ }),
522
+ icon: {
523
+ class: [
524
+ // Margins
525
+ 'mr-2',
526
+ ],
527
+ },
528
+ },
529
+ menubutton: {
530
+ root: ({ parent }) => ({
531
+ class: [
532
+ 'relative',
533
+
534
+ // Alignments
535
+ 'items-center inline-flex text-center align-bottom justify-center',
536
+
537
+ // Sizes & Spacing
538
+ 'leading-[normal]',
539
+ {
540
+ 'px-4 py-2': parent.props.size === null,
541
+ 'text-sm py-1.5 px-3': parent.props.size === 'small',
542
+ 'text-xl py-3 px-4': parent.props.size === 'large',
543
+ },
544
+ {
545
+ 'min-w-10 px-0 py-2':
546
+ parent.props.label == null && parent.props.icon !== null,
547
+ },
548
+
549
+ // Shape
550
+ 'rounded-l-none',
551
+ { 'rounded-l-full': parent.props.rounded },
552
+ {
553
+ 'rounded-md': !parent.props.rounded,
554
+ 'rounded-full': parent.props.rounded,
555
+ },
556
+
557
+ // Link Button
558
+ {
559
+ 'text-primary-600 bg-transparent border-transparent':
560
+ parent.props.link,
561
+ },
562
+
563
+ // Plain Button
564
+ {
565
+ 'text-white bg-gray-500 border border-gray-500':
566
+ parent.props.plain && !parent.props.outlined && !parent.props.text,
567
+ },
568
+ // Plain Text Button
569
+ { 'text-surface-500': parent.props.plain && parent.props.text },
570
+ // Plain Outlined Button
571
+ {
572
+ 'text-surface-500 border border-gray-500':
573
+ parent.props.plain && parent.props.outlined,
574
+ },
575
+
576
+ // Text Button
577
+ {
578
+ 'bg-transparent border-transparent':
579
+ parent.props.text && !parent.props.plain,
580
+ },
581
+
582
+ // Outlined Button
583
+ {
584
+ 'bg-transparent border': parent.props.outlined && !parent.props.plain,
585
+ },
586
+
587
+ // --- Severity Buttons ---
588
+
589
+ // Primary Button
590
+ {
591
+ 'text-primary-inverse':
592
+ !parent.props.link &&
593
+ parent.props.severity === null &&
594
+ !parent.props.text &&
595
+ !parent.props.outlined &&
596
+ !parent.props.plain,
597
+ 'bg-primary':
598
+ !parent.props.link &&
599
+ parent.props.severity === null &&
600
+ !parent.props.text &&
601
+ !parent.props.outlined &&
602
+ !parent.props.plain,
603
+ 'border border-primary':
604
+ !parent.props.link &&
605
+ parent.props.severity === null &&
606
+ !parent.props.text &&
607
+ !parent.props.outlined &&
608
+ !parent.props.plain,
609
+ },
610
+ // Primary Text Button
611
+ {
612
+ 'text-primary':
613
+ parent.props.text &&
614
+ parent.props.severity === null &&
615
+ !parent.props.plain,
616
+ },
617
+ // Primary Outlined Button
618
+ {
619
+ 'text-primary border border-primary':
620
+ parent.props.outlined &&
621
+ parent.props.severity === null &&
622
+ !parent.props.plain,
623
+ },
624
+
625
+ // Secondary Button
626
+ {
627
+ 'text-surface-900 dark:text-white':
628
+ parent.props.severity === 'secondary' &&
629
+ !parent.props.text &&
630
+ !parent.props.outlined &&
631
+ !parent.props.plain,
632
+ 'bg-surface-100 dark:bg-surface-700':
633
+ parent.props.severity === 'secondary' &&
634
+ !parent.props.text &&
635
+ !parent.props.outlined &&
636
+ !parent.props.plain,
637
+ 'border border-surface-100 dark:border-surface-700':
638
+ parent.props.severity === 'secondary' &&
639
+ !parent.props.text &&
640
+ !parent.props.outlined &&
641
+ !parent.props.plain,
642
+ },
643
+ // Secondary Text Button
644
+ {
645
+ 'text-surface-500 dark:text-surface-300':
646
+ parent.props.text &&
647
+ parent.props.severity === 'secondary' &&
648
+ !parent.props.plain,
649
+ },
650
+ // Secondary Outlined Button
651
+ {
652
+ 'text-surface-500 dark:text-surface-300 border border-surface-500 hover:bg-surface-300/10':
653
+ parent.props.outlined &&
654
+ parent.props.severity === 'secondary' &&
655
+ !parent.props.plain,
656
+ },
657
+
658
+ // Success Button
659
+ {
660
+ 'text-white dark:text-green-900':
661
+ parent.props.severity === 'success' &&
662
+ !parent.props.text &&
663
+ !parent.props.outlined &&
664
+ !parent.props.plain,
665
+ 'bg-green-500 dark:bg-green-400':
666
+ parent.props.severity === 'success' &&
667
+ !parent.props.text &&
668
+ !parent.props.outlined &&
669
+ !parent.props.plain,
670
+ 'border border-green-500 dark:border-green-400':
671
+ parent.props.severity === 'success' &&
672
+ !parent.props.text &&
673
+ !parent.props.outlined &&
674
+ !parent.props.plain,
675
+ },
676
+ // Success Text Button
677
+ {
678
+ 'text-green-500 dark:text-green-400':
679
+ parent.props.text &&
680
+ parent.props.severity === 'success' &&
681
+ !parent.props.plain,
682
+ },
683
+ // Success Outlined Button
684
+ {
685
+ 'text-green-500 border border-green-500 hover:bg-green-300/10':
686
+ parent.props.outlined &&
687
+ parent.props.severity === 'success' &&
688
+ !parent.props.plain,
689
+ },
690
+
691
+ // Info Button
692
+ {
693
+ 'text-white dark:text-surface-900':
694
+ parent.props.severity === 'info' &&
695
+ !parent.props.text &&
696
+ !parent.props.outlined &&
697
+ !parent.props.plain,
698
+ 'bg-blue-500 dark:bg-blue-400':
699
+ parent.props.severity === 'info' &&
700
+ !parent.props.text &&
701
+ !parent.props.outlined &&
702
+ !parent.props.plain,
703
+ 'border border-blue-500 dark:border-blue-400':
704
+ parent.props.severity === 'info' &&
705
+ !parent.props.text &&
706
+ !parent.props.outlined &&
707
+ !parent.props.plain,
708
+ },
709
+ // Info Text Button
710
+ {
711
+ 'text-blue-500 dark:text-blue-400':
712
+ parent.props.text &&
713
+ parent.props.severity === 'info' &&
714
+ !parent.props.plain,
715
+ },
716
+ // Info Outlined Button
717
+ {
718
+ 'text-blue-500 border border-blue-500 hover:bg-blue-300/10 ':
719
+ parent.props.outlined &&
720
+ parent.props.severity === 'info' &&
721
+ !parent.props.plain,
722
+ },
723
+
724
+ // Warning Button
725
+ {
726
+ 'text-white dark:text-surface-900':
727
+ parent.props.severity === 'warning' &&
728
+ !parent.props.text &&
729
+ !parent.props.outlined &&
730
+ !parent.props.plain,
731
+ 'bg-orange-500 dark:bg-orange-400':
732
+ parent.props.severity === 'warning' &&
733
+ !parent.props.text &&
734
+ !parent.props.outlined &&
735
+ !parent.props.plain,
736
+ 'border border-orange-500 dark:border-orange-400':
737
+ parent.props.severity === 'warning' &&
738
+ !parent.props.text &&
739
+ !parent.props.outlined &&
740
+ !parent.props.plain,
741
+ },
742
+ // Warning Text Button
743
+ {
744
+ 'text-orange-500 dark:text-orange-400':
745
+ parent.props.text &&
746
+ parent.props.severity === 'warning' &&
747
+ !parent.props.plain,
748
+ },
749
+ // Warning Outlined Button
750
+ {
751
+ 'text-orange-500 border border-orange-500 hover:bg-orange-300/10':
752
+ parent.props.outlined &&
753
+ parent.props.severity === 'warning' &&
754
+ !parent.props.plain,
755
+ },
756
+
757
+ // Help Button
758
+ {
759
+ 'text-white dark:text-surface-900':
760
+ parent.props.severity === 'help' &&
761
+ !parent.props.text &&
762
+ !parent.props.outlined &&
763
+ !parent.props.plain,
764
+ 'bg-purple-500 dark:bg-purple-400':
765
+ parent.props.severity === 'help' &&
766
+ !parent.props.text &&
767
+ !parent.props.outlined &&
768
+ !parent.props.plain,
769
+ 'border border-purple-500 dark:border-purple-400':
770
+ parent.props.severity === 'help' &&
771
+ !parent.props.text &&
772
+ !parent.props.outlined &&
773
+ !parent.props.plain,
774
+ },
775
+ // Help Text Button
776
+ {
777
+ 'text-purple-500 dark:text-purple-400':
778
+ parent.props.text &&
779
+ parent.props.severity === 'help' &&
780
+ !parent.props.plain,
781
+ },
782
+ // Help Outlined Button
783
+ {
784
+ 'text-purple-500 border border-purple-500 hover:bg-purple-300/10':
785
+ parent.props.outlined &&
786
+ parent.props.severity === 'help' &&
787
+ !parent.props.plain,
788
+ },
789
+
790
+ // Danger Button
791
+ {
792
+ 'text-white dark:text-surface-900':
793
+ parent.props.severity === 'danger' &&
794
+ !parent.props.text &&
795
+ !parent.props.outlined &&
796
+ !parent.props.plain,
797
+ 'bg-red-500 dark:bg-red-400':
798
+ parent.props.severity === 'danger' &&
799
+ !parent.props.text &&
800
+ !parent.props.outlined &&
801
+ !parent.props.plain,
802
+ 'border border-red-500 dark:border-red-400':
803
+ parent.props.severity === 'danger' &&
804
+ !parent.props.text &&
805
+ !parent.props.outlined &&
806
+ !parent.props.plain,
807
+ },
808
+ // Danger Text Button
809
+ {
810
+ 'text-red-500 dark:text-red-400':
811
+ parent.props.text &&
812
+ parent.props.severity === 'danger' &&
813
+ !parent.props.plain,
814
+ },
815
+ // Danger Outlined Button
816
+ {
817
+ 'text-red-500 border border-red-500 hover:bg-red-300/10':
818
+ parent.props.outlined &&
819
+ parent.props.severity === 'danger' &&
820
+ !parent.props.plain,
821
+ },
822
+
823
+ // Contrast Button
824
+ {
825
+ 'text-white dark:text-surface-900':
826
+ parent.props.severity === 'contrast' &&
827
+ !parent.props.text &&
828
+ !parent.props.outlined &&
829
+ !parent.props.plain,
830
+ 'bg-surface-900 dark:bg-surface-0':
831
+ parent.props.severity === 'contrast' &&
832
+ !parent.props.text &&
833
+ !parent.props.outlined &&
834
+ !parent.props.plain,
835
+ 'border border-surface-900 dark:border-surface-0':
836
+ parent.props.severity === 'contrast' &&
837
+ !parent.props.text &&
838
+ !parent.props.outlined &&
839
+ !parent.props.plain,
840
+ },
841
+ // Contrast Text Button
842
+ {
843
+ 'text-surface-900 dark:text-surface-0':
844
+ parent.props.text &&
845
+ parent.props.severity === 'contrast' &&
846
+ !parent.props.plain,
847
+ },
848
+ // Contrast Outlined Button
849
+ {
850
+ 'text-surface-900 dark:text-surface-0 border border-surface-900 dark:border-surface-0':
851
+ parent.props.outlined &&
852
+ parent.props.severity === 'contrast' &&
853
+ !parent.props.plain,
854
+ },
855
+
856
+ // --- Severity Button States ---
857
+ 'focus:outline-none focus:outline-offset-0 focus:ring-1',
858
+
859
+ // Link
860
+ { 'focus:ring-primary': parent.props.link },
861
+
862
+ // Plain
863
+ {
864
+ 'hover:bg-gray-600 hover:border-gray-600':
865
+ parent.props.plain && !parent.props.outlined && !parent.props.text,
866
+ },
867
+ // Text & Outlined Button
868
+ {
869
+ 'hover:bg-surface-300/10':
870
+ parent.props.plain && (parent.props.text || parent.props.outlined),
871
+ },
872
+
873
+ // Primary
874
+ {
875
+ 'hover:bg-primary-hover hover:border-primary-hover':
876
+ !parent.props.link &&
877
+ parent.props.severity === null &&
878
+ !parent.props.text &&
879
+ !parent.props.outlined &&
880
+ !parent.props.plain,
881
+ },
882
+ { 'focus:ring-primary': parent.props.severity === null },
883
+ // Text & Outlined Button
884
+ {
885
+ 'hover:bg-primary-300/10':
886
+ (parent.props.text || parent.props.outlined) &&
887
+ parent.props.severity === null &&
888
+ !parent.props.plain,
889
+ },
890
+
891
+ // Secondary
892
+ {
893
+ 'hover:bg-surface-200 dark:hover:bg-surface-600 hover:border-surface-200 dark:hover:border-surface-600':
894
+ parent.props.severity === 'secondary' &&
895
+ !parent.props.text &&
896
+ !parent.props.outlined &&
897
+ !parent.props.plain,
898
+ },
899
+ {
900
+ 'focus:ring-surface-500 dark:focus:ring-surface-400':
901
+ parent.props.severity === 'secondary',
902
+ },
903
+ // Text & Outlined Button
904
+ {
905
+ 'hover:bg-surface-300/10':
906
+ (parent.props.text || parent.props.outlined) &&
907
+ parent.props.severity === 'secondary' &&
908
+ !parent.props.plain,
909
+ },
910
+
911
+ // Success
912
+ {
913
+ 'hover:bg-green-600 dark:hover:bg-green-300 hover:border-green-600 dark:hover:border-green-300':
914
+ parent.props.severity === 'success' &&
915
+ !parent.props.text &&
916
+ !parent.props.outlined &&
917
+ !parent.props.plain,
918
+ },
919
+ {
920
+ 'focus:ring-green-500 dark:focus:ring-green-400':
921
+ parent.props.severity === 'success',
922
+ },
923
+ // Text & Outlined Button
924
+ {
925
+ 'hover:bg-green-300/10':
926
+ (parent.props.text || parent.props.outlined) &&
927
+ parent.props.severity === 'success' &&
928
+ !parent.props.plain,
929
+ },
930
+
931
+ // Info
932
+ {
933
+ 'hover:bg-blue-600 dark:hover:bg-blue-300 hover:border-blue-600 dark:hover:border-blue-300':
934
+ parent.props.severity === 'info' &&
935
+ !parent.props.text &&
936
+ !parent.props.outlined &&
937
+ !parent.props.plain,
938
+ },
939
+ {
940
+ 'focus:ring-blue-500 dark:focus:ring-blue-400':
941
+ parent.props.severity === 'info',
942
+ },
943
+ // Text & Outlined Button
944
+ {
945
+ 'hover:bg-blue-300/10':
946
+ (parent.props.text || parent.props.outlined) &&
947
+ parent.props.severity === 'info' &&
948
+ !parent.props.plain,
949
+ },
950
+
951
+ // Warning
952
+ {
953
+ 'hover:bg-orange-600 dark:hover:bg-orange-300 hover:border-orange-600 dark:hover:border-orange-300':
954
+ parent.props.severity === 'warning' &&
955
+ !parent.props.text &&
956
+ !parent.props.outlined &&
957
+ !parent.props.plain,
958
+ },
959
+ {
960
+ 'focus:ring-orange-500 dark:focus:ring-orange-400':
961
+ parent.props.severity === 'warning',
962
+ },
963
+ // Text & Outlined Button
964
+ {
965
+ 'hover:bg-orange-300/10':
966
+ (parent.props.text || parent.props.outlined) &&
967
+ parent.props.severity === 'warning' &&
968
+ !parent.props.plain,
969
+ },
970
+
971
+ // Help
972
+ {
973
+ 'hover:bg-purple-600 dark:hover:bg-purple-300 hover:border-purple-600 dark:hover:border-purple-300':
974
+ parent.props.severity === 'help' &&
975
+ !parent.props.text &&
976
+ !parent.props.outlined &&
977
+ !parent.props.plain,
978
+ },
979
+ {
980
+ 'focus:ring-purple-500 dark:focus:ring-purple-400':
981
+ parent.props.severity === 'help',
982
+ },
983
+ // Text & Outlined Button
984
+ {
985
+ 'hover:bg-purple-300/10':
986
+ (parent.props.text || parent.props.outlined) &&
987
+ parent.props.severity === 'help' &&
988
+ !parent.props.plain,
989
+ },
990
+
991
+ // Danger
992
+ {
993
+ 'hover:bg-red-600 dark:hover:bg-red-300 hover:border-red-600 dark:hover:border-red-300':
994
+ parent.props.severity === 'danger' &&
995
+ !parent.props.text &&
996
+ !parent.props.outlined &&
997
+ !parent.props.plain,
998
+ },
999
+ {
1000
+ 'focus:ring-red-500 dark:focus:ring-red-400':
1001
+ parent.props.severity === 'danger',
1002
+ },
1003
+ // Text & Outlined Button
1004
+ {
1005
+ 'hover:bg-red-300/10':
1006
+ (parent.props.text || parent.props.outlined) &&
1007
+ parent.props.severity === 'danger' &&
1008
+ !parent.props.plain,
1009
+ },
1010
+
1011
+ // Contrast
1012
+ {
1013
+ 'hover:bg-surface-800 dark:hover:bg-surface-100 hover:border-surface-800 dark:hover:border-surface-100':
1014
+ parent.props.severity === 'contrast' &&
1015
+ !parent.props.text &&
1016
+ !parent.props.outlined &&
1017
+ !parent.props.plain,
1018
+ },
1019
+ {
1020
+ 'focus:ring-surface-500 dark:focus:ring-surface-400':
1021
+ parent.props.severity === 'contrast',
1022
+ },
1023
+ // Text & Outlined Button
1024
+ {
1025
+ 'hover:bg-surface-900/10 dark:hover:bg-[rgba(255,255,255,0.03)]':
1026
+ (parent.props.text || parent.props.outlined) &&
1027
+ parent.props.severity === 'contrast' &&
1028
+ !parent.props.plain,
1029
+ },
1030
+
1031
+ // Transitions
1032
+ 'transition duration-200 ease-in-out',
1033
+
1034
+ // Misc
1035
+ 'cursor-pointer overflow-hidden select-none',
1036
+ ],
1037
+ }),
1038
+ label: {
1039
+ class: ['hidden'],
1040
+ },
1041
+ },
1042
+ menu: {
1043
+ root: {
1044
+ class: [
1045
+ // Sizing and Shape
1046
+ 'min-w-[12.5rem]',
1047
+ 'rounded-md',
1048
+
1049
+ // Spacing
1050
+ 'p-1',
1051
+
1052
+ // Colors
1053
+ 'bg-surface-0 dark:bg-surface-900',
1054
+ 'text-surface-700 dark:text-white/80',
1055
+ 'border border-surface-200 dark:border-surface-700',
1056
+ ],
1057
+ },
1058
+ menu: {
1059
+ class: [
1060
+ // Spacings and Shape
1061
+ 'list-none',
1062
+ 'm-0',
1063
+ 'p-0',
1064
+ 'outline-none',
1065
+ ],
1066
+ },
1067
+ menuitem: {
1068
+ class: 'relative my-[2px] [&:first-child]:mt-0',
1069
+ },
1070
+ content: ({ context }) => ({
1071
+ class: [
1072
+ //Shape
1073
+ 'rounded-[4px]',
1074
+
1075
+ // Colors
1076
+ 'text-surface-700 dark:text-white/80',
1077
+ {
1078
+ 'text-surface-500 dark:text-white/70':
1079
+ !context.focused && !context.active,
1080
+ 'text-surface-500 dark:text-white/70 bg-surface-200':
1081
+ context.focused && !context.active,
1082
+ 'text-primary-highlight-inverse bg-primary-highlight':
1083
+ (context.focused && context.active) ||
1084
+ context.active ||
1085
+ (!context.focused && context.active),
1086
+ },
1087
+
1088
+ // Transitions
1089
+ 'transition-shadow',
1090
+ 'duration-200',
1091
+
1092
+ // States
1093
+ {
1094
+ 'hover:bg-surface-100 dark:hover:bg-[rgba(255,255,255,0.03)]':
1095
+ !context.active,
1096
+ 'hover:bg-primary-highlight-hover text-primary-highlight-inverse':
1097
+ context.active,
1098
+ },
1099
+
1100
+ // Disabled
1101
+ { 'opacity-60 pointer-events-none cursor-default': context.disabled },
1102
+ ],
1103
+ }),
1104
+ action: {
1105
+ class: [
1106
+ 'relative',
1107
+ // Flexbox
1108
+
1109
+ 'flex',
1110
+ 'items-center',
1111
+
1112
+ // Spacing
1113
+ 'py-2',
1114
+ 'px-3',
1115
+
1116
+ // Color
1117
+ 'text-surface-700 dark:text-white/80',
1118
+
1119
+ // Misc
1120
+ 'no-underline',
1121
+ 'overflow-hidden',
1122
+ 'cursor-pointer',
1123
+ 'select-none',
1124
+ ],
1125
+ },
1126
+ icon: {
1127
+ class: [
1128
+ // Spacing
1129
+ 'mr-2',
1130
+
1131
+ // Color
1132
+ 'text-surface-600 dark:text-white/70',
1133
+ ],
1134
+ },
1135
+ label: {
1136
+ class: ['leading-[normal]'],
1137
+ },
1138
+ submenuheader: {
1139
+ class: [
1140
+ // Font
1141
+ 'font-bold',
1142
+
1143
+ // Spacing
1144
+ 'm-0',
1145
+ 'py-2 px-3',
1146
+
1147
+ // Shape
1148
+ 'rounded-tl-none',
1149
+ 'rounded-tr-none',
1150
+
1151
+ // Colors
1152
+ 'bg-surface-0 dark:bg-surface-900',
1153
+ 'text-surface-400 dark:text-surface-600',
1154
+ ],
1155
+ },
1156
+ submenuicon: {
1157
+ class: [
1158
+ // Position
1159
+ 'ml-auto',
1160
+ ],
1161
+ },
1162
+ submenu: {
1163
+ class: [
1164
+ // Sizing and Shape
1165
+ 'min-w-[12.5rem]',
1166
+ 'rounded-md',
1167
+
1168
+ // Spacing
1169
+ 'p-1',
1170
+
1171
+ // Position
1172
+ 'static sm:absolute',
1173
+ 'z-10',
1174
+
1175
+ // Colors
1176
+ 'bg-surface-0 dark:bg-surface-900',
1177
+ 'text-surface-700 dark:text-white/80',
1178
+ 'border border-surface-200 dark:border-surface-700',
1179
+ ],
1180
+ separator: {
1181
+ class: 'border-t border-surface-200 dark:border-surface-600 my-1',
1182
+ },
1183
+ },
1184
+ },
1185
+ }