@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
@@ -1,7 +1,7 @@
1
1
  <template>
2
2
  <DesignSystemAtomsContainer :colorScheme="colorScheme" :spacing="spacing">
3
3
  <DesignSystemAtomsGridRow>
4
- <div class="col-span-12 md:col-span-4">
4
+ <div class="col-span-12 md:col-span-12">
5
5
  <DesignSystemOrganismsContentBlock
6
6
  :pretitle="pretitle"
7
7
  :title="title"
@@ -11,7 +11,7 @@
11
11
  :colorScheme="colorScheme"
12
12
  />
13
13
  </div>
14
- <div class="col-span-12 md:col-span-6 md:col-start-7">
14
+ <div class="col-span-12 md:col-span-9">
15
15
  <DesignSystemOrganismsContentBlock
16
16
  :subtitle="subtitle"
17
17
  :text="text"
@@ -23,18 +23,7 @@
23
23
  </DesignSystemAtomsGridRow>
24
24
 
25
25
  <DesignSystemAtomsGridRow class="grid-4-col mt-10 md:mt-20">
26
- <DesignSystemOrganismsTeaserCard
27
- v-for="teaser in teasers"
28
- :image="teaser?.image || teaser?.mainImage"
29
- :pretitle="teaser?.pretitle"
30
- :title="teaser?.title || teaser?.mainTitle"
31
- :titleWeight="childTitleWeight"
32
- :subtitle="teaser?.subtitle"
33
- :text="teaser?.text || teaser?.mainText"
34
- :link="teaser?.link?.path"
35
- :link-label="teaser?.linkLabel"
36
- :colorScheme="colorScheme"
37
- />
26
+ <component v-for="teaser in teasers" :is="teaserComponent(teaser?.bundle)" v-bind="teaser" />
38
27
  </DesignSystemAtomsGridRow>
39
28
  </DesignSystemAtomsContainer>
40
29
  </template>
@@ -44,7 +33,7 @@ import type { ParagraphIcmsLayoutTeasersFragment } from '#graphql-operations'
44
33
 
45
34
  const props = defineProps<ParagraphIcmsLayoutTeasersFragment>()
46
35
 
47
- const { options, parentType } = useAttrs().blokkliData
36
+ const { options, parentType } = useAttrs().blokkliData as any
48
37
 
