@nuxtify/pages 0.1.0 → 0.2.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 (37) hide show
  1. package/README.md +200 -203
  2. package/dist/module.json +4 -4
  3. package/dist/module.mjs +1 -1
  4. package/dist/runtime/components/EmailSubscribeForm.vue +133 -156
  5. package/dist/runtime/components/EmailSubscribeForm.vue.d.ts +94 -0
  6. package/dist/runtime/components/FooterCallToAction.vue +32 -34
  7. package/dist/runtime/components/FooterCallToAction.vue.d.ts +2 -0
  8. package/dist/runtime/components/app/AppAnnouncementBar.vue +31 -35
  9. package/dist/runtime/components/app/AppAnnouncementBar.vue.d.ts +2 -0
  10. package/dist/runtime/components/app/AppBar.vue +116 -120
  11. package/dist/runtime/components/app/AppBar.vue.d.ts +2 -0
  12. package/dist/runtime/components/app/AppDialog.vue +34 -36
  13. package/dist/runtime/components/app/AppDialog.vue.d.ts +2 -0
  14. package/dist/runtime/components/app/AppFooter.vue +136 -142
  15. package/dist/runtime/components/app/AppFooter.vue.d.ts +2 -0
  16. package/dist/runtime/components/app/AppLoading.vue +10 -10
  17. package/dist/runtime/components/app/AppLoading.vue.d.ts +2 -0
  18. package/dist/runtime/components/app/AppLogo.vue +26 -40
  19. package/dist/runtime/components/app/AppLogo.vue.d.ts +23 -0
  20. package/dist/runtime/components/app/AppNavigationDrawer.vue +93 -97
  21. package/dist/runtime/components/app/AppNavigationDrawer.vue.d.ts +2 -0
  22. package/dist/runtime/components/app/AppToast.vue +12 -14
  23. package/dist/runtime/components/app/AppToast.vue.d.ts +2 -0
  24. package/dist/runtime/layouts/DefaultLayout.vue +27 -29
  25. package/dist/runtime/layouts/DefaultLayout.vue.d.ts +12 -0
  26. package/dist/runtime/pages/DynamicSlug.vue +17 -19
  27. package/dist/runtime/pages/DynamicSlug.vue.d.ts +2 -0
  28. package/dist/runtime/pages/IndexPage.vue +14 -18
  29. package/dist/runtime/pages/IndexPage.vue.d.ts +2 -0
  30. package/dist/runtime/server/tsconfig.json +3 -3
  31. package/dist/runtime/utils/formRules.d.ts +1 -0
  32. package/dist/runtime/utils/formRules.js +1 -0
  33. package/dist/types.d.mts +2 -2
  34. package/package.json +65 -60
  35. package/dist/module.cjs +0 -5
  36. package/dist/module.d.ts +0 -139
  37. package/dist/types.d.ts +0 -7
@@ -1,55 +1,41 @@
1
- <script setup lang="ts">
2
- import { useAppConfig, useDisplay, computed } from '#imports'
3
-
4
- // Props
1
+ <script setup>
2
+ import { useAppConfig, useDisplay, computed } from "#imports";
5
3
  const props = defineProps({
6
4
  dark: {
7
5
  type: Boolean,
8
- default: false,
6
+ default: false
9
7
  },
10
8
  width: {
11
9
  type: Number,
12
- default: undefined,
13
- },
14
- })
15
-
16
- // App state
17
- const nuxtifyConfig = useAppConfig().nuxtify
18
- const { smAndDown } = useDisplay()
19
-
20
- // Image URL logic
21
- // Set default to the light image url
22
- let imageUrl = nuxtifyConfig.brand.logo.lightUrl
23
-
24
- // If it's dark theme logo and there's a dark image url, use that
10
+ default: void 0
11
+ }
12
+ });
13
+ const nuxtifyConfig = useAppConfig().nuxtify;
14
+ const { smAndDown } = useDisplay();
15
+ let imageUrl = nuxtifyConfig.brand.logo.lightUrl;
25
16
  if (props.dark && nuxtifyConfig.brand.logo.darkUrl) {
26
- imageUrl = nuxtifyConfig.brand.logo.darkUrl
17
+ imageUrl = nuxtifyConfig.brand.logo.darkUrl;
27
18
  }
