@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
@@ -1,92 +1,79 @@
1
1
  <template>
2
- <div v-if="languageLinks.length">
3
- <ClientOnly>
4
- <div
5
- class="group relative z-40 mb-6 flex h-full items-center lg:mb-0 lg:p-0 lg:pl-8"
6
- @mouseenter="!isMobile && (langSwitchDropdownOpen = true)"
7
- @mouseleave="!isMobile && (langSwitchDropdownOpen = false)"
8
- @click="isMobile && (langSwitchDropdownOpen = !langSwitchDropdownOpen)"
2
+ <ClientOnly>
3
+ <div
4
+ class="group relative z-40 mb-6 flex h-full items-center lg:mb-0 lg:p-0 lg:pl-8"
5
+ @mouseenter="!isMobile && (langSwitchDropdownOpen = true)"
6
+ @mouseleave="!isMobile && (langSwitchDropdownOpen = false)"
7
+ @click="isMobile && (langSwitchDropdownOpen = !langSwitchDropdownOpen)"
8
+ >
9
+ <button
10
+ class="flex items-center gap-1"
11
+ aria-haspopup="true"
12
+ :aria-expanded="langSwitchDropdownOpen"
13
+ aria-controls="language-dropdown"
9
14
  >
10
- <button
11
- class="flex items-center gap-1"
12
- aria-haspopup="true"
13
- :aria-expanded="langSwitchDropdownOpen"
14
- aria-controls="language-dropdown"
15
+ <span
16
+ class="font-medium group-hover:text-primary-500 motion-safe:transition-colors motion-safe:duration-250 motion-safe:ease-in-out"
17
+ :class="{
18
+ 'text-primary-500': langSwitchDropdownOpen,
19
+ }"
15
20
  >
16
- <span
17
- class="font-medium group-hover:text-primary-500 motion-safe:transition-colors motion-safe:duration-250 motion-safe:ease-in-out"
18
- :class="{
19
- 'text-primary-500': langSwitchDropdownOpen,
20
- }"
21
- >
22
- {{ currentLanguage.toUpperCase() }}
23
- </span>
24
- <SpriteSymbol
25
- name="chevron-down"
26
- class="size-4 motion-safe:transition-all motion-safe:duration-250 motion-safe:ease-in-out"
27
- :class="{
28
- 'rotate-180': langSwitchDropdownOpen,
29
- }"
30
- />
31
- </button>
32
- <div
33
- v-show="langSwitchDropdownOpen"
34
- class="absolute left-0 top-full pt-2 motion-safe:transition-all motion-safe:duration-250 motion-safe:ease-in-out lg:left-auto lg:right-0 lg:pt-4"
21
+ {{ currentLanguage.toUpperCase() }}
22
+ </span>
23
+ <SpriteSymbol
24
+ name="chevron-down"
25
+ class="size-4 motion-safe:transition-all motion-safe:duration-250 motion-safe:ease-in-out"
26
+ :class="{
27
+ 'rotate-180': langSwitchDropdownOpen,
28
+ }"
29
+ />
30
+ </button>
31
+ <div
32
+ v-show="langSwitchDropdownOpen"
33
+ class="absolute left-0 top-full pt-2 motion-safe:transition-all motion-safe:duration-250 motion-safe:ease-in-out lg:left-auto lg:right-0 lg:pt-4"
34
+ >
35
+ <ul
36
+ role="menu"
37
+ id="language-dropdown"
38
+ class="border border-gray-100 bg-white"
35
39
  >
