@iqual/nuxt-icms 1.5.16 → 1.5.18

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 (35) hide show
  1. package/components/Blokkli/Media/index.vue +3 -2
  2. package/components/Blokkli/TextMedia/index.vue +1 -0
  3. package/components/Blokkli/Timeline/Element/index.vue +1 -1
  4. package/components/Blokkli/iFrame/index.vue +1 -0
  5. package/components/DesignSystem/Atoms/Button.vue +14 -12
  6. package/components/DesignSystem/Molecules/MediaLightbox.vue +4 -4
  7. package/components/DesignSystem/Organisms/FeatureCard.vue +2 -2
  8. package/components/DesignSystem/Organisms/SpotlightCard.vue +2 -2
  9. package/components/DesignSystem/Organisms/TeaserCard.vue +12 -1
  10. package/components/DesignSystem/Organisms/TeaserSimple.vue +2 -3
  11. package/components/DesignSystem/Organisms/TextCard.vue +2 -2
  12. package/components/DesignSystem/Organisms/TimelineElement.vue +3 -2
  13. package/components/Form/TextAreaInput.vue +55 -4
  14. package/components/Paragraph/Card/Layout/index.vue +9 -5
  15. package/components/Paragraph/Collapsible/Layout/index.vue +9 -5
  16. package/components/Paragraph/Contact/index.vue +9 -5
  17. package/components/Paragraph/Downloads/index.vue +9 -5
  18. package/components/Paragraph/FAQ/Layout/index.vue +13 -9
  19. package/components/Paragraph/Gallery/index.vue +9 -5
  20. package/components/Paragraph/HeroImage/index.vue +75 -20
  21. package/components/Paragraph/IconText/Layout/index.vue +9 -5
  22. package/components/Paragraph/LinkLists/Layout/index.vue +9 -5
  23. package/components/Paragraph/Media/index.vue +21 -19
  24. package/components/Paragraph/Table/index.vue +9 -5
  25. package/components/Paragraph/Team/Layout/index.vue +9 -5
  26. package/components/Paragraph/Teasers/index.vue +9 -5
  27. package/components/Paragraph/Text/index.vue +8 -5
  28. package/components/Paragraph/TextMedia/index.vue +35 -30
  29. package/components/Paragraph/Timeline/Element/index.vue +5 -0
  30. package/components/Paragraph/Timeline/Layout/index.vue +15 -7
  31. package/components/Paragraph/TwoColumnText/Element/index.vue +3 -3
  32. package/components/Paragraph/iFrame/index.vue +14 -34
  33. package/config/svgIconSprite.ts +1 -1
  34. package/package.json +1 -1
  35. package/patches/@blokkli+editor+2.0.0-alpha.13.patch +0 -25
@@ -13,6 +13,7 @@ const blokkliData = defineBlokkli({
13
13
  'spacingTop',
14
14
  'spacingBottom',
15
15
  'width',
16
+ 'imageFormat',
16
17
  'colorScheme',
17
18
  ],
18
19
  options: {
@@ -20,7 +21,7 @@ const blokkliData = defineBlokkli({
20
21
  type: 'checkbox',
21
22
  label: 'Show captions',
22
23
  default: false,
23
- }
24
- }
24
+ },
25
+ },
25
26
  })
26
27
  </script>
