@iqual/nuxt-icms 1.1.0 → 1.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (401) hide show
  1. package/assets/css/ckeditor.css +4 -0
  2. package/assets/css/components/container.css +2 -2
  3. package/assets/css/tailwind.css +1 -1
  4. package/assets/css/typography.css +4 -0
  5. package/assets/symbols/download.svg +3 -0
  6. package/bundles.ts +4 -1
  7. package/components/Blokkli/TextMedia/index.vue +1 -2
  8. package/components/DesignSystem/Atoms/Caption.vue +15 -0
  9. package/components/DesignSystem/Atoms/LinkListItem.vue +21 -0
  10. package/components/DesignSystem/Molecules/MediaSlider.vue +25 -8
  11. package/components/DesignSystem/Organisms/Map.vue +61 -0
  12. package/components/Media/Image/index.vue +4 -162
  13. package/components/Node/Icms/Page/SearchResult/fragment.graphql +8 -0
  14. package/components/Node/Icms/Page/SearchResult/index.vue +12 -0
  15. package/components/Node/Icms/Page/Teaser/fragment.graphql +17 -0
  16. package/components/Node/Icms/Page/Teaser/index.vue +20 -0
  17. package/components/Node/Icms/Page/fragment.graphql +18 -0
  18. package/components/Paragraph/CallToAction/index.vue +12 -8
  19. package/components/Paragraph/Card/Layout/index.vue +2 -2
  20. package/components/Paragraph/Downloads/index.vue +3 -14
  21. package/components/Paragraph/FAQ/Layout/index.vue +23 -1
  22. package/components/Paragraph/FlipTeasers/index.vue +2 -2
  23. package/components/Paragraph/Gallery/index.vue +32 -171
  24. package/components/Paragraph/HeroImage/index.vue +13 -4
  25. package/components/Paragraph/Media/index.vue +7 -2
  26. package/components/Paragraph/Table/index.vue +2 -2
  27. package/components/Paragraph/Team/Layout/index.vue +2 -2
  28. package/components/Paragraph/Teasers/fragment.graphql +2 -15
  29. package/components/Paragraph/Teasers/index.vue +11 -14
  30. package/components/Paragraph/TextMedia/index.vue +40 -33
  31. package/components/Paragraph/Timeline/Element/index.vue +1 -1
  32. package/components/Paragraph/Timeline/Layout/fragment.graphql +1 -0
  33. package/components/Paragraph/Timeline/Layout/index.vue +4 -4
  34. package/components/Paragraph/iFrame/index.vue +1 -1
  35. package/components/Search/Facets/FacetDropdownUI.vue +222 -0
  36. package/components/Search/Facets/FacetedSearchUI.vue +397 -0
  37. package/components/Search/Facets/fragment.graphql +40 -0
  38. package/components/Section/Header/LanguageDropdown.vue +60 -73
  39. package/components/Section/Header/LanguageSwitcher.vue +37 -0
  40. package/components/Section/Header/MetaMenu.vue +10 -1
  41. package/components/Section/Header/index.vue +80 -67
  42. package/components/ui/accordion/Accordion.vue +2 -2
  43. package/components/ui/accordion/AccordionContent.vue +5 -5
  44. package/components/ui/accordion/AccordionItem.vue +9 -10
  45. package/components/ui/accordion/AccordionTrigger.vue +5 -5
  46. package/components/ui/alert/Alert.vue +17 -0
  47. package/components/ui/alert/AlertDescription.vue +14 -0
  48. package/components/ui/alert/AlertTitle.vue +14 -0
  49. package/components/ui/alert/index.ts +24 -0
  50. package/components/ui/alert-dialog/AlertDialog.vue +15 -0
  51. package/components/ui/alert-dialog/AlertDialogAction.vue +22 -0
  52. package/components/ui/alert-dialog/AlertDialogCancel.vue +29 -0
  53. package/components/ui/alert-dialog/AlertDialogContent.vue +43 -0
  54. package/components/ui/alert-dialog/AlertDialogDescription.vue +27 -0
  55. package/components/ui/alert-dialog/AlertDialogFooter.vue +21 -0
  56. package/components/ui/alert-dialog/AlertDialogHeader.vue +16 -0
  57. package/components/ui/alert-dialog/AlertDialogTitle.vue +24 -0
  58. package/components/ui/alert-dialog/AlertDialogTrigger.vue +12 -0
  59. package/components/ui/alert-dialog/index.ts +9 -0
  60. package/components/ui/aspect-ratio/AspectRatio.vue +12 -0
  61. package/components/ui/aspect-ratio/index.ts +1 -0
  62. package/components/ui/auto-form/AutoForm.vue +106 -0
  63. package/components/ui/auto-form/AutoFormField.vue +45 -0
  64. package/components/ui/auto-form/AutoFormFieldArray.vue +110 -0
  65. package/components/ui/auto-form/AutoFormFieldBoolean.vue +41 -0
  66. package/components/ui/auto-form/AutoFormFieldDate.vue +57 -0
  67. package/components/ui/auto-form/AutoFormFieldEnum.vue +49 -0
  68. package/components/ui/auto-form/AutoFormFieldFile.vue +74 -0
  69. package/components/ui/auto-form/AutoFormFieldInput.vue +36 -0
  70. package/components/ui/auto-form/AutoFormFieldNumber.vue +32 -0
  71. package/components/ui/auto-form/AutoFormFieldObject.vue +78 -0
  72. package/components/ui/auto-form/AutoFormLabel.vue +14 -0
  73. package/components/ui/auto-form/constant.ts +40 -0
  74. package/components/ui/auto-form/dependencies.ts +93 -0
  75. package/components/ui/auto-form/index.ts +15 -0
  76. package/components/ui/auto-form/interface.ts +95 -0
  77. package/components/ui/auto-form/utils.ts +188 -0
  78. package/components/ui/avatar/Avatar.vue +22 -0
  79. package/components/ui/avatar/AvatarFallback.vue +12 -0
  80. package/components/ui/avatar/AvatarImage.vue +10 -0
  81. package/components/ui/avatar/index.ts +25 -0
  82. package/components/ui/badge/Badge.vue +17 -0
  83. package/components/ui/badge/index.ts +26 -0
  84. package/components/ui/breadcrumb/Breadcrumb.vue +13 -0
  85. package/components/ui/breadcrumb/BreadcrumbEllipsis.vue +22 -0
  86. package/components/ui/breadcrumb/BreadcrumbItem.vue +16 -0
  87. package/components/ui/breadcrumb/BreadcrumbLink.vue +20 -0
  88. package/components/ui/breadcrumb/BreadcrumbList.vue +16 -0
  89. package/components/ui/breadcrumb/BreadcrumbPage.vue +19 -0
  90. package/components/ui/breadcrumb/BreadcrumbSeparator.vue +21 -0
  91. package/components/ui/breadcrumb/index.ts +7 -0
  92. package/components/ui/button/Button.vue +4 -2
  93. package/components/ui/button/index.ts +9 -9
  94. package/components/ui/calendar/Calendar.vue +62 -0
  95. package/components/ui/calendar/CalendarCell.vue +26 -0
  96. package/components/ui/calendar/CalendarCellTrigger.vue +40 -0
  97. package/components/ui/calendar/CalendarGrid.vue +26 -0
  98. package/components/ui/calendar/CalendarGridBody.vue +12 -0
  99. package/components/ui/calendar/CalendarGridHead.vue +12 -0
  100. package/components/ui/calendar/CalendarGridRow.vue +23 -0
  101. package/components/ui/calendar/CalendarHeadCell.vue +23 -0
  102. package/components/ui/calendar/CalendarHeader.vue +23 -0
  103. package/components/ui/calendar/CalendarHeading.vue +33 -0
  104. package/components/ui/calendar/CalendarNextButton.vue +34 -0
  105. package/components/ui/calendar/CalendarPrevButton.vue +34 -0
  106. package/components/ui/calendar/index.ts +12 -0
  107. package/components/ui/card/Card.vue +21 -0
  108. package/components/ui/card/CardContent.vue +14 -0
  109. package/components/ui/card/CardDescription.vue +14 -0
  110. package/components/ui/card/CardFooter.vue +14 -0
  111. package/components/ui/card/CardHeader.vue +14 -0
  112. package/components/ui/card/CardTitle.vue +18 -0
  113. package/components/ui/card/index.ts +6 -0
  114. package/components/ui/carousel/Carousel.vue +3 -23
  115. package/components/ui/carousel/CarouselContent.vue +1 -2
  116. package/components/ui/carousel/CarouselItem.vue +5 -7
  117. package/components/ui/carousel/CarouselNext.vue +7 -9
  118. package/components/ui/carousel/CarouselPrevious.vue +7 -9
  119. package/components/ui/carousel/index.ts +3 -1
  120. package/components/ui/carousel/interface.ts +3 -1
  121. package/components/ui/carousel/useCarousel.ts +13 -23
  122. package/components/ui/chart/ChartCrosshair.vue +45 -0
  123. package/components/ui/chart/ChartLegend.vue +50 -0
  124. package/components/ui/chart/ChartSingleTooltip.vue +64 -0
  125. package/components/ui/chart/ChartTooltip.vue +40 -0
  126. package/components/ui/chart/index.ts +18 -0
  127. package/components/ui/chart/interface.ts +64 -0
  128. package/components/ui/chart-area/AreaChart.vue +141 -0
  129. package/components/ui/chart-area/index.ts +66 -0
  130. package/components/ui/chart-bar/BarChart.vue +116 -0
  131. package/components/ui/chart-bar/index.ts +66 -0
  132. package/components/ui/chart-donut/DonutChart.vue +101 -0
  133. package/components/ui/chart-donut/index.ts +39 -0
  134. package/components/ui/chart-line/LineChart.vue +107 -0
  135. package/components/ui/chart-line/index.ts +66 -0
  136. package/components/ui/checkbox/Checkbox.vue +1 -1
  137. package/components/ui/collapsible/Collapsible.vue +15 -0
  138. package/components/ui/collapsible/CollapsibleContent.vue +12 -0
  139. package/components/ui/collapsible/CollapsibleTrigger.vue +12 -0
  140. package/components/ui/collapsible/index.ts +3 -0
  141. package/components/ui/command/Command.vue +31 -0
  142. package/components/ui/command/CommandDialog.vue +21 -0
  143. package/components/ui/command/CommandEmpty.vue +21 -0
  144. package/components/ui/command/CommandGroup.vue +30 -0
  145. package/components/ui/command/CommandInput.vue +35 -0
  146. package/components/ui/command/CommandItem.vue +27 -0
  147. package/components/ui/command/CommandList.vue +28 -0
  148. package/components/ui/command/CommandSeparator.vue +24 -0
  149. package/components/ui/command/CommandShortcut.vue +14 -0
  150. package/components/ui/command/index.ts +9 -0
  151. package/components/ui/context-menu/ContextMenu.vue +15 -0
  152. package/components/ui/context-menu/ContextMenuCheckboxItem.vue +41 -0
  153. package/components/ui/context-menu/ContextMenuContent.vue +37 -0
  154. package/components/ui/context-menu/ContextMenuGroup.vue +12 -0
  155. package/components/ui/context-menu/ContextMenuItem.vue +35 -0
  156. package/components/ui/context-menu/ContextMenuLabel.vue +27 -0
  157. package/components/ui/context-menu/ContextMenuPortal.vue +12 -0
  158. package/components/ui/context-menu/ContextMenuRadioGroup.vue +19 -0
  159. package/components/ui/context-menu/ContextMenuRadioItem.vue +41 -0
  160. package/components/ui/context-menu/ContextMenuSeparator.vue +22 -0
  161. package/components/ui/context-menu/ContextMenuShortcut.vue +14 -0
  162. package/components/ui/context-menu/ContextMenuSub.vue +19 -0
  163. package/components/ui/context-menu/ContextMenuSubContent.vue +36 -0
  164. package/components/ui/context-menu/ContextMenuSubTrigger.vue +36 -0
  165. package/components/ui/context-menu/ContextMenuTrigger.vue +14 -0
  166. package/components/ui/context-menu/index.ts +14 -0
  167. package/components/ui/dialog/Dialog.vue +2 -6
  168. package/components/ui/dialog/DialogClose.vue +2 -1
  169. package/components/ui/dialog/DialogContent.vue +10 -12
  170. package/components/ui/dialog/DialogDescription.vue +6 -10
  171. package/components/ui/dialog/DialogScrollContent.vue +15 -21
  172. package/components/ui/dialog/DialogTitle.vue +9 -6
  173. package/components/ui/dialog/DialogTrigger.vue +2 -1
  174. package/components/ui/drawer/Drawer.vue +19 -0
  175. package/components/ui/drawer/DrawerContent.vue +28 -0
  176. package/components/ui/drawer/DrawerDescription.vue +21 -0
  177. package/components/ui/drawer/DrawerFooter.vue +14 -0
  178. package/components/ui/drawer/DrawerHeader.vue +14 -0
  179. package/components/ui/drawer/DrawerOverlay.vue +19 -0
  180. package/components/ui/drawer/DrawerTitle.vue +21 -0
  181. package/components/ui/drawer/index.ts +8 -0
  182. package/components/ui/dropdown-menu/DropdownMenu.vue +15 -0
  183. package/components/ui/dropdown-menu/DropdownMenuCheckboxItem.vue +41 -0
  184. package/components/ui/dropdown-menu/DropdownMenuContent.vue +39 -0
  185. package/components/ui/dropdown-menu/DropdownMenuGroup.vue +12 -0
  186. package/components/ui/dropdown-menu/DropdownMenuItem.vue +30 -0
  187. package/components/ui/dropdown-menu/DropdownMenuLabel.vue +26 -0
  188. package/components/ui/dropdown-menu/DropdownMenuRadioGroup.vue +19 -0
  189. package/components/ui/dropdown-menu/DropdownMenuRadioItem.vue +42 -0
  190. package/components/ui/dropdown-menu/DropdownMenuSeparator.vue +24 -0
  191. package/components/ui/dropdown-menu/DropdownMenuShortcut.vue +14 -0
  192. package/components/ui/dropdown-menu/DropdownMenuSub.vue +19 -0
  193. package/components/ui/dropdown-menu/DropdownMenuSubContent.vue +31 -0
  194. package/components/ui/dropdown-menu/DropdownMenuSubTrigger.vue +35 -0
  195. package/components/ui/dropdown-menu/DropdownMenuTrigger.vue +14 -0
  196. package/components/ui/dropdown-menu/index.ts +16 -0
  197. package/components/ui/form/FormControl.vue +16 -0
  198. package/components/ui/form/FormDescription.vue +20 -0
  199. package/components/ui/form/FormItem.vue +20 -0
  200. package/components/ui/form/FormLabel.vue +23 -0
  201. package/components/ui/form/FormMessage.vue +16 -0
  202. package/components/ui/form/index.ts +7 -0
  203. package/components/ui/form/injectionKeys.ts +4 -0
  204. package/components/ui/form/useFormField.ts +30 -0
  205. package/components/ui/hover-card/HoverCard.vue +15 -0
  206. package/components/ui/hover-card/HoverCardContent.vue +43 -0
  207. package/components/ui/hover-card/HoverCardTrigger.vue +12 -0
  208. package/components/ui/hover-card/index.ts +3 -0
  209. package/components/ui/input/Input.vue +1 -1
  210. package/components/ui/menubar/Menubar.vue +36 -0
  211. package/components/ui/menubar/MenubarCheckboxItem.vue +41 -0
  212. package/components/ui/menubar/MenubarContent.vue +45 -0
  213. package/components/ui/menubar/MenubarGroup.vue +12 -0
  214. package/components/ui/menubar/MenubarItem.vue +36 -0
  215. package/components/ui/menubar/MenubarLabel.vue +14 -0
  216. package/components/ui/menubar/MenubarMenu.vue +12 -0
  217. package/components/ui/menubar/MenubarRadioGroup.vue +20 -0
  218. package/components/ui/menubar/MenubarRadioItem.vue +41 -0
  219. package/components/ui/menubar/MenubarSeparator.vue +21 -0
  220. package/components/ui/menubar/MenubarShortcut.vue +14 -0
  221. package/components/ui/menubar/MenubarSub.vue +20 -0
  222. package/components/ui/menubar/MenubarSubContent.vue +40 -0
  223. package/components/ui/menubar/MenubarSubTrigger.vue +32 -0
  224. package/components/ui/menubar/MenubarTrigger.vue +31 -0
  225. package/components/ui/menubar/index.ts +15 -0
  226. package/components/ui/navigation-menu/NavigationMenu.vue +34 -0
  227. package/components/ui/navigation-menu/NavigationMenuContent.vue +35 -0
  228. package/components/ui/navigation-menu/NavigationMenuIndicator.vue +26 -0
  229. package/components/ui/navigation-menu/NavigationMenuItem.vue +12 -0
  230. package/components/ui/navigation-menu/NavigationMenuLink.vue +19 -0
  231. package/components/ui/navigation-menu/NavigationMenuList.vue +31 -0
  232. package/components/ui/navigation-menu/NavigationMenuTrigger.vue +36 -0
  233. package/components/ui/navigation-menu/NavigationMenuViewport.vue +35 -0
  234. package/components/ui/navigation-menu/index.ts +14 -0
  235. package/components/ui/number-field/NumberField.vue +24 -0
  236. package/components/ui/number-field/NumberFieldContent.vue +14 -0
  237. package/components/ui/number-field/NumberFieldDecrement.vue +26 -0
  238. package/components/ui/number-field/NumberFieldIncrement.vue +26 -0
  239. package/components/ui/number-field/NumberFieldInput.vue +16 -0
  240. package/components/ui/number-field/index.ts +5 -0
  241. package/components/ui/pagination/PaginationEllipsis.vue +24 -0
  242. package/components/ui/pagination/PaginationFirst.vue +31 -0
  243. package/components/ui/pagination/PaginationLast.vue +31 -0
  244. package/components/ui/pagination/PaginationNext.vue +31 -0
  245. package/components/ui/pagination/PaginationPrev.vue +31 -0
  246. package/components/ui/pagination/index.ts +10 -0
  247. package/components/ui/pin-input/PinInput.vue +25 -0
  248. package/components/ui/pin-input/PinInputGroup.vue +20 -0
  249. package/components/ui/pin-input/PinInputInput.vue +20 -0
  250. package/components/ui/pin-input/PinInputSeparator.vue +16 -0
  251. package/components/ui/pin-input/index.ts +4 -0
  252. package/components/ui/popover/Popover.vue +15 -0
  253. package/components/ui/popover/PopoverContent.vue +49 -0
  254. package/components/ui/popover/PopoverTrigger.vue +12 -0
  255. package/components/ui/popover/index.ts +3 -0
  256. package/components/ui/progress/Progress.vue +41 -0
  257. package/components/ui/progress/index.ts +1 -0
  258. package/components/ui/radio-group/RadioGroupItem.vue +1 -1
  259. package/components/ui/range-calendar/RangeCalendar.vue +62 -0
  260. package/components/ui/range-calendar/RangeCalendarCell.vue +26 -0
  261. package/components/ui/range-calendar/RangeCalendarCellTrigger.vue +42 -0
  262. package/components/ui/range-calendar/RangeCalendarGrid.vue +26 -0
  263. package/components/ui/range-calendar/RangeCalendarGridBody.vue +12 -0
  264. package/components/ui/range-calendar/RangeCalendarGridHead.vue +12 -0
  265. package/components/ui/range-calendar/RangeCalendarGridRow.vue +23 -0
  266. package/components/ui/range-calendar/RangeCalendarHeadCell.vue +23 -0
  267. package/components/ui/range-calendar/RangeCalendarHeader.vue +23 -0
  268. package/components/ui/range-calendar/RangeCalendarHeading.vue +33 -0
  269. package/components/ui/range-calendar/RangeCalendarNextButton.vue +34 -0
  270. package/components/ui/range-calendar/RangeCalendarPrevButton.vue +34 -0
  271. package/components/ui/range-calendar/index.ts +12 -0
  272. package/components/ui/resizable/ResizableHandle.vue +28 -0
  273. package/components/ui/resizable/ResizablePanelGroup.vue +23 -0
  274. package/components/ui/resizable/index.ts +3 -0
  275. package/components/ui/scroll-area/ScrollArea.vue +31 -0
  276. package/components/ui/scroll-area/ScrollBar.vue +32 -0
  277. package/components/ui/scroll-area/index.ts +2 -0
  278. package/components/ui/select/SelectContent.vue +1 -1
  279. package/components/ui/select/SelectItem.vue +1 -1
  280. package/components/ui/select/SelectSeparator.vue +1 -1
  281. package/components/ui/select/SelectTrigger.vue +1 -1
  282. package/components/ui/separator/Separator.vue +37 -0
  283. package/components/ui/separator/index.ts +1 -0
  284. package/components/ui/sheet/Sheet.vue +15 -0
  285. package/components/ui/sheet/SheetClose.vue +12 -0
  286. package/components/ui/sheet/SheetContent.vue +58 -0
  287. package/components/ui/sheet/SheetDescription.vue +24 -0
  288. package/components/ui/sheet/SheetFooter.vue +19 -0
  289. package/components/ui/sheet/SheetHeader.vue +16 -0
  290. package/components/ui/sheet/SheetTitle.vue +24 -0
  291. package/components/ui/sheet/SheetTrigger.vue +12 -0
  292. package/components/ui/sheet/index.ts +32 -0
  293. package/components/ui/sidebar/Sidebar.vue +85 -0
  294. package/components/ui/sidebar/SidebarContent.vue +17 -0
  295. package/components/ui/sidebar/SidebarFooter.vue +17 -0
  296. package/components/ui/sidebar/SidebarGroup.vue +17 -0
  297. package/components/ui/sidebar/SidebarGroupAction.vue +26 -0
  298. package/components/ui/sidebar/SidebarGroupContent.vue +17 -0
  299. package/components/ui/sidebar/SidebarGroupLabel.vue +24 -0
  300. package/components/ui/sidebar/SidebarHeader.vue +17 -0
  301. package/components/ui/sidebar/SidebarInput.vue +21 -0
  302. package/components/ui/sidebar/SidebarInset.vue +20 -0
  303. package/components/ui/sidebar/SidebarMenu.vue +17 -0
  304. package/components/ui/sidebar/SidebarMenuAction.vue +34 -0
  305. package/components/ui/sidebar/SidebarMenuBadge.vue +25 -0
  306. package/components/ui/sidebar/SidebarMenuButton.vue +51 -0
  307. package/components/ui/sidebar/SidebarMenuButtonChild.vue +35 -0
  308. package/components/ui/sidebar/SidebarMenuItem.vue +17 -0
  309. package/components/ui/sidebar/SidebarMenuSkeleton.vue +34 -0
  310. package/components/ui/sidebar/SidebarMenuSub.vue +21 -0
  311. package/components/ui/sidebar/SidebarMenuSubButton.vue +35 -0
  312. package/components/ui/sidebar/SidebarMenuSubItem.vue +8 -0
  313. package/components/ui/sidebar/SidebarProvider.vue +81 -0
  314. package/components/ui/sidebar/SidebarRail.vue +32 -0
  315. package/components/ui/sidebar/SidebarSeparator.vue +18 -0
  316. package/components/ui/sidebar/SidebarTrigger.vue +26 -0
  317. package/components/ui/sidebar/index.ts +60 -0
  318. package/components/ui/sidebar/utils.ts +19 -0
  319. package/components/ui/skeleton/Skeleton.vue +14 -0
  320. package/components/ui/skeleton/index.ts +1 -0
  321. package/components/ui/slider/Slider.vue +37 -0
  322. package/components/ui/slider/index.ts +1 -0
  323. package/components/ui/sonner/Sonner.vue +23 -0
  324. package/components/ui/sonner/index.ts +1 -0
  325. package/components/ui/stepper/Stepper.vue +32 -0
  326. package/components/ui/stepper/StepperDescription.vue +24 -0
  327. package/components/ui/stepper/StepperIndicator.vue +36 -0
  328. package/components/ui/stepper/StepperItem.vue +28 -0
  329. package/components/ui/stepper/StepperSeparator.vue +32 -0
  330. package/components/ui/stepper/StepperTitle.vue +24 -0
  331. package/components/ui/stepper/StepperTrigger.vue +27 -0
  332. package/components/ui/stepper/index.ts +7 -0
  333. package/components/ui/switch/Switch.vue +40 -0
  334. package/components/ui/switch/index.ts +1 -0
  335. package/components/ui/table/Table.vue +16 -0
  336. package/components/ui/table/TableBody.vue +14 -0
  337. package/components/ui/table/TableCaption.vue +14 -0
  338. package/components/ui/table/TableCell.vue +21 -0
  339. package/components/ui/table/TableEmpty.vue +38 -0
  340. package/components/ui/table/TableFooter.vue +14 -0
  341. package/components/ui/table/TableHead.vue +14 -0
  342. package/components/ui/table/TableHeader.vue +14 -0
  343. package/components/ui/table/TableRow.vue +14 -0
  344. package/components/ui/table/index.ts +9 -0
  345. package/components/ui/tabs/TabsContent.vue +6 -11
  346. package/components/ui/tabs/TabsList.vue +8 -8
  347. package/components/ui/tabs/TabsTrigger.vue +9 -11
  348. package/components/ui/tags-input/TagsInput.vue +24 -0
  349. package/components/ui/tags-input/TagsInputInput.vue +21 -0
  350. package/components/ui/tags-input/TagsInputItem.vue +24 -0
  351. package/components/ui/tags-input/TagsInputItemDelete.vue +26 -0
  352. package/components/ui/tags-input/TagsInputItemText.vue +21 -0
  353. package/components/ui/tags-input/index.ts +5 -0
  354. package/components/ui/textarea/Textarea.vue +1 -1
  355. package/components/ui/toast/Toast.vue +30 -0
  356. package/components/ui/toast/ToastAction.vue +21 -0
  357. package/components/ui/toast/ToastClose.vue +24 -0
  358. package/components/ui/toast/ToastDescription.vue +21 -0
  359. package/components/ui/toast/ToastProvider.vue +12 -0
  360. package/components/ui/toast/ToastTitle.vue +21 -0
  361. package/components/ui/toast/ToastViewport.vue +19 -0
  362. package/components/ui/toast/Toaster.vue +30 -0
  363. package/components/ui/toast/index.ts +39 -0
  364. package/components/ui/toast/use-toast.ts +165 -0
  365. package/components/ui/toggle/Toggle.vue +38 -0
  366. package/components/ui/toggle/index.ts +28 -0
  367. package/components/ui/toggle-group/ToggleGroup.vue +36 -0
  368. package/components/ui/toggle-group/ToggleGroupItem.vue +37 -0
  369. package/components/ui/toggle-group/index.ts +2 -0
  370. package/components/ui/tooltip/Tooltip.vue +15 -0
  371. package/components/ui/tooltip/TooltipContent.vue +33 -0
  372. package/components/ui/tooltip/TooltipProvider.vue +12 -0
  373. package/components/ui/tooltip/TooltipTrigger.vue +12 -0
  374. package/components/ui/tooltip/index.ts +4 -0
  375. package/components/ui/v-calendar/Calendar.vue +343 -0
  376. package/components/ui/v-calendar/index.ts +22 -0
  377. package/composables/useAccordionScroll.ts +1 -1
  378. package/composables/useContentSearch.ts +0 -0
  379. package/composables/useImageSources.ts +208 -0
  380. package/composables/useLightbox.ts +81 -0
  381. package/composables/useMainMenuLinks.ts +1 -1
  382. package/composables/useMessageBus.ts +74 -0
  383. package/composables/useMetaMenuLinks.ts +1 -1
  384. package/composables/useNavigationOffset.ts +1 -1
  385. package/layouts/default.vue +2 -2
  386. package/layouts/error.vue +8 -10
  387. package/modules/dynamicEntityComponentResolver.ts +182 -0
  388. package/modules/dynamicParagraphResolver.ts +1 -1
  389. package/nuxt.config.ts +11 -22
  390. package/package.json +3 -2
  391. package/pages/[...slug]/index.vue +2 -2
  392. package/pages/index.vue +2 -2
  393. package/pages/node/[nid]/index.vue +2 -2
  394. package/queries/query.contentSearch.graphql +17 -0
  395. package/tailwind.config.ts +1 -0
  396. package/types/fslightbox-vue.d.ts +1 -0
  397. package/composables/languageLinks.ts +0 -31
  398. package/modules/dynamicNodeResolver.ts +0 -95
  399. package/pages/search/index.vue +0 -69
  400. package/pages/static-page/example.vue +0 -40
  401. package/queries/fragment.routeQuery.graphql +0 -51
