@iqual/nuxt-icms 1.3.1 → 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.
Files changed (122) hide show
  1. package/assets/symbols/chevron-right.svg +1 -1
  2. package/components/Blokkli/HeroImage/index.vue +1 -1
  3. package/components/Blokkli/Teasers/icon.svg +3 -3
  4. package/components/DesignSystem/Atoms/Button.vue +86 -36
  5. package/components/DesignSystem/Atoms/Caption.vue +10 -10
  6. package/components/DesignSystem/Atoms/Container.vue +10 -6
  7. package/components/DesignSystem/Atoms/GridRow.vue +4 -3
  8. package/components/DesignSystem/Atoms/LinkListItem.vue +31 -8
  9. package/components/DesignSystem/Molecules/ButtonGroup.vue +18 -3
  10. package/components/DesignSystem/Molecules/Card.vue +86 -31
  11. package/components/DesignSystem/Molecules/IconText.vue +37 -16
  12. package/components/DesignSystem/Molecules/MediaLightbox.vue +213 -58
  13. package/components/DesignSystem/Molecules/MediaSlider.vue +88 -25
  14. package/components/DesignSystem/Molecules/Partnership.vue +40 -9
  15. package/components/DesignSystem/Molecules/Table.vue +90 -25
  16. package/components/DesignSystem/Molecules/TitleComposition.vue +15 -12
  17. package/components/DesignSystem/Organisms/ContentBlock.vue +61 -15
  18. package/components/DesignSystem/Organisms/FacetedListing.vue +170 -0
  19. package/components/DesignSystem/Organisms/FlipTeaser.vue +119 -47
  20. package/components/DesignSystem/Organisms/HeaderHero.vue +167 -0
  21. package/components/DesignSystem/Organisms/HeaderTextImage.vue +71 -0
  22. package/components/DesignSystem/Organisms/LogoElement.vue +33 -10
  23. package/components/DesignSystem/Organisms/Map.vue +11 -6
  24. package/components/DesignSystem/Organisms/SearchResults.vue +41 -0
  25. package/components/DesignSystem/Organisms/TeamElement.vue +84 -20
  26. package/components/DesignSystem/Organisms/TeaserCard.vue +87 -34
  27. package/components/DesignSystem/Organisms/Testimonial.vue +82 -12
  28. package/components/DesignSystem/Organisms/TimelineElement.vue +42 -12
  29. package/components/DesignSystem/Organisms/TwoColumnTextElement.vue +44 -9
  30. package/components/DesignSystem/Pages/Search.vue +39 -0
  31. package/components/Drupal/Breadcrumb/index.vue +16 -5
  32. package/components/Drupal/Messages/index.vue +16 -5
  33. package/components/Drupal/Webform/fragment.graphql +8 -5
  34. package/components/Drupal/Webform/index.vue +20 -9
  35. package/components/Drupal/Webform/query.graphql +18 -16
  36. package/components/Form/CheckboxInput.vue +6 -6
  37. package/components/Form/CheckboxInputs.vue +5 -5
  38. package/components/Form/FileUploadInput.vue +6 -6
  39. package/components/Form/RadioButtonsInput.vue +5 -5
  40. package/components/Form/SelectInput.vue +7 -7
  41. package/components/Form/SubmitButton.vue +1 -1
  42. package/components/Form/TextAreaInput.vue +2 -2
  43. package/components/Form/TextEmailInput.vue +2 -2
  44. package/components/Form/TextInput.vue +2 -2
  45. package/components/Form/TextPhoneInput.vue +2 -2
  46. package/components/Form/composables/useFormElement.ts +5 -5
  47. package/components/Form/utils/types.ts +8 -7
  48. package/components/Media/Icon/index.vue +10 -6
  49. package/components/Media/Image/index.vue +26 -20
  50. package/components/Media/RemoteVideo/index.vue +34 -21
  51. package/components/Media/Video/index.vue +6 -5
  52. package/components/Node/Icms/Page/Teaser/index.vue +6 -4
  53. package/components/Node/Icms/Page/index.vue +2 -2
  54. package/components/Paragraph/Button/Element/index.vue +9 -2
  55. package/components/Paragraph/CallToAction/index.vue +43 -10
  56. package/components/Paragraph/Card/Element/index.vue +2 -1
  57. package/components/Paragraph/Card/Layout/index.vue +29 -10
  58. package/components/Paragraph/Contact/index.vue +41 -12
  59. package/components/Paragraph/Downloads/index.vue +82 -33
  60. package/components/Paragraph/FAQ/Element/index.vue +41 -12
  61. package/components/Paragraph/FAQ/Layout/index.vue +47 -13
  62. package/components/Paragraph/FlipTeasers/index.vue +26 -6
  63. package/components/Paragraph/Gallery/index.vue +42 -10
  64. package/components/Paragraph/HeroImage/index.vue +62 -16
  65. package/components/Paragraph/IconText/Element/index.vue +7 -1
  66. package/components/Paragraph/IconText/Layout/index.vue +39 -12
  67. package/components/Paragraph/Introduction/index.vue +50 -15
  68. package/components/Paragraph/Logo/Element/fragment.graphql +1 -0
  69. package/components/Paragraph/Logo/Element/index.vue +7 -2
  70. package/components/Paragraph/Media/index.vue +32 -31
  71. package/components/Paragraph/Partnerships/Element/fragment.graphql +1 -0
  72. package/components/Paragraph/Partnerships/Element/index.vue +7 -0
  73. package/components/Paragraph/Partnerships/Layout/index.vue +100 -27
  74. package/components/Paragraph/SingleTestimonial/index.vue +58 -15
  75. package/components/Paragraph/Table/index.vue +32 -9
  76. package/components/Paragraph/Tabs/Element/index.vue +44 -10
  77. package/components/Paragraph/Tabs/Layout/index.vue +123 -37
  78. package/components/Paragraph/Team/Element/index.vue +18 -1
  79. package/components/Paragraph/Team/Layout/index.vue +30 -7
  80. package/components/Paragraph/Teasers/index.vue +33 -7
  81. package/components/Paragraph/Testimonial/Element/index.vue +30 -5
  82. package/components/Paragraph/Testimonial/Layout/index.vue +78 -24
  83. package/components/Paragraph/Text/index.vue +32 -10
  84. package/components/Paragraph/TextMedia/index.vue +44 -13
  85. package/components/Paragraph/Timeline/Element/index.vue +23 -7
  86. package/components/Paragraph/Timeline/Layout/index.vue +232 -67
  87. package/components/Paragraph/TwoColumnText/Element/index.vue +20 -3
  88. package/components/Paragraph/TwoColumnText/Layout/index.vue +8 -1
  89. package/components/Paragraph/iFrame/index.vue +31 -11
  90. package/components/Search/Facets/FacetDropdownUI.vue +351 -77
  91. package/components/Search/Facets/FacetedSearchUI.vue +257 -101
  92. package/components/Search/Facets/fragment.graphql +5 -1
  93. package/components/Search/Input/index.vue +78 -20
  94. package/components/Section/Footer/index.vue +170 -30
  95. package/components/Section/Header/Buttons.vue +34 -0
  96. package/components/Section/Header/DesktopMainMenu.vue +160 -0
  97. package/components/Section/Header/DesktopMainMenuDropdown.vue +170 -0
  98. package/components/Section/Header/LanguageDropdown.vue +95 -64
  99. package/components/Section/Header/LanguageLinks.vue +39 -0
  100. package/components/Section/Header/Logo.vue +23 -0
  101. package/components/Section/Header/MainButtons.vue +31 -0
  102. package/components/Section/Header/MenuIcon.vue +60 -49
  103. package/components/Section/Header/MetaButtons.vue +31 -0
  104. package/components/Section/Header/MetaMenu.vue +55 -53
  105. package/components/Section/Header/MobileMainMenu.vue +23 -0
  106. package/components/Section/Header/MobileMainMenuItem.vue +191 -0
  107. package/components/Section/Header/index.vue +182 -186
  108. package/composables/useMenu.ts +2 -2
  109. package/composables/useMobileMenuOverlayBus.ts +44 -0
  110. package/composables/useNavigationOffset.ts +2 -2
  111. package/composables/useTheme.ts +107 -0
  112. package/formkit.theme.ts +541 -586
  113. package/layouts/default.vue +7 -35
  114. package/layouts/error.vue +7 -32
  115. package/nuxt.config.ts +13 -0
  116. package/package.json +1 -1
  117. package/plugins/initData.ts +8 -5
  118. package/queries/query.initData.graphql +4 -2
  119. package/tailwind.config.ts +11 -11
  120. package/types/global.ts +1 -0
  121. package/components/Section/Header/GlobalMenu.vue +0 -335
  122. package/components/Section/Header/LanguageSwitcher.vue +0 -37