@@ -13,6 +13,7 @@ const blokkliData = defineBlokkli({
13
13
  'spacingTop',
14
14
  'spacingBottom',
15
15
  'width',
16
+ 'imageFormat',
16
17
  'alignHorizontalReduced',
17
18
  'colorScheme',
18
19
  ],
@@ -9,6 +9,6 @@ const props = defineProps<ParagraphIcmsTimelineElementFragment>()
9
9
 
10
10
  const blokkliData = defineBlokkli({
11
11
  bundle: 'icms_timeline_element',
12
- globalOptions: ['alignHorizontalReduced'],
12
+ globalOptions: ['imageFormat', 'alignHorizontalReduced'],
13
13
  })
14
14
  </script>
@@ -12,6 +12,7 @@ const blokkliData = defineBlokkli({
12
12
  globalOptions: [
13
13
  'spacingTop',
14
14
  'spacingBottom',
15
+ 'width',
15
16
  'alignHorizontalFull',
16
17
  'colorScheme',
17
18
  ],
@@ -15,6 +15,8 @@
15
15
  ),
16
16
  label: cn(themedClass('labelClass', 'font-medium'), labelClass),
17
17
  }"
18
+ :variant="'none'"
19
+ :color="'none'"
18
20
  />
19
21
  </template>
20
22
 
@@ -79,7 +81,7 @@ const button = tv({
79
81
  style: 'normal',
80
82
  class: themedClass(
81
83
  'buttonCompoundVariantsNoneNormal',
82
- 'bg-transparent text-primary-500 border-primary-500 hover:bg-primary-500 hover:text-white active:bg-primary-500 active:text-white',
84
+ 'bg-transparent text-primary-500 border-primary-500 hover:bg-primary-500 hover:text-white active:bg-primary-500 active:text-white disabled:bg-transparent disabled:text-primary-500 disabled:border-primary-500 disabled:hover:bg-transparent disabled:hover:text-primary-500 disabled:hover:border-primary-500 disabled:active:bg-transparent disabled:active:text-primary-500 disabled:active:border-primary-500 aria-disabled:bg-transparent aria-disabled:text-primary-500 aria-disabled:border-primary-500 aria-disabled:hover:bg-transparent aria-disabled:hover:text-primary-500 aria-disabled:hover:border-primary-500 aria-disabled:active:bg-transparent aria-disabled:active:text-primary-500 aria-disabled:active:border-primary-500',
83
85
  ),
84
86
  },
85
87
  {
@@ -87,7 +89,7 @@ const button = tv({
87
89
  style: 'focus',
88
90
  class: themedClass(
89
91
  'buttonCompoundVariantsNoneFocus',
90
- 'bg-primary-500 text-white border-primary-500 hover:bg-primary-600 hover:border-primary-600 active:bg-primary-600 active:border-primary-600',
92
+ 'bg-primary-500 text-white border-primary-500 hover:bg-primary-600 hover:border-primary-600 active:bg-primary-600 active:border-primary-600 disabled:bg-primary-500 disabled:text-white disabled:border-primary-500 disabled:hover:bg-primary-500 disabled:hover:text-white disabled:hover:border-primary-500 disabled:active:bg-primary-500 disabled:active:text-white disabled:active:border-primary-500 aria-disabled:bg-primary-500 aria-disabled:text-white aria-disabled:border-primary-500 aria-disabled:hover:bg-primary-500 aria-disabled:hover:text-white aria-disabled:hover:border-primary-500 aria-disabled:active:bg-primary-500 aria-disabled:active:text-white aria-disabled:active:border-primary-500',
91
93
  ),
92
94
  },
93
95
  {
@@ -95,7 +97,7 @@ const button = tv({
95
97
  style: 'minimal',
96
98
  class: themedClass(
97
99
  'buttonCompoundVariantsNoneMinimal',
98
- 'text-primary-500 hover:text-gray-950 active:text-gray-950',
100
+ 'text-primary-500 hover:text-gray-950 active:text-gray-950 disabled:text-primary-500 disabled:hover:text-primary-500 disabled:active:text-primary-500 aria-disabled:text-primary-500 aria-disabled:hover:text-primary-500 aria-disabled:active:text-primary-500',
99
101
  ),
100
102
  },
101
103
  {
@@ -103,7 +105,7 @@ const button = tv({
103
105
  style: 'normal',
104
106
  class: themedClass(
105
107
  'buttonCompoundVariantsDarkNormal',
106
- 'bg-transparent text-gray-200 border-gray-200 hover:bg-gray-200 hover:text-gray-950 active:bg-gray-200 active:text-gray-950',
108
+ 'bg-transparent text-gray-200 border-gray-200 hover:bg-gray-200 hover:text-gray-950 active:bg-gray-200 active:text-gray-950 disabled:bg-transparent disabled:text-gray-200 disabled:border-gray-200 disabled:hover:bg-transparent disabled:hover:text-gray-200 disabled:hover:border-gray-200 disabled:active:bg-transparent disabled:active:text-gray-200 disabled:active:border-gray-200 aria-disabled:bg-transparent aria-disabled:text-gray-200 aria-disabled:border-gray-200 aria-disabled:hover:bg-transparent aria-disabled:hover:text-gray-200 aria-disabled:hover:border-gray-200 aria-disabled:active:bg-transparent aria-disabled:active:text-gray-200 aria-disabled:active:border-gray-200',
107
109
  ),
108
110
  },
109
111
  {
@@ -111,7 +113,7 @@ const button = tv({
111
113
  style: 'focus',
112
114
  class: themedClass(
113
115
  'buttonCompoundVariantsDarkFocus',
114
- 'bg-primary-500 text-white border-primary-500 hover:bg-primary-600 hover:border-primary-600 active:bg-primary-600 active:border-primary-600',
116
+ 'bg-primary-500 text-white border-primary-500 hover:bg-primary-600 hover:border-primary-600 active:bg-primary-600 active:border-primary-600 disabled:bg-primary-500 disabled:text-white disabled:border-primary-500 disabled:hover:bg-primary-500 disabled:hover:text-white disabled:hover:border-primary-500 disabled:active:bg-primary-500 disabled:active:text-white disabled:active:border-primary-500 aria-disabled:bg-primary-500 aria-disabled:text-white aria-disabled:border-primary-500 aria-disabled:hover:bg-primary-500 aria-disabled:hover:text-white aria-disabled:hover:border-primary-500 aria-disabled:active:bg-primary-500 aria-disabled:active:text-white aria-disabled:active:border-primary-500',
115
117
  ),
116
118
  },
117
119
  {
@@ -119,7 +121,7 @@ const button = tv({
119
121
  style: 'minimal',
120
122
  class: themedClass(
121
123
  'buttonCompoundVariantsDarkMinimal',
122
- 'text-gray-200 hover:text-primary-500 active:text-primary-500',
124
+ 'text-gray-200 hover:text-primary-500 active:text-primary-500 disabled:text-gray-200 disabled:hover:text-gray-200 disabled:active:text-gray-200 aria-disabled:text-gray-200 aria-disabled:hover:text-gray-200 aria-disabled:active:text-gray-200',
123
125
  ),
124
126
  },
125
127
  {
@@ -127,7 +129,7 @@ const button = tv({
127
129
  style: 'normal',
128
130
  class: themedClass(
129
131
  'buttonCompoundVariantsLightNormal',
130
- 'bg-transparent text-primary-500 border-primary-500 hover:bg-primary-500 hover:text-white active:bg-primary-500 active:text-white',
132
+ 'bg-transparent text-primary-500 border-primary-500 hover:bg-primary-500 hover:text-white active:bg-primary-500 active:text-white disabled:bg-transparent disabled:text-primary-500 disabled:border-primary-500 disabled:hover:bg-transparent disabled:hover:text-primary-500 disabled:hover:border-primary-500 disabled:active:bg-transparent disabled:active:text-primary-500 disabled:active:border-primary-500 aria-disabled:bg-transparent aria-disabled:text-primary-500 aria-disabled:border-primary-500 aria-disabled:hover:bg-transparent aria-disabled:hover:text-primary-500 aria-disabled:hover:border-primary-500 aria-disabled:active:bg-transparent aria-disabled:active:text-primary-500 aria-disabled:active:border-primary-500',
131
133
  ),
132
134
  },
133
135
  {
@@ -135,7 +137,7 @@ const button = tv({
135
137
  style: 'focus',
136
138
  class: themedClass(
137
139
  'buttonCompoundVariantsLightFocus',
138
- 'bg-primary-500 text-white border-primary-500 hover:bg-primary-600 hover:border-primary-600 active:bg-primary-600 active:border-primary-600',
140
+ 'bg-primary-500 text-white border-primary-500 hover:bg-primary-600 hover:border-primary-600 active:bg-primary-600 active:border-primary-600 disabled:bg-primary-500 disabled:text-white disabled:border-primary-500 disabled:hover:bg-primary-500 disabled:hover:text-white disabled:hover:border-primary-500 disabled:active:bg-primary-500 disabled:active:text-white disabled:active:border-primary-500 aria-disabled:bg-primary-500 aria-disabled:text-white aria-disabled:border-primary-500 aria-disabled:hover:bg-primary-500 aria-disabled:hover:text-white aria-disabled:hover:border-primary-500 aria-disabled:active:bg-primary-500 aria-disabled:active:text-white aria-disabled:active:border-primary-500',
139
141
  ),
140
142
  },
141
143
  {
@@ -143,7 +145,7 @@ const button = tv({
143
145
  style: 'minimal',
144
146
  class: themedClass(
145
147
  'buttonCompoundVariantsLightMinimal',
146
- 'text-primary-500 hover:text-gray-950 active:text-gray-950',
148
+ 'text-primary-500 hover:text-gray-950 active:text-gray-950 disabled:text-primary-500 disabled:hover:text-primary-500 disabled:active:text-primary-500 aria-disabled:text-primary-500 aria-disabled:hover:text-primary-500 aria-disabled:active:text-primary-500',
147
149
  ),
148
150
  },
149
151
  {
@@ -151,7 +153,7 @@ const button = tv({
151
153
  style: 'normal',
152
154
  class: themedClass(
153
155
  'buttonCompoundVariantsAccentNormal',
154
- 'bg-transparent text-white border-white hover:bg-white hover:text-gray-950 active:bg-white active:text-gray-950',
156
+ 'bg-transparent text-white border-white hover:bg-white hover:text-gray-950 active:bg-white active:text-gray-950 disabled:bg-transparent disabled:text-white disabled:border-white disabled:hover:bg-transparent disabled:hover:text-white disabled:hover:border-white disabled:active:bg-transparent disabled:active:text-white disabled:active:border-white aria-disabled:bg-transparent aria-disabled:text-white aria-disabled:border-white aria-disabled:hover:bg-transparent aria-disabled:hover:text-white aria-disabled:hover:border-white aria-disabled:active:bg-transparent aria-disabled:active:text-white aria-disabled:active:border-white',
155
157
  ),
156
158
  },
157
159
  {
@@ -159,7 +161,7 @@ const button = tv({
159
161
  style: 'focus',
160
162
  class: themedClass(
161
163
  'buttonCompoundVariantsAccentFocus',
162
- 'bg-gray-950 text-white border-gray-950 hover:bg-white hover:text-gray-950 hover:border-white active:bg-white active:text-gray-950 active:border-white',
164
+ 'bg-gray-950 text-white border-gray-950 hover:bg-white hover:text-gray-950 hover:border-white active:bg-white active:text-gray-950 active:border-white disabled:bg-gray-950 disabled:text-white disabled:border-gray-950 disabled:hover:bg-gray-950 disabled:hover:text-white disabled:hover:border-gray-950 disabled:active:bg-gray-950 disabled:active:text-white disabled:active:border-gray-950 aria-disabled:bg-gray-950 aria-disabled:text-white aria-disabled:border-gray-950 aria-disabled:hover:bg-gray-950 aria-disabled:hover:text-white aria-disabled:hover:border-gray-950 aria-disabled:active:bg-gray-950 aria-disabled:active:text-white aria-disabled:active:border-gray-950',
163
165
  ),
164
166
  },
165
167
  {
@@ -167,7 +169,7 @@ const button = tv({
167
169
  style: 'minimal',
168
170
  class: themedClass(
169
171
  'buttonCompoundVariantsAccentMinimal',
170
- 'text-white hover:text-gray-950 active:text-gray-950',
172
+ 'text-white hover:text-gray-950 active:text-gray-950 disabled:text-white disabled:hover:text-white disabled:active:text-white aria-disabled:text-white aria-disabled:hover:text-white aria-disabled:active:text-white',
171
173
  ),
172
174
  },
173
175
  ],
@@ -91,15 +91,15 @@
91
91
  @select="onCarouselSelect"
92
92
  :ui="{
93
93
  root: themedClass('carouselClass', 'flex h-full w-full flex-col'),
94
- item: 'basis-full',
94
+ item: themedClass('carouselClass', 'basis-full h-full'),
95
95
  container: themedClass('carouselContentClass', 'h-full flex-1'),
96
96
  next: themedClass(
97
97
  'carouselNextButtonClass',
98
- 'absolute right-4 top-1/2 z-10 -translate-y-1/2 rounded-full bg-black/50 p-2 text-white transition-colors hover:bg-black/70 focus:outline-hidden focus:ring-2 focus:ring-white focus:ring-offset-2 focus:ring-offset-black disabled:cursor-not-allowed disabled:opacity-50 cursor-pointer',
98
+ 'absolute right-4 top-1/2 z-10 -translate-y-1/2 rounded-full bg-black disabled:bg-black aria-disabled:bg-black active:bg-black ring-black p-2 text-white transition-colors hover:bg-black focus:outline-hidden focus:ring-2 focus:ring-white focus:ring-offset-2 focus:ring-offset-black disabled:cursor-not-allowed disabled:opacity-50 cursor-pointer',
99
99
  ),
100
100
  prev: themedClass(
101
101
  'carouselPrevButtonClass',
102
- 'absolute left-4 top-1/2 z-10 -translate-y-1/2 rounded-full bg-black/50 p-2 text-white transition-colors hover:bg-black/70 focus:outline-hidden focus:ring-2 focus:ring-white focus:ring-offset-2 focus:ring-offset-black disabled:cursor-not-allowed disabled:opacity-50 cursor-pointer',
102
+ 'absolute left-4 top-1/2 z-10 -translate-y-1/2 rounded-full bg-black disabled:bg-black aria-disabled:bg-black active:bg-black ring-black p-2 text-white transition-colors hover:bg-black focus:outline-hidden focus:ring-2 focus:ring-white focus:ring-offset-2 focus:ring-offset-black disabled:cursor-not-allowed disabled:opacity-50 cursor-pointer',
103
103
  ),
104
104
  }"
105
105
  >
@@ -297,7 +297,7 @@ const getMediaElementClass = (media: MediaFragment) => {
297
297
  case 'MediaImage':
298
298
  return themedClass(
299
299
  'elementClassMediaImage',
300
- 'max-h-full max-w-full object-contain',
300
+ 'w-auto h-full object-contain',
301
301
  )
302
302
  case 'MediaVideo':
303
303
  return themedClass('elementClassMediaVideo', 'max-h-full max-w-full')
@@ -1,8 +1,8 @@
1
1
  <template>
2
2
  <div :class="themedClass('containerClass', '@container relative')">
3
- <a
3
+ <NuxtLink
4
4
  v-if="link?.path"
5
- :href="link?.path"
5
+ :to="link.path"
6
6
  :title="linkLabel"
7
7
  :class="themedClass('linkOverlayClass', 'absolute inset-0 z-1')"
8
8
  />
@@ -1,8 +1,8 @@
1
1
  <template>
2
2
  <div :class="themedClass('containerClass', '@container relative')">
3
- <a
3
+ <NuxtLink
4
4
  v-if="link?.path"
5
- :href="link?.path"
5
+ :to="link.path"
6
6
  :title="linkLabel"
7
7
  :class="themedClass('linkOverlayClass', 'absolute inset-0 z-4')"
8
8
  />
@@ -1,6 +1,12 @@
1
1
  <template>
2
2
  <div :class="themedClass('containerClass', '@container')">
3
3
  <div :class="teaserCard({ colorScheme })">
4
+ <NuxtLink
5
+ v-if="link?.path"
6
+ :to="link.path"
7
+ :aria-label="title"
8
+ :class="themedClass('linkOverlayClass', 'absolute inset-0 z-1')"
9
+ />
4
10
  <div :class="mediaContainer({ colorScheme })">
5
11
  <Media
6
12
  v-if="image"
@@ -53,7 +59,12 @@
53
59
  <slot name="buttongroup">
54
60
  <div
55
61
  v-if="link?.path"
56
- :class="themedClass('buttonContainerClass', 'mt-auto flex pt-6')"
62
+ :class="
63
+ themedClass(
64
+ 'buttonContainerClass',
65
+ 'relative z-2 mt-auto flex pt-6',
66
+ )
67
+ "
57
68
  >
58
69
  <DesignSystemAtomsButton
59
70
  :link="link?.path"
@@ -1,8 +1,8 @@
1
1
  <template>
2
2
  <div :class="themedClass('containerClass', '@container relative')">
3
- <a
3
+ <NuxtLink
4
4
  v-if="link?.path"
5
- :href="link?.path"
5
+ :to="link.path"
6
6
  :title="linkLabel"
7
7
  :class="themedClass('linkOverlayClass', 'peer absolute inset-0 z-1')"
8
8
  />
@@ -30,7 +30,6 @@
30
30
 
31
31
  <script lang="ts" setup>
32
32
  import type { ColorScheme } from '@iqual/nuxt-icms/types/global'
33
- import type { MediaFragment } from '#graphql-operations'
34
33
  import { useTheme } from '@iqual/nuxt-icms/composables/useTheme'
35
34
  import { tv } from 'tailwind-variants'
36
35
 
@@ -1,8 +1,8 @@
1
1
  <template>
2
2
  <div :class="themedClass('containerClass', '@container relative')">
3
- <a
3
+ <NuxtLink
4
4
  v-if="link?.path"
5
- :href="link?.path"
5
+ :to="link.path"
6
6
  :title="linkLabel"
7
7
  :class="themedClass('linkOverlayClass', 'absolute inset-0 z-1')"
8
8
  />
@@ -44,7 +44,7 @@
44
44
  colorScheme="none"
45
45
  :containerClass="themedClass('mediaContainerClass', 'my-0')"
46
46
  imageSizes="xs:750px"
47
- imageAspectRatios="16/9"
47
+ :imageFormat="imageFormat"
48
48
  :mediaClass="themedClass('mediaClass', 'my-0')"
49
49
  :figcaptionClass="themedClass('figcaptionClass')"
50
50
  :elementClass="themedClass('elementClass')"
@@ -54,7 +54,7 @@
54
54
  </template>
55
55
 
56
56
  <script lang="ts" setup>
57
- import type { ColorScheme } from '@iqual/nuxt-icms/types/global'
57
+ import type { ColorScheme, ImageFormat } from '@iqual/nuxt-icms/types/global'
58
58
  import type { MediaFragment } from '#graphql-operations'
59
59
  import { useTheme } from '@iqual/nuxt-icms/composables/useTheme'
60
60
 
@@ -85,6 +85,7 @@ const props = defineProps<{
85
85
  mediaClass?: string
86
86
  figcaptionClass?: string
87
87
  elementClass?: string
88
+ imageFormat?: ImageFormat
88
89
  }>()
89
90
 
90
91
  const reverseColumns = ref(false)
@@ -145,13 +145,64 @@ const floatingLabel = tv({
145
145
  ),
146
146
  },
147
147
  focused: {
148
- true: themedClass(
149
- 'floatingLabelVariantsFocusedTrue',
148
+ true: '',
149
+ false: '',
150
+ },
151
+ },
152
+ compoundVariants: [
153
+ {
154
+ colorScheme: 'none',
155
+ focused: true,
156
+ class: themedClass(
157
+ 'floatingLabelCompoundVariantsNoneFocusedTrue',
150
158
  'text-primary-500 dark:text-primary-500',
151
159
  ),
152
- false: themedClass('floatingLabelVariantsFocusedFalse', ''),
153
160
  },
154
- },
161
+ {
162
+ colorScheme: 'none',
163
+ focused: false,
164
+ class: themedClass('floatingLabelCompoundVariantsNoneFocusedFalse', ''),
165
+ },
166
+ {
167
+ colorScheme: 'dark',
168
+ focused: true,
169
+ class: themedClass(
170
+ 'floatingLabelCompoundVariantsDarkFocusedTrue',
171
+ 'text-primary-500 dark:text-primary-500',
172
+ ),
173
+ },
174
+ {
175
+ colorScheme: 'dark',
176
+ focused: false,
177
+ class: themedClass('floatingLabelCompoundVariantsDarkFocusedFalse', ''),
178
+ },
179
+ {
180
+ colorScheme: 'light',
181
+ focused: true,
182
+ class: themedClass(
183
+ 'floatingLabelCompoundVariantsLightFocusedTrue',
184
+ 'text-primary-500 dark:text-primary-500',
185
+ ),
186
+ },
187
+ {
188
+ colorScheme: 'light',
189
+ focused: false,
190
+ class: themedClass('floatingLabelCompoundVariantsLightFocusedFalse', ''),
191
+ },
192
+ {
193
+ colorScheme: 'accent',
194
+ focused: true,
195
+ class: themedClass(
196
+ 'floatingLabelCompoundVariantsAccentFocusedTrue',
197
+ 'text-primary-500 dark:text-primary-500',
198
+ ),
199
+ },
200
+ {
201
+ colorScheme: 'accent',
202
+ focused: false,
203
+ class: themedClass('floatingLabelCompoundVariantsAccentFocusedFalse', ''),
204
+ },
205
+ ],
155
206
  })
156
207
 
157
208
  const floatingLabelText = tv({
@@ -96,13 +96,17 @@ const cardVariant = computed(() => {
96
96
  const alignmentClassList = computed(() => {
97
97
  const classList = []
98
98
  if (options.value.alignHorizontalFull == 'center') {
99
- classList.push('text-center')
100
- classList.push('md:col-span-8')
101
- classList.push('md:col-start-3')
99
+ classList.push(
100
+ themedClass(
101
+ 'alignHorizontalFullCenterClass',
102
+ 'text-center md:col-span-8 md:col-start-3',
103
+ ),
104
+ )
102
105
  }
103
106
  if (options.value.alignHorizontalFull == 'right') {
104
- classList.push('text-right')
105
- classList.push('md:col-start-4')
107
+ classList.push(
108
+ themedClass('alignHorizontalFullRightClass', 'text-right md:col-start-4'),
109
+ )
106
110
  }
107
111
  return classList.join(' ')
108
112
  })
@@ -268,13 +268,17 @@ const childTitleWeight = useChildTitleWeight(props.titleWeight ?? '')
268
268
  const alignmentClassList = computed(() => {
269
269
  const classList = []
270
270
  if (options.value.alignHorizontalFull == 'center') {
271
- classList.push('text-center')
272
- classList.push('md:col-span-8')
273
- classList.push('md:col-start-3')
271
+ classList.push(
272
+ themedClass(
273
+ 'alignHorizontalFullCenterClass',
274
+ 'text-center md:col-span-8 md:col-start-3',
275
+ ),
276
+ )
274
277
  }
275
278
  if (options.value.alignHorizontalFull == 'right') {
276
- classList.push('text-right')
277
- classList.push('md:col-start-4')
279
+ classList.push(
280
+ themedClass('alignHorizontalFullRightClass', 'text-right md:col-start-4'),
281
+ )
278
282
  }
279
283
  return classList.join(' ')
280
284
  })
@@ -106,13 +106,17 @@ const imageFormat = computed(() => {
106
106
  const alignmentClassList = computed(() => {
107
107
  const classList = []
108
108
  if (options.value.alignHorizontalFull == 'center') {
109
- classList.push('text-center')
110
- classList.push('md:col-span-8')
111
- classList.push('md:col-start-3')
109
+ classList.push(
110
+ themedClass(
111
+ 'alignHorizontalFullCenterClass',
112
+ 'text-center md:col-span-8 md:col-start-3',
113
+ ),
114
+ )
112
115
  }
113
116
  if (options.value.alignHorizontalFull == 'right') {
114
- classList.push('text-right')
115
- classList.push('md:col-start-4')
117
+ classList.push(
118
+ themedClass('alignHorizontalFullRightClass', 'text-right md:col-start-4'),
119
+ )
116
120
  }
117
121
  return classList.join(' ')
118
122
  })
@@ -176,13 +176,17 @@ const downloadIconContainer = tv({
176
176
  const alignmentClassList = computed(() => {
177
177
  const classList = []
178
178
  if (options.value.alignHorizontalFull == 'center') {
179
- classList.push('text-center')
180
- classList.push('md:col-span-8')
181
- classList.push('md:col-start-3')
179
+ classList.push(
180
+ themedClass(
181
+ 'alignHorizontalFullCenterClass',
182
+ 'text-center md:col-span-8 md:col-start-3',
183
+ ),
184
+ )
182
185
  }
183
186
  if (options.value.alignHorizontalFull == 'right') {
184
- classList.push('text-right')
185
- classList.push('md:col-start-4')
187
+ classList.push(
188
+ themedClass('alignHorizontalFullRightClass', 'text-right md:col-start-4'),
189
+ )
186
190
  }
187
191
  return classList.join(' ')
188
192
  })
@@ -208,13 +208,17 @@ const imageFormat = computed(() => {
208
208
  const alignmentClassList = computed(() => {
209
209
  const classList = []
210
210
  if (options.value.alignHorizontalFull == 'center') {
211
- classList.push('text-center')
212
- classList.push('md:col-span-8')
213
- classList.push('md:col-start-3')
211
+ classList.push(
212
+ themedClass(
213
+ 'alignHorizontalFullCenterClass',
214
+ 'text-center md:col-span-8 md:col-start-3',
215
+ ),
216
+ )
214
217
  }
215
218
  if (options.value.alignHorizontalFull == 'right') {
216
- classList.push('text-right')
217
- classList.push('md:col-start-4')
219
+ classList.push(
220
+ themedClass('alignHorizontalFullRightClass', 'text-right md:col-start-4'),
221
+ )
218
222
  }
219
223
  return classList.join(' ')
220
224
  })
@@ -222,13 +226,13 @@ const alignmentClassList = computed(() => {
222
226
  const buttonAlignment = computed(() => {
223
227
  switch (options.value.buttonAlignment) {
224
228
  case 'left':
225
- return 'justify-start'
229
+ return themedClass('buttonAlignmentLeftClass', 'justify-start')
226
230
  case 'center':
227
- return 'justify-center'
231
+ return themedClass('buttonAlignmentCenterClass', 'justify-center')
228
232
  case 'right':
229
- return 'justify-end'
233
+ return themedClass('buttonAlignmentRightClass', 'justify-end')
230
234
  default:
231
- return 'justify-start'
235
+ return themedClass('buttonAlignmentDefaultClass', 'justify-start')
232
236
  }
233
237
  })
234
238
 
@@ -123,13 +123,17 @@ const {
123
123
  const alignmentClassList = computed(() => {
124
124
  const classList = []
125
125
  if (options.value.alignHorizontalFull == 'center') {
126
- classList.push('text-center')
127
- classList.push('md:col-span-8')
128
- classList.push('md:col-start-3')
126
+ classList.push(
127
+ themedClass(
128
+ 'alignHorizontalFullCenterClass',
129
+ 'text-center md:col-span-8 md:col-start-3',
130
+ ),
131
+ )
129
132
  }
130
133
  if (options.value.alignHorizontalFull == 'right') {
131
- classList.push('text-right')
132
- classList.push('md:col-start-4')
134
+ classList.push(
135
+ themedClass('alignHorizontalFullRightClass', 'text-right md:col-start-4'),
136
+ )
133
137
  }
134
138
  return classList.join(' ')
135
139
  })
@@ -79,7 +79,7 @@
79
79
  'mt-6 flex flex-wrap items-center gap-6',
80
80
  ),
81
81
  { droptarget: isEditing },
82
- { 'justify-center': (alignHorizontal == 'center')}
82
+ { 'justify-center': alignHorizontal == 'center' },
83
83
  )
84
84
  "
85
85
  />
@@ -115,15 +115,26 @@ const columnClassList = computed(() => {
115
115
  const classList = []
116
116
 
117
117
  if (alignHorizontal.value === 'left') {
118
- classList.push('md:col-start-1')
118
+ classList.push(
119
+ themedClass('columnClassListAlignLeftClass', 'md:col-start-1'),
120
+ )
119
121
  } else if (alignHorizontal.value === 'right') {
120
- classList.push('md:col-start-7')
122
+ classList.push(
123
+ themedClass('columnClassListAlignRightClass', 'md:col-start-7'),
124
+ )
121
125
  } else {
122
- classList.push('md:col-start-4 text-center')
126
+ classList.push(
127
+ themedClass(
128
+ 'columnClassListAlignCenterClass',
129
+ 'md:col-start-4 text-center',
130
+ ),
131
+ )
123
132
  }
124
133
 
125
134
  if (options.value.colorMode === 'dark') {
126
- classList.push('text-white')
135
+ classList.push(
136
+ themedClass('columnClassListColorModeDarkClass', 'text-white'),
137
+ )
127
138
  }
128
139
 
129
140
  return classList.join(' ')
@@ -133,31 +144,69 @@ const overlayClass = computed(() => {
133
144
  const classList = []
134
145
 
135
146
  if (alignHorizontal.value === 'left') {
136
- classList.push('md:bg-gradient-to-l')
147
+ classList.push(
148
+ themedClass('overlayClassAlignLeftClass', 'md:bg-gradient-to-l'),
149
+ )
137
150
  } else if (alignHorizontal.value === 'right') {
138
- classList.push('md:bg-gradient-to-r')
151
+ classList.push(
152
+ themedClass('overlayClassAlignRightClass', 'md:bg-gradient-to-r'),
153
+ )
139
154
  }
140
155
 
141
156
  if (alignHorizontal.value === 'center') {
142
157
  if (options.value.colorMode === 'light') {
143
158
  classList.push(
144
- 'md:bg-[linear-gradient(90deg,rgba(255,255,255,0)_10%,rgba(255,255,255,0.5)_50%,rgba(255,255,255,0)_90%)]',
145
- 'bg-[rgba(255,255,255,0.3)]',
159
+ themedClass(
160
+ 'overlayClassAlignCenterColorModeLightGradientClass',
161
+ 'md:bg-[linear-gradient(90deg,rgba(255,255,255,0)_10%,rgba(255,255,255,0.5)_50%,rgba(255,255,255,0)_90%)]',
162
+ ),
163
+ themedClass(
164
+ 'overlayClassAlignCenterColorModeLightBackgroundClass',
165
+ 'bg-[rgba(255,255,255,0.3)]',
166
+ ),
146
167
  )
147
168
  } else if (options.value.colorMode === 'dark') {
148
169
  classList.push(
149
- 'md:bg-[linear-gradient(90deg,rgba(17,17,17,0)_10%,rgba(17,17,17,0.5)_50%,rgba(17,17,17,0)_90%)]',
150
- 'bg-[rgba(17,17,17,0.3)]',
170
+ themedClass(
171
+ 'overlayClassAlignCenterColorModeDarkGradientClass',
172
+ 'md:bg-[linear-gradient(90deg,rgba(17,17,17,0)_10%,rgba(17,17,17,0.5)_50%,rgba(17,17,17,0)_90%)]',
173
+ ),
174
+ themedClass(
175
+ 'overlayClassAlignCenterColorModeDarkBackgroundClass',
176
+ 'bg-[rgba(17,17,17,0.3)]',
177
+ ),
151
178
  )
152
179
  }
153
180
  } else {
154
- classList.push('md:bg-transparent md:from-transparent md:from-25%')
181
+ classList.push(
182
+ themedClass(
183
+ 'overlayClassAlignSideClass',
184
+ 'md:bg-transparent md:from-transparent md:from-25%',
185
+ ),
186
+ )
155
187
 
156
188
  if (options.value.colorMode === 'light') {
157
- classList.push('md:to-[rgba(255,255,255,0.75)]', 'bg-[rgba(255,255,255,0.3)]',
189
+ classList.push(
190
+ themedClass(
191
+ 'overlayClassAlignSideColorModeLightGradientClass',
192
+ 'md:to-[rgba(255,255,255,0.75)]',
193
+ ),
194
+ themedClass(
195
+ 'overlayClassAlignSideColorModeLightBackgroundClass',
196
+ 'bg-[rgba(255,255,255,0.3)]',
197
+ ),
158
198
  )
159
199
  } else if (options.value.colorMode === 'dark') {
160
- classList.push('md:to-[rgba(17,17,17,0.75)]', 'bg-[rgba(17,17,17,0.3)]')
200
+ classList.push(
201
+ themedClass(
202
+ 'overlayClassAlignSideColorModeDarkGradientClass',
203
+ 'md:to-[rgba(17,17,17,0.75)]',
204
+ ),
205
+ themedClass(
206
+ 'overlayClassAlignSideColorModeDarkBackgroundClass',
207
+ 'bg-[rgba(17,17,17,0.3)]',
208
+ ),
209
+ )
161
210
  }
162
211
  }
163
212
 
@@ -166,15 +215,15 @@ const overlayClass = computed(() => {
166
215
 
167
216
  const textShadow = computed(() => {
168
217
  if (options.value.textShadow === 'light') {
169
- return 'text-shadow-sm'
218
+ return themedClass('textShadowLightClass', 'text-shadow-sm')
170
219
  }
171
220
 
172
221
  if (options.value.textShadow === 'dark') {
173
- return 'text-shadow-md'
222
+ return themedClass('textShadowDarkClass', 'text-shadow-md')
174
223
  }
175
224
 
176
225
  if (options.value.textShadow === 'darker') {
177
- return 'text-shadow-lg'
226
+ return themedClass('textShadowDarkerClass', 'text-shadow-lg')
178
227
  }
179
228
 
180
229
  return ''
@@ -183,13 +232,19 @@ const textShadow = computed(() => {
183
232
  const elementClass = computed(() => {
184
233
  const classList = ['size-full object-cover']
185
234
  if (options.value.imageAlignment === 'top') {
186
- classList.push('object-top')
235
+ classList.push(
236
+ themedClass('elementClassImageAlignmentTopClass', 'object-top'),
237
+ )
187
238
  }
188
239
  if (options.value.imageAlignment === 'center') {
189
- classList.push('object-center')
240
+ classList.push(
241
+ themedClass('elementClassImageAlignmentCenterClass', 'object-center'),
242
+ )
190
243
  }
191
244
  if (options.value.imageAlignment === 'bottom') {
192
- classList.push('object-bottom')
245
+ classList.push(
246
+ themedClass('elementClassImageAlignmentBottomClass', 'object-bottom'),
247
+ )
193
248
  }
194
249
  return classList.join(' ')
195
250
  })
@@ -118,13 +118,17 @@ const childTitleWeight = useChildTitleWeight(props.titleWeight ?? '')
118
118
  const alignmentClassList = computed(() => {
119
119
  const classList = []
120
120
  if (options.value.alignHorizontalFull == 'center') {
121
- classList.push('text-center')
122
- classList.push('md:col-span-8')
123
- classList.push('md:col-start-3')
121
+ classList.push(
122
+ themedClass(
123
+ 'alignHorizontalFullCenterClass',
124
+ 'text-center md:col-span-8 md:col-start-3',
125
+ ),
126
+ )
124
127
  }
125
128
  if (options.value.alignHorizontalFull == 'right') {
126
- classList.push('text-right')
127
- classList.push('md:col-start-4')
129
+ classList.push(
130
+ themedClass('alignHorizontalFullRightClass', 'text-right md:col-start-4'),
131
+ )
128
132
  }
129
133
  return classList.join(' ')
130
134
  })
@@ -93,13 +93,17 @@ const spacing = computed(() => {
93
93
  const alignmentClassList = computed(() => {
94
94
  const classList = []
95
95
  if (options.value.alignHorizontalFull == 'center') {
96
- classList.push('text-center')
97
- classList.push('md:col-span-8')
98
- classList.push('md:col-start-3')
96
+ classList.push(
97
+ themedClass(
98
+ 'alignHorizontalFullCenterClass',
99
+ 'text-center md:col-span-8 md:col-start-3',
100
+ ),
101
+ )
99
102
  }
100
103
  if (options.value.alignHorizontalFull == 'right') {
101
- classList.push('text-right')
102
- classList.push('md:col-start-4')
104
+ classList.push(
105
+ themedClass('alignHorizontalFullRightClass', 'text-right md:col-start-4'),
106
+ )
103
107
  }
104
108
  return classList.join(' ')
105
109
  })
@@ -10,11 +10,14 @@
10
10
  v-if="media && media.length > 1"
11
11
  :media="media"
12
12
  :imageSizes="imageSizes"
13
- :imageAspectRatios="imageAspectRatios"
14
- :containerClass="themedClass('mediaSliderContainerClass')"
13
+ :imageFormat="imageFormat"
14
+ :containerClass="themedClass('mediaSliderContainerClass', 'py-0')"
15
15
  :mediaClass="themedClass('mediaSliderMediaClass')"
16
16
  :elementClass="
17
- themedClass('mediaSliderElementClass', 'block w-full h-auto')
17
+ themedClass(
18
+ 'mediaSliderElementClass',
19
+ 'block w-full h-auto max-h-dvh object-cover object-center',
20
+ )
18
21
  "
19
22
  :figcaptionClass="themedClass('mediaSliderFigcaptionClass')"
20
23
  :carouselClass="themedClass('mediaSliderCarouselClass')"
@@ -34,9 +37,14 @@
34
37
  v-else-if="media && media.length === 1 && media[0]"
35
38
  :media="media[0]"
36
39
  :imageSizes="imageSizes"
37
- :imageAspectRatios="imageAspectRatios"
40
+ :imageFormat="imageFormat"
38
41
  :mediaClass="themedClass('mediaMediaClass')"
39
- :elementClass="themedClass('mediaElementClass')"
42
+ :elementClass="
43
+ themedClass(
44
+ 'mediaElementClass',
45
+ 'block w-full h-auto max-h-dvh object-cover object-center',
46
+ )
47
+ "
40
48
  :figcaptionClass="themedClass('mediaFigcaptionClass')"
41
49
  :showCaption="showCaptions"
42
50
  />
@@ -73,12 +81,16 @@ const showCaptions = computed(() => {
73
81
  return options.value.showCaptions
74
82
  })
75
83
 
84
+ const imageFormat = computed(() => {
85
+ return options.value.imageFormat
86
+ })
87
+
76
88
  const rowClassList = computed(() => {
77
89
  const classList = ['grid grid-cols-12 gap-6']
78
90
  if (options.value.width === 'wide') {
79
91
  return classList.join(' ')
80
92
  }
81
- classList.push('container mx-auto')
93
+ classList.push(themedClass('rowWidthDefaultClass', 'container mx-auto'))
82
94
 
83
95
  return classList.join(' ')
84
96
  })
@@ -95,23 +107,13 @@ const imageSizes = computed(() => {
95
107
  return 'xs:100vw sm:100vw md:50vw lg:640px'
96
108
  })
97
109
 
98
- const imageAspectRatios = computed(() => {
99
- if (options.value.width === 'wide') {
100
- return '3/1'
101
- }
102
-
103
- if (options.value.width === 'medium') {
104
- return '16/9'
105
- }
106
-
107
- return '4/3'
108
- })
109
-
110
110
  const columnClassList = computed(() => {
111
111
  const classList = ['col-span-12']
112
112
 
113
113
  if (options.value.width === 'narrow') {
114
- classList.push('md:col-span-6 md:col-start-4')
114
+ classList.push(
115
+ themedClass('columnWidthNarrowClass', 'md:col-span-6 md:col-start-4'),
116
+ )
115
117
  }
116
118
 
117
119
  return classList.join(' ')
@@ -95,13 +95,17 @@ const colorScheme = computed(() => {
95
95
  const alignmentClassList = computed(() => {
96
96
  const classList = []
97
97
  if (options.value.alignHorizontalFull == 'center') {
98
- classList.push('text-center')
99
- classList.push('md:col-span-8')
100
- classList.push('md:col-start-3')
98
+ classList.push(
99
+ themedClass(
100
+ 'alignHorizontalFullCenterClass',
101
+ 'text-center md:col-span-8 md:col-start-3',
102
+ ),
103
+ )
101
104
  }
102
105
  if (options.value.alignHorizontalFull == 'right') {
103
- classList.push('text-right')
104
- classList.push('md:col-start-4')
106
+ classList.push(
107
+ themedClass('alignHorizontalFullRightClass', 'text-right md:col-start-4'),
108
+ )
105
109
  }
106
110
  return classList.join(' ')
107
111
  })
@@ -86,13 +86,17 @@ const childTitleWeight = useChildTitleWeight(props.titleWeight ?? '')
86
86
  const alignmentClassList = computed(() => {
87
87
  const classList = []
88
88
  if (options.value.alignHorizontalFull == 'center') {
89
- classList.push('text-center')
90
- classList.push('md:col-span-8')
91
- classList.push('md:col-start-3')
89
+ classList.push(
90
+ themedClass(
91
+ 'alignHorizontalFullCenterClass',
92
+ 'text-center md:col-span-8 md:col-start-3',
93
+ ),
94
+ )
92
95
  }
93
96
  if (options.value.alignHorizontalFull == 'right') {
94
- classList.push('text-right')
95
- classList.push('md:col-start-4')
97
+ classList.push(
98
+ themedClass('alignHorizontalFullRightClass', 'text-right md:col-start-4'),
99
+ )
96
100
  }
97
101
  return classList.join(' ')
98
102
  })
@@ -159,13 +159,17 @@ const alignHorizontalFull = computed(() => {
159
159
  const alignmentClassList = computed(() => {
160
160
  const classList = []
161
161
  if (alignHorizontalFull.value == 'center') {
162
- classList.push('text-center')
163
- classList.push('md:col-span-8')
164
- classList.push('md:col-start-3')
162
+ classList.push(
163
+ themedClass(
164
+ 'alignHorizontalFullCenterClass',
165
+ 'text-center md:col-span-8 md:col-start-3',
166
+ ),
167
+ )
165
168
  }
166
169
  if (alignHorizontalFull.value == 'right') {
167
- classList.push('text-right')
168
- classList.push('md:col-start-4')
170
+ classList.push(
171
+ themedClass('alignHorizontalFullRightClass', 'text-right md:col-start-4'),
172
+ )
169
173
  }
170
174
  return classList.join(' ')
171
175
  })
@@ -62,11 +62,14 @@ const { options, isEditing } = useAttrs().blokkliData as any
62
62
 
63
63
  const textWrapperClassList = computed(() => {
64
64
  if (options.value.width === 'medium') {
65
- return 'col-span-8 col-start-3'
65
+ return themedClass('widthMediumClass', 'col-span-8 col-start-3')
66
66
  } else if (options.value.width === 'narrow') {
67
- return 'col-span-8 col-start-3 md:col-span-6 md:col-start-4'
67
+ return themedClass(
68
+ 'widthNarrowClass',
69
+ 'col-span-8 col-start-3 md:col-span-6 md:col-start-4',
70
+ )
68
71
  }
69
- return 'col-span-12'
72
+ return themedClass('widthWideClass', 'col-span-12')
70
73
  })
71
74
 
72
75
  const textColumns = computed(() => {
@@ -79,13 +82,13 @@ const alignmentClassList = computed(() => {
79
82
  options.value.alignHorizontalFull == 'center' &&
80
83
  textColumns.value === 'one'
81
84
  ) {
82
- classList.push('text-center')
85
+ classList.push(themedClass('alignHorizontalFullCenterClass', 'text-center'))
83
86
  }
84
87
  if (
85
88
  options.value.alignHorizontalFull == 'right' &&
86
89
  textColumns.value === 'one'
87
90
  ) {
88
- classList.push('text-right')
91
+ classList.push(themedClass('alignHorizontalFullRightClass', 'text-right'))
89
92
  }
90
93
  return classList.join(' ')
91
94
  })
@@ -38,7 +38,7 @@
38
38
  v-if="media && media.length"
39
39
  :media="media"
40
40
  imageSizes="xs:100vw sm:100vw md:50vw lg:640px"
41
- :imageAspectRatios="imageAspectRatios"
41
+ :imageFormat="imageFormat"
42
42
  :containerClass="themedClass('containerClass', 'my-0')"
43
43
  :mediaClass="themedClass('mediaClass')"
44
44
  :elementClass="themedClass('elementClass')"
@@ -63,7 +63,7 @@
63
63
 
64
64
  <script lang="ts" setup>
65
65
  import type { ParagraphIcmsLayoutTextMediaFragment } from '#graphql-operations'
66
- import type { ColorScheme } from '@iqual/nuxt-icms/types/global'
66
+ import type { ColorScheme, ImageFormat } from '@iqual/nuxt-icms/types/global'
67
67
  import { useTheme } from '@iqual/nuxt-icms/composables/useTheme'
68
68
  import cn from '@iqual/nuxt-icms/composables/useCn'
69
69
 
@@ -78,22 +78,28 @@ const textColumnClassList = computed(() => {
78
78
  const align = options.value.alignHorizontalReduced
79
79
 
80
80
  if (width === 'medium') {
81
- classList.push('md:col-span-6')
81
+ classList.push(themedClass('textColumnWidthMediumClass', 'md:col-span-6'))
82
82
  } else if (width === 'narrow') {
83
- classList.push('md:col-span-5')
83
+ classList.push(themedClass('textColumnWidthNarrowClass', 'md:col-span-5'))
84
84
  } else {
85
- classList.push('md:col-span-7')
85
+ classList.push(themedClass('textColumnWidthWideClass', 'md:col-span-7'))
86
86
  }
87
87
 
88
88
  if (align === 'right') {
89
- classList.push('md:order-last')
89
+ classList.push(themedClass('textColumnAlignRightClass', 'md:order-last'))
90
90
 
91
91
  if (width === 'medium') {
92
- classList.push('md:col-start-7')
92
+ classList.push(
93
+ themedClass('textColumnAlignRightWidthMediumClass', 'md:col-start-7'),
94
+ )
93
95
  } else if (width === 'narrow') {
94
- classList.push('md:col-start-8')
96
+ classList.push(
97
+ themedClass('textColumnAlignRightWidthNarrowClass', 'md:col-start-8'),
98
+ )
95
99
  } else {
96
- classList.push('md:col-start-6')
100
+ classList.push(
101
+ themedClass('textColumnAlignRightWidthWideClass', 'md:col-start-6'),
102
+ )
97
103
  }
98
104
  }
99
105
 
@@ -106,43 +112,38 @@ const imageColumnClassList = computed(() => {
106
112
  const align = options.value.alignHorizontalReduced
107
113
 
108
114
  if (width === 'medium') {
109
- classList.push('md:col-span-6')
115
+ classList.push(themedClass('imageColumnWidthMediumClass', 'md:col-span-6'))
110
116
  } else if (width === 'narrow') {
111
- classList.push('md:col-span-7')
117
+ classList.push(themedClass('imageColumnWidthNarrowClass', 'md:col-span-7'))
112
118
  } else {
113
- classList.push('md:col-span-5')
119
+ classList.push(themedClass('imageColumnWidthWideClass', 'md:col-span-5'))
114
120
  }
115
121
 
116
122
  if (align === 'right') {
117
- classList.push('md:pr-6')
123
+ classList.push(themedClass('imageColumnAlignRightClass', 'md:pr-6'))
118
124
  } else {
119
- classList.push('md:order-last', 'md:pl-6')
125
+ classList.push(
126
+ themedClass('imageColumnAlignLeftClass', 'md:order-last md:pl-6'),
127
+ )
120
128
 
121
129
  if (width === 'medium') {
122
- classList.push('md:col-start-7')
130
+ classList.push(
131
+ themedClass('imageColumnAlignLeftWidthMediumClass', 'md:col-start-7'),
132
+ )
123
133
  } else if (width === 'narrow') {
124
- classList.push('md:col-start-6')
134
+ classList.push(
135
+ themedClass('imageColumnAlignLeftWidthNarrowClass', 'md:col-start-6'),
136
+ )
125
137
  } else {
126
- classList.push('md:col-start-8')
138
+ classList.push(
139
+ themedClass('imageColumnAlignLeftWidthWideClass', 'md:col-start-8'),
140
+ )
127
141
  }
128
142
  }
129
143
 
130
144
  return classList.join(' ')
131
145
  })
132
146
 
133
- const imageAspectRatios = computed(() => {
134
- const width = options.value.textWidth
135
-
136
- switch (width) {
137
- case 'narrow':
138
- return '2/1'
139
- case 'medium':
140
- return '16/9'
141
- default:
142
- return '3/2'
143
- }
144
- })
145
-
146
147
  const parentColorScheme = inject<ColorScheme>('colorScheme', 'none')
147
148
  const colorScheme = computed(() => {
148
149
  if (options.value.colorScheme !== undefined) {
@@ -156,5 +157,9 @@ const spacing = computed(() => {
156
157
  return { bottom: options.value.spacingBottom, top: options.value.spacingTop }
157
158
  })
158
159
 
160
+ const imageFormat = computed(() => {
161
+ return options.value.imageFormat
162
+ })
163
+
159
164
  provide('colorScheme', colorScheme)
160
165
  </script>
@@ -12,6 +12,7 @@
12
12
  :hasDecorativeLine="false"
13
13
  :reverseColumns="reverseColumns"
14
14
  :isEditing="isEditing"
15
+ :imageFormat="imageFormat"
15
16
  :containerClass="themedClass('containerClass')"
16
17
  :firstColumnClass="themedClass('firstColumnClass')"
17
18
  :secondColumnClass="themedClass('secondColumnClass')"
@@ -42,6 +43,10 @@ const reverseColumns = computed(() => {
42
43
  return options.value.alignHorizontalReduced === 'right' ? true : false
43
44
  })
44
45
 
46
+ const imageFormat = computed(() => {
47
+ return options.value.imageFormat
48
+ })
49
+
45
50
  const colorScheme = inject<ColorScheme>('colorScheme')
46
51
  const titleWeight = inject<string>('titleWeight')
47
52
  </script>
@@ -490,13 +490,17 @@ const carouselDot = tv({
490
490
  const alignmentClassList = computed(() => {
491
491
  const classList = []
492
492
  if (options.value.alignHorizontalFull == 'center') {
493
- classList.push('text-center')
494
- classList.push('md:col-span-8')
495
- classList.push('md:col-start-3')
493
+ classList.push(
494
+ themedClass(
495
+ 'alignHorizontalFullCenterClass',
496
+ 'text-center md:col-span-8 md:col-start-3',
497
+ ),
498
+ )
496
499
  }
497
500
  if (options.value.alignHorizontalFull == 'right') {
498
- classList.push('text-right')
499
- classList.push('md:col-start-4')
501
+ classList.push(
502
+ themedClass('alignHorizontalFullRightClass', 'text-right md:col-start-4'),
503
+ )
500
504
  }
501
505
  return classList.join(' ')
502
506
  })
@@ -504,10 +508,14 @@ const alignmentClassList = computed(() => {
504
508
  const buttonAlignmentClassList = computed(() => {
505
509
  const classList = []
506
510
  if (options.value.alignHorizontalFull == 'center') {
507
- classList.push('justify-center')
511
+ classList.push(
512
+ themedClass('buttonAlignHorizontalFullCenterClass', 'justify-center'),
513
+ )
508
514
  }
509
515
  if (options.value.alignHorizontalFull == 'right') {
510
- classList.push('justify-end')
516
+ classList.push(
517
+ themedClass('buttonAlignHorizontalFullRightClass', 'justify-end'),
518
+ )
511
519
  }
512
520
 
513
521
  return classList.join(' ')
@@ -31,17 +31,17 @@ import { useTheme } from '@iqual/nuxt-icms/composables/useTheme'
31
31
 
32
32
  defineProps<ParagraphIcms2ColTextElementFragment>()
33
33
 
34
- const { options, isEditing } = useAttrs().blokkliData
34
+ const { options, isEditing } = useAttrs().blokkliData as any
35
35
 
36
36
  const themedClass = useTheme('ParagraphTwoColumnTextElement')
37
37
 
38
38
  const twoColumnTextElementClassList = computed(() => {
39
39
  const classList = []
40
40
  if (options.value.spacingBottom === 'small') {
41
- classList.push('mb-16')
41
+ classList.push(themedClass('spacingBottomSmallClass', 'mb-16'))
42
42
  }
43
43
  if (options.value.spacingBottom === 'large') {
44
- classList.push('mb-32')
44
+ classList.push(themedClass('spacingBottomLargeClass', 'mb-32'))
45
45
  }
46
46
  return classList.join(' ')
47
47
  })
@@ -9,7 +9,7 @@
9
9
  v-if="pretitle || title"
10
10
  :class="
11
11
  cn(
12
- themedClass('firstColumnClass', titleWrapperClassList),
12
+ themedClass('firstColumnClass', widthClassList),
13
13
  alignmentClassList,
14
14
  )
15
15
  "
@@ -26,7 +26,7 @@
26
26
  <div
27
27
  :class="
28
28
  cn(
29
- themedClass('secondColumnClass', textWrapperClassList),
29
+ themedClass('secondColumnClass', widthClassList),
30
30
  alignmentClassList,
31
31
  )
32
32
  "
@@ -66,46 +66,26 @@ const themedClass = useTheme('ParagraphiFrame')
66
66
 
67
67
  const { options, isEditing } = useAttrs().blokkliData
68
68
 
69
- const titleWrapperClassList = computed(() => {
69
+ const widthClassList = computed(() => {
70
70
  if (options.value.width === 'medium') {
71
- return ['col-span-8', 'col-start-3'].join(' ')
71
+ return themedClass('widthMediumClass', 'col-span-8 col-start-3')
72
72
  } else if (options.value.width === 'narrow') {
73
- return [
74
- 'col-span-8',
75
- 'col-start-3',
76
- 'md:col-span-6',
77
- 'md:col-start-4',
78
- ].join(' ')
73
+ return themedClass(
74
+ 'widthNarrowClass',
75
+ 'col-span-8 col-start-3 md:col-span-6 md:col-start-4',
76
+ )
79
77
  }
80
- return ['col-span-9'].join(' ')
81
- })
82
-
83
- const textWrapperClassList = computed(() => {
84
- if (options.value.width === 'medium') {
85
- return ['col-span-8', 'col-start-3'].join(' ')
86
- } else if (options.value.width === 'narrow') {
87
- return [
88
- 'col-span-8',
89
- 'col-start-3',
90
- 'md:col-span-6',
91
- 'md:col-start-4',
92
- ].join(' ')
93
- }
94
- return ['col-span-12'].join(' ')
78
+ return themedClass('widthWideClass', 'col-span-12')
95
79
  })
96
80
 
97
81
  const alignmentClassList = computed(() => {
98
- const classList = []
99
- if (options.value.alignHorizontalFull == 'center') {
100
- classList.push('text-center')
101
- classList.push('md:col-span-8')
102
- classList.push('md:col-start-3')
82
+ if (options.value.alignHorizontalFull === 'center') {
83
+ return themedClass('alignHorizontalFullCenterClass', 'text-center')
103
84
  }
104
- if (options.value.alignHorizontalFull == 'right') {
105
- classList.push('text-right')
106
- classList.push('md:col-start-4')
85
+ if (options.value.alignHorizontalFull === 'right') {
86
+ return themedClass('alignHorizontalFullRightClass', 'text-right')
107
87
  }
108
- return classList.join(' ')
88
+ return themedClass('alignHorizontalFullLeftClass', 'text-left')
109
89
  })
110
90
 
111
91
  const parentColorScheme = inject<ColorScheme>('colorScheme', 'none')
@@ -7,7 +7,7 @@ export default defineNuxtConfigProperty<'svgIconSprite'>(() => {
7
7
  default: {
8
8
  importPatterns: [
9
9
  join(currentLayerDir, './assets/symbols/**/*.svg'),
10
- 'assets/symbols/**/*.svg',
10
+ 'app/assets/symbols/**/*.svg',
11
11
  ]
12
12
  },
13
13
  },
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@iqual/nuxt-icms",
3
- "version": "1.5.16",
3
+ "version": "1.5.18",
4
4
  "description": "ICMS Base",
5
5
  "type": "module",
6
6
  "private": false,
@@ -1,25 +0,0 @@
1
- diff --git a/node_modules/@blokkli/editor/dist/module.mjs b/node_modules/@blokkli/editor/dist/module.mjs
2
- index 0ff0d3b..17da062 100644
3
- --- a/node_modules/@blokkli/editor/dist/module.mjs
4
- +++ b/node_modules/@blokkli/editor/dist/module.mjs
5
- @@ -470,7 +470,19 @@ class IconCollector extends Collector {
6
- this.helper.paths.srcDir,
7
- "**/icon-blokkli-*.svg"
8
- );
9
- - const allFiles = [...filesModule, ...filesApp];
10
- + // Also scan all Nuxt layer directories for icon SVGs.
11
- + const layerFiles = [];
12
- + const layers = this.helper.nuxt.options._layers || [];
13
- + for (const layer of layers) {
14
- + if (layer.config && layer.config.srcDir && layer.config.srcDir !== this.helper.paths.srcDir) {
15
- + const files = await resolveFiles(
16
- + layer.config.srcDir,
17
- + "**/icon-blokkli-*.svg"
18
- + );
19
- + layerFiles.push(...files);
20
- + }
21
- + }
22
- + const allFiles = [...filesModule, ...filesApp, ...layerFiles];
23
- await Promise.all(allFiles.map((filePath) => this.addFile(filePath)));
24
- }
25
- runHooks() {