28
-
29
- // Image width logic
30
19
  const width = computed(() => {
31
20
  if (props.width) {
32
- return props.width
33
- }
34
- else {
35
- return smAndDown.value
36
- ? nuxtifyConfig.brand.logo.mobileWidth
37
- : nuxtifyConfig.brand.logo.width
21
+ return props.width;
22
+ } else {
23
+ return smAndDown.value ? nuxtifyConfig.brand.logo.mobileWidth : nuxtifyConfig.brand.logo.width;
38
24
  }
39
- })
25
+ });
40
26
  </script>
41
27
 
42
28
  <template>
43
- <v-img
44
- v-if="imageUrl"
45
- :width
46
- :src="imageUrl"
47
- :alt="`${nuxtifyConfig.brand.name} logo`"
48
- />
49
- <span
50
- v-else
51
- :class="`text-subtitle-1 text-sm-h6 ${dark ? '' : 'text-primary'}`"
52
- >
53
- {{ nuxtifyConfig.brand.name }}
54
- </span>
29
+ <v-img
30
+ v-if="imageUrl"
31
+ :width
32
+ :src="imageUrl"
33
+ :alt="`${nuxtifyConfig.brand.name} logo`"
34
+ />
35
+ <span
36
+ v-else
37
+ :class="`text-subtitle-1 text-sm-h6 ${dark ? '' : 'text-primary'}`"
38
+ >
39
+ {{ nuxtifyConfig.brand.name }}
40
+ </span>
55
41
  </template>
@@ -0,0 +1,23 @@
1
+ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropTypes<{
2
+ dark: {
3
+ type: BooleanConstructor;
4
+ default: boolean;
5
+ };
6
+ width: {
7
+ type: NumberConstructor;
8
+ default: undefined;
9
+ };
10
+ }>, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
11
+ dark: {
12
+ type: BooleanConstructor;
13
+ default: boolean;
14
+ };
15
+ width: {
16
+ type: NumberConstructor;
17
+ default: undefined;
18
+ };
19
+ }>> & Readonly<{}>, {
20
+ dark: boolean;
21
+ width: number;
22
+ }, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
23
+ export default _default;
@@ -1,101 +1,97 @@
1
- <script setup lang="ts">
2
- import { useDisplay, useDrawer, useNuxtifyConfig, mdiArrowTopRight } from '#imports'
3
-
4
- // App state
5
- const { smAndDown } = useDisplay()
6
- const nuxtifyConfig = useNuxtifyConfig()
7
- const drawer = useDrawer()
8
-
9
- // Navigation
10
- const primaryNavLinks = nuxtifyConfig.navigation?.primary
11
- const secondaryNavLinks = nuxtifyConfig.navigation?.secondary
12
- const featuredSecondaryLink = secondaryNavLinks?.slice(0, 1)[0] // first link gets featured
1
+ <script setup>
2
+ import { useDisplay, useDrawer, useNuxtifyConfig, mdiArrowTopRight } from "#imports";
3
+ const { smAndDown } = useDisplay();
4
+ const nuxtifyConfig = useNuxtifyConfig();
5
+ const drawer = useDrawer();
6
+ const primaryNavLinks = nuxtifyConfig.navigation?.primary;
7
+ const secondaryNavLinks = nuxtifyConfig.navigation?.secondary;
8
+ const featuredSecondaryLink = secondaryNavLinks?.slice(0, 1)[0];
13
9
  </script>
14
10
 
15
11
  <template>
