@dargmuesli/nuxt-vio 3.0.0-beta.2 → 3.0.0-beta.20
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.
- 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 +10 -8
- package/components/vio/page/VioPagePrivacyPolicy.vue +19 -12
- 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
@@ -1,5 +1,6 @@
|
|
1
1
|
export const useAppLayout = () => {
|
2
2
|
const appConfig = useAppConfig()
|
3
|
+
const siteConfig = useSiteConfig()
|
3
4
|
|
4
5
|
useServerHeadSafe({
|
5
6
|
...useLocaleHead({ addSeoAttributes: true }).value,
|
@@ -7,23 +8,16 @@ export const useAppLayout = () => {
|
|
7
8
|
class:
|
8
9
|
'bg-background-bright dark:bg-background-dark font-sans text-text-dark dark:text-text-bright',
|
9
10
|
},
|
10
|
-
...(appConfig.themeColor
|
11
|
-
? {
|
12
|
-
meta: [
|
13
|
-
{
|
14
|
-
content: appConfig.themeColor,
|
15
|
-
name: 'msapplication-TileColor',
|
16
|
-
},
|
17
|
-
{
|
18
|
-
content: appConfig.themeColor,
|
19
|
-
name: 'theme-color',
|
20
|
-
},
|
21
|
-
],
|
22
|
-
}
|
23
|
-
: {}),
|
24
11
|
})
|
25
12
|
|
26
|
-
|
27
|
-
|
28
|
-
|
13
|
+
useServerSeoMeta({
|
14
|
+
msapplicationTileColor: appConfig.vio.themeColor,
|
15
|
+
themeColor: appConfig.vio.themeColor,
|
16
|
+
titleTemplate: (titleChunk) => {
|
17
|
+
return titleChunk && titleChunk !== siteConfig.name
|
18
|
+
? `${titleChunk} ${siteConfig.titleSeparator} ${siteConfig.name}`
|
19
|
+
: siteConfig.name
|
20
|
+
},
|
21
|
+
...(appConfig.vio.seoMeta ? appConfig.vio.seoMeta : {}),
|
22
|
+
})
|
29
23
|
}
|
@@ -4,46 +4,18 @@ export const useFavicons = () => {
|
|
4
4
|
useServerHeadSafe({
|
5
5
|
link: [
|
6
6
|
{
|
7
|
-
href:
|
8
|
-
rel: 'apple-touch-icon',
|
9
|
-
sizes: '180x180',
|
10
|
-
},
|
11
|
-
{
|
12
|
-
href: '/assets/static/favicon/favicon-16x16.png?v=bOXMwoKlJr',
|
13
|
-
rel: 'icon',
|
14
|
-
sizes: '16x16',
|
15
|
-
type: 'image/png',
|
16
|
-
},
|
17
|
-
{
|
18
|
-
href: '/assets/static/favicon/favicon-32x32.png?v=bOXMwoKlJr',
|
19
|
-
rel: 'icon',
|
20
|
-
sizes: '32x32',
|
21
|
-
type: 'image/png',
|
22
|
-
},
|
23
|
-
{
|
24
|
-
href: '/favicon.ico',
|
25
|
-
rel: 'icon',
|
26
|
-
type: 'image/x-icon',
|
27
|
-
},
|
28
|
-
{
|
29
|
-
href: '/assets/static/favicon/site.webmanifest?v=bOXMwoKlJr',
|
7
|
+
href: `/assets/static/favicon/site.webmanifest?v=${CACHE_VERSION}`,
|
30
8
|
rel: 'manifest',
|
31
9
|
},
|
32
10
|
{
|
33
11
|
color: appConfig.vio.themeColor,
|
34
|
-
href:
|
12
|
+
href: `/assets/static/favicon/safari-pinned-tab.svg?v=${CACHE_VERSION}`,
|
35
13
|
rel: 'mask-icon',
|
36
14
|
},
|
37
15
|
{
|
38
|
-
href:
|
16
|
+
href: `/favicon.ico?v=${CACHE_VERSION}`,
|
39
17
|
rel: 'shortcut icon',
|
40
18
|
},
|
41
19
|
],
|
42
|
-
meta: [
|
43
|
-
{
|
44
|
-
content: '/assets/static/favicon/browserconfig.xml?v=bOXMwoKlJr',
|
45
|
-
name: 'msapplication-config',
|
46
|
-
},
|
47
|
-
],
|
48
20
|
})
|
49
21
|
}
|
@@ -1,6 +1,6 @@
|
|
1
1
|
export const useGetServiceHref = () => {
|
2
2
|
const host = useHost()
|
3
|
-
const
|
3
|
+
const runtimeConfig = useRuntimeConfig()
|
4
4
|
|
5
5
|
return ({
|
6
6
|
isSsr = true,
|
@@ -16,32 +16,6 @@ export const useGetServiceHref = () => {
|
|
16
16
|
isSsr,
|
17
17
|
name,
|
18
18
|
port,
|
19
|
-
stagingHost:
|
19
|
+
stagingHost: runtimeConfig.public.vio.stagingHost,
|
20
20
|
})
|
21
21
|
}
|
22
|
-
|
23
|
-
export const getServiceHref = ({
|
24
|
-
host,
|
25
|
-
isSsr = true,
|
26
|
-
name,
|
27
|
-
port,
|
28
|
-
stagingHost,
|
29
|
-
}: {
|
30
|
-
host: string
|
31
|
-
isSsr?: boolean
|
32
|
-
name?: string
|
33
|
-
port?: number
|
34
|
-
stagingHost?: string
|
35
|
-
}) => {
|
36
|
-
const nameSubdomain = name?.replaceAll('_', '-')
|
37
|
-
const nameSubdomainString = nameSubdomain ? `${nameSubdomain}.` : ''
|
38
|
-
const portString = port ? `:${port}` : ''
|
39
|
-
|
40
|
-
if (stagingHost) {
|
41
|
-
return `https://${nameSubdomainString}${stagingHost}`
|
42
|
-
} else if (isSsr && process.server) {
|
43
|
-
return `http://${name}${portString}`
|
44
|
-
} else {
|
45
|
-
return `https://${nameSubdomainString}${getDomainTldPort(host)}`
|
46
|
-
}
|
47
|
-
}
|
@@ -1,34 +1,21 @@
|
|
1
1
|
import { defu } from 'defu'
|
2
|
-
import type { UseHeadSafeInput } from '@unhead/vue'
|
3
2
|
import type { ComputedRef } from 'vue'
|
4
3
|
|
5
|
-
export const useHeadDefault = (
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
4
|
+
export const useHeadDefault = ({
|
5
|
+
extension,
|
6
|
+
title,
|
7
|
+
}: {
|
8
|
+
extension?: Parameters<typeof useServerSeoMeta>[0]
|
9
|
+
title: string | ComputedRef<string>
|
10
|
+
}) => {
|
11
|
+
const attrs = useAttrs()
|
11
12
|
|
12
|
-
const defaults:
|
13
|
-
|
14
|
-
{
|
15
|
-
id: 'og:title',
|
16
|
-
property: 'og:title',
|
17
|
-
content: title,
|
18
|
-
},
|
19
|
-
{
|
20
|
-
id: 'og:url',
|
21
|
-
property: 'og:url',
|
22
|
-
content: `https://${host}${router.currentRoute.value.fullPath}`,
|
23
|
-
},
|
24
|
-
{
|
25
|
-
id: 'twitter:title',
|
26
|
-
property: 'twitter:title',
|
27
|
-
content: title,
|
28
|
-
},
|
29
|
-
],
|
13
|
+
const defaults: Parameters<typeof useServerSeoMeta>[0] = {
|
14
|
+
msapplicationConfig: `/assets/static/favicon/browserconfig.xml?v=${CACHE_VERSION}`,
|
30
15
|
title,
|
16
|
+
twitterDescription: attrs['site-description'] as string,
|
17
|
+
twitterTitle: title,
|
31
18
|
}
|
32
19
|
|
33
|
-
|
20
|
+
useSeoMeta(defu(extension, defaults)) // TODO: use `useServerSeoMeta` when Nuxt 3.7 is used
|
34
21
|
}
|
@@ -0,0 +1,23 @@
|
|
1
|
+
export const usePolyfills = () => {
|
2
|
+
const polyfills =
|
3
|
+
'https://polyfill.io/v3/polyfill.min.js?features=Promise&flags=gated'
|
4
|
+
|
5
|
+
useServerHead({
|
6
|
+
link: [
|
7
|
+
{
|
8
|
+
rel: 'preload',
|
9
|
+
href: polyfills,
|
10
|
+
crossorigin: 'anonymous',
|
11
|
+
as: 'script',
|
12
|
+
'data-testid': 'polyfill-preload',
|
13
|
+
},
|
14
|
+
],
|
15
|
+
script: [
|
16
|
+
{
|
17
|
+
src: polyfills,
|
18
|
+
crossorigin: 'anonymous',
|
19
|
+
'data-testid': 'polyfill-script',
|
20
|
+
},
|
21
|
+
],
|
22
|
+
})
|
23
|
+
}
|
package/locales/de.json
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
{
|
2
|
-
"globalLoading": "Lade...",
|
3
2
|
"globalPlaceholderUrl": "https://websei.te",
|
4
3
|
"globalStatusError": "Fehler",
|
4
|
+
"globalStatusLoading": "Lade...",
|
5
5
|
"globalValidationFailed": "Bitte überprüfe deine Eingaben 🙈",
|
6
6
|
"globalValidationFormatUrlHttps": "Muss mit \"https://\" beginnen",
|
7
7
|
"globalValidationLength": "Zu lang",
|
package/locales/en.json
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
{
|
2
|
-
"globalLoading": "Loading...",
|
3
2
|
"globalPlaceholderUrl": "https://websi.te",
|
4
3
|
"globalStatusError": "Error",
|
4
|
+
"globalStatusLoading": "Loading...",
|
5
5
|
"globalValidationFailed": "Please check your input 🙈",
|
6
6
|
"globalValidationFormatUrlHttps": "Must start with \"https://\"",
|
7
7
|
"globalValidationLength": "Too long",
|
package/nuxt.config.ts
CHANGED
@@ -1,167 +1,172 @@
|
|
1
1
|
import { dirname, join } from 'node:path'
|
2
2
|
import { fileURLToPath } from 'node:url'
|
3
3
|
|
4
|
+
import { defu } from 'defu'
|
5
|
+
|
4
6
|
import {
|
7
|
+
BASE_URL,
|
5
8
|
I18N_COOKIE_NAME,
|
6
|
-
I18N_MODULE_CONFIG,
|
7
|
-
TIMEZONE_COOKIE_NAME,
|
8
9
|
SITE_NAME,
|
10
|
+
TIMEZONE_COOKIE_NAME,
|
11
|
+
VIO_NUXT_BASE_CONFIG,
|
9
12
|
} from './utils/constants'
|
10
13
|
|
11
14
|
const currentDir = dirname(fileURLToPath(import.meta.url))
|
12
15
|
|
13
|
-
const BASE_URL =
|
14
|
-
'https://' +
|
15
|
-
(process.env.NUXT_PUBLIC_STACK_DOMAIN ||
|
16
|
-
`${process.env.HOST || 'localhost'}:${
|
17
|
-
!process.env.NODE_ENV || process.env.NODE_ENV === 'development'
|
18
|
-
? '3000'
|
19
|
-
: '3001'
|
20
|
-
}`)
|
21
|
-
|
22
16
|
// https://v3.nuxtjs.org/api/configuration/nuxt.config
|
23
|
-
export default defineNuxtConfig(
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
pageTransition: {
|
36
|
-
name: 'layout',
|
37
|
-
},
|
38
|
-
},
|
39
|
-
modules: [
|
40
|
-
'@dargmuesli/nuxt-cookie-control',
|
41
|
-
'@nuxtjs/color-mode',
|
42
|
-
'@nuxtjs/html-validator',
|
43
|
-
'@nuxtjs/i18n',
|
44
|
-
'@nuxtjs/tailwindcss',
|
45
|
-
'@pinia/nuxt',
|
46
|
-
'nuxt-seo-kit-module',
|
47
|
-
],
|
48
|
-
nitro: {
|
49
|
-
compressPublicAssets: true,
|
50
|
-
},
|
51
|
-
runtimeConfig: {
|
52
|
-
public: {
|
53
|
-
googleAnalyticsId: '', // set via environment variable `NUXT_PUBLIC_GOOGLE_ANALYTICS_ID` only
|
54
|
-
i18n: {
|
55
|
-
baseUrl: BASE_URL,
|
56
|
-
},
|
57
|
-
isInProduction: process.env.NODE_ENV === 'production',
|
58
|
-
isTesting: false,
|
59
|
-
stagingHost:
|
60
|
-
process.env.NODE_ENV !== 'production' &&
|
61
|
-
!process.env.NUXT_PUBLIC_STACK_DOMAIN
|
62
|
-
? 'jonas-thelemann.de'
|
63
|
-
: undefined,
|
64
|
-
},
|
65
|
-
},
|
66
|
-
typescript: {
|
67
|
-
shim: false,
|
68
|
-
strict: true,
|
69
|
-
// tsConfig: {
|
70
|
-
// compilerOptions: {
|
71
|
-
// esModuleInterop: true,
|
72
|
-
// },
|
73
|
-
// },
|
74
|
-
},
|
75
|
-
|
76
|
-
// modules
|
77
|
-
colorMode: {
|
78
|
-
classSuffix: '',
|
79
|
-
},
|
80
|
-
cookieControl: {
|
81
|
-
cookies: {
|
82
|
-
necessary: [
|
83
|
-
{
|
84
|
-
description: {
|
85
|
-
de: 'Dieser Cookie von uns speichert die Einstellungen, die in diesem Dialog getroffen werden.',
|
86
|
-
en: 'This cookie of ours stores the settings made in this dialog.',
|
87
|
-
},
|
88
|
-
id: 'c',
|
89
|
-
name: {
|
90
|
-
de: 'Cookie-Präferenzen',
|
91
|
-
en: 'Cookie Preferences',
|
17
|
+
export default defineNuxtConfig(
|
18
|
+
defu(
|
19
|
+
{
|
20
|
+
alias: {
|
21
|
+
clipboard: 'clipboard',
|
22
|
+
dayjs: 'dayjs',
|
23
|
+
sweetalert2: 'sweetalert2',
|
24
|
+
}, // TODO: remove (https://github.com/nuxt/nuxt/issues/19426)
|
25
|
+
app: {
|
26
|
+
head: {
|
27
|
+
htmlAttrs: {
|
28
|
+
lang: 'en', // fallback data to prevent invalid html at generation
|
92
29
|
},
|
93
|
-
|
30
|
+
titleTemplate: '%s', // fully set in `composables/useAppLayout.ts`
|
94
31
|
},
|
95
|
-
{
|
96
|
-
|
97
|
-
de: 'Dieser Cookie von uns speichert die Sprache, in der diese Webseite angezeigt wird.',
|
98
|
-
en: "This cookie of ours stores the language that's used to display this website.",
|
99
|
-
},
|
100
|
-
id: 'l',
|
101
|
-
name: {
|
102
|
-
de: 'Sprache',
|
103
|
-
en: 'Language',
|
104
|
-
},
|
105
|
-
targetCookieIds: [I18N_COOKIE_NAME],
|
32
|
+
pageTransition: {
|
33
|
+
name: 'layout',
|
106
34
|
},
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
-
|
112
|
-
id: 't',
|
113
|
-
name: {
|
114
|
-
de: 'Zeitzone',
|
115
|
-
en: 'Timezone',
|
116
|
-
},
|
117
|
-
targetCookieIds: [TIMEZONE_COOKIE_NAME],
|
35
|
+
},
|
36
|
+
devtools: {
|
37
|
+
enabled: process.env.NODE_ENV !== 'production',
|
38
|
+
timeline: {
|
39
|
+
enabled: true,
|
118
40
|
},
|
41
|
+
},
|
42
|
+
modules: [
|
43
|
+
'@dargmuesli/nuxt-cookie-control',
|
44
|
+
'@nuxt/image',
|
45
|
+
'@nuxtjs/color-mode',
|
46
|
+
'@nuxtjs/html-validator',
|
47
|
+
'@nuxtjs/i18n',
|
48
|
+
'@nuxtjs/tailwindcss',
|
49
|
+
'@pinia/nuxt',
|
50
|
+
'nuxt-seo-kit-module',
|
119
51
|
],
|
120
|
-
|
121
|
-
|
122
|
-
|
123
|
-
|
124
|
-
|
52
|
+
nitro: {
|
53
|
+
compressPublicAssets: true,
|
54
|
+
},
|
55
|
+
runtimeConfig: {
|
56
|
+
public: {
|
57
|
+
vio: {
|
58
|
+
googleAnalyticsId: '', // set via environment variable `NUXT_PUBLIC_GOOGLE_ANALYTICS_ID` only
|
59
|
+
isInProduction: process.env.NODE_ENV === 'production',
|
60
|
+
isTesting: false,
|
125
61
|
},
|
126
|
-
|
127
|
-
|
128
|
-
|
129
|
-
|
62
|
+
},
|
63
|
+
},
|
64
|
+
typescript: {
|
65
|
+
shim: false,
|
66
|
+
tsConfig: {
|
67
|
+
compilerOptions: {
|
68
|
+
esModuleInterop: true,
|
69
|
+
// moduleResolution: 'bundler',
|
70
|
+
// noErrorTruncation: true,
|
130
71
|
},
|
131
|
-
name: 'Analytics',
|
132
|
-
targetCookieIds: ['_ga', '_ga_K4R41W62BR'],
|
133
72
|
},
|
134
|
-
|
135
|
-
|
136
|
-
|
137
|
-
|
138
|
-
|
139
|
-
|
140
|
-
|
141
|
-
|
142
|
-
|
143
|
-
|
144
|
-
|
145
|
-
|
146
|
-
|
147
|
-
|
73
|
+
},
|
74
|
+
|
75
|
+
// modules
|
76
|
+
colorMode: {
|
77
|
+
classSuffix: '',
|
78
|
+
},
|
79
|
+
cookieControl: {
|
80
|
+
cookies: {
|
81
|
+
necessary: [
|
82
|
+
{
|
83
|
+
description: {
|
84
|
+
de: 'Dieser Cookie von uns speichert die Einstellungen, die in diesem Dialog getroffen werden.',
|
85
|
+
en: 'This cookie of ours stores the settings made in this dialog.',
|
86
|
+
},
|
87
|
+
id: 'c',
|
88
|
+
name: {
|
89
|
+
de: 'Cookie-Präferenzen',
|
90
|
+
en: 'Cookie Preferences',
|
91
|
+
},
|
92
|
+
targetCookieIds: ['ncc_c', 'ncc_e'],
|
93
|
+
},
|
94
|
+
{
|
95
|
+
description: {
|
96
|
+
de: 'Dieser Cookie von uns speichert die Sprache, in der diese Webseite angezeigt wird.',
|
97
|
+
en: "This cookie of ours stores the language that's used to display this website.",
|
98
|
+
},
|
99
|
+
id: 'l',
|
100
|
+
name: {
|
101
|
+
de: 'Sprache',
|
102
|
+
en: 'Language',
|
103
|
+
},
|
104
|
+
targetCookieIds: [I18N_COOKIE_NAME],
|
105
|
+
},
|
106
|
+
{
|
107
|
+
description: {
|
108
|
+
de: 'Dieser Cookie von uns speichert die Zeitzone, in der sich das Gerät zu befinden scheint.',
|
109
|
+
en: 'This cookie of ours saves the timezone in which the device appears to be located.',
|
110
|
+
},
|
111
|
+
id: 't',
|
112
|
+
name: {
|
113
|
+
de: 'Zeitzone',
|
114
|
+
en: 'Timezone',
|
115
|
+
},
|
116
|
+
targetCookieIds: [TIMEZONE_COOKIE_NAME],
|
117
|
+
},
|
118
|
+
],
|
119
|
+
optional: [
|
120
|
+
{
|
121
|
+
description: {
|
122
|
+
de: 'Die Cookies vom Drittanbieter Google ermöglichen die Analyse von Nutzerverhalten. Diese Analyse hilft uns unsere Dienste zu verbessern, indem wir verstehen, wie diese Webseite genutzt wird.',
|
123
|
+
en: 'The third-party cookies by Google enable the analysis of user behavior. This analysis helps us to improve our services by understanding how this website is used.',
|
124
|
+
},
|
125
|
+
id: 'ga',
|
126
|
+
links: {
|
127
|
+
'https://policies.google.com/privacy': 'Google Privacy Policy',
|
128
|
+
'https://policies.google.com/terms': 'Google Terms of Service',
|
129
|
+
},
|
130
|
+
name: 'Analytics',
|
131
|
+
targetCookieIds: ['_ga', '_ga_K4R41W62BR'],
|
132
|
+
},
|
133
|
+
],
|
134
|
+
},
|
135
|
+
locales: ['en', 'de'],
|
136
|
+
},
|
137
|
+
htmlValidator: {
|
138
|
+
failOnError: false, // TODO: fix invalid html in nuxt html template (https://github.com/nuxt/nuxt/issues/22526)
|
139
|
+
logLevel: 'warning',
|
140
|
+
},
|
141
|
+
i18n: {
|
142
|
+
defaultLocale: 'en', // Must be set for the default prefix_except_default prefix strategy.
|
143
|
+
detectBrowserLanguage: {
|
144
|
+
cookieKey: I18N_COOKIE_NAME,
|
145
|
+
cookieSecure: true,
|
146
|
+
},
|
147
|
+
},
|
148
|
+
linkChecker: {
|
149
|
+
debug: process.env.NODE_ENV === 'development',
|
150
|
+
failOnError: true,
|
151
|
+
},
|
152
|
+
seoKit: {
|
153
|
+
splash: false,
|
154
|
+
},
|
155
|
+
site: {
|
156
|
+
debug: process.env.NODE_ENV === 'development',
|
157
|
+
titleSeparator: '·',
|
158
|
+
},
|
159
|
+
sitemap: {
|
160
|
+
exclude: ['/api/pages/**'],
|
161
|
+
},
|
162
|
+
tailwindcss: {
|
163
|
+
cssPath: join(currentDir, './assets/css/tailwind.css'),
|
164
|
+
},
|
148
165
|
},
|
149
|
-
|
150
|
-
|
151
|
-
|
152
|
-
|
153
|
-
|
154
|
-
|
155
|
-
|
156
|
-
site: {
|
157
|
-
debug: process.env.NODE_ENV === 'development',
|
158
|
-
name: SITE_NAME,
|
159
|
-
url: BASE_URL,
|
160
|
-
},
|
161
|
-
sitemap: {
|
162
|
-
exclude: ['/api/**'],
|
163
|
-
},
|
164
|
-
tailwindcss: {
|
165
|
-
cssPath: join(currentDir, './assets/css/tailwind.css'),
|
166
|
-
},
|
167
|
-
})
|
166
|
+
VIO_NUXT_BASE_CONFIG({
|
167
|
+
baseUrl: BASE_URL,
|
168
|
+
siteName: SITE_NAME,
|
169
|
+
stagingHost: 'localhost:3000',
|
170
|
+
}),
|
171
|
+
),
|
172
|
+
)
|
package/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "@dargmuesli/nuxt-vio",
|
3
|
-
"version": "3.0.0-beta.
|
3
|
+
"version": "3.0.0-beta.20",
|
4
4
|
"type": "module",
|
5
5
|
"publishConfig": {
|
6
6
|
"access": "public"
|
@@ -15,9 +15,11 @@
|
|
15
15
|
"composables",
|
16
16
|
"layouts",
|
17
17
|
"locales",
|
18
|
-
"server",
|
19
18
|
"pages",
|
20
19
|
"plugins",
|
20
|
+
"server",
|
21
|
+
"store",
|
22
|
+
"types",
|
21
23
|
"utils",
|
22
24
|
"app.config.ts",
|
23
25
|
"error.vue",
|
@@ -25,69 +27,67 @@
|
|
25
27
|
"nuxt.config.ts",
|
26
28
|
"tailwind.config.ts"
|
27
29
|
],
|
28
|
-
"main": "
|
30
|
+
"main": "nuxt.config.ts",
|
29
31
|
"scripts": {
|
30
|
-
"
|
31
|
-
"
|
32
|
-
"generate": "
|
33
|
-
"preview": "nuxi preview .playground",
|
34
|
-
"prepare": "pnpm husky install && pnpm nuxt prepare .playground",
|
35
|
-
"lint": "pnpm lint:js && pnpm lint:ts && pnpm lint:style",
|
32
|
+
"build": "nuxt build .playground",
|
33
|
+
"dev": "nuxt dev .playground",
|
34
|
+
"generate": "nuxt generate .playground",
|
36
35
|
"lint:fix": "pnpm lint:js --fix && pnpm lint:ts --fix && pnpm lint:style --fix",
|
37
36
|
"lint:js": "eslint --cache --ext .js,.ts,.vue --ignore-path .gitignore .",
|
38
|
-
"lint:staged": "
|
39
|
-
"lint:style": "stylelint
|
40
|
-
"lint:ts": "nuxt typecheck"
|
37
|
+
"lint:staged": "lint-staged",
|
38
|
+
"lint:style": "stylelint --cache {,**/}*.{vue,css} --ignore-path .gitignore",
|
39
|
+
"lint:ts": "nuxt typecheck",
|
40
|
+
"lint": "pnpm lint:js && pnpm lint:ts && pnpm lint:style",
|
41
|
+
"prepare": "nuxt prepare .playground",
|
42
|
+
"preview": "nuxt preview .playground"
|
41
43
|
},
|
42
44
|
"dependencies": {
|
43
|
-
"@dargmuesli/nuxt-cookie-control": "6.1
|
44
|
-
"@
|
45
|
-
"@
|
45
|
+
"@dargmuesli/nuxt-cookie-control": "6.4.1",
|
46
|
+
"@http-util/status-i18n": "0.8.1",
|
47
|
+
"@nuxt/image": "1.0.0-rc.1",
|
46
48
|
"@nuxtjs/color-mode": "3.3.0",
|
47
49
|
"@nuxtjs/html-validator": "1.5.2",
|
48
|
-
"@nuxtjs/i18n": "8.0.0-rc.
|
50
|
+
"@nuxtjs/i18n": "8.0.0-rc.3",
|
49
51
|
"@nuxtjs/tailwindcss": "6.8.0",
|
50
52
|
"@pinia/nuxt": "0.4.11",
|
51
|
-
"@tailwindcss/forms": "0.5.
|
53
|
+
"@tailwindcss/forms": "0.5.5",
|
52
54
|
"@tailwindcss/typography": "0.5.9",
|
53
55
|
"@urql/core": "4.1.1",
|
54
56
|
"@urql/devtools": "2.0.3",
|
55
|
-
"@urql/exchange-graphcache": "6.3.
|
57
|
+
"@urql/exchange-graphcache": "6.3.2",
|
56
58
|
"@urql/vue": "1.1.2",
|
57
59
|
"@vuelidate/core": "2.0.3",
|
60
|
+
"@vuelidate/validators": "2.0.3",
|
58
61
|
"clipboard": "2.0.11",
|
59
|
-
"dayjs": "
|
62
|
+
"dayjs": "2.0.0-alpha.4",
|
60
63
|
"is-https": "4.0.0",
|
61
64
|
"jose": "4.14.4",
|
62
|
-
"marked": "7.0.
|
63
|
-
"nuxt-seo-kit-module": "2.0.0-beta.
|
65
|
+
"marked": "7.0.4",
|
66
|
+
"nuxt-seo-kit-module": "2.0.0-beta.13",
|
64
67
|
"pinia": "2.1.6",
|
65
|
-
"sweetalert2": "11.7.
|
66
|
-
"vue-gtag": "2.0.1"
|
68
|
+
"sweetalert2": "11.7.27",
|
69
|
+
"vue-gtag": "2.0.1",
|
70
|
+
"vue-tsc": "1.8.8"
|
67
71
|
},
|
68
72
|
"devDependencies": {
|
69
|
-
"@commitlint/cli": "17.6.7",
|
70
|
-
"@commitlint/config-conventional": "17.6.7",
|
71
73
|
"@intlify/eslint-plugin-vue-i18n": "3.0.0-next.3",
|
72
74
|
"@nuxtjs/eslint-config-typescript": "12.0.0",
|
73
75
|
"@types/marked": "5.0.1",
|
74
|
-
"eslint": "8.
|
76
|
+
"eslint": "8.47.0",
|
75
77
|
"eslint-config-prettier": "9.0.0",
|
76
78
|
"eslint-plugin-compat": "4.1.4",
|
77
79
|
"eslint-plugin-nuxt": "4.0.0",
|
78
80
|
"eslint-plugin-prettier": "5.0.0",
|
79
81
|
"eslint-plugin-yml": "1.8.0",
|
80
|
-
"
|
81
|
-
"lint-staged": "13.2.3",
|
82
|
+
"lint-staged": "14.0.1",
|
82
83
|
"nuxt": "3.6.5",
|
83
|
-
"prettier": "3.0.
|
84
|
-
"
|
84
|
+
"prettier": "3.0.2",
|
85
|
+
"prettier-plugin-tailwindcss": "0.5.3",
|
86
|
+
"stylelint": "15.10.3",
|
85
87
|
"stylelint-config-recommended-vue": "1.5.0",
|
86
88
|
"stylelint-config-standard": "34.0.0",
|
87
89
|
"stylelint-no-unsupported-browser-features": "7.0.0",
|
88
90
|
"tailwindcss": "3.3.3",
|
89
|
-
"
|
90
|
-
"vue": "3.3.4",
|
91
|
-
"vue-tsc": "1.8.8"
|
91
|
+
"vue": "3.3.4"
|
92
92
|
}
|
93
93
|
}
|