@@ -1,37 +1,80 @@
1
1
  <template>
2
- <DesignSystemAtomsContainer :color-scheme="colorScheme" :spacing="spacing" :data-timeline="id">
3
- <DesignSystemAtomsGridRow v-if="pretitle || title || subtitle || text">
4
- <div class="col-span-12 md:col-span-12">
2
+ <DesignSystemAtomsContainer
3
+ :color-scheme="colorScheme"
4
+ :spacing="spacing"
5
+ :data-timeline="id"
6
+ :class="themedClass('containerClass')"
7
+ >
8
+ <DesignSystemAtomsGridRow
9
+ v-if="pretitle || title || subtitle || text"
10
+ :class="themedClass('firstRowClass')"
11
+ >
12
+ <div
13
+ :class="
14
+ themedClass('firstRowFirstColumnClass', 'col-span-12 md:col-span-12')
15
+ "
16
+ >
5
17
  <DesignSystemOrganismsContentBlock
6
18
  :pretitle="pretitle"
19
+ :pretitleClass="themedClass('pretitleClass')"
7
20
  :title="title"
21
+ :titleClass="themedClass('titleClass')"
8
22
  :titleStyle="titleStyle"
9
23
  :titleWeight="titleWeight"
10
24
  :subtitle="subtitle"
