rework LP, better docker

This commit is contained in:
Dan Suster 2021-01-04 19:27:24 +01:00
parent c808aa8884
commit 5e82fb204a
Signed by: dan
GPG Key ID: 8950CA05C8CEEB38
29 changed files with 5096 additions and 6909 deletions

View File

@ -1,16 +0,0 @@
{
"env": {
"test": {
"presets": [
[
"@babel/preset-env",
{
"targets": {
"node": "current"
}
}
]
]
}
}
}

View File

@ -3,7 +3,7 @@ root = true
[*]
indent_style = space
indent_size = 4
indent_size = 2
end_of_line = lf
charset = utf-8
trim_trailing_whitespace = true

View File

@ -4,18 +4,15 @@ module.exports = {
browser: true,
node: true
},
parserOptions: {
parser: 'babel-eslint'
},
extends: [
'@nuxtjs/eslint-config-typescript',
'prettier',
'prettier/vue',
'plugin:prettier/recommended',
'@nuxtjs',
'plugin:nuxt/recommended'
],
plugins: [
'prettier'
],
// add your custom rules here
rules: {
'nuxt/no-cjs-in-config': 'off'
}
rules: {}
}

View File

@ -1,5 +0,0 @@
{
"semi": false,
"arrowParens": "always",
"singleQuote": true
}

View File

@ -1,21 +1,13 @@
FROM node:slim
RUN mkdir -p /home/node/app/node_modules && chown -R node:node /home/node/app
WORKDIR /home/node/app
# build stage
FROM node:lts-alpine as build-stage
WORKDIR /app
COPY package*.json ./
USER node
RUN npm install
COPY . .
RUN npm run generate
COPY --chown=node:node . .
ENV HOST 0.0.0.0
RUN npm run build
EXPOSE 3000
CMD ["npm", "run", "start"]
# production stage
FROM nginx:stable-alpine as production-stage
COPY --from=build-stage /app/dist /usr/share/nginx/html
EXPOSE 80
CMD ["nginx", "-g", "daemon off;"]

View File

@ -1,6 +1,4 @@
# Landing Page *TheGolem.cz*
> One server to host them all!
# golem-landing-page
## Build Setup

View File

