@dargmuesli/nuxt-vio 22.0.0-beta.1 → 22.0.0-beta.3

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 (36) hide show
  1. package/.config/lint.js +5 -0
  2. package/app/components/OgImage/Nuxt.takumi.vue +32 -32
  3. package/app/components/vio/form/VioFormCheckbox.vue +1 -1
  4. package/app/components/vio/form/VioFormContact.vue +2 -2
  5. package/app/components/vio/form/input/VioFormInput.vue +3 -3
  6. package/app/components/vio/form/input/VioFormInputEmailAddress.vue +1 -1
  7. package/app/components/vio/form/input/VioFormInputUrl.vue +1 -1
  8. package/app/components/vio/icon/VioIconArrowRight.vue +2 -2
  9. package/app/components/vio/icon/VioIconCalendar.vue +2 -2
  10. package/app/components/vio/icon/VioIconChartBar.vue +2 -2
  11. package/app/components/vio/icon/VioIconChatOutline.vue +3 -3
  12. package/app/components/vio/icon/VioIconChatSolid.vue +2 -2
  13. package/app/components/vio/icon/VioIconCheckCircle.vue +3 -3
  14. package/app/components/vio/icon/VioIconContainer.vue +1 -1
  15. package/app/components/vio/icon/VioIconDownload.vue +2 -2
  16. package/app/components/vio/icon/VioIconExclamationCircle.vue +3 -3
  17. package/app/components/vio/icon/VioIconHeart.vue +2 -2
  18. package/app/components/vio/icon/VioIconHome.vue +2 -2
  19. package/app/components/vio/icon/VioIconHourglass.vue +4 -4
  20. package/app/components/vio/icon/VioIconLightbulb.vue +3 -3
  21. package/app/components/vio/icon/VioIconMixcloud.vue +2 -2
  22. package/app/components/vio/icon/VioIconMusic.vue +3 -3
  23. package/app/components/vio/icon/VioIconPlay.vue +4 -4
  24. package/app/components/vio/icon/VioIconShare.vue +2 -2
  25. package/app/components/vio/icon/VioIconSignIn.vue +2 -2
  26. package/app/components/vio/icon/VioIconTv.vue +2 -2
  27. package/app/components/vio/loader/indicator/VioLoaderIndicatorSpinner.vue +2 -2
  28. package/app/composables/networking.ts +13 -0
  29. package/app/composables/strapi.ts +7 -6
  30. package/app/error.vue +2 -2
  31. package/nuxt.config.ts +1 -1
  32. package/package.json +17 -17
  33. package/server/utils/dependencies/dargstack.ts +1 -0
  34. package/server/utils/dependencies/index.ts +1 -0
  35. package/server/utils/networking.ts +3 -0
  36. package/shared/utils/networking.ts +7 -4
package/.config/lint.js CHANGED
@@ -72,4 +72,9 @@ export const VIO_ESLINT_CONFIG = [
72
72
  '@intlify/vue-i18n/no-unused-keys': 'off',
73
73
  },
74
74
  }, // TODO: remove once `@intlify/eslint-plugin-vue-i18n` accounts for translation usage in composables]
75
+ {
76
+ rules: {
77
+ 'vue/attributes-order': ['error', { alphabetical: true }],
78
+ },
79
+ },
75
80
  ]
@@ -44,10 +44,10 @@ const titleComputedLineClamp = lineClampStyle(titleComputed, 2)
44
44
  <div class="flex h-full w-full flex-col justify-center bg-[#020420]">
45
45
  <svg
46
46
  class="absolute top-0 right-0"
47
- width="629"
47
+ fill="none"
48
48
  height="593"
49
49
  viewBox="0 0 629 593"
50
- fill="none"
50
+ width="629"
51
51
  xmlns="http://www.w3.org/2000/svg"
52
52
  >
53
53
  <g filter="url(#filter0_f_199_94966)">
@@ -59,23 +59,23 @@ const titleComputedLineClamp = lineClampStyle(titleComputed, 2)
59
59
  <defs>
60
60
  <filter
61
61
  id="filter0_f_199_94966"
62
+ color-interpolation-filters="sRGB"
63
+ filterUnits="userSpaceOnUse"
64
+ height="1251.52"
65
+ width="1255.25"
62
66
  x="0.873535"
63
67
  y="-659"
64
- width="1255.25"
65
- height="1251.52"
66
- filterUnits="userSpaceOnUse"
67
- color-interpolation-filters="sRGB"
68
68
  >
69
69
  <feFlood flood-opacity="0" result="BackgroundImageFix" />
70
70
  <feBlend
71
- mode="normal"
72
71
  in="SourceGraphic"
73
72
  in2="BackgroundImageFix"
73
+ mode="normal"
74
74
  result="shape"
75
75
  />
76
76
  <feGaussianBlur
77
- stdDeviation="40.5"
78
77
  result="effect1_foregroundBlur_199_94966"
78
+ stdDeviation="40.5"
79
79
  />
80
80
  </filter>
81
81
  </defs>
@@ -105,10 +105,10 @@ const titleComputedLineClamp = lineClampStyle(titleComputed, 2)
105
105
  </div>
106
106
  <svg
107
107
  class="absolute top-40 right-22.5 hidden lg:flex"
108
- width="340"
108
+ fill="none"
109
109
  height="340"
110
110
  viewBox="0 0 340 340"
111
- fill="none"
111
+ width="340"
112
112
  xmlns="http://www.w3.org/2000/svg"
113
113
  >
114
114
  <path
@@ -169,32 +169,32 @@ const titleComputedLineClamp = lineClampStyle(titleComputed, 2)
169
169
  <defs>
170
170
  <filter
171
171
  id="filter0_f_199_94959"