25
+ :subtitleClass="themedClass('subtitleClass')"
11
26
  :colorScheme="colorScheme"
12
27
  />
13
28
  </div>
14
- <div class="col-span-12 md:col-span-9">
29
+ <div
30
+ :class="
31
+ themedClass('firstRowSecondColumnClass', 'col-span-12 md:col-span-9')
32
+ "
33
+ >
15
34
  <DesignSystemOrganismsContentBlock
16
35
  :text="text"
36
+ :textClass="themedClass('textClass')"
17
37
  />
18
38
  </div>
19
39
  </DesignSystemAtomsGridRow>
20
40
 
21
- <DesignSystemAtomsGridRow class="mt-10 lg:mt-20">
41
+ <DesignSystemAtomsGridRow
42
+ :class="themedClass('secondRowClass', 'mt-10 lg:mt-20')"
43
+ >
22
44
  <!-- Anchor navigation -->
23
- <div class="relative col-span-12 mb-6 lg:col-span-4 lg:mb-0">
45
+ <div
46
+ :class="
47
+ themedClass(
48
+ 'secondRowFirstColumnClass',
49
+ 'relative col-span-12 mb-6 lg:col-span-4 lg:mb-0',
50
+ )
51
+ "
52
+ >
24
53
  <ul
25
54
  v-if="!isEditing"
26
- class="sticky left-0 top-32 z-10 flex flex-col gap-2"
55
+ :class="
56
+ themedClass(
57
+ 'anchorNavigationListClass',
58
+ 'sticky left-0 top-32 z-10 flex flex-col gap-2',
59
+ )
60
+ "
27
61
  >
28
- <li v-for="(item, index) in props.timelineElements" :key="index">
62
+ <li
63
+ v-for="(item, index) in props.timelineElements"
64
+ :key="index"
65
+ :class="themedClass('anchorNavigationListItemClass')"
66
+ >
29
67
  <button
30
68
  @click="handleAnchorLinkClick(Number(index))"
31
- class="cursor-pointer transition-colors duration-200 ease-in-out"
32
- :class="{
33
- 'font-semibold': currentIndex === Number(index),
34
- }"
69
+ :class="
70
+ cn(
71
+ themedClass(
72
+ 'anchorNavigationButtonClass',
73
+ 'cursor-pointer transition-colors duration-200 ease-in-out',
74
+ ),
75
+ { 'font-semibold': currentIndex === Number(index) },
76
+ )
77
+ "
35
78
  >
36
79
  {{ item.props?.title }}
37
80
  </button>
@@ -39,20 +82,34 @@
39
82
  </ul>
40
83
  </div>
41
84
 
42
- <div class="relative col-span-12 lg:col-span-8">
85
+ <div
86
+ :class="
87
+ themedClass(
88
+ 'secondRowSecondColumnClass',
89
+ 'relative col-span-12 lg:col-span-8',
90
+ )
91
+ "
92
+ >
43
93
  <!-- Mobile slider navigation -->
44
94
  <div
45
95
  v-if="isMobile && !isEditing"
