@iqual/nuxt-icms 1.0.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 (436) hide show
  1. package/app.config.ts +1 -0
  2. package/app.vue +50 -0
  3. package/assets/css/backend.css +82 -0
  4. package/assets/css/ckeditor.css +15 -0
  5. package/assets/css/components/carousel.css +91 -0
  6. package/assets/css/components/ck-content.css +65 -0
  7. package/assets/css/components/container.css +17 -0
  8. package/assets/css/components/dialog.css +9 -0
  9. package/assets/css/components/grid-container.css +296 -0
  10. package/assets/css/components/link.css +21 -0
  11. package/assets/css/fe-fixes.css +105 -0
  12. package/assets/css/tailwind.css +104 -0
  13. package/assets/css/typography.css +67 -0
  14. package/assets/symbols/chevron-down.svg +1 -0
  15. package/assets/symbols/chevron-right.svg +3 -0
  16. package/assets/symbols/close.svg +3 -0
  17. package/assets/symbols/facebook.svg +3 -0
  18. package/assets/symbols/instagram.svg +13 -0
  19. package/assets/symbols/linkedin.svg +4 -0
  20. package/assets/symbols/logo.svg +22 -0
  21. package/assets/symbols/magnifyingglass.svg +4 -0
  22. package/assets/symbols/pinterest.svg +4 -0
  23. package/assets/symbols/play.svg +6 -0
  24. package/assets/symbols/tiktok.svg +4 -0
  25. package/assets/symbols/x.svg +4 -0
  26. package/bundles.ts +50 -0
  27. package/components/Blokkli/Button/Element/icon.svg +4 -0
  28. package/components/Blokkli/Button/Element/index.vue +18 -0
  29. package/components/Blokkli/CallToAction/icon-blokkli-option-large-spacing-bottom.svg +1 -0
  30. package/components/Blokkli/CallToAction/icon-blokkli-option-large-spacing-top.svg +1 -0
  31. package/components/Blokkli/CallToAction/icon-blokkli-option-no-spacing.svg +1 -0
  32. package/components/Blokkli/CallToAction/icon-blokkli-option-small-spacing-bottom.svg +1 -0
  33. package/components/Blokkli/CallToAction/icon-blokkli-option-small-spacing-top.svg +1 -0
  34. package/components/Blokkli/CallToAction/icon.svg +5 -0
  35. package/components/Blokkli/CallToAction/index.vue +15 -0
  36. package/components/Blokkli/Card/Element/icon.svg +6 -0
  37. package/components/Blokkli/Card/Element/index.vue +14 -0
  38. package/components/Blokkli/Card/Layout/icon-blokkli-option-large-spacing-bottom.svg +1 -0
  39. package/components/Blokkli/Card/Layout/icon-blokkli-option-large-spacing-top.svg +1 -0
  40. package/components/Blokkli/Card/Layout/icon-blokkli-option-large-spacing.svg +1 -0
  41. package/components/Blokkli/Card/Layout/icon-blokkli-option-no-spacing.svg +1 -0
  42. package/components/Blokkli/Card/Layout/icon-blokkli-option-small-spacing-bottom.svg +1 -0
  43. package/components/Blokkli/Card/Layout/icon-blokkli-option-small-spacing-top.svg +1 -0
  44. package/components/Blokkli/Card/Layout/icon-blokkli-option-small-spacing.svg +1 -0
  45. package/components/Blokkli/Card/Layout/icon.svg +8 -0
  46. package/components/Blokkli/Card/Layout/index.vue +15 -0
  47. package/components/Blokkli/Contact/icon-blokkli-option-large-spacing-bottom.svg +1 -0
  48. package/components/Blokkli/Contact/icon-blokkli-option-large-spacing-top.svg +1 -0
  49. package/components/Blokkli/Contact/icon-blokkli-option-no-spacing.svg +1 -0
  50. package/components/Blokkli/Contact/icon-blokkli-option-small-spacing-bottom.svg +1 -0
  51. package/components/Blokkli/Contact/icon-blokkli-option-small-spacing-top.svg +1 -0
  52. package/components/Blokkli/Contact/icon.svg +5 -0
  53. package/components/Blokkli/Contact/index.vue +15 -0
  54. package/components/Blokkli/Downloads/icon-blokkli-option-large-spacing-bottom.svg +1 -0
  55. package/components/Blokkli/Downloads/icon-blokkli-option-large-spacing-top.svg +1 -0
  56. package/components/Blokkli/Downloads/icon-blokkli-option-no-spacing.svg +1 -0
  57. package/components/Blokkli/Downloads/icon-blokkli-option-small-spacing-bottom.svg +1 -0
  58. package/components/Blokkli/Downloads/icon-blokkli-option-small-spacing-top.svg +1 -0
  59. package/components/Blokkli/Downloads/icon.svg +5 -0
  60. package/components/Blokkli/Downloads/index.vue +16 -0
  61. package/components/Blokkli/FAQ/Element/icon-blokkli-option-large-spacing.svg +1 -0
  62. package/components/Blokkli/FAQ/Element/icon-blokkli-option-no-spacing.svg +1 -0
  63. package/components/Blokkli/FAQ/Element/icon-blokkli-option-small-spacing.svg +1 -0
  64. package/components/Blokkli/FAQ/Element/icon.svg +3 -0
  65. package/components/Blokkli/FAQ/Element/index.vue +14 -0
  66. package/components/Blokkli/FAQ/Layout/icon-blokkli-option-large-spacing-bottom.svg +1 -0
  67. package/components/Blokkli/FAQ/Layout/icon-blokkli-option-large-spacing-top.svg +1 -0
  68. package/components/Blokkli/FAQ/Layout/icon-blokkli-option-no-spacing.svg +1 -0
  69. package/components/Blokkli/FAQ/Layout/icon-blokkli-option-small-spacing-bottom.svg +1 -0
  70. package/components/Blokkli/FAQ/Layout/icon-blokkli-option-small-spacing-top.svg +1 -0
  71. package/components/Blokkli/FAQ/Layout/icon.svg +5 -0
  72. package/components/Blokkli/FAQ/Layout/index.vue +20 -0
  73. package/components/Blokkli/FlipTeasers/icon-blokkli-option-large-spacing-bottom.svg +1 -0
  74. package/components/Blokkli/FlipTeasers/icon-blokkli-option-large-spacing-top.svg +1 -0
  75. package/components/Blokkli/FlipTeasers/icon-blokkli-option-no-spacing.svg +1 -0
  76. package/components/Blokkli/FlipTeasers/icon-blokkli-option-small-spacing-bottom.svg +1 -0
  77. package/components/Blokkli/FlipTeasers/icon-blokkli-option-small-spacing-top.svg +1 -0
  78. package/components/Blokkli/FlipTeasers/icon.svg +7 -0
  79. package/components/Blokkli/FlipTeasers/index.vue +15 -0
  80. package/components/Blokkli/Gallery/icon-blokkli-option-large-spacing-bottom.svg +1 -0
  81. package/components/Blokkli/Gallery/icon-blokkli-option-large-spacing-top.svg +1 -0
  82. package/components/Blokkli/Gallery/icon-blokkli-option-no-spacing.svg +1 -0
  83. package/components/Blokkli/Gallery/icon-blokkli-option-small-spacing-bottom.svg +1 -0
  84. package/components/Blokkli/Gallery/icon-blokkli-option-small-spacing-top.svg +1 -0
  85. package/components/Blokkli/Gallery/icon.svg +5 -0
  86. package/components/Blokkli/Gallery/index.vue +16 -0
  87. package/components/Blokkli/HeroImage/icon.svg +5 -0
  88. package/components/Blokkli/HeroImage/index.vue +15 -0
  89. package/components/Blokkli/IconText/Element/icon.svg +5 -0
  90. package/components/Blokkli/IconText/Element/index.vue +14 -0
  91. package/components/Blokkli/IconText/Layout/icon-blokkli-option-large-spacing-bottom.svg +1 -0
  92. package/components/Blokkli/IconText/Layout/icon-blokkli-option-large-spacing-top.svg +1 -0
  93. package/components/Blokkli/IconText/Layout/icon-blokkli-option-no-spacing.svg +1 -0
  94. package/components/Blokkli/IconText/Layout/icon-blokkli-option-small-spacing-bottom.svg +1 -0
  95. package/components/Blokkli/IconText/Layout/icon-blokkli-option-small-spacing-top.svg +1 -0
  96. package/components/Blokkli/IconText/Layout/icon.svg +7 -0
  97. package/components/Blokkli/IconText/Layout/index.vue +20 -0
  98. package/components/Blokkli/Introduction/icon-blokkli-option-large-spacing-bottom.svg +1 -0
  99. package/components/Blokkli/Introduction/icon-blokkli-option-large-spacing-top.svg +1 -0
  100. package/components/Blokkli/Introduction/icon-blokkli-option-no-spacing.svg +1 -0
  101. package/components/Blokkli/Introduction/icon-blokkli-option-small-spacing-bottom.svg +1 -0
  102. package/components/Blokkli/Introduction/icon-blokkli-option-small-spacing-top.svg +1 -0
  103. package/components/Blokkli/Introduction/icon.svg +5 -0
  104. package/components/Blokkli/Introduction/index.vue +20 -0
  105. package/components/Blokkli/Logo/Element/icon.svg +6 -0
  106. package/components/Blokkli/Logo/Element/index.vue +14 -0
  107. package/components/Blokkli/Media/icon-blokkli-option-large-spacing-bottom.svg +1 -0
  108. package/components/Blokkli/Media/icon-blokkli-option-large-spacing-top.svg +1 -0
  109. package/components/Blokkli/Media/icon-blokkli-option-no-spacing.svg +1 -0
  110. package/components/Blokkli/Media/icon-blokkli-option-small-spacing-bottom.svg +1 -0
  111. package/components/Blokkli/Media/icon-blokkli-option-small-spacing-top.svg +1 -0
  112. package/components/Blokkli/Media/icon.svg +8 -0
  113. package/components/Blokkli/Media/index.vue +15 -0
  114. package/components/Blokkli/Partnerships/Element/icon.svg +3 -0
  115. package/components/Blokkli/Partnerships/Element/index.vue +13 -0
  116. package/components/Blokkli/Partnerships/Layout/icon-blokkli-option-large-spacing-bottom.svg +1 -0
  117. package/components/Blokkli/Partnerships/Layout/icon-blokkli-option-large-spacing-top.svg +1 -0
  118. package/components/Blokkli/Partnerships/Layout/icon-blokkli-option-no-spacing.svg +1 -0
  119. package/components/Blokkli/Partnerships/Layout/icon-blokkli-option-small-spacing-bottom.svg +1 -0
  120. package/components/Blokkli/Partnerships/Layout/icon-blokkli-option-small-spacing-top.svg +1 -0
  121. package/components/Blokkli/Partnerships/Layout/icon.svg +5 -0
  122. package/components/Blokkli/Partnerships/Layout/index.vue +15 -0
  123. package/components/Blokkli/SingleTestimonial/icon-blokkli-option-large-spacing-bottom.svg +1 -0
  124. package/components/Blokkli/SingleTestimonial/icon-blokkli-option-large-spacing-top.svg +1 -0
  125. package/components/Blokkli/SingleTestimonial/icon-blokkli-option-no-spacing.svg +1 -0
  126. package/components/Blokkli/SingleTestimonial/icon-blokkli-option-small-spacing-bottom.svg +1 -0
  127. package/components/Blokkli/SingleTestimonial/icon-blokkli-option-small-spacing-top.svg +1 -0
  128. package/components/Blokkli/SingleTestimonial/icon.svg +5 -0
  129. package/components/Blokkli/SingleTestimonial/index.vue +20 -0
  130. package/components/Blokkli/Table/icon-blokkli-option-large-spacing-bottom.svg +1 -0
  131. package/components/Blokkli/Table/icon-blokkli-option-large-spacing-top.svg +1 -0
  132. package/components/Blokkli/Table/icon-blokkli-option-no-spacing.svg +1 -0
  133. package/components/Blokkli/Table/icon-blokkli-option-small-spacing-bottom.svg +1 -0
  134. package/components/Blokkli/Table/icon-blokkli-option-small-spacing-top.svg +1 -0
  135. package/components/Blokkli/Table/icon.svg +5 -0
  136. package/components/Blokkli/Table/index.vue +15 -0
  137. package/components/Blokkli/Tabs/Element/icon.svg +3 -0
  138. package/components/Blokkli/Tabs/Element/index.vue +14 -0
  139. package/components/Blokkli/Tabs/Layout/icon-blokkli-option-large-spacing-bottom.svg +1 -0
  140. package/components/Blokkli/Tabs/Layout/icon-blokkli-option-large-spacing-top.svg +1 -0
  141. package/components/Blokkli/Tabs/Layout/icon-blokkli-option-no-spacing.svg +1 -0
  142. package/components/Blokkli/Tabs/Layout/icon-blokkli-option-small-spacing-bottom.svg +1 -0
  143. package/components/Blokkli/Tabs/Layout/icon-blokkli-option-small-spacing-top.svg +1 -0
  144. package/components/Blokkli/Tabs/Layout/icon.svg +5 -0
  145. package/components/Blokkli/Tabs/Layout/index.vue +20 -0
  146. package/components/Blokkli/Team/Element/icon.svg +3 -0
  147. package/components/Blokkli/Team/Element/index.vue +14 -0
  148. package/components/Blokkli/Team/Layout/icon-blokkli-option-large-spacing-bottom.svg +1 -0
  149. package/components/Blokkli/Team/Layout/icon-blokkli-option-large-spacing-top.svg +1 -0
  150. package/components/Blokkli/Team/Layout/icon-blokkli-option-no-spacing.svg +1 -0
  151. package/components/Blokkli/Team/Layout/icon-blokkli-option-small-spacing-bottom.svg +1 -0
  152. package/components/Blokkli/Team/Layout/icon-blokkli-option-small-spacing-top.svg +1 -0
  153. package/components/Blokkli/Team/Layout/icon.svg +5 -0
  154. package/components/Blokkli/Team/Layout/index.vue +15 -0
  155. package/components/Blokkli/Teasers/icon-blokkli-option-large-spacing-bottom.svg +1 -0
  156. package/components/Blokkli/Teasers/icon-blokkli-option-large-spacing-top.svg +1 -0
  157. package/components/Blokkli/Teasers/icon-blokkli-option-no-spacing.svg +1 -0
  158. package/components/Blokkli/Teasers/icon-blokkli-option-small-spacing-bottom.svg +1 -0
  159. package/components/Blokkli/Teasers/icon-blokkli-option-small-spacing-top.svg +1 -0
  160. package/components/Blokkli/Teasers/icon.svg +6 -0
  161. package/components/Blokkli/Teasers/index.vue +15 -0
  162. package/components/Blokkli/Testimonial/Element/icon.svg +3 -0
  163. package/components/Blokkli/Testimonial/Element/index.vue +14 -0
  164. package/components/Blokkli/Testimonial/Layout/icon-blokkli-option-large-spacing-bottom.svg +1 -0
  165. package/components/Blokkli/Testimonial/Layout/icon-blokkli-option-large-spacing-top.svg +1 -0
  166. package/components/Blokkli/Testimonial/Layout/icon-blokkli-option-no-spacing.svg +1 -0
  167. package/components/Blokkli/Testimonial/Layout/icon-blokkli-option-small-spacing-bottom.svg +1 -0
  168. package/components/Blokkli/Testimonial/Layout/icon-blokkli-option-small-spacing-top.svg +1 -0
  169. package/components/Blokkli/Testimonial/Layout/icon.svg +5 -0
  170. package/components/Blokkli/Testimonial/Layout/index.vue +15 -0
  171. package/components/Blokkli/Text/icon-blokkli-option-large-spacing-bottom.svg +1 -0
  172. package/components/Blokkli/Text/icon-blokkli-option-large-spacing-top.svg +1 -0
  173. package/components/Blokkli/Text/icon-blokkli-option-no-spacing.svg +1 -0
  174. package/components/Blokkli/Text/icon-blokkli-option-small-spacing-bottom.svg +1 -0
  175. package/components/Blokkli/Text/icon-blokkli-option-small-spacing-top.svg +1 -0
  176. package/components/Blokkli/Text/icon.svg +7 -0
  177. package/components/Blokkli/Text/index.vue +21 -0
  178. package/components/Blokkli/TextMedia/icon-blokkli-option-large-spacing-bottom.svg +1 -0
  179. package/components/Blokkli/TextMedia/icon-blokkli-option-large-spacing-top.svg +1 -0
  180. package/components/Blokkli/TextMedia/icon-blokkli-option-no-spacing.svg +1 -0
  181. package/components/Blokkli/TextMedia/icon-blokkli-option-small-spacing-bottom.svg +1 -0
  182. package/components/Blokkli/TextMedia/icon-blokkli-option-small-spacing-top.svg +1 -0
  183. package/components/Blokkli/TextMedia/icon.svg +5 -0
  184. package/components/Blokkli/TextMedia/index.vue +22 -0
  185. package/components/Blokkli/TwoColumnText/Element/icon.svg +8 -0
  186. package/components/Blokkli/TwoColumnText/Element/index.vue +15 -0
  187. package/components/Blokkli/TwoColumnText/Layout/icon-blokkli-option-large-spacing-bottom.svg +1 -0
  188. package/components/Blokkli/TwoColumnText/Layout/icon-blokkli-option-large-spacing-top.svg +1 -0
  189. package/components/Blokkli/TwoColumnText/Layout/icon-blokkli-option-no-spacing.svg +1 -0
  190. package/components/Blokkli/TwoColumnText/Layout/icon-blokkli-option-small-spacing-bottom.svg +1 -0
  191. package/components/Blokkli/TwoColumnText/Layout/icon-blokkli-option-small-spacing-top.svg +1 -0
  192. package/components/Blokkli/TwoColumnText/Layout/icon.svg +10 -0
  193. package/components/Blokkli/TwoColumnText/Layout/index.vue +18 -0
  194. package/components/Blokkli/iFrame/Element/icon.svg +5 -0
  195. package/components/Blokkli/iFrame/Element/index.vue +14 -0
  196. package/components/Blokkli/iFrame/Layout/icon-blokkli-option-large-spacing-bottom.svg +1 -0
  197. package/components/Blokkli/iFrame/Layout/icon-blokkli-option-large-spacing-top.svg +1 -0
  198. package/components/Blokkli/iFrame/Layout/icon-blokkli-option-no-spacing.svg +1 -0
  199. package/components/Blokkli/iFrame/Layout/icon-blokkli-option-small-spacing-bottom.svg +1 -0
  200. package/components/Blokkli/iFrame/Layout/icon-blokkli-option-small-spacing-top.svg +1 -0
  201. package/components/Blokkli/iFrame/Layout/icon.svg +7 -0
  202. package/components/Blokkli/iFrame/Layout/index.vue +18 -0
  203. package/components/DesignSystem/Atoms/Button.vue +144 -0
  204. package/components/DesignSystem/Atoms/Container.vue +54 -0
  205. package/components/DesignSystem/Atoms/GridRow.vue +13 -0
  206. package/components/DesignSystem/Molecules/ButtonGroup.vue +45 -0
  207. package/components/DesignSystem/Molecules/Card.vue +70 -0
  208. package/components/DesignSystem/Molecules/IconText.vue +62 -0
  209. package/components/DesignSystem/Molecules/MediaSlider.vue +72 -0
  210. package/components/DesignSystem/Molecules/Partnership.vue +40 -0
  211. package/components/DesignSystem/Molecules/Table.vue +170 -0
  212. package/components/DesignSystem/Molecules/TitleComposition.vue +66 -0
  213. package/components/DesignSystem/Molecules/iFrame.vue +22 -0
  214. package/components/DesignSystem/Organisms/ContentBlock.vue +82 -0
  215. package/components/DesignSystem/Organisms/FlipTeaser.vue +160 -0
  216. package/components/DesignSystem/Organisms/LogoElement.vue +37 -0
  217. package/components/DesignSystem/Organisms/TeamElement.vue +89 -0
  218. package/components/DesignSystem/Organisms/TeaserCard.vue +74 -0
  219. package/components/DesignSystem/Organisms/Testimonial.vue +53 -0
  220. package/components/DesignSystem/Organisms/TwoColumnTextElement.vue +42 -0
  221. package/components/Drupal/Breadcrumb/fragment.breadcrumb.graphql +6 -0
  222. package/components/Drupal/Breadcrumb/index.vue +88 -0
  223. package/components/Drupal/Messages/index.vue +29 -0
  224. package/components/Drupal/Webform/fragment.graphql +86 -0
  225. package/components/Drupal/Webform/index.vue +174 -0
  226. package/components/Drupal/Webform/mutation.graphql +8 -0
  227. package/components/Drupal/Webform/query.graphql +21 -0
  228. package/components/Form/CheckboxInput.vue +35 -0
  229. package/components/Form/CheckboxInputs.vue +44 -0
  230. package/components/Form/FileUploadInput.vue +34 -0
  231. package/components/Form/RadioButtonsInput.vue +44 -0
  232. package/components/Form/SelectInput.vue +54 -0
  233. package/components/Form/SubmitButton.vue +12 -0
  234. package/components/Form/TextAreaInput.vue +34 -0
  235. package/components/Form/TextEmailInput.vue +35 -0
  236. package/components/Form/TextInput.vue +35 -0
  237. package/components/Form/TextPhoneInput.vue +35 -0
  238. package/components/Form/WebformMarkup.vue +9 -0
  239. package/components/Form/composables/useFormElement.ts +84 -0
  240. package/components/Form/utils/types.ts +64 -0
  241. package/components/Media/Icon/fragment.mediaIcon.graphql +9 -0
  242. package/components/Media/Icon/index.vue +16 -0
  243. package/components/Media/Image/fragment.graphql +11 -0
  244. package/components/Media/Image/index.vue +215 -0
  245. package/components/Media/RemoteVideo/fragment.graphql +27 -0
  246. package/components/Media/RemoteVideo/index.vue +58 -0
  247. package/components/Media/Video/fragment.graphql +17 -0
  248. package/components/Media/Video/index.vue +44 -0
  249. package/components/Media/fragment.graphql +8 -0
  250. package/components/Media/index.vue +33 -0
  251. package/components/Node/Icms/Page/fragment.graphql +17 -0
  252. package/components/Node/Icms/Page/index.vue +14 -0
  253. package/components/Paragraph/Button/Element/fragment.graphql +14 -0
  254. package/components/Paragraph/Button/Element/index.vue +23 -0
  255. package/components/Paragraph/CallToAction/fragment.graphql +12 -0
  256. package/components/Paragraph/CallToAction/index.vue +60 -0
  257. package/components/Paragraph/Card/Element/fragment.graphql +10 -0
  258. package/components/Paragraph/Card/Element/index.vue +19 -0
  259. package/components/Paragraph/Card/Layout/fragment.graphql +14 -0
  260. package/components/Paragraph/Card/Layout/index.vue +58 -0
  261. package/components/Paragraph/Contact/fragment.graphql +20 -0
  262. package/components/Paragraph/Contact/index.vue +60 -0
  263. package/components/Paragraph/Downloads/fragment.graphql +15 -0
  264. package/components/Paragraph/Downloads/index.vue +104 -0
  265. package/components/Paragraph/FAQ/Element/fragment.graphql +10 -0
  266. package/components/Paragraph/FAQ/Element/index.vue +66 -0
  267. package/components/Paragraph/FAQ/Layout/fragment.graphql +23 -0
  268. package/components/Paragraph/FAQ/Layout/index.vue +84 -0
  269. package/components/Paragraph/FlipTeasers/fragment.graphql +25 -0
  270. package/components/Paragraph/FlipTeasers/index.vue +59 -0
  271. package/components/Paragraph/Gallery/fragment.graphql +11 -0
  272. package/components/Paragraph/Gallery/index.vue +223 -0
  273. package/components/Paragraph/HeroImage/fragment.graphql +17 -0
  274. package/components/Paragraph/HeroImage/index.vue +147 -0
  275. package/components/Paragraph/IconText/Element/fragment.graphql +8 -0
  276. package/components/Paragraph/IconText/Element/index.vue +18 -0
  277. package/components/Paragraph/IconText/Layout/fragment.graphql +23 -0
  278. package/components/Paragraph/IconText/Layout/index.vue +76 -0
  279. package/components/Paragraph/Introduction/fragment.graphql +20 -0
  280. package/components/Paragraph/Introduction/index.vue +94 -0
  281. package/components/Paragraph/Logo/Element/fragment.graphql +11 -0
  282. package/components/Paragraph/Logo/Element/index.vue +17 -0
  283. package/components/Paragraph/Media/fragment.graphql +5 -0
  284. package/components/Paragraph/Media/index.vue +83 -0
  285. package/components/Paragraph/Partnerships/Element/fragment.graphql +11 -0
  286. package/components/Paragraph/Partnerships/Element/index.vue +14 -0
  287. package/components/Paragraph/Partnerships/Layout/fragment.graphql +17 -0
  288. package/components/Paragraph/Partnerships/Layout/index.vue +119 -0
  289. package/components/Paragraph/SingleTestimonial/fragment.graphql +24 -0
  290. package/components/Paragraph/SingleTestimonial/index.vue +79 -0
  291. package/components/Paragraph/Table/fragment.graphql +11 -0
  292. package/components/Paragraph/Table/index.vue +43 -0
  293. package/components/Paragraph/Tabs/Element/fragment.graphql +17 -0
  294. package/components/Paragraph/Tabs/Element/index.vue +78 -0
  295. package/components/Paragraph/Tabs/Layout/fragment.graphql +11 -0
  296. package/components/Paragraph/Tabs/Layout/index.vue +191 -0
  297. package/components/Paragraph/Team/Element/fragment.graphql +17 -0
  298. package/components/Paragraph/Team/Element/index.vue +23 -0
  299. package/components/Paragraph/Team/Layout/fragment.graphql +14 -0
  300. package/components/Paragraph/Team/Layout/index.vue +51 -0
  301. package/components/Paragraph/Teasers/fragment.graphql +25 -0
  302. package/components/Paragraph/Teasers/index.vue +58 -0
  303. package/components/Paragraph/Testimonial/Element/fragment.graphql +13 -0
  304. package/components/Paragraph/Testimonial/Element/index.vue +29 -0
  305. package/components/Paragraph/Testimonial/Layout/fragment.graphql +13 -0
  306. package/components/Paragraph/Testimonial/Layout/index.vue +109 -0
  307. package/components/Paragraph/Text/fragment.graphql +14 -0
  308. package/components/Paragraph/Text/index.vue +66 -0
  309. package/components/Paragraph/TextMedia/fragment.graphql +17 -0
  310. package/components/Paragraph/TextMedia/index.vue +125 -0
  311. package/components/Paragraph/TwoColumnText/Element/fragment.graphql +8 -0
  312. package/components/Paragraph/TwoColumnText/Element/index.vue +31 -0
  313. package/components/Paragraph/TwoColumnText/Layout/fragment.graphql +8 -0
  314. package/components/Paragraph/TwoColumnText/Layout/index.vue +25 -0
  315. package/components/Paragraph/fragment.paragraphsFieldItem.graphql +6 -0
  316. package/components/Paragraph/iFrame/Element/fragment.graphql +9 -0
  317. package/components/Paragraph/iFrame/Element/index.vue +16 -0
  318. package/components/Paragraph/iFrame/Layout/fragment.graphql +13 -0
  319. package/components/Paragraph/iFrame/Layout/index.vue +161 -0
  320. package/components/Section/Footer/index.vue +144 -0
  321. package/components/Section/Header/GlobalMenu.vue +337 -0
  322. package/components/Section/Header/LanguageDropdown.vue +105 -0
  323. package/components/Section/Header/MenuIcon.vue +171 -0
  324. package/components/Section/Header/MetaMenu.vue +57 -0
  325. package/components/Section/Header/SearchLink.vue +26 -0
  326. package/components/Section/Header/index.vue +205 -0
  327. package/components/ui/accordion/Accordion.vue +19 -0
  328. package/components/ui/accordion/AccordionContent.vue +26 -0
  329. package/components/ui/accordion/AccordionItem.vue +27 -0
  330. package/components/ui/accordion/AccordionTrigger.vue +41 -0
  331. package/components/ui/accordion/index.ts +4 -0
  332. package/components/ui/button/Button.vue +26 -0
  333. package/components/ui/button/index.ts +36 -0
  334. package/components/ui/carousel/Carousel.vue +72 -0
  335. package/components/ui/carousel/CarouselContent.vue +30 -0
  336. package/components/ui/carousel/CarouselItem.vue +25 -0
  337. package/components/ui/carousel/CarouselNext.vue +33 -0
  338. package/components/ui/carousel/CarouselPrevious.vue +33 -0
  339. package/components/ui/carousel/index.ts +8 -0
  340. package/components/ui/carousel/interface.ts +24 -0
  341. package/components/ui/carousel/useCarousel.ts +66 -0
  342. package/components/ui/checkbox/Checkbox.vue +34 -0
  343. package/components/ui/checkbox/index.ts +1 -0
  344. package/components/ui/dialog/Dialog.vue +19 -0
  345. package/components/ui/dialog/DialogClose.vue +11 -0
  346. package/components/ui/dialog/DialogContent.vue +53 -0
  347. package/components/ui/dialog/DialogDescription.vue +30 -0
  348. package/components/ui/dialog/DialogFooter.vue +19 -0
  349. package/components/ui/dialog/DialogHeader.vue +16 -0
  350. package/components/ui/dialog/DialogScrollContent.vue +66 -0
  351. package/components/ui/dialog/DialogTitle.vue +28 -0
  352. package/components/ui/dialog/DialogTrigger.vue +11 -0
  353. package/components/ui/dialog/index.ts +9 -0
  354. package/components/ui/input/Input.vue +24 -0
  355. package/components/ui/input/index.ts +1 -0
  356. package/components/ui/label/Label.vue +29 -0
  357. package/components/ui/label/index.ts +1 -0
  358. package/components/ui/radio-group/RadioGroup.vue +27 -0
  359. package/components/ui/radio-group/RadioGroupItem.vue +41 -0
  360. package/components/ui/radio-group/index.ts +2 -0
  361. package/components/ui/select/Select.vue +15 -0
  362. package/components/ui/select/SelectContent.vue +54 -0
  363. package/components/ui/select/SelectGroup.vue +21 -0
  364. package/components/ui/select/SelectItem.vue +46 -0
  365. package/components/ui/select/SelectItemText.vue +12 -0
  366. package/components/ui/select/SelectLabel.vue +14 -0
  367. package/components/ui/select/SelectScrollDownButton.vue +26 -0
  368. package/components/ui/select/SelectScrollUpButton.vue +26 -0
  369. package/components/ui/select/SelectSeparator.vue +19 -0
  370. package/components/ui/select/SelectTrigger.vue +33 -0
  371. package/components/ui/select/SelectValue.vue +12 -0
  372. package/components/ui/select/index.ts +11 -0
  373. package/components/ui/tabs/Tabs.vue +15 -0
  374. package/components/ui/tabs/TabsContent.vue +29 -0
  375. package/components/ui/tabs/TabsList.vue +27 -0
  376. package/components/ui/tabs/TabsTrigger.vue +33 -0
  377. package/components/ui/tabs/index.ts +4 -0
  378. package/components/ui/textarea/Textarea.vue +24 -0
  379. package/components/ui/textarea/index.ts +1 -0
  380. package/components.json +18 -0
  381. package/composables/breadcrumb.ts +42 -0
  382. package/composables/languageLinks.ts +31 -0
  383. package/composables/query.initData.graphql +102 -0
  384. package/composables/useAccordionScroll.ts +30 -0
  385. package/composables/useChildTitleWeight.ts +13 -0
  386. package/composables/useCn.ts +7 -0
  387. package/composables/useCurrentLangcodeEnum.ts +18 -0
  388. package/composables/useDrupalMessages.ts +41 -0
  389. package/composables/useDrupalUser.ts +11 -0
  390. package/composables/useInitData.ts +118 -0
  391. package/composables/useIsMobile.ts +14 -0
  392. package/composables/useMainMenuLinks.ts +69 -0
  393. package/composables/useMetaMenuLinks.ts +44 -0
  394. package/composables/useNavigationOffset.ts +14 -0
  395. package/config/graphqlMiddleware/index.ts +41 -0
  396. package/config/multiCache/index.ts +28 -0
  397. package/config/postcss-drupal/postcss.config.cjs +14 -0
  398. package/config/runtimeConfig.ts +12 -0
  399. package/error.vue +39 -0
  400. package/eslint.config.mjs +111 -0
  401. package/formkit.config.ts +56 -0
  402. package/formkit.theme.ts +5000 -0
  403. package/layouts/default.vue +66 -0
  404. package/layouts/error.vue +98 -0
  405. package/layouts/library.vue +5 -0
  406. package/modules/dynamicNodeResolver.ts +95 -0
  407. package/modules/dynamicParagraphResolver.ts +69 -0
  408. package/nuxt.config.ts +551 -0
  409. package/package.json +64 -0
  410. package/pages/[...slug]/index.vue +27 -0
  411. package/pages/__tests__/index.ts +77 -0
  412. package/pages/blokkli/library-item/[uuid].vue +52 -0
  413. package/pages/blokkli/library-item/query.library.graphql +21 -0
  414. package/pages/index.vue +27 -0
  415. package/pages/node/[nid]/index.vue +25 -0
  416. package/pages/search/index.vue +69 -0
  417. package/pages/static-page/example.vue +40 -0
  418. package/plugins/clickaway.ts +12 -0
  419. package/plugins/drupalUser.ts +33 -0
  420. package/plugins/graphqlMiddleware.ts +115 -0
  421. package/queries/blokkli.graphql +5 -0
  422. package/queries/fragment.blokkliProps.graphql +8 -0
  423. package/queries/fragment.routeQuery.graphql +51 -0
  424. package/queries/query.drupalUser.graphql +10 -0
  425. package/server/api/content-search/index.ts +160 -0
  426. package/server/api/icon/[...params].ts +199 -0
  427. package/server/graphqlMiddleware.serverOptions.ts +87 -0
  428. package/server/helpers/index.ts +32 -0
  429. package/server/helpers/request.ts +44 -0
  430. package/server/middleware/spa.ts +45 -0
  431. package/server/multiCache.serverOptions.ts +32 -0
  432. package/server/tsconfig.json +3 -0
  433. package/server/utils/cacheability.ts +138 -0
  434. package/shims-vue.d.ts +5 -0
  435. package/tailwind.config.ts +228 -0
  436. package/vitest.config.mts +28 -0