16
- <v-navigation-drawer
17
- v-if="smAndDown"
18
- v-model="drawer"
19
- location="right"
20
- >
21
- <nav>
22
- <v-list nav>
23
- <!-- Primary links -->
24
- <v-list-item
25
- v-for="(link, i) in primaryNavLinks"
26
- :key="i"
27
- :to="link.to"
28
- :href="link.href"
29
- :prepend-icon="link.icon"
30
- color="primary"
31
- :target="link.openInNew ? '_blank' : undefined"
32
- :rel="link.openInNew ? 'noopener nofollow' : undefined"
33
- slim
34
- exact
35
- >
36
- <v-list-item-title class="text-subtitle-1 font-weight-bold py-1">
37
- {{ link.text }}
38
- <v-icon
39
- v-if="link.openInNew"
40
- :icon="mdiArrowTopRight"
41
- size="x-small"
42
- color="grey"
43
- class="ml-1"
44
- />
45
- </v-list-item-title>
46
- </v-list-item>
47
-
48
- <!-- Secondary links -->
49
- <v-list-item
50
- v-for="link in secondaryNavLinks?.slice(1).reverse()"
51
- :key="link.text"
52
- :to="link.to"
53
- :href="link.href"
54
- :prepend-icon="link.icon"
55
- :target="link.openInNew ? '_blank' : undefined"
56
- :rel="link.openInNew ? 'noopener nofollow' : undefined"
57
- slim
58
- exact
59
- >
60
- <v-list-item-title class="text-subtitle-1 font-weight-bold py-1">
61
- {{ link.text }}
62
- <v-icon
63
- v-if="link.openInNew"
64
- :icon="mdiArrowTopRight"
65
- size="x-small"
66
- color="grey"
67
- class="ml-1"
68
- />
69
- </v-list-item-title>
70
- </v-list-item>
71
- </v-list>
72
- </nav>
73
-
74
- <template #append>
75
- <!-- Featured secondary link -->
76
- <div
77
- v-if="featuredSecondaryLink?.text"
78
- class="ma-2"
79
- >
80
- <v-btn
81
- :to="featuredSecondaryLink.to"
82
- :href="featuredSecondaryLink.href"
83
- :prepend-icon="featuredSecondaryLink.icon"
84
- variant="flat"
85
- size="large"
86
- :target="featuredSecondaryLink.openInNew ? '_blank' : undefined"
87
- :rel="featuredSecondaryLink.openInNew ? 'noopener nofollow' : undefined"
88
- block
89
- >
90
- {{ featuredSecondaryLink.text }}
91
- <v-icon
92
- v-if="featuredSecondaryLink.openInNew"
93
- :icon="mdiArrowTopRight"
94
- size="small"
95
- class="ml-1"
96
- />
97
- </v-btn>
98
- </div>
99
- </template>
100
- </v-navigation-drawer>
12
+ <v-navigation-drawer
13
+ v-if="smAndDown"
14
+ v-model="drawer"
15
+ location="right"
16
+ >
17
+ <nav>
18
+ <v-list nav>
19
+ <!-- Primary links -->
20
+ <v-list-item
21
+ v-for="(link, i) in primaryNavLinks"
22
+ :key="i"
23
+ :to="link.to"
24
+ :href="link.href"
25
+ :prepend-icon="link.icon"
26
+ color="primary"
27
+ :target="link.openInNew ? '_blank' : void 0"
28
+ :rel="link.openInNew ? 'noopener nofollow' : void 0"
29
+ slim
30
+ exact
31
+ >
32
+ <v-list-item-title class="text-subtitle-1 font-weight-bold py-1">
33
+ {{ link.text }}
34
+ <v-icon
35
+ v-if="link.openInNew"
36
+ :icon="mdiArrowTopRight"
37
+ size="x-small"
38
+ color="grey"
39
+ class="ml-1"
40
+ />
41
+ </v-list-item-title>
42
+ </v-list-item>
43
+
44
+ <!-- Secondary links -->
45
+ <v-list-item
46
+ v-for="link in secondaryNavLinks?.slice(1).reverse()"
47
+ :key="link.text"
48
+ :to="link.to"
49
+ :href="link.href"
50
+ :prepend-icon="link.icon"
51
+ :target="link.openInNew ? '_blank' : void 0"
52
+ :rel="link.openInNew ? 'noopener nofollow' : void 0"
53
+ slim
54
+ exact
55
+ >
56
+ <v-list-item-title class="text-subtitle-1 font-weight-bold py-1">
57
+ {{ link.text }}
58
+ <v-icon
59
+ v-if="link.openInNew"
60
+ :icon="mdiArrowTopRight"
61
+ size="x-small"
62
+ color="grey"
63
+ class="ml-1"
64
+ />
65
+ </v-list-item-title>
66
+ </v-list-item>
67
+ </v-list>
68
+ </nav>
69
+
70
+ <template #append>
71
+ <!-- Featured secondary link -->
72
+ <div
73
+ v-if="featuredSecondaryLink?.text"
74
+ class="ma-2"
75
+ >
76
+ <v-btn
77
+ :to="featuredSecondaryLink.to"
78
+ :href="featuredSecondaryLink.href"
79
+ :prepend-icon="featuredSecondaryLink.icon"
80
+ variant="flat"
81
+ size="large"
82
+ :target="featuredSecondaryLink.openInNew ? '_blank' : void 0"
83
+ :rel="featuredSecondaryLink.openInNew ? 'noopener nofollow' : void 0"
84
+ block
85
+ >
86
+ {{ featuredSecondaryLink.text }}
87
+ <v-icon
88
+ v-if="featuredSecondaryLink.openInNew"
89
+ :icon="mdiArrowTopRight"
90
+ size="small"
91
+ class="ml-1"
92
+ />
93
+ </v-btn>
94
+ </div>
95
+ </template>
96
+ </v-navigation-drawer>
101
97
  </template>
