@iqual/nuxt-icms 1.1.0 → 1.2.2

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