create-vuetify 2.3.1 → 2.5.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.
Files changed (42) hide show
  1. package/README.md +10 -3
  2. package/dist/index.mjs +1704 -137
  3. package/package.json +27 -29
  4. package/template/javascript/base/eslint.config.js +1 -23
  5. package/template/javascript/base/package.json +5 -9
  6. package/template/javascript/base/src/components/HelloWorld.vue +42 -109
  7. package/template/javascript/base/src/router/index.js +0 -1
  8. package/template/javascript/base/vite.config.mjs +24 -9
  9. package/template/javascript/default/package.json +11 -11
  10. package/template/javascript/default/src/components/AppFooter.vue +6 -3
  11. package/template/javascript/default/src/components/HelloWorld.vue +41 -108
  12. package/template/javascript/default/src/main.js +3 -0
  13. package/template/javascript/default/vite.config.mjs +18 -9
  14. package/template/javascript/essentials/_eslintrc-auto-import.json +11 -1
  15. package/template/javascript/essentials/package.json +3 -3
  16. package/template/javascript/essentials/src/layouts/README.md +1 -1
  17. package/template/javascript/essentials/vite.config.mjs +20 -4
  18. package/template/typescript/base/eslint.config.js +1 -36
  19. package/template/typescript/base/package.json +4 -9
  20. package/template/typescript/base/src/components/HelloWorld.vue +42 -109
  21. package/template/typescript/base/vite.config.mts +28 -9
  22. package/template/typescript/default/README.md +1 -1
  23. package/template/typescript/default/package.json +13 -15
  24. package/template/typescript/default/src/components/HelloWorld.vue +41 -108
  25. package/template/typescript/default/src/main.ts +3 -0
  26. package/template/typescript/default/vite.config.mts +16 -7
  27. package/template/typescript/essentials/_eslintrc-auto-import.json +13 -0
  28. package/template/typescript/essentials/env.d.ts +1 -1
  29. package/template/typescript/essentials/package.json +3 -3
  30. package/template/typescript/essentials/src/auto-imports.d.ts +16 -66
  31. package/template/typescript/essentials/src/components/AppFooter.vue +6 -3
  32. package/template/typescript/essentials/src/layouts/README.md +1 -1
  33. package/template/typescript/essentials/vite.config.mts +25 -8
  34. package/template/typescript/nuxt/assets/logo.png +0 -0
  35. package/template/typescript/nuxt/assets/logo.svg +6 -0
  36. package/template/typescript/nuxt/components/AppFooter.vue +38 -35
  37. package/template/typescript/nuxt/components/HelloWorld.vue +44 -107
  38. package/template/typescript/nuxt/modules/vuetify.ts +35 -10
  39. package/template/typescript/nuxt/pages/index.vue +0 -1
  40. package/template/typescript/nuxt/plugins/vuetify-nuxt.ts +2 -2
  41. package/template/typescript/nuxt/plugins/vuetify.ts +1 -1
  42. package/dist/output.cjs +0 -303
@@ -2,7 +2,7 @@
2
2
  import Components from 'unplugin-vue-components/vite'
3
3
  import Vue from '@vitejs/plugin-vue'
4
4
  import Vuetify, { transformAssetUrls } from 'vite-plugin-vuetify'
5
- import ViteFonts from 'unplugin-fonts/vite'
5
+ import Fonts from 'unplugin-fonts/vite'
6
6
 
7
7
  // Utilities
8
8
  import { defineConfig } from 'vite'