@@ -0,0 +1,2 @@
1
+ declare const _default: import("vue").DefineComponent<{}, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<{}> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
2
+ export default _default;
@@ -1,18 +1,16 @@
1
- <script setup lang="ts">
2
- import { useToast } from '#imports'
3
-
4
- // App state
5
- const toast = useToast()
1
+ <script setup>
2
+ import { useToast } from "#imports";
3
+ const toast = useToast();
6
4
  </script>
7
5
 
8
6
  <template>
9
- <v-snackbar
10
- v-model="toast.show"
11
- :timeout="5000"
12
- color="info"
13
- :min-width="0"
14
- close-on-content-click
15
- >
16
- {{ toast.message }}
17
- </v-snackbar>
7
+ <v-snackbar
8
+ v-model="toast.show"
9
+ :timeout="5e3"
10
+ color="info"
11
+ :min-width="0"
12
+ close-on-content-click
13
+ >
14
+ {{ toast.message }}
15
+ </v-snackbar>
18
16
  </template>
@@ -0,0 +1,2 @@
1
+ declare const _default: import("vue").DefineComponent<{}, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<{}> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
2
+ export default _default;
@@ -1,33 +1,31 @@
1
- <script setup lang="ts">
2
- import { useDisplay, useNuxtifyConfig } from '#imports'
3
-
4
- // App state
5
- const nuxtifyConfig = useNuxtifyConfig()
6
- const { mdAndUp } = useDisplay()
1
+ <script setup>
2
+ import { useDisplay, useNuxtifyConfig } from "#imports";
3
+ const nuxtifyConfig = useNuxtifyConfig();
4
+ const { mdAndUp } = useDisplay();
7
5
  </script>
8
6
 
9
7
  <template>
10
- <v-app>
11
- <!-- Accessibility -->
12
- <NuxtRouteAnnouncer />
13
-
14
- <AppBar class="d-print-none" />
15
-
16
- <AppNavigationDrawer class="d-print-none" />
17
-
18
- <AppAnnouncementBar
19
- v-if="nuxtifyConfig.announcement?.show"
20
- class="d-print-none"
21
- />
22
-
23
- <v-main :min-height="mdAndUp ? 800 : 550">
24
- <slot />
25
- </v-main>
26
-
27
- <AppToast />
28
-
29
- <v-footer class="bg-primary justify-center mt-8">
30
- <AppFooter />
31
- </v-footer>
32
- </v-app>
8
+ <v-app>
9
+ <!-- Accessibility -->
10
+ <NuxtRouteAnnouncer />
11
+
12
+ <AppBar class="d-print-none" />
13
+
14
+ <AppNavigationDrawer class="d-print-none" />
15
+
16
+ <AppAnnouncementBar
17
+ v-if="nuxtifyConfig.announcement?.show"
18
+ class="d-print-none"
19
+ />
20
+
21
+ <v-main :min-height="mdAndUp ? 800 : 550">
22
+ <slot />
23
+ </v-main>
24
+
25
+ <AppToast />
26
+
27
+ <v-footer class="bg-primary justify-center mt-8">
28
+ <AppFooter />
29
+ </v-footer>
30
+ </v-app>
33
31
  </template>
@@ -0,0 +1,12 @@
1
+ declare var __VLS_26: {};
2
+ type __VLS_Slots = {} & {
3
+ default?: (props: typeof __VLS_26) => any;
4
+ };
5
+ declare const __VLS_component: import("vue").DefineComponent<{}, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<{}> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
6
+ declare const _default: __VLS_WithSlots<typeof __VLS_component, __VLS_Slots>;
7
+ export default _default;
8
+ type __VLS_WithSlots<T, S> = T & {
9
+ new (): {
10
+ $slots: S;
11
+ };
12
+ };
@@ -1,23 +1,21 @@
1
- <script setup lang="ts">
2
- import { useRoute, capitalizeFirstLetter } from '#imports'
3
-
4
- // Page info
5
- const route = useRoute()
1
+ <script setup>
2
+ import { useRoute, capitalizeFirstLetter } from "#imports";
3
+ const route = useRoute();
6
4
  </script>
7
5
 
8
6
  <template>