49
38
  const colorScheme = computed(() => {
50
39
  return options.value.colorScheme
@@ -55,4 +44,12 @@ const spacing = computed(() => {
55
44
  })
56
45
 
57
46
  const childTitleWeight = useChildTitleWeight(props.titleWeight ?? '')
47
+
48
+ const { $resolveDynamicEntityComponent } = useNuxtApp()
49
+ const teaserComponent = (bundle) => {
50
+ return $resolveDynamicEntityComponent(`${bundle}Teaser`)
51
+ }
52
+
53
+ provide('colorScheme', colorScheme)
54
+ provide('titleWeight', childTitleWeight)
58
55
  </script>
@@ -1,7 +1,6 @@
1
1
  <template>
2
2
  <DesignSystemAtomsContainer :colorScheme="colorScheme" :spacing="spacing">
3
3
  <DesignSystemAtomsGridRow>
4
-
5
4
  <div :class="textColumnClassList">
6
5
  <DesignSystemOrganismsContentBlock
7
6
  :pretitle="pretitle"
@@ -42,30 +41,38 @@ defineProps<ParagraphIcmsLayoutTextMediaFragment>()
42
41
 
43
42
  const { options, isEditing } = useAttrs().blokkliData
44
43
 
44
+ const reverseColumns = ref(false)
45
+
46
+ watch(
47
+ () => options.value.reverseColumns,
48
+ (newVal) => {
49
+ reverseColumns.value = Boolean(Number(newVal))
50
+ },
51
+ { immediate: true },
52
+ )
53
+
45
54
  const textColumnClassList = computed(() => {
46
55
  const classList = ['col-span-12']
56
+ const width = options.value.textWidth
47
57
 
48
- if (options.value.textWidth === 'medium') {
58
+ if (width === 'medium') {
49
59
  classList.push('md:col-span-6')
50
- } else if (options.value.textWidth === 'narrow') {
51
- classList.push('md:col-span-4')
60
+ } else if (width === 'narrow') {
61
+ classList.push('md:col-span-5')
52
62
  } else {
53
- classList.push('md:col-span-8')
63
+ classList.push('md:col-span-7')
54
64
  }
55
65
 
56
- if (options.value.textAlign === 'right') {
57
- classList.push(
58
- 'md:order-last',
59
- options.value.textWidth === 'medium'
60
- ? 'md:col-start-7 md:pl-6'
61
- : options.value.textWidth === 'narrow'
62
- ? 'md:col-start-8'
63
- : 'md:col-start-5',
64
- )
65
- }
66
-
67
- if (options.value.textAlign === 'left' && options.value.textWidth === 'medium') {
68
- classList.push('md:pr-6')
66
+ if (reverseColumns.value) {
67
+ classList.push('md:order-last')
68
+
69
+ if (width === 'medium') {
70
+ classList.push('md:col-start-7')
71
+ } else if (width === 'narrow') {
72
+ classList.push('md:col-start-8')
73
+ } else {
74
+ classList.push('md:col-start-6')
75
+ }
69
76
  }
70
77
 
71
78
  return classList
@@ -73,28 +80,28 @@ const textColumnClassList = computed(() => {
73
80
 
74
81
  const imageColumnClassList = computed(() => {
75
82
  const classList = ['col-span-12']
83
+ const width = options.value.textWidth
76
84
 
77
- if (options.value.textWidth === 'medium') {
85
+ if (width === 'medium') {
78
86
  classList.push('md:col-span-6')
79
- } else if (options.value.textWidth === 'narrow') {
87
+ } else if (width === 'narrow') {
80
88
  classList.push('md:col-span-7')
81
89
  } else {
82
- classList.push('md:col-span-3')
90
+ classList.push('md:col-span-5')
83
91
  }
84
92
 
85
- if (options.value.textAlign === 'left') {
86
- classList.push(
87
- 'md:order-last',
88
- options.value.textWidth === 'medium'
89
- ? 'md:col-start-7 md:pl-6'
90
- : options.value.textWidth === 'narrow'
91
- ? 'md:col-start-6'
92
- : 'md:col-start-10',
93
- )
94
- }
95
-
96
- if (options.value.textAlign === 'right' && options.value.textWidth === 'medium') {
93
+ if (reverseColumns.value) {
97
94
  classList.push('md:pr-6')
95
+ } else {
96
+ classList.push('md:order-last', 'md:pl-6')
97
+
98
+ if (width === 'medium') {
99
+ classList.push('md:col-start-7')
100
+ } else if (width === 'narrow') {
101
+ classList.push('md:col-start-6')
102
+ } else {
103
+ classList.push('md:col-start-8')
104
+ }
98
105
  }
99
106
 
100
107
  return classList
@@ -23,7 +23,7 @@ defineProps<ParagraphIcmsTimelineElementFragment>()
23
23
  const { options, isEditing } = useAttrs().blokkliData
24
24
 
25
25
  const reverseColumns = computed(() => {
26
- return options.value.reverseColumns
26
+ return Boolean(Number(options.value.reverseColumns))
27
27
  })
28
28
 
29
29
  const colorScheme = inject<string>('colorScheme')
@@ -1,4 +1,5 @@
1
1
  fragment paragraphIcmsLayoutTimeline on ParagraphIcmsLayoutTimeline {
2
+ id
2
3
  pretitle: fieldIcmsPretitle
3
4
  title: fieldIcmsTitle
4
5
  titleStyle: fieldIcmsTitleStyle
@@ -1,16 +1,19 @@
1
1
  <template>
2
- <DesignSystemAtomsContainer :color-scheme="colorScheme" :spacing="spacing">
2
+ <DesignSystemAtomsContainer :color-scheme="colorScheme" :spacing="spacing" :data-timeline="id">
3
3
  <DesignSystemAtomsGridRow v-if="pretitle || title || subtitle || text">
4
- <div class="col-span-12">
4
+ <div class="col-span-12 md:col-span-12">
5
5
  <DesignSystemOrganismsContentBlock
6
6
  :pretitle="pretitle"
7
7
  :title="title"
8
8
  :titleStyle="titleStyle"
9
9
  :titleWeight="titleWeight"
10
10
  :subtitle="subtitle"
11
- :text="text"
12
11
  :colorScheme="colorScheme"
13
- :hasDecorativeLine="Boolean(subtitle || text)"
12
+ />
13
+ </div>
14
+ <div class="col-span-12 md:col-span-9">
15
+ <DesignSystemOrganismsContentBlock
16
+ :text="text"
14
17
  />
15
18
  </div>
16
19
  </DesignSystemAtomsGridRow>
@@ -172,8 +175,8 @@ const scrollToElement = (element: HTMLElement) => {
172
175
  })
173
176
  }
174
177
 
175
- const getTimelineElements = () =>
176
- document.querySelectorAll('[data-timeline-element]')
178
+ const getTimelineElements = () =>
179
+ document.querySelectorAll(`[data-timeline="${props.id}"] [data-timeline-element]`)
177
180
 
178
181
  const handleAnchorLinkClick = (index: number) => {
179
182
  if (isMobile.value) {
@@ -1,11 +1,16 @@
1
1
  <template>
2
2
  <DesignSystemAtomsContainer :colorScheme="colorScheme" :spacing="spacing">
3
3
  <DesignSystemAtomsGridRow>
4
- <div :class="textWrapperClassList">
4
+ <div :class="titleWrapperClassList">
5
5
  <DesignSystemOrganismsContentBlock
6
6
  :pretitle="pretitle"
7
7
  :title="title"
8
8
  :titleWeight="titleWeight"
9
+ :colorScheme="colorScheme"
10
+ />
11
+ </div>
12
+ <div :class="textWrapperClassList">
13
+ <DesignSystemOrganismsContentBlock
9
14
  :text="text"
10
15
  :colorScheme="colorScheme"
11
16
  />
@@ -28,7 +33,7 @@ const props = defineProps<ParagraphIcmsLayoutIframeFragment>()
28
33
 
29
34
  const { options, isEditing } = useAttrs().blokkliData
30
35
 
31
- const textWrapperClassList = computed(() => {
36
+ const titleWrapperClassList = computed(() => {
32
37
  if (options.value.textWidth === 'medium') {
33
38
  return ['col-span-8', 'col-start-3']
34
39
  } else if (options.value.textWidth === 'narrow') {
@@ -37,6 +42,15 @@ const textWrapperClassList = computed(() => {
37
42
  return ['col-span-12']
38
43
  })
39
44
 
45
+ const textWrapperClassList = computed(() => {
46
+ if (options.value.textWidth === 'medium') {
47
+ return ['col-span-8', 'col-start-3']
48
+ } else if (options.value.textWidth === 'narrow') {
49
+ return ['col-span-8', 'col-start-3', 'md:col-span-6', 'md:col-start-4']
50
+ }
51
+ return ['col-span-9']
52
+ })
53
+
40
54
  const colorScheme = computed(() => {
41
55
  return options.value.colorScheme
42
56
  })
@@ -0,0 +1,222 @@
1
+ <script setup lang="ts">
2
+
3
+ import Popover from '@/components/ui/popover/Popover.vue'
4
+ import PopoverContent from '@/components/ui/popover/PopoverContent.vue'
5
+ import PopoverTrigger from '@/components/ui/popover/PopoverTrigger.vue'
6
+
7
+ // Incoming facet shape from GraphQL API.
8
+ export interface GraphQLFacetItem {
9
+ field: string
10
+ label: string
11
+ filter: {
12
+ id: string
13
+ label: string
14
+ }
15
+ count: number
16
+ }
17
+
18
+ // Internal normalized option shape (label == filter by default; could be mapped later)
19
+ interface NormalizedFacetOption { value: string; label: string; count: number }
20
+
21
+ type FacetSelections = Record<string, string[]>
22
+
23
+ const props = defineProps<{
24
+ facets?: GraphQLFacetItem[]
25
+ /** grouped selections keyed by facet field */
26
+ modelValue?: FacetSelections
27
+ placeholder?: string
28
+ label?: string
29
+ /** Total count of results for display */
30
+ totalCount?: number
31
+ /** Currently displayed count for display */
32
+ displayedCount?: number
33
+ /** Loading state */
34
+ loading?: boolean
35
+ }>()
36
+
37
+ const emit = defineEmits<{
38
+ 'update:modelValue': [FacetSelections]
39
+ /** Emitted whenever a selection changes so parent can notify siblings */
40
+ 'facets-change': [FacetSelections]
41
+ }>()
42
+
43
+ // Simple deep clone utility (data is plain: Record<string, string[]>)
44
+ function cloneSelections(val?: FacetSelections | null): FacetSelections {
45
+ try {
46
+ return val ? JSON.parse(JSON.stringify(val)) : {}
47
+ } catch {
48
+ // Fallback shallow copy in worst case.
49
+ return Object.assign({}, val || {}) as FacetSelections
50
+ }
51
+ }
52
+
53
+ // Reactive selections
54
+ const selections = ref<FacetSelections>(cloneSelections(props.modelValue))
55
+
56
+ // Track open state for each popover to handle chevron rotation
57
+ const openPopovers = ref<Record<string, boolean>>({})
58
+
59
+ // Group facets by field.
60
+ const grouped = computed(() => {
61
+ // Map key: { field, label } (label is fieldLabel if present, else field)
62
+ const map = new Map<{ field: string, label: string }, NormalizedFacetOption[]>()
63
+ const source = props.facets || []
64
+ for (const item of source) {
65
+ const field = item.field
66
+ const key = Array.from(map.keys()).find(k => k.field === field) || { field, label: item.label }
67
+ if (!map.has(key)) map.set(key, [])
68
+ map.get(key)!.push({
69
+ "value": item.filter.id,
70
+ "label": item.filter.label,
71
+ "count": item.count ,
72
+ })
73
+ }
74
+ // Sort each group alphabetically by label for stable UI.
75
+ for (const [, arr] of map) arr.sort((a, b) => a.label.localeCompare(b.label))
76
+ return map
77
+ })
78
+
79
+ // Flatten for utility lookups.
80
+ const optionMap = computed(() => {
81
+ // Map key: filter string -> NormalizedFacetOption
82
+ const map = new Map<string, NormalizedFacetOption>()
83
+ for (const [, arr] of grouped.value) {
84
+ for (const opt of arr) {
85
+ map.set(opt.value, opt)
86
+ }
87
+ }
88
+ return map
89
+ })
90
+
91
+ // Stable array of [field, options[]] to simplify template & avoid calling entries() on undefined.
92
+ // Array of [{ filter, label }, options[]] for template
93
+ const groupEntries = computed(() => Array.from(grouped.value?.entries?.() || []))
94
+
95
+ // Per-field trigger labels
96
+ function fieldTriggerLabel(fieldData: { field: string, label: string }) {
97
+ let field: string = fieldData.field
98
+ let label: string = fieldData.label
99
+ const arr = selections.value[field] || []
100
+ if (!arr.length) return props.placeholder || `Select ${label}`
101
+ if (arr.length === 1) return optionMap.value.get(arr[0])?.label || arr[0]
102
+ return `${arr.length} selected`
103
+ }
104
+
105
+ function toggle(field: string, value: string) {
106
+ if (!selections.value[field]) selections.value[field] = []
107
+ const arr = selections.value[field]
108
+ const idx = arr.indexOf(value)
109
+ if (idx === -1) arr.push(value)
110
+ else arr.splice(idx, 1)
111
+ // Remove empty arrays to keep payload small.
112
+ if (!arr.length) delete selections.value[field]
113
+ emitAll()
114
+ }
115
+
116
+ function clearField(field: string) {
117
+ if (selections.value[field]) {
118
+ delete selections.value[field]
119
+ emitAll()
120
+ }
121
+ }
122
+
123
+ function clearAll() {
124
+ if (Object.keys(selections.value || {}).length) {
125
+ selections.value = {}
126
+ emitAll()
127
+ }
128
+ }
129
+
130
+ function emitAll() {
131
+ // Clone to avoid mutation issues in parent watchers.
132
+ const base = selections.value && typeof selections.value === 'object' ? selections.value : {}
133
+ const payload: FacetSelections = JSON.parse(JSON.stringify(base))
134
+ emit('update:modelValue', payload)
135
+ emit('facets-change', payload)
136
+ }
137
+
138
+ // Keep internal selections in sync if modelValue changes externally.
139
+ watch(
140
+ () => props.modelValue,
141
+ (val) => {
142
+ if (val) selections.value = cloneSelections(val)
143
+ },
144
+ { deep: true }
145
+ )
146
+ </script>
147
+
148
+ <template>
149
+ <div class="facets-ui space-y-4" v-if="groupEntries.length">
150
+ <!-- Clear Filters Button -->
151
+ <div class="flex">
152
+ <Button
153
+ variant="ghost"
154
+ size="sm"
155
+ :disabled="!(selections && Object.keys(selections || {}).length)"
156
+ @click="clearAll"
157
+ class="flex items-center gap-2"
158
+ >
159
+ {{ $texts('listing.clear_filters', 'Clear all filters') }}
160
+ </Button>
161
+ </div>
162
+
163
+ <!-- Facet Groups -->
164
+ <div class="flex flex-wrap gap-4">
165
+ <template v-for="([key, opts]) in groupEntries" :key="key.field + '-' + key.label">
166
+ <div class="w-72">
167
+ <Label class="mb-1 block text-xs font-medium uppercase tracking-wide text-muted-foreground">{{ key.label }}</Label>
168
+ <Popover @update:open="(open: boolean) => openPopovers[key.field] = open">
169
+ <PopoverTrigger as-child>
170
+ <Button variant="outline" class="w-full justify-between" :aria-label="`Facet ${key.label}`">
171
+ <span>{{ fieldTriggerLabel(key) }}</span>
172
+ <SpriteSymbol
173
+ name="chevron-down"
174
+ aria-hidden="true"
175
+ :class="[
176
+ 'size-7 cursor-pointer text-black transition-all duration-300 group-hover/main:text-primary-500',
177
+ openPopovers[key.field] ? 'rotate-180' : 'rotate-0'
178
+ ]"
179
+ />
180
+ </Button>
181
+ </PopoverTrigger>
182
+ <PopoverContent class="p-0 w-72 bg-white" align="start">
183
+ <div class="max-h-72 overflow-y-auto py-1">
184
+ <template v-for="opt in opts" :key="opt.value">
185
+ <button
186
+ type="button"
187
+ class="flex w-full items-center gap-3 px-3 py-2 text-left text-sm hover:bg-muted/60 focus:bg-muted/70 focus:outline-none"
188
+ @click="toggle(key.field, opt.value)"
189
+ >
190
+ <Checkbox
191
+ :checked="selections[key.field]?.includes(opt.value)"
192
+ @update:checked="toggle(key.field, opt.value)"
193
+ class="pointer-events-none"
194
+ />
195
+ <span class="flex-1 truncate">{{ opt.label }}</span>
196
+ <span class="tabular-nums text-muted-foreground text-xs">{{ opt.count }}</span>
197
+ </button>
198
+ </template>
199
+ </div>
200
+ <div class="flex items-center justify-between border-t px-2 py-1.5 gap-2">
201
+ <Button size="sm" variant="ghost" :disabled="!(selections[key.field] && selections[key.field].length)" @click="clearField(key.field)">Clear</Button>
202
+ </div>
203
+ </PopoverContent>
204
+ </Popover>
205
+ </div>
206
+ </template>
207
+ </div>
208
+
209
+ <!-- Results Counter -->
210
+ <div v-if="totalCount !== undefined" class="mb-4">
211
+ <div class="text-lg font-medium text-gray-900">
212
+ <span v-if="loading">Loading...</span>
213
+ <span v-else>
214
+ {{ totalCount }} {{ totalCount === 1 ? $texts('listing.result', 'result') : $texts('listing.results', 'results') }}
215
+ <span v-if="displayedCount && displayedCount < totalCount" class="text-sm font-normal text-gray-600">
216
+ ({{ $texts('listing.showing', 'result') }} {{ displayedCount }})
217
+ </span>
218
+ </span>
219
+ </div>
220
+ </div>
221
+ </div>
222
+ </template>