36
- <ul
37
- role="menu"
38
- id="language-dropdown"
39
- class="border border-gray-100 bg-white"
40
- >
41
- <li v-for="(lang, i) in languageLinks" :key="`lang_${i}`">
42
- <NuxtLink
43
- role="menuitem"
44
- :to="lang.to"
45
- :title="getLanguageName(lang.code)"
46
- class="flex items-center px-4 py-3 text-sm font-medium hover:text-primary-500 motion-safe:transition-all motion-safe:duration-250 motion-safe:ease-in-out"
47
- @click="onLangDropdownLinkClick"
48
- >
49
- {{ getLanguageName(lang.code) }}
50
- </NuxtLink>
51
- </li>
52
- </ul>
53
- </div>
54
- <transition name="fade"> </transition>
40
+ <li v-for="(lang, i) in links" :key="`lang_${i}`">
41
+ <NuxtLink
42
+ v-if="lang.enabled"
43
+ role="menuitem"
44
+ :to="lang.to"
45
+ :title="lang.label"
46
+ class="flex items-center px-4 py-3 text-sm font-medium whitespace-nowrap hover:text-primary-500 motion-safe:transition-all motion-safe:duration-250 motion-safe:ease-in-out"
47
+ @click="onLangDropdownLinkClick"
48
+ >
49
+ {{ lang.label }}
50
+ </NuxtLink>
51
+ <span
52
+ v-else
53
+ class="flex items-center px-4 py-3 text-sm font-medium whitespace-nowrap text-gray-100"
54
+ >
55
+ {{ lang.label }}
56
+ </span>
57
+ </li>
58
+ </ul>
55
59
  </div>
56
- </ClientOnly>
57
- </div>
60
+ <transition name="fade"> </transition>
61
+ </div>
62
+ </ClientOnly>
63
+
58
64
  </template>
59
65
 
60
66
  <script lang="ts" setup>
61
- type LanguageLink = {
62
- code: string
63
- active: boolean
64
- to: string
65
- }
67
+
68
+ const links = useLanguageLinks()
66
69
 
67
70
  const emit = defineEmits(['lang-dropdown:change'])
68
71
 
69
- const languages: ComputedRef<LanguageLink[]> = useLanguageLinks()
70
72
  const currentLanguage = useCurrentLanguage()
71
73
  const { isMobile } = useIsMobile()
72
74
 
73
- const languageLinks = computed(() => {
74
- return languages.value.filter((l) => l.code !== currentLanguage.value)
75
- })
76
-
77
75
  const langSwitchDropdownOpen = ref(false)
78
76
 
79
- const getLanguageName = (code: string): string => {
80
- const languageNames: Record<string, string> = {
81
- en: 'English',
82
- de: 'Deutsch',
83
- fr: 'Français',
84
- it: 'Italiano',
85
- }
86
-
87
- return languageNames[code] || code
88
- }
89
-
90
77
  const onLangDropdownLinkClick = () => {
91
78
  emit('lang-dropdown:change')
92
79
  langSwitchDropdownOpen.value = false
@@ -0,0 +1,37 @@
1
+ <template>
2
+ <ClientOnly>
3
+ <div class="flex items-center">
4
+ <ul class="flex uppercase gap-4">
5
+ <li v-for="(lang, i) in links" :key="i">
6
+ <NuxtLink
7
+ v-if="lang.enabled"
8
+ :to="lang.to"
9
+ class="hover:text-primary-500 block"
10
+ :class="{
11
+ 'font-bold': lang.active,
12
+ }"
13
+ @click="onLangDropdownLinkClick"
14
+ >
15
+ {{ lang.code }}
16
+ </NuxtLink>
17
+ <div v-else class="cursor-not-allowed text-gray-300">
18
+ {{ lang.code }}
19
+ </div>
20
+ </li>
21
+ </ul>
22
+ </div>
23
+ </ClientOnly>
24
+ </template>
25
+
26
+ <script lang="ts" setup>
27
+ const emit = defineEmits(['lang-dropdown:change'])
28
+ const links = useLanguageLinks()
29
+
30
+ const langSwitchDropdownOpen = ref(false)
31
+
32
+ const onLangDropdownLinkClick = () => {
33
+ emit('lang-dropdown:change')
34
+ langSwitchDropdownOpen.value = false
35
+ }
36
+ </script>
37
+
@@ -18,6 +18,7 @@
18
18
  ? 'text-primary-500'
19
19
  : 'text-black'
20
20
  "
21
+ @click="onLangDropdownLinkClick"
21
22
  >
22
23
  {{ link.link.label }}
23
24
  </VuepalLink>
@@ -36,6 +37,7 @@
36
37
  :target-blank="link?.props?.targetBlank"
37
38
  :style="link?.props?.buttonStyle"
38
39
  buttonClass="no-underline"
40
+ @click="onLangDropdownLinkClick"
39
41
  />
40
42
  </div>
