@nuxt/ui 0.4.1 → 2.8.1

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 (143) hide show
  1. package/LICENSE.md +9 -0
  2. package/README.md +63 -50
  3. package/dist/module.cjs +5 -0
  4. package/dist/module.d.mts +1234 -0
  5. package/dist/module.d.ts +1234 -0
  6. package/dist/module.json +8 -0
  7. package/dist/module.mjs +407 -0
  8. package/dist/runtime/app.config.d.ts +1203 -0
  9. package/dist/runtime/app.config.mjs +1057 -0
  10. package/dist/runtime/components/data/Table.vue +251 -0
  11. package/dist/runtime/components/data/Table.vue.d.ts +215 -0
  12. package/dist/runtime/components/elements/Accordion.vue +138 -0
  13. package/dist/runtime/components/elements/Accordion.vue.d.ts +80 -0
  14. package/dist/runtime/components/elements/Alert.vue +120 -0
  15. package/dist/runtime/components/elements/Alert.vue.d.ts +107 -0
  16. package/dist/runtime/components/elements/Avatar.vue +149 -0
  17. package/dist/runtime/components/elements/Avatar.vue.d.ts +115 -0
  18. package/dist/runtime/components/elements/AvatarGroup.d.ts +37 -0
  19. package/dist/runtime/components/elements/AvatarGroup.mjs +53 -0
  20. package/dist/runtime/components/elements/Badge.vue +69 -0
  21. package/dist/runtime/components/elements/Badge.vue.d.ts +63 -0
  22. package/dist/runtime/components/elements/Button.vue +182 -0
  23. package/dist/runtime/components/elements/Button.vue.d.ts +187 -0
  24. package/dist/runtime/components/elements/ButtonGroup.d.ts +39 -0
  25. package/dist/runtime/components/elements/ButtonGroup.mjs +70 -0
  26. package/dist/runtime/components/elements/Dropdown.vue +172 -0
  27. package/dist/runtime/components/elements/Dropdown.vue.d.ts +96 -0
  28. package/dist/runtime/components/elements/Icon.vue +15 -0
  29. package/dist/runtime/components/elements/Icon.vue.d.ts +12 -0
  30. package/dist/runtime/components/elements/Kbd.vue +55 -0
  31. package/dist/runtime/components/elements/Kbd.vue.d.ts +42 -0
  32. package/dist/runtime/components/elements/Link.vue +80 -0
  33. package/dist/runtime/components/elements/Link.vue.d.ts +9 -0
  34. package/dist/runtime/components/forms/Checkbox.vue +136 -0
  35. package/dist/runtime/components/forms/Checkbox.vue.d.ts +129 -0
  36. package/dist/runtime/components/forms/Form.vue +185 -0
  37. package/dist/runtime/components/forms/Form.vue.d.ts +50 -0
  38. package/dist/runtime/components/forms/FormGroup.vue +97 -0
  39. package/dist/runtime/components/forms/FormGroup.vue.d.ts +98 -0
  40. package/dist/runtime/components/forms/Input.vue +250 -0
  41. package/dist/runtime/components/forms/Input.vue.d.ts +214 -0
  42. package/dist/runtime/components/forms/Radio.vue +122 -0
  43. package/dist/runtime/components/forms/Radio.vue.d.ts +109 -0
  44. package/dist/runtime/components/forms/Range.vue +163 -0
  45. package/dist/runtime/components/forms/Range.vue.d.ts +119 -0
  46. package/dist/runtime/components/forms/Select.vue +307 -0
  47. package/dist/runtime/components/forms/Select.vue.d.ts +229 -0
  48. package/dist/runtime/components/forms/SelectMenu.vue +429 -0
  49. package/dist/runtime/components/forms/SelectMenu.vue.d.ts +330 -0
  50. package/dist/runtime/components/forms/Textarea.vue +184 -0
  51. package/dist/runtime/components/forms/Textarea.vue.d.ts +161 -0
  52. package/dist/runtime/components/forms/Toggle.vue +113 -0
  53. package/dist/runtime/components/forms/Toggle.vue.d.ts +83 -0
  54. package/dist/runtime/components/layout/Card.vue +58 -0
  55. package/dist/runtime/components/layout/Card.vue.d.ts +31 -0
  56. package/dist/runtime/components/layout/Container.vue +43 -0
  57. package/dist/runtime/components/layout/Container.vue.d.ts +31 -0
  58. package/dist/runtime/components/layout/Skeleton.vue +37 -0
  59. package/dist/runtime/components/layout/Skeleton.vue.d.ts +22 -0
  60. package/dist/runtime/components/navigation/CommandPalette.vue +304 -0
  61. package/dist/runtime/components/navigation/CommandPalette.vue.d.ts +224 -0
  62. package/dist/runtime/components/navigation/CommandPaletteGroup.vue +152 -0
  63. package/dist/runtime/components/navigation/CommandPaletteGroup.vue.d.ts +63 -0
  64. package/dist/runtime/components/navigation/Pagination.vue +197 -0
  65. package/dist/runtime/components/navigation/Pagination.vue.d.ts +125 -0
  66. package/dist/runtime/components/navigation/Tabs.vue +138 -0
  67. package/dist/runtime/components/navigation/Tabs.vue.d.ts +69 -0
  68. package/dist/runtime/components/navigation/VerticalNavigation.vue +79 -0
  69. package/dist/runtime/components/navigation/VerticalNavigation.vue.d.ts +37 -0
  70. package/dist/runtime/components/overlays/ContextMenu.vue +74 -0
  71. package/dist/runtime/components/overlays/ContextMenu.vue.d.ts +54 -0
  72. package/dist/runtime/components/overlays/Modal.vue +113 -0
  73. package/dist/runtime/components/overlays/Modal.vue.d.ts +82 -0
  74. package/dist/runtime/components/overlays/Notification.vue +197 -0
  75. package/dist/runtime/components/overlays/Notification.vue.d.ts +126 -0
  76. package/dist/runtime/components/overlays/Notifications.vue +61 -0
  77. package/dist/runtime/components/overlays/Notifications.vue.d.ts +41 -0
  78. package/dist/runtime/components/overlays/Popover.vue +139 -0
  79. package/dist/runtime/components/overlays/Popover.vue.d.ts +82 -0
  80. package/dist/runtime/components/overlays/Slideover.vue +103 -0
  81. package/dist/runtime/components/overlays/Slideover.vue.d.ts +84 -0
  82. package/dist/runtime/components/overlays/Tooltip.vue +118 -0
  83. package/dist/runtime/components/overlays/Tooltip.vue.d.ts +82 -0
  84. package/dist/runtime/composables/defineShortcuts.d.ts +13 -0
  85. package/dist/runtime/composables/defineShortcuts.mjs +108 -0
  86. package/dist/runtime/composables/useCopyToClipboard.d.ts +10 -0
  87. package/dist/runtime/composables/useCopyToClipboard.mjs +26 -0
  88. package/dist/runtime/composables/useFormGroup.d.ts +6 -0
  89. package/dist/runtime/composables/useFormGroup.mjs +30 -0
  90. package/dist/runtime/composables/usePopper.d.ts +232 -0
  91. package/dist/runtime/composables/usePopper.mjs +78 -0
  92. package/dist/runtime/composables/useShortcuts.d.ts +12 -0
  93. package/dist/runtime/composables/useShortcuts.mjs +24 -0
  94. package/dist/runtime/composables/useTimer.d.ts +8 -0
  95. package/dist/runtime/composables/useTimer.mjs +51 -0
  96. package/dist/runtime/composables/useToast.d.ts +18 -0
  97. package/dist/runtime/composables/useToast.mjs +22 -0
  98. package/dist/runtime/plugins/colors.d.ts +2 -0
  99. package/dist/runtime/plugins/colors.mjs +46 -0
  100. package/dist/runtime/types/accordion.d.ts +9 -0
  101. package/dist/runtime/types/avatar.d.ts +9 -0
  102. package/dist/runtime/types/button.d.ts +23 -0
  103. package/dist/runtime/types/clipboard.d.ts +3 -0
  104. package/dist/runtime/types/command-palette.d.ts +26 -0
  105. package/dist/runtime/types/dropdown.d.ts +13 -0
  106. package/dist/runtime/types/form.d.ts +21 -0
  107. package/dist/runtime/types/index.d.ts +12 -0
  108. package/dist/runtime/types/link.d.ts +8 -0
  109. package/dist/runtime/types/notification.d.ts +22 -0
  110. package/dist/runtime/types/popper.d.ts +14 -0
  111. package/dist/runtime/types/tabs.d.ts +6 -0
  112. package/dist/runtime/types/vertical-navigation.d.ts +11 -0
  113. package/dist/runtime/ui.css +13 -0
  114. package/dist/runtime/utils/StateEmitter.d.ts +17 -0
  115. package/dist/runtime/utils/StateEmitter.mjs +21 -0
  116. package/dist/runtime/utils/index.d.ts +11 -0
  117. package/dist/runtime/utils/index.mjs +33 -0
  118. package/dist/types.d.mts +15 -0
  119. package/dist/types.d.ts +15 -0
  120. package/package.json +56 -39
  121. package/LICENSE +0 -21
  122. package/dist/assets/styles.css +0 -14
  123. package/dist/components/NButton.vue +0 -22
  124. package/dist/components/NCard.vue +0 -5
  125. package/dist/components/NCheckbox.vue +0 -35
  126. package/dist/components/NDarkToggle.vue +0 -28
  127. package/dist/components/NDialog.vue +0 -59
  128. package/dist/components/NDropdown.vue +0 -31
  129. package/dist/components/NIcon.vue +0 -9
  130. package/dist/components/NLink.vue +0 -20
  131. package/dist/components/NRadio.vue +0 -40
  132. package/dist/components/NSwitch.vue +0 -37
  133. package/dist/components/NTextInput.vue +0 -34
  134. package/dist/components/NTip.vue +0 -16
  135. package/dist/components/NuxtContentLogo.vue +0 -7
  136. package/dist/components/NuxtExampleLayout.vue +0 -82
  137. package/dist/components/NuxtLogo.vue +0 -20
  138. package/dist/components/nuxt/NDarkToggle.vue +0 -28
  139. package/dist/nuxt.d.ts +0 -16
  140. package/dist/nuxt.mjs +0 -36
  141. package/dist/unocss.d.ts +0 -7
  142. package/dist/unocss.mjs +0 -127
  143. package/nuxt.cjs +0 -7