46
- class="relative col-span-12 mb-10 lg:col-span-4"
96
+ :class="
97
+ themedClass(
98
+ 'mobileSliderNavigationContainerClass',
99
+ 'relative col-span-12 mb-10 lg:col-span-4',
100
+ )
101
+ "
47
102
  >
48
- <ul
49
- :class="decorativeLine({ colorScheme })"
50
- class="flex h-0.5 flex-nowrap items-center justify-between"
51
- >
103
+ <ul :class="decorativeLine({ colorScheme })">
52
104
  <li
53
105
  v-for="(_, index) in props.timelineElements"
54
106
  :key="index"
55
- class="p-4 first:-translate-x-4 last:translate-x-4"
107
+ :class="
108
+ themedClass(
109
+ 'mobileSliderNavigationListItemClass',
110
+ 'p-4 first:-translate-x-4 last:translate-x-4',
111
+ )
112
+ "
56
113
  >
57
114
  <button
58
115
  @click="handleAnchorLinkClick(Number(index))"
@@ -79,21 +136,45 @@
79
136
  :list="timelineElements"
80
137
  proxy-mode
81
138
  >
82
- <CarouselContent class="m-0 gap-8">
139
+ <CarouselContent
140
+ :class="themedClass('carouselContentClass', 'm-0 gap-8')"
141
+ >
83
142
  <BlokkliItem v-for="item in items" v-bind="item" />
84
143
  </CarouselContent>
85
144
  </BlokkliField>
86
145
  <CarouselPrevious
87
- class="-bottom-[90px] left-0 top-auto xl:bottom-auto xl:left-16 xl:top-1/2"
88
- :class="carouselButton({ colorScheme })"
146
+ :class="
147
+ cn(
148
+ themedClass(
149
+ 'carouselButtonPrevClass',
150
+ '-bottom-[90px] left-0 top-auto xl:bottom-auto xl:left-16 xl:top-1/2',
151
+ ),
152
+ carouselButton({ colorScheme }),
153
+ )
154
+ "
89
155
  >
90
- <ChevronLeft :size="24" :stroke-width="1" />
156
+ <ChevronLeft
157
+ :size="24"
158
+ :stroke-width="1"
159
+ :class="themedClass('carouselButtonPrevIconClass')"
160
+ />
91
161
  </CarouselPrevious>
92
162
  <CarouselNext
93
- class="-bottom-[90px] left-[66px] top-auto xl:bottom-auto xl:left-auto xl:right-16 xl:top-1/2"
94
- :class="carouselButton({ colorScheme })"
163
+ :class="
164
+ cn(
165
+ themedClass(
166
+ 'carouselButtonNextClass',
167
+ '-bottom-[90px] left-[66px] top-auto xl:bottom-auto xl:left-auto xl:right-16 xl:top-1/2',
168
+ ),
169
+ carouselButton({ colorScheme }),
170
+ )
171
+ "
95
172
  >
96
- <ChevronRight :size="24" :stroke-width="1" />
173
+ <ChevronRight
174
+ :size="24"
175
+ :stroke-width="1"
176
+ :class="themedClass('carouselButtonNextIconClass')"
177
+ />
97
178
  </CarouselNext>
98
179
  </Carousel>
99
180
 
@@ -102,20 +183,43 @@
102
183
  v-if="isEditing || !isMobile"
103
184
  name="field_icms_timeline_elements"
104
185
  :list="timelineElements"
105
- class="flex flex-col gap-32"
106
- :class="{ droptarget: isEditing }"
186
+ :class="[
187
+ themedClass('timelineContainerClass', 'flex flex-col gap-32'),
188
+ { droptarget: isEditing },
189
+ ]"
107
190
  />
108
191
 
109
192
  <!-- Desktop line -->
110
193
  <template v-if="!isMobile && !isEditing">
111
- <div :class="decorativeCircle({ colorScheme })" class="top-0"></div>
112
194
  <div
113
- :class="decorativeLine({ colorScheme })"
114
- class="absolute left-1/2 top-0 h-full w-0.5 -translate-x-1/2"
195
+ :class="
196
+ cn(
197
+ themedClass('timelineDesktopTopDecorativeCircleClass', 'top-0'),
198
+ decorativeCircle({ colorScheme }),
199
+ )
200
+ "
115
201
  ></div>
116
202
  <div