41
43
  </template>
@@ -49,9 +51,16 @@ const props = defineProps<{
49
51
  links: Array<ParagraphIcmsButtonElementFragment>
50
52
  }>()
51
53
 
52
- const emit = defineEmits(['meta:empty'])
54
+ const emit = defineEmits(['meta:empty', 'lang-dropdown:change'])
53
55
 
54
56
  if (links.value?.length === 0) {
55
57
  emit('meta:empty')
56
58
  }
59
+
60
+ const langSwitchDropdownOpen = ref(false)
61
+
62
+ const onLangDropdownLinkClick = () => {
63
+ emit('lang-dropdown:change')
64
+ langSwitchDropdownOpen.value = false
65
+ }
57
66
  </script>
@@ -15,81 +15,94 @@
15
15
  <!-- Hidden on mobile -->
16
16
  <div class="hidden border-b-1 border-b-gray-100 lg:block">
17
17
  <!-- Meta menu container -->
18
- <div
19
- ref="metaRef"
20
- class="container flex max-w-full items-center justify-end py-4"
18
+ <DesignSystemAtomsGridRow
19
+ :class="'w-full max-w-full 2xl:max-w-screen-2xl'"
21
20
  >
22
- <!-- Meta menu -->
23
- <SectionHeaderMetaMenu :links="metaLinks" />
24
-
25
- <!-- Desktop Language dropdown -->
26
- <SectionHeaderLanguageDropdown
27
- class="hidden h-full lg:block"
28
- @lang-dropdown:change="closeMenu"
29
- />
30
- </div>
21
+ <div class="col-span-12">
22
+ <div
23
+ ref="metaRef"
24
+ class="flex max-w-full items-center justify-end py-4"
25
+ >
26
+ <!-- Meta menu -->
27
+ <SectionHeaderMetaMenu :links="metaLinks" />
28
+
29
+ <!-- Desktop Language dropdown -->
30
+ <SectionHeaderLanguageDropdown
31
+ class="hidden h-full lg:block"
32
+ @lang-dropdown:change="closeMenu"
33
+ />
34
+ </div>
35
+ </div>
36
+ </DesignSystemAtomsGridRow>
31
37
  </div>
32
38
 
33
39
  <!-- Main menu full-width container -->
34
40
  <div class="h-[70px] shrink-0 border-b-1 border-b-gray-100 lg:h-[110px]">
35
41
  <!-- Main menu container -->
36
42
  <div
37
- class="container flex h-full max-w-full items-center justify-between lg:justify-start"
43
+ class="flex h-full max-w-full items-center justify-between lg:justify-start"
38
44
  >
39
- <!-- Logo -->
40
- <NuxtLink
41
- :to="`/${currentLanguage}`"
42
- :title="globalConfig.companyName"
43
- prefetch
44
- >
45
- <Media
46
- v-if="companyLogo"
47
- :media="companyLogo"
48
- mediaClass="h-10 lg:h-16"
49
- />
50
- </NuxtLink>
51
-
52
- <!-- Desktop Main navigation menu -->
53
- <!-- Hidden on mobile -->
54
- <SectionHeaderGlobalMenu
55
- class="ml-auto hidden lg:block"
56
- @menu:link-click="closeMenu"
57
- />
58
-
59
- <!-- Desktop Contact button -->
60
- <!-- Hidden on mobile -->
61
- <div
62
- v-if="contactButtons?.length"
63
- class="ml-8 hidden items-center justify-center gap-8 lg:flex"
64
- >
65
- <DesignSystemAtomsButton
66
- v-for="contactButton in contactButtons"
67
- :key="contactButton.uuid"
68
- :label="contactButton?.props?.label"
69
- :subline="contactButton?.props?.subline"
70
- :title="contactButton?.props?.title"
71
- :link="contactButton?.props?.link?.uri?.path"
72
- :params="contactButton?.props?.params"
73
- :targetBlank="contactButton?.props?.targetBlank"
74
- :style="contactButton?.props?.buttonStyle"
75
- />
76
- </div>
77
-
78
- <!-- Hamburger menu -->
79
- <!-- Hidden on desktop -->
80
- <button
81
- class="flex items-center gap-3 leading-none lg:hidden"
82
- aria-label="Hamburger Menu"
83
- @click="toggleNav"
45
+ <DesignSystemAtomsGridRow
46
+ :class="'w-full max-w-full 2xl:max-w-screen-2xl'"
84
47
  >
