@nuxt/ui 2.18.4 → 3.0.0-alpha.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 (394) hide show
  1. package/README.md +19 -2
  2. package/cli/commands/init.mjs +83 -0
  3. package/cli/index.mjs +15 -0
  4. package/cli/node_modules/.ignored/citty/LICENSE +36 -0
  5. package/cli/node_modules/.ignored/citty/README.md +134 -0
  6. package/cli/node_modules/.ignored/citty/dist/index.cjs +475 -0
  7. package/cli/node_modules/.ignored/citty/dist/index.d.cts +80 -0
  8. package/cli/node_modules/.ignored/citty/dist/index.d.mts +80 -0
  9. package/cli/node_modules/.ignored/citty/dist/index.d.ts +80 -0
  10. package/cli/node_modules/.ignored/citty/dist/index.mjs +463 -0
  11. package/cli/node_modules/.ignored/citty/package.json +49 -0
  12. package/cli/node_modules/.ignored/consola/LICENSE +47 -0
  13. package/cli/node_modules/.ignored/consola/README.md +318 -0
  14. package/cli/node_modules/.ignored/consola/core.d.ts +1 -0
  15. package/cli/node_modules/.ignored/consola/dist/basic.cjs +32 -0
  16. package/cli/node_modules/.ignored/consola/dist/basic.d.ts +9 -0
  17. package/cli/node_modules/.ignored/consola/dist/basic.mjs +24 -0
  18. package/cli/node_modules/.ignored/consola/dist/browser.cjs +80 -0
  19. package/cli/node_modules/.ignored/consola/dist/browser.d.ts +7 -0
  20. package/cli/node_modules/.ignored/consola/dist/browser.mjs +72 -0
  21. package/cli/node_modules/.ignored/consola/dist/chunks/prompt.cjs +436 -0
  22. package/cli/node_modules/.ignored/consola/dist/chunks/prompt.mjs +429 -0
  23. package/cli/node_modules/.ignored/consola/dist/core.cjs +415 -0
  24. package/cli/node_modules/.ignored/consola/dist/core.d.ts +124 -0
  25. package/cli/node_modules/.ignored/consola/dist/core.mjs +410 -0
  26. package/cli/node_modules/.ignored/consola/dist/index.cjs +21 -0
  27. package/cli/node_modules/.ignored/consola/dist/index.d.ts +9 -0
  28. package/cli/node_modules/.ignored/consola/dist/index.mjs +8 -0
  29. package/cli/node_modules/.ignored/consola/dist/shared/consola.06ad8a64.mjs +62 -0
  30. package/cli/node_modules/.ignored/consola/dist/shared/consola.36c0034f.mjs +636 -0
  31. package/cli/node_modules/.ignored/consola/dist/shared/consola.4bbae468.cjs +645 -0
  32. package/cli/node_modules/.ignored/consola/dist/shared/consola.deac7d5a.cjs +65 -0
  33. package/cli/node_modules/.ignored/consola/dist/utils.cjs +308 -0
  34. package/cli/node_modules/.ignored/consola/dist/utils.d.ts +169 -0
  35. package/cli/node_modules/.ignored/consola/dist/utils.mjs +284 -0
  36. package/cli/node_modules/.ignored/consola/lib/index.cjs +9 -0
  37. package/cli/node_modules/.ignored/consola/package.json +101 -0
  38. package/cli/node_modules/.ignored/consola/utils.d.ts +1 -0
  39. package/cli/node_modules/.ignored/pathe/LICENSE +44 -0
  40. package/cli/node_modules/.ignored/pathe/README.md +69 -0
  41. package/cli/node_modules/.ignored/pathe/dist/index.cjs +23 -0
  42. package/cli/node_modules/.ignored/pathe/dist/index.d.cts +36 -0
  43. package/cli/node_modules/.ignored/pathe/dist/index.d.mts +36 -0
  44. package/cli/node_modules/.ignored/pathe/dist/index.d.ts +36 -0
  45. package/cli/node_modules/.ignored/pathe/dist/index.mjs +1 -0
  46. package/cli/node_modules/.ignored/pathe/dist/shared/pathe.1f0a373c.cjs +238 -0
  47. package/cli/node_modules/.ignored/pathe/dist/shared/pathe.ff20891b.mjs +221 -0
  48. package/cli/node_modules/.ignored/pathe/dist/utils.cjs +58 -0
  49. package/cli/node_modules/.ignored/pathe/dist/utils.d.cts +5 -0
  50. package/cli/node_modules/.ignored/pathe/dist/utils.d.mts +5 -0
  51. package/cli/node_modules/.ignored/pathe/dist/utils.d.ts +5 -0
  52. package/cli/node_modules/.ignored/pathe/dist/utils.mjs +54 -0
  53. package/cli/node_modules/.ignored/pathe/package.json +48 -0
  54. package/cli/node_modules/.ignored/pathe/utils.d.ts +1 -0
  55. package/cli/node_modules/.ignored/scule/LICENSE +21 -0
  56. package/cli/node_modules/.ignored/scule/README.md +149 -0
  57. package/cli/node_modules/.ignored/scule/dist/index.cjs +92 -0
  58. package/cli/node_modules/.ignored/scule/dist/index.d.cts +57 -0
  59. package/cli/node_modules/.ignored/scule/dist/index.d.mts +57 -0
  60. package/cli/node_modules/.ignored/scule/dist/index.d.ts +57 -0
  61. package/cli/node_modules/.ignored/scule/dist/index.mjs +80 -0
  62. package/cli/node_modules/.ignored/scule/package.json +43 -0
  63. package/cli/node_modules/.package-lock.json +33 -0
  64. package/cli/package.json +13 -0
  65. package/cli/templates.mjs +171 -0
  66. package/cli/utils.mjs +17 -0
  67. package/dist/module.d.mts +10 -26
  68. package/dist/module.d.ts +10 -26
  69. package/dist/module.json +4 -4
  70. package/dist/module.mjs +2574 -154
  71. package/dist/runtime/components/Accordion.vue +110 -0
  72. package/dist/runtime/components/Alert.vue +130 -0
  73. package/dist/runtime/components/App.vue +42 -0
  74. package/dist/runtime/components/Avatar.vue +69 -0
  75. package/dist/runtime/components/AvatarGroup.vue +98 -0
  76. package/dist/runtime/components/Badge.vue +46 -0
  77. package/dist/runtime/components/Breadcrumb.vue +98 -0
  78. package/dist/runtime/components/Button.vue +82 -0
  79. package/dist/runtime/components/ButtonGroup.vue +53 -0
  80. package/dist/runtime/components/Card.vue +52 -0
  81. package/dist/runtime/components/Checkbox.vue +128 -0
  82. package/dist/runtime/components/Chip.vue +76 -0
  83. package/dist/runtime/components/Collapsible.vue +54 -0
  84. package/dist/runtime/components/CommandPalette.vue +303 -0
  85. package/dist/runtime/components/Container.vue +36 -0
  86. package/dist/runtime/components/ContextMenu.vue +103 -0
  87. package/dist/runtime/components/ContextMenuContent.vue +122 -0
  88. package/dist/runtime/components/Drawer.vue +115 -0
  89. package/dist/runtime/components/DropdownMenu.vue +115 -0
  90. package/dist/runtime/components/DropdownMenuContent.vue +129 -0
  91. package/dist/runtime/components/Form.vue +227 -0
  92. package/dist/runtime/components/FormField.vue +107 -0
  93. package/dist/runtime/components/Icon.vue +26 -0
  94. package/dist/runtime/components/Input.vue +180 -0
  95. package/dist/runtime/components/InputMenu.vue +371 -0
  96. package/dist/runtime/components/Kbd.vue +49 -0
  97. package/dist/runtime/components/Link.vue +147 -0
  98. package/dist/runtime/components/LinkBase.vue +60 -0
  99. package/dist/runtime/components/Modal.vue +163 -0
  100. package/dist/runtime/components/ModalProvider.vue +12 -0
  101. package/dist/runtime/components/NavigationMenu.vue +195 -0
  102. package/dist/runtime/components/Pagination.vue +173 -0
  103. package/dist/runtime/components/Popover.vue +88 -0
  104. package/dist/runtime/components/Progress.vue +164 -0
  105. package/dist/runtime/components/RadioGroup.vue +159 -0
  106. package/dist/runtime/components/Select.vue +230 -0
  107. package/dist/runtime/components/SelectMenu.vue +306 -0
  108. package/dist/runtime/components/Separator.vue +82 -0
  109. package/dist/runtime/components/Skeleton.vue +31 -0
  110. package/dist/runtime/components/Slideover.vue +162 -0
  111. package/dist/runtime/components/SlideoverProvider.vue +12 -0
  112. package/dist/runtime/components/Slider.vue +113 -0
  113. package/dist/runtime/components/Switch.vue +124 -0
  114. package/dist/runtime/components/Tabs.vue +114 -0
  115. package/dist/runtime/components/Textarea.vue +189 -0
  116. package/dist/runtime/components/Toast.vue +161 -0
  117. package/dist/runtime/components/Toaster.vue +130 -0
  118. package/dist/runtime/components/Tooltip.vue +88 -0
  119. package/dist/runtime/composables/defineShortcuts.d.ts +7 -5
  120. package/dist/runtime/composables/defineShortcuts.js +94 -65
  121. package/dist/runtime/composables/useAvatarGroup.d.ts +10 -0
  122. package/dist/runtime/composables/useAvatarGroup.js +10 -0
  123. package/dist/runtime/composables/useButtonGroup.d.ts +12 -17
  124. package/dist/runtime/composables/useButtonGroup.js +6 -56
  125. package/dist/runtime/composables/useComponentIcons.d.ts +26 -0
  126. package/dist/runtime/composables/useComponentIcons.js +26 -0
  127. package/dist/runtime/composables/useFormField.d.ts +34 -0
  128. package/dist/runtime/composables/useFormField.js +54 -0
  129. package/dist/runtime/composables/useKbd.d.ts +28 -0
  130. package/dist/runtime/composables/useKbd.js +46 -0
  131. package/dist/runtime/composables/useModal.d.ts +8 -4
  132. package/dist/runtime/composables/useModal.js +1 -0
  133. package/dist/runtime/composables/useSlideover.d.ts +9 -5
  134. package/dist/runtime/composables/useSlideover.js +3 -2
  135. package/dist/runtime/composables/useToast.d.ts +9 -17
  136. package/dist/runtime/composables/useToast.js +27 -13
  137. package/dist/runtime/index.css +1 -0
  138. package/dist/runtime/plugins/colors.js +9 -17
  139. package/dist/runtime/plugins/{slideovers.js → slideover.js} +3 -3
  140. package/dist/runtime/types/app.config.d.ts +6 -0
  141. package/dist/runtime/types/component.d.ts +17 -14
  142. package/dist/runtime/types/component.js +0 -0
  143. package/dist/runtime/types/form.d.ts +62 -32
  144. package/dist/runtime/types/form.js +12 -0
  145. package/dist/runtime/types/index.d.ts +41 -30
  146. package/dist/runtime/types/index.js +42 -31
  147. package/dist/runtime/types/utils.d.ts +13 -32
  148. package/dist/runtime/types/utils.js +0 -0
  149. package/dist/runtime/utils/form.d.ts +15 -0
  150. package/dist/runtime/utils/form.js +66 -0
  151. package/dist/runtime/utils/fuse.d.ts +4 -0
  152. package/dist/runtime/utils/fuse.js +63 -0
  153. package/dist/runtime/utils/index.d.ts +4 -10
  154. package/dist/runtime/utils/index.js +40 -60
  155. package/dist/runtime/utils/link.d.ts +26 -71
  156. package/dist/runtime/utils/link.js +4 -124
  157. package/package.json +50 -49
  158. package/dist/runtime/components/data/Table.vue +0 -355
  159. package/dist/runtime/components/data/Table.vue.d.ts +0 -439
  160. package/dist/runtime/components/elements/Accordion.vue +0 -185
  161. package/dist/runtime/components/elements/Accordion.vue.d.ts +0 -223
  162. package/dist/runtime/components/elements/Alert.vue +0 -139
  163. package/dist/runtime/components/elements/Alert.vue.d.ts +0 -194
  164. package/dist/runtime/components/elements/Avatar.vue +0 -160
  165. package/dist/runtime/components/elements/Avatar.vue.d.ts +0 -255
  166. package/dist/runtime/components/elements/AvatarGroup.d.ts +0 -56
  167. package/dist/runtime/components/elements/AvatarGroup.js +0 -58
  168. package/dist/runtime/components/elements/Badge.vue +0 -75
  169. package/dist/runtime/components/elements/Badge.vue.d.ts +0 -109
  170. package/dist/runtime/components/elements/Button.vue +0 -193
  171. package/dist/runtime/components/elements/Button.vue.d.ts +0 -504
  172. package/dist/runtime/components/elements/ButtonGroup.d.ts +0 -153
  173. package/dist/runtime/components/elements/ButtonGroup.js +0 -51
  174. package/dist/runtime/components/elements/Carousel.vue +0 -165
  175. package/dist/runtime/components/elements/Carousel.vue.d.ts +0 -159
  176. package/dist/runtime/components/elements/Chip.vue +0 -85
  177. package/dist/runtime/components/elements/Chip.vue.d.ts +0 -162
  178. package/dist/runtime/components/elements/Dropdown.vue +0 -254
  179. package/dist/runtime/components/elements/Dropdown.vue.d.ts +0 -254
  180. package/dist/runtime/components/elements/Icon.vue +0 -30
  181. package/dist/runtime/components/elements/Icon.vue.d.ts +0 -47
  182. package/dist/runtime/components/elements/Kbd.vue +0 -59
  183. package/dist/runtime/components/elements/Kbd.vue.d.ts +0 -86
  184. package/dist/runtime/components/elements/Link.vue +0 -95
  185. package/dist/runtime/components/elements/Link.vue.d.ts +0 -225
  186. package/dist/runtime/components/elements/Meter.vue +0 -170
  187. package/dist/runtime/components/elements/Meter.vue.d.ts +0 -279
  188. package/dist/runtime/components/elements/MeterGroup.d.ts +0 -135
  189. package/dist/runtime/components/elements/MeterGroup.js +0 -159
  190. package/dist/runtime/components/elements/Progress.vue +0 -203
  191. package/dist/runtime/components/elements/Progress.vue.d.ts +0 -280
  192. package/dist/runtime/components/forms/Checkbox.vue +0 -143
  193. package/dist/runtime/components/forms/Checkbox.vue.d.ts +0 -179
  194. package/dist/runtime/components/forms/Form.vue +0 -219
  195. package/dist/runtime/components/forms/Form.vue.d.ts +0 -53
  196. package/dist/runtime/components/forms/FormGroup.vue +0 -128
  197. package/dist/runtime/components/forms/FormGroup.vue.d.ts +0 -169
  198. package/dist/runtime/components/forms/Input.vue +0 -300
  199. package/dist/runtime/components/forms/Input.vue.d.ts +0 -482
  200. package/dist/runtime/components/forms/InputMenu.vue +0 -439
  201. package/dist/runtime/components/forms/InputMenu.vue.d.ts +0 -700
  202. package/dist/runtime/components/forms/Radio.vue +0 -140
  203. package/dist/runtime/components/forms/Radio.vue.d.ts +0 -168
  204. package/dist/runtime/components/forms/RadioGroup.vue +0 -145
  205. package/dist/runtime/components/forms/RadioGroup.vue.d.ts +0 -176
  206. package/dist/runtime/components/forms/Range.vue +0 -173
  207. package/dist/runtime/components/forms/Range.vue.d.ts +0 -268
  208. package/dist/runtime/components/forms/Select.vue +0 -322
  209. package/dist/runtime/components/forms/Select.vue.d.ts +0 -471
  210. package/dist/runtime/components/forms/SelectMenu.vue +0 -546
  211. package/dist/runtime/components/forms/SelectMenu.vue.d.ts +0 -754
  212. package/dist/runtime/components/forms/Textarea.vue +0 -231
  213. package/dist/runtime/components/forms/Textarea.vue.d.ts +0 -436
  214. package/dist/runtime/components/forms/Toggle.vue +0 -171
  215. package/dist/runtime/components/forms/Toggle.vue.d.ts +0 -262
  216. package/dist/runtime/components/layout/Card.vue +0 -63
  217. package/dist/runtime/components/layout/Card.vue.d.ts +0 -89
  218. package/dist/runtime/components/layout/Container.vue +0 -48
  219. package/dist/runtime/components/layout/Container.vue.d.ts +0 -53
  220. package/dist/runtime/components/layout/Divider.vue +0 -108
  221. package/dist/runtime/components/layout/Divider.vue.d.ts +0 -198
  222. package/dist/runtime/components/layout/Skeleton.vue +0 -46
  223. package/dist/runtime/components/layout/Skeleton.vue.d.ts +0 -53
  224. package/dist/runtime/components/navigation/Breadcrumb.vue +0 -82
  225. package/dist/runtime/components/navigation/Breadcrumb.vue.d.ts +0 -95
  226. package/dist/runtime/components/navigation/CommandPalette.vue +0 -345
  227. package/dist/runtime/components/navigation/CommandPalette.vue.d.ts +0 -390
  228. package/dist/runtime/components/navigation/CommandPaletteGroup.vue +0 -152
  229. package/dist/runtime/components/navigation/CommandPaletteGroup.vue.d.ts +0 -60
  230. package/dist/runtime/components/navigation/HorizontalNavigation.vue +0 -102
  231. package/dist/runtime/components/navigation/HorizontalNavigation.vue.d.ts +0 -99
  232. package/dist/runtime/components/navigation/Pagination.vue +0 -270
  233. package/dist/runtime/components/navigation/Pagination.vue.d.ts +0 -260
  234. package/dist/runtime/components/navigation/Tabs.vue +0 -163
  235. package/dist/runtime/components/navigation/Tabs.vue.d.ts +0 -165
  236. package/dist/runtime/components/navigation/VerticalNavigation.vue +0 -105
  237. package/dist/runtime/components/navigation/VerticalNavigation.vue.d.ts +0 -113
  238. package/dist/runtime/components/overlays/ContextMenu.vue +0 -85
  239. package/dist/runtime/components/overlays/ContextMenu.vue.d.ts +0 -126
  240. package/dist/runtime/components/overlays/Modal.vue +0 -122
  241. package/dist/runtime/components/overlays/Modal.vue.d.ts +0 -166
  242. package/dist/runtime/components/overlays/Modals.client.vue +0 -18
  243. package/dist/runtime/components/overlays/Notification.vue +0 -212
  244. package/dist/runtime/components/overlays/Notification.vue.d.ts +0 -235
  245. package/dist/runtime/components/overlays/Notifications.vue +0 -69
  246. package/dist/runtime/components/overlays/Notifications.vue.d.ts +0 -66
  247. package/dist/runtime/components/overlays/Popover.vue +0 -213
  248. package/dist/runtime/components/overlays/Popover.vue.d.ts +0 -220
  249. package/dist/runtime/components/overlays/Slideover.vue +0 -152
  250. package/dist/runtime/components/overlays/Slideover.vue.d.ts +0 -167
  251. package/dist/runtime/components/overlays/Slideovers.client.vue +0 -18
  252. package/dist/runtime/components/overlays/Tooltip.vue +0 -127
  253. package/dist/runtime/components/overlays/Tooltip.vue.d.ts +0 -165
  254. package/dist/runtime/composables/useCarouselScroll.d.ts +0 -2
  255. package/dist/runtime/composables/useCarouselScroll.js +0 -37
  256. package/dist/runtime/composables/useCopyToClipboard.d.ts +0 -10
  257. package/dist/runtime/composables/useCopyToClipboard.js +0 -26
  258. package/dist/runtime/composables/useFormGroup.d.ts +0 -18
  259. package/dist/runtime/composables/useFormGroup.js +0 -45
  260. package/dist/runtime/composables/usePopper.d.ts +0 -268
  261. package/dist/runtime/composables/usePopper.js +0 -94
  262. package/dist/runtime/composables/useShortcuts.d.ts +0 -12
  263. package/dist/runtime/composables/useShortcuts.js +0 -26
  264. package/dist/runtime/composables/useTimer.d.ts +0 -8
  265. package/dist/runtime/composables/useTimer.js +0 -51
  266. package/dist/runtime/composables/useUI.d.ts +0 -10
  267. package/dist/runtime/composables/useUI.js +0 -24
  268. package/dist/runtime/types/accordion.d.ts +0 -9
  269. package/dist/runtime/types/alert.d.ts +0 -12
  270. package/dist/runtime/types/avatar.d.ts +0 -17
  271. package/dist/runtime/types/badge.d.ts +0 -15
  272. package/dist/runtime/types/breadcrumb.d.ts +0 -10
  273. package/dist/runtime/types/button.d.ts +0 -31
  274. package/dist/runtime/types/chip.d.ts +0 -15
  275. package/dist/runtime/types/clipboard.d.ts +0 -3
  276. package/dist/runtime/types/command-palette.d.ts +0 -29
  277. package/dist/runtime/types/divider.d.ts +0 -3
  278. package/dist/runtime/types/dropdown.d.ts +0 -15
  279. package/dist/runtime/types/form-group.d.ts +0 -5
  280. package/dist/runtime/types/horizontal-navigation.d.ts +0 -13
  281. package/dist/runtime/types/input.d.ts +0 -8
  282. package/dist/runtime/types/kbd.d.ts +0 -5
  283. package/dist/runtime/types/link.d.ts +0 -12
  284. package/dist/runtime/types/meter.d.ts +0 -5
  285. package/dist/runtime/types/modal.d.ts +0 -18
  286. package/dist/runtime/types/notification.d.ts +0 -24
  287. package/dist/runtime/types/popper.d.ts +0 -17
  288. package/dist/runtime/types/progress.d.ts +0 -6
  289. package/dist/runtime/types/range.d.ts +0 -7
  290. package/dist/runtime/types/select.d.ts +0 -8
  291. package/dist/runtime/types/slideover.d.ts +0 -16
  292. package/dist/runtime/types/tabs.d.ts +0 -8
  293. package/dist/runtime/types/textarea.d.ts +0 -8
  294. package/dist/runtime/types/toggle.d.ts +0 -7
  295. package/dist/runtime/types/tooltip.d.ts +0 -7
  296. package/dist/runtime/types/vertical-navigation.d.ts +0 -13
  297. package/dist/runtime/ui.config/data/table.d.ts +0 -81
  298. package/dist/runtime/ui.config/data/table.js +0 -80
  299. package/dist/runtime/ui.config/elements/accordion.d.ts +0 -23
  300. package/dist/runtime/ui.config/elements/accordion.js +0 -22
  301. package/dist/runtime/ui.config/elements/alert.d.ts +0 -41
  302. package/dist/runtime/ui.config/elements/alert.js +0 -40
  303. package/dist/runtime/ui.config/elements/avatar.d.ts +0 -60
  304. package/dist/runtime/ui.config/elements/avatar.js +0 -59
  305. package/dist/runtime/ui.config/elements/avatarGroup.d.ts +0 -6
  306. package/dist/runtime/ui.config/elements/avatarGroup.js +0 -5
  307. package/dist/runtime/ui.config/elements/badge.d.ts +0 -34
  308. package/dist/runtime/ui.config/elements/badge.js +0 -33
  309. package/dist/runtime/ui.config/elements/button.d.ts +0 -81
  310. package/dist/runtime/ui.config/elements/button.js +0 -80
  311. package/dist/runtime/ui.config/elements/buttonGroup.d.ts +0 -101
  312. package/dist/runtime/ui.config/elements/buttonGroup.js +0 -19
  313. package/dist/runtime/ui.config/elements/carousel.d.ts +0 -27
  314. package/dist/runtime/ui.config/elements/carousel.js +0 -26
  315. package/dist/runtime/ui.config/elements/chip.d.ts +0 -35
  316. package/dist/runtime/ui.config/elements/chip.js +0 -34
  317. package/dist/runtime/ui.config/elements/dropdown.d.ts +0 -59
  318. package/dist/runtime/ui.config/elements/dropdown.js +0 -57
  319. package/dist/runtime/ui.config/elements/kbd.d.ts +0 -17
  320. package/dist/runtime/ui.config/elements/kbd.js +0 -16
  321. package/dist/runtime/ui.config/elements/meter.d.ts +0 -77
  322. package/dist/runtime/ui.config/elements/meter.js +0 -76
  323. package/dist/runtime/ui.config/elements/meterGroup.d.ts +0 -52
  324. package/dist/runtime/ui.config/elements/meterGroup.js +0 -24
  325. package/dist/runtime/ui.config/elements/progress.d.ts +0 -75
  326. package/dist/runtime/ui.config/elements/progress.js +0 -74
  327. package/dist/runtime/ui.config/forms/checkbox.d.ts +0 -19
  328. package/dist/runtime/ui.config/forms/checkbox.js +0 -18
  329. package/dist/runtime/ui.config/forms/formGroup.d.ts +0 -26
  330. package/dist/runtime/ui.config/forms/formGroup.js +0 -26
  331. package/dist/runtime/ui.config/forms/input.d.ts +0 -110
  332. package/dist/runtime/ui.config/forms/input.js +0 -109
  333. package/dist/runtime/ui.config/forms/inputMenu.d.ts +0 -64
  334. package/dist/runtime/ui.config/forms/inputMenu.js +0 -62
  335. package/dist/runtime/ui.config/forms/radio.d.ts +0 -18
  336. package/dist/runtime/ui.config/forms/radio.js +0 -17
  337. package/dist/runtime/ui.config/forms/radioGroup.d.ts +0 -9
  338. package/dist/runtime/ui.config/forms/radioGroup.js +0 -8
  339. package/dist/runtime/ui.config/forms/range.d.ts +0 -64
  340. package/dist/runtime/ui.config/forms/range.js +0 -63
  341. package/dist/runtime/ui.config/forms/select.d.ts +0 -111
  342. package/dist/runtime/ui.config/forms/select.js +0 -13
  343. package/dist/runtime/ui.config/forms/selectMenu.d.ts +0 -70
  344. package/dist/runtime/ui.config/forms/selectMenu.js +0 -32
  345. package/dist/runtime/ui.config/forms/textarea.d.ts +0 -109
  346. package/dist/runtime/ui.config/forms/textarea.js +0 -10
  347. package/dist/runtime/ui.config/forms/toggle.d.ts +0 -63
  348. package/dist/runtime/ui.config/forms/toggle.js +0 -62
  349. package/dist/runtime/ui.config/index.d.ts +0 -43
  350. package/dist/runtime/ui.config/index.js +0 -43
  351. package/dist/runtime/ui.config/layout/card.d.ts +0 -24
  352. package/dist/runtime/ui.config/layout/card.js +0 -23
  353. package/dist/runtime/ui.config/layout/container.d.ts +0 -6
  354. package/dist/runtime/ui.config/layout/container.js +0 -5
  355. package/dist/runtime/ui.config/layout/divider.d.ts +0 -52
  356. package/dist/runtime/ui.config/layout/divider.js +0 -51
  357. package/dist/runtime/ui.config/layout/skeleton.d.ts +0 -6
  358. package/dist/runtime/ui.config/layout/skeleton.js +0 -5
  359. package/dist/runtime/ui.config/navigation/breadcrumb.d.ts +0 -21
  360. package/dist/runtime/ui.config/navigation/breadcrumb.js +0 -20
  361. package/dist/runtime/ui.config/navigation/commandPalette.d.ts +0 -72
  362. package/dist/runtime/ui.config/navigation/commandPalette.js +0 -71
  363. package/dist/runtime/ui.config/navigation/horizontalNavigation.d.ts +0 -27
  364. package/dist/runtime/ui.config/navigation/horizontalNavigation.js +0 -26
  365. package/dist/runtime/ui.config/navigation/pagination.d.ts +0 -35
  366. package/dist/runtime/ui.config/navigation/pagination.js +0 -34
  367. package/dist/runtime/ui.config/navigation/tabs.d.ts +0 -35
  368. package/dist/runtime/ui.config/navigation/tabs.js +0 -34
  369. package/dist/runtime/ui.config/navigation/verticalNavigation.d.ts +0 -34
  370. package/dist/runtime/ui.config/navigation/verticalNavigation.js +0 -33
  371. package/dist/runtime/ui.config/overlays/contextMenu.d.ts +0 -31
  372. package/dist/runtime/ui.config/overlays/contextMenu.js +0 -25
  373. package/dist/runtime/ui.config/overlays/modal.d.ts +0 -36
  374. package/dist/runtime/ui.config/overlays/modal.js +0 -37
  375. package/dist/runtime/ui.config/overlays/notification.d.ts +0 -50
  376. package/dist/runtime/ui.config/overlays/notification.js +0 -50
  377. package/dist/runtime/ui.config/overlays/notifications.d.ts +0 -7
  378. package/dist/runtime/ui.config/overlays/notifications.js +0 -6
  379. package/dist/runtime/ui.config/overlays/popover.d.ts +0 -47
  380. package/dist/runtime/ui.config/overlays/popover.js +0 -41
  381. package/dist/runtime/ui.config/overlays/slideover.d.ts +0 -35
  382. package/dist/runtime/ui.config/overlays/slideover.js +0 -36
  383. package/dist/runtime/ui.config/overlays/tooltip.d.ts +0 -37
  384. package/dist/runtime/ui.config/overlays/tooltip.js +0 -34
  385. package/dist/runtime/ui.config/popper.d.ts +0 -8
  386. package/dist/runtime/ui.config/popper.js +0 -9
  387. package/dist/runtime/ui.css +0 -1
  388. package/dist/runtime/utils/colors.d.ts +0 -11
  389. package/dist/runtime/utils/colors.js +0 -307
  390. package/dist/runtime/utils/lodash.d.ts +0 -2
  391. package/dist/runtime/utils/lodash.js +0 -23
  392. package/dist/runtime/plugins/{modals.d.ts → modal.d.ts} +0 -0
  393. package/dist/runtime/plugins/{modals.js → modal.js} +1 -1
  394. /package/dist/runtime/plugins/{slideovers.d.ts → slideover.d.ts} +0 -0
