vuetify-nuxt-module 0.9.1 → 0.10.1
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/dist/module.d.mts +2 -2
- package/dist/module.d.ts +2 -2
- package/dist/module.json +1 -1
- package/dist/module.mjs +54 -8
- package/dist/runtime/plugins/vuetify-client-hints.client.mjs +81 -76
- package/dist/runtime/plugins/vuetify-client-hints.server.mjs +44 -39
- package/dist/runtime/plugins/vuetify-date.mjs +9 -4
- package/dist/runtime/plugins/vuetify-i18n-date.d.ts +2 -0
- package/dist/runtime/plugins/vuetify-i18n-date.mjs +14 -0
- package/dist/runtime/plugins/vuetify-i18n.mjs +11 -4
- package/dist/runtime/plugins/vuetify-icons.mjs +9 -4
- package/dist/types.d.mts +3 -3
- package/dist/types.d.ts +3 -3
- package/package.json +8 -8
- package/dist/runtime/plugins/config.d.ts +0 -1
- package/dist/runtime/plugins/config.mjs +0 -16
- package/dist/runtime/plugins/vuetify-sync.d.ts +0 -6
- package/dist/runtime/plugins/vuetify-sync.mjs +0 -14
- package/dist/runtime/plugins/vuetify.d.ts +0 -6
- package/dist/runtime/plugins/vuetify.mjs +0 -10
package/dist/module.d.mts
CHANGED
|
@@ -397,7 +397,7 @@ interface ModuleOptions extends VuetifyModuleOptions {
|
|
|
397
397
|
interface ModuleHooks {
|
|
398
398
|
'vuetify:registerModule': (registerModule: (config: InlineModuleOptions) => void) => HookResult;
|
|
399
399
|
}
|
|
400
|
-
interface
|
|
400
|
+
interface ModuleRuntimeHooks {
|
|
401
401
|
'vuetify:configuration': (options: {
|
|
402
402
|
isDev: boolean;
|
|
403
403
|
vuetifyOptions: VuetifyOptions;
|
|
@@ -443,4 +443,4 @@ declare module '@nuxt/schema' {
|
|
|
443
443
|
}
|
|
444
444
|
}
|
|
445
445
|
|
|
446
|
-
export { type ComponentName, type Components, type DateAdapter, type DateOptions, type DirectiveName, type Directives, type ExternalVuetifyOptions, type FontAwesomeSvgIconSet, type FontIconSet, type IconFontName, type IconSetName, type IconsOptions, type InlineModuleOptions, type JSSVGIconSet, type LabComponentName, type LabComponents, type MOptions, type ModuleHooks, type ModuleOptions, type
|
|
446
|
+
export { type ComponentName, type Components, type DateAdapter, type DateOptions, type DirectiveName, type Directives, type ExternalVuetifyOptions, type FontAwesomeSvgIconSet, type FontIconSet, type IconFontName, type IconSetName, type IconsOptions, type InlineModuleOptions, type JSSVGIconSet, type LabComponentName, type LabComponents, type MOptions, type ModuleHooks, type ModuleOptions, type ModuleRuntimeHooks, type SSRClientHints, type SSRClientHintsConfiguration, type UnoCCSMdiIconSet, type VOptions, type VuetifyLocale, type VuetifyModuleOptions, _default as default };
|
package/dist/module.d.ts
CHANGED
|
@@ -397,7 +397,7 @@ interface ModuleOptions extends VuetifyModuleOptions {
|
|
|
397
397
|
interface ModuleHooks {
|
|
398
398
|
'vuetify:registerModule': (registerModule: (config: InlineModuleOptions) => void) => HookResult;
|
|
399
399
|
}
|
|
400
|
-
interface
|
|
400
|
+
interface ModuleRuntimeHooks {
|
|
401
401
|
'vuetify:configuration': (options: {
|
|
402
402
|
isDev: boolean;
|
|
403
403
|
vuetifyOptions: VuetifyOptions;
|
|
@@ -443,4 +443,4 @@ declare module '@nuxt/schema' {
|
|
|
443
443
|
}
|
|
444
444
|
}
|
|
445
445
|
|
|
446
|
-
export { type ComponentName, type Components, type DateAdapter, type DateOptions, type DirectiveName, type Directives, type ExternalVuetifyOptions, type FontAwesomeSvgIconSet, type FontIconSet, type IconFontName, type IconSetName, type IconsOptions, type InlineModuleOptions, type JSSVGIconSet, type LabComponentName, type LabComponents, type MOptions, type ModuleHooks, type ModuleOptions, type
|
|
446
|
+
export { type ComponentName, type Components, type DateAdapter, type DateOptions, type DirectiveName, type Directives, type ExternalVuetifyOptions, type FontAwesomeSvgIconSet, type FontIconSet, type IconFontName, type IconSetName, type IconsOptions, type InlineModuleOptions, type JSSVGIconSet, type LabComponentName, type LabComponents, type MOptions, type ModuleHooks, type ModuleOptions, type ModuleRuntimeHooks, type SSRClientHints, type SSRClientHintsConfiguration, type UnoCCSMdiIconSet, type VOptions, type VuetifyLocale, type VuetifyModuleOptions, _default as default };
|
package/dist/module.json
CHANGED
package/dist/module.mjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { addVitePlugin, extendWebpackConfig, addImports, addPlugin, useLogger, defineNuxtModule, isNuxt3, getNuxtVersion, createResolver, hasNuxtModule } from '@nuxt/kit';
|
|
1
|
+
import { addVitePlugin, extendWebpackConfig, addImports, addPlugin, addPluginTemplate, useLogger, defineNuxtModule, isNuxt3, getNuxtVersion, createResolver, hasNuxtModule } from '@nuxt/kit';
|
|
2
2
|
import { isPackageExists, getPackageInfo } from 'local-pkg';
|
|
3
3
|
import defu from 'defu';
|
|
4
4
|
import { debounce } from 'perfect-debounce';
|
|
@@ -14,7 +14,7 @@ import { parseQuery, parseURL } from 'ufo';
|
|
|
14
14
|
import destr from 'destr';
|
|
15
15
|
import { transformAssetUrls } from 'vite-plugin-vuetify';
|
|
16
16
|
|
|
17
|
-
const version = "0.
|
|
17
|
+
const version = "0.10.1";
|
|
18
18
|
|
|
19
19
|
const VIRTUAL_VUETIFY_CONFIGURATION = "virtual:vuetify-configuration";
|
|
20
20
|
const RESOLVED_VIRTUAL_VUETIFY_CONFIGURATION = `/@nuxt-vuetify-configuration/${VIRTUAL_VUETIFY_CONFIGURATION.slice("virtual:".length)}`;
|
|
@@ -1204,7 +1204,14 @@ function configureNuxt(configKey, nuxt, ctx) {
|
|
|
1204
1204
|
meta: { docsUrl: `https://vuetifyjs.com/en/api/${toKebabCase(name)}/` }
|
|
1205
1205
|
})));
|
|
1206
1206
|
}
|
|
1207
|
+
let addHttpClientHintsPlugin = "";
|
|
1207
1208
|
if (ctx.ssrClientHints.enabled) {
|
|
1209
|
+
addHttpClientHintsPlugin = `
|
|
1210
|
+
if (import.meta.client)
|
|
1211
|
+
dependsOn.push('vuetify:client-hints:client:plugin')
|
|
1212
|
+
if (import.meta.server)
|
|
1213
|
+
dependsOn.push('vuetify:client-hints:server:plugin')
|
|
1214
|
+
`;
|
|
1208
1215
|
addPlugin({
|
|
1209
1216
|
src: ctx.resolver.resolve(runtimeDir, "plugins/vuetify-client-hints.client"),
|
|
1210
1217
|
mode: "client"
|
|
@@ -1218,22 +1225,61 @@ function configureNuxt(configKey, nuxt, ctx) {
|
|
|
1218
1225
|
src: ctx.resolver.resolve(runtimeDir, "plugins/vuetify-no-client-hints")
|
|
1219
1226
|
});
|
|
1220
1227
|
}
|
|
1221
|
-
|
|
1222
|
-
src: ctx.resolver.resolve(runtimeDir, `plugins/vuetify${ctx.i18n ? "-sync" : ""}`)
|
|
1223
|
-
});
|
|
1228
|
+
const dependsOn = ["vuetify:icons:plugin"];
|
|
1224
1229
|
addPlugin({
|
|
1225
1230
|
src: ctx.resolver.resolve(runtimeDir, "plugins/vuetify-icons")
|
|
1226
1231
|
});
|
|
1227
1232
|
if (ctx.i18n) {
|
|
1233
|
+
dependsOn.push("vuetify:i18n:plugin");
|
|
1228
1234
|
addPlugin({
|
|
1229
1235
|
src: ctx.resolver.resolve(runtimeDir, "plugins/vuetify-i18n")
|
|
1230
1236
|
});
|
|
1231
1237
|
}
|
|
1232
1238
|
if (nuxt.options.dev || ctx.dateAdapter) {
|
|
1233
|
-
|
|
1234
|
-
|
|
1235
|
-
|
|
1239
|
+
if (ctx.i18n) {
|
|
1240
|
+
dependsOn.push("vuetify:date-i18n:plugin");
|
|
1241
|
+
addPlugin({
|
|
1242
|
+
src: ctx.resolver.resolve(runtimeDir, "plugins/vuetify-i18n-date")
|
|
1243
|
+
});
|
|
1244
|
+
} else {
|
|
1245
|
+
dependsOn.push("vuetify:date:plugin");
|
|
1246
|
+
addPlugin({
|
|
1247
|
+
src: ctx.resolver.resolve(runtimeDir, "plugins/vuetify-date")
|
|
1248
|
+
});
|
|
1249
|
+
}
|
|
1236
1250
|
}
|
|
1251
|
+
addPluginTemplate({
|
|
1252
|
+
filename: "vuetify-nuxt-plugin.mjs",
|
|
1253
|
+
write: false,
|
|
1254
|
+
getContents() {
|
|
1255
|
+
return `
|
|
1256
|
+
import { defineNuxtPlugin } from '#imports'
|
|
1257
|
+
import { isDev, vuetifyConfiguration } from 'virtual:vuetify-configuration'
|
|
1258
|
+
import { createVuetify } from 'vuetify'
|
|
1259
|
+
|
|
1260
|
+
const dependsOn = ${JSON.stringify(dependsOn)}
|
|
1261
|
+
${addHttpClientHintsPlugin}
|
|
1262
|
+
|
|
1263
|
+
export default defineNuxtPlugin({
|
|
1264
|
+
name: 'vuetify:nuxt:plugin',
|
|
1265
|
+
order: 25,
|
|
1266
|
+
dependsOn,
|
|
1267
|
+
parallel: true,
|
|
1268
|
+
async setup(nuxtApp) {
|
|
1269
|
+
const vuetifyOptions = vuetifyConfiguration()
|
|
1270
|
+
await nuxtApp.hooks.callHook('vuetify:configuration', { isDev, vuetifyOptions })
|
|
1271
|
+
await nuxtApp.hooks.callHook('vuetify:before-create', { isDev, vuetifyOptions })
|
|
1272
|
+
const vuetify = createVuetify(vuetifyOptions)
|
|
1273
|
+
nuxtApp.vueApp.use(vuetify)
|
|
1274
|
+
nuxtApp.provide('vuetify', vuetify)
|
|
1275
|
+
await nuxtApp.hooks.callHook('vuetify:ready', vuetify)
|
|
1276
|
+
if (process.client)
|
|
1277
|
+
isDev && console.log('Vuetify 3 initialized', vuetify)
|
|
1278
|
+
},
|
|
1279
|
+
})
|
|
1280
|
+
`;
|
|
1281
|
+
}
|
|
1282
|
+
});
|
|
1237
1283
|
}
|
|
1238
1284
|
|
|
1239
1285
|
const CONFIG_KEY = "vuetify";
|
|
@@ -2,90 +2,95 @@ import { ssrClientHintsConfiguration } from "virtual:vuetify-ssr-client-hints-co
|
|
|
2
2
|
import { reactive, ref, watch } from "vue";
|
|
3
3
|
import { VuetifyHTTPClientHints } from "./client-hints.mjs";
|
|
4
4
|
import { defineNuxtPlugin, useNuxtApp, useState } from "#imports";
|
|
5
|
-
const plugin = defineNuxtPlugin(
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
const
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
5
|
+
const plugin = defineNuxtPlugin({
|
|
6
|
+
name: "vuetify:client-hints:client:plugin",
|
|
7
|
+
order: -25,
|
|
8
|
+
parallel: true,
|
|
9
|
+
setup(nuxtApp) {
|
|
10
|
+
const state = useSSRClientHints();
|
|
11
|
+
const {
|
|
12
|
+
firstRequest,
|
|
13
|
+
prefersColorSchemeAvailable,
|
|
14
|
+
prefersReducedMotionAvailable,
|
|
15
|
+
viewportHeightAvailable,
|
|
16
|
+
viewportWidthAvailable
|
|
17
|
+
} = state.value;
|
|
18
|
+
const {
|
|
19
|
+
reloadOnFirstRequest,
|
|
20
|
+
viewportSize,
|
|
21
|
+
prefersReducedMotion,
|
|
22
|
+
prefersColorScheme,
|
|
23
|
+
prefersColorSchemeOptions
|
|
24
|
+
} = ssrClientHintsConfiguration;
|
|
25
|
+
if (firstRequest && reloadOnFirstRequest) {
|
|
26
|
+
if (prefersColorScheme) {
|
|
27
|
+
const themeCookie = state.value.colorSchemeCookie;
|
|
28
|
+
if (prefersColorSchemeOptions && themeCookie) {
|
|
29
|
+
const prefersDark = window.matchMedia("(prefers-color-scheme: dark)").matches;
|
|
30
|
+
const cookieName = prefersColorSchemeOptions.cookieName;
|
|
31
|
+
const parseCookieName = `${cookieName}=`;
|
|
32
|
+
const cookieEntry = `${parseCookieName}${state.value.colorSchemeFromCookie ?? prefersColorSchemeOptions.defaultTheme};`;
|
|
33
|
+
const newThemeName = prefersDark ? prefersColorSchemeOptions.darkThemeName : prefersColorSchemeOptions.lightThemeName;
|
|
34
|
+
document.cookie = themeCookie.replace(cookieEntry, `${cookieName}=${newThemeName};`);
|
|
35
|
+
window.location.reload();
|
|
36
|
+
} else if (prefersColorSchemeAvailable) {
|
|
37
|
+
window.location.reload();
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
if (prefersReducedMotion && prefersReducedMotionAvailable)
|
|
31
41
|
window.location.reload();
|
|
32
|
-
|
|
42
|
+
if (viewportSize && viewportHeightAvailable)
|
|
43
|
+
window.location.reload();
|
|
44
|
+
if (viewportSize && viewportWidthAvailable)
|
|
33
45
|
window.location.reload();
|
|
34
|
-
}
|
|
35
46
|
}
|
|
36
|
-
if (
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
if (viewportSize) {
|
|
46
|
-
const clientWidth = state.value.viewportWidth;
|
|
47
|
-
const clientHeight = state.value.viewportHeight;
|
|
48
|
-
vuetifyOptions.ssr = typeof clientWidth === "number" ? {
|
|
49
|
-
clientWidth,
|
|
50
|
-
clientHeight
|
|
51
|
-
} : true;
|
|
52
|
-
}
|
|
53
|
-
if (prefersColorScheme && prefersColorSchemeOptions) {
|
|
54
|
-
if (vuetifyOptions.theme === false) {
|
|
55
|
-
vuetifyOptions.theme = { defaultTheme: state.value.colorSchemeFromCookie ?? prefersColorSchemeOptions.defaultTheme };
|
|
56
|
-
} else {
|
|
57
|
-
vuetifyOptions.theme = vuetifyOptions.theme ?? {};
|
|
58
|
-
vuetifyOptions.theme.defaultTheme = state.value.colorSchemeFromCookie ?? prefersColorSchemeOptions.defaultTheme;
|
|
47
|
+
if (viewportSize || prefersColorScheme && prefersColorSchemeOptions) {
|
|
48
|
+
nuxtApp.hook("vuetify:before-create", ({ vuetifyOptions }) => {
|
|
49
|
+
if (viewportSize) {
|
|
50
|
+
const clientWidth = state.value.viewportWidth;
|
|
51
|
+
const clientHeight = state.value.viewportHeight;
|
|
52
|
+
vuetifyOptions.ssr = typeof clientWidth === "number" ? {
|
|
53
|
+
clientWidth,
|
|
54
|
+
clientHeight
|
|
55
|
+
} : true;
|
|
59
56
|
}
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
const vuetify = useNuxtApp().$vuetify;
|
|
67
|
-
const cookieName = prefersColorSchemeOptions.cookieName;
|
|
68
|
-
const parseCookieName = `${cookieName}=`;
|
|
69
|
-
const cookieEntry = `${parseCookieName}${state.value.colorSchemeFromCookie ?? prefersColorSchemeOptions.defaultTheme};`;
|
|
70
|
-
watch(vuetify.theme.global.name, (newThemeName) => {
|
|
71
|
-
document.cookie = themeCookie.replace(cookieEntry, `${cookieName}=${newThemeName};`);
|
|
72
|
-
});
|
|
73
|
-
if (prefersColorSchemeOptions.useBrowserThemeOnly) {
|
|
74
|
-
const { darkThemeName, lightThemeName } = prefersColorSchemeOptions;
|
|
75
|
-
const prefersDark = window.matchMedia("(prefers-color-scheme: dark)");
|
|
76
|
-
prefersDark.addEventListener("change", (e) => {
|
|
77
|
-
vuetify.theme.global.name.value = e.matches ? darkThemeName : lightThemeName;
|
|
78
|
-
});
|
|
57
|
+
if (prefersColorScheme && prefersColorSchemeOptions) {
|
|
58
|
+
if (vuetifyOptions.theme === false) {
|
|
59
|
+
vuetifyOptions.theme = { defaultTheme: state.value.colorSchemeFromCookie ?? prefersColorSchemeOptions.defaultTheme };
|
|
60
|
+
} else {
|
|
61
|
+
vuetifyOptions.theme = vuetifyOptions.theme ?? {};
|
|
62
|
+
vuetifyOptions.theme.defaultTheme = state.value.colorSchemeFromCookie ?? prefersColorSchemeOptions.defaultTheme;
|
|
79
63
|
}
|
|
80
|
-
}
|
|
64
|
+
}
|
|
65
|
+
});
|
|
66
|
+
if (prefersColorScheme && prefersColorSchemeOptions) {
|
|
67
|
+
const themeCookie = state.value.colorSchemeCookie;
|
|
68
|
+
if (themeCookie) {
|
|
69
|
+
nuxtApp.hook("app:beforeMount", () => {
|
|
70
|
+
const vuetify = useNuxtApp().$vuetify;
|
|
71
|
+
const cookieName = prefersColorSchemeOptions.cookieName;
|
|
72
|
+
const parseCookieName = `${cookieName}=`;
|
|
73
|
+
const cookieEntry = `${parseCookieName}${state.value.colorSchemeFromCookie ?? prefersColorSchemeOptions.defaultTheme};`;
|
|
74
|
+
watch(vuetify.theme.global.name, (newThemeName) => {
|
|
75
|
+
document.cookie = themeCookie.replace(cookieEntry, `${cookieName}=${newThemeName};`);
|
|
76
|
+
});
|
|
77
|
+
if (prefersColorSchemeOptions.useBrowserThemeOnly) {
|
|
78
|
+
const { darkThemeName, lightThemeName } = prefersColorSchemeOptions;
|
|
79
|
+
const prefersDark = window.matchMedia("(prefers-color-scheme: dark)");
|
|
80
|
+
prefersDark.addEventListener("change", (e) => {
|
|
81
|
+
vuetify.theme.global.name.value = e.matches ? darkThemeName : lightThemeName;
|
|
82
|
+
});
|
|
83
|
+
}
|
|
84
|
+
});
|
|
85
|
+
}
|
|
81
86
|
}
|
|
82
87
|
}
|
|
88
|
+
return {
|
|
89
|
+
provide: reactive({
|
|
90
|
+
ssrClientHints: state
|
|
91
|
+
})
|
|
92
|
+
};
|
|
83
93
|
}
|
|
84
|
-
return {
|
|
85
|
-
provide: reactive({
|
|
86
|
-
ssrClientHints: state
|
|
87
|
-
})
|
|
88
|
-
};
|
|
89
94
|
});
|
|
90
95
|
export default plugin;
|
|
91
96
|
function defaultClientValues() {
|
|
@@ -24,47 +24,52 @@ const AcceptClientHintsRequestHeaders = Object.entries(AcceptClientHintsHeaders)
|
|
|
24
24
|
return acc;
|
|
25
25
|
}, {});
|
|
26
26
|
const HttpRequestHeaders = Array.from(Object.values(AcceptClientHintsRequestHeaders)).concat("user-agent", "cookie");
|
|
27
|
-
const plugin = defineNuxtPlugin(
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
clientHintsRequest,
|
|
37
|
-
ssrClientHintsConfiguration
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
}
|
|
50
|
-
|
|
51
|
-
vuetifyOptions.theme
|
|
27
|
+
const plugin = defineNuxtPlugin({
|
|
28
|
+
name: "vuetify:client-hints:server:plugin",
|
|
29
|
+
order: -25,
|
|
30
|
+
parallel: true,
|
|
31
|
+
setup(nuxtApp) {
|
|
32
|
+
const state = useState(VuetifyHTTPClientHints);
|
|
33
|
+
const requestHeaders = useRequestHeaders(HttpRequestHeaders);
|
|
34
|
+
const userAgentHeader = requestHeaders["user-agent"];
|
|
35
|
+
const userAgent = userAgentHeader ? parseUserAgent(userAgentHeader) : null;
|
|
36
|
+
const clientHintsRequest = collectClientHints(userAgent, ssrClientHintsConfiguration, requestHeaders);
|
|
37
|
+
writeClientHintsResponseHeaders(clientHintsRequest, ssrClientHintsConfiguration);
|
|
38
|
+
state.value = clientHintsRequest;
|
|
39
|
+
state.value.colorSchemeCookie = writeThemeCookie(
|
|
40
|
+
clientHintsRequest,
|
|
41
|
+
ssrClientHintsConfiguration
|
|
42
|
+
);
|
|
43
|
+
nuxtApp.hook("vuetify:before-create", async ({ vuetifyOptions }) => {
|
|
44
|
+
const clientWidth = clientHintsRequest.viewportWidth;
|
|
45
|
+
const clientHeight = clientHintsRequest.viewportHeight;
|
|
46
|
+
vuetifyOptions.ssr = typeof clientWidth === "number" ? {
|
|
47
|
+
clientWidth,
|
|
48
|
+
clientHeight
|
|
49
|
+
} : true;
|
|
50
|
+
if (clientHintsRequest.colorSchemeFromCookie) {
|
|
51
|
+
if (vuetifyOptions.theme === false) {
|
|
52
|
+
vuetifyOptions.theme = { defaultTheme: clientHintsRequest.colorSchemeFromCookie };
|
|
53
|
+
} else {
|
|
54
|
+
vuetifyOptions.theme ??= {};
|
|
55
|
+
vuetifyOptions.theme.defaultTheme = clientHintsRequest.colorSchemeFromCookie;
|
|
56
|
+
}
|
|
52
57
|
}
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
58
|
+
await nuxtApp.hooks.callHook("vuetify:ssr-client-hints", {
|
|
59
|
+
vuetifyOptions,
|
|
60
|
+
ssrClientHintsConfiguration: {
|
|
61
|
+
...ssrClientHintsConfiguration,
|
|
62
|
+
enabled: true
|
|
63
|
+
},
|
|
64
|
+
ssrClientHints: state.value
|
|
65
|
+
});
|
|
61
66
|
});
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
}
|
|
67
|
-
}
|
|
67
|
+
return {
|
|
68
|
+
provide: reactive({
|
|
69
|
+
ssrClientHints: state
|
|
70
|
+
})
|
|
71
|
+
};
|
|
72
|
+
}
|
|
68
73
|
});
|
|
69
74
|
const chromiumBasedBrowserFeatures = {
|
|
70
75
|
prefersColorScheme: (_, v) => v[0] >= 93,
|
|
@@ -1,7 +1,12 @@
|
|
|
1
1
|
import { configureDate } from "./date.mjs";
|
|
2
2
|
import { defineNuxtPlugin } from "#imports";
|
|
3
|
-
export default defineNuxtPlugin(
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
3
|
+
export default defineNuxtPlugin({
|
|
4
|
+
name: "vuetify:date:plugin",
|
|
5
|
+
order: -25,
|
|
6
|
+
parallel: true,
|
|
7
|
+
setup(nuxtApp) {
|
|
8
|
+
nuxtApp.hook("vuetify:configuration", ({ vuetifyOptions }) => {
|
|
9
|
+
configureDate(vuetifyOptions);
|
|
10
|
+
});
|
|
11
|
+
}
|
|
7
12
|
});
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { configureDate } from "./date.mjs";
|
|
2
|
+
import { defineNuxtPlugin } from "#imports";
|
|
3
|
+
export default defineNuxtPlugin({
|
|
4
|
+
name: "vuetify:date-i18n:plugin",
|
|
5
|
+
order: -25,
|
|
6
|
+
// @ts-expect-error i18n plugin missing on build time
|
|
7
|
+
dependsOn: ["i18n:plugin"],
|
|
8
|
+
parallel: true,
|
|
9
|
+
setup(nuxtApp) {
|
|
10
|
+
nuxtApp.hook("vuetify:configuration", ({ vuetifyOptions }) => {
|
|
11
|
+
configureDate(vuetifyOptions);
|
|
12
|
+
});
|
|
13
|
+
}
|
|
14
|
+
});
|
|
@@ -1,7 +1,14 @@
|
|
|
1
1
|
import { createAdapter } from "./i18n.mjs";
|
|
2
2
|
import { defineNuxtPlugin } from "#imports";
|
|
3
|
-
export default defineNuxtPlugin(
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
3
|
+
export default defineNuxtPlugin({
|
|
4
|
+
name: "vuetify:i18n:plugin",
|
|
5
|
+
order: -25,
|
|
6
|
+
// @ts-expect-error i18n plugin missing on build time
|
|
7
|
+
dependsOn: ["i18n:plugin"],
|
|
8
|
+
parallel: true,
|
|
9
|
+
setup(nuxtApp) {
|
|
10
|
+
nuxtApp.hook("vuetify:configuration", ({ vuetifyOptions }) => {
|
|
11
|
+
createAdapter(vuetifyOptions);
|
|
12
|
+
});
|
|
13
|
+
}
|
|
7
14
|
});
|
|
@@ -1,7 +1,12 @@
|
|
|
1
1
|
import { configureIcons } from "./icons.mjs";
|
|
2
2
|
import { defineNuxtPlugin } from "#imports";
|
|
3
|
-
export default defineNuxtPlugin(
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
3
|
+
export default defineNuxtPlugin({
|
|
4
|
+
name: "vuetify:icons:plugin",
|
|
5
|
+
order: -25,
|
|
6
|
+
parallel: true,
|
|
7
|
+
setup(nuxtApp) {
|
|
8
|
+
nuxtApp.hook("vuetify:configuration", ({ vuetifyOptions }) => {
|
|
9
|
+
configureIcons(vuetifyOptions);
|
|
10
|
+
});
|
|
11
|
+
}
|
|
7
12
|
});
|
package/dist/types.d.mts
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
|
|
2
|
-
import type { ModuleOptions, ModuleHooks,
|
|
2
|
+
import type { ModuleOptions, ModuleHooks, ModuleRuntimeHooks } from './module.js'
|
|
3
3
|
|
|
4
4
|
declare module '#app' {
|
|
5
|
-
interface RuntimeNuxtHooks extends
|
|
5
|
+
interface RuntimeNuxtHooks extends ModuleRuntimeHooks {}
|
|
6
6
|
}
|
|
7
7
|
|
|
8
8
|
declare module '@nuxt/schema' {
|
|
@@ -18,4 +18,4 @@ declare module 'nuxt/schema' {
|
|
|
18
18
|
}
|
|
19
19
|
|
|
20
20
|
|
|
21
|
-
export type { ComponentName, Components, DateAdapter, DateOptions, DirectiveName, Directives, ExternalVuetifyOptions, FontAwesomeSvgIconSet, FontIconSet, IconFontName, IconSetName, IconsOptions, InlineModuleOptions, JSSVGIconSet, LabComponentName, LabComponents, MOptions, ModuleHooks, ModuleOptions,
|
|
21
|
+
export type { ComponentName, Components, DateAdapter, DateOptions, DirectiveName, Directives, ExternalVuetifyOptions, FontAwesomeSvgIconSet, FontIconSet, IconFontName, IconSetName, IconsOptions, InlineModuleOptions, JSSVGIconSet, LabComponentName, LabComponents, MOptions, ModuleHooks, ModuleOptions, ModuleRuntimeHooks, SSRClientHints, SSRClientHintsConfiguration, UnoCCSMdiIconSet, VOptions, VuetifyLocale, VuetifyModuleOptions, default } from './module.js'
|
package/dist/types.d.ts
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
|
|
2
|
-
import type { ModuleOptions, ModuleHooks,
|
|
2
|
+
import type { ModuleOptions, ModuleHooks, ModuleRuntimeHooks } from './module'
|
|
3
3
|
|
|
4
4
|
declare module '#app' {
|
|
5
|
-
interface RuntimeNuxtHooks extends
|
|
5
|
+
interface RuntimeNuxtHooks extends ModuleRuntimeHooks {}
|
|
6
6
|
}
|
|
7
7
|
|
|
8
8
|
declare module '@nuxt/schema' {
|
|
@@ -18,4 +18,4 @@ declare module 'nuxt/schema' {
|
|
|
18
18
|
}
|
|
19
19
|
|
|
20
20
|
|
|
21
|
-
export type { ComponentName, Components, DateAdapter, DateOptions, DirectiveName, Directives, ExternalVuetifyOptions, FontAwesomeSvgIconSet, FontIconSet, IconFontName, IconSetName, IconsOptions, InlineModuleOptions, JSSVGIconSet, LabComponentName, LabComponents, MOptions, ModuleHooks, ModuleOptions,
|
|
21
|
+
export type { ComponentName, Components, DateAdapter, DateOptions, DirectiveName, Directives, ExternalVuetifyOptions, FontAwesomeSvgIconSet, FontIconSet, IconFontName, IconSetName, IconsOptions, InlineModuleOptions, JSSVGIconSet, LabComponentName, LabComponents, MOptions, ModuleHooks, ModuleOptions, ModuleRuntimeHooks, SSRClientHints, SSRClientHintsConfiguration, UnoCCSMdiIconSet, VOptions, VuetifyLocale, VuetifyModuleOptions, default } from './module'
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "vuetify-nuxt-module",
|
|
3
3
|
"type": "module",
|
|
4
|
-
"version": "0.
|
|
4
|
+
"version": "0.10.1",
|
|
5
5
|
"packageManager": "pnpm@8.14.1",
|
|
6
6
|
"description": "Zero-Config Nuxt Module for Vuetify",
|
|
7
7
|
"author": "userquin <userquin@gmail.com>",
|
|
@@ -74,7 +74,7 @@
|
|
|
74
74
|
"ufo": "^1.3.2",
|
|
75
75
|
"unconfig": "^0.3.11",
|
|
76
76
|
"vite-plugin-vuetify": "^2.0.1",
|
|
77
|
-
"vuetify": "^3.4.
|
|
77
|
+
"vuetify": "^3.4.10"
|
|
78
78
|
},
|
|
79
79
|
"devDependencies": {
|
|
80
80
|
"@antfu/eslint-config": "^0.43.1",
|
|
@@ -86,24 +86,24 @@
|
|
|
86
86
|
"@iconify-json/carbon": "^1.1.21",
|
|
87
87
|
"@iconify-json/mdi": "^1.1.55",
|
|
88
88
|
"@mdi/js": "^7.3.67",
|
|
89
|
-
"@nuxt/devtools": "^1.0.
|
|
89
|
+
"@nuxt/devtools": "^1.0.8",
|
|
90
90
|
"@nuxt/module-builder": "^0.5.5",
|
|
91
91
|
"@nuxt/schema": "^3.9.0",
|
|
92
92
|
"@nuxt/test-utils": "^3.9.0",
|
|
93
93
|
"@nuxtjs/i18n": "^8.0.0",
|
|
94
94
|
"@parcel/watcher": "^2.3.0",
|
|
95
95
|
"@types/node": "^18",
|
|
96
|
-
"@unocss/nuxt": "^0.58.
|
|
96
|
+
"@unocss/nuxt": "^0.58.3",
|
|
97
97
|
"bumpp": "^9.2.0",
|
|
98
98
|
"eslint": "^8.54.0",
|
|
99
99
|
"luxon": "^3.4.3",
|
|
100
|
-
"nuxt": "^3.
|
|
100
|
+
"nuxt": "^3.9.0",
|
|
101
101
|
"publint": "^0.2.5",
|
|
102
102
|
"rimraf": "^5.0.5",
|
|
103
103
|
"sass": "^1.63.6",
|
|
104
104
|
"typescript": "^5.3.3",
|
|
105
|
-
"vite": "^5.0.
|
|
106
|
-
"vitest": "^1.1.
|
|
105
|
+
"vite": "^5.0.11",
|
|
106
|
+
"vitest": "^1.1.3",
|
|
107
107
|
"vue-tsc": "^1.8.27"
|
|
108
108
|
},
|
|
109
109
|
"build": {
|
|
@@ -137,4 +137,4 @@
|
|
|
137
137
|
"installDependencies": false,
|
|
138
138
|
"startCommand": "node .stackblitz.js && pnpm install && nr prepack && nr dev:prepare && nr dev"
|
|
139
139
|
}
|
|
140
|
-
}
|
|
140
|
+
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export declare function configureVuetify(): Promise<void>;
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
import { createVuetify } from "vuetify";
|
|
2
|
-
import { isDev, vuetifyConfiguration } from "virtual:vuetify-configuration";
|
|
3
|
-
import { useNuxtApp } from "#imports";
|
|
4
|
-
export async function configureVuetify() {
|
|
5
|
-
const nuxtApp = useNuxtApp();
|
|
6
|
-
const vuetifyOptions = vuetifyConfiguration();
|
|
7
|
-
await nuxtApp.hooks.callHook("vuetify:configuration", { isDev, vuetifyOptions });
|
|
8
|
-
await nuxtApp.hooks.callHook("vuetify:before-create", { isDev, vuetifyOptions });
|
|
9
|
-
const vuetify = createVuetify(vuetifyOptions);
|
|
10
|
-
nuxtApp.vueApp.use(vuetify);
|
|
11
|
-
nuxtApp.provide("vuetify", vuetify);
|
|
12
|
-
await nuxtApp.hooks.callHook("vuetify:ready", vuetify);
|
|
13
|
-
if (process.client) {
|
|
14
|
-
isDev && console.log("Vuetify 3 initialized", vuetify);
|
|
15
|
-
}
|
|
16
|
-
}
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
import { configureVuetify } from "./config.mjs";
|
|
2
|
-
import { defineNuxtPlugin } from "#imports";
|
|
3
|
-
const plugin = defineNuxtPlugin({
|
|
4
|
-
name: "vuetify:configuration:plugin",
|
|
5
|
-
enforce: "post",
|
|
6
|
-
// @ts-expect-error i18n plugin missing on build time
|
|
7
|
-
dependsOn: ["i18n:plugin"],
|
|
8
|
-
// i18n runtime plugin can be async
|
|
9
|
-
parallel: false,
|
|
10
|
-
async setup() {
|
|
11
|
-
await configureVuetify();
|
|
12
|
-
}
|
|
13
|
-
});
|
|
14
|
-
export default plugin;
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
import { configureVuetify } from "./config.mjs";
|
|
2
|
-
import { defineNuxtPlugin } from "#imports";
|
|
3
|
-
const plugin = defineNuxtPlugin({
|
|
4
|
-
name: "vuetify:configuration:plugin",
|
|
5
|
-
enforce: "post",
|
|
6
|
-
async setup() {
|
|
7
|
-
await configureVuetify();
|
|
8
|
-
}
|
|
9
|
-
});
|
|
10
|
-
export default plugin;
|