85
- <span
86
- class="h-auto leading-none opacity-100"
87
- :class="{
88
- 'opacity-0 transition-all duration-250 ease-in-out': isMenuOpen,
89
- }"
90
- />
91
- <SectionHeaderMenuIcon :is-in-closable-state="isMenuOpen" />
92
- </button>
48
+ <div class="col-span-12 flex flex-nowrap justify-between">
49
+ <!-- Logo -->
50
+ <NuxtLink
51
+ :to="`/${currentLanguage}`"
52
+ :title="globalConfig.companyName"
53
+ prefetch
54
+ >
55
+ <Media
56
+ v-if="companyLogo"
57
+ :media="companyLogo"
58
+ mediaClass="h-10 lg:h-16"
59
+ />
60
+ </NuxtLink>
61
+
62
+ <!-- Desktop Main navigation menu -->
63
+ <!-- Hidden on mobile -->
64
+ <SectionHeaderGlobalMenu
65
+ class="ml-auto hidden lg:block"
66
+ @menu:link-click="closeMenu"
67
+ />
68
+
69
+ <!-- Desktop Contact button -->
70
+ <!-- Hidden on mobile -->
71
+ <div
72
+ v-if="contactButtons?.length"
73
+ class="ml-8 hidden items-center justify-center gap-8 lg:flex"
74
+ >
75
+ <DesignSystemAtomsButton
76
+ v-for="contactButton in contactButtons"
77
+ :key="contactButton.uuid"
78
+ :label="contactButton?.props?.label"
79
+ :subline="contactButton?.props?.subline"
80
+ :title="contactButton?.props?.title"
81
+ :link="contactButton?.props?.link?.uri?.path"
82
+ :params="contactButton?.props?.params"
83
+ :targetBlank="contactButton?.props?.targetBlank"
84
+ :style="contactButton?.props?.buttonStyle"
85
+ />
86
+ </div>
87
+
88
+ <!-- Hamburger menu -->
89
+ <!-- Hidden on desktop -->
90
+ <button
91
+ class="flex items-center gap-3 leading-none lg:hidden"
92
+ aria-label="Hamburger Menu"
93
+ @click="toggleNav"
94
+ >
95
+ <span
96
+ class="h-auto leading-none opacity-100"
97
+ :class="{
98
+ 'opacity-0 transition-all duration-250 ease-in-out':
99
+ isMenuOpen,
100
+ }"
101
+ />
102
+ <SectionHeaderMenuIcon :is-in-closable-state="isMenuOpen" />
103
+ </button>
104
+ </div>
105
+ </DesignSystemAtomsGridRow>
93
106
  </div>
94
107
  </div>
95
108
 
@@ -101,7 +114,7 @@
101
114
  <SectionHeaderGlobalMenu @menu:link-click="closeMenu" />
102
115
 
103
116
  <!-- Mobile Language dropdown -->
104
- <SectionHeaderLanguageDropdown @lang-dropdown:change="closeMenu" />
117
+ <SectionHeaderLanguageSwitcher @lang-dropdown:change="closeMenu" />
105
118
 
106
119
  <!-- Mobile Meta menu -->
107
120
  <SectionHeaderMetaMenu
@@ -1,8 +1,8 @@
1
1
  <script setup lang="ts">
2
+ import type { AccordionRootEmits, AccordionRootProps } from 'radix-vue'
2
3
  import {
3
4
  AccordionRoot,
4
- type AccordionRootEmits,
5
- type AccordionRootProps,
5
+
6
6
  useForwardPropsEmits,
7
7
  } from 'radix-vue'
8
8
 
@@ -1,11 +1,11 @@
1
1
  <script setup lang="ts">
2
+ import type { AccordionContentProps } from 'radix-vue'
3
+ import type { HTMLAttributes } from 'vue'
2
4
  import { cn } from '@/lib/utils'
