vuetify-nuxt-module 0.9.0 → 0.10.0

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.json CHANGED
@@ -5,5 +5,5 @@
5
5
  "nuxt": "^3.6.5",
6
6
  "bridge": false
7
7
  },
8
- "version": "0.9.0"
8
+ "version": "0.10.0"
9
9
  }
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.9.0";
17
+ const version = "0.10.0";
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,58 @@ function configureNuxt(configKey, nuxt, ctx) {
1218
1225
  src: ctx.resolver.resolve(runtimeDir, "plugins/vuetify-no-client-hints")
1219
1226
  });
1220
1227
  }
1221
- addPlugin({
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
- addPlugin({
1234
- src: ctx.resolver.resolve(runtimeDir, "plugins/vuetify-date")
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.ts",
1253
+ write: false,
1254
+ getContents() {
1255
+ return `
1256
+ import type { createVuetify } from 'vuetify'
1257
+ import { configureVuetify } from 'vuetify-nuxt-module/dist/runtime/plugins/config'
1258
+ import { defineNuxtPlugin } from '#imports'
1259
+ import type { Plugin } from '#app'
1260
+
1261
+ const dependsOn = ${JSON.stringify(dependsOn)}
1262
+ ${addHttpClientHintsPlugin}
1263
+
1264
+ const plugin: Plugin<{
1265
+ vuetify: ReturnType<typeof createVuetify>
1266
+ }> = defineNuxtPlugin({
1267
+ name: 'vuetify:configuration:plugin',
1268
+ order: 25,
1269
+ dependsOn,
1270
+ parallel: true,
1271
+ async setup() {
1272
+ await configureVuetify()
1273
+ },
1274
+ })
1275
+
1276
+ export default plugin
1277
+ `;
1278
+ }
1279
+ });
1237
1280
  }
1238
1281
 
1239
1282
  const CONFIG_KEY = "vuetify";
@@ -1,90 +1,125 @@
1
1
  import { ssrClientHintsConfiguration } from "virtual:vuetify-ssr-client-hints-configuration";
2
- import { reactive, watch } from "vue";
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((nuxtApp) => {
6
- const state = useState(VuetifyHTTPClientHints);
7
- const {
8
- firstRequest,
9
- prefersColorSchemeAvailable,
10
- prefersReducedMotionAvailable,
11
- viewportHeightAvailable,
12
- viewportWidthAvailable
13
- } = state.value;
14
- const {
15
- reloadOnFirstRequest,
16
- viewportSize,
17
- prefersReducedMotion,
18
- prefersColorScheme,
19
- prefersColorSchemeOptions
20
- } = ssrClientHintsConfiguration;
21
- if (firstRequest && reloadOnFirstRequest) {
22
- if (prefersColorScheme) {
23
- const themeCookie = state.value.colorSchemeCookie;
24
- if (prefersColorSchemeOptions && themeCookie) {
25
- const prefersDark = window.matchMedia("(prefers-color-scheme: dark)").matches;
26
- const cookieName = prefersColorSchemeOptions.cookieName;
27
- const parseCookieName = `${cookieName}=`;
28
- const cookieEntry = `${parseCookieName}${state.value.colorSchemeFromCookie ?? prefersColorSchemeOptions.defaultTheme};`;
29
- const newThemeName = prefersDark ? prefersColorSchemeOptions.darkThemeName : prefersColorSchemeOptions.lightThemeName;
30
- document.cookie = themeCookie.replace(cookieEntry, `${cookieName}=${newThemeName};`);
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
- } else if (prefersColorSchemeAvailable) {
42
+ if (viewportSize && viewportHeightAvailable)
43
+ window.location.reload();
44
+ if (viewportSize && viewportWidthAvailable)
33
45
  window.location.reload();
34
- }
35
46
  }
36
- if (prefersReducedMotion && prefersReducedMotionAvailable)
37
- window.location.reload();
38
- if (viewportSize && viewportHeightAvailable)
39
- window.location.reload();
40
- if (viewportSize && viewportWidthAvailable)
41
- window.location.reload();
42
- }
43
- if (viewportSize || prefersColorScheme && prefersColorSchemeOptions) {
44
- nuxtApp.hook("vuetify:before-create", ({ vuetifyOptions }) => {
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
- if (prefersColorScheme && prefersColorSchemeOptions) {
63
- const themeCookie = state.value.colorSchemeCookie;
64
- if (themeCookie) {
65
- nuxtApp.hook("app:beforeMount", () => {
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;
96
+ function defaultClientValues() {
97
+ return {
98
+ firstRequest: false,
99
+ prefersColorSchemeAvailable: false,
100
+ prefersReducedMotionAvailable: false,
101
+ viewportHeightAvailable: true,
102
+ viewportWidthAvailable: true,
103
+ viewportHeight: window.innerHeight,
104
+ viewportWidth: window.innerWidth
105
+ };
106
+ }
107
+ function useSSRClientHints() {
108
+ const state = useState(VuetifyHTTPClientHints);
109
+ if (state.value)
110
+ return state;
111
+ const initial = ref(defaultClientValues());
112
+ if (!ssrClientHintsConfiguration.prefersColorScheme || !ssrClientHintsConfiguration.prefersColorSchemeOptions)
113
+ return initial;
114
+ const {
115
+ baseUrl,
116
+ cookieName,
117
+ defaultTheme
118
+ } = ssrClientHintsConfiguration.prefersColorSchemeOptions;
119
+ const cookieNamePrefix = `${cookieName}=`;
120
+ initial.value.colorSchemeFromCookie = document.cookie?.split(";")?.find((c) => c.trim().startsWith(cookieNamePrefix))?.split("=")[1] ?? defaultTheme;
121
+ const date = /* @__PURE__ */ new Date();
122
+ const expires = new Date(date.setDate(date.getDate() + 365));
123
+ initial.value.colorSchemeCookie = `${cookieName}=${initial.value.colorSchemeFromCookie}; Path=${baseUrl}; Expires=${expires.toUTCString()}; SameSite=Lax`;
124
+ return initial;
125
+ }
@@ -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((nuxtApp) => {
28
- const state = useState(VuetifyHTTPClientHints);
29
- const requestHeaders = useRequestHeaders(HttpRequestHeaders);
30
- const userAgentHeader = requestHeaders["user-agent"];
31
- const userAgent = userAgentHeader ? parseUserAgent(userAgentHeader) : null;
32
- const clientHintsRequest = collectClientHints(userAgent, ssrClientHintsConfiguration, requestHeaders);
33
- writeClientHintsResponseHeaders(clientHintsRequest, ssrClientHintsConfiguration);
34
- state.value = clientHintsRequest;
35
- state.value.colorSchemeCookie = writeThemeCookie(
36
- clientHintsRequest,
37
- ssrClientHintsConfiguration
38
- );
39
- nuxtApp.hook("vuetify:before-create", async ({ vuetifyOptions }) => {
40
- const clientWidth = clientHintsRequest.viewportWidth;
41
- const clientHeight = clientHintsRequest.viewportHeight;
42
- vuetifyOptions.ssr = typeof clientWidth === "number" ? {
43
- clientWidth,
44
- clientHeight
45
- } : true;
46
- if (clientHintsRequest.colorSchemeFromCookie) {
47
- if (vuetifyOptions.theme === false) {
48
- vuetifyOptions.theme = { defaultTheme: clientHintsRequest.colorSchemeFromCookie };
49
- } else {
50
- vuetifyOptions.theme ??= {};
51
- vuetifyOptions.theme.defaultTheme = clientHintsRequest.colorSchemeFromCookie;
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
- await nuxtApp.hooks.callHook("vuetify:ssr-client-hints", {
55
- vuetifyOptions,
56
- ssrClientHintsConfiguration: {
57
- ...ssrClientHintsConfiguration,
58
- enabled: true
59
- },
60
- ssrClientHints: state.value
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
- return {
64
- provide: reactive({
65
- ssrClientHints: state
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((nuxtApp) => {
4
- nuxtApp.hook("vuetify:configuration", ({ vuetifyOptions }) => {
5
- configureDate(vuetifyOptions);
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,2 @@
1
+ declare const _default: any;
2
+ export default _default;
@@ -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((nuxtApp) => {
4
- nuxtApp.hook("vuetify:configuration", ({ vuetifyOptions }) => {
5
- createAdapter(vuetifyOptions);
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((nuxtApp) => {
4
- nuxtApp.hook("vuetify:configuration", ({ vuetifyOptions }) => {
5
- configureIcons(vuetifyOptions);
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/package.json CHANGED
@@ -1,8 +1,8 @@
1
1
  {
2
2
  "name": "vuetify-nuxt-module",
3
3
  "type": "module",
4
- "version": "0.9.0",
5
- "packageManager": "pnpm@8.14.0",
4
+ "version": "0.10.0",
5
+ "packageManager": "pnpm@8.14.1",
6
6
  "description": "Zero-Config Nuxt Module for Vuetify",
7
7
  "author": "userquin <userquin@gmail.com>",
8
8
  "license": "MIT",
@@ -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.8"
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.6",
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.0",
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.8.2",
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.10",
106
- "vitest": "^1.1.0",
105
+ "vite": "^5.0.11",
106
+ "vitest": "^1.1.3",
107
107
  "vue-tsc": "^1.8.27"
108
108
  },
109
109
  "build": {
@@ -1,6 +0,0 @@
1
- import type { createVuetify } from 'vuetify';
2
- import type { Plugin } from '#app';
3
- declare const plugin: Plugin<{
4
- vuetify: ReturnType<typeof createVuetify>;
5
- }>;
6
- export default plugin;
@@ -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,6 +0,0 @@
1
- import type { createVuetify } from 'vuetify';
2
- import type { Plugin } from '#app';
3
- declare const plugin: Plugin<{
4
- vuetify: ReturnType<typeof createVuetify>;
5
- }>;
6
- 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;