create-vuetify 2.3.0 → 2.4.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.
Files changed (42) hide show
  1. package/dist/index.mjs +1110 -127
  2. package/package.json +20 -25
  3. package/template/javascript/base/eslint.config.js +1 -23
  4. package/template/javascript/base/package.json +5 -9
  5. package/template/javascript/base/src/components/HelloWorld.vue +42 -109
  6. package/template/javascript/base/src/router/index.js +0 -1
  7. package/template/javascript/base/vite.config.mjs +14 -2
  8. package/template/javascript/default/package.json +10 -10
  9. package/template/javascript/default/src/components/AppFooter.vue +6 -3
  10. package/template/javascript/default/src/components/HelloWorld.vue +41 -108
  11. package/template/javascript/default/vite.config.mjs +8 -2
  12. package/template/javascript/essentials/_eslintrc-auto-import.json +11 -1
  13. package/template/javascript/essentials/package.json +3 -3
  14. package/template/javascript/essentials/src/App.vue +9 -0
  15. package/template/javascript/essentials/src/layouts/README.md +1 -1
  16. package/template/javascript/essentials/src/layouts/default.vue +4 -6
  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 +13 -1
  22. package/template/typescript/default/README.md +1 -1
  23. package/template/typescript/default/package.json +12 -14
  24. package/template/typescript/default/src/components/HelloWorld.vue +41 -108
  25. package/template/typescript/default/vite.config.mts +6 -0
  26. package/template/typescript/essentials/_eslintrc-auto-import.json +13 -0
  27. package/template/typescript/essentials/env.d.ts +1 -1
  28. package/template/typescript/essentials/package.json +3 -3
  29. package/template/typescript/essentials/src/App.vue +9 -0
  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/src/layouts/default.vue +4 -6
  34. package/template/typescript/essentials/vite.config.mts +18 -4
  35. package/template/typescript/nuxt/assets/logo.png +0 -0
  36. package/template/typescript/nuxt/assets/logo.svg +6 -0
  37. package/template/typescript/nuxt/components/AppFooter.vue +38 -35
  38. package/template/typescript/nuxt/components/HelloWorld.vue +44 -107
  39. package/template/typescript/nuxt/modules/vuetify.ts +35 -10
  40. package/template/typescript/nuxt/pages/index.vue +0 -1
  41. package/template/typescript/nuxt/plugins/vuetify-nuxt.ts +2 -2
  42. package/template/typescript/nuxt/plugins/vuetify.ts +1 -1
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "create-vuetify",
3
- "version": "2.3.0",
3
+ "version": "2.4.0",
4
4
  "author": "Elijah Kotyluk <elijah@elijahkotyluk.com>",
5
5
  "license": "MIT",
6
6
  "type": "module",
@@ -22,35 +22,30 @@
22
22
  "scripts": {
23
23
  "build": "node ./scripts/build.js",
24
24
  "start": "node ./index.js",
25
- "lint": "eslint --fix ./src/**",
26
- "prepublishOnly": "npm run build"
25
+ "dev": "node --run build && node --run start",
26
+ "lint": "eslint --fix .",
27
+ "prepublishOnly": "node --run build"
27
28
  },
28
29
  "dependencies": {
29
- "kolorist": "^1.5.1",
30
- "minimist": "^1.2.6",
31
- "magicast": "^0.3.4",
32
- "package-manager-detector": "^0.2.2",
30
+ "kolorist": "^1.8.0",
31
+ "magicast": "^0.3.5",
32
+ "minimist": "^1.2.8",
33
+ "package-manager-detector": "^1.0.0",
33
34
  "prompts": "^2.4.2",
34
- "validate-npm-package-name": "^4.0.0"
35
+ "validate-npm-package-name": "^6.0.0"
35
36
  },
36
37
  "devDependencies": {
37
- "@release-it/conventional-changelog": "^8.0.1",
38
- "@types/minimist": "^1.2.2",
39
- "@types/node": "^20.12.8",
40
- "@types/prompts": "^2.0.14",
41
- "@types/validate-npm-package-name": "^4.0.0",
42
- "@typescript-eslint/eslint-plugin": "^5.30.6",
43
- "@typescript-eslint/parser": "^5.30.6",
44
- "esbuild": "^0.14.47",
45
- "esbuild-jest": "^0.5.0",
46
- "eslint": "^8.41.0",
47
- "eslint-plugin-jest": "^26.5.3",
48
- "eslint-plugin-local-rules": "^1.3.0",
49
- "eslint-plugin-lodash-template": "^0.21.0",
50
- "husky": "^8.0.1",
51
- "lint-staged": "^13.0.3",
52
- "release-it": "^17.0.3",
53
- "typescript": "^4.7.4"
38
+ "@release-it/conventional-changelog": "^10.0.0",
39
+ "@types/minimist": "^1.2.5",
40
+ "@types/node": "^22.13.10",
41
+ "@types/prompts": "^2.4.9",
42
+ "@types/validate-npm-package-name": "^4.0.2",
43
+ "esbuild": "^0.25.1",
44
+ "eslint": "^9.23.0",
45
+ "eslint-config-vuetify": "^3.0.3",
46
+ "nypm": "^0.6.0",
47
+ "release-it": "^18.1.2",
48
+ "typescript": "^5.8.2"
54
49
  },
55
50
  "packageManager": "pnpm@9.12.2+sha512.22721b3a11f81661ae1ec68ce1a7b879425a1ca5b991c975b074ac220b187ce56c708fe5db69f4c962c989452eee76c82877f4ee80f474cebd61ee13461b6228"
56
51
  }