3
- import { AccordionContent, type AccordionContentProps } from 'radix-vue'
4
- import { computed, type HTMLAttributes } from 'vue'
5
+ import { AccordionContent } from 'radix-vue'
6
+ import { computed } from 'vue'
5
7
 
6
- const props = defineProps<
7
- AccordionContentProps & { class?: HTMLAttributes['class'] }
8
- >()
8
+ const props = defineProps<AccordionContentProps & { class?: HTMLAttributes['class'] }>()
9
9
 
10
10
  const delegatedProps = computed(() => {
11
11
  const { class: _, ...delegated } = props
@@ -1,15 +1,11 @@
1
1
  <script setup lang="ts">
2
+ import type { AccordionItemProps } from 'radix-vue'
3
+ import type { HTMLAttributes } from 'vue'
2
4
  import { cn } from '@/lib/utils'
3
- import {
4
- AccordionItem,
5
- type AccordionItemProps,
6
- useForwardProps,
7
- } from 'radix-vue'
8
- import { computed, type HTMLAttributes } from 'vue'
5
+ import { AccordionItem, useForwardProps } from 'radix-vue'
6
+ import { computed } from 'vue'
9
7
 
10
- const props = defineProps<
11
- AccordionItemProps & { class?: HTMLAttributes['class'] }
12
- >()
8
+ const props = defineProps<AccordionItemProps & { class?: HTMLAttributes['class'] }>()
13
9
 
14
10
  const delegatedProps = computed(() => {
15
11
  const { class: _, ...delegated } = props
@@ -21,7 +17,10 @@ const forwardedProps = useForwardProps(delegatedProps)
21
17
  </script>
22
18
 
23
19
  <template>
24
- <AccordionItem v-bind="forwardedProps" :class="cn('border-b', props.class)">
20
+ <AccordionItem
21
+ v-bind="forwardedProps"
22
+ :class="cn('border-b', props.class)"
23
+ >
25
24
  <slot />
26
25
  </AccordionItem>
27
26
  </template>
@@ -1,16 +1,16 @@
1
1
  <script setup lang="ts">
2
+ import type { AccordionTriggerProps } from 'radix-vue'
3
+ import type { HTMLAttributes } from 'vue'
2
4
  import { cn } from '@/lib/utils'
3
5
  import { ChevronDown } from 'lucide-vue-next'
4
6
  import {
5
7
  AccordionHeader,
6
8
  AccordionTrigger,
7
- type AccordionTriggerProps,
9
+
8
10
  } from 'radix-vue'
9
- import { computed, type HTMLAttributes } from 'vue'
11
+ import { computed } from 'vue'
10
12
 
11
- const props = defineProps<
12
- AccordionTriggerProps & { class?: HTMLAttributes['class'] }
13
- >()
13
+ const props = defineProps<AccordionTriggerProps & { class?: HTMLAttributes['class'] }>()
14
14
 
15
15
  const delegatedProps = computed(() => {
16
16
  const { class: _, ...delegated } = props
@@ -0,0 +1,17 @@
1
+ <script setup lang="ts">
2
+ import type { HTMLAttributes } from 'vue'
3
+ import type { AlertVariants } from '.'
4
+ import { cn } from '@/lib/utils'
5
+ import { alertVariants } from '.'
6
+
7
+ const props = defineProps<{
8
+ class?: HTMLAttributes['class']
9
+ variant?: AlertVariants['variant']
10
+ }>()
11
+ </script>
12
+
13
+ <template>
14
+ <div :class="cn(alertVariants({ variant }), props.class)" role="alert">
15
+ <slot />
16
+ </div>
17
+ </template>
@@ -0,0 +1,14 @@
1
+ <script setup lang="ts">
2
+ import type { HTMLAttributes } from 'vue'
3
+ import { cn } from '@/lib/utils'
4
+
5
+ const props = defineProps<{
6
+ class?: HTMLAttributes['class']
7
+ }>()
8
+ </script>
9
+
10
+ <template>
11
+ <div :class="cn('text-sm [&_p]:leading-relaxed', props.class)">
12
+ <slot />
13
+ </div>
14
+ </template>
@@ -0,0 +1,14 @@
1
+ <script setup lang="ts">
2
+ import type { HTMLAttributes } from 'vue'
3
+ import { cn } from '@/lib/utils'
4
+
5
+ const props = defineProps<{
6
+ class?: HTMLAttributes['class']
7
+ }>()
8
+ </script>
9
+
10
+ <template>
11
+ <h5 :class="cn('mb-1 font-medium leading-none tracking-tight', props.class)">
12
+ <slot />
13
+ </h5>
14
+ </template>
@@ -0,0 +1,24 @@
1
+ import type { VariantProps } from 'class-variance-authority'
2
+ import { cva } from 'class-variance-authority'
3
+
4
+ export { default as Alert } from './Alert.vue'
5
+ export { default as AlertDescription } from './AlertDescription.vue'
6
+ export { default as AlertTitle } from './AlertTitle.vue'
7
+
8
+ export const alertVariants = cva(
9
+ 'relative w-full rounded-lg border p-4 [&>svg~*]:pl-7 [&>svg+div]:translate-y-[-3px] [&>svg]:absolute [&>svg]:left-4 [&>svg]:top-4 [&>svg]:text-foreground',
10
+ {
11
+ variants: {
12
+ variant: {
13
+ default: 'bg-background text-foreground',
14
+ destructive:
15
+ 'border-destructive/50 text-destructive dark:border-destructive [&>svg]:text-destructive',
16
+ },
17
+ },
18
+ defaultVariants: {
19
+ variant: 'default',
20
+ },
21
+ },
22
+ )
23
+
24
+ export type AlertVariants = VariantProps<typeof alertVariants>
@@ -0,0 +1,15 @@
1
+ <script setup lang="ts">
2
+ import type { AlertDialogEmits, AlertDialogProps } from 'radix-vue'
3
+ import { AlertDialogRoot, useForwardPropsEmits } from 'radix-vue'
4
+
5
+ const props = defineProps<AlertDialogProps>()
6
+ const emits = defineEmits<AlertDialogEmits>()
7
+
8
+ const forwarded = useForwardPropsEmits(props, emits)
9
+ </script>
10
+
11
+ <template>
12
+ <AlertDialogRoot v-bind="forwarded">
13
+ <slot />
14
+ </AlertDialogRoot>
15
+ </template>
@@ -0,0 +1,22 @@
1
+ <script setup lang="ts">
2
+ import type { AlertDialogActionProps } from 'radix-vue'
3
+ import type { HTMLAttributes } from 'vue'
4
+ import { buttonVariants } from '@/lib/registry/default/ui/button'
5
+ import { cn } from '@/lib/utils'
6
+ import { AlertDialogAction } from 'radix-vue'
7
+ import { computed } from 'vue'
8
+
9
+ const props = defineProps<AlertDialogActionProps & { class?: HTMLAttributes['class'] }>()
10
+
11
+ const delegatedProps = computed(() => {
12
+ const { class: _, ...delegated } = props
13
+
14
+ return delegated
15
+ })
16
+ </script>
17
+
18
+ <template>
19
+ <AlertDialogAction v-bind="delegatedProps" :class="cn(buttonVariants(), props.class)">
20
+ <slot />
21
+ </AlertDialogAction>
22
+ </template>
@@ -0,0 +1,29 @@
1
+ <script setup lang="ts">
2
+ import type { AlertDialogCancelProps } from 'radix-vue'
3
+ import type { HTMLAttributes } from 'vue'
4
+ import { buttonVariants } from '@/lib/registry/default/ui/button'
5
+ import { cn } from '@/lib/utils'
6
+ import { AlertDialogCancel } from 'radix-vue'
7
+ import { computed } from 'vue'
8
+
9
+ const props = defineProps<AlertDialogCancelProps & { class?: HTMLAttributes['class'] }>()
10
+
11
+ const delegatedProps = computed(() => {
12
+ const { class: _, ...delegated } = props
13
+
14
+ return delegated
15
+ })
16
+ </script>
17
+
18
+ <template>
19
+ <AlertDialogCancel
20
+ v-bind="delegatedProps"
21
+ :class="cn(
22
+ buttonVariants({ variant: 'outline' }),
23
+ 'mt-2 sm:mt-0',
24
+ props.class,
25
+ )"
26
+ >
27
+ <slot />
28
+ </AlertDialogCancel>
29
+ </template>