@@ -0,0 +1,33 @@
1
+ <script lang="ts" setup>
2
+ import type { RangeCalendarHeadingProps } from 'radix-vue'
3
+ import type { HTMLAttributes } from 'vue'
4
+ import { cn } from '@/lib/utils'
5
+ import { RangeCalendarHeading, useForwardProps } from 'radix-vue'
6
+ import { computed } from 'vue'
7
+
8
+ const props = defineProps<RangeCalendarHeadingProps & { class?: HTMLAttributes['class'] }>()
9
+
10
+ defineSlots<{
11
+ default: (props: { headingValue: string }) => any
12
+ }>()
13
+
14
+ const delegatedProps = computed(() => {
15
+ const { class: _, ...delegated } = props
16
+
17
+ return delegated
18
+ })
19
+
20
+ const forwardedProps = useForwardProps(delegatedProps)
21
+ </script>
22
+
23
+ <template>
24
+ <RangeCalendarHeading
25
+ v-slot="{ headingValue }"
26
+ :class="cn('text-sm font-medium', props.class)"
27
+ v-bind="forwardedProps"
28
+ >
29
+ <slot :heading-value>
30
+ {{ headingValue }}
31
+ </slot>
32
+ </RangeCalendarHeading>
33
+ </template>
@@ -0,0 +1,34 @@
1
+ <script lang="ts" setup>
2
+ import type { RangeCalendarNextProps } from 'radix-vue'
3
+ import type { HTMLAttributes } from 'vue'
4
+ import { buttonVariants } from '@/lib/registry/default/ui/button'
5
+ import { cn } from '@/lib/utils'
6
+ import { ChevronRight } from 'lucide-vue-next'
7
+ import { RangeCalendarNext, useForwardProps } from 'radix-vue'
8
+ import { computed } from 'vue'
9
+
10
+ const props = defineProps<RangeCalendarNextProps & { class?: HTMLAttributes['class'] }>()
11
+
12
+ const delegatedProps = computed(() => {
13
+ const { class: _, ...delegated } = props
14
+
15
+ return delegated
16
+ })
17
+
18
+ const forwardedProps = useForwardProps(delegatedProps)
19
+ </script>
20
+
21
+ <template>
22
+ <RangeCalendarNext
23
+ :class="cn(
24
+ buttonVariants({ variant: 'outline' }),
25
+ 'h-7 w-7 bg-transparent p-0 opacity-50 hover:opacity-100',
26
+ props.class,
27
+ )"
28
+ v-bind="forwardedProps"
29
+ >
30
+ <slot>
31
+ <ChevronRight class="h-4 w-4" />
32
+ </slot>
33
+ </RangeCalendarNext>
34
+ </template>
@@ -0,0 +1,34 @@
1
+ <script lang="ts" setup>
2
+ import type { RangeCalendarPrevProps } from 'radix-vue'
3
+ import type { HTMLAttributes } from 'vue'
4
+ import { buttonVariants } from '@/lib/registry/default/ui/button'
5
+ import { cn } from '@/lib/utils'
6
+ import { ChevronLeft } from 'lucide-vue-next'
7
+ import { RangeCalendarPrev, useForwardProps } from 'radix-vue'
8
+ import { computed } from 'vue'
9
+
10
+ const props = defineProps<RangeCalendarPrevProps & { class?: HTMLAttributes['class'] }>()
11
+
12
+ const delegatedProps = computed(() => {
13
+ const { class: _, ...delegated } = props
14
+
15
+ return delegated
16
+ })
17
+
18
+ const forwardedProps = useForwardProps(delegatedProps)
19
+ </script>
20
+
21
+ <template>
22
+ <RangeCalendarPrev
23
+ :class="cn(
24
+ buttonVariants({ variant: 'outline' }),
25
+ 'h-7 w-7 bg-transparent p-0 opacity-50 hover:opacity-100',
26
+ props.class,
27
+ )"
28
+ v-bind="forwardedProps"
29
+ >
30
+ <slot>
31
+ <ChevronLeft class="h-4 w-4" />
32
+ </slot>
33
+ </RangeCalendarPrev>
34
+ </template>
@@ -0,0 +1,12 @@
1
+ export { default as RangeCalendar } from './RangeCalendar.vue'
2
+ export { default as RangeCalendarCell } from './RangeCalendarCell.vue'
3
+ export { default as RangeCalendarCellTrigger } from './RangeCalendarCellTrigger.vue'
4
+ export { default as RangeCalendarGrid } from './RangeCalendarGrid.vue'
5
+ export { default as RangeCalendarGridBody } from './RangeCalendarGridBody.vue'
6
+ export { default as RangeCalendarGridHead } from './RangeCalendarGridHead.vue'
7
+ export { default as RangeCalendarGridRow } from './RangeCalendarGridRow.vue'
8
+ export { default as RangeCalendarHeadCell } from './RangeCalendarHeadCell.vue'
9
+ export { default as RangeCalendarHeader } from './RangeCalendarHeader.vue'
10
+ export { default as RangeCalendarHeading } from './RangeCalendarHeading.vue'
11
+ export { default as RangeCalendarNextButton } from './RangeCalendarNextButton.vue'
12
+ export { default as RangeCalendarPrevButton } from './RangeCalendarPrevButton.vue'
@@ -0,0 +1,28 @@
1
+ <script setup lang="ts">
2
+ import type { SplitterResizeHandleEmits, SplitterResizeHandleProps } from 'radix-vue'
3
+ import type { HTMLAttributes } from 'vue'
4
+ import { cn } from '@/lib/utils'
5
+ import { GripVertical } from 'lucide-vue-next'
6
+ import { SplitterResizeHandle, useForwardPropsEmits } from 'radix-vue'
7
+ import { computed } from 'vue'
8
+
9
+ const props = defineProps<SplitterResizeHandleProps & { class?: HTMLAttributes['class'], withHandle?: boolean }>()
10
+ const emits = defineEmits<SplitterResizeHandleEmits>()
11
+
12
+ const delegatedProps = computed(() => {
13
+ const { class: _, ...delegated } = props
14
+ return delegated
15
+ })
16
+
17
+ const forwarded = useForwardPropsEmits(delegatedProps, emits)
18
+ </script>
19
+
20
+ <template>
21
+ <SplitterResizeHandle v-bind="forwarded" :class="cn('relative flex w-px items-center justify-center bg-border after:absolute after:inset-y-0 after:left-1/2 after:w-1 after:-translate-x-1/2 focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring focus-visible:ring-offset-1 [&[data-orientation=vertical]]:h-px [&[data-orientation=vertical]]:w-full [&[data-orientation=vertical]]:after:left-0 [&[data-orientation=vertical]]:after:h-1 [&[data-orientation=vertical]]:after:w-full [&[data-orientation=vertical]]:after:-translate-y-1/2 [&[data-orientation=vertical]]:after:translate-x-0 [&[data-orientation=vertical]>div]:rotate-90', props.class)">
22
+ <template v-if="props.withHandle">
23
+ <div class="z-10 flex h-4 w-3 items-center justify-center rounded-sm border bg-border">
24
+ <GripVertical class="h-2.5 w-2.5" />
25
+ </div>
26
+ </template>
27
+ </SplitterResizeHandle>
28
+ </template>
@@ -0,0 +1,23 @@
1
+ <script setup lang="ts">
2
+ import type { SplitterGroupEmits, SplitterGroupProps } from 'radix-vue'
3
+ import type { HTMLAttributes } from 'vue'
4
+ import { cn } from '@/lib/utils'
5
+ import { SplitterGroup, useForwardPropsEmits } from 'radix-vue'
6
+ import { computed } from 'vue'
7
+
8
+ const props = defineProps<SplitterGroupProps & { class?: HTMLAttributes['class'] }>()
9
+ const emits = defineEmits<SplitterGroupEmits>()
10
+
11
+ const delegatedProps = computed(() => {
12
+ const { class: _, ...delegated } = props
13
+ return delegated
14
+ })
15
+
16
+ const forwarded = useForwardPropsEmits(delegatedProps, emits)
17
+ </script>
18
+
19
+ <template>
20
+ <SplitterGroup v-bind="forwarded" :class="cn('flex h-full w-full data-[panel-group-direction=vertical]:flex-col', props.class)">
21
+ <slot />
22
+ </SplitterGroup>
23
+ </template>
@@ -0,0 +1,3 @@
1
+ export { default as ResizableHandle } from './ResizableHandle.vue'
2
+ export { default as ResizablePanelGroup } from './ResizablePanelGroup.vue'
3
+ export { SplitterPanel as ResizablePanel } from 'radix-vue'
@@ -0,0 +1,31 @@
1
+ <script setup lang="ts">
2
+ import type { ScrollAreaRootProps } from 'radix-vue'
3
+ import type { HTMLAttributes } from 'vue'
4
+ import { cn } from '@/lib/utils'
5
+ import {
6
+ ScrollAreaCorner,
7
+ ScrollAreaRoot,
8
+
9
+ ScrollAreaViewport,
10
+ } from 'radix-vue'
11
+ import { computed } from 'vue'
12
+ import ScrollBar from './ScrollBar.vue'
13
+
14
+ const props = defineProps<ScrollAreaRootProps & { class?: HTMLAttributes['class'] }>()
15
+
16
+ const delegatedProps = computed(() => {
17
+ const { class: _, ...delegated } = props
18
+
19
+ return delegated
20
+ })
21
+ </script>
22
+
23
+ <template>
24
+ <ScrollAreaRoot v-bind="delegatedProps" :class="cn('relative overflow-hidden', props.class)">
25
+ <ScrollAreaViewport class="h-full w-full rounded-[inherit]">
26
+ <slot />
27
+ </ScrollAreaViewport>
28
+ <ScrollBar />
29
+ <ScrollAreaCorner />
30
+ </ScrollAreaRoot>
31
+ </template>
@@ -0,0 +1,32 @@
1
+ <script setup lang="ts">
2
+ import type { ScrollAreaScrollbarProps } from 'radix-vue'
3
+ import type { HTMLAttributes } from 'vue'
4
+ import { cn } from '@/lib/utils'
5
+ import { ScrollAreaScrollbar, ScrollAreaThumb } from 'radix-vue'
6
+ import { computed } from 'vue'
7
+
8
+ const props = withDefaults(defineProps<ScrollAreaScrollbarProps & { class?: HTMLAttributes['class'] }>(), {
9
+ orientation: 'vertical',
10
+ })
11
+
12
+ const delegatedProps = computed(() => {
13
+ const { class: _, ...delegated } = props
14
+
15
+ return delegated
16
+ })
17
+ </script>
18
+
19
+ <template>
20
+ <ScrollAreaScrollbar
21
+ v-bind="delegatedProps"
22
+ :class="
23
+ cn('flex touch-none select-none transition-colors',
24
+ orientation === 'vertical'
25
+ && 'h-full w-2.5 border-l border-l-transparent p-px',
26
+ orientation === 'horizontal'
27
+ && 'h-2.5 flex-col border-t border-t-transparent p-px',
28
+ props.class)"
29
+ >
30
+ <ScrollAreaThumb class="relative flex-1 rounded-full bg-border" />
31
+ </ScrollAreaScrollbar>
32
+ </template>
@@ -0,0 +1,2 @@
1
+ export { default as ScrollArea } from './ScrollArea.vue'
2
+ export { default as ScrollBar } from './ScrollBar.vue'
@@ -37,7 +37,7 @@ const forwarded = useForwardPropsEmits(delegatedProps, emits)
37
37
  <SelectPortal>
