@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,110 @@
1
+ <script lang="ts">
2
+ import { tv } from 'tailwind-variants'
3
+ import type { AccordionRootProps, AccordionRootEmits, AccordionItemProps } from 'radix-vue'
4
+ import type { AppConfig } from '@nuxt/schema'
5
+ import _appConfig from '#build/app.config'
6
+ import theme from '#build/ui/accordion'
7
+ import type { DynamicSlots } from '../types/utils'
8
+
9
+ const appConfig = _appConfig as AppConfig & { ui: { accordion: Partial<typeof theme> } }
10
+
11
+ const accordion = tv({ extend: tv(theme), ...(appConfig.ui?.accordion || {}) })
12
+
13
+ export interface AccordionItem extends Pick<AccordionItemProps, 'disabled'> {
14
+ label?: string
15
+ icon?: string
16
+ trailingIcon?: string
17
+ slot?: string
18
+ content?: string
19
+ /** A unique value for the accordion item. Defaults to the index. */
20
+ value?: string
21
+ }
22
+
23
+ export interface AccordionProps<T> extends Pick<AccordionRootProps, 'collapsible' | 'defaultValue' | 'modelValue' | 'type' | 'disabled'> {
24
+ /**
25
+ * The element or component this component should render as.
26
+ * @defaultValue 'div'
27
+ */
28
+ as?: any
29
+ items?: T[]
30
+ /**
31
+ * The icon displayed on the right side of the trigger.
32
+ * @defaultValue appConfig.ui.icons.chevronDown
33
+ */
34
+ trailingIcon?: string
35
+ class?: any
36
+ ui?: Partial<typeof accordion.slots>
37
+ }
38
+
39
+ export interface AccordionEmits extends AccordionRootEmits {}
40
+
41
+ type SlotProps<T> = (props: { item: T, index: number, open: boolean }) => any
42
+
43
+ export type AccordionSlots<T extends { slot?: string }> = {
44
+ leading: SlotProps<T>
45
+ default: SlotProps<T>
46
+ trailing: SlotProps<T>
47
+ content: SlotProps<T>
48
+ body: SlotProps<T>
49
+ } & DynamicSlots<T, SlotProps<T>>
50
+ </script>
51
+
52
+ <script setup lang="ts" generic="T extends AccordionItem">
53
+ import { computed } from 'vue'
54
+ import { AccordionRoot, AccordionItem, AccordionHeader, AccordionTrigger, AccordionContent, useForwardPropsEmits } from 'radix-vue'
55
+ import { reactivePick } from '@vueuse/core'
56
+ import { useAppConfig } from '#imports'
57
+
58
+ const props = withDefaults(defineProps<AccordionProps<T>>(), {
59
+ type: 'single',
60
+ collapsible: true
61
+ })
62
+ const emits = defineEmits<AccordionEmits>()
63
+ const slots = defineSlots<AccordionSlots<T>>()
64
+
65
+ const appConfig = useAppConfig()
66
+ const rootProps = useForwardPropsEmits(reactivePick(props, 'as', 'collapsible', 'defaultValue', 'disabled', 'modelValue', 'type'), emits)
67
+
68
+ const ui = computed(() => accordion({
69
+ disabled: props.disabled
70
+ }))
71
+ </script>
72
+
73
+ <template>
74
+ <AccordionRoot v-bind="rootProps" :class="ui.root({ class: [props.class, props.ui?.root] })">
75
+ <AccordionItem
76
+ v-for="(item, index) in items"
77
+ v-slot="{ open }"
78
+ :key="index"
79
+ :value="item.value || String(index)"
80
+ :disabled="item.disabled"
81
+ :class="ui.item({ class: props.ui?.item })"
82
+ >
83
+ <AccordionHeader :class="ui.header({ class: props.ui?.header })">
84
+ <AccordionTrigger :class="ui.trigger({ class: props.ui?.trigger, disabled: item.disabled })">
85
+ <slot name="leading" :item="item" :index="index" :open="open">
86
+ <UIcon v-if="item.icon" :name="item.icon" :class="ui.leadingIcon({ class: props.ui?.leadingIcon })" />
87
+ </slot>
88
+
89
+ <span v-if="item.label || !!slots.default" :class="ui.label({ class: props.ui?.label })">
90
+ <slot :item="item" :index="index" :open="open">{{ item.label }}</slot>
91
+ </span>
92
+
93
+ <slot name="trailing" :item="item" :index="index" :open="open">
94
+ <UIcon :name="item.trailingIcon || trailingIcon || appConfig.ui.icons.chevronDown" :class="ui.trailingIcon({ class: props.ui?.trailingIcon })" />
95
+ </slot>
96
+ </AccordionTrigger>
97
+ </AccordionHeader>
98
+
99
+ <AccordionContent v-if="item.content || !!slots.content || (item.slot && !!slots[item.slot]) || !!slots.body || (item.slot && !!slots[`${item.slot}-body`])" :class="ui.content({ class: props.ui?.content })">
100
+ <slot :name="item.slot || 'content'" :item="item" :index="index" :open="open">
101
+ <div :class="ui.body({ class: props.ui?.body })">
102
+ <slot :name="item.slot ? `${item.slot}-body`: 'body'" :item="item" :index="index" :open="open">
103
+ {{ item.content }}
104
+ </slot>
105
+ </div>
106
+ </slot>
107
+ </AccordionContent>
108
+ </AccordionItem>
109
+ </AccordionRoot>
110
+ </template>
@@ -0,0 +1,130 @@
1
+ <script lang="ts">
2
+ import { tv, type VariantProps } from 'tailwind-variants'
3
+ import type { AppConfig } from '@nuxt/schema'
4
+ import _appConfig from '#build/app.config'
5
+ import theme from '#build/ui/alert'
6
+ import type { AvatarProps, ButtonProps } from '../types'
7
+
8
+ const appConfig = _appConfig as AppConfig & { ui: { alert: Partial<typeof theme> } }
9
+
10
+ const alert = tv({ extend: tv(theme), ...(appConfig.ui?.alert || {}) })
11
+
12
+ type AlertVariants = VariantProps<typeof alert>
13
+
14
+ export interface AlertProps {
15
+ /**
16
+ * The element or component this component should render as.
17
+ * @defaultValue 'div'
18
+ */
19
+ as?: any
20
+ title?: string
21
+ description?: string
22
+ icon?: string
23
+ avatar?: AvatarProps
24
+ color?: AlertVariants['color']
25
+ variant?: AlertVariants['variant']
26
+ /**
27
+ * Display a list of actions:
28
+ * - under the title and description if multiline
29
+ * - next to the close button if not multiline
30
+ */
31
+ actions?: ButtonProps[]
32
+ /**
33
+ * Display a close button to dismiss the alert.
34
+ * `{ size: 'md', color: 'gray', variant: 'link' }`{lang="ts-type"}
35
+ * @emits `close`
36
+ * @defaultValue false
37
+ */
38
+ close?: ButtonProps | boolean
39
+ /**
40
+ * The icon displayed in the close button.
41
+ * @defaultValue appConfig.ui.icons.close
42
+ */
43
+ closeIcon?: string
44
+ class?: any
45
+ ui?: Partial<typeof alert.slots>
46
+ }
47
+
48
+ export interface AlertEmits {
49
+ (e: 'close'): void
50
+ }
51
+
52
+ export interface AlertSlots {
53
+ leading(props?: {}): any
54
+ title(props?: {}): any
55
+ description(props?: {}): any
56
+ actions(props?: {}): any
57
+ close(props: { ui: any }): any
58
+ }
59
+ </script>
60
+
61
+ <script setup lang="ts">
62
+ import { computed } from 'vue'
63
+ import { Primitive } from 'radix-vue'
64
+ import { useAppConfig } from '#imports'
65
+ import UIcon from './Icon.vue'
66
+ import UAvatar from './Avatar.vue'
67
+
68
+ const props = defineProps<AlertProps>()
69
+ const emits = defineEmits<AlertEmits>()
70
+ const slots = defineSlots<AlertSlots>()
71
+
72
+ const appConfig = useAppConfig()
73
+
74
+ const multiline = computed(() => !!props.title && !!props.description)
75
+
76
+ const ui = computed(() => alert({
77
+ color: props.color,
78
+ variant: props.variant
79
+ }))
80
+ </script>
81
+
82
+ <template>
83
+ <Primitive :as="as" :class="ui.root({ class: [props.class, props.ui?.root], multiline })">
84
+ <slot name="leading">
85
+ <UAvatar v-if="avatar" :size="((props.ui?.avatarSize || ui.avatarSize()) as AvatarProps['size'])" v-bind="avatar" :class="ui.avatar({ class: props.ui?.avatar })" />
86
+ <UIcon v-else-if="icon" :name="icon" :class="ui.icon({ class: props.ui?.icon })" />
87
+ </slot>
88
+
89
+ <div :class="ui.wrapper({ class: props.ui?.wrapper })">
90
+ <div v-if="title || !!slots.title" :class="ui.title({ class: props.ui?.title })">
91
+ <slot name="title">
92
+ {{ title }}
93
+ </slot>
94
+ </div>
95
+ <div v-if="description || !!slots.description" :class="ui.description({ class: props.ui?.description })">
96
+ <slot name="description">
97
+ {{ description }}
98
+ </slot>
99
+ </div>
100
+
101
+ <div v-if="multiline && actions?.length" :class="ui.actions({ class: props.ui?.actions, multiline: true })">
102
+ <slot name="actions">
103
+ <UButton v-for="(action, index) in actions" :key="index" size="xs" v-bind="action" />
104
+ </slot>
105
+ </div>
106
+ </div>
107
+
108
+ <div v-if="(!multiline && actions?.length) || close" :class="ui.actions({ class: props.ui?.actions, multiline: false })">
109
+ <template v-if="!multiline">
110
+ <slot name="actions">
111
+ <UButton v-for="(action, index) in actions" :key="index" size="xs" v-bind="action" />
112
+ </slot>
113
+ </template>
114
+
115
+ <slot name="close" :ui="ui">
116
+ <UButton
117
+ v-if="close"
118
+ :icon="closeIcon || appConfig.ui.icons.close"
119
+ size="md"
120
+ color="gray"
121
+ variant="link"
122
+ aria-label="Close"
123
+ v-bind="typeof close === 'object' ? close : undefined"
124
+ :class="ui.close({ class: props.ui?.close })"
125
+ @click="emits('close')"
126
+ />
127
+ </slot>
128
+ </div>
129
+ </Primitive>
130
+ </template>
@@ -0,0 +1,42 @@
1
+ <script lang="ts">
2
+ import type { ConfigProviderProps, TooltipProviderProps } from 'radix-vue'
3
+ import type { ToasterProps } from '../types'
4
+
5
+ export interface AppProps extends Omit<ConfigProviderProps, 'useId'> {
6
+ tooltip?: TooltipProviderProps
7
+ toaster?: ToasterProps | null
8
+ }
9
+
10
+ export interface AppSlots {
11
+ default(props?: {}): any
12
+ }
13
+ </script>
14
+
15
+ <script setup lang="ts">
16
+ import { toRef, useId } from 'vue'
17
+ import { ConfigProvider, TooltipProvider, useForwardProps } from 'radix-vue'
18
+ import { reactivePick } from '@vueuse/core'
19
+ import UToaster from './Toaster.vue'
20
+ import UModalProvider from './ModalProvider.vue'
21
+ import USlideoverProvider from './SlideoverProvider.vue'
22
+
23
+ const props = defineProps<AppProps>()
24
+ defineSlots<AppSlots>()
25
+
26
+ const configProviderProps = useForwardProps(reactivePick(props, 'dir', 'scrollBody'))
27
+ const tooltipProps = toRef(() => props.tooltip)
28
+ const toasterProps = toRef(() => props.toaster)
29
+ </script>
30
+
31
+ <template>
32
+ <ConfigProvider :use-id="() => (useId() as string)" v-bind="configProviderProps">
33
+ <TooltipProvider v-bind="tooltipProps">
34
+ <UToaster v-if="toaster !== null" v-bind="toasterProps">
35
+ <slot />
36
+ </UToaster>
37
+ </TooltipProvider>
38
+
39
+ <UModalProvider />
40
+ <USlideoverProvider />
41
+ </ConfigProvider>
42
+ </template>
@@ -0,0 +1,69 @@
1
+ <script lang="ts">
2
+ import { tv, type VariantProps } from 'tailwind-variants'
3
+ import type { AvatarFallbackProps } from 'radix-vue'
4
+ import type { AppConfig } from '@nuxt/schema'
5
+ import _appConfig from '#build/app.config'
6
+ import theme from '#build/ui/avatar'
7
+
8
+ const appConfig = _appConfig as AppConfig & { ui: { avatar: Partial<typeof theme> } }
9
+
10
+ const avatar = tv({ extend: tv(theme), ...(appConfig.ui?.avatar || {}) })
11
+
12
+ type AvatarVariants = VariantProps<typeof avatar>
13
+
14
+ export interface AvatarProps extends Pick<AvatarFallbackProps, 'delayMs'> {
15
+ /**
16
+ * The element or component this component should render as.
17
+ * @defaultValue 'img'
18
+ */
19
+ as?: string | object
20
+ src?: string
21
+ alt?: string
22
+ icon?: string
23
+ text?: string
24
+ size?: AvatarVariants['size']
25
+ class?: any
26
+ ui?: Partial<typeof avatar.slots>
27
+ }
28
+ </script>
29
+
30
+ <script setup lang="ts">
31
+ import { computed } from 'vue'
32
+ import { AvatarRoot, AvatarImage, AvatarFallback, useForwardProps } from 'radix-vue'
33
+ import { reactivePick } from '@vueuse/core'
34
+ import { useAvatarGroup } from '../composables/useAvatarGroup'
35
+ import UIcon from './Icon.vue'
36
+
37
+ defineOptions({ inheritAttrs: false })
38
+
39
+ const props = defineProps<AvatarProps>()
40
+
41
+ const fallbackProps = useForwardProps(reactivePick(props, 'delayMs'))
42
+
43
+ const fallback = computed(() => props.text || (props.alt || '').split(' ').map(word => word.charAt(0)).join('').substring(0, 2))
44
+
45
+ const { size } = useAvatarGroup(props)
46
+
47
+ // eslint-disable-next-line vue/no-dupe-keys
48
+ const ui = computed(() => avatar({
49
+ size: size.value
50
+ }))
51
+ </script>
52
+
53
+ <template>
54
+ <AvatarRoot :class="ui.root({ class: [props.class, props.ui?.root] })">
55
+ <AvatarImage
56
+ v-if="src"
57
+ :as="as"
58
+ :src="src"
59
+ :alt="alt"
60
+ v-bind="$attrs"
61
+ :class="ui.image({ class: props.ui?.image })"
62
+ />
63
+
64
+ <AvatarFallback as-child v-bind="fallbackProps">
65
+ <UIcon v-if="icon" :name="icon" :class="ui.icon({ class: props.ui?.icon })" />
66
+ <span v-else :class="ui.fallback({ class: props.ui?.fallback })">{{ fallback }}</span>
67
+ </AvatarFallback>
68
+ </AvatarRoot>
69
+ </template>
@@ -0,0 +1,98 @@
1
+ <script lang="ts">
2
+ import { tv, type VariantProps } from 'tailwind-variants'
3
+ import type { AppConfig } from '@nuxt/schema'
4
+ import _appConfig from '#build/app.config'
5
+ import theme from '#build/ui/avatar-group'
6
+
7
+ const appConfig = _appConfig as AppConfig & { ui: { avatarGroup: Partial<typeof theme> } }
8
+
9
+ const avatarGroup = tv({ extend: tv(theme), ...(appConfig.ui?.avatarGroup || {}) })
10
+
11
+ type AvatarGroupVariants = VariantProps<typeof avatarGroup>
12
+
13
+ export interface AvatarGroupProps {
14
+ /**
15
+ * The element or component this component should render as.
16
+ * @defaultValue 'div'
17
+ */
18
+ as?: any
19
+ size?: AvatarGroupVariants['size']
20
+ /**
21
+ * The maximum number of avatars to display.
22
+ */
23
+ max?: number | string
24
+ class?: any
25
+ ui?: Partial<typeof avatarGroup.slots>
26
+ }
27
+
28
+ export interface AvatarGroupSlots {
29
+ default(props?: {}): any
30
+ }
31
+ </script>
32
+
33
+ <script setup lang="ts">
34
+ import { computed, provide } from 'vue'
35
+ import { Primitive } from 'radix-vue'
36
+ import { avatarGroupInjectionKey } from '../composables/useAvatarGroup'
37
+ import UAvatar from './Avatar.vue'
38
+
39
+ const props = defineProps<AvatarGroupProps>()
40
+ const slots = defineSlots<AvatarGroupSlots>()
41
+
42
+ const ui = computed(() => avatarGroup({
43
+ size: props.size
44
+ }))
45
+
46
+ const max = computed(() => typeof props.max === 'string' ? Number.parseInt(props.max, 10) : props.max)
47
+
48
+ const children = computed(() => {
49
+ let children = slots.default?.()
50
+ if (children?.length) {
51
+ children = children.flatMap((child: any) => {
52
+ if (typeof child.type === 'symbol') {
53
+ // `v-if="false"` or commented node
54
+ if (typeof child.children === 'string') {
55
+ return
56
+ }
57
+
58
+ return child.children
59
+ }
60
+
61
+ return child
62
+ }).filter(Boolean)
63
+ }
64
+
65
+ return children || []
66
+ })
67
+
68
+ const visibleAvatars = computed(() => {
69
+ if (!children.value.length) {
70
+ return []
71
+ }
72
+
73
+ if (!max.value || max.value <= 0) {
74
+ return [...children.value].reverse()
75
+ }
76
+
77
+ return [...children.value].slice(0, max.value).reverse()
78
+ })
79
+
80
+ const hiddenCount = computed(() => {
81
+ if (!children.value.length) {
82
+ return 0
83
+ }
84
+
85
+ return children.value.length - visibleAvatars.value.length
86
+ })
87
+
88
+ provide(avatarGroupInjectionKey, computed(() => ({
89
+ size: props.size
90
+ })))
91
+ </script>
92
+
93
+ <template>
94
+ <Primitive :as="as" :class="ui.root({ class: [props.class, props.ui?.root] })">
95
+ <UAvatar v-if="hiddenCount > 0" :text="`+${hiddenCount}`" :class="ui.base({ class: props.ui?.base })" />
96
+ <component :is="avatar" v-for="(avatar, count) in visibleAvatars" :key="count" :class="ui.base({ class: props.ui?.base })" />
97
+ </Primitive>
98
+ </template>
@@ -0,0 +1,46 @@
1
+ <script lang="ts">
2
+ import { tv, type VariantProps } from 'tailwind-variants'
3
+ import type { AppConfig } from '@nuxt/schema'
4
+ import _appConfig from '#build/app.config'
5
+ import theme from '#build/ui/badge'
6
+
7
+ const appConfig = _appConfig as AppConfig & { ui: { badge: Partial<typeof theme> } }
8
+
9
+ const badge = tv({ extend: tv(theme), ...(appConfig.ui?.badge || {}) })
10
+
11
+ type BadgeVariants = VariantProps<typeof badge>
12
+
13
+ export interface BadgeProps {
14
+ /**
15
+ * The element or component this component should render as.
16
+ * @defaultValue 'span'
17
+ */
18
+ as?: any
19
+ label?: string | number
20
+ color?: BadgeVariants['color']
21
+ variant?: BadgeVariants['variant']
22
+ size?: BadgeVariants['size']
23
+ class?: any
24
+ }
25
+
26
+ export interface BadgeSlots {
27
+ default(props?: {}): any
28
+ }
29
+ </script>
30
+
31
+ <script setup lang="ts">
32
+ import { Primitive } from 'radix-vue'
33
+
34
+ const props = withDefaults(defineProps<BadgeProps>(), {
35
+ as: 'span'
36
+ })
37
+ defineSlots<BadgeSlots>()
38
+ </script>
39
+
40
+ <template>
41
+ <Primitive :as="as" :class="badge({ color, variant, size, class: props.class })">
42
+ <slot>
43
+ {{ label }}
44
+ </slot>
45
+ </Primitive>
46
+ </template>
@@ -0,0 +1,98 @@
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/breadcrumb'
6
+ import type { AvatarProps, LinkProps } from '../types'
7
+ import type { DynamicSlots } from '../types/utils'
8
+
9
+ const appConfig = _appConfig as AppConfig & { ui: { breadcrumb: Partial<typeof theme> } }
10
+
11
+ const breadcrumb = tv({ extend: tv(theme), ...(appConfig.ui?.breadcrumb || {}) })
12
+
13
+ export interface BreadcrumbItem extends Omit<LinkProps, 'raw' | 'custom'> {
14
+ label?: string
15
+ icon?: string
16
+ avatar?: AvatarProps
17
+ slot?: string
18
+ }
19
+
20
+ export interface BreadcrumbProps<T> {
21
+ /**
22
+ * The element or component this component should render as.
23
+ * @defaultValue 'div'
24
+ */
25
+ as?: any
26
+ items?: T[]
27
+ /**
28
+ * The icon to use as a separator.
29
+ * @defaultValue appConfig.ui.icons.chevronRight
30
+ */
31
+ separatorIcon?: string
32
+ class?: any
33
+ ui?: Partial<typeof breadcrumb.slots>
34
+ }
35
+
36
+ type SlotProps<T> = (props: { item: T, index: number, active?: boolean }) => any
37
+
38
+ export type BreadcrumbSlots<T extends { slot?: string }> = {
39
+ 'item': SlotProps<T>
40
+ 'item-leading': SlotProps<T>
41
+ 'item-label': SlotProps<T>
42
+ 'item-trailing': SlotProps<T>
43
+ 'separator'(props?: {}): any
44
+ } & DynamicSlots<T, SlotProps<T>>
45
+ </script>
46
+
47
+ <script setup lang="ts" generic="T extends BreadcrumbItem">
48
+ import { Primitive } from 'radix-vue'
49
+ import { useAppConfig } from '#imports'
50
+ import UIcon from './Icon.vue'
51
+ import UAvatar from './Avatar.vue'
52
+ import ULinkBase from './LinkBase.vue'
53
+ import ULink from './Link.vue'
54
+ import { pickLinkProps } from '../utils/link'
55
+
56
+ const props = defineProps<BreadcrumbProps<T>>()
57
+ const slots = defineSlots<BreadcrumbSlots<T>>()
58
+
59
+ const appConfig = useAppConfig()
60
+
61
+ // eslint-disable-next-line vue/no-dupe-keys
62
+ const ui = breadcrumb()
63
+ </script>
64
+
65
+ <template>
66
+ <Primitive :as="as" aria-label="breadcrumb" :class="ui.root({ class: [props.class, props.ui?.root] })">
67
+ <ol :class="ui.list({ class: props.ui?.list })">
68
+ <template v-for="(item, index) in items" :key="index">
69
+ <li :class="ui.item({ class: props.ui?.item })">
70
+ <ULink v-slot="{ active, ...slotProps }" v-bind="pickLinkProps(item)" custom>
71
+ <ULinkBase v-bind="slotProps" as="span" :aria-current="active && (index === items!.length - 1) ? 'page' : undefined" :class="ui.link({ class: [props.ui?.link, item.class], active: index === items!.length - 1, disabled: !!item.disabled, to: !!item.to })">
72
+ <slot :name="item.slot || 'item'" :item="item" :index="index">
73
+ <slot :name="item.slot ? `${item.slot}-leading`: 'item-leading'" :item="item" :active="index === items!.length - 1" :index="index">
74
+ <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: index === items!.length - 1 })" />
75
+ <UIcon v-else-if="item.icon" :name="item.icon" :class="ui.linkLeadingIcon({ class: props.ui?.linkLeadingIcon, active: index === items!.length - 1 })" />
76
+ </slot>
77
+
78
+ <span v-if="item.label || !!slots[item.slot ? `${item.slot}-label`: 'item-label']" :class="ui.linkLabel({ class: props.ui?.linkLabel })">
79
+ <slot :name="item.slot ? `${item.slot}-label`: 'item-label'" :item="item" :active="index === items!.length - 1" :index="index">
80
+ {{ item.label }}
81
+ </slot>
82
+ </span>
83
+
84
+ <slot :name="item.slot ? `${item.slot}-trailing`: 'item-trailing'" :item="item" :active="index === items!.length - 1" :index="index" />
85
+ </slot>
86
+ </ULinkBase>
87
+ </ULink>
88
+ </li>
89
+
90
+ <li v-if="index < items!.length - 1" role="presentation" :class="ui.separator({ class: props.ui?.separator })">
91
+ <slot name="separator">
92
+ <UIcon :name="separatorIcon || appConfig.ui.icons.chevronRight" :class="ui.separatorIcon({ class: props.ui?.separatorIcon })" />
93
+ </slot>
94
+ </li>
95
+ </template>
96
+ </ol>
97
+ </Primitive>
98
+ </template>
@@ -0,0 +1,82 @@
1
+ <script lang="ts">
2
+ import { tv, type VariantProps } from 'tailwind-variants'
3
+ import type { AppConfig } from '@nuxt/schema'
4
+ import _appConfig from '#build/app.config'
5
+ import theme from '#build/ui/button'
6
+ import type { LinkProps } from './Link.vue'
7
+ import type { UseComponentIconsProps } from '../composables/useComponentIcons'
8
+ import type { PartialString } from '../types/utils'
9
+
10
+ const appConfig = _appConfig as AppConfig & { ui: { button: Partial<typeof theme> } }
11
+
12
+ const button = tv({ extend: tv(theme), ...(appConfig.ui?.button || {}) })
13
+
14
+ type ButtonVariants = VariantProps<typeof button>
15
+
16
+ export interface ButtonProps extends UseComponentIconsProps, Omit<LinkProps, 'raw' | 'custom'> {
17
+ label?: string
18
+ color?: ButtonVariants['color']
19
+ variant?: ButtonVariants['variant']
20
+ size?: ButtonVariants['size']
21
+ /** Render the button with equal padding on all sides. */
22
+ square?: boolean
23
+ /** Render the button full width. */
24
+ block?: boolean
25
+ class?: any
26
+ ui?: PartialString<typeof button.slots>
27
+ }
28
+
29
+ export interface ButtonSlots {
30
+ leading(props?: {}): any
31
+ default(props?: {}): any
32
+ trailing(props?: {}): any
33
+ }
34
+ </script>
35
+
36
+ <script setup lang="ts">
37
+ import { computed } from 'vue'
38
+ import { useForwardProps } from 'radix-vue'
39
+ import { useComponentIcons } from '../composables/useComponentIcons'
40
+ import { useButtonGroup } from '../composables/useButtonGroup'
41
+ import UIcon from './Icon.vue'
42
+ import ULink from './Link.vue'
43
+ import { pickLinkProps } from '../utils/link'
44
+
45
+ const props = defineProps<ButtonProps>()
46
+ const slots = defineSlots<ButtonSlots>()
47
+
48
+ const linkProps = useForwardProps(pickLinkProps(props))
49
+
50
+ const { orientation, size: buttonSize } = useButtonGroup<ButtonProps>(props)
51
+ const { isLeading, isTrailing, leadingIconName, trailingIconName } = useComponentIcons(props)
52
+
53
+ const ui = computed(() => button({
54
+ color: props.color,
55
+ variant: props.variant,
56
+ size: buttonSize.value,
57
+ loading: props.loading,
58
+ block: props.block,
59
+ square: props.square || (!slots.default && !props.label),
60
+ leading: isLeading.value,
61
+ trailing: isTrailing.value,
62
+ buttonGroup: orientation.value
63
+ }))
64
+ </script>
65
+
66
+ <template>
67
+ <ULink :type="type" :disabled="disabled || loading" :class="ui.base({ class: props.class })" v-bind="linkProps" raw>
68
+ <slot name="leading">
69
+ <UIcon v-if="isLeading && leadingIconName" :name="leadingIconName" :class="ui.leadingIcon({ class: props.ui?.leadingIcon })" />
70
+ </slot>
71
+
72
+ <slot>
73
+ <span v-if="label" :class="ui.label({ class: props.ui?.label })">
74
+ {{ label }}
75
+ </span>
76
+ </slot>
77
+
78
+ <slot name="trailing">
79
+ <UIcon v-if="isTrailing && trailingIconName" :name="trailingIconName" :class="ui.trailingIcon({ class: props.ui?.trailingIcon })" />
80
+ </slot>
81
+ </ULink>
82
+ </template>