diff --git a/.husky/pre-commit b/.husky/pre-commit new file mode 100644 index 0000000..413629a --- /dev/null +++ b/.husky/pre-commit @@ -0,0 +1,4 @@ +#!/usr/bin/env sh +. "$(dirname -- "$0")/_/husky.sh" + +npm run typecheck diff --git a/nuxt.config.ts b/nuxt.config.ts index 1694399..97ef916 100644 --- a/nuxt.config.ts +++ b/nuxt.config.ts @@ -5,9 +5,10 @@ import {resolve} from 'path'; const SRC = resolve(__dirname, 'src'); export default defineNuxtConfig({ - rootDir: SRC, + srcDir: SRC, app: { head: { + title: 'Canvas 3D', link: [{rel: 'icon', href: '/favicon.svg'}], }, }, diff --git a/package-lock.json b/package-lock.json index 057fb05..d759dff 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9,6 +9,7 @@ "@vueuse/core": "^9.3.1", "@vueuse/nuxt": "^9.3.1", "nuxt": "^3.0.0", + "husky": "^8.0.2", "sass": "^1.55.0" } }, @@ -826,6 +827,7 @@ "dev": true }, "node_modules/@nuxt/kit": { + "version": "3.0.0", "resolved": "https://registry.npmjs.org/@nuxt/kit/-/kit-3.0.0.tgz", "integrity": "sha512-7ZsOLt5s9a0ZleAIzmoD70JwkZf5ti6bDdxl6f8ew7Huxz+ni/oRfTPTX9TrORXsgW5CvDt6Q9M7IJNPkAN/Iw==", @@ -961,6 +963,94 @@ "vue": "^3.2.45" } }, + "node_modules/@nuxt/vite-builder/node_modules/@nuxt/kit": { + "version": "3.0.0-rc.11", + "resolved": "https://registry.npmjs.org/@nuxt/kit/-/kit-3.0.0-rc.11.tgz", + "integrity": "sha512-o0E/k635Lzcxp4K5t0ToHC6WwQ1wyN0EIqMAQEzgiUexoAhzdURr21QI0D6e6U461u4KP7x92wYM87VxhMFXmQ==", + "dev": true, + "dependencies": { + "@nuxt/schema": "3.0.0-rc.11", + "c12": "^0.2.13", + "consola": "^2.15.3", + "defu": "^6.1.0", + "globby": "^13.1.2", + "hash-sum": "^2.0.0", + "ignore": "^5.2.0", + "jiti": "^1.16.0", + "knitwork": "^0.1.2", + "lodash.template": "^4.5.0", + "mlly": "^0.5.16", + "pathe": "^0.3.8", + "pkg-types": "^0.3.5", + "scule": "^0.3.2", + "semver": "^7.3.7", + "unctx": "^2.0.2", + "unimport": "^0.6.7", + "untyped": "^0.5.0" + }, + "engines": { + "node": "^14.16.0 || ^16.11.0 || ^17.0.0 || ^18.0.0" + } + }, + "node_modules/@nuxt/vite-builder/node_modules/@nuxt/schema": { + "version": "3.0.0-rc.11", + "resolved": "https://registry.npmjs.org/@nuxt/schema/-/schema-3.0.0-rc.11.tgz", + "integrity": "sha512-EIBYQeBxJ+JZ8RjPRGaXM9+vtWMHQ4HsqZIw5a+p6hqRLGf53fHANT4vjMQZA4fAYBnJZJI7dB/OXkfyb/kikA==", + "dev": true, + "dependencies": { + "c12": "^0.2.13", + "create-require": "^1.1.1", + "defu": "^6.1.0", + "jiti": "^1.16.0", + "pathe": "^0.3.8", + "pkg-types": "^0.3.5", + "postcss-import-resolver": "^2.0.0", + "scule": "^0.3.2", + "std-env": "^3.2.1", + "ufo": "^0.8.5", + "unimport": "^0.6.7" + }, + "engines": { + "node": "^14.16.0 || ^16.11.0 || ^17.0.0 || ^18.0.0" + } + }, + "node_modules/@nuxt/vite-builder/node_modules/@rollup/pluginutils": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-4.2.1.tgz", + "integrity": "sha512-iKnFXr7NkdZAIHiIWE+BX5ULi/ucVFYWD6TbAV+rZctiRTY2PL6tsIKhoIOaoskiWAkgu+VsbXgUVDNLHf+InQ==", + "dev": true, + "dependencies": { + "estree-walker": "^2.0.1", + "picomatch": "^2.2.2" + }, + "engines": { + "node": ">= 8.0.0" + } + }, + "node_modules/@nuxt/vite-builder/node_modules/@rollup/pluginutils/node_modules/estree-walker": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", + "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", + "dev": true + }, + "node_modules/@nuxt/vite-builder/node_modules/unimport": { + "version": "0.6.8", + "resolved": "https://registry.npmjs.org/unimport/-/unimport-0.6.8.tgz", + "integrity": "sha512-MWkaPYvN0j+6jfEuiVFhfmy+aOtgAP11CozSbu/I3Cx+8ybjXIueB7GVlKofHabtjzSlPeAvWKJSFjHWsG2JaA==", + "dev": true, + "dependencies": { + "@rollup/pluginutils": "^4.2.1", + "escape-string-regexp": "^5.0.0", + "fast-glob": "^3.2.12", + "local-pkg": "^0.4.2", + "magic-string": "^0.26.4", + "mlly": "^0.5.16", + "pathe": "^0.3.8", + "scule": "^0.3.2", + "strip-literal": "^0.4.2", + "unplugin": "^0.9.6" + } + }, "node_modules/@rollup/plugin-alias": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/@rollup/plugin-alias/-/plugin-alias-4.0.2.tgz", @@ -1534,46 +1624,20 @@ "dev": true }, "node_modules/@vueuse/core": { - "version": "9.3.1", - "resolved": "https://registry.npmjs.org/@vueuse/core/-/core-9.3.1.tgz", - "integrity": "sha512-xriyD+v3D2ObH/UtnkEl+1sbcLBVHNaZaLi/rqoNEe/B92hggDEFQIGXoQUjdRzYOjASHSezf9uCDtmd7LeWyA==", + "version": "9.4.0", + "resolved": "https://registry.npmjs.org/@vueuse/core/-/core-9.4.0.tgz", + "integrity": "sha512-JzgenGj1ZF2BHOen5rsFiAyyI9sXAv7aKhNLlm9b7SwYQeKTcxTWdhudonURCSP3Egl9NQaRBzes2lv/1JUt/Q==", "dev": true, "dependencies": { "@types/web-bluetooth": "^0.0.16", - "@vueuse/metadata": "9.3.1", - "@vueuse/shared": "9.3.1", + "@vueuse/metadata": "9.4.0", + "@vueuse/shared": "9.4.0", "vue-demi": "*" }, "funding": { "url": "https://github.com/sponsors/antfu" } }, - "node_modules/@vueuse/core/node_modules/vue-demi": { - "version": "0.13.11", - "resolved": "https://registry.npmjs.org/vue-demi/-/vue-demi-0.13.11.tgz", - "integrity": "sha512-IR8HoEEGM65YY3ZJYAjMlKygDQn25D5ajNFNoKh9RSDMQtlzCxtfQjdQgv9jjK+m3377SsJXY8ysq8kLCZL25A==", - "dev": true, - "hasInstallScript": true, - "bin": { - "vue-demi-fix": "bin/vue-demi-fix.js", - "vue-demi-switch": "bin/vue-demi-switch.js" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/antfu" - }, - "peerDependencies": { - "@vue/composition-api": "^1.0.0-rc.1", - "vue": "^3.0.0-0 || ^2.6.0" - }, - "peerDependenciesMeta": { - "@vue/composition-api": { - "optional": true - } - } - }, "node_modules/@vueuse/head": { "version": "1.0.16", "resolved": "https://registry.npmjs.org/@vueuse/head/-/head-1.0.16.tgz", @@ -1590,23 +1654,23 @@ } }, "node_modules/@vueuse/metadata": { - "version": "9.3.1", - "resolved": "https://registry.npmjs.org/@vueuse/metadata/-/metadata-9.3.1.tgz", - "integrity": "sha512-G1BPhtx3OHaL/y4OZBofh6Xt02G1VA9PuOO8nac9sTKMkMqfyez5VfkF3D9GUjSRNO7cVWyH4rceeGXfr2wdMg==", + "version": "9.4.0", + "resolved": "https://registry.npmjs.org/@vueuse/metadata/-/metadata-9.4.0.tgz", + "integrity": "sha512-7GKMdGAsJyQJl35MYOz/RDpP0FxuiZBRDSN79QIPbdqYx4Sd0sVTnIC68KJ6Oln0t0SouvSUMvRHuno216Ud2Q==", "dev": true, "funding": { "url": "https://github.com/sponsors/antfu" } }, "node_modules/@vueuse/nuxt": { - "version": "9.3.1", - "resolved": "https://registry.npmjs.org/@vueuse/nuxt/-/nuxt-9.3.1.tgz", - "integrity": "sha512-qj6xTaAhfCT21qfRGu57vafH0baB1n7si9J2iVGWRB8Tju7XunAPb7iCsQECWSaJRCLAvLV7dQ9W2ifHIcK5kw==", + "version": "9.4.0", + "resolved": "https://registry.npmjs.org/@vueuse/nuxt/-/nuxt-9.4.0.tgz", + "integrity": "sha512-R2XGbDAQ1kCEqnUHv+sTISOCuu7tfSpEFdYZxiIaEH+D8o2vxZx4itAoAoe1LxmyBsd9fakyQ6qpvkUeQVAfoQ==", "dev": true, "dependencies": { "@nuxt/kit": "^3.0.0-rc.11", - "@vueuse/core": "9.3.1", - "@vueuse/metadata": "9.3.1", + "@vueuse/core": "9.4.0", + "@vueuse/metadata": "9.4.0", "local-pkg": "^0.4.2", "vue-demi": "*" }, @@ -1617,36 +1681,10 @@ "nuxt": "^3.0.0-rc.9" } }, - "node_modules/@vueuse/nuxt/node_modules/vue-demi": { - "version": "0.13.11", - "resolved": "https://registry.npmjs.org/vue-demi/-/vue-demi-0.13.11.tgz", - "integrity": "sha512-IR8HoEEGM65YY3ZJYAjMlKygDQn25D5ajNFNoKh9RSDMQtlzCxtfQjdQgv9jjK+m3377SsJXY8ysq8kLCZL25A==", - "dev": true, - "hasInstallScript": true, - "bin": { - "vue-demi-fix": "bin/vue-demi-fix.js", - "vue-demi-switch": "bin/vue-demi-switch.js" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/antfu" - }, - "peerDependencies": { - "@vue/composition-api": "^1.0.0-rc.1", - "vue": "^3.0.0-0 || ^2.6.0" - }, - "peerDependenciesMeta": { - "@vue/composition-api": { - "optional": true - } - } - }, "node_modules/@vueuse/shared": { - "version": "9.3.1", - "resolved": "https://registry.npmjs.org/@vueuse/shared/-/shared-9.3.1.tgz", - "integrity": "sha512-YFu3qcnVeu0S2L4XdQJtBpDcjz6xwqHZtTv/XRhu66/yge1XVhxskUcc7VZbX52xF9A34V6KCfwncP9YDqYFiw==", + "version": "9.4.0", + "resolved": "https://registry.npmjs.org/@vueuse/shared/-/shared-9.4.0.tgz", + "integrity": "sha512-fTuem51KwMCnqUKkI8B57qAIMcFovtGgsCtAeqxIzH3i6nE9VYge+gVfneNHAAy7lj8twbkNfqQSygOPJTm4tQ==", "dev": true, "dependencies": { "vue-demi": "*" @@ -1655,32 +1693,6 @@ "url": "https://github.com/sponsors/antfu" } }, - "node_modules/@vueuse/shared/node_modules/vue-demi": { - "version": "0.13.11", - "resolved": "https://registry.npmjs.org/vue-demi/-/vue-demi-0.13.11.tgz", - "integrity": "sha512-IR8HoEEGM65YY3ZJYAjMlKygDQn25D5ajNFNoKh9RSDMQtlzCxtfQjdQgv9jjK+m3377SsJXY8ysq8kLCZL25A==", - "dev": true, - "hasInstallScript": true, - "bin": { - "vue-demi-fix": "bin/vue-demi-fix.js", - "vue-demi-switch": "bin/vue-demi-switch.js" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/antfu" - }, - "peerDependencies": { - "@vue/composition-api": "^1.0.0-rc.1", - "vue": "^3.0.0-0 || ^2.6.0" - }, - "peerDependenciesMeta": { - "@vue/composition-api": { - "optional": true - } - } - }, "node_modules/@zhead/schema": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/@zhead/schema/-/schema-1.0.1.tgz", @@ -4055,6 +4067,21 @@ "node": ">=10.17.0" } }, + "node_modules/husky": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/husky/-/husky-8.0.2.tgz", + "integrity": "sha512-Tkv80jtvbnkK3mYWxPZePGFpQ/tT3HNSs/sasF9P2YfkMezDl3ON37YN6jUUI4eTg5LcyVynlb6r4eyvOmspvg==", + "dev": true, + "bin": { + "husky": "lib/bin.js" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/typicode" + } + }, "node_modules/iconv-lite": { "version": "0.4.24", "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", @@ -5220,6 +5247,94 @@ "node": "^14.16.0 || ^16.10.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" } }, + "node_modules/nuxt/node_modules/@nuxt/kit": { + "version": "3.0.0-rc.11", + "resolved": "https://registry.npmjs.org/@nuxt/kit/-/kit-3.0.0-rc.11.tgz", + "integrity": "sha512-o0E/k635Lzcxp4K5t0ToHC6WwQ1wyN0EIqMAQEzgiUexoAhzdURr21QI0D6e6U461u4KP7x92wYM87VxhMFXmQ==", + "dev": true, + "dependencies": { + "@nuxt/schema": "3.0.0-rc.11", + "c12": "^0.2.13", + "consola": "^2.15.3", + "defu": "^6.1.0", + "globby": "^13.1.2", + "hash-sum": "^2.0.0", + "ignore": "^5.2.0", + "jiti": "^1.16.0", + "knitwork": "^0.1.2", + "lodash.template": "^4.5.0", + "mlly": "^0.5.16", + "pathe": "^0.3.8", + "pkg-types": "^0.3.5", + "scule": "^0.3.2", + "semver": "^7.3.7", + "unctx": "^2.0.2", + "unimport": "^0.6.7", + "untyped": "^0.5.0" + }, + "engines": { + "node": "^14.16.0 || ^16.11.0 || ^17.0.0 || ^18.0.0" + } + }, + "node_modules/nuxt/node_modules/@nuxt/schema": { + "version": "3.0.0-rc.11", + "resolved": "https://registry.npmjs.org/@nuxt/schema/-/schema-3.0.0-rc.11.tgz", + "integrity": "sha512-EIBYQeBxJ+JZ8RjPRGaXM9+vtWMHQ4HsqZIw5a+p6hqRLGf53fHANT4vjMQZA4fAYBnJZJI7dB/OXkfyb/kikA==", + "dev": true, + "dependencies": { + "c12": "^0.2.13", + "create-require": "^1.1.1", + "defu": "^6.1.0", + "jiti": "^1.16.0", + "pathe": "^0.3.8", + "pkg-types": "^0.3.5", + "postcss-import-resolver": "^2.0.0", + "scule": "^0.3.2", + "std-env": "^3.2.1", + "ufo": "^0.8.5", + "unimport": "^0.6.7" + }, + "engines": { + "node": "^14.16.0 || ^16.11.0 || ^17.0.0 || ^18.0.0" + } + }, + "node_modules/nuxt/node_modules/@rollup/pluginutils": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-4.2.1.tgz", + "integrity": "sha512-iKnFXr7NkdZAIHiIWE+BX5ULi/ucVFYWD6TbAV+rZctiRTY2PL6tsIKhoIOaoskiWAkgu+VsbXgUVDNLHf+InQ==", + "dev": true, + "dependencies": { + "estree-walker": "^2.0.1", + "picomatch": "^2.2.2" + }, + "engines": { + "node": ">= 8.0.0" + } + }, + "node_modules/nuxt/node_modules/estree-walker": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", + "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", + "dev": true + }, + "node_modules/nuxt/node_modules/unimport": { + "version": "0.6.8", + "resolved": "https://registry.npmjs.org/unimport/-/unimport-0.6.8.tgz", + "integrity": "sha512-MWkaPYvN0j+6jfEuiVFhfmy+aOtgAP11CozSbu/I3Cx+8ybjXIueB7GVlKofHabtjzSlPeAvWKJSFjHWsG2JaA==", + "dev": true, + "dependencies": { + "@rollup/pluginutils": "^4.2.1", + "escape-string-regexp": "^5.0.0", + "fast-glob": "^3.2.12", + "local-pkg": "^0.4.2", + "magic-string": "^0.26.4", + "mlly": "^0.5.16", + "pathe": "^0.3.8", + "scule": "^0.3.2", + "strip-literal": "^0.4.2", + "unplugin": "^0.9.6" + } + }, "node_modules/object-assign": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", @@ -6466,9 +6581,9 @@ "dev": true }, "node_modules/sass": { - "version": "1.55.0", - "resolved": "https://registry.npmjs.org/sass/-/sass-1.55.0.tgz", - "integrity": "sha512-Pk+PMy7OGLs9WaxZGJMn7S96dvlyVBwwtToX895WmCpAOr5YiJYEUJfiJidMuKb613z2xNWcXCHEuOvjZbqC6A==", + "version": "1.56.0", + "resolved": "https://registry.npmjs.org/sass/-/sass-1.56.0.tgz", + "integrity": "sha512-WFJ9XrpkcnqZcYuLRJh5qiV6ibQOR4AezleeEjTjMsCocYW59dEG19U3fwTTXxzi2Ed3yjPBp727hbbj53pHFw==", "dev": true, "dependencies": { "chokidar": ">=3.0.0 <4.0.0", @@ -7569,6 +7684,32 @@ "ufo": "^1.0.0" } }, + "node_modules/vue-demi": { + "version": "0.13.11", + "resolved": "https://registry.npmjs.org/vue-demi/-/vue-demi-0.13.11.tgz", + "integrity": "sha512-IR8HoEEGM65YY3ZJYAjMlKygDQn25D5ajNFNoKh9RSDMQtlzCxtfQjdQgv9jjK+m3377SsJXY8ysq8kLCZL25A==", + "dev": true, + "hasInstallScript": true, + "bin": { + "vue-demi-fix": "bin/vue-demi-fix.js", + "vue-demi-switch": "bin/vue-demi-switch.js" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + }, + "peerDependencies": { + "@vue/composition-api": "^1.0.0-rc.1", + "vue": "^3.0.0-0 || ^2.6.0" + }, + "peerDependenciesMeta": { + "@vue/composition-api": { + "optional": true + } + } + }, "node_modules/vue-devtools-stub": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/vue-devtools-stub/-/vue-devtools-stub-0.1.0.tgz", @@ -9040,24 +9181,15 @@ "dev": true }, "@vueuse/core": { - "version": "9.3.1", - "resolved": "https://registry.npmjs.org/@vueuse/core/-/core-9.3.1.tgz", - "integrity": "sha512-xriyD+v3D2ObH/UtnkEl+1sbcLBVHNaZaLi/rqoNEe/B92hggDEFQIGXoQUjdRzYOjASHSezf9uCDtmd7LeWyA==", + "version": "9.4.0", + "resolved": "https://registry.npmjs.org/@vueuse/core/-/core-9.4.0.tgz", + "integrity": "sha512-JzgenGj1ZF2BHOen5rsFiAyyI9sXAv7aKhNLlm9b7SwYQeKTcxTWdhudonURCSP3Egl9NQaRBzes2lv/1JUt/Q==", "dev": true, "requires": { "@types/web-bluetooth": "^0.0.16", - "@vueuse/metadata": "9.3.1", - "@vueuse/shared": "9.3.1", + "@vueuse/metadata": "9.4.0", + "@vueuse/shared": "9.4.0", "vue-demi": "*" - }, - "dependencies": { - "vue-demi": { - "version": "0.13.11", - "resolved": "https://registry.npmjs.org/vue-demi/-/vue-demi-0.13.11.tgz", - "integrity": "sha512-IR8HoEEGM65YY3ZJYAjMlKygDQn25D5ajNFNoKh9RSDMQtlzCxtfQjdQgv9jjK+m3377SsJXY8ysq8kLCZL25A==", - "dev": true, - "requires": {} - } } }, "@vueuse/head": { @@ -9073,49 +9205,31 @@ } }, "@vueuse/metadata": { - "version": "9.3.1", - "resolved": "https://registry.npmjs.org/@vueuse/metadata/-/metadata-9.3.1.tgz", - "integrity": "sha512-G1BPhtx3OHaL/y4OZBofh6Xt02G1VA9PuOO8nac9sTKMkMqfyez5VfkF3D9GUjSRNO7cVWyH4rceeGXfr2wdMg==", + "version": "9.4.0", + "resolved": "https://registry.npmjs.org/@vueuse/metadata/-/metadata-9.4.0.tgz", + "integrity": "sha512-7GKMdGAsJyQJl35MYOz/RDpP0FxuiZBRDSN79QIPbdqYx4Sd0sVTnIC68KJ6Oln0t0SouvSUMvRHuno216Ud2Q==", "dev": true }, "@vueuse/nuxt": { - "version": "9.3.1", - "resolved": "https://registry.npmjs.org/@vueuse/nuxt/-/nuxt-9.3.1.tgz", - "integrity": "sha512-qj6xTaAhfCT21qfRGu57vafH0baB1n7si9J2iVGWRB8Tju7XunAPb7iCsQECWSaJRCLAvLV7dQ9W2ifHIcK5kw==", + "version": "9.4.0", + "resolved": "https://registry.npmjs.org/@vueuse/nuxt/-/nuxt-9.4.0.tgz", + "integrity": "sha512-R2XGbDAQ1kCEqnUHv+sTISOCuu7tfSpEFdYZxiIaEH+D8o2vxZx4itAoAoe1LxmyBsd9fakyQ6qpvkUeQVAfoQ==", "dev": true, "requires": { "@nuxt/kit": "^3.0.0-rc.11", - "@vueuse/core": "9.3.1", - "@vueuse/metadata": "9.3.1", + "@vueuse/core": "9.4.0", + "@vueuse/metadata": "9.4.0", "local-pkg": "^0.4.2", "vue-demi": "*" - }, - "dependencies": { - "vue-demi": { - "version": "0.13.11", - "resolved": "https://registry.npmjs.org/vue-demi/-/vue-demi-0.13.11.tgz", - "integrity": "sha512-IR8HoEEGM65YY3ZJYAjMlKygDQn25D5ajNFNoKh9RSDMQtlzCxtfQjdQgv9jjK+m3377SsJXY8ysq8kLCZL25A==", - "dev": true, - "requires": {} - } } }, "@vueuse/shared": { - "version": "9.3.1", - "resolved": "https://registry.npmjs.org/@vueuse/shared/-/shared-9.3.1.tgz", - "integrity": "sha512-YFu3qcnVeu0S2L4XdQJtBpDcjz6xwqHZtTv/XRhu66/yge1XVhxskUcc7VZbX52xF9A34V6KCfwncP9YDqYFiw==", + "version": "9.4.0", + "resolved": "https://registry.npmjs.org/@vueuse/shared/-/shared-9.4.0.tgz", + "integrity": "sha512-fTuem51KwMCnqUKkI8B57qAIMcFovtGgsCtAeqxIzH3i6nE9VYge+gVfneNHAAy7lj8twbkNfqQSygOPJTm4tQ==", "dev": true, "requires": { "vue-demi": "*" - }, - "dependencies": { - "vue-demi": { - "version": "0.13.11", - "resolved": "https://registry.npmjs.org/vue-demi/-/vue-demi-0.13.11.tgz", - "integrity": "sha512-IR8HoEEGM65YY3ZJYAjMlKygDQn25D5ajNFNoKh9RSDMQtlzCxtfQjdQgv9jjK+m3377SsJXY8ysq8kLCZL25A==", - "dev": true, - "requires": {} - } } }, "@zhead/schema": { @@ -10759,6 +10873,12 @@ "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", "dev": true }, + "husky": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/husky/-/husky-8.0.2.tgz", + "integrity": "sha512-Tkv80jtvbnkK3mYWxPZePGFpQ/tT3HNSs/sasF9P2YfkMezDl3ON37YN6jUUI4eTg5LcyVynlb6r4eyvOmspvg==", + "dev": true + }, "iconv-lite": { "version": "0.4.24", "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", @@ -12536,9 +12656,9 @@ "dev": true }, "sass": { - "version": "1.55.0", - "resolved": "https://registry.npmjs.org/sass/-/sass-1.55.0.tgz", - "integrity": "sha512-Pk+PMy7OGLs9WaxZGJMn7S96dvlyVBwwtToX895WmCpAOr5YiJYEUJfiJidMuKb613z2xNWcXCHEuOvjZbqC6A==", + "version": "1.56.0", + "resolved": "https://registry.npmjs.org/sass/-/sass-1.56.0.tgz", + "integrity": "sha512-WFJ9XrpkcnqZcYuLRJh5qiV6ibQOR4AezleeEjTjMsCocYW59dEG19U3fwTTXxzi2Ed3yjPBp727hbbj53pHFw==", "dev": true, "requires": { "chokidar": ">=3.0.0 <4.0.0", @@ -13376,6 +13496,13 @@ "ufo": "^1.0.0" } }, + "vue-demi": { + "version": "0.13.11", + "resolved": "https://registry.npmjs.org/vue-demi/-/vue-demi-0.13.11.tgz", + "integrity": "sha512-IR8HoEEGM65YY3ZJYAjMlKygDQn25D5ajNFNoKh9RSDMQtlzCxtfQjdQgv9jjK+m3377SsJXY8ysq8kLCZL25A==", + "dev": true, + "requires": {} + }, "vue-devtools-stub": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/vue-devtools-stub/-/vue-devtools-stub-0.1.0.tgz", diff --git a/package.json b/package.json index 1ac4d73..f62d06a 100644 --- a/package.json +++ b/package.json @@ -10,14 +10,19 @@ "scripts": { "build": "nuxt build", "dev": "nuxt dev", + "typecheck": "nuxt typecheck", + "info": "nuxt info", + "analyze": "nuxt analyze", "generate": "nuxt generate", "preview": "nuxt preview", - "postinstall": "nuxt prepare" + "postinstall": "nuxt prepare", + "prepare": "husky install" }, "devDependencies": { "@vueuse/core": "^9.3.1", "@vueuse/nuxt": "^9.3.1", "nuxt": "^3.0.0", + "husky": "^8.0.2", "sass": "^1.55.0" } } diff --git a/src/app.vue b/src/app.vue index 7ca1c07..f3d5c47 100644 --- a/src/app.vue +++ b/src/app.vue @@ -1,3 +1,5 @@ diff --git a/src/assets/fonts/computer-modern/cmunrm.eot b/src/assets/fonts/computer-modern/cmunrm.eot new file mode 100644 index 0000000..4c2e750 Binary files /dev/null and b/src/assets/fonts/computer-modern/cmunrm.eot differ diff --git a/src/assets/fonts/computer-modern/cmunrm.ttf b/src/assets/fonts/computer-modern/cmunrm.ttf new file mode 100644 index 0000000..5e182b3 Binary files /dev/null and b/src/assets/fonts/computer-modern/cmunrm.ttf differ diff --git a/src/assets/fonts/computer-modern/cmunrm.woff b/src/assets/fonts/computer-modern/cmunrm.woff new file mode 100644 index 0000000..9efca12 Binary files /dev/null and b/src/assets/fonts/computer-modern/cmunrm.woff differ diff --git a/src/assets/styles/_animations.scss b/src/assets/styles/_animations.scss new file mode 100644 index 0000000..3df0290 --- /dev/null +++ b/src/assets/styles/_animations.scss @@ -0,0 +1,12 @@ +.slide-leave-active, +.slide-enter-active { + transition: 1s; +} + +.slide-enter { + transform: translate(100%, 0); +} + +.slide-leave-to { + transform: translate(-100%, 0); +} diff --git a/src/assets/styles/_fonts.scss b/src/assets/styles/_fonts.scss index 330313b..66c846c 100644 --- a/src/assets/styles/_fonts.scss +++ b/src/assets/styles/_fonts.scss @@ -39,3 +39,13 @@ $fonts: ( ); @include MakeFont('Formular', $fonts, '@/assets/fonts/formular'); + +@font-face { + font-family: 'Computer Modern Serif'; + src: url('@/assets/fonts/computer-modern/cmunrm.eot'); + src: url('@/assets/fonts/computer-modern/cmunrm.eot?#iefix') format('embedded-opentype'), + url('@/assets/fonts/computer-modern/cmunrm.woff') format('woff'), + url('@/assets/fonts/computer-modern/cmunrm.ttf') format('truetype'); + font-weight: normal; + font-style: normal; +} diff --git a/src/assets/styles/_reset.scss b/src/assets/styles/_reset.scss index 293d3b1..56902b4 100644 --- a/src/assets/styles/_reset.scss +++ b/src/assets/styles/_reset.scss @@ -1,3 +1,7 @@ -body { +* { margin: 0; + padding: 0; + border: 0; + background: none; + box-sizing: border-box; } diff --git a/src/assets/styles/_scroll.scss b/src/assets/styles/_scroll.scss new file mode 100644 index 0000000..2158625 --- /dev/null +++ b/src/assets/styles/_scroll.scss @@ -0,0 +1,12 @@ +::-webkit-scrollbar { + width: 3px; +} + +::-webkit-scrollbar-track { + background-color: transparent; +} + +::-webkit-scrollbar-thumb { + background-color: var(--scroll-color); + transition: background-color 0.1s; +} diff --git a/src/assets/styles/_variables.scss b/src/assets/styles/_variables.scss index 27b1061..f42b2b5 100644 --- a/src/assets/styles/_variables.scss +++ b/src/assets/styles/_variables.scss @@ -1,4 +1,11 @@ :root { --background-color-primary: #f3f3f3; --font-color-primary: #3d3d3d; + --border-color: #e4e1e1; + --icon-color: #5e5f60; + --seconary-color: #8d8d8d; + --scroll-color: #d4d3d4; + --shadow-color: rgba(163, 167, 174, 0.2); + --border: 1px solid var(--border-color); + --shadow: 0 0 9px 0 var(--shadow-color); } diff --git a/src/assets/styles/main.scss b/src/assets/styles/main.scss index 055d9c7..d76d7e4 100644 --- a/src/assets/styles/main.scss +++ b/src/assets/styles/main.scss @@ -1,6 +1,8 @@ @import 'reset'; @import 'variables'; @import 'fonts'; +@import 'scroll'; +@import 'animations'; html, body, #__nuxt { width: 100%; @@ -12,3 +14,18 @@ body { color: var(--font-color-primary); font-family: Formular, Helvetica, Arial, sans-serif; } + +button { + width: 20px; + height: 20px; + cursor: pointer; +} + +h1, h2 { + font-size: 20px; + font-weight: 600; +} + +h2 { + font-weight: 500; +} diff --git a/src/components/accordion.vue b/src/components/accordion.vue new file mode 100644 index 0000000..bcd0ae9 --- /dev/null +++ b/src/components/accordion.vue @@ -0,0 +1,48 @@ + + + + + diff --git a/src/components/form/range.vue b/src/components/form/range.vue new file mode 100644 index 0000000..056b773 --- /dev/null +++ b/src/components/form/range.vue @@ -0,0 +1,105 @@ + + + + + diff --git a/src/components/grid/container.vue b/src/components/grid/container.vue new file mode 100644 index 0000000..4b3fdd1 --- /dev/null +++ b/src/components/grid/container.vue @@ -0,0 +1,14 @@ + + + diff --git a/src/components/grid/element.vue b/src/components/grid/element.vue new file mode 100644 index 0000000..00e439b --- /dev/null +++ b/src/components/grid/element.vue @@ -0,0 +1,61 @@ + + + + + diff --git a/src/components/icon/close.vue b/src/components/icon/close.vue new file mode 100644 index 0000000..9243371 --- /dev/null +++ b/src/components/icon/close.vue @@ -0,0 +1,6 @@ + diff --git a/src/components/icon/hide.vue b/src/components/icon/hide.vue new file mode 100644 index 0000000..f550df6 --- /dev/null +++ b/src/components/icon/hide.vue @@ -0,0 +1,6 @@ + diff --git a/src/components/icon/menu.vue b/src/components/icon/menu.vue new file mode 100644 index 0000000..5a6cd67 --- /dev/null +++ b/src/components/icon/menu.vue @@ -0,0 +1,7 @@ + + diff --git a/src/components/icon/open.vue b/src/components/icon/open.vue new file mode 100644 index 0000000..3cbb88a --- /dev/null +++ b/src/components/icon/open.vue @@ -0,0 +1,6 @@ + diff --git a/src/layouts/default.vue b/src/layouts/default.vue new file mode 100644 index 0000000..3a7d6c5 --- /dev/null +++ b/src/layouts/default.vue @@ -0,0 +1,71 @@ + + + + + diff --git a/src/pages/figure.vue b/src/pages/figure.vue new file mode 100644 index 0000000..45686b0 --- /dev/null +++ b/src/pages/figure.vue @@ -0,0 +1,42 @@ + + + + + diff --git a/src/pages/index.vue b/src/pages/index.vue index a308175..c48ccff 100644 --- a/src/pages/index.vue +++ b/src/pages/index.vue @@ -1,17 +1,13 @@ + + -