172
+ color-interpolation-filters="sRGB"
173
+ filterUnits="userSpaceOnUse"
174
+ height="67.3485"
175
+ width="91.6485"
172
176
  x="124.176"
173
177
  y="130.551"
174
- width="91.6485"
175
- height="67.3485"
176
- filterUnits="userSpaceOnUse"
177
- color-interpolation-filters="sRGB"
178
178
  >
179
179
  <feFlood flood-opacity="0" result="BackgroundImageFix" />
180
180
  <feBlend
181
- mode="normal"
182
181
  in="SourceGraphic"
183
182
  in2="BackgroundImageFix"
183
+ mode="normal"
184
184
  result="shape"
185
185
  />
186
186
  <feGaussianBlur
187
- stdDeviation="3.78713"
188
187
  result="effect1_foregroundBlur_199_94959"
188
+ stdDeviation="3.78713"
189
189
  />
190
190
  </filter>
191
191
  <linearGradient
192
192
  id="paint0_linear_199_94959"
193
+ gradientUnits="userSpaceOnUse"
193
194
  x1="167.875"
194
- y1="74.375"
195
195
  x2="88"
196
+ y1="74.375"
196
197
  y2="261"
197
- gradientUnits="userSpaceOnUse"
198
198
  >
199
199
  <stop stop-color="#0F172A" />
200
200
  <stop offset="1" stop-color="#0F172A" stop-opacity="0" />
@@ -203,31 +203,31 @@ const titleComputedLineClamp = lineClampStyle(titleComputed, 2)
203
203
  id="paint1_radial_199_94959"
204
204
  cx="0"
205
205
  cy="0"
206
- r="1"
207
- gradientUnits="userSpaceOnUse"
208
206
  gradientTransform="translate(167.875 167.875) rotate(-90) scale(100.596 107.502)"
207
+ gradientUnits="userSpaceOnUse"
208
+ r="1"
209
209
  >
210
210
  <stop stop-color="white" />
211
211
  <stop offset="1" stop-opacity="0" />
212
212
  </radialGradient>
213
213
  <linearGradient
214
214
  id="paint2_linear_199_94959"
215
+ gradientUnits="userSpaceOnUse"
215
216
  x1="247.183"
216
- y1="96.4978"
217
217
  x2="194.172"
218
+ y1="96.4978"
218
219
  y2="229.234"
219
- gradientUnits="userSpaceOnUse"
220
220
  >
221
221
  <stop stop-color="white" />
222
222
  <stop offset="1" stop-opacity="0" />
223
223
  </linearGradient>
224
224
  <linearGradient
225
225
  id="paint3_linear_199_94959"
226
+ gradientUnits="userSpaceOnUse"
226
227
  x1="267.01"
227
- y1="78.6537"
228
228
  x2="200.746"
229
+ y1="78.6537"
229
230
  y2="244.574"
230
- gradientUnits="userSpaceOnUse"
231
231
  >
232
232
  <stop stop-color="#00DC82" />
233
233
  <stop offset="1" stop-opacity="0" />
@@ -235,44 +235,44 @@ const titleComputedLineClamp = lineClampStyle(titleComputed, 2)
235
235
  </linearGradient>
236
236
  <linearGradient
237
237
  id="paint4_linear_199_94959"
238
+ gradientUnits="userSpaceOnUse"
238
239
  x1="292.405"
239
- y1="57.8159"
240
240
  x2="209.877"
241
+ y1="57.8159"
241
242
  y2="264.463"
242
- gradientUnits="userSpaceOnUse"
243
243
  >
244
244
  <stop stop-color="#00DC82" />
245
245
  <stop offset="1" stop-opacity="0" />
246
246
  </linearGradient>
247
247
  <linearGradient
248
248
  id="paint5_linear_199_94959"
249
+ gradientUnits="userSpaceOnUse"
249
250
  x1="314.196"
250
- y1="40.2232"
251
251
  x2="217.813"
252
+ y1="40.2232"
252
253
  y2="281.562"
253
- gradientUnits="userSpaceOnUse"
254
254
  >
255
255
  <stop stop-color="#00DC82" />
256
256
  <stop offset="1" stop-opacity="0" />
257
257
  </linearGradient>
258
258
  <linearGradient
259
259
  id="paint6_linear_199_94959"
260
+ gradientUnits="userSpaceOnUse"
260
261
  x1="202.444"
261
- y1="144.3"
262
262
  x2="191.546"
263
+ y1="144.3"
263
264
  y2="184.293"
264
- gradientUnits="userSpaceOnUse"
265
265
  >
266
266
  <stop stop-color="white" />
267
267
  <stop offset="1" stop-opacity="0" />
268
268
  </linearGradient>
269
269
  <linearGradient
270
270
  id="paint7_linear_199_94959"
271
+ gradientUnits="userSpaceOnUse"
271
272
  x1="202.444"
272
- y1="144.3"
273
273
  x2="191.546"
274
+ y1="144.3"
274
275
  y2="184.293"
275
- gradientUnits="userSpaceOnUse"
276
276
  >
277
277
  <stop stop-color="white" />
278
278
  <stop offset="1" stop-opacity="0" />
@@ -2,9 +2,9 @@
2
2
  <div>
3
3
  <input
4
4
  :id="`input-${formKey}`"
5
+ :checked="value"
5
6
  class="rounded-sm"
6
7
  type="checkbox"
7
- :checked="value"
8
8
  @change="emit('change', ($event.target as HTMLInputElement).checked)"
9
9
  />
10
10
  <label class="pl-2" :for="`input-${formKey}`"><slot /></label>
@@ -1,11 +1,11 @@
1
1
  <template>
2
2
  <VioForm
3
3
  :form="v$"
4
- :is-loading="isLoading"
5
4
  :is-form-sent="isFormSent"
