@nuxt/ui 3.0.0-alpha.0 → 3.0.0-alpha.10

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (322) hide show
  1. package/.nuxt/ui/accordion.ts +20 -0
  2. package/.nuxt/ui/alert.ts +242 -0
  3. package/.nuxt/ui/avatar-group.ts +40 -0
  4. package/.nuxt/ui/avatar.ts +42 -0
  5. package/.nuxt/ui/badge.ts +194 -0
  6. package/.nuxt/ui/breadcrumb.ts +45 -0
  7. package/.nuxt/ui/button-group.ts +16 -0
  8. package/.nuxt/ui/button.ts +344 -0
  9. package/.nuxt/ui/calendar.ts +85 -0
  10. package/.nuxt/ui/card.ts +8 -0
  11. package/.nuxt/ui/carousel.ts +41 -0
  12. package/.nuxt/ui/checkbox.ts +105 -0
  13. package/.nuxt/ui/chip.ts +67 -0
  14. package/.nuxt/ui/collapsible.ts +6 -0
  15. package/.nuxt/ui/color-picker.ts +39 -0
  16. package/.nuxt/ui/command-palette.ts +50 -0
  17. package/.nuxt/ui/container.ts +3 -0
  18. package/.nuxt/ui/context-menu.ts +198 -0
  19. package/.nuxt/ui/drawer.ts +55 -0
  20. package/.nuxt/ui/dropdown-menu.ts +199 -0
  21. package/.nuxt/ui/form-field.ts +40 -0
  22. package/.nuxt/ui/form.ts +3 -0
  23. package/.nuxt/ui/index.ts +48 -0
  24. package/.nuxt/ui/input-menu.ts +410 -0
  25. package/.nuxt/ui/input-number.ts +204 -0
  26. package/.nuxt/ui/input.ts +263 -0
  27. package/.nuxt/ui/kbd.ts +19 -0
  28. package/.nuxt/ui/link.ts +15 -0
  29. package/.nuxt/ui/modal.ts +28 -0
  30. package/.nuxt/ui/navigation-menu.ts +390 -0
  31. package/.nuxt/ui/pagination.ts +8 -0
  32. package/.nuxt/ui/pin-input.ts +145 -0
  33. package/.nuxt/ui/popover.ts +6 -0
  34. package/.nuxt/ui/progress.ts +258 -0
  35. package/.nuxt/ui/radio-group.ts +112 -0
  36. package/.nuxt/ui/select-menu.ts +316 -0
  37. package/.nuxt/ui/select.ts +315 -0
  38. package/.nuxt/ui/separator.ts +143 -0
  39. package/.nuxt/ui/skeleton.ts +3 -0
  40. package/.nuxt/ui/slideover.ts +63 -0
  41. package/.nuxt/ui/slider.ts +148 -0
  42. package/.nuxt/ui/stepper.ts +180 -0
  43. package/.nuxt/ui/switch.ts +113 -0
  44. package/.nuxt/ui/table.ts +129 -0
  45. package/.nuxt/ui/tabs.ts +227 -0
  46. package/.nuxt/ui/textarea.ts +263 -0
  47. package/.nuxt/ui/toast.ts +66 -0
  48. package/.nuxt/ui/toaster.ts +75 -0
  49. package/.nuxt/ui/tooltip.ts +9 -0
  50. package/README.md +75 -54
  51. package/cli/commands/{init.mjs → make/component.mjs} +5 -5
  52. package/cli/commands/make/index.mjs +14 -0
  53. package/cli/commands/make/locale.mjs +64 -0
  54. package/cli/index.mjs +2 -2
  55. package/cli/templates.mjs +52 -7
  56. package/cli/utils.mjs +14 -0
  57. package/dist/chunks/component-meta.cjs +82802 -0
  58. package/dist/chunks/component-meta.mjs +82800 -0
  59. package/dist/client/devtools/200.html +1 -0
  60. package/dist/client/devtools/404.html +1 -0
  61. package/dist/client/devtools/_fonts/rP2Wp2ywxg089UriCZaSExd86J3t9jz86MvyyKK58UfivUw4aw-SK92LTmKP0.woff2 +0 -0
  62. package/dist/client/devtools/_fonts/rP2Wp2ywxg089UriCZaSExd86J3t9jz86MvyyKy58UfivUw-9uYm8d48E4.woff2 +0 -0
  63. package/dist/client/devtools/_fonts/rP2Yp2ywxg089UriI5-g4vlH9VoD8Cmcqbu0-K6z9mXg-VNw7NHvqnp.woff2 +0 -0
  64. package/dist/client/devtools/_fonts/rP2Yp2ywxg089UriI5-g4vlH9VoD8Cmcqbu6-K6z9mXgjU0-EkYdMs3MAX.woff2 +0 -0
  65. package/dist/client/devtools/_fonts/rP2rp2ywxg089UriCZaSExd86J3t9jz86Mvy4qCRAL19DksVat-7DW3w-R7n06NbhGy.woff +0 -0
  66. package/dist/client/devtools/_fonts/rP2rp2ywxg089UriCZaSExd86J3t9jz86Mvy4qCRAL19DksVat-JDG3w-leGNfkTmsj.woff +0 -0
  67. package/dist/client/devtools/_fonts/rP2rp2ywxg089UriCZaSExd86J3t9jz86Mvy4qCRAL19DksVat-JDW3w-ciElMF03ku.woff +0 -0
  68. package/dist/client/devtools/_fonts/rP2rp2ywxg089UriCZaSExd86J3t9jz86Mvy4qCRAL19DksVat8JCm3w-sB722Uoa0f.woff +0 -0
  69. package/dist/client/devtools/_fonts/rP2rp2ywxg089UriCZaSExd86J3t9jz86Mvy4qCRAL19DksVat8JDW3w-PBDI1JDjwV.woff +0 -0
  70. package/dist/client/devtools/_fonts/rP2rp2ywxg089UriCZaSExd86J3t9jz86Mvy4qCRAL19DksVat8gCm3w-0q1hqVn09O.woff +0 -0
  71. package/dist/client/devtools/_fonts/rP2rp2ywxg089UriCZaSExd86J3t9jz86Mvy4qCRAL19DksVat9XCm3w-ByvzuLy2fa.woff +0 -0
  72. package/dist/client/devtools/_fonts/rP2rp2ywxg089UriCZaSExd86J3t9jz86Mvy4qCRAL19DksVat9uCm3w-5TKCIs6EEw.woff +0 -0
  73. package/dist/client/devtools/_fonts/rP2rp2ywxg089UriCZaSExd86J3t9jz86Mvy4qCRAL19DksVat_XDW3w-r2swRDGfn2.woff +0 -0
  74. package/dist/client/devtools/_fonts/rP2tp2ywxg089UriI5-g4vlH9VoD8CmcqZG40F9JadbnoEwAC5thTQ-ldB60l5U8r.woff +0 -0
  75. package/dist/client/devtools/_fonts/rP2tp2ywxg089UriI5-g4vlH9VoD8CmcqZG40F9JadbnoEwAIpthTQ-wbFKGFDrgo.woff +0 -0
  76. package/dist/client/devtools/_fonts/rP2tp2ywxg089UriI5-g4vlH9VoD8CmcqZG40F9JadbnoEwAIpxhTQ-LLUBv5jskj.woff +0 -0
  77. package/dist/client/devtools/_fonts/rP2tp2ywxg089UriI5-g4vlH9VoD8CmcqZG40F9JadbnoEwARZthTQ-F71RdTRbNg.woff +0 -0
  78. package/dist/client/devtools/_fonts/rP2tp2ywxg089UriI5-g4vlH9VoD8CmcqZG40F9JadbnoEwA_JxhTQ-6nh65gZkc0.woff +0 -0
  79. package/dist/client/devtools/_fonts/rP2tp2ywxg089UriI5-g4vlH9VoD8CmcqZG40F9JadbnoEwAfJthTQ-aMoWEJLmTt.woff +0 -0
  80. package/dist/client/devtools/_fonts/rP2tp2ywxg089UriI5-g4vlH9VoD8CmcqZG40F9JadbnoEwAkJxhTQ-WMBvmLOgKm.woff +0 -0
  81. package/dist/client/devtools/_fonts/rP2tp2ywxg089UriI5-g4vlH9VoD8CmcqZG40F9JadbnoEwAop1hTQ-utGC2hnWq2.woff +0 -0
  82. package/dist/client/devtools/_fonts/rP2tp2ywxg089UriI5-g4vlH9VoD8CmcqZG40F9JadbnoEwAopxhTQ-YpyTieVa5B.woff +0 -0
  83. package/dist/client/devtools/_nuxt/B1fTd_Rf.js +1 -0
  84. package/dist/client/devtools/_nuxt/CSUxkedg.js +1 -0
  85. package/dist/client/devtools/_nuxt/CbRTGpb7.js +1 -0
  86. package/dist/client/devtools/_nuxt/YQTlxbcT.js +53 -0
  87. package/dist/client/devtools/_nuxt/builds/latest.json +1 -0
  88. package/dist/client/devtools/_nuxt/builds/meta/b3465abc-0a92-4ee7-ba6b-e5174891fcc0.json +1 -0
  89. package/dist/client/devtools/_nuxt/entry.DXXceQev.css +1 -0
  90. package/dist/client/devtools/_nuxt/error-404.BJpkZFyY.css +1 -0
  91. package/dist/client/devtools/_nuxt/error-500.D3i9VDlt.css +1 -0
  92. package/dist/client/devtools/favicon.svg +1 -0
  93. package/dist/client/devtools/index.html +1 -0
  94. package/dist/devtools/runtime/DevtoolsRenderer.vue +54 -0
  95. package/dist/devtools/runtime/examples/AvatarGroupExample.vue +7 -0
  96. package/dist/devtools/runtime/examples/ButtonGroupExample.vue +8 -0
  97. package/dist/devtools/runtime/examples/CardExample.vue +13 -0
  98. package/dist/devtools/runtime/examples/CarouselExample.vue +13 -0
  99. package/dist/devtools/runtime/examples/ChipExample.vue +5 -0
  100. package/dist/devtools/runtime/examples/CollapsibleExample.vue +8 -0
  101. package/dist/devtools/runtime/examples/CommandPaletteExample.vue +29 -0
  102. package/dist/devtools/runtime/examples/ContainerExample.vue +5 -0
  103. package/dist/devtools/runtime/examples/ContextMenuExample.vue +5 -0
  104. package/dist/devtools/runtime/examples/DrawerExample.vue +8 -0
  105. package/dist/devtools/runtime/examples/DropdownMenuExample.vue +5 -0
  106. package/dist/devtools/runtime/examples/FormExample.vue +30 -0
  107. package/dist/devtools/runtime/examples/FormFieldExample.vue +5 -0
  108. package/dist/devtools/runtime/examples/LinkExample.vue +5 -0
  109. package/dist/devtools/runtime/examples/ModalExample.vue +8 -0
  110. package/dist/devtools/runtime/examples/PopoverExample.vue +8 -0
  111. package/dist/devtools/runtime/examples/SkeletonExample.vue +3 -0
  112. package/dist/devtools/runtime/examples/SlideoverExample.vue +8 -0
  113. package/dist/devtools/runtime/examples/StepperExample.vue +44 -0
  114. package/dist/devtools/runtime/examples/ToasterExample.vue +11 -0
  115. package/dist/devtools/runtime/examples/TooltipExample.vue +5 -0
  116. package/dist/module.cjs +223 -4
  117. package/dist/module.d.cts +54 -0
  118. package/dist/module.d.mts +38 -7
  119. package/dist/module.d.ts +38 -7
  120. package/dist/module.json +4 -3
  121. package/dist/module.mjs +180 -2617
  122. package/dist/runtime/components/Accordion.vue +95 -11
  123. package/dist/runtime/components/Alert.vue +69 -10
  124. package/dist/runtime/components/App.vue +28 -5
  125. package/dist/runtime/components/Avatar.vue +57 -12
  126. package/dist/runtime/components/AvatarGroup.vue +34 -7
  127. package/dist/runtime/components/Badge.vue +61 -9
  128. package/dist/runtime/components/Breadcrumb.vue +93 -16
  129. package/dist/runtime/components/Button.vue +78 -12
  130. package/dist/runtime/components/ButtonGroup.vue +35 -8
  131. package/dist/runtime/components/Calendar.vue +190 -0
  132. package/dist/runtime/components/Card.vue +29 -7
  133. package/dist/runtime/components/Carousel.vue +322 -0
  134. package/dist/runtime/components/Checkbox.vue +64 -30
  135. package/dist/runtime/components/Chip.vue +48 -8
  136. package/dist/runtime/components/Collapsible.vue +32 -8
  137. package/dist/runtime/components/ColorPicker.vue +265 -0
  138. package/dist/runtime/components/CommandPalette.vue +207 -88
  139. package/dist/runtime/components/Container.vue +26 -7
  140. package/dist/runtime/components/ContextMenu.vue +150 -11
  141. package/dist/runtime/components/ContextMenuContent.vue +63 -19
  142. package/dist/runtime/components/Drawer.vue +68 -15
  143. package/dist/runtime/components/DropdownMenu.vue +147 -12
  144. package/dist/runtime/components/DropdownMenuContent.vue +69 -19
  145. package/dist/runtime/components/Form.vue +80 -42
  146. package/dist/runtime/components/FormField.vue +58 -21
  147. package/dist/runtime/components/Icon.vue +13 -3
  148. package/dist/runtime/components/Input.vue +61 -12
  149. package/dist/runtime/components/InputMenu.vue +247 -53
  150. package/dist/runtime/components/InputNumber.vue +192 -0
  151. package/dist/runtime/components/Kbd.vue +31 -7
  152. package/dist/runtime/components/Link.vue +148 -21
  153. package/dist/runtime/components/LinkBase.vue +21 -8
  154. package/dist/runtime/components/Modal.vue +90 -15
  155. package/dist/runtime/components/NavigationMenu.vue +234 -69
  156. package/dist/runtime/components/Pagination.vue +124 -15
  157. package/dist/runtime/components/PinInput.vue +96 -0
  158. package/dist/runtime/components/Popover.vue +66 -11
  159. package/dist/runtime/components/Progress.vue +67 -12
  160. package/dist/runtime/components/RadioGroup.vue +78 -9
  161. package/dist/runtime/components/Select.vue +155 -26
  162. package/dist/runtime/components/SelectMenu.vue +245 -63
  163. package/dist/runtime/components/Separator.vue +42 -7
  164. package/dist/runtime/components/Skeleton.vue +22 -7
  165. package/dist/runtime/components/Slideover.vue +88 -15
  166. package/dist/runtime/components/Slider.vue +37 -7
  167. package/dist/runtime/components/Stepper.vue +171 -0
  168. package/dist/runtime/components/Switch.vue +58 -14
  169. package/dist/runtime/components/Table.vue +262 -0
  170. package/dist/runtime/components/Tabs.vue +97 -17
  171. package/dist/runtime/components/Textarea.vue +55 -9
  172. package/dist/runtime/components/Toast.vue +66 -9
  173. package/dist/runtime/components/Toaster.vue +57 -21
  174. package/dist/runtime/components/Tooltip.vue +49 -10
  175. package/dist/runtime/composables/defineLocale.d.ts +9 -0
  176. package/dist/runtime/composables/defineLocale.js +4 -0
  177. package/dist/runtime/composables/defineShortcuts.d.ts +1 -1
  178. package/dist/runtime/composables/defineShortcuts.js +2 -8
  179. package/dist/runtime/composables/extendDevtoolsMeta.d.ts +7 -0
  180. package/dist/runtime/composables/extendDevtoolsMeta.js +2 -0
  181. package/dist/runtime/composables/useAvatarGroup.d.ts +2 -2
  182. package/dist/runtime/composables/useButtonGroup.d.ts +5 -5
  183. package/dist/runtime/composables/useComponentIcons.d.ts +3 -0
  184. package/dist/runtime/composables/useFormField.d.ts +13 -6
  185. package/dist/runtime/composables/useFormField.js +12 -7
  186. package/dist/runtime/composables/useKbd.d.ts +10 -3
  187. package/dist/runtime/composables/useKbd.js +14 -8
  188. package/dist/runtime/composables/useLocale.d.ts +4 -0
  189. package/dist/runtime/composables/useLocale.js +10 -0
  190. package/dist/runtime/composables/useModal.d.ts +2 -2
  191. package/dist/runtime/composables/useSlideover.d.ts +2 -2
  192. package/dist/runtime/composables/useToast.d.ts +2 -2
  193. package/dist/runtime/index.css +1 -0
  194. package/dist/runtime/keyframes.css +1 -0
  195. package/dist/runtime/locale/ar.d.ts +2 -0
  196. package/dist/runtime/locale/ar.js +53 -0
  197. package/dist/runtime/locale/cs.d.ts +2 -0
  198. package/dist/runtime/locale/cs.js +52 -0
  199. package/dist/runtime/locale/de.d.ts +2 -0
  200. package/dist/runtime/locale/de.js +52 -0
  201. package/dist/runtime/locale/en.d.ts +2 -0
  202. package/dist/runtime/locale/en.js +52 -0
  203. package/dist/runtime/locale/es.d.ts +2 -0
  204. package/dist/runtime/locale/es.js +52 -0
  205. package/dist/runtime/locale/fa_ir.d.ts +2 -0
  206. package/dist/runtime/locale/fa_ir.js +53 -0
  207. package/dist/runtime/locale/fr.d.ts +2 -0
  208. package/dist/runtime/locale/fr.js +52 -0
  209. package/dist/runtime/locale/index.d.ts +19 -0
  210. package/dist/runtime/locale/index.js +19 -0
  211. package/dist/runtime/locale/it.d.ts +2 -0
  212. package/dist/runtime/locale/it.js +52 -0
  213. package/dist/runtime/locale/ja.d.ts +2 -0
  214. package/dist/runtime/locale/ja.js +52 -0
  215. package/dist/runtime/locale/ko.d.ts +2 -0
  216. package/dist/runtime/locale/ko.js +52 -0
  217. package/dist/runtime/locale/nl.d.ts +2 -0
  218. package/dist/runtime/locale/nl.js +52 -0
  219. package/dist/runtime/locale/pl.d.ts +2 -0
  220. package/dist/runtime/locale/pl.js +52 -0
  221. package/dist/runtime/locale/pt.d.ts +2 -0
  222. package/dist/runtime/locale/pt.js +52 -0
  223. package/dist/runtime/locale/pt_br.d.ts +2 -0
  224. package/dist/runtime/locale/pt_br.js +52 -0
  225. package/dist/runtime/locale/ru.d.ts +2 -0
  226. package/dist/runtime/locale/ru.js +52 -0
  227. package/dist/runtime/locale/sk.d.ts +2 -0
  228. package/dist/runtime/locale/sk.js +52 -0
  229. package/dist/runtime/locale/tr.d.ts +2 -0
  230. package/dist/runtime/locale/tr.js +52 -0
  231. package/dist/runtime/locale/zh_hans.d.ts +2 -0
  232. package/dist/runtime/locale/zh_hans.js +52 -0
  233. package/dist/runtime/locale/zh_hant.d.ts +2 -0
  234. package/dist/runtime/locale/zh_hant.js +52 -0
  235. package/dist/runtime/plugins/colors.d.ts +2 -0
  236. package/dist/runtime/plugins/colors.js +12 -8
  237. package/dist/runtime/plugins/modal.d.ts +2 -0
  238. package/dist/runtime/plugins/slideover.d.ts +2 -0
  239. package/dist/runtime/types/form.d.ts +10 -4
  240. package/dist/runtime/types/index.d.ts +50 -42
  241. package/dist/runtime/types/index.js +8 -0
  242. package/dist/runtime/types/locale.d.ts +54 -0
  243. package/dist/runtime/types/utils.d.ts +8 -3
  244. package/dist/runtime/utils/form.d.ts +7 -5
  245. package/dist/runtime/utils/form.js +117 -28
  246. package/dist/runtime/utils/index.d.ts +2 -1
  247. package/dist/runtime/utils/index.js +16 -0
  248. package/dist/runtime/utils/link.d.ts +25 -55
  249. package/dist/runtime/utils/link.js +1 -1
  250. package/dist/runtime/utils/locale.d.ts +15 -0
  251. package/dist/runtime/utils/locale.js +25 -0
  252. package/dist/runtime/vue/components/Icon.vue +15 -0
  253. package/dist/runtime/vue/components/Link.vue +208 -0
  254. package/dist/runtime/vue/plugins/color-mode.d.ts +4 -0
  255. package/dist/runtime/vue/plugins/color-mode.js +6 -0
  256. package/dist/runtime/vue/plugins/head.d.ts +4 -0
  257. package/dist/runtime/vue/plugins/head.js +6 -0
  258. package/dist/runtime/vue/stubs.d.ts +15 -0
  259. package/dist/runtime/vue/stubs.js +27 -0
  260. package/dist/shared/ui.CwmIkD_Y.cjs +3269 -0
  261. package/dist/shared/ui.D_93iuwH.mjs +3262 -0
  262. package/dist/unplugin.cjs +192 -0
  263. package/dist/unplugin.d.cts +49 -0
  264. package/dist/unplugin.d.mts +49 -0
  265. package/dist/unplugin.d.ts +49 -0
  266. package/dist/unplugin.mjs +181 -0
  267. package/dist/vite.cjs +22 -0
  268. package/dist/vite.d.cts +13 -0
  269. package/dist/vite.d.mts +13 -0
  270. package/dist/vite.d.ts +13 -0
  271. package/dist/vite.mjs +20 -0
  272. package/package.json +103 -37
  273. package/vue-plugin.d.ts +5 -0
  274. package/dist/runtime/assets/css/animations.css +0 -1
  275. package/dist/runtime/components/Accordion.vue.d.ts +0 -492
  276. package/dist/runtime/components/Alert.vue.d.ts +0 -548
  277. package/dist/runtime/components/App.vue.d.ts +0 -25
  278. package/dist/runtime/components/Avatar.vue.d.ts +0 -384
  279. package/dist/runtime/components/AvatarGroup.vue.d.ts +0 -381
  280. package/dist/runtime/components/Badge.vue.d.ts +0 -422
  281. package/dist/runtime/components/Breadcrumb.vue.d.ts +0 -307
  282. package/dist/runtime/components/Button.vue.d.ts +0 -949
  283. package/dist/runtime/components/ButtonGroup.vue.d.ts +0 -182
  284. package/dist/runtime/components/Card.vue.d.ts +0 -191
  285. package/dist/runtime/components/Checkbox.vue.d.ts +0 -819
  286. package/dist/runtime/components/Chip.vue.d.ts +0 -590
  287. package/dist/runtime/components/Collapsible.vue.d.ts +0 -159
  288. package/dist/runtime/components/CommandPalette.vue.d.ts +0 -684
  289. package/dist/runtime/components/Container.vue.d.ts +0 -27
  290. package/dist/runtime/components/ContextMenu.vue.d.ts +0 -796
  291. package/dist/runtime/components/Drawer.vue.d.ts +0 -343
  292. package/dist/runtime/components/DropdownMenu.vue.d.ts +0 -815
  293. package/dist/runtime/components/DropdownMenuContent.vue.d.ts +0 -0
  294. package/dist/runtime/components/Form.vue.d.ts +0 -39
  295. package/dist/runtime/components/FormField.vue.d.ts +0 -356
  296. package/dist/runtime/components/Icon.vue.d.ts +0 -17
  297. package/dist/runtime/components/Input.vue.d.ts +0 -1137
  298. package/dist/runtime/components/InputMenu.vue.d.ts +0 -2121
  299. package/dist/runtime/components/Kbd.vue.d.ts +0 -169
  300. package/dist/runtime/components/Link.vue.d.ts +0 -76
  301. package/dist/runtime/components/LinkBase.vue.d.ts +0 -49
  302. package/dist/runtime/components/Modal.vue.d.ts +0 -319
  303. package/dist/runtime/components/NavigationMenu.vue.d.ts +0 -1789
  304. package/dist/runtime/components/Pagination.vue.d.ts +0 -295
  305. package/dist/runtime/components/Popover.vue.d.ts +0 -197
  306. package/dist/runtime/components/Progress.vue.d.ts +0 -1781
  307. package/dist/runtime/components/RadioGroup.vue.d.ts +0 -1715
  308. package/dist/runtime/components/Select.vue.d.ts +0 -1569
  309. package/dist/runtime/components/SelectMenu.vue.d.ts +0 -1661
  310. package/dist/runtime/components/Separator.vue.d.ts +0 -0
  311. package/dist/runtime/components/Skeleton.vue.d.ts +0 -26
  312. package/dist/runtime/components/Slideover.vue.d.ts +0 -375
  313. package/dist/runtime/components/Slider.vue.d.ts +0 -0
  314. package/dist/runtime/components/Switch.vue.d.ts +0 -1676
  315. package/dist/runtime/components/Tabs.vue.d.ts +0 -934
  316. package/dist/runtime/components/Textarea.vue.d.ts +0 -1133
  317. package/dist/runtime/components/Toast.vue.d.ts +0 -0
  318. package/dist/runtime/components/Toaster.vue.d.ts +0 -362
  319. package/dist/runtime/components/Tooltip.vue.d.ts +0 -248
  320. package/dist/runtime/types/component.d.ts +0 -17
  321. package/dist/runtime/types/component.js +0 -0
  322. /package/dist/runtime/{components/ContextMenuContent.vue.d.ts → types/locale.js} +0 -0