@@ -12,24 +12,30 @@ import { fileURLToPath, URL } from 'node:url'
12
12
  export default defineConfig({
13
13
  plugins: [
14
14
  Vue({
15
- template: { transformAssetUrls }
15
+ template: { transformAssetUrls },
16
16
  }),
17
17
  // https://github.com/vuetifyjs/vuetify-loader/tree/master/packages/vite-plugin#readme
18
18
  Vuetify(),
19
19
  Components(),
20
- ViteFonts({
21
- google: {
22
- families: [{
23
- name: 'Roboto',
24
- styles: 'wght@100;300;400;500;700;900',
25
- }],
20
+ Fonts({
21
+ fontsource: {
22
+ families: [
23
+ {
24
+ name: 'Roboto',
25
+ weights: [100, 300, 400, 500, 700, 900],
26
+ styles: ['normal', 'italic'],
27
+ },
28
+ ],
26
29
  },
27
30
  }),
28
31
  ],
32
+ optimizeDeps: {
33
+ exclude: ['vuetify'],
34
+ },
29
35
  define: { 'process.env': {} },
30
36
  resolve: {
31
37
  alias: {
32
- '@': fileURLToPath(new URL('./src', import.meta.url))
38
+ '@': fileURLToPath(new URL('./src', import.meta.url)),
33
39
  },
34
40
  extensions: [
35
41
  '.js',
@@ -49,6 +55,9 @@ export default defineConfig({
49
55
  sass: {
50
56
  api: 'modern-compiler',
51
57
  },
58
+ scss: {
59
+ api:'modern-compiler',
60
+ },
52
61
  },
53
62
  },
54
63
  })
@@ -3,13 +3,18 @@
3
3
  "Component": true,
4
4
  "ComponentPublicInstance": true,
5
5
  "ComputedRef": true,
6
+ "DirectiveBinding": true,
6
7
  "EffectScope": true,
7
8
  "ExtractDefaultPropTypes": true,
8
9
  "ExtractPropTypes": true,
9
10
  "ExtractPublicPropTypes": true,
10
11
  "InjectionKey": true,
12
+ "MaybeRef": true,
13
+ "MaybeRefOrGetter": true,
11
14
  "PropType": true,
12
15
  "Ref": true,
16
+ "Slot": true,
17
+ "Slots": true,
13
18
  "VNode": true,
14
19
  "WritableComputedRef": true,
15
20
  "computed": true,
@@ -17,6 +22,7 @@
17
22
  "customRef": true,
18
23
  "defineAsyncComponent": true,
19
24
  "defineComponent": true,
25
+ "defineStore": true,
20
26
  "effectScope": true,
21
27
  "getCurrentInstance": true,
22
28
  "getCurrentScope": true,
@@ -43,6 +49,7 @@
43
49
  "onServerPrefetch": true,
44
50
  "onUnmounted": true,
45
51
  "onUpdated": true,
52
+ "onWatcherCleanup": true,
46
53
  "provide": true,
47
54
  "reactive": true,
48
55
  "readonly": true,
@@ -51,6 +58,7 @@
51
58
  "shallowReactive": true,
52
59
  "shallowReadonly": true,
53
60
  "shallowRef": true,
61
+ "storeToRefs": true,
54
62
  "toRaw": true,
55
63
  "toRef": true,
56
64
  "toRefs": true,
@@ -60,10 +68,12 @@
60
68
  "useAttrs": true,
61
69
  "useCssModule": true,
62
70
  "useCssVars": true,
63
- "useLink": true,
71
+ "useId": true,
72
+ "useModel": true,
64
73
  "useRoute": true,
65
74
  "useRouter": true,
66
75
  "useSlots": true,
76
+ "useTemplateRef": true,
67
77
  "watch": true,
68
78
  "watchEffect": true,
69
79
  "watchPostEffect": true,
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "devDependencies": {
3
- "pinia" : "^2.1.7",
4
- "unplugin-auto-import": "^0.17.6",
5
- "vite-plugin-vue-layouts": "^0.11.0"
3
+ "pinia" : "^3.0.1",
4
+ "unplugin-auto-import": "^19.1.1",
5
+ "vite-plugin-vue-layouts-next": "^0.0.8"
6
6
  }
7
7
  }
@@ -2,4 +2,4 @@
2
2
 
3
3
  Layouts are reusable components that wrap around pages. They are used to provide a consistent look and feel across multiple pages.
4
4
 
5
- Full documentation for this feature can be found in the Official [vite-plugin-vue-layouts](https://github.com/JohnCampionJr/vite-plugin-vue-layouts) repository.
5
+ Full documentation for this feature can be found in the Official [vite-plugin-vue-layouts-next](https://github.com/loicduong/vite-plugin-vue-layouts-next) repository.
@@ -2,9 +2,10 @@
2
2
  import AutoImport from 'unplugin-auto-import/vite'
3
3
  import Components from 'unplugin-vue-components/vite'
4
4
  import Fonts from 'unplugin-fonts/vite'
5
- import Layouts from 'vite-plugin-vue-layouts'
5
+ import Layouts from 'vite-plugin-vue-layouts-next'
6
6
  import Vue from '@vitejs/plugin-vue'
7
7
  import VueRouter from 'unplugin-vue-router/vite'
8
+ import { VueRouterAutoImports } from 'unplugin-vue-router'
8
9
  import Vuetify, { transformAssetUrls } from 'vite-plugin-vuetify'
9
10
 
10
11
  // Utilities
@@ -17,7 +18,7 @@ export default defineConfig({
17
18
  VueRouter(),
18
19
  Layouts(),
19
20
  Vue({
20
- template: { transformAssetUrls }
21
+ template: { transformAssetUrls },
21
22
  }),
22
23
  // https://github.com/vuetifyjs/vuetify-loader/tree/master/packages/vite-plugin#readme
23
24
  Vuetify({
@@ -38,7 +39,10 @@ export default defineConfig({
38
39
  AutoImport({
39
40
  imports: [
40
41
  'vue',
41
- 'vue-router',
42
+ VueRouterAutoImports,
43
+ {
44
+ 'pinia': ['defineStore', 'storeToRefs'],
45
+ },
42
46
  ],
43
47
  eslintrc: {
44
48
  enabled: true,
@@ -46,10 +50,19 @@ export default defineConfig({
46
50
  vueTemplate: true,
47
51
  }),
48
52
  ],
53
+ optimizeDeps: {
54
+ exclude: [
55
+ 'vuetify',
56
+ 'vue-router',
57
+ 'unplugin-vue-router/runtime',
58
+ 'unplugin-vue-router/data-loaders',
59
+ 'unplugin-vue-router/data-loaders/basic',
60
+ ],
61
+ },
49
62
  define: { 'process.env': {} },
50
63
  resolve: {
51
64
  alias: {
52
- '@': fileURLToPath(new URL('./src', import.meta.url))
65
+ '@': fileURLToPath(new URL('./src', import.meta.url)),
53
66
  },
54
67
  extensions: [
55
68
  '.js',
@@ -69,6 +82,9 @@ export default defineConfig({
69
82
  sass: {
70
83
  api: 'modern-compiler',
71
84
  },
85
+ scss: {
86
+ api: 'modern-compiler',
87
+ },
72
88
  },
73
89
  },
74
90
  })
@@ -1,36 +1 @@
1
- /**
2
- * .eslint.js
3
- *
4
- * ESLint configuration file.
5
- */
6
-
7
- import pluginVue from 'eslint-plugin-vue'
8
- import vueTsEslintConfig from '@vue/eslint-config-typescript'
9
-
10
- export default [
11
- {
12
- name: 'app/files-to-lint',
13
- files: ['**/*.{ts,mts,tsx,vue}'],
14
- },
15
-
16
- {
17
- name: 'app/files-to-ignore',
18
- ignores: ['**/dist/**', '**/dist-ssr/**', '**/coverage/**'],
19
- },
20
-
21
- ...pluginVue.configs['flat/recommended'],
22
- ...vueTsEslintConfig(),
23
-
24
- {
25
- rules: {
26
- '@typescript-eslint/no-unused-expressions': [
27
- 'error',
28
- {
29
- allowShortCircuit: true,
30
- allowTernary: true,
31
- },
32
- ],
33
- 'vue/multi-word-component-names': 'off',
34
- }
35
- }
36
- ]
1
+ export { default } from 'eslint-config-vuetify/index.ts.mjs'
@@ -2,15 +2,10 @@
2
2
  "scripts": {
3
3
  "lint": "eslint . --fix"
4
4
  },
5
- "dependencies": {
6
- "core-js": "^3.37.1"
7
- },
8
5
  "devDependencies": {
9
- "@eslint/js": "^9.14.0",
10
- "@vue/eslint-config-typescript": "^14.1.3",
11
- "eslint": "^9.14.0",
12
- "eslint-plugin-vue": "^9.30.0",
13
- "vue-router": "^4.4.0",
14
- "unplugin-vue-router": "^0.10.0"
6
+ "eslint": "^9.23.0",
7
+ "eslint-config-vuetify": "^3.0.3",
8
+ "vue-router": "^4.5.0",
9
+ "unplugin-vue-router": "^0.12.0"
15
10
  }
16
11
  }
@@ -1,23 +1,17 @@
1
1
  <template>
2
- <v-container class="fill-height">
3
- <v-responsive
4
- class="align-centerfill-height mx-auto"
5
- max-width="900"
6
- >
2
+ <v-container class="fill-height" max-width="900">
3
+ <div>
7
4
  <v-img
8
5
  class="mb-4"
9
6
  height="150"
10
7
  src="@/assets/logo.png"
11
8
  />
12
9
 
13
- <div class="text-center">
10
+ <div class="mb-8 text-center">
14
11
  <div class="text-body-2 font-weight-light mb-n1">Welcome to</div>
15
-
16
12
  <h1 class="text-h2 font-weight-bold">Vuetify</h1>
17
13
  </div>
18
14
 
19
- <div class="py-4" />
20
-
21
15
  <v-row>
22
16
  <v-col cols="12">
23
17
  <v-card
@@ -26,132 +20,71 @@
26
20
  image="https://cdn.vuetifyjs.com/docs/images/one/create/feature.png"
27
21
  prepend-icon="mdi-rocket-launch-outline"
28
22
  rounded="lg"
29
- variant="outlined"
23
+ variant="tonal"
30
24
  >
31
25
  <template #image>
32
26
  <v-img position="top right" />
33
27
  </template>
34
28
 
35
29
  <template #title>
36
- <h2 class="text-h5 font-weight-bold">Get started</h2>
30
+ <h2 class="text-h5 font-weight-bold">
31
+ Get started
32
+ </h2>
37
33
  </template>
38
34
 
39
35
  <template #subtitle>
40
36
  <div class="text-subtitle-1">
41
- Replace this page by removing <v-kbd>{{ `<HelloWorld />` }}</v-kbd> in <v-kbd>pages/index.vue</v-kbd>.
37
+ Change this page by updating <v-kbd>{{ `<HelloWorld />` }}</v-kbd> in <v-kbd>components/HelloWorld.vue</v-kbd>.
42
38
  </div>
43
39
  </template>
44
-
45
- <v-overlay
46
- opacity=".12"
47
- scrim="primary"
48
- contained
49
- model-value
50
- persistent
51
- />
52
- </v-card>
53
- </v-col>
54
-
55
- <v-col cols="6">
56
- <v-card
57
- append-icon="mdi-open-in-new"
58
- class="py-4"
59
- color="surface-variant"
60
- href="https://vuetifyjs.com/"
61
- prepend-icon="mdi-text-box-outline"
62
- rel="noopener noreferrer"
63
- rounded="lg"
64
- subtitle="Learn about all things Vuetify in our documentation."
65
- target="_blank"
66
- title="Documentation"
67
- variant="text"
68
- >
69
- <v-overlay
70
- opacity=".06"
71
- scrim="primary"
72
- contained
73
- model-value
74
- persistent
75
- />
76
- </v-card>
77
- </v-col>
78
-
79
- <v-col cols="6">
80
- <v-card
81
- append-icon="mdi-open-in-new"
82
- class="py-4"
83
- color="surface-variant"
84
- href="https://vuetifyjs.com/introduction/why-vuetify/#feature-guides"
85
- prepend-icon="mdi-star-circle-outline"
86
- rel="noopener noreferrer"
87
- rounded="lg"
88
- subtitle="Explore available framework Features."
89
- target="_blank"
90
- title="Features"
91
- variant="text"
92
- >
93
- <v-overlay
94
- opacity=".06"
95
- scrim="primary"
96
- contained
97
- model-value
98
- persistent
99
- />
100
40
  </v-card>
101
41
  </v-col>
102
42
 
103
- <v-col cols="6">
43
+ <v-col v-for="link in links" :key="link.href" cols="6">
104
44
  <v-card
105
45
  append-icon="mdi-open-in-new"
106
46
  class="py-4"
107
47
  color="surface-variant"
108
- href="https://vuetifyjs.com/components/all"
109
- prepend-icon="mdi-widgets-outline"
48
+ :href="link.href"
49
+ :prepend-icon="link.icon"
110
50
  rel="noopener noreferrer"
111
51
  rounded="lg"
112
- subtitle="Discover components in the API Explorer."
52
+ :subtitle="link.subtitle"
113
53
  target="_blank"
114
- title="Components"
115
- variant="text"
116
- >
117
- <v-overlay
118
- opacity=".06"
119
- scrim="primary"
120
- contained
121
- model-value
122
- persistent
123
- />
124
- </v-card>
125
- </v-col>
126
-
127
- <v-col cols="6">
128
- <v-card
129
- append-icon="mdi-open-in-new"
130
- class="py-4"
131
- color="surface-variant"
132
- href="https://discord.vuetifyjs.com"
133
- prepend-icon="mdi-account-group-outline"
134
- rel="noopener noreferrer"
135
- rounded="lg"
136
- subtitle="Connect with Vuetify developers."
137
- target="_blank"
138
- title="Community"
139
- variant="text"
140
- >
141
- <v-overlay
142
- opacity=".06"
143
- scrim="primary"
144
- contained
145
- model-value
146
- persistent
147
- />
148
- </v-card>
54
+ :title="link.title"
55
+ variant="tonal"
56
+ />
149
57
  </v-col>
150
58
  </v-row>
151
- </v-responsive>
59
+ </div>
152
60
  </v-container>
153
61
  </template>
154
62
 
155
63
  <script setup lang="ts">
156
- //
64
+ const links = [
65
+ {
66
+ href: 'https://vuetifyjs.com/',
67
+ icon: 'mdi-text-box-outline',
68
+ subtitle: 'Learn about all things Vuetify in our documentation.',
69
+ title: 'Documentation',
70
+ },
71
+ {
72
+ href: 'https://vuetifyjs.com/introduction/why-vuetify/#feature-guides',
73
+ icon: 'mdi-star-circle-outline',
74
+ subtitle: 'Explore available framework Features.',
75
+ title: 'Features',
76
+ },
77
+ {
78
+ href: 'https://vuetifyjs.com/components/all',
79
+ icon: 'mdi-widgets-outline',
80
+ subtitle: 'Discover components in the API Explorer.',
81
+ title: 'Components',
82
+ },
83
+ {
84
+ href: 'https://discord.vuetifyjs.com',
85
+ icon: 'mdi-account-group-outline',
86
+ subtitle: 'Connect with Vuetify developers.',
87
+ title: 'Community',
88
+ },
89
+ ]
157
90
  </script>
@@ -2,7 +2,7 @@
2
2
  import Components from 'unplugin-vue-components/vite'
3
3
  import Vue from '@vitejs/plugin-vue'
4
4
  import Vuetify, { transformAssetUrls } from 'vite-plugin-vuetify'
5
- import ViteFonts from 'unplugin-fonts/vite'
5
+ import Fonts from 'unplugin-fonts/vite'
6
6
  import VueRouter from 'unplugin-vue-router/vite'
7
7
 
8
8
  // Utilities
@@ -12,7 +12,9 @@ import { fileURLToPath, URL } from 'node:url'
12
12
  // https://vitejs.dev/config/
13
13
  export default defineConfig({
14
14
  plugins: [
15
- VueRouter(),
15
+ VueRouter({
16
+ dts: 'src/typed-router.d.ts',
17
+ }),
16
18
  Vue({
17
19
  template: { transformAssetUrls },
18
20
  }),
@@ -23,16 +25,30 @@ export default defineConfig({
23
25
  configFile: 'src/styles/settings.scss',
24
26
  },
25
27
  }),
26
- Components(),
27
- ViteFonts({
28
- google: {
29
- families: [ {
30
- name: 'Roboto',
31
- styles: 'wght@100;300;400;500;700;900',
32
- }],
28
+ Components({
29
+ dts: 'src/components.d.ts',
30
+ }),
31
+ Fonts({
32
+ fontsource: {
33
+ families: [
34
+ {
35
+ name: "Roboto",
36
+ weights: [100, 300, 400, 500, 700, 900],
37
+ styles: ["normal", "italic"],
38
+ },
39
+ ],
33
40
  },
34
41
  }),
35
42
  ],
43
+ optimizeDeps: {
44
+ exclude: [
45
+ 'vuetify',
46
+ 'vue-router',
47
+ 'unplugin-vue-router/runtime',
48
+ 'unplugin-vue-router/data-loaders',
49
+ 'unplugin-vue-router/data-loaders/basic',
50
+ ],
51
+ },
36
52
  define: { 'process.env': {} },
37
53
  resolve: {
38
54
  alias: {
@@ -56,6 +72,9 @@ export default defineConfig({
56
72
  sass: {
57
73
  api: 'modern-compiler',
58
74
  },
75
+ scss: {
76
+ api: 'modern-compiler',
77
+ },
59
78
  },
60
79
  },
61
80
  })
@@ -27,7 +27,7 @@ After completing the installation, your environment is ready for Vuetify develop
27
27
 
28
28
  - 🖼️ **Optimized Front-End Stack**: Leverage the latest Vue 3 and Vuetify 3 for a modern, reactive UI development experience. [Vue 3](https://v3.vuejs.org/) | [Vuetify 3](https://vuetifyjs.com/en/)
29
29
  - 🗃️ **State Management**: Integrated with [Pinia](https://pinia.vuejs.org/), the intuitive, modular state management solution for Vue.
30
- - 🚦 **Routing and Layouts**: Utilizes Vue Router for SPA navigation and vite-plugin-vue-layouts for organizing Vue file layouts. [Vue Router](https://router.vuejs.org/) | [vite-plugin-vue-layouts](https://github.com/JohnCampionJr/vite-plugin-vue-layouts)
30
+ - 🚦 **Routing and Layouts**: Utilizes Vue Router for SPA navigation and vite-plugin-vue-layouts-next for organizing Vue file layouts. [Vue Router](https://router.vuejs.org/) | [vite-plugin-vue-layouts-next](https://github.com/loicduong/vite-plugin-vue-layouts-next)
31
31
  - 💻 **Enhanced Development Experience**: Benefit from TypeScript's static type checking and the ESLint plugin suite for Vue, ensuring code quality and consistency. [TypeScript](https://www.typescriptlang.org/) | [ESLint Plugin Vue](https://eslint.vuejs.org/)
32
32
  - ⚡ **Next-Gen Tooling**: Powered by Vite, experience fast cold starts and instant HMR (Hot Module Replacement). [Vite](https://vitejs.dev/)
33
33
  - 🧩 **Automated Component Importing**: Streamline your workflow with unplugin-vue-components, automatically importing components as you use them. [unplugin-vue-components](https://github.com/antfu/unplugin-vue-components)
@@ -11,24 +11,22 @@
11
11
  },
12
12
  "dependencies": {
13
13
  "@mdi/font": "7.4.47",
14
- "roboto-fontface": "*",
15
- "vue": "^3.4.31",
16
- "vuetify": "^3.6.14"
14
+ "@fontsource/roboto": "5.2.5",
15
+ "vue": "^3.5.13",
16
+ "vuetify": "^3.8.1"
17
17
  },
18
18
  "devDependencies": {
19
19
  "@tsconfig/node22": "^22.0.0",
20
20
  "@types/node": "^22.9.0",
21
- "@vitejs/plugin-vue": "^5.1.4",
22
- "@vue/eslint-config-typescript": "^14.1.3",
23
- "@vue/tsconfig": "^0.5.1",
24
- "npm-run-all2": "^7.0.1",
25
- "sass": "1.77.8",
26
- "sass-embedded": "^1.77.8",
27
- "typescript": "~5.6.3",
28
- "unplugin-fonts": "^1.1.1",
29
- "unplugin-vue-components": "^0.27.2",
30
- "vite-plugin-vuetify": "^2.0.3",
31
- "vite": "^5.4.10",
32
- "vue-tsc": "^2.1.10"
21
+ "@vitejs/plugin-vue": "^5.2.3",
22
+ "@vue/tsconfig": "^0.7.0",
23
+ "npm-run-all2": "^7.0.2",
24
+ "sass-embedded": "^1.86.3",
25
+ "typescript": "~5.8.2",
26
+ "unplugin-fonts": "^1.3.1",
27
+ "unplugin-vue-components": "^28.4.1",
28
+ "vite-plugin-vuetify": "^2.1.1",
29
+ "vite": "^6.2.2",
30
+ "vue-tsc": "^2.2.8"
33
31
  }
34
32
  }