5
+ :is-loading="isLoading"
6
6
  @submit.prevent="submit"
7
7
  >
8
- <input type="hidden" name="static-form-name" value="contact" />
8
+ <input name="static-form-name" type="hidden" value="contact" />
9
9
  <VioFormInput
10
10
  id-label="input-name"
11
11
  :placeholder="t('placeholderName')"
@@ -1,12 +1,12 @@
1
1
  <template>
2
2
  <div>
3
3
  <div
4
+ class="flex-wrap md:flex md:items-center"
4
5
  :class="{
5
6
  'form-input-success': success,
6
7
  'form-input-warning': warning,
7
8
  'form-input-error': value?.$error,
8
9
  }"
9
- class="flex-wrap md:flex md:items-center"
10
10
  >
11
11
  <div class="mb-1 md:mb-0 md:w-1/3 md:pr-4 md:text-right">
12
12
  <label
@@ -42,13 +42,13 @@
42
42
  'rounded-r-none': $slots.icon,
43
43
  }"
44
44
  :disabled="isDisabled"
45
- :placeholder="placeholder"
46
45
  :name="name || idLabelFull"
46
+ :placeholder="placeholder"
47
47
  :readonly="isReadonly"
48
48
  :type="type"
49
49
  :value="valueFormatter(value?.$model as string)"
50
- @input="emit('input', ($event.target as HTMLInputElement)?.value)"
51
50
  @click="emit('click')"
51
+ @input="emit('input', ($event.target as HTMLInputElement)?.value)"
52
52
  />
53
53
  <div v-if="validationProperty && isValidatable">
54
54
  <VioFormInputIconWrapper v-if="validationProperty.$pending">
@@ -1,9 +1,9 @@
1
1
  <template>
2
2
  <VioFormInput
3
3
  v-if="formInput"
4
+ :id-label="`input-${id}`"
4
5
  :is-optional="isOptional"
5
6
  :is-required="isRequired"
6
- :id-label="`input-${id}`"
7
7
  :placeholder="t('globalPlaceholderEmailAddress')"
8
8
  :title="title || t('emailAddress')"
9
9
  type="email"
@@ -1,8 +1,8 @@
1
1
  <template>
2
2
  <VioFormInput
3
3
  v-if="formInput"
4
- :is-optional="isOptional"
5
4
  :id-label="`input-${id}`"
5
+ :is-optional="isOptional"
6
6
  :placeholder="t('globalPlaceholderUrl')"
7
7
  :title="t('url')"
8
8
  type="url"
@@ -1,15 +1,15 @@
1
1
  <template>
2
2
  <VioIconContainer
3
3
  fill="none"
4
- viewBox="0 0 24 24"
5
4
  stroke="currentColor"
6
5
  stroke-width="1.5"
7
6
  :title="title || t('title')"
7
+ viewBox="0 0 24 24"
8
8
  >
9
9
  <path
10
+ d="M14 5l7 7m0 0l-7 7m7-7H3"
10
11
  stroke-linecap="round"
11
12
  stroke-linejoin="round"
12
- d="M14 5l7 7m0 0l-7 7m7-7H3"
13
13
  />
14
14
  </VioIconContainer>
15
15
  </template>
@@ -1,15 +1,15 @@
1
1
  <template>
2
2
  <VioIconContainer
3
3
  fill="none"
4
- viewBox="0 0 24 24"
5
4
  stroke="currentColor"
6
5
  :title="title || t('title')"
6
+ viewBox="0 0 24 24"
7
7
  >
8
8
  <path
9
+ d="M8 7V3m8 4V3m-9 8h10M5 21h14a2 2 0 002-2V7a2 2 0 00-2-2H5a2 2 0 00-2 2v12a2 2 0 002 2z"
9
10
  stroke-linecap="round"
10
11
  stroke-linejoin="round"
11
12
  stroke-width="1.5"
12
- d="M8 7V3m8 4V3m-9 8h10M5 21h14a2 2 0 002-2V7a2 2 0 00-2-2H5a2 2 0 00-2 2v12a2 2 0 002 2z"
13
13
  />
14
14
  </VioIconContainer>
15
15
  </template>
@@ -1,15 +1,15 @@
1
1
  <template>
2
2
  <VioIconContainer
3
3
  fill="none"
4
- viewBox="0 0 24 24"
5
4
  stroke="currentColor"
6
5
  stroke-width="1.5"
7
6
  :title="title || t('title')"
7
+ viewBox="0 0 24 24"
8
8
  >
9
9
  <path
10
+ d="M3 13.125C3 12.504 3.504 12 4.125 12h2.25c.621 0 1.125.504 1.125 1.125v6.75C7.5 20.496 6.996 21 6.375 21h-2.25A1.125 1.125 0 013 19.875v-6.75zM9.75 8.625c0-.621.504-1.125 1.125-1.125h2.25c.621 0 1.125.504 1.125 1.125v11.25c0 .621-.504 1.125-1.125 1.125h-2.25a1.125 1.125 0 01-1.125-1.125V8.625zM16.5 4.125c0-.621.504-1.125 1.125-1.125h2.25C20.496 3 21 3.504 21 4.125v15.75c0 .621-.504 1.125-1.125 1.125h-2.25a1.125 1.125 0 01-1.125-1.125V4.125z"
10
11
  stroke-linecap="round"
11
12
  stroke-linejoin="round"