@ -1,90 +1,26 @@
<template>
<svg class="NuxtLogo" enable-background="new 0 0 1109 1097" height="347" id="Layer_1" version="1.1"
viewBox="0 0 1109 1097"
width="350" x="0px" xml:space="preserve" xmlns="http://www.w3.org/2000/svg" y="0px">
<ellipse cx="604.776" cy="152.5" fill="none" rx="25" ry="30" stroke="#000000" stroke-miterlimit="10" stroke-width="5"/>
<ellipse cx="604.776" cy="152.5" fill="none" rx="2.5" ry="3" stroke="#000000" stroke-miterlimit="10"
stroke-width="5"/>
<ellipse cx="515.776" cy="152.5" fill="none" rx="25" ry="30" stroke="#000000" stroke-miterlimit="10"
stroke-width="5"/>
<ellipse cx="515.776" cy="152.5" fill="none" rx="2.5" ry="3" stroke="#000000" stroke-miterlimit="10"
stroke-width="5"/>
<path d="M530.443,285.875
c0,8.061,13.343,14.583,29.833,14.583" fill="none" stroke="#000000" stroke-linejoin="bevel" stroke-miterlimit="10"
stroke-width="5"/>
<path d="M590.109,285.875
c0,8.061-13.343,14.583-29.833,14.583" fill="none" stroke="#000000" stroke-linecap="square" stroke-miterlimit="10"
stroke-width="5"/>
<g>
<polygon points="1062.776,145 1035.276,145 735.276,145 717.776,145 717.776,102.5 717.776,50 717.776,45 712.776,45 685.276,45
560.276,45 435.276,45 407.776,45 402.776,45 402.776,50 402.776,102.5 402.776,145 385.276,145 85.276,145 57.776,145 52.776,145
52.776,150 52.776,202.5 52.776,802.5 52.776,855 52.776,860 57.776,860 85,860 85.276,860 135,860 185,860 202.5,860 202.5,902.5
202.5,1002.5 202.5,1055 202.5,1060 207.5,1060 235,1060 485,1060 512.5,1060 517.5,1060 517.5,1055 517.5,1002.5 512.5,1002.5
512.5,1055 485,1055 235,1055 207.5,1055 207.5,1002.5 207.5,902.5 207.5,855 202.5,855 185,855 135,855 85.276,855 85,855
57.776,855 57.776,802.5 57.776,202.5 57.776,150 85.276,150 385.276,150 402.776,150 407.776,150 407.776,102.5 407.776,50
435.276,50 560.276,50 685.276,50 712.776,50 712.776,102.5 712.776,150 717.776,150 735.276,150 1035.276,150 1062.776,150
1062.776,202.5 1062.776,802.5 1062.776,855 1035.552,855 1035.276,855 985.552,855 935.552,855 918.052,855 913.052,855
913.052,902.5 913.052,1002.5 913.052,1055 885.552,1055 885.552,1055 635.552,1055 635.552,1060 885.552,1060 885.552,1060
913.052,1060 918.052,1060 918.052,1055 918.052,1002.5 918.052,902.5 918.052,860 935.552,860 985.552,860 1035.276,860
1035.552,860 1062.776,860 1067.776,860 1067.776,855 1067.776,802.5 1067.776,202.5 1067.776,150 1067.776,145 "/>
<path d="M560.276,400h125h17.5h5v-47.5v-150v-100V55h-5h-17.5h-125h-125h-17.5h-5v47.5v100v150V400h5h17.5H560.276z M417.776,352.5
v-150v-100V60h17.5h125h125h17.5v42.5v100v150V395h-17.5h-125h-125h-17.5V352.5z"/>
<polygon points="963.052,802.5 963.052,850 968.052,850 985.552,850 1003.052,850 1008.052,850 1008.052,802.5 1003.052,802.5
1003.052,845 985.552,845 968.052,845 968.052,802.5 "/>
<polygon points="913.052,802.5 913.052,850 918.052,850 935.552,850 953.052,850 958.052,850 958.052,802.5 953.052,802.5
953.052,845 935.552,845 918.052,845 918.052,802.5 "/>
<polygon points="908.052,802.5 903.052,802.5 903.052,845 885.552,845 868.052,845 868.052,802.5 863.052,802.5 863.052,850
868.052,850 885.552,850 903.052,850 908.052,850 "/>
<polygon points="818.052,402.5 813.052,402.5 813.052,802.5 813.052,850 818.052,850 835.552,850 853.052,850 858.052,850
858.052,802.5 853.052,802.5 853.052,845 835.552,845 818.052,845 818.052,802.5 "/>
<polygon points="903.052,1002.5 903.052,1045 885.552,1045 885.552,1045 635.552,1045 635.552,1050 885.552,1050 885.552,1050
903.052,1050 908.052,1050 908.052,1002.5 908.052,902.5 908.052,855 903.052,855 885.552,855 835.552,855 808.052,855
808.052,802.5 808.052,402.5 803.052,402.5 803.052,802.5 803.052,855 803.052,860 808.052,860 835.552,860 885.552,860
903.052,860 903.052,902.5 "/>
<polygon points="402.776,160 402.776,202.5 402.776,352.5 402.776,405 402.776,410 407.776,410 435.276,410 560.276,410
685.276,410 712.776,410 717.776,410 717.776,405 717.776,352.5 717.776,202.5 717.776,160 735.276,160 1035.276,160 1052.776,160
1052.776,202.5 1052.776,802.5 1052.776,845 1035.552,845 1035.276,845 1018.052,845 1018.052,802.5 1013.052,802.5 1013.052,850
1018.052,850 1035.276,850 1035.552,850 1052.776,850 1057.776,850 1057.776,802.5 1057.776,202.5 1057.776,155 1052.776,155
1035.276,155 735.276,155 717.776,155 712.776,155 712.776,202.5 712.776,352.5 712.776,405 685.276,405 560.276,405 435.276,405
407.776,405 407.776,352.5 407.776,202.5 407.776,155 402.776,155 385.276,155 85.276,155 67.776,155 62.776,155 62.776,202.5
62.776,802.5 62.776,850 67.776,850 85,850 85.276,850 102.5,850 107.5,850 107.5,802.5 102.5,802.5 102.5,845 85.276,845 85,845
67.776,845 67.776,802.5 67.776,202.5 67.776,160 85.276,160 385.276,160 "/>
<polygon
points="618.052,1002.5 613.052,1002.5 613.052,1050 618.052,1050 635.552,1050 635.552,1045 618.052,1045 "/>
<polygon points="608.052,1002.5 603.052,1002.5 603.052,1055 603.052,1060 608.052,1060 635.552,1060 635.552,1055 608.052,1055
"/>
<polygon points="603.052,902.5 603.052,902.5 603.052,1002.5 608.052,1002.5 608.052,902.5 608.052,902.5 608.052,855 603.052,855
585.552,855 535,855 517.5,855 512.5,855 512.5,902.5 512.5,902.5 512.5,1002.5 517.5,1002.5 517.5,902.5 517.5,902.5 517.5,860
535,860 585.552,860 603.052,860 "/>
<polygon points="507.5,902.5 507.5,902.5 507.5,850 535,850 585.552,850 613.052,850 613.052,902.5 613.052,902.5 613.052,1002.5
618.052,1002.5 618.052,902.5 618.052,902.5 618.052,850 618.052,845 613.052,845 585.552,845 535,845 507.5,845 502.5,845
502.5,850 502.5,902.5 502.5,902.5 502.5,1002.5 507.5,1002.5 "/>
<polygon points="112.5,802.5 112.5,850 117.5,850 135,850 152.5,850 157.5,850 157.5,802.5 152.5,802.5 152.5,845 135,845
117.5,845 117.5,802.5 "/>
<polygon points="162.5,802.5 162.5,850 167.5,850 185,850 202.5,850 207.5,850 207.5,802.5 202.5,802.5 202.5,845 185,845
167.5,845 167.5,802.5 "/>
<polygon points="212.5,802.5 212.5,850 217.5,850 235,850 252.5,850 257.5,850 257.5,802.5 252.5,802.5 252.5,845 235,845
217.5,845 217.5,802.5 "/>
<polygon points="262.5,802.5 262.5,850 267.5,850 285,850 302.5,850 307.5,850 307.5,802.5 307.5,402.5 302.5,402.5 302.5,802.5
302.5,845 285,845 267.5,845 267.5,802.5 "/>
<polygon points="235,1050 485,1050 502.5,1050 507.5,1050 507.5,1002.5 502.5,1002.5 502.5,1045 485,1045 235,1045 217.5,1045
217.5,1002.5 217.5,902.5 217.5,860 235,860 285,860 312.5,860 317.5,860 317.5,855 317.5,802.5 317.5,402.5 312.5,402.5
312.5,802.5 312.5,855 285,855 235,855 217.5,855 212.5,855 212.5,902.5 212.5,1002.5 212.5,1050 217.5,1050 "/>
</g>
</svg>
<img class="logo max-w-md" :src="imgSrc" alt="golem">
</template>
<script>
export default {
name: 'Logo',
props: ['imgSrc']
}
</script>
<style>
.NuxtLogo {
.logo {
animation: 2s appear;
margin: auto;
}
}
@keyframes appear {
@keyframes appear {
0% {
opacity: 0;
}
100% {
opacity: 1;
}
}
}
</style>

View File

