@iqual/nuxt-icms 1.3.0 → 1.4.0
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/assets/symbols/chevron-right.svg +1 -1
- package/components/Blokkli/HeroImage/index.vue +1 -1
- package/components/Blokkli/Teasers/icon.svg +3 -3
- package/components/DesignSystem/Atoms/Button.vue +86 -36
- package/components/DesignSystem/Atoms/Caption.vue +10 -10
- package/components/DesignSystem/Atoms/Container.vue +10 -6
- package/components/DesignSystem/Atoms/GridRow.vue +4 -3
- package/components/DesignSystem/Atoms/LinkListItem.vue +31 -8
- package/components/DesignSystem/Molecules/ButtonGroup.vue +18 -3
- package/components/DesignSystem/Molecules/Card.vue +86 -31
- package/components/DesignSystem/Molecules/IconText.vue +37 -16
- package/components/DesignSystem/Molecules/MediaLightbox.vue +213 -58
- package/components/DesignSystem/Molecules/MediaSlider.vue +88 -25
- package/components/DesignSystem/Molecules/Partnership.vue +40 -9
- package/components/DesignSystem/Molecules/Table.vue +90 -25
- package/components/DesignSystem/Molecules/TitleComposition.vue +15 -12
- package/components/DesignSystem/Organisms/ContentBlock.vue +61 -15
- package/components/DesignSystem/Organisms/FacetedListing.vue +170 -0
- package/components/DesignSystem/Organisms/FlipTeaser.vue +119 -47
- package/components/DesignSystem/Organisms/HeaderHero.vue +167 -0
- package/components/DesignSystem/Organisms/HeaderTextImage.vue +71 -0
- package/components/DesignSystem/Organisms/LogoElement.vue +33 -10
- package/components/DesignSystem/Organisms/Map.vue +11 -6
- package/components/DesignSystem/Organisms/SearchResults.vue +41 -0
- package/components/DesignSystem/Organisms/TeamElement.vue +84 -20
- package/components/DesignSystem/Organisms/TeaserCard.vue +87 -34
- package/components/DesignSystem/Organisms/Testimonial.vue +82 -12
- package/components/DesignSystem/Organisms/TimelineElement.vue +42 -12
- package/components/DesignSystem/Organisms/TwoColumnTextElement.vue +44 -9
- package/components/DesignSystem/Pages/Search.vue +39 -0
- package/components/Drupal/Breadcrumb/index.vue +16 -5
- package/components/Drupal/Messages/index.vue +16 -5
- package/components/Drupal/Webform/fragment.graphql +8 -5
- package/components/Drupal/Webform/index.vue +20 -9
- package/components/Drupal/Webform/query.graphql +18 -16
- package/components/Form/CheckboxInput.vue +6 -6
- package/components/Form/CheckboxInputs.vue +5 -5
- package/components/Form/FileUploadInput.vue +6 -6
- package/components/Form/RadioButtonsInput.vue +5 -5
- package/components/Form/SelectInput.vue +7 -7
- package/components/Form/SubmitButton.vue +1 -1
- package/components/Form/TextAreaInput.vue +2 -2
- package/components/Form/TextEmailInput.vue +2 -2
- package/components/Form/TextInput.vue +2 -2
- package/components/Form/TextPhoneInput.vue +2 -2
- package/components/Form/composables/useFormElement.ts +5 -5
- package/components/Form/utils/types.ts +8 -7
- package/components/Media/Icon/index.vue +10 -6
- package/components/Media/Image/index.vue +26 -20
- package/components/Media/RemoteVideo/index.vue +34 -21
- package/components/Media/Video/index.vue +6 -5
- package/components/Node/Icms/Page/Teaser/index.vue +6 -4
- package/components/Node/Icms/Page/index.vue +2 -2
- package/components/Paragraph/Button/Element/index.vue +9 -2
- package/components/Paragraph/CallToAction/index.vue +43 -10
- package/components/Paragraph/Card/Element/index.vue +2 -1
- package/components/Paragraph/Card/Layout/index.vue +29 -10
- package/components/Paragraph/Contact/index.vue +41 -12
- package/components/Paragraph/Downloads/index.vue +82 -33
- package/components/Paragraph/FAQ/Element/index.vue +41 -12
- package/components/Paragraph/FAQ/Layout/index.vue +47 -13
- package/components/Paragraph/FlipTeasers/index.vue +26 -6
- package/components/Paragraph/Gallery/index.vue +42 -10
- package/components/Paragraph/HeroImage/index.vue +62 -16
- package/components/Paragraph/IconText/Element/index.vue +7 -1
- package/components/Paragraph/IconText/Layout/index.vue +39 -12
- package/components/Paragraph/Introduction/index.vue +50 -15
- package/components/Paragraph/Logo/Element/fragment.graphql +1 -0
- package/components/Paragraph/Logo/Element/index.vue +7 -2
- package/components/Paragraph/Media/index.vue +32 -31
- package/components/Paragraph/Partnerships/Element/fragment.graphql +1 -0
- package/components/Paragraph/Partnerships/Element/index.vue +7 -0
- package/components/Paragraph/Partnerships/Layout/index.vue +100 -27
- package/components/Paragraph/SingleTestimonial/index.vue +58 -15
- package/components/Paragraph/Table/index.vue +32 -9
- package/components/Paragraph/Tabs/Element/index.vue +44 -10
- package/components/Paragraph/Tabs/Layout/index.vue +123 -37
- package/components/Paragraph/Team/Element/index.vue +18 -1
- package/components/Paragraph/Team/Layout/index.vue +30 -7
- package/components/Paragraph/Teasers/index.vue +33 -7
- package/components/Paragraph/Testimonial/Element/index.vue +30 -5
- package/components/Paragraph/Testimonial/Layout/index.vue +78 -24
- package/components/Paragraph/Text/index.vue +32 -10
- package/components/Paragraph/TextMedia/index.vue +44 -13
- package/components/Paragraph/Timeline/Element/index.vue +23 -7
- package/components/Paragraph/Timeline/Layout/index.vue +232 -67
- package/components/Paragraph/TwoColumnText/Element/index.vue +20 -3
- package/components/Paragraph/TwoColumnText/Layout/index.vue +8 -1
- package/components/Paragraph/iFrame/index.vue +31 -11
- package/components/Search/Facets/FacetDropdownUI.vue +351 -77
- package/components/Search/Facets/FacetedSearchUI.vue +257 -101
- package/components/Search/Facets/fragment.graphql +5 -1
- package/components/Search/Input/index.vue +125 -0
- package/components/Section/Footer/index.vue +170 -30
- package/components/Section/Header/Buttons.vue +34 -0
- package/components/Section/Header/DesktopMainMenu.vue +160 -0
- package/components/Section/Header/DesktopMainMenuDropdown.vue +170 -0
- package/components/Section/Header/LanguageDropdown.vue +95 -64
- package/components/Section/Header/LanguageLinks.vue +39 -0
- package/components/Section/Header/Logo.vue +23 -0
- package/components/Section/Header/MainButtons.vue +31 -0
- package/components/Section/Header/MenuIcon.vue +60 -49
- package/components/Section/Header/MetaButtons.vue +31 -0
- package/components/Section/Header/MetaMenu.vue +55 -53
- package/components/Section/Header/MobileMainMenu.vue +23 -0
- package/components/Section/Header/MobileMainMenuItem.vue +191 -0
- package/components/Section/Header/index.vue +182 -186
- package/composables/useMenu.ts +2 -2
- package/composables/useMobileMenuOverlayBus.ts +44 -0
- package/composables/useNavigationOffset.ts +2 -2
- package/composables/useTheme.ts +107 -0
- package/formkit.theme.ts +541 -586
- package/layouts/default.vue +7 -35
- package/layouts/error.vue +7 -32
- package/nuxt.config.ts +13 -0
- package/package.json +1 -1
- package/plugins/initData.ts +8 -5
- package/queries/query.initData.graphql +4 -2
- package/tailwind.config.ts +11 -11
- package/types/global.ts +1 -0
- package/components/Section/Header/GlobalMenu.vue +0 -335
- package/components/Section/Header/LanguageSwitcher.vue +0 -37
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
<svg width="23" height="23" viewBox="0 0 23 23" fill="none" xmlns="http://www.w3.org/2000/svg">
|
|
2
|
-
<path d="M8.75 17L14.25 11.5L8.75 6" stroke="
|
|
2
|
+
<path d="M8.75 17L14.25 11.5L8.75 6" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round"/>
|
|
3
3
|
</svg>
|
|
@@ -9,7 +9,7 @@ const props = defineProps<ParagraphIcmsLayoutHeroImageFragment>()
|
|
|
9
9
|
|
|
10
10
|
const blokkliData = defineBlokkli({
|
|
11
11
|
bundle: 'icms_layout_hero_image',
|
|
12
|
-
globalOptions: ['buttonAlignment', 'textShadow', 'colorMode', 'reverseColumns'],
|
|
12
|
+
globalOptions: ['buttonAlignment', 'textShadow', 'colorMode', 'reverseColumns', 'imageAlignment'],
|
|
13
13
|
})
|
|
14
14
|
|
|
15
15
|
</script>
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
<svg width="30" height="30" viewBox="0 0 30 30" fill="none" xmlns="http://www.w3.org/2000/svg">
|
|
2
2
|
<title>Teasers (layout)</title>
|
|
3
|
-
<rect x="0.75" y="4.75" width="24.5" height="24.5" rx="1.25" fill="none"
|
|
4
|
-
<path d="M26 27H27C28.1046 27 29 26.1046 29 25V3C29 1.89543 28.1046 1 27 1H5C3.89543 1 3 1.89543 3 3V4" fill="none"
|
|
5
|
-
<path d="M11.8 20.6H8.8C8.32261 20.6 7.86477 20.4104 7.52721 20.0728C7.18964 19.7352 7 19.2774 7 18.8V18.2M11.8 20.6L10 22.4M11.8 20.6L10 18.8M14.2 11C14.5183 11 14.8235 11.1264 15.0485 11.3515C15.2736 11.5765 15.4 11.8817 15.4 12.2V14.6C15.4 14.9183 15.2736 15.2235 15.0485 15.4485C14.8235 15.6736 14.5183 15.8 14.2 15.8M17.8 11C18.1183 11 18.4235 11.1264 18.6485 11.3515C18.8736 11.5765 19 11.8817 19 12.2V14.6C19 14.9183 18.8736 15.2235 18.6485 15.4485C18.4235 15.6736 18.1183 15.8 17.8 15.8M15.4 18.2H17.8C18.4627 18.2 19 18.7373 19 19.4V21.8C19 22.4627 18.4627 23 17.8 23H15.4C14.7373 23 14.2 22.4627 14.2 21.8V19.4C14.2 18.7373 14.7373 18.2 15.4 18.2ZM8.2 11H10.6C11.2627 11 11.8 11.5373 11.8 12.2V14.6C11.8 15.2627 11.2627 15.8 10.6 15.8H8.2C7.53726 15.8 7 15.2627 7 14.6V12.2C7 11.5373 7.53726 11 8.2 11Z" fill="none"
|
|
3
|
+
<rect x="0.75" y="4.75" width="24.5" height="24.5" rx="1.25" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linejoin="round"/>
|
|
4
|
+
<path d="M26 27H27C28.1046 27 29 26.1046 29 25V3C29 1.89543 28.1046 1 27 1H5C3.89543 1 3 1.89543 3 3V4" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linejoin="round"/>
|
|
5
|
+
<path d="M11.8 20.6H8.8C8.32261 20.6 7.86477 20.4104 7.52721 20.0728C7.18964 19.7352 7 19.2774 7 18.8V18.2M11.8 20.6L10 22.4M11.8 20.6L10 18.8M14.2 11C14.5183 11 14.8235 11.1264 15.0485 11.3515C15.2736 11.5765 15.4 11.8817 15.4 12.2V14.6C15.4 14.9183 15.2736 15.2235 15.0485 15.4485C14.8235 15.6736 14.5183 15.8 14.2 15.8M17.8 11C18.1183 11 18.4235 11.1264 18.6485 11.3515C18.8736 11.5765 19 11.8817 19 12.2V14.6C19 14.9183 18.8736 15.2235 18.6485 15.4485C18.4235 15.6736 18.1183 15.8 17.8 15.8M15.4 18.2H17.8C18.4627 18.2 19 18.7373 19 19.4V21.8C19 22.4627 18.4627 23 17.8 23H15.4C14.7373 23 14.2 22.4627 14.2 21.8V19.4C14.2 18.7373 14.7373 18.2 15.4 18.2ZM8.2 11H10.6C11.2627 11 11.8 11.5373 11.8 12.2V14.6C11.8 15.2627 11.2627 15.8 10.6 15.8H8.2C7.53726 15.8 7 15.2627 7 14.6V12.2C7 11.5373 7.53726 11 8.2 11Z" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
|
|
6
6
|
</svg>
|
|
@@ -1,20 +1,34 @@
|
|
|
1
1
|
<template>
|
|
2
2
|
<NuxtLink
|
|
3
|
-
:class="
|
|
3
|
+
:class="
|
|
4
|
+
cn(
|
|
5
|
+
button({ colorScheme, style, textAlignment }),
|
|
6
|
+
themedClass('buttonClass'),
|
|
7
|
+
)
|
|
8
|
+
"
|
|
4
9
|
:target="targetBlank ? '_blank' : '_self'"
|
|
5
10
|
:to="linkComplete"
|
|
6
11
|
:title="title"
|
|
7
12
|
:prefetch="prefetch"
|
|
8
13
|
>
|
|
9
|
-
<span class="block">{{ label }}</span>
|
|
10
|
-
<span
|
|
14
|
+
<span class="block" :class="themedClass('labelClass')">{{ label }}</span>
|
|
15
|
+
<span
|
|
16
|
+
v-if="subline"
|
|
17
|
+
class="block"
|
|
18
|
+
:class="themedClass('sublineClass', 'text-sm font-light')"
|
|
19
|
+
>{{ subline }}</span
|
|
20
|
+
>
|
|
11
21
|
</NuxtLink>
|
|
12
22
|
</template>
|
|
13
23
|
|
|
14
24
|
<script lang="ts" setup>
|
|
25
|
+
import type { ColorScheme } from '@iqual/nuxt-icms/types/global'
|
|
15
26
|
import cn from '@iqual/nuxt-icms/composables/useCn'
|
|
27
|
+
import { useTheme } from '@iqual/nuxt-icms/composables/useTheme'
|
|
16
28
|
import { tv } from 'tailwind-variants'
|
|
17
29
|
|
|
30
|
+
const themedClass = useTheme()
|
|
31
|
+
|
|
18
32
|
const props = defineProps<{
|
|
19
33
|
label?: string
|
|
20
34
|
subline?: string
|
|
@@ -23,108 +37,144 @@ const props = defineProps<{
|
|
|
23
37
|
params?: string
|
|
24
38
|
targetBlank?: boolean
|
|
25
39
|
style?: string
|
|
26
|
-
colorScheme?:
|
|
40
|
+
colorScheme?: ColorScheme
|
|
27
41
|
textAlignment?: string
|
|
28
42
|
buttonClass?: string
|
|
43
|
+
labelClass?: string
|
|
44
|
+
sublineClass?: string
|
|
29
45
|
}>()
|
|
30
46
|
|
|
31
47
|
const button = tv({
|
|
32
|
-
base:
|
|
48
|
+
base: themedClass(
|
|
49
|
+
'buttonBase',
|
|
50
|
+
'cursor-pointer font-medium py-3 px-10 duration-200 ease-in-out block w-full md:w-fit',
|
|
51
|
+
),
|
|
33
52
|
variants: {
|
|
34
53
|
colorScheme: {
|
|
35
|
-
none: '',
|
|
36
|
-
dark: '',
|
|
37
|
-
light: '',
|
|
38
|
-
accent: '',
|
|
54
|
+
none: themedClass('buttonVariantsColorSchemeNone'),
|
|
55
|
+
dark: themedClass('buttonVariantsColorSchemeDark'),
|
|
56
|
+
light: themedClass('buttonVariantsColorSchemeLight'),
|
|
57
|
+
accent: themedClass('buttonVariantsColorSchemeAccent'),
|
|
39
58
|
},
|
|
40
59
|
style: {
|
|
41
|
-
normal: '',
|
|
42
|
-
focus: '',
|
|
43
|
-
minimal:
|
|
60
|
+
normal: themedClass('buttonVariantsStyleNormal', 'border'),
|
|
61
|
+
focus: themedClass('buttonVariantsStyleFocus', 'border'),
|
|
62
|
+
minimal: themedClass(
|
|
63
|
+
'buttonVariantsStyleMinimal',
|
|
64
|
+
'p-0 underline text-current',
|
|
65
|
+
),
|
|
44
66
|
},
|
|
45
67
|
textAlignment: {
|
|
46
|
-
left: 'text-left',
|
|
47
|
-
center: 'text-center',
|
|
48
|
-
right: 'text-right',
|
|
68
|
+
left: themedClass('buttonVariantsTextAlignmentLeft', 'text-left'),
|
|
69
|
+
center: themedClass('buttonVariantsTextAlignmentCenter', 'text-center'),
|
|
70
|
+
right: themedClass('buttonVariantsTextAlignmentRight', 'text-right'),
|
|
49
71
|
},
|
|
50
72
|
},
|
|
51
73
|
compoundVariants: [
|
|
52
74
|
{
|
|
53
75
|
colorScheme: 'none',
|
|
54
76
|
style: 'normal',
|
|
55
|
-
class:
|
|
56
|
-
'
|
|
77
|
+
class: themedClass(
|
|
78
|
+
'buttonCompoundVariantsNoneNormal',
|
|
79
|
+
'bg-white text-primary hover:bg-primary hover:text-white border-primary',
|
|
80
|
+
),
|
|
57
81
|
},
|
|
58
82
|
{
|
|
59
83
|
colorScheme: 'none',
|
|
60
84
|
style: 'focus',
|
|
61
|
-
class:
|
|
62
|
-
'
|
|
85
|
+
class: themedClass(
|
|
86
|
+
'buttonCompoundVariantsNoneFocus',
|
|
87
|
+
'bg-primary text-white hover:bg-white hover:text-primary border-primary',
|
|
88
|
+
),
|
|
63
89
|
},
|
|
64
90
|
{
|
|
65
91
|
colorScheme: 'none',
|
|
66
92
|
style: 'minimal',
|
|
67
|
-
class:
|
|
93
|
+
class: themedClass(
|
|
94
|
+
'buttonCompoundVariantsNoneMinimal',
|
|
95
|
+
'text-primary hover:text-gray-950',
|
|
96
|
+
),
|
|
68
97
|
},
|
|
69
98
|
|
|
70
99
|
{
|
|
71
100
|
colorScheme: 'light',
|
|
72
101
|
style: 'normal',
|
|
73
|
-
class:
|
|
74
|
-
'
|
|
102
|
+
class: themedClass(
|
|
103
|
+
'buttonCompoundVariantsLightNormal',
|
|
104
|
+
'bg-gray-50 text-primary hover:bg-primary hover:text-gray-50 border-primary',
|
|
105
|
+
),
|
|
75
106
|
},
|
|
76
107
|
{
|
|
77
108
|
colorScheme: 'light',
|
|
78
109
|
style: 'focus',
|
|
79
|
-
class:
|
|
80
|
-
'
|
|
110
|
+
class: themedClass(
|
|
111
|
+
'buttonCompoundVariantsLightFocus',
|
|
112
|
+
'bg-primary text-gray-50 hover:bg-gray-50 hover:text-primary border-primary',
|
|
113
|
+
),
|
|
81
114
|
},
|
|
82
115
|
{
|
|
83
116
|
colorScheme: 'light',
|
|
84
117
|
style: 'minimal',
|
|
85
|
-
class:
|
|
118
|
+
class: themedClass(
|
|
119
|
+
'buttonCompoundVariantsLightMinimal',
|
|
120
|
+
'text-primary hover:text-gray-950',
|
|
121
|
+
),
|
|
86
122
|
},
|
|
87
123
|
|
|
88
124
|
{
|
|
89
125
|
colorScheme: 'dark',
|
|
90
126
|
style: 'normal',
|
|
91
|
-
class:
|
|
92
|
-
'
|
|
127
|
+
class: themedClass(
|
|
128
|
+
'buttonCompoundVariantsDarkNormal',
|
|
129
|
+
'bg-gray-950 text-white hover:bg-white hover:text-gray-950 border-white',
|
|
130
|
+
),
|
|
93
131
|
},
|
|
94
132
|
{
|
|
95
133
|
colorScheme: 'dark',
|
|
96
134
|
style: 'focus',
|
|
97
|
-
class:
|
|
98
|
-
'
|
|
135
|
+
class: themedClass(
|
|
136
|
+
'buttonCompoundVariantsDarkFocus',
|
|
137
|
+
'bg-primary text-gray-950 hover:bg-gray-950 hover:text-primary border-primary',
|
|
138
|
+
),
|
|
99
139
|
},
|
|
100
140
|
{
|
|
101
141
|
colorScheme: 'dark',
|
|
102
142
|
style: 'minimal',
|
|
103
|
-
class:
|
|
143
|
+
class: themedClass(
|
|
144
|
+
'buttonCompoundVariantsDarkMinimal',
|
|
145
|
+
'text-primary hover:text-white',
|
|
146
|
+
),
|
|
104
147
|
},
|
|
105
148
|
|
|
106
149
|
{
|
|
107
150
|
colorScheme: 'accent',
|
|
108
151
|
style: 'normal',
|
|
109
|
-
class:
|
|
110
|
-
'
|
|
152
|
+
class: themedClass(
|
|
153
|
+
'buttonCompoundVariantsAccentNormal',
|
|
154
|
+
'bg-primary-600 text-white hover:bg-white hover:text-gray-950 border-white',
|
|
155
|
+
),
|
|
111
156
|
},
|
|
112
157
|
{
|
|
113
158
|
colorScheme: 'accent',
|
|
114
159
|
style: 'focus',
|
|
115
|
-
class:
|
|
116
|
-
'
|
|
160
|
+
class: themedClass(
|
|
161
|
+
'buttonCompoundVariantsAccentFocus',
|
|
162
|
+
'bg-gray-950 text-white hover:bg-white hover:text-gray-950 border-gray-950 hover:border-white',
|
|
163
|
+
),
|
|
117
164
|
},
|
|
118
165
|
{
|
|
119
166
|
colorScheme: 'accent',
|
|
120
167
|
style: 'minimal',
|
|
121
|
-
class:
|
|
168
|
+
class: themedClass(
|
|
169
|
+
'buttonCompoundVariantsAccentMinimal',
|
|
170
|
+
'hover:text-gray-950',
|
|
171
|
+
),
|
|
122
172
|
},
|
|
123
173
|
],
|
|
124
174
|
defaultVariants: {
|
|
125
175
|
colorScheme: 'none',
|
|
126
176
|
style: 'normal',
|
|
127
|
-
textAlignment: '
|
|
177
|
+
textAlignment: 'center',
|
|
128
178
|
},
|
|
129
179
|
})
|
|
130
180
|
|
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
<template>
|
|
2
|
-
<p :class="captionClass
|
|
2
|
+
<p :class="themedClass('captionClass', 'text-lg text-gray-400')">
|
|
3
|
+
{{ caption }}
|
|
4
|
+
</p>
|
|
3
5
|
</template>
|
|
4
6
|
|
|
5
7
|
<script setup lang="ts">
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
},
|
|
14
|
-
)
|
|
8
|
+
import { useTheme } from '@iqual/nuxt-icms/composables/useTheme'
|
|
9
|
+
const themedClass = useTheme()
|
|
10
|
+
|
|
11
|
+
defineProps<{
|
|
12
|
+
caption?: string
|
|
13
|
+
captionClass?: string
|
|
14
|
+
}>()
|
|
15
15
|
</script>
|
|
@@ -1,13 +1,17 @@
|
|
|
1
1
|
<template>
|
|
2
|
-
<section :class="containerClassList">
|
|
2
|
+
<section :class="themedClass('class', containerClassList)">
|
|
3
3
|
<slot />
|
|
4
4
|
</section>
|
|
5
5
|
</template>
|
|
6
6
|
|
|
7
7
|
<script lang="ts" setup>
|
|
8
|
+
import type { ColorScheme } from '@iqual/nuxt-icms/types/global'
|
|
9
|
+
import { useTheme } from '@iqual/nuxt-icms/composables/useTheme'
|
|
10
|
+
const themedClass = useTheme()
|
|
11
|
+
|
|
8
12
|
const props = withDefaults(
|
|
9
13
|
defineProps<{
|
|
10
|
-
colorScheme?:
|
|
14
|
+
colorScheme?: ColorScheme
|
|
11
15
|
spacing?: {
|
|
12
16
|
top?: string
|
|
13
17
|
bottom?: string
|
|
@@ -25,14 +29,14 @@ const props = withDefaults(
|
|
|
25
29
|
|
|
26
30
|
const containerClassList = computed(() => {
|
|
27
31
|
const classList = []
|
|
28
|
-
if (props.
|
|
29
|
-
classList.push(
|
|
32
|
+
if (props.colorScheme === 'none') {
|
|
33
|
+
classList.push('bg-white text-gray-950')
|
|
30
34
|
}
|
|
31
35
|
if (props.colorScheme === 'dark') {
|
|
32
36
|
classList.push('bg-gray-950 text-white')
|
|
33
37
|
}
|
|
34
38
|
if (props.colorScheme === 'light') {
|
|
35
|
-
classList.push('bg-gray-50')
|
|
39
|
+
classList.push('bg-gray-50 text-gray-950')
|
|
36
40
|
}
|
|
37
41
|
if (props.colorScheme === 'accent') {
|
|
38
42
|
classList.push('bg-primary-600 text-white')
|
|
@@ -49,6 +53,6 @@ const containerClassList = computed(() => {
|
|
|
49
53
|
if (props.spacing.bottom === 'large') {
|
|
50
54
|
classList.push('pb-24 md:pb-32')
|
|
51
55
|
}
|
|
52
|
-
return classList
|
|
56
|
+
return classList.join(' ')
|
|
53
57
|
})
|
|
54
58
|
</script>
|
|
@@ -1,13 +1,14 @@
|
|
|
1
1
|
<template>
|
|
2
|
-
<div :class="
|
|
2
|
+
<div :class="themedClass('class', 'container mx-auto grid grid-cols-12 gap-6')">
|
|
3
3
|
<slot />
|
|
4
4
|
</div>
|
|
5
5
|
</template>
|
|
6
6
|
|
|
7
7
|
<script lang="ts" setup>
|
|
8
|
-
import
|
|
8
|
+
import { useTheme } from '@iqual/nuxt-icms/composables/useTheme'
|
|
9
|
+
const themedClass = useTheme()
|
|
9
10
|
|
|
10
|
-
|
|
11
|
+
defineProps<{
|
|
11
12
|
class?: string
|
|
12
13
|
}>()
|
|
13
14
|
</script>
|
|
@@ -1,21 +1,44 @@
|
|
|
1
1
|
<template>
|
|
2
|
-
<NuxtLink
|
|
3
|
-
|
|
2
|
+
<NuxtLink
|
|
3
|
+
v-if="link && (title || description)"
|
|
4
|
+
:class="
|
|
5
|
+
themedClass(
|
|
6
|
+
'linkClass',
|
|
7
|
+
'border-b-1 first:border-t-1 group block border-gray-100 py-4',
|
|
8
|
+
)
|
|
9
|
+
"
|
|
4
10
|
:to="link"
|
|
5
11
|
:title="title"
|
|
6
12
|
:prefetch="true"
|
|
7
13
|
>
|
|
8
|
-
<span
|
|
9
|
-
|
|
14
|
+
<span
|
|
15
|
+
v-if="title"
|
|
16
|
+
:class="
|
|
17
|
+
themedClass(
|
|
18
|
+
'titleClass',
|
|
19
|
+
'group-hover:text-primary block transition-colors duration-200',
|
|
20
|
+
)
|
|
21
|
+
"
|
|
22
|
+
v-text="title"
|
|
23
|
+
/>
|
|
24
|
+
<span
|
|
25
|
+
v-if="description"
|
|
26
|
+
:class="themedClass('descriptionClass', 'mt-2 block text-sm font-light')"
|
|
27
|
+
v-html="description"
|
|
28
|
+
/>
|
|
10
29
|
</NuxtLink>
|
|
11
30
|
</template>
|
|
12
31
|
|
|
13
32
|
<script lang="ts" setup>
|
|
33
|
+
import { useTheme } from '@iqual/nuxt-icms/composables/useTheme'
|
|
34
|
+
const themedClass = useTheme()
|
|
14
35
|
|
|
15
|
-
|
|
16
|
-
title?:
|
|
17
|
-
description?:
|
|
36
|
+
defineProps<{
|
|
37
|
+
title?: string
|
|
38
|
+
description?: string
|
|
18
39
|
link?: string
|
|
40
|
+
titleClass?: string
|
|
41
|
+
linkClass?: string
|
|
42
|
+
descriptionClass?: string
|
|
19
43
|
}>()
|
|
20
|
-
|
|
21
44
|
</script>
|
|
@@ -1,7 +1,12 @@
|
|
|
1
1
|
<template>
|
|
2
2
|
<div
|
|
3
3
|
v-if="links?.length"
|
|
4
|
-
:class="
|
|
4
|
+
:class="
|
|
5
|
+
cn(
|
|
6
|
+
themedClass('containerClass', 'mt-6 flex flex-wrap items-center gap-6'),
|
|
7
|
+
buttonAlignment,
|
|
8
|
+
)
|
|
9
|
+
"
|
|
5
10
|
>
|
|
6
11
|
<DesignSystemAtomsButton
|
|
7
12
|
v-for="link in links"
|
|
@@ -13,12 +18,19 @@
|
|
|
13
18
|
:target-blank="link?.props.targetBlank"
|
|
14
19
|
:title="link?.props.title"
|
|
15
20
|
:colorScheme="colorScheme"
|
|
21
|
+
:buttonClass="themedClass('buttonClass')"
|
|
22
|
+
:labelClass="themedClass('labelClass')"
|
|
23
|
+
:sublineClass="themedClass('sublineClass')"
|
|
16
24
|
/>
|
|
17
25
|
</div>
|
|
18
26
|
</template>
|
|
19
27
|
|
|
20
28
|
<script lang="ts" setup>
|
|
29
|
+
import type { ColorScheme } from '@iqual/nuxt-icms/types/global'
|
|
21
30
|
import cn from '@iqual/nuxt-icms/composables/useCn'
|
|
31
|
+
import { useTheme } from '@iqual/nuxt-icms/composables/useTheme'
|
|
32
|
+
|
|
33
|
+
const themedClass = useTheme()
|
|
22
34
|
|
|
23
35
|
type Link = {
|
|
24
36
|
props: {
|
|
@@ -38,8 +50,11 @@ type Link = {
|
|
|
38
50
|
|
|
39
51
|
defineProps<{
|
|
40
52
|
links?: Array<Link>
|
|
41
|
-
colorScheme?:
|
|
42
|
-
wrapperClass?: string
|
|
53
|
+
colorScheme?: ColorScheme
|
|
43
54
|
buttonAlignment?: string
|
|
55
|
+
containerClass?: string
|
|
56
|
+
buttonClass?: string
|
|
57
|
+
labelClass?: string
|
|
58
|
+
sublineClass?: string
|
|
44
59
|
}>()
|
|
45
60
|
</script>
|
|
@@ -1,24 +1,53 @@
|
|
|
1
1
|
<template>
|
|
2
|
-
<div class="@container">
|
|
3
|
-
<div :class="
|
|
4
|
-
<
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
/>
|
|
18
|
-
<div v-if="icon" :class="cardIconWrapper({ colorScheme })">
|
|
2
|
+
<div :class="themedClass('containerClass', '@container')">
|
|
3
|
+
<div :class="card({ colorScheme })">
|
|
4
|
+
<div
|
|
5
|
+
:class="
|
|
6
|
+
cn(
|
|
7
|
+
themedClass(
|
|
8
|
+
'mediaContainerClass',
|
|
9
|
+
'@xl:w-1/2 @xl:shrink-0 relative',
|
|
10
|
+
),
|
|
11
|
+
{
|
|
12
|
+
[themedClass('iconOffsetClass', '@xl:pb-0 pb-12')]: icon,
|
|
13
|
+
},
|
|
14
|
+
)
|
|
15
|
+
"
|
|
16
|
+
>
|
|
19
17
|
<Media
|
|
20
|
-
|
|
21
|
-
|
|
18
|
+
v-if="image"
|
|
19
|
+
:media="image"
|
|
20
|
+
imageAspectRatios="4/3"
|
|
21
|
+
imageSizes="xs:100vw sm:100vw md:50vw lg:50vw"
|
|
22
|
+
:mediaClass="themedClass('mediaClass')"
|
|
23
|
+
:figcaptionClass="themedClass('figcaptionClass')"
|
|
24
|
+
:elementClass="themedClass('elementClass')"
|
|
25
|
+
/>
|
|
26
|
+
<div v-if="icon" :class="cardIconWrapper({ colorScheme })">
|
|
27
|
+
<Media :media="icon" />
|
|
28
|
+
</div>
|
|
29
|
+
</div>
|
|
30
|
+
|
|
31
|
+
<div
|
|
32
|
+
:class="
|
|
33
|
+
themedClass(
|
|
34
|
+
'contentContainerClass',
|
|
35
|
+
'@xl:w-1/2 @xl:shrink-0 @xl:py-6 @xl:px-8 @7xl:p-16 w-full p-6 pt-0',
|
|
36
|
+
)
|
|
37
|
+
"
|
|
38
|
+
>
|
|
39
|
+
<DesignSystemOrganismsContentBlock
|
|
40
|
+
:title="title"
|
|
41
|
+
:titleWeight="titleWeight"
|
|
42
|
+
:titleStyle="'heading-5'"
|
|
43
|
+
:titleClass="
|
|
44
|
+
themedClass(
|
|
45
|
+
'titleClass',
|
|
46
|
+
'mb-2 text-center @xl:text-left font-semibold',
|
|
47
|
+
)
|
|
48
|
+
"
|
|
49
|
+
:text="text"
|
|
50
|
+
:textClass="themedClass('textClass', 'text-center @xl:text-left')"
|
|
22
51
|
/>
|
|
23
52
|
</div>
|
|
24
53
|
</div>
|
|
@@ -26,8 +55,13 @@
|
|
|
26
55
|
</template>
|
|
27
56
|
|
|
28
57
|
<script lang="ts" setup>
|
|
29
|
-
import {
|
|
58
|
+
import type { ColorScheme } from '@iqual/nuxt-icms/types/global'
|
|
30
59
|
import type { MediaFragment } from '#graphql-operations'
|
|
60
|
+
import { useTheme } from '@iqual/nuxt-icms/composables/useTheme'
|
|
61
|
+
import { tv } from 'tailwind-variants'
|
|
62
|
+
import cn from '@iqual/nuxt-icms/composables/useCn'
|
|
63
|
+
|
|
64
|
+
const themedClass = useTheme()
|
|
31
65
|
|
|
32
66
|
defineProps<{
|
|
33
67
|
title?: string
|
|
@@ -35,17 +69,23 @@ defineProps<{
|
|
|
35
69
|
text?: string
|
|
36
70
|
image?: MediaFragment
|
|
37
71
|
icon?: MediaFragment
|
|
38
|
-
colorScheme?:
|
|
72
|
+
colorScheme?: ColorScheme
|
|
73
|
+
containerClass?: string
|
|
74
|
+
titleClass?: string
|
|
75
|
+
textClass?: string
|
|
39
76
|
}>()
|
|
40
77
|
|
|
41
78
|
const card = tv({
|
|
42
|
-
base:
|
|
79
|
+
base: themedClass(
|
|
80
|
+
'cardBase',
|
|
81
|
+
'flex gap-6 flex-col @xl:flex-row @xl:gap-0 @xl:p-0',
|
|
82
|
+
),
|
|
43
83
|
variants: {
|
|
44
84
|
colorScheme: {
|
|
45
|
-
none: 'bg-
|
|
46
|
-
dark: 'bg-gray-900',
|
|
47
|
-
light: 'bg-white',
|
|
48
|
-
accent: 'bg-primary-700',
|
|
85
|
+
none: themedClass('cardVariantsColorSchemeNone', 'bg-gray-50'),
|
|
86
|
+
dark: themedClass('cardVariantsColorSchemeDark', 'bg-gray-900'),
|
|
87
|
+
light: themedClass('cardVariantsColorSchemeLight', 'bg-white'),
|
|
88
|
+
accent: themedClass('cardVariantsColorSchemeAccent', 'bg-primary-700'),
|
|
49
89
|
},
|
|
50
90
|
},
|
|
51
91
|
defaultVariants: {
|
|
@@ -54,13 +94,28 @@ const card = tv({
|
|
|
54
94
|
})
|
|
55
95
|
|
|
56
96
|
const cardIconWrapper = tv({
|
|
57
|
-
base:
|
|
97
|
+
base: themedClass(
|
|
98
|
+
'cardIconWrapperBase',
|
|
99
|
+
'absolute bottom-0 @xl:-bottom-12 left-1/2 flex size-24 -translate-x-1/2 items-center justify-center rounded-full p-6',
|
|
100
|
+
),
|
|
58
101
|
variants: {
|
|
59
102
|
colorScheme: {
|
|
60
|
-
none:
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
103
|
+
none: themedClass(
|
|
104
|
+
'cardIconWrapperVariantsColorSchemeNone',
|
|
105
|
+
'bg-white @xl:bg-gray-50',
|
|
106
|
+
),
|
|
107
|
+
dark: themedClass(
|
|
108
|
+
'cardIconWrapperVariantsColorSchemeDark',
|
|
109
|
+
'bg-gray-950 @xl:bg-gray-900',
|
|
110
|
+
),
|
|
111
|
+
light: themedClass(
|
|
112
|
+
'cardIconWrapperVariantsColorSchemeLight',
|
|
113
|
+
'bg-gray-50 @xl:bg-white',
|
|
114
|
+
),
|
|
115
|
+
accent: themedClass(
|
|
116
|
+
'cardIconWrapperVariantsColorSchemeAccent',
|
|
117
|
+
'bg-primary-600 @xl:bg-primary-700',
|
|
118
|
+
),
|
|
64
119
|
},
|
|
65
120
|
},
|
|
66
121
|
defaultVariants: {
|