38
38
  <SelectContent
39
39
  v-bind="{ ...forwarded, ...$attrs }" :class="cn(
40
- 'relative z-50 max-h-96 min-w-32 overflow-hidden rounded-md border border-gray-200 bg-white text-gray-950 shadow-md 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 dark:border-gray-800 dark:bg-gray-950 dark:text-gray-50',
40
+ 'relative z-50 max-h-96 min-w-32 overflow-hidden rounded-md border bg-popover text-popover-foreground shadow-md 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',
41
41
  position === 'popper'
42
42
  && 'data-[side=bottom]:translate-y-1 data-[side=left]:-translate-x-1 data-[side=right]:translate-x-1 data-[side=top]:-translate-y-1',
43
43
  props.class,
@@ -28,7 +28,7 @@ const forwardedProps = useForwardProps(delegatedProps)
28
28
  v-bind="forwardedProps"
29
29
  :class="
30
30
  cn(
31
- 'relative flex w-full cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none focus:bg-gray-100 focus:text-gray-900 data-[disabled]:pointer-events-none data-[disabled]:opacity-50 dark:focus:bg-gray-800 dark:focus:text-gray-50',
31
+ 'relative flex w-full 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',
32
32
  props.class,
33
33
  )
34
34
  "
@@ -15,5 +15,5 @@ const delegatedProps = computed(() => {
15
15
  </script>
16
16
 
17
17
  <template>
18
- <SelectSeparator v-bind="delegatedProps" :class="cn('-mx-1 my-1 h-px bg-gray-100 dark:bg-gray-800', props.class)" />
18
+ <SelectSeparator v-bind="delegatedProps" :class="cn('-mx-1 my-1 h-px bg-muted', props.class)" />
19
19
  </template>
@@ -21,7 +21,7 @@ const forwardedProps = useForwardProps(delegatedProps)
21
21
  <SelectTrigger
22
22
  v-bind="forwardedProps"
23
23
  :class="cn(
24
- 'flex h-10 w-full items-center justify-between rounded-md border border-gray-200 bg-white px-3 py-2 text-sm ring-offset-white data-[placeholder]:text-gray-500 focus:outline-none focus:ring-2 focus:ring-gray-950 focus:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50 [&>span]:truncate text-start dark:border-gray-800 dark:bg-gray-950 dark:ring-offset-gray-950 dark:data-[placeholder]:text-gray-400 dark:focus:ring-gray-300',
24
+ 'flex h-10 w-full items-center justify-between rounded-md border border-input bg-background px-3 py-2 text-sm ring-offset-background data-[placeholder]:text-muted-foreground focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50 [&>span]:truncate text-start',
25
25
  props.class,
26
26
  )"
27
27
  >
@@ -0,0 +1,37 @@
1
+ <script setup lang="ts">
2
+ import type { SeparatorProps } from 'radix-vue'
3
+ import type { HTMLAttributes } from 'vue'
4
+ import { cn } from '@/lib/utils'
5
+ import { Separator } from 'radix-vue'
6
+ import { computed } from 'vue'
7
+
8
+ const props = defineProps<
9
+ SeparatorProps & { class?: HTMLAttributes['class'], label?: string }
10
+ >()
11
+
12
+ const delegatedProps = computed(() => {
13
+ const { class: _, ...delegated } = props
14
+
15
+ return delegated
16
+ })
17
+ </script>
18
+
19
+ <template>
20
+ <Separator
21
+ v-bind="delegatedProps"
22
+ :class="
23
+ cn(
24
+ 'shrink-0 bg-border relative',
25
+ props.orientation === 'vertical' ? 'w-px h-full' : 'h-px w-full',
26
+ props.class,
27
+ )
28
+ "
29
+ >
30
+ <span
31
+ v-if="props.label"
32
+ :class="cn('text-xs text-muted-foreground bg-background absolute top-1/2 left-1/2 -translate-x-1/2 -translate-y-1/2 flex justify-center items-center',
33
+ props.orientation === 'vertical' ? 'w-[1px] px-1 py-2' : 'h-[1px] py-1 px-2',
34
+ )"
35
+ >{{ props.label }}</span>
36
+ </Separator>
37
+ </template>
@@ -0,0 +1 @@
1
+ export { default as Separator } from './Separator.vue'
@@ -0,0 +1,15 @@
1
+ <script setup lang="ts">
2
+ import type { DialogRootEmits, DialogRootProps } from 'radix-vue'
3
+ import { DialogRoot, useForwardPropsEmits } from 'radix-vue'
4
+
5
+ const props = defineProps<DialogRootProps>()
6
+ const emits = defineEmits<DialogRootEmits>()
7
+
8
+ const forwarded = useForwardPropsEmits(props, emits)
9
+ </script>
10
+
11
+ <template>
12
+ <DialogRoot v-bind="forwarded">
13
+ <slot />
14
+ </DialogRoot>
15
+ </template>
@@ -0,0 +1,12 @@
1
+ <script setup lang="ts">
2
+ import type { DialogCloseProps } from 'radix-vue'
3
+ import { DialogClose } from 'radix-vue'
4
+
5
+ const props = defineProps<DialogCloseProps>()
6
+ </script>
7
+
8
+ <template>
9
+ <DialogClose v-bind="props">
10
+ <slot />
11
+ </DialogClose>
12
+ </template>
@@ -0,0 +1,58 @@
1
+ <script setup lang="ts">
2
+ import type { DialogContentEmits, DialogContentProps } from 'radix-vue'
3
+ import type { HTMLAttributes } from 'vue'
4
+ import type { SheetVariants } from '.'
5
+ import { cn } from '@/lib/utils'
6
+ import { X } from 'lucide-vue-next'
7
+ import {
8
+ DialogClose,
9
+ DialogContent,
10
+
11
+ DialogOverlay,
12
+ DialogPortal,
13
+ useForwardPropsEmits,
14
+ } from 'radix-vue'
15
+ import { computed } from 'vue'
16
+ import { sheetVariants } from '.'
17
+
18
+ interface SheetContentProps extends DialogContentProps {
19
+ class?: HTMLAttributes['class']
20
+ side?: SheetVariants['side']
21
+ }
22
+
23
+ defineOptions({
24
+ inheritAttrs: false,
25
+ })
26
+
27
+ const props = defineProps<SheetContentProps>()
28
+
29
+ const emits = defineEmits<DialogContentEmits>()
30
+
31
+ const delegatedProps = computed(() => {
32
+ const { class: _, side, ...delegated } = props
33
+
34
+ return delegated
35
+ })
36
+
37
+ const forwarded = useForwardPropsEmits(delegatedProps, emits)
38
+ </script>
39
+
40
+ <template>
41
+ <DialogPortal>
42
+ <DialogOverlay
43
+ class="fixed inset-0 z-50 bg-black/80 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0"
44
+ />
45
+ <DialogContent
46
+ :class="cn(sheetVariants({ side }), props.class)"
47
+ v-bind="{ ...forwarded, ...$attrs }"
48
+ >
49
+ <slot />
50
+
51
+ <DialogClose
52
+ class="absolute right-4 top-4 rounded-sm opacity-70 ring-offset-background transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none data-[state=open]:bg-secondary"
53
+ >
54
+ <X class="w-4 h-4 text-muted-foreground" />
55
+ </DialogClose>
56
+ </DialogContent>
57
+ </DialogPortal>
58
+ </template>
@@ -0,0 +1,24 @@
1
+ <script setup lang="ts">
2
+ import type { DialogDescriptionProps } from 'radix-vue'
3
+ import type { HTMLAttributes } from 'vue'
4
+ import { cn } from '@/lib/utils'
5
+ import { DialogDescription } from 'radix-vue'
6
+ import { computed } from 'vue'
7
+
8
+ const props = defineProps<DialogDescriptionProps & { class?: HTMLAttributes['class'] }>()
9
+
10
+ const delegatedProps = computed(() => {
11
+ const { class: _, ...delegated } = props
12
+
13
+ return delegated
14
+ })
15
+ </script>
16
+
17
+ <template>
18
+ <DialogDescription
19
+ :class="cn('text-sm text-muted-foreground', props.class)"
20
+ v-bind="delegatedProps"
21
+ >
22
+ <slot />
23
+ </DialogDescription>
24
+ </template>
@@ -0,0 +1,19 @@
1
+ <script setup lang="ts">
2
+ import type { HTMLAttributes } from 'vue'
3
+ import { cn } from '@/lib/utils'
4
+
5
+ const props = defineProps<{ class?: HTMLAttributes['class'] }>()
6
+ </script>
7
+
8
+ <template>
9
+ <div
10
+ :class="
11
+ cn(
12
+ 'flex flex-col-reverse sm:flex-row sm:justify-end sm:gap-x-2',
13
+ props.class,
14
+ )
15
+ "
16
+ >
17
+ <slot />
18
+ </div>
19
+ </template>
@@ -0,0 +1,16 @@
1
+ <script setup lang="ts">
2
+ import type { HTMLAttributes } from 'vue'
3
+ import { cn } from '@/lib/utils'
4
+
5
+ const props = defineProps<{ class?: HTMLAttributes['class'] }>()
6
+ </script>
7
+
8
+ <template>
9
+ <div
10
+ :class="
11
+ cn('flex flex-col gap-y-2 text-center sm:text-left', props.class)
12
+ "
13
+ >
14
+ <slot />
15
+ </div>
16
+ </template>
@@ -0,0 +1,24 @@
1
+ <script setup lang="ts">
2
+ import type { DialogTitleProps } from 'radix-vue'
3
+ import type { HTMLAttributes } from 'vue'
4
+ import { cn } from '@/lib/utils'
5
+ import { DialogTitle } from 'radix-vue'
6
+ import { computed } from 'vue'
7
+
8
+ const props = defineProps<DialogTitleProps & { class?: HTMLAttributes['class'] }>()
9
+
10
+ const delegatedProps = computed(() => {
11
+ const { class: _, ...delegated } = props
12
+
13
+ return delegated
14
+ })
15
+ </script>
16
+
17
+ <template>
18
+ <DialogTitle
19
+ :class="cn('text-lg font-semibold text-foreground', props.class)"
20
+ v-bind="delegatedProps"
21
+ >
22
+ <slot />
23
+ </DialogTitle>
24
+ </template>
@@ -0,0 +1,12 @@
1
+ <script setup lang="ts">
2
+ import type { DialogTriggerProps } from 'radix-vue'
3
+ import { DialogTrigger } from 'radix-vue'
4
+
5
+ const props = defineProps<DialogTriggerProps>()
6
+ </script>
7
+
8
+ <template>
9
+ <DialogTrigger v-bind="props">
10
+ <slot />
11
+ </DialogTrigger>
12
+ </template>
@@ -0,0 +1,32 @@
1
+ import type { VariantProps } from 'class-variance-authority'
2
+ import { cva } from 'class-variance-authority'
3
+
4
+ export { default as Sheet } from './Sheet.vue'
5
+ export { default as SheetClose } from './SheetClose.vue'
6
+ export { default as SheetContent } from './SheetContent.vue'
7
+ export { default as SheetDescription } from './SheetDescription.vue'
8
+ export { default as SheetFooter } from './SheetFooter.vue'
9
+ export { default as SheetHeader } from './SheetHeader.vue'
10
+ export { default as SheetTitle } from './SheetTitle.vue'
11
+ export { default as SheetTrigger } from './SheetTrigger.vue'
12
+
13
+ export const sheetVariants = cva(
14
+ 'fixed z-50 gap-4 bg-background p-6 shadow-lg transition ease-in-out data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:duration-300 data-[state=open]:duration-500',
15
+ {
16
+ variants: {
17
+ side: {
18
+ top: 'inset-x-0 top-0 border-b data-[state=closed]:slide-out-to-top data-[state=open]:slide-in-from-top',
19
+ bottom:
20
+ 'inset-x-0 bottom-0 border-t data-[state=closed]:slide-out-to-bottom data-[state=open]:slide-in-from-bottom',
21
+ left: 'inset-y-0 left-0 h-full w-3/4 border-r data-[state=closed]:slide-out-to-left data-[state=open]:slide-in-from-left sm:max-w-sm',
22
+ right:
23
+ 'inset-y-0 right-0 h-full w-3/4 border-l data-[state=closed]:slide-out-to-right data-[state=open]:slide-in-from-right sm:max-w-sm',
24
+ },
25
+ },
26
+ defaultVariants: {
27
+ side: 'right',
28
+ },
29
+ },
30
+ )
31
+
32
+ export type SheetVariants = VariantProps<typeof sheetVariants>
@@ -0,0 +1,85 @@
1
+ <script setup lang="ts">
2
+ import type { SidebarProps } from '.'
3
+ import { Sheet, SheetContent } from '@/lib/registry/default/ui/sheet'
4
+ import { cn } from '@/lib/utils'
5
+ import { SIDEBAR_WIDTH_MOBILE, useSidebar } from './utils'
6
+
7
+ defineOptions({
8
+ inheritAttrs: false,
9
+ })
10
+
11
+ const props = withDefaults(defineProps<SidebarProps>(), {
12
+ side: 'left',
13
+ variant: 'sidebar',
14
+ collapsible: 'offcanvas',
15
+ })
16
+
17
+ const { isMobile, state, openMobile, setOpenMobile } = useSidebar()
18
+ </script>
19
+
20
+ <template>
21
+ <div
22
+ v-if="collapsible === 'none'"
23
+ :class="cn('flex h-full w-[--sidebar-width] flex-col bg-sidebar text-sidebar-foreground', props.class)"
24
+ v-bind="$attrs"
25
+ >
26
+ <slot />
27
+ </div>
28
+
29
+ <Sheet v-else-if="isMobile" :open="openMobile" v-bind="$attrs" @update:open="setOpenMobile">
30
+ <SheetContent
31
+ data-sidebar="sidebar"
32
+ data-mobile="true"
33
+ :side="side"
34
+ class="w-[--sidebar-width] bg-sidebar p-0 text-sidebar-foreground [&>button]:hidden"
35
+ :style="{
36
+ '--sidebar-width': SIDEBAR_WIDTH_MOBILE,
37
+ }"
38
+ >
39
+ <div class="flex h-full w-full flex-col">
40
+ <slot />
41
+ </div>
42
+ </SheetContent>
43
+ </Sheet>
44
+
45
+ <div
46
+ v-else class="group peer hidden md:block"
47
+ :data-state="state"
48
+ :data-collapsible="state === 'collapsed' ? collapsible : ''"
49
+ :data-variant="variant"
50
+ :data-side="side"
51
+ >
52
+ <!-- This is what handles the sidebar gap on desktop -->
53
+ <div
54
+ :class="cn(
55
+ 'duration-200 relative h-svh w-[--sidebar-width] bg-transparent transition-[width] ease-linear',
56
+ 'group-data-[collapsible=offcanvas]:w-0',
57
+ 'group-data-[side=right]:rotate-180',
58
+ variant === 'floating' || variant === 'inset'
59
+ ? 'group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)_+_theme(spacing.4))]'
60
+ : 'group-data-[collapsible=icon]:w-[--sidebar-width-icon]',
61
+ )"
62
+ />
63
+ <div
64
+ :class="cn(
65
+ 'duration-200 fixed inset-y-0 z-10 hidden h-svh w-[--sidebar-width] transition-[left,right,width] ease-linear md:flex',
66
+ side === 'left'
67
+ ? 'left-0 group-data-[collapsible=offcanvas]:left-[calc(var(--sidebar-width)*-1)]'
68
+ : 'right-0 group-data-[collapsible=offcanvas]:right-[calc(var(--sidebar-width)*-1)]',
69
+ // Adjust the padding for floating and inset variants.
70
+ variant === 'floating' || variant === 'inset'
71
+ ? 'p-2 group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)_+_theme(spacing.4)_+2px)]'
72
+ : 'group-data-[collapsible=icon]:w-[--sidebar-width-icon] group-data-[side=left]:border-r group-data-[side=right]:border-l',
73
+ props.class,
74
+ )"
75
+ v-bind="$attrs"
76
+ >
77
+ <div
78
+ data-sidebar="sidebar"
79
+ class="flex h-full w-full flex-col text-sidebar-foreground bg-sidebar group-data-[variant=floating]:rounded-lg group-data-[variant=floating]:border group-data-[variant=floating]:border-sidebar-border group-data-[variant=floating]:shadow"
80
+ >
81
+ <slot />
82
+ </div>
83
+ </div>
84
+ </div>
85
+ </template>
@@ -0,0 +1,17 @@
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
+ <div
12
+ data-sidebar="content"
13
+ :class="cn('flex min-h-0 flex-1 flex-col gap-2 overflow-auto group-data-[collapsible=icon]:overflow-hidden', props.class)"
14
+ >
15
+ <slot />
16
+ </div>
17
+ </template>