@edgedev/create-edge-app 1.0.41 → 1.0.42

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 (366) hide show
  1. package/.env.dev +1 -0
  2. package/.vscode/settings.json +1 -1
  3. package/app.vue +72 -21
  4. package/assets/css/tailwind.css +78 -0
  5. package/bin/cli.js +1 -1
  6. package/components/subToolbar.vue +4 -13
  7. package/components/ui/accordion/Accordion.vue +19 -0
  8. package/components/ui/accordion/AccordionContent.vue +24 -0
  9. package/components/ui/accordion/AccordionItem.vue +24 -0
  10. package/components/ui/accordion/AccordionTrigger.vue +39 -0
  11. package/components/ui/accordion/index.js +4 -0
  12. package/components/ui/accordion/index.ts +4 -0
  13. package/components/ui/alert/Alert.vue +16 -0
  14. package/components/ui/alert/AlertDescription.vue +14 -0
  15. package/components/ui/alert/AlertTitle.vue +14 -0
  16. package/components/ui/alert/index.js +21 -0
  17. package/components/ui/alert/index.ts +23 -0
  18. package/components/ui/alert-dialog/AlertDialog.vue +14 -0
  19. package/components/ui/alert-dialog/AlertDialogAction.vue +20 -0
  20. package/components/ui/alert-dialog/AlertDialogCancel.vue +20 -0
  21. package/components/ui/alert-dialog/AlertDialogContent.vue +42 -0
  22. package/components/ui/alert-dialog/AlertDialogDescription.vue +25 -0
  23. package/components/ui/alert-dialog/AlertDialogFooter.vue +21 -0
  24. package/components/ui/alert-dialog/AlertDialogHeader.vue +16 -0
  25. package/components/ui/alert-dialog/AlertDialogTitle.vue +22 -0
  26. package/components/ui/alert-dialog/AlertDialogTrigger.vue +11 -0
  27. package/components/ui/alert-dialog/index.ts +9 -0
  28. package/components/ui/aspect-ratio/AspectRatio.vue +11 -0
  29. package/components/ui/aspect-ratio/index.ts +1 -0
  30. package/components/ui/auto-form/AutoForm.vue +105 -0
  31. package/components/ui/auto-form/AutoFormField.vue +45 -0
  32. package/components/ui/auto-form/AutoFormFieldArray.vue +110 -0
  33. package/components/ui/auto-form/AutoFormFieldBoolean.vue +41 -0
  34. package/components/ui/auto-form/AutoFormFieldDate.vue +57 -0
  35. package/components/ui/auto-form/AutoFormFieldEnum.vue +49 -0
  36. package/components/ui/auto-form/AutoFormFieldFile.vue +74 -0
  37. package/components/ui/auto-form/AutoFormFieldInput.vue +36 -0
  38. package/components/ui/auto-form/AutoFormFieldNumber.vue +32 -0
  39. package/components/ui/auto-form/AutoFormFieldObject.vue +78 -0
  40. package/components/ui/auto-form/AutoFormLabel.vue +14 -0
  41. package/components/ui/auto-form/constant.ts +39 -0
  42. package/components/ui/auto-form/dependencies.ts +92 -0
  43. package/components/ui/auto-form/index.ts +15 -0
  44. package/components/ui/auto-form/interface.ts +81 -0
  45. package/components/ui/auto-form/utils.ts +171 -0
  46. package/components/ui/avatar/Avatar.vue +21 -0
  47. package/components/ui/avatar/AvatarFallback.vue +11 -0
  48. package/components/ui/avatar/AvatarImage.vue +9 -0
  49. package/components/ui/avatar/index.ts +24 -0
  50. package/components/ui/badge/Badge.vue +16 -0
  51. package/components/ui/badge/index.ts +25 -0
  52. package/components/ui/breadcrumb/Breadcrumb.vue +13 -0
  53. package/components/ui/breadcrumb/BreadcrumbEllipsis.vue +22 -0
  54. package/components/ui/breadcrumb/BreadcrumbItem.vue +16 -0
  55. package/components/ui/breadcrumb/BreadcrumbLink.vue +19 -0
  56. package/components/ui/breadcrumb/BreadcrumbList.vue +16 -0
  57. package/components/ui/breadcrumb/BreadcrumbPage.vue +19 -0
  58. package/components/ui/breadcrumb/BreadcrumbSeparator.vue +21 -0
  59. package/components/ui/breadcrumb/index.ts +7 -0
  60. package/components/ui/button/Button.vue +26 -0
  61. package/components/ui/button/index.js +33 -0
  62. package/components/ui/button/index.ts +35 -0
  63. package/components/ui/calendar/Calendar.vue +60 -0
  64. package/components/ui/calendar/CalendarCell.vue +24 -0
  65. package/components/ui/calendar/CalendarCellTrigger.vue +38 -0
  66. package/components/ui/calendar/CalendarGrid.vue +24 -0
  67. package/components/ui/calendar/CalendarGridBody.vue +11 -0
  68. package/components/ui/calendar/CalendarGridHead.vue +11 -0
  69. package/components/ui/calendar/CalendarGridRow.vue +21 -0
  70. package/components/ui/calendar/CalendarHeadCell.vue +21 -0
  71. package/components/ui/calendar/CalendarHeader.vue +21 -0
  72. package/components/ui/calendar/CalendarHeading.vue +27 -0
  73. package/components/ui/calendar/CalendarNextButton.vue +32 -0
  74. package/components/ui/calendar/CalendarPrevButton.vue +32 -0
  75. package/components/ui/calendar/index.ts +12 -0
  76. package/components/ui/card/Card.vue +21 -0
  77. package/components/ui/card/CardContent.vue +14 -0
  78. package/components/ui/card/CardDescription.vue +14 -0
  79. package/components/ui/card/CardFooter.vue +14 -0
  80. package/components/ui/card/CardHeader.vue +14 -0
  81. package/components/ui/card/CardTitle.vue +18 -0
  82. package/components/ui/card/index.js +6 -0
  83. package/components/ui/card/index.ts +6 -0
  84. package/components/ui/carousel/Carousel.vue +44 -0
  85. package/components/ui/carousel/CarouselContent.vue +29 -0
  86. package/components/ui/carousel/CarouselItem.vue +23 -0
  87. package/components/ui/carousel/CarouselNext.vue +30 -0
  88. package/components/ui/carousel/CarouselPrevious.vue +30 -0
  89. package/components/ui/carousel/index.ts +10 -0
  90. package/components/ui/carousel/interface.ts +20 -0
  91. package/components/ui/carousel/useCarousel.ts +59 -0
  92. package/components/ui/chart/ChartCrosshair.vue +44 -0
  93. package/components/ui/chart/ChartLegend.vue +50 -0
  94. package/components/ui/chart/ChartSingleTooltip.vue +63 -0
  95. package/components/ui/chart/ChartTooltip.vue +40 -0
  96. package/components/ui/chart/index.ts +18 -0
  97. package/components/ui/chart/interface.ts +64 -0
  98. package/components/ui/chart-area/AreaChart.vue +136 -0
  99. package/components/ui/chart-area/index.ts +66 -0
  100. package/components/ui/chart-bar/BarChart.vue +115 -0
  101. package/components/ui/chart-bar/index.ts +66 -0
  102. package/components/ui/chart-donut/DonutChart.vue +100 -0
  103. package/components/ui/chart-donut/index.ts +39 -0
  104. package/components/ui/chart-line/LineChart.vue +105 -0
  105. package/components/ui/chart-line/index.ts +66 -0
  106. package/components/ui/checkbox/Checkbox.vue +33 -0
  107. package/components/ui/checkbox/index.ts +1 -0
  108. package/components/ui/collapsible/Collapsible.vue +15 -0
  109. package/components/ui/collapsible/CollapsibleContent.vue +11 -0
  110. package/components/ui/collapsible/CollapsibleTrigger.vue +11 -0
  111. package/components/ui/collapsible/index.ts +3 -0
  112. package/components/ui/command/Command.vue +30 -0
  113. package/components/ui/command/CommandDialog.vue +21 -0
  114. package/components/ui/command/CommandEmpty.vue +20 -0
  115. package/components/ui/command/CommandGroup.vue +29 -0
  116. package/components/ui/command/CommandInput.vue +33 -0
  117. package/components/ui/command/CommandItem.vue +26 -0
  118. package/components/ui/command/CommandList.vue +27 -0
  119. package/components/ui/command/CommandSeparator.vue +23 -0
  120. package/components/ui/command/CommandShortcut.vue +14 -0
  121. package/components/ui/command/index.js +9 -0
  122. package/components/ui/command/index.ts +9 -0
  123. package/components/ui/context-menu/ContextMenu.vue +15 -0
  124. package/components/ui/context-menu/ContextMenuCheckboxItem.vue +40 -0
  125. package/components/ui/context-menu/ContextMenuContent.vue +36 -0
  126. package/components/ui/context-menu/ContextMenuGroup.vue +11 -0
  127. package/components/ui/context-menu/ContextMenuItem.vue +34 -0
  128. package/components/ui/context-menu/ContextMenuLabel.vue +25 -0
  129. package/components/ui/context-menu/ContextMenuPortal.vue +11 -0
  130. package/components/ui/context-menu/ContextMenuRadioGroup.vue +19 -0
  131. package/components/ui/context-menu/ContextMenuRadioItem.vue +40 -0
  132. package/components/ui/context-menu/ContextMenuSeparator.vue +20 -0
  133. package/components/ui/context-menu/ContextMenuShortcut.vue +14 -0
  134. package/components/ui/context-menu/ContextMenuSub.vue +19 -0
  135. package/components/ui/context-menu/ContextMenuSubContent.vue +35 -0
  136. package/components/ui/context-menu/ContextMenuSubTrigger.vue +34 -0
  137. package/components/ui/context-menu/ContextMenuTrigger.vue +13 -0
  138. package/components/ui/context-menu/index.ts +14 -0
  139. package/components/ui/dialog/Dialog.vue +14 -0
  140. package/components/ui/dialog/DialogClose.vue +11 -0
  141. package/components/ui/dialog/DialogContent.vue +50 -0
  142. package/components/ui/dialog/DialogDescription.vue +24 -0
  143. package/components/ui/dialog/DialogFooter.vue +19 -0
  144. package/components/ui/dialog/DialogHeader.vue +16 -0
  145. package/components/ui/dialog/DialogScrollContent.vue +59 -0
  146. package/components/ui/dialog/DialogTitle.vue +29 -0
  147. package/components/ui/dialog/DialogTrigger.vue +11 -0
  148. package/components/ui/dialog/index.js +9 -0
  149. package/components/ui/dialog/index.ts +9 -0
  150. package/components/ui/drawer/Drawer.vue +19 -0
  151. package/components/ui/drawer/DrawerContent.vue +28 -0
  152. package/components/ui/drawer/DrawerDescription.vue +20 -0
  153. package/components/ui/drawer/DrawerFooter.vue +14 -0
  154. package/components/ui/drawer/DrawerHeader.vue +14 -0
  155. package/components/ui/drawer/DrawerOverlay.vue +18 -0
  156. package/components/ui/drawer/DrawerTitle.vue +20 -0
  157. package/components/ui/drawer/index.ts +8 -0
  158. package/components/ui/dropdown-menu/DropdownMenu.vue +14 -0
  159. package/components/ui/dropdown-menu/DropdownMenuCheckboxItem.vue +40 -0
  160. package/components/ui/dropdown-menu/DropdownMenuContent.vue +38 -0
  161. package/components/ui/dropdown-menu/DropdownMenuGroup.vue +11 -0
  162. package/components/ui/dropdown-menu/DropdownMenuItem.vue +28 -0
  163. package/components/ui/dropdown-menu/DropdownMenuLabel.vue +24 -0
  164. package/components/ui/dropdown-menu/DropdownMenuRadioGroup.vue +19 -0
  165. package/components/ui/dropdown-menu/DropdownMenuRadioItem.vue +41 -0
  166. package/components/ui/dropdown-menu/DropdownMenuSeparator.vue +22 -0
  167. package/components/ui/dropdown-menu/DropdownMenuShortcut.vue +14 -0
  168. package/components/ui/dropdown-menu/DropdownMenuSub.vue +19 -0
  169. package/components/ui/dropdown-menu/DropdownMenuSubContent.vue +30 -0
  170. package/components/ui/dropdown-menu/DropdownMenuSubTrigger.vue +33 -0
  171. package/components/ui/dropdown-menu/DropdownMenuTrigger.vue +13 -0
  172. package/components/ui/dropdown-menu/index.ts +16 -0
  173. package/components/ui/form/FormControl.vue +16 -0
  174. package/components/ui/form/FormDescription.vue +20 -0
  175. package/components/ui/form/FormItem.vue +19 -0
  176. package/components/ui/form/FormLabel.vue +23 -0
  177. package/components/ui/form/FormMessage.vue +16 -0
  178. package/components/ui/form/index.js +7 -0
  179. package/components/ui/form/index.ts +7 -0
  180. package/components/ui/form/injectionKeys.js +1 -0
  181. package/components/ui/form/injectionKeys.ts +4 -0
  182. package/components/ui/form/useFormField.js +36 -0
  183. package/components/ui/form/useFormField.ts +30 -0
  184. package/components/ui/hover-card/HoverCard.vue +14 -0
  185. package/components/ui/hover-card/HoverCardContent.vue +41 -0
  186. package/components/ui/hover-card/HoverCardTrigger.vue +11 -0
  187. package/components/ui/hover-card/index.ts +3 -0
  188. package/components/ui/input/Input.vue +24 -0
  189. package/components/ui/input/index.js +1 -0
  190. package/components/ui/input/index.ts +1 -0
  191. package/components/ui/label/Label.vue +27 -0
  192. package/components/ui/label/index.js +1 -0
  193. package/components/ui/label/index.ts +1 -0
  194. package/components/ui/menubar/Menubar.vue +35 -0
  195. package/components/ui/menubar/MenubarCheckboxItem.vue +40 -0
  196. package/components/ui/menubar/MenubarContent.vue +43 -0
  197. package/components/ui/menubar/MenubarGroup.vue +11 -0
  198. package/components/ui/menubar/MenubarItem.vue +35 -0
  199. package/components/ui/menubar/MenubarLabel.vue +13 -0
  200. package/components/ui/menubar/MenubarMenu.vue +11 -0
  201. package/components/ui/menubar/MenubarRadioGroup.vue +20 -0
  202. package/components/ui/menubar/MenubarRadioItem.vue +40 -0
  203. package/components/ui/menubar/MenubarSeparator.vue +19 -0
  204. package/components/ui/menubar/MenubarShortcut.vue +14 -0
  205. package/components/ui/menubar/MenubarSub.vue +19 -0
  206. package/components/ui/menubar/MenubarSubContent.vue +39 -0
  207. package/components/ui/menubar/MenubarSubTrigger.vue +30 -0
  208. package/components/ui/menubar/MenubarTrigger.vue +29 -0
  209. package/components/ui/menubar/index.ts +15 -0
  210. package/components/ui/navigation-menu/NavigationMenu.vue +33 -0
  211. package/components/ui/navigation-menu/NavigationMenuContent.vue +34 -0
  212. package/components/ui/navigation-menu/NavigationMenuIndicator.vue +24 -0
  213. package/components/ui/navigation-menu/NavigationMenuItem.vue +11 -0
  214. package/components/ui/navigation-menu/NavigationMenuLink.vue +19 -0
  215. package/components/ui/navigation-menu/NavigationMenuList.vue +29 -0
  216. package/components/ui/navigation-menu/NavigationMenuTrigger.vue +34 -0
  217. package/components/ui/navigation-menu/NavigationMenuViewport.vue +33 -0
  218. package/components/ui/navigation-menu/index.ts +12 -0
  219. package/components/ui/number-field/NumberField.vue +23 -0
  220. package/components/ui/number-field/NumberFieldContent.vue +14 -0
  221. package/components/ui/number-field/NumberFieldDecrement.vue +25 -0
  222. package/components/ui/number-field/NumberFieldIncrement.vue +25 -0
  223. package/components/ui/number-field/NumberFieldInput.vue +8 -0
  224. package/components/ui/number-field/index.ts +5 -0
  225. package/components/ui/pagination/PaginationEllipsis.vue +22 -0
  226. package/components/ui/pagination/PaginationFirst.vue +29 -0
  227. package/components/ui/pagination/PaginationLast.vue +29 -0
  228. package/components/ui/pagination/PaginationNext.vue +29 -0
  229. package/components/ui/pagination/PaginationPrev.vue +29 -0
  230. package/components/ui/pagination/index.ts +10 -0
  231. package/components/ui/pin-input/PinInput.vue +23 -0
  232. package/components/ui/pin-input/PinInputGroup.vue +18 -0
  233. package/components/ui/pin-input/PinInputInput.vue +18 -0
  234. package/components/ui/pin-input/PinInputSeparator.vue +15 -0
  235. package/components/ui/pin-input/index.ts +4 -0
  236. package/components/ui/popover/Popover.vue +15 -0
  237. package/components/ui/popover/PopoverContent.vue +48 -0
  238. package/components/ui/popover/PopoverTrigger.vue +11 -0
  239. package/components/ui/popover/index.js +3 -0
  240. package/components/ui/popover/index.ts +3 -0
  241. package/components/ui/progress/Progress.vue +39 -0
  242. package/components/ui/progress/index.js +1 -0
  243. package/components/ui/progress/index.ts +1 -0
  244. package/components/ui/radio-group/RadioGroup.vue +25 -0
  245. package/components/ui/radio-group/RadioGroupItem.vue +39 -0
  246. package/components/ui/radio-group/index.ts +2 -0
  247. package/components/ui/range-calendar/RangeCalendar.vue +60 -0
  248. package/components/ui/range-calendar/RangeCalendarCell.vue +24 -0
  249. package/components/ui/range-calendar/RangeCalendarCellTrigger.vue +40 -0
  250. package/components/ui/range-calendar/RangeCalendarGrid.vue +24 -0
  251. package/components/ui/range-calendar/RangeCalendarGridBody.vue +11 -0
  252. package/components/ui/range-calendar/RangeCalendarGridHead.vue +11 -0
  253. package/components/ui/range-calendar/RangeCalendarGridRow.vue +21 -0
  254. package/components/ui/range-calendar/RangeCalendarHeadCell.vue +21 -0
  255. package/components/ui/range-calendar/RangeCalendarHeader.vue +21 -0
  256. package/components/ui/range-calendar/RangeCalendarHeading.vue +27 -0
  257. package/components/ui/range-calendar/RangeCalendarNextButton.vue +32 -0
  258. package/components/ui/range-calendar/RangeCalendarPrevButton.vue +32 -0
  259. package/components/ui/range-calendar/index.ts +12 -0
  260. package/components/ui/resizable/ResizableHandle.vue +26 -0
  261. package/components/ui/resizable/ResizablePanelGroup.vue +21 -0
  262. package/components/ui/resizable/index.ts +3 -0
  263. package/components/ui/scroll-area/ScrollArea.vue +29 -0
  264. package/components/ui/scroll-area/ScrollBar.vue +30 -0
  265. package/components/ui/scroll-area/index.ts +2 -0
  266. package/components/ui/select/Select.vue +15 -0
  267. package/components/ui/select/SelectContent.vue +53 -0
  268. package/components/ui/select/SelectGroup.vue +19 -0
  269. package/components/ui/select/SelectItem.vue +44 -0
  270. package/components/ui/select/SelectItemText.vue +11 -0
  271. package/components/ui/select/SelectLabel.vue +13 -0
  272. package/components/ui/select/SelectScrollDownButton.vue +24 -0
  273. package/components/ui/select/SelectScrollUpButton.vue +24 -0
  274. package/components/ui/select/SelectSeparator.vue +17 -0
  275. package/components/ui/select/SelectTrigger.vue +31 -0
  276. package/components/ui/select/SelectValue.vue +11 -0
  277. package/components/ui/select/index.ts +11 -0
  278. package/components/ui/separator/Separator.vue +20 -0
  279. package/components/ui/separator/index.js +1 -0
  280. package/components/ui/separator/index.ts +1 -0
  281. package/components/ui/sheet/Sheet.vue +14 -0
  282. package/components/ui/sheet/SheetClose.vue +11 -0
  283. package/components/ui/sheet/SheetContent.vue +56 -0
  284. package/components/ui/sheet/SheetDescription.vue +22 -0
  285. package/components/ui/sheet/SheetFooter.vue +19 -0
  286. package/components/ui/sheet/SheetHeader.vue +16 -0
  287. package/components/ui/sheet/SheetTitle.vue +22 -0
  288. package/components/ui/sheet/SheetTrigger.vue +11 -0
  289. package/components/ui/sheet/index.ts +31 -0
  290. package/components/ui/skeleton/Skeleton.vue +14 -0
  291. package/components/ui/skeleton/index.ts +1 -0
  292. package/components/ui/slider/Slider.vue +36 -0
  293. package/components/ui/slider/index.ts +1 -0
  294. package/components/ui/sonner/Sonner.vue +22 -0
  295. package/components/ui/sonner/index.ts +1 -0
  296. package/components/ui/switch/Switch.vue +37 -0
  297. package/components/ui/switch/index.ts +1 -0
  298. package/components/ui/table/Table.vue +16 -0
  299. package/components/ui/table/TableBody.vue +14 -0
  300. package/components/ui/table/TableCaption.vue +14 -0
  301. package/components/ui/table/TableCell.vue +21 -0
  302. package/components/ui/table/TableEmpty.vue +37 -0
  303. package/components/ui/table/TableFooter.vue +14 -0
  304. package/components/ui/table/TableHead.vue +14 -0
  305. package/components/ui/table/TableHeader.vue +14 -0
  306. package/components/ui/table/TableRow.vue +14 -0
  307. package/components/ui/table/index.ts +8 -0
  308. package/components/ui/tabs/Tabs.vue +15 -0
  309. package/components/ui/tabs/TabsContent.vue +22 -0
  310. package/components/ui/tabs/TabsList.vue +25 -0
  311. package/components/ui/tabs/TabsTrigger.vue +27 -0
  312. package/components/ui/tabs/index.ts +4 -0
  313. package/components/ui/tags-input/TagsInput.vue +22 -0
  314. package/components/ui/tags-input/TagsInputInput.vue +19 -0
  315. package/components/ui/tags-input/TagsInputItem.vue +22 -0
  316. package/components/ui/tags-input/TagsInputItemDelete.vue +24 -0
  317. package/components/ui/tags-input/TagsInputItemText.vue +19 -0
  318. package/components/ui/tags-input/index.ts +5 -0
  319. package/components/ui/textarea/Textarea.vue +24 -0
  320. package/components/ui/textarea/index.ts +1 -0
  321. package/components/ui/toast/Toast.vue +28 -0
  322. package/components/ui/toast/ToastAction.vue +19 -0
  323. package/components/ui/toast/ToastClose.vue +22 -0
  324. package/components/ui/toast/ToastDescription.vue +19 -0
  325. package/components/ui/toast/ToastProvider.vue +11 -0
  326. package/components/ui/toast/ToastTitle.vue +19 -0
  327. package/components/ui/toast/ToastViewport.vue +17 -0
  328. package/components/ui/toast/Toaster.vue +30 -0
  329. package/components/ui/toast/index.ts +38 -0
  330. package/components/ui/toast/use-toast.ts +165 -0
  331. package/components/ui/toggle/Toggle.vue +35 -0
  332. package/components/ui/toggle/index.ts +27 -0
  333. package/components/ui/toggle-group/ToggleGroup.vue +34 -0
  334. package/components/ui/toggle-group/ToggleGroupItem.vue +35 -0
  335. package/components/ui/toggle-group/index.ts +2 -0
  336. package/components/ui/tooltip/Tooltip.vue +14 -0
  337. package/components/ui/tooltip/TooltipContent.vue +31 -0
  338. package/components/ui/tooltip/TooltipProvider.vue +11 -0
  339. package/components/ui/tooltip/TooltipTrigger.vue +11 -0
  340. package/components/ui/tooltip/index.ts +4 -0
  341. package/components/ui/v-calendar/Calendar.vue +331 -0
  342. package/components/ui/v-calendar/index.ts +22 -0
  343. package/components.json +17 -0
  344. package/edge-components-install.sh +1 -0
  345. package/jsconfig.json +9 -0
  346. package/lib/utils.ts +6 -0
  347. package/nuxt.config.ts +28 -11
  348. package/package.json +33 -14
  349. package/pages/app/account/[page].vue +71 -0
  350. package/pages/app/dashboard/[[collection]]/[[docId]].vue +181 -0
  351. package/pages/app/login.vue +9 -7
  352. package/pages/app/signup.vue +9 -7
  353. package/plugins/icons.ts +72 -0
  354. package/tailwind.config.js +85 -0
  355. package/components/.gitkeep +0 -0
  356. package/components/account.vue +0 -107
  357. package/components/billing.vue +0 -8
  358. package/components/bottomMenu.vue +0 -35
  359. package/components/dashboard.vue +0 -186
  360. package/components/editor.vue +0 -247
  361. package/components/topMenu.vue +0 -17
  362. package/components/userMenu.vue +0 -64
  363. package/composables/vuetify.ts +0 -10
  364. package/pages/app/[[page]]/[[collection]]/[[docId]].vue +0 -48
  365. package/plugins/edgeFirebaseFramework.ts +0 -5
  366. package/plugins/vuetify.ts +0 -14