117
- :class="decorativeCircle({ colorScheme })"
118
- class="bottom-0"
203
+ :class="
204
+ cn(
205
+ decorativeLine({ colorScheme }),
206
+ themedClass(
207
+ 'timelineDesktopDecorativeLine',
208
+ 'absolute left-1/2 top-0 h-full w-0.5 -translate-x-1/2',
209
+ ),
210
+ )
211
+ "
212
+ ></div>
213
+ <div
214
+ :class="
215
+ cn(
216
+ themedClass(
217
+ 'timelineDesktopBottomDecorativeCircleClass',
218
+ 'bottom-0',
219
+ ),
220
+ decorativeCircle({ colorScheme }),
221
+ )
222
+ "
119
223
  ></div>
120
224
  </template>
121
225
  </div>
@@ -125,14 +229,17 @@
125
229
 
126
230
  <script lang="ts" setup>
127
231
  import type { ParagraphIcmsLayoutTimelineFragment } from '#graphql-operations'
128
- import { tv } from 'tailwind-variants'
129
232
  import type { CarouselApi } from '@iqual/nuxt-icms/components/ui/carousel'
233
+ import { useTheme } from '@iqual/nuxt-icms/composables/useTheme'
234
+ import { tv } from 'tailwind-variants'
235
+ import cn from '@iqual/nuxt-icms/composables/useCn'
130
236
  import { ChevronLeft, ChevronRight } from 'lucide-vue-next'
131
237
 
132
238
  const props = defineProps<ParagraphIcmsLayoutTimelineFragment>()
133
239
 
134
240
  const { options, isEditing } = useAttrs().blokkliData
135
241
 
242
+ const themedClass = useTheme()
136
243
  const { isMobile } = useIsMobile()
137
244
 
138
245
  const colorScheme = computed(() => {
@@ -175,14 +282,17 @@ const scrollToElement = (element: HTMLElement) => {
175
282
  })
176
283
  }
177
284
 
178
- const getTimelineElements = () =>
179
- document.querySelectorAll(`[data-timeline="${props.id}"] [data-timeline-element]`)
285
+ const getTimelineElements = () =>
286
+ document.querySelectorAll(
287
+ `[data-timeline="${props.id}"] [data-timeline-element]`,
288
+ )
180
289
 