9
- <v-container>
10
- <v-row justify="center">
11
- <v-col
12
- cols="12"
13
- sm="10"
14
- lg="8"
15
- xl="6"
16
- >
17
- <h1 class="text-h5 mt-4">
18
- {{ capitalizeFirstLetter(route.params.slug as string) }}
19
- </h1>
20
- </v-col>
21
- </v-row>
22
- </v-container>
7
+ <v-container>
8
+ <v-row justify="center">
9
+ <v-col
10
+ cols="12"
11
+ sm="10"
12
+ lg="8"
13
+ xl="6"
14
+ >
15
+ <h1 class="text-h5 mt-4">
16
+ {{ capitalizeFirstLetter(route.params.slug) }}
17
+ </h1>
18
+ </v-col>
19
+ </v-row>
20
+ </v-container>
23
21
  </template>
@@ -0,0 +1,2 @@
1
+ declare const _default: import("vue").DefineComponent<{}, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<{}> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
2
+ export default _default;
@@ -1,23 +1,19 @@
1
- <script setup lang="ts">
2
- import { useServerSeoMeta, useNuxtifyConfig } from '#imports'
3
-
4
- // Page info
1
+ <script setup>
2
+ import { useServerSeoMeta, useNuxtifyConfig } from "#imports";
5
3
  useServerSeoMeta({
6
- title: '@nuxtify/pages',
7
- description: 'This is the @nuxtify/pages homepage.',
8
- })
9
-
10
- // App state
11
- const nuxtifyConfig = useNuxtifyConfig()
4
+ title: "@nuxtify/pages",
5
+ description: "This is the @nuxtify/pages homepage."
6
+ });
7
+ const nuxtifyConfig = useNuxtifyConfig();
12
8
  </script>
13
9
 
14
10
  <template>
15
- <v-container class="text-center">
16
- <ClientOnly>
17
- <h1>{{ nuxtifyConfig.brand?.name }} Home</h1>
18
- <template #fallback>
19
- <AppLoading />
20
- </template>
21
- </ClientOnly>
22
- </v-container>
11
+ <v-container class="text-center">
12
+ <ClientOnly>
13
+ <h1>{{ nuxtifyConfig.brand?.name }} Home</h1>
14
+ <template #fallback>
15
+ <AppLoading />
16
+ </template>
17
+ </ClientOnly>
18
+ </v-container>
23
19
  </template>
@@ -0,0 +1,2 @@
1
+ declare const _default: import("vue").DefineComponent<{}, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<{}> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
2
+ export default _default;
@@ -1,3 +1,3 @@
1
- {
2
- "extends": "../../../.nuxt/tsconfig.server.json",
3
- }
1
+ {
2
+ "extends": "../../../.nuxt/tsconfig.server.json",
3
+ }
@@ -10,6 +10,7 @@ export declare const formRules: {
10
10
  maxLength200: (v: string) => true | "Must not be longer than 200 characters";
11
11
  maxLength300: (v: string) => true | "Must not be longer than 300 characters";
12
12
  maxLength600: (v: string) => true | "Must not be longer than 600 characters";
13
+ maxLength1200: (v: string) => true | "Must not be longer than 1200 characters";
13
14
  isInteger: (v: string) => true | "Must be an integer";
14
15
  gt0: (v: string) => true | "Must be greater than 0";
15
16
  gte6: (v: string) => true | "Must be greater than or equal to 6";
@@ -13,6 +13,7 @@ export const formRules = {
13
13
  maxLength200: (v) => v ? v.length <= 200 || "Must not be longer than 200 characters" : true,
14
14
  maxLength300: (v) => v ? v.length <= 300 || "Must not be longer than 300 characters" : true,
15
15
  maxLength600: (v) => v ? v.length <= 600 || "Must not be longer than 600 characters" : true,
16
+ maxLength1200: (v) => v ? v.length <= 1200 || "Must not be longer than 1200 characters" : true,
16
17
  // Number
17
18
  isInteger: (v) => Number.isInteger(+v) || "Must be an integer",
18
19
  gt0: (v) => Number.parseFloat(v) > 0 || "Must be greater than 0",
package/dist/types.d.mts CHANGED
@@ -1,7 +1,7 @@
1
1
  import type { NuxtModule } from '@nuxt/schema'
2
2
 
3
- import type { default as Module } from './module.js'
3
+ import type { default as Module } from './module.mjs'
4
4
 
5
5
  export type ModuleOptions = typeof Module extends NuxtModule<infer O> ? Partial<O> : Record<string, any>
6
6
 
7
- export { default } from './module.js'
7
+ export { default } from './module.mjs'