@@ -0,0 +1,115 @@
1
+ <script setup lang="ts" generic="T extends Record<string, any>">
2
+ import type { BulletLegendItemInterface } from '@unovis/ts'
3
+ import { VisAxis, VisGroupedBar, VisStackedBar, VisXYContainer } from '@unovis/vue'
4
+ import { Axis, GroupedBar, StackedBar } from '@unovis/ts'
5
+ import { type Component, computed, ref } from 'vue'
6
+ import { useMounted } from '@vueuse/core'
7
+ import type { BaseChartProps } from '.'
8
+ import { ChartCrosshair, ChartLegend, defaultColors } from '@/components/ui/chart'
9
+ import { cn } from '@/lib/utils'
10
+
11
+ const props = withDefaults(defineProps<BaseChartProps<T> & {
12
+ /**
13
+ * Render custom tooltip component.
14
+ */
15
+ customTooltip?: Component
16
+ /**
17
+ * Change the type of the chart
18
+ * @default "grouped"
19
+ */
20
+ type?: 'stacked' | 'grouped'
21
+ /**
22
+ * Rounded bar corners
23
+ * @default 0
24
+ */
25
+ roundedCorners?: number
26
+ }>(), {
27
+ type: 'grouped',
28
+ margin: () => ({ top: 0, bottom: 0, left: 0, right: 0 }),
29
+ filterOpacity: 0.2,
30
+ roundedCorners: 0,
31
+ showXAxis: true,
32
+ showYAxis: true,
33
+ showTooltip: true,
34
+ showLegend: true,
35
+ showGridLine: true,
36
+ })
37
+ const emits = defineEmits<{
38
+ legendItemClick: [d: BulletLegendItemInterface, i: number]
39
+ }>()
40
+
41
+ type KeyOfT = Extract<keyof T, string>
42
+ type Data = typeof props.data[number]
43
+
44
+ const index = computed(() => props.index as KeyOfT)
45
+ const colors = computed(() => props.colors?.length ? props.colors : defaultColors(props.categories.length))
46
+ const legendItems = ref<BulletLegendItemInterface[]>(props.categories.map((category, i) => ({
47
+ name: category,
48
+ color: colors.value[i],
49
+ inactive: false,
50
+ })))
51
+
52
+ const isMounted = useMounted()
53
+
54
+ function handleLegendItemClick(d: BulletLegendItemInterface, i: number) {
55
+ emits('legendItemClick', d, i)
56
+ }
57
+
58
+ const VisBarComponent = computed(() => props.type === 'grouped' ? VisGroupedBar : VisStackedBar)
59
+ const selectorsBar = computed(() => props.type === 'grouped' ? GroupedBar.selectors.bar : StackedBar.selectors.bar)
60
+ </script>
61
+
62
+ <template>
63
+ <div :class="cn('w-full h-[400px] flex flex-col items-end', $attrs.class ?? '')">
64
+ <ChartLegend v-if="showLegend" v-model:items="legendItems" @legend-item-click="handleLegendItemClick" />
65
+
66
+ <VisXYContainer
67
+ :data="data"
68
+ :style="{ height: isMounted ? '100%' : 'auto' }"
69
+ :margin="margin"
70
+ >
71
+ <ChartCrosshair v-if="showTooltip" :colors="colors" :items="legendItems" :custom-tooltip="customTooltip" :index="index" />
72
+
73
+ <VisBarComponent
74
+ :x="(d: Data, i: number) => i"
75
+ :y="categories.map(category => (d: Data) => d[category]) "
76
+ :color="colors"
77
+ :rounded-corners="roundedCorners"
78
+ :bar-padding="0.05"
79
+ :attributes="{
80
+ [selectorsBar]: {
81
+ opacity: (d: Data, i:number) => {
82
+ const pos = i % categories.length
83
+ return legendItems[pos]?.inactive ? filterOpacity : 1
84
+ },
85
+ },
86
+ }"
87
+ />
88
+
89
+ <VisAxis
90
+ v-if="showXAxis"
91
+ type="x"
92
+ :tick-format="xFormatter ?? ((v: number) => data[v]?.[index])"
93
+ :grid-line="false"
94
+ :tick-line="false"
95
+ tick-text-color="hsl(var(--vis-text-color))"
96
+ />
97
+ <VisAxis
98
+ v-if="showYAxis"
99
+ type="y"
100
+ :tick-line="false"
101
+ :tick-format="yFormatter"
102
+ :domain-line="false"
103
+ :grid-line="showGridLine"
104
+ :attributes="{
105
+ [Axis.selectors.grid]: {
106
+ class: 'text-muted',
107
+ },
108
+ }"
109
+ tick-text-color="hsl(var(--vis-text-color))"
110
+ />
111
+
112
+ <slot />
113
+ </VisXYContainer>
114
+ </div>
115
+ </template>
@@ -0,0 +1,66 @@
1
+ export { default as BarChart } from './BarChart.vue'
2
+
3
+ import type { Spacing } from '@unovis/ts'
4
+
5
+ type KeyOf<T extends Record<string, any>> = Extract<keyof T, string>
6
+
7
+ export interface BaseChartProps<T extends Record<string, any>> {
8
+ /**
9
+ * The source data, in which each entry is a dictionary.
10
+ */
11
+ data: T[]
12
+ /**
13
+ * Select the categories from your data. Used to populate the legend and toolip.
14
+ */
15
+ categories: KeyOf<T>[]
16
+ /**
17
+ * Sets the key to map the data to the axis.
18
+ */
19
+ index: KeyOf<T>
20
+ /**
21
+ * Change the default colors.
22
+ */
23
+ colors?: string[]
24
+ /**
25
+ * Margin of each the container
26
+ */
27
+ margin?: Spacing
28
+ /**
29
+ * Change the opacity of the non-selected field
30
+ * @default 0.2
31
+ */
32
+ filterOpacity?: number
33
+ /**
34
+ * Function to format X label
35
+ */
36
+ xFormatter?: (tick: number | Date, i: number, ticks: number[] | Date[]) => string
37
+ /**
38
+ * Function to format Y label
39
+ */
40
+ yFormatter?: (tick: number | Date, i: number, ticks: number[] | Date[]) => string
41
+ /**
42
+ * Controls the visibility of the X axis.
43
+ * @default true
44
+ */
45
+ showXAxis?: boolean
46
+ /**
47
+ * Controls the visibility of the Y axis.
48
+ * @default true
49
+ */
50
+ showYAxis?: boolean
51
+ /**
52
+ * Controls the visibility of tooltip.
53
+ * @default true
54
+ */
55
+ showTooltip?: boolean
56
+ /**
57
+ * Controls the visibility of legend.
58
+ * @default true
59
+ */
60
+ showLegend?: boolean
61
+ /**
62
+ * Controls the visibility of gridline.
63
+ * @default true
64
+ */
65
+ showGridLine?: boolean
66
+ }
@@ -0,0 +1,100 @@
1
+ <script setup lang="ts" generic="T extends Record<string, any>">
2
+ import { VisDonut, VisSingleContainer } from '@unovis/vue'
3
+ import { Donut } from '@unovis/ts'
4
+ import { type Component, computed, ref } from 'vue'
5
+ import { useMounted } from '@vueuse/core'
6
+ import type { BaseChartProps } from '.'
7
+ import { ChartSingleTooltip, defaultColors } from '@/components/ui/chart'
8
+ import { cn } from '@/lib/utils'
9
+
10
+ const props = withDefaults(defineProps<Pick<BaseChartProps<T>, 'data' | 'colors' | 'index' | 'margin' | 'showLegend' | 'showTooltip' | 'filterOpacity'> & {
11
+ /**
12
+ * Sets the name of the key containing the quantitative chart values.
13
+ */
14
+ category: KeyOfT
15
+ /**
16
+ * Change the type of the chart
17
+ * @default "donut"
18
+ */
19
+ type?: 'donut' | 'pie'
20
+ /**
21
+ * Function to sort the segment
22
+ */
23
+ sortFunction?: (a: any, b: any) => number | undefined
24
+ /**
25
+ * Controls the formatting for the label.
26
+ */
27
+ valueFormatter?: (tick: number, i?: number, ticks?: number[]) => string
28
+ /**
29
+ * Render custom tooltip component.
30
+ */
31
+ customTooltip?: Component
32
+ }>(), {
33
+ margin: () => ({ top: 0, bottom: 0, left: 0, right: 0 }),
34
+ sortFunction: () => undefined,
35
+ valueFormatter: (tick: number) => `${tick}`,
36
+ type: 'donut',
37
+ filterOpacity: 0.2,
38
+ showTooltip: true,
39
+ showLegend: true,
40
+ })
41
+
42
+ type KeyOfT = Extract<keyof T, string>
43
+ type Data = typeof props.data[number]
44
+
45
+ const category = computed(() => props.category as KeyOfT)
46
+ const index = computed(() => props.index as KeyOfT)
47
+
48
+ const isMounted = useMounted()
49
+ const activeSegmentKey = ref<string>()
50
+ const colors = computed(() => props.colors?.length ? props.colors : defaultColors(props.data.filter(d => d[props.category]).filter(Boolean).length))
51
+ const legendItems = computed(() => props.data.map((item, i) => ({
52
+ name: item[props.index],
53
+ color: colors.value[i],
54
+ inactive: false,
55
+ })))
56
+
57
+ const totalValue = computed(() => props.data.reduce((prev, curr) => {
58
+ return prev + curr[props.category]
59
+ }, 0))
60
+ </script>
61
+
62
+ <template>
63
+ <div :class="cn('w-full h-48 flex flex-col items-end', $attrs.class ?? '')">
64
+ <VisSingleContainer :style="{ height: isMounted ? '100%' : 'auto' }" :margin="{ left: 20, right: 20 }" :data="data">
65
+ <ChartSingleTooltip
66
+ :selector="Donut.selectors.segment"
67
+ :index="category"
68
+ :items="legendItems"
69
+ :value-formatter="valueFormatter"
70
+ :custom-tooltip="customTooltip"
71
+ />
72
+
73
+ <VisDonut
74
+ :value="(d: Data) => d[category]"
75
+ :sort-function="sortFunction"
76
+ :color="colors"
77
+ :arc-width="type === 'donut' ? 20 : 0"
78
+ :show-background="false"
79
+ :central-label="type === 'donut' ? valueFormatter(totalValue) : ''"
80
+ :events="{
81
+ [Donut.selectors.segment]: {
82
+ click: (d: Data, ev: PointerEvent, i: number, elements: HTMLElement[]) => {
83
+ if (d?.data?.[index] === activeSegmentKey) {
84
+ activeSegmentKey = undefined
85
+ elements.forEach(el => el.style.opacity = '1')
86
+ }
87
+ else {
88
+ activeSegmentKey = d?.data?.[index]
89
+ elements.forEach(el => el.style.opacity = `${filterOpacity}`)
90
+ elements[i].style.opacity = '1'
91
+ }
92
+ },
93
+ },
94
+ }"
95
+ />
96
+
97
+ <slot />
98
+ </VisSingleContainer>
99
+ </div>
100
+ </template>
@@ -0,0 +1,39 @@
1
+ export { default as DonutChart } from './DonutChart.vue'
2
+
3
+ import type { Spacing } from '@unovis/ts'
4
+
5
+ type KeyOf<T extends Record<string, any>> = Extract<keyof T, string>
6
+
7
+ export interface BaseChartProps<T extends Record<string, any>> {
8
+ /**
9
+ * The source data, in which each entry is a dictionary.
10
+ */
11
+ data: T[]
12
+ /**
13
+ * Sets the key to map the data to the axis.
14
+ */
15
+ index: KeyOf<T>
16
+ /**
17
+ * Change the default colors.
18
+ */
19
+ colors?: string[]
20
+ /**
21
+ * Margin of each the container
22
+ */
23
+ margin?: Spacing
24
+ /**
25
+ * Change the opacity of the non-selected field
26
+ * @default 0.2
27
+ */
28
+ filterOpacity?: number
29
+ /**
30
+ * Controls the visibility of tooltip.
31
+ * @default true
32
+ */
33
+ showTooltip?: boolean
34
+ /**
35
+ * Controls the visibility of legend.
36
+ * @default true
37
+ */
38
+ showLegend?: boolean
39
+ }
@@ -0,0 +1,105 @@
1
+ <script setup lang="ts" generic="T extends Record<string, any>">
2
+ import { type BulletLegendItemInterface, CurveType } from '@unovis/ts'
3
+ import { VisAxis, VisLine, VisXYContainer } from '@unovis/vue'
4
+ import { Axis, Line } from '@unovis/ts'
5
+ import { type Component, computed, ref } from 'vue'
6
+ import { useMounted } from '@vueuse/core'
7
+ import type { BaseChartProps } from '.'
8
+ import { ChartCrosshair, ChartLegend, defaultColors } from '@/components/ui/chart'
9
+ import { cn } from '@/lib/utils'
10
+
11
+ const props = withDefaults(defineProps<BaseChartProps<T> & {
12
+ /**
13
+ * Render custom tooltip component.
14
+ */
15
+ customTooltip?: Component
16
+ /**
17
+ * Type of curve
18
+ */
19
+ curveType?: CurveType
20
+ }>(), {
21
+ curveType: CurveType.MonotoneX,
22
+ filterOpacity: 0.2,
23
+ margin: () => ({ top: 0, bottom: 0, left: 0, right: 0 }),
24
+ showXAxis: true,
25
+ showYAxis: true,
26
+ showTooltip: true,
27
+ showLegend: true,
28
+ showGridLine: true,
29
+ })
30
+
31
+ const emits = defineEmits<{
32
+ legendItemClick: [d: BulletLegendItemInterface, i: number]
33
+ }>()
34
+
35
+ type KeyOfT = Extract<keyof T, string>
36
+ type Data = typeof props.data[number]
37
+
38
+ const index = computed(() => props.index as KeyOfT)
39
+ const colors = computed(() => props.colors?.length ? props.colors : defaultColors(props.categories.length))
40
+
41
+ const legendItems = ref<BulletLegendItemInterface[]>(props.categories.map((category, i) => ({
42
+ name: category,
43
+ color: colors.value[i],
44
+ inactive: false,
45
+ })))
46
+
47
+ const isMounted = useMounted()
48
+
49
+ function handleLegendItemClick(d: BulletLegendItemInterface, i: number) {
50
+ emits('legendItemClick', d, i)
51
+ }
52
+ </script>
53
+
54
+ <template>
55
+ <div :class="cn('w-full h-[400px] flex flex-col items-end', $attrs.class ?? '')">
56
+ <ChartLegend v-if="showLegend" v-model:items="legendItems" @legend-item-click="handleLegendItemClick" />
57
+
58
+ <VisXYContainer
59
+ :margin="{ left: 20, right: 20 }"
60
+ :data="data"
61
+ :style="{ height: isMounted ? '100%' : 'auto' }"
62
+ >
63
+ <ChartCrosshair v-if="showTooltip" :colors="colors" :items="legendItems" :index="index" :custom-tooltip="customTooltip" />
64
+
65
+ <template v-for="(category, i) in categories" :key="category">
66
+ <VisLine
67
+ :x="(d: Data, i: number) => i"
68
+ :y="(d: Data) => d[category]"
69
+ :curve-type="curveType"
70
+ :color="colors[i]"
71
+ :attributes="{
72
+ [Line.selectors.line]: {
73
+ opacity: legendItems.find(item => item.name === category)?.inactive ? filterOpacity : 1,
74
+ },
75
+ }"
76
+ />
77
+ </template>
78
+
79
+ <VisAxis
80
+ v-if="showXAxis"
81
+ type="x"
82
+ :tick-format="xFormatter ?? ((v: number) => data[v]?.[index])"
83
+ :grid-line="false"
84
+ :tick-line="false"
85
+ tick-text-color="hsl(var(--vis-text-color))"
86
+ />
87
+ <VisAxis
88
+ v-if="showYAxis"
89
+ type="y"
90
+ :tick-line="false"
91
+ :tick-format="yFormatter"
92
+ :domain-line="false"
93
+ :grid-line="showGridLine"
94
+ :attributes="{
95
+ [Axis.selectors.grid]: {
96
+ class: 'text-muted',
97
+ },
98
+ }"
99
+ tick-text-color="hsl(var(--vis-text-color))"
100
+ />
101
+
102
+ <slot />
103
+ </VisXYContainer>
104
+ </div>
105
+ </template>
@@ -0,0 +1,66 @@
1
+ export { default as LineChart } from './LineChart.vue'
2
+
3
+ import type { Spacing } from '@unovis/ts'
4
+
5
+ type KeyOf<T extends Record<string, any>> = Extract<keyof T, string>
6
+
7
+ export interface BaseChartProps<T extends Record<string, any>> {
8
+ /**
9
+ * The source data, in which each entry is a dictionary.
10
+ */
11
+ data: T[]
12
+ /**
13
+ * Select the categories from your data. Used to populate the legend and toolip.
14
+ */
15
+ categories: KeyOf<T>[]
16
+ /**
17
+ * Sets the key to map the data to the axis.
18
+ */
19
+ index: KeyOf<T>
20
+ /**
21
+ * Change the default colors.
22
+ */
23
+ colors?: string[]
24
+ /**
25
+ * Margin of each the container
26
+ */
27
+ margin?: Spacing
28
+ /**
29
+ * Change the opacity of the non-selected field
30
+ * @default 0.2
31
+ */
32
+ filterOpacity?: number
33
+ /**
34
+ * Function to format X label
35
+ */
36
+ xFormatter?: (tick: number | Date, i: number, ticks: number[] | Date[]) => string
37
+ /**
38
+ * Function to format Y label
39
+ */
40
+ yFormatter?: (tick: number | Date, i: number, ticks: number[] | Date[]) => string
41
+ /**
42
+ * Controls the visibility of the X axis.
43
+ * @default true
44
+ */
45
+ showXAxis?: boolean
46
+ /**
47
+ * Controls the visibility of the Y axis.
48
+ * @default true
49
+ */
50
+ showYAxis?: boolean
51
+ /**
52
+ * Controls the visibility of tooltip.
53
+ * @default true
54
+ */
55
+ showTooltip?: boolean
56
+ /**
57
+ * Controls the visibility of legend.
58
+ * @default true
59
+ */
60
+ showLegend?: boolean
61
+ /**
62
+ * Controls the visibility of gridline.
63
+ * @default true
64
+ */
65
+ showGridLine?: boolean
66
+ }
@@ -0,0 +1,33 @@
1
+ <script setup lang="ts">
2
+ import { type HTMLAttributes, computed } from 'vue'
3
+ import type { CheckboxRootEmits, CheckboxRootProps } from 'radix-vue'
4
+ import { CheckboxIndicator, CheckboxRoot, useForwardPropsEmits } from 'radix-vue'
5
+ import { Check } from 'lucide-vue-next'
6
+ import { cn } from '@/lib/utils'
7
+
8
+ const props = defineProps<CheckboxRootProps & { class?: HTMLAttributes['class'] }>()
9
+ const emits = defineEmits<CheckboxRootEmits>()
10
+
11
+ const delegatedProps = computed(() => {
12
+ const { class: _, ...delegated } = props
13
+
14
+ return delegated
15
+ })
16
+
17
+ const forwarded = useForwardPropsEmits(delegatedProps, emits)
18
+ </script>
19
+
20
+ <template>
21
+ <CheckboxRoot
22
+ v-bind="forwarded"
23
+ :class="
24
+ cn('peer h-4 w-4 shrink-0 rounded-sm border border-primary ring-offset-background focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50 data-[state=checked]:bg-primary data-[state=checked]:text-primary-foreground',
25
+ props.class)"
26
+ >
27
+ <CheckboxIndicator class="flex h-full w-full items-center justify-center text-current">
28
+ <slot>
29
+ <Check class="h-4 w-4" />
30
+ </slot>
31
+ </CheckboxIndicator>
32
+ </CheckboxRoot>
33
+ </template>
@@ -0,0 +1 @@
1
+ export { default as Checkbox } from './Checkbox.vue'
@@ -0,0 +1,15 @@
1
+ <script setup lang="ts">
2
+ import { CollapsibleRoot, useForwardPropsEmits } from 'radix-vue'
3
+ import type { CollapsibleRootEmits, CollapsibleRootProps } from 'radix-vue'
4
+
5
+ const props = defineProps<CollapsibleRootProps>()
6
+ const emits = defineEmits<CollapsibleRootEmits>()
7
+
8
+ const forwarded = useForwardPropsEmits(props, emits)
9
+ </script>
10
+
11
+ <template>
12
+ <CollapsibleRoot v-slot="{ open }" v-bind="forwarded">
13
+ <slot :open="open" />
14
+ </CollapsibleRoot>
15
+ </template>
@@ -0,0 +1,11 @@
1
+ <script setup lang="ts">
2
+ import { CollapsibleContent, type CollapsibleContentProps } from 'radix-vue'
3
+
4
+ const props = defineProps<CollapsibleContentProps>()
5
+ </script>
6
+
7
+ <template>
8
+ <CollapsibleContent v-bind="props" class="overflow-hidden transition-all data-[state=closed]:animate-collapsible-up data-[state=open]:animate-collapsible-down">
9
+ <slot />
10
+ </CollapsibleContent>
11
+ </template>
@@ -0,0 +1,11 @@
1
+ <script setup lang="ts">
2
+ import { CollapsibleTrigger, type CollapsibleTriggerProps } from 'radix-vue'
3
+
4
+ const props = defineProps<CollapsibleTriggerProps>()
5
+ </script>
6
+
7
+ <template>
8
+ <CollapsibleTrigger v-bind="props">
9
+ <slot />
10
+ </CollapsibleTrigger>
11
+ </template>
@@ -0,0 +1,3 @@
1
+ export { default as Collapsible } from './Collapsible.vue'
2
+ export { default as CollapsibleTrigger } from './CollapsibleTrigger.vue'
3
+ export { default as CollapsibleContent } from './CollapsibleContent.vue'
@@ -0,0 +1,30 @@
1
+ <script setup lang="ts">
2
+ import { type HTMLAttributes, computed } from 'vue'
3
+ import type { ComboboxRootEmits, ComboboxRootProps } from 'radix-vue'
4
+ import { ComboboxRoot, useForwardPropsEmits } from 'radix-vue'
5
+ import { cn } from '@/lib/utils'
6
+
7
+ const props = withDefaults(defineProps<ComboboxRootProps & { class?: HTMLAttributes['class'] }>(), {
8
+ open: true,
9
+ modelValue: '',
10
+ })
11
+
12
+ const emits = defineEmits<ComboboxRootEmits>()
13
+
14
+ const delegatedProps = computed(() => {
15
+ const { class: _, ...delegated } = props
16
+
17
+ return delegated
18
+ })
19
+
20
+ const forwarded = useForwardPropsEmits(delegatedProps, emits)
21
+ </script>
22
+
23
+ <template>
24
+ <ComboboxRoot
25
+ v-bind="forwarded"
26
+ :class="cn('flex h-full w-full flex-col overflow-hidden rounded-md bg-popover text-popover-foreground', props.class)"
27
+ >
28
+ <slot />
29
+ </ComboboxRoot>
30
+ </template>
@@ -0,0 +1,21 @@
1
+ <script setup lang="ts">
2
+ import { useForwardPropsEmits } from 'radix-vue'
3
+ import type { DialogRootEmits, DialogRootProps } from 'radix-vue'
4
+ import Command from './Command.vue'
5
+ import { Dialog, DialogContent } from '@/components/ui/dialog'
6
+
7
+ const props = defineProps<DialogRootProps>()
8
+ const emits = defineEmits<DialogRootEmits>()
9
+
10
+ const forwarded = useForwardPropsEmits(props, emits)
11
+ </script>
12
+
13
+ <template>
14
+ <Dialog v-bind="forwarded">
15
+ <DialogContent class="overflow-hidden p-0 shadow-lg">
16
+ <Command class="[&_[cmdk-group-heading]]:px-2 [&_[cmdk-group-heading]]:font-medium [&_[cmdk-group-heading]]:text-muted-foreground [&_[cmdk-group]:not([hidden])_~[cmdk-group]]:pt-0 [&_[cmdk-group]]:px-2 [&_[cmdk-input-wrapper]_svg]:h-5 [&_[cmdk-input-wrapper]_svg]:w-5 [&_[cmdk-input]]:h-12 [&_[cmdk-item]]:px-2 [&_[cmdk-item]]:py-3 [&_[cmdk-item]_svg]:h-5 [&_[cmdk-item]_svg]:w-5">
17
+ <slot />
18
+ </Command>
19
+ </DialogContent>
20
+ </Dialog>
21
+ </template>
@@ -0,0 +1,20 @@
1
+ <script setup lang="ts">
2
+ import { type HTMLAttributes, computed } from 'vue'
3
+ import type { ComboboxEmptyProps } from 'radix-vue'
4
+ import { ComboboxEmpty } from 'radix-vue'
5
+ import { cn } from '@/lib/utils'
6
+
7
+ const props = defineProps<ComboboxEmptyProps & { class?: HTMLAttributes['class'] }>()
8
+
9
+ const delegatedProps = computed(() => {
10
+ const { class: _, ...delegated } = props
11
+
12
+ return delegated
13
+ })
14
+ </script>
15
+
16
+ <template>
17
+ <ComboboxEmpty v-bind="delegatedProps" :class="cn('py-6 text-center text-sm', props.class)">
18
+ <slot />
19
+ </ComboboxEmpty>
20
+ </template>
@@ -0,0 +1,29 @@
1
+ <script setup lang="ts">
2
+ import { type HTMLAttributes, computed } from 'vue'
3
+ import type { ComboboxGroupProps } from 'radix-vue'
4
+ import { ComboboxGroup, ComboboxLabel } from 'radix-vue'
5
+ import { cn } from '@/lib/utils'
6
+
7
+ const props = defineProps<ComboboxGroupProps & {
8
+ class?: HTMLAttributes['class']
9
+ heading?: string
10
+ }>()
11
+
12
+ const delegatedProps = computed(() => {
13
+ const { class: _, ...delegated } = props
14
+
15
+ return delegated
16
+ })
17
+ </script>
18
+
19
+ <template>
20
+ <ComboboxGroup
21
+ v-bind="delegatedProps"
22
+ :class="cn('overflow-hidden p-1 text-foreground [&_[cmdk-group-heading]]:px-2 [&_[cmdk-group-heading]]:py-1.5 [&_[cmdk-group-heading]]:text-xs [&_[cmdk-group-heading]]:font-medium [&_[cmdk-group-heading]]:text-muted-foreground', props.class)"
23
+ >
24
+ <ComboboxLabel v-if="heading" class="px-2 py-1.5 text-xs font-medium text-muted-foreground">
25
+ {{ heading }}
26
+ </ComboboxLabel>
27
+ <slot />
28
+ </ComboboxGroup>
29
+ </template>