@ -0,0 +1,61 @@
<template>
<div class="flex flex-row">
<img class="icon" :src="iconLightSrc">
<Toggle ref="toggle" class="mx-2" @change="toggleMode" />
<img class="icon" :src="iconDarkSrc">
</div>
</template>
<script>
import Toggle from '@/components/darkmode/Toggle'
export default {
name: 'DarkModeToggle',
components: {
Toggle
},
data () {
return {
iconLightSrc: '/icon/sun.svg',
iconDarkSrc: '/icon/moon.svg'
}
},
mounted () {
const initDarkMode = this.isDarkEnabled()
this.$refs.toggle.value = initDarkMode
this.updateTheme()
this.updateIcons(initDarkMode)
this.$emit('darkModeChange', initDarkMode)
},
methods: {
toggleMode (darkMode) {
localStorage.theme = darkMode ? 'dark' : 'light'
this.updateTheme()
this.updateIcons(darkMode)
this.$emit('darkModeChange', darkMode)
},
updateTheme () {
if (this.isDarkEnabled()) {
document.querySelector('html').classList.add('mode-dark')
} else {
document.querySelector('html').classList.remove('mode-dark')
}
},
isDarkEnabled () {
return (localStorage.theme === 'dark' || (!('theme' in localStorage) && window.matchMedia('(prefers-color-scheme: dark)').matches))
},
updateIcons (darkMode) {
this.iconDarkSrc = darkMode ? '/icon/moon-white.svg' : '/icon/moon.svg'
this.iconLightSrc = darkMode ? '/icon/sun-white.svg' : '/icon/sun.svg'
}
}
}
</script>
<style scoped>
.icon {
width: 24px;
height: 24px;
margin: auto;
}
</style>

View File

@ -0,0 +1,81 @@
<template>
<div>
<label class="switch">
<input v-model="value" type="checkbox" @change="$emit('change', $event.target.checked)">
<span class="slider round" />
</label>
</div>
</template>
<script>
export default {
name: 'Toggle',
data () {
return {
value: false
}
}
}
</script>
<style scoped>
/* The switch - the box around the slider */
.switch {
position: relative;
display: inline-block;
width: 60px;
height: 34px;
}
/* Hide default HTML checkbox */
.switch input {
opacity: 0;
width: 0;
height: 0;
}
/* The slider */
.slider {
position: absolute;
cursor: pointer;
top: 0;
left: 0;
right: 0;
bottom: 0;
-webkit-transition: .4s;
transition: .4s;
@apply bg-gray-dark;
}
.slider:before {
position: absolute;
content: "";
height: 26px;
width: 26px;
left: 4px;
bottom: 4px;
background-color: white;
-webkit-transition: .4s;
transition: .4s;
}
input:checked + .slider {
@apply bg-gray-DEFAULT
}
input:checked + .slider:before {
-webkit-transform: translateX(26px);
-ms-transform: translateX(26px);
transform: translateX(26px);
}
/* Rounded sliders */
.slider.round {
border-radius: 34px;
}
.slider.round:before {
border-radius: 50%;
}
</style>

11
docker-compose.yml Normal file
View File

@ -0,0 +1,11 @@
version: "3"
services:
frontend-web:
image: golem/golem-lp:latest
build: .
container_name: golem-lp
ports:
- 3333:80
volumes:
- ./config/nginx.conf:/etc/nginx/nginx.conf

View File

@ -1,23 +0,0 @@
module.exports = {
moduleNameMapper: {
'^@/(.*)$': '<rootDir>/$1',
'^~/(.*)$': '<rootDir>/$1',
'^vue$': 'vue/dist/vue.common.js'
},
moduleFileExtensions: [
'ts',
'js',
'vue',
'json'
],
transform: {
'^.+\\.ts$': 'ts-jest',
'^.+\\.js$': 'babel-jest',
'.*\\.(vue)$': 'vue-jest'
},
collectCoverage: true,
collectCoverageFrom: [
'<rootDir>/components/**/*.vue',
'<rootDir>/pages/**/*.vue'
]
}

View File