@@ -1,23 +1 @@
1
- import js from '@eslint/js'
2
- import pluginVue from 'eslint-plugin-vue'
3
-
4
- export default [
5
- {
6
- name: 'app/files-to-lint',
7
- files: ['**/*.{js,mjs,jsx,vue}'],
8
- },
9
-
10
- {
11
- name: 'app/files-to-ignore',
12
- ignores: ['**/dist/**', '**/dist-ssr/**', '**/coverage/**'],
13
- },
14
-
15
- js.configs.recommended,
16
- ...pluginVue.configs['flat/recommended'],
17
-
18
- {
19
- rules: {
20
- 'vue/multi-word-component-names': 'off',
21
- },
22
- }
23
- ]
1
+ export { default } from 'eslint-config-vuetify'
@@ -3,14 +3,10 @@
3
3
  "lint": "eslint . --fix"
4
4
  },
5
5
  "devDependencies": {
6
- "@eslint/js": "^9.14.0",
7
- "eslint": "^9.14.0",
8
- "eslint-plugin-import": "^2.29.1",
9
- "eslint-plugin-n": "^16.6.2",
10
- "eslint-plugin-node": "^11.1.0",
11
- "eslint-plugin-promise": "^6.4.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
+ "globals": "^16.0.0",
9
+ "vue-router": "^4.5.0",
10
+ "unplugin-vue-router": "^0.12.0"
15
11
  }
16
12
  }
@@ -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>
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>
@@ -1,4 +1,3 @@
1
-
2
1
  /**
3
2
  * router/index.ts
4
3
  *
@@ -14,7 +14,7 @@ export default defineConfig({
14
14
  plugins: [
15
15
  VueRouter(),
16
16
  Vue({
17
- template: { transformAssetUrls }
17
+ template: { transformAssetUrls },
18
18
  }),
19
19
  // https://github.com/vuetifyjs/vuetify-loader/tree/master/packages/vite-plugin#readme
20
20
  Vuetify({
@@ -33,10 +33,19 @@ export default defineConfig({
33
33
  },
34
34
  }),
35
35
  ],
36
+ optimizeDeps: {
37
+ exclude: [
38
+ 'vuetify',
39
+ 'vue-router',
40
+ 'unplugin-vue-router/runtime',
41
+ 'unplugin-vue-router/data-loaders',
42
+ 'unplugin-vue-router/data-loaders/basic',
43
+ ],
44
+ },
36
45
  define: { 'process.env': {} },
37
46
  resolve: {
38
47
  alias: {
39
- '@': fileURLToPath(new URL('./src', import.meta.url))
48
+ '@': fileURLToPath(new URL('./src', import.meta.url)),
40
49
  },
41
50
  extensions: [
42
51
  '.js',
@@ -56,6 +65,9 @@ export default defineConfig({
56
65
  sass: {
57
66
  api: 'modern-compiler',
58
67
  },
68
+ scss: {
69
+ api: 'modern-compiler',
70
+ },
59
71
  },
60
72
  },
61
73
  })
@@ -10,16 +10,16 @@
10
10
  "dependencies": {
11
11
  "@mdi/font": "7.4.47",
12
12
  "roboto-fontface": "*",
13
- "vue": "^3.4.31",
14
- "vuetify": "^3.6.14"
13
+ "vue": "^3.5.13",
14
+ "vuetify": "^3.8.1"
15
15
  },
16
16
  "devDependencies": {
17
- "@vitejs/plugin-vue": "^5.0.5",
18
- "sass": "1.77.8",
19
- "sass-embedded": "^1.77.8",
20
- "unplugin-fonts": "^1.1.1",
21
- "unplugin-vue-components": "^0.27.2",
22
- "vite-plugin-vuetify": "^2.0.3",
23
- "vite": "^5.4.0"
17
+ "@vitejs/plugin-vue": "^5.2.3",
18
+ "globals": "^16.0.0",
19
+ "sass-embedded": "^1.86.3",
20
+ "unplugin-fonts": "^1.3.1",
21
+ "unplugin-vue-components": "^28.4.1",
22
+ "vite-plugin-vuetify": "^2.1.1",
23
+ "vite": "^6.2.2"
24
24
  }
25
- }
25
+ }
@@ -1,13 +1,16 @@
1
1
  <template>
2
- <v-footer height="40" app>
2
+ <v-footer
3
+ app
4
+ height="40"
5
+ >
3
6
  <a
4
7
  v-for="item in items"
5
8
  :key="item.title"
6
- :href="item.href"
7
- :title="item.title"
8
9
  class="d-inline-block mx-2 social-link"
10
+ :href="item.href"
9
11
  rel="noopener noreferrer"
10
12
  target="_blank"
13
+ :title="item.title"
11
14
  >
12
15
  <v-icon
13
16
  :icon="item.icon"
@@ -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,14 +20,16 @@
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>
@@ -41,117 +37,54 @@
41
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>
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>
@@ -12,7 +12,7 @@ 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(),
@@ -26,10 +26,13 @@ export default defineConfig({
26
26
  },
27
27
  }),
28
28
  ],
29
+ optimizeDeps: {
30
+ exclude: ['vuetify'],
31
+ },
29
32
  define: { 'process.env': {} },
30
33
  resolve: {
31
34
  alias: {
32
- '@': fileURLToPath(new URL('./src', import.meta.url))
35
+ '@': fileURLToPath(new URL('./src', import.meta.url)),
33
36
  },
34
37
  extensions: [
35
38
  '.js',
@@ -49,6 +52,9 @@ export default defineConfig({
49
52
  sass: {
50
53
  api: 'modern-compiler',
51
54
  },
55
+ scss: {
56
+ api:'modern-compiler',
57
+ },
52
58
  },
53
59
  },
54
60
  })