@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
package/nuxt.config.ts CHANGED
@@ -78,7 +78,6 @@ export default defineNuxtConfig({
78
78
  'nuxt-easy-texts',
79
79
  'nuxt-page-dependencies',
80
80
  'nuxt-multi-cache',
81
- 'nuxt-plugin-order',
82
81
  'vuepal',
83
82
  'nuxt-language-negotiation',
84
83
  'nuxt-svg-icon-sprite',
@@ -88,7 +87,8 @@ export default defineNuxtConfig({
88
87
  '@nuxt/image',
89
88
  'shadcn-nuxt',
90
89
  '@iqual/nuxt-icms/modules/dynamicParagraphResolver',
91
- '@iqual/nuxt-icms/modules/dynamicNodeResolver'
90
+ '@iqual/nuxt-icms/modules/dynamicEntityComponentResolver',
91
+ 'nuxt-maplibre',
92
92
  ],
93
93
 
94
94
  easyTexts: {
@@ -133,26 +133,6 @@ export default defineNuxtConfig({
133
133
  checkComposableCalled: true,
134
134
  },
135
135
 
136
- pluginOrder: {
137
- order: [
138
- // Match plugins by their file path.
139
- // Note that only a single plugin may match.
140
- // The match is performed as "plugin.src.includes(v.pathMatch)".
141
- { pathMatch: 'plugins/language.ts' },
142
- { pathMatch: '@blokkli/editor/dist/runtime/plugins/blokkliEditable.js' },
143
- { pathMatch: 'staticNodes.mjs' },
144
- { pathMatch: 'formkitSSRPlugin.mjs' },
145
- { pathMatch: 'clickaway.ts' },
146
- { pathMatch: 'graphqlMiddleware.ts' },
147
- { pathMatch: 'forceHttps.js' },
148
- { pathMatch: 'nuxt-easy-texts/dist/runtime/plugins/texts.mjs' },
149
- { pathMatch: 'drupalUser.ts' },
150
- { pathMatch: 'dynamic-node-resolver.plugin.mjs' },
151
- ],
152
-
153
- logSortedPlugins: false,
154
- },
155
-
156
136
  vuepal: {
157
137
  frontendRouting: {
158
138
  enabled: IS_DEV,
@@ -165,6 +145,9 @@ export default defineNuxtConfig({
165
145
  localTasks: {
166
146
  enabled: true,
167
147
  },
148
+ languageSwitchLinks: {
149
+ enabled: true,
150
+ },
168
151
  drupalRoute: {
169
152
  enabled: true,
170
153
  routeQueries: {
@@ -197,6 +180,7 @@ export default defineNuxtConfig({
197
180
  },
198
181
 
199
182
  icms: {
183
+ pageComponentTypes: ['Node'],
200
184
  components: {
201
185
  fragments: [
202
186
  // Layout components
@@ -237,6 +221,11 @@ export default defineNuxtConfig({
237
221
  'paragraphIcmsPartnershipElement',
238
222
  'paragraphIcmsTimelineElement',
239
223
  ]
224
+ },
225
+ searchResults: {
226
+ fragments: [
227
+ 'nodeIcmsPageSearchResult',
228
+ ]
240
229
  }
241
230
  },
242
231
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@iqual/nuxt-icms",
3
- "version": "1.1.0",
3
+ "version": "1.2.1",
4
4
  "description": "ICMS Base",
5
5
  "type": "module",
6
6
  "private": false,
@@ -26,13 +26,14 @@
26
26
  "class-variance-authority": "^0.7.1",
27
27
  "clsx": "^2.1.1",
28
28
  "embla-carousel-vue": "^8.6.0",
29
+ "fslightbox-vue": "^2.2.1",
29
30
  "lucide-vue-next": "^0.469.0",
30
31
  "nuxt-easy-texts": "^2.0.0",
31
32
  "nuxt-graphql-middleware": "^5.1.0",
32
33
  "nuxt-language-negotiation": "^2.0.0",
34
+ "nuxt-maplibre": "^1.1.1",
33
35
  "nuxt-multi-cache": "^3.4.0",
34
36
  "nuxt-page-dependencies": "^1.1.0",
35
- "nuxt-plugin-order": "^1.0.0",
36
37
  "nuxt-svg-icon-sprite": "^2.0.0",
37
38
  "patch-package": "^8.0.0",
38
39
  "radix-vue": "^1.9.17",
@@ -4,7 +4,7 @@
4
4
 
5
5
  <script lang="ts" setup>
6
6
 
7
- const { $resolveDynamicNodeComponent } = useNuxtApp()
7
+ const { $resolveDynamicEntityComponent } = useNuxtApp()
8
8
 
9
9
  defineOptions({
10
10
  name: 'PageSlug',
@@ -20,7 +20,7 @@ const { entity: node } = await useDrupalRouteQuery('slug')
20
20
  const contentType = computed(() => node.value?.__typename)
21
21
 
22
22
  const pageComponent = computed(() => {
23
- return $resolveDynamicNodeComponent(contentType.value)
23
+ return $resolveDynamicEntityComponent(contentType.value)
24
24
  })
25
25
 
26
26
  await renderPageDependencies()
package/pages/index.vue CHANGED
@@ -4,7 +4,7 @@
4
4
 
5
5
  <script lang="ts" setup>
6
6
 
7
- const { $resolveDynamicNodeComponent } = useNuxtApp()
7
+ const { $resolveDynamicEntityComponent } = useNuxtApp()
8
8
 
9
9
  defineOptions({
10
10
  name: 'Homepage',
@@ -20,7 +20,7 @@ const { entity: node } = await useDrupalRouteQuery('slug')
20
20
  const contentType = computed(() => node.value?.__typename)
21
21
 
22
22
  const pageComponent = computed(() => {
23
- return $resolveDynamicNodeComponent(contentType.value)
23
+ return $resolveDynamicEntityComponent(contentType.value)
24
24
  })
25
25
 
26
26
  await renderPageDependencies()
@@ -4,7 +4,7 @@
4
4
 
5
5
  <script lang="ts" setup>
6
6
 
7
- const { $resolveDynamicNodeComponent } = useNuxtApp()
7
+ const { $resolveDynamicEntityComponent } = useNuxtApp()
8
8
 
9
9
  defineOptions({
10
10
  name: 'PageNodeCanonical',
@@ -18,7 +18,7 @@ const { entity: node } = await useDrupalRouteQuery('nodeCanonical')
18
18
  const contentType = computed(() => node.value?.__typename)
19
19
 
20
20
  const pageComponent = computed(() => {
21
- return $resolveDynamicNodeComponent(contentType.value)
21
+ return $resolveDynamicEntityComponent(contentType.value)
22
22
  })
23
23
 
24
24
  await renderPageDependencies()
@@ -0,0 +1,17 @@
1
+ query contentSearch($keys: String!, $language: String, $facets: [String!], $filter: SearchApiQueryFilterInput, $limit: Int, $offset: Int) {
2
+ searchApiQuery(indexId: "content_search", keys: $keys, language: $language, facets: $facets, filter: $filter, limit: $limit, offset: $offset) {
3
+ count
4
+ facets {
5
+ field
6
+ filter {
7
+ id
8
+ label
9
+ }
10
+ count
11
+ results {
12
+ bundle: __typename
13
+ ...entitySearchResult
14
+ }
15
+ }
16
+ }
17
+ }
@@ -222,6 +222,7 @@ const config: Config = {
222
222
  ],
223
223
  corePlugins: {
224
224
  textOpacity: false,
225
+ container: false,
225
226
  },
226
227
  }
227
228
 
@@ -0,0 +1 @@
1
+ declare module 'fslightbox-vue'
@@ -1,31 +0,0 @@
1
- import type {
2
- LanguageSwitchLinkFragment,
3
- RouteQuery,
4
- } from '#graphql-operations'
5
-
6
- export function setLanguageLinksFromFragment(
7
- links: LanguageSwitchLinkFragment[],
8
- ) {
9
- const route = useRoute()
10
-
11
- definePageLanguageLinks(
12
- route.path,
13
- links.reduce<Record<string, string>>((acc, v) => {
14
- if (v.language.id && v.url.path) {
15
- acc[v.language.id] = v.url.path
16
- }
17
- return acc
18
- }, {}),
19
- )
20
- }
21
-
22
- export function setLanguageLinksFromRoute(
23
- query?: RouteQuery | undefined | null,
24
- ) {
25
- if (query && query.route && 'languageSwitchLinks' in query.route) {
26
- setLanguageLinksFromFragment(query.route.languageSwitchLinks)
27
- return
28
- }
29
- const route = useRoute()
30
- definePageLanguageLinks(route.path, {})
31
- }
@@ -1,95 +0,0 @@
1
- /**
2
- * Nuxt Layer Module: dynamicNodeResolver
3
- *
4
- * Dynamically imports all Node components from every enabled Nuxt layer (including the main app),
5
- * supports both single-file and index.vue conventions, and injects a dynamic resolver with
6
- * proper override priority (main app overrides layers).
7
- */
8
-
9
- import { defineNuxtModule, addPlugin, addTemplate, createResolver } from '@nuxt/kit'
10
- import { root } from 'happy-dom/lib/PropertySymbol.js'
11
- import { join } from 'pathe'
12
- import { rootDir } from 'vitest/node'
13
-
14
- export default defineNuxtModule({
15
- meta: { name: 'dynamicNodeResolver' },
16
- setup(_options, nuxt) {
17
- const { resolve } = createResolver(import.meta.url)
18
-
19
- // Gather all layer root directories (main app is always first)
20
- const appRoot = nuxt.options.rootDir
21
- const layerDirs = nuxt.options._layers
22
- .map(layer => layer.cwd.replace(appRoot, '').length ? layer.cwd.replace(appRoot, '') : '/')
23
-
24
- // Generate import.meta.glob for each layer's Node components
25
- const imports = layerDirs.map((dir, i) => {
26
- const componentsPath = join(dir, 'components/Node/**/*.vue')
27
- return `const modules${i} = import.meta.glob(${JSON.stringify(componentsPath)});`
28
- }).join('\n')
29
-
30
- // Merge logic (reverse order so main app overrides layers)
31
- const mergeLogic = layerDirs
32
- .map((_, i) => `
33
- for (const path in modules${i}) {
34
- const name = getComponentNameFromPath(path);
35
- if (name) componentMap[name] = defineAsyncComponent(modules${i}[path]);
36
- }
37
- `)
38
- .reverse()
39
- .join('\n')
40
-
41
- // Create the plugin template
42
- addTemplate({
43
- filename: 'dynamic-node-resolver.plugin.mjs',
44
- getContents: () => `
45
- import { defineNuxtPlugin } from '#app'
46
- import { defineAsyncComponent } from 'vue'
47
-
48
- /**
49
- * Extracts a normalized component name from a file path for dynamic component mapping.
50
- *
51
- * Supports both single-file and directory-based Vue component structures:
52
- * - /components/Node/Foo.vue -> NodeFoo
53
- * - /components/Node/Foo/index.vue -> NodeFoo
54
- * - /components/Node/Bar/Baz.vue -> NodeBarBaz
55
- * - /components/Node/Bar/Baz/index.vue -> NodeBarBaz
56
- *
57
- * @param {string} path - The absolute or relative file path to the Vue component.
58
- * @returns {string|null} The normalized component name (e.g., 'NodeFoo' or 'NodeBarBaz'), or null if the path does not match.
59
- */
60
- function getComponentNameFromPath(path) {
61
- // Match everything after /Node/ up to .vue, splitting by /
62
- //const match = path.match(/\\/Node\\/([^/]+?)(?:\\/index)?\\.vue$/)
63
- const match = path.match(/\\/Node\\/(.+?)\\/?(index)?\\.vue$/)
64
-
65
- if (match) {
66
- // match[1] is the path after /Node/ up to the file (could be nested)
67
- // Split by '/', capitalize each part, and join
68
- const parts = match[1].split('/').map(
69
- part => part.charAt(0).toUpperCase() + part.slice(1)
70
- )
71
- return 'Node' + parts.join('')
72
- }
73
- return null
74
- }
75
-
76
-
77
- export default defineNuxtPlugin(() => {
78
- ${imports}
79
- const componentMap = {};
80
- ${mergeLogic}
81
- return {
82
- provide: {
83
- resolveDynamicNodeComponent: (name) => componentMap[name] || null
84
- }
85
- }
86
- })
87
- `
88
- })
89
-
90
- // Register the generated plugin
91
- addPlugin({
92
- src: resolve(nuxt.options.buildDir, 'dynamic-node-resolver.plugin.mjs')
93
- })
94
- }
95
- })
@@ -1,69 +0,0 @@
1
- <template>
2
- <main :class="{ 'cursor-wait': pending }">
3
- <section class="flex">
4
- <div class="container">
5
- <h1 v-if="node" class="pb-3 text-4xl lg:pb-6 lg:text-7xl">
6
- {{ node.title }}
7
- </h1>
8
- <form @submit.prevent>
9
- <SearchInput v-model="searchTerm" />
10
- </form>
11
- </div>
12
- </section>
13
- <template v-if="data && searchTerm">
14
- <Container>
15
- <ol class="mt-10">
16
- <SearchResult v-for="hit in data" v-bind="hit" :key="hit.id" />
17
- </ol>
18
- </Container>
19
- </template>
20
- </main>
21
- </template>
22
-
23
- <script lang="ts" setup>
24
- import type { NodeIcmsPageFragment } from '#graphql-operations'
25
-
26
- definePageMeta({
27
- name: 'search',
28
- drupalFrontendRoute: true,
29
- path: '/suche',
30
- languageMapping: {
31
- fr: '/chercher',
32
- en: '/search',
33
- },
34
- })
35
-
36
- const nuxtRoute = useRoute()
37
- const searchTerm = useQueryString('text')
38
- const language = useCurrentLanguage()
39
-
40
- const searchQuery = computed(() => {
41
- return {
42
- langcode: language.value,
43
- size: 16,
44
- text: searchTerm.value || undefined,
45
- }
46
- })
47
-
48
- const { data, pending } = await useFetch('/api/content-search', {
49
- query: searchQuery,
50
- })
51
-
52
- // Get the data.
53
- const { data: query } = await useAsyncData(nuxtRoute.path, () => {
54
- return useGraphqlQuery('route', {
55
- path: nuxtRoute.path,
56
- }).then((v) => v.data)
57
- })
58
-
59
- // Handles redirects and metatags.
60
- const { entity: node } = await useDrupalRoute<NodeIcmsPageFragment>(
61
- query.value,
62
- {
63
- noError: true,
64
- },
65
- )
66
- setBreadcrumbLinksFromRoute(query.value)
67
- setLanguageLinksFromRoute(query.value)
68
- await renderPageDependencies()
69
- </script>
@@ -1,40 +0,0 @@
1
- <template>
2
- <div class="container">
3
- <h1 class="mb-10 text-4xl">Static Page example</h1>
4
- <h2>{{ node.title }}</h2>
5
- </div>
6
- </template>
7
-
8
- <script lang="ts" setup>
9
- import type { NodePageFragment } from '#graphql-operations'
10
-
11
- defineOptions({
12
- name: 'StaticPageExample',
13
- })
14
-
15
- definePageMeta({
16
- name: 'static-page-example',
17
- drupalFrontendRoute: true,
18
- path: '/statisch',
19
- languageMapping: {
20
- fr: '/statique',
21
- en: '/static',
22
- },
23
- })
24
-
25
- const nuxtRoute = useRoute()
26
-
27
- // Get the data.
28
- const { data: query } = await useAsyncData('staticPageExample', async () => {
29
- return await useGraphqlQuery('route', {
30
- path: nuxtRoute.path,
31
- }).then((v) => v.data)
32
- })
33
-
34
- // Handles redirects and metatags.
35
- const { entity: node } = await useDrupalRoute<NodePageFragment>(query.value)
36
-
37
- setBreadcrumbLinks()
38
- setLanguageLinksFromRoute(query.value)
39
- await renderPageDependencies()
40
- </script>
@@ -1,51 +0,0 @@
1
- fragment routeQuery on Query {
2
- messengerMessages
3
- # Data used for the useDrupalRoute composable.
4
- ...useDrupalRoute
5
-
6
- # Data used for rendering entities.
7
- route(path: $path) {
8
- __typename
9
- ... on EntityUrl {
10
- breadcrumb {
11
- ...breadcrumb
12
- }
13
- ...entityUrl
14
- }
15
- ... on InternalUrl {
16
- languageSwitchLinks {
17
- ...languageSwitchLink
18
- }
19
- }
20
- }
21
- }
22
-
23
- fragment entityUrl on EntityUrl {
24
- languageSwitchLinks {
25
- ...languageSwitchLink
26
- }
27
- entity {
28
- uuid
29
- }
30
- entityGlobal: entity {
31
- ...entityGlobal
32
- }
33
- }
34
-
35
- fragment entityGlobal on Entity {
36
- __typename
37
- canEdit: accessCheck(operation: "edit-blokkli")
38
- id
39
- bundle: entityBundle
40
- }
41
-
42
- fragment languageSwitchLink on LanguageSwitchLink {
43
- active
44
- language {
45
- id
46
- }
47
- title
48
- url {
49
- path
50
- }
51
- }