create-vitrify 0.6.5 → 0.7.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.
- package/dist/templates.js +272 -46
- package/package.json +7 -7
- package/templates/fastify/_gitignore +3 -0
- package/templates/fastify/_prettierignore +3 -0
- package/templates/fastify/_prettierrc.json +22 -0
- package/templates/fastify/eslint.config.js +27 -0
- package/templates/fastify/src/setup.ts +12 -0
- package/templates/fastify/vitrify.config.ts +21 -0
- package/templates/quasar/eslint.config.js +27 -0
- package/templates/quasar/src/pages/IndexPage.vue +1 -1
- package/templates/quasar/src/router/routes.ts +3 -3
- package/templates/quasar/src/setup.ts +2 -1
- package/templates/quasar/vitrify.config.ts +9 -14
- package/templates/quasarmd3/.vscode/extensions.json +3 -0
- package/templates/quasarmd3/_gitignore +3 -0
- package/templates/quasarmd3/_prettierignore +3 -0
- package/templates/quasarmd3/_prettierrc.json +22 -0
- package/templates/quasarmd3/eslint.config.js +27 -0
- package/templates/quasarmd3/index.html +14 -0
- package/templates/quasarmd3/src/App.test.js +3 -0
- package/templates/quasarmd3/src/App.vue +35 -0
- package/templates/quasarmd3/src/assets/quasar-logo-vertical.svg +15 -0
- package/templates/quasarmd3/src/components/HelloWorld.vue +21 -0
- package/templates/quasarmd3/src/lang/en-US.ts +8 -0
- package/templates/quasarmd3/src/lang/index.ts +40 -0
- package/templates/quasarmd3/src/lang/nl.ts +8 -0
- package/templates/quasarmd3/src/layouts/MainLayout.vue +115 -0
- package/templates/quasarmd3/src/layouts/NavigationTabs.vue +7 -0
- package/templates/quasarmd3/src/pages/Error404Page.vue +29 -0
- package/templates/quasarmd3/src/pages/IndexPage/IndexPage.vue +15 -0
- package/templates/quasarmd3/src/pages/IndexPage/IndexPageFabs.vue +21 -0
- package/templates/quasarmd3/src/pwa.ts +21 -0
- package/templates/quasarmd3/src/router/index.ts +17 -0
- package/templates/quasarmd3/src/router/routes.ts +27 -0
- package/templates/quasarmd3/src/setup.ts +9 -0
- package/templates/quasarmd3/src/shims-vue.d.ts +6 -0
- package/templates/quasarmd3/vitrify.config.ts +204 -0
- package/templates/vue/.vscode/extensions.json +3 -0
- package/templates/vue/_gitignore +3 -0
- package/templates/vue/_prettierignore +3 -0
- package/templates/vue/_prettierrc.json +22 -0
- package/templates/vue/eslint.config.js +27 -0
- package/templates/vue/index.html +14 -0
- package/templates/vue/src/App.test.js +3 -0
- package/templates/vue/src/App.vue +20 -0
- package/templates/vue/src/components/HelloWorld.vue +9 -0
- package/templates/vue/src/layouts/MainLayout.vue +5 -0
- package/templates/vue/src/pages/Error404Page.vue +9 -0
- package/templates/vue/src/pages/IndexPage.vue +13 -0
- package/templates/vue/src/router/index.ts +17 -0
- package/templates/vue/src/router/routes.ts +19 -0
- package/templates/vue/src/setup.ts +9 -0
- package/templates/vue/src/shims-vue.d.ts +6 -0
- package/templates/vue/vitrify.config.ts +21 -0
- package/templates/quasar/_eslint.config.ts +0 -0
- package/templates/quasar/_eslintrc.cjs +0 -19
@@ -0,0 +1,22 @@
|
|
1
|
+
{
|
2
|
+
"semi": false,
|
3
|
+
"tabWidth": 2,
|
4
|
+
"singleQuote": true,
|
5
|
+
"printWidth": 80,
|
6
|
+
"trailingComma": "none",
|
7
|
+
"overrides": [
|
8
|
+
{
|
9
|
+
"files": ["*.json5"],
|
10
|
+
"options": {
|
11
|
+
"singleQuote": false,
|
12
|
+
"quoteProps": "preserve"
|
13
|
+
}
|
14
|
+
},
|
15
|
+
{
|
16
|
+
"files": ["*.yml"],
|
17
|
+
"options": {
|
18
|
+
"singleQuote": false
|
19
|
+
}
|
20
|
+
}
|
21
|
+
]
|
22
|
+
}
|
@@ -0,0 +1,27 @@
|
|
1
|
+
import eslintPluginPrettierRecommended from 'eslint-plugin-prettier/recommended'
|
2
|
+
import pluginVue from 'eslint-plugin-vue'
|
3
|
+
import typescriptEslint from 'typescript-eslint'
|
4
|
+
import vueParser from 'vue-eslint-parser'
|
5
|
+
|
6
|
+
export default typescriptEslint.config(
|
7
|
+
...typescriptEslint.configs.recommended,
|
8
|
+
...pluginVue.configs['flat/recommended'],
|
9
|
+
|
10
|
+
{
|
11
|
+
files: ['**/*.vue'],
|
12
|
+
languageOptions: {
|
13
|
+
parser: vueParser,
|
14
|
+
parserOptions: {
|
15
|
+
sourceType: 'module',
|
16
|
+
parser: {
|
17
|
+
ts: typescriptEslint.parser
|
18
|
+
}
|
19
|
+
}
|
20
|
+
}
|
21
|
+
},
|
22
|
+
|
23
|
+
/**
|
24
|
+
* end
|
25
|
+
*/
|
26
|
+
eslintPluginPrettierRecommended
|
27
|
+
)
|
@@ -0,0 +1,14 @@
|
|
1
|
+
<!doctype html>
|
2
|
+
<html lang="en">
|
3
|
+
<head>
|
4
|
+
<meta charset="UTF-8" />
|
5
|
+
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
6
|
+
<link rel="icon" href="/favicon.ico" />
|
7
|
+
<title></title>
|
8
|
+
</head>
|
9
|
+
|
10
|
+
<body>
|
11
|
+
<!-- A body opening and closing tag is sufficient for Vitrify -->
|
12
|
+
<div id="app"></div>
|
13
|
+
</body>
|
14
|
+
</html>
|
@@ -0,0 +1,35 @@
|
|
1
|
+
<template>
|
2
|
+
<router-view v-slot="{ Component }">
|
3
|
+
<Suspense>
|
4
|
+
<template #default>
|
5
|
+
<component :is="Component" />
|
6
|
+
</template>
|
7
|
+
<template #fallback>
|
8
|
+
<div>Loading...</div>
|
9
|
+
</template>
|
10
|
+
</Suspense>
|
11
|
+
</router-view>
|
12
|
+
</template>
|
13
|
+
|
14
|
+
<script lang="ts">
|
15
|
+
export default {
|
16
|
+
name: 'App'
|
17
|
+
}
|
18
|
+
</script>
|
19
|
+
|
20
|
+
<script setup lang="ts">
|
21
|
+
import { provide } from 'vue'
|
22
|
+
import { EventBus, useQuasar } from 'quasar'
|
23
|
+
const $q = useQuasar()
|
24
|
+
const bus = new EventBus<{
|
25
|
+
'index-add': () => void
|
26
|
+
}>()
|
27
|
+
|
28
|
+
bus.on('index-add', () =>
|
29
|
+
$q.notify({
|
30
|
+
message: 'Add button clicked'
|
31
|
+
})
|
32
|
+
)
|
33
|
+
|
34
|
+
provide<EventBus>('bus', bus)
|
35
|
+
</script>
|
@@ -0,0 +1,15 @@
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 356 360">
|
2
|
+
<path
|
3
|
+
d="M43.4 303.4c0 3.8-2.3 6.3-7.1 6.3h-15v-22h14.4c4.3 0 6.2 2.2 6.2 5.2 0 2.6-1.5 4.4-3.4 5 2.8.4 4.9 2.5 4.9 5.5zm-8-13H24.1v6.9H35c2.1 0 4-1.3 4-3.8 0-2.2-1.3-3.1-3.7-3.1zm5.1 12.6c0-2.3-1.8-3.7-4-3.7H24.2v7.7h11.7c3.4 0 4.6-1.8 4.6-4zm36.3 4v2.7H56v-22h20.6v2.7H58.9v6.8h14.6v2.3H58.9v7.5h17.9zm23-5.8v8.5H97v-8.5l-11-13.4h3.4l8.9 11 8.8-11h3.4l-10.8 13.4zm19.1-1.8V298c0-7.9 5.2-10.7 12.7-10.7 7.5 0 13 2.8 13 10.7v1.4c0 7.9-5.5 10.8-13 10.8s-12.7-3-12.7-10.8zm22.7 0V298c0-5.7-3.9-8-10-8-6 0-9.8 2.3-9.8 8v1.4c0 5.8 3.8 8.1 9.8 8.1 6 0 10-2.3 10-8.1zm37.2-11.6v21.9h-2.9l-15.8-17.9v17.9h-2.8v-22h3l15.6 18v-18h2.9zm37.9 10.2v1.3c0 7.8-5.2 10.4-12.4 10.4H193v-22h11.2c7.2 0 12.4 2.8 12.4 10.3zm-3 0c0-5.3-3.3-7.6-9.4-7.6h-8.4V307h8.4c6 0 9.5-2 9.5-7.7V298zm50.8-7.6h-9.7v19.3h-3v-19.3h-9.7v-2.6h22.4v2.6zm34.4-2.6v21.9h-3v-10.1h-16.8v10h-2.8v-21.8h2.8v9.2H296v-9.2h2.9zm34.9 19.2v2.7h-20.7v-22h20.6v2.7H316v6.8h14.5v2.3H316v7.5h17.8zM24 340.2v7.3h13.9v2.4h-14v9.6H21v-22h20v2.7H24zm41.5 11.4h-9.8v7.9H53v-22h13.3c5.1 0 8 1.9 8 6.8 0 3.7-2 6.3-5.6 7l6 8.2h-3.3l-5.8-8zm-9.8-2.6H66c3.1 0 5.3-1.5 5.3-4.7 0-3.3-2.2-4.1-5.3-4.1H55.7v8.8zm47.9 6.2H89l-2 4.3h-3.2l10.7-22.2H98l10.7 22.2h-3.2l-2-4.3zm-1-2.3l-6.3-13-6 13h12.2zm46.3-15.3v21.9H146v-17.2L135.7 358h-2.1l-10.2-15.6v17h-2.8v-21.8h3l11 16.9 11.3-17h3zm35 19.3v2.6h-20.7v-22h20.6v2.7H166v6.8h14.5v2.3H166v7.6h17.8zm47-19.3l-8.3 22h-3l-7.1-18.6-7 18.6h-3l-8.2-22h3.3L204 356l6.8-18.5h3.4L221 356l6.6-18.5h3.3zm10 11.6v-1.4c0-7.8 5.2-10.7 12.7-10.7 7.6 0 13 2.9 13 10.7v1.4c0 7.9-5.4 10.8-13 10.8-7.5 0-12.7-3-12.7-10.8zm22.8 0v-1.4c0-5.7-4-8-10-8s-9.9 2.3-9.9 8v1.4c0 5.8 3.8 8.2 9.8 8.2 6.1 0 10-2.4 10-8.2zm28.3 2.4h-9.8v7.9h-2.8v-22h13.2c5.2 0 8 1.9 8 6.8 0 3.7-2 6.3-5.6 7l6 8.2h-3.3l-5.8-8zm-9.8-2.6h10.2c3 0 5.2-1.5 5.2-4.7 0-3.3-2.1-4.1-5.2-4.1h-10.2v8.8zm40.3-1.5l-6.8 5.6v6.4h-2.9v-22h2.9v12.3l15.2-12.2h3.7l-9.9 8.1 10.3 13.8h-3.6l-8.9-12z" />
|
4
|
+
<path fill="#050A14"
|
5
|
+
d="M188.4 71.7a10.4 10.4 0 01-20.8 0 10.4 10.4 0 1120.8 0zM224.2 45c-2.2-3.9-5-7.5-8.2-10.7l-12 7c-3.7-3.2-8-5.7-12.6-7.3a49.4 49.4 0 00-9.7 13.9 59 59 0 0140.1 14l7.6-4.4a57 57 0 00-5.2-12.5zM178 125.1c4.5 0 9-.6 13.4-1.7v-14a40 40 0 0012.5-7.2 47.7 47.7 0 00-7.1-15.3 59 59 0 01-32.2 27.7v8.7c4.4 1.2 8.9 1.8 13.4 1.8zM131.8 45c-2.3 4-4 8.1-5.2 12.5l12 7a40 40 0 000 14.4c5.7 1.5 11.3 2 16.9 1.5a59 59 0 01-8-41.7l-7.5-4.3c-3.2 3.2-6 6.7-8.2 10.6z" />
|
6
|
+
<path fill="#00B4FF"
|
7
|
+
d="M224.2 98.4c2.3-3.9 4-8 5.2-12.4l-12-7a40 40 0 000-14.5c-5.7-1.5-11.3-2-16.9-1.5a59 59 0 018 41.7l7.5 4.4c3.2-3.2 6-6.8 8.2-10.7zm-92.4 0c2.2 4 5 7.5 8.2 10.7l12-7a40 40 0 0012.6 7.3c4-4.1 7.3-8.8 9.7-13.8a59 59 0 01-40-14l-7.7 4.4c1.2 4.3 3 8.5 5.2 12.4zm46.2-80c-4.5 0-9 .5-13.4 1.7V34a40 40 0 00-12.5 7.2c1.5 5.7 4 10.8 7.1 15.4a59 59 0 0132.2-27.7V20a53.3 53.3 0 00-13.4-1.8z" />
|
8
|
+
<path fill="#00B4FF"
|
9
|
+
d="M178 9.2a62.6 62.6 0 11-.1 125.2A62.6 62.6 0 01178 9.2m0-9.2a71.7 71.7 0 100 143.5A71.7 71.7 0 00178 0z" />
|
10
|
+
<path fill="#050A14"
|
11
|
+
d="M96.6 212v4.3c-9.2-.8-15.4-5.8-15.4-17.8V180h4.6v18.4c0 8.6 4 12.6 10.8 13.5zm16-31.9v18.4c0 8.9-4.3 12.8-10.9 13.5v4.4c9.2-.7 15.5-5.6 15.5-18v-18.3h-4.7zM62.2 199v-2.2c0-12.7-8.8-17.4-21-17.4-12.1 0-20.7 4.7-20.7 17.4v2.2c0 12.8 8.6 17.6 20.7 17.6 1.5 0 3-.1 4.4-.3l11.8 6.2 2-3.3-8.2-4-6.4-3.1a32 32 0 01-3.6.2c-9.8 0-16-3.9-16-13.3v-2.2c0-9.3 6.2-13.1 16-13.1 9.9 0 16.3 3.8 16.3 13.1v2.2c0 5.3-2.1 8.7-5.6 10.8l4.8 2.4c3.4-2.8 5.5-7 5.5-13.2zM168 215.6h5.1L156 179.7h-4.8l17 36zM143 205l7.4-15.7-2.4-5-15.1 31.4h5.1l3.3-7h18.3l-1.8-3.7H143zm133.7 10.7h5.2l-17.3-35.9h-4.8l17 36zm-25-10.7l7.4-15.7-2.4-5-15.1 31.4h5.1l3.3-7h18.3l-1.7-3.7h-14.8zm73.8-2.5c6-1.2 9-5.4 9-11.4 0-8-4.5-10.9-12.9-10.9h-21.4v35.5h4.6v-31.3h16.5c5 0 8.5 1.4 8.5 6.7 0 5.2-3.5 7.7-8.5 7.7h-11.4v4.1h10.7l9.3 12.8h5.5l-9.9-13.2zm-117.4 9.9c-9.7 0-14.7-2.5-18.6-6.3l-2.2 3.8c5.1 5 11 6.7 21 6.7 1.6 0 3.1-.1 4.6-.3l-1.9-4h-3zm18.4-7c0-6.4-4.7-8.6-13.8-9.4l-10.1-1c-6.7-.7-9.3-2.2-9.3-5.6 0-2.5 1.4-4 4.6-5l-1.8-3.8c-4.7 1.4-7.5 4.2-7.5 8.9 0 5.2 3.4 8.7 13 9.6l11.3 1.2c6.4.6 8.9 2 8.9 5.4 0 2.7-2.1 4.7-6 5.8l1.8 3.9c5.3-1.6 8.9-4.7 8.9-10zm-20.3-21.9c7.9 0 13.3 1.8 18.1 5.7l1.8-3.9a30 30 0 00-19.6-5.9c-2 0-4 .1-5.7.3l1.9 4 3.5-.2z" />
|
12
|
+
<path fill="#00B4FF"
|
13
|
+
d="M.5 251.9c29.6-.5 59.2-.8 88.8-1l88.7-.3 88.7.3 44.4.4 44.4.6-44.4.6-44.4.4-88.7.3-88.7-.3a7981 7981 0 01-88.8-1z" />
|
14
|
+
<path fill="none" d="M-565.2 324H-252v15.8h-313.2z" />
|
15
|
+
</svg>
|
@@ -0,0 +1,21 @@
|
|
1
|
+
<template>
|
2
|
+
<q-card>
|
3
|
+
<q-card-section>
|
4
|
+
<div class="row no-wrap items-center">
|
5
|
+
<q-avatar square style="height: 300px; width: 300px">
|
6
|
+
<img alt="Logo" :src="logo" />
|
7
|
+
</q-avatar>
|
8
|
+
</div>
|
9
|
+
</q-card-section>
|
10
|
+
</q-card>
|
11
|
+
</template>
|
12
|
+
|
13
|
+
<script lang="ts">
|
14
|
+
export default {
|
15
|
+
name: 'HelloWorldComponent'
|
16
|
+
}
|
17
|
+
</script>
|
18
|
+
|
19
|
+
<script lang="ts" setup>
|
20
|
+
import logo from 'src/assets/quasar-logo-vertical.svg'
|
21
|
+
</script>
|
@@ -0,0 +1,40 @@
|
|
1
|
+
export interface Language {
|
2
|
+
isoName: string
|
3
|
+
darkMode: string
|
4
|
+
}
|
5
|
+
|
6
|
+
import type { Ref } from 'vue'
|
7
|
+
import { ref } from 'vue'
|
8
|
+
import en from './en-US.js'
|
9
|
+
export const lang = ref(en)
|
10
|
+
|
11
|
+
const locales = import.meta.glob<{ default: Language }>([
|
12
|
+
'./*.ts',
|
13
|
+
'!./index.ts'
|
14
|
+
])
|
15
|
+
|
16
|
+
export const defineLang = (lang: Language) => {
|
17
|
+
return lang
|
18
|
+
}
|
19
|
+
|
20
|
+
export const useLang = () => {
|
21
|
+
return lang as Ref<Language>
|
22
|
+
}
|
23
|
+
|
24
|
+
let loadingLanguage = false
|
25
|
+
export const loadLang = async (isoName: string) => {
|
26
|
+
if (!loadingLanguage) {
|
27
|
+
loadingLanguage = true
|
28
|
+
try {
|
29
|
+
const data = (await locales[`./${isoName}.ts`]()).default
|
30
|
+
|
31
|
+
if (data) {
|
32
|
+
lang.value = data
|
33
|
+
}
|
34
|
+
} catch (e) {
|
35
|
+
if (import.meta.env.DEBUG) console.error(e)
|
36
|
+
throw new Error(`[petboarding] Failed to load ${isoName} language file.`)
|
37
|
+
}
|
38
|
+
loadingLanguage = false
|
39
|
+
}
|
40
|
+
}
|
@@ -0,0 +1,115 @@
|
|
1
|
+
<template>
|
2
|
+
<md3-layout :ready="ready">
|
3
|
+
<template #header-toolbar>
|
4
|
+
<q-toolbar-title> {{ title }} </q-toolbar-title>
|
5
|
+
|
6
|
+
<q-btn icon="i-mdi-more-vert" flat>
|
7
|
+
<q-menu>
|
8
|
+
<q-list>
|
9
|
+
<q-language-select
|
10
|
+
v-model="language"
|
11
|
+
:language-imports="languageImports"
|
12
|
+
:locales="languageLocales"
|
13
|
+
/>
|
14
|
+
<q-item>
|
15
|
+
<q-item-section label>
|
16
|
+
{{ lang.darkMode }}
|
17
|
+
</q-item-section>
|
18
|
+
<q-item-section side>
|
19
|
+
<q-toggle
|
20
|
+
:model-value="$q.dark.isActive"
|
21
|
+
checked-icon="i-mdi-moon-and-stars"
|
22
|
+
unchecked-icon="i-mdi-brightness-7"
|
23
|
+
size="2em"
|
24
|
+
@update:model-value="$q.dark.set"
|
25
|
+
/>
|
26
|
+
</q-item-section>
|
27
|
+
</q-item>
|
28
|
+
</q-list>
|
29
|
+
</q-menu>
|
30
|
+
</q-btn>
|
31
|
+
</template>
|
32
|
+
|
33
|
+
<template #drawer-mini-navigation>
|
34
|
+
<div class="col">
|
35
|
+
<navigation-tabs vertical dense />
|
36
|
+
</div>
|
37
|
+
</template>
|
38
|
+
|
39
|
+
<template #drawer>
|
40
|
+
<q-scroll-area class="fit">
|
41
|
+
<div class="q-px-md">
|
42
|
+
<div class="text-overline">{{ title }}</div>
|
43
|
+
<q-list>
|
44
|
+
<q-item to="/" exact>
|
45
|
+
<q-item-section avatar>
|
46
|
+
<q-icon color="primary" name="i-mdi-home" />
|
47
|
+
</q-item-section>
|
48
|
+
|
49
|
+
<q-item-section>Home</q-item-section>
|
50
|
+
</q-item>
|
51
|
+
</q-list>
|
52
|
+
</div>
|
53
|
+
</q-scroll-area>
|
54
|
+
</template>
|
55
|
+
|
56
|
+
<template #footer>
|
57
|
+
<div class="column fit items-center justify-center">
|
58
|
+
<navigation-tabs dense class="col-12 lt-md" />
|
59
|
+
</div>
|
60
|
+
</template>
|
61
|
+
|
62
|
+
<template #fabs="{ showSticky }">
|
63
|
+
<router-view name="fabs" :show-sticky="showSticky" />
|
64
|
+
</template>
|
65
|
+
</md3-layout>
|
66
|
+
</template>
|
67
|
+
|
68
|
+
<script setup lang="ts">
|
69
|
+
import { ref, onMounted, watch } from 'vue'
|
70
|
+
import { useQuasar } from 'quasar'
|
71
|
+
import { QLanguageSelect } from '@simsustech/quasar-components'
|
72
|
+
import { Md3Layout } from '@simsustech/quasar-components/md3'
|
73
|
+
import { useLang, loadLang } from '../lang/index.js'
|
74
|
+
import { loadLang as loadComponentsFormLang } from '@simsustech/quasar-components/form'
|
75
|
+
import NavigationTabs from './NavigationTabs.vue'
|
76
|
+
|
77
|
+
const lang = useLang()
|
78
|
+
|
79
|
+
const $q = useQuasar()
|
80
|
+
|
81
|
+
const language = ref($q.lang.isoName)
|
82
|
+
|
83
|
+
const title = ref('Quasar MD3')
|
84
|
+
|
85
|
+
const languageLocales = ref([
|
86
|
+
{
|
87
|
+
icon: 'i-flagpack-nl',
|
88
|
+
isoName: 'nl'
|
89
|
+
},
|
90
|
+
{
|
91
|
+
icon: 'i-flagpack-us',
|
92
|
+
isoName: 'en-US'
|
93
|
+
}
|
94
|
+
])
|
95
|
+
|
96
|
+
const languageImports = ref({
|
97
|
+
nl: () => import(`quasar/lang/nl.js`),
|
98
|
+
'en-US': () => import(`quasar/lang/en-US.js`)
|
99
|
+
})
|
100
|
+
|
101
|
+
if (lang.value.isoName !== $q.lang.isoName) loadLang($q.lang.isoName)
|
102
|
+
watch($q.lang, () => {
|
103
|
+
loadLang($q.lang.isoName)
|
104
|
+
loadComponentsFormLang($q.lang.isoName)
|
105
|
+
})
|
106
|
+
|
107
|
+
const ready = ref(false)
|
108
|
+
onMounted(async () => {
|
109
|
+
if (__IS_PWA__) {
|
110
|
+
await import('../pwa.js')
|
111
|
+
}
|
112
|
+
|
113
|
+
ready.value = true
|
114
|
+
})
|
115
|
+
</script>
|
@@ -0,0 +1,29 @@
|
|
1
|
+
<template>
|
2
|
+
<div
|
3
|
+
class="fullscreen bg-blue text-white text-center q-pa-md flex flex-center"
|
4
|
+
>
|
5
|
+
<div>
|
6
|
+
<div style="font-size: 30vh">404</div>
|
7
|
+
|
8
|
+
<div class="text-h2" style="opacity: 0.4">Oops. Nothing here...</div>
|
9
|
+
|
10
|
+
<q-btn
|
11
|
+
class="q-mt-xl"
|
12
|
+
color="white"
|
13
|
+
text-color="blue"
|
14
|
+
unelevated
|
15
|
+
to="/"
|
16
|
+
label="Go Home"
|
17
|
+
no-caps
|
18
|
+
/>
|
19
|
+
</div>
|
20
|
+
</div>
|
21
|
+
</template>
|
22
|
+
|
23
|
+
<scirpt lang="ts">
|
24
|
+
export default {
|
25
|
+
name: 'Error404Page'
|
26
|
+
}
|
27
|
+
</scirpt>
|
28
|
+
|
29
|
+
<script setup lang="ts"></script>
|
@@ -0,0 +1,15 @@
|
|
1
|
+
<template>
|
2
|
+
<q-page class="row items-center justify-evenly">
|
3
|
+
<hello-world> </hello-world>
|
4
|
+
</q-page>
|
5
|
+
</template>
|
6
|
+
|
7
|
+
<scirpt lang="ts">
|
8
|
+
export default {
|
9
|
+
name: 'IndexPage'
|
10
|
+
}
|
11
|
+
</scirpt>
|
12
|
+
|
13
|
+
<script setup lang="ts">
|
14
|
+
import HelloWorld from '../../components/HelloWorld.vue'
|
15
|
+
</script>
|
@@ -0,0 +1,21 @@
|
|
1
|
+
<template>
|
2
|
+
<navigation-rail-fabs
|
3
|
+
:bus-emits="busEmits"
|
4
|
+
:icons="icons"
|
5
|
+
:seek-attention="!customer"
|
6
|
+
type="add"
|
7
|
+
/>
|
8
|
+
</template>
|
9
|
+
|
10
|
+
<script lang="ts" setup>
|
11
|
+
import { NavigationRailFabs } from '@simsustech/quasar-components/md3'
|
12
|
+
import { ref } from 'vue'
|
13
|
+
|
14
|
+
const busEmits = ref({
|
15
|
+
add: 'index-add'
|
16
|
+
})
|
17
|
+
|
18
|
+
const icons = ref({
|
19
|
+
add: 'i-mdi-add'
|
20
|
+
})
|
21
|
+
</script>
|
@@ -0,0 +1,21 @@
|
|
1
|
+
import { useRegisterSW } from 'virtual:pwa-register/vue'
|
2
|
+
import { watch } from 'vue'
|
3
|
+
import { Notify } from 'quasar'
|
4
|
+
import { useLang } from './lang/index.js'
|
5
|
+
|
6
|
+
const { needRefresh, updateServiceWorker } = useRegisterSW()
|
7
|
+
const lang = useLang()
|
8
|
+
|
9
|
+
watch(needRefresh, (val) => {
|
10
|
+
if (val) {
|
11
|
+
Notify.create({
|
12
|
+
icon: 'i-mdi-warning',
|
13
|
+
color: 'warning',
|
14
|
+
textColor: 'dark',
|
15
|
+
message: lang.value.updateAvailable,
|
16
|
+
closeBtn: lang.value.refresh,
|
17
|
+
onDismiss: updateServiceWorker,
|
18
|
+
timeout: 0
|
19
|
+
})
|
20
|
+
}
|
21
|
+
})
|
@@ -0,0 +1,17 @@
|
|
1
|
+
import {
|
2
|
+
createMemoryHistory,
|
3
|
+
createRouter as _createRouter,
|
4
|
+
createWebHistory
|
5
|
+
} from 'vue-router'
|
6
|
+
import routes from './routes'
|
7
|
+
|
8
|
+
export default function createRouter() {
|
9
|
+
return _createRouter({
|
10
|
+
// use appropriate history implementation for server/client
|
11
|
+
// import.meta.env.SSR is injected by Vite.
|
12
|
+
history: import.meta.env.SSR
|
13
|
+
? createMemoryHistory(__BASE_URL__)
|
14
|
+
: createWebHistory(__BASE_URL__),
|
15
|
+
routes
|
16
|
+
})
|
17
|
+
}
|
@@ -0,0 +1,27 @@
|
|
1
|
+
import { RouteRecordRaw } from 'vue-router'
|
2
|
+
|
3
|
+
const routes: RouteRecordRaw[] = [
|
4
|
+
{
|
5
|
+
path: '/',
|
6
|
+
component: () => import('../layouts/MainLayout.vue'),
|
7
|
+
children: [
|
8
|
+
{
|
9
|
+
path: '',
|
10
|
+
components: {
|
11
|
+
default: () => import('../pages/IndexPage/IndexPage.vue'),
|
12
|
+
fabs: () => import('../pages/IndexPage/IndexPageFabs.vue')
|
13
|
+
}
|
14
|
+
}
|
15
|
+
]
|
16
|
+
},
|
17
|
+
|
18
|
+
// Always leave this as last one,
|
19
|
+
// but you can also remove it
|
20
|
+
{
|
21
|
+
path: '/404',
|
22
|
+
alias: '/:catchAll(.*)*',
|
23
|
+
component: () => import('../pages/Error404Page.vue')
|
24
|
+
}
|
25
|
+
]
|
26
|
+
|
27
|
+
export default routes
|