@iqual/nuxt-icms 1.5.7 → 1.5.8

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.
@@ -1,6 +1,24 @@
1
1
  .ck-content {
2
2
  @apply break-words;
3
3
 
4
+ h1:not(:first-of-type),
5
+ .h1:not(:first-of-type),
6
+ h2:not(:first-of-type),
7
+ .h2:not(:first-of-type),
8
+ h3:not(:first-of-type),
9
+ .h3:not(:first-of-type),
10
+ h4:not(:first-of-type),
11
+ .h4:not(:first-of-type) {
12
+ @apply mt-4;
13
+ }
14
+
15
+ h5:not(:first-of-type),
16
+ .h5:not(:first-of-type),
17
+ h6:not(:first-of-type),
18
+ .h6:not(:first-of-type) {
19
+ @apply mt-2;
20
+ }
21
+
4
22
  ol,
5
23
  ul {
6
24
  @apply mb-6;
@@ -36,4 +54,3 @@
36
54
  @apply text-sm;
37
55
  }
38
56
  }
39
-
@@ -6,11 +6,14 @@
6
6
  :title="title"
7
7
  :target="targetBlank ? '_blank' : '_self'"
8
8
  :ui="{
9
- base: button({
10
- colorScheme: colorScheme,
11
- style: buttonStyle,
12
- }),
13
- label: themedClass('labelClass', 'font-medium'),
9
+ base: cn(
10
+ button({
11
+ colorScheme: colorScheme,
12
+ style: buttonStyle,
13
+ }),
14
+ buttonClass,
15
+ ),
16
+ label: cn(themedClass('labelClass', 'font-medium'), labelClass),
14
17
  }"
15
18
  />
16
19
  </template>
@@ -18,6 +21,7 @@
18
21
  <script lang="ts" setup>
19
22
  import type { ColorScheme, ButtonStyle } from '@iqual/nuxt-icms/types/global'
20
23
  import { useTheme } from '@iqual/nuxt-icms/composables/useTheme'
24
+ import cn from '@iqual/nuxt-icms/composables/useCn'
21
25
  import { tv } from 'tailwind-variants'
22
26
 
23
27
  const themedClass = useTheme('DesignSystemAtomsButton')
