@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,13 @@
1
+ <script setup lang="ts">
2
+ import { DropdownMenuTrigger, type DropdownMenuTriggerProps, useForwardProps } from 'radix-vue'
3
+
4
+ const props = defineProps<DropdownMenuTriggerProps>()
5
+
6
+ const forwardedProps = useForwardProps(props)
7
+ </script>
8
+
9
+ <template>
10
+ <DropdownMenuTrigger class="outline-none" v-bind="forwardedProps">
11
+ <slot />
12
+ </DropdownMenuTrigger>
13
+ </template>
@@ -0,0 +1,16 @@
1
+ export { DropdownMenuPortal } from 'radix-vue'
2
+
3
+ export { default as DropdownMenu } from './DropdownMenu.vue'
4
+ export { default as DropdownMenuTrigger } from './DropdownMenuTrigger.vue'
5
+ export { default as DropdownMenuContent } from './DropdownMenuContent.vue'
6
+ export { default as DropdownMenuGroup } from './DropdownMenuGroup.vue'
7
+ export { default as DropdownMenuRadioGroup } from './DropdownMenuRadioGroup.vue'
8
+ export { default as DropdownMenuItem } from './DropdownMenuItem.vue'
9
+ export { default as DropdownMenuCheckboxItem } from './DropdownMenuCheckboxItem.vue'
10
+ export { default as DropdownMenuRadioItem } from './DropdownMenuRadioItem.vue'
11
+ export { default as DropdownMenuShortcut } from './DropdownMenuShortcut.vue'
12
+ export { default as DropdownMenuSeparator } from './DropdownMenuSeparator.vue'
13
+ export { default as DropdownMenuLabel } from './DropdownMenuLabel.vue'
14
+ export { default as DropdownMenuSub } from './DropdownMenuSub.vue'
15
+ export { default as DropdownMenuSubTrigger } from './DropdownMenuSubTrigger.vue'
16
+ export { default as DropdownMenuSubContent } from './DropdownMenuSubContent.vue'
@@ -0,0 +1,16 @@
1
+ <script lang="ts" setup>
2
+ import { Slot } from 'radix-vue'
3
+ import { useFormField } from './useFormField'
4
+
5
+ const { error, formItemId, formDescriptionId, formMessageId } = useFormField()
6
+ </script>
7
+
8
+ <template>
9
+ <Slot
10
+ :id="formItemId"
11
+ :aria-describedby="!error ? `${formDescriptionId}` : `${formDescriptionId} ${formMessageId}`"
12
+ :aria-invalid="!!error"
13
+ >
14
+ <slot />
15
+ </Slot>
16
+ </template>
@@ -0,0 +1,20 @@
1
+ <script lang="ts" setup>
2
+ import type { HTMLAttributes } from 'vue'
3
+ import { useFormField } from './useFormField'
4
+ import { cn } from '@/lib/utils'
5
+
6
+ const props = defineProps<{
7
+ class?: HTMLAttributes['class']
8
+ }>()
9
+
10
+ const { formDescriptionId } = useFormField()
11
+ </script>
12
+
13
+ <template>
14
+ <p
15
+ :id="formDescriptionId"
16
+ :class="cn('text-sm text-muted-foreground', props.class)"
17
+ >
18
+ <slot />
19
+ </p>
20
+ </template>
@@ -0,0 +1,19 @@
1
+ <script lang="ts" setup>
2
+ import { type HTMLAttributes, provide } from 'vue'
3
+ import { useId } from 'radix-vue'
4
+ import { FORM_ITEM_INJECTION_KEY } from './injectionKeys'
5
+ import { cn } from '@/lib/utils'
6
+
7
+ const props = defineProps<{
8
+ class?: HTMLAttributes['class']
9
+ }>()
10
+
11
+ const id = useId()
12
+ provide(FORM_ITEM_INJECTION_KEY, id)
13
+ </script>
14
+
15
+ <template>
16
+ <div :class="cn('space-y-2', props.class)">
17
+ <slot />
18
+ </div>
19
+ </template>
@@ -0,0 +1,23 @@
1
+ <script lang="ts" setup>
2
+ import type { HTMLAttributes } from 'vue'
3
+ import type { LabelProps } from 'radix-vue'
4
+ import { useFormField } from './useFormField'
5
+ import { cn } from '@/lib/utils'
6
+ import { Label } from '@/components/ui/label'
7
+
8
+ const props = defineProps<LabelProps & { class?: HTMLAttributes['class'] }>()
9
+
10
+ const { error, formItemId } = useFormField()
11
+ </script>
12
+
13
+ <template>
14
+ <Label
15
+ :class="cn(
16
+ error && 'text-destructive',
17
+ props.class,
18
+ )"
19
+ :for="formItemId"
20
+ >
21
+ <slot />
22
+ </Label>
23
+ </template>
@@ -0,0 +1,16 @@
1
+ <script lang="ts" setup>
2
+ import { ErrorMessage } from 'vee-validate'
3
+ import { toValue } from 'vue'
4
+ import { useFormField } from './useFormField'
5
+
6
+ const { name, formMessageId } = useFormField()
7
+ </script>
8
+
9
+ <template>
10
+ <ErrorMessage
11
+ :id="formMessageId"
12
+ as="p"
13
+ :name="toValue(name)"
14
+ class="text-sm font-medium text-destructive"
15
+ />
16
+ </template>
@@ -0,0 +1,7 @@
1
+ export { Form, Field as FormField } from "vee-validate";
2
+ export { default as FormItem } from "./FormItem.vue";
3
+ export { default as FormLabel } from "./FormLabel.vue";
4
+ export { default as FormControl } from "./FormControl.vue";
5
+ export { default as FormMessage } from "./FormMessage.vue";
6
+ export { default as FormDescription } from "./FormDescription.vue";
7
+ export { FORM_ITEM_INJECTION_KEY } from "./injectionKeys";
@@ -0,0 +1,7 @@
1
+ export { Form, Field as FormField } from 'vee-validate'
2
+ export { default as FormItem } from './FormItem.vue'
3
+ export { default as FormLabel } from './FormLabel.vue'
4
+ export { default as FormControl } from './FormControl.vue'
5
+ export { default as FormMessage } from './FormMessage.vue'
6
+ export { default as FormDescription } from './FormDescription.vue'
7
+ export { FORM_ITEM_INJECTION_KEY } from './injectionKeys'
@@ -0,0 +1 @@
1
+ export const FORM_ITEM_INJECTION_KEY = Symbol();
@@ -0,0 +1,4 @@
1
+ import type { InjectionKey } from 'vue'
2
+
3
+ export const FORM_ITEM_INJECTION_KEY
4
+ = Symbol() as InjectionKey<string>
@@ -0,0 +1,36 @@
1
+ import {
2
+ FieldContextKey,
3
+ useFieldError,
4
+ useIsFieldDirty,
5
+ useIsFieldTouched,
6
+ useIsFieldValid,
7
+ } from "vee-validate";
8
+ import { inject } from "vue";
9
+ import { FORM_ITEM_INJECTION_KEY } from "./injectionKeys";
10
+
11
+ export function useFormField() {
12
+ const fieldContext = inject(FieldContextKey);
13
+ const fieldItemContext = inject(FORM_ITEM_INJECTION_KEY);
14
+
15
+ const fieldState = {
16
+ valid: useIsFieldValid(),
17
+ isDirty: useIsFieldDirty(),
18
+ isTouched: useIsFieldTouched(),
19
+ error: useFieldError(),
20
+ };
21
+
22
+ if (!fieldContext)
23
+ throw new Error("useFormField should be used within <FormField>");
24
+
25
+ const { name } = fieldContext;
26
+ const id = fieldItemContext;
27
+
28
+ return {
29
+ id,
30
+ name,
31
+ formItemId: `${id}-form-item`,
32
+ formDescriptionId: `${id}-form-item-description`,
33
+ formMessageId: `${id}-form-item-message`,
34
+ ...fieldState,
35
+ };
36
+ }
@@ -0,0 +1,30 @@
1
+ import { FieldContextKey, useFieldError, useIsFieldDirty, useIsFieldTouched, useIsFieldValid } from 'vee-validate'
2
+ import { inject } from 'vue'
3
+ import { FORM_ITEM_INJECTION_KEY } from './injectionKeys'
4
+
5
+ export function useFormField() {
6
+ const fieldContext = inject(FieldContextKey)
7
+ const fieldItemContext = inject(FORM_ITEM_INJECTION_KEY)
8
+
9
+ const fieldState = {
10
+ valid: useIsFieldValid(),
11
+ isDirty: useIsFieldDirty(),
12
+ isTouched: useIsFieldTouched(),
13
+ error: useFieldError(),
14
+ }
15
+
16
+ if (!fieldContext)
17
+ throw new Error('useFormField should be used within <FormField>')
18
+
19
+ const { name } = fieldContext
20
+ const id = fieldItemContext
21
+
22
+ return {
23
+ id,
24
+ name,
25
+ formItemId: `${id}-form-item`,
26
+ formDescriptionId: `${id}-form-item-description`,
27
+ formMessageId: `${id}-form-item-message`,
28
+ ...fieldState,
29
+ }
30
+ }
@@ -0,0 +1,14 @@
1
+ <script setup lang="ts">
2
+ import { HoverCardRoot, type HoverCardRootEmits, type HoverCardRootProps, useForwardPropsEmits } from 'radix-vue'
3
+
4
+ const props = defineProps<HoverCardRootProps>()
5
+ const emits = defineEmits<HoverCardRootEmits>()
6
+
7
+ const forwarded = useForwardPropsEmits(props, emits)
8
+ </script>
9
+
10
+ <template>
11
+ <HoverCardRoot v-bind="forwarded">
12
+ <slot />
13
+ </HoverCardRoot>
14
+ </template>
@@ -0,0 +1,41 @@
1
+ <script setup lang="ts">
2
+ import { type HTMLAttributes, computed } from 'vue'
3
+ import {
4
+ HoverCardContent,
5
+ type HoverCardContentProps,
6
+ HoverCardPortal,
7
+ useForwardProps,
8
+ } from 'radix-vue'
9
+ import { cn } from '@/lib/utils'
10
+
11
+ const props = withDefaults(
12
+ defineProps<HoverCardContentProps & { class?: HTMLAttributes['class'] }>(),
13
+ {
14
+ sideOffset: 4,
15
+ },
16
+ )
17
+
18
+ const delegatedProps = computed(() => {
19
+ const { class: _, ...delegated } = props
20
+
21
+ return delegated
22
+ })
23
+
24
+ const forwardedProps = useForwardProps(delegatedProps)
25
+ </script>
26
+
27
+ <template>
28
+ <HoverCardPortal>
29
+ <HoverCardContent
30
+ v-bind="forwardedProps"
31
+ :class="
32
+ cn(
33
+ 'z-50 w-64 rounded-md border bg-popover p-4 text-popover-foreground shadow-md outline-none data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2',
34
+ props.class,
35
+ )
36
+ "
37
+ >
38
+ <slot />
39
+ </HoverCardContent>
40
+ </HoverCardPortal>
41
+ </template>
@@ -0,0 +1,11 @@
1
+ <script setup lang="ts">
2
+ import { HoverCardTrigger, type HoverCardTriggerProps } from 'radix-vue'
3
+
4
+ const props = defineProps<HoverCardTriggerProps>()
5
+ </script>
6
+
7
+ <template>
8
+ <HoverCardTrigger v-bind="props">
9
+ <slot />
10
+ </HoverCardTrigger>
11
+ </template>
@@ -0,0 +1,3 @@
1
+ export { default as HoverCard } from './HoverCard.vue'
2
+ export { default as HoverCardTrigger } from './HoverCardTrigger.vue'
3
+ export { default as HoverCardContent } from './HoverCardContent.vue'
@@ -0,0 +1,24 @@
1
+ <script setup lang="ts">
2
+ import type { HTMLAttributes } from 'vue'
3
+ import { useVModel } from '@vueuse/core'
4
+ import { cn } from '@/lib/utils'
5
+
6
+ const props = defineProps<{
7
+ defaultValue?: string | number
8
+ modelValue?: string | number
9
+ class?: HTMLAttributes['class']
10
+ }>()
11
+
12
+ const emits = defineEmits<{
13
+ (e: 'update:modelValue', payload: string | number): void
14
+ }>()
15
+
16
+ const modelValue = useVModel(props, 'modelValue', emits, {
17
+ passive: true,
18
+ defaultValue: props.defaultValue,
19
+ })
20
+ </script>
21
+
22
+ <template>
23
+ <input v-model="modelValue" :class="cn('flex h-10 w-full rounded-md border border-input bg-background px-3 py-2 text-sm ring-offset-background file:border-0 file:bg-transparent file:text-sm file:font-medium placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50', props.class)">
24
+ </template>
@@ -0,0 +1 @@
1
+ export { default as Input } from "./Input.vue";
@@ -0,0 +1 @@
1
+ export { default as Input } from './Input.vue'
@@ -0,0 +1,27 @@
1
+ <script setup lang="ts">
2
+ import { type HTMLAttributes, computed } from 'vue'
3
+ import { Label, type LabelProps } from 'radix-vue'
4
+ import { cn } from '@/lib/utils'
5
+
6
+ const props = defineProps<LabelProps & { class?: HTMLAttributes['class'] }>()
7
+
8
+ const delegatedProps = computed(() => {
9
+ const { class: _, ...delegated } = props
10
+
11
+ return delegated
12
+ })
13
+ </script>
14
+
15
+ <template>
16
+ <Label
17
+ v-bind="delegatedProps"
18
+ :class="
19
+ cn(
20
+ 'text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70',
21
+ props.class,
22
+ )
23
+ "
24
+ >
25
+ <slot />
26
+ </Label>
27
+ </template>
@@ -0,0 +1 @@
1
+ export { default as Label } from "./Label.vue";
@@ -0,0 +1 @@
1
+ export { default as Label } from './Label.vue'
@@ -0,0 +1,35 @@
1
+ <script setup lang="ts">
2
+ import { type HTMLAttributes, computed } from 'vue'
3
+ import {
4
+ MenubarRoot,
5
+ type MenubarRootEmits,
6
+ type MenubarRootProps,
7
+ useForwardPropsEmits,
8
+ } from 'radix-vue'
9
+ import { cn } from '@/lib/utils'
10
+
11
+ const props = defineProps<MenubarRootProps & { class?: HTMLAttributes['class'] }>()
12
+ const emits = defineEmits<MenubarRootEmits>()
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
+ <MenubarRoot
25
+ v-bind="forwarded"
26
+ :class="
27
+ cn(
28
+ 'flex h-10 items-center gap-x-1 rounded-md border bg-background p-1',
29
+ props.class,
30
+ )
31
+ "
32
+ >
33
+ <slot />
34
+ </MenubarRoot>
35
+ </template>
@@ -0,0 +1,40 @@
1
+ <script setup lang="ts">
2
+ import { type HTMLAttributes, computed } from 'vue'
3
+ import {
4
+ MenubarCheckboxItem,
5
+ type MenubarCheckboxItemEmits,
6
+ type MenubarCheckboxItemProps,
7
+ MenubarItemIndicator,
8
+ useForwardPropsEmits,
9
+ } from 'radix-vue'
10
+ import { Check } from 'lucide-vue-next'
11
+ import { cn } from '@/lib/utils'
12
+
13
+ const props = defineProps<MenubarCheckboxItemProps & { class?: HTMLAttributes['class'] }>()
14
+ const emits = defineEmits<MenubarCheckboxItemEmits>()
15
+
16
+ const delegatedProps = computed(() => {
17
+ const { class: _, ...delegated } = props
18
+
19
+ return delegated
20
+ })
21
+
22
+ const forwarded = useForwardPropsEmits(delegatedProps, emits)
23
+ </script>
24
+
25
+ <template>
26
+ <MenubarCheckboxItem
27
+ v-bind="forwarded"
28
+ :class="cn(
29
+ 'relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50',
30
+ props.class,
31
+ )"
32
+ >
33
+ <span class="absolute left-2 flex h-3.5 w-3.5 items-center justify-center">
34
+ <MenubarItemIndicator>
35
+ <Check class="w-4 h-4" />
36
+ </MenubarItemIndicator>
37
+ </span>
38
+ <slot />
39
+ </MenubarCheckboxItem>
40
+ </template>
@@ -0,0 +1,43 @@
1
+ <script setup lang="ts">
2
+ import { type HTMLAttributes, computed } from 'vue'
3
+ import {
4
+ MenubarContent,
5
+ type MenubarContentProps,
6
+ MenubarPortal,
7
+ useForwardProps,
8
+ } from 'radix-vue'
9
+ import { cn } from '@/lib/utils'
10
+
11
+ const props = withDefaults(
12
+ defineProps<MenubarContentProps & { class?: HTMLAttributes['class'] }>(),
13
+ {
14
+ align: 'start',
15
+ alignOffset: -4,
16
+ sideOffset: 8,
17
+ },
18
+ )
19
+
20
+ const delegatedProps = computed(() => {
21
+ const { class: _, ...delegated } = props
22
+
23
+ return delegated
24
+ })
25
+
26
+ const forwardedProps = useForwardProps(delegatedProps)
27
+ </script>
28
+
29
+ <template>
30
+ <MenubarPortal>
31
+ <MenubarContent
32
+ v-bind="forwardedProps"
33
+ :class="
34
+ cn(
35
+ 'z-50 min-w-48 overflow-hidden rounded-md border bg-popover p-1 text-popover-foreground shadow-md data-[state=open]:animate-in data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2',
36
+ props.class,
37
+ )
38
+ "
39
+ >
40
+ <slot />
41
+ </MenubarContent>
42
+ </MenubarPortal>
43
+ </template>
@@ -0,0 +1,11 @@
1
+ <script setup lang="ts">
2
+ import { MenubarGroup, type MenubarGroupProps } from 'radix-vue'
3
+
4
+ const props = defineProps<MenubarGroupProps>()
5
+ </script>
6
+
7
+ <template>
8
+ <MenubarGroup v-bind="props">
9
+ <slot />
10
+ </MenubarGroup>
11
+ </template>
@@ -0,0 +1,35 @@
1
+ <script setup lang="ts">
2
+ import { type HTMLAttributes, computed } from 'vue'
3
+ import {
4
+ MenubarItem,
5
+ type MenubarItemEmits,
6
+ type MenubarItemProps,
7
+ useForwardPropsEmits,
8
+ } from 'radix-vue'
9
+ import { cn } from '@/lib/utils'
10
+
11
+ const props = defineProps<MenubarItemProps & { class?: HTMLAttributes['class'], inset?: boolean }>()
12
+
13
+ const emits = defineEmits<MenubarItemEmits>()
14
+
15
+ const delegatedProps = computed(() => {
16
+ const { class: _, ...delegated } = props
17
+
18
+ return delegated
19
+ })
20
+
21
+ const forwarded = useForwardPropsEmits(delegatedProps, emits)
22
+ </script>
23
+
24
+ <template>
25
+ <MenubarItem
26
+ v-bind="forwarded"
27
+ :class="cn(
28
+ 'relative flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50',
29
+ inset && 'pl-8',
30
+ props.class,
31
+ )"
32
+ >
33
+ <slot />
34
+ </MenubarItem>
35
+ </template>
@@ -0,0 +1,13 @@
1
+ <script setup lang="ts">
2
+ import type { HTMLAttributes } from 'vue'
3
+ import { MenubarLabel, type MenubarLabelProps } from 'radix-vue'
4
+ import { cn } from '@/lib/utils'
5
+
6
+ const props = defineProps<MenubarLabelProps & { class?: HTMLAttributes['class'], inset?: boolean }>()
7
+ </script>
8
+
9
+ <template>
10
+ <MenubarLabel :class="cn('px-2 py-1.5 text-sm font-semibold', inset && 'pl-8', props.class)">
11
+ <slot />
12
+ </MenubarLabel>
13
+ </template>
@@ -0,0 +1,11 @@
1
+ <script setup lang="ts">
2
+ import { MenubarMenu, type MenubarMenuProps } from 'radix-vue'
3
+
4
+ const props = defineProps<MenubarMenuProps>()
5
+ </script>
6
+
7
+ <template>
8
+ <MenubarMenu v-bind="props">
9
+ <slot />
10
+ </MenubarMenu>
11
+ </template>
@@ -0,0 +1,20 @@
1
+ <script setup lang="ts">
2
+ import {
3
+ MenubarRadioGroup,
4
+ type MenubarRadioGroupEmits,
5
+ type MenubarRadioGroupProps,
6
+ useForwardPropsEmits,
7
+ } from 'radix-vue'
8
+
9
+ const props = defineProps<MenubarRadioGroupProps>()
10
+
11
+ const emits = defineEmits<MenubarRadioGroupEmits>()
12
+
13
+ const forwarded = useForwardPropsEmits(props, emits)
14
+ </script>
15
+
16
+ <template>
17
+ <MenubarRadioGroup v-bind="forwarded">
18
+ <slot />
19
+ </MenubarRadioGroup>
20
+ </template>
@@ -0,0 +1,40 @@
1
+ <script setup lang="ts">
2
+ import { type HTMLAttributes, computed } from 'vue'
3
+ import {
4
+ MenubarItemIndicator,
5
+ MenubarRadioItem,
6
+ type MenubarRadioItemEmits,
7
+ type MenubarRadioItemProps,
8
+ useForwardPropsEmits,
9
+ } from 'radix-vue'
10
+ import { Circle } from 'lucide-vue-next'
11
+ import { cn } from '@/lib/utils'
12
+
13
+ const props = defineProps<MenubarRadioItemProps & { class?: HTMLAttributes['class'] }>()
14
+ const emits = defineEmits<MenubarRadioItemEmits>()
15
+
16
+ const delegatedProps = computed(() => {
17
+ const { class: _, ...delegated } = props
18
+
19
+ return delegated
20
+ })
21
+
22
+ const forwarded = useForwardPropsEmits(delegatedProps, emits)
23
+ </script>
24
+
25
+ <template>
26
+ <MenubarRadioItem
27
+ v-bind="forwarded"
28
+ :class="cn(
29
+ 'relative flex cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50',
30
+ props.class,
31
+ )"
32
+ >
33
+ <span class="absolute left-2 flex h-3.5 w-3.5 items-center justify-center">
34
+ <MenubarItemIndicator>
35
+ <Circle class="h-2 w-2 fill-current" />
36
+ </MenubarItemIndicator>
37
+ </span>
38
+ <slot />
39
+ </MenubarRadioItem>
40
+ </template>
@@ -0,0 +1,19 @@
1
+ <script setup lang="ts">
2
+ import { type HTMLAttributes, computed } from 'vue'
3
+ import { MenubarSeparator, type MenubarSeparatorProps, useForwardProps } from 'radix-vue'
4
+ import { cn } from '@/lib/utils'
5
+
6
+ const props = defineProps<MenubarSeparatorProps & { class?: HTMLAttributes['class'] }>()
7
+
8
+ const delegatedProps = computed(() => {
9
+ const { class: _, ...delegated } = props
10
+
11
+ return delegated
12
+ })
13
+
14
+ const forwardedProps = useForwardProps(delegatedProps)
15
+ </script>
16
+
17
+ <template>
18
+ <MenubarSeparator :class=" cn('-mx-1 my-1 h-px bg-muted', props.class)" v-bind="forwardedProps" />
19
+ </template>
@@ -0,0 +1,14 @@
1
+ <script setup lang="ts">
2
+ import type { HTMLAttributes } from 'vue'
3
+ import { cn } from '@/lib/utils'
4
+
5
+ const props = defineProps<{
6
+ class?: HTMLAttributes['class']
7
+ }>()
8
+ </script>
9
+
10
+ <template>
11
+ <span :class="cn('ml-auto text-xs tracking-widest text-muted-foreground', props.class)">
12
+ <slot />
13
+ </span>
14
+ </template>