@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.
- package/app.config.ts +1 -0
- package/app.vue +50 -0
- package/assets/css/backend.css +82 -0
- package/assets/css/ckeditor.css +15 -0
- package/assets/css/components/carousel.css +91 -0
- package/assets/css/components/ck-content.css +65 -0
- package/assets/css/components/container.css +17 -0
- package/assets/css/components/dialog.css +9 -0
- package/assets/css/components/grid-container.css +296 -0
- package/assets/css/components/link.css +21 -0
- package/assets/css/fe-fixes.css +105 -0
- package/assets/css/tailwind.css +104 -0
- package/assets/css/typography.css +67 -0
- package/assets/symbols/chevron-down.svg +1 -0
- package/assets/symbols/chevron-right.svg +3 -0
- package/assets/symbols/close.svg +3 -0
- package/assets/symbols/facebook.svg +3 -0
- package/assets/symbols/instagram.svg +13 -0
- package/assets/symbols/linkedin.svg +4 -0
- package/assets/symbols/logo.svg +22 -0
- package/assets/symbols/magnifyingglass.svg +4 -0
- package/assets/symbols/pinterest.svg +4 -0
- package/assets/symbols/play.svg +6 -0
- package/assets/symbols/tiktok.svg +4 -0
- package/assets/symbols/x.svg +4 -0
- package/bundles.ts +50 -0
- package/components/Blokkli/Button/Element/icon.svg +4 -0
- package/components/Blokkli/Button/Element/index.vue +18 -0
- package/components/Blokkli/CallToAction/icon-blokkli-option-large-spacing-bottom.svg +1 -0
- package/components/Blokkli/CallToAction/icon-blokkli-option-large-spacing-top.svg +1 -0
- package/components/Blokkli/CallToAction/icon-blokkli-option-no-spacing.svg +1 -0
- package/components/Blokkli/CallToAction/icon-blokkli-option-small-spacing-bottom.svg +1 -0
- package/components/Blokkli/CallToAction/icon-blokkli-option-small-spacing-top.svg +1 -0
- package/components/Blokkli/CallToAction/icon.svg +5 -0
- package/components/Blokkli/CallToAction/index.vue +15 -0
- package/components/Blokkli/Card/Element/icon.svg +6 -0
- package/components/Blokkli/Card/Element/index.vue +14 -0
- package/components/Blokkli/Card/Layout/icon-blokkli-option-large-spacing-bottom.svg +1 -0
- package/components/Blokkli/Card/Layout/icon-blokkli-option-large-spacing-top.svg +1 -0
- package/components/Blokkli/Card/Layout/icon-blokkli-option-large-spacing.svg +1 -0
- package/components/Blokkli/Card/Layout/icon-blokkli-option-no-spacing.svg +1 -0
- package/components/Blokkli/Card/Layout/icon-blokkli-option-small-spacing-bottom.svg +1 -0
- package/components/Blokkli/Card/Layout/icon-blokkli-option-small-spacing-top.svg +1 -0
- package/components/Blokkli/Card/Layout/icon-blokkli-option-small-spacing.svg +1 -0
- package/components/Blokkli/Card/Layout/icon.svg +8 -0
- package/components/Blokkli/Card/Layout/index.vue +15 -0
- package/components/Blokkli/Contact/icon-blokkli-option-large-spacing-bottom.svg +1 -0
- package/components/Blokkli/Contact/icon-blokkli-option-large-spacing-top.svg +1 -0
- package/components/Blokkli/Contact/icon-blokkli-option-no-spacing.svg +1 -0
- package/components/Blokkli/Contact/icon-blokkli-option-small-spacing-bottom.svg +1 -0
- package/components/Blokkli/Contact/icon-blokkli-option-small-spacing-top.svg +1 -0
- package/components/Blokkli/Contact/icon.svg +5 -0
- package/components/Blokkli/Contact/index.vue +15 -0
- package/components/Blokkli/Downloads/icon-blokkli-option-large-spacing-bottom.svg +1 -0
- package/components/Blokkli/Downloads/icon-blokkli-option-large-spacing-top.svg +1 -0
- package/components/Blokkli/Downloads/icon-blokkli-option-no-spacing.svg +1 -0
- package/components/Blokkli/Downloads/icon-blokkli-option-small-spacing-bottom.svg +1 -0
- package/components/Blokkli/Downloads/icon-blokkli-option-small-spacing-top.svg +1 -0
- package/components/Blokkli/Downloads/icon.svg +5 -0
- package/components/Blokkli/Downloads/index.vue +16 -0
- package/components/Blokkli/FAQ/Element/icon-blokkli-option-large-spacing.svg +1 -0
- package/components/Blokkli/FAQ/Element/icon-blokkli-option-no-spacing.svg +1 -0
- package/components/Blokkli/FAQ/Element/icon-blokkli-option-small-spacing.svg +1 -0
- package/components/Blokkli/FAQ/Element/icon.svg +3 -0
- package/components/Blokkli/FAQ/Element/index.vue +14 -0
- package/components/Blokkli/FAQ/Layout/icon-blokkli-option-large-spacing-bottom.svg +1 -0
- package/components/Blokkli/FAQ/Layout/icon-blokkli-option-large-spacing-top.svg +1 -0
- package/components/Blokkli/FAQ/Layout/icon-blokkli-option-no-spacing.svg +1 -0
- package/components/Blokkli/FAQ/Layout/icon-blokkli-option-small-spacing-bottom.svg +1 -0
- package/components/Blokkli/FAQ/Layout/icon-blokkli-option-small-spacing-top.svg +1 -0
- package/components/Blokkli/FAQ/Layout/icon.svg +5 -0
- package/components/Blokkli/FAQ/Layout/index.vue +20 -0
- package/components/Blokkli/FlipTeasers/icon-blokkli-option-large-spacing-bottom.svg +1 -0
- package/components/Blokkli/FlipTeasers/icon-blokkli-option-large-spacing-top.svg +1 -0
- package/components/Blokkli/FlipTeasers/icon-blokkli-option-no-spacing.svg +1 -0
- package/components/Blokkli/FlipTeasers/icon-blokkli-option-small-spacing-bottom.svg +1 -0
- package/components/Blokkli/FlipTeasers/icon-blokkli-option-small-spacing-top.svg +1 -0
- package/components/Blokkli/FlipTeasers/icon.svg +7 -0
- package/components/Blokkli/FlipTeasers/index.vue +15 -0
- package/components/Blokkli/Gallery/icon-blokkli-option-large-spacing-bottom.svg +1 -0
- package/components/Blokkli/Gallery/icon-blokkli-option-large-spacing-top.svg +1 -0
- package/components/Blokkli/Gallery/icon-blokkli-option-no-spacing.svg +1 -0
- package/components/Blokkli/Gallery/icon-blokkli-option-small-spacing-bottom.svg +1 -0
- package/components/Blokkli/Gallery/icon-blokkli-option-small-spacing-top.svg +1 -0
- package/components/Blokkli/Gallery/icon.svg +5 -0
- package/components/Blokkli/Gallery/index.vue +16 -0
- package/components/Blokkli/HeroImage/icon.svg +5 -0
- package/components/Blokkli/HeroImage/index.vue +15 -0
- package/components/Blokkli/IconText/Element/icon.svg +5 -0
- package/components/Blokkli/IconText/Element/index.vue +14 -0
- package/components/Blokkli/IconText/Layout/icon-blokkli-option-large-spacing-bottom.svg +1 -0
- package/components/Blokkli/IconText/Layout/icon-blokkli-option-large-spacing-top.svg +1 -0
- package/components/Blokkli/IconText/Layout/icon-blokkli-option-no-spacing.svg +1 -0
- package/components/Blokkli/IconText/Layout/icon-blokkli-option-small-spacing-bottom.svg +1 -0
- package/components/Blokkli/IconText/Layout/icon-blokkli-option-small-spacing-top.svg +1 -0
- package/components/Blokkli/IconText/Layout/icon.svg +7 -0
- package/components/Blokkli/IconText/Layout/index.vue +20 -0
- package/components/Blokkli/Introduction/icon-blokkli-option-large-spacing-bottom.svg +1 -0
- package/components/Blokkli/Introduction/icon-blokkli-option-large-spacing-top.svg +1 -0
- package/components/Blokkli/Introduction/icon-blokkli-option-no-spacing.svg +1 -0
- package/components/Blokkli/Introduction/icon-blokkli-option-small-spacing-bottom.svg +1 -0
- package/components/Blokkli/Introduction/icon-blokkli-option-small-spacing-top.svg +1 -0
- package/components/Blokkli/Introduction/icon.svg +5 -0
- package/components/Blokkli/Introduction/index.vue +20 -0
- package/components/Blokkli/Logo/Element/icon.svg +6 -0
- package/components/Blokkli/Logo/Element/index.vue +14 -0
- package/components/Blokkli/Media/icon-blokkli-option-large-spacing-bottom.svg +1 -0
- package/components/Blokkli/Media/icon-blokkli-option-large-spacing-top.svg +1 -0
- package/components/Blokkli/Media/icon-blokkli-option-no-spacing.svg +1 -0
- package/components/Blokkli/Media/icon-blokkli-option-small-spacing-bottom.svg +1 -0
- package/components/Blokkli/Media/icon-blokkli-option-small-spacing-top.svg +1 -0
- package/components/Blokkli/Media/icon.svg +8 -0
- package/components/Blokkli/Media/index.vue +15 -0
- package/components/Blokkli/Partnerships/Element/icon.svg +3 -0
- package/components/Blokkli/Partnerships/Element/index.vue +13 -0
- package/components/Blokkli/Partnerships/Layout/icon-blokkli-option-large-spacing-bottom.svg +1 -0
- package/components/Blokkli/Partnerships/Layout/icon-blokkli-option-large-spacing-top.svg +1 -0
- package/components/Blokkli/Partnerships/Layout/icon-blokkli-option-no-spacing.svg +1 -0
- package/components/Blokkli/Partnerships/Layout/icon-blokkli-option-small-spacing-bottom.svg +1 -0
- package/components/Blokkli/Partnerships/Layout/icon-blokkli-option-small-spacing-top.svg +1 -0
- package/components/Blokkli/Partnerships/Layout/icon.svg +5 -0
- package/components/Blokkli/Partnerships/Layout/index.vue +15 -0
- package/components/Blokkli/SingleTestimonial/icon-blokkli-option-large-spacing-bottom.svg +1 -0
- package/components/Blokkli/SingleTestimonial/icon-blokkli-option-large-spacing-top.svg +1 -0
- package/components/Blokkli/SingleTestimonial/icon-blokkli-option-no-spacing.svg +1 -0
- package/components/Blokkli/SingleTestimonial/icon-blokkli-option-small-spacing-bottom.svg +1 -0
- package/components/Blokkli/SingleTestimonial/icon-blokkli-option-small-spacing-top.svg +1 -0
- package/components/Blokkli/SingleTestimonial/icon.svg +5 -0
- package/components/Blokkli/SingleTestimonial/index.vue +20 -0
- package/components/Blokkli/Table/icon-blokkli-option-large-spacing-bottom.svg +1 -0
- package/components/Blokkli/Table/icon-blokkli-option-large-spacing-top.svg +1 -0
- package/components/Blokkli/Table/icon-blokkli-option-no-spacing.svg +1 -0
- package/components/Blokkli/Table/icon-blokkli-option-small-spacing-bottom.svg +1 -0
- package/components/Blokkli/Table/icon-blokkli-option-small-spacing-top.svg +1 -0
- package/components/Blokkli/Table/icon.svg +5 -0
- package/components/Blokkli/Table/index.vue +15 -0
- package/components/Blokkli/Tabs/Element/icon.svg +3 -0
- package/components/Blokkli/Tabs/Element/index.vue +14 -0
- package/components/Blokkli/Tabs/Layout/icon-blokkli-option-large-spacing-bottom.svg +1 -0
- package/components/Blokkli/Tabs/Layout/icon-blokkli-option-large-spacing-top.svg +1 -0
- package/components/Blokkli/Tabs/Layout/icon-blokkli-option-no-spacing.svg +1 -0
- package/components/Blokkli/Tabs/Layout/icon-blokkli-option-small-spacing-bottom.svg +1 -0
- package/components/Blokkli/Tabs/Layout/icon-blokkli-option-small-spacing-top.svg +1 -0
- package/components/Blokkli/Tabs/Layout/icon.svg +5 -0
- package/components/Blokkli/Tabs/Layout/index.vue +20 -0
- package/components/Blokkli/Team/Element/icon.svg +3 -0
- package/components/Blokkli/Team/Element/index.vue +14 -0
- package/components/Blokkli/Team/Layout/icon-blokkli-option-large-spacing-bottom.svg +1 -0
- package/components/Blokkli/Team/Layout/icon-blokkli-option-large-spacing-top.svg +1 -0
- package/components/Blokkli/Team/Layout/icon-blokkli-option-no-spacing.svg +1 -0
- package/components/Blokkli/Team/Layout/icon-blokkli-option-small-spacing-bottom.svg +1 -0
- package/components/Blokkli/Team/Layout/icon-blokkli-option-small-spacing-top.svg +1 -0
- package/components/Blokkli/Team/Layout/icon.svg +5 -0
- package/components/Blokkli/Team/Layout/index.vue +15 -0
- package/components/Blokkli/Teasers/icon-blokkli-option-large-spacing-bottom.svg +1 -0
- package/components/Blokkli/Teasers/icon-blokkli-option-large-spacing-top.svg +1 -0
- package/components/Blokkli/Teasers/icon-blokkli-option-no-spacing.svg +1 -0
- package/components/Blokkli/Teasers/icon-blokkli-option-small-spacing-bottom.svg +1 -0
- package/components/Blokkli/Teasers/icon-blokkli-option-small-spacing-top.svg +1 -0
- package/components/Blokkli/Teasers/icon.svg +6 -0
- package/components/Blokkli/Teasers/index.vue +15 -0
- package/components/Blokkli/Testimonial/Element/icon.svg +3 -0
- package/components/Blokkli/Testimonial/Element/index.vue +14 -0
- package/components/Blokkli/Testimonial/Layout/icon-blokkli-option-large-spacing-bottom.svg +1 -0
- package/components/Blokkli/Testimonial/Layout/icon-blokkli-option-large-spacing-top.svg +1 -0
- package/components/Blokkli/Testimonial/Layout/icon-blokkli-option-no-spacing.svg +1 -0
- package/components/Blokkli/Testimonial/Layout/icon-blokkli-option-small-spacing-bottom.svg +1 -0
- package/components/Blokkli/Testimonial/Layout/icon-blokkli-option-small-spacing-top.svg +1 -0
- package/components/Blokkli/Testimonial/Layout/icon.svg +5 -0
- package/components/Blokkli/Testimonial/Layout/index.vue +15 -0
- package/components/Blokkli/Text/icon-blokkli-option-large-spacing-bottom.svg +1 -0
- package/components/Blokkli/Text/icon-blokkli-option-large-spacing-top.svg +1 -0
- package/components/Blokkli/Text/icon-blokkli-option-no-spacing.svg +1 -0
- package/components/Blokkli/Text/icon-blokkli-option-small-spacing-bottom.svg +1 -0
- package/components/Blokkli/Text/icon-blokkli-option-small-spacing-top.svg +1 -0
- package/components/Blokkli/Text/icon.svg +7 -0
- package/components/Blokkli/Text/index.vue +21 -0
- package/components/Blokkli/TextMedia/icon-blokkli-option-large-spacing-bottom.svg +1 -0
- package/components/Blokkli/TextMedia/icon-blokkli-option-large-spacing-top.svg +1 -0
- package/components/Blokkli/TextMedia/icon-blokkli-option-no-spacing.svg +1 -0
- package/components/Blokkli/TextMedia/icon-blokkli-option-small-spacing-bottom.svg +1 -0
- package/components/Blokkli/TextMedia/icon-blokkli-option-small-spacing-top.svg +1 -0
- package/components/Blokkli/TextMedia/icon.svg +5 -0
- package/components/Blokkli/TextMedia/index.vue +22 -0
- package/components/Blokkli/TwoColumnText/Element/icon.svg +8 -0
- package/components/Blokkli/TwoColumnText/Element/index.vue +15 -0
- package/components/Blokkli/TwoColumnText/Layout/icon-blokkli-option-large-spacing-bottom.svg +1 -0
- package/components/Blokkli/TwoColumnText/Layout/icon-blokkli-option-large-spacing-top.svg +1 -0
- package/components/Blokkli/TwoColumnText/Layout/icon-blokkli-option-no-spacing.svg +1 -0
- package/components/Blokkli/TwoColumnText/Layout/icon-blokkli-option-small-spacing-bottom.svg +1 -0
- package/components/Blokkli/TwoColumnText/Layout/icon-blokkli-option-small-spacing-top.svg +1 -0
- package/components/Blokkli/TwoColumnText/Layout/icon.svg +10 -0
- package/components/Blokkli/TwoColumnText/Layout/index.vue +18 -0
- package/components/Blokkli/iFrame/Element/icon.svg +5 -0
- package/components/Blokkli/iFrame/Element/index.vue +14 -0
- package/components/Blokkli/iFrame/Layout/icon-blokkli-option-large-spacing-bottom.svg +1 -0
- package/components/Blokkli/iFrame/Layout/icon-blokkli-option-large-spacing-top.svg +1 -0
- package/components/Blokkli/iFrame/Layout/icon-blokkli-option-no-spacing.svg +1 -0
- package/components/Blokkli/iFrame/Layout/icon-blokkli-option-small-spacing-bottom.svg +1 -0
- package/components/Blokkli/iFrame/Layout/icon-blokkli-option-small-spacing-top.svg +1 -0
- package/components/Blokkli/iFrame/Layout/icon.svg +7 -0
- package/components/Blokkli/iFrame/Layout/index.vue +18 -0
- package/components/DesignSystem/Atoms/Button.vue +144 -0
- package/components/DesignSystem/Atoms/Container.vue +54 -0
- package/components/DesignSystem/Atoms/GridRow.vue +13 -0
- package/components/DesignSystem/Molecules/ButtonGroup.vue +45 -0
- package/components/DesignSystem/Molecules/Card.vue +70 -0
- package/components/DesignSystem/Molecules/IconText.vue +62 -0
- package/components/DesignSystem/Molecules/MediaSlider.vue +72 -0
- package/components/DesignSystem/Molecules/Partnership.vue +40 -0
- package/components/DesignSystem/Molecules/Table.vue +170 -0
- package/components/DesignSystem/Molecules/TitleComposition.vue +66 -0
- package/components/DesignSystem/Molecules/iFrame.vue +22 -0
- package/components/DesignSystem/Organisms/ContentBlock.vue +82 -0
- package/components/DesignSystem/Organisms/FlipTeaser.vue +160 -0
- package/components/DesignSystem/Organisms/LogoElement.vue +37 -0
- package/components/DesignSystem/Organisms/TeamElement.vue +89 -0
- package/components/DesignSystem/Organisms/TeaserCard.vue +74 -0
- package/components/DesignSystem/Organisms/Testimonial.vue +53 -0
- package/components/DesignSystem/Organisms/TwoColumnTextElement.vue +42 -0
- package/components/Drupal/Breadcrumb/fragment.breadcrumb.graphql +6 -0
- package/components/Drupal/Breadcrumb/index.vue +88 -0
- package/components/Drupal/Messages/index.vue +29 -0
- package/components/Drupal/Webform/fragment.graphql +86 -0
- package/components/Drupal/Webform/index.vue +174 -0
- package/components/Drupal/Webform/mutation.graphql +8 -0
- package/components/Drupal/Webform/query.graphql +21 -0
- package/components/Form/CheckboxInput.vue +35 -0
- package/components/Form/CheckboxInputs.vue +44 -0
- package/components/Form/FileUploadInput.vue +34 -0
- package/components/Form/RadioButtonsInput.vue +44 -0
- package/components/Form/SelectInput.vue +54 -0
- package/components/Form/SubmitButton.vue +12 -0
- package/components/Form/TextAreaInput.vue +34 -0
- package/components/Form/TextEmailInput.vue +35 -0
- package/components/Form/TextInput.vue +35 -0
- package/components/Form/TextPhoneInput.vue +35 -0
- package/components/Form/WebformMarkup.vue +9 -0
- package/components/Form/composables/useFormElement.ts +84 -0
- package/components/Form/utils/types.ts +64 -0
- package/components/Media/Icon/fragment.mediaIcon.graphql +9 -0
- package/components/Media/Icon/index.vue +16 -0
- package/components/Media/Image/fragment.graphql +11 -0
- package/components/Media/Image/index.vue +215 -0
- package/components/Media/RemoteVideo/fragment.graphql +27 -0
- package/components/Media/RemoteVideo/index.vue +58 -0
- package/components/Media/Video/fragment.graphql +17 -0
- package/components/Media/Video/index.vue +44 -0
- package/components/Media/fragment.graphql +8 -0
- package/components/Media/index.vue +33 -0
- package/components/Node/Icms/Page/fragment.graphql +17 -0
- package/components/Node/Icms/Page/index.vue +14 -0
- package/components/Paragraph/Button/Element/fragment.graphql +14 -0
- package/components/Paragraph/Button/Element/index.vue +23 -0
- package/components/Paragraph/CallToAction/fragment.graphql +12 -0
- package/components/Paragraph/CallToAction/index.vue +60 -0
- package/components/Paragraph/Card/Element/fragment.graphql +10 -0
- package/components/Paragraph/Card/Element/index.vue +19 -0
- package/components/Paragraph/Card/Layout/fragment.graphql +14 -0
- package/components/Paragraph/Card/Layout/index.vue +58 -0
- package/components/Paragraph/Contact/fragment.graphql +20 -0
- package/components/Paragraph/Contact/index.vue +60 -0
- package/components/Paragraph/Downloads/fragment.graphql +15 -0
- package/components/Paragraph/Downloads/index.vue +104 -0
- package/components/Paragraph/FAQ/Element/fragment.graphql +10 -0
- package/components/Paragraph/FAQ/Element/index.vue +66 -0
- package/components/Paragraph/FAQ/Layout/fragment.graphql +23 -0
- package/components/Paragraph/FAQ/Layout/index.vue +84 -0
- package/components/Paragraph/FlipTeasers/fragment.graphql +25 -0
- package/components/Paragraph/FlipTeasers/index.vue +59 -0
- package/components/Paragraph/Gallery/fragment.graphql +11 -0
- package/components/Paragraph/Gallery/index.vue +223 -0
- package/components/Paragraph/HeroImage/fragment.graphql +17 -0
- package/components/Paragraph/HeroImage/index.vue +147 -0
- package/components/Paragraph/IconText/Element/fragment.graphql +8 -0
- package/components/Paragraph/IconText/Element/index.vue +18 -0
- package/components/Paragraph/IconText/Layout/fragment.graphql +23 -0
- package/components/Paragraph/IconText/Layout/index.vue +76 -0
- package/components/Paragraph/Introduction/fragment.graphql +20 -0
- package/components/Paragraph/Introduction/index.vue +94 -0
- package/components/Paragraph/Logo/Element/fragment.graphql +11 -0
- package/components/Paragraph/Logo/Element/index.vue +17 -0
- package/components/Paragraph/Media/fragment.graphql +5 -0
- package/components/Paragraph/Media/index.vue +83 -0
- package/components/Paragraph/Partnerships/Element/fragment.graphql +11 -0
- package/components/Paragraph/Partnerships/Element/index.vue +14 -0
- package/components/Paragraph/Partnerships/Layout/fragment.graphql +17 -0
- package/components/Paragraph/Partnerships/Layout/index.vue +119 -0
- package/components/Paragraph/SingleTestimonial/fragment.graphql +24 -0
- package/components/Paragraph/SingleTestimonial/index.vue +79 -0
- package/components/Paragraph/Table/fragment.graphql +11 -0
- package/components/Paragraph/Table/index.vue +43 -0
- package/components/Paragraph/Tabs/Element/fragment.graphql +17 -0
- package/components/Paragraph/Tabs/Element/index.vue +78 -0
- package/components/Paragraph/Tabs/Layout/fragment.graphql +11 -0
- package/components/Paragraph/Tabs/Layout/index.vue +191 -0
- package/components/Paragraph/Team/Element/fragment.graphql +17 -0
- package/components/Paragraph/Team/Element/index.vue +23 -0
- package/components/Paragraph/Team/Layout/fragment.graphql +14 -0
- package/components/Paragraph/Team/Layout/index.vue +51 -0
- package/components/Paragraph/Teasers/fragment.graphql +25 -0
- package/components/Paragraph/Teasers/index.vue +58 -0
- package/components/Paragraph/Testimonial/Element/fragment.graphql +13 -0
- package/components/Paragraph/Testimonial/Element/index.vue +29 -0
- package/components/Paragraph/Testimonial/Layout/fragment.graphql +13 -0
- package/components/Paragraph/Testimonial/Layout/index.vue +109 -0
- package/components/Paragraph/Text/fragment.graphql +14 -0
- package/components/Paragraph/Text/index.vue +66 -0
- package/components/Paragraph/TextMedia/fragment.graphql +17 -0
- package/components/Paragraph/TextMedia/index.vue +125 -0
- package/components/Paragraph/TwoColumnText/Element/fragment.graphql +8 -0
- package/components/Paragraph/TwoColumnText/Element/index.vue +31 -0
- package/components/Paragraph/TwoColumnText/Layout/fragment.graphql +8 -0
- package/components/Paragraph/TwoColumnText/Layout/index.vue +25 -0
- package/components/Paragraph/fragment.paragraphsFieldItem.graphql +6 -0
- package/components/Paragraph/iFrame/Element/fragment.graphql +9 -0
- package/components/Paragraph/iFrame/Element/index.vue +16 -0
- package/components/Paragraph/iFrame/Layout/fragment.graphql +13 -0
- package/components/Paragraph/iFrame/Layout/index.vue +161 -0
- package/components/Section/Footer/index.vue +144 -0
- package/components/Section/Header/GlobalMenu.vue +337 -0
- package/components/Section/Header/LanguageDropdown.vue +105 -0
- package/components/Section/Header/MenuIcon.vue +171 -0
- package/components/Section/Header/MetaMenu.vue +57 -0
- package/components/Section/Header/SearchLink.vue +26 -0
- package/components/Section/Header/index.vue +205 -0
- package/components/ui/accordion/Accordion.vue +19 -0
- package/components/ui/accordion/AccordionContent.vue +26 -0
- package/components/ui/accordion/AccordionItem.vue +27 -0
- package/components/ui/accordion/AccordionTrigger.vue +41 -0
- package/components/ui/accordion/index.ts +4 -0
- package/components/ui/button/Button.vue +26 -0
- package/components/ui/button/index.ts +36 -0
- package/components/ui/carousel/Carousel.vue +72 -0
- package/components/ui/carousel/CarouselContent.vue +30 -0
- package/components/ui/carousel/CarouselItem.vue +25 -0
- package/components/ui/carousel/CarouselNext.vue +33 -0
- package/components/ui/carousel/CarouselPrevious.vue +33 -0
- package/components/ui/carousel/index.ts +8 -0
- package/components/ui/carousel/interface.ts +24 -0
- package/components/ui/carousel/useCarousel.ts +66 -0
- package/components/ui/checkbox/Checkbox.vue +34 -0
- package/components/ui/checkbox/index.ts +1 -0
- package/components/ui/dialog/Dialog.vue +19 -0
- package/components/ui/dialog/DialogClose.vue +11 -0
- package/components/ui/dialog/DialogContent.vue +53 -0
- package/components/ui/dialog/DialogDescription.vue +30 -0
- package/components/ui/dialog/DialogFooter.vue +19 -0
- package/components/ui/dialog/DialogHeader.vue +16 -0
- package/components/ui/dialog/DialogScrollContent.vue +66 -0
- package/components/ui/dialog/DialogTitle.vue +28 -0
- package/components/ui/dialog/DialogTrigger.vue +11 -0
- package/components/ui/dialog/index.ts +9 -0
- package/components/ui/input/Input.vue +24 -0
- package/components/ui/input/index.ts +1 -0
- package/components/ui/label/Label.vue +29 -0
- package/components/ui/label/index.ts +1 -0
- package/components/ui/radio-group/RadioGroup.vue +27 -0
- package/components/ui/radio-group/RadioGroupItem.vue +41 -0
- package/components/ui/radio-group/index.ts +2 -0
- package/components/ui/select/Select.vue +15 -0
- package/components/ui/select/SelectContent.vue +54 -0
- package/components/ui/select/SelectGroup.vue +21 -0
- package/components/ui/select/SelectItem.vue +46 -0
- package/components/ui/select/SelectItemText.vue +12 -0
- package/components/ui/select/SelectLabel.vue +14 -0
- package/components/ui/select/SelectScrollDownButton.vue +26 -0
- package/components/ui/select/SelectScrollUpButton.vue +26 -0
- package/components/ui/select/SelectSeparator.vue +19 -0
- package/components/ui/select/SelectTrigger.vue +33 -0
- package/components/ui/select/SelectValue.vue +12 -0
- package/components/ui/select/index.ts +11 -0
- package/components/ui/tabs/Tabs.vue +15 -0
- package/components/ui/tabs/TabsContent.vue +29 -0
- package/components/ui/tabs/TabsList.vue +27 -0
- package/components/ui/tabs/TabsTrigger.vue +33 -0
- package/components/ui/tabs/index.ts +4 -0
- package/components/ui/textarea/Textarea.vue +24 -0
- package/components/ui/textarea/index.ts +1 -0
- package/components.json +18 -0
- package/composables/breadcrumb.ts +42 -0
- package/composables/languageLinks.ts +31 -0
- package/composables/query.initData.graphql +102 -0
- package/composables/useAccordionScroll.ts +30 -0
- package/composables/useChildTitleWeight.ts +13 -0
- package/composables/useCn.ts +7 -0
- package/composables/useCurrentLangcodeEnum.ts +18 -0
- package/composables/useDrupalMessages.ts +41 -0
- package/composables/useDrupalUser.ts +11 -0
- package/composables/useInitData.ts +118 -0
- package/composables/useIsMobile.ts +14 -0
- package/composables/useMainMenuLinks.ts +69 -0
- package/composables/useMetaMenuLinks.ts +44 -0
- package/composables/useNavigationOffset.ts +14 -0
- package/config/graphqlMiddleware/index.ts +41 -0
- package/config/multiCache/index.ts +28 -0
- package/config/postcss-drupal/postcss.config.cjs +14 -0
- package/config/runtimeConfig.ts +12 -0
- package/error.vue +39 -0
- package/eslint.config.mjs +111 -0
- package/formkit.config.ts +56 -0
- package/formkit.theme.ts +5000 -0
- package/layouts/default.vue +66 -0
- package/layouts/error.vue +98 -0
- package/layouts/library.vue +5 -0
- package/modules/dynamicNodeResolver.ts +95 -0
- package/modules/dynamicParagraphResolver.ts +69 -0
- package/nuxt.config.ts +551 -0
- package/package.json +64 -0
- package/pages/[...slug]/index.vue +27 -0
- package/pages/__tests__/index.ts +77 -0
- package/pages/blokkli/library-item/[uuid].vue +52 -0
- package/pages/blokkli/library-item/query.library.graphql +21 -0
- package/pages/index.vue +27 -0
- package/pages/node/[nid]/index.vue +25 -0
- package/pages/search/index.vue +69 -0
- package/pages/static-page/example.vue +40 -0
- package/plugins/clickaway.ts +12 -0
- package/plugins/drupalUser.ts +33 -0
- package/plugins/graphqlMiddleware.ts +115 -0
- package/queries/blokkli.graphql +5 -0
- package/queries/fragment.blokkliProps.graphql +8 -0
- package/queries/fragment.routeQuery.graphql +51 -0
- package/queries/query.drupalUser.graphql +10 -0
- package/server/api/content-search/index.ts +160 -0
- package/server/api/icon/[...params].ts +199 -0
- package/server/graphqlMiddleware.serverOptions.ts +87 -0
- package/server/helpers/index.ts +32 -0
- package/server/helpers/request.ts +44 -0
- package/server/middleware/spa.ts +45 -0
- package/server/multiCache.serverOptions.ts +32 -0
- package/server/tsconfig.json +3 -0
- package/server/utils/cacheability.ts +138 -0
- package/shims-vue.d.ts +5 -0
- package/tailwind.config.ts +228 -0
- package/vitest.config.mts +28 -0
package/nuxt.config.ts
ADDED
|
@@ -0,0 +1,551 @@
|
|
|
1
|
+
import { resolve } from 'node:path'
|
|
2
|
+
import resolveConfig from 'tailwindcss/resolveConfig'
|
|
3
|
+
import { runtimeConfig } from './config/runtimeConfig'
|
|
4
|
+
import graphqlMiddleware from './config/graphqlMiddleware'
|
|
5
|
+
import multiCache from './config/multiCache'
|
|
6
|
+
import tailwindConfig from './tailwind.config'
|
|
7
|
+
import { pathPrefix, query, acceptLanguage } from 'nuxt-language-negotiation/negotiators'
|
|
8
|
+
|
|
9
|
+
import { fileURLToPath } from 'url'
|
|
10
|
+
import { dirname, join } from 'path'
|
|
11
|
+
|
|
12
|
+
const fullTailwindConfig = resolveConfig(tailwindConfig)
|
|
13
|
+
const tailwindColors = fullTailwindConfig.theme.colors as Record<string, any>
|
|
14
|
+
const ONE_YEAR = 31_536_000
|
|
15
|
+
const ONE_MONTH = 2_592_000
|
|
16
|
+
const IS_DEV = process.env.NODE_ENV === 'development'
|
|
17
|
+
const NUXT_REQUEST_HOST = process.env.NUXT_REQUEST_HOST
|
|
18
|
+
const NUXT_IMAGE_CLOUDFLARE_BASE_URL = process.env.NUXT_IMAGE_CLOUDFLARE_BASE_URL ?? 'https://iqual.cloud'
|
|
19
|
+
|
|
20
|
+
// Helper function to transform Tailwind's rgb(xx, xx, xx) colors to blökkli's theme [xx, xx, xx]
|
|
21
|
+
const transformColor = (color: string): number[] => {
|
|
22
|
+
return color.substring(4, color.length - 1).replace(/ /g, '').split(',').map(Number)
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
const LANGCODES = ['en', 'de', 'fr', 'it']
|
|
26
|
+
const currentDir = dirname(fileURLToPath(import.meta.url))
|
|
27
|
+
|
|
28
|
+
// https://nuxt.com/docs/api/configuration/nuxt-config
|
|
29
|
+
export default defineNuxtConfig({
|
|
30
|
+
devtools: { enabled: true },
|
|
31
|
+
telemetry: false,
|
|
32
|
+
graphqlMiddleware,
|
|
33
|
+
multiCache,
|
|
34
|
+
runtimeConfig,
|
|
35
|
+
alias: {
|
|
36
|
+
'#nuxt-svg-sprite': resolve('/.nuxt/nuxt-svg-sprite'),
|
|
37
|
+
'tailwind-config': resolve(__dirname, './tailwind.config.ts'),
|
|
38
|
+
},
|
|
39
|
+
|
|
40
|
+
app: {
|
|
41
|
+
rootId: 'nuxt-root',
|
|
42
|
+
pageTransition: { name: 'page', mode: 'out-in' },
|
|
43
|
+
head: {
|
|
44
|
+
title: 'ICMS Base',
|
|
45
|
+
htmlAttrs: {
|
|
46
|
+
tagDuplicateStrategy: 'merge',
|
|
47
|
+
lang: LANGCODES[0],
|
|
48
|
+
},
|
|
49
|
+
link: [
|
|
50
|
+
{ rel: 'shortcut icon', type: 'image/x-icon', href: '/favicon/favicon.ico' },
|
|
51
|
+
{ rel: 'apple-touch-icon', href: '/favicon/favicon/apple-touch-icon.png' },
|
|
52
|
+
{ rel: 'icon', type: 'image/png', sizes: '96x96', href: '/favicon/favicon-96x96.png' },
|
|
53
|
+
{ rel: 'icon', type: 'image/svg+xml', href: '/favicon/favicon.svg' },
|
|
54
|
+
{ rel: 'manifest', href: '/favicon/site.webmanifest' },
|
|
55
|
+
{ rel: 'icon', type: 'image/png', sizes: '192x192', href: '/favicon/web-app-manifest-192x192.png' },
|
|
56
|
+
{ rel: 'icon', type: 'image/png', sizes: '512x512', href: '/favicon/web-app-manifest-512x512.png' }
|
|
57
|
+
],
|
|
58
|
+
},
|
|
59
|
+
},
|
|
60
|
+
|
|
61
|
+
/**
|
|
62
|
+
* Site-wide CSS (PostCSS compiled if within ~/assets)
|
|
63
|
+
* @see https://nuxt.com/docs/getting-started/styling
|
|
64
|
+
*/
|
|
65
|
+
css: [
|
|
66
|
+
join(currentDir, './assets/css/fe-fixes.css'),
|
|
67
|
+
join(currentDir, './assets/css/tailwind.css'),
|
|
68
|
+
],
|
|
69
|
+
|
|
70
|
+
/**
|
|
71
|
+
* Nuxt.js modules
|
|
72
|
+
*/
|
|
73
|
+
modules: [
|
|
74
|
+
'@nuxt/test-utils/module',
|
|
75
|
+
'@formkit/nuxt',
|
|
76
|
+
'@nuxtjs/tailwindcss',
|
|
77
|
+
'nuxt-graphql-middleware',
|
|
78
|
+
'nuxt-easy-texts',
|
|
79
|
+
'nuxt-page-dependencies',
|
|
80
|
+
'nuxt-multi-cache',
|
|
81
|
+
'nuxt-plugin-order',
|
|
82
|
+
'vuepal',
|
|
83
|
+
'nuxt-language-negotiation',
|
|
84
|
+
'nuxt-svg-icon-sprite',
|
|
85
|
+
'@blokkli/editor',
|
|
86
|
+
'nuxt-viewport',
|
|
87
|
+
'@nuxt/eslint',
|
|
88
|
+
'@nuxt/image',
|
|
89
|
+
'shadcn-nuxt',
|
|
90
|
+
'@iqual/nuxt-icms/modules/dynamicParagraphResolver',
|
|
91
|
+
'@iqual/nuxt-icms/modules/dynamicNodeResolver'
|
|
92
|
+
],
|
|
93
|
+
|
|
94
|
+
easyTexts: {
|
|
95
|
+
pattern: [
|
|
96
|
+
'./components/**/*.{js,ts,vue}',
|
|
97
|
+
'./pages/**/*.{js,ts,vue}',
|
|
98
|
+
'./composables/**/*.{js,ts,vue}',
|
|
99
|
+
join(currentDir, './components/**/*.{js,ts,vue}'),
|
|
100
|
+
join(currentDir, './pages/**/*.{js,ts,vue}'),
|
|
101
|
+
join(currentDir, './composables/**/*.{js,ts,vue}'),
|
|
102
|
+
join(currentDir, './*.{js,ts,vue}'),
|
|
103
|
+
'./*.{js,ts,vue}',
|
|
104
|
+
],
|
|
105
|
+
generators: [
|
|
106
|
+
{
|
|
107
|
+
outputPath: './queries/translations.graphql',
|
|
108
|
+
generate: 'drupal-graphql-texts',
|
|
109
|
+
},
|
|
110
|
+
],
|
|
111
|
+
},
|
|
112
|
+
|
|
113
|
+
shadcn: {
|
|
114
|
+
/**
|
|
115
|
+
* Prefix for all the imported component
|
|
116
|
+
*/
|
|
117
|
+
prefix: '',
|
|
118
|
+
/**
|
|
119
|
+
* Directory that the component lives in.
|
|
120
|
+
* @default "./components/ui"
|
|
121
|
+
*/
|
|
122
|
+
componentDir: join(currentDir, './components/ui'),
|
|
123
|
+
},
|
|
124
|
+
|
|
125
|
+
image: {
|
|
126
|
+
provider: 'cloudflare',
|
|
127
|
+
cloudflare: {
|
|
128
|
+
baseURL: NUXT_IMAGE_CLOUDFLARE_BASE_URL
|
|
129
|
+
}
|
|
130
|
+
},
|
|
131
|
+
|
|
132
|
+
pageDependencies: {
|
|
133
|
+
checkComposableCalled: true,
|
|
134
|
+
},
|
|
135
|
+
|
|
136
|
+
pluginOrder: {
|
|
137
|
+
order: [
|
|
138
|
+
// Match plugins by their file path.
|
|
139
|
+
// Note that only a single plugin may match.
|
|
140
|
+
// The match is performed as "plugin.src.includes(v.pathMatch)".
|
|
141
|
+
{ pathMatch: 'plugins/language.ts' },
|
|
142
|
+
{ pathMatch: '@blokkli/editor/dist/runtime/plugins/blokkliEditable.js' },
|
|
143
|
+
{ pathMatch: 'staticNodes.mjs' },
|
|
144
|
+
{ pathMatch: 'formkitSSRPlugin.mjs' },
|
|
145
|
+
{ pathMatch: 'clickaway.ts' },
|
|
146
|
+
{ pathMatch: 'graphqlMiddleware.ts' },
|
|
147
|
+
{ pathMatch: 'forceHttps.js' },
|
|
148
|
+
{ pathMatch: 'nuxt-easy-texts/dist/runtime/plugins/texts.mjs' },
|
|
149
|
+
{ pathMatch: 'drupalUser.ts' },
|
|
150
|
+
{ pathMatch: 'dynamic-node-resolver.plugin.mjs' },
|
|
151
|
+
],
|
|
152
|
+
|
|
153
|
+
logSortedPlugins: false,
|
|
154
|
+
},
|
|
155
|
+
|
|
156
|
+
vuepal: {
|
|
157
|
+
frontendRouting: {
|
|
158
|
+
enabled: IS_DEV,
|
|
159
|
+
defaultLanguage: LANGCODES[0],
|
|
160
|
+
outputPath: './../drupal/config/default/frontend_routing.settings.yml',
|
|
161
|
+
},
|
|
162
|
+
adminToolbar: {
|
|
163
|
+
enabled: true,
|
|
164
|
+
},
|
|
165
|
+
localTasks: {
|
|
166
|
+
enabled: true,
|
|
167
|
+
},
|
|
168
|
+
drupalRoute: {
|
|
169
|
+
enabled: true,
|
|
170
|
+
routeQueries: {
|
|
171
|
+
nodeIcmsPage: { fragments: [
|
|
172
|
+
'nodeIcmsPage'
|
|
173
|
+
] },
|
|
174
|
+
slug: { fragments: [
|
|
175
|
+
'nodeIcmsPage',
|
|
176
|
+
]},
|
|
177
|
+
nodeCanonical: { fragments: [
|
|
178
|
+
'nodeIcmsPage',
|
|
179
|
+
]},
|
|
180
|
+
},
|
|
181
|
+
},
|
|
182
|
+
devMode: {
|
|
183
|
+
enabled: true,
|
|
184
|
+
url: `https://${NUXT_REQUEST_HOST}`,
|
|
185
|
+
forceHttps: true,
|
|
186
|
+
},
|
|
187
|
+
},
|
|
188
|
+
|
|
189
|
+
$meta: {
|
|
190
|
+
name: 'icms'
|
|
191
|
+
},
|
|
192
|
+
|
|
193
|
+
icms: {
|
|
194
|
+
components: {
|
|
195
|
+
fragments: [
|
|
196
|
+
// Layout components
|
|
197
|
+
'paragraphIcmsLayoutText',
|
|
198
|
+
'paragraphIcmsLayoutTextMedia',
|
|
199
|
+
'paragraphIcmsLayoutTeasers',
|
|
200
|
+
'paragraphIcmsLayoutHeroImage',
|
|
201
|
+
'paragraphIcmsLayoutCallToAction',
|
|
202
|
+
'paragraphIcmsLayoutCards',
|
|
203
|
+
'paragraphIcmsLayoutTextcolIconlist',
|
|
204
|
+
'paragraphIcmsLayoutContact',
|
|
205
|
+
'paragraphIcmsLayout2ColTextElements',
|
|
206
|
+
'paragraphIcmsLayoutTestimonial',
|
|
207
|
+
'paragraphIcmsLayoutFlipTeasers',
|
|
208
|
+
'paragraphIcmsLayoutTable',
|
|
209
|
+
'paragraphIcmsLayoutTabs',
|
|
210
|
+
'paragraphIcmsLayoutFaq',
|
|
211
|
+
'paragraphIcmsLayoutGallery',
|
|
212
|
+
'paragraphIcmsLayoutTextImageIntro',
|
|
213
|
+
'paragraphIcmsLayoutTestimonials',
|
|
214
|
+
'paragraphIcmsLayoutTeam',
|
|
215
|
+
'paragraphIcmsLayoutPartnerships',
|
|
216
|
+
'paragraphIcmsLayoutDownloads',
|
|
217
|
+
'paragraphIcmsLayoutMedia',
|
|
218
|
+
'paragraphIcmsLayoutDownloads',
|
|
219
|
+
'paragraphIcmsLayoutIframe',
|
|
220
|
+
// Element components
|
|
221
|
+
'paragraphIcmsButtonElement',
|
|
222
|
+
'paragraphIcmsCardElement',
|
|
223
|
+
'paragraphIcmsFaqElement',
|
|
224
|
+
'paragraphIcmsIconTextElement',
|
|
225
|
+
'paragraphIcmsTabElement',
|
|
226
|
+
'paragraphIcmsTeamElement',
|
|
227
|
+
'paragraphIcmsTestimonialElement',
|
|
228
|
+
'paragraphIcms2ColTextElement',
|
|
229
|
+
'paragraphIcmsLogoElement',
|
|
230
|
+
'paragraphIcmsPartnershipElement',
|
|
231
|
+
'paragraphIcmsIframeElement',
|
|
232
|
+
]
|
|
233
|
+
}
|
|
234
|
+
},
|
|
235
|
+
|
|
236
|
+
sourcemap: true,
|
|
237
|
+
|
|
238
|
+
nitro: {
|
|
239
|
+
compressPublicAssets: true,
|
|
240
|
+
},
|
|
241
|
+
|
|
242
|
+
hooks: {
|
|
243
|
+
'vite:extend'({ config }) {
|
|
244
|
+
if (config.server && config.server.hmr) {
|
|
245
|
+
// @ts-ignore
|
|
246
|
+
config.server.hmr.protocol = 'wss'
|
|
247
|
+
}
|
|
248
|
+
},
|
|
249
|
+
},
|
|
250
|
+
|
|
251
|
+
vite: {
|
|
252
|
+
css: {
|
|
253
|
+
devSourcemap: true,
|
|
254
|
+
},
|
|
255
|
+
server: {
|
|
256
|
+
allowedHosts: true,
|
|
257
|
+
},
|
|
258
|
+
plugins: [],
|
|
259
|
+
},
|
|
260
|
+
|
|
261
|
+
/*
|
|
262
|
+
typescript: {
|
|
263
|
+
strict: true,
|
|
264
|
+
typeCheck: true,
|
|
265
|
+
},
|
|
266
|
+
*/
|
|
267
|
+
|
|
268
|
+
formkit: {
|
|
269
|
+
autoImport: true,
|
|
270
|
+
configFile: join(currentDir, './formkit.config.ts'),
|
|
271
|
+
},
|
|
272
|
+
|
|
273
|
+
languageNegotiation: {
|
|
274
|
+
languages: LANGCODES,
|
|
275
|
+
negotiators: [
|
|
276
|
+
pathPrefix(),
|
|
277
|
+
query({ keys: ['language', 'langcode'] }),
|
|
278
|
+
acceptLanguage(),
|
|
279
|
+
],
|
|
280
|
+
debug: false,
|
|
281
|
+
},
|
|
282
|
+
|
|
283
|
+
svgIconSprite: {
|
|
284
|
+
sprites: {
|
|
285
|
+
default: {
|
|
286
|
+
importPatterns: [
|
|
287
|
+
join(currentDir, './assets/symbols/**/*.svg'),
|
|
288
|
+
'./assets/symbols/**/*.svg',
|
|
289
|
+
],
|
|
290
|
+
},
|
|
291
|
+
},
|
|
292
|
+
},
|
|
293
|
+
|
|
294
|
+
postcss: {
|
|
295
|
+
plugins: {
|
|
296
|
+
'postcss-import': {},
|
|
297
|
+
'tailwindcss/nesting': {},
|
|
298
|
+
tailwindcss: {},
|
|
299
|
+
'postcss-hexrgba': {
|
|
300
|
+
colorFunctionNotation: 'modern',
|
|
301
|
+
transformToBareValue: true,
|
|
302
|
+
},
|
|
303
|
+
cssnano: {
|
|
304
|
+
preset: 'default',
|
|
305
|
+
},
|
|
306
|
+
},
|
|
307
|
+
},
|
|
308
|
+
|
|
309
|
+
routeRules: {
|
|
310
|
+
'/_nuxt/**': {
|
|
311
|
+
cache: {
|
|
312
|
+
maxAge: ONE_YEAR,
|
|
313
|
+
},
|
|
314
|
+
headers: {
|
|
315
|
+
'cache-control': `public,max-age=${ONE_MONTH},s-maxage=${ONE_YEAR}`,
|
|
316
|
+
},
|
|
317
|
+
},
|
|
318
|
+
'/fonts/**': {
|
|
319
|
+
cache: {
|
|
320
|
+
maxAge: ONE_YEAR,
|
|
321
|
+
},
|
|
322
|
+
headers: {
|
|
323
|
+
'cache-control': `public,max-age=${ONE_MONTH},s-maxage=${ONE_YEAR}`,
|
|
324
|
+
},
|
|
325
|
+
},
|
|
326
|
+
},
|
|
327
|
+
|
|
328
|
+
blokkli: {
|
|
329
|
+
// enableThemeEditor: true,
|
|
330
|
+
theme: {
|
|
331
|
+
accent: Object.fromEntries(
|
|
332
|
+
Object.entries(tailwindColors.primary)
|
|
333
|
+
.filter(([key]) => key !== 'DEFAULT')
|
|
334
|
+
.map(([key, rgb]) => [key, transformColor(rgb as string)])
|
|
335
|
+
),
|
|
336
|
+
mono: Object.fromEntries(
|
|
337
|
+
Object.entries(tailwindColors.gray)
|
|
338
|
+
.filter(([key]) => key !== 'DEFAULT')
|
|
339
|
+
.map(([key, rgb]) => [key, transformColor(rgb as string)])
|
|
340
|
+
),
|
|
341
|
+
teal: {
|
|
342
|
+
light: [216, 243, 233],
|
|
343
|
+
normal: [131, 165, 152],
|
|
344
|
+
dark: [38, 59, 51],
|
|
345
|
+
},
|
|
346
|
+
yellow: {
|
|
347
|
+
light: [251, 241, 199],
|
|
348
|
+
normal: [250, 189, 47],
|
|
349
|
+
dark: [144, 106, 20],
|
|
350
|
+
},
|
|
351
|
+
red: {
|
|
352
|
+
light: [255, 218, 214],
|
|
353
|
+
normal: [251, 73, 52],
|
|
354
|
+
dark: [142, 24, 11],
|
|
355
|
+
},
|
|
356
|
+
lime: {
|
|
357
|
+
light: [236, 236, 197],
|
|
358
|
+
normal: [184, 187, 38],
|
|
359
|
+
dark: [80, 80, 12],
|
|
360
|
+
},
|
|
361
|
+
},
|
|
362
|
+
pattern: [
|
|
363
|
+
'./components/Paragraph/**/*.{js,ts,vue}',
|
|
364
|
+
join(currentDir, './components/Blokkli/**/*.{js,ts,vue}'),
|
|
365
|
+
],
|
|
366
|
+
globalOptions: {
|
|
367
|
+
spacingTop: {
|
|
368
|
+
type: 'radios',
|
|
369
|
+
label: 'Spacing top',
|
|
370
|
+
default: 'small',
|
|
371
|
+
options: {
|
|
372
|
+
none: 'None',
|
|
373
|
+
small: 'Small',
|
|
374
|
+
large: 'Large',
|
|
375
|
+
},
|
|
376
|
+
// displayAs: 'icons',
|
|
377
|
+
// options: {
|
|
378
|
+
// none: {
|
|
379
|
+
// label: 'None',
|
|
380
|
+
// icon: 'icon-blokkli-option-no-spacing',
|
|
381
|
+
// },
|
|
382
|
+
// small: {
|
|
383
|
+
// label: 'Small',
|
|
384
|
+
// icon: 'icon-blokkli-option-small-spacing-top',
|
|
385
|
+
// },
|
|
386
|
+
// large: {
|
|
387
|
+
// label: 'Large',
|
|
388
|
+
// icon: 'icon-blokkli-option-large-spacing-top',
|
|
389
|
+
// },
|
|
390
|
+
// },
|
|
391
|
+
},
|
|
392
|
+
spacingBottom: {
|
|
393
|
+
type: 'radios',
|
|
394
|
+
label: 'Spacing bottom',
|
|
395
|
+
default: 'small',
|
|
396
|
+
options: {
|
|
397
|
+
none: 'None',
|
|
398
|
+
small: 'Small',
|
|
399
|
+
large: 'Large',
|
|
400
|
+
},
|
|
401
|
+
// displayAs: 'icons',
|
|
402
|
+
// options: {
|
|
403
|
+
// none: {
|
|
404
|
+
// label: 'None',
|
|
405
|
+
// icon: 'icon-blokkli-option-no-spacing',
|
|
406
|
+
// },
|
|
407
|
+
// small: {
|
|
408
|
+
// label: 'Small',
|
|
409
|
+
// icon: 'icon-blokkli-option-small-spacing-bottom',
|
|
410
|
+
// },
|
|
411
|
+
// large: {
|
|
412
|
+
// label: 'Large',
|
|
413
|
+
// icon: 'icon-blokkli-option-large-spacing-bottom',
|
|
414
|
+
// },
|
|
415
|
+
// },
|
|
416
|
+
},
|
|
417
|
+
colorScheme: {
|
|
418
|
+
type: 'radios',
|
|
419
|
+
label: 'Color',
|
|
420
|
+
default: 'none',
|
|
421
|
+
displayAs: 'colors',
|
|
422
|
+
options: {
|
|
423
|
+
none: { class: 'bg-white', label: 'None' },
|
|
424
|
+
dark: { class: 'bg-gray-950', label: 'dark' },
|
|
425
|
+
light: { class: 'bg-gray-100', label: 'Light' },
|
|
426
|
+
accent: { class: 'bg-primary-600', label: 'Accent' },
|
|
427
|
+
},
|
|
428
|
+
},
|
|
429
|
+
textWidth: {
|
|
430
|
+
type: 'radios',
|
|
431
|
+
label: 'Text width',
|
|
432
|
+
default: 'wide',
|
|
433
|
+
options: {
|
|
434
|
+
wide: 'Wide',
|
|
435
|
+
medium: 'Medium',
|
|
436
|
+
narrow: 'Narrow',
|
|
437
|
+
},
|
|
438
|
+
},
|
|
439
|
+
textAlign: {
|
|
440
|
+
type: 'radios',
|
|
441
|
+
label: 'Text alignment',
|
|
442
|
+
default: 'left',
|
|
443
|
+
options: {
|
|
444
|
+
left: 'Left',
|
|
445
|
+
center: 'Center',
|
|
446
|
+
right: 'Right',
|
|
447
|
+
},
|
|
448
|
+
},
|
|
449
|
+
textColumns: {
|
|
450
|
+
type: 'radios',
|
|
451
|
+
label: 'Text columns',
|
|
452
|
+
default: 'one',
|
|
453
|
+
options: {
|
|
454
|
+
one: 'One',
|
|
455
|
+
two: 'Two',
|
|
456
|
+
three: 'Three',
|
|
457
|
+
},
|
|
458
|
+
},
|
|
459
|
+
buttonAlignment: {
|
|
460
|
+
type: 'radios',
|
|
461
|
+
label: 'Button alignment',
|
|
462
|
+
default: 'left',
|
|
463
|
+
options: {
|
|
464
|
+
left: 'Left',
|
|
465
|
+
center: 'Center',
|
|
466
|
+
right: 'Right',
|
|
467
|
+
},
|
|
468
|
+
},
|
|
469
|
+
width: {
|
|
470
|
+
type: 'radios',
|
|
471
|
+
label: 'Width',
|
|
472
|
+
default: 'page',
|
|
473
|
+
options: {
|
|
474
|
+
full: 'Full-width',
|
|
475
|
+
page: 'Page-width',
|
|
476
|
+
narrow: 'Narrow',
|
|
477
|
+
},
|
|
478
|
+
},
|
|
479
|
+
textShadow: {
|
|
480
|
+
type: 'radios',
|
|
481
|
+
label: 'Text shadow',
|
|
482
|
+
default: 'none',
|
|
483
|
+
displayAs: 'colors',
|
|
484
|
+
options: {
|
|
485
|
+
none: { class: 'bg-white', label: 'None' },
|
|
486
|
+
light: { class: 'bg-gray-200', label: 'Light' },
|
|
487
|
+
dark: { class: 'bg-gray-500', label: 'Dark' },
|
|
488
|
+
darker: { class: 'bg-gray-900', label: 'Darker' },
|
|
489
|
+
},
|
|
490
|
+
},
|
|
491
|
+
colorMode: {
|
|
492
|
+
type: 'radios',
|
|
493
|
+
label: 'Color mode',
|
|
494
|
+
default: 'none',
|
|
495
|
+
displayAs: 'colors',
|
|
496
|
+
options: {
|
|
497
|
+
none: { class: 'bg-grey-200', label: 'None' },
|
|
498
|
+
dark: { class: 'bg-black', label: 'Dark' },
|
|
499
|
+
light: { class: 'bg-white', label: 'Light' },
|
|
500
|
+
},
|
|
501
|
+
},
|
|
502
|
+
reverseColumns: {
|
|
503
|
+
type: 'checkbox',
|
|
504
|
+
label: 'Reverse columns',
|
|
505
|
+
default: false,
|
|
506
|
+
},
|
|
507
|
+
},
|
|
508
|
+
translations: {
|
|
509
|
+
en: {
|
|
510
|
+
editIndicatorLabel: 'Edit paragraphs',
|
|
511
|
+
},
|
|
512
|
+
de: {
|
|
513
|
+
editIndicatorLabel: 'Abschnitte bearbeiten',
|
|
514
|
+
},
|
|
515
|
+
},
|
|
516
|
+
chunkNames: ['global', 'rare'],
|
|
517
|
+
itemEntityType: 'paragraph',
|
|
518
|
+
storageDefaults: {
|
|
519
|
+
blockFavorites: ['text'],
|
|
520
|
+
},
|
|
521
|
+
schemaOptionsPath: IS_DEV
|
|
522
|
+
? '../drupal/docroot/libraries/icms-blokkli-customization/data/schema.json'
|
|
523
|
+
: undefined,
|
|
524
|
+
defaultLanguage: LANGCODES[0],
|
|
525
|
+
// Make sure the editor is always rendered in German instead of the
|
|
526
|
+
// current page language.
|
|
527
|
+
forceDefaultLanguage: false,
|
|
528
|
+
},
|
|
529
|
+
|
|
530
|
+
viewport: {
|
|
531
|
+
breakpoints: {
|
|
532
|
+
...Object.fromEntries(
|
|
533
|
+
Object.entries(fullTailwindConfig.theme.screens).map((entry) => {
|
|
534
|
+
return [entry[0], parseInt(entry[1])]
|
|
535
|
+
}),
|
|
536
|
+
),
|
|
537
|
+
},
|
|
538
|
+
defaultBreakpoints: {
|
|
539
|
+
desktop: 'lg',
|
|
540
|
+
tablet: 'md',
|
|
541
|
+
mobile: 'ss',
|
|
542
|
+
},
|
|
543
|
+
fallbackBreakpoint: 'lg',
|
|
544
|
+
},
|
|
545
|
+
|
|
546
|
+
experimental: {
|
|
547
|
+
asyncContext: true,
|
|
548
|
+
},
|
|
549
|
+
|
|
550
|
+
compatibilityDate: '2024-08-14',
|
|
551
|
+
})
|
package/package.json
ADDED
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@iqual/nuxt-icms",
|
|
3
|
+
"version": "1.0.2",
|
|
4
|
+
"description": "ICMS Base",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"private": false,
|
|
7
|
+
"main": "./nuxt.config.ts",
|
|
8
|
+
"scripts": {
|
|
9
|
+
"styles:ckeditor": "postcss --config ./config/postcss-drupal ./assets/css/ckeditor.css -o ./../../../drupal/docroot/libraries/icms-blokkli-customization/css/ckeditor.css",
|
|
10
|
+
"styles:backend": "postcss --config ./config/postcss-drupal ./assets/css/backend.css -o ./../../../drupal/docroot/libraries/icms-blokkli-customization/css/backend.css",
|
|
11
|
+
"styles:backend:watch": "postcss --config ./config/postcss-drupal ./assets/css/backend.css -o ./../../../drupal/docroot/libraries/icms-blokkli-customization/css/backend.css --watch"
|
|
12
|
+
},
|
|
13
|
+
"dependencies": {
|
|
14
|
+
"@blokkli/editor": "^1.3.4",
|
|
15
|
+
"@elastic/elasticsearch": "^8.18.2",
|
|
16
|
+
"@formkit/addons": "^1.6.9",
|
|
17
|
+
"@formkit/icons": "^1.6.9",
|
|
18
|
+
"@formkit/inputs": "^1.6.9",
|
|
19
|
+
"@formkit/nuxt": "^1.6.9",
|
|
20
|
+
"@iframe-resizer/child": "^5.4.6",
|
|
21
|
+
"@iframe-resizer/vue": "^5.4.6",
|
|
22
|
+
"@nuxtjs/color-mode": "^3.5.2",
|
|
23
|
+
"@tailwindcss/container-queries": "^0.1.1",
|
|
24
|
+
"@vueuse/core": "^12.8.2",
|
|
25
|
+
"caniuse-lite": "^1.0.30001718",
|
|
26
|
+
"class-variance-authority": "^0.7.1",
|
|
27
|
+
"clsx": "^2.1.1",
|
|
28
|
+
"embla-carousel-vue": "^8.6.0",
|
|
29
|
+
"lucide-vue-next": "^0.469.0",
|
|
30
|
+
"nuxt-easy-texts": "^2.0.0",
|
|
31
|
+
"nuxt-graphql-middleware": "^5.1.0",
|
|
32
|
+
"nuxt-language-negotiation": "^2.0.0",
|
|
33
|
+
"nuxt-multi-cache": "^3.4.0",
|
|
34
|
+
"nuxt-page-dependencies": "^1.1.0",
|
|
35
|
+
"nuxt-plugin-order": "^1.0.0",
|
|
36
|
+
"nuxt-svg-icon-sprite": "^2.0.0",
|
|
37
|
+
"patch-package": "^8.0.0",
|
|
38
|
+
"radix-vue": "^1.9.17",
|
|
39
|
+
"swiper": "^10.3.1",
|
|
40
|
+
"tailwind-merge": "^2.6.0",
|
|
41
|
+
"tailwind-variants": "^0.3.1",
|
|
42
|
+
"tailwindcss-animate": "^1.0.7",
|
|
43
|
+
"vue3-carousel": "0.3.1",
|
|
44
|
+
"vue3-click-away": "^1.2.4",
|
|
45
|
+
"vuepal": "^3.0.1"
|
|
46
|
+
},
|
|
47
|
+
"devDependencies": {
|
|
48
|
+
"@nuxt/image": "^1.10.0",
|
|
49
|
+
"@nuxt/scripts": "^0.11.7",
|
|
50
|
+
"@nuxtjs/tailwindcss": "^6.14.0",
|
|
51
|
+
"@nuxtjs/turnstile": "1.0.0",
|
|
52
|
+
"@types/iframe-resizer": "^4.0.0",
|
|
53
|
+
"nuxt-viewport": "^2.3.1",
|
|
54
|
+
"postcss-cli": "^11.0.1",
|
|
55
|
+
"postcss-hexrgba": "github:thormeier/postcss-hexrgba",
|
|
56
|
+
"postcss-nesting": "^13.0.1",
|
|
57
|
+
"sass": "^1.89.0",
|
|
58
|
+
"shadcn-nuxt": "^0.11.4"
|
|
59
|
+
},
|
|
60
|
+
"peerDependencies": {
|
|
61
|
+
"nuxt": "^3.17.4",
|
|
62
|
+
"vue": "^3.5.14"
|
|
63
|
+
}
|
|
64
|
+
}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<component :is="pageComponent" v-bind="node"/>
|
|
3
|
+
</template>
|
|
4
|
+
|
|
5
|
+
<script lang="ts" setup>
|
|
6
|
+
|
|
7
|
+
const { $resolveDynamicNodeComponent } = useNuxtApp()
|
|
8
|
+
|
|
9
|
+
defineOptions({
|
|
10
|
+
name: 'PageSlug',
|
|
11
|
+
})
|
|
12
|
+
|
|
13
|
+
definePageMeta({
|
|
14
|
+
name: 'drupal-route',
|
|
15
|
+
path: '/:slug(.*)*',
|
|
16
|
+
})
|
|
17
|
+
|
|
18
|
+
const { entity: node } = await useDrupalRouteQuery('slug')
|
|
19
|
+
|
|
20
|
+
const contentType = computed(() => node.value?.__typename)
|
|
21
|
+
|
|
22
|
+
const pageComponent = computed(() => {
|
|
23
|
+
return $resolveDynamicNodeComponent(contentType.value)
|
|
24
|
+
})
|
|
25
|
+
|
|
26
|
+
await renderPageDependencies()
|
|
27
|
+
</script>
|