@@ -51,7 +55,7 @@ const linkComplete = computed(() => {
51
55
  const button = tv({
52
56
  base: themedClass(
53
57
  'buttonClass',
54
- 'rounded-none cursor-pointer py-3 px-10 block w-full md:w-fit motion-safe:transition-colors motion-safe:duration-200 motion-safe:ease-in-out',
58
+ 'rounded-none cursor-pointer py-3 px-10 block w-full sm:w-fit motion-safe:transition-colors motion-safe:duration-200 motion-safe:ease-in-out',
55
59
  ),
56
60
  variants: {
57
61
  colorScheme: {
@@ -65,7 +69,7 @@ const button = tv({
65
69
  focus: themedClass('buttonVariantsStyleFocus', 'border text-center'),
66
70
  minimal: themedClass(
67
71
  'buttonVariantsStyleMinimal',
68
- 'bg-transparent w-fit p-0 underline hover:bg-transparent',
72
+ 'bg-transparent w-fit p-0 underline hover:bg-transparent active:bg-transparent',
69
73
  ),
70
74
  },
71
75
  },
@@ -75,7 +79,7 @@ const button = tv({
75
79
  style: 'normal',
76
80
  class: themedClass(
77
81
  'buttonCompoundVariantsNoneNormal',
78
- 'bg-transparent text-primary-500 border-primary-500 hover:bg-primary-500 hover:text-white',
82
+ 'bg-transparent text-primary-500 border-primary-500 hover:bg-primary-500 hover:text-white active:bg-primary-500 active:text-white',
79
83
  ),
80
84
  },
81
85
  {
@@ -83,7 +87,7 @@ const button = tv({
83
87
  style: 'focus',
84
88
  class: themedClass(
85
89
  'buttonCompoundVariantsNoneFocus',
86
- 'bg-primary-500 text-white border-primary-500 hover:bg-primary-600 hover:border-primary-600',
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',
87
91
  ),
88
92
  },
89
93
  {
@@ -91,7 +95,7 @@ const button = tv({
91
95
  style: 'minimal',
92
96
  class: themedClass(
93
97
  'buttonCompoundVariantsNoneMinimal',
94
- 'text-primary-500 hover:text-gray-950',
98
+ 'text-primary-500 hover:text-gray-950 active:text-gray-950',
95
99
  ),
96
100
  },
97
101
  {
@@ -99,7 +103,7 @@ const button = tv({
99
103
  style: 'normal',
100
104
  class: themedClass(
101
105
  'buttonCompoundVariantsDarkNormal',
102
- 'bg-transparent text-gray-200 border-gray-200 hover:bg-gray-200 hover:text-gray-950',
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',
103
107
  ),
104
108
  },
105
109
  {
@@ -107,7 +111,7 @@ const button = tv({
107
111
  style: 'focus',
108
112
  class: themedClass(
109
113
  'buttonCompoundVariantsDarkFocus',
110
- 'bg-primary-500 text-white border-primary-500 hover:bg-primary-600 hover:border-primary-600',
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',
111
115
  ),
112
116
  },
113
117
  {
@@ -115,7 +119,7 @@ const button = tv({
115
119
  style: 'minimal',
116
120
  class: themedClass(
117
121
  'buttonCompoundVariantsDarkMinimal',
118
- 'text-gray-200 hover:text-primary-500',
122
+ 'text-gray-200 hover:text-primary-500 active:text-primary-500',
119
123
  ),
120
124
  },
121
125
  {
@@ -123,7 +127,7 @@ const button = tv({
123
127
  style: 'normal',
124
128
  class: themedClass(
125
129
  'buttonCompoundVariantsLightNormal',
126
- 'bg-transparent text-primary-500 border-primary-500 hover:bg-primary-500 hover:text-white',
130
+ 'bg-transparent text-primary-500 border-primary-500 hover:bg-primary-500 hover:text-white active:bg-primary-500 active:text-white',
127
131
  ),
128
132
  },
129
133
  {
@@ -131,7 +135,7 @@ const button = tv({
131
135
  style: 'focus',
132
136
  class: themedClass(
133
137
  'buttonCompoundVariantsLightFocus',
134
- 'bg-primary-500 text-white border-primary-500 hover:bg-primary-600 hover:border-primary-600',
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',
135
139
  ),
136
140
  },
137
141
  {
@@ -139,7 +143,7 @@ const button = tv({
139
143
  style: 'minimal',
140
144
  class: themedClass(
141
145
  'buttonCompoundVariantsLightMinimal',
142
- 'text-primary-500 hover:text-gray-950',
146
+ 'text-primary-500 hover:text-gray-950 active:text-gray-950',
143
147
  ),
144
148
  },
145
149
  {
@@ -147,7 +151,7 @@ const button = tv({
147
151
  style: 'normal',
148
152
  class: themedClass(
149
153
  'buttonCompoundVariantsAccentNormal',
150
- 'bg-transparent text-white border-white hover:bg-white hover:text-gray-950',
154
+ 'bg-transparent text-white border-white hover:bg-white hover:text-gray-950 active:bg-white active:text-gray-950',
151
155
  ),
152
156
  },
153
157
  {
@@ -155,7 +159,7 @@ const button = tv({
155
159
  style: 'focus',
156
160
  class: themedClass(
157
161
  'buttonCompoundVariantsAccentFocus',
158
- 'bg-gray-950 text-white border-gray-950 hover:bg-white hover:text-gray-950 hover:border-white',
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',
159
163
  ),
160
164
  },
161
165
  {
@@ -163,7 +167,7 @@ const button = tv({
163
167
  style: 'minimal',
164
168
  class: themedClass(
165
169
  'buttonCompoundVariantsAccentMinimal',
166
- 'text-white hover:text-gray-950',
170
+ 'text-white hover:text-gray-950 active:text-gray-950',
167
171
  ),
168
172
  },
169
173
  ],
@@ -25,7 +25,7 @@
25
25
  :class="
26
26
  themedClass(
27
27
  'contentContainerClass',
28
- 'card-grid-item z-3 flex flex-col p-6 lg:p-8',
28
+ 'card-grid-item z-3 flex flex-col justify-between gap-8 p-6 lg:p-8',
29
29
  )
30
30
  "
31
31
  >
@@ -42,6 +42,7 @@
42
42
  </div>
43
43
  <slot name="content">
44
44
  <DesignSystemOrganismsContentBlock
45
+ class="mt-auto"
45
46
  :pretitle="pretitle"
46
47
  :pretitleClass="
47
48
  themedClass(
@@ -7,7 +7,7 @@
7
7
  :media="image"
8
8
  imageSizes="xs:100vw sm:100vw md:420px lg:420px"
9
9
  imageAspectRatios="16/9"
10
- :mediaClass="themedClass('mediaClass', '@xl:w-1/2')"
10
+ :mediaClass="themedClass('mediaClass', 'w-full')"
11
11
  :figcaptionClass="themedClass('figcaptionClass')"
12
12
  :elementClass="themedClass('elementClass', 'w-full')"
13
13
  />
@@ -17,7 +17,7 @@
17
17
  :class="
18
18
  themedClass(
19
19
  'textContainerClass',
20
- 'flex h-full flex-col @xl:w-1/2 @xl:p-0 @7xl:p-12',
20
+ 'flex h-full flex-col @xl:max-w-1/2 @xl:basis-1/2 @xl:p-0 @7xl:p-12',
21
21
  )
22
22
  "
23
23
  >
@@ -131,15 +131,21 @@ const teaserCard = tv({
131
131
  })
132
132
 
133
133
  const mediaContainer = tv({
134
- base: themedClass('mediaContainerBase', 'shrink-0 aspect-video'),
134
+ base: themedClass(
135
+ 'mediaContainerBase',
136
+ 'w-full aspect-video @xl:basis-1/2 @xl:max-w-1/2',
137
+ ),
135
138
  variants: {
136
139
  colorScheme: {
137
- none: themedClass('mediaContainerVariantsColorSchemeNone', 'bg-gray-50'),
138
- dark: themedClass('mediaContainerVariantsColorSchemeDark', 'bg-gray-900'),
139
- light: themedClass('mediaContainerVariantsColorSchemeLight', 'bg-white'),
140
+ none: themedClass('mediaContainerVariantsColorSchemeNone', 'bg-white'),
141
+ dark: themedClass('mediaContainerVariantsColorSchemeDark', 'bg-gray-950'),
142
+ light: themedClass(
143
+ 'mediaContainerVariantsColorSchemeLight',
144
+ 'bg-gray-50',
145
+ ),
140
146
  accent: themedClass(
141
147
  'mediaContainerVariantsColorSchemeAccent',
142
- 'bg-primary-700',
148
+ 'bg-primary-600',
143
149
  ),
144
150
  },
145
151
  },
@@ -27,19 +27,19 @@ const checkboxBase = tv({
27
27
  colorScheme: {
28
28
  none: themedClass(
29
29
  'checkboxBaseVariantsColorSchemeNone',
30
- 'ring-gray-200 dark:ring-gray-200',
30
+ 'bg-white dark:bg-white ring-gray-200 dark:ring-gray-200',
31
31
  ),
32
32
  dark: themedClass(
33
33
  'checkboxBaseVariantsColorSchemeDark',
34
- 'ring-gray-700 dark:ring-gray-700',
34
+ 'bg-gray-800 dark:bg-gray-800 ring-gray-700 dark:ring-gray-700',
35
35
  ),
36
36
  light: themedClass(
37
37
  'checkboxBaseVariantsColorSchemeLight',
38
- 'bg-white ring-gray-200 dark:ring-gray-200',
38
+ 'bg-white dark:bg-white ring-gray-200 dark:ring-gray-200',
39
39
  ),
40
40
  accent: themedClass(
41
41
  'checkboxBaseVariantsColorSchemeAccent',
42
- 'bg-white ring-gray-200 dark:ring-gray-200',
42
+ 'bg-white dark:bg-white ring-gray-200 dark:ring-gray-200',
43
43
  ),
44
44
  },
45
45
  },
@@ -75,19 +75,19 @@ const checkboxBase = tv({
75
75
  colorScheme: {
76
76
  none: themedClass(
77
77
  'checkboxBaseVariantsColorSchemeNone',
78
- 'ring-gray-200 dark:ring-gray-200',
78
+ 'bg-white dark:bg-white ring-gray-200 dark:ring-gray-200',
79
79
  ),
80
80
  dark: themedClass(
81
81
  'checkboxBaseVariantsColorSchemeDark',
82
- 'ring-gray-700 dark:ring-gray-700',
82
+ 'bg-gray-800 dark:bg-gray-800 ring-gray-700 dark:ring-gray-700',
83
83
  ),
84
84
  light: themedClass(
85
85
  'checkboxBaseVariantsColorSchemeLight',
86
- 'ring-gray-200 dark:ring-gray-200',
86
+ 'bg-white dark:bg-white ring-gray-200 dark:ring-gray-200',
87
87
  ),
88
88
  accent: themedClass(
89
89
  'checkboxBaseVariantsColorSchemeAccent',
90
- 'ring-gray-200 dark:ring-gray-200',
90
+ 'bg-white dark:bg-white ring-gray-200 dark:ring-gray-200',
91
91
  ),
92
92
  },
93
93
  },
@@ -143,6 +143,7 @@ const checkboxDescription = tv({
143
143
  },
144
144
  },
145
145
  })
146
+
146
147
  const checkboxIndicator = tv({
147
148
  base: themedClass('checkboxIndicatorBase'),
148
149
  variants: {
@@ -175,8 +176,10 @@ const checkboxIndicator = tv({
175
176
  :required="Boolean(formElement.metadata.required)"
176
177
  :description="cleanDescription"
177
178
  :ui="{
179
+ labelWrapper: themedClass('formFieldLabelWrapper', 'mb-1'),
178
180
  label: formFieldLabel({ colorScheme }),
179
181
  description: formFieldDescription({ colorScheme }),
182
+ wrapper: themedClass('formFieldWrapper', 'mb-2'),
180
183
  }"
181
184
  >
182
185
  <UCheckboxGroup
@@ -278,8 +278,10 @@ const fileUploadIcon = tv({
278
278
  :required="formElement.metadata.required"
279
279
  :description="floatingLabels ? undefined : formElement.metadata.description"
280
280
  :ui="{
281
+ labelWrapper: themedClass('formFieldLabelWrapper', 'mb-1'),
281
282
  label: formFieldLabel({ colorScheme }),
282
283
  description: formFieldDescription({ colorScheme }),
284
+ wrapper: themedClass('formFieldWrapper', 'mb-2'),
283
285
  }"
284
286
  >
285
287
  <div :class="themedClass('fileUploadWrapper', 'relative')">
@@ -296,18 +298,14 @@ const fileUploadIcon = tv({
296
298
  fileSize: fileUploadFileSize({ colorScheme }),
297
299
  }"
298
300
  >
299
- <template
300
- v-if="!floatingLabels"
301
- #description
302
- >
301
+ <template v-if="!floatingLabels" #description>
303
302
  <span v-html="formElement.metadata.description" />
304
303
  </template>
305
304
  </UFileUpload>
306
- <label
307
- v-if="floatingLabels"
308
- :class="floatingLabel({ colorScheme })"
309
- >
310
- <span :class="floatingLabelText({ colorScheme })">{{ formElement.metadata.title }}</span>
305
+ <label v-if="floatingLabels" :class="floatingLabel({ colorScheme })">
306
+ <span :class="floatingLabelText({ colorScheme })">{{
307
+ formElement.metadata.title
308
+ }}</span>
311
309
  </label>
312
310
  </div>
313
311
  <div
@@ -75,19 +75,19 @@ const radioBase = tv({
75
75
  colorScheme: {
76
76
  none: themedClass(
77
77
  'radioBaseVariantsColorSchemeNone',
78
- 'ring-gray-200 dark:ring-gray-200',
78
+ 'bg-white dark:bg-white ring-gray-200 dark:ring-gray-200',
79
79
  ),
80
80
  dark: themedClass(
81
81
  'radioBaseVariantsColorSchemeDark',
82
- 'ring-gray-700 dark:ring-gray-700',
82
+ 'bg-gray-800 dark:bg-gray-800 ring-gray-700 dark:ring-gray-700',
83
83
  ),
84
84
  light: themedClass(
85
85
  'radioBaseVariantsColorSchemeLight',
86
- 'ring-gray-200 dark:ring-gray-200',
86
+ 'bg-white dark:bg-white ring-gray-200 dark:ring-gray-200',
87
87
  ),
88
88
  accent: themedClass(
89
89
  'radioBaseVariantsColorSchemeAccent',
90
- 'ring-gray-200 dark:ring-gray-200',
90
+ 'bg-white dark:bg-white ring-gray-200 dark:ring-gray-200',
91
91
  ),
92
92
  },
93
93
  },
@@ -169,14 +169,17 @@ const radioIndicator = tv({
169
169
  :required="Boolean(formElement.metadata.required)"
170
170
  :description="cleanDescription"
171
171
  :ui="{
172
+ labelWrapper: themedClass('formFieldLabelWrapper', 'mb-1'),
172
173
  label: formFieldLabel({ colorScheme }),
173
174
  description: formFieldDescription({ colorScheme }),
175
+ wrapper: themedClass('formFieldWrapper', 'mb-2'),
174
176
  }"
175
177
  >
176
178
  <URadioGroup
177
179
  v-model="model"
178
180
  :items="formattedOptions"
179
181
  :ui="{
182
+ fieldset: themedClass('radioFieldset', 'gap-y-3'),
180
183
  container: themedClass('radioContainer', 'cursor-pointer'),
181
184
  base: radioBase({ colorScheme }),
182
185
  indicator: radioIndicator({ colorScheme }),
@@ -71,7 +71,10 @@ const formFieldDescription = tv({
71
71
  })
72
72
 
73
73
  const selectBase = tv({
74
- base: themedClass('selectBase', 'text-base px-4 rounded-none w-full cursor-pointer'),
74
+ base: themedClass(
75
+ 'selectBase',
76
+ 'text-base px-4 rounded-none w-full cursor-pointer',
77
+ ),
75
78
  variants: {
76
79
  colorScheme: {
77
80
  none: themedClass(
@@ -104,19 +107,19 @@ const selectPlaceholder = tv({
104
107
  colorScheme: {
105
108
  none: themedClass(
106
109
  'selectPlaceholderVariantsColorSchemeNone',
107
- 'text-gray-400',
110
+ 'text-gray-500',
108
111
  ),
109
112
  dark: themedClass(
110
113
  'selectPlaceholderVariantsColorSchemeDark',
111
- 'text-gray-400',
114
+ 'text-gray-500',
112
115
  ),
113
116
  light: themedClass(
114
117
  'selectPlaceholderVariantsColorSchemeLight',
115
- 'text-gray-400',
118
+ 'text-gray-500',
116
119
  ),
117
120
  accent: themedClass(
118
121
  'selectPlaceholderVariantsColorSchemeAccent',
119
- 'text-gray-400',
122
+ 'text-gray-500',
120
123
  ),
121
124
  },
122
125
  },
@@ -281,23 +284,26 @@ const selectFloatingLabel = tv({
281
284
  colorScheme: {
282
285
  none: themedClass(
283
286
  'selectFloatingLabelVariantsColorSchemeNone',
284
- 'text-gray-600 group-focus-within:text-primary-600 dark:text-gray-400 dark:group-focus-within:text-primary-400',
287
+ 'text-gray-500 group-focus-within:text-primary-600 dark:text-gray-500 dark:group-focus-within:text-primary-400',
285
288
  ),
286
289
  dark: themedClass(
287
290
  'selectFloatingLabelVariantsColorSchemeDark',
288
- 'text-gray-300 group-focus-within:text-primary-400 dark:text-gray-300 dark:group-focus-within:text-primary-400',
291
+ 'text-gray-500 group-focus-within:text-primary-400 dark:text-gray-500 dark:group-focus-within:text-primary-400',
289
292
  ),
290
293
  light: themedClass(
291
294
  'selectFloatingLabelVariantsColorSchemeLight',
292
- 'text-gray-600 group-focus-within:text-primary-600 dark:text-gray-400 dark:group-focus-within:text-primary-400',
295
+ 'text-gray-500 group-focus-within:text-primary-600 dark:text-gray-500 dark:group-focus-within:text-primary-400',
293
296
  ),
294
297
  accent: themedClass(
295
298
  'selectFloatingLabelVariantsColorSchemeAccent',
296
- 'text-gray-600 group-focus-within:text-primary-600 dark:text-gray-400 dark:group-focus-within:text-primary-400',
299
+ 'text-gray-500 group-focus-within:text-primary-600 dark:text-gray-500 dark:group-focus-within:text-primary-400',
297
300
  ),
298
301
  },
299
302
  floating: {
300
- true: themedClass('selectFloatingLabelVariantsFloatingTrue', '-top-2 translate-y-0 text-xs font-medium'),
303
+ true: themedClass(
304
+ 'selectFloatingLabelVariantsFloatingTrue',
305
+ '-top-2 translate-y-0 text-xs font-medium',
306
+ ),
301
307
  false: themedClass(
302
308
  'selectFloatingLabelVariantsFloatingFalse',
303
309
  'top-1/2 -translate-y-1/2 text-base font-normal',
@@ -334,8 +340,7 @@ const selectFloatingLabelText = tv({
334
340
  })
335
341
 
336
342
  const hasSelectedValue = computed(() => {
337
- if (Array.isArray(model.value))
338
- return model.value.length > 0
343
+ if (Array.isArray(model.value)) return model.value.length > 0
339
344
 
340
345
  return model.value !== '' && model.value !== null && model.value !== undefined
341
346
  })
@@ -349,18 +354,22 @@ const hasSelectedValue = computed(() => {
349
354
  :description="floatingLabels ? undefined : cleanDescription"
350
355
  :help="floatingLabels ? cleanDescription : undefined"
351
356
  :ui="{
357
+ labelWrapper: themedClass('formFieldLabelWrapper', 'mb-1'),
352
358
  label: formFieldLabel({ colorScheme }),
353
359
  help: formFieldDescription({ colorScheme }),
354
360
  description: formFieldDescription({ colorScheme }),
361
+ wrapper: themedClass('formFieldWrapper', 'mb-2'),
355
362
  }"
356
363
  >
357
- <div :class="themedClass('selectWrapper', 'relative group')">
364
+ <div :class="themedClass('selectWrapper', 'group relative')">
358
365
  <USelect
359
366
  v-model="model"
360
367
  :id="formElement.metadata.key"
361
368
  :items="formattedOptions"
362
369
  :multiple="Boolean(formElement.metadata.multiple)"
363
- :placeholder="floatingLabels ? undefined : formElement.emptyOption?.title"
370
+ :placeholder="
371
+ floatingLabels ? undefined : formElement.emptyOption?.title
372
+ "
364
373
  :ui="{
365
374
  base: selectBase({ colorScheme, floating: floatingLabels }),
366
375
  placeholder: selectPlaceholder({ colorScheme }),
@@ -375,10 +384,14 @@ const hasSelectedValue = computed(() => {
375
384
  />
376
385
  <label
377
386
  v-if="floatingLabels"
378
- :class="selectFloatingLabel({ colorScheme, floating: hasSelectedValue })"
387
+ :class="
388
+ selectFloatingLabel({ colorScheme, floating: hasSelectedValue })
389
+ "
379
390
  :for="formElement.metadata.key"
380
391
  >
381
- <span :class="selectFloatingLabelText({ colorScheme })">{{ formElement.metadata.title }}</span>
392
+ <span :class="selectFloatingLabelText({ colorScheme })">{{
393
+ formElement.metadata.title
394
+ }}</span>
382
395
  </label>
383
396
  </div>
384
397
  </UFormField>
@@ -24,7 +24,11 @@ const floatingLabels = inject<boolean>('floatingLabels', true)
24
24
  const isTextAreaFocused = ref(false)
25
25
 
26
26
  const textAreaHasValue = computed(() => {
27
- return model.value !== null && model.value !== undefined && `${model.value}`.length > 0
27
+ return (
28
+ model.value !== null &&
29
+ model.value !== undefined &&
30
+ `${model.value}`.length > 0
31
+ )
28
32
  })
29
33
 
30
34
  const textAreaShouldFloat = computed(() => {
@@ -88,19 +92,19 @@ const textAreaBase = tv({
88
92
  colorScheme: {
89
93
  none: themedClass(
90
94
  'textAreaBaseVariantsColorSchemeNone',
91
- 'bg-white text-gray-950 ring-gray-200 dark:bg-white dark:ring-gray-200 dark:text-gray-950 placeholder:text-gray-400',
95
+ 'bg-white text-gray-950 ring-gray-200 dark:bg-white dark:ring-gray-200 dark:text-gray-950 placeholder:text-gray-500',
92
96
  ),
93
97
  dark: themedClass(
94
98
  'textAreaBaseVariantsColorSchemeDark',
95
- 'bg-gray-800 text-gray-200 ring-gray-700 dark:bg-gray-800 dark:ring-gray-700 dark:text-gray-200 placeholder:text-gray-400',
99
+ 'bg-gray-800 text-gray-200 ring-gray-700 dark:bg-gray-800 dark:ring-gray-700 dark:text-gray-200 placeholder:text-gray-500',
96
100
  ),
97
101
  light: themedClass(
98
102
  'textAreaBaseVariantsColorSchemeLight',
99
- 'bg-white text-gray-950 ring-gray-200 dark:bg-white dark:ring-gray-200 dark:text-gray-950 placeholder:text-gray-400',
103
+ 'bg-white text-gray-950 ring-gray-200 dark:bg-white dark:ring-gray-200 dark:text-gray-950 placeholder:text-gray-500',
100
104
  ),
101
105
  accent: themedClass(
102
106
  'textAreaBaseVariantsColorSchemeAccent',
103
- 'bg-white text-gray-950 ring-gray-200 dark:bg-white dark:ring-gray-200 dark:text-gray-950 placeholder:text-gray-400',
107
+ 'bg-white text-gray-950 ring-gray-200 dark:bg-white dark:ring-gray-200 dark:text-gray-950 placeholder:text-gray-500',
104
108
  ),
105
109
  },
106
110
  },
@@ -115,27 +119,36 @@ const floatingLabel = tv({
115
119
  colorScheme: {
116
120
  none: themedClass(
117
121
  'floatingLabelVariantsColorSchemeNone',
118
- 'text-gray-600 dark:text-gray-400',
122
+ 'text-gray-500 dark:text-gray-500',
119
123
  ),
120
124
  dark: themedClass(
121
125
  'floatingLabelVariantsColorSchemeDark',
122
- 'text-gray-300 dark:text-gray-300',
126
+ 'text-gray-500 dark:text-gray-500',
123
127
  ),
124
128
  light: themedClass(
125
129
  'floatingLabelVariantsColorSchemeLight',
126
- 'text-gray-600 dark:text-gray-400',
130
+ 'text-gray-500 dark:text-gray-500',
127
131
  ),
128
132
  accent: themedClass(
129
133
  'floatingLabelVariantsColorSchemeAccent',
130
- 'text-gray-600 dark:text-gray-400',
134
+ 'text-gray-500 dark:text-gray-500',
131
135
  ),
132
136
  },
133
137
  floating: {
134
- true: themedClass('floatingLabelVariantsFloatingTrue', '-top-2 text-xs font-medium'),
135
- false: themedClass('floatingLabelVariantsFloatingFalse', 'top-4 text-base font-normal'),
138
+ true: themedClass(
139
+ 'floatingLabelVariantsFloatingTrue',
140
+ '-top-2 text-xs font-medium',
141
+ ),
142
+ false: themedClass(
143
+ 'floatingLabelVariantsFloatingFalse',
144
+ 'top-4 text-base font-normal',
145
+ ),
136
146
  },
137
147
  focused: {
138
- true: themedClass('floatingLabelVariantsFocusedTrue', 'text-primary-600 dark:text-primary-400'),
148
+ true: themedClass(
149
+ 'floatingLabelVariantsFocusedTrue',
150
+ 'text-primary-500 dark:text-primary-500',
151
+ ),
139
152
  false: themedClass('floatingLabelVariantsFocusedFalse', ''),
140
153
  },
141
154
  },
@@ -177,16 +190,22 @@ const floatingLabelText = tv({
177
190
  :description="floatingLabels ? undefined : cleanDescription"
178
191
  :help="floatingLabels ? cleanDescription : undefined"
179
192
  :ui="{
193
+ labelWrapper: themedClass('formFieldLabelWrapper', 'mb-1'),
180
194
  label: formFieldLabel({ colorScheme }),
181
195
  help: formFieldDescription({ colorScheme }),
182
196
  description: formFieldDescription({ colorScheme }),
197
+ wrapper: themedClass('formFieldWrapper', 'mb-2'),
183
198
  }"
184
199
  >
185
200
  <div :class="themedClass('textAreaWrapper', 'relative')">
186
201
  <UTextarea
187
202
  v-model="model"
188
203
  :id="formElement.metadata.key"
189
- :placeholder="floatingLabels ? (formElement.placeholder || ' ') : formElement.placeholder"
204
+ :placeholder="
205
+ floatingLabels
206
+ ? formElement.placeholder || ' '
207
+ : formElement.placeholder
208
+ "
190
209
  :maxlength="formElement.maxlength"
191
210
  :minlength="formElement.minlength"
192
211
  :pattern="formElement.pattern?.rule"
@@ -200,10 +219,18 @@ const floatingLabelText = tv({
200
219
  />
201
220
  <label
202
221
  v-if="floatingLabels"
203
- :class="floatingLabel({ colorScheme, floating: textAreaShouldFloat, focused: isTextAreaFocused })"
222
+ :class="
223
+ floatingLabel({
224
+ colorScheme,
225
+ floating: textAreaShouldFloat,
226
+ focused: isTextAreaFocused,
227
+ })
228
+ "
204
229
  :for="formElement.metadata.key"
205
230
  >
206
- <span :class="floatingLabelText({ colorScheme })">{{ formElement.metadata.title }}</span>
231
+ <span :class="floatingLabelText({ colorScheme })">{{
232
+ formElement.metadata.title
233
+ }}</span>
207
234
  </label>
208
235
  </div>
209
236
  </UFormField>
@@ -70,6 +70,18 @@ const formFieldDescription = tv({
70
70
  },
71
71
  })
72
72
 
73
+ const inputRoot = tv({
74
+ base: themedClass('inputRoot', 'w-full'),
75
+ variants: {
76
+ colorScheme: {
77
+ none: themedClass('inputRootVariantsColorSchemeNone'),
78
+ dark: themedClass('inputRootVariantsColorSchemeDark'),
79
+ light: themedClass('inputRootVariantsColorSchemeLight'),
80
+ accent: themedClass('inputRootVariantsColorSchemeAccent'),
81
+ },
82
+ },
83
+ })
84
+
73
85
  const inputBase = tv({
74
86
  base: themedClass(
75
87
  'inputBase',
@@ -79,19 +91,19 @@ const inputBase = tv({
79
91
  colorScheme: {
80
92
  none: themedClass(
81
93
  'inputBaseVariantsColorSchemeNone',
82
- 'bg-white text-gray-950 ring-gray-200 dark:bg-white dark:ring-gray-200 dark:text-gray-950 placeholder:text-gray-400',
94
+ 'bg-white text-gray-950 ring-gray-200 dark:bg-white dark:ring-gray-200 dark:text-gray-950 placeholder:text-gray-500',
83
95
  ),
84
96
  dark: themedClass(
85
97
  'inputBaseVariantsColorSchemeDark',
86
- 'bg-gray-800 text-gray-200 ring-gray-700 dark:bg-gray-800 dark:ring-gray-700 dark:text-gray-200 placeholder:text-gray-400',
98
+ 'bg-gray-800 text-gray-200 ring-gray-700 dark:bg-gray-800 dark:ring-gray-700 dark:text-gray-200 placeholder:text-gray-500',
87
99
  ),
88
100
  light: themedClass(
89
101
  'inputBaseVariantsColorSchemeLight',
90
- 'bg-white text-gray-950 ring-gray-200 dark:bg-white dark:ring-gray-200 dark:text-gray-950 placeholder:text-gray-400',
102
+ 'bg-white text-gray-950 ring-gray-200 dark:bg-white dark:ring-gray-200 dark:text-gray-950 placeholder:text-gray-500',
91
103
  ),
92
104
  accent: themedClass(
93
105
  'inputBaseVariantsColorSchemeAccent',
94
- 'bg-white text-gray-950 ring-gray-200 dark:bg-white dark:ring-gray-200 dark:text-gray-950 placeholder:text-gray-400',
106
+ 'bg-white text-gray-950 ring-gray-200 dark:bg-white dark:ring-gray-200 dark:text-gray-950 placeholder:text-gray-500',
95
107
  ),
96
108
  },
97
109
  },
@@ -106,19 +118,19 @@ const floatingLabel = tv({
106
118
  colorScheme: {
107
119
  none: themedClass(
108
120
  'floatingLabelVariantsColorSchemeNone',
109
- 'text-gray-600 peer-placeholder-shown:text-gray-400 peer-focus:text-primary-600 dark:text-gray-400 dark:peer-placeholder-shown:text-gray-500 dark:peer-focus:text-primary-400',
121
+ 'text-gray-500 peer-placeholder-shown:text-gray-500 peer-focus:text-primary-600 dark:text-gray-500 dark:peer-placeholder-shown:text-gray-500 dark:peer-focus:text-primary-400',
110
122
  ),
111
123
  dark: themedClass(
112
124
  'floatingLabelVariantsColorSchemeDark',
113
- 'text-gray-300 peer-placeholder-shown:text-gray-500 peer-focus:text-primary-400 dark:text-gray-300 dark:peer-placeholder-shown:text-gray-500 dark:peer-focus:text-primary-400',
125
+ 'text-gray-500 peer-placeholder-shown:text-gray-500 peer-focus:text-primary-400 dark:text-gray-500 dark:peer-placeholder-shown:text-gray-500 dark:peer-focus:text-primary-400',
114
126
  ),
115
127
  light: themedClass(
116
128
  'floatingLabelVariantsColorSchemeLight',
117
- 'text-gray-600 peer-placeholder-shown:text-gray-400 peer-focus:text-primary-600 dark:text-gray-400 dark:peer-placeholder-shown:text-gray-500 dark:peer-focus:text-primary-400',
129
+ 'text-gray-500 peer-placeholder-shown:text-gray-500 peer-focus:text-primary-600 dark:text-gray-500 dark:peer-placeholder-shown:text-gray-500 dark:peer-focus:text-primary-400',
118
130
  ),
119
131
  accent: themedClass(
120
132
  'floatingLabelVariantsColorSchemeAccent',
121
- 'text-gray-600 peer-placeholder-shown:text-gray-400 peer-focus:text-primary-600 dark:text-gray-400 dark:peer-placeholder-shown:text-gray-500 dark:peer-focus:text-primary-400',
133
+ 'text-gray-500 peer-placeholder-shown:text-gray-500 peer-focus:text-primary-600 dark:text-gray-500 dark:peer-placeholder-shown:text-gray-500 dark:peer-focus:text-primary-400',
122
134
  ),
123
135
  },
124
136
  },
@@ -160,21 +172,28 @@ const floatingLabelText = tv({
160
172
  :description="floatingLabels ? undefined : cleanDescription"
161
173
  :help="floatingLabels ? cleanDescription : undefined"
162
174
  :ui="{
175
+ labelWrapper: themedClass('formFieldLabelWrapper', 'mb-1'),
163
176
  label: formFieldLabel({ colorScheme }),
164
177
  help: formFieldDescription({ colorScheme }),
165
178
  description: formFieldDescription({ colorScheme }),
179
+ wrapper: themedClass('formFieldWrapper', 'mb-2'),
166
180
  }"
167
181
  >
168
182
  <UInput
169
183
  v-model="model"
170
184
  :id="formElement.metadata.key"
171
185
  :type="formElement.metadata.type"
172
- :placeholder="floatingLabels ? (formElement.placeholder || ' ') : formElement.placeholder"
186
+ :placeholder="
187
+ floatingLabels
188
+ ? formElement.placeholder || ' '
189
+ : formElement.placeholder
190
+ "
173
191
  :maxlength="formElement.maxlength"
174
192
  :minlength="formElement.minlength"
175
193
  :pattern="formElement.pattern?.rule"
176
194
  :data-floating="floatingLabels"
177
195
  :ui="{
196
+ root: inputRoot({ colorScheme }),
178
197
  base: inputBase({ colorScheme }),
179
198
  }"
180
199
  >
@@ -183,7 +202,9 @@ const floatingLabelText = tv({
183
202
  :class="floatingLabel({ colorScheme })"
184
203
  :for="formElement.metadata.key"
185
204
  >
186
- <span :class="floatingLabelText({ colorScheme })">{{ formElement.metadata.title }}</span>
205
+ <span :class="floatingLabelText({ colorScheme })">
206
+ {{ formElement.metadata.title }}
207
+ </span>
187
208
  </label>
188
209
  </UInput>
189
210
  </UFormField>
@@ -70,6 +70,18 @@ const formFieldDescription = tv({
70
70
  },
71
71
  })
72
72
 
73
+ const inputRoot = tv({
74
+ base: themedClass('inputRoot', 'w-full'),
75
+ variants: {
76
+ colorScheme: {
77
+ none: themedClass('inputRootVariantsColorSchemeNone'),
78
+ dark: themedClass('inputRootVariantsColorSchemeDark'),
79
+ light: themedClass('inputRootVariantsColorSchemeLight'),
80
+ accent: themedClass('inputRootVariantsColorSchemeAccent'),
81
+ },
82
+ },
83
+ })
84
+
73
85
  const inputBase = tv({
74
86
  base: themedClass(
75
87
  'inputBase',
@@ -79,19 +91,19 @@ const inputBase = tv({
79
91
  colorScheme: {
80
92
  none: themedClass(
81
93
  'inputBaseVariantsColorSchemeNone',
82
- 'bg-white text-gray-950 ring-gray-200 dark:bg-white dark:ring-gray-200 dark:text-gray-950 placeholder:text-gray-400',
94
+ 'bg-white text-gray-950 ring-gray-200 dark:bg-white dark:ring-gray-200 dark:text-gray-950 placeholder:text-gray-500',
83
95
  ),
84
96
  dark: themedClass(
85
97
  'inputBaseVariantsColorSchemeDark',
86
- 'bg-gray-800 text-gray-200 ring-gray-700 dark:bg-gray-800 dark:ring-gray-700 dark:text-gray-200 placeholder:text-gray-400',
98
+ 'bg-gray-800 text-gray-200 ring-gray-700 dark:bg-gray-800 dark:ring-gray-700 dark:text-gray-200 placeholder:text-gray-500',
87
99
  ),
88
100
  light: themedClass(
89
101
  'inputBaseVariantsColorSchemeLight',
90
- 'bg-white text-gray-950 ring-gray-200 dark:bg-white dark:ring-gray-200 dark:text-gray-950 placeholder:text-gray-400',
102
+ 'bg-white text-gray-950 ring-gray-200 dark:bg-white dark:ring-gray-200 dark:text-gray-950 placeholder:text-gray-500',
91
103
  ),
92
104
  accent: themedClass(
93
105
  'inputBaseVariantsColorSchemeAccent',
94
- 'bg-white text-gray-950 ring-gray-200 dark:bg-white dark:ring-gray-200 dark:text-gray-950 placeholder:text-gray-400',
106
+ 'bg-white text-gray-950 ring-gray-200 dark:bg-white dark:ring-gray-200 dark:text-gray-950 placeholder:text-gray-500',
95
107
  ),
96
108
  },
97
109
  },
@@ -106,19 +118,19 @@ const floatingLabel = tv({
106
118
  colorScheme: {
107
119
  none: themedClass(
108
120
  'floatingLabelVariantsColorSchemeNone',
109
- 'text-gray-600 peer-placeholder-shown:text-gray-400 peer-focus:text-primary-600 dark:text-gray-400 dark:peer-placeholder-shown:text-gray-500 dark:peer-focus:text-primary-400',
121
+ 'text-gray-500 peer-placeholder-shown:text-gray-500 peer-focus:text-primary-600 dark:text-gray-500 dark:peer-placeholder-shown:text-gray-500 dark:peer-focus:text-primary-400',
110
122
  ),
111
123
  dark: themedClass(
112
124
  'floatingLabelVariantsColorSchemeDark',
113
- 'text-gray-300 peer-placeholder-shown:text-gray-500 peer-focus:text-primary-400 dark:text-gray-300 dark:peer-placeholder-shown:text-gray-500 dark:peer-focus:text-primary-400',
125
+ 'text-gray-500 peer-placeholder-shown:text-gray-500 peer-focus:text-primary-400 dark:text-gray-500 dark:peer-placeholder-shown:text-gray-500 dark:peer-focus:text-primary-400',
114
126
  ),
115
127
  light: themedClass(
116
128
  'floatingLabelVariantsColorSchemeLight',
117
- 'text-gray-600 peer-placeholder-shown:text-gray-400 peer-focus:text-primary-600 dark:text-gray-400 dark:peer-placeholder-shown:text-gray-500 dark:peer-focus:text-primary-400',
129
+ 'text-gray-500 peer-placeholder-shown:text-gray-500 peer-focus:text-primary-600 dark:text-gray-500 dark:peer-placeholder-shown:text-gray-500 dark:peer-focus:text-primary-400',
118
130
  ),
119
131
  accent: themedClass(
120
132
  'floatingLabelVariantsColorSchemeAccent',
121
- 'text-gray-600 peer-placeholder-shown:text-gray-400 peer-focus:text-primary-600 dark:text-gray-400 dark:peer-placeholder-shown:text-gray-500 dark:peer-focus:text-primary-400',
133
+ 'text-gray-500 peer-placeholder-shown:text-gray-500 peer-focus:text-primary-600 dark:text-gray-500 dark:peer-placeholder-shown:text-gray-500 dark:peer-focus:text-primary-400',
122
134
  ),
123
135
  },
124
136
  },
@@ -160,21 +172,28 @@ const floatingLabelText = tv({
160
172
  :description="floatingLabels ? undefined : cleanDescription"
161
173
  :help="floatingLabels ? cleanDescription : undefined"
162
174
  :ui="{
175
+ labelWrapper: themedClass('formFieldLabelWrapper', 'mb-1'),
163
176
  label: formFieldLabel({ colorScheme }),
164
177
  description: formFieldDescription({ colorScheme }),
165
178
  help: formFieldDescription({ colorScheme }),
179
+ wrapper: themedClass('formFieldWrapper', 'mb-2'),
166
180
  }"
167
181
  >
168
182
  <UInput
169
183
  v-model="model"
170
184
  :id="formElement.metadata.key"
171
185
  :type="formElement.metadata.type"
172
- :placeholder="floatingLabels ? (formElement.placeholder || ' ') : formElement.placeholder"
186
+ :placeholder="
187
+ floatingLabels
188
+ ? formElement.placeholder || ' '
189
+ : formElement.placeholder
190
+ "
173
191
  :maxlength="formElement.maxlength"
174
192
  :minlength="formElement.minlength"
175
193
  :pattern="formElement.pattern?.rule"
176
194
  :data-floating="floatingLabels"
177
195
  :ui="{
196
+ root: inputRoot({ colorScheme }),
178
197
  base: inputBase({ colorScheme }),
179
198
  }"
180
199
  >
@@ -183,7 +202,9 @@ const floatingLabelText = tv({
183
202
  :class="floatingLabel({ colorScheme })"
184
203
  :for="formElement.metadata.key"
185
204
  >
186
- <span :class="floatingLabelText({ colorScheme })">{{ formElement.metadata.title }}</span>
205
+ <span :class="floatingLabelText({ colorScheme })">
206
+ {{ formElement.metadata.title }}
207
+ </span>
187
208
  </label>
188
209
  </UInput>
189
210
  </UFormField>
@@ -70,6 +70,18 @@ const formFieldDescription = tv({
70
70
  },
71
71
  })
72
72
 
73
+ const inputRoot = tv({
74
+ base: themedClass('inputRoot', 'w-full'),
75
+ variants: {
76
+ colorScheme: {
77
+ none: themedClass('inputRootVariantsColorSchemeNone'),
78
+ dark: themedClass('inputRootVariantsColorSchemeDark'),
79
+ light: themedClass('inputRootVariantsColorSchemeLight'),
80
+ accent: themedClass('inputRootVariantsColorSchemeAccent'),
81
+ },
82
+ },
83
+ })
84
+
73
85
  const inputBase = tv({
74
86
  base: themedClass(
75
87
  'inputBase',
@@ -79,19 +91,19 @@ const inputBase = tv({
79
91
  colorScheme: {
80
92
  none: themedClass(
81
93
  'inputBaseVariantsColorSchemeNone',
82
- 'bg-white text-gray-950 ring-gray-200 dark:bg-white dark:ring-gray-200 dark:text-gray-950 placeholder:text-gray-400',
94
+ 'bg-white text-gray-950 ring-gray-200 dark:bg-white dark:ring-gray-200 dark:text-gray-950 placeholder:text-gray-500',
83
95
  ),
84
96
  dark: themedClass(
85
97
  'inputBaseVariantsColorSchemeDark',
86
- 'bg-gray-800 text-gray-200 ring-gray-700 dark:bg-gray-800 dark:ring-gray-700 dark:text-gray-200 placeholder:text-gray-400',
98
+ 'bg-gray-800 text-gray-200 ring-gray-700 dark:bg-gray-800 dark:ring-gray-700 dark:text-gray-200 placeholder:text-gray-500',
87
99
  ),
88
100
  light: themedClass(
89
101
  'inputBaseVariantsColorSchemeLight',
90
- 'bg-white text-gray-950 ring-gray-200 dark:bg-white dark:ring-gray-200 dark:text-gray-950 placeholder:text-gray-400',
102
+ 'bg-white text-gray-950 ring-gray-200 dark:bg-white dark:ring-gray-200 dark:text-gray-950 placeholder:text-gray-500',
91
103
  ),
92
104
  accent: themedClass(
93
105
  'inputBaseVariantsColorSchemeAccent',
94
- 'bg-white text-gray-950 ring-gray-200 dark:bg-white dark:ring-gray-200 dark:text-gray-950 placeholder:text-gray-400',
106
+ 'bg-white text-gray-950 ring-gray-200 dark:bg-white dark:ring-gray-200 dark:text-gray-950 placeholder:text-gray-500',
95
107
  ),
96
108
  },
97
109
  },
@@ -106,19 +118,19 @@ const floatingLabel = tv({
106
118
  colorScheme: {
107
119
  none: themedClass(
108
120
  'floatingLabelVariantsColorSchemeNone',
109
- 'text-gray-600 peer-placeholder-shown:text-gray-400 peer-focus:text-primary-600 dark:text-gray-400 dark:peer-placeholder-shown:text-gray-500 dark:peer-focus:text-primary-400',
121
+ 'text-gray-500 peer-placeholder-shown:text-gray-500 peer-focus:text-primary-600 dark:text-gray-500 dark:peer-placeholder-shown:text-gray-500 dark:peer-focus:text-primary-400',
110
122
  ),
111
123
  dark: themedClass(
112
124
  'floatingLabelVariantsColorSchemeDark',
113
- 'text-gray-300 peer-placeholder-shown:text-gray-500 peer-focus:text-primary-400 dark:text-gray-300 dark:peer-placeholder-shown:text-gray-500 dark:peer-focus:text-primary-400',
125
+ 'text-gray-500 peer-placeholder-shown:text-gray-500 peer-focus:text-primary-400 dark:text-gray-500 dark:peer-placeholder-shown:text-gray-500 dark:peer-focus:text-primary-400',
114
126
  ),
115
127
  light: themedClass(
116
128
  'floatingLabelVariantsColorSchemeLight',
117
- 'text-gray-600 peer-placeholder-shown:text-gray-400 peer-focus:text-primary-600 dark:text-gray-400 dark:peer-placeholder-shown:text-gray-500 dark:peer-focus:text-primary-400',
129
+ 'text-gray-500 peer-placeholder-shown:text-gray-500 peer-focus:text-primary-600 dark:text-gray-500 dark:peer-placeholder-shown:text-gray-500 dark:peer-focus:text-primary-400',
118
130
  ),
119
131
  accent: themedClass(
120
132
  'floatingLabelVariantsColorSchemeAccent',
121
- 'text-gray-600 peer-placeholder-shown:text-gray-400 peer-focus:text-primary-600 dark:text-gray-400 dark:peer-placeholder-shown:text-gray-500 dark:peer-focus:text-primary-400',
133
+ 'text-gray-500 peer-placeholder-shown:text-gray-500 peer-focus:text-primary-600 dark:text-gray-500 dark:peer-placeholder-shown:text-gray-500 dark:peer-focus:text-primary-400',
122
134
  ),
123
135
  },
124
136
  },
@@ -160,21 +172,28 @@ const floatingLabelText = tv({
160
172
  :description="floatingLabels ? undefined : cleanDescription"
161
173
  :help="floatingLabels ? cleanDescription : undefined"
162
174
  :ui="{
175
+ labelWrapper: themedClass('formFieldLabelWrapper', 'mb-1'),
163
176
  label: formFieldLabel({ colorScheme }),
164
177
  help: formFieldDescription({ colorScheme }),
165
178
  description: formFieldDescription({ colorScheme }),
179
+ wrapper: themedClass('formFieldWrapper', 'mb-2'),
166
180
  }"
167
181
  >
168
182
  <UInput
169
183
  v-model="model"
170
184
  :id="formElement.metadata.key"
171
185
  :type="formElement.metadata.type"
172
- :placeholder="floatingLabels ? (formElement.placeholder || ' ') : formElement.placeholder"
186
+ :placeholder="
187
+ floatingLabels
188
+ ? formElement.placeholder || ' '
189
+ : formElement.placeholder
190
+ "
173
191
  :maxlength="formElement.maxlength"
174
192
  :minlength="formElement.minlength"
175
193
  :pattern="formElement.pattern?.rule"
176
194
  :data-floating="floatingLabels"
177
195
  :ui="{
196
+ root: inputRoot({ colorScheme }),
178
197
  base: inputBase({ colorScheme }),
179
198
  }"
180
199
  >
@@ -183,7 +202,9 @@ const floatingLabelText = tv({
183
202
  :class="floatingLabel({ colorScheme })"
184
203
  :for="formElement.metadata.key"
185
204
  >
186
- <span :class="floatingLabelText({ colorScheme })">{{ formElement.metadata.title }}</span>
205
+ <span :class="floatingLabelText({ colorScheme })">
206
+ {{ formElement.metadata.title }}
207
+ </span>
187
208
  </label>
188
209
  </UInput>
189
210
  </UFormField>
@@ -157,7 +157,7 @@ const accordionItem = tv({
157
157
  const accordionTrigger = tv({
158
158
  base: themedClass(
159
159
  'accordionTriggerBase',
160
- 'items-center py-4 hover:no-underline gap-4 text-left text-base cursor-pointer',
160
+ 'items-center px-6 py-4 hover:no-underline gap-4 text-left text-base cursor-pointer',
161
161
  ),
162
162
  variants: {
163
163
  colorScheme: {
@@ -182,7 +182,7 @@ const accordionTrigger = tv({
182
182
  })
183
183
 
184
184
  const accordionContent = tv({
185
- base: themedClass('accordionContentBase', 'p-4 pb-6 text-base'),
185
+ base: themedClass('accordionContentBase', 'px-6 pt-4 pb-6 text-base'),
186
186
  variants: {
187
187
  colorScheme: {
188
188
  none: themedClass('accordionContentVariantsColorSchemeNone'),
@@ -44,28 +44,32 @@
44
44
  <UPopover
45
45
  v-model:open="openPopovers[field.field]"
46
46
  :class="popover({ colorScheme })"
47
+ :ui="{
48
+ content: themedClass(
49
+ 'popoverUiContentClass',
50
+ 'rounded-none ring-0',
51
+ ),
52
+ }"
47
53
  >
48
- <template #trigger>
49
- <button :class="popoverTrigger({ colorScheme })">
50
- <span
51
- :class="
52
- themedClass('popoverTriggerLabelClass', 'text-h8 truncate')
53
- "
54
- >
55
- {{ fieldTriggerLabel(field) }}
56
- </span>
57
- <SpriteSymbol
58
- name="chevron-down"
59
- aria-hidden="true"
60
- :class="[
61
- popoverTriggerIcon({ colorScheme }),
62
- openPopovers[field.field] ? 'rotate-180' : 'rotate-0',
63
- ]"
64
- />
65
- </button>
66
- </template>
67
-
68
- <template #panel>
54
+ <button type="button" :class="popoverTrigger({ colorScheme })">
55
+ <span
56
+ :class="
57
+ themedClass('popoverTriggerLabelClass', 'text-h8 truncate')
58
+ "
59
+ >
60
+ {{ fieldTriggerLabel(field) }}
61
+ </span>
62
+ <SpriteSymbol
63
+ name="chevron-down"
64
+ aria-hidden="true"
65
+ :class="[
66
+ popoverTriggerIcon({ colorScheme }),
67
+ openPopovers[field.field] ? 'rotate-180' : 'rotate-0',
68
+ ]"
69
+ />
70
+ </button>
71
+
72
+ <template #content>
69
73
  <div :class="popoverContent({ colorScheme })">
70
74
  <!-- Filter options container -->
71
75
  <div
@@ -87,7 +91,15 @@
87
91
  :model-value="
88
92
  selections[field.field]?.includes(opt.value)
89
93
  "
90
- :class="checkbox({ colorScheme })"
94
+ :ui="{
95
+ root: themedClass('filterOptionUCheckboxRoot'),
96
+ container: themedClass(
97
+ 'filterOptionUCheckboxContainer',
98
+ ),
99
+ base: checkboxBase({ colorScheme }),
100
+ indicator: checkboxIndicator({ colorScheme }),
101
+ icon: themedClass('filterOptionUCheckboxIcon'),
102
+ }"
91
103
  tabindex="-1"
92
104
  @click.stop
93
105
  />
@@ -558,28 +570,43 @@ const resetFiltersButton = tv({
558
570
  },
559
571
  })
560
572
 
561
- const checkbox = tv({
562
- base: themedClass(
563
- 'checkboxBase',
564
- 'pointer-events-none w-[18px] h-[18px] mt-0.5 transition-all duration-200',
565
- ),
573
+ const checkboxBase = tv({
574
+ base: themedClass('checkboxBase', 'rounded-none'),
575
+ variants: {
576
+ colorScheme: {
577
+ none: themedClass('checkboxBaseVariantsColorSchemeNone', 'ring-gray-200'),
578
+ dark: themedClass('checkboxBaseVariantsColorSchemeDark', 'ring-gray-800'),
579
+ light: themedClass(
580
+ 'checkboxBaseVariantsColorSchemeLight',
581
+ 'ring-gray-200',
582
+ ),
583
+ accent: themedClass(
584
+ 'checkboxBaseVariantsColorSchemeAccent',
585
+ 'ring-white',
586
+ ),
587
+ },
588
+ },
589
+ })
590
+
591
+ const checkboxIndicator = tv({
592
+ base: themedClass('checkboxIndicatorBase'),
566
593
  variants: {
567
594
  colorScheme: {
568
595
  none: themedClass(
569
- 'checkboxVariantsColorSchemeNone',
570
- 'text-black border-gray-200 dark:border-gray-200 bg-white dark:bg-white data-[state=checked]:bg-primary-500 dark:data-[state=checked]:bg-primary-500 text-white dark:text-white data-[state=checked]:text-white dark:data-[state=checked]:text-white data-[state=checked]:border-primary-500 dark:data-[state=checked]:border-primary',
596
+ 'checkboxIndicatorVariantsColorSchemeNone',
597
+ 'text-white',
571
598
  ),
572
599
  dark: themedClass(
573
- 'checkboxVariantsColorSchemeDark',
574
- 'text-gray-200 border-gray-800 dark:border-gray-800 bg-gray-800 dark:bg-gray-800 data-[state=checked]:bg-primary-500 dark:data-[state=checked]:bg-primary-500 text-gray-200 dark:text-gray-200 data-[state=checked]:text-gray-200 dark:data-[state=checked]:text-gray-200 data-[state=checked]:border-primary-500 dark:data-[state=checked]:border-primary',
600
+ 'checkboxIndicatorVariantsColorSchemeDark',
601
+ 'text-white',
575
602
  ),
576
603
  light: themedClass(
577
- 'checkboxVariantsColorSchemeLight',
578
- 'text-black border-gray-200 dark:border-gray-200 bg-gray-50 dark:bg-gray-50 data-[state=checked]:bg-primary-500 dark:data-[state=checked]:bg-primary-500 text-white dark:text-white data-[state=checked]:text-white dark:data-[state=checked]:text-white data-[state=checked]:border-primary-500 dark:data-[state=checked]:border-primary',
604
+ 'checkboxIndicatorVariantsColorSchemeLight',
605
+ 'text-white',
579
606
  ),
580
607
  accent: themedClass(
581
- 'checkboxVariantsColorSchemeAccent',
582
- 'text-white border-primary-600 dark:border-primary-600 bg-primary-600 dark:bg-primary-600 data-[state=checked]:bg-primary-600 dark:data-[state=checked]:bg-primary-600 text-white dark:text-white data-[state=checked]:text-white dark:data-[state=checked]:text-white data-[state=checked]:border-primary-600 dark:data-[state=checked]:border-primary-600',
608
+ 'checkboxIndicatorVariantsColorSchemeAccent',
609
+ 'text-primary bg-white',
583
610
  ),
584
611
  },
585
612
  },
@@ -180,21 +180,15 @@ Facets: {{ facetData.length }} items</pre
180
180
  "
181
181
  >
182
182
  <slot name="load-more" :loadMore="loadMore" :loading="loadingMore">
183
- <button
184
- @click="loadMore"
183
+ <DesignSystemAtomsButton
184
+ type="button"
185
+ :colorScheme="colorScheme"
186
+ buttonStyle="normal"
187
+ :label="loadingMore ? defaultLoadingText : defaultLoadMoreText"
185
188
  :disabled="loadingMore"
186
- :class="cn(button({ colorScheme }), loadMoreButtonClass)"
187
- >
188
- <span
189
- v-if="!loadingMore"
190
- :class="themedClass('globalLoadMoreButtonLabel')"
191
- >
192
- {{ defaultLoadMoreText }}
193
- </span>
194
- <span v-else :class="themedClass('globalLoadMoreLoadingButtonLabel')">
195
- {{ defaultLoadingText }}
196
- </span>
197
- </button>
189
+ :class="loadMoreButtonClass"
190
+ @click="loadMore"
191
+ />
198
192
  </slot>
199
193
  </div>
200
194
  </div>
@@ -1,7 +1,7 @@
1
1
  <template>
2
2
  <div
3
3
  v-if="buttons?.length"
4
- :class="themedClass('containerClass', 'flex flex-col gap-2')"
4
+ :class="themedClass('containerClass', 'flex flex-wrap gap-2')"
5
5
  >
6
6
  <DesignSystemAtomsButton
7
7
  v-for="(link, key) in buttons"
@@ -13,6 +13,8 @@
13
13
  :target-blank="link?.targetBlank"
14
14
  :buttonClass="themedClass('buttonClass', 'xs:w-fit')"
15
15
  :labelClass="themedClass('labelClass')"
16
+ colorScheme="none"
17
+ buttonStyle="focus"
16
18
  @click="close()"
17
19
  />
18
20
  </div>
@@ -8,9 +8,9 @@
8
8
  <Media
9
9
  v-if="companyLogo"
10
10
  :media="companyLogo"
11
- :mediaClass="themedClass('mediaClass', 'h-10 2xl:h-16')"
11
+ :mediaClass="themedClass('mediaClass', 'h-8 2xl:h-10')"
12
12
  :figcaptionClass="themedClass('figcaptionClass')"
13
- :elementClass="themedClass('elementClass', 'h-10 2xl:h-16 w-auto')"
13
+ :elementClass="themedClass('elementClass', 'h-8 2xl:h-10 w-auto')"
14
14
  />
15
15
  </NuxtLink>
16
16
  </template>
@@ -1,7 +1,7 @@
1
1
  <template>
2
2
  <div
3
3
  v-if="contactButtons?.length !== 0"
4
- :class="themedClass('containerClass', 'flex flex-col gap-2')"
4
+ :class="themedClass('containerClass', 'flex gap-2')"
5
5
  >
6
6
  <DesignSystemAtomsButton
7
7
  v-for="(link, key) in contactButtons"
@@ -13,6 +13,8 @@
13
13
  :target-blank="link?.targetBlank"
14
14
  :buttonClass="themedClass('buttonClass', 'xs:w-fit')"
15
15
  :labelClass="themedClass('labelClass')"
16
+ colorScheme="none"
17
+ buttonStyle="focus"
16
18
  @click="close()"
17
19
  />
18
20
  </div>
@@ -1,7 +1,7 @@
1
1
  <template>
2
2
  <div
3
3
  v-if="metaLinks?.length !== 0"
4
- :class="themedClass('containerClass', 'flex flex-col gap-2')"
4
+ :class="themedClass('containerClass', 'flex gap-2')"
5
5
  >
6
6
  <DesignSystemAtomsButton
7
7
  v-for="(link, key) in metaLinks"
@@ -13,6 +13,8 @@
13
13
  :targetBlank="link?.targetBlank"
14
14
  :buttonClass="themedClass('buttonClass', 'xs:w-fit')"
15
15
  :labelClass="themedClass('labelClass')"
16
+ colorScheme="none"
17
+ buttonStyle="focus"
16
18
  @click="close()"
17
19
  />
18
20
  </div>
@@ -1,12 +1,12 @@
1
1
  <template>
2
2
  <nav
3
+ v-if="menuItems.length"
3
4
  :aria-label="
4
5
  $texts('meta_navigation.nav_aria_label_meta', 'Meta navigation menu')
5
6
  "
6
7
  :class="themedClass('containerClass', 'empty:hidden')"
7
8
  >
8
9
  <ul
9
- v-if="menuItems.length"
10
10
  :class="
11
11
  themedClass(
12
12
  'listClass',
@@ -3,7 +3,7 @@
3
3
  :aria-label="$texts('main_menu.nav_aria_label_main', 'Main navigation')"
4
4
  :class="themedClass('containerClass')"
5
5
  >
6
- <ul role="menu" :class="themedClass('listClass', 'flex flex-col gap-2')">
6
+ <ul role="menu" :class="themedClass('listClass', 'flex flex-col gap-4')">
7
7
  <MobileMainMenuItem
8
8
  v-for="item in menuItems"
9
9
  :key="item.id"
@@ -1,7 +1,7 @@
1
1
  <template>
2
2
  <li
3
3
  role="menuitem"
4
- :class="themedClass('listItemClass', 'relative flex flex-col gap-2')"
4
+ :class="themedClass('listItemClass', 'relative flex flex-col gap-4')"
5
5
  >
6
6
  <div
7
7
  :class="
@@ -78,7 +78,7 @@
78
78
  <ul
79
79
  v-show="isOpen"
80
80
  :id="submenuId"
81
- :class="themedClass('submenuListClass', 'flex flex-col gap-2 pl-4')"
81
+ :class="themedClass('submenuListClass', 'flex flex-col gap-4 pl-4')"
82
82
  >
83
83
  <MobileMainMenuItem
84
84
  v-for="item in item.children"
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@iqual/nuxt-icms",
3
- "version": "1.5.7",
3
+ "version": "1.5.8",
4
4
  "description": "ICMS Base",
5
5
  "type": "module",
6
6
  "private": false,