@@ -0,0 +1,138 @@
1
+ import type { FetchResponse } from 'ofetch'
2
+ import type { H3Event } from 'h3'
3
+ import crypto from 'crypto'
4
+ import { INTERVALS, MAX_AGE, type ValidInterval } from '../helpers'
5
+
6
+ function extractCacheTags(
7
+ response: FetchResponse<unknown>,
8
+ header: string,
9
+ ): string[] {
10
+ const value = response.headers.get(header) || ''
11
+ if (typeof value !== 'string') {
12
+ return []
13
+ }
14
+
15
+ return value
16
+ .split(' ')
17
+ .map((v) => v.trim())
18
+ .filter(Boolean)
19
+ }
20
+
21
+ function calculateMaxAge(expires: string | null): number {
22
+ if (!expires) {
23
+ return MAX_AGE.UNCACHEABLE
24
+ }
25
+ const expiresValue = parseInt(expires)
26
+ if (isNaN(expiresValue)) {
27
+ return MAX_AGE.UNCACHEABLE
28
+ }
29
+
30
+ if (expiresValue === 0) {
31
+ return MAX_AGE.UNCACHEABLE
32
+ }
33
+
34
+ if (expiresValue === -1) {
35
+ return MAX_AGE.ONE_YEAR
36
+ }
37
+
38
+ return expiresValue
39
+ }
40
+
41
+ /**
42
+ * Extracts cacheability metadata from a Drupal fetch response.
43
+ */
44
+ export function extractCacheability(
45
+ response: FetchResponse<unknown>,
46
+ event: H3Event,
47
+ ) {
48
+ const hasSessionCookie = (event.node.req.headers.cookie || '').includes(
49
+ 'SSESS',
50
+ )
51
+ // These tags are provided by the nuxt_multi_cache module and used to
52
+ // cache the initData in the cache of nuxt_multi_cache in the frontend.
53
+ const tagsNuxt = extractCacheTags(response, 'x-nuxt-cache-tags')
54
+
55
+ // These tags are provided by the generic http purge module and
56
+ // used to invalidate SSR full page caches on varnish.
57
+ const tagsCdn = extractCacheTags(response, 'purge-cache-tags')
58
+
59
+ // During development, we also pass the original Drupal cache tags.
60
+ const tagsDrupal = extractCacheTags(response, 'x-drupal-cache-tags')
61
+
62
+ const expires = response.headers.get('x-nuxt-expires')
63
+ const sharedMaxAge = calculateMaxAge(expires)
64
+
65
+ return {
66
+ isCacheable: expires !== '0' && !!sharedMaxAge && !hasSessionCookie,
67
+ sharedMaxAge,
68
+ tagsNuxt,
69
+ tagsCdn: tagsCdn.length ? tagsCdn : tagsDrupal,
70
+ tagsDrupal,
71
+ }
72
+ }
73
+
74
+ /**
75
+ * Determine the number of seconds until the next given interval.
76
+ *
77
+ * Useful to calculate a max age for responses that should invalidate at the
78
+ * same time, no matter when they were put in cache.
79
+ *
80
+ * For example, when pasing '5min' and the current time is 12:04:00, the
81
+ * method will return 60.
82
+ */
83
+ export function getSecondsUntilNextInterval(key: ValidInterval): number {
84
+ const now = new Date()
85
+
86
+ // Special handling for the midnight case.
87
+ if (key === 'midnight') {
88
+ now.setHours(24, 0, 0, 0)
89
+ return Math.floor((now.getTime() - Date.now()) / 1000)
90
+ }
91
+
92
+ // Get the current timestamp in milliseconds
93
+ const msSinceHourStart =
94
+ now.getMinutes() * 60 * 1000 +
95
+ now.getSeconds() * 1000 +
96
+ now.getMilliseconds()
97
+
98
+ const interval = INTERVALS[key]
99
+
100
+ // Calculate the interval in milliseconds.
101
+ const intervalMs = interval * 1000
102
+
103
+ // Calculate the remaining milliseconds until the next interval.
104
+ const millisecondsUntilNextInterval =
105
+ intervalMs - (msSinceHourStart % intervalMs)
106
+
107
+ // Convert milliseconds to seconds.
108
+ return Math.floor(millisecondsUntilNextInterval / 1000)
109
+ }
110
+
111
+ /**
112
+ * Convert the given cache tag or cache tags to its hashed version.
113
+ *
114
+ * Because our responses can contain a lot of cache tags, in order to avoid
115
+ * headers that are too large, the fastly Drupal module will hash the cache
116
+ * tags to a fixed length.
117
+ *
118
+ * In some cases, when directly building responses in the Nuxt app that have
119
+ * to manually define cache tags, we need to "recreate" the same behaviour
120
+ * as Drupal, so that when Drupal invalidates the hashed cache tags, our
121
+ * custom responses also get invalidated.
122
+ *
123
+ * IMPORTANT: It is crucial that the logic for this method is in-sync with
124
+ * Drupal or else responses are not properly invalidated. In particular, the
125
+ * length of the hashed cache tag is configurable in Drupal.
126
+ */
127
+ export function buildFastlyCacheTags(input: string | string[]): string[] {
128
+ const tags = typeof input === 'string' ? [input] : input
129
+ const siteId = useRuntimeConfig().fastlySiteId
130
+
131
+ return tags.map(function (tag) {
132
+ return crypto
133
+ .createHash('md5')
134
+ .update(siteId + ':' + tag)
135
+ .digest('base64')
136
+ .substring(0, 6)
137
+ })
138
+ }
package/shims-vue.d.ts ADDED
@@ -0,0 +1,5 @@
1
+ // shims-vue.d.ts
2
+ declare module '@iframe-resizer/vue/iframe-resizer.vue' {
3
+ const IframeResizer: any
4
+ export default IframeResizer
5
+ }
@@ -0,0 +1,228 @@
1
+ import type { Config } from 'tailwindcss'
2
+
3
+ import plugin from 'tailwindcss/plugin'
4
+ import defaultTheme from 'tailwindcss/defaultTheme'
5
+ import type { PluginAPI } from 'tailwindcss/types/config'
6
+ import animate from 'tailwindcss-animate'
7
+
8
+ import { fileURLToPath } from 'url'
9
+ import { dirname, join } from 'path'
10
+ const currentDir = dirname(fileURLToPath(import.meta.url))
11
+
12
+ const colors = {
13
+ primary: {
14
+ DEFAULT: 'rgb(232, 93, 39)',
15
+ '50': 'rgb(254, 245, 238)',
16
+ '100': 'rgb(252, 232, 216)',
17
+ '200': 'rgb(248, 206, 176)',
18
+ '300': 'rgb(243, 171, 126)',
19
+ '400': 'rgb(237, 126, 74)',
20
+ '500': 'rgb(232, 93, 39)',
21
+ '600': 'rgb(217, 69, 29)',
22
+ '700': 'rgb(180, 51, 26)',
23
+ '800': 'rgb(144, 42, 28)',
24
+ '900': 'rgb(116, 37, 26)',
25
+ '950': 'rgb(63, 16, 11)',
26
+ },
27
+ secondary: {
28
+ DEFAULT: 'rgb(11, 102, 156)',
29
+ '50': 'rgb(241, 249, 254)',
30
+ '100': 'rgb(225, 241, 253)',
31
+ '200': 'rgb(189, 228, 250)',
32
+ '300': 'rgb(131, 207, 246)',
33
+ '400': 'rgb(65, 182, 239)',
34
+ '500': 'rgb(25, 157, 222)',
35
+ '600': 'rgb(12, 126, 189)',
36
+ '700': 'rgb(11, 102, 156)',
37
+ '800': 'rgb(13, 85, 127)',
38
+ '900': 'rgb(17, 71, 105)',
39
+ '950': 'rgb(11, 45, 70)',
40
+ },
41
+ gray: {
42
+ DEFAULT: 'rgb(61, 61, 61)',
43
+ '50': 'rgb(246, 246, 246)',
44
+ '100': 'rgb(231, 231, 231)',
45
+ '200': 'rgb(209, 209, 209)',
46
+ '300': 'rgb(176, 176, 176)',
47
+ '400': 'rgb(136, 136, 136)',
48
+ '500': 'rgb(109, 109, 109)',
49
+ '600': 'rgb(93, 93, 93)',
50
+ '700': 'rgb(79, 79, 79)',
51
+ '800': 'rgb(69, 69, 69)',
52
+ '900': 'rgb(61, 61, 61)',
53
+ '950': 'rgb(17, 17, 17)',
54
+ },
55
+ error: {
56
+ DEFAULT: 'rgb(229, 62, 62)',
57
+ '50': 'rgb(253, 243, 243)',
58
+ '100': 'rgb(253, 227, 227)',
59
+ '200': 'rgb(252, 204, 204)',
60
+ '300': 'rgb(248, 169, 169)',
61
+ '400': 'rgb(242, 119, 119)',
62
+ '500': 'rgb(229, 62, 62)',
63
+ '600': 'rgb(211, 47, 47)',
64
+ '700': 'rgb(178, 35, 35)',
65
+ '800': 'rgb(147, 33, 33)',
66
+ '900': 'rgb(122, 34, 34)',
67
+ '950': 'rgb(66, 13, 13)',
68
+ },
69
+ warning: {
70
+ DEFAULT: 'rgb(247, 181, 0)',
71
+ '50': 'rgb(255, 254, 234)',
72
+ '100': 'rgb(255, 250, 197)',
73
+ '200': 'rgb(255, 246, 133)',
74
+ '300': 'rgb(255, 234, 70)',
75
+ '400': 'rgb(255, 219, 27)',
76
+ '500': 'rgb(247, 181, 0)',
77
+ '600': 'rgb(226, 144, 0)',
78
+ '700': 'rgb(187, 101, 2)',
79
+ '800': 'rgb(152, 78, 8)',
80
+ '900': 'rgb(124, 64, 11)',
81
+ '950': 'rgb(72, 33, 0)',
82
+ },
83
+ success: {
84
+ DEFAULT: 'rgb(46, 133, 75)',
85
+ '50': 'rgb(242, 251, 245)',
86
+ '100': 'rgb(226, 246, 232)',
87
+ '200': 'rgb(198, 236, 210)',
88
+ '300': 'rgb(153, 220, 175)',
89
+ '400': 'rgb(101, 195, 132)',
90
+ '500': 'rgb(64, 167, 98)',
91
+ '600': 'rgb(46, 133, 75)',
92
+ '700': 'rgb(40, 109, 64)',
93
+ '800': 'rgb(36, 87, 53)',
94
+ '900': 'rgb(31, 72, 46)',
95
+ '950': 'rgb(12, 39, 22)',
96
+ },
97
+ };
98
+
99
+ const config: Config = {
100
+ content: [
101
+ './components/**/*.{vue,ts,js}',
102
+ './pages/**/*.{vue,ts,js}',
103
+ './layouts/**/*.{vue,ts,js}',
104
+ './helpers/**/*.{vue,ts,js}',
105
+
106
+ // We also need to check the formkit config to not
107
+ // purge classes away that are only used there.
108
+ join(currentDir, './formkit.config.ts'),
109
+ join(currentDir, './formkit.theme.ts'),
110
+ ],
111
+ theme: {
112
+ borderWidth: {
113
+ DEFAULT: '1px',
114
+ 0: '0',
115
+ 1: '1px',
116
+ 2: '2px',
117
+ 3: '3px',
118
+ 4: '4px',
119
+ 6: '6px',
120
+ 8: '8px',
121
+ },
122
+ colors: {
123
+ // Monochrome colors.
124
+ white: "rgb(255, 255, 255)",
125
+ black: "rgb(17, 17, 17)",
126
+ current: 'currentColor',
127
+ transparent: 'transparent',
128
+ body: colors.gray['900'],
129
+
130
+ ...colors,
131
+ },
132
+ extend: {
133
+ screens: {
134
+ ss: '375px',
135
+ xs: '412px',
136
+ },
137
+ containers: {
138
+ '3xs': '12rem',
139
+ '2xs': '16rem',
140
+ },
141
+ fontFamily: {
142
+ sans: ['"Inter"', ...defaultTheme.fontFamily.sans],
143
+ montserrat: ['"Montserrat"', ...defaultTheme.fontFamily.sans],
144
+ },
145
+ fontWeight: {
146
+ regular: '400',
147
+ },
148
+ transitionDuration: {
149
+ 250: '250ms',
150
+ },
151
+ columnCount: {
152
+ 1: '1',
153
+ 2: '2',
154
+ 3: '3',
155
+ },
156
+ boxShadow: {
157
+ custom: '0 0 30px 15px rgba(0, 0, 0, 0.1)',
158
+ 'custom-small': '0 0 30px 0px rgba(0, 0, 0, 0.1)',
159
+ 'custom-offset': '30px 30px 30px -15px rgba(0, 0, 0, 0.1)',
160
+ 'custom-inner': 'inset -15px -15px 50px -15px rgba(0 ,0, 0, 0.1)',
161
+ },
162
+ textShadow: {
163
+ sm: '0 0 16px rgba(0, 0, 0, 0.25)',
164
+ md: '0 0 16px rgba(0, 0, 0, 0.4)',
165
+ lg: '0 0 16px rgba(0, 0, 0, 0.6)',
166
+ },
167
+ aspectRatio: {
168
+ '4/3': '4 / 3',
169
+ },
170
+ keyframes: {
171
+ 'accordion-down': {
172
+ from: { height: '0' },
173
+ to: { height: 'var(--radix-accordion-content-height)' },
174
+ },
175
+ 'accordion-up': {
176
+ from: { height: 'var(--radix-accordion-content-height)' },
177
+ to: { height: '0' },
178
+ },
179
+ },
180
+ animation: {
181
+ 'accordion-down': 'accordion-down 0.2s ease-out',
182
+ 'accordion-up': 'accordion-up 0.2s ease-out',
183
+ },
184
+ },
185
+ },
186
+ future: {
187
+ hoverOnlyWhenSupported: true,
188
+ },
189
+ plugins: [
190
+ // Used by shadcn
191
+ animate,
192
+ /**
193
+ * Various additional variants
194
+ */
195
+ require('@tailwindcss/container-queries'),
196
+ require('@formkit/themes'),
197
+ plugin(({ addVariant }) => {
198
+ addVariant(
199
+ 'mobile-only',
200
+ "@media screen and (max-width: theme('screens.md'))",
201
+ )
202
+ addVariant('not-last', '&:not(:last-child)')
203
+ addVariant('not-first', '&:not(:first-child)')
204
+ }),
205
+ plugin(function ({ matchUtilities, theme }) {
206
+ matchUtilities(
207
+ {
208
+ 'text-shadow': (value: string) => ({
209
+ textShadow: value,
210
+ }),
211
+ },
212
+ { values: theme('textShadow') },
213
+ )
214
+ }),
215
+ function (pluginApi: PluginAPI) {
216
+ const { addUtilities } = pluginApi
217
+ addUtilities({
218
+ '.column-count-2': { columnCount: '2' },
219
+ '.column-count-3': { columnCount: '3' },
220
+ })
221
+ },
222
+ ],
223
+ corePlugins: {
224
+ textOpacity: false,
225
+ },
226
+ }
227
+
228
+ export default config
@@ -0,0 +1,28 @@
1
+ import { defineVitestConfig } from '@nuxt/test-utils/config'
2
+ import path from 'path'
3
+
4
+ export default defineVitestConfig({
5
+ test: {
6
+ globals: true,
7
+ environment: 'nuxt',
8
+ alias: {
9
+ '~': path.resolve(__dirname, './'),
10
+ },
11
+ include: ['**/__tests__/*.*'],
12
+ coverage: {
13
+ all: true,
14
+ provider: 'v8',
15
+ reporter: ['text', 'json', 'html'],
16
+ include: [
17
+ 'app/**/*.*',
18
+ 'components/**/*.*',
19
+ 'composables/**/*.*',
20
+ 'config/**/*.*',
21
+ 'layouts/**/*.*',
22
+ 'middleware/**/*.*',
23
+ 'plugins/**/*.*',
24
+ '/**/*.*',
25
+ ],
26
+ },
27
+ },
28
+ })