@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,306 @@
1
+ <script lang="ts">
2
+ import { tv, type VariantProps } from 'tailwind-variants'
3
+ import type { ComboboxRootProps, ComboboxRootEmits, ComboboxContentProps, ComboboxItemProps, ComboboxArrowProps } from 'radix-vue'
4
+ import type { AppConfig } from '@nuxt/schema'
5
+ import _appConfig from '#build/app.config'
6
+ import theme from '#build/ui/select-menu'
7
+ import type { UseComponentIconsProps } from '../composables/useComponentIcons'
8
+ import type { AvatarProps, ChipProps, InputProps } from '../types'
9
+ import type { AcceptableValue, ArrayOrWrapped, PartialString } from '../types/utils'
10
+
11
+ const appConfig = _appConfig as AppConfig & { ui: { selectMenu: Partial<typeof theme> } }
12
+
13
+ const selectMenu = tv({ extend: tv(theme), ...(appConfig.ui?.selectMenu || {}) })
14
+
15
+ export interface SelectMenuItem extends Pick<ComboboxItemProps, 'disabled'> {
16
+ label?: string
17
+ icon?: string
18
+ avatar?: AvatarProps
19
+ chip?: ChipProps
20
+ /**
21
+ * The item type.
22
+ * @defaultValue 'item'
23
+ */
24
+ type?: 'label' | 'separator' | 'item'
25
+ }
26
+
27
+ type SelectMenuVariants = VariantProps<typeof selectMenu>
28
+
29
+ export interface SelectMenuProps<T> extends Pick<ComboboxRootProps<T>, 'modelValue' | 'defaultValue' | 'selectedValue' | 'open' | 'defaultOpen' | 'searchTerm' | 'multiple' | 'disabled' | 'name' | 'resetSearchTermOnBlur'>, UseComponentIconsProps {
30
+ id?: string
31
+ /** The placeholder text when the select is empty. */
32
+ placeholder?: string
33
+ /**
34
+ * Wether to display the search input or not.
35
+ * @defaultValue true
36
+ */
37
+ search?: boolean
38
+ /** The placeholder text when the search input is empty. */
39
+ searchPlaceholder?: string
40
+ color?: SelectMenuVariants['color']
41
+ variant?: SelectMenuVariants['variant']
42
+ size?: SelectMenuVariants['size']
43
+ required?: boolean
44
+ /**
45
+ * The icon displayed to open the menu.
46
+ * @defaultValue appConfig.ui.icons.chevronDown
47
+ */
48
+ trailingIcon?: string
49
+ /**
50
+ * The icon displayed when an item is selected.
51
+ * @defaultValue appConfig.ui.icons.check
52
+ */
53
+ selectedIcon?: string
54
+ /**
55
+ * The content of the menu.
56
+ * @defaultValue { side: 'bottom', sideOffset: 8, position: 'popper' }
57
+ */
58
+ content?: Omit<ComboboxContentProps, 'as' | 'asChild' | 'forceMount'>
59
+ /**
60
+ * Display an arrow alongside the menu.
61
+ * @defaultValue false
62
+ */
63
+ arrow?: boolean | Omit<ComboboxArrowProps, 'as' | 'asChild'>
64
+ /**
65
+ * Render the menu in a portal.
66
+ * @defaultValue true
67
+ */
68
+ portal?: boolean
69
+ /**
70
+ * Whether to filter items or not, can be an array of fields to filter.
71
+ * When `false`, items will not be filtered which is useful for custom filtering (useAsyncData, useFetch, etc.).
72
+ * @defaultValue ['label']
73
+ */
74
+ filter?: boolean | string[]
75
+ /**
76
+ * When `items` is an array of objects, select the field to use as the value instead of the object itself.
77
+ * @defaultValue undefined
78
+ */
79
+ valueKey?: keyof T
80
+ items?: T[] | T[][]
81
+ /** Highlight the ring color like a focus state. */
82
+ highlight?: boolean
83
+ class?: any
84
+ ui?: PartialString<typeof selectMenu.slots>
85
+ }
86
+
87
+ export type SelectMenuEmits<T> = ComboboxRootEmits<T> & {
88
+ change: [payload: Event]
89
+ blur: [payload: FocusEvent]
90
+ focus: [payload: FocusEvent]
91
+ }
92
+
93
+ type SlotProps<T> = (props: { item: T, index: number }) => any
94
+
95
+ export type SelectMenuSlots<T> = {
96
+ 'leading'(props: { modelValue: T, open: boolean, ui: any }): any
97
+ 'default'(props: { modelValue: T, open: boolean }): any
98
+ 'trailing'(props: { modelValue: T, open: boolean, ui: any }): any
99
+ 'empty'(props: { searchTerm?: string }): any
100
+ 'item': SlotProps<T>
101
+ 'item-leading': SlotProps<T>
102
+ 'item-label': SlotProps<T>
103
+ 'item-trailing': SlotProps<T>
104
+ }
105
+ </script>
106
+
107
+ <script setup lang="ts" generic="T extends SelectMenuItem | AcceptableValue">
108
+ import { computed, toRef } from 'vue'
109
+ import { ComboboxRoot, ComboboxAnchor, ComboboxInput, ComboboxTrigger, ComboboxPortal, ComboboxContent, ComboboxViewport, ComboboxEmpty, ComboboxGroup, ComboboxLabel, ComboboxSeparator, ComboboxItem, ComboboxItemIndicator, useForwardPropsEmits } from 'radix-vue'
110
+ import { defu } from 'defu'
111
+ import { reactivePick } from '@vueuse/core'
112
+ import { useAppConfig } from '#imports'
113
+ import { useButtonGroup } from '../composables/useButtonGroup'
114
+ import { useComponentIcons } from '../composables/useComponentIcons'
115
+ import { useFormField } from '../composables/useFormField'
116
+ import UIcon from './Icon.vue'
117
+ import UAvatar from './Avatar.vue'
118
+ import UChip from './Chip.vue'
119
+ import { get } from '../utils'
120
+
121
+ const props = withDefaults(defineProps<SelectMenuProps<T>>(), {
122
+ search: true,
123
+ portal: true,
124
+ autofocusDelay: 0,
125
+ searchPlaceholder: 'Search...',
126
+ filter: () => ['label']
127
+ })
128
+ const emits = defineEmits<SelectMenuEmits<T>>()
129
+ const slots = defineSlots<SelectMenuSlots<T>>()
130
+
131
+ const searchTerm = defineModel<string>('searchTerm', { default: '' })
132
+
133
+ const appConfig = useAppConfig()
134
+ const rootProps = useForwardPropsEmits(reactivePick(props, 'modelValue', 'defaultValue', 'selectedValue', 'open', 'defaultOpen', 'multiple', 'resetSearchTermOnBlur'), emits)
135
+ const contentProps = toRef(() => defu(props.content, { side: 'bottom', sideOffset: 8, position: 'popper' }) as ComboboxContentProps)
136
+ const { emitFormBlur, emitFormInput, emitFormChange, size: formGroupSize, color, id, name, highlight, disabled } = useFormField<InputProps>(props)
137
+ const { orientation, size: buttonGroupSize } = useButtonGroup<InputProps>(props)
138
+ const { isLeading, isTrailing, leadingIconName, trailingIconName } = useComponentIcons(toRef(() => defu(props, { trailingIcon: appConfig.ui.icons.chevronDown })))
139
+
140
+ const selectSize = computed(() => buttonGroupSize.value || formGroupSize.value)
141
+
142
+ const ui = computed(() => selectMenu({
143
+ color: color.value,
144
+ variant: props.variant,
145
+ size: selectSize?.value,
146
+ loading: props.loading,
147
+ highlight: highlight.value,
148
+ leading: isLeading.value || !!slots.leading,
149
+ trailing: isTrailing.value || !!slots.trailing,
150
+ buttonGroup: orientation.value
151
+ }))
152
+
153
+ function displayValue(val: T, multiple?: boolean): string {
154
+ if (multiple && Array.isArray(val)) {
155
+ return val.map(v => displayValue(v)).join(', ')
156
+ }
157
+
158
+ if (typeof val === 'object') {
159
+ return val.label
160
+ }
161
+
162
+ return val && String(val)
163
+ }
164
+
165
+ function filterFunction(items: ArrayOrWrapped<AcceptableValue>, searchTerm: string): ArrayOrWrapped<AcceptableValue> {
166
+ if (props.filter === false) {
167
+ return items
168
+ }
169
+
170
+ const fields = Array.isArray(props.filter) ? props.filter : ['label']
171
+
172
+ return items.filter((item) => {
173
+ if (typeof item !== 'object') {
174
+ return String(item).search(new RegExp(searchTerm, 'i')) !== -1
175
+ }
176
+
177
+ return fields.some((field) => {
178
+ const child = get(item, field)
179
+
180
+ return child !== null && child !== undefined && String(child).search(new RegExp(searchTerm, 'i')) !== -1
181
+ })
182
+ }) as ArrayOrWrapped<T>
183
+ }
184
+
185
+ const groups = computed(() => props.items?.length ? (Array.isArray(props.items[0]) ? props.items : [props.items]) as SelectMenuItem[][] : [])
186
+
187
+ function onUpdate(value: any) {
188
+ // @ts-expect-error - 'target' does not exist in type 'EventInit'
189
+ const event = new Event('change', { target: { value } })
190
+ emits('change', event)
191
+ emitFormChange()
192
+ emitFormInput()
193
+ }
194
+
195
+ function onUpdateOpen(value: boolean) {
196
+ if (!value) {
197
+ const event = new FocusEvent('blur')
198
+ emits('blur', event)
199
+ emitFormBlur()
200
+ } else {
201
+ const event = new FocusEvent('focus')
202
+ emits('focus', event)
203
+ }
204
+ }
205
+ </script>
206
+
207
+ <template>
208
+ <ComboboxRoot
209
+ :id="id"
210
+ v-slot="{ modelValue, open }"
211
+ v-bind="rootProps"
212
+ v-model:search-term="searchTerm"
213
+ as-child
214
+ :name="name"
215
+ :disabled="disabled"
216
+ :display-value="() => searchTerm"
217
+ :filter-function="filterFunction"
218
+ @update:model-value="onUpdate"
219
+ @update:open="onUpdateOpen"
220
+ >
221
+ <ComboboxAnchor as-child>
222
+ <ComboboxTrigger :class="ui.base({ class: props.class })" tabindex="0">
223
+ <span v-if="isLeading || !!slots.leading" :class="ui.leading({ class: props.ui?.leading })">
224
+ <slot name="leading" :model-value="(modelValue as T)" :open="open" :ui="ui">
225
+ <UIcon v-if="leadingIconName" :name="leadingIconName" :class="ui.leadingIcon({ class: props.ui?.leadingIcon })" />
226
+ </slot>
227
+ </span>
228
+
229
+ <slot :model-value="(modelValue as T)" :open="open">
230
+ <span v-if="multiple ? modelValue?.length : modelValue !== undefined" :class="ui.value({ class: props.ui?.value })">
231
+ {{ displayValue(modelValue as T, multiple) }}
232
+ </span>
233
+ <span v-else :class="ui.placeholder({ class: props.ui?.placeholder })">
234
+ {{ placeholder ?? '&nbsp;' }}
235
+ </span>
236
+ </slot>
237
+
238
+ <span v-if="isTrailing || !!slots.trailing" :class="ui.trailing({ class: props.ui?.trailing })">
239
+ <slot name="trailing" :model-value="(modelValue as T)" :open="open" :ui="ui">
240
+ <UIcon v-if="trailingIconName" :name="trailingIconName" :class="ui.trailingIcon({ class: props.ui?.trailingIcon })" />
241
+ </slot>
242
+ </span>
243
+ </ComboboxTrigger>
244
+ </ComboboxAnchor>
245
+
246
+ <ComboboxPortal :disabled="!portal">
247
+ <ComboboxContent :class="ui.content({ class: props.ui?.content })" v-bind="contentProps">
248
+ <ComboboxInput v-if="search" :placeholder="searchPlaceholder" :class="ui.input({ class: props.ui?.input })" autofocus autocomplete="off" />
249
+
250
+ <ComboboxEmpty :class="ui.empty({ class: props.ui?.empty })">
251
+ <slot name="empty" :search-term="searchTerm">
252
+ {{ searchTerm ? `No results for ${searchTerm}` : 'No results' }}
253
+ </slot>
254
+ </ComboboxEmpty>
255
+
256
+ <ComboboxViewport :class="ui.viewport({ class: props.ui?.viewport })">
257
+ <ComboboxGroup v-for="(group, groupIndex) in groups" :key="`group-${groupIndex}`" :class="ui.group({ class: props.ui?.group })">
258
+ <template v-for="(item, index) in group" :key="`group-${groupIndex}-${index}`">
259
+ <ComboboxLabel v-if="item?.type === 'label'" :class="ui.label({ class: props.ui?.label })">
260
+ {{ item.label }}
261
+ </ComboboxLabel>
262
+
263
+ <ComboboxSeparator v-else-if="item?.type === 'separator'" :class="ui.separator({ class: props.ui?.separator })" />
264
+
265
+ <ComboboxItem
266
+ v-else
267
+ :class="ui.item({ class: props.ui?.item })"
268
+ :disabled="item.disabled"
269
+ :value="valueKey && typeof item === 'object' ? (item[valueKey as keyof SelectMenuItem]) as AcceptableValue : item"
270
+ >
271
+ <slot name="item" :item="(item as T)" :index="index">
272
+ <slot name="item-leading" :item="(item as T)" :index="index">
273
+ <UAvatar v-if="item.avatar" :size="((props.ui?.itemLeadingAvatarSize || ui.itemLeadingAvatarSize()) as AvatarProps['size'])" v-bind="item.avatar" :class="ui.itemLeadingAvatar({ class: props.ui?.itemLeadingAvatar })" />
274
+ <UIcon v-else-if="item.icon" :name="item.icon" :class="ui.itemLeadingIcon({ class: props.ui?.itemLeadingIcon })" />
275
+ <UChip
276
+ v-else-if="item.chip"
277
+ :size="((props.ui?.itemLeadingChipSize || ui.itemLeadingChipSize()) as ChipProps['size'])"
278
+ inset
279
+ standalone
280
+ v-bind="item.chip"
281
+ :class="ui.itemLeadingChip({ class: props.ui?.itemLeadingChip })"
282
+ />
283
+ </slot>
284
+
285
+ <span :class="ui.itemLabel({ class: props.ui?.itemLabel })">
286
+ <slot name="item-label" :item="(item as T)" :index="index">
287
+ {{ displayValue(item as T) }}
288
+ </slot>
289
+ </span>
290
+
291
+ <span :class="ui.itemTrailing({ class: props.ui?.itemTrailing })">
292
+ <slot name="item-trailing" :item="(item as T)" :index="index" />
293
+
294
+ <ComboboxItemIndicator as-child>
295
+ <UIcon :name="selectedIcon || appConfig.ui.icons.check" :class="ui.itemTrailingIcon({ class: props.ui?.itemTrailingIcon })" />
296
+ </ComboboxItemIndicator>
297
+ </span>
298
+ </slot>
299
+ </ComboboxItem>
300
+ </template>
301
+ </ComboboxGroup>
302
+ </ComboboxViewport>
303
+ </ComboboxContent>
304
+ </ComboboxPortal>
305
+ </ComboboxRoot>
306
+ </template>
@@ -0,0 +1,82 @@
1
+ <script lang="ts">
2
+ import { tv, type VariantProps } from 'tailwind-variants'
3
+ import type { SeparatorProps as _SeparatorProps } from 'radix-vue'
4
+ import type { AppConfig } from '@nuxt/schema'
5
+ import _appConfig from '#build/app.config'
6
+ import theme from '#build/ui/separator'
7
+ import type { AvatarProps } from '../types'
8
+
9
+ const appConfig = _appConfig as AppConfig & { ui: { separator: Partial<typeof theme> } }
10
+
11
+ const separator = tv({ extend: tv(theme), ...(appConfig.ui?.separator || {}) })
12
+
13
+ type SeparatorVariants = VariantProps<typeof separator>
14
+
15
+ export interface SeparatorProps extends Pick<_SeparatorProps, 'decorative'> {
16
+ /**
17
+ * The element or component this component should render as.
18
+ * @defaultValue `div`
19
+ */
20
+ as?: any
21
+ /** Display a label in the middle. */
22
+ label?: string
23
+ /** Display an icon in the middle. */
24
+ icon?: string
25
+ /** Display an avatar in the middle. */
26
+ avatar?: AvatarProps
27
+ color?: SeparatorVariants['color']
28
+ size?: SeparatorVariants['size']
29
+ type?: SeparatorVariants['type']
30
+ /**
31
+ * The orientation of the separator.
32
+ * @defaultValue 'horizontal'
33
+ */
34
+ orientation?: _SeparatorProps['orientation']
35
+ class?: any
36
+ ui?: Partial<typeof separator.slots>
37
+ }
38
+
39
+ export interface SeparatorSlots {
40
+ default(props?: {}): any
41
+ }
42
+ </script>
43
+
44
+ <script setup lang="ts">
45
+ import { computed } from 'vue'
46
+ import { Separator, useForwardProps } from 'radix-vue'
47
+ import { reactivePick } from '@vueuse/core'
48
+ import UIcon from './Icon.vue'
49
+ import UAvatar from './Avatar.vue'
50
+
51
+ const props = withDefaults(defineProps<SeparatorProps>(), {
52
+ orientation: 'horizontal'
53
+ })
54
+ const slots = defineSlots<SeparatorSlots>()
55
+
56
+ const rootProps = useForwardProps(reactivePick(props, 'as', 'decorative', 'orientation'))
57
+
58
+ const ui = computed(() => separator({
59
+ color: props.color,
60
+ orientation: props.orientation,
61
+ size: props.size,
62
+ type: props.type
63
+ }))
64
+ </script>
65
+
66
+ <template>
67
+ <Separator v-bind="rootProps" :class="ui.root({ class: [props.class, props.ui?.root] })">
68
+ <div :class="ui.border({ class: props.ui?.border })" />
69
+
70
+ <template v-if="label || icon || avatar || !!slots.default">
71
+ <div :class="ui.container({ class: props.ui?.container })">
72
+ <slot>
73
+ <span v-if="label" :class="ui.label({ class: props.ui?.label })">{{ label }}</span>
74
+ <UIcon v-else-if="icon" :name="icon" :class="ui.icon({ class: props.ui?.icon })" />
75
+ <UAvatar v-else-if="avatar" :size="((props.ui?.avatarSize || ui.avatarSize()) as AvatarProps['size'])" v-bind="avatar" :class="ui.avatar({ class: props.ui?.avatar })" />
76
+ </slot>
77
+ </div>
78
+
79
+ <div :class="ui.border({ class: props.ui?.border })" />
80
+ </template>
81
+ </Separator>
82
+ </template>
@@ -0,0 +1,31 @@
1
+ <script lang="ts">
2
+ import { tv } from 'tailwind-variants'
3
+ import type { AppConfig } from '@nuxt/schema'
4
+ import _appConfig from '#build/app.config'
5
+ import theme from '#build/ui/skeleton'
6
+
7
+ const appConfig = _appConfig as AppConfig & { ui: { skeleton: Partial<typeof theme> } }
8
+
9
+ const skeleton = tv({ extend: tv(theme), ...(appConfig.ui?.skeleton || {}) })
10
+
11
+ export interface SkeletonProps {
12
+ /**
13
+ * The element or component this component should render as.
14
+ * @defaultValue 'div'
15
+ */
16
+ as?: any
17
+ class?: any
18
+ }
19
+ </script>
20
+
21
+ <script setup lang="ts">
22
+ import { Primitive } from 'radix-vue'
23
+
24
+ const props = defineProps<SkeletonProps>()
25
+ </script>
26
+
27
+ <template>
28
+ <Primitive :as="as" :class="skeleton({ class: props.class })">
29
+ <slot />
30
+ </Primitive>
31
+ </template>
@@ -0,0 +1,162 @@
1
+ <script lang="ts">
2
+ import { tv, type VariantProps } 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/slideover'
7
+ import type { ButtonProps } from '../types'
8
+
9
+ const appConfig = _appConfig as AppConfig & { ui: { slideover: Partial<typeof theme> } }
10
+
11
+ const slideover = tv({ extend: tv(theme), ...(appConfig.ui?.slideover || {}) })
12
+
13
+ type SlideoverVariants = VariantProps<typeof slideover>
14
+
15
+ export interface SlideoverProps extends DialogRootProps {
16
+ title?: string
17
+ description?: string
18
+ /** The content of the slideover. */
19
+ content?: Omit<DialogContentProps, 'as' | 'asChild' | 'forceMount'>
20
+ /**
21
+ * Render an overlay behind the slideover.
22
+ * @defaultValue true
23
+ */
24
+ overlay?: boolean
25
+ /**
26
+ * Animate the slideover when opening or closing.
27
+ * @defaultValue true
28
+ */
29
+ transition?: boolean
30
+ side?: SlideoverVariants['side']
31
+ /**
32
+ * Render the slideover in a portal.
33
+ * @defaultValue true
34
+ */
35
+ portal?: boolean
36
+ /**
37
+ * Display a close button to dismiss the slideover.
38
+ * `{ size: 'md', color: 'gray', variant: 'ghost' }`{lang="ts-type"}
39
+ * @defaultValue true
40
+ */
41
+ close?: ButtonProps | boolean
42
+ /**
43
+ * The icon displayed in the close button.
44
+ * @defaultValue appConfig.ui.icons.close
45
+ */
46
+ closeIcon?: string
47
+ /**
48
+ * When `true`, the slideover will not close when clicking outside.
49
+ * @defaultValue false
50
+ */
51
+ preventClose?: boolean
52
+ class?: any
53
+ ui?: Partial<typeof slideover.slots>
54
+ }
55
+
56
+ export interface SlideoverEmits extends DialogRootEmits {}
57
+
58
+ export interface SlideoverSlots {
59
+ default(props: { open: boolean }): any
60
+ content(props?: {}): any
61
+ header(props?: {}): any
62
+ title(props?: {}): any
63
+ description(props?: {}): any
64
+ close(props: { ui: any }): any
65
+ body(props?: {}): any
66
+ footer(props?: {}): any
67
+ }
68
+ </script>
69
+
70
+ <script setup lang="ts">
71
+ import { computed, toRef } from 'vue'
72
+ import { DialogRoot, DialogTrigger, DialogPortal, DialogOverlay, DialogContent, DialogTitle, DialogDescription, DialogClose, useForwardPropsEmits } from 'radix-vue'
73
+ import { reactivePick } from '@vueuse/core'
74
+ import { useAppConfig } from '#imports'
75
+ import UButton from './Button.vue'
76
+
77
+ const props = withDefaults(defineProps<SlideoverProps>(), {
78
+ close: true,
79
+ portal: true,
80
+ overlay: true,
81
+ transition: true,
82
+ modal: true,
83
+ side: 'right'
84
+ })
85
+ const emits = defineEmits<SlideoverEmits>()
86
+ const slots = defineSlots<SlideoverSlots>()
87
+
88
+ const rootProps = useForwardPropsEmits(reactivePick(props, 'open', 'defaultOpen', 'modal'), emits)
89
+ const contentProps = toRef(() => props.content)
90
+ const contentEvents = computed(() => {
91
+ if (props.preventClose) {
92
+ return {
93
+ pointerDownOutside: (e: Event) => e.preventDefault(),
94
+ interactOutside: (e: Event) => e.preventDefault()
95
+ }
96
+ }
97
+
98
+ return {}
99
+ })
100
+
101
+ const appConfig = useAppConfig()
102
+
103
+ const ui = computed(() => slideover({
104
+ transition: props.transition,
105
+ side: props.side
106
+ }))
107
+ </script>
108
+
109
+ <template>
110
+ <DialogRoot v-slot="{ open }" v-bind="rootProps">
111
+ <DialogTrigger v-if="!!slots.default" as-child>
112
+ <slot :open="open" />
113
+ </DialogTrigger>
114
+
115
+ <DialogPortal :disabled="!portal">
116
+ <DialogOverlay v-if="overlay" :class="ui.overlay({ class: props.ui?.overlay })" />
117
+
118
+ <DialogContent :data-side="side" :class="ui.content({ class: [props.class, props.ui?.content] })" v-bind="contentProps" v-on="contentEvents">
119
+ <slot name="content">
120
+ <div v-if="!!slots.header || (title || !!slots.title) || (description || !!slots.description) || (close || !!slots.close)" :class="ui.header({ class: props.ui?.header })">
121
+ <slot name="header">
122
+ <DialogTitle v-if="title || !!slots.title" :class="ui.title({ class: props.ui?.title })">
123
+ <slot name="title">
124
+ {{ title }}
125
+ </slot>
126
+ </DialogTitle>
127
+
128
+ <DialogDescription v-if="description || !!slots.description" :class="ui.description({ class: props.ui?.description })">
129
+ <slot name="description">
130
+ {{ description }}
131
+ </slot>
132
+ </DialogDescription>
133
+
134
+ <DialogClose as-child>
135
+ <slot name="close" :ui="ui">
136
+ <UButton
137
+ v-if="close"
138
+ :icon="closeIcon || appConfig.ui.icons.close"
139
+ size="md"
140
+ color="gray"
141
+ variant="ghost"
142
+ aria-label="Close"
143
+ v-bind="typeof close === 'object' ? close : undefined"
144
+ :class="ui.close({ class: props.ui?.close })"
145
+ />
146
+ </slot>
147
+ </DialogClose>
148
+ </slot>
149
+ </div>
150
+
151
+ <div :class="ui.body({ class: props.ui?.body })">
152
+ <slot name="body" />
153
+ </div>
154
+
155
+ <div v-if="!!slots.footer" :class="ui.footer({ class: props.ui?.footer })">
156
+ <slot name="footer" />
157
+ </div>
158
+ </slot>
159
+ </DialogContent>
160
+ </DialogPortal>
161
+ </DialogRoot>
162
+ </template>
@@ -0,0 +1,12 @@
1
+ <script setup lang="ts">
2
+ import { inject } from 'vue'
3
+ import { slideoverInjectionKey, useSlideover } from '../composables/useSlideover'
4
+
5
+ const slideoverState = inject(slideoverInjectionKey)
6
+
7
+ const { isOpen } = useSlideover()
8
+ </script>
9
+
10
+ <template>
11
+ <component :is="slideoverState.component" v-if="slideoverState" v-bind="slideoverState.props" v-model:open="isOpen" />
12
+ </template>