@@ -1,92 +1,247 @@
1
- <script>
2
- import { tv } from "tailwind-variants";
3
- import _appConfig from "#build/app.config";
4
- import theme from "#build/ui/select-menu";
5
- const appConfig = _appConfig;
6
- const selectMenu = tv({ extend: tv(theme), ...appConfig.ui?.selectMenu || {} });
1
+ <script lang="ts">
2
+ import { tv, type VariantProps } from 'tailwind-variants'
3
+ import type { ComboboxRootProps, ComboboxRootEmits, ComboboxContentProps, ComboboxArrowProps, AcceptableValue } from 'reka-ui'
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 { extendDevtoolsMeta } from '../composables/extendDevtoolsMeta'
9
+ import type { AvatarProps, ChipProps, InputProps } from '../types'
10
+ import type { PartialString, MaybeArrayOfArray, MaybeArrayOfArrayItem, SelectModelValue, SelectModelValueEmits, SelectItemKey } from '../types/utils'
11
+
12
+ const appConfig = _appConfig as AppConfig & { ui: { selectMenu: Partial<typeof theme> } }
13
+
14
+ const selectMenu = tv({ extend: tv(theme), ...(appConfig.ui?.selectMenu || {}) })
15
+
16
+ export interface SelectMenuItem {
17
+ label?: string
18
+ icon?: string
19
+ avatar?: AvatarProps
20
+ chip?: ChipProps
21
+ /**
22
+ * The item type.
23
+ * @defaultValue 'item'
24
+ */
25
+ type?: 'label' | 'separator' | 'item'
26
+ disabled?: boolean
27
+ onSelect?(e?: Event): void
28
+ }
29
+
30
+ type SelectMenuVariants = VariantProps<typeof selectMenu>
31
+
32
+ export interface SelectMenuProps<T extends MaybeArrayOfArrayItem<I>, I extends MaybeArrayOfArray<SelectMenuItem | AcceptableValue | boolean> = MaybeArrayOfArray<SelectMenuItem | AcceptableValue | boolean>, V extends SelectItemKey<T> | undefined = undefined, M extends boolean = false> extends Pick<ComboboxRootProps<T>, 'open' | 'defaultOpen' | 'disabled' | 'name' | 'resetSearchTermOnBlur' | 'highlightOnHover'>, UseComponentIconsProps {
33
+ id?: string
34
+ /** The placeholder text when the select is empty. */
35
+ placeholder?: string
36
+ /**
37
+ * Whether to display the search input or not.
38
+ * Can be an object to pass additional props to the input.
39
+ * `{ placeholder: 'Search...', variant: 'none' }`{lang="ts-type"}
40
+ * @defaultValue true
41
+ */
42
+ searchInput?: boolean | InputProps
43
+ color?: SelectMenuVariants['color']
44
+ variant?: SelectMenuVariants['variant']
45
+ size?: SelectMenuVariants['size']
46
+ required?: boolean
47
+ /**
48
+ * The icon displayed to open the menu.
49
+ * @defaultValue appConfig.ui.icons.chevronDown
50
+ */
51
+ trailingIcon?: string
52
+ /**
53
+ * The icon displayed when an item is selected.
54
+ * @defaultValue appConfig.ui.icons.check
55
+ */
56
+ selectedIcon?: string
57
+ /**
58
+ * The content of the menu.
59
+ * @defaultValue { side: 'bottom', sideOffset: 8, collisionPadding: 8, position: 'popper' }
60
+ */
61
+ content?: Omit<ComboboxContentProps, 'as' | 'asChild' | 'forceMount'>
62
+ /**
63
+ * Display an arrow alongside the menu.
64
+ * @defaultValue false
65
+ */
66
+ arrow?: boolean | Omit<ComboboxArrowProps, 'as' | 'asChild'>
67
+ /**
68
+ * Render the menu in a portal.
69
+ * @defaultValue true
70
+ */
71
+ portal?: boolean
72
+ /**
73
+ * When `items` is an array of objects, select the field to use as the value instead of the object itself.
74
+ * @defaultValue undefined
75
+ */
76
+ valueKey?: V
77
+ /**
78
+ * When `items` is an array of objects, select the field to use as the label.
79
+ * @defaultValue 'label'
80
+ */
81
+ labelKey?: V
82
+ items?: I
83
+ /** The value of the SelectMenu when initially rendered. Use when you do not need to control the state of the SelectMenu. */
84
+ defaultValue?: SelectModelValue<T, V, M>
85
+ /** The controlled value of the SelectMenu. Can be binded-with with `v-model`. */
86
+ modelValue?: SelectModelValue<T, V, M>
87
+ /** Whether multiple options can be selected or not. */
88
+ multiple?: M & boolean
89
+ /** Highlight the ring color like a focus state. */
90
+ highlight?: boolean
91
+ /**
92
+ * Determines if custom user input that does not exist in options can be added.
93
+ * @defaultValue false
94
+ */
95
+ createItem?: boolean | 'always' | { position?: 'top' | 'bottom', when?: 'empty' | 'always' }
96
+ /**
97
+ * Fields to filter items by.
98
+ * @defaultValue [labelKey]
99
+ */
100
+ filterFields?: string[]
101
+ /**
102
+ * When `true`, disable the default filters, useful for custom filtering (useAsyncData, useFetch, etc.).
103
+ * @defaultValue false
104
+ */
105
+ ignoreFilter?: boolean
106
+ class?: any
107
+ ui?: PartialString<typeof selectMenu.slots>
108
+ }
109
+
110
+ export type SelectMenuEmits<T, V, M extends boolean> = Omit<ComboboxRootEmits<T>, 'update:modelValue'> & {
111
+ change: [payload: Event]
112
+ blur: [payload: FocusEvent]
113
+ focus: [payload: FocusEvent]
114
+ create: [item: string]
115
+ } & SelectModelValueEmits<T, V, M>
116
+
117
+ type SlotProps<T> = (props: { item: T, index: number }) => any
118
+
119
+ export interface SelectMenuSlots<T, M extends boolean> {
120
+ 'leading'(props: { modelValue?: M extends true ? T[] : T, open: boolean, ui: any }): any
121
+ 'default'(props: { modelValue?: M extends true ? T[] : T, open: boolean }): any
122
+ 'trailing'(props: { modelValue?: M extends true ? T[] : T, open: boolean, ui: any }): any
123
+ 'empty'(props: { searchTerm?: string }): any
124
+ 'item': SlotProps<T>
125
+ 'item-leading': SlotProps<T>
126
+ 'item-label': SlotProps<T>
127
+ 'item-trailing': SlotProps<T>
128
+ 'create-item-label'(props: { item: string }): any
129
+ }
130
+
131
+ extendDevtoolsMeta({ defaultProps: { items: ['Option 1', 'Option 2', 'Option 3'] } })
7
132
  </script>
