@edgedev/create-edge-app 1.0.40 → 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 -101
  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,30 @@
1
+ <script setup lang="ts">
2
+ import { ArrowRight } from 'lucide-vue-next'
3
+ import { useCarousel } from './useCarousel'
4
+ import type { WithClassAsProps } from './interface'
5
+ import { cn } from '@/lib/utils'
6
+ import { Button } from '@/components/ui/button'
7
+
8
+ const props = defineProps<WithClassAsProps>()
9
+
10
+ const { orientation, canScrollNext, scrollNext } = useCarousel()
11
+ </script>
12
+
13
+ <template>
14
+ <Button
15
+ :disabled="!canScrollNext"
16
+ :class="cn(
17
+ 'touch-manipulation absolute h-8 w-8 rounded-full p-0',
18
+ orientation === 'horizontal'
19
+ ? '-right-12 top-1/2 -translate-y-1/2'
20
+ : '-bottom-12 left-1/2 -translate-x-1/2 rotate-90',
21
+ props.class,
22
+ )"
23
+ variant="outline"
24
+ @click="scrollNext"
25
+ >
26
+ <slot>
27
+ <ArrowRight class="h-4 w-4 text-current" />
28
+ </slot>
29
+ </Button>
30
+ </template>
@@ -0,0 +1,30 @@
1
+ <script setup lang="ts">
2
+ import { ArrowLeft } from 'lucide-vue-next'
3
+ import { useCarousel } from './useCarousel'
4
+ import type { WithClassAsProps } from './interface'
5
+ import { cn } from '@/lib/utils'
6
+ import { Button } from '@/components/ui/button'
7
+
8
+ const props = defineProps<WithClassAsProps>()
9
+
10
+ const { orientation, canScrollPrev, scrollPrev } = useCarousel()
11
+ </script>
12
+
13
+ <template>
14
+ <Button
15
+ :disabled="!canScrollPrev"
16
+ :class="cn(
17
+ 'touch-manipulation absolute h-8 w-8 rounded-full p-0',
18
+ orientation === 'horizontal'
19
+ ? '-left-12 top-1/2 -translate-y-1/2'
20
+ : '-top-12 left-1/2 -translate-x-1/2 rotate-90',
21
+ props.class,
22
+ )"
23
+ variant="outline"
24
+ @click="scrollPrev"
25
+ >
26
+ <slot>
27
+ <ArrowLeft class="h-4 w-4 text-current" />
28
+ </slot>
29
+ </Button>
30
+ </template>
@@ -0,0 +1,10 @@
1
+ export { default as Carousel } from './Carousel.vue'
2
+ export { default as CarouselContent } from './CarouselContent.vue'
3
+ export { default as CarouselItem } from './CarouselItem.vue'
4
+ export { default as CarouselPrevious } from './CarouselPrevious.vue'
5
+ export { default as CarouselNext } from './CarouselNext.vue'
6
+ export { useCarousel } from './useCarousel'
7
+
8
+ export type {
9
+ EmblaCarouselType as CarouselApi,
10
+ } from 'embla-carousel'
@@ -0,0 +1,20 @@
1
+ import type {
2
+ EmblaCarouselType as CarouselApi,
3
+ EmblaOptionsType as CarouselOptions,
4
+ EmblaPluginType as CarouselPlugin,
5
+ } from 'embla-carousel'
6
+ import type { HTMLAttributes, Ref } from 'vue'
7
+
8
+ export interface CarouselProps {
9
+ opts?: CarouselOptions | Ref<CarouselOptions>
10
+ plugins?: CarouselPlugin[] | Ref<CarouselPlugin[]>
11
+ orientation?: 'horizontal' | 'vertical'
12
+ }
13
+
14
+ export interface CarouselEmits {
15
+ (e: 'init-api', payload: CarouselApi): void
16
+ }
17
+
18
+ export interface WithClassAsProps {
19
+ class?: HTMLAttributes['class']
20
+ }
@@ -0,0 +1,59 @@
1
+ import { createInjectionState } from '@vueuse/core'
2
+ import emblaCarouselVue from 'embla-carousel-vue'
3
+ import { onMounted, ref } from 'vue'
4
+ import type {
5
+ EmblaCarouselType as CarouselApi,
6
+ } from 'embla-carousel'
7
+ import type { CarouselEmits, CarouselProps } from './interface'
8
+
9
+ const [useProvideCarousel, useInjectCarousel] = createInjectionState(
10
+ ({
11
+ opts,
12
+ orientation,
13
+ plugins,
14
+ }: CarouselProps, emits: CarouselEmits) => {
15
+ const [emblaNode, emblaApi] = emblaCarouselVue({
16
+ ...opts,
17
+ axis: orientation === 'horizontal' ? 'x' : 'y',
18
+ }, plugins)
19
+
20
+ function scrollPrev() {
21
+ emblaApi.value?.scrollPrev()
22
+ }
23
+ function scrollNext() {
24
+ emblaApi.value?.scrollNext()
25
+ }
26
+
27
+ const canScrollNext = ref(true)
28
+ const canScrollPrev = ref(true)
29
+
30
+ function onSelect(api: CarouselApi) {
31
+ canScrollNext.value = api.canScrollNext()
32
+ canScrollPrev.value = api.canScrollPrev()
33
+ }
34
+
35
+ onMounted(() => {
36
+ if (!emblaApi.value)
37
+ return
38
+
39
+ emblaApi.value?.on('init', onSelect)
40
+ emblaApi.value?.on('reInit', onSelect)
41
+ emblaApi.value?.on('select', onSelect)
42
+
43
+ emits('init-api', emblaApi.value)
44
+ })
45
+
46
+ return { carouselRef: emblaNode, carouselApi: emblaApi, canScrollPrev, canScrollNext, scrollPrev, scrollNext, orientation }
47
+ },
48
+ )
49
+
50
+ function useCarousel() {
51
+ const carouselState = useInjectCarousel()
52
+
53
+ if (!carouselState)
54
+ throw new Error('useCarousel must be used within a <Carousel />')
55
+
56
+ return carouselState
57
+ }
58
+
59
+ export { useCarousel, useProvideCarousel }
@@ -0,0 +1,44 @@
1
+ <script setup lang="ts">
2
+ import { VisCrosshair, VisTooltip } from '@unovis/vue'
3
+ import type { BulletLegendItemInterface } from '@unovis/ts'
4
+ import { omit } from '@unovis/ts'
5
+ import { type Component, createApp } from 'vue'
6
+ import { ChartTooltip } from '.'
7
+
8
+ const props = withDefaults(defineProps<{
9
+ colors: string[]
10
+ index: string
11
+ items: BulletLegendItemInterface[]
12
+ customTooltip?: Component
13
+ }>(), {
14
+ colors: () => [],
15
+ })
16
+
17
+ // Use weakmap to store reference to each datapoint for Tooltip
18
+ const wm = new WeakMap()
19
+ function template(d: any) {
20
+ if (wm.has(d)) {
21
+ return wm.get(d)
22
+ }
23
+ else {
24
+ const componentDiv = document.createElement('div')
25
+ const omittedData = Object.entries(omit(d, [props.index])).map(([key, value]) => {
26
+ const legendReference = props.items.find(i => i.name === key)
27
+ return { ...legendReference, value }
28
+ })
29
+ const TooltipComponent = props.customTooltip ?? ChartTooltip
30
+ createApp(TooltipComponent, { title: d[props.index].toString(), data: omittedData }).mount(componentDiv)
31
+ wm.set(d, componentDiv.innerHTML)
32
+ return componentDiv.innerHTML
33
+ }
34
+ }
35
+
36
+ function color(d: unknown, i: number) {
37
+ return props.colors[i] ?? 'transparent'
38
+ }
39
+ </script>
40
+
41
+ <template>
42
+ <VisTooltip :horizontal-shift="20" :vertical-shift="20" />
43
+ <VisCrosshair :template="template" :color="color" />
44
+ </template>
@@ -0,0 +1,50 @@
1
+ <script setup lang="ts">
2
+ import { VisBulletLegend } from '@unovis/vue'
3
+ import type { BulletLegendItemInterface } from '@unovis/ts'
4
+ import { BulletLegend } from '@unovis/ts'
5
+ import { nextTick, onMounted, ref } from 'vue'
6
+ import { buttonVariants } from '@/components/ui/button'
7
+
8
+ const props = withDefaults(defineProps<{ items: BulletLegendItemInterface[] }>(), {
9
+ items: () => [],
10
+ })
11
+
12
+ const emits = defineEmits<{
13
+ 'legendItemClick': [d: BulletLegendItemInterface, i: number]
14
+ 'update:items': [payload: BulletLegendItemInterface[]]
15
+ }>()
16
+
17
+ const elRef = ref<HTMLElement>()
18
+
19
+ onMounted(() => {
20
+ const selector = `.${BulletLegend.selectors.item}`
21
+ nextTick(() => {
22
+ const elements = elRef.value?.querySelectorAll(selector)
23
+ const classes = buttonVariants({ variant: 'ghost', size: 'xs' }).split(' ')
24
+ elements?.forEach(el => el.classList.add(...classes, '!inline-flex', '!mr-2'))
25
+ })
26
+ })
27
+
28
+ function onLegendItemClick(d: BulletLegendItemInterface, i: number) {
29
+ emits('legendItemClick', d, i)
30
+ const isBulletActive = !props.items[i].inactive
31
+ const isFilterApplied = props.items.some(i => i.inactive)
32
+ if (isFilterApplied && isBulletActive) {
33
+ // reset filter
34
+ emits('update:items', props.items.map(item => ({ ...item, inactive: false })))
35
+ }
36
+ else {
37
+ // apply selection, set other item as inactive
38
+ emits('update:items', props.items.map(item => item.name === d.name ? ({ ...d, inactive: false }) : { ...item, inactive: true }))
39
+ }
40
+ }
41
+ </script>
42
+
43
+ <template>
44
+ <div ref="elRef" class="w-max">
45
+ <VisBulletLegend
46
+ :items="items"
47
+ :on-legend-item-click="onLegendItemClick"
48
+ />
49
+ </div>
50
+ </template>
@@ -0,0 +1,63 @@
1
+ <script setup lang="ts">
2
+ import { VisTooltip } from '@unovis/vue'
3
+ import type { BulletLegendItemInterface } from '@unovis/ts'
4
+ import { omit } from '@unovis/ts'
5
+ import { type Component, createApp } from 'vue'
6
+ import { ChartTooltip } from '.'
7
+
8
+ const props = withDefaults(defineProps<{
9
+ selector: string
10
+ index: string
11
+ items?: BulletLegendItemInterface[]
12
+ valueFormatter?: (tick: number, i?: number, ticks?: number[]) => string
13
+ customTooltip?: Component
14
+ }>(), {
15
+ valueFormatter: (tick: number) => `${tick}`,
16
+ })
17
+
18
+ // Use weakmap to store reference to each datapoint for Tooltip
19
+ const wm = new WeakMap()
20
+ function template(d: any, i: number, elements: (HTMLElement | SVGElement)[]) {
21
+ if (props.index in d) {
22
+ if (wm.has(d)) {
23
+ return wm.get(d)
24
+ }
25
+ else {
26
+ const componentDiv = document.createElement('div')
27
+ const omittedData = Object.entries(omit(d, [props.index])).map(([key, value]) => {
28
+ const legendReference = props.items?.find(i => i.name === key)
29
+ return { ...legendReference, value: props.valueFormatter(value) }
30
+ })
31
+ const TooltipComponent = props.customTooltip ?? ChartTooltip
32
+ createApp(TooltipComponent, { title: d[props.index], data: omittedData }).mount(componentDiv)
33
+ wm.set(d, componentDiv.innerHTML)
34
+ return componentDiv.innerHTML
35
+ }
36
+ }
37
+
38
+ else {
39
+ const data = d.data
40
+
41
+ if (wm.has(data)) {
42
+ return wm.get(data)
43
+ }
44
+ else {
45
+ const style = getComputedStyle(elements[i])
46
+ const omittedData = [{ name: data.name, value: props.valueFormatter(data[props.index]), color: style.fill }]
47
+ const componentDiv = document.createElement('div')
48
+ const TooltipComponent = props.customTooltip ?? ChartTooltip
49
+ createApp(TooltipComponent, { title: d[props.index], data: omittedData }).mount(componentDiv)
50
+ wm.set(d, componentDiv.innerHTML)
51
+ return componentDiv.innerHTML
52
+ }
53
+ }
54
+ }
55
+ </script>
56
+
57
+ <template>
58
+ <VisTooltip
59
+ :horizontal-shift="20" :vertical-shift="20" :triggers="{
60
+ [selector]: template,
61
+ }"
62
+ />
63
+ </template>
@@ -0,0 +1,40 @@
1
+ <script setup lang="ts">
2
+ import { Card, CardContent, CardHeader, CardTitle } from '@/components/ui/card'
3
+
4
+ defineProps<{
5
+ title?: string
6
+ data: {
7
+ name: string
8
+ color: string
9
+ value: any
10
+ }[]
11
+ }>()
12
+ </script>
13
+
14
+ <template>
15
+ <Card class="text-sm">
16
+ <CardHeader v-if="title" class="p-3 border-b">
17
+ <CardTitle>
18
+ {{ title }}
19
+ </CardTitle>
20
+ </CardHeader>
21
+ <CardContent class="p-3 min-w-[180px] flex flex-col gap-1">
22
+ <div v-for="(item, key) in data" :key="key" class="flex justify-between">
23
+ <div class="flex items-center">
24
+ <span class="w-2.5 h-2.5 mr-2">
25
+ <svg width="100%" height="100%" viewBox="0 0 30 30">
26
+ <path
27
+ d=" M 15 15 m -14, 0 a 14,14 0 1,1 28,0 a 14,14 0 1,1 -28,0"
28
+ :stroke="item.color"
29
+ :fill="item.color"
30
+ stroke-width="1"
31
+ />
32
+ </svg>
33
+ </span>
34
+ <span>{{ item.name }}</span>
35
+ </div>
36
+ <span class="font-semibold ml-4">{{ item.value }}</span>
37
+ </div>
38
+ </CardContent>
39
+ </Card>
40
+ </template>
@@ -0,0 +1,18 @@
1
+ export { default as ChartTooltip } from './ChartTooltip.vue'
2
+ export { default as ChartSingleTooltip } from './ChartSingleTooltip.vue'
3
+ export { default as ChartLegend } from './ChartLegend.vue'
4
+ export { default as ChartCrosshair } from './ChartCrosshair.vue'
5
+
6
+ export function defaultColors(count: number = 3) {
7
+ const quotient = Math.floor(count / 2)
8
+ const remainder = count % 2
9
+
10
+ const primaryCount = quotient + remainder
11
+ const secondaryCount = quotient
12
+ return [
13
+ ...Array.from(Array(primaryCount).keys()).map(i => `hsl(var(--vis-primary-color) / ${1 - (1 / primaryCount) * i})`),
14
+ ...Array.from(Array(secondaryCount).keys()).map(i => `hsl(var(--vis-secondary-color) / ${1 - (1 / secondaryCount) * i})`),
15
+ ]
16
+ }
17
+
18
+ export * from './interface'
@@ -0,0 +1,64 @@
1
+ import type { Spacing } from '@unovis/ts'
2
+
3
+ type KeyOf<T extends Record<string, any>> = Extract<keyof T, string>
4
+
5
+ export interface BaseChartProps<T extends Record<string, any>> {
6
+ /**
7
+ * The source data, in which each entry is a dictionary.
8
+ */
9
+ data: T[]
10
+ /**
11
+ * Select the categories from your data. Used to populate the legend and toolip.
12
+ */
13
+ categories: KeyOf<T>[]
14
+ /**
15
+ * Sets the key to map the data to the axis.
16
+ */
17
+ index: KeyOf<T>
18
+ /**
19
+ * Change the default colors.
20
+ */
21
+ colors?: string[]
22
+ /**
23
+ * Margin of each the container
24
+ */
25
+ margin?: Spacing
26
+ /**
27
+ * Change the opacity of the non-selected field
28
+ * @default 0.2
29
+ */
30
+ filterOpacity?: number
31
+ /**
32
+ * Function to format X label
33
+ */
34
+ xFormatter?: (tick: number | Date, i: number, ticks: number[] | Date[]) => string
35
+ /**
36
+ * Function to format Y label
37
+ */
38
+ yFormatter?: (tick: number | Date, i: number, ticks: number[] | Date[]) => string
39
+ /**
40
+ * Controls the visibility of the X axis.
41
+ * @default true
42
+ */
43
+ showXAxis?: boolean
44
+ /**
45
+ * Controls the visibility of the Y axis.
46
+ * @default true
47
+ */
48
+ showYAxis?: boolean
49
+ /**
50
+ * Controls the visibility of tooltip.
51
+ * @default true
52
+ */
53
+ showTooltip?: boolean
54
+ /**
55
+ * Controls the visibility of legend.
56
+ * @default true
57
+ */
58
+ showLegend?: boolean
59
+ /**
60
+ * Controls the visibility of gridline.
61
+ * @default true
62
+ */
63
+ showGridLine?: boolean
64
+ }
@@ -0,0 +1,136 @@
1
+ <script setup lang="ts" generic="T extends Record<string, any>">
2
+ import { type BulletLegendItemInterface, CurveType } from '@unovis/ts'
3
+ import { VisArea, VisAxis, VisLine, VisXYContainer } from '@unovis/vue'
4
+ import { Area, 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
+ * Controls the visibility of gradient.
22
+ * @default true
23
+ */
24
+ showGradiant?: boolean
25
+ }>(), {
26
+ curveType: CurveType.MonotoneX,
27
+ filterOpacity: 0.2,
28
+ margin: () => ({ top: 0, bottom: 0, left: 0, right: 0 }),
29
+ showXAxis: true,
30
+ showYAxis: true,
31
+ showTooltip: true,
32
+ showLegend: true,
33
+ showGridLine: true,
34
+ showGradiant: true,
35
+ })
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
+
47
+ const legendItems = ref<BulletLegendItemInterface[]>(props.categories.map((category, i) => ({
48
+ name: category,
49
+ color: colors.value[i],
50
+ inactive: false,
51
+ })))
52
+
53
+ const isMounted = useMounted()
54
+
55
+ function handleLegendItemClick(d: BulletLegendItemInterface, i: number) {
56
+ emits('legendItemClick', d, i)
57
+ }
58
+ </script>
59
+
60
+ <template>
61
+ <div :class="cn('w-full h-[400px] flex flex-col items-end', $attrs.class ?? '')">
62
+ <ChartLegend v-if="showLegend" v-model:items="legendItems" @legend-item-click="handleLegendItemClick" />
63
+
64
+ <VisXYContainer :style="{ height: isMounted ? '100%' : 'auto' }" :margin="{ left: 20, right: 20 }" :data="data">
65
+ <svg width="0" height="0">
66
+ <defs>
67
+ <linearGradient v-for="(color, i) in colors" :id="`color-${i}`" :key="i" x1="0" y1="0" x2="0" y2="1">
68
+ <template v-if="showGradiant">
69
+ <stop offset="5%" :stop-color="color" stop-opacity="0.4" />
70
+ <stop offset="95%" :stop-color="color" stop-opacity="0" />
71
+ </template>
72
+ <template v-else>
73
+ <stop offset="0%" :stop-color="color" />
74
+ </template>
75
+ </linearGradient>
76
+ </defs>
77
+ </svg>
78
+
79
+ <ChartCrosshair v-if="showTooltip" :colors="colors" :items="legendItems" :index="index" :custom-tooltip="customTooltip" />
80
+
81
+ <template v-for="(category, i) in categories" :key="category">
82
+ <VisArea
83
+ :x="(d: Data, i: number) => i"
84
+ :y="(d: Data) => d[category]"
85
+ color="auto"
86
+ :curve-type="curveType"
87
+ :attributes="{
88
+ [Area.selectors.area]: {
89
+ fill: `url(#color-${i})`,
90
+ },
91
+ }"
92
+ :opacity="legendItems.find(item => item.name === category)?.inactive ? filterOpacity : 1"
93
+ />
94
+ </template>
95
+
96
+ <template v-for="(category, i) in categories" :key="category">
97
+ <VisLine
98
+ :x="(d: Data, i: number) => i"
99
+ :y="(d: Data) => d[category]"
100
+ :color="colors[i]"
101
+ :curve-type="curveType"
102
+ :attributes="{
103
+ [Line.selectors.line]: {
104
+ opacity: legendItems.find(item => item.name === category)?.inactive ? filterOpacity : 1,
105
+ },
106
+ }"
107
+ />
108
+ </template>
109
+
110
+ <VisAxis
111
+ v-if="showXAxis"
112
+ type="x"
113
+ :tick-format="xFormatter ?? ((v: number) => data[v]?.[index])"
114
+ :grid-line="false"
115
+ :tick-line="false"
116
+ tick-text-color="hsl(var(--vis-text-color))"
117
+ />
118
+ <VisAxis
119
+ v-if="showYAxis"
120
+ type="y"
121
+ :tick-line="false"
122
+ :tick-format="yFormatter"
123
+ :domain-line="false"
124
+ :grid-line="showGridLine"
125
+ :attributes="{
126
+ [Axis.selectors.grid]: {
127
+ class: 'text-muted',
128
+ },
129
+ }"
130
+ tick-text-color="hsl(var(--vis-text-color))"
131
+ />
132
+
133
+ <slot />
134
+ </VisXYContainer>
135
+ </div>
136
+ </template>
@@ -0,0 +1,66 @@
1
+ export { default as AreaChart } from './AreaChart.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
+ }