@ -1,61 +1,31 @@
<template>
<div>
<nuxt/>
<Nuxt />
</div>
</template>
<style>
@font-face {
@font-face {
font-family: GolemAscend;
src: url(https://thegolem.cz/font/GolemAscend.ttf);
}
src: url(https://thegolem.cz/public/font/GolemAscend.ttf);
}
html {
font-family: GolemAscend, 'Source Sans Pro', -apple-system, BlinkMacSystemFont, 'Segoe UI',
Roboto, 'Helvetica Neue', Arial, sans-serif;
html {
font-family: GolemAscend, sans-serif;
font-size: 16px;
word-spacing: 1px;
-ms-text-size-adjust: 100%;
-webkit-text-size-adjust: 100%;
-moz-osx-font-smoothing: grayscale;
-webkit-font-smoothing: antialiased;
box-sizing: border-box;
}
}
*,
*:before,
*:after {
*,
*::before,
*::after {
box-sizing: border-box;
margin: 0;
}
}
.button--green {
display: inline-block;
border-radius: 4px;
border: 1px solid #3b8070;
color: #3b8070;
text-decoration: none;
padding: 10px 30px;
}
.button--green:hover {
color: #fff;
background-color: #3b8070;
}
.button--grey {
display: inline-block;
border-radius: 4px;
border: 1px solid #35495e;
color: #35495e;
text-decoration: none;
padding: 10px 30px;
margin-left: 15px;
}
.button--grey:hover {
color: #fff;
background-color: #35495e;
}
</style>

View File

@ -1,64 +1,55 @@
module.exports = {
mode: 'universal',
/*
** Headers of the page
*/
export default {
// Disable server-side rendering (https://go.nuxtjs.dev/ssr-mode)
ssr: false,
// Target (https://go.nuxtjs.dev/config-target)
target: 'static',
// Global page headers (https://go.nuxtjs.dev/config-head)
head: {
title: 'TheGolem.cz',
meta: [
{ charset: 'utf-8' },
{ name: 'viewport', content: 'width=device-width, initial-scale=1' },
{ hid: 'description', name: 'description', content: process.env.npm_package_description || '' }
{ hid: 'description', name: 'description', content: '' }
],
script: [{
src: 'analytics.js'
}],
link: [
{ rel: 'icon', type: 'image/x-icon', href: '/icon_golem.png' }
],
script: [
{ src: '/analytics.js', async: true }
{ rel: 'icon', type: 'image/png', href: '/favicon.png' }
]
},
/*
** Customize the progress-bar color
*/
loading: { color: '#fff' },
/*
** Global CSS
*/
css: [],
/*
** Plugins to load before mounting the App
*/
plugins: [],
/*
** Nuxt.js dev-modules
*/
// Global CSS (https://go.nuxtjs.dev/config-css)
css: [
],
// Plugins to run before rendering page (https://go.nuxtjs.dev/config-plugins)
plugins: [
],
// Auto import components (https://go.nuxtjs.dev/config-components)
components: true,
// Modules for dev and build (recommended) (https://go.nuxtjs.dev/config-modules)
buildModules: [
'@nuxt/typescript-build'
// https://go.nuxtjs.dev/eslint
'@nuxtjs/eslint-module',
// https://go.nuxtjs.dev/tailwindcss
'@nuxtjs/tailwindcss'
],
/*
** Nuxt.js modules
*/
// Modules (https://go.nuxtjs.dev/config-modules)
modules: [
// Doc: https://bootstrap-vue.js.org
'bootstrap-vue/nuxt',
// Doc: https://axios.nuxtjs.org/usage
'@nuxtjs/axios',
// Doc: https://github.com/nuxt-community/dotenv-module
'@nuxtjs/dotenv'
// https://go.nuxtjs.dev/axios
'@nuxtjs/axios'
],
/*
** Axios module configuration
** See https://axios.nuxtjs.org/options
*/
// Axios module configuration (https://go.nuxtjs.dev/config-axios)
axios: {},
/*
** Build configuration
*/
// Build Configuration (https://go.nuxtjs.dev/config-build)
build: {
/*
** You can extend webpack config here
*/
extend(config, ctx) {
}
}
}

10857
package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@ -1,41 +1,28 @@
{
"name": "thegolem_landing_page",
"name": "golem-landing-page",
"version": "1.0.0",
"description": "Landing page for TheGolem.cz",
"author": "Dan Šuster",
"private": true,
"scripts": {
"dev": "cross-env NODE_ENV=development nodemon server/index.js --watch server",
"dev": "nuxt",
"build": "nuxt build",
"start": "cross-env NODE_ENV=production node server/index.js",
"start": "nuxt start",
"generate": "nuxt generate",
"lint": "eslint --ext .js,.vue --ignore-path .gitignore .",
"test": "jest"
"lint:js": "eslint --ext .js,.vue --ignore-path .gitignore .",
"lint": "npm run lint:js"
},
"dependencies": {
"nuxt": "^2.0.0",
"cross-env": "^5.2.0",
"express": "^4.16.4",
"bootstrap-vue": "^2.0.0",
"bootstrap": "^4.1.3",
"@nuxtjs/axios": "^5.3.6",
"@nuxtjs/dotenv": "^1.4.0"
"@nuxtjs/axios": "^5.12.2",
"core-js": "^3.6.5",
"nuxt": "^2.14.6",
"tailwindcss-dark-mode": "^1.1.7"
},
"devDependencies": {
"nodemon": "^1.18.9",
"@nuxt/typescript-build": "^0.6.0",
"@nuxtjs/eslint-config-typescript": "^1.0.0",
"@nuxtjs/eslint-module": "^1.0.0",
"babel-eslint": "^10.0.1",
"eslint": "^6.1.0",
"eslint-plugin-nuxt": ">=0.4.2",
"eslint-config-prettier": "^6.10.0",
"eslint-plugin-prettier": "^3.1.2",
"prettier": "^1.19.1",
"@vue/test-utils": "^1.0.0-beta.27",
"babel-jest": "^24.1.0",
"jest": "^24.1.0",
"vue-jest": "^4.0.0-0",
"ts-jest": "^25.0.0"
"@nuxt/types": "^2.14.12",
"@nuxtjs/eslint-config": "^3.1.0",
"@nuxtjs/eslint-module": "^2.0.0",
"@nuxtjs/tailwindcss": "^3.1.0",
"babel-eslint": "^10.1.0",
"eslint": "^7.10.0",
"eslint-plugin-nuxt": "^1.0.0"
}
}

View File

@ -1,69 +1,48 @@
<template>
<div class="container">
<div>
<logo/>
<h1 class="title">
<template xmlns:div="http://www.w3.org/1999/html">
<div class="flex flex-col h-screen w-screen bg-white dark:bg-gray-darkest">
<div class="absolute inset-0 flex flex-col">
<div class="m-auto text-center">
<Logo class="m-0" :img-src="iconGolemSrc" />
<h1 class="text-4xl md:text-6xl text-gray-darkest dark:text-gray-lightest">
TheGolem.cz
</h1>
<h2 class="subtitle">
<h2 class="text-2xl md:text-4xl text-gray-darkest dark:text-gray-lightest">
One server to host them all!
</h2>
</div>
</div>
<div class="z-10 h-full flex flex-col">
<div class="ml-auto mr-4 mt-4">
<DarkModeToggle @darkModeChange="darkModeChange" />
</div>
<div class="ml-auto mt-auto mr-2 mb-2 text-gray-darkest dark:text-gray-lightest">
contact us at: <a href="mailto:info@thegolem.cz">info@thegolem.cz</a>
</div>
</div>
</div>
</template>
<script lang="ts">
import Vue from 'vue'
import Logo from '~/components/Logo.vue'
<script>
import DarkModeToggle from '@/components/darkmode/DarkModeToggle'
export default Vue.extend({
export default {
components: {
Logo
DarkModeToggle
},
data () {
return {
iconGolemSrc: '/icon/golem.svg'
}
})
},
methods: {
darkModeChange (darkMode) {
this.iconGolemSrc = darkMode ? '/icon/golem-white.svg' : '/icon/golem.svg'
}
}
}
</script>
<style>
.container {
margin: 0 auto;
min-height: 100vh;
display: flex;
justify-content: center;
align-items: center;
text-align: center;
}
.title {
font-family: GolemAscend, 'Quicksand', 'Source Sans Pro', -apple-system, BlinkMacSystemFont,
'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif;
display: block;
font-weight: 300;
font-size: 100px;
color: #35495e;
letter-spacing: 1px;
}
.subtitle {
font-family: GolemAscend, 'Quicksand', 'Source Sans Pro', -apple-system, BlinkMacSystemFont,
'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif;
font-weight: 300;
font-size: 42px;
color: #526488;
word-spacing: 5px;
padding-bottom: 15px;
}
@media screen and (max-width: 700px) {
.title {
font-size: 50px;
}
.subtitle {
font-size: 30px;
}
}
.links {
padding-top: 15px;
}
</style>

View File

@ -1,34 +0,0 @@
const express = require('express')
const consola = require('consola')
const { Nuxt, Builder } = require('nuxt')
const app = express()
// Import and Set Nuxt.js options
const config = require('../nuxt.config.js')
config.dev = process.env.NODE_ENV !== 'production'
async function start() {
// Init Nuxt.js
const nuxt = new Nuxt(config)
const { host, port } = nuxt.options.server
await nuxt.ready()
// Build only in dev mode
if (config.dev) {
const builder = new Builder(nuxt)
await builder.build()
}
// Give nuxt middleware to express
app.use(nuxt.render)
// Listen the server
app.listen(port, host)
consola.ready({
message: `Server listening on http://${host}:${port}`,
badge: true
})
}
start()

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.4 KiB

BIN
static/favicon.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

View File

@ -0,0 +1,45 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 17.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
width="1109px" height="1097px" viewBox="0 0 1109 1097" enable-background="new 0 0 1109 1097" xml:space="preserve">
<ellipse fill="none" stroke="#FFFFFF" stroke-width="5" stroke-miterlimit="10" cx="604.776" cy="152.5" rx="25" ry="30"/>
<ellipse fill="#FFFFFF" stroke="#FFFFFF" stroke-width="5" stroke-miterlimit="10" cx="604.776" cy="152.5" rx="2.5" ry="3"/>
<ellipse fill="none" stroke="#FFFFFF" stroke-width="5" stroke-miterlimit="10" cx="515.776" cy="152.5" rx="25" ry="30"/>
<ellipse fill="#FFFFFF" stroke="#FFFFFF" stroke-width="5" stroke-miterlimit="10" cx="515.776" cy="152.5" rx="2.5" ry="3"/>
<path fill="none" stroke="#FFFFFF" stroke-width="5" stroke-miterlimit="10" d="M530.443,285.875
c0,8.061,13.388,14.583,29.933,14.583"/>
<path fill="none" stroke="#FFFFFF" stroke-width="5" stroke-miterlimit="10" d="M590.109,285.875
c0,8.061-13.343,14.583-29.833,14.583"/>
<g>
<path fill="#FFFFFF" d="M1062.776,145h-27.5h-300h-17.5v-42.5V50v-5h-5h-27.5h-125h-125h-27.5h-5v5v52.5V145h-17.5h-300h-27.5h-5v5
v52.5v600V855v5h5H85h0.276H135h50h17.5v42.5v100v52.5v5h5H235h250h27.5h5v-5v-52.5v-100V860H535h50.552h17.5v42.5v100v52.5v5h5
h27.5h250h27.5h5v-5v-52.5v-100V860h17.5h50h49.724h0.276h27.224h5v-5v-52.5v-600V150v-5H1062.776z M407.776,352.5v-150V155v-5
v-47.5V50h27.5h125h125h27.5v52.5V150v5v47.5v150V405h-27.5h-125h-125h-27.5V352.5z M913.052,902.5v100v52.5h-27.5h-250h-27.5
v-52.5v-100V855h-5h-17.5H535h-17.5h-5v47.5v100v52.5H485H235h-27.5v-52.5v-100V860h5v42.5v100v47.5h5H235h250h17.5h5v-47.5v-100
V850H535h50.552h27.5v52.5v100v47.5h5h17.5h250h17.5h5v-47.5v-100V860h5V902.5z M1062.776,202.5v600V855h-27.224h-0.276h-49.724
h-50h-17.5h-5h-5h-5h-17.5h-50h-27.5v-52.5v-400h-5v400V855v5h5h27.5h50h17.5v42.5v100v42.5h-17.5h-250h-17.5v-42.5v-100V850v-5h-5
h-27.5H535h-27.5h-5v5v52.5v100v42.5H485H235h-17.5v-42.5v-100V860H235h50h27.5h5v-5v-52.5v-400h-5v400V855H285h-50h-17.5h-5h-5h-5
H185h-50H85.276H85H57.776v-52.5v-600V150h27.5h300h17.5v5h-17.5h-300h-17.5h-5v47.5v600V850h5H85h0.276H102.5h5v-47.5h-5V845
H85.276H85H67.776v-42.5v-600V160h17.5h300h17.5v42.5v150V405v5h5h27.5h125h125h27.5h5v-5v-52.5v-150V160h17.5h300h17.5v42.5v600
V845h-17.224h-0.276h-17.224v-42.5h-5V850h5h17.224h0.276h17.224h5v-47.5v-600V155h-5h-17.5h-300h-17.5v-5h17.5h300h27.5V202.5z"/>
<path fill="#FFFFFF" d="M560.276,400h125h17.5h5v-47.5v-150v-100V55h-5h-17.5h-125h-125h-17.5h-5v47.5v100v150V400h5h17.5H560.276z
M417.776,352.5v-150v-100V60h17.5h125h125h17.5v42.5v100v150V395h-17.5h-125h-125h-17.5V352.5z"/>
<polygon fill="#FFFFFF" points="1003.052,845 985.552,845 968.052,845 968.052,802.5 963.052,802.5 963.052,850 968.052,850
985.552,850 1003.052,850 1008.052,850 1008.052,802.5 1003.052,802.5 "/>
<polygon fill="#FFFFFF" points="953.052,845 935.552,845 918.052,845 918.052,802.5 913.052,802.5 913.052,850 918.052,850
935.552,850 953.052,850 958.052,850 958.052,802.5 953.052,802.5 "/>
<polygon fill="#FFFFFF" points="903.052,845 885.552,845 868.052,845 868.052,802.5 863.052,802.5 863.052,850 868.052,850
885.552,850 903.052,850 908.052,850 908.052,802.5 903.052,802.5 "/>
<polygon fill="#FFFFFF" points="853.052,845 835.552,845 818.052,845 818.052,802.5 818.052,402.5 813.052,402.5 813.052,802.5
813.052,850 818.052,850 835.552,850 853.052,850 858.052,850 858.052,802.5 853.052,802.5 "/>
<polygon fill="#FFFFFF" points="152.5,845 135,845 117.5,845 117.5,802.5 112.5,802.5 112.5,850 117.5,850 135,850 152.5,850
157.5,850 157.5,802.5 152.5,802.5 "/>
<polygon fill="#FFFFFF" points="202.5,845 185,845 167.5,845 167.5,802.5 162.5,802.5 162.5,850 167.5,850 185,850 202.5,850
207.5,850 207.5,802.5 202.5,802.5 "/>
<polygon fill="#FFFFFF" points="252.5,845 235,845 217.5,845 217.5,802.5 212.5,802.5 212.5,850 217.5,850 235,850 252.5,850
257.5,850 257.5,802.5 252.5,802.5 "/>
<polygon fill="#FFFFFF" points="302.5,802.5 302.5,845 285,845 267.5,845 267.5,802.5 262.5,802.5 262.5,850 267.5,850 285,850
302.5,850 307.5,850 307.5,802.5 307.5,402.5 302.5,402.5 "/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 4.3 KiB

212
static/icon/golem.svg Normal file
View File

@ -0,0 +1,212 @@
<?xml version="1.0" encoding="iso-8859-1"?>
<!-- Generator: Adobe Illustrator 17.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
width="1109px" height="1097px" viewBox="0 0 1109 1097" style="enable-background:new 0 0 1109 1097;" xml:space="preserve">
<g>
<polygon points="1035.276,155 1035.276,160 1052.776,160 1052.776,202.5 1057.776,202.5 1057.776,155 1052.776,155 "/>
<polygon points="1062.776,145 1035.276,145 1035.276,150 1062.776,150 1062.776,202.5 1067.776,202.5 1067.776,150 1067.776,145
"/>
</g>
<g>
<rect x="735.276" y="155" width="300" height="5"/>
<rect x="735.276" y="145" width="300" height="5"/>
</g>
<g>
<polygon points="685.276,55 685.276,60 702.776,60 702.776,102.5 707.776,102.5 707.776,55 702.776,55 "/>
<polygon points="712.776,45 685.276,45 685.276,50 712.776,50 712.776,102.5 717.776,102.5 717.776,50 717.776,45 "/>
</g>
<g>
<rect x="560.276" y="55" width="125" height="5"/>
<rect x="560.276" y="45" width="125" height="5"/>
</g>
<g>
<rect x="1052.776" y="202.5" width="5" height="600"/>
<rect x="1062.776" y="202.5" width="5" height="600"/>
</g>
<g>
<polygon points="1057.776,850 1057.776,802.5 1052.776,802.5 1052.776,845 1035.276,845 1035.276,850 1052.776,850 "/>
<polygon points="1062.776,802.5 1062.776,855 1035.276,855 1035.276,860 1062.776,860 1067.776,860 1067.776,855 1067.776,802.5
"/>
</g>
<g>
<polygon points="1008.052,850 1008.052,802.5 1003.052,802.5 1003.052,845 985.552,845 985.552,850 1003.052,850 "/>
<rect x="985.552" y="855" width="50" height="5"/>
<polygon points="1018.052,845 1018.052,802.5 1013.052,802.5 1013.052,850 1018.052,850 1035.552,850 1035.552,845 "/>
</g>
<g>
<polygon points="958.052,850 958.052,802.5 953.052,802.5 953.052,845 935.552,845 935.552,850 953.052,850 "/>
<rect x="935.552" y="855" width="50" height="5"/>
<polygon points="968.052,845 968.052,802.5 963.052,802.5 963.052,850 968.052,850 985.552,850 985.552,845 "/>
</g>
<g>
<polygon points="903.052,845 885.552,845 885.552,850 903.052,850 908.052,850 908.052,802.5 903.052,802.5 "/>
<polygon points="913.052,855 913.052,902.5 918.052,902.5 918.052,860 935.552,860 935.552,855 918.052,855 "/>
<polygon points="885.552,855 885.552,860 903.052,860 903.052,902.5 908.052,902.5 908.052,855 903.052,855 "/>
<polygon points="918.052,845 918.052,802.5 913.052,802.5 913.052,850 918.052,850 935.552,850 935.552,845 "/>
</g>
<g>
<polygon points="858.052,850 858.052,802.5 853.052,802.5 853.052,845 835.552,845 835.552,850 853.052,850 "/>
<rect x="835.552" y="855" width="50" height="5"/>
<polygon points="868.052,845 868.052,802.5 863.052,802.5 863.052,850 868.052,850 885.552,850 885.552,845 "/>
</g>
<g>
<polygon points="835.552,850 835.552,845 818.052,845 818.052,802.5 813.052,802.5 813.052,850 818.052,850 "/>
<polygon points="808.052,860 835.552,860 835.552,855 808.052,855 808.052,802.5 803.052,802.5 803.052,855 803.052,860 "/>
</g>
<g>
<rect x="803.052" y="402.5" width="5" height="400"/>
<rect x="813.052" y="402.5" width="5" height="400"/>
</g>
<g>
<rect x="702.776" y="102.5" width="5" height="100"/>
<polygon points="712.776,155 712.776,202.5 717.776,202.5 717.776,160 735.276,160 735.276,155 717.776,155 "/>
<polygon points="717.776,145 717.776,102.5 712.776,102.5 712.776,150 717.776,150 735.276,150 735.276,145 "/>
</g>
<g>
<rect x="702.776" y="202.5" width="5" height="150"/>
<rect x="712.776" y="202.5" width="5" height="150"/>
</g>
<g>
<polygon points="707.776,400 707.776,352.5 702.776,352.5 702.776,395 685.276,395 685.276,400 702.776,400 "/>
<polygon points="712.776,352.5 712.776,405 685.276,405 685.276,410 712.776,410 717.776,410 717.776,405 717.776,352.5 "/>
</g>
<g>
<rect x="560.276" y="405" width="125" height="5"/>
<rect x="560.276" y="395" width="125" height="5"/>
</g>
<g>
<rect x="903.052" y="902.5" width="5" height="100"/>
<rect x="913.052" y="902.5" width="5" height="100"/>
</g>
<g>
<polygon points="908.052,1050 908.052,1002.5 903.052,1002.5 903.052,1045 885.552,1045 885.552,1050 903.052,1050 "/>
<polygon points="913.052,1002.5 913.052,1055 885.552,1055 885.552,1060 913.052,1060 918.052,1060 918.052,1055 918.052,1002.5
"/>
</g>
<g>
<rect x="635.552" y="1055" width="250" height="5"/>
<rect x="635.552" y="1045" width="250" height="5"/>
</g>
<g>
<rect x="603.052" y="902.5" width="5" height="100"/>
<rect x="613.052" y="902.5" width="5" height="100"/>
</g>
<g>
<polygon points="635.552,1050 635.552,1045 618.052,1045 618.052,1002.5 613.052,1002.5 613.052,1050 618.052,1050 "/>
<polygon points="608.052,1060 635.552,1060 635.552,1055 608.052,1055 608.052,1002.5 603.052,1002.5 603.052,1055 603.052,1060
"/>
</g>
<g>
<polygon points="585.552,855 585.552,860 603.052,860 603.052,902.5 608.052,902.5 608.052,855 603.052,855 "/>
<polygon points="613.052,845 585.552,845 585.552,850 613.052,850 613.052,902.5 618.052,902.5 618.052,850 618.052,845 "/>
</g>
<ellipse style="fill:none;stroke:#000000;stroke-width:5;stroke-miterlimit:10;" cx="604.776" cy="152.5" rx="25" ry="30"/>
<ellipse style="fill:#FFFFFF;stroke:#000000;stroke-width:5;stroke-miterlimit:10;" cx="604.776" cy="152.5" rx="2.5" ry="3"/>
<g>
<polygon points="85.276,155 85.276,160 67.776,160 67.776,202.5 62.776,202.5 62.776,155 67.776,155 "/>
<polygon points="57.776,145 85.276,145 85.276,150 57.776,150 57.776,202.5 52.776,202.5 52.776,150 52.776,145 "/>
</g>
<g>
<rect x="85.276" y="155" width="300" height="5"/>
<rect x="85.276" y="145" width="300" height="5"/>
</g>
<g>
<polygon points="435.276,55 435.276,60 417.776,60 417.776,102.5 412.776,102.5 412.776,55 417.776,55 "/>
<polygon points="407.776,45 435.276,45 435.276,50 407.776,50 407.776,102.5 402.776,102.5 402.776,50 402.776,45 "/>
</g>
<g>
<rect x="435.276" y="55" width="125" height="5"/>
<rect x="435.276" y="45" width="125" height="5"/>
</g>
<g>
<rect x="62.776" y="202.5" width="5" height="600"/>
<rect x="52.776" y="202.5" width="5" height="600"/>
</g>
<g>
<polygon points="62.776,850 62.776,802.5 67.776,802.5 67.776,845 85.276,845 85.276,850 67.776,850 "/>
<polygon points="57.776,802.5 57.776,855 85.276,855 85.276,860 57.776,860 52.776,860 52.776,855 52.776,802.5 "/>
</g>
<g>
<polygon points="112.5,850 112.5,802.5 117.5,802.5 117.5,845 135,845 135,850 117.5,850 "/>
<rect x="85" y="855" width="50" height="5"/>
<polygon points="102.5,845 102.5,802.5 107.5,802.5 107.5,850 102.5,850 85,850 85,845 "/>
</g>
<g>
<polygon points="162.5,850 162.5,802.5 167.5,802.5 167.5,845 185,845 185,850 167.5,850 "/>
<rect x="135" y="855" width="50" height="5"/>
<polygon points="152.5,845 152.5,802.5 157.5,802.5 157.5,850 152.5,850 135,850 135,845 "/>
</g>
<g>
<polygon points="217.5,845 235,845 235,850 217.5,850 212.5,850 212.5,802.5 217.5,802.5 "/>
<polygon points="207.5,855 207.5,902.5 202.5,902.5 202.5,860 185,860 185,855 202.5,855 "/>
<polygon points="235,855 235,860 217.5,860 217.5,902.5 212.5,902.5 212.5,855 217.5,855 "/>
<polygon points="202.5,845 202.5,802.5 207.5,802.5 207.5,850 202.5,850 185,850 185,845 "/>
</g>
<g>
<polygon points="262.5,850 262.5,802.5 267.5,802.5 267.5,845 285,845 285,850 267.5,850 "/>
<rect x="235" y="855" width="50" height="5"/>
<polygon points="252.5,845 252.5,802.5 257.5,802.5 257.5,850 252.5,850 235,850 235,845 "/>
</g>
<g>
<polygon points="285,850 285,845 302.5,845 302.5,802.5 307.5,802.5 307.5,850 302.5,850 "/>
<polygon points="312.5,860 285,860 285,855 312.5,855 312.5,802.5 317.5,802.5 317.5,855 317.5,860 "/>
</g>
<g>
<rect x="312.5" y="402.5" width="5" height="400"/>
<rect x="302.5" y="402.5" width="5" height="400"/>
</g>
<g>
<rect x="412.776" y="102.5" width="5" height="100"/>
<polygon points="407.776,155 407.776,202.5 402.776,202.5 402.776,160 385.276,160 385.276,155 402.776,155 "/>
<polygon points="402.776,145 402.776,102.5 407.776,102.5 407.776,150 402.776,150 385.276,150 385.276,145 "/>
</g>
<g>
<rect x="412.776" y="202.5" width="5" height="150"/>
<rect x="402.776" y="202.5" width="5" height="150"/>
</g>
<g>
<polygon points="412.776,400 412.776,352.5 417.776,352.5 417.776,395 435.276,395 435.276,400 417.776,400 "/>
<polygon points="407.776,352.5 407.776,405 435.276,405 435.276,410 407.776,410 402.776,410 402.776,405 402.776,352.5 "/>
</g>
<g>
<rect x="435.276" y="405" width="125" height="5"/>
<rect x="435.276" y="395" width="125" height="5"/>
</g>
<g>
<rect x="212.5" y="902.5" width="5" height="100"/>
<rect x="202.5" y="902.5" width="5" height="100"/>
</g>
<g>
<polygon points="212.5,1050 212.5,1002.5 217.5,1002.5 217.5,1045 235,1045 235,1050 217.5,1050 "/>
<polygon points="207.5,1002.5 207.5,1055 235,1055 235,1060 207.5,1060 202.5,1060 202.5,1055 202.5,1002.5 "/>
</g>
<g>
<rect x="235" y="1055" width="250" height="5"/>
<rect x="235" y="1045" width="250" height="5"/>
</g>
<g>
<rect x="512.5" y="902.5" width="5" height="100"/>
<rect x="502.5" y="902.5" width="5" height="100"/>
</g>
<g>
<polygon points="485,1050 485,1045 502.5,1045 502.5,1002.5 507.5,1002.5 507.5,1050 502.5,1050 "/>
<polygon points="512.5,1060 485,1060 485,1055 512.5,1055 512.5,1002.5 517.5,1002.5 517.5,1055 517.5,1060 "/>
</g>
<g>
<polygon points="535,855 535,860 517.5,860 517.5,902.5 512.5,902.5 512.5,855 517.5,855 "/>
<polygon points="507.5,845 535,845 535,850 507.5,850 507.5,902.5 502.5,902.5 502.5,850 502.5,845 "/>
</g>
<ellipse style="fill:none;stroke:#000000;stroke-width:5;stroke-miterlimit:10;" cx="515.776" cy="152.5" rx="25" ry="30"/>
<ellipse style="fill:#FFFFFF;stroke:#000000;stroke-width:5;stroke-miterlimit:10;" cx="515.776" cy="152.5" rx="2.5" ry="3"/>
<path style="fill:none;stroke:#000000;stroke-width:5;stroke-miterlimit:10;" d="M530.443,285.875
c0,8.061,13.388,14.583,29.933,14.583"/>
<path style="fill:none;stroke:#000000;stroke-width:5;stroke-miterlimit:10;" d="M590.109,285.875
c0,8.061-13.343,14.583-29.833,14.583"/>
<rect x="535" y="845" width="50.552" height="5"/>
<rect x="535" y="855" width="50.552" height="5"/>
<rect x="908.052" y="855" width="5" height="5"/>
<rect x="207.5" y="855" width="5" height="5"/>
<rect x="402.776" y="150" width="5" height="5"/>
<rect x="712.776" y="150" width="5" height="5"/>
</svg>

After

Width:  |  Height:  |  Size: 10 KiB

View File

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="#efefef" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-moon"><path d="M21 12.79A9 9 0 1 1 11.21 3 7 7 0 0 0 21 12.79z"></path></svg>

After

Width:  |  Height:  |  Size: 276 B

1
static/icon/moon.svg Normal file
View File

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="#181818" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-moon"><path d="M21 12.79A9 9 0 1 1 11.21 3 7 7 0 0 0 21 12.79z"></path></svg>

After

Width:  |  Height:  |  Size: 276 B

View File

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="#efefef" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-sun"><circle cx="12" cy="12" r="5"></circle><line x1="12" y1="1" x2="12" y2="3"></line><line x1="12" y1="21" x2="12" y2="23"></line><line x1="4.22" y1="4.22" x2="5.64" y2="5.64"></line><line x1="18.36" y1="18.36" x2="19.78" y2="19.78"></line><line x1="1" y1="12" x2="3" y2="12"></line><line x1="21" y1="12" x2="23" y2="12"></line><line x1="4.22" y1="19.78" x2="5.64" y2="18.36"></line><line x1="18.36" y1="5.64" x2="19.78" y2="4.22"></line></svg>

After

Width:  |  Height:  |  Size: 645 B

1
static/icon/sun.svg Normal file
View File

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="#181818" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-sun"><circle cx="12" cy="12" r="5"></circle><line x1="12" y1="1" x2="12" y2="3"></line><line x1="12" y1="21" x2="12" y2="23"></line><line x1="4.22" y1="4.22" x2="5.64" y2="5.64"></line><line x1="18.36" y1="18.36" x2="19.78" y2="19.78"></line><line x1="1" y1="12" x2="3" y2="12"></line><line x1="21" y1="12" x2="23" y2="12"></line><line x1="4.22" y1="19.78" x2="5.64" y2="18.36"></line><line x1="18.36" y1="5.64" x2="19.78" y2="4.22"></line></svg>

After

Width:  |  Height:  |  Size: 645 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.0 KiB

39
tailwind.config.js Normal file
View File

@ -0,0 +1,39 @@
module.exports = {
darkMode: 'media',
experimental: {
darkModeVariant: true
},
purge: [
'./components/**/*.{vue,js}',
'./layouts/**/*.vue',
'./pages/**/*.vue',
'./plugins/**/*.{js,ts}',
'./nuxt.config.{js,ts}'
],
theme: {
extend: {},
colors: {
transparent: 'transparent',
current: 'currentColor',
gray: {
darkest: '#181818',
dark: '#202020',
DEFAULT: '#4f4f4f',
light: '#c0c0c0',
lightest: '#efefef'
}
}
},
variants: {
extend: {
backgroundColor: ['checked'],
borderColor: ['checked'],
inset: ['checked'],
zIndex: ['hover', 'active']
}
},
plugins: [require('tailwindcss-dark-mode')()],
future: {
purgeLayersByDefault: true
}
}

View File

@ -1,9 +0,0 @@
import { mount } from '@vue/test-utils'
import Logo from '@/components/Logo.vue'
describe('Logo', () => {
test('is a Vue instance', () => {
const wrapper = mount(Logo)
expect(wrapper.isVueInstance()).toBeTruthy()
})
})

View File

@ -1,36 +0,0 @@
{
"compilerOptions": {
"target": "es2018",
"module": "esnext",
"moduleResolution": "node",
"lib": [
"esnext",
"esnext.asynciterable",
"dom"
],
"esModuleInterop": true,
"allowJs": true,
"sourceMap": true,
"strict": true,
"noEmit": true,
"experimentalDecorators": true,
"baseUrl": ".",
"paths": {
"~/*": [
"./*"
],
"@/*": [
"./*"
]
},
"types": [
"@types/node",
"@nuxt/types"
]
},
"exclude": [
"node_modules",
".nuxt",
"dist"
]
}