181
290
  const handleAnchorLinkClick = (index: number) => {
182
291
  if (isMobile.value) {
183
292
  setCurrentIndex(index)
184
293
  scrollToCarousel(index)
185
294
  } else {
295
+ setCurrentIndex(index)
186
296
  const elements = getTimelineElements()
187
297
  scrollToElement(elements[index] as HTMLElement)
188
298
  }
@@ -224,13 +334,16 @@ onUnmounted(() => {
224
334
  })
225
335
 
226
336
  const carousel = tv({
227
- base: 'rounded-lg',
337
+ base: themedClass('carouselBase'),
228
338
  variants: {
229
339
  colorScheme: {
230
- none: 'bg-white',
231
- dark: 'bg-gray-950',
232
- light: 'bg-gray-50',
233
- accent: 'bg-primary-600',
340
+ none: themedClass('carouselVariantsColorSchemeNone', 'bg-white'),
341
+ dark: themedClass('carouselVariantsColorSchemeDark', 'bg-gray-950'),
342
+ light: themedClass('carouselVariantsColorSchemeLight', 'bg-gray-50'),
343
+ accent: themedClass(
344
+ 'carouselVariantsColorSchemeAccent',
345
+ 'bg-primary-600',
346
+ ),
234
347
  },
235
348
  },
236
349
  defaultVariants: {
@@ -239,15 +352,28 @@ const carousel = tv({
239
352
  })
240
353
 
241
354
  const carouselButton = tv({
242
- base: 'size-10 border-none disabled:opacity-40 @sm:size:12 @md:size-16 [&_svg]:size-auto',
355
+ base: themedClass(
356
+ 'carouselButtonBase',
357
+ 'shadow-none size-10 border-none disabled:opacity-40 @sm:size:12 @md:size-16 [&_svg]:size-auto',
358
+ ),
243
359
  variants: {
244
360
  colorScheme: {
245
- none: 'bg-gray-50 text-black hover:bg-black hover:text-white dark:bg-gray-50 dark:text-black hover:dark:bg-black hover:dark:text-white',
246
- dark: 'bg-white text-black hover:bg-gray-100 hover:text-black dark:bg-white dark:text-black hover:dark:bg-gray-100 hover:dark:text-black',
247
- light:
248
- 'bg-gray-100 text-black hover:bg-black hover:text-white dark:bg-gray-100 dark:text-black hover:dark:bg-black hover:dark:text-white',
249
- accent:
250
- 'bg-primary-700 text-white hover:bg-primary-800 hover:text-white dark:bg-primary-700 dark:text-white hover:dark:bg-primary-800 hover:dark:text-white',
361
+ none: themedClass(
362
+ 'carouselButtonVariantsColorSchemeNone',
363
+ 'bg-gray-50 text-black dark:bg-gray-50 dark:text-black',
364
+ ),
365
+ dark: themedClass(
366
+ 'carouselButtonVariantsColorSchemeDark',
367
+ 'bg-gray-800 text-white dark:bg-gray-800 dark:text-white',
368
+ ),
369
+ light: themedClass(
370
+ 'carouselButtonVariantsColorSchemeLight',
371
+ 'bg-white text-black dark:bg-white dark:text-black',
372
+ ),
373
+ accent: themedClass(
374
+ 'carouselButtonVariantsColorSchemeAccent',
375
+ 'bg-primary-500 text-white dark:bg-primary-500 dark:text-white',
376
+ ),
251
377
  },
252
378
  },
253
379
  defaultVariants: {
@@ -256,13 +382,22 @@ const carouselButton = tv({
256
382
  })
257
383
 
258
384
  const decorativeLine = tv({
259
- base: '',
385
+ base: themedClass(
386
+ 'decorativeLineBase',
387
+ 'flex h-0.5 flex-nowrap items-center justify-between',
388
+ ),
260
389
  variants: {
261
390
  colorScheme: {
262
- none: 'bg-gray-200',
263
- dark: 'bg-white',
264
- light: 'bg-gray-200',
265
- accent: 'bg-white',
391
+ none: themedClass('decorativeLineVariantsColorSchemeNone', 'bg-gray-200'),
392
+ dark: themedClass('decorativeLineVariantsColorSchemeDark', 'bg-white'),
393
+ light: themedClass(
394
+ 'decorativeLineVariantsColorSchemeLight',
395
+ 'bg-gray-200',
396
+ ),
397
+ accent: themedClass(
398
+ 'decorativeLineVariantsColorSchemeAccent',
399
+ 'bg-white',
400
+ ),
266
401
  },
267
402
  },
268
403
  defaultVariants: {
@@ -271,13 +406,28 @@ const decorativeLine = tv({
271
406
  })
272
407
 
273
408
  const decorativeCircle = tv({
274
- base: 'absolute left-1/2 size-4 -translate-x-1/2 border-2 rounded-full z-10',
409
+ base: themedClass(
410
+ 'decorativeCircleBase',
411
+ 'absolute left-1/2 size-4 -translate-x-1/2 border-2 rounded-full z-10',
412
+ ),
275
413
  variants: {
276
414
  colorScheme: {
277
- none: 'border-gray-200 bg-white',
278
- dark: 'border-white bg-gray-950',
279
- light: 'border-gray-200 bg-gray-50',
280
- accent: 'border-white bg-primary-600',
415
+ none: themedClass(
416
+ 'decorativeCircleVariantsColorSchemeNone',
417
+ 'border-gray-200 bg-white',
418
+ ),
419
+ dark: themedClass(
420
+ 'decorativeCircleVariantsColorSchemeDark',
421
+ 'border-white bg-gray-950',
422
+ ),
423
+ light: themedClass(
424
+ 'decorativeCircleVariantsColorSchemeLight',
425
+ 'border-gray-200 bg-gray-50',
426
+ ),
427
+ accent: themedClass(
428
+ 'decorativeCircleVariantsColorSchemeAccent',
429
+ 'border-white bg-primary-600',
430
+ ),
281
431
  },
282
432
  },
283
433
  defaultVariants: {
@@ -286,35 +436,50 @@ const decorativeCircle = tv({
286
436
  })
287
437
 
288
438
  const carouselDot = tv({
289
- base: 'cursor-pointer transition-colors duration-200 ease-in-out size-4 border-2 rounded-full',
439
+ base: themedClass(
440
+ 'carouselDotBase',
441
+ 'cursor-pointer transition-colors duration-200 ease-in-out size-4 border-2 rounded-full',
442
+ ),
290
443
  variants: {
291
444
  colorScheme: {
292
- none: 'bg-white border-gray-200',
293
- dark: 'bg-gray-950 border-white',
294
- light: 'bg-gray-50 border-gray-200',
295
- accent: 'bg-primary-600 border-white',
445
+ none: themedClass(
446
+ 'carouselDotVariantsColorSchemeNone',
447
+ 'bg-white border-gray-200',
448
+ ),
449
+ dark: themedClass(
450
+ 'carouselDotVariantsColorSchemeDark',
451
+ 'bg-gray-950 border-white',
452
+ ),
453
+ light: themedClass(
454
+ 'carouselDotVariantsColorSchemeLight',
455
+ 'bg-gray-50 border-gray-200',
456
+ ),
457
+ accent: themedClass(
458
+ 'carouselDotVariantsColorSchemeAccent',
459
+ 'bg-primary-600 border-white',
460
+ ),
296
461
  },
297
462
  },
298
463
  compoundVariants: [
299
464
  {
300
465
  colorScheme: 'none',
301
466
  active: true,
302
- class: 'bg-gray-200',
467
+ class: themedClass('carouselDotCompoundVariantsNoneTrue', 'bg-gray-200'),
303
468
  },
304
469
  {
305
470
  colorScheme: 'dark',
306
471
  active: true,
307
- class: 'bg-white',
472
+ class: themedClass('carouselDotCompoundVariantsDarkTrue', 'bg-white'),
308
473
  },
309
474
  {
310
475
  colorScheme: 'light',
311
476
  active: true,
312
- class: 'bg-gray-200',
477
+ class: themedClass('carouselDotCompoundVariantsLightTrue', 'bg-gray-200'),
313
478
  },
314
479
  {
315
480
  colorScheme: 'accent',
316
481
  active: true,
317
- class: 'bg-white',
482
+ class: themedClass('carouselDotCompoundVariantsAccentTrue', 'bg-white'),
318
483
  },
319
484
  ],
320
485
  defaultVariants: {
@@ -1,23 +1,40 @@
1
1
  <template>
2
2
  <DesignSystemOrganismsTwoColumnTextElement
3
3
  :pretitle="pretitle"
4
+ :pretitleClass="themedClass('pretitleClass')"
4
5
  :title="title"
6
+ :titleClass="themedClass('titleClass', 'mb-0')"
5
7
  :titleWeight="titleWeight"
6
8
  :titleStyle="titleStyle"
7
- titleClass="mb-0"
8
9
  :subtitle="subtitle"
10
+ :subtitleClass="themedClass('subtitleClass')"
9
11
  :text="text"
10
- :class="twoColumnTextElementClassList"
12
+ :textClass="themedClass('textClass')"
13
+ :containerClass="
14
+ themedClass('containerClass', twoColumnTextElementClassList)
15
+ "
16
+ :firstColumnClass="themedClass('firstColumnClass')"
17
+ :secondColumnClass="themedClass('secondColumnClass')"
18
+ :titleCompositionFirstContainerClass="
19
+ themedClass('titleCompositionFirstContainerClass')
20
+ "
21
+ :titleCompositionSecondContainerClass="
22
+ themedClass('titleCompositionSecondContainerClass')
23
+ "
24
+ :textContainerClass="themedClass('textContainerClass')"
11
25
  />
12
26
  </template>
13
27
 
14
28
  <script lang="ts" setup>
15
29
  import type { ParagraphIcms2ColTextElementFragment } from '#graphql-operations'
30
+ import { useTheme } from '@iqual/nuxt-icms/composables/useTheme'
16
31
 
17
32
  defineProps<ParagraphIcms2ColTextElementFragment>()
18
33
 
19
34
  const { options, isEditing } = useAttrs().blokkliData
20
35
 
36
+ const themedClass = useTheme()
37
+
21
38
  const twoColumnTextElementClassList = computed(() => {
22
39
  const classList = []
23
40
  if (options.value.spacingBottom === 'small') {
@@ -26,6 +43,6 @@ const twoColumnTextElementClassList = computed(() => {
26
43
  if (options.value.spacingBottom === 'large') {
27
44
  classList.push('mb-32')
28
45
  }
29
- return classList
46
+ return classList.join(' ')
30
47
  })
31
48
  </script>
@@ -1,5 +1,9 @@
1
1
  <template>
2
- <DesignSystemAtomsContainer :spacing="spacing" :colorScheme="colorScheme">
2
+ <DesignSystemAtomsContainer
3
+ :spacing="spacing"
4
+ :colorScheme="colorScheme"
5
+ :class="themedClass('containerClass')"
6
+ >
3
7
  <BlokkliField
4
8
  name="field_icms_2_col_text_elements"
5
9
  :list="twoColumnTextElements"
@@ -10,11 +14,14 @@
10
14
 
11
15
  <script lang="ts" setup>
12
16
  import type { ParagraphIcmsLayout2ColTextElementsFragment } from '#graphql-operations'
17
+ import { useTheme } from '@iqual/nuxt-icms/composables/useTheme'
13
18
 
14
19
  defineProps<ParagraphIcmsLayout2ColTextElementsFragment>()
15
20
 
16
21
  const { options, isEditing } = useAttrs().blokkliData
17
22
 
23
+ const themedClass = useTheme()
24
+
18
25
  const colorScheme = computed(() => {
19
26
  return options.value.colorScheme
20
27
  })
@@ -1,24 +1,31 @@
1
1
  <template>
2
- <DesignSystemAtomsContainer :colorScheme="colorScheme" :spacing="spacing">
3
- <DesignSystemAtomsGridRow>
4
- <div :class="titleWrapperClassList">
2
+ <DesignSystemAtomsContainer
3
+ :colorScheme="colorScheme"
4
+ :spacing="spacing"
5
+ :class="themedClass('containerClass')"
6
+ >
7
+ <DesignSystemAtomsGridRow :class="themedClass('rowClass')">
8
+ <div :class="themedClass('firstColumnClass', titleWrapperClassList)">
5
9
  <DesignSystemOrganismsContentBlock
6
10
  :pretitle="pretitle"
11
+ :pretitleClass="themedClass('pretitleClass')"
7
12
  :title="title"
13
+ :titleClass="themedClass('titleClass', 'mb-0')"
8
14
  :titleWeight="titleWeight"
9
15
  :colorScheme="colorScheme"
10
16
  />
11
17
  </div>
12
- <div :class="textWrapperClassList">
18
+ <div :class="themedClass('secondColumnClass', textWrapperClassList)">
13
19
  <DesignSystemOrganismsContentBlock
14
20
  :text="text"
21
+ :textClass="themedClass('textClass')"
15
22
  :colorScheme="colorScheme"
16
23
  />
17
24
 
18
25
  <div
19
26
  v-if="embed"
20
27
  v-html="embed"
21
- class="embed-wrapper mt-10"
28
+ :class="themedClass('emberContainer', 'embed-wrapper mt-10')"
22
29
  :style="{ '--iframe-height': `${props.height || 600}px` }"
23
30
  />
24
31
  </div>
@@ -28,27 +35,40 @@
28
35
 
29
36
  <script lang="ts" setup>
30
37
  import type { ParagraphIcmsLayoutIframeFragment } from '#graphql-operations'
38
+ import { useTheme } from '@iqual/nuxt-icms/composables/useTheme'
31
39
 
32
40
  const props = defineProps<ParagraphIcmsLayoutIframeFragment>()
33
41
 
42
+ const themedClass = useTheme()
43
+
34
44
  const { options, isEditing } = useAttrs().blokkliData
35
45
 
36
46
  const titleWrapperClassList = computed(() => {
37
47
  if (options.value.textWidth === 'medium') {
38
- return ['col-span-8', 'col-start-3']
48
+ return ['col-span-8', 'col-start-3'].join(' ')
39
49
  } else if (options.value.textWidth === 'narrow') {
40
- return ['col-span-8', 'col-start-3', 'md:col-span-6', 'md:col-start-4']
50
+ return [
51
+ 'col-span-8',
52
+ 'col-start-3',
53
+ 'md:col-span-6',
54
+ 'md:col-start-4',
55
+ ].join(' ')
41
56
  }
42
- return ['col-span-12']
57
+ return ['col-span-12'].join(' ')
43
58
  })
44
59
 
45
60
  const textWrapperClassList = computed(() => {
46
61
  if (options.value.textWidth === 'medium') {
47
- return ['col-span-8', 'col-start-3']
62
+ return ['col-span-8', 'col-start-3'].join(' ')
48
63
  } else if (options.value.textWidth === 'narrow') {
49
- return ['col-span-8', 'col-start-3', 'md:col-span-6', 'md:col-start-4']
64
+ return [
65
+ 'col-span-8',
66
+ 'col-start-3',
67
+ 'md:col-span-6',
68
+ 'md:col-start-4',
69
+ ].join(' ')
50
70
  }
51
- return ['col-span-9']
71
+ return ['col-span-9'].join(' ')
52
72
  })
53
73
 
54
74
  const colorScheme = computed(() => {