vuetify-nuxt-module 0.13.2 → 0.13.4

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 CHANGED
@@ -59,7 +59,7 @@ interface FontIconSet {
59
59
  /**
60
60
  * Use CDN?
61
61
  *
62
- * - mdi: https://cdn.jsdelivr.net/npm/@mdi/font@latest/css/materialdesignicons
62
+ * - mdi: https://cdn.jsdelivr.net/npm/@mdi/font@5.x/css/materialdesignicons.min.css
63
63
  * - md: https://fonts.googleapis.com/css?family=Material+Icons
64
64
  * - fa: https://cdn.jsdelivr.net/npm/@fortawesome/fontawesome-free@latest/css/all.min.css
65
65
  * - fa4: https://cdn.jsdelivr.net/npm/font-awesome@4.x/css/font-awesome.min.css
@@ -209,7 +209,7 @@ interface VOptions extends Partial<Omit<VuetifyOptions, 'ssr' | 'aliases' | 'com
209
209
  /**
210
210
  * Include the icons?
211
211
  *
212
- * By default, `mdi` icons will be used via cdn: https://cdn.jsdelivr.net/npm/@mdi/font@latest/css/materialdesignicons.min.css.
212
+ * By default, `mdi` icons will be used via cdn: https://cdn.jsdelivr.net/npm/@mdi/font@5.x/css/materialdesignicons.min.css.
213
213
  *
214
214
  * @see https://vuetifyjs.com/en/features/icon-fonts/
215
215
  */
package/dist/module.d.ts CHANGED
@@ -59,7 +59,7 @@ interface FontIconSet {
59
59
  /**
60
60
  * Use CDN?
61
61
  *
62
- * - mdi: https://cdn.jsdelivr.net/npm/@mdi/font@latest/css/materialdesignicons
62
+ * - mdi: https://cdn.jsdelivr.net/npm/@mdi/font@5.x/css/materialdesignicons.min.css
63
63
  * - md: https://fonts.googleapis.com/css?family=Material+Icons
64
64
  * - fa: https://cdn.jsdelivr.net/npm/@fortawesome/fontawesome-free@latest/css/all.min.css
65
65
  * - fa4: https://cdn.jsdelivr.net/npm/font-awesome@4.x/css/font-awesome.min.css
@@ -209,7 +209,7 @@ interface VOptions extends Partial<Omit<VuetifyOptions, 'ssr' | 'aliases' | 'com
209
209
  /**
210
210
  * Include the icons?
211
211
  *
212
- * By default, `mdi` icons will be used via cdn: https://cdn.jsdelivr.net/npm/@mdi/font@latest/css/materialdesignicons.min.css.
212
+ * By default, `mdi` icons will be used via cdn: https://cdn.jsdelivr.net/npm/@mdi/font@5.x/css/materialdesignicons.min.css.
213
213
  *
214
214
  * @see https://vuetifyjs.com/en/features/icon-fonts/
215
215
  */
package/dist/module.json CHANGED
@@ -5,5 +5,5 @@
5
5
  "nuxt": "^3.9.0",
6
6
  "bridge": false
7
7
  },
8
- "version": "0.13.2"
8
+ "version": "0.13.4"
9
9
  }
package/dist/module.mjs CHANGED
@@ -8,13 +8,13 @@ import process from 'node:process';
8
8
  import { createConfigLoader } from 'unconfig';
9
9
  import { readFile } from 'node:fs/promises';
10
10
  import { resolveVuetifyBase, normalizePath, generateImports } from '@vuetify/loader-shared';
11
+ import { transformAssetUrls } from 'vite-plugin-vuetify';
11
12
  import { isAbsolute, join, relative as relative$1 } from 'pathe';
12
13
  import { pathToFileURL } from 'node:url';
13
14
  import { parseQuery, parseURL } from 'ufo';
14
15
  import destr from 'destr';
15
- import { transformAssetUrls } from 'vite-plugin-vuetify';
16
16
 
