@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,164 @@
1
+ <script lang="ts">
2
+ import { tv, type VariantProps } from 'tailwind-variants'
3
+ import type { ProgressRootProps, ProgressRootEmits } from 'radix-vue'
4
+ import type { AppConfig } from '@nuxt/schema'
5
+ import _appConfig from '#build/app.config'
6
+ import theme from '#build/ui/progress'
7
+
8
+ const appConfig = _appConfig as AppConfig & { ui: { progress: Partial<typeof theme> } }
9
+
10
+ const progress = tv({ extend: tv(theme), ...(appConfig.ui?.progress || {}) })
11
+
12
+ type ProgressVariants = VariantProps<typeof progress>
13
+
14
+ export interface ProgressProps extends Pick<ProgressRootProps, 'getValueLabel' | 'modelValue'> {
15
+ /**
16
+ * The element or component this component should render as.
17
+ * @defaultValue `div`
18
+ */
19
+ as?: any
20
+ /** The maximum progress value. */
21
+ max?: number | Array<any>
22
+ /** Display the current progress value. */
23
+ status?: boolean
24
+ /** Whether the progress is visually inverted. */
25
+ inverted?: boolean
26
+ size?: ProgressVariants['size']
27
+ color?: ProgressVariants['color']
28
+ /**
29
+ * The orientation of the progress bar.
30
+ * @defaultValue 'horizontal'
31
+ */
32
+ orientation?: ProgressVariants['orientation']
33
+ animation?: ProgressVariants['animation']
34
+ class?: any
35
+ ui?: Partial<typeof progress.slots>
36
+ }
37
+
38
+ export interface ProgressEmits extends ProgressRootEmits {}
39
+
40
+ export type ProgressSlots = {
41
+ status(props: { percent?: number }): any
42
+ } & {
43
+ [key: string]: (props: { step: number }) => any
44
+ }
45
+ </script>
46
+
47
+ <script setup lang="ts">
48
+ import { computed } from 'vue'
49
+ import { ProgressIndicator, ProgressRoot, useForwardPropsEmits } from 'radix-vue'
50
+ import { reactivePick } from '@vueuse/core'
51
+
52
+ const props = withDefaults(defineProps<ProgressProps>(), {
53
+ inverted: false,
54
+ modelValue: null,
55
+ orientation: 'horizontal'
56
+ })
57
+ const emits = defineEmits<ProgressEmits>()
58
+ defineSlots<ProgressSlots>()
59
+
60
+ const rootProps = useForwardPropsEmits(reactivePick(props, 'as', 'getValueLabel', 'modelValue'), emits)
61
+
62
+ const isIndeterminate = computed(() => rootProps.value.modelValue === null)
63
+ const hasSteps = computed(() => Array.isArray(props.max))
64
+
65
+ const realMax = computed(() => {
66
+ if (isIndeterminate.value || !props.max) {
67
+ return undefined
68
+ }
69
+
70
+ if (Array.isArray(props.max)) {
71
+ return props.max.length - 1
72
+ }
73
+
74
+ return Number(props.max)
75
+ })
76
+
77
+ const percent = computed(() => {
78
+ if (isIndeterminate.value) {
79
+ return undefined
80
+ }
81
+
82
+ switch (true) {
83
+ case rootProps.value.modelValue! < 0: return 0
84
+ case rootProps.value.modelValue! > (realMax.value ?? 100): return 100
85
+ default: return Math.round((rootProps.value.modelValue! / (realMax.value ?? 100)) * 100)
86
+ }
87
+ })
88
+
89
+ const indicatorStyle = computed(() => {
90
+ if (percent.value === undefined) {
91
+ return
92
+ }
93
+
94
+ return {
95
+ transform: `translate${props.orientation === 'vertical' ? 'Y' : 'X'}(${props.inverted ? '' : '-'}${100 - percent.value}%)`
96
+ }
97
+ })
98
+
99
+ const statusStyle = computed(() => {
100
+ return {
101
+ [props.orientation === 'vertical' ? 'height' : 'width']: percent.value ? `${percent.value}%` : 'fit-content'
102
+ }
103
+ })
104
+
105
+ function isActive(index: number) {
106
+ return index === Number(props.modelValue)
107
+ }
108
+
109
+ function isFirst(index: number) {
110
+ return index === 0
111
+ }
112
+
113
+ function isLast(index: number) {
114
+ return index === realMax.value
115
+ }
116
+
117
+ function stepVariant(index: number | string) {
118
+ index = Number(index)
119
+
120
+ if (isActive(index) && !isFirst(index)) {
121
+ return 'active'
122
+ }
123
+
124
+ if (isFirst(index) && isActive(index)) {
125
+ return 'first'
126
+ }
127
+
128
+ if (isLast(index) && isActive(index)) {
129
+ return 'last'
130
+ }
131
+
132
+ return 'other'
133
+ }
134
+
135
+ const ui = computed(() => progress({
136
+ animation: props.animation,
137
+ size: props.size,
138
+ color: props.color,
139
+ orientation: props.orientation,
140
+ inverted: props.inverted
141
+ }))
142
+ </script>
143
+
144
+ <template>
145
+ <div :class="ui.root({ class: [props.class, props.ui?.root] })">
146
+ <div v-if="!isIndeterminate && (status || $slots.status)" :class="ui.status({ class: props.ui?.status })" :style="statusStyle">
147
+ <slot name="status" :percent="percent">
148
+ {{ percent }}%
149
+ </slot>
150
+ </div>
151
+
152
+ <ProgressRoot v-bind="rootProps" :max="realMax" :class="ui.base({ class: props.ui?.base })" style="transform: translateZ(0)">
153
+ <ProgressIndicator :class="ui.indicator({ class: props.ui?.indicator })" :style="indicatorStyle" />
154
+ </ProgressRoot>
155
+
156
+ <div v-if="hasSteps" :class="ui.steps({ class: props.ui?.steps })">
157
+ <div v-for="(step, index) in max" :key="index" :class="ui.step({ class: props.ui?.step, step: stepVariant(index) })">
158
+ <slot :name="`step-${index}`" :step="step">
159
+ {{ step }}
160
+ </slot>
161
+ </div>
162
+ </div>
163
+ </div>
164
+ </template>
@@ -0,0 +1,159 @@
1
+ <script lang="ts">
2
+ import { tv, type VariantProps } from 'tailwind-variants'
3
+ import type { RadioGroupRootProps, RadioGroupRootEmits, RadioGroupItemProps } from 'radix-vue'
4
+ import type { AppConfig } from '@nuxt/schema'
5
+ import _appConfig from '#build/app.config'
6
+ import theme from '#build/ui/radio-group'
7
+ import type { AcceptableValue } from '../types/utils'
8
+
9
+ const appConfig = _appConfig as AppConfig & { ui: { radioGroup: Partial<typeof theme> } }
10
+
11
+ const radioGroup = tv({ extend: tv(theme), ...(appConfig.ui?.radioGroup || {}) })
12
+
13
+ type RadioGroupVariants = VariantProps<typeof radioGroup>
14
+
15
+ export interface RadioGroupItem extends Pick<RadioGroupItemProps, 'disabled' | 'value'> {
16
+ label?: string
17
+ description?: string
18
+ }
19
+
20
+ export interface RadioGroupProps<T> extends Pick<RadioGroupRootProps, 'defaultValue' | 'disabled' | 'loop' | 'modelValue' | 'name' | 'required'> {
21
+ /**
22
+ * The element or component this component should render as.
23
+ * @defaultValue `div`
24
+ */
25
+ as?: any
26
+ legend?: string
27
+ /**
28
+ * When `items` is an array of objects, select the field to use as the value.
29
+ * @defaultValue 'value'
30
+ */
31
+ valueKey?: string
32
+ items?: T[]
33
+ size?: RadioGroupVariants['size']
34
+ color?: RadioGroupVariants['color']
35
+ /**
36
+ * The orientation the radio buttons are laid out.
37
+ * @defaultValue 'vertical'
38
+ */
39
+ orientation?: RadioGroupRootProps['orientation']
40
+ class?: any
41
+ ui?: Partial<typeof radioGroup.slots>
42
+ }
43
+
44
+ export type RadioGroupEmits = RadioGroupRootEmits & {
45
+ change: [payload: Event]
46
+ }
47
+
48
+ type SlotProps<T> = (props: { item: T, modelValue?: string }) => any
49
+
50
+ export interface RadioGroupSlots<T> {
51
+ legend(props?: {}): any
52
+ label: SlotProps<T>
53
+ description: SlotProps<T>
54
+ }
55
+ </script>
56
+
57
+ <script setup lang="ts" generic="T extends RadioGroupItem | AcceptableValue">
58
+ import { computed, useId } from 'vue'
59
+ import { RadioGroupRoot, RadioGroupItem, RadioGroupIndicator, Label, useForwardPropsEmits } from 'radix-vue'
60
+ import { reactivePick } from '@vueuse/core'
61
+ import { useFormField } from '../composables/useFormField'
62
+
63
+ const props = withDefaults(defineProps<RadioGroupProps<T>>(), {
64
+ valueKey: 'value',
65
+ orientation: 'vertical'
66
+ })
67
+ const emits = defineEmits<RadioGroupEmits>()
68
+ const slots = defineSlots<RadioGroupSlots<T>>()
69
+
70
+ const rootProps = useForwardPropsEmits(reactivePick(props, 'as', 'modelValue', 'defaultValue', 'orientation', 'loop', 'required'), emits)
71
+
72
+ const { emitFormChange, emitFormInput, color, name, size, id: _id, disabled } = useFormField<RadioGroupProps<T>>(props, { bind: false })
73
+ const id = _id.value ?? useId()
74
+
75
+ const ui = computed(() => radioGroup({
76
+ size: size.value,
77
+ color: color.value,
78
+ disabled: disabled.value,
79
+ required: props.required,
80
+ orientation: props.orientation
81
+ }))
82
+
83
+ function normalizeItem(item: any) {
84
+ if (['string', 'number', 'boolean'].includes(typeof item)) {
85
+ return {
86
+ id: `${id}:${item}`,
87
+ value: item,
88
+ label: item
89
+ }
90
+ }
91
+
92
+ const value = item[props.valueKey]
93
+
94
+ return {
95
+ ...item,
96
+ value,
97
+ id: `${id}:${value}`
98
+ }
99
+ }
100
+
101
+ const normalizedItems = computed(() => {
102
+ if (!props.items) {
103
+ return []
104
+ }
105
+
106
+ return props.items.map(normalizeItem)
107
+ })
108
+
109
+ function onUpdate(value: any) {
110
+ // @ts-expect-error - 'target' does not exist in type 'EventInit'
111
+ const event = new Event('change', { target: { value } })
112
+ emits('change', event)
113
+ emitFormChange()
114
+ emitFormInput()
115
+ }
116
+ </script>
117
+
118
+ <template>
119
+ <RadioGroupRoot
120
+ :id="id"
121
+ v-slot="{ modelValue }"
122
+ v-bind="rootProps"
123
+ :name="name"
124
+ :disabled="disabled"
125
+ :class="ui.root({ class: [props.class, props.ui?.root] })"
126
+ @update:model-value="onUpdate"
127
+ >
128
+ <fieldset :class="ui.fieldset({ class: props.ui?.fieldset })">
129
+ <legend v-if="legend || !!slots.legend" :class="ui.legend({ class: props.ui?.legend })">
130
+ <slot name="legend">
131
+ {{ legend }}
132
+ </slot>
133
+ </legend>
134
+ <div v-for="item in normalizedItems" :key="item.value" :class="ui.item({ class: props.ui?.item })">
135
+ <div :class="ui.container({ class: props.ui?.container })">
136
+ <RadioGroupItem
137
+ :id="item.id"
138
+ :value="item.value"
139
+ :disabled="disabled"
140
+ :class="ui.base({ class: props.ui?.base })"
141
+ >
142
+ <RadioGroupIndicator :class="ui.indicator({ class: props.ui?.indicator })" />
143
+ </RadioGroupItem>
144
+ </div>
145
+
146
+ <div :class="ui.wrapper({ class: props.ui?.wrapper })">
147
+ <Label :class="ui.label({ class: props.ui?.label })" :for="item.id">
148
+ <slot name="label" :item="item" :model-value="modelValue">{{ item.label }}</slot>
149
+ </Label>
150
+ <p v-if="item.description || !!slots.description" :class="ui.description({ class: props.ui?.description })">
151
+ <slot name="description" :item="item" :model-value="modelValue">
152
+ {{ item.description }}
153
+ </slot>
154
+ </p>
155
+ </div>
156
+ </div>
157
+ </fieldset>
158
+ </RadioGroupRoot>
159
+ </template>
@@ -0,0 +1,230 @@
1
+ <script lang="ts">
2
+ import { tv, type VariantProps } from 'tailwind-variants'
3
+ import type { SelectRootProps, SelectRootEmits, SelectContentProps, SelectArrowProps, SelectItemProps } from 'radix-vue'
4
+ import type { AppConfig } from '@nuxt/schema'
5
+ import _appConfig from '#build/app.config'
6
+ import theme from '#build/ui/select'
7
+ import type { UseComponentIconsProps } from '../composables/useComponentIcons'
8
+ import type { AvatarProps, ChipProps, InputProps } from '../types'
9
+ import type { AcceptableValue, PartialString } from '../types/utils'
10
+
11
+ const appConfig = _appConfig as AppConfig & { ui: { select: Partial<typeof theme> } }
12
+
13
+ const select = tv({ extend: tv(theme), ...(appConfig.ui?.select || {}) })
14
+
15
+ export interface SelectItem extends Pick<SelectItemProps, 'disabled' | 'value'> {
16
+ label?: string
17
+ icon?: string
18
+ avatar?: AvatarProps
19
+ chip?: ChipProps
20
+ /**
21
+ * The item type.
22
+ * @defaultValue 'item'
23
+ */
24
+ type?: 'label' | 'separator' | 'item'
25
+ }
26
+
27
+ type SelectVariants = VariantProps<typeof select>
28
+
29
+ export interface SelectProps<T> extends Omit<SelectRootProps, 'dir'>, UseComponentIconsProps {
30
+ id?: string
31
+ /** The placeholder text when the select is empty. */
32
+ placeholder?: string
33
+ color?: SelectVariants['color']
34
+ variant?: SelectVariants['variant']
35
+ size?: SelectVariants['size']
36
+ /**
37
+ * The icon displayed to open the menu.
38
+ * @defaultValue appConfig.ui.icons.chevronDown
39
+ */
40
+ trailingIcon?: string
41
+ /**
42
+ * The icon displayed when an item is selected.
43
+ * @defaultValue appConfig.ui.icons.check
44
+ */
45
+ selectedIcon?: string
46
+ /**
47
+ * The content of the menu.
48
+ * @defaultValue { side: 'bottom', sideOffset: 8, position: 'popper' }
49
+ */
50
+ content?: Omit<SelectContentProps, 'as' | 'asChild' | 'forceMount'>
51
+ /**
52
+ * Display an arrow alongside the menu.
53
+ * @defaultValue false
54
+ */
55
+ arrow?: boolean | Omit<SelectArrowProps, 'as' | 'asChild'>
56
+ /**
57
+ * Render the menu in a portal.
58
+ * @defaultValue true
59
+ */
60
+ portal?: boolean
61
+ /**
62
+ * When `items` is an array of objects, select the field to use as the value.
63
+ * @defaultValue 'value'
64
+ */
65
+ valueKey?: string
66
+ items?: T[] | T[][]
67
+ /** Highlight the ring color like a focus state. */
68
+ highlight?: boolean
69
+ class?: any
70
+ ui?: PartialString<typeof select.slots>
71
+ }
72
+
73
+ export type SelectEmits = SelectRootEmits & {
74
+ change: [payload: Event]
75
+ blur: [payload: FocusEvent]
76
+ focus: [payload: FocusEvent]
77
+ }
78
+
79
+ type SlotProps<T> = (props: { item: T, index: number }) => any
80
+
81
+ export interface SelectSlots<T> {
82
+ 'leading'(props: { modelValue: string, open: boolean, ui: any }): any
83
+ 'trailing'(props: { modelValue: string, open: boolean, ui: any }): any
84
+ 'item': SlotProps<T>
85
+ 'item-leading': SlotProps<T>
86
+ 'item-label': SlotProps<T>
87
+ 'item-trailing': SlotProps<T>
88
+ }
89
+ </script>
90
+
91
+ <script setup lang="ts" generic="T extends SelectItem | AcceptableValue">
92
+ import { computed, toRef } from 'vue'
93
+ import { SelectRoot, SelectTrigger, SelectValue, SelectPortal, SelectContent, SelectViewport, SelectLabel, SelectGroup, SelectItem, SelectItemIndicator, SelectItemText, SelectSeparator, useForwardPropsEmits } from 'radix-vue'
94
+ import { defu } from 'defu'
95
+ import { reactivePick } from '@vueuse/core'
96
+ import { useAppConfig } from '#imports'
97
+ import { useButtonGroup } from '../composables/useButtonGroup'
98
+ import { useComponentIcons } from '../composables/useComponentIcons'
99
+ import { useFormField } from '../composables/useFormField'
100
+ import UIcon from './Icon.vue'
101
+ import UAvatar from './Avatar.vue'
102
+ import UChip from './Chip.vue'
103
+
104
+ const props = withDefaults(defineProps<SelectProps<T>>(), {
105
+ valueKey: 'value',
106
+ portal: true
107
+ })
108
+ const emits = defineEmits<SelectEmits>()
109
+ const slots = defineSlots<SelectSlots<T>>()
110
+
111
+ const appConfig = useAppConfig()
112
+ const rootProps = useForwardPropsEmits(reactivePick(props, 'modelValue', 'defaultValue', 'open', 'defaultOpen', 'disabled', 'autocomplete', 'required'), emits)
113
+ const contentProps = toRef(() => defu(props.content, { side: 'bottom', sideOffset: 8, position: 'popper' }) as SelectContentProps)
114
+
115
+ const { emitFormChange, emitFormInput, emitFormBlur, size: formGroupSize, color, id, name, highlight, disabled } = useFormField<InputProps>(props)
116
+ const { orientation, size: buttonGroupSize } = useButtonGroup<InputProps>(props)
117
+ const { isLeading, isTrailing, leadingIconName, trailingIconName } = useComponentIcons(toRef(() => defu(props, { trailingIcon: appConfig.ui.icons.chevronDown })))
118
+
119
+ const selectSize = computed(() => buttonGroupSize.value || formGroupSize.value)
120
+
121
+ const ui = computed(() => select({
122
+ color: color.value,
123
+ variant: props.variant,
124
+ size: selectSize?.value,
125
+ loading: props.loading,
126
+ highlight: highlight.value,
127
+ leading: isLeading.value || !!slots.leading,
128
+ trailing: isTrailing.value || !!slots.trailing,
129
+ buttonGroup: orientation.value
130
+ }))
131
+
132
+ const groups = computed(() => props.items?.length ? (Array.isArray(props.items[0]) ? props.items : [props.items]) as SelectItem[][] : [])
133
+
134
+ function onUpdate(value: any) {
135
+ // @ts-expect-error - 'target' does not exist in type 'EventInit'
136
+ const event = new Event('change', { target: { value } })
137
+ emits('change', event)
138
+
139
+ emitFormChange()
140
+ emitFormInput()
141
+ }
142
+ function onUpdateOpen(value: boolean) {
143
+ if (!value) {
144
+ const event = new FocusEvent('blur')
145
+ emits('blur', event)
146
+ emitFormBlur()
147
+ } else {
148
+ const event = new FocusEvent('focus')
149
+ emits('focus', event)
150
+ }
151
+ }
152
+ </script>
153
+
154
+ <template>
155
+ <SelectRoot
156
+ :id="id"
157
+ v-slot="{ modelValue, open }"
158
+ v-bind="rootProps"
159
+ :name="name"
160
+ :disabled="disabled"
161
+ @update:model-value="onUpdate"
162
+ @update:open="onUpdateOpen"
163
+ >
164
+ <SelectTrigger :class="ui.base({ class: props.class })">
165
+ <span v-if="isLeading || !!slots.leading" :class="ui.leading({ class: props.ui?.leading })">
166
+ <slot name="leading" :model-value="modelValue" :open="open" :ui="ui">
167
+ <UIcon v-if="leadingIconName" :name="leadingIconName" :class="ui.leadingIcon({ class: props.ui?.leadingIcon })" />
168
+ </slot>
169
+ </span>
170
+
171
+ <SelectValue :placeholder="placeholder ?? '&nbsp;'" :class="ui.value({ class: props.ui?.value })" />
172
+
173
+ <span v-if="isTrailing || !!slots.trailing" :class="ui.trailing({ class: props.ui?.trailing })">
174
+ <slot name="trailing" :model-value="modelValue" :open="open" :ui="ui">
175
+ <UIcon v-if="trailingIconName" :name="trailingIconName" :class="ui.trailingIcon({ class: props.ui?.trailingIcon })" />
176
+ </slot>
177
+ </span>
178
+ </SelectTrigger>
179
+
180
+ <SelectPortal :disabled="!portal">
181
+ <SelectContent :class="ui.content({ class: props.ui?.content })" v-bind="contentProps">
182
+ <SelectViewport :class="ui.viewport({ class: props.ui?.viewport })">
183
+ <SelectGroup v-for="(group, groupIndex) in groups" :key="`group-${groupIndex}`" :class="ui.group({ class: props.ui?.group })">
184
+ <template v-for="(item, index) in group" :key="`group-${groupIndex}-${index}`">
185
+ <SelectLabel v-if="item?.type === 'label'" :class="ui.label({ class: props.ui?.label })">
186
+ {{ item.label }}
187
+ </SelectLabel>
188
+ <SelectSeparator v-else-if="item?.type === 'separator'" :class="ui.separator({ class: props.ui?.separator })" />
189
+ <SelectItem
190
+ v-else
191
+ :class="ui.item({ class: props.ui?.item })"
192
+ :disabled="item.disabled"
193
+ :value="typeof item === 'object' ? (item[valueKey as keyof SelectItem] as string) : item"
194
+ >
195
+ <slot name="item" :item="(item as T)" :index="index">
196
+ <slot name="item-leading" :item="(item as T)" :index="index">
197
+ <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 })" />
198
+ <UIcon v-else-if="item.icon" :name="item.icon" :class="ui.itemLeadingIcon({ class: props.ui?.itemLeadingIcon })" />
199
+ <UChip
200
+ v-else-if="item.chip"
201
+ :size="((props.ui?.itemLeadingChipSize || ui.itemLeadingChipSize()) as ChipProps['size'])"
202
+ inset
203
+ standalone
204
+ v-bind="item.chip"
205
+ :class="ui.itemLeadingChip({ class: props.ui?.itemLeadingChip })"
206
+ />
207
+ </slot>
208
+
209
+ <SelectItemText :class="ui.itemLabel({ class: props.ui?.itemLabel })">
210
+ <slot name="item-label" :item="(item as T)" :index="index">
211
+ {{ typeof item === 'object' ? item.label : item }}
212
+ </slot>
213
+ </SelectItemText>
214
+
215
+ <span :class="ui.itemTrailing({ class: props.ui?.itemTrailing })">
216
+ <slot name="item-trailing" :item="(item as T)" :index="index" />
217
+
218
+ <SelectItemIndicator as-child>
219
+ <UIcon :name="selectedIcon || appConfig.ui.icons.check" :class="ui.itemTrailingIcon({ class: props.ui?.itemTrailingIcon })" />
220
+ </SelectItemIndicator>
221
+ </span>
222
+ </slot>
223
+ </SelectItem>
224
+ </template>
225
+ </SelectGroup>
226
+ </SelectViewport>
227
+ </SelectContent>
228
+ </SelectPortal>
229
+ </SelectRoot>
230
+ </template>