@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,511 @@
1
+ export default {
2
+ root: ({ props, context, parent }) => ({
3
+ class: [
4
+ 'relative',
5
+
6
+ // Alignments
7
+ 'items-center inline-flex text-center align-bottom justify-center',
8
+
9
+ // Sizes & Spacing
10
+ 'leading-[normal]',
11
+ {
12
+ 'px-4 py-2': props.size === null,
13
+ 'text-sm py-1.5 px-3': props.size === 'small',
14
+ 'text-xl py-3 px-4': props.size === 'large',
15
+ },
16
+ {
17
+ 'w-10 px-0 py-2': props.label == null && props.icon !== null,
18
+ },
19
+
20
+ // Shapes
21
+ { 'shadow-lg': props.raised },
22
+ { 'rounded-md': !props.rounded, 'rounded-full': props.rounded },
23
+ {
24
+ 'rounded-none first:rounded-l-md last:rounded-r-md':
25
+ parent.instance.$name == 'InputGroup',
26
+ },
27
+
28
+ // Link Button
29
+ { 'text-primary-600 bg-transparent border-transparent': props.link },
30
+
31
+ // Plain Button
32
+ {
33
+ 'text-white bg-gray-500 border border-gray-500':
34
+ props.plain && !props.outlined && !props.text,
35
+ },
36
+ // Plain Text Button
37
+ { 'text-surface-500': props.plain && props.text },
38
+ // Plain Outlined Button
39
+ {
40
+ 'text-surface-500 border border-gray-500':
41
+ props.plain && props.outlined,
42
+ },
43
+
44
+ // Text Button
45
+ { 'bg-transparent border-transparent': props.text && !props.plain },
46
+
47
+ // Outlined Button
48
+ { 'bg-transparent border': props.outlined && !props.plain },
49
+
50
+ // --- Severity Buttons ---
51
+
52
+ // Primary Button
53
+ {
54
+ 'text-primary-inverse':
55
+ !props.link &&
56
+ props.severity === null &&
57
+ !props.text &&
58
+ !props.outlined &&
59
+ !props.plain,
60
+ 'bg-primary':
61
+ !props.link &&
62
+ props.severity === null &&
63
+ !props.text &&
64
+ !props.outlined &&
65
+ !props.plain,
66
+ 'border border-primary':
67
+ !props.link &&
68
+ props.severity === null &&
69
+ !props.text &&
70
+ !props.outlined &&
71
+ !props.plain,
72
+ },
73
+ // Primary Text Button
74
+ { 'text-primary': props.text && props.severity === null && !props.plain },
75
+ // Primary Outlined Button
76
+ {
77
+ 'text-primary border border-primary':
78
+ props.outlined && props.severity === null && !props.plain,
79
+ },
80
+
81
+ // Secondary Button
82
+ {
83
+ 'text-surface-900 dark:text-white':
84
+ props.severity === 'secondary' &&
85
+ !props.text &&
86
+ !props.outlined &&
87
+ !props.plain,
88
+ 'bg-surface-100 dark:bg-surface-700':
89
+ props.severity === 'secondary' &&
90
+ !props.text &&
91
+ !props.outlined &&
92
+ !props.plain,
93
+ 'border border-surface-100 dark:border-surface-700':
94
+ props.severity === 'secondary' &&
95
+ !props.text &&
96
+ !props.outlined &&
97
+ !props.plain,
98
+ },
99
+ // Secondary Text Button
100
+ {
101
+ 'text-surface-500 dark:text-surface-300':
102
+ props.text && props.severity === 'secondary' && !props.plain,
103
+ },
104
+ // Secondary Outlined Button
105
+ {
106
+ 'text-surface-500 dark:text-surface-300 border border-surface-500 hover:bg-surface-300/10':
107
+ props.outlined && props.severity === 'secondary' && !props.plain,
108
+ },
109
+
110
+ // Success Button
111
+ {
112
+ 'text-white dark:text-green-900':
113
+ props.severity === 'success' &&
114
+ !props.text &&
115
+ !props.outlined &&
116
+ !props.plain,
117
+ 'bg-green-500 dark:bg-green-400':
118
+ props.severity === 'success' &&
119
+ !props.text &&
120
+ !props.outlined &&
121
+ !props.plain,
122
+ 'border border-green-500 dark:border-green-400':
123
+ props.severity === 'success' &&
124
+ !props.text &&
125
+ !props.outlined &&
126
+ !props.plain,
127
+ },
128
+ // Success Text Button
129
+ {
130
+ 'text-green-500 dark:text-green-400':
131
+ props.text && props.severity === 'success' && !props.plain,
132
+ },
133
+ // Success Outlined Button
134
+ {
135
+ 'text-green-500 border border-green-500 hover:bg-green-300/10':
136
+ props.outlined && props.severity === 'success' && !props.plain,
137
+ },
138
+
139
+ // Info Button
140
+ {
141
+ 'text-white dark:text-surface-900':
142
+ props.severity === 'info' &&
143
+ !props.text &&
144
+ !props.outlined &&
145
+ !props.plain,
146
+ 'bg-blue-500 dark:bg-blue-400':
147
+ props.severity === 'info' &&
148
+ !props.text &&
149
+ !props.outlined &&
150
+ !props.plain,
151
+ 'border border-blue-500 dark:border-blue-400':
152
+ props.severity === 'info' &&
153
+ !props.text &&
154
+ !props.outlined &&
155
+ !props.plain,
156
+ },
157
+ // Info Text Button
158
+ {
159
+ 'text-blue-500 dark:text-blue-400':
160
+ props.text && props.severity === 'info' && !props.plain,
161
+ },
162
+ // Info Outlined Button
163
+ {
164
+ 'text-blue-500 border border-blue-500 hover:bg-blue-300/10 ':
165
+ props.outlined && props.severity === 'info' && !props.plain,
166
+ },
167
+
168
+ // Warning Button
169
+ {
170
+ 'text-white dark:text-surface-900':
171
+ props.severity === 'warning' &&
172
+ !props.text &&
173
+ !props.outlined &&
174
+ !props.plain,
175
+ 'bg-orange-500 dark:bg-orange-400':
176
+ props.severity === 'warning' &&
177
+ !props.text &&
178
+ !props.outlined &&
179
+ !props.plain,
180
+ 'border border-orange-500 dark:border-orange-400':
181
+ props.severity === 'warning' &&
182
+ !props.text &&
183
+ !props.outlined &&
184
+ !props.plain,
185
+ },
186
+ // Warning Text Button
187
+ {
188
+ 'text-orange-500 dark:text-orange-400':
189
+ props.text && props.severity === 'warning' && !props.plain,
190
+ },
191
+ // Warning Outlined Button
192
+ {
193
+ 'text-orange-500 border border-orange-500 hover:bg-orange-300/10':
194
+ props.outlined && props.severity === 'warning' && !props.plain,
195
+ },
196
+
197
+ // Help Button
198
+ {
199
+ 'text-white dark:text-surface-900':
200
+ props.severity === 'help' &&
201
+ !props.text &&
202
+ !props.outlined &&
203
+ !props.plain,
204
+ 'bg-purple-500 dark:bg-purple-400':
205
+ props.severity === 'help' &&
206
+ !props.text &&
207
+ !props.outlined &&
208
+ !props.plain,
209
+ 'border border-purple-500 dark:border-purple-400':
210
+ props.severity === 'help' &&
211
+ !props.text &&
212
+ !props.outlined &&
213
+ !props.plain,
214
+ },
215
+ // Help Text Button
216
+ {
217
+ 'text-purple-500 dark:text-purple-400':
218
+ props.text && props.severity === 'help' && !props.plain,
219
+ },
220
+ // Help Outlined Button
221
+ {
222
+ 'text-purple-500 border border-purple-500 hover:bg-purple-300/10':
223
+ props.outlined && props.severity === 'help' && !props.plain,
224
+ },
225
+
226
+ // Danger Button
227
+ {
228
+ 'text-white dark:text-surface-900':
229
+ props.severity === 'danger' &&
230
+ !props.text &&
231
+ !props.outlined &&
232
+ !props.plain,
233
+ 'bg-red-500 dark:bg-red-400':
234
+ props.severity === 'danger' &&
235
+ !props.text &&
236
+ !props.outlined &&
237
+ !props.plain,
238
+ 'border border-red-500 dark:border-red-400':
239
+ props.severity === 'danger' &&
240
+ !props.text &&
241
+ !props.outlined &&
242
+ !props.plain,
243
+ },
244
+ // Danger Text Button
245
+ {
246
+ 'text-red-500 dark:text-red-400':
247
+ props.text && props.severity === 'danger' && !props.plain,
248
+ },
249
+ // Danger Outlined Button
250
+ {
251
+ 'text-red-500 border border-red-500 hover:bg-red-300/10':
252
+ props.outlined && props.severity === 'danger' && !props.plain,
253
+ },
254
+
255
+ // Contrast Button
256
+ {
257
+ 'text-white dark:text-surface-900':
258
+ props.severity === 'contrast' &&
259
+ !props.text &&
260
+ !props.outlined &&
261
+ !props.plain,
262
+ 'bg-surface-900 dark:bg-surface-0':
263
+ props.severity === 'contrast' &&
264
+ !props.text &&
265
+ !props.outlined &&
266
+ !props.plain,
267
+ 'border border-surface-900 dark:border-surface-0':
268
+ props.severity === 'contrast' &&
269
+ !props.text &&
270
+ !props.outlined &&
271
+ !props.plain,
272
+ },
273
+ // Contrast Text Button
274
+ {
275
+ 'text-surface-900 dark:text-surface-0':
276
+ props.text && props.severity === 'contrast' && !props.plain,
277
+ },
278
+ // Contrast Outlined Button
279
+ {
280
+ 'text-surface-900 dark:text-surface-0 border border-surface-900 dark:border-surface-0':
281
+ props.outlined && props.severity === 'contrast' && !props.plain,
282
+ },
283
+
284
+ // --- Severity Button States ---
285
+ 'focus:outline-none focus:outline-offset-0 focus:ring-1',
286
+
287
+ // Link
288
+ { 'focus:ring-primary': props.link },
289
+
290
+ // Plain
291
+ {
292
+ 'hover:bg-gray-600 hover:border-gray-600':
293
+ props.plain && !props.outlined && !props.text,
294
+ },
295
+ // Text & Outlined Button
296
+ {
297
+ 'hover:bg-surface-300/10':
298
+ props.plain && (props.text || props.outlined),
299
+ },
300
+
301
+ // Primary
302
+ {
303
+ 'hover:bg-primary-hover hover:border-primary-hover':
304
+ !props.link &&
305
+ props.severity === null &&
306
+ !props.text &&
307
+ !props.outlined &&
308
+ !props.plain,
309
+ },
310
+ { 'focus:ring-primary': props.severity === null },
311
+ // Text & Outlined Button
312
+ {
313
+ 'hover:bg-primary-300/10':
314
+ (props.text || props.outlined) &&
315
+ props.severity === null &&
316
+ !props.plain,
317
+ },
318
+
319
+ // Secondary
320
+ {
321
+ 'hover:bg-surface-200 dark:hover:bg-surface-600 hover:border-surface-200 dark:hover:border-surface-600':
322
+ props.severity === 'secondary' &&
323
+ !props.text &&
324
+ !props.outlined &&
325
+ !props.plain,
326
+ },
327
+ {
328
+ 'focus:ring-surface-500 dark:focus:ring-surface-400':
329
+ props.severity === 'secondary',
330
+ },
331
+ // Text & Outlined Button
332
+ {
333
+ 'hover:bg-surface-300/10':
334
+ (props.text || props.outlined) &&
335
+ props.severity === 'secondary' &&
336
+ !props.plain,
337
+ },
338
+
339
+ // Success
340
+ {
341
+ 'hover:bg-green-600 dark:hover:bg-green-300 hover:border-green-600 dark:hover:border-green-300':
342
+ props.severity === 'success' &&
343
+ !props.text &&
344
+ !props.outlined &&
345
+ !props.plain,
346
+ },
347
+ {
348
+ 'focus:ring-green-500 dark:focus:ring-green-400':
349
+ props.severity === 'success',
350
+ },
351
+ // Text & Outlined Button
352
+ {
353
+ 'hover:bg-green-300/10':
354
+ (props.text || props.outlined) &&
355
+ props.severity === 'success' &&
356
+ !props.plain,
357
+ },
358
+
359
+ // Info
360
+ {
361
+ 'hover:bg-blue-600 dark:hover:bg-blue-300 hover:border-blue-600 dark:hover:border-blue-300':
362
+ props.severity === 'info' &&
363
+ !props.text &&
364
+ !props.outlined &&
365
+ !props.plain,
366
+ },
367
+ {
368
+ 'focus:ring-blue-500 dark:focus:ring-blue-400':
369
+ props.severity === 'info',
370
+ },
371
+ // Text & Outlined Button
372
+ {
373
+ 'hover:bg-blue-300/10':
374
+ (props.text || props.outlined) &&
375
+ props.severity === 'info' &&
376
+ !props.plain,
377
+ },
378
+
379
+ // Warning
380
+ {
381
+ 'hover:bg-orange-600 dark:hover:bg-orange-300 hover:border-orange-600 dark:hover:border-orange-300':
382
+ props.severity === 'warning' &&
383
+ !props.text &&
384
+ !props.outlined &&
385
+ !props.plain,
386
+ },
387
+ {
388
+ 'focus:ring-orange-500 dark:focus:ring-orange-400':
389
+ props.severity === 'warning',
390
+ },
391
+ // Text & Outlined Button
392
+ {
393
+ 'hover:bg-orange-300/10':
394
+ (props.text || props.outlined) &&
395
+ props.severity === 'warning' &&
396
+ !props.plain,
397
+ },
398
+
399
+ // Help
400
+ {
401
+ 'hover:bg-purple-600 dark:hover:bg-purple-300 hover:border-purple-600 dark:hover:border-purple-300':
402
+ props.severity === 'help' &&
403
+ !props.text &&
404
+ !props.outlined &&
405
+ !props.plain,
406
+ },
407
+ {
408
+ 'focus:ring-purple-500 dark:focus:ring-purple-400':
409
+ props.severity === 'help',
410
+ },
411
+ // Text & Outlined Button
412
+ {
413
+ 'hover:bg-purple-300/10':
414
+ (props.text || props.outlined) &&
415
+ props.severity === 'help' &&
416
+ !props.plain,
417
+ },
418
+
419
+ // Danger
420
+ {
421
+ 'hover:bg-red-600 dark:hover:bg-red-300 hover:border-red-600 dark:hover:border-red-300':
422
+ props.severity === 'danger' &&
423
+ !props.text &&
424
+ !props.outlined &&
425
+ !props.plain,
426
+ },
427
+ {
428
+ 'focus:ring-red-500 dark:focus:ring-red-400':
429
+ props.severity === 'danger',
430
+ },
431
+ // Text & Outlined Button
432
+ {
433
+ 'hover:bg-red-300/10':
434
+ (props.text || props.outlined) &&
435
+ props.severity === 'danger' &&
436
+ !props.plain,
437
+ },
438
+
439
+ // Contrast
440
+ {
441
+ 'hover:bg-surface-800 dark:hover:bg-surface-100 hover:border-surface-800 dark:hover:border-surface-100':
442
+ props.severity === 'contrast' &&
443
+ !props.text &&
444
+ !props.outlined &&
445
+ !props.plain,
446
+ },
447
+ {
448
+ 'focus:ring-surface-500 dark:focus:ring-surface-400':
449
+ props.severity === 'contrast',
450
+ },
451
+ // Text & Outlined Button
452
+ {
453
+ 'hover:bg-surface-900/10 dark:hover:bg-[rgba(255,255,255,0.03)]':
454
+ (props.text || props.outlined) &&
455
+ props.severity === 'contrast' &&
456
+ !props.plain,
457
+ },
458
+
459
+ // Disabled
460
+ { 'opacity-60 pointer-events-none cursor-default': context.disabled },
461
+
462
+ // Transitions
463
+ 'transition duration-200 ease-in-out',
464
+
465
+ // Misc
466
+ 'cursor-pointer overflow-hidden select-none',
467
+ ],
468
+ }),
469
+ label: ({ props }) => ({
470
+ class: [
471
+ 'duration-200',
472
+ 'font-medium',
473
+ {
474
+ 'hover:underline': props.link,
475
+ },
476
+ { 'flex-1': props.label !== null, 'invisible w-0': props.label == null },
477
+ ],
478
+ }),
479
+ icon: ({ props }) => ({
480
+ class: [
481
+ 'mx-0',
482
+ {
483
+ 'mr-2': props.iconPos == 'left' && props.label != null,
484
+ 'ml-2 order-1': props.iconPos == 'right' && props.label != null,
485
+ 'mb-2': props.iconPos == 'top' && props.label != null,
486
+ 'mt-2': props.iconPos == 'bottom' && props.label != null,
487
+ },
488
+ ],
489
+ }),
490
+ loadingicon: ({ props }) => ({
491
+ class: [
492
+ 'h-4 w-4',
493
+ 'mx-0',
494
+ {
495
+ 'mr-2': props.iconPos == 'left' && props.label != null,
496
+ 'ml-2 order-1': props.iconPos == 'right' && props.label != null,
497
+ 'mb-2': props.iconPos == 'top' && props.label != null,
498
+ 'mt-2': props.iconPos == 'bottom' && props.label != null,
499
+ },
500
+ 'animate-spin',
501
+ ],
502
+ }),
503
+ badge: ({ props }) => ({
504
+ class: [
505
+ {
506
+ 'ml-2 w-4 h-4 leading-none flex items-center justify-center':
507
+ props.badge,
508
+ },
509
+ ],
510
+ }),
511
+ }