12
- d="M3 13.125C3 12.504 3.504 12 4.125 12h2.25c.621 0 1.125.504 1.125 1.125v6.75C7.5 20.496 6.996 21 6.375 21h-2.25A1.125 1.125 0 013 19.875v-6.75zM9.75 8.625c0-.621.504-1.125 1.125-1.125h2.25c.621 0 1.125.504 1.125 1.125v11.25c0 .621-.504 1.125-1.125 1.125h-2.25a1.125 1.125 0 01-1.125-1.125V8.625zM16.5 4.125c0-.621.504-1.125 1.125-1.125h2.25C20.496 3 21 3.504 21 4.125v15.75c0 .621-.504 1.125-1.125 1.125h-2.25a1.125 1.125 0 01-1.125-1.125V4.125z"
13
13
  />
14
14
  </VioIconContainer>
15
15
  </template>
@@ -1,16 +1,16 @@
1
1
  <template>
2
2
  <svg
3
- xmlns="http://www.w3.org/2000/svg"
4
3
  :class="classes"
5
4
  fill="none"
6
- viewBox="0 0 24 24"
7
5
  stroke="currentColor"
8
6
  stroke-width="1.5"
7
+ viewBox="0 0 24 24"
8
+ xmlns="http://www.w3.org/2000/svg"
9
9
  >
10
10
  <path
11
+ d="M17 8h2a2 2 0 012 2v6a2 2 0 01-2 2h-2v4l-4-4H9a1.994 1.994 0 01-1.414-.586m0 0L11 14h4a2 2 0 002-2V6a2 2 0 00-2-2H5a2 2 0 00-2 2v6a2 2 0 002 2h2v4l.586-.586z"
11
12
  stroke-linecap="round"
12
13
  stroke-linejoin="round"
13
- d="M17 8h2a2 2 0 012 2v6a2 2 0 01-2 2h-2v4l-4-4H9a1.994 1.994 0 01-1.414-.586m0 0L11 14h4a2 2 0 002-2V6a2 2 0 00-2-2H5a2 2 0 00-2 2v6a2 2 0 002 2h2v4l.586-.586z"
14
14
  />
15
15
  </svg>
16
16
  </template>
@@ -1,9 +1,9 @@
1
1
  <template>
2
2
  <svg
3
- xmlns="http://www.w3.org/2000/svg"
4
3
  :class="classes"
5
- viewBox="0 0 20 20"
6
4
  fill="currentColor"
5
+ viewBox="0 0 20 20"
6
+ xmlns="http://www.w3.org/2000/svg"
7
7
  >
8
8
  <path
9
9
  d="M2 5a2 2 0 012-2h7a2 2 0 012 2v4a2 2 0 01-2 2H9l-3 3v-3H4a2 2 0 01-2-2V5z"
@@ -1,13 +1,13 @@
1
1
  <template>
2
2
  <VioIconContainer
3
- viewBox="0 0 20 20"
4
3
  fill="currentColor"
5
4
  :title="title || t('title')"
5
+ viewBox="0 0 20 20"
6
6
  >
7
7
  <path
8
- fill-rule="evenodd"
9
- d="M10 18a8 8 0 100-16 8 8 0 000 16zm3.707-9.293a1 1 0 00-1.414-1.414L9 10.586 7.707 9.293a1 1 0 00-1.414 1.414l2 2a1 1 0 001.414 0l4-4z"
10
8
  clip-rule="evenodd"
9
+ d="M10 18a8 8 0 100-16 8 8 0 000 16zm3.707-9.293a1 1 0 00-1.414-1.414L9 10.586 7.707 9.293a1 1 0 00-1.414 1.414l2 2a1 1 0 001.414 0l4-4z"
10
+ fill-rule="evenodd"
11
11
  />
12
12
  </VioIconContainer>
13
13
  </template>
@@ -1,5 +1,5 @@
1
1
  <template>
2
- <svg xmlns="http://www.w3.org/2000/svg" :class="classes" :title="title">
2
+ <svg :class="classes" :title="title" xmlns="http://www.w3.org/2000/svg">
3
3
  <slot />
4
4
  </svg>
5
5
  </template>
@@ -1,15 +1,15 @@
1
1
  <template>
2
2
  <VioIconContainer
3
3
  fill="none"
4
- viewBox="0 0 24 24"
5
4
  stroke="currentColor"
6
5
  stroke-width="1.5"
7
6
  :title="title || t('title')"
7
+ viewBox="0 0 24 24"
8
8
  >
9
9
  <path
10
+ d="M4 16v1a3 3 0 003 3h10a3 3 0 003-3v-1m-4-4l-4 4m0 0l-4-4m4 4V4"
10
11
  stroke-linecap="round"
11
12
  stroke-linejoin="round"
12
- d="M4 16v1a3 3 0 003 3h10a3 3 0 003-3v-1m-4-4l-4 4m0 0l-4-4m4 4V4"
13
13
  />
14
14
  </VioIconContainer>
15
15
  </template>
@@ -1,13 +1,13 @@
1
1
  <template>
2
2
  <VioIconContainer
3
- viewBox="0 0 20 20"
4
3
  fill="currentColor"
5
4
  :title="title || t('title')"
5
+ viewBox="0 0 20 20"
6
6
  >
7
7
  <path
8
- fill-rule="evenodd"
9
- d="M18 10a8 8 0 11-16 0 8 8 0 0116 0zm-7 4a1 1 0 11-2 0 1 1 0 012 0zm-1-9a1 1 0 00-1 1v4a1 1 0 102 0V6a1 1 0 00-1-1z"
10
8
  clip-rule="evenodd"
9
+ d="M18 10a8 8 0 11-16 0 8 8 0 0116 0zm-7 4a1 1 0 11-2 0 1 1 0 012 0zm-1-9a1 1 0 00-1 1v4a1 1 0 102 0V6a1 1 0 00-1-1z"
10
+ fill-rule="evenodd"
11
11
  />
12
12
  </VioIconContainer>
13
13
  </template>
@@ -1,15 +1,15 @@
1
1
  <template>