8
133
 
9
- <script setup lang="ts" generic="T extends SelectMenuItem | AcceptableValue">
10
- import { computed, toRef } from 'vue'
11
- import { ComboboxRoot, ComboboxAnchor, ComboboxInput, ComboboxTrigger, ComboboxPortal, ComboboxContent, ComboboxViewport, ComboboxEmpty, ComboboxGroup, ComboboxLabel, ComboboxSeparator, ComboboxItem, ComboboxItemIndicator, useForwardPropsEmits } from 'radix-vue'
134
+ <script setup lang="ts" generic="T extends MaybeArrayOfArrayItem<I>, I extends MaybeArrayOfArray<SelectMenuItem | AcceptableValue | boolean> = MaybeArrayOfArray<SelectMenuItem | AcceptableValue | boolean>, V extends SelectItemKey<T> | undefined = undefined, M extends boolean = false">
135
+ import { computed, toRef, toRaw } from 'vue'
136
+ import { ComboboxRoot, ComboboxArrow, ComboboxAnchor, ComboboxInput, ComboboxTrigger, ComboboxPortal, ComboboxContent, ComboboxViewport, ComboboxEmpty, ComboboxGroup, ComboboxLabel, ComboboxSeparator, ComboboxItem, ComboboxItemIndicator, useForwardPropsEmits, useFilter } from 'reka-ui'
12
137
  import { defu } from 'defu'
