@nuxtify/pages 0.5.1 → 0.6.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/README.md CHANGED
@@ -83,7 +83,7 @@ Nuxtify Pages builds on the functionality in [Nuxtify Core](https://github.com/n
83
83
 
84
84
  - Ready to use components, page templates, and layouts so you can _ship weirdly fast_
85
85
  - Easily override any component with [Vuetify global defaults](https://vuetifyjs.com/en/features/global-configuration/)
86
- - Icons powered by [Material Design Icons](https://pictogrammers.com/library/mdi/) via [Vuetify icon fonts](https://vuetifyjs.com/en/features/icon-fonts/)
86
+ - Icons powered by [Material Design Icons](https://pictogrammers.com/library/mdi/)
87
87
  - Fully responsive and adapts to all modern browsers and devices
88
88
  - (coming soon) Light and dark mode toggle
89
89
 
package/dist/module.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@nuxtify/pages",
3
- "version": "0.5.1",
3
+ "version": "0.6.1",
4
4
  "configKey": "nuxtifyPages",
5
5
  "compatibility": {
6
6
  "nuxt": ">=4.0.0"
package/dist/module.mjs CHANGED
@@ -2,7 +2,7 @@ import { defineNuxtModule, createResolver, useLogger, addLayout, addComponentsDi
2
2
  import { defu } from 'defu';
3
3
 
4
4
  const name = "@nuxtify/pages";
5
- const version = "0.5.1";
5
+ const version = "0.6.1";
6
6
 
7
7
  const module$1 = defineNuxtModule().with({
8
8
  meta: {
@@ -15,7 +15,7 @@ const module$1 = defineNuxtModule().with({
15
15
  },
16
16
  moduleDependencies: {
17
17
  "@nuxtify/core": {
18
- version: ">=0.1.11"
18
+ version: ">=0.4.0"
19
19
  }
20
20
  },
21
21
  defaults: {
@@ -60,11 +60,6 @@ const module$1 = defineNuxtModule().with({
60
60
  addImportsDir(resolve("./runtime/composables"));
61
61
  addImportsDir(resolve("./runtime/utils"));
62
62
  extendPages((pages) => {
63
- pages.unshift({
64
- name: "index",
65
- path: "/",
66
- file: resolve("./runtime/pages/IndexPage.vue")
67
- });
68
63
  pages.unshift({
69
64
  name: "slug",
70
65
  path: "/:slug",
@@ -8,7 +8,6 @@ import {
8
8
  ref,
9
9
  submitFormData,
10
10
  useDisplay,
11
- useId,
12
11
  useNuxtifyConfig
13
12
  } from "#imports";
14
13
  const props = defineProps({
@@ -53,7 +52,6 @@ const props = defineProps({
53
52
  default: ""
54
53
  }
55
54
  });
56
- const id = useId();
57
55
  const nuxtifyConfig = useNuxtifyConfig();
58
56
  const { xs } = useDisplay();
59
57
  const form = ref();
@@ -117,76 +115,78 @@ async function handleSubmit() {
117
115
  </script>
118
116
 
119
117
  <template>
120
- <!-- Form -->
121
- <v-form
122
- v-if="!isSubmitted"
123
- ref="form"
124
- validate-on="submit"
125
- @submit.prevent="handleSubmit"
118
+ <v-card
119
+ flat
120
+ max-width="600"
121
+ width="100%"
126
122
  >
127
- <div class="d-sm-flex justify-center">
128
- <!-- Using useId prevents hydration mismatch warnings issue with Vuetify -->
129
- <!-- See: https://github.com/vuetifyjs/vuetify/issues/19696 -->
130
- <!-- Once the issue is resolved (and it's used internally in Vuetify), remove use of useId -->
131
- <v-text-field
132
- :id
133
- v-model="formInput.email"
134
- type="email"
135
- color="secondary"
136
- :placeholder="emailPlaceholder"
137
- :rules="[formRules.required, formRules.validEmail]"
138
- :rounded="xs ? 't-lg' : '0 ts-lg'"
139
- hide-details="auto"
140
- class="text-start"
141
- >
142
- <template #message="{ message }">
143
- <span :class="dark ? 'text-red-lighten-3' : ''">{{ message }}</span>
144
- </template>
145
- </v-text-field>
146
- <v-btn
147
- type="submit"
148
- variant="flat"
149
- color="secondary"
150
- size="x-large"
151
- class="d-flex align-center py-7 mt-2 mt-sm-0"
152
- :loading
153
- :rounded="rounded()"
154
- :append-icon="appendButtonIcon"
155
- :prepend-icon="prependButtonIcon"
156
- :block="xs"
123
+ <!-- Form -->
124
+ <v-form
125
+ v-if="!isSubmitted"
126
+ ref="form"
127
+ validate-on="submit"
128
+ @submit.prevent="handleSubmit"
129
+ >
130
+ <div class="d-flex flex-column flex-sm-row">
131
+ <v-text-field
132
+ v-model="formInput.email"
133
+ type="email"
134
+ variant="outlined"
135
+ color="secondary"
136
+ :placeholder="emailPlaceholder"
137
+ :rules="[formRules.required, formRules.validEmail]"
138
+ :rounded="xs ? 'lg' : '0 s-lg'"
139
+ hide-details="auto"
140
+ class="flex-grow-1 text-start"
141
+ >
142
+ <template #message="{ message }">
143
+ <span :class="dark ? 'text-red-lighten-3' : ''">{{ message }}</span>
144
+ </template>
145
+ </v-text-field>
146
+ <v-btn
147
+ type="submit"
148
+ color="secondary"
149
+ size="x-large"
150
+ class="d-flex align-center py-7 mt-2 mt-sm-0"
151
+ :loading
152
+ :rounded="rounded()"
153
+ :append-icon="appendButtonIcon"
154
+ :prepend-icon="prependButtonIcon"
155
+ :block="xs"
156
+ >
157
+ {{ buttonText }}
158
+ </v-btn>
159
+ </div>
160
+
161
+ <!-- Supporting Text -->
162
+ <div
163
+ v-if="showPrivacy || marketingConsentText"
164
+ :class="`text-body-2 ${dark ? 'text-grey-lighten-2' : 'text-medium-emphasis'} mt-2`"
157
165
  >
158
- {{ buttonText }}
159
- </v-btn>
160
- </div>
166
+ <span v-if="marketingConsentText">
167
+ {{ marketingConsentText }}
168
+ </span>
169
+ <span v-if="showPrivacy">
170
+ By signing up you agree to the
171
+ <NuxtLink
172
+ :to="nuxtifyConfig.policies?.privacyUrl"
173
+ :class="`text-decoration-none ${dark ? 'text-grey-lighten-2' : 'text-medium-emphasis'}`"
174
+ >
175
+ Privacy Policy</NuxtLink>.
176
+ </span>
177
+ </div>
178
+ </v-form>
161
179
 
162
- <!-- Supporting Text -->
180
+ <!-- Thank You -->
163
181
  <div
164
- v-if="showPrivacy || marketingConsentText"
165
- :class="`text-body-2 ${dark ? 'text-grey-lighten-2' : 'text-medium-emphasis'} mt-2`"
182
+ v-else
183
+ class="text-body-1"
166
184
  >
167
- <span v-if="marketingConsentText">
168
- {{ marketingConsentText }}
169
- </span>
170
- <span v-if="showPrivacy">
171
- By signing up you agree to the
172
- <NuxtLink
173
- :to="nuxtifyConfig.policies?.privacyUrl"
174
- :class="`text-decoration-none ${dark ? 'text-grey-lighten-2' : 'text-medium-emphasis'}`"
175
- >
176
- Privacy Policy</NuxtLink>.
177
- </span>
185
+ {{ thankYouMessage }}
178
186
  </div>
179
- </v-form>
180
-
181
- <!-- Thank You -->
182
- <div
183
- v-else
184
- class="text-body-1"
185
- >
186
- {{ thankYouMessage }}
187
- </div>
187
+ </v-card>
188
188
  </template>
189
189
 
190
190
  <style scoped>
191
- :deep(.v-input__details){padding-inline:0}:deep(.v-text-field .v-input__details){padding-inline:0}a:hover{text-decoration:underline!important}
191
+ :deep(.v-input__details){padding-inline:0}:deep(.v-text-field .v-input__details){padding-inline:0}a:hover{text-decoration:underline!important;text-underline-offset:4px}
192
192
  </style>
@@ -1,5 +1,5 @@
1
1
  <script setup>
2
- import { computed, mdiArrowTopRight, useNuxtifyConfig } from "#imports";
2
+ import { computed, useNuxtifyConfig } from "#imports";
3
3
  const nuxtifyConfig = useNuxtifyConfig();
4
4
  const footerPrimaryLinks = nuxtifyConfig.navigation?.altPrimary;
5
5
  const footerSecondaryLinks = nuxtifyConfig.navigation?.altSecondary;
@@ -14,113 +14,115 @@ const brandColWidth = computed(() => {
14
14
  </script>
15
15
 
16
16
  <template>
17
- <v-row
18
- class="px-sm-1 pt-12 pb-4 mb-1"
19
- style="max-width: 1280px"
20
- >
21
- <v-col cols="12">
22
- <FooterCallToAction v-if="nuxtifyConfig.footer?.cta?.show" />
17
+ <v-footer class="bg-primary justify-center mt-8 mt-md-16">
18
+ <v-row
19
+ class="px-sm-1 pt-12 pb-4 mb-1"
20
+ style="max-width: 1280px"
21
+ >
22
+ <v-col cols="12">
23
+ <FooterCallToAction v-if="nuxtifyConfig.footer?.cta?.show" />
23
24
 
24
- <v-row class="mb-2">
25
- <!-- Brand -->
26
- <v-col
27
- cols="12"
28
- :lg="brandColWidth"
29
- >
30
- <!-- Logo -->
31
- <NuxtLink to="/">
32
- <AppLogo dark />
33
- </NuxtLink>
25
+ <v-row class="mb-2">
26
+ <!-- Brand -->
27
+ <v-col
28
+ cols="12"
29
+ :lg="brandColWidth"
30
+ >
31
+ <!-- Logo -->
32
+ <NuxtLink to="/">
33
+ <AppLogo dark />
34
+ </NuxtLink>
34
35
 
35
- <!-- Tagline -->
36
- <p class="mt-2 clip-text">
37
- {{ nuxtifyConfig.brand?.tagline }}
38
- </p>
39
- </v-col>
36
+ <!-- Tagline -->
37
+ <p class="mt-2 clip-text">
38
+ {{ nuxtifyConfig.brand?.tagline }}
39
+ </p>
40
+ </v-col>
40
41
 
41
- <v-spacer />
42
+ <v-spacer />
42
43
 
43
- <!-- Primary Links -->
44
- <v-col :lg="12 - brandColWidth">
45
- <v-row>
46
- <v-col
47
- v-for="group in footerPrimaryLinks"
48
- :key="group.title"
49
- cols="6"
50
- md="3"
51
- lg="3"
52
- >
53
- <p class="text-body-1 font-weight-bold mb-3">
54
- {{ group.title }}
55
- </p>
56
- <div
57
- v-for="link in group.links"
58
- :key="link.text"
44
+ <!-- Primary Links -->
45
+ <v-col :lg="12 - brandColWidth">
46
+ <v-row>
47
+ <v-col
48
+ v-for="group in footerPrimaryLinks"
49
+ :key="group.title"
50
+ cols="6"
51
+ md="3"
52
+ lg="3"
59
53
  >
60
- <v-btn
61
- :to="link.to"
62
- :href="link.href"
63
- variant="plain"
64
- :active="false"
65
- :ripple="false"
66
- :target="link.openInNew ? '_blank' : void 0"
67
- :rel="link.openInNew ? 'noopener nofollow' : void 0"
68
- class="px-0"
54
+ <p class="opacity-60 text-body-1 mb-3">
55
+ {{ group.title }}
56
+ </p>
57
+ <div
58
+ v-for="link in group.links"
59
+ :key="link.text"
69
60
  >
70
- {{ link.text }}
71
- <v-icon
72
- v-if="link.openInNew"
73
- :icon="mdiArrowTopRight"
74
- size="small"
75
- color="grey"
76
- class="ml-1"
77
- />
78
- </v-btn>
79
- </div>
80
- </v-col>
81
- </v-row>
82
- </v-col>
83
- </v-row>
61
+ <v-btn
62
+ :to="link.to"
63
+ :href="link.href"
64
+ variant="text"
65
+ :active="false"
66
+ :ripple="false"
67
+ :target="link.openInNew ? '_blank' : void 0"
68
+ :rel="link.openInNew ? 'noopener nofollow' : void 0"
69
+ class="px-0"
70
+ >
71
+ {{ link.text }}
72
+ <v-icon
73
+ v-if="link.openInNew"
74
+ icon="mdi-arrow-top-right"
75
+ size="small"
76
+ color="grey"
77
+ class="ml-1"
78
+ />
79
+ </v-btn>
80
+ </div>
81
+ </v-col>
82
+ </v-row>
83
+ </v-col>
84
+ </v-row>
84
85
 
85
- <v-row>
86
- <v-col
87
- cols="12"
88
- sm="9"
89
- >
90
- <AppCredits class="opacity-60" />
86
+ <v-row>
87
+ <v-col
88
+ cols="12"
89
+ sm="9"
90
+ >
91
+ <AppCredits class="opacity-60" />
91
92
 
92
- <v-divider
93
- v-if="footerSecondaryLinks?.length"
94
- class="my-4"
95
- style="width: 50px"
96
- />
93
+ <v-divider
94
+ v-if="footerSecondaryLinks?.length"
95
+ class="my-4"
96
+ style="width: 50px"
97
+ />
97
98
 
98
- <!-- Secondary Links -->
99
- <v-btn
100
- v-for="link in footerSecondaryLinks"
101
- :key="link.text"
102
- :to="link.to"
103
- :href="link.href"
104
- variant="plain"
105
- size="small"
106
- :ripple="false"
107
- :target="link.openInNew ? '_blank' : void 0"
108
- :rel="link.openInNew ? 'noopener nofollow' : void 0"
109
- class="text-capitalize pl-0 mb-2"
110
- >
111
- {{ link.text }}
112
- <v-icon
113
- v-if="link.openInNew"
114
- :icon="mdiArrowTopRight"
99
+ <!-- Secondary Links -->
100
+ <v-btn
101
+ v-for="link in footerSecondaryLinks"
102
+ :key="link.text"
103
+ :to="link.to"
104
+ :href="link.href"
105
+ variant="plain"
115
106
  size="small"
116
- color="grey"
117
- class="ml-1"
118
- />
119
- </v-btn>
120
- </v-col>
121
- </v-row>
122
- </v-col>
123
- </v-row>
107
+ :ripple="false"
108
+ :target="link.openInNew ? '_blank' : void 0"
109
+ :rel="link.openInNew ? 'noopener nofollow' : void 0"
110
+ class="text-capitalize pl-0 mb-2"
111
+ >
112
+ {{ link.text }}
113
+ <v-icon
114
+ v-if="link.openInNew"
115
+ icon="mdi-arrow-top-right"
116
+ size="small"
117
+ color="grey"
118
+ class="ml-1"
119
+ />
120
+ </v-btn>
121
+ </v-col>
122
+ </v-row>
123
+ </v-col>
124
+ </v-row>
125
+ </v-footer>
124
126
  </template>
125
127
 
126
128
  <style scoped>
@@ -1,5 +1,5 @@
1
1
  <script setup>
2
- import { mdiArrowTopRight, mdiClose, mdiMenu, useDisplay, useDrawer, useNuxtifyConfig } from "#imports";
2
+ import { useDisplay, useDrawer, useNuxtifyConfig } from "#imports";
3
3
  const { smAndDown } = useDisplay();
4
4
  const nuxtifyConfig = useNuxtifyConfig();
5
5
  const drawer = useDrawer();
@@ -46,7 +46,7 @@ const featuredSecondaryLink = secondaryNavLinks?.slice(0, 1)[0];
46
46
  {{ link.text }}
47
47
  <v-icon
48
48
  v-if="link.openInNew"
49
- :icon="mdiArrowTopRight"
49
+ icon="mdi-arrow-top-right"
50
50
  size="x-small"
51
51
  color="grey"
52
52
  class="ml-1"
@@ -58,7 +58,7 @@ const featuredSecondaryLink = secondaryNavLinks?.slice(0, 1)[0];
58
58
  <!-- Mobile navigation -->
59
59
  <v-app-bar-nav-icon
60
60
  v-if="smAndDown"
61
- :icon="drawer ? mdiClose : mdiMenu"
61
+ :icon="drawer ? 'mdi-close' : 'mdi-menu'"
62
62
  color="primary"
63
63
  aria-label="Navigation Menu"
64
64
  @click="drawer = !drawer"
@@ -86,7 +86,7 @@ const featuredSecondaryLink = secondaryNavLinks?.slice(0, 1)[0];
86
86
  {{ link.text }}
87
87
  <v-icon
88
88
  v-if="link.openInNew"
89
- :icon="mdiArrowTopRight"
89
+ icon="mdi-arrow-top-right"
90
90
  size="x-small"
91
91
  color="grey"
92
92
  class="ml-1"
@@ -109,7 +109,7 @@ const featuredSecondaryLink = secondaryNavLinks?.slice(0, 1)[0];
109
109
  {{ featuredSecondaryLink.text }}
110
110
  <v-icon
111
111
  v-if="featuredSecondaryLink.openInNew"
112
- :icon="mdiArrowTopRight"
112
+ icon="mdi-arrow-top-right"
113
113
  size="small"
114
114
  class="ml-1"
115
115
  />
@@ -1,5 +1,5 @@
1
1
  <script setup>
2
- import { mdiArrowTopRight, useDisplay, useDrawer, useNuxtifyConfig } from "#imports";
2
+ import { useDisplay, useDrawer, useNuxtifyConfig } from "#imports";
3
3
  const { smAndDown } = useDisplay();
4
4
  const nuxtifyConfig = useNuxtifyConfig();
5
5
  const drawer = useDrawer();
@@ -33,7 +33,7 @@ const featuredSecondaryLink = secondaryNavLinks?.slice(0, 1)[0];
33
33
  {{ link.text }}
34
34
  <v-icon
35
35
  v-if="link.openInNew"
36
- :icon="mdiArrowTopRight"
36
+ icon="mdi-arrow-top-right"
37
37
  size="x-small"
38
38
  color="grey"
39
39
  class="ml-1"
@@ -57,7 +57,7 @@ const featuredSecondaryLink = secondaryNavLinks?.slice(0, 1)[0];
57
57
  {{ link.text }}
58
58
  <v-icon
59
59
  v-if="link.openInNew"
60
- :icon="mdiArrowTopRight"
60
+ icon="mdi-arrow-top-right"
61
61
  size="x-small"
62
62
  color="grey"
63
63
  class="ml-1"
@@ -86,7 +86,7 @@ const featuredSecondaryLink = secondaryNavLinks?.slice(0, 1)[0];
86
86
  {{ featuredSecondaryLink.text }}
87
87
  <v-icon
88
88
  v-if="featuredSecondaryLink.openInNew"
89
- :icon="mdiArrowTopRight"
89
+ icon="mdi-arrow-top-right"
90
90
  size="small"
91
91
  class="ml-1"
92
92
  />
@@ -10,7 +10,7 @@ useNuxtifySiteTitle();
10
10
  <!-- Accessibility -->
11
11
  <NuxtRouteAnnouncer />
12
12
 
13
- <AppBar class="d-print-none" />
13
+ <AppHeader class="d-print-none" />
14
14
 
15
15
  <AppNavigationDrawer class="d-print-none" />
16
16
 
@@ -27,9 +27,7 @@ useNuxtifySiteTitle();
27
27
 
28
28
  <AppDialog class="d-print-none" />
29
29
 
30
- <v-footer class="bg-primary justify-center mt-8">
31
- <AppFooter />
32
- </v-footer>
30
+ <AppFooter />
33
31
  </v-app>
34
32
  </template>
35
33
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@nuxtify/pages",
3
- "version": "0.5.1",
3
+ "version": "0.6.1",
4
4
  "description": "Nuxtify pages module powered by Nuxt and Vuetify.",
5
5
  "license": "MIT",
6
6
  "homepage": "https://nuxtify.dev",
@@ -44,7 +44,7 @@
44
44
  "test:types": "vue-tsc --noEmit && cd playground && vue-tsc --noEmit"
45
45
  },
46
46
  "dependencies": {
47
- "@nuxtify/core": "^0.3.0",
47
+ "@nuxtify/core": "^0.4.1",
48
48
  "defu": "^6.1.4"
49
49
  },
50
50
  "devDependencies": {
@@ -1,23 +0,0 @@
1
- <script setup>
2
- import { useNuxtifyConfig, useSeoMeta } from "#imports";
3
- const nuxtifyConfig = useNuxtifyConfig();
4
- useSeoMeta({
5
- title: `${nuxtifyConfig.brand?.name}`,
6
- description: `This is the ${nuxtifyConfig.brand?.name} home page.`
7
- });
8
- </script>
9
-
10
- <template>
11
- <v-container class="text-center">
12
- <v-row>
13
- <v-col cols="12">
14
- <ClientOnly>
15
- <h1>{{ nuxtifyConfig.brand?.name }} Home</h1>
16
- <template #fallback>
17
- <AppLoading />
18
- </template>
19
- </ClientOnly>
20
- </v-col>
21
- </v-row>
22
- </v-container>
23
- </template>
@@ -1,3 +0,0 @@
1
- declare const __VLS_export: import("vue").DefineComponent<{}, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<{}> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
2
- declare const _default: typeof __VLS_export;
3
- export default _default;
@@ -1 +0,0 @@
1
- export { mdiArrowRight, mdiArrowTopRight, mdiClose, mdiMenu } from '@mdi/js';
@@ -1 +0,0 @@
1
- export { mdiArrowRight, mdiArrowTopRight, mdiClose, mdiMenu } from "@mdi/js";