@@ -0,0 +1,163 @@
1
+ <script lang="ts">
2
+ import { tv } from 'tailwind-variants'
3
+ import type { DialogRootProps, DialogRootEmits, DialogContentProps } from 'radix-vue'
4
+ import type { AppConfig } from '@nuxt/schema'
5
+ import _appConfig from '#build/app.config'
6
+ import theme from '#build/ui/modal'
7
+ import type { ButtonProps } from '../types'
8
+
9
+ const appConfig = _appConfig as AppConfig & { ui: { modal: Partial<typeof theme> } }
10
+
11
+ const modal = tv({ extend: tv(theme), ...(appConfig.ui?.modal || {}) })
12
+
13
+ export interface ModalProps extends DialogRootProps {
14
+ title?: string
15
+ description?: string
16
+ /** The content of the modal. */
17
+ content?: Omit<DialogContentProps, 'as' | 'asChild' | 'forceMount'>
18
+ /**
19
+ * Render an overlay behind the modal.
20
+ * @defaultValue true
21
+ */
22
+ overlay?: boolean
23
+ /**
24
+ * Animate the modal when opening or closing.
25
+ * @defaultValue true
26
+ */
27
+ transition?: boolean
28
+ /**
29
+ * When `true`, the modal will take up the full screen.
30
+ * @defaultValue false
31
+ */
32
+ fullscreen?: boolean
33
+ /**
34
+ * Render the modal in a portal.
35
+ * @defaultValue true
36
+ */
37
+ portal?: boolean
38
+ /**
39
+ * Display a close button to dismiss the modal.
40
+ * `{ size: 'md', color: 'gray', variant: 'ghost' }`{lang="ts-type"}
41
+ * @defaultValue true
42
+ */
43
+ close?: ButtonProps | boolean
44
+ /**
45
+ * The icon displayed in the close button.
46
+ * @defaultValue appConfig.ui.icons.close
47
+ */
48
+ closeIcon?: string
49
+ /**
50
+ * When `true`, the modal will not close when clicking outside.
51
+ * @defaultValue false
52
+ */
53
+ preventClose?: boolean
54
+ class?: any
55
+ ui?: Partial<typeof modal.slots>
56
+ }
57
+
58
+ export interface ModalEmits extends DialogRootEmits {}
59
+
60
+ export interface ModalSlots {
61
+ default(props: { open: boolean }): any
62
+ content(props?: {}): any
63
+ header(props?: {}): any
64
+ title(props?: {}): any
65
+ description(props?: {}): any
66
+ close(props: { ui: any }): any
67
+ body(props?: {}): any
68
+ footer(props?: {}): any
69
+ }
70
+ </script>
71
+
72
+ <script setup lang="ts">
73
+ import { computed, toRef } from 'vue'
74
+ import { DialogRoot, DialogTrigger, DialogPortal, DialogOverlay, DialogContent, DialogTitle, DialogDescription, DialogClose, useForwardPropsEmits } from 'radix-vue'
75
+ import { reactivePick } from '@vueuse/core'
76
+ import { useAppConfig } from '#imports'
77
+ import UButton from './Button.vue'
78
+
79
+ const props = withDefaults(defineProps<ModalProps>(), {
80
+ close: true,
81
+ portal: true,
82
+ overlay: true,
83
+ transition: true,
84
+ modal: true
85
+ })
86
+ const emits = defineEmits<ModalEmits>()
87
+ const slots = defineSlots<ModalSlots>()
88
+
89
+ const rootProps = useForwardPropsEmits(reactivePick(props, 'open', 'defaultOpen', 'modal'), emits)
90
+ const contentProps = toRef(() => props.content)
91
+ const contentEvents = computed(() => {
92
+ if (props.preventClose) {
93
+ return {
94
+ pointerDownOutside: (e: Event) => e.preventDefault(),
95
+ interactOutside: (e: Event) => e.preventDefault()
96
+ }
97
+ }
98
+
99
+ return {}
100
+ })
101
+
102
+ const appConfig = useAppConfig()
103
+
104
+ const ui = computed(() => modal({
105
+ transition: props.transition,
106
+ fullscreen: props.fullscreen
107
+ }))
108
+ </script>
109
+
110
+ <template>
111
+ <DialogRoot v-slot="{ open }" v-bind="rootProps">
112
+ <DialogTrigger v-if="!!slots.default" as-child>
113
+ <slot :open="open" />
114
+ </DialogTrigger>
115
+
116
+ <DialogPortal :disabled="!portal">
117
+ <DialogOverlay v-if="overlay" :class="ui.overlay({ class: props.ui?.overlay })" />
118
+
119
+ <DialogContent :class="ui.content({ class: [props.class, props.ui?.content] })" v-bind="contentProps" v-on="contentEvents">
120
+ <slot name="content">
121
+ <div v-if="!!slots.header || (title || !!slots.title) || (description || !!slots.description) || (close || !!slots.close)" :class="ui.header({ class: props.ui?.header })">
122
+ <slot name="header">
123
+ <DialogTitle v-if="title || !!slots.title" :class="ui.title({ class: props.ui?.title })">
124
+ <slot name="title">
125
+ {{ title }}
126
+ </slot>
127
+ </DialogTitle>
128
+
129
+ <DialogDescription v-if="description || !!slots.description" :class="ui.description({ class: props.ui?.description })">
130
+ <slot name="description">
131
+ {{ description }}
132
+ </slot>
133
+ </DialogDescription>
134
+
135
+ <DialogClose as-child>
136
+ <slot name="close" :ui="ui">
137
+ <UButton
138
+ v-if="close"
139
+ :icon="closeIcon || appConfig.ui.icons.close"
140
+ size="md"
141
+ color="gray"
142
+ variant="ghost"
143
+ aria-label="Close"
144
+ v-bind="typeof close === 'object' ? close : undefined"
145
+ :class="ui.close({ class: props.ui?.close })"
146
+ />
147
+ </slot>
148
+ </DialogClose>
149
+ </slot>
150
+ </div>
151
+
152
+ <div v-if="!!slots.body" :class="ui.body({ class: props.ui?.body })">
153
+ <slot name="body" />
154
+ </div>
155
+
156
+ <div v-if="!!slots.footer" :class="ui.footer({ class: props.ui?.footer })">
157
+ <slot name="footer" />
158
+ </div>
159
+ </slot>
160
+ </DialogContent>
161
+ </DialogPortal>
162
+ </DialogRoot>
163
+ </template>
@@ -0,0 +1,12 @@
1
+ <script setup lang="ts">
2
+ import { inject } from 'vue'
3
+ import { useModal, modalInjectionKey } from '../composables/useModal'
4
+
5
+ const modalState = inject(modalInjectionKey)
6
+
7
+ const { isOpen } = useModal()
8
+ </script>
9
+
10
+ <template>
11
+ <component :is="modalState.component" v-if="modalState" v-bind="modalState.props" v-model:open="isOpen" />
12
+ </template>
@@ -0,0 +1,195 @@
1
+ <script lang="ts">
2
+ import { tv, type VariantProps } from 'tailwind-variants'
3
+ import type { NavigationMenuRootProps, NavigationMenuRootEmits, NavigationMenuItemProps, NavigationMenuContentProps } from 'radix-vue'
4
+ import type { AppConfig } from '@nuxt/schema'
5
+ import _appConfig from '#build/app.config'
6
+ import theme from '#build/ui/navigation-menu'
7
+ import type { AvatarProps, BadgeProps, LinkProps } from '../types'
8
+ import type { DynamicSlots } from '../types/utils'
9
+
10
+ const appConfig = _appConfig as AppConfig & { ui: { navigationMenu: Partial<typeof theme> } }
11
+
12
+ const navigationMenu = tv({ extend: tv(theme), ...(appConfig.ui?.navigationMenu || {}) })
13
+
14
+ export interface NavigationMenuChildItem extends Omit<LinkProps, 'raw' | 'custom'> {
15
+ label: string
16
+ description?: string
17
+ icon?: string
18
+ select?(e: Event): void
19
+ }
20
+
21
+ export interface NavigationMenuItem extends Omit<LinkProps, 'raw' | 'custom'>, Pick<NavigationMenuItemProps, 'value'> {
22
+ label?: string
23
+ icon?: string
24
+ avatar?: AvatarProps
25
+ badge?: string | number | BadgeProps
26
+ trailingIcon?: string
27
+ slot?: string
28
+ children?: NavigationMenuChildItem[]
29
+ select?(e: Event): void
30
+ }
31
+
32
+ type NavigationMenuVariants = VariantProps<typeof navigationMenu>
33
+
34
+ export interface NavigationMenuProps<T> extends Pick<NavigationMenuRootProps, 'defaultValue' | 'delayDuration' | 'disableClickTrigger' | 'disableHoverTrigger' | 'modelValue' | 'skipDelayDuration'> {
35
+ /**
36
+ * The element or component this component should render as.
37
+ * @defaultValue `div`
38
+ */
39
+ as?: any
40
+ /**
41
+ * The icon displayed to open the menu.
42
+ * @defaultValue appConfig.ui.icons.chevronDown
43
+ */
44
+ trailingIcon?: string
45
+ items?: T[] | T[][]
46
+ color?: NavigationMenuVariants['color']
47
+ variant?: NavigationMenuVariants['variant']
48
+ /**
49
+ * The orientation of the menu.
50
+ * @defaultValue 'horizontal'
51
+ */
52
+ orientation?: NavigationMenuRootProps['orientation']
53
+ /** Display a line next to the active item. */
54
+ highlight?: boolean
55
+ highlightColor?: NavigationMenuVariants['highlightColor']
56
+ /** The content of the menu. */
57
+ content?: Omit<NavigationMenuContentProps, 'as' | 'asChild' | 'forceMount'>
58
+ /**
59
+ * Display an arrow alongside the menu.
60
+ * @defaultValue false
61
+ */
62
+ arrow?: boolean
63
+ class?: any
64
+ ui?: Partial<typeof navigationMenu.slots>
65
+ }
66
+
67
+ export interface NavigationMenuEmits extends NavigationMenuRootEmits {}
68
+
69
+ type SlotProps<T> = (props: { item: T, index: number, active?: boolean }) => any
70
+
71
+ export type NavigationMenuSlots<T extends { slot?: string }> = {
72
+ 'item': SlotProps<T>
73
+ 'item-leading': SlotProps<T>
74
+ 'item-label': SlotProps<T>
75
+ 'item-trailing': SlotProps<T>
76
+ } & DynamicSlots<T, SlotProps<T>>
77
+ </script>
78
+
79
+ <script setup lang="ts" generic="T extends NavigationMenuItem">
80
+ import { computed, toRef } from 'vue'
81
+ import { NavigationMenuRoot, NavigationMenuList, NavigationMenuItem, NavigationMenuTrigger, NavigationMenuContent, NavigationMenuLink, NavigationMenuIndicator, NavigationMenuViewport, useForwardPropsEmits } from 'radix-vue'
82
+ import { reactivePick } from '@vueuse/core'
83
+ import ULinkBase from './LinkBase.vue'
84
+ import ULink from './Link.vue'
85
+ import UAvatar from './Avatar.vue'
86
+ import UIcon from './Icon.vue'
87
+ import UBadge from './Badge.vue'
88
+ import { pickLinkProps } from '../utils/link'
89
+
90
+ const props = withDefaults(defineProps<NavigationMenuProps<T>>(), {
91
+ orientation: 'horizontal',
92
+ delayDuration: 0
93
+ })
94
+ const emits = defineEmits<NavigationMenuEmits>()
95
+ const slots = defineSlots<NavigationMenuSlots<T>>()
96
+
97
+ const rootProps = useForwardPropsEmits(reactivePick(props, 'as', 'modelValue', 'defaultValue', 'delayDuration', 'skipDelayDuration', 'orientation'), emits)
98
+ const contentProps = toRef(() => props.content)
99
+
100
+ const ui = computed(() => navigationMenu({
101
+ orientation: props.orientation,
102
+ color: props.color,
103
+ variant: props.variant,
104
+ highlight: props.highlight,
105
+ highlightColor: props.highlightColor || props.color
106
+ }))
107
+
108
+ const lists = computed(() => props.items?.length ? (Array.isArray(props.items[0]) ? props.items : [props.items]) as T[][] : [])
109
+ </script>
110
+
111
+ <template>
112
+ <NavigationMenuRoot v-bind="rootProps" :class="ui.root({ class: [props.class, props.ui?.root] })">
113
+ <template v-for="(list, listIndex) in lists" :key="`list-${listIndex}`">
114
+ <NavigationMenuList :class="ui.list({ class: props.ui?.list })">
115
+ <NavigationMenuItem v-for="(item, index) in list" :key="`list-${listIndex}-${index}`" :value="item.value || String(index)" :class="ui.item({ class: props.ui?.item })">
116
+ <ULink v-slot="{ active, ...slotProps }" v-bind="pickLinkProps(item)" custom>
117
+ <component
118
+ :is="item.children?.length ? NavigationMenuTrigger : NavigationMenuLink"
119
+ v-bind="item.children?.length ? { disabled: item.disabled } : { active }"
120
+ as-child
121
+ :active="active"
122
+ @select="item.select"
123
+ >
124
+ <ULinkBase v-bind="slotProps" :class="ui.link({ class: [props.ui?.link, item.class], active, disabled: !!item.disabled })">
125
+ <slot :name="item.slot || 'item'" :item="item" :index="index">
126
+ <slot :name="item.slot ? `${item.slot}-leading`: 'item-leading'" :item="item" :active="active" :index="index">
127
+ <UAvatar v-if="item.avatar" :size="((props.ui?.linkLeadingAvatarSize || ui.linkLeadingAvatarSize()) as AvatarProps['size'])" v-bind="item.avatar" :class="ui.linkLeadingAvatar({ class: props.ui?.linkLeadingAvatar, active, disabled: !!item.disabled })" />
128
+ <UIcon v-else-if="item.icon" :name="item.icon" :class="ui.linkLeadingIcon({ class: props.ui?.linkLeadingIcon, active, disabled: !!item.disabled })" />
129
+ </slot>
130
+
131
+ <span v-if="item.label || !!slots[item.slot ? `${item.slot}-label`: 'item-label']" :class="ui.linkLabel({ class: props.ui?.linkLabel })">
132
+ <slot :name="item.slot ? `${item.slot}-label`: 'item-label'" :item="item" :active="active" :index="index">
133
+ {{ item.label }}
134
+ </slot>
135
+
136
+ <UIcon v-if="item.target === '_blank'" :name="appConfig.ui.icons.external" :class="ui.linkLabelExternalIcon({ class: props.ui?.linkLabelExternalIcon, active })" />
137
+ </span>
138
+
139
+ <span v-if="item.badge || (item.children?.length && orientation === 'horizontal') || !!slots[item.slot ? `${item.slot}-trailing`: 'item-trailing']" :class="ui.linkTrailing({ class: props.ui?.linkTrailing })">
140
+ <slot :name="item.slot ? `${item.slot}-trailing`: 'item-trailing'" :item="item" :active="active" :index="index">
141
+ <UBadge
142
+ v-if="item.badge"
143
+ color="gray"
144
+ variant="outline"
145
+ :size="((props.ui?.linkTrailingBadgeSize || ui.linkTrailingBadgeSize()) as BadgeProps['size'])"
146
+ v-bind="(typeof item.badge === 'string' || typeof item.badge === 'number') ? { label: item.badge } : item.badge"
147
+ :class="ui.linkTrailingBadge({ class: props.ui?.linkTrailingBadge })"
148
+ />
149
+ <UIcon v-if="item.children?.length && orientation === 'horizontal'" :name="item.trailingIcon || trailingIcon || appConfig.ui.icons.chevronDown" :class="ui.linkTrailingIcon({ class: props.ui?.linkTrailingIcon, active })" />
150
+ </slot>
151
+ </span>
152
+ </slot>
153
+ </ULinkBase>
154
+ </component>
155
+
156
+ <NavigationMenuContent v-if="item.children?.length && orientation === 'horizontal'" v-bind="contentProps" :class="ui.content({ class: props.ui?.content })">
157
+ <ul :class="ui.childList({ class: props.ui?.childList })">
158
+ <li v-for="(childItem, childIndex) in item.children" :key="childIndex" :class="ui.childItem({ class: props.ui?.childItem })">
159
+ <ULink v-slot="{ active: childActive, ...childSlotProps }" v-bind="pickLinkProps(childItem)" custom>
160
+ <NavigationMenuLink as-child :active="childActive" @select="childItem.select">
161
+ <ULinkBase v-bind="childSlotProps" :class="ui.childLink({ class: [props.ui?.childLink, childItem.class], active: childActive })">
162
+ <UIcon v-if="childItem.icon" :name="childItem.icon" :class="ui.childLinkIcon({ class: props.ui?.childLinkIcon, active: childActive })" />
163
+
164
+ <div :class="ui.childLinkWrapper({ class: props.ui?.childLinkWrapper })">
165
+ <p :class="ui.childLinkLabel({ class: props.ui?.childLinkLabel, active: childActive })">
166
+ {{ childItem.label }}
167
+
168
+ <UIcon v-if="childItem.target === '_blank'" :name="appConfig.ui.icons.external" :class="ui.childLinkLabelExternalIcon({ class: props.ui?.childLinkLabelExternalIcon, active: childActive })" />
169
+ </p>
170
+ <p v-if="childItem.description" :class="ui.childLinkDescription({ class: props.ui?.childLinkDescription, active: childActive })">
171
+ {{ childItem.description }}
172
+ </p>
173
+ </div>
174
+ </ULinkBase>
175
+ </NavigationMenuLink>
176
+ </ULink>
177
+ </li>
178
+ </ul>
179
+ </NavigationMenuContent>
180
+ </ULink>
181
+ </NavigationMenuItem>
182
+ </NavigationMenuList>
183
+
184
+ <div v-if="orientation === 'vertical' && listIndex < lists.length - 1" :class="ui.separator({ class: props.ui?.separator })" />
185
+ </template>
186
+
187
+ <div v-if="orientation === 'horizontal'" :class="ui.viewportWrapper({ class: props.ui?.viewportWrapper })">
188
+ <NavigationMenuIndicator v-if="arrow" :class="ui.indicator({ class: props.ui?.indicator })">
189
+ <div :class="ui.arrow({ class: props.ui?.arrow })" />
190
+ </NavigationMenuIndicator>
191
+
192
+ <NavigationMenuViewport :class="ui.viewport({ class: props.ui?.viewport })" />
193
+ </div>
194
+ </NavigationMenuRoot>
195
+ </template>
@@ -0,0 +1,173 @@
1
+ <script lang="ts">
2
+ import { tv } from 'tailwind-variants'
3
+ import type { PaginationRootProps, PaginationRootEmits } from 'radix-vue'
4
+ import type { AppConfig } from '@nuxt/schema'
5
+ import type { RouteLocationRaw } from '#vue-router'
6
+ import _appConfig from '#build/app.config'
7
+ import theme from '#build/ui/pagination'
8
+ import type { ButtonProps } from '../types'
9
+
10
+ const appConfig = _appConfig as AppConfig & { ui: { pagination: Partial<typeof theme> } }
11
+
12
+ const pagination = tv({ extend: tv(theme), ...(appConfig.ui?.pagination || {}) })
13
+
14
+ export interface PaginationProps extends Pick<PaginationRootProps, 'defaultPage' | 'disabled' | 'itemsPerPage' | 'page' | 'showEdges' | 'siblingCount' | 'total'> {
15
+ /**
16
+ * The element or component this component should render as.
17
+ * @defaultValue `div`
18
+ */
19
+ as?: any
20
+ /**
21
+ * The icon to use for the first page control.
22
+ * @defaultValue appConfig.ui.icons.chevronDoubleLeft
23
+ */
24
+ firstIcon?: string
25
+ /**
26
+ * The icon to use for the previous page control.
27
+ * @defaultValue appConfig.ui.icons.chevronLeft
28
+ */
29
+ prevIcon?: string
30
+ /**
31
+ * The icon to use for the next page control.
32
+ * @defaultValue appConfig.ui.icons.chevronRight
33
+ */
34
+ nextIcon?: string
35
+ /**
36
+ * The icon to use for the last page control.
37
+ * @defaultValue appConfig.ui.icons.chevronDoubleRight
38
+ */
39
+ lastIcon?: string
40
+ /**
41
+ * The icon to use for the ellipsis control.
42
+ * @defaultValue appConfig.ui.icons.ellipsis
43
+ */
44
+ ellipsisIcon?: string
45
+ /**
46
+ * The color of the pagination controls.
47
+ * @defaultValue 'white'
48
+ */
49
+ color?: ButtonProps['color']
50
+ /**
51
+ * The variant of the pagination controls.
52
+ * @defaultValue 'solid'
53
+ */
54
+ variant?: ButtonProps['variant']
55
+ /**
56
+ * The color of the active pagination control.
57
+ * @defaultValue 'black'
58
+ */
59
+ activeColor?: ButtonProps['color']
60
+ /**
61
+ * The variant of the active pagination control.
62
+ * @defaultValue 'solid'
63
+ */
64
+ activeVariant?: ButtonProps['variant']
65
+ /**
66
+ * Whether to show the first, previous, next, and last controls.
67
+ * @defaultValue true
68
+ */
69
+ showControls?: boolean
70
+ size?: ButtonProps['size']
71
+ /**
72
+ * A function to render page controls as links.
73
+ * @param page The page number to navigate to.
74
+ */
75
+ to?: (page: number) => RouteLocationRaw
76
+ class?: any
77
+ ui?: Partial<typeof pagination.slots>
78
+ }
79
+
80
+ export interface PaginationEmits extends PaginationRootEmits {}
81
+
82
+ export interface PaginationSlots {
83
+ first(props?: {}): any
84
+ prev(props?: {}): any
85
+ next(props?: {}): any
86
+ last(props?: {}): any
87
+ ellipsis(props?: {}): any
88
+ item(props: {
89
+ page: number
90
+ pageCount: number
91
+ item: {
92
+ type: 'ellipsis'
93
+ } | {
94
+ type: 'page'
95
+ value: number
96
+ }
97
+ index: number
98
+ }): any
99
+ }
100
+ </script>
101
+
102
+ <script setup lang="ts">
103
+ import { PaginationRoot, PaginationList, PaginationListItem, PaginationFirst, PaginationPrev, PaginationEllipsis, PaginationNext, PaginationLast, useForwardPropsEmits } from 'radix-vue'
104
+ import { reactivePick } from '@vueuse/core'
105
+ import { useAppConfig } from '#imports'
106
+
107
+ const props = withDefaults(defineProps<PaginationProps>(), {
108
+ color: 'gray',
109
+ activeColor: 'primary',
110
+ variant: 'outline',
111
+ activeVariant: 'solid',
112
+ showControls: true
113
+ })
114
+ const emits = defineEmits<PaginationEmits>()
115
+ const slots = defineSlots<PaginationSlots>()
116
+
117
+ const appConfig = useAppConfig()
118
+
119
+ const rootProps = useForwardPropsEmits(reactivePick(props, 'as', 'defaultPage', 'disabled', 'itemsPerPage', 'page', 'showEdges', 'siblingCount', 'total'), emits)
120
+
121
+ // eslint-disable-next-line vue/no-dupe-keys
122
+ const ui = pagination()
123
+ </script>
124
+
125
+ <template>
126
+ <PaginationRoot v-slot="{ page, pageCount }" v-bind="rootProps" :class="ui.root({ class: [props.class, props.ui?.root] })">
127
+ <PaginationList v-slot="{ items }" :class="ui.list({ class: props.ui?.list })">
128
+ <PaginationFirst v-if="showControls || !!slots.first" as-child>
129
+ <slot name="first">
130
+ <UButton :color="color" :variant="variant" :size="size" :icon="firstIcon || appConfig.ui.icons.chevronDoubleLeft" :to="to?.(1)" />
131
+ </slot>
132
+ </PaginationFirst>
133
+ <PaginationPrev v-if="showControls || !!slots.prev" as-child>
134
+ <slot name="prev">
135
+ <UButton :color="color" :variant="variant" :size="size" :icon="prevIcon || appConfig.ui.icons.chevronLeft" :to="page > 1 ? to?.(page - 1) : undefined" />
136
+ </slot>
137
+ </PaginationPrev>
138
+
139
+ <template v-for="(item, index) in items">
140
+ <PaginationListItem v-if="item.type === 'page'" :key="index" as-child :value="item.value">
141
+ <slot name="item" v-bind="{ item, index, page, pageCount }">
142
+ <UButton
143
+ :color="page === item.value ? activeColor : color"
144
+ :variant="page === item.value ? activeVariant : variant"
145
+ :size="size"
146
+ :label="String(item.value)"
147
+ :ui="{ label: ui.label() }"
148
+ :to="to?.(item.value)"
149
+ square
150
+ />
151
+ </slot>
152
+ </PaginationListItem>
153
+
154
+ <PaginationEllipsis v-else :key="item.type" :index="index" as-child>
155
+ <slot name="ellipsis">
156
+ <UButton :color="color" :variant="variant" :size="size" :icon="ellipsisIcon || appConfig.ui.icons.ellipsis" :class="ui.ellipsis({ class: props.ui?.ellipsis })" />
157
+ </slot>
158
+ </PaginationEllipsis>
159
+ </template>
160
+
161
+ <PaginationNext v-if="showControls || !!slots.next" as-child>
162
+ <slot name="next">
163
+ <UButton :color="color" :variant="variant" :size="size" :icon="nextIcon || appConfig.ui.icons.chevronRight" :to="page < pageCount ? to?.(pageCount) : undefined" />
164
+ </slot>
165
+ </PaginationNext>
166
+ <PaginationLast v-if="showControls || !!slots.last" as-child>
167
+ <slot name="last">
168
+ <UButton :color="color" :variant="variant" :size="size" :icon="lastIcon || appConfig.ui.icons.chevronDoubleRight" :to=" to?.(pageCount)" />
169
+ </slot>
170
+ </PaginationLast>
171
+ </PaginationList>
172
+ </PaginationRoot>
173
+ </template>
@@ -0,0 +1,88 @@
1
+ <script lang="ts">
2
+ import { tv } from 'tailwind-variants'
3
+ import type { PopoverRootProps, HoverCardRootProps, PopoverRootEmits, PopoverContentProps, PopoverArrowProps } from 'radix-vue'
4
+ import type { AppConfig } from '@nuxt/schema'
5
+ import _appConfig from '#build/app.config'
6
+ import theme from '#build/ui/popover'
7
+
8
+ const appConfig = _appConfig as AppConfig & { ui: { popover: Partial<typeof theme> } }
9
+
10
+ const popover = tv({ extend: tv(theme), ...(appConfig.ui?.popover || {}) })
11
+
12
+ export interface PopoverProps extends PopoverRootProps, Pick<HoverCardRootProps, 'openDelay' | 'closeDelay'> {
13
+ /**
14
+ * The display mode of the popover.
15
+ * @defaultValue 'click'
16
+ */
17
+ mode?: 'click' | 'hover'
18
+ /**
19
+ * The content of the popover.
20
+ * @defaultValue { side: 'bottom', sideOffset: 8 }
21
+ */
22
+ content?: Omit<PopoverContentProps, 'as' | 'asChild' | 'forceMount'>
23
+ /**
24
+ * Display an arrow alongside the popover.
25
+ * @defaultValue false
26
+ */
27
+ arrow?: boolean | Omit<PopoverArrowProps, 'as' | 'asChild'>
28
+ /**
29
+ * Render the popover in a portal.
30
+ * @defaultValue true
31
+ */
32
+ portal?: boolean
33
+ class?: any
34
+ ui?: Partial<typeof popover.slots>
35
+ }
36
+
37
+ export interface PopoverEmits extends PopoverRootEmits {}
38
+
39
+ export interface PopoverSlots {
40
+ default(props: { open: boolean }): any
41
+ content(props?: {}): any
42
+ }
43
+ </script>
44
+
45
+ <script setup lang="ts">
46
+ import { computed, toRef } from 'vue'
47
+ import { defu } from 'defu'
48
+ import { useForwardPropsEmits } from 'radix-vue'
49
+ import { Popover, HoverCard } from 'radix-vue/namespaced'
50
+ import { reactivePick } from '@vueuse/core'
51
+
52
+ const props = withDefaults(defineProps<PopoverProps>(), {
53
+ portal: true,
54
+ mode: 'click',
55
+ openDelay: 0,
56
+ closeDelay: 0
57
+ })
58
+ const emits = defineEmits<PopoverEmits>()
59
+ const slots = defineSlots<PopoverSlots>()
60
+
61
+ const pick = props.mode === 'hover' ? reactivePick(props, 'defaultOpen', 'open', 'openDelay', 'closeDelay') : reactivePick(props, 'defaultOpen', 'open', 'modal')
62
+ const rootProps = useForwardPropsEmits(pick, emits)
63
+ const contentProps = toRef(() => defu(props.content, { side: 'bottom', sideOffset: 8 }) as PopoverContentProps)
64
+ const arrowProps = toRef(() => props.arrow as PopoverArrowProps)
65
+
66
+ // eslint-disable-next-line vue/no-dupe-keys
67
+ const ui = computed(() => popover({
68
+ side: contentProps.value.side
69
+ }))
70
+
71
+ const Component = computed(() => props.mode === 'hover' ? HoverCard : Popover)
72
+ </script>
73
+
74
+ <template>
75
+ <Component.Root v-slot="{ open }" v-bind="rootProps">
76
+ <Component.Trigger v-if="!!slots.default" as-child>
77
+ <slot :open="open" />
78
+ </Component.Trigger>
79
+
80
+ <Component.Portal :disabled="!portal">
81
+ <Component.Content v-bind="contentProps" :class="ui.content({ class: [props.class, props.ui?.content] })">
82
+ <slot name="content" />
83
+
84
+ <Component.Arrow v-if="!!arrow" v-bind="arrowProps" :class="ui.arrow({ class: props.ui?.arrow })" />
85
+ </Component.Content>
86
+ </Component.Portal>
87
+ </Component.Root>
88
+ </template>