@@ -0,0 +1,1057 @@
1
+ const table = {
2
+ wrapper: "relative overflow-x-auto",
3
+ base: "min-w-full table-fixed",
4
+ divide: "divide-y divide-gray-300 dark:divide-gray-700",
5
+ thead: "",
6
+ tbody: "divide-y divide-gray-200 dark:divide-gray-800",
7
+ tr: {
8
+ base: "",
9
+ selected: "bg-gray-50 dark:bg-gray-800/50",
10
+ active: "hover:bg-gray-50 dark:hover:bg-gray-800/50 cursor-pointer"
11
+ },
12
+ th: {
13
+ base: "text-left rtl:text-right",
14
+ padding: "px-3 py-3.5",
15
+ color: "text-gray-900 dark:text-white",
16
+ font: "font-semibold",
17
+ size: "text-sm"
18
+ },
19
+ td: {
20
+ base: "whitespace-nowrap",
21
+ padding: "px-3 py-4",
22
+ color: "text-gray-500 dark:text-gray-400",
23
+ font: "",
24
+ size: "text-sm"
25
+ },
26
+ loadingState: {
27
+ wrapper: "flex flex-col items-center justify-center flex-1 px-6 py-14 sm:px-14",
28
+ label: "text-sm text-center text-gray-900 dark:text-white",
29
+ icon: "w-6 h-6 mx-auto text-gray-400 dark:text-gray-500 mb-4 animate-spin"
30
+ },
31
+ emptyState: {
32
+ wrapper: "flex flex-col items-center justify-center flex-1 px-6 py-14 sm:px-14",
33
+ label: "text-sm text-center text-gray-900 dark:text-white",
34
+ icon: "w-6 h-6 mx-auto text-gray-400 dark:text-gray-500 mb-4"
35
+ },
36
+ default: {
37
+ sortAscIcon: "i-heroicons-bars-arrow-up-20-solid",
38
+ sortDescIcon: "i-heroicons-bars-arrow-down-20-solid",
39
+ sortButton: {
40
+ icon: "i-heroicons-arrows-up-down-20-solid",
41
+ trailing: true,
42
+ square: true,
43
+ color: "gray",
44
+ variant: "ghost",
45
+ class: "-m-1.5"
46
+ },
47
+ loadingState: {
48
+ icon: "i-heroicons-arrow-path-20-solid",
49
+ label: "Loading..."
50
+ },
51
+ emptyState: {
52
+ icon: "i-heroicons-circle-stack-20-solid",
53
+ label: "No items."
54
+ }
55
+ }
56
+ };
57
+ const avatar = {
58
+ wrapper: "relative inline-flex items-center justify-center flex-shrink-0",
59
+ background: "bg-gray-100 dark:bg-gray-800",
60
+ rounded: "rounded-full",
61
+ text: "font-medium leading-none text-gray-900 dark:text-white truncate",
62
+ placeholder: "font-medium leading-none text-gray-500 dark:text-gray-400 truncate",
63
+ size: {
64
+ "3xs": "h-4 w-4 text-[8px]",
65
+ "2xs": "h-5 w-5 text-[10px]",
66
+ xs: "h-6 w-6 text-xs",
67
+ sm: "h-8 w-8 text-sm",
68
+ md: "h-10 w-10 text-base",
69
+ lg: "h-12 w-12 text-lg",
70
+ xl: "h-14 w-14 text-xl",
71
+ "2xl": "h-16 w-16 text-2xl",
72
+ "3xl": "h-20 w-20 text-3xl"
73
+ },
74
+ chip: {
75
+ base: "absolute rounded-full ring-1 ring-white dark:ring-gray-900 flex items-center justify-center text-white dark:text-gray-900 font-medium",
76
+ background: "bg-{color}-500 dark:bg-{color}-400",
77
+ position: {
78
+ "top-right": "top-0 right-0",
79
+ "bottom-right": "bottom-0 right-0",
80
+ "top-left": "top-0 left-0",
81
+ "bottom-left": "bottom-0 left-0"
82
+ },
83
+ size: {
84
+ "3xs": "h-[4px] min-w-[4px] text-[4px] p-px",
85
+ "2xs": "h-[5px] min-w-[5px] text-[5px] p-px",
86
+ xs: "h-1.5 min-w-[0.375rem] text-[6px] p-px",
87
+ sm: "h-2 min-w-[0.5rem] text-[7px] p-0.5",
88
+ md: "h-2.5 min-w-[0.625rem] text-[8px] p-0.5",
89
+ lg: "h-3 min-w-[0.75rem] text-[10px] p-0.5",
90
+ xl: "h-3.5 min-w-[0.875rem] text-[11px] p-1",
91
+ "2xl": "h-4 min-w-[1rem] text-[12px] p-1",
92
+ "3xl": "h-5 min-w-[1.25rem] text-[14px] p-1"
93
+ }
94
+ },
95
+ icon: {
96
+ base: "text-gray-500 dark:text-gray-400 flex-shrink-0",
97
+ size: {
98
+ "3xs": "h-2 w-2",
99
+ "2xs": "h-2.5 w-2.5",
100
+ xs: "h-3 w-3",
101
+ sm: "h-4 w-4",
102
+ md: "h-5 w-5",
103
+ lg: "h-6 w-6",
104
+ xl: "h-7 w-7",
105
+ "2xl": "h-8 w-8",
106
+ "3xl": "h-10 w-10"
107
+ }
108
+ },
109
+ default: {
110
+ size: "sm",
111
+ icon: null,
112
+ chipColor: null,
113
+ chipPosition: "top-right"
114
+ }
115
+ };
116
+ const avatarGroup = {
117
+ wrapper: "flex flex-row-reverse justify-end",
118
+ ring: "ring-2 ring-white dark:ring-gray-900",
119
+ margin: "-me-1.5 first:me-0"
120
+ };
121
+ const badge = {
122
+ base: "inline-flex items-center",
123
+ rounded: "rounded-md",
124
+ font: "font-medium",
125
+ size: {
126
+ xs: "text-xs px-1.5 py-0.5",
127
+ sm: "text-xs px-2 py-1",
128
+ md: "text-sm px-2 py-1",
129
+ lg: "text-sm px-2.5 py-1.5"
130
+ },
131
+ color: {
132
+ white: {
133
+ solid: "ring-1 ring-inset ring-gray-300 dark:ring-gray-700 text-gray-900 dark:text-white bg-white dark:bg-gray-900"
134
+ },
135
+ gray: {
136
+ solid: "ring-1 ring-inset ring-gray-300 dark:ring-gray-700 text-gray-700 dark:text-gray-200 bg-gray-50 dark:bg-gray-800"
137
+ },
138
+ black: {
139
+ solid: "text-white dark:text-gray-900 bg-gray-900 dark:bg-white"
140
+ }
141
+ },
142
+ variant: {
143
+ solid: "bg-{color}-500 dark:bg-{color}-400 text-white dark:text-gray-900",
144
+ outline: "text-{color}-500 dark:text-{color}-400 ring-1 ring-inset ring-{color}-500 dark:ring-{color}-400",
145
+ soft: "bg-{color}-50 dark:bg-{color}-400 dark:bg-opacity-10 text-{color}-500 dark:text-{color}-400",
146
+ subtle: "bg-{color}-50 dark:bg-{color}-400 dark:bg-opacity-10 text-{color}-500 dark:text-{color}-400 ring-1 ring-inset ring-{color}-500 dark:ring-{color}-400 ring-opacity-25 dark:ring-opacity-25"
147
+ },
148
+ default: {
149
+ size: "sm",
150
+ variant: "solid",
151
+ color: "primary"
152
+ }
153
+ };
154
+ const button = {
155
+ base: "focus:outline-none focus-visible:outline-0 disabled:cursor-not-allowed disabled:opacity-75 flex-shrink-0",
156
+ font: "font-medium",
157
+ rounded: "rounded-md",
158
+ size: {
159
+ "2xs": "text-xs",
160
+ xs: "text-xs",
161
+ sm: "text-sm",
162
+ md: "text-sm",
163
+ lg: "text-sm",
164
+ xl: "text-base"
165
+ },
166
+ gap: {
167
+ "2xs": "gap-x-1",
168
+ xs: "gap-x-1.5",
169
+ sm: "gap-x-1.5",
170
+ md: "gap-x-2",
171
+ lg: "gap-x-2.5",
172
+ xl: "gap-x-2.5"
173
+ },
174
+ padding: {
175
+ "2xs": "px-2 py-1",
176
+ xs: "px-2.5 py-1.5",
177
+ sm: "px-2.5 py-1.5",
178
+ md: "px-3 py-2",
179
+ lg: "px-3.5 py-2.5",
180
+ xl: "px-3.5 py-2.5"
181
+ },
182
+ square: {
183
+ "2xs": "p-1",
184
+ xs: "p-1.5",
185
+ sm: "p-1.5",
186
+ md: "p-2",
187
+ lg: "p-2.5",
188
+ xl: "p-2.5"
189
+ },
190
+ color: {
191
+ white: {
192
+ solid: "shadow-sm ring-1 ring-inset ring-gray-300 dark:ring-gray-700 text-gray-900 dark:text-white bg-white hover:bg-gray-50 disabled:bg-white dark:bg-gray-900 dark:hover:bg-gray-800/50 dark:disabled:bg-gray-900 focus-visible:ring-2 focus-visible:ring-primary-500 dark:focus-visible:ring-primary-400",
193
+ ghost: "text-gray-900 dark:text-white hover:bg-white dark:hover:bg-gray-900 focus-visible:ring-inset focus-visible:ring-2 focus-visible:ring-primary-500 dark:focus-visible:ring-primary-400"
194
+ },
195
+ gray: {
196
+ solid: "shadow-sm ring-1 ring-inset ring-gray-300 dark:ring-gray-700 text-gray-700 dark:text-gray-200 bg-gray-50 hover:bg-gray-100 disabled:bg-gray-50 dark:bg-gray-800 dark:hover:bg-gray-700/50 dark:disabled:bg-gray-800 focus-visible:ring-2 focus-visible:ring-primary-500 dark:focus-visible:ring-primary-400",
197
+ ghost: "text-gray-700 dark:text-gray-200 hover:text-gray-900 dark:hover:text-white hover:bg-gray-50 dark:hover:bg-gray-800 focus-visible:ring-inset focus-visible:ring-2 focus-visible:ring-primary-500 dark:focus-visible:ring-primary-400",
198
+ link: "text-gray-500 dark:text-gray-400 hover:text-gray-700 dark:hover:text-gray-200 underline-offset-4 hover:underline focus-visible:ring-inset focus-visible:ring-2 focus-visible:ring-primary-500 dark:focus-visible:ring-primary-400"
199
+ },
200
+ black: {
201
+ solid: "shadow-sm text-white dark:text-gray-900 bg-gray-900 hover:bg-gray-800 disabled:bg-gray-900 dark:bg-white dark:hover:bg-gray-100 dark:disabled:bg-white focus-visible:ring-inset focus-visible:ring-2 focus-visible:ring-primary-500 dark:focus-visible:ring-primary-400",
202
+ link: "text-gray-900 dark:text-white underline-offset-4 hover:underline focus-visible:ring-inset focus-visible:ring-2 focus-visible:ring-primary-500 dark:focus-visible:ring-primary-400"
203
+ }
204
+ },
205
+ variant: {
206
+ solid: "shadow-sm text-white dark:text-gray-900 bg-{color}-500 hover:bg-{color}-600 disabled:bg-{color}-500 dark:bg-{color}-400 dark:hover:bg-{color}-500 dark:disabled:bg-{color}-400 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-{color}-500 dark:focus-visible:outline-{color}-400",
207
+ outline: "ring-1 ring-inset ring-current text-{color}-500 dark:text-{color}-400 hover:bg-{color}-50 disabled:bg-transparent dark:hover:bg-{color}-950 dark:disabled:bg-transparent focus-visible:ring-2 focus-visible:ring-{color}-500 dark:focus-visible:ring-{color}-400",
208
+ soft: "text-{color}-500 dark:text-{color}-400 bg-{color}-50 hover:bg-{color}-100 disabled:bg-{color}-50 dark:bg-{color}-950 dark:hover:bg-{color}-900 dark:disabled:bg-{color}-950 focus-visible:ring-2 focus-visible:ring-inset focus-visible:ring-{color}-500 dark:focus-visible:ring-{color}-400",
209
+ ghost: "text-{color}-500 dark:text-{color}-400 hover:bg-{color}-50 disabled:bg-transparent dark:hover:bg-{color}-950 dark:disabled:bg-transparent focus-visible:ring-2 focus-visible:ring-inset focus-visible:ring-{color}-500 dark:focus-visible:ring-{color}-400",
210
+ link: "text-{color}-500 hover:text-{color}-600 disabled:text-{color}-500 dark:text-{color}-400 dark:hover:text-{color}-500 dark:disabled:text-{color}-400 underline-offset-4 hover:underline focus-visible:ring-2 focus-visible:ring-inset focus-visible:ring-{color}-500 dark:focus-visible:ring-{color}-400"
211
+ },
212
+ icon: {
213
+ base: "flex-shrink-0",
214
+ size: {
215
+ "2xs": "h-4 w-4",
216
+ xs: "h-4 w-4",
217
+ sm: "h-5 w-5",
218
+ md: "h-5 w-5",
219
+ lg: "h-5 w-5",
220
+ xl: "h-6 w-6"
221
+ }
222
+ },
223
+ default: {
224
+ size: "sm",
225
+ variant: "solid",
226
+ color: "primary",
227
+ loadingIcon: "i-heroicons-arrow-path-20-solid"
228
+ }
229
+ };
230
+ const buttonGroup = {
231
+ wrapper: "inline-flex -space-x-px",
232
+ rounded: "rounded-md",
233
+ shadow: "shadow-sm"
234
+ };
235
+ const dropdown = {
236
+ wrapper: "relative inline-flex text-left rtl:text-right",
237
+ container: "z-20",
238
+ width: "w-48",
239
+ height: "",
240
+ background: "bg-white dark:bg-gray-800",
241
+ shadow: "shadow-lg",
242
+ rounded: "rounded-md",
243
+ ring: "ring-1 ring-gray-200 dark:ring-gray-700",
244
+ base: "relative focus:outline-none overflow-y-auto scroll-py-1",
245
+ divide: "divide-y divide-gray-200 dark:divide-gray-700",
246
+ padding: "p-1",
247
+ item: {
248
+ base: "group flex items-center gap-2 w-full",
249
+ rounded: "rounded-md",
250
+ padding: "px-2 py-1.5",
251
+ size: "text-sm",
252
+ active: "bg-gray-100 dark:bg-gray-900 text-gray-900 dark:text-white",
253
+ inactive: "text-gray-700 dark:text-gray-200",
254
+ disabled: "cursor-not-allowed opacity-50",
255
+ icon: {
256
+ base: "flex-shrink-0 h-4 w-4",
257
+ active: "text-gray-500 dark:text-gray-400",
258
+ inactive: "text-gray-400 dark:text-gray-500"
259
+ },
260
+ avatar: {
261
+ base: "flex-shrink-0",
262
+ size: "3xs"
263
+ },
264
+ shortcuts: "hidden md:inline-flex flex-shrink-0 gap-0.5 ms-auto"
265
+ },
266
+ // Syntax for `<Transition>` component https://vuejs.org/guide/built-ins/transition.html#css-based-transitions
267
+ transition: {
268
+ enterActiveClass: "transition duration-100 ease-out",
269
+ enterFromClass: "transform scale-95 opacity-0",
270
+ enterToClass: "transform scale-100 opacity-100",
271
+ leaveActiveClass: "transition duration-75 ease-in",
272
+ leaveFromClass: "transform scale-100 opacity-100",
273
+ leaveToClass: "transform scale-95 opacity-0"
274
+ },
275
+ popper: {
276
+ placement: "bottom-end",
277
+ strategy: "fixed"
278
+ }
279
+ };
280
+ const accordion = {
281
+ wrapper: "w-full flex flex-col",
282
+ item: {
283
+ base: "",
284
+ size: "text-sm",
285
+ color: "text-gray-500 dark:text-gray-400",
286
+ padding: "pt-1.5 pb-3",
287
+ icon: "ms-auto transform transition-transform duration-200"
288
+ },
289
+ transition: {
290
+ enterActiveClass: "overflow-hidden transition-[height] duration-200 ease-out",
291
+ leaveActiveClass: "overflow-hidden transition-[height] duration-200 ease-out"
292
+ },
293
+ default: {
294
+ openIcon: "i-heroicons-chevron-down-20-solid",
295
+ closeIcon: "",
296
+ class: "mb-1.5 w-full",
297
+ variant: "soft"
298
+ }
299
+ };
300
+ const alert = {
301
+ wrapper: "w-full relative overflow-hidden",
302
+ title: "text-sm font-medium",
303
+ description: "mt-1 text-sm leading-4 opacity-90",
304
+ shadow: "",
305
+ rounded: "rounded-lg",
306
+ padding: "p-3",
307
+ icon: {
308
+ base: "flex-shrink-0 w-5 h-5"
309
+ },
310
+ avatar: {
311
+ base: "flex-shrink-0 self-center",
312
+ size: "md"
313
+ },
314
+ color: {
315
+ white: {
316
+ solid: "text-gray-900 dark:text-white bg-white dark:bg-gray-900 ring-1 ring-gray-200 dark:ring-gray-800"
317
+ }
318
+ },
319
+ variant: {
320
+ solid: "bg-{color}-500 dark:bg-{color}-400 text-white dark:text-gray-900",
321
+ outline: "text-{color}-500 dark:text-{color}-400 ring-1 ring-inset ring-{color}-500 dark:ring-{color}-400",
322
+ soft: "bg-{color}-50 dark:bg-{color}-400 dark:bg-opacity-10 text-{color}-500 dark:text-{color}-400",
323
+ subtle: "bg-{color}-50 dark:bg-{color}-400 dark:bg-opacity-10 text-{color}-500 dark:text-{color}-400 ring-1 ring-inset ring-{color}-500 dark:ring-{color}-400 ring-opacity-25 dark:ring-opacity-25"
324
+ },
325
+ default: {
326
+ color: "white",
327
+ variant: "solid",
328
+ icon: null,
329
+ closeButton: null,
330
+ actionButton: {
331
+ size: "xs",
332
+ color: "primary",
333
+ variant: "link"
334
+ }
335
+ }
336
+ };
337
+ const kbd = {
338
+ base: "inline-flex items-center justify-center text-gray-900 dark:text-white",
339
+ padding: "px-1",
340
+ size: {
341
+ xs: "h-4 min-w-[16px] text-[10px]",
342
+ sm: "h-5 min-w-[20px] text-[11px]",
343
+ md: "h-6 min-w-[24px] text-[12px]"
344
+ },
345
+ rounded: "rounded",
346
+ font: "font-medium font-sans",
347
+ background: "bg-gray-100 dark:bg-gray-800",
348
+ ring: "ring-1 ring-gray-300 dark:ring-gray-700 ring-inset",
349
+ default: {
350
+ size: "sm"
351
+ }
352
+ };
353
+ const input = {
354
+ wrapper: "relative",
355
+ base: "relative block w-full disabled:cursor-not-allowed disabled:opacity-75 focus:outline-none border-0",
356
+ rounded: "rounded-md",
357
+ placeholder: "placeholder-gray-400 dark:placeholder-gray-500",
358
+ size: {
359
+ "2xs": "text-xs",
360
+ xs: "text-xs",
361
+ sm: "text-sm",
362
+ md: "text-sm",
363
+ lg: "text-sm",
364
+ xl: "text-base"
365
+ },
366
+ gap: {
367
+ "2xs": "gap-x-1",
368
+ xs: "gap-x-1.5",
369
+ sm: "gap-x-1.5",
370
+ md: "gap-x-2",
371
+ lg: "gap-x-2.5",
372
+ xl: "gap-x-2.5"
373
+ },
374
+ padding: {
375
+ "2xs": "px-2 py-1",
376
+ xs: "px-2.5 py-1.5",
377
+ sm: "px-2.5 py-1.5",
378
+ md: "px-3 py-2",
379
+ lg: "px-3.5 py-2.5",
380
+ xl: "px-3.5 py-2.5"
381
+ },
382
+ leading: {
383
+ padding: {
384
+ "2xs": "ps-7",
385
+ xs: "ps-8",
386
+ sm: "ps-9",
387
+ md: "ps-10",
388
+ lg: "ps-11",
389
+ xl: "ps-12"
390
+ }
391
+ },
392
+ trailing: {
393
+ padding: {
394
+ "2xs": "pe-7",
395
+ xs: "pe-8",
396
+ sm: "pe-9",
397
+ md: "pe-10",
398
+ lg: "pe-11",
399
+ xl: "pe-12"
400
+ }
401
+ },
402
+ color: {
403
+ white: {
404
+ outline: "shadow-sm bg-white dark:bg-gray-900 text-gray-900 dark:text-white ring-1 ring-inset ring-gray-300 dark:ring-gray-700 focus:ring-2 focus:ring-primary-500 dark:focus:ring-primary-400"
405
+ },
406
+ gray: {
407
+ outline: "shadow-sm bg-gray-50 dark:bg-gray-800 text-gray-900 dark:text-white ring-1 ring-inset ring-gray-300 dark:ring-gray-700 focus:ring-2 focus:ring-primary-500 dark:focus:ring-primary-400"
408
+ }
409
+ },
410
+ variant: {
411
+ outline: "shadow-sm bg-transparent text-gray-900 dark:text-white ring-1 ring-inset ring-{color}-500 dark:ring-{color}-400 focus:ring-2 focus:ring-{color}-500 dark:focus:ring-{color}-400",
412
+ none: "bg-transparent focus:ring-0 focus:shadow-none"
413
+ },
414
+ icon: {
415
+ base: "flex-shrink-0 text-gray-400 dark:text-gray-500",
416
+ color: "text-{color}-500 dark:text-{color}-400",
417
+ size: {
418
+ "2xs": "h-4 w-4",
419
+ xs: "h-4 w-4",
420
+ sm: "h-5 w-5",
421
+ md: "h-5 w-5",
422
+ lg: "h-5 w-5",
423
+ xl: "h-6 w-6"
424
+ },
425
+ leading: {
426
+ wrapper: "absolute inset-y-0 start-0 flex items-center",
427
+ pointer: "pointer-events-none",
428
+ padding: {
429
+ "2xs": "ps-2",
430
+ xs: "ps-2.5",
431
+ sm: "ps-2.5",
432
+ md: "ps-3",
433
+ lg: "ps-3.5",
434
+ xl: "ps-3.5"
435
+ }
436
+ },
437
+ trailing: {
438
+ wrapper: "absolute inset-y-0 end-0 flex items-center",
439
+ pointer: "pointer-events-none",
440
+ padding: {
441
+ "2xs": "pe-2",
442
+ xs: "pe-2.5",
443
+ sm: "pe-2.5",
444
+ md: "pe-3",
445
+ lg: "pe-3.5",
446
+ xl: "pe-3.5"
447
+ }
448
+ }
449
+ },
450
+ default: {
451
+ size: "sm",
452
+ color: "white",
453
+ variant: "outline",
454
+ loadingIcon: "i-heroicons-arrow-path-20-solid"
455
+ }
456
+ };
457
+ const formGroup = {
458
+ wrapper: "",
459
+ label: {
460
+ wrapper: "flex content-center items-center justify-between",
461
+ base: "block font-medium text-gray-700 dark:text-gray-200",
462
+ // eslint-disable-next-line quotes
463
+ required: `after:content-['*'] after:ms-0.5 after:text-red-500 dark:after:text-red-400`
464
+ },
465
+ size: {
466
+ "2xs": "text-xs",
467
+ xs: "text-xs",
468
+ sm: "text-sm",
469
+ md: "text-sm",
470
+ lg: "text-sm",
471
+ xl: "text-base"
472
+ },
473
+ container: "mt-1 relative",
474
+ description: "text-gray-500 dark:text-gray-400",
475
+ hint: "text-gray-500 dark:text-gray-400",
476
+ help: "mt-2 text-gray-500 dark:text-gray-400",
477
+ error: "mt-2 text-red-500 dark:text-red-400"
478
+ };
479
+ const textarea = {
480
+ ...input,
481
+ default: {
482
+ size: "sm",
483
+ color: "white",
484
+ variant: "outline"
485
+ }
486
+ };
487
+ const select = {
488
+ ...input,
489
+ placeholder: "text-gray-900 dark:text-white",
490
+ default: {
491
+ size: "sm",
492
+ color: "white",
493
+ variant: "outline",
494
+ loadingIcon: "i-heroicons-arrow-path-20-solid",
495
+ trailingIcon: "i-heroicons-chevron-down-20-solid"
496
+ }
497
+ };
498
+ const selectMenu = {
499
+ container: "z-20",
500
+ width: "w-full",
501
+ height: "max-h-60",
502
+ base: "relative focus:outline-none overflow-y-auto scroll-py-1",
503
+ background: "bg-white dark:bg-gray-800",
504
+ shadow: "shadow-lg",
505
+ rounded: "rounded-md",
506
+ padding: "p-1",
507
+ ring: "ring-1 ring-gray-200 dark:ring-gray-700",
508
+ input: "block w-[calc(100%+0.5rem)] focus:ring-transparent text-sm px-3 py-1.5 text-gray-700 dark:text-gray-200 bg-white dark:bg-gray-800 border-0 border-b border-gray-200 dark:border-gray-700 focus:border-inherit sticky -top-1 -mt-1 mb-1 -mx-1 z-10 placeholder-gray-400 dark:placeholder-gray-500 focus:outline-none",
509
+ option: {
510
+ base: "cursor-default select-none relative flex items-center justify-between gap-1",
511
+ rounded: "rounded-md",
512
+ padding: "px-2 py-1.5",
513
+ size: "text-sm",
514
+ color: "text-gray-900 dark:text-white",
515
+ container: "flex items-center gap-2 min-w-0",
516
+ active: "bg-gray-100 dark:bg-gray-900",
517
+ inactive: "",
518
+ selected: "pe-7",
519
+ disabled: "cursor-not-allowed opacity-50",
520
+ empty: "text-sm text-gray-400 dark:text-gray-500 px-2 py-1.5",
521
+ icon: {
522
+ base: "flex-shrink-0 h-4 w-4",
523
+ active: "text-gray-900 dark:text-white",
524
+ inactive: "text-gray-400 dark:text-gray-500"
525
+ },
526
+ selectedIcon: {
527
+ wrapper: "absolute inset-y-0 end-0 flex items-center",
528
+ padding: "pe-2",
529
+ base: "h-4 w-4 text-gray-900 dark:text-white flex-shrink-0"
530
+ },
531
+ avatar: {
532
+ base: "flex-shrink-0",
533
+ size: "3xs"
534
+ },
535
+ chip: {
536
+ base: "flex-shrink-0 w-2 h-2 mx-1 rounded-full"
537
+ }
538
+ },
539
+ // Syntax for `<Transition>` component https://vuejs.org/guide/built-ins/transition.html#css-based-transitions
540
+ transition: {
541
+ leaveActiveClass: "transition ease-in duration-100",
542
+ leaveFromClass: "opacity-100",
543
+ leaveToClass: "opacity-0"
544
+ },
545
+ popper: {
546
+ placement: "bottom-end"
547
+ },
548
+ default: {
549
+ selectedIcon: "i-heroicons-check-20-solid"
550
+ }
551
+ };
552
+ const radio = {
553
+ wrapper: "relative flex items-start",
554
+ base: "h-4 w-4 dark:checked:bg-current dark:checked:border-transparent disabled:opacity-50 disabled:cursor-not-allowed focus:ring-0 focus:ring-transparent focus:ring-offset-transparent",
555
+ color: "text-{color}-500 dark:text-{color}-400",
556
+ background: "bg-white dark:bg-gray-900",
557
+ border: "border border-gray-300 dark:border-gray-700",
558
+ ring: "focus-visible:ring-2 focus-visible:ring-{color}-500 dark:focus-visible:ring-{color}-400 focus-visible:ring-offset-2 focus-visible:ring-offset-white dark:focus-visible:ring-offset-gray-900",
559
+ label: "font-medium text-gray-700 dark:text-gray-200",
560
+ required: "text-red-500 dark:text-red-400",
561
+ help: "text-gray-500 dark:text-gray-400",
562
+ default: {
563
+ color: "primary"
564
+ }
565
+ };
566
+ const checkbox = {
567
+ wrapper: "relative flex items-start",
568
+ base: "h-4 w-4 dark:checked:bg-current dark:checked:border-transparent dark:indeterminate:bg-current dark:indeterminate:border-transparent disabled:opacity-50 disabled:cursor-not-allowed focus:ring-0 focus:ring-transparent focus:ring-offset-transparent",
569
+ rounded: "rounded",
570
+ color: "text-{color}-500 dark:text-{color}-400",
571
+ background: "bg-white dark:bg-gray-900",
572
+ border: "border border-gray-300 dark:border-gray-700",
573
+ ring: "focus-visible:ring-2 focus-visible:ring-{color}-500 dark:focus-visible:ring-{color}-400 focus-visible:ring-offset-2 focus-visible:ring-offset-white dark:focus-visible:ring-offset-gray-900",
574
+ label: "font-medium text-gray-700 dark:text-gray-200",
575
+ required: "text-red-500 dark:text-red-400",
576
+ help: "text-gray-500 dark:text-gray-400",
577
+ default: {
578
+ color: "primary"
579
+ }
580
+ };
581
+ const toggle = {
582
+ base: "relative inline-flex h-5 w-9 flex-shrink-0 border-2 border-transparent disabled:cursor-not-allowed disabled:opacity-50 focus:outline-none",
583
+ rounded: "rounded-full",
584
+ ring: "focus-visible:ring-2 focus-visible:ring-{color}-500 dark:focus-visible:ring-{color}-400 focus-visible:ring-offset-2 focus-visible:ring-offset-white dark:focus-visible:ring-offset-gray-900",
585
+ active: "bg-{color}-500 dark:bg-{color}-400",
586
+ inactive: "bg-gray-200 dark:bg-gray-700",
587
+ container: {
588
+ base: "pointer-events-none relative inline-block h-4 w-4 rounded-full bg-white dark:bg-gray-900 shadow transform ring-0 transition ease-in-out duration-200",
589
+ active: "translate-x-4 rtl:-translate-x-4",
590
+ inactive: "translate-x-0 rtl:-translate-x-0"
591
+ },
592
+ icon: {
593
+ base: "absolute inset-0 h-full w-full flex items-center justify-center transition-opacity",
594
+ active: "opacity-100 ease-in duration-200",
595
+ inactive: "opacity-0 ease-out duration-100",
596
+ on: "h-3 w-3 text-{color}-500 dark:text-{color}-400",
597
+ off: "h-3 w-3 text-gray-400 dark:text-gray-500"
598
+ },
599
+ default: {
600
+ onIcon: null,
601
+ offIcon: null,
602
+ color: "primary"
603
+ }
604
+ };
605
+ const range = {
606
+ wrapper: "relative w-full flex items-center",
607
+ base: "w-full absolute appearance-none cursor-pointer disabled:cursor-not-allowed disabled:bg-opacity-50 focus:outline-none peer group",
608
+ rounded: "rounded-lg",
609
+ background: "bg-transparent",
610
+ ring: "focus-visible:ring-2 focus-visible:ring-{color}-500 dark:focus-visible:ring-{color}-400 focus-visible:ring-offset-2 focus-visible:ring-offset-white dark:focus-visible:ring-offset-gray-900",
611
+ progress: {
612
+ base: "absolute pointer-events-none peer-disabled:bg-opacity-50",
613
+ rounded: "rounded-s-lg",
614
+ background: "bg-{color}-500 dark:bg-{color}-400",
615
+ size: {
616
+ sm: "h-1",
617
+ md: "h-2",
618
+ lg: "h-3"
619
+ }
620
+ },
621
+ thumb: {
622
+ base: "[&::-webkit-slider-thumb]:relative [&::-moz-range-thumb]:relative [&::-webkit-slider-thumb]:z-[1] [&::-moz-range-thumb]:z-[1] [&::-webkit-slider-thumb]:appearance-none [&::-moz-range-thumb]:appearance-none [&::-webkit-slider-thumb]:rounded-full [&::-moz-range-thumb]:rounded-full [&::-moz-range-thumb]:border-0",
623
+ color: "text-{color}-500 dark:text-{color}-400",
624
+ background: "[&::-webkit-slider-thumb]:bg-white [&::-webkit-slider-thumb]:dark:bg-gray-900 [&::-moz-range-thumb]:bg-current",
625
+ ring: "[&::-webkit-slider-thumb]:ring-2 [&::-webkit-slider-thumb]:ring-current",
626
+ size: {
627
+ sm: "[&::-webkit-slider-thumb]:h-3 [&::-moz-range-thumb]:h-3 [&::-webkit-slider-thumb]:w-3 [&::-moz-range-thumb]:w-3 [&::-webkit-slider-thumb]:-mt-1 [&::-moz-range-thumb]:-mt-1",
628
+ md: "[&::-webkit-slider-thumb]:h-4 [&::-moz-range-thumb]:h-4 [&::-webkit-slider-thumb]:w-4 [&::-moz-range-thumb]:w-4 [&::-webkit-slider-thumb]:-mt-1 [&::-moz-range-thumb]:-mt-1",
629
+ lg: "[&::-webkit-slider-thumb]:h-5 [&::-moz-range-thumb]:h-5 [&::-webkit-slider-thumb]:w-5 [&::-moz-range-thumb]:w-5 [&::-webkit-slider-thumb]:-mt-1 [&::-moz-range-thumb]:-mt-1"
630
+ }
631
+ },
632
+ track: {
633
+ base: "[&::-webkit-slider-runnable-track]:group-disabled:bg-opacity-50 [&::-moz-slider-runnable-track]:group-disabled:bg-opacity-50",
634
+ background: "[&::-webkit-slider-runnable-track]:bg-gray-200 [&::-moz-slider-runnable-track]:bg-gray-200 [&::-webkit-slider-runnable-track]:dark:bg-gray-700 [&::-moz-slider-runnable-track]:dark:bg-gray-700",
635
+ rounded: "[&::-webkit-slider-runnable-track]:rounded-lg [&::-moz-slider-runnable-track]:rounded-lg",
636
+ size: {
637
+ sm: "[&::-webkit-slider-runnable-track]:h-1 [&::-moz-slider-runnable-track]:h-1",
638
+ md: "[&::-webkit-slider-runnable-track]:h-2 [&::-moz-slider-runnable-track]:h-2",
639
+ lg: "[&::-webkit-slider-runnable-track]:h-3 [&::-moz-slider-runnable-track]:h-3"
640
+ }
641
+ },
642
+ size: {
643
+ sm: "h-3",
644
+ md: "h-4",
645
+ lg: "h-5"
646
+ },
647
+ default: {
648
+ size: "md",
649
+ color: "primary"
650
+ }
651
+ };
652
+ const card = {
653
+ base: "overflow-hidden",
654
+ background: "bg-white dark:bg-gray-900",
655
+ divide: "divide-y divide-gray-200 dark:divide-gray-800",
656
+ ring: "ring-1 ring-gray-200 dark:ring-gray-800",
657
+ rounded: "rounded-lg",
658
+ shadow: "shadow",
659
+ body: {
660
+ base: "",
661
+ background: "",
662
+ padding: "px-4 py-5 sm:p-6"
663
+ },
664
+ header: {
665
+ base: "",
666
+ background: "",
667
+ padding: "px-4 py-5 sm:px-6"
668
+ },
669
+ footer: {
670
+ base: "",
671
+ background: "",
672
+ padding: "px-4 py-4 sm:px-6"
673
+ }
674
+ };
675
+ const container = {
676
+ base: "mx-auto",
677
+ padding: "px-4 sm:px-6 lg:px-8",
678
+ constrained: "max-w-7xl"
679
+ };
680
+ const skeleton = {
681
+ base: "animate-pulse",
682
+ background: "bg-gray-100 dark:bg-gray-800",
683
+ rounded: "rounded-md"
684
+ };
685
+ const verticalNavigation = {
686
+ wrapper: "relative",
687
+ base: "group relative flex items-center gap-2 focus:outline-none focus-visible:outline-none dark:focus-visible:outline-none focus-visible:before:ring-inset focus-visible:before:ring-1 focus-visible:before:ring-primary-500 dark:focus-visible:before:ring-primary-400 before:absolute before:inset-px before:rounded-md disabled:cursor-not-allowed disabled:opacity-75",
688
+ ring: "focus-visible:ring-inset focus-visible:ring-2 focus-visible:ring-primary-500 dark:focus-visible:ring-primary-400",
689
+ padding: "px-3 py-1.5",
690
+ width: "w-full",
691
+ rounded: "rounded-md",
692
+ font: "font-medium",
693
+ size: "text-sm",
694
+ active: "text-gray-900 dark:text-white before:bg-gray-100 dark:before:bg-gray-800",
695
+ inactive: "text-gray-500 dark:text-gray-400 hover:text-gray-900 dark:hover:text-white hover:before:bg-gray-50 dark:hover:before:bg-gray-800/50",
696
+ label: "truncate relative",
697
+ icon: {
698
+ base: "flex-shrink-0 w-4 h-4",
699
+ active: "text-gray-700 dark:text-gray-200",
700
+ inactive: "text-gray-400 dark:text-gray-500 group-hover:text-gray-700 dark:group-hover:text-gray-200"
701
+ },
702
+ avatar: {
703
+ base: "flex-shrink-0",
704
+ size: "3xs"
705
+ },
706
+ badge: {
707
+ base: "relative ms-auto inline-block py-0.5 px-2 text-xs rounded-md -me-1 -my-0.5",
708
+ active: "bg-white dark:bg-gray-900",
709
+ inactive: "bg-gray-100 dark:bg-gray-800 text-gray-900 dark:text-white group-hover:bg-white dark:group-hover:bg-gray-900"
710
+ }
711
+ };
712
+ const commandPalette = {
713
+ wrapper: "flex flex-col flex-1 min-h-0 divide-y divide-gray-100 dark:divide-gray-800",
714
+ container: "relative flex-1 overflow-y-auto divide-y divide-gray-100 dark:divide-gray-800 scroll-py-2",
715
+ input: {
716
+ wrapper: "relative flex items-center",
717
+ base: "w-full placeholder-gray-400 dark:placeholder-gray-500 bg-transparent border-0 text-gray-900 dark:text-white focus:ring-0 focus:outline-none",
718
+ padding: "px-4",
719
+ height: "h-12",
720
+ size: "sm:text-sm",
721
+ icon: {
722
+ base: "pointer-events-none absolute start-4 text-gray-400 dark:text-gray-500",
723
+ size: "h-4 w-4",
724
+ padding: "ps-10"
725
+ },
726
+ closeButton: "absolute end-4"
727
+ },
728
+ emptyState: {
729
+ wrapper: "flex flex-col items-center justify-center flex-1 px-6 py-14 sm:px-14",
730
+ label: "text-sm text-center text-gray-900 dark:text-white",
731
+ queryLabel: "text-sm text-center text-gray-900 dark:text-white",
732
+ icon: "w-6 h-6 mx-auto text-gray-400 dark:text-gray-500 mb-4"
733
+ },
734
+ group: {
735
+ wrapper: "p-2",
736
+ label: "px-2 my-2 text-xs font-semibold text-gray-900 dark:text-white",
737
+ container: "text-sm text-gray-700 dark:text-gray-200",
738
+ command: {
739
+ base: "flex justify-between select-none items-center rounded-md px-2 py-1.5 gap-2 relative",
740
+ active: "bg-gray-100 dark:bg-gray-800 text-gray-900 dark:text-white",
741
+ inactive: "",
742
+ label: "flex items-center gap-1.5 min-w-0",
743
+ prefix: "text-gray-400 dark:text-gray-500",
744
+ suffix: "text-gray-400 dark:text-gray-500",
745
+ container: "flex items-center gap-2 min-w-0",
746
+ icon: {
747
+ base: "flex-shrink-0 w-4 h-4",
748
+ active: "text-gray-900 dark:text-white",
749
+ inactive: "text-gray-400 dark:text-gray-500"
750
+ },
751
+ selectedIcon: {
752
+ base: "h-4 w-4 text-gray-900 dark:text-white flex-shrink-0"
753
+ },
754
+ avatar: {
755
+ base: "flex-shrink-0",
756
+ size: "3xs"
757
+ },
758
+ chip: {
759
+ base: "flex-shrink-0 w-2 h-2 mx-1 rounded-full"
760
+ },
761
+ disabled: "opacity-50",
762
+ shortcuts: "hidden md:inline-flex flex-shrink-0 gap-0.5"
763
+ },
764
+ active: "flex-shrink-0 text-gray-500 dark:text-gray-400",
765
+ inactive: "flex-shrink-0 text-gray-500 dark:text-gray-400"
766
+ },
767
+ default: {
768
+ icon: "i-heroicons-magnifying-glass-20-solid",
769
+ loadingIcon: "i-heroicons-arrow-path-20-solid",
770
+ emptyState: {
771
+ icon: "i-heroicons-magnifying-glass-20-solid",
772
+ label: "We couldn't find any items.",
773
+ queryLabel: "We couldn't find any items with that term. Please try again."
774
+ },
775
+ closeButton: null,
776
+ selectedIcon: "i-heroicons-check-20-solid"
777
+ }
778
+ };
779
+ const pagination = {
780
+ wrapper: "flex items-center -space-x-px",
781
+ base: "",
782
+ rounded: "first:rounded-s-md last:rounded-e-md",
783
+ default: {
784
+ size: "sm",
785
+ activeButton: {
786
+ color: "primary"
787
+ },
788
+ inactiveButton: {
789
+ color: "white"
790
+ },
791
+ prevButton: {
792
+ color: "white",
793
+ class: "rtl:[&_span:first-child]:rotate-180",
794
+ icon: "i-heroicons-chevron-left-20-solid"
795
+ },
796
+ nextButton: {
797
+ color: "white",
798
+ class: "rtl:[&_span:last-child]:rotate-180",
799
+ icon: "i-heroicons-chevron-right-20-solid "
800
+ }
801
+ }
802
+ };
803
+ const tabs = {
804
+ wrapper: "relative space-y-2",
805
+ container: "relative w-full",
806
+ base: "focus:outline-none",
807
+ list: {
808
+ base: "relative",
809
+ background: "bg-gray-100 dark:bg-gray-800",
810
+ rounded: "rounded-lg",
811
+ shadow: "",
812
+ padding: "p-1",
813
+ height: "h-10",
814
+ width: "w-full",
815
+ marker: {
816
+ wrapper: "absolute top-[4px] left-[4px] duration-200 ease-out focus:outline-none",
817
+ base: "w-full h-full",
818
+ background: "bg-white dark:bg-gray-900",
819
+ rounded: "rounded-md",
820
+ shadow: "shadow-sm"
821
+ },
822
+ tab: {
823
+ base: "relative inline-flex items-center justify-center flex-shrink-0 w-full whitespace-nowrap focus:outline-none disabled:cursor-not-allowed disabled:opacity-75 transition-colors duration-200 ease-out",
824
+ background: "",
825
+ active: "text-gray-900 dark:text-white",
826
+ inactive: "text-gray-500 dark:text-gray-400",
827
+ height: "h-8",
828
+ padding: "px-3",
829
+ size: "text-sm",
830
+ font: "font-medium",
831
+ rounded: "rounded-md",
832
+ shadow: ""
833
+ }
834
+ }
835
+ };
836
+ const modal = {
837
+ wrapper: "relative z-50",
838
+ inner: "fixed inset-0 overflow-y-auto",
839
+ container: "flex min-h-full items-end sm:items-center justify-center text-center",
840
+ padding: "p-4 sm:p-0",
841
+ margin: "sm:my-8",
842
+ base: "relative text-left rtl:text-right overflow-hidden w-full flex flex-col",
843
+ overlay: {
844
+ base: "fixed inset-0 transition-opacity",
845
+ background: "bg-gray-200/75 dark:bg-gray-800/75",
846
+ // Syntax for `<TransitionRoot>` component https://headlessui.com/vue/transition#basic-example
847
+ transition: {
848
+ enter: "ease-out duration-300",
849
+ enterFrom: "opacity-0",
850
+ enterTo: "opacity-100",
851
+ leave: "ease-in duration-200",
852
+ leaveFrom: "opacity-100",
853
+ leaveTo: "opacity-0"
854
+ }
855
+ },
856
+ background: "bg-white dark:bg-gray-900",
857
+ ring: "",
858
+ rounded: "rounded-lg",
859
+ shadow: "shadow-xl",
860
+ width: "sm:max-w-lg",
861
+ height: "",
862
+ // Syntax for `<TransitionRoot>` component https://headlessui.com/vue/transition#basic-example
863
+ transition: {
864
+ enter: "ease-out duration-300",
865
+ enterFrom: "opacity-0 translate-y-4 sm:translate-y-0 sm:scale-95",
866
+ enterTo: "opacity-100 translate-y-0 sm:scale-100",
867
+ leave: "ease-in duration-200",
868
+ leaveFrom: "opacity-100 translate-y-0 sm:scale-100",
869
+ leaveTo: "opacity-0 translate-y-4 sm:translate-y-0 sm:scale-95"
870
+ }
871
+ };
872
+ const slideover = {
873
+ wrapper: "fixed inset-0 flex z-50",
874
+ overlay: {
875
+ base: "fixed inset-0 transition-opacity",
876
+ background: "bg-gray-200/75 dark:bg-gray-800/75",
877
+ // Syntax for `<TransitionRoot>` component https://headlessui.com/vue/transition#basic-example
878
+ transition: {
879
+ enter: "ease-in-out duration-500",
880
+ enterFrom: "opacity-0",
881
+ enterTo: "opacity-100",
882
+ leave: "ease-in-out duration-500",
883
+ leaveFrom: "opacity-100",
884
+ leaveTo: "opacity-0"
885
+ }
886
+ },
887
+ base: "relative flex-1 flex flex-col w-full focus:outline-none",
888
+ background: "bg-white dark:bg-gray-900",
889
+ ring: "",
890
+ rounded: "",
891
+ padding: "",
892
+ shadow: "shadow-xl",
893
+ width: "w-screen max-w-md",
894
+ // Syntax for `<TransitionRoot>` component https://headlessui.com/vue/transition#basic-example
895
+ transition: {
896
+ enter: "transform transition ease-in-out duration-300",
897
+ leave: "transform transition ease-in-out duration-200"
898
+ }
899
+ };
900
+ const tooltip = {
901
+ wrapper: "relative inline-flex",
902
+ container: "z-20",
903
+ width: "max-w-xs",
904
+ background: "bg-white dark:bg-gray-900",
905
+ color: "text-gray-900 dark:text-white",
906
+ shadow: "shadow",
907
+ rounded: "rounded",
908
+ ring: "ring-1 ring-gray-200 dark:ring-gray-800",
909
+ base: "[@media(pointer:coarse)]:hidden h-6 px-2 py-1 text-xs font-normal truncate",
910
+ shortcuts: "hidden md:inline-flex flex-shrink-0 gap-0.5",
911
+ // Syntax for `<Transition>` component https://vuejs.org/guide/built-ins/transition.html#css-based-transitions
912
+ transition: {
913
+ enterActiveClass: "transition ease-out duration-200",
914
+ enterFromClass: "opacity-0 translate-y-1",
915
+ enterToClass: "opacity-100 translate-y-0",
916
+ leaveActiveClass: "transition ease-in duration-150",
917
+ leaveFromClass: "opacity-100 translate-y-0",
918
+ leaveToClass: "opacity-0 translate-y-1"
919
+ },
920
+ popper: {
921
+ strategy: "fixed"
922
+ }
923
+ };
924
+ const popover = {
925
+ wrapper: "relative",
926
+ container: "z-20",
927
+ width: "",
928
+ background: "bg-white dark:bg-gray-900",
929
+ shadow: "shadow-lg",
930
+ rounded: "rounded-md",
931
+ ring: "ring-1 ring-gray-200 dark:ring-gray-800",
932
+ base: "overflow-hidden focus:outline-none",
933
+ // Syntax for `<Transition>` component https://vuejs.org/guide/built-ins/transition.html#css-based-transitions
934
+ transition: {
935
+ enterActiveClass: "transition ease-out duration-200",
936
+ enterFromClass: "opacity-0 translate-y-1",
937
+ enterToClass: "opacity-100 translate-y-0",
938
+ leaveActiveClass: "transition ease-in duration-150",
939
+ leaveFromClass: "opacity-100 translate-y-0",
940
+ leaveToClass: "opacity-0 translate-y-1"
941
+ },
942
+ popper: {
943
+ strategy: "fixed"
944
+ }
945
+ };
946
+ const contextMenu = {
947
+ wrapper: "relative",
948
+ container: "z-20",
949
+ width: "",
950
+ background: "bg-white dark:bg-gray-900",
951
+ shadow: "shadow-lg",
952
+ rounded: "rounded-md",
953
+ ring: "ring-1 ring-gray-200 dark:ring-gray-800",
954
+ base: "overflow-hidden focus:outline-none",
955
+ // Syntax for `<Transition>` component https://vuejs.org/guide/built-ins/transition.html#css-based-transitions
956
+ transition: {
957
+ enterActiveClass: "transition ease-out duration-200",
958
+ enterFromClass: "opacity-0 translate-y-1",
959
+ enterToClass: "opacity-100 translate-y-0",
960
+ leaveActiveClass: "transition ease-in duration-150",
961
+ leaveFromClass: "opacity-100 translate-y-0",
962
+ leaveToClass: "opacity-0 translate-y-1"
963
+ },
964
+ popper: {
965
+ placement: "bottom-start",
966
+ scroll: false
967
+ }
968
+ };
969
+ const notification = {
970
+ wrapper: "w-full pointer-events-auto",
971
+ container: "relative overflow-hidden",
972
+ title: "text-sm font-medium text-gray-900 dark:text-white",
973
+ description: "mt-1 text-sm leading-4 text-gray-500 dark:text-gray-400",
974
+ background: "bg-white dark:bg-gray-900",
975
+ shadow: "shadow-lg",
976
+ rounded: "rounded-lg",
977
+ padding: "p-4",
978
+ ring: "ring-1 ring-gray-200 dark:ring-gray-800",
979
+ icon: {
980
+ base: "flex-shrink-0 w-5 h-5",
981
+ color: "text-{color}-500 dark:text-{color}-400"
982
+ },
983
+ avatar: {
984
+ base: "flex-shrink-0 self-center",
985
+ size: "md"
986
+ },
987
+ progress: {
988
+ base: "absolute bottom-0 end-0 start-0 h-1",
989
+ background: "bg-{color}-500 dark:bg-{color}-400"
990
+ },
991
+ // Syntax for `<Transition>` component https://vuejs.org/guide/built-ins/transition.html#css-based-transitions
992
+ transition: {
993
+ enterActiveClass: "transform ease-out duration-300 transition",
994
+ enterFromClass: "translate-y-2 opacity-0 sm:translate-y-0 sm:translate-x-2",
995
+ enterToClass: "translate-y-0 opacity-100 sm:translate-x-0",
996
+ leaveActiveClass: "transition ease-in duration-100",
997
+ leaveFromClass: "opacity-100",
998
+ leaveToClass: "opacity-0"
999
+ },
1000
+ default: {
1001
+ color: "primary",
1002
+ icon: null,
1003
+ closeButton: {
1004
+ icon: "i-heroicons-x-mark-20-solid",
1005
+ color: "gray",
1006
+ variant: "link",
1007
+ padded: false
1008
+ },
1009
+ actionButton: {
1010
+ size: "xs",
1011
+ color: "white"
1012
+ }
1013
+ }
1014
+ };
1015
+ const notifications = {
1016
+ wrapper: "fixed flex flex-col justify-end z-[55]",
1017
+ position: "bottom-0 end-0",
1018
+ width: "w-full sm:w-96",
1019
+ container: "px-4 sm:px-6 py-6 space-y-3 overflow-y-auto"
1020
+ };
1021
+ export default {
1022
+ ui: {
1023
+ table,
1024
+ avatar,
1025
+ avatarGroup,
1026
+ badge,
1027
+ button,
1028
+ buttonGroup,
1029
+ dropdown,
1030
+ kbd,
1031
+ accordion,
1032
+ alert,
1033
+ input,
1034
+ formGroup,
1035
+ textarea,
1036
+ select,
1037
+ selectMenu,
1038
+ checkbox,
1039
+ radio,
1040
+ toggle,
1041
+ range,
1042
+ card,
1043
+ container,
1044
+ skeleton,
1045
+ verticalNavigation,
1046
+ commandPalette,
1047
+ pagination,
1048
+ tabs,
1049
+ modal,
1050
+ slideover,
1051
+ popover,
1052
+ tooltip,
1053
+ contextMenu,
1054
+ notification,
1055
+ notifications
1056
+ }
1057
+ };