13
- import { reactivePick } from '@vueuse/core'
138
+ import { reactivePick, createReusableTemplate } from '@vueuse/core'
14
139
  import { useAppConfig } from '#imports'
15
140
  import { useButtonGroup } from '../composables/useButtonGroup'
16
141
  import { useComponentIcons } from '../composables/useComponentIcons'
17
142
  import { useFormField } from '../composables/useFormField'
143
+ import { useLocale } from '../composables/useLocale'
144
+ import { get, compare } from '../utils'
18
145
  import UIcon from './Icon.vue'
19
146
  import UAvatar from './Avatar.vue'
20
147
  import UChip from './Chip.vue'
21
- import { get } from '../utils'
148
+ import UInput from './Input.vue'
22
149
 
23
- const props = withDefaults(defineProps<SelectMenuProps<T>>(), {
24
- search: true,
150
+ const props = withDefaults(defineProps<SelectMenuProps<T, I, V, M>>(), {
25
151
  portal: true,
26
- autofocusDelay: 0,
27
- searchPlaceholder: 'Search...',
28
- filter: () => ['label']
152
+ searchInput: true,
153
+ labelKey: 'label' as never
29
154
  })
30
- const emits = defineEmits<SelectMenuEmits<T>>()
31
- const slots = defineSlots<SelectMenuSlots<T>>()
155
+ const emits = defineEmits<SelectMenuEmits<T, V, M>>()
156
+ const slots = defineSlots<SelectMenuSlots<T, M>>()
32
157
 
33
158
  const searchTerm = defineModel<string>('searchTerm', { default: '' })
34
159
 
160
+ const { t } = useLocale()
35
161
  const appConfig = useAppConfig()
36
- const rootProps = useForwardPropsEmits(reactivePick(props, 'modelValue', 'defaultValue', 'selectedValue', 'open', 'defaultOpen', 'multiple', 'resetSearchTermOnBlur'), emits)
37
- const contentProps = toRef(() => defu(props.content, { side: 'bottom', sideOffset: 8, position: 'popper' }) as ComboboxContentProps)
162
+ const { contains } = useFilter({ sensitivity: 'base' })
163
+
164
+ const rootProps = useForwardPropsEmits(reactivePick(props, 'modelValue', 'defaultValue', 'open', 'defaultOpen', 'multiple', 'resetSearchTermOnBlur', 'highlightOnHover'), emits)
165
+ const contentProps = toRef(() => defu(props.content, { side: 'bottom', sideOffset: 8, collisionPadding: 8, position: 'popper' }) as ComboboxContentProps)
166
+ const arrowProps = toRef(() => props.arrow as ComboboxArrowProps)
167
+ const searchInputProps = toRef(() => defu(props.searchInput, { placeholder: 'Search...', variant: 'none' }) as InputProps)
168
+
38
169
  const { emitFormBlur, emitFormInput, emitFormChange, size: formGroupSize, color, id, name, highlight, disabled } = useFormField<InputProps>(props)
39
170
  const { orientation, size: buttonGroupSize } = useButtonGroup<InputProps>(props)
40
171
  const { isLeading, isTrailing, leadingIconName, trailingIconName } = useComponentIcons(toRef(() => defu(props, { trailingIcon: appConfig.ui.icons.chevronDown })))
41
172
 
42
173
  const selectSize = computed(() => buttonGroupSize.value || formGroupSize.value)
43
174
 
175
+ const [DefineCreateItemTemplate, ReuseCreateItemTemplate] = createReusableTemplate()
176
+
44
177
  const ui = computed(() => selectMenu({
45
178
  color: color.value,
46
179
  variant: props.variant,
47
180
  size: selectSize?.value,
48
181
  loading: props.loading,
49
182
  highlight: highlight.value,
50
- leading: isLeading.value || !!slots.leading,
183
+ leading: isLeading.value || !!props.avatar || !!slots.leading,
51
184
  trailing: isTrailing.value || !!slots.trailing,
52
185
  buttonGroup: orientation.value
53
186
  }))
54
187
 
55
- function displayValue(val: T, multiple?: boolean): string {
56
- if (multiple && Array.isArray(val)) {
57
- return val.map(v => displayValue(v)).join(', ')
188
+ function displayValue(value: T | T[]): string {
189
+ if (props.multiple && Array.isArray(value)) {
190
+ return value.map(v => displayValue(v)).filter(Boolean).join(', ')
58
191
  }
59
192
 
60
- if (typeof val === 'object') {
61
- return val.label
193
+ if (!props.valueKey) {
194
+ return value && (typeof value === 'object' ? get(value, props.labelKey as string) : value)
62
195
  }
63
196
 
64
- return val && String(val)
197
+ const item = items.value.find(item => compare(typeof item === 'object' ? get(item, props.valueKey as string) : item, value))
198
+ return item && (typeof item === 'object' ? get(item, props.labelKey as string) : item)
65
199
  }
66
200
 
67
- function filterFunction(items: ArrayOrWrapped<AcceptableValue>, searchTerm: string): ArrayOrWrapped<AcceptableValue> {
68
- if (props.filter === false) {
69
- return items
201
+ const groups = computed(() => props.items?.length ? (Array.isArray(props.items[0]) ? props.items : [props.items]) as SelectMenuItem[][] : [])
202
+ // eslint-disable-next-line vue/no-dupe-keys
203
+ const items = computed(() => groups.value.flatMap(group => group) as T[])
204
+
205
+ const filteredGroups = computed(() => {
206
+ if (props.ignoreFilter || !searchTerm.value) {
207
+ return groups.value
70
208
  }
71
209
 
72
- const fields = Array.isArray(props.filter) ? props.filter : ['label']
210
+ const fields = Array.isArray(props.filterFields) ? props.filterFields : [props.labelKey] as string[]
73
211
 
74
- return items.filter((item) => {
212
+ return groups.value.map(items => items.filter((item) => {
75
213
  if (typeof item !== 'object') {
76
- return String(item).search(new RegExp(searchTerm, 'i')) !== -1
214
+ return contains(item, searchTerm.value)
77
215
  }
78
216
 
79
- return fields.some((field) => {
80
- const child = get(item, field)
217
+ if (item.type && ['label', 'separator'].includes(item.type)) {
218
+ return true
219
+ }
81
220
 
82
- return child !== null && child !== undefined && String(child).search(new RegExp(searchTerm, 'i')) !== -1
83
- })
84
- }) as ArrayOrWrapped<T>
85
- }
221
+ return fields.some(field => contains(get(item, field), searchTerm.value))
222
+ })).filter(group => group.filter(item => !item.type || !['label', 'separator'].includes(item.type)).length > 0)
223
+ })
224
+ const filteredItems = computed(() => filteredGroups.value.flatMap(group => group) as T[])
86
225
 
87
- const groups = computed(() => props.items?.length ? (Array.isArray(props.items[0]) ? props.items : [props.items]) as SelectMenuItem[][] : [])
226
+ const createItem = computed(() => {
227
+ if (!props.createItem || !searchTerm.value) {
228
+ return false
229
+ }
230
+
231
+ const newItem = props.valueKey ? { [props.valueKey]: searchTerm.value } as T : searchTerm.value
232
+
233
+ if ((typeof props.createItem === 'object' && props.createItem.when === 'always') || props.createItem === 'always') {
234
+ return !filteredItems.value.find(item => compare(item, newItem, props.valueKey))
235
+ }
236
+
237
+ return !filteredItems.value.length
238
+ })
239
+ const createItemPosition = computed(() => typeof props.createItem === 'object' ? props.createItem.position : 'bottom')
88
240
 
89
241
  function onUpdate(value: any) {
242
+ if (toRaw(props.modelValue) === value) {
243
+ return
244
+ }
90
245
  // @ts-expect-error - 'target' does not exist in type 'EventInit'
91
246
  const event = new Event('change', { target: { value } })
92
247
  emits('change', event)
@@ -106,39 +261,57 @@ function onUpdateOpen(value: boolean) {
106
261
  }
107
262
  </script>
108
263
 
264
+ <!-- eslint-disable vue/no-template-shadow -->
109
265
  <template>
266
+ <DefineCreateItemTemplate>
267
+ <ComboboxGroup :class="ui.group({ class: props.ui?.group })">
268
+ <ComboboxItem
269
+ :class="ui.item({ class: props.ui?.item })"
270
+ :value="searchTerm"
271
+ @select.prevent="emits('create', searchTerm)"
272
+ >
273
+ <span :class="ui.itemLabel({ class: props.ui?.itemLabel })">
274
+ <slot name="create-item-label" :item="searchTerm">
275
+ {{ t('selectMenu.create', { label: searchTerm }) }}
276
+ </slot>
277
+ </span>
278
+ </ComboboxItem>
279
+ </ComboboxGroup>
280
+ </DefineCreateItemTemplate>
281
+
110
282
  <ComboboxRoot
111
283
  :id="id"
112
284
  v-slot="{ modelValue, open }"
113
285
  v-bind="rootProps"
114
- v-model:search-term="searchTerm"
286
+ ignore-filter
115
287
  as-child
116
288
  :name="name"
117
289
  :disabled="disabled"
118
- :display-value="() => searchTerm"
119
- :filter-function="filterFunction"
120
290
  @update:model-value="onUpdate"
121
291
  @update:open="onUpdateOpen"
122
292
  >
123
293
  <ComboboxAnchor as-child>
124
- <ComboboxTrigger :class="ui.base({ class: props.class })" tabindex="0">
125
- <span v-if="isLeading || !!slots.leading" :class="ui.leading({ class: props.ui?.leading })">
126
- <slot name="leading" :model-value="(modelValue as T)" :open="open" :ui="ui">
127
- <UIcon v-if="leadingIconName" :name="leadingIconName" :class="ui.leadingIcon({ class: props.ui?.leadingIcon })" />
294
+ <ComboboxTrigger :class="ui.base({ class: [props.class, props.ui?.base] })" tabindex="0">
295
+ <span v-if="isLeading || !!avatar || !!slots.leading" :class="ui.leading({ class: props.ui?.leading })">
296
+ <slot name="leading" :model-value="(modelValue as M extends true ? T[] : T)" :open="open" :ui="ui">
297
+ <UIcon v-if="isLeading && leadingIconName" :name="leadingIconName" :class="ui.leadingIcon({ class: props.ui?.leadingIcon })" />
298
+ <UAvatar v-else-if="!!avatar" :size="((props.ui?.itemLeadingAvatarSize || ui.itemLeadingAvatarSize()) as AvatarProps['size'])" v-bind="avatar" :class="ui.itemLeadingAvatar({ class: props.ui?.itemLeadingAvatar })" />
128
299
  </slot>
129
300
  </span>
130
301
 
131
- <slot :model-value="(modelValue as T)" :open="open">
132
- <span v-if="multiple ? modelValue?.length : modelValue !== undefined" :class="ui.value({ class: props.ui?.value })">
133
- {{ displayValue(modelValue as T, multiple) }}
134
- </span>
135
- <span v-else :class="ui.placeholder({ class: props.ui?.placeholder })">
136
- {{ placeholder ?? '&nbsp;' }}
137
- </span>
302
+ <slot :model-value="(modelValue as M extends true ? T[] : T)" :open="open">
303
+ <template v-for="displayedModelValue in [displayValue(modelValue as M extends true ? T[] : T)]" :key="displayedModelValue">
304
+ <span v-if="displayedModelValue" :class="ui.value({ class: props.ui?.value })">
305
+ {{ displayedModelValue }}
306
+ </span>
307
+ <span v-else :class="ui.placeholder({ class: props.ui?.placeholder })">
308
+ {{ placeholder ?? '&nbsp;' }}
309
+ </span>
310
+ </template>
138
311
  </slot>
139
312
 
140
313
  <span v-if="isTrailing || !!slots.trailing" :class="ui.trailing({ class: props.ui?.trailing })">
141
- <slot name="trailing" :model-value="(modelValue as T)" :open="open" :ui="ui">
314
+ <slot name="trailing" :model-value="(modelValue as M extends true ? T[] : T)" :open="open" :ui="ui">
142
315
  <UIcon v-if="trailingIconName" :name="trailingIconName" :class="ui.trailingIcon({ class: props.ui?.trailingIcon })" />
143
316
  </slot>
144
317
  </span>
@@ -147,19 +320,23 @@ function onUpdateOpen(value: boolean) {
147
320
 
148
321
  <ComboboxPortal :disabled="!portal">
149
322
  <ComboboxContent :class="ui.content({ class: props.ui?.content })" v-bind="contentProps">
150
- <ComboboxInput v-if="search" :placeholder="searchPlaceholder" :class="ui.input({ class: props.ui?.input })" autofocus autocomplete="off" />
323
+ <ComboboxInput v-if="!!searchInput" v-model="searchTerm" :display-value="() => searchTerm" as-child>
324
+ <UInput autofocus autocomplete="off" v-bind="searchInputProps" :class="ui.input({ class: props.ui?.input })" />
325
+ </ComboboxInput>
151
326
 
152
327
  <ComboboxEmpty :class="ui.empty({ class: props.ui?.empty })">
153
328
  <slot name="empty" :search-term="searchTerm">
154
- {{ searchTerm ? `No results for ${searchTerm}` : 'No results' }}
329
+ {{ searchTerm ? t('selectMenu.noMatch', { searchTerm }) : t('selectMenu.noData') }}
155
330
  </slot>
156
331
  </ComboboxEmpty>
157
332
 
158
333
  <ComboboxViewport :class="ui.viewport({ class: props.ui?.viewport })">
159
- <ComboboxGroup v-for="(group, groupIndex) in groups" :key="`group-${groupIndex}`" :class="ui.group({ class: props.ui?.group })">
334
+ <ReuseCreateItemTemplate v-if="createItem && createItemPosition === 'top'" />
335
+
336
+ <ComboboxGroup v-for="(group, groupIndex) in filteredGroups" :key="`group-${groupIndex}`" :class="ui.group({ class: props.ui?.group })">
160
337
  <template v-for="(item, index) in group" :key="`group-${groupIndex}-${index}`">
161
338
  <ComboboxLabel v-if="item?.type === 'label'" :class="ui.label({ class: props.ui?.label })">
162
- {{ item.label }}
339
+ {{ get(item, props.labelKey as string) }}
163
340
  </ComboboxLabel>
164
341
 
165
342
  <ComboboxSeparator v-else-if="item?.type === 'separator'" :class="ui.separator({ class: props.ui?.separator })" />
@@ -168,12 +345,13 @@ function onUpdateOpen(value: boolean) {
168
345
  v-else
169
346
  :class="ui.item({ class: props.ui?.item })"
170
347
  :disabled="item.disabled"
171
- :value="valueKey && typeof item === 'object' ? (item[valueKey as keyof SelectMenuItem]) as AcceptableValue : item"
348
+ :value="valueKey && typeof item === 'object' ? get(item, props.valueKey as string) : item"
349
+ @select="item.onSelect"
172
350
  >
173
351
  <slot name="item" :item="(item as T)" :index="index">
174
352
  <slot name="item-leading" :item="(item as T)" :index="index">
175
- <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 })" />
176
- <UIcon v-else-if="item.icon" :name="item.icon" :class="ui.itemLeadingIcon({ class: props.ui?.itemLeadingIcon })" />
353
+ <UIcon v-if="item.icon" :name="item.icon" :class="ui.itemLeadingIcon({ class: props.ui?.itemLeadingIcon })" />
354
+ <UAvatar v-else-if="item.avatar" :size="((props.ui?.itemLeadingAvatarSize || ui.itemLeadingAvatarSize()) as AvatarProps['size'])" v-bind="item.avatar" :class="ui.itemLeadingAvatar({ class: props.ui?.itemLeadingAvatar })" />
177
355
  <UChip
178
356
  v-else-if="item.chip"
179
357
  :size="((props.ui?.itemLeadingChipSize || ui.itemLeadingChipSize()) as ChipProps['size'])"
@@ -186,7 +364,7 @@ function onUpdateOpen(value: boolean) {
186
364
 
187
365
  <span :class="ui.itemLabel({ class: props.ui?.itemLabel })">
188
366
  <slot name="item-label" :item="(item as T)" :index="index">
189
- {{ displayValue(item as T) }}
367
+ {{ typeof item === 'object' ? get(item, props.labelKey as string) : item }}
190
368
  </slot>
191
369
  </span>
192
370
 
@@ -201,7 +379,11 @@ function onUpdateOpen(value: boolean) {
201
379
  </ComboboxItem>
202
380
  </template>
203
381
  </ComboboxGroup>
382
+
383
+ <ReuseCreateItemTemplate v-if="createItem && createItemPosition === 'bottom'" />
204
384
  </ComboboxViewport>
385
+
386
+ <ComboboxArrow v-if="!!arrow" v-bind="arrowProps" :class="ui.arrow({ class: props.ui?.arrow })" />
205
387
  </ComboboxContent>
206
388
  </ComboboxPortal>
207
389
  </ComboboxRoot>
@@ -1,14 +1,49 @@
1
- <script>
2
- import { tv } from "tailwind-variants";
3
- import _appConfig from "#build/app.config";
4
- import theme from "#build/ui/separator";
5
- const appConfig = _appConfig;
6
- const separator = tv({ extend: tv(theme), ...appConfig.ui?.separator || {} });
1
+ <script lang="ts">
2
+ import { tv, type VariantProps } from 'tailwind-variants'
3
+ import type { SeparatorProps as _SeparatorProps } from 'reka-ui'
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
+ }
7
42
  </script>
8
43
 
9
44
  <script setup lang="ts">
10
45
  import { computed } from 'vue'
11
- import { Separator, useForwardProps } from 'radix-vue'
46
+ import { Separator, useForwardProps } from 'reka-ui'
12
47
  import { reactivePick } from '@vueuse/core'
13
48
  import UIcon from './Icon.vue'
14
49
  import UAvatar from './Avatar.vue'
@@ -1,13 +1,28 @@
1
- <script>
2
- import { tv } from "tailwind-variants";
3
- import _appConfig from "#build/app.config";
4
- import theme from "#build/ui/skeleton";
5
- const appConfig = _appConfig;
6
- const skeleton = tv({ extend: tv(theme), ...appConfig.ui?.skeleton || {} });
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
+ import { extendDevtoolsMeta } from '../composables/extendDevtoolsMeta'
7
+
8
+ const appConfig = _appConfig as AppConfig & { ui: { skeleton: Partial<typeof theme> } }
9
+
10
+ const skeleton = tv({ extend: tv(theme), ...(appConfig.ui?.skeleton || {}) })
11
+
12
+ export interface SkeletonProps {
13
+ /**
14
+ * The element or component this component should render as.
15
+ * @defaultValue 'div'
16
+ */
17
+ as?: any
18
+ class?: any
19
+ }
20
+
21
+ extendDevtoolsMeta({ example: 'SkeletonExample' })
7
22
  </script>
8
23
 
9
24
  <script setup lang="ts">
10
- import { Primitive } from 'radix-vue'
25
+ import { Primitive } from 'reka-ui'
11
26
 
12
27
  const props = defineProps<SkeletonProps>()
13
28
  </script>