2
2
  <VioIconContainer
3
3
  fill="none"
4
- viewBox="0 0 24 24"
5
4
  stroke="currentColor"
6
5
  stroke-width="1.5"
7
6
  :title="title || t('title')"
7
+ viewBox="0 0 24 24"
8
8
  >
9
9
  <path
10
+ d="M21 8.25c0-2.485-2.099-4.5-4.688-4.5-1.935 0-3.597 1.126-4.312 2.733-.715-1.607-2.377-2.733-4.313-2.733C5.1 3.75 3 5.765 3 8.25c0 7.22 9 12 9 12s9-4.78 9-12z"
10
11
  stroke-linecap="round"
11
12
  stroke-linejoin="round"
12
- d="M21 8.25c0-2.485-2.099-4.5-4.688-4.5-1.935 0-3.597 1.126-4.312 2.733-.715-1.607-2.377-2.733-4.313-2.733C5.1 3.75 3 5.765 3 8.25c0 7.22 9 12 9 12s9-4.78 9-12z"
13
13
  />
14
14
  </VioIconContainer>
15
15
  </template>
@@ -1,15 +1,15 @@
1
1
  <template>
2
2
  <VioIconContainer
3
3
  fill="none"
4
- viewBox="0 0 24 24"
5
4
  stroke="currentColor"
6
5
  stroke-width="1.5"
7
6
  :title="title || t('title')"
7
+ viewBox="0 0 24 24"
8
8
  >
9
9
  <path
10
+ d="M3 12l2-2m0 0l7-7 7 7M5 10v10a1 1 0 001 1h3m10-11l2 2m-2-2v10a1 1 0 01-1 1h-3m-6 0a1 1 0 001-1v-4a1 1 0 011-1h2a1 1 0 011 1v4a1 1 0 001 1m-6 0h6"
10
11
  stroke-linecap="round"
11
12
  stroke-linejoin="round"
12
- d="M3 12l2-2m0 0l7-7 7 7M5 10v10a1 1 0 001 1h3m10-11l2 2m-2-2v10a1 1 0 01-1 1h-3m-6 0a1 1 0 001-1v-4a1 1 0 011-1h2a1 1 0 011 1v4a1 1 0 001 1m-6 0h6"
13
13
  />
14
14
  </VioIconContainer>
15
15
  </template>
@@ -1,16 +1,16 @@
1
1
  <template>
2
2
  <VioIconContainer
3
3
  aria-hidden="true"
4
- focusable="false"
5
- data-prefix="fas"
6
4
  data-icon="hourglass"
5
+ data-prefix="fas"
6
+ focusable="false"
7
7
  role="img"
8
- viewBox="0 0 384 512"
9
8
  :title="title || t('title')"
9
+ viewBox="0 0 384 512"
10
10
  >
11
11
  <path
12
- fill="currentColor"
13
12
  d="M352 0C369.7 0 384 14.33 384 32C384 49.67 369.7 64 352 64V74.98C352 117.4 335.1 158.1 305.1 188.1L237.3 256L305.1 323.9C335.1 353.9 352 394.6 352 437V448C369.7 448 384 462.3 384 480C384 497.7 369.7 512 352 512H32C14.33 512 0 497.7 0 480C0 462.3 14.33 448 32 448V437C32 394.6 48.86 353.9 78.86 323.9L146.7 256L78.86 188.1C48.86 158.1 32 117.4 32 74.98V64C14.33 64 0 49.67 0 32C0 14.33 14.33 0 32 0H352zM111.1 128H272C282.4 112.4 288 93.98 288 74.98V64H96V74.98C96 93.98 101.6 112.4 111.1 128zM111.1 384H272C268.5 378.7 264.5 373.7 259.9 369.1L192 301.3L124.1 369.1C119.5 373.7 115.5 378.7 111.1 384V384z"
13
+ fill="currentColor"
14
14
  />
15
15
  </VioIconContainer>
16
16
  </template>
@@ -1,16 +1,16 @@
1
1
  <template>
2
2
  <svg
3
- xmlns="http://www.w3.org/2000/svg"
4
3
  :class="classes"
5
4
  fill="none"
6
- viewBox="0 0 24 24"
7
5
  stroke="currentColor"
8
6
  stroke-width="1.5"
7
+ viewBox="0 0 24 24"
8
+ xmlns="http://www.w3.org/2000/svg"
9
9
  >
10
10
  <path
11
+ d="M9.663 17h4.673M12 3v1m6.364 1.636l-.707.707M21 12h-1M4 12H3m3.343-5.657l-.707-.707m2.828 9.9a5 5 0 117.072 0l-.548.547A3.374 3.374 0 0014 18.469V19a2 2 0 11-4 0v-.531c0-.895-.356-1.754-.988-2.386l-.548-.547z"
11
12
  stroke-linecap="round"
12
13
  stroke-linejoin="round"
13
- d="M9.663 17h4.673M12 3v1m6.364 1.636l-.707.707M21 12h-1M4 12H3m3.343-5.657l-.707-.707m2.828 9.9a5 5 0 117.072 0l-.548.547A3.374 3.374 0 0014 18.469V19a2 2 0 11-4 0v-.531c0-.895-.356-1.754-.988-2.386l-.548-.547z"
14
14
  />
15
15
  </svg>
16
16
  </template>
@@ -1,8 +1,8 @@
1
1
  <template>
2
2
  <svg
3
- xmlns="http://www.w3.org/2000/svg"
4
- viewBox="0 0 640 512"
5
3
  :class="classes"
4
+ viewBox="0 0 640 512"
5
+ xmlns="http://www.w3.org/2000/svg"
6
6
  >
7
7
  <!--! Font Awesome Pro 6.1.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license (Commercial License) Copyright 2022 Fonticons, Inc. -->
8
8
  <path
@@ -1,16 +1,16 @@
1
1
  <template>
2
2
  <svg
3
- xmlns="http://www.w3.org/2000/svg"
4
3
  :class="classes"
5
4
  fill="none"
6
- viewBox="0 0 24 24"
7
5
  stroke="currentColor"
8
6
  stroke-width="1.5"
7
+ viewBox="0 0 24 24"
8
+ xmlns="http://www.w3.org/2000/svg"
9
9
  >
10
10
  <path
11
+ d="M9 19V6l12-3v13M9 19c0 1.105-1.343 2-3 2s-3-.895-3-2 1.343-2 3-2 3 .895 3 2zm12-3c0 1.105-1.343 2-3 2s-3-.895-3-2 1.343-2 3-2 3 .895 3 2zM9 10l12-3"
11
12
  stroke-linecap="round"
12
13
  stroke-linejoin="round"
13
- d="M9 19V6l12-3v13M9 19c0 1.105-1.343 2-3 2s-3-.895-3-2 1.343-2 3-2 3 .895 3 2zm12-3c0 1.105-1.343 2-3 2s-3-.895-3-2 1.343-2 3-2 3 .895 3 2zM9 10l12-3"
14
14
  />
15
15
  </svg>
16
16
  </template>
@@ -1,14 +1,14 @@
1
1
  <template>
2
2
  <svg
3
- xmlns="http://www.w3.org/2000/svg"
4
3
  :class="classes"
5
- viewBox="0 0 20 20"
6
4
  fill="currentColor"
5
+ viewBox="0 0 20 20"
6
+ xmlns="http://www.w3.org/2000/svg"
7
7
  >
8
8
  <path
9
- fill-rule="evenodd"
10
- d="M10 18a8 8 0 100-16 8 8 0 000 16zM9.555 7.168A1 1 0 008 8v4a1 1 0 001.555.832l3-2a1 1 0 000-1.664l-3-2z"
11
9
  clip-rule="evenodd"
10
+ d="M10 18a8 8 0 100-16 8 8 0 000 16zM9.555 7.168A1 1 0 008 8v4a1 1 0 001.555.832l3-2a1 1 0 000-1.664l-3-2z"
11
+ fill-rule="evenodd"
12
12
  />
13
13
  </svg>
14
14
  </template>
@@ -1,15 +1,15 @@
1
1
  <template>
2
2
  <VioIconContainer
3
3
  fill="none"
4
- viewBox="0 0 24 24"
5
4
  stroke="currentColor"
6
5
  stroke-width="1.5"
7
6
  :title="title || t('title')"
7
+ viewBox="0 0 24 24"
8
8
  >
9
9
  <path
10
+ d="M7.217 10.907a2.25 2.25 0 100 2.186m0-2.186c.18.324.283.696.283 1.093s-.103.77-.283 1.093m0-2.186l9.566-5.314m-9.566 7.5l9.566 5.314m0 0a2.25 2.25 0 103.935 2.186 2.25 2.25 0 00-3.935-2.186zm0-12.814a2.25 2.25 0 103.933-2.185 2.25 2.25 0 00-3.933 2.185z"
10
11
  stroke-linecap="round"
11
12
  stroke-linejoin="round"
12
- d="M7.217 10.907a2.25 2.25 0 100 2.186m0-2.186c.18.324.283.696.283 1.093s-.103.77-.283 1.093m0-2.186l9.566-5.314m-9.566 7.5l9.566 5.314m0 0a2.25 2.25 0 103.935 2.186 2.25 2.25 0 00-3.935-2.186zm0-12.814a2.25 2.25 0 103.933-2.185 2.25 2.25 0 00-3.933 2.185z"
13
13
  />
14
14
  </VioIconContainer>
15
15
  </template>
@@ -1,15 +1,15 @@
1
1
  <template>
2
2
  <VioIconContainer
3
3
  fill="none"
4
- viewBox="0 0 24 24"
5
4
  stroke="currentColor"
6
5
  stroke-width="1.5"
7
6
  :title="title || t('title')"
7
+ viewBox="0 0 24 24"
8
8
  >
9
9
  <path
10
+ d="M11 16l-4-4m0 0l4-4m-4 4h14m-5 4v1a3 3 0 01-3 3H6a3 3 0 01-3-3V7a3 3 0 013-3h7a3 3 0 013 3v1"
10
11
  stroke-linecap="round"
11
12
  stroke-linejoin="round"
12
- d="M11 16l-4-4m0 0l4-4m-4 4h14m-5 4v1a3 3 0 01-3 3H6a3 3 0 01-3-3V7a3 3 0 013-3h7a3 3 0 013 3v1"
13
13
  />
14
14
  </VioIconContainer>
15
15
  </template>
@@ -1,15 +1,15 @@
1
1
  <template>
2
2
  <VioIconContainer
3
3
  fill="none"
4
- viewBox="0 0 24 24"
5
4
  stroke="currentColor"
6
5
  stroke-width="1.5"
7
6
  :title="title || t('title')"
7
+ viewBox="0 0 24 24"
8
8
  >
9
9
  <path
10
+ d="M6 20.25h12m-7.5-3v3m3-3v3m-10.125-3h17.25c.621 0 1.125-.504 1.125-1.125V4.875c0-.621-.504-1.125-1.125-1.125H3.375c-.621 0-1.125.504-1.125 1.125v11.25c0 .621.504 1.125 1.125 1.125z"
10
11
  stroke-linecap="round"
11
12
  stroke-linejoin="round"
12
- d="M6 20.25h12m-7.5-3v3m3-3v3m-10.125-3h17.25c.621 0 1.125-.504 1.125-1.125V4.875c0-.621-.504-1.125-1.125-1.125H3.375c-.621 0-1.125.504-1.125 1.125v11.25c0 .621.504 1.125 1.125 1.125z"
13
13
  />
14
14
  </VioIconContainer>
15
15
  </template>
@@ -2,9 +2,9 @@
2
2
  <VioLoaderIndicator>
3
3
  <svg
4
4
  class="animate-spin"
5
- xmlns="http://www.w3.org/2000/svg"
6
5
  fill="none"
7
6
  viewBox="0 0 24 24"
7
+ xmlns="http://www.w3.org/2000/svg"
8
8
  >
9
9
  <circle
10
10
  class="opacity-25"
@@ -16,8 +16,8 @@
16
16
  />
17
17
  <path
18
18
  class="opacity-75"
19
- fill="currentColor"
20
19
  d="M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z"
20
+ fill="currentColor"
21
21
  />
22
22
  </svg>
23
23
  </VioLoaderIndicator>
@@ -6,10 +6,12 @@ export const useGetServiceHref = () => {
6
6
  return ({
7
7
  isSsr = true,
8
8
  name,
9
+ path,
9
10
  port,
10
11
  }: {
11
12
  isSsr?: boolean
12
13
  name: string
14
+ path?: string
13
15
  port?: number
14
16
  }) =>
15
17
  getServiceHref({
@@ -17,6 +19,7 @@ export const useGetServiceHref = () => {
17
19
  isSsr,
18
20
  isTesting,
19
21
  name,
22
+ path,
20
23
  port,
21
24
  stagingHost: runtimeConfig.public.vio.stagingHost,
22
25
  })
@@ -30,3 +33,13 @@ export const useHost = () => {
30
33
 
31
34
  return host
32
35
  }
36
+
37
+ export const useServiceFetch = (
38
+ options: Parameters<ReturnType<typeof useGetServiceHref>>[0],
39
+ ) => {
40
+ const getServiceHref = useGetServiceHref()
41
+
42
+ return $fetch.create({
43
+ baseURL: getServiceHref(options),
44
+ })
45
+ }
@@ -1,7 +1,8 @@
1
- export const useStrapiFetch = () => {
2
- const getServiceHref = useGetServiceHref()
3
-
4
- return $fetch.create({
5
- baseURL: getServiceHref({ name: 'creal_strapi', port: 1337 }) + '/api',
1
+ export const useStrapiFetch = (
2
+ options?: Parameters<ReturnType<typeof useGetServiceHref>>[0],
3
+ ) =>
4
+ useServiceFetch({
5
+ ...(options ? options : {}),
6
+ name: options?.name || 'strapi',
7
+ path: options?.path || '/api',
6
8
  })
7
- }
package/app/error.vue CHANGED
@@ -3,10 +3,10 @@
3
3
  <!-- `NuxtLayout` can't be the root element (https://github.com/nuxt/nuxt/issues/25214) -->
4
4
  <NuxtLayout>
5
5
  <VioError
6
- :status="error.status"
7
- :status-text="error.statusText"
8
6
  :description="error.message"
9
7
  :stack="error.stack"
8
+ :status="error.status"
9
+ :status-text="error.statusText"
10
10
  />
11
11
  </NuxtLayout>
12
12
  </div>
package/nuxt.config.ts CHANGED
@@ -143,7 +143,7 @@ export default defineNuxtConfig(
143
143
  },
144
144
  vite: {
145
145
  plugins: [
146
- tailwindcss() as never, // TODO: remove typecast once tailwindcss fixes the plugin type
146
+ tailwindcss(),
147
147
  {
148
148
  // This plugin suppresses false-positive sourcemap warnings from Tailwind's Vite plugin
149
149
  // TODO: remove once tailwind generates sourcemaps for their transforms (https://github.com/tailwindlabs/tailwindcss/discussions/16119)
package/package.json CHANGED
@@ -1,11 +1,11 @@
1
1
  {
2
2
  "dependencies": {
3
- "@dargmuesli/nuxt-cookie-control": "9.1.25",
3
+ "@dargmuesli/nuxt-cookie-control": "9.1.28",
4
4
  "@eslint/compat": "2.1.0",
5
5
  "@heroicons/vue": "2.2.0",
6
6
  "@http-util/status-i18n": "0.9.0",
7
- "@intlify/eslint-plugin-vue-i18n": "4.4.0",
8
- "@lucide/vue": "1.16.0",
7
+ "@intlify/eslint-plugin-vue-i18n": "4.5.1",
8
+ "@lucide/vue": "1.17.0",
9
9
  "@nuxt/devtools": "3.2.4",
10
10
  "@nuxt/eslint": "1.15.2",
11
11
  "@nuxt/image": "2.0.0",
@@ -18,7 +18,7 @@
18
18
  "@tailwindcss/forms": "0.5.11",
19
19
  "@tailwindcss/typography": "0.5.19",
20
20
  "@tailwindcss/vite": "4.3.0",
21
- "@takumi-rs/core": "1.5.1",
21
+ "@takumi-rs/core": "1.7.0",
22
22
  "@types/lodash-es": "4.17.12",
23
23
  "@types/nodemailer": "8.0.0",
24
24
  "@urql/core": "6.0.1",
@@ -28,26 +28,26 @@
28
28
  "@vueuse/core": "14.3.0",
29
29
  "class-variance-authority": "0.7.1",
30
30
  "clsx": "2.1.1",
31
- "eslint": "10.4.0",
31
+ "eslint": "10.4.1",
32
32
  "eslint-config-prettier": "10.1.8",
33
33
  "eslint-plugin-compat": "7.0.2",
34
- "eslint-plugin-prettier": "5.5.5",
35
- "eslint-plugin-yml": "3.3.2",
34
+ "eslint-plugin-prettier": "5.5.6",
35
+ "eslint-plugin-yml": "3.4.0",
36
36
  "globals": "17.6.0",
37
37
  "jiti": "2.7.0",
38
38
  "jose": "6.2.3",
39
- "nodemailer": "8.0.9",
39
+ "nodemailer": "8.0.10",
40
40
  "nuxt-gtag": "4.1.0",
41
41
  "nuxt-security": "2.6.0",
42
- "reka-ui": "2.9.8",
43
- "shadcn-nuxt": "2.7.3",
42
+ "reka-ui": "2.9.9",
43
+ "shadcn-nuxt": "2.7.4",
44
44
  "tailwind-merge": "3.6.0",
45
45
  "tw-animate-css": "1.4.0",
46
46
  "vue-sonner": "2.0.9",
47
- "vue-tsc": "3.3.2"
47
+ "vue-tsc": "3.3.3"
48
48
  },
49
49
  "devDependencies": {
50
- "@types/node": "24.12.4",
50
+ "@types/node": "24.13.1",
51
51
  "@urql/devtools": "2.0.3",
52
52
  "@urql/exchange-graphcache": "9.0.0",
53
53
  "@vueuse/core": "14.3.0",
@@ -55,19 +55,19 @@
55
55
  "defu": "6.1.7",
56
56
  "h3": "1.15.11",
57
57
  "lodash-es": "4.18.1",
58
- "nuxt": "4.4.6",
58
+ "nuxt": "4.4.7",
59
59
  "pinia": "3.0.4",
60
60
  "prettier": "3.8.3",
61
61
  "prettier-plugin-tailwindcss": "0.8.0",
62
62
  "serve": "14.2.6",
63
63
  "sharp": "0.34.5",
64
- "stylelint": "17.12.0",
64
+ "stylelint": "17.13.0",
65
65
  "stylelint-config-recommended-vue": "1.6.1",
66
66
  "stylelint-config-standard": "40.0.0",
67
67
  "stylelint-no-unsupported-browser-features": "8.1.1",
68
68
  "tailwindcss": "4.3.0",
69
- "vue": "3.5.34",
70
- "vue-router": "5.0.7"
69
+ "vue": "3.5.35",
70
+ "vue-router": "5.1.0"
71
71
  },
72
72
  "engines": {
73
73
  "node": "24"
@@ -97,7 +97,7 @@
97
97
  "url": "git+https://github.com/dargmuesli/vio.git"
98
98
  },
99
99
  "type": "module",
100
- "version": "22.0.0-beta.1",
100
+ "version": "22.0.0-beta.3",
101
101
  "scripts": {
102
102
  "build": "pnpm run build:node",
103
103
  "build:node": "NUXT_PUBLIC_I18N_BASE_URL=https://app.localhost:3001 nuxt build playground",
@@ -0,0 +1 @@
1
+ export const DARGSTACK_SECRET_UNUSED_THIRD_PARTY = 'UNSET THIRD PARTY SECRET'
@@ -1 +1,2 @@
1
+ export * from './dargstack'
1
2
  export * from './turnstile'
@@ -8,10 +8,12 @@ export const useGetServiceHref = ({ event }: { event?: H3Event } = {}) => {
8
8
  return ({
9
9
  isSsr = true,
10
10
  name,
11
+ path,
11
12
  port,
12
13
  }: {
13
14
  isSsr?: boolean
14
15
  name: string
16
+ path?: string
15
17
  port?: number
16
18
  }) =>
17
19
  getServiceHref({
@@ -19,6 +21,7 @@ export const useGetServiceHref = ({ event }: { event?: H3Event } = {}) => {
19
21
  isSsr,
20
22
  isTesting,
21
23
  name,
24
+ path,
22
25
  port,
23
26
  stagingHost: runtimeConfig.public.vio.stagingHost,
24
27
  })
@@ -90,6 +90,7 @@ export const getServiceHref = ({
90
90
  isSsr = true,
91
91
  isTesting,
92
92
  name,
93
+ path,
93
94
  port,
94
95
  stagingHost,
95
96
  }: {
@@ -97,6 +98,7 @@ export const getServiceHref = ({
97
98
  isSsr?: boolean
98
99
  isTesting?: boolean
99
100
  name: string
101
+ path?: string
100
102
  port?: number
101
103
  stagingHost?: string
102
104
  }) => {
@@ -104,21 +106,22 @@ export const getServiceHref = ({
104
106
  name !== VIO_SITE_NAME ? name?.replaceAll('_', '-') : undefined
105
107
  const nameSubdomainString = nameSubdomain ? `${nameSubdomain}.` : ''
106
108
  const portString = port ? `:${port}` : ''
109
+ const pathString = path ? `/${path.replace(/^\/+/, '')}` : ''
107
110
 
108
111
  if (isTesting) {
109
- return `${SITE_URL_TYPED.protocol}//${nameSubdomainString}${SITE_URL_TYPED.host}`
112
+ return `${SITE_URL_TYPED.protocol}//${nameSubdomainString}${SITE_URL_TYPED.host}${pathString}`
110
113
  }
111
114
 
112
115
  if (stagingHost) {
113
- return `https://${nameSubdomainString}${stagingHost}`
116
+ return `https://${nameSubdomainString}${stagingHost}${pathString}`
114
117
  }
115
118
 
116
119
  if (import.meta.server && isSsr) {
117
- return `http://${name}${portString}`
120
+ return `http://${name}${portString}${pathString}`
118
121
  }
119
122
 
120
123
  if (host) {
121
- return `https://${nameSubdomainString}${host}`
124
+ return `https://${nameSubdomainString}${host}${pathString}`
122
125
  }
123
126
 
124
127
  throw new Error('Could not get service href!')