17
- const version = "0.13.2";
17
+ const version = "0.13.4";
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)}`;
@@ -114,9 +114,11 @@ async function mergeVuetifyModules(options, nuxt) {
114
114
  vuetifyOptions: resolvedOptions.config
115
115
  });
116
116
  if (moduleOptions.length > 1) {
117
- const [base, ...rest] = moduleOptions;
117
+ const [base, ...rest] = moduleOptions.reverse();
118
+ const configuration = defu(base, ...rest);
119
+ dedupeIcons(configuration, moduleOptions);
118
120
  return {
119
- configuration: defu(base, ...rest),
121
+ configuration,
120
122
  vuetifyConfigurationFilesToWatch
121
123
  };
122
124
  } else {
@@ -129,6 +131,30 @@ async function mergeVuetifyModules(options, nuxt) {
129
131
  };
130
132
  }
131
133
  }
134
+ function dedupeIcons(configuration, moduleOptions) {
135
+ const vuetifyOptions = configuration.vuetifyOptions;
136
+ if (vuetifyOptions.icons) {
137
+ if (vuetifyOptions.icons.sets) {
138
+ const sets = /* @__PURE__ */ new Map();
139
+ for (const { vuetifyOptions: vuetifyOptions2 } of moduleOptions) {
140
+ if (vuetifyOptions2.icons && vuetifyOptions2.icons.sets) {
141
+ const mSets = vuetifyOptions2.icons.sets;
142
+ if (typeof mSets === "string") {
143
+ sets.set(mSets, { name: mSets });
144
+ } else {
145
+ for (const set of mSets) {
146
+ if (typeof set === "string")
147
+ sets.set(set, { name: set });
148
+ else
149
+ sets.set(set.name, set);
150
+ }
151
+ }
152
+ }
153
+ }
154
+ vuetifyOptions.icons.sets = Array.from(sets.values());
155
+ }
156
+ }
157
+ }
132
158
 
133
159
  function detectDate() {
134
160
  const result = [];
@@ -1157,8 +1183,33 @@ function configureVite(configKey, nuxt, ctx) {
1157
1183
  configKey
1158
1184
  ];
1159
1185
  }
1186
+ const { includeTransformAssetsUrls, styles } = ctx.moduleOptions;
1187
+ if (includeTransformAssetsUrls) {
1188
+ viteInlineConfig.vue ??= {};
1189
+ viteInlineConfig.vue.template ??= {};
1190
+ let existingTransformAssetUrls = viteInlineConfig.vue.template.transformAssetUrls ?? {};
1191
+ let useURLOptions;
1192
+ if (typeof existingTransformAssetUrls === "boolean") {
1193
+ existingTransformAssetUrls = {};
1194
+ } else if ("base" in existingTransformAssetUrls || "includeAbsolute" in existingTransformAssetUrls || "tags" in existingTransformAssetUrls) {
1195
+ useURLOptions = {
1196
+ base: existingTransformAssetUrls.base,
1197
+ includeAbsolute: existingTransformAssetUrls.includeAbsolute
1198
+ };
1199
+ existingTransformAssetUrls = existingTransformAssetUrls.tags ?? {};
1200
+ }
1201
+ const transformAssetUrls$1 = normalizeTransformAssetUrls(
1202
+ typeof includeTransformAssetsUrls === "object" ? defu(existingTransformAssetUrls, transformAssetUrls, includeTransformAssetsUrls) : defu(existingTransformAssetUrls, transformAssetUrls)
1203
+ );
1204
+ if (useURLOptions) {
1205
+ useURLOptions.tags = transformAssetUrls$1;
1206
+ viteInlineConfig.vue.template.transformAssetUrls = useURLOptions;
1207
+ } else {
1208
+ viteInlineConfig.vue.template.transformAssetUrls = transformAssetUrls$1;
1209
+ }
1210
+ }
1160
1211
  viteInlineConfig.plugins.push(vuetifyImportPlugin({}));
1161
- viteInlineConfig.plugins.push(vuetifyStylesPlugin({ styles: ctx.moduleOptions.styles }, ctx.logger));
1212
+ viteInlineConfig.plugins.push(vuetifyStylesPlugin({ styles }, ctx.logger));
1162
1213
  viteInlineConfig.plugins.push(vuetifyConfigurationPlugin(ctx));
1163
1214
  viteInlineConfig.plugins.push(vuetifyIconsPlugin(ctx));
1164
1215
  viteInlineConfig.plugins.push(vuetifyDateConfigurationPlugin(ctx));
@@ -1225,8 +1276,7 @@ export default defineNuxtPlugin({
1225
1276
  function configureNuxt(configKey, nuxt, ctx) {
1226
1277
  const {
1227
1278
  importComposables,
1228
- prefixComposables,
1229
- includeTransformAssetsUrls = true
1279
+ prefixComposables
1230
1280
  } = ctx.moduleOptions;
1231
1281
  const runtimeDir = ctx.resolver.resolve("./runtime");
1232
1282
  nuxt.options.build.transpile.push(configKey);
@@ -1238,13 +1288,6 @@ function configureNuxt(configKey, nuxt, ctx) {
1238
1288
  nuxt.options.imports.transform.include.push(new RegExp(`${virtual}$`));
1239
1289
  nuxt.options.css ??= [];
1240
1290
  nuxt.options.css.unshift("vuetify/styles");
1241
- if (includeTransformAssetsUrls && typeof nuxt.options.vite.vue?.template?.transformAssetUrls === "undefined") {
1242
- nuxt.options.vite.vue ??= {};
1243
- nuxt.options.vite.vue.template ??= {};
1244
- nuxt.options.vite.vue.template.transformAssetUrls = normalizeTransformAssetUrls(
1245
- typeof includeTransformAssetsUrls === "object" ? defu(includeTransformAssetsUrls, transformAssetUrls) : transformAssetUrls
1246
- );
1247
- }
1248
1291
  extendWebpackConfig(() => {
1249
1292
  throw new Error("Webpack is not supported: vuetify-nuxt-module module can only be used with Vite!");
1250
1293
  });
package/package.json CHANGED
@@ -1,8 +1,8 @@
1
1
  {
2
2
  "name": "vuetify-nuxt-module",
3
3
  "type": "module",
4
- "version": "0.13.2",
5
- "packageManager": "pnpm@8.15.6",
4
+ "version": "0.13.4",
5
+ "packageManager": "pnpm@9.0.5",
6
6
  "description": "Zero-Config Nuxt Module for Vuetify",
7
7
  "author": "userquin <userquin@gmail.com>",
8
8
  "license": "MIT",