@dargmuesli/nuxt-vio 3.0.0-beta.2 → 3.0.0-beta.21
Sign up to get free protection for your applications and to get access to all the features.
- package/app.config.ts +32 -33
- package/assets/css/tailwind.css +24 -9
- package/components/vio/_/VioApp.vue +14 -2
- package/components/vio/_/VioError.vue +4 -1
- package/components/vio/_/VioLink.vue +7 -5
- package/components/vio/form/VioForm.vue +2 -2
- package/components/vio/form/input/VioFormInput.vue +5 -5
- package/components/vio/form/input/state/VioFormInputStateError.vue +1 -1
- package/components/vio/form/input/state/VioFormInputStateInfo.vue +1 -1
- package/components/vio/icon/IconArrowRight.vue +2 -2
- package/components/vio/icon/IconCalendar.vue +2 -2
- package/components/vio/icon/IconCheckCircle.vue +2 -2
- package/components/vio/icon/IconDownload.vue +2 -2
- package/components/vio/icon/IconExclamationCircle.vue +2 -2
- package/components/vio/icon/IconHome.vue +2 -2
- package/components/vio/icon/IconHourglass.vue +2 -2
- package/components/vio/layout/VioLayoutBreadcrumbs.vue +1 -1
- package/components/vio/layout/VioLayoutFooter.vue +3 -3
- package/components/vio/layout/VioLayoutFooterCategory.vue +1 -1
- package/components/vio/loader/indicator/VioLoaderIndicator.vue +2 -2
- package/components/vio/loader/indicator/VioLoaderIndicatorPing.vue +2 -2
- package/components/vio/page/VioPageLegalNotice.vue +11 -9
- package/components/vio/page/VioPagePrivacyPolicy.vue +20 -13
- package/composables/useAppLayout.ts +11 -17
- package/composables/useFavicons.ts +3 -31
- package/composables/useGetServiceHref.ts +2 -28
- package/composables/useHeadDefault.ts +13 -26
- package/composables/usePolyfills.ts +23 -0
- package/locales/de.json +1 -1
- package/locales/en.json +1 -1
- package/nuxt.config.ts +152 -147
- package/package.json +33 -33
- package/plugins/dayjs.ts +6 -6
- package/plugins/gtag.client.ts +4 -1
- package/server/middleware/headers.ts +1 -1
- package/server/tsconfig.json +1 -1
- package/server/utils/util.ts +2 -0
- package/store/auth.ts +32 -0
- package/tailwind.config.ts +3 -3
- package/types/api.d.ts +9 -0
- package/types/fetch.d.ts +8 -0
- package/types/modules/gql.d.ts +6 -0
- package/types/modules/graphql.d.ts +6 -0
- package/utils/constants.ts +51 -0
- package/utils/networking.ts +44 -9
- package/utils/routing.ts +4 -2
- package/LICENSE +0 -674
- package/components/vio/icon/IconLogo.vue +0 -17
- package/components/vio/layout/VioLayoutHeader.vue +0 -98
package/app.config.ts
CHANGED
@@ -2,11 +2,8 @@ import { useServerSeoMeta } from '@unhead/vue'
|
|
2
2
|
|
3
3
|
export default defineAppConfig({
|
4
4
|
vio: {
|
5
|
-
|
6
|
-
|
7
|
-
seoMeta: {
|
8
|
-
twitterSite: '@dargmuesli',
|
9
|
-
},
|
5
|
+
pages: undefined,
|
6
|
+
seoMeta: undefined,
|
10
7
|
server: {
|
11
8
|
middleware: {
|
12
9
|
headers: {
|
@@ -37,55 +34,57 @@ export default defineAppConfig({
|
|
37
34
|
},
|
38
35
|
},
|
39
36
|
},
|
40
|
-
themeColor:
|
37
|
+
themeColor: undefined,
|
41
38
|
},
|
42
39
|
})
|
43
40
|
|
44
41
|
declare module 'nuxt/schema' {
|
45
|
-
interface
|
42
|
+
interface AppConfigInput {
|
46
43
|
vio: {
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
responsibility: {
|
52
|
-
address: {
|
53
|
-
city: string
|
54
|
-
name: string
|
55
|
-
street: string
|
56
|
-
}
|
57
|
-
}
|
58
|
-
tmg: {
|
59
|
-
address: {
|
60
|
-
city: string
|
61
|
-
name: string
|
62
|
-
street: string
|
44
|
+
pages?: {
|
45
|
+
legalNotice?: {
|
46
|
+
contact: {
|
47
|
+
email: string
|
63
48
|
}
|
64
|
-
|
65
|
-
}
|
66
|
-
privacyPolicy?: {
|
67
|
-
hostingCdn?: {
|
68
|
-
external: {
|
49
|
+
responsibility: {
|
69
50
|
address: {
|
70
51
|
city: string
|
71
52
|
name: string
|
72
53
|
street: string
|
73
54
|
}
|
74
55
|
}
|
75
|
-
|
76
|
-
mandatoryInfo?: {
|
77
|
-
responsible: {
|
56
|
+
tmg: {
|
78
57
|
address: {
|
79
58
|
city: string
|
80
|
-
email: string
|
81
59
|
name: string
|
82
60
|
street: string
|
83
61
|
}
|
84
62
|
}
|
85
63
|
}
|
64
|
+
privacyPolicy?: {
|
65
|
+
hostingCdn?: {
|
66
|
+
external: {
|
67
|
+
address: {
|
68
|
+
city: string
|
69
|
+
name: string
|
70
|
+
street: string
|
71
|
+
}
|
72
|
+
}
|
73
|
+
}
|
74
|
+
mandatoryInfo?: {
|
75
|
+
responsible: {
|
76
|
+
address: {
|
77
|
+
city: string
|
78
|
+
email: string
|
79
|
+
name: string
|
80
|
+
street: string
|
81
|
+
}
|
82
|
+
}
|
83
|
+
}
|
84
|
+
}
|
86
85
|
}
|
87
86
|
seoMeta?: Parameters<typeof useServerSeoMeta>[0]
|
88
|
-
server
|
87
|
+
server?: {
|
89
88
|
middleware: {
|
90
89
|
headers: {
|
91
90
|
csp: {
|
package/assets/css/tailwind.css
CHANGED
@@ -1,43 +1,58 @@
|
|
1
|
+
/* stylelint-disable at-rule-no-unknown */
|
1
2
|
@tailwind base;
|
2
3
|
@tailwind components;
|
3
4
|
@tailwind utilities;
|
5
|
+
/* stylelint-enable at-rule-no-unknown */
|
4
6
|
|
7
|
+
/* doiuse-disable css-cascade-layers */
|
5
8
|
@layer base {
|
9
|
+
/* doiuse-enable css-cascade-layers */
|
6
10
|
a:focus {
|
7
|
-
|
11
|
+
/* doiuse-disable css-nesting */
|
12
|
+
@apply outline-none ring; /* doiuse-enable css-nesting */
|
8
13
|
}
|
9
14
|
|
10
15
|
button:focus {
|
11
|
-
|
16
|
+
/* doiuse-disable css-nesting */
|
17
|
+
@apply outline-none ring; /* doiuse-enable css-nesting */
|
12
18
|
}
|
13
19
|
|
14
20
|
thead {
|
15
|
-
|
21
|
+
/* doiuse-disable css-nesting */
|
22
|
+
@apply vio-bg-darken sticky top-0 z-10; /* doiuse-enable css-nesting */
|
16
23
|
}
|
17
24
|
|
18
25
|
tbody {
|
19
|
-
|
26
|
+
/* doiuse-disable css-nesting */
|
27
|
+
@apply vio-divide-darken divide-y; /* doiuse-enable css-nesting */
|
20
28
|
}
|
21
29
|
}
|
22
30
|
|
31
|
+
/* doiuse-disable css-cascade-layers */
|
23
32
|
@layer utilities {
|
33
|
+
/* doiuse-enable css-cascade-layers */
|
24
34
|
.vio-prose {
|
25
|
-
|
35
|
+
/* doiuse-disable css-nesting */
|
36
|
+
@apply prose prose-sm dark:prose-invert sm:prose-base lg:prose-lg xl:prose-xl; /* 2xl:prose-2xl */ /* doiuse-enable css-nesting */
|
26
37
|
}
|
27
38
|
|
28
39
|
.vio-prose-fullwidth {
|
29
|
-
|
40
|
+
/* doiuse-disable css-nesting */
|
41
|
+
@apply vio-prose max-w-full sm:max-w-full md:max-w-full xl:max-w-full 2xl:max-w-full; /* doiuse-enable css-nesting */
|
30
42
|
}
|
31
43
|
|
32
44
|
.vio-divide-darken {
|
33
|
-
|
45
|
+
/* doiuse-disable css-nesting */
|
46
|
+
@apply divide-background-brighten dark:divide-background-darken; /* doiuse-enable css-nesting */
|
34
47
|
}
|
35
48
|
|
36
49
|
.vio-bg-darken {
|
37
|
-
|
50
|
+
/* doiuse-disable css-nesting */
|
51
|
+
@apply bg-background-brighten dark:bg-background-darken; /* doiuse-enable css-nesting */
|
38
52
|
}
|
39
53
|
|
40
54
|
.vio-border-darken {
|
41
|
-
|
55
|
+
/* doiuse-disable css-nesting */
|
56
|
+
@apply border-background-brighten dark:border-background-darken; /* doiuse-enable css-nesting */
|
42
57
|
}
|
43
58
|
}
|
@@ -3,7 +3,7 @@
|
|
3
3
|
<NuxtLayout>
|
4
4
|
<!-- `NuxtLayout` can't have mulitple child nodes (https://github.com/nuxt/nuxt/issues/21759) -->
|
5
5
|
<div>
|
6
|
-
<NuxtPage />
|
6
|
+
<NuxtPage :site-description="siteDescriptionProp" />
|
7
7
|
<CookieControl :locale="locale" />
|
8
8
|
</div>
|
9
9
|
</NuxtLayout>
|
@@ -29,6 +29,7 @@ const siteDescriptionProp = toRef(() => props.siteDescription)
|
|
29
29
|
const { $dayjs } = useNuxtApp()
|
30
30
|
const i18n = useI18n()
|
31
31
|
const cookieControl = useCookieControl()
|
32
|
+
const siteConfig = useSiteConfig()
|
32
33
|
|
33
34
|
const { loadingIds, indicateLoadingDone } = useLoadingDoneIndicator('app')
|
34
35
|
|
@@ -37,6 +38,8 @@ const locale = i18n.locale as WritableComputedRef<Locale>
|
|
37
38
|
|
38
39
|
// methods
|
39
40
|
const init = () => {
|
41
|
+
$dayjs.locale(locale.value)
|
42
|
+
|
40
43
|
if (process.client) {
|
41
44
|
const cookieTimezone = useCookie(TIMEZONE_COOKIE_NAME, {
|
42
45
|
// default: () => undefined, // setting `default` on the client side only does not write the cookie
|
@@ -68,7 +71,6 @@ watch(
|
|
68
71
|
)
|
69
72
|
|
70
73
|
// initialization
|
71
|
-
init()
|
72
74
|
updateSiteConfig({
|
73
75
|
description: siteDescriptionProp.value,
|
74
76
|
})
|
@@ -79,4 +81,14 @@ defineOgImage({
|
|
79
81
|
})
|
80
82
|
useAppLayout()
|
81
83
|
useFavicons()
|
84
|
+
usePolyfills()
|
85
|
+
useSchemaOrg([
|
86
|
+
defineWebSite({
|
87
|
+
description: siteDescriptionProp,
|
88
|
+
inLanguage: locale,
|
89
|
+
name: siteConfig.name,
|
90
|
+
}),
|
91
|
+
defineWebPage(),
|
92
|
+
])
|
93
|
+
init()
|
82
94
|
</script>
|
@@ -1,9 +1,9 @@
|
|
1
1
|
<template>
|
2
2
|
<a
|
3
|
-
v-if="to.match(/^((ftp|http(s)?):\/\/|(mailto):)/)"
|
3
|
+
v-if="to?.toString().match(/^((ftp|http(s)?):\/\/|(mailto):)/)"
|
4
4
|
:aria-label="ariaLabel"
|
5
5
|
:class="classes"
|
6
|
-
:href="to"
|
6
|
+
:href="to.toString()"
|
7
7
|
:rel="
|
8
8
|
[...(nofollow ? ['nofollow'] : []), 'noopener', 'noreferrer'].join(' ')
|
9
9
|
"
|
@@ -12,7 +12,7 @@
|
|
12
12
|
>
|
13
13
|
<slot />
|
14
14
|
</a>
|
15
|
-
<
|
15
|
+
<NuxtLinkLocale
|
16
16
|
v-else
|
17
17
|
:aria-label="ariaLabel"
|
18
18
|
:class="classes"
|
@@ -20,17 +20,19 @@
|
|
20
20
|
@click="emit('click')"
|
21
21
|
>
|
22
22
|
<slot />
|
23
|
-
</
|
23
|
+
</NuxtLinkLocale>
|
24
24
|
</template>
|
25
25
|
|
26
26
|
<script setup lang="ts">
|
27
|
+
import { NuxtLinkProps } from '#app'
|
28
|
+
|
27
29
|
export interface Props {
|
28
30
|
ariaLabel?: string
|
29
31
|
isColored?: boolean
|
30
32
|
isToRelative?: boolean
|
31
33
|
isUnderlined?: boolean
|
32
34
|
nofollow?: boolean
|
33
|
-
to:
|
35
|
+
to: NuxtLinkProps['to']
|
34
36
|
}
|
35
37
|
const props = withDefaults(defineProps<Props>(), {
|
36
38
|
ariaLabel: undefined,
|
@@ -9,7 +9,7 @@
|
|
9
9
|
@submit="(e) => emit('submit', e)"
|
10
10
|
>
|
11
11
|
<VioCard class="flex flex-col" is-high>
|
12
|
-
<div class="flex
|
12
|
+
<div class="flex min-h-0 flex-col gap-6 overflow-y-auto">
|
13
13
|
<slot />
|
14
14
|
<div class="flex flex-col items-center justify-between">
|
15
15
|
<VioButtonColored
|
@@ -43,7 +43,7 @@
|
|
43
43
|
<script setup lang="ts">
|
44
44
|
import type { BaseValidation } from '@vuelidate/core'
|
45
45
|
|
46
|
-
import type { BackendError } from '
|
46
|
+
import type { BackendError } from '../../../types/api'
|
47
47
|
|
48
48
|
export interface Props {
|
49
49
|
errors?: BackendError[]
|
@@ -51,9 +51,9 @@
|
|
51
51
|
/>
|
52
52
|
<div v-if="validationProperty && isValidatable">
|
53
53
|
<VioFormInputIconWrapper v-if="validationProperty.$pending">
|
54
|
-
<
|
54
|
+
<VioIconHourglass
|
55
55
|
class="text-blue-600"
|
56
|
-
:title="t('
|
56
|
+
:title="t('globalStatusLoading')"
|
57
57
|
/>
|
58
58
|
</VioFormInputIconWrapper>
|
59
59
|
<VioFormInputIconWrapper
|
@@ -61,14 +61,14 @@
|
|
61
61
|
validationProperty.$model && !validationProperty.$invalid
|
62
62
|
"
|
63
63
|
>
|
64
|
-
<
|
64
|
+
<VioIconCheckCircle class="text-green-600" :title="t('valid')" />
|
65
65
|
</VioFormInputIconWrapper>
|
66
66
|
<VioFormInputIconWrapper
|
67
67
|
v-else-if="
|
68
68
|
validationProperty.$model && validationProperty.$invalid
|
69
69
|
"
|
70
70
|
>
|
71
|
-
<
|
71
|
+
<VioIconExclamationCircle
|
72
72
|
class="text-red-600"
|
73
73
|
:title="t('validNot')"
|
74
74
|
/>
|
@@ -91,7 +91,7 @@
|
|
91
91
|
<div class="md:w-2/3">
|
92
92
|
<slot name="stateInfo" />
|
93
93
|
<VioFormInputStateInfo v-if="value?.$pending">
|
94
|
-
{{ t('
|
94
|
+
{{ t('globalStatusLoading') }}
|
95
95
|
</VioFormInputStateInfo>
|
96
96
|
</div>
|
97
97
|
<div class="md:w-1/3" />
|
@@ -1,5 +1,5 @@
|
|
1
1
|
<template>
|
2
|
-
<
|
2
|
+
<VioIconContainer
|
3
3
|
fill="none"
|
4
4
|
viewBox="0 0 24 24"
|
5
5
|
stroke="currentColor"
|
@@ -11,7 +11,7 @@
|
|
11
11
|
stroke-linejoin="round"
|
12
12
|
d="M14 5l7 7m0 0l-7 7m7-7H3"
|
13
13
|
/>
|
14
|
-
</
|
14
|
+
</VioIconContainer>
|
15
15
|
</template>
|
16
16
|
|
17
17
|
<script setup lang="ts">
|
@@ -1,5 +1,5 @@
|
|
1
1
|
<template>
|
2
|
-
<
|
2
|
+
<VioIconContainer
|
3
3
|
fill="none"
|
4
4
|
viewBox="0 0 24 24"
|
5
5
|
stroke="currentColor"
|
@@ -11,7 +11,7 @@
|
|
11
11
|
stroke-width="2"
|
12
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>
|
16
16
|
|
17
17
|
<script setup lang="ts">
|
@@ -1,5 +1,5 @@
|
|
1
1
|
<template>
|
2
|
-
<
|
2
|
+
<VioIconContainer
|
3
3
|
viewBox="0 0 20 20"
|
4
4
|
fill="currentColor"
|
5
5
|
:title="title || t('title')"
|
@@ -9,7 +9,7 @@
|
|
9
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
10
|
clip-rule="evenodd"
|
11
11
|
/>
|
12
|
-
</
|
12
|
+
</VioIconContainer>
|
13
13
|
</template>
|
14
14
|
|
15
15
|
<script setup lang="ts">
|
@@ -1,5 +1,5 @@
|
|
1
1
|
<template>
|
2
|
-
<
|
2
|
+
<VioIconContainer
|
3
3
|
fill="none"
|
4
4
|
viewBox="0 0 24 24"
|
5
5
|
stroke="currentColor"
|
@@ -11,7 +11,7 @@
|
|
11
11
|
stroke-width="2"
|
12
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>
|
16
16
|
|
17
17
|
<script setup lang="ts">
|
@@ -1,5 +1,5 @@
|
|
1
1
|
<template>
|
2
|
-
<
|
2
|
+
<VioIconContainer
|
3
3
|
viewBox="0 0 20 20"
|
4
4
|
fill="currentColor"
|
5
5
|
:title="title || t('title')"
|
@@ -9,7 +9,7 @@
|
|
9
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
10
|
clip-rule="evenodd"
|
11
11
|
/>
|
12
|
-
</
|
12
|
+
</VioIconContainer>
|
13
13
|
</template>
|
14
14
|
|
15
15
|
<script setup lang="ts">
|
@@ -1,5 +1,5 @@
|
|
1
1
|
<template>
|
2
|
-
<
|
2
|
+
<VioIconContainer
|
3
3
|
fill="none"
|
4
4
|
viewBox="0 0 24 24"
|
5
5
|
stroke="currentColor"
|
@@ -11,7 +11,7 @@
|
|
11
11
|
stroke-width="2"
|
12
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>
|
16
16
|
|
17
17
|
<script setup lang="ts">
|
@@ -1,5 +1,5 @@
|
|
1
1
|
<template>
|
2
|
-
<
|
2
|
+
<VioIconContainer
|
3
3
|
aria-hidden="true"
|
4
4
|
focusable="false"
|
5
5
|
data-prefix="fas"
|
@@ -12,7 +12,7 @@
|
|
12
12
|
fill="currentColor"
|
13
13
|
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"
|
14
14
|
/>
|
15
|
-
</
|
15
|
+
</VioIconContainer>
|
16
16
|
</template>
|
17
17
|
|
18
18
|
<script setup lang="ts">
|
@@ -3,7 +3,7 @@
|
|
3
3
|
<div class="flex flex-col gap-8">
|
4
4
|
<div class="flex items-center">
|
5
5
|
<VioLayoutHr />
|
6
|
-
<
|
6
|
+
<slot name="logo" />
|
7
7
|
<VioLayoutHr />
|
8
8
|
</div>
|
9
9
|
<!-- Justifying evenly, instead of "between", centers a single element. -->
|
@@ -24,11 +24,11 @@
|
|
24
24
|
|
25
25
|
<script setup lang="ts">
|
26
26
|
const { t } = useI18n()
|
27
|
-
const
|
27
|
+
const runtimeConfig = useRuntimeConfig()
|
28
28
|
|
29
29
|
// computations
|
30
30
|
const year = computed(() =>
|
31
|
-
|
31
|
+
runtimeConfig.public.vio.isTesting ? 1337 : new Date().getFullYear(),
|
32
32
|
)
|
33
33
|
</script>
|
34
34
|
|
@@ -1,6 +1,6 @@
|
|
1
1
|
<template>
|
2
2
|
<div
|
3
|
-
class="flex flex-1 flex-col items-start p-4
|
3
|
+
class="flex flex-1 basis-1/2 flex-col items-start gap-2 p-4 md:flex-none md:basis-auto"
|
4
4
|
>
|
5
5
|
<span class="whitespace-nowrap text-lg font-medium leading-7">
|
6
6
|
{{ heading }}
|
@@ -1,9 +1,9 @@
|
|
1
1
|
<template>
|
2
2
|
<div
|
3
3
|
class="flex h-full items-center justify-center"
|
4
|
-
:title="t('
|
4
|
+
:title="t('globalStatusLoading')"
|
5
5
|
>
|
6
|
-
<div class="flex items-center justify-center
|
6
|
+
<div class="flex w-1/2 items-center justify-center">
|
7
7
|
<slot />
|
8
8
|
</div>
|
9
9
|
</div>
|
@@ -1,8 +1,8 @@
|
|
1
1
|
<template>
|
2
2
|
<VioLoaderIndicator>
|
3
3
|
<div
|
4
|
-
class="w-1/2
|
5
|
-
:title="t('
|
4
|
+
class="aspect-square w-1/2 animate-ping rounded-full bg-gray-500"
|
5
|
+
:title="t('globalStatusLoading')"
|
6
6
|
/>
|
7
7
|
</VioLoaderIndicator>
|
8
8
|
</template>
|
@@ -1,5 +1,5 @@
|
|
1
1
|
<template>
|
2
|
-
<div class="vio-prose">
|
2
|
+
<div class="vio-prose m-auto">
|
3
3
|
<h1>{{ title }}</h1>
|
4
4
|
<h2>{{ t('tmg') }}</h2>
|
5
5
|
<address>
|
@@ -9,13 +9,13 @@
|
|
9
9
|
<br />
|
10
10
|
</template>
|
11
11
|
<template #city>
|
12
|
-
{{ appConfig.legalNotice.tmg.address.city }}
|
12
|
+
{{ appConfig.vio.pages.legalNotice.tmg.address.city }}
|
13
13
|
</template>
|
14
14
|
<template #name>
|
15
|
-
{{ appConfig.legalNotice.tmg.address.name }}
|
15
|
+
{{ appConfig.vio.pages.legalNotice.tmg.address.name }}
|
16
16
|
</template>
|
17
17
|
<template #street>
|
18
|
-
{{ appConfig.legalNotice.tmg.address.street }}
|
18
|
+
{{ appConfig.vio.pages.legalNotice.tmg.address.street }}
|
19
19
|
</template>
|
20
20
|
</i18n-t>
|
21
21
|
</address>
|
@@ -24,7 +24,9 @@
|
|
24
24
|
<p>
|
25
25
|
<slot v-if="$slots.contactEmail" name="contactEmail" />
|
26
26
|
<span v-else>
|
27
|
-
{{
|
27
|
+
{{
|
28
|
+
t('email', { email: appConfig.vio.pages.legalNotice.contact.email })
|
29
|
+
}}
|
28
30
|
</span>
|
29
31
|
</p>
|
30
32
|
|
@@ -36,13 +38,13 @@
|
|
36
38
|
<br />
|
37
39
|
</template>
|
38
40
|
<template #city>
|
39
|
-
{{ appConfig.legalNotice.responsibility.address.city }}
|
41
|
+
{{ appConfig.vio.pages.legalNotice.responsibility.address.city }}
|
40
42
|
</template>
|
41
43
|
<template #name>
|
42
|
-
{{ appConfig.legalNotice.responsibility.address.name }}
|
44
|
+
{{ appConfig.vio.pages.legalNotice.responsibility.address.name }}
|
43
45
|
</template>
|
44
46
|
<template #street>
|
45
|
-
{{ appConfig.legalNotice.responsibility.address.street }}
|
47
|
+
{{ appConfig.vio.pages.legalNotice.responsibility.address.street }}
|
46
48
|
</template>
|
47
49
|
</i18n-t>
|
48
50
|
</address>
|
@@ -73,7 +75,7 @@ const { t } = useI18n()
|
|
73
75
|
const title = t('title')
|
74
76
|
|
75
77
|
// initialization
|
76
|
-
|
78
|
+
useHeadDefault({ title })
|
77
79
|
</script>
|
78
80
|
|
79
81
|
<i18n lang="yaml">
|
@@ -1,5 +1,5 @@
|
|
1
1
|
<template>
|
2
|
-
<div class="vio-prose">
|
2
|
+
<div class="vio-prose m-auto">
|
3
3
|
<h1>{{ title }}</h1>
|
4
4
|
<ol v-if="isEnabled">
|
5
5
|
<li v-if="isEnabled.summary">
|
@@ -64,14 +64,21 @@
|
|
64
64
|
<br />
|
65
65
|
</template>
|
66
66
|
<template #city>
|
67
|
-
{{
|
67
|
+
{{
|
68
|
+
appConfig.vio.pages.privacyPolicy.hostingCdn.external
|
69
|
+
.address.city
|
70
|
+
}}
|
68
71
|
</template>
|
69
72
|
<template #name>
|
70
|
-
{{
|
73
|
+
{{
|
74
|
+
appConfig.vio.pages.privacyPolicy.hostingCdn.external
|
75
|
+
.address.name
|
76
|
+
}}
|
71
77
|
</template>
|
72
78
|
<template #street>
|
73
79
|
{{
|
74
|
-
appConfig.privacyPolicy.hostingCdn.external
|
80
|
+
appConfig.vio.pages.privacyPolicy.hostingCdn.external
|
81
|
+
.address.street
|
75
82
|
}}
|
76
83
|
</template>
|
77
84
|
</i18n-t>
|
@@ -109,29 +116,29 @@
|
|
109
116
|
</template>
|
110
117
|
<template #city>
|
111
118
|
{{
|
112
|
-
appConfig.privacyPolicy.mandatoryInfo.responsible
|
113
|
-
.city
|
119
|
+
appConfig.vio.pages.privacyPolicy.mandatoryInfo.responsible
|
120
|
+
.address.city
|
114
121
|
}}
|
115
122
|
</template>
|
116
123
|
<template #email>
|
117
124
|
{{
|
118
125
|
t('email', {
|
119
126
|
email:
|
120
|
-
appConfig.privacyPolicy.mandatoryInfo
|
121
|
-
.address.email,
|
127
|
+
appConfig.vio.pages.privacyPolicy.mandatoryInfo
|
128
|
+
.responsible.address.email,
|
122
129
|
})
|
123
130
|
}}
|
124
131
|
</template>
|
125
132
|
<template #name>
|
126
133
|
{{
|
127
|
-
appConfig.privacyPolicy.mandatoryInfo.responsible
|
128
|
-
.name
|
134
|
+
appConfig.vio.pages.privacyPolicy.mandatoryInfo.responsible
|
135
|
+
.address.name
|
129
136
|
}}
|
130
137
|
</template>
|
131
138
|
<template #street>
|
132
139
|
{{
|
133
|
-
appConfig.privacyPolicy.mandatoryInfo.responsible
|
134
|
-
.street
|
140
|
+
appConfig.vio.pages.privacyPolicy.mandatoryInfo.responsible
|
141
|
+
.address.street
|
135
142
|
}}
|
136
143
|
</template>
|
137
144
|
</i18n-t>
|
@@ -502,7 +509,7 @@ const { t } = useI18n()
|
|
502
509
|
const title = t('title')
|
503
510
|
|
504
511
|
// initialization
|
505
|
-
|
512
|
+
useHeadDefault({ title })
|
506
513
|
</script>
|
507
514
|
|
508
515
|
<i18n lang="yaml">
|