diff options
Diffstat (limited to 'src-vue')
40 files changed, 3012 insertions, 837 deletions
diff --git a/src-vue/README.md b/src-vue/README.md new file mode 100644 index 00000000..e6d7ea6e --- /dev/null +++ b/src-vue/README.md @@ -0,0 +1,18 @@ +# FlightCore UI + +This folder holds FlightCore's interface repository. + +This is a [Vue (v4)](https://vuejs.org/) project, using [Element Plus](https://element-plus.org/en-US/) component library. + +## Development + +```shell +# Install dependencies +npm install + +# Run in development mode +npm run dev + +# Build for production +npm run build +``` diff --git a/src-vue/index.html b/src-vue/index.html index 99f203f5..143557b5 100644 --- a/src-vue/index.html +++ b/src-vue/index.html @@ -1,12 +1,11 @@ -<!doctype html> +<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8" /> <link rel="icon" type="image/svg+xml" href="/vite.svg" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> - <title>Tauri + Vue + Typescript App</title> + <title>Vite + Vue + TS</title> </head> - <body> <div id="app"></div> <script type="module" src="/src/main.ts"></script> diff --git a/src-vue/package-lock.json b/src-vue/package-lock.json index cc182b19..3692b99e 100644 --- a/src-vue/package-lock.json +++ b/src-vue/package-lock.json @@ -1,19 +1,25 @@ { - "name": "flightcore", - "version": "0.1.0", + "name": "src-vue", + "version": "0.0.0", "lockfileVersion": 3, "requires": true, "packages": { "": { - "name": "flightcore", - "version": "0.1.0", + "name": "src-vue", + "version": "0.0.0", "dependencies": { - "vue": "^3.5.13" + "@element-plus/icons-vue": "^2.0.9", + "element-plus": "^2.7.8", + "marked": "^14.1.3", + "vue": "^3.4.35", + "vue-i18n": "^9.13.1", + "vue-router": "^4.4.3", + "vuex": "^4.0.2" }, "devDependencies": { - "@vitejs/plugin-vue": "^5.2.1", - "typescript": "~5.6.2", - "vite": "^6.0.3", + "@vitejs/plugin-vue": "^3.1.0", + "typescript": "^5.6.3", + "vite": "^3.1.0", "vue-tsc": "^2.1.10" } }, @@ -63,146 +69,28 @@ "node": ">=6.9.0" } }, - "node_modules/@esbuild/aix-ppc64": { - "version": "0.24.0", - "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.24.0.tgz", - "integrity": "sha512-WtKdFM7ls47zkKHFVzMz8opM7LkcsIp9amDUBIAWirg70RM71WRSjdILPsY5Uv1D42ZpUfaPILDlfactHgsRkw==", - "cpu": [ - "ppc64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "aix" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/android-arm": { - "version": "0.24.0", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.24.0.tgz", - "integrity": "sha512-arAtTPo76fJ/ICkXWetLCc9EwEHKaeya4vMrReVlEIUCAUncH7M4bhMQ+M9Vf+FFOZJdTNMXNBrWwW+OXWpSew==", - "cpu": [ - "arm" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/android-arm64": { - "version": "0.24.0", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.24.0.tgz", - "integrity": "sha512-Vsm497xFM7tTIPYK9bNTYJyF/lsP590Qc1WxJdlB6ljCbdZKU9SY8i7+Iin4kyhV/KV5J2rOKsBQbB77Ab7L/w==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/android-x64": { - "version": "0.24.0", - "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.24.0.tgz", - "integrity": "sha512-t8GrvnFkiIY7pa7mMgJd7p8p8qqYIz1NYiAoKc75Zyv73L3DZW++oYMSHPRarcotTKuSs6m3hTOa5CKHaS02TQ==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/darwin-arm64": { - "version": "0.24.0", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.24.0.tgz", - "integrity": "sha512-CKyDpRbK1hXwv79soeTJNHb5EiG6ct3efd/FTPdzOWdbZZfGhpbcqIpiD0+vwmpu0wTIL97ZRPZu8vUt46nBSw==", - "cpu": [ - "arm64" - ], - "dev": true, + "node_modules/@ctrl/tinycolor": { + "version": "3.6.1", + "resolved": "https://registry.npmjs.org/@ctrl/tinycolor/-/tinycolor-3.6.1.tgz", + "integrity": "sha512-SITSV6aIXsuVNV3f3O0f2n/cgyEDWoSqtZMYiAmcsYHydcKrOz3gUxB/iXd/Qf08+IZX4KpgNbvUdMBmWz+kcA==", "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/darwin-x64": { - "version": "0.24.0", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.24.0.tgz", - "integrity": "sha512-rgtz6flkVkh58od4PwTRqxbKH9cOjaXCMZgWD905JOzjFKW+7EiUObfd/Kav+A6Gyud6WZk9w+xu6QLytdi2OA==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/freebsd-arm64": { - "version": "0.24.0", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.24.0.tgz", - "integrity": "sha512-6Mtdq5nHggwfDNLAHkPlyLBpE5L6hwsuXZX8XNmHno9JuL2+bg2BX5tRkwjyfn6sKbxZTq68suOjgWqCicvPXA==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "freebsd" - ], "engines": { - "node": ">=18" + "node": ">=10" } }, - "node_modules/@esbuild/freebsd-x64": { - "version": "0.24.0", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.24.0.tgz", - "integrity": "sha512-D3H+xh3/zphoX8ck4S2RxKR6gHlHDXXzOf6f/9dbFt/NRBDIE33+cVa49Kil4WUjxMGW0ZIYBYtaGCa2+OsQwQ==", - "cpu": [ - "x64" - ], - "dev": true, + "node_modules/@element-plus/icons-vue": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/@element-plus/icons-vue/-/icons-vue-2.3.1.tgz", + "integrity": "sha512-XxVUZv48RZAd87ucGS48jPf6pKu0yV5UCg9f4FFwtrYxXOwWuVJo6wOvSLKEoMQKjv8GsX/mhP6UsC1lRwbUWg==", "license": "MIT", - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">=18" + "peerDependencies": { + "vue": "^3.2.0" } }, - "node_modules/@esbuild/linux-arm": { - "version": "0.24.0", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.24.0.tgz", - "integrity": "sha512-gJKIi2IjRo5G6Glxb8d3DzYXlxdEj2NlkixPsqePSZMhLudqPhtZ4BUrpIuTjJYXxvF9njql+vRjB2oaC9XpBw==", + "node_modules/@esbuild/android-arm": { + "version": "0.15.18", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.15.18.tgz", + "integrity": "sha512-5GT+kcs2WVGjVs7+boataCkO5Fg0y4kCjzkB5bAip7H4jfnOS3dA6KPiww9W1OEKTKeAcUVhdZGvgI65OXmUnw==", "cpu": [ "arm" ], @@ -210,50 +98,16 @@ "license": "MIT", "optional": true, "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-arm64": { - "version": "0.24.0", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.24.0.tgz", - "integrity": "sha512-TDijPXTOeE3eaMkRYpcy3LarIg13dS9wWHRdwYRnzlwlA370rNdZqbcp0WTyyV/k2zSxfko52+C7jU5F9Tfj1g==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-ia32": { - "version": "0.24.0", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.24.0.tgz", - "integrity": "sha512-K40ip1LAcA0byL05TbCQ4yJ4swvnbzHscRmUilrmP9Am7//0UjPreh4lpYzvThT2Quw66MhjG//20mrufm40mA==", - "cpu": [ - "ia32" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" + "android" ], "engines": { - "node": ">=18" + "node": ">=12" } }, "node_modules/@esbuild/linux-loong64": { - "version": "0.24.0", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.24.0.tgz", - "integrity": "sha512-0mswrYP/9ai+CU0BzBfPMZ8RVm3RGAN/lmOMgW4aFUSOQBjA31UP8Mr6DDhWSuMwj7jaWOT0p0WoZ6jeHhrD7g==", + "version": "0.15.18", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.15.18.tgz", + "integrity": "sha512-L4jVKS82XVhw2nvzLg/19ClLWg0y27ulRwuP7lcyL6AbUWB5aPglXY3M21mauDQMDfRLs8cQmeT03r/+X3cZYQ==", "cpu": [ "loong64" ], @@ -264,211 +118,76 @@ "linux" ], "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-mips64el": { - "version": "0.24.0", - "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.24.0.tgz", - "integrity": "sha512-hIKvXm0/3w/5+RDtCJeXqMZGkI2s4oMUGj3/jM0QzhgIASWrGO5/RlzAzm5nNh/awHE0A19h/CvHQe6FaBNrRA==", - "cpu": [ - "mips64el" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" + "node": ">=12" } }, - "node_modules/@esbuild/linux-ppc64": { - "version": "0.24.0", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.24.0.tgz", - "integrity": "sha512-HcZh5BNq0aC52UoocJxaKORfFODWXZxtBaaZNuN3PUX3MoDsChsZqopzi5UupRhPHSEHotoiptqikjN/B77mYQ==", - "cpu": [ - "ppc64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-riscv64": { - "version": "0.24.0", - "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.24.0.tgz", - "integrity": "sha512-bEh7dMn/h3QxeR2KTy1DUszQjUrIHPZKyO6aN1X4BCnhfYhuQqedHaa5MxSQA/06j3GpiIlFGSsy1c7Gf9padw==", - "cpu": [ - "riscv64" - ], - "dev": true, + "node_modules/@floating-ui/core": { + "version": "1.6.8", + "resolved": "https://registry.npmjs.org/@floating-ui/core/-/core-1.6.8.tgz", + "integrity": "sha512-7XJ9cPU+yI2QeLS+FCSlqNFZJq8arvswefkZrYI1yQBbftw6FyrZOxYSh+9S7z7TpeWlRt9zJ5IhM1WIL334jA==", "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-s390x": { - "version": "0.24.0", - "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.24.0.tgz", - "integrity": "sha512-ZcQ6+qRkw1UcZGPyrCiHHkmBaj9SiCD8Oqd556HldP+QlpUIe2Wgn3ehQGVoPOvZvtHm8HPx+bH20c9pvbkX3g==", - "cpu": [ - "s390x" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-x64": { - "version": "0.24.0", - "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.24.0.tgz", - "integrity": "sha512-vbutsFqQ+foy3wSSbmjBXXIJ6PL3scghJoM8zCL142cGaZKAdCZHyf+Bpu/MmX9zT9Q0zFBVKb36Ma5Fzfa8xA==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/netbsd-x64": { - "version": "0.24.0", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.24.0.tgz", - "integrity": "sha512-hjQ0R/ulkO8fCYFsG0FZoH+pWgTTDreqpqY7UnQntnaKv95uP5iW3+dChxnx7C3trQQU40S+OgWhUVwCjVFLvg==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "netbsd" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/openbsd-arm64": { - "version": "0.24.0", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.24.0.tgz", - "integrity": "sha512-MD9uzzkPQbYehwcN583yx3Tu5M8EIoTD+tUgKF982WYL9Pf5rKy9ltgD0eUgs8pvKnmizxjXZyLt0z6DC3rRXg==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "openbsd" - ], - "engines": { - "node": ">=18" + "dependencies": { + "@floating-ui/utils": "^0.2.8" } }, - "node_modules/@esbuild/openbsd-x64": { - "version": "0.24.0", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.24.0.tgz", - "integrity": "sha512-4ir0aY1NGUhIC1hdoCzr1+5b43mw99uNwVzhIq1OY3QcEwPDO3B7WNXBzaKY5Nsf1+N11i1eOfFcq+D/gOS15Q==", - "cpu": [ - "x64" - ], - "dev": true, + "node_modules/@floating-ui/dom": { + "version": "1.6.12", + "resolved": "https://registry.npmjs.org/@floating-ui/dom/-/dom-1.6.12.tgz", + "integrity": "sha512-NP83c0HjokcGVEMeoStg317VD9W7eDlGK7457dMBANbKA6GJZdc7rjujdgqzTaz93jkGgc5P/jeWbaCHnMNc+w==", "license": "MIT", - "optional": true, - "os": [ - "openbsd" - ], - "engines": { - "node": ">=18" + "dependencies": { + "@floating-ui/core": "^1.6.0", + "@floating-ui/utils": "^0.2.8" } }, - "node_modules/@esbuild/sunos-x64": { - "version": "0.24.0", - "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.24.0.tgz", - "integrity": "sha512-jVzdzsbM5xrotH+W5f1s+JtUy1UWgjU0Cf4wMvffTB8m6wP5/kx0KiaLHlbJO+dMgtxKV8RQ/JvtlFcdZ1zCPA==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "sunos" - ], - "engines": { - "node": ">=18" - } + "node_modules/@floating-ui/utils": { + "version": "0.2.8", + "resolved": "https://registry.npmjs.org/@floating-ui/utils/-/utils-0.2.8.tgz", + "integrity": "sha512-kym7SodPp8/wloecOpcmSnWJsK7M0E5Wg8UcFA+uO4B9s5d0ywXOEro/8HM9x0rW+TljRzul/14UYz3TleT3ig==", + "license": "MIT" }, - "node_modules/@esbuild/win32-arm64": { - "version": "0.24.0", - "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.24.0.tgz", - "integrity": "sha512-iKc8GAslzRpBytO2/aN3d2yb2z8XTVfNV0PjGlCxKo5SgWmNXx82I/Q3aG1tFfS+A2igVCY97TJ8tnYwpUWLCA==", - "cpu": [ - "arm64" - ], - "dev": true, + "node_modules/@intlify/core-base": { + "version": "9.14.2", + "resolved": "https://registry.npmjs.org/@intlify/core-base/-/core-base-9.14.2.tgz", + "integrity": "sha512-DZyQ4Hk22sC81MP4qiCDuU+LdaYW91A6lCjq8AWPvY3+mGMzhGDfOCzvyR6YBQxtlPjFqMoFk9ylnNYRAQwXtQ==", "license": "MIT", - "optional": true, - "os": [ - "win32" - ], + "dependencies": { + "@intlify/message-compiler": "9.14.2", + "@intlify/shared": "9.14.2" + }, "engines": { - "node": ">=18" + "node": ">= 16" + }, + "funding": { + "url": "https://github.com/sponsors/kazupon" } }, - "node_modules/@esbuild/win32-ia32": { - "version": "0.24.0", - "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.24.0.tgz", - "integrity": "sha512-vQW36KZolfIudCcTnaTpmLQ24Ha1RjygBo39/aLkM2kmjkWmZGEJ5Gn9l5/7tzXA42QGIoWbICfg6KLLkIw6yw==", - "cpu": [ - "ia32" - ], - "dev": true, + "node_modules/@intlify/message-compiler": { + "version": "9.14.2", + "resolved": "https://registry.npmjs.org/@intlify/message-compiler/-/message-compiler-9.14.2.tgz", + "integrity": "sha512-YsKKuV4Qv4wrLNsvgWbTf0E40uRv+Qiw1BeLQ0LAxifQuhiMe+hfTIzOMdWj/ZpnTDj4RSZtkXjJM7JDiiB5LQ==", "license": "MIT", - "optional": true, - "os": [ - "win32" - ], + "dependencies": { + "@intlify/shared": "9.14.2", + "source-map-js": "^1.0.2" + }, "engines": { - "node": ">=18" + "node": ">= 16" + }, + "funding": { + "url": "https://github.com/sponsors/kazupon" } }, - "node_modules/@esbuild/win32-x64": { - "version": "0.24.0", - "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.24.0.tgz", - "integrity": "sha512-7IAFPrjSQIJrGsK6flwg7NFmwBoSTyF3rl7If0hNUFQU4ilTsEPL6GuMuU9BfIWVVGuRnuIidkSMC+c0Otu8IA==", - "cpu": [ - "x64" - ], - "dev": true, + "node_modules/@intlify/shared": { + "version": "9.14.2", + "resolved": "https://registry.npmjs.org/@intlify/shared/-/shared-9.14.2.tgz", + "integrity": "sha512-uRAHAxYPeF+G5DBIboKpPgC/Waecd4Jz8ihtkpJQD5ycb5PwXp0k/+hBGl5dAjwF7w+l74kz/PKA8r8OK//RUw==", "license": "MIT", - "optional": true, - "os": [ - "win32" - ], "engines": { - "node": ">=18" + "node": ">= 16" + }, + "funding": { + "url": "https://github.com/sponsors/kazupon" } }, "node_modules/@jridgewell/sourcemap-codec": { @@ -477,290 +196,49 @@ "integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==", "license": "MIT" }, - "node_modules/@rollup/rollup-android-arm-eabi": { - "version": "4.29.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.29.1.tgz", - "integrity": "sha512-ssKhA8RNltTZLpG6/QNkCSge+7mBQGUqJRisZ2MDQcEGaK93QESEgWK2iOpIDZ7k9zPVkG5AS3ksvD5ZWxmItw==", - "cpu": [ - "arm" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "android" - ] - }, - "node_modules/@rollup/rollup-android-arm64": { - "version": "4.29.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.29.1.tgz", - "integrity": "sha512-CaRfrV0cd+NIIcVVN/jx+hVLN+VRqnuzLRmfmlzpOzB87ajixsN/+9L5xNmkaUUvEbI5BmIKS+XTwXsHEb65Ew==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "android" - ] - }, - "node_modules/@rollup/rollup-darwin-arm64": { - "version": "4.29.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.29.1.tgz", - "integrity": "sha512-2ORr7T31Y0Mnk6qNuwtyNmy14MunTAMx06VAPI6/Ju52W10zk1i7i5U3vlDRWjhOI5quBcrvhkCHyF76bI7kEw==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ] - }, - "node_modules/@rollup/rollup-darwin-x64": { - "version": "4.29.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.29.1.tgz", - "integrity": "sha512-j/Ej1oanzPjmN0tirRd5K2/nncAhS9W6ICzgxV+9Y5ZsP0hiGhHJXZ2JQ53iSSjj8m6cRY6oB1GMzNn2EUt6Ng==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ] - }, - "node_modules/@rollup/rollup-freebsd-arm64": { - "version": "4.29.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.29.1.tgz", - "integrity": "sha512-91C//G6Dm/cv724tpt7nTyP+JdN12iqeXGFM1SqnljCmi5yTXriH7B1r8AD9dAZByHpKAumqP1Qy2vVNIdLZqw==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "freebsd" - ] - }, - "node_modules/@rollup/rollup-freebsd-x64": { - "version": "4.29.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.29.1.tgz", - "integrity": "sha512-hEioiEQ9Dec2nIRoeHUP6hr1PSkXzQaCUyqBDQ9I9ik4gCXQZjJMIVzoNLBRGet+hIUb3CISMh9KXuCcWVW/8w==", - "cpu": [ - "x64" - ], - "dev": true, + "node_modules/@popperjs/core": { + "name": "@sxzz/popperjs-es", + "version": "2.11.7", + "resolved": "https://registry.npmjs.org/@sxzz/popperjs-es/-/popperjs-es-2.11.7.tgz", + "integrity": "sha512-Ccy0NlLkzr0Ex2FKvh2X+OyERHXJ88XJ1MXtsI9y9fGexlaXaVTPzBCRBwIxFkORuOb+uBqeu+RqnpgYTEZRUQ==", "license": "MIT", - "optional": true, - "os": [ - "freebsd" - ] - }, - "node_modules/@rollup/rollup-linux-arm-gnueabihf": { - "version": "4.29.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.29.1.tgz", - "integrity": "sha512-Py5vFd5HWYN9zxBv3WMrLAXY3yYJ6Q/aVERoeUFwiDGiMOWsMs7FokXihSOaT/PMWUty/Pj60XDQndK3eAfE6A==", - "cpu": [ - "arm" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-arm-musleabihf": { - "version": "4.29.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.29.1.tgz", - "integrity": "sha512-RiWpGgbayf7LUcuSNIbahr0ys2YnEERD4gYdISA06wa0i8RALrnzflh9Wxii7zQJEB2/Eh74dX4y/sHKLWp5uQ==", - "cpu": [ - "arm" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-arm64-gnu": { - "version": "4.29.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.29.1.tgz", - "integrity": "sha512-Z80O+taYxTQITWMjm/YqNoe9d10OX6kDh8X5/rFCMuPqsKsSyDilvfg+vd3iXIqtfmp+cnfL1UrYirkaF8SBZA==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-arm64-musl": { - "version": "4.29.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.29.1.tgz", - "integrity": "sha512-fOHRtF9gahwJk3QVp01a/GqS4hBEZCV1oKglVVq13kcK3NeVlS4BwIFzOHDbmKzt3i0OuHG4zfRP0YoG5OF/rA==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-loongarch64-gnu": { - "version": "4.29.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loongarch64-gnu/-/rollup-linux-loongarch64-gnu-4.29.1.tgz", - "integrity": "sha512-5a7q3tnlbcg0OodyxcAdrrCxFi0DgXJSoOuidFUzHZ2GixZXQs6Tc3CHmlvqKAmOs5eRde+JJxeIf9DonkmYkw==", - "cpu": [ - "loong64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-powerpc64le-gnu": { - "version": "4.29.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.29.1.tgz", - "integrity": "sha512-9b4Mg5Yfz6mRnlSPIdROcfw1BU22FQxmfjlp/CShWwO3LilKQuMISMTtAu/bxmmrE6A902W2cZJuzx8+gJ8e9w==", - "cpu": [ - "ppc64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-riscv64-gnu": { - "version": "4.29.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.29.1.tgz", - "integrity": "sha512-G5pn0NChlbRM8OJWpJFMX4/i8OEU538uiSv0P6roZcbpe/WfhEO+AT8SHVKfp8qhDQzaz7Q+1/ixMy7hBRidnQ==", - "cpu": [ - "riscv64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-s390x-gnu": { - "version": "4.29.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.29.1.tgz", - "integrity": "sha512-WM9lIkNdkhVwiArmLxFXpWndFGuOka4oJOZh8EP3Vb8q5lzdSCBuhjavJsw68Q9AKDGeOOIHYzYm4ZFvmWez5g==", - "cpu": [ - "s390x" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-x64-gnu": { - "version": "4.29.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.29.1.tgz", - "integrity": "sha512-87xYCwb0cPGZFoGiErT1eDcssByaLX4fc0z2nRM6eMtV9njAfEE6OW3UniAoDhX4Iq5xQVpE6qO9aJbCFumKYQ==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-x64-musl": { - "version": "4.29.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.29.1.tgz", - "integrity": "sha512-xufkSNppNOdVRCEC4WKvlR1FBDyqCSCpQeMMgv9ZyXqqtKBfkw1yfGMTUTs9Qsl6WQbJnsGboWCp7pJGkeMhKA==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-win32-arm64-msvc": { - "version": "4.29.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.29.1.tgz", - "integrity": "sha512-F2OiJ42m77lSkizZQLuC+jiZ2cgueWQL5YC9tjo3AgaEw+KJmVxHGSyQfDUoYR9cci0lAywv2Clmckzulcq6ig==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ] + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/popperjs" + } }, - "node_modules/@rollup/rollup-win32-ia32-msvc": { - "version": "4.29.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.29.1.tgz", - "integrity": "sha512-rYRe5S0FcjlOBZQHgbTKNrqxCBUmgDJem/VQTCcTnA2KCabYSWQDrytOzX7avb79cAAweNmMUb/Zw18RNd4mng==", - "cpu": [ - "ia32" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ] + "node_modules/@types/lodash": { + "version": "4.17.13", + "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.17.13.tgz", + "integrity": "sha512-lfx+dftrEZcdBPczf9d0Qv0x+j/rfNCMuC6OcfXmO8gkfeNAY88PgKUbvG56whcN23gc27yenwF6oJZXGFpYxg==", + "license": "MIT" }, - "node_modules/@rollup/rollup-win32-x64-msvc": { - "version": "4.29.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.29.1.tgz", - "integrity": "sha512-+10CMg9vt1MoHj6x1pxyjPSMjHTIlqs8/tBztXvPAx24SKs9jwVnKqHJumlH/IzhaPUaj3T6T6wfZr8okdXaIg==", - "cpu": [ - "x64" - ], - "dev": true, + "node_modules/@types/lodash-es": { + "version": "4.17.12", + "resolved": "https://registry.npmjs.org/@types/lodash-es/-/lodash-es-4.17.12.tgz", + "integrity": "sha512-0NgftHUcV4v34VhXm8QBSftKVXtbkBG3ViCjs6+eJ5a6y6Mi/jiFGPc1sC7QK+9BFhWrURE3EOggmWaSxL9OzQ==", "license": "MIT", - "optional": true, - "os": [ - "win32" - ] + "dependencies": { + "@types/lodash": "*" + } }, - "node_modules/@types/estree": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.6.tgz", - "integrity": "sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==", - "dev": true, + "node_modules/@types/web-bluetooth": { + "version": "0.0.16", + "resolved": "https://registry.npmjs.org/@types/web-bluetooth/-/web-bluetooth-0.0.16.tgz", + "integrity": "sha512-oh8q2Zc32S6gd/j50GowEjKLoOVOwHP/bWVjKJInBwQqdOYMdPrf1oVlelTlyfFK3CKxL1uahMDAr+vy8T7yMQ==", "license": "MIT" }, "node_modules/@vitejs/plugin-vue": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/@vitejs/plugin-vue/-/plugin-vue-5.2.1.tgz", - "integrity": "sha512-cxh314tzaWwOLqVes2gnnCtvBDcM1UMdn+iFR+UjAn411dPT3tOmqrJjbMd7koZpMAmBM/GqeV4n9ge7JSiJJQ==", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/@vitejs/plugin-vue/-/plugin-vue-3.2.0.tgz", + "integrity": "sha512-E0tnaL4fr+qkdCNxJ+Xd0yM31UwMkQje76fsDVBBUCoGOUPexu2VDUYHL8P4CwV+zMvWw6nlRw19OnRKmYAJpw==", "dev": true, "license": "MIT", "engines": { - "node": "^18.0.0 || >=20.0.0" + "node": "^14.18.0 || >=16.0.0" }, "peerDependencies": { - "vite": "^5.0.0 || ^6.0.0", + "vite": "^3.0.0", "vue": "^3.2.25" } }, @@ -854,6 +332,12 @@ "he": "^1.2.0" } }, + "node_modules/@vue/devtools-api": { + "version": "6.6.4", + "resolved": "https://registry.npmjs.org/@vue/devtools-api/-/devtools-api-6.6.4.tgz", + "integrity": "sha512-sGhTPMuXqZ1rVOk32RylztWkfXTRhuS7vgAKv0zjqk8gbsHkJ7xfFf+jbySxt7tWObEJwyKaHMikV/WGDiQm8g==", + "license": "MIT" + }, "node_modules/@vue/language-core": { "version": "2.1.10", "resolved": "https://registry.npmjs.org/@vue/language-core/-/language-core-2.1.10.tgz", @@ -929,6 +413,94 @@ "integrity": "sha512-/hnE/qP5ZoGpol0a5mDi45bOd7t3tjYJBjsgCsivow7D48cJeV5l05RD82lPqi7gRiphZM37rnhW1l6ZoCNNnQ==", "license": "MIT" }, + "node_modules/@vueuse/core": { + "version": "9.13.0", + "resolved": "https://registry.npmjs.org/@vueuse/core/-/core-9.13.0.tgz", + "integrity": "sha512-pujnclbeHWxxPRqXWmdkKV5OX4Wk4YeK7wusHqRwU0Q7EFusHoqNA/aPhB6KCh9hEqJkLAJo7bb0Lh9b+OIVzw==", + "license": "MIT", + "dependencies": { + "@types/web-bluetooth": "^0.0.16", + "@vueuse/metadata": "9.13.0", + "@vueuse/shared": "9.13.0", + "vue-demi": "*" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/@vueuse/core/node_modules/vue-demi": { + "version": "0.14.10", + "resolved": "https://registry.npmjs.org/vue-demi/-/vue-demi-0.14.10.tgz", + "integrity": "sha512-nMZBOwuzabUO0nLgIcc6rycZEebF6eeUfaiQx9+WSk8e29IbLvPU9feI6tqW4kTo3hvoYAJkMh8n8D0fuISphg==", + "hasInstallScript": true, + "license": "MIT", + "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/metadata": { + "version": "9.13.0", + "resolved": "https://registry.npmjs.org/@vueuse/metadata/-/metadata-9.13.0.tgz", + "integrity": "sha512-gdU7TKNAUVlXXLbaF+ZCfte8BjRJQWPCa2J55+7/h+yDtzw3vOoGQDRXzI6pyKyo6bXFT5/QoPE4hAknExjRLQ==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/@vueuse/shared": { + "version": "9.13.0", + "resolved": "https://registry.npmjs.org/@vueuse/shared/-/shared-9.13.0.tgz", + "integrity": "sha512-UrnhU+Cnufu4S6JLCPZnkWh0WwZGUp72ktOF2DFptMlOs3TOdVv8xJN53zhHGARmVOsz5KqOls09+J1NR6sBKw==", + "license": "MIT", + "dependencies": { + "vue-demi": "*" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/@vueuse/shared/node_modules/vue-demi": { + "version": "0.14.10", + "resolved": "https://registry.npmjs.org/vue-demi/-/vue-demi-0.14.10.tgz", + "integrity": "sha512-nMZBOwuzabUO0nLgIcc6rycZEebF6eeUfaiQx9+WSk8e29IbLvPU9feI6tqW4kTo3hvoYAJkMh8n8D0fuISphg==", + "hasInstallScript": true, + "license": "MIT", + "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/alien-signals": { "version": "0.2.2", "resolved": "https://registry.npmjs.org/alien-signals/-/alien-signals-0.2.2.tgz", @@ -936,6 +508,12 @@ "dev": true, "license": "MIT" }, + "node_modules/async-validator": { + "version": "4.2.5", + "resolved": "https://registry.npmjs.org/async-validator/-/async-validator-4.2.5.tgz", + "integrity": "sha512-7HhHjtERjqlNbZtqNqy2rckN/SpOOlmDliet+lP7k+eKZEjPk3DgyeU9lIXLdeLz0uBbbVp+9Qdow9wJWgwwfg==", + "license": "MIT" + }, "node_modules/balanced-match": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", @@ -959,6 +537,12 @@ "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==", "license": "MIT" }, + "node_modules/dayjs": { + "version": "1.11.13", + "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.13.tgz", + "integrity": "sha512-oaMBel6gjolK862uaPQOVTA7q3TZhuSvuMQAAglQDOWYO9A91IrAOUJEyKVlqJlHE0vq5p5UXxzdPfMH/x6xNg==", + "license": "MIT" + }, "node_modules/de-indent": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/de-indent/-/de-indent-1.0.2.tgz", @@ -966,6 +550,32 @@ "dev": true, "license": "MIT" }, + "node_modules/element-plus": { + "version": "2.9.1", + "resolved": "https://registry.npmjs.org/element-plus/-/element-plus-2.9.1.tgz", + "integrity": "sha512-9Agqf/jt4Ugk7EZ6C5LME71sgkvauPCsnvJN12Xid2XVobjufxMGpRE4L7pS4luJMOmFAH3J0NgYEGZT5r+NDg==", + "license": "MIT", + "dependencies": { + "@ctrl/tinycolor": "^3.4.1", + "@element-plus/icons-vue": "^2.3.1", + "@floating-ui/dom": "^1.0.1", + "@popperjs/core": "npm:@sxzz/popperjs-es@^2.11.7", + "@types/lodash": "^4.14.182", + "@types/lodash-es": "^4.17.6", + "@vueuse/core": "^9.1.0", + "async-validator": "^4.2.5", + "dayjs": "^1.11.13", + "escape-html": "^1.0.3", + "lodash": "^4.17.21", + "lodash-es": "^4.17.21", + "lodash-unified": "^1.0.2", + "memoize-one": "^6.0.0", + "normalize-wheel-es": "^1.2.0" + }, + "peerDependencies": { + "vue": "^3.2.0" + } + }, "node_modules/entities": { "version": "4.5.0", "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", @@ -979,9 +589,9 @@ } }, "node_modules/esbuild": { - "version": "0.24.0", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.24.0.tgz", - "integrity": "sha512-FuLPevChGDshgSicjisSooU0cemp/sGXR841D5LHMB7mTVOmsEHcAxaH3irL53+8YDIeVNQEySh4DaYU/iuPqQ==", + "version": "0.15.18", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.15.18.tgz", + "integrity": "sha512-x/R72SmW3sSFRm5zrrIjAhCeQSAWoni3CmHEqfQrZIQTM3lVCdehdwuIqaOtfC2slvpdlLa62GYoN8SxT23m6Q==", "dev": true, "hasInstallScript": true, "license": "MIT", @@ -989,35 +599,379 @@ "esbuild": "bin/esbuild" }, "engines": { - "node": ">=18" + "node": ">=12" }, "optionalDependencies": { - "@esbuild/aix-ppc64": "0.24.0", - "@esbuild/android-arm": "0.24.0", - "@esbuild/android-arm64": "0.24.0", - "@esbuild/android-x64": "0.24.0", - "@esbuild/darwin-arm64": "0.24.0", - "@esbuild/darwin-x64": "0.24.0", - "@esbuild/freebsd-arm64": "0.24.0", - "@esbuild/freebsd-x64": "0.24.0", - "@esbuild/linux-arm": "0.24.0", - "@esbuild/linux-arm64": "0.24.0", - "@esbuild/linux-ia32": "0.24.0", - "@esbuild/linux-loong64": "0.24.0", - "@esbuild/linux-mips64el": "0.24.0", - "@esbuild/linux-ppc64": "0.24.0", - "@esbuild/linux-riscv64": "0.24.0", - "@esbuild/linux-s390x": "0.24.0", - "@esbuild/linux-x64": "0.24.0", - "@esbuild/netbsd-x64": "0.24.0", - "@esbuild/openbsd-arm64": "0.24.0", - "@esbuild/openbsd-x64": "0.24.0", - "@esbuild/sunos-x64": "0.24.0", - "@esbuild/win32-arm64": "0.24.0", - "@esbuild/win32-ia32": "0.24.0", - "@esbuild/win32-x64": "0.24.0" + "@esbuild/android-arm": "0.15.18", + "@esbuild/linux-loong64": "0.15.18", + "esbuild-android-64": "0.15.18", + "esbuild-android-arm64": "0.15.18", + "esbuild-darwin-64": "0.15.18", + "esbuild-darwin-arm64": "0.15.18", + "esbuild-freebsd-64": "0.15.18", + "esbuild-freebsd-arm64": "0.15.18", + "esbuild-linux-32": "0.15.18", + "esbuild-linux-64": "0.15.18", + "esbuild-linux-arm": "0.15.18", + "esbuild-linux-arm64": "0.15.18", + "esbuild-linux-mips64le": "0.15.18", + "esbuild-linux-ppc64le": "0.15.18", + "esbuild-linux-riscv64": "0.15.18", + "esbuild-linux-s390x": "0.15.18", + "esbuild-netbsd-64": "0.15.18", + "esbuild-openbsd-64": "0.15.18", + "esbuild-sunos-64": "0.15.18", + "esbuild-windows-32": "0.15.18", + "esbuild-windows-64": "0.15.18", + "esbuild-windows-arm64": "0.15.18" + } + }, + "node_modules/esbuild-android-64": { + "version": "0.15.18", + "resolved": "https://registry.npmjs.org/esbuild-android-64/-/esbuild-android-64-0.15.18.tgz", + "integrity": "sha512-wnpt3OXRhcjfIDSZu9bnzT4/TNTDsOUvip0foZOUBG7QbSt//w3QV4FInVJxNhKc/ErhUxc5z4QjHtMi7/TbgA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-android-arm64": { + "version": "0.15.18", + "resolved": "https://registry.npmjs.org/esbuild-android-arm64/-/esbuild-android-arm64-0.15.18.tgz", + "integrity": "sha512-G4xu89B8FCzav9XU8EjsXacCKSG2FT7wW9J6hOc18soEHJdtWu03L3TQDGf0geNxfLTtxENKBzMSq9LlbjS8OQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" } }, + "node_modules/esbuild-darwin-64": { + "version": "0.15.18", + "resolved": "https://registry.npmjs.org/esbuild-darwin-64/-/esbuild-darwin-64-0.15.18.tgz", + "integrity": "sha512-2WAvs95uPnVJPuYKP0Eqx+Dl/jaYseZEUUT1sjg97TJa4oBtbAKnPnl3b5M9l51/nbx7+QAEtuummJZW0sBEmg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-darwin-arm64": { + "version": "0.15.18", + "resolved": "https://registry.npmjs.org/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.15.18.tgz", + "integrity": "sha512-tKPSxcTJ5OmNb1btVikATJ8NftlyNlc8BVNtyT/UAr62JFOhwHlnoPrhYWz09akBLHI9nElFVfWSTSRsrZiDUA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-freebsd-64": { + "version": "0.15.18", + "resolved": "https://registry.npmjs.org/esbuild-freebsd-64/-/esbuild-freebsd-64-0.15.18.tgz", + "integrity": "sha512-TT3uBUxkteAjR1QbsmvSsjpKjOX6UkCstr8nMr+q7zi3NuZ1oIpa8U41Y8I8dJH2fJgdC3Dj3CXO5biLQpfdZA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-freebsd-arm64": { + "version": "0.15.18", + "resolved": "https://registry.npmjs.org/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.15.18.tgz", + "integrity": "sha512-R/oVr+X3Tkh+S0+tL41wRMbdWtpWB8hEAMsOXDumSSa6qJR89U0S/PpLXrGF7Wk/JykfpWNokERUpCeHDl47wA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-linux-32": { + "version": "0.15.18", + "resolved": "https://registry.npmjs.org/esbuild-linux-32/-/esbuild-linux-32-0.15.18.tgz", + "integrity": "sha512-lphF3HiCSYtaa9p1DtXndiQEeQDKPl9eN/XNoBf2amEghugNuqXNZA/ZovthNE2aa4EN43WroO0B85xVSjYkbg==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-linux-64": { + "version": "0.15.18", + "resolved": "https://registry.npmjs.org/esbuild-linux-64/-/esbuild-linux-64-0.15.18.tgz", + "integrity": "sha512-hNSeP97IviD7oxLKFuii5sDPJ+QHeiFTFLoLm7NZQligur8poNOWGIgpQ7Qf8Balb69hptMZzyOBIPtY09GZYw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-linux-arm": { + "version": "0.15.18", + "resolved": "https://registry.npmjs.org/esbuild-linux-arm/-/esbuild-linux-arm-0.15.18.tgz", + "integrity": "sha512-UH779gstRblS4aoS2qpMl3wjg7U0j+ygu3GjIeTonCcN79ZvpPee12Qun3vcdxX+37O5LFxz39XeW2I9bybMVA==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-linux-arm64": { + "version": "0.15.18", + "resolved": "https://registry.npmjs.org/esbuild-linux-arm64/-/esbuild-linux-arm64-0.15.18.tgz", + "integrity": "sha512-54qr8kg/6ilcxd+0V3h9rjT4qmjc0CccMVWrjOEM/pEcUzt8X62HfBSeZfT2ECpM7104mk4yfQXkosY8Quptug==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-linux-mips64le": { + "version": "0.15.18", + "resolved": "https://registry.npmjs.org/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.15.18.tgz", + "integrity": "sha512-Mk6Ppwzzz3YbMl/ZZL2P0q1tnYqh/trYZ1VfNP47C31yT0K8t9s7Z077QrDA/guU60tGNp2GOwCQnp+DYv7bxQ==", + "cpu": [ + "mips64el" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-linux-ppc64le": { + "version": "0.15.18", + "resolved": "https://registry.npmjs.org/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.15.18.tgz", + "integrity": "sha512-b0XkN4pL9WUulPTa/VKHx2wLCgvIAbgwABGnKMY19WhKZPT+8BxhZdqz6EgkqCLld7X5qiCY2F/bfpUUlnFZ9w==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-linux-riscv64": { + "version": "0.15.18", + "resolved": "https://registry.npmjs.org/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.15.18.tgz", + "integrity": "sha512-ba2COaoF5wL6VLZWn04k+ACZjZ6NYniMSQStodFKH/Pu6RxzQqzsmjR1t9QC89VYJxBeyVPTaHuBMCejl3O/xg==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-linux-s390x": { + "version": "0.15.18", + "resolved": "https://registry.npmjs.org/esbuild-linux-s390x/-/esbuild-linux-s390x-0.15.18.tgz", + "integrity": "sha512-VbpGuXEl5FCs1wDVp93O8UIzl3ZrglgnSQ+Hu79g7hZu6te6/YHgVJxCM2SqfIila0J3k0csfnf8VD2W7u2kzQ==", + "cpu": [ + "s390x" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-netbsd-64": { + "version": "0.15.18", + "resolved": "https://registry.npmjs.org/esbuild-netbsd-64/-/esbuild-netbsd-64-0.15.18.tgz", + "integrity": "sha512-98ukeCdvdX7wr1vUYQzKo4kQ0N2p27H7I11maINv73fVEXt2kyh4K4m9f35U1K43Xc2QGXlzAw0K9yoU7JUjOg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-openbsd-64": { + "version": "0.15.18", + "resolved": "https://registry.npmjs.org/esbuild-openbsd-64/-/esbuild-openbsd-64-0.15.18.tgz", + "integrity": "sha512-yK5NCcH31Uae076AyQAXeJzt/vxIo9+omZRKj1pauhk3ITuADzuOx5N2fdHrAKPxN+zH3w96uFKlY7yIn490xQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-sunos-64": { + "version": "0.15.18", + "resolved": "https://registry.npmjs.org/esbuild-sunos-64/-/esbuild-sunos-64-0.15.18.tgz", + "integrity": "sha512-On22LLFlBeLNj/YF3FT+cXcyKPEI263nflYlAhz5crxtp3yRG1Ugfr7ITyxmCmjm4vbN/dGrb/B7w7U8yJR9yw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-windows-32": { + "version": "0.15.18", + "resolved": "https://registry.npmjs.org/esbuild-windows-32/-/esbuild-windows-32-0.15.18.tgz", + "integrity": "sha512-o+eyLu2MjVny/nt+E0uPnBxYuJHBvho8vWsC2lV61A7wwTWC3jkN2w36jtA+yv1UgYkHRihPuQsL23hsCYGcOQ==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-windows-64": { + "version": "0.15.18", + "resolved": "https://registry.npmjs.org/esbuild-windows-64/-/esbuild-windows-64-0.15.18.tgz", + "integrity": "sha512-qinug1iTTaIIrCorAUjR0fcBk24fjzEedFYhhispP8Oc7SFvs+XeW3YpAKiKp8dRpizl4YYAhxMjlftAMJiaUw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-windows-arm64": { + "version": "0.15.18", + "resolved": "https://registry.npmjs.org/esbuild-windows-arm64/-/esbuild-windows-arm64-0.15.18.tgz", + "integrity": "sha512-q9bsYzegpZcLziq0zgUi5KqGVtfhjxGbnksaBFYmWLxeV/S1fK4OLdq2DFYnXcLMjlZw2L0jLsk1eGoB522WXQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==", + "license": "MIT" + }, "node_modules/estree-walker": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", @@ -1039,6 +993,29 @@ "node": "^8.16.0 || ^10.6.0 || >=11.0.0" } }, + "node_modules/function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/hasown": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/he": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", @@ -1049,6 +1026,45 @@ "he": "bin/he" } }, + "node_modules/is-core-module": { + "version": "2.16.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.16.1.tgz", + "integrity": "sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==", + "dev": true, + "license": "MIT", + "dependencies": { + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "license": "MIT" + }, + "node_modules/lodash-es": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash-es/-/lodash-es-4.17.21.tgz", + "integrity": "sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==", + "license": "MIT" + }, + "node_modules/lodash-unified": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/lodash-unified/-/lodash-unified-1.0.3.tgz", + "integrity": "sha512-WK9qSozxXOD7ZJQlpSqOT+om2ZfcT4yO+03FuzAHD0wF6S0l0090LRPDx3vhTTLZ8cFKpBn+IOcVXK6qOcIlfQ==", + "license": "MIT", + "peerDependencies": { + "@types/lodash-es": "*", + "lodash": "*", + "lodash-es": "*" + } + }, "node_modules/magic-string": { "version": "0.30.17", "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.17.tgz", @@ -1058,6 +1074,24 @@ "@jridgewell/sourcemap-codec": "^1.5.0" } }, + "node_modules/marked": { + "version": "14.1.4", + "resolved": "https://registry.npmjs.org/marked/-/marked-14.1.4.tgz", + "integrity": "sha512-vkVZ8ONmUdPnjCKc5uTRvmkRbx4EAi2OkTOXmfTDhZz3OFqMNBM1oTTWwTr4HY4uAEojhzPf+Fy8F1DWa3Sndg==", + "license": "MIT", + "bin": { + "marked": "bin/marked.js" + }, + "engines": { + "node": ">= 18" + } + }, + "node_modules/memoize-one": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/memoize-one/-/memoize-one-6.0.0.tgz", + "integrity": "sha512-rkpe71W0N0c0Xz6QD0eJETuWAJGnJ9afsl1srmwPrI+yBCkge5EycXXbYRyvL29zZVUWQCY7InPRCv3GDXuZNw==", + "license": "MIT" + }, "node_modules/minimatch": { "version": "9.0.5", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", @@ -1099,6 +1133,12 @@ "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" } }, + "node_modules/normalize-wheel-es": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/normalize-wheel-es/-/normalize-wheel-es-1.2.0.tgz", + "integrity": "sha512-Wj7+EJQ8mSuXr2iWfnujrimU35R2W4FAErEyTmJoJ7ucwTn2hOUSsRehMb5RSYkxXGTM7Y9QpvPmp++w5ftoJw==", + "license": "BSD-3-Clause" + }, "node_modules/path-browserify": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-1.0.1.tgz", @@ -1106,6 +1146,13 @@ "dev": true, "license": "MIT" }, + "node_modules/path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "dev": true, + "license": "MIT" + }, "node_modules/picocolors": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", @@ -1140,42 +1187,40 @@ "node": "^10 || ^12 || >=14" } }, - "node_modules/rollup": { - "version": "4.29.1", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.29.1.tgz", - "integrity": "sha512-RaJ45M/kmJUzSWDs1Nnd5DdV4eerC98idtUOVr6FfKcgxqvjwHmxc5upLF9qZU9EpsVzzhleFahrT3shLuJzIw==", + "node_modules/resolve": { + "version": "1.22.10", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.10.tgz", + "integrity": "sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w==", "dev": true, "license": "MIT", "dependencies": { - "@types/estree": "1.0.6" + "is-core-module": "^2.16.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" }, "bin": { + "resolve": "bin/resolve" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/rollup": { + "version": "2.79.2", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.79.2.tgz", + "integrity": "sha512-fS6iqSPZDs3dr/y7Od6y5nha8dW1YnbgtsyotCVvoFGKbERG++CVRFv1meyGDE1SNItQA8BrnCw7ScdAhRJ3XQ==", + "dev": true, + "license": "MIT", + "bin": { "rollup": "dist/bin/rollup" }, "engines": { - "node": ">=18.0.0", - "npm": ">=8.0.0" + "node": ">=10.0.0" }, "optionalDependencies": { - "@rollup/rollup-android-arm-eabi": "4.29.1", - "@rollup/rollup-android-arm64": "4.29.1", - "@rollup/rollup-darwin-arm64": "4.29.1", - "@rollup/rollup-darwin-x64": "4.29.1", - "@rollup/rollup-freebsd-arm64": "4.29.1", - "@rollup/rollup-freebsd-x64": "4.29.1", - "@rollup/rollup-linux-arm-gnueabihf": "4.29.1", - "@rollup/rollup-linux-arm-musleabihf": "4.29.1", - "@rollup/rollup-linux-arm64-gnu": "4.29.1", - "@rollup/rollup-linux-arm64-musl": "4.29.1", - "@rollup/rollup-linux-loongarch64-gnu": "4.29.1", - "@rollup/rollup-linux-powerpc64le-gnu": "4.29.1", - "@rollup/rollup-linux-riscv64-gnu": "4.29.1", - "@rollup/rollup-linux-s390x-gnu": "4.29.1", - "@rollup/rollup-linux-x64-gnu": "4.29.1", - "@rollup/rollup-linux-x64-musl": "4.29.1", - "@rollup/rollup-win32-arm64-msvc": "4.29.1", - "@rollup/rollup-win32-ia32-msvc": "4.29.1", - "@rollup/rollup-win32-x64-msvc": "4.29.1", "fsevents": "~2.3.2" } }, @@ -1201,6 +1246,19 @@ "node": ">=0.10.0" } }, + "node_modules/supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/typescript": { "version": "5.6.3", "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.6.3.tgz", @@ -1216,60 +1274,44 @@ } }, "node_modules/vite": { - "version": "6.0.5", - "resolved": "https://registry.npmjs.org/vite/-/vite-6.0.5.tgz", - "integrity": "sha512-akD5IAH/ID5imgue2DYhzsEwCi0/4VKY31uhMLEYJwPP4TiUp8pL5PIK+Wo7H8qT8JY9i+pVfPydcFPYD1EL7g==", + "version": "3.2.11", + "resolved": "https://registry.npmjs.org/vite/-/vite-3.2.11.tgz", + "integrity": "sha512-K/jGKL/PgbIgKCiJo5QbASQhFiV02X9Jh+Qq0AKCRCRKZtOTVi4t6wh75FDpGf2N9rYOnzH87OEFQNaFy6pdxQ==", "dev": true, "license": "MIT", "dependencies": { - "esbuild": "0.24.0", - "postcss": "^8.4.49", - "rollup": "^4.23.0" + "esbuild": "^0.15.9", + "postcss": "^8.4.18", + "resolve": "^1.22.1", + "rollup": "^2.79.1" }, "bin": { "vite": "bin/vite.js" }, "engines": { - "node": "^18.0.0 || ^20.0.0 || >=22.0.0" - }, - "funding": { - "url": "https://github.com/vitejs/vite?sponsor=1" + "node": "^14.18.0 || >=16.0.0" }, "optionalDependencies": { - "fsevents": "~2.3.3" + "fsevents": "~2.3.2" }, "peerDependencies": { - "@types/node": "^18.0.0 || ^20.0.0 || >=22.0.0", - "jiti": ">=1.21.0", + "@types/node": ">= 14", "less": "*", - "lightningcss": "^1.21.0", "sass": "*", - "sass-embedded": "*", "stylus": "*", "sugarss": "*", - "terser": "^5.16.0", - "tsx": "^4.8.1", - "yaml": "^2.4.2" + "terser": "^5.4.0" }, "peerDependenciesMeta": { "@types/node": { "optional": true }, - "jiti": { - "optional": true - }, "less": { "optional": true }, - "lightningcss": { - "optional": true - }, "sass": { "optional": true }, - "sass-embedded": { - "optional": true - }, "stylus": { "optional": true }, @@ -1278,12 +1320,6 @@ }, "terser": { "optional": true - }, - "tsx": { - "optional": true - }, - "yaml": { - "optional": true } } }, @@ -1315,6 +1351,41 @@ } } }, + "node_modules/vue-i18n": { + "version": "9.14.2", + "resolved": "https://registry.npmjs.org/vue-i18n/-/vue-i18n-9.14.2.tgz", + "integrity": "sha512-JK9Pm80OqssGJU2Y6F7DcM8RFHqVG4WkuCqOZTVsXkEzZME7ABejAUqUdA931zEBedc4thBgSUWxeQh4uocJAQ==", + "license": "MIT", + "dependencies": { + "@intlify/core-base": "9.14.2", + "@intlify/shared": "9.14.2", + "@vue/devtools-api": "^6.5.0" + }, + "engines": { + "node": ">= 16" + }, + "funding": { + "url": "https://github.com/sponsors/kazupon" + }, + "peerDependencies": { + "vue": "^3.0.0" + } + }, + "node_modules/vue-router": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/vue-router/-/vue-router-4.5.0.tgz", + "integrity": "sha512-HDuk+PuH5monfNuY+ct49mNmkCRK4xJAV9Ts4z9UFc4rzdDnxQLyCMGGc8pKhZhHTVzfanpNwB/lwqevcBwI4w==", + "license": "MIT", + "dependencies": { + "@vue/devtools-api": "^6.6.4" + }, + "funding": { + "url": "https://github.com/sponsors/posva" + }, + "peerDependencies": { + "vue": "^3.2.0" + } + }, "node_modules/vue-tsc": { "version": "2.1.10", "resolved": "https://registry.npmjs.org/vue-tsc/-/vue-tsc-2.1.10.tgz", @@ -1332,6 +1403,18 @@ "peerDependencies": { "typescript": ">=5.0.0" } + }, + "node_modules/vuex": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/vuex/-/vuex-4.1.0.tgz", + "integrity": "sha512-hmV6UerDrPcgbSy9ORAtNXDr9M4wlNP4pEFKye4ujJF8oqgFFuxDCdOLS3eNoRTtq5O3hoBDh9Doj1bQMYHRbQ==", + "license": "MIT", + "dependencies": { + "@vue/devtools-api": "^6.0.0-beta.11" + }, + "peerDependencies": { + "vue": "^3.2.0" + } } } } diff --git a/src-vue/package.json b/src-vue/package.json index 0cab58b3..7f98856a 100644 --- a/src-vue/package.json +++ b/src-vue/package.json @@ -9,12 +9,18 @@ "preview": "vite preview" }, "dependencies": { - "vue": "^3.5.13" + "@element-plus/icons-vue": "^2.0.9", + "element-plus": "^2.7.8", + "marked": "^14.1.3", + "vue": "^3.4.35", + "vue-i18n": "^9.13.1", + "vue-router": "^4.4.3", + "vuex": "^4.0.2" }, "devDependencies": { - "@vitejs/plugin-vue": "^5.2.1", - "typescript": "~5.6.2", - "vite": "^6.0.3", + "@vitejs/plugin-vue": "^3.1.0", + "typescript": "^5.6.3", + "vite": "^3.1.0", "vue-tsc": "^2.1.10" } } diff --git a/src-vue/src/App.vue b/src-vue/src/App.vue index 0426defe..97b20562 100644 --- a/src-vue/src/App.vue +++ b/src-vue/src/App.vue @@ -1,6 +1,13 @@ -<script setup lang="ts"> +<script lang="ts"> +import ChangelogView from './views/ChangelogView.vue'; +import DeveloperView from './views/DeveloperView.vue'; +import PlayView from './views/PlayView.vue'; +import ModsView from './views/ModsView.vue'; +import SettingsView from './views/SettingsView.vue'; import { ref } from "vue"; +import { store } from './plugins/store'; import { invoke } from "@tauri-apps/api/core"; +import NotificationButton from "./components/NotificationButton.vue"; const greetMsg = ref(""); const name = ref(""); @@ -9,14 +16,65 @@ async function greet() { // Learn more about Tauri commands at https://tauri.app/develop/calling-rust/ greetMsg.value = await invoke("greet", { name: name.value }); } + +export default { + components: { + ChangelogView, + DeveloperView, + PlayView, + SettingsView, + ModsView + }, + data() { + return {} + }, + mounted: async function() { + + // Initialize interface language + let lang = "en" + this.$root!.$i18n.locale = lang; + }, + methods: { + close() { + invoke("close_application"); + } + }, + computed: { + bgStyle(): string { + // @ts-ignore + const shouldBlur = this.$route.path !== "/"; + return `filter: brightness(0.8) ${shouldBlur ? 'blur(5px)' : ''};`; + } + } +} </script> <template> - <main class="container"> - <h1>Welcome to Tauri + Vue</h1> - - <div class="row"> - </div> + <div class="app-inner"> + <div id="fc_bg__container" :style="bgStyle"/> + + <nav id="fc_menu-bar"><!-- Hide menu bar in repair view --> + <!-- Navigation items --> + <el-menu + :default-active="$route.path" + router + mode="horizontal" + id="fc__menu_items" + data-tauri-drag-region + > + <el-menu-item index="/">{{ $t('menu.play') }}</el-menu-item> + <el-menu-item index="/mods">{{ $t('menu.mods') }}</el-menu-item> + <el-menu-item index="/changelog">{{ $t('menu.changelog') }}</el-menu-item> + <el-menu-item index="/settings">{{ $t('menu.settings') }}</el-menu-item> + </el-menu> + + <!-- Window controls --> + <div id="fc_window__controls"> + <NotificationButton /> + <el-button color="white" icon="SemiSelect" @click="minimize" circle /> + <el-button color="white" icon="CloseBold" @click="close" circle /> + </div> + </nav> <p>Click on the Tauri, Vite, and Vue logos to learn more.</p> <form class="row" @submit.prevent="greet"> @@ -24,128 +82,132 @@ async function greet() { <button type="submit">Greet</button> </form> <p>{{ greetMsg }}</p> - </main> + </div> </template> -<style scoped> -.logo.vite:hover { - filter: drop-shadow(0 0 2em #747bff); +<style> +#fc_menu-bar { + position: fixed; + z-index: 1; + top: 0; + width: 100%; + height: var(--fc-menu_height); } -.logo.vue:hover { - filter: drop-shadow(0 0 2em #249b73); +#fc__menu_bar::before { + position: absolute; + content: ""; + inset: 0; /* same as { top: 0; right: 0; bottom: 0; left: 0; } */ + background-image: linear-gradient(to bottom, red, orange); + z-index: 1; + opacity: 0; + transition: opacity 1s linear; } -</style> -<style> -:root { - font-family: Inter, Avenir, Helvetica, Arial, sans-serif; - font-size: 16px; - line-height: 24px; - font-weight: 400; - - color: #0f0f0f; - background-color: #f6f6f6; - - font-synthesis: none; - text-rendering: optimizeLegibility; - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; - -webkit-text-size-adjust: 100%; +#fc__menu_bar:hover::before { + opacity: 1; } -.container { - margin: 0; - padding-top: 10vh; - display: flex; - flex-direction: column; - justify-content: center; - text-align: center; +/* Borders reset */ +#fc__menu_bar, #fc__menu_items { + border: none !important; } - -.logo { - height: 6em; - padding: 1.5em; - will-change: filter; - transition: 0.75s; +.app-inner { + height: 100%; + width: 100%; } -.logo.tauri:hover { - filter: drop-shadow(0 0 2em #24c8db); +/* Header item */ +#fc__menu_items { + height: 100%; + background-color: transparent; + float: left; + width: calc(100% - 168px); /* window controls container width */ } -.row { - display: flex; - justify-content: center; +#fc__menu_items .el-menu-item, #fc__menu_items .el-sub-menu__title { + color: #b4b6b9; + border-color: white; } -a { - font-weight: 500; - color: #646cff; - text-decoration: inherit; +#fc__menu_items > .el-menu-item { + text-transform: uppercase; + border: none !important; + font-family: 'Helvetica Neue', Helvetica, 'PingFang SC', 'Hiragino Sans GB', 'Microsoft YaHei', '微软雅黑', Arial, sans-serif; + font-weight: bold; + font-size: large; + background-color: transparent !important; + + border-width: 2px !important; + border-style: solid !important; + border-color: transparent !important; + border-radius: 10px !important; + transition: none; } -a:hover { - color: #535bf2; +#fc__menu_items .el-menu-item:hover, #fc__menu_items .el-sub-menu__title { + color: #c6c9ce; + background-color: transparent; } -h1 { - text-align: center; +#fc__menu_items .el-menu-item:focus-visible { + border-color: rgb(160, 207, 255) !important; } -input, -button { - border-radius: 8px; - border: 1px solid transparent; - padding: 0.6em 1.2em; - font-size: 1em; - font-weight: 500; - font-family: inherit; - color: #0f0f0f; - background-color: #ffffff; - transition: border-color 0.25s; - box-shadow: 0 2px 2px rgba(0, 0, 0, 0.2); +#fc__menu_items .el-menu-item.is-active, #fc__menu_items .el-sub-menu.is-active > .el-sub-menu__title { + color: white !important; } -button { - cursor: pointer; +.app-inner > .fc__mods__container { + overflow-y: auto; + height: calc(100% - var(--fc-menu_height)); } -button:hover { - border-color: #396cd8; +/* Header menu */ +.developer_build { + background: repeating-linear-gradient( + 45deg, + rgba(0, 0, 0, 0.2), + rgba(0, 0, 0, 0.2) 20px, + rgba(0, 0, 0, 0.3) 20px, + rgba(0, 0, 0, 0.3) 40px + ); } -button:active { - border-color: #396cd8; - background-color: #e8e8e8; + +/* Window controls */ +#fc_window__controls { + float: right; + height: 100%; } -input, -button { - outline: none; +#fc_window__controls > button, +#fc_window__controls > .el-dropdown > button, +#fc_window__controls > .el-dropdown > .el-badge > button { + color: white; + font-size: 20px; + margin: auto 5px; + background: none; + border: none; + height: 100%; } -#greet-input { - margin-right: 5px; +#fc_window__controls > button:hover, +#fc_window__controls > .el-dropdown > button:hover, +#fc_window__controls > .el-dropdown > .el-badge > button:hover { + color: #c6c9ce; } -@media (prefers-color-scheme: dark) { - :root { - color: #f6f6f6; - background-color: #2f2f2f; - } +#fc_window__controls > button:active, +#fc_window__controls > .el-dropdown > button:active { + color: #56585a; +} - a:hover { - color: #24c8db; - } +#fc_window__controls > button:last-of-type { + margin-right: 15px; +} - input, - button { - color: #ffffff; - background-color: #0f0f0f98; - } - button:active { - background-color: #0f0f0f69; - } +sup { + border: none !important; } </style> diff --git a/src-vue/src/assets/mp_colony020033.jpg b/src-vue/src/assets/mp_colony020033.jpg Binary files differnew file mode 100644 index 00000000..ed44eca9 --- /dev/null +++ b/src-vue/src/assets/mp_colony020033.jpg diff --git a/src-vue/src/assets/thunderstore-icon.png b/src-vue/src/assets/thunderstore-icon.png Binary files differnew file mode 100644 index 00000000..c286ab11 --- /dev/null +++ b/src-vue/src/assets/thunderstore-icon.png diff --git a/src-vue/src/assets/vue.svg b/src-vue/src/assets/vue.svg deleted file mode 100644 index 770e9d33..00000000 --- a/src-vue/src/assets/vue.svg +++ /dev/null @@ -1 +0,0 @@ -<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" class="iconify iconify--logos" width="37.07" height="36" preserveAspectRatio="xMidYMid meet" viewBox="0 0 256 198"><path fill="#41B883" d="M204.8 0H256L128 220.8L0 0h97.92L128 51.2L157.44 0h47.36Z"></path><path fill="#41B883" d="m0 0l128 220.8L256 0h-51.2L128 132.48L50.56 0H0Z"></path><path fill="#35495E" d="M50.56 0L128 133.12L204.8 0h-47.36L128 51.2L97.92 0H50.56Z"></path></svg>
\ No newline at end of file diff --git a/src-vue/src/assets/wallpaperflare.com_wallpaper.jpg b/src-vue/src/assets/wallpaperflare.com_wallpaper.jpg Binary files differnew file mode 100644 index 00000000..74a840cd --- /dev/null +++ b/src-vue/src/assets/wallpaperflare.com_wallpaper.jpg diff --git a/src-vue/src/components/NotificationButton.vue b/src-vue/src/components/NotificationButton.vue new file mode 100644 index 00000000..3835032d --- /dev/null +++ b/src-vue/src/components/NotificationButton.vue @@ -0,0 +1,81 @@ +<template> + <el-dropdown trigger="click" placement="bottom-end" max-height="280" popper-class="fc_popper"> + <el-badge v-if="notifications.length != 0" :value="notifications.length" :max="9" class="item" type="primary"> + <el-button color="white" icon="BellFilled" circle /> + </el-badge> + <el-button v-else color="white" icon="BellFilled" circle /> + <template #dropdown> + <el-dropdown-menu :key="counter"> + <el-alert + v-if="notifications.length != 0" + v-for="(notification, i) in notifications" + :key="i" + :title="notification.title" + :description="notification.text" + :type="notification.type" + show-icon + style="width: 300px" + @close.stop="removeNotification(i)" + /> + <el-result + v-else + icon="success" + :title="i18n.global.tc('notification.no_new.title')" + :sub-title="i18n.global.tc('notification.no_new.text')" + > + <template #icon> + </template> + </el-result> + </el-dropdown-menu> + </template> + </el-dropdown> +</template> + +<script lang="ts"> +import { defineComponent } from 'vue'; +import {Notification} from '../plugins/modules/notifications'; +import {i18n} from "../main"; + +export default defineComponent({ + name: 'NotificationButton', + data: () => ({ + // This variable is used as a key for the dropdown menu, so we can force it to refresh when a item is deleted. + counter: 0 + }), + computed: { + i18n() { + return i18n + }, + notifications(): Notification[] { + return this.$store.state.notifications.notifications; + } + }, + methods: { + removeNotification(index: number) { + this.$store.commit('removeNotification', index); + // By refreshing the notifications list, we ensure the first notification get the index 0, ensuring this list + // is synchronized with the store list. + this.counter += 1; + } + } +}) +</script> + +<style scoped> +.el-dropdown { + height: 100%; + max-height: 300px; +} + +.el-button { + margin: auto 25px auto 0 !important; +} + +.el-alert { + margin: 5px 10px 5px 5px; +} + +.el-badge:deep(sup) { + transform: translate(-10px, 5px) !important; +} +</style> diff --git a/src-vue/src/i18n/lang/da.json b/src-vue/src/i18n/lang/da.json new file mode 100644 index 00000000..33486bce --- /dev/null +++ b/src-vue/src/i18n/lang/da.json @@ -0,0 +1,166 @@ +{ + "menu": { + "changelog": "Ændringslog", + "mods": "Mods", + "settings": "Indstillinger", + "dev": "Dev", + "play": "Spil" + }, + "generic": { + "yes": "Ja", + "no": "Nej", + "error": "Fejl", + "cancel": "afbryd", + "informationShort": "Info", + "downloading": "Henter", + "success": "Succes", + "extracting": "Udpakker", + "done": "Færdig" + }, + "play": { + "button": { + "select_game_dir": "Vælg Titanfall2 spil mappe", + "install": "Installere", + "installing": "Installer...", + "update": "Opdater", + "updating": "Opdatere...", + "ready_to_play": "Start spil", + "northstar_is_running": "Spillet køre" + }, + "unknown_version": "Ukendt version", + "see_patch_notes": "Se patch noter", + "players": "Spillere", + "servers": "Servere", + "northstar_running": "Northstar køre", + "ea_app_running": "EA appen køre", + "unable_to_load_playercount": "Kan ikke hente antallet af spillere" + }, + "mods": { + "local": { + "no_mods": "Ingen mods blev fundet.", + "delete_confirm": "Er du sikker på at du vil slette dette mod?", + "delete": "Slet", + "success_deleting": "Sletningen af {modName} lykkedes", + "part_of_ts_mod": "Dette Northstar mod er en del af et Thunderstore mod" + }, + "online": { + "no_match": "Der er ikke fundet nogen matchende mod.", + "try_another_search": "Prøv en anden søgning!" + }, + "menu": { + "local": "Lokal", + "online": "Online", + "filter": "Filter", + "search": "Søg", + "sort_mods": "Sorter mods", + "select_categories": "Vælg kategorier", + "sort": { + "name_asc": "navn (A til Z)", + "name_desc": "navn (Z til A)", + "date_asc": "Dato (fra ældste)", + "most_downloaded": "Mest hentet", + "top_rated": "bedst bedømt", + "date_desc": "Dato (fra nyeste)" + } + }, + "card": { + "button": { + "being_installed": "Installerer...", + "being_updated": "Opdaterer...", + "installed": "Installeret", + "install": "Installere", + "outdated": "Opdater" + }, + "by": "af", + "more_info": "Mere info", + "remove": "Fjern mod", + "remove_dialog_title": "Advarsel", + "remove_success": "Fjernet {modName}", + "install_success": "Installeret {modName}", + "remove_dialog_text": "Fjern Thunderstore mod?" + } + }, + "settings": { + "manage_install": "Administrer installation", + "choose_folder": "Vælg installationsmappe", + "open_game_folder": "Åben mappe", + "nb_ts_mods_per_page": "Antal Thunderstore-mods pr. side", + "nb_ts_mods_reset": "Nulstil til standard", + "language": "Sprog", + "language_select": "Vælg dit yndlingssprog", + "about": "Om:", + "flightcore_version": "FlightCore version:", + "testing": "Tester:", + "enable_test_channels": "Aktiver testudgivelseskanaler", + "dev_mode_enabled_title": "Pas på!", + "dev_mode_enabled_text": "Udviklertilstand aktiveret.", + "show_deprecated_mods": "Vis forældede Thunderstore-mods", + "show_deprecated_mods_desc2": "Pas på, sådanne mods er normalt forældet af en god grund.", + "profile": { + "active": "Aktiv profil", + "edit": "Rediger profiler", + "dialog": { + "title": "Profiler" + } + }, + "repair": { + "title": "Reparere", + "open_window": "Åbn reparationsvinduet", + "window": { + "title": "FlightCore reparationsvinduet", + "disable_all_but_core": "Deaktiver alle undtagen kernemods", + "disable_all_but_core_success": "Deaktiverede alle mods undtagen kernemods", + "disable_modsettings": "Deaktiver ModSettings mod", + "disable_modsettings_success": "Deaktiver ModSettings mod", + "force_reinstall_ns": "Tving geninstallation Northstar", + "force_delete_temp_dl": "Tving sletning af midlertidig download-mappe", + "delete_persistent_store": "Slet FlightCore persistent indhold", + "reinstall_title": "Tving geninstallation af Northstar", + "reinstall_text": "Vent lidt", + "reinstall_success": "Northstar blev geninstalleret", + "warning": "Dette vindue indeholder forskellige funktioner til at reparere almindelige problemer med Northstar og FlightCore.", + "kill_northstar_process": "Dræb, der kører Northstar/Titanfall2-processen" + } + }, + "nb_ts_mods_per_page_desc1": "Dette har en indvirkning på skærmydelsen, når du gennemser Thunderstore-mods.", + "nb_ts_mods_per_page_desc2": "Indstil denne værdi til 0 for at deaktivere paginering.", + "show_deprecated_mods_desc1": "Dette giver dig mulighed for at se forældede mods i online-mods-samlingen." + }, + "notification": { + "game_folder": { + "new": { + "title": "Ny spil mappe", + "text": "Spilmappen blev opdateret." + }, + "wrong": { + "title": "Forkert mappe", + "text": "Den valgte mappe er ikke en gyldig Titanfall2 Installation." + }, + "not_found": { + "title": "Titanfall2 ikke fundet!", + "text": "Vælg venligst installationsstedet manuelt" + } + }, + "profile": { + "invalid": { + "title": "Ugyldig profil", + "text": "Den profil, du forsøgte at skifte til, er ikke længere gyldig." + } + }, + "flightcore_outdated": { + "title": "FlightCore forældet!", + "text": "Opdater venligst FlightCore.\nKører forældet version {oldVersion}.\nNyeste er {newVersion}!" + } + }, + "channels": { + "release": { + "switch": { + "text": "Skiftet udgivelseskanal til \"{canal}\"." + } + }, + "names": { + "Northstar": "Northstar", + "NorthstarReleaseCandidate": "Northstar udgivelseskandidat" + } + } +} diff --git a/src-vue/src/i18n/lang/de.json b/src-vue/src/i18n/lang/de.json new file mode 100644 index 00000000..a360c124 --- /dev/null +++ b/src-vue/src/i18n/lang/de.json @@ -0,0 +1,177 @@ +{ + "menu": { + "play": "Spielen", + "changelog": "Versionhistorie", + "mods": "Mods", + "settings": "Einstellungen", + "dev": "Dev" + }, + "generic": { + "yes": "Ja", + "no": "Nein", + "error": "Fehler", + "cancel": "Abbrechen", + "informationShort": "Info", + "downloading": "Herunterladen", + "extracting": "Extrahieren", + "done": "Fertig", + "success": "Erfolg", + "confirm": "Bestätigen" + }, + "play": { + "button": { + "northstar_is_running": "Spiel läuft", + "select_game_dir": "Titanfall2 ordner wählen", + "install": "Installieren", + "installing": "Installiert...", + "update": "Aktualisieren", + "updating": "Aktualisiert...", + "ready_to_play": "Spiel starten" + }, + "unknown_version": "Unbekannte Version", + "see_patch_notes": "Siehe Patch-Notizen", + "players": "Spieler", + "servers": "Server", + "unable_to_load_playercount": "Spielerzahl konnte nicht geladen werden", + "northstar_running": "Northstar läuft:", + "ea_app_running": "EA App läuft:" + }, + "mods": { + "local": { + "no_mods": "Keine Mods gefunden.", + "delete_confirm": "Bist du dir sicher, dass du diesen Mod löschen möchtest?", + "delete": "Löschen", + "part_of_ts_mod": "Dieser Northstar Mod ist teil eines Thunderstore Mods", + "success_deleting": "{modName} erfolgreich gelöscht" + }, + "online": { + "no_match": "Keine passenden Mods gefunden.", + "try_another_search": "Versuche eine andere Suchanfrage!" + }, + "menu": { + "local": "Lokal", + "online": "Online", + "filter": "Filter", + "search": "Suche", + "sort_mods": "Mods sortieren", + "select_categories": "Kategorien wählen", + "sort": { + "name_asc": "Nach Name (A to Z)", + "name_desc": "Nach Name (Z to A)", + "date_asc": "Nach Datum (älteste zuerst)", + "date_desc": "Nach Datum (neuste zuerst)", + "most_downloaded": "Am meisten heruntergeladen", + "top_rated": "Am besten bewerted" + } + }, + "card": { + "button": { + "being_installed": "Installiert...", + "being_updated": "Aktualisiert...", + "installed": "Installiert", + "install": "Installieren", + "outdated": "Aktualisieren" + }, + "by": "von", + "more_info": "Mehr Info", + "remove": "Mod entfernen", + "remove_dialog_title": "Warnung", + "remove_dialog_text": "Thunderstore Mod entfernen?", + "remove_success": "{modName} entfernt", + "install_success": "{modName} installiert" + } + }, + "settings": { + "manage_install": "Installation verwalten", + "choose_folder": "Installationsordner wählen", + "open_game_folder": "Ordner öffnen", + "nb_ts_mods_per_page": "Anzahl an Thunderstore Mods pro Seite", + "nb_ts_mods_per_page_desc1": "Ändern dieser Einstellung kann die Leistung beim Suchen von Thunderstore Mods beeinflussen.", + "nb_ts_mods_per_page_desc2": "Setze diesen Wert auf 0 um alle Mods auf einer einzelnen Seite anzuzeigen.", + "nb_ts_mods_reset": "Standard wiederherstellen", + "language": "Sprache", + "language_select": "Bevorzugte Sprache wählen", + "about": "Über:", + "flightcore_version": "FlightCore Version:", + "testing": "Testen:", + "enable_test_channels": "Testversionen aktivieren", + "dev_mode_enabled_title": "Vorsicht!", + "dev_mode_enabled_text": "Entwicklermodus aktiviert.", + "repair": { + "title": "Reparieren", + "open_window": "Reparierfenster öffnen", + "window": { + "title": "FlightCore Reparierfenster", + "warning": "Dieses Fenster enthält verschiedene Funktionen um gängige Probleme mit Northstar und FlightCore zu beheben.", + "disable_all_but_core": "Alle außer notwendige Mods deaktivieren", + "disable_all_but_core_success": "Alle außer notwendige Mods wurden deaktiviert", + "force_reinstall_ns": "Northstar reinstallieren", + "force_delete_temp_dl": "Temporären FlightCore Downloadordner löschen", + "delete_persistent_store": "FlightCore Einstellungen zurücksetzen", + "kill_northstar_process": "Laufenden Northstar/Titanfall2 Prozess beenden", + "reinstall_title": "Northstar wird neu installiert", + "reinstall_text": "Bitte warten", + "reinstall_success": "Northstar erfolgreich neu installiert", + "disable_modsettings_success": "Der Mod ModSettings wurde deaktiviert", + "disable_modsettings": "Deaktiviere den ModSettings Mod" + } + }, + "show_deprecated_mods_desc1": "Damit werden veraltete Mods in der Online-Mods-Ansicht sichtbar.", + "show_deprecated_mods_desc2": "Aber Vorsicht, solche Mods sind normalerweise aus gutem Grund als veraltet markiert.", + "show_deprecated_mods": "Veraltete Thunderstore mods anzeigen", + "profile": { + "dialog": { + "title": "Profile", + "delete_confirm": "Sind Sie sich sicher, dass Sie dieses Profil löschen möchten?", + "delete": "Löschen", + "clone": "Duplizieren", + "create_empty": "Neues Profil", + "new_profile_name": "Neuen Profilnamen eingeben" + }, + "active": "Aktives Profil", + "edit": "Profile bearbeiten" + } + }, + "notification": { + "game_folder": { + "new": { + "title": "Neuer Spielordner", + "text": "Spielordner erfolgreich aktualisiert." + }, + "wrong": { + "title": "Falscher Ordner", + "text": "Der gewählte Ordner enthält keine valide Titanfall2 Installation." + }, + "not_found": { + "title": "Titanfall2 nicht gefunden!", + "text": "Bitte wähle den Installationsordner manuell aus" + } + }, + "flightcore_outdated": { + "title": "FlightCore veraltet!", + "text": "Bitte aktualisiere FlightCore.\nDu hast die veraltetet Version {oldVersion}.\nNeuste Version ist {newVersion}!" + }, + "profile": { + "invalid": { + "text": "Das Profil auf das Sie wechseln möchten ist nicht länger gültig.", + "title": "Ungültiges Profil" + } + }, + "no_new": { + "title": "Aktuell", + "text": "Hier gibt es nichts zu sehen!" + }, + "date_prefix": "auf" + }, + "channels": { + "release": { + "switch": { + "text": "Releasekanal zu \"{canal}\" gewechselt." + } + }, + "names": { + "Northstar": "Northstar", + "NorthstarReleaseCandidate": "Northstar Release Candidate" + } + } +} diff --git a/src-vue/src/i18n/lang/en.json b/src-vue/src/i18n/lang/en.json new file mode 100644 index 00000000..4c3da49f --- /dev/null +++ b/src-vue/src/i18n/lang/en.json @@ -0,0 +1,200 @@ +{ + "menu": { + "play": "Play", + "changelog": "Changelog", + "mods": "Mods", + "settings": "Settings", + "dev": "Dev" + }, + + "generic": { + "yes": "Yes", + "no": "No", + "error": "Error", + "confirm": "Confirm", + "cancel": "Cancel", + "informationShort": "Info", + "downloading": "Downloading", + "extracting": "Extracting", + "done": "Done", + "success": "Success" + }, + + "play": { + "button": { + "northstar_is_running": "Game is running", + "select_game_dir": "Select Titanfall2 game folder", + "install": "Install", + "installing": "Installing...", + "update": "Update", + "updating": "Updating...", + "ready_to_play": "Launch game" + }, + + "unknown_version": "Unknown version", + "see_patch_notes": "see patch notes", + "players": "players", + "servers": "servers", + "unable_to_load_playercount": "Unable to load playercount", + "northstar_running": "Northstar is running:", + "ea_app_running": "EA App is running:" + }, + + "mods": { + "local": { + "no_mods": "No mods were found.", + "delete_confirm": "Are you sure to delete this mod?", + "delete": "Delete", + "part_of_ts_mod": "This Northstar mod is part of a Thunderstore mod", + "success_deleting": "Success deleting {modName}" + }, + + "online": { + "no_match": "No matching mod has been found.", + "try_another_search": "Try another search!" + }, + + "menu": { + "local": "Local", + "online": "Online", + "filter": "Filter", + "search": "Search", + "sort_mods": "Sort mods", + "select_categories": "Select categories", + + "sort": { + "name_asc": "By name (A to Z)", + "name_desc": "By name (Z to A)", + "date_asc": "By date (from oldest)", + "date_desc": "By date (from newest)", + "most_downloaded": "Most downloaded", + "top_rated": "Top rated" + } + }, + + "card": { + "button": { + "being_installed": "Installing...", + "being_updated": "Updating...", + "installed": "Installed", + "install": "Install", + "outdated": "Update" + }, + + "by": "by", + "more_info": "More info", + "remove": "Remove mod", + "remove_dialog_title": "Warning", + "remove_dialog_text": "Delete Thunderstore mod?", + "remove_success": "Removed {modName}", + "install_success": "Installed {modName}" + } + }, + + "settings": { + "manage_install": "Manage installation", + "choose_folder": "Choose installation folder", + "open_game_folder": "Open Folder", + "nb_ts_mods_per_page": "Number of Thunderstore mods per page", + "nb_ts_mods_per_page_desc1": "This has an impact on display performances when browsing Thunderstore mods.", + "nb_ts_mods_per_page_desc2": "Set this value to 0 to disable pagination.", + "nb_ts_mods_reset": "Reset to default", + "language": "Language", + "language_select": "Select your favorite language", + "about": "About:", + "flightcore_version": "FlightCore version:", + "testing": "Testing:", + "enable_test_channels": "Enable testing release channels", + "dev_mode_enabled_title": "Watch out!", + "dev_mode_enabled_text": "Developer mode enabled.", + "show_deprecated_mods": "Show deprecated Thunderstore mods", + "show_deprecated_mods_desc1": "This allows you to see deprecated mods in the online mods collection.", + "show_deprecated_mods_desc2": "Watch out, such mods are usually deprecated for a good reason.", + "show_nsfw_mods": "Show NSFW Thunderstore mods", + + "profile": { + "active": "Active Profile", + "edit": "Edit Profiles", + + "dialog": { + "title": "Profiles", + "delete_confirm": "Are you sure to delete this profile?", + "delete": "Delete", + "clone": "Clone", + "new_profile_name": "Enter the new Profile name", + "create_empty": "New Profile" + } + }, + + "repair": { + "title": "Repair", + "open_window": "Open repair window", + + "window": { + "title": "FlightCore repair window", + "warning": "This window contains various functionality to repair common issues with Northstar and FlightCore.", + "disable_all_but_core": "Disable all but core mods", + "disable_all_but_core_success": "Disabled all mods but core", + "disable_modsettings": "Disable ModSettings mod", + "disable_modsettings_success": "Disabled ModSettings mod", + "force_reinstall_ns": "Force reinstall Northstar", + "force_delete_temp_dl": "Force delete temp download folder", + "delete_persistent_store": "Delete FlightCore persistent store", + "kill_northstar_process": "Kill running Northstar/Titanfall2 process", + "reinstall_title": "Force reinstalling Northstar", + "reinstall_text": "Please wait", + "reinstall_success": "Successfully reinstalled Northstar" + } + } + }, + + "notification": { + "date_prefix": "at", + "no_new": { + "title": "Up-to-date", + "text": "Nothing to see here!" + }, + + "game_folder": { + "new": { + "title": "New game folder", + "text": "Game folder was successfully updated." + }, + + "wrong": { + "title": "Wrong folder", + "text": "Selected folder is not a valid Titanfall2 install." + }, + + "not_found": { + "title": "Titanfall2 not found!", + "text": "Please manually select install location" + } + }, + + "profile": { + "invalid": { + "title": "Invalid Profile", + "text": "The profile you tried to switch to is no longer valid." + } + }, + + "flightcore_outdated": { + "title": "FlightCore outdated!", + "text": "Please update FlightCore.\nRunning outdated version {oldVersion}.\nNewest is {newVersion}!" + } + }, + + "channels": { + "release": { + "switch": { + "text": "Switched release channel to \"{canal}\"." + } + }, + + "names": { + "Northstar": "Northstar", + "NorthstarReleaseCandidate": "Northstar release candidate" + } + } +} diff --git a/src-vue/src/i18n/lang/es.json b/src-vue/src/i18n/lang/es.json new file mode 100644 index 00000000..2b4d255c --- /dev/null +++ b/src-vue/src/i18n/lang/es.json @@ -0,0 +1,175 @@ +{ + "menu": { + "mods": "Modificaciones", + "settings": "Opciones", + "dev": "Desarrollador", + "play": "Jugar", + "changelog": "Cambios" + }, + "generic": { + "yes": "Sí", + "no": "No", + "error": "Error", + "cancel": "Cancelar", + "informationShort": "Información", + "extracting": "Extrayendo", + "done": "Listo", + "success": "Éxito", + "downloading": "Descargando", + "confirm": "Confirmar" + }, + "play": { + "button": { + "northstar_is_running": "El juego ya se está ejecutando", + "install": "Instalar", + "update": "Actualizar", + "select_game_dir": "Seleccione carpeta base de Titanfall 2", + "ready_to_play": "Jugar ahora", + "installing": "Instalando...", + "updating": "Actualizando..." + }, + "ea_app_running": "La aplicación de EA ya se está ejecutando:", + "unknown_version": "Versión Desconocida", + "see_patch_notes": "Ver las notas del parche", + "players": "jugadores", + "servers": "servidores", + "northstar_running": "Northstar ya se está ejecutando:", + "unable_to_load_playercount": "Cantidad de jugadores no disponible" + }, + "mods": { + "local": { + "no_mods": "No hay mods encontrados.", + "delete_confirm": "¿Estás segur@ que quieres eliminar este mod?", + "delete": "Eliminar", + "success_deleting": "{modName} Ha sido eliminado correctamente", + "part_of_ts_mod": "Este mod de Northstar es parte de un mod de la ThunderStore" + }, + "online": { + "no_match": "No hay mods coincidentes.", + "try_another_search": "Intente otra busqueda!" + }, + "menu": { + "local": "Local", + "online": "En línea", + "filter": "FIltro", + "search": "Búsqueda", + "sort_mods": "Ordenar mods", + "select_categories": "Seleccionar categorías", + "sort": { + "name_asc": "Por nombre (de la A a la Z)", + "date_asc": "Por fecha (desde la más antigua)", + "date_desc": "Por fecha (desde la más reciente)", + "most_downloaded": "Los más descargados", + "top_rated": "Mejor valorados", + "name_desc": "Por nombre (de la Z a la A)" + } + }, + "card": { + "button": { + "being_installed": "Instalando...", + "being_updated": "Actualizando...", + "installed": "Instalado", + "outdated": "Actualizar", + "install": "Instalar" + }, + "by": "por", + "remove": "Quitar mod", + "remove_dialog_title": "Advertencia", + "remove_dialog_text": "Eliminar mod de la ThunderStore?", + "install_success": "{modName} Instalado", + "more_info": "Mas información", + "remove_success": "{modName} Ha sido eliminado" + } + }, + "settings": { + "manage_install": "Administrar instalación", + "choose_folder": "Elegir carpeta de instalación", + "open_game_folder": "Abrir carpeta", + "nb_ts_mods_per_page": "Numero de mods por página de ThunderStore", + "nb_ts_mods_per_page_desc2": "Poner valor en 0 para desactivar la paginación.", + "nb_ts_mods_reset": "Reestablecer por defecto", + "language": "Idioma", + "language_select": "Seleccionar idioma favorito", + "about": "Acerca de:", + "flightcore_version": "Versión de FlightCore:", + "testing": "Probando:", + "enable_test_channels": "Activar liberación de canales", + "dev_mode_enabled_title": "¡Cuidado!", + "dev_mode_enabled_text": "Modo de desarrollador activado.", + "show_deprecated_mods_desc1": "Esto permite ver mods obsoletos de la colección online de ThunderStore.", + "show_deprecated_mods_desc2": "Cuidado, estos mods suelen estar obsoletos por una buena razón.", + "profile": { + "active": "Perfil activo", + "edit": "Editar perfiles", + "dialog": { + "title": "Perfiles", + "delete_confirm": "Eliminar Perfil?", + "delete": "Eliminar", + "clone": "Duplicar" + } + }, + "repair": { + "title": "Reparar", + "window": { + "title": "Ventana de reparación de FlightCore", + "disable_all_but_core": "Desactivar todos los mods excepto los principales", + "disable_all_but_core_success": "Desactivados todos los mods excepto el núcleo", + "disable_modsettings": "Desactivar ModSettings", + "disable_modsettings_success": "ModSettings desactivado", + "force_reinstall_ns": "Forzar reinstalación de Northstar", + "force_delete_temp_dl": "Forzar la eliminación de la carpeta temporal de descargas", + "delete_persistent_store": "Borrar el almacén persistente de FlightCore", + "reinstall_title": "Forzar la reinstalación de Northstar", + "reinstall_text": "Espere, por favor", + "reinstall_success": "Northstar reinstalado con éxito", + "warning": "Esta ventana tiene varias funciones para reparar problemas comunes con Northstar y FlightCore.", + "kill_northstar_process": "Finalizar proceso de Northstar/Titanfall 2" + }, + "open_window": "Abrir la ventana de reparación" + }, + "nb_ts_mods_per_page_desc1": "Esto puede tener impactos en fluidez al buscar mods en la ThunderStore.", + "show_deprecated_mods": "Mostrar mods the ThunderStore obsoletos" + }, + "notification": { + "game_folder": { + "new": { + "title": "Nueva carpeta de juego", + "text": "La carpeta de juego fue actualizada exitosamente." + }, + "wrong": { + "title": "Carpeta equivocada", + "text": "La carpeta seleccionada no es una carpeta de Titanfall2 válida." + }, + "not_found": { + "title": "Titanfall 2 no encontrado!", + "text": "Por favor seleccione manualmente el lugar de instalación" + } + }, + "profile": { + "invalid": { + "title": "Perfil inválido", + "text": "El perfil de cambio anterior ya no es válido." + } + }, + "flightcore_outdated": { + "title": "FlightCore desactualizado!", + "text": "Por favor actualize FlightCore.\nEsta versión esta desactualizada {oldVersion}\nLa versión mas nueva es {newVersion}!" + }, + "no_new": { + "title": "Al día", + "text": "Nada que ver aquí!" + }, + "date_prefix": "en" + }, + "channels": { + "release": { + "switch": { + "text": "El canal seleccionado se cambió a \"{canal}\"." + } + }, + "names": { + "Northstar": "Northstar", + "NorthstarReleaseCandidate": "Candidato de nueva versión de Northstar" + } + } +} diff --git a/src-vue/src/i18n/lang/fr.json b/src-vue/src/i18n/lang/fr.json new file mode 100644 index 00000000..efc0815b --- /dev/null +++ b/src-vue/src/i18n/lang/fr.json @@ -0,0 +1,177 @@ +{ + "menu": { + "play": "Jouer", + "changelog": "Notes", + "mods": "Mods", + "settings": "Paramètres", + "dev": "Dev" + }, + "generic": { + "yes": "Oui", + "no": "Non", + "error": "Erreur", + "cancel": "Annuler", + "informationShort": "Info", + "downloading": "Téléchargement", + "extracting": "Extraction", + "done": "Fait", + "success": "Succès", + "confirm": "Confirmed" + }, + "play": { + "button": { + "northstar_is_running": "En cours d'utilisation", + "select_game_dir": "Sélectionner le dossier du jeu", + "install": "Installer", + "installing": "Installation...", + "update": "Mettre à jour", + "updating": "Mise à jour...", + "ready_to_play": "Jouer" + }, + "unknown_version": "Version inconnue", + "see_patch_notes": "voir les notes de version", + "players": "joueurs", + "servers": "serveurs", + "unable_to_load_playercount": "Impossible de charger les statistiques", + "northstar_running": "Northstar est en cours d'exécution :", + "ea_app_running": "EA App est en cours d'exécution :" + }, + "mods": { + "local": { + "no_mods": "Aucun mod trouvé.", + "delete_confirm": "Êtes-vous certain de vouloir supprimer ce mod ?", + "delete": "Supprimer", + "part_of_ts_mod": "Ce mod Northstar fait partie d'un mod Thunderstore", + "success_deleting": "Succès de la suppression de {modName}" + }, + "online": { + "no_match": "Aucun mod correspondant n'a été trouvé.", + "try_another_search": "Essayez une autre recherche !" + }, + "menu": { + "local": "Local", + "online": "En ligne", + "filter": "Filtrer", + "search": "Chercher", + "sort_mods": "Trier les mods", + "select_categories": "Choisir les catégories", + "sort": { + "name_asc": "Par nom (de A à Z)", + "name_desc": "Par nom (de Z à A)", + "date_asc": "Par date (du plus vieux)", + "date_desc": "Par date (du plus récent)", + "most_downloaded": "Plus téléchargés", + "top_rated": "Mieux notés" + } + }, + "card": { + "button": { + "being_installed": "Installation...", + "being_updated": "Mise à jour...", + "installed": "Installé", + "install": "Installer", + "outdated": "Mettre à jour" + }, + "by": "par", + "more_info": "Plus d'informations", + "remove": "Supprimer le mod", + "remove_dialog_title": "Attention", + "remove_dialog_text": "Voulez-vous vraiment supprimer ce mod Thunderstore ?", + "remove_success": "{modName} supprimé", + "install_success": "{modName} installé" + } + }, + "settings": { + "manage_install": "Gérer l'installation", + "choose_folder": "Choisir le dossier d'installation du jeu", + "open_game_folder": "Ouvrir le dossier du jeu", + "nb_ts_mods_per_page": "Nombre de mods Thunderstore par page", + "nb_ts_mods_per_page_desc1": "Ce paramètre a un impact sur les performances d'affichage des mods Thunderstore.", + "nb_ts_mods_per_page_desc2": "Réglez-le sur 0 pour désactiver la pagination.", + "nb_ts_mods_reset": "Valeur par défaut", + "language": "Langue", + "language_select": "Sélectionnez votre langue", + "about": "À propos", + "flightcore_version": "Version de FlightCore :", + "testing": "Tests :", + "enable_test_channels": "Activer le test de versions de pré-production", + "dev_mode_enabled_title": "Attention !", + "dev_mode_enabled_text": "Mode développeur activé.", + "repair": { + "title": "Dépannage", + "open_window": "Ouvrir la fenêtre de dépannage", + "window": { + "title": "Fenêtre de dépannage FlightCore", + "warning": "Cette fenêtre contient plusieurs fonctionnalité de résolution de problèmes courants avec Northstar et FlightCore.", + "disable_all_but_core": "Désactiver tous les mods (sauf ceux de Northstar)", + "disable_all_but_core_success": "Tous les mods sauf ceux de Northstar ont été désactivés", + "force_reinstall_ns": "Forcer la réinstallation de Northstar", + "force_delete_temp_dl": "Supprimer le dossier de téléchargement temporaire", + "delete_persistent_store": "Supprimer l'espace de stockage local de FlightCore", + "reinstall_title": "Forcer la réinstallation de Northstar", + "reinstall_text": "Veuillez patienter", + "reinstall_success": "Northstar réinstallé avec succès", + "disable_modsettings": "Désactiver le mod ModSettings", + "disable_modsettings_success": "Mod ModSettings désactivé", + "kill_northstar_process": "Arrêter le processus en cous de Northstar/Titanfall2" + } + }, + "show_deprecated_mods": "Montrer les mods Thunderstore dépréciés", + "show_deprecated_mods_desc1": "Ce paramètre vous permet d'afficher les mods Thunderstore dépréciés dans la collection de mods.", + "show_deprecated_mods_desc2": "Attention, les mods dépréciés le sont généralement pour une bonne raison.", + "profile": { + "active": "Profile actif", + "edit": "Éditer les profiles", + "dialog": { + "title": "Profiles", + "clone": "Cloner", + "delete": "Supprimer", + "delete_confirm": "Voulez-vous vraiment supprimer ce profil ?", + "create_empty": "nouveau profil", + "new_profile_name": "Entrez le nouveau nom du profil" + } + } + }, + "notification": { + "date_prefix": "à", + "no_new": { + "title": "Vous êtes à jour", + "text": "Rien à voir par ici !" + }, + "game_folder": { + "new": { + "title": "Nouveau dossier", + "text": "Le dossier du jeu a bien été mis à jour." + }, + "wrong": { + "title": "Mauvais dossier", + "text": "Le dossier sélectionné ne contient pas d'installation de Titanfall2." + }, + "not_found": { + "title": "Titanfall2 non trouvé !", + "text": "Veuillez sélectionner manuellement le dossier du jeu." + } + }, + "flightcore_outdated": { + "title": "Mise à jour disponible !", + "text": "Veuillez mettre à jour FlightCore.\nVersion actuelle : {oldVersion}.\nNouvelle version : {newVersion} !" + }, + "profile": { + "invalid": { + "text": "Le profile sur lequel vous essayez de basculer n'est plus valide.", + "title": "Profile invalide" + } + } + }, + "channels": { + "release": { + "switch": { + "text": "Le canal de téléchargement a été réglé sur \"{canal}\"." + } + }, + "names": { + "Northstar": "Northstar", + "NorthstarReleaseCandidate": "Version de pré-release" + } + } +} diff --git a/src-vue/src/i18n/lang/it.json b/src-vue/src/i18n/lang/it.json new file mode 100644 index 00000000..9da8ce8d --- /dev/null +++ b/src-vue/src/i18n/lang/it.json @@ -0,0 +1,175 @@ +{ + "generic": { + "yes": "Si", + "no": "No", + "error": "Errore", + "cancel": "Cancella", + "downloading": "Scaricando", + "extracting": "Estraendo", + "done": "Fatto", + "success": "Successo", + "informationShort": "Info", + "confirm": "Conferma" + }, + "play": { + "unknown_version": "Versione sconosciuta", + "unable_to_load_playercount": "Impossibile caricare numero giocatori", + "northstar_running": "Northstar sta andando:", + "origin_running": "Origin sta andando:", + "see_patch_notes": "guarda le note della patch", + "players": "Giocatori", + "servers": "Server", + "button": { + "northstar_is_running": "Il Gioco sta andando", + "install": "Installa", + "installing": "Installazione...", + "update": "Aggiorna", + "updating": "Aggiornamento...", + "ready_to_play": "Gioca", + "select_game_dir": "Seleziona la cartella di Titanfall 2" + }, + "ea_app_running": "EA App sta andando:" + }, + "mods": { + "local": { + "no_mods": "Nessuna mod è stata trovata.", + "delete_confirm": "Sei sicuro di voler eliminare questa mod?", + "part_of_ts_mod": "Questa Northstar mod è parte di una Thunderstore mod", + "success_deleting": "{modName} Eliminata con successo", + "delete": "Elimina" + }, + "online": { + "no_match": "Nessuna mod corrispondente trovata.", + "try_another_search": "Prova un'altra ricerca!" + }, + "menu": { + "local": "Locale", + "filter": "Filtra", + "online": "Online", + "search": "Cerca", + "sort_mods": "Sorteggia mods", + "select_categories": "Seleziona categorie", + "sort": { + "name_asc": "Per nome (da A alla Z)", + "name_desc": "Per nome (da Z alla A)", + "date_asc": "Per data (dal più vecchio)", + "date_desc": "Per data (dal più recente)", + "most_downloaded": "Più scaricate", + "top_rated": "Più votate" + } + }, + "card": { + "button": { + "being_updated": "Aggiornando...", + "installed": "Installato", + "being_installed": "Installando...", + "install": "Installa", + "outdated": "Aggiorna" + }, + "by": "per", + "more_info": "Più informazioni", + "remove": "Rimuovi mod", + "remove_dialog_title": "Attenzione", + "remove_dialog_text": "Eliminare Thunderstore mod?", + "remove_success": "{modName} Rimossa", + "install_success": "{modName} Installata" + } + }, + "menu": { + "mods": "Mods", + "settings": "Impostazioni", + "dev": "Dev", + "play": "Gioca", + "changelog": "Note" + }, + "notification": { + "game_folder": { + "wrong": { + "title": "Cartella errata", + "text": "La cartella selezionata non ha un'installazione di Titanfall2 valida." + }, + "new": { + "title": "Nuova cartella di gioco", + "text": "Cartella di gioco aggiornata con successo." + }, + "not_found": { + "title": "Titanfall2 non trovato!", + "text": "Per favore selezionare manualmente la posizione dell'installazione" + } + }, + "flightcore_outdated": { + "title": "FlightCore fuori data!", + "text": "Per favore aggiorna FlightCore.\nVersione in uso {oldVersion} fuori data.\nLa più recente è {newVersion}!" + }, + "no_new": { + "text": "Niente da vedere qui!", + "title": "Aggiornato" + }, + "profile": { + "invalid": { + "text": "Il profilo a cui hai provato ad accedere non è più valido.", + "title": "Profilo non valido" + } + } + }, + "settings": { + "manage_install": "Gestisci l'installazione", + "choose_folder": "Scegli la cartella dell'installazione", + "open_game_folder": "Apri Cartella", + "nb_ts_mods_per_page": "Numero di Thunderstore mods per pagina", + "nb_ts_mods_per_page_desc1": "Questo ha un impatto sulle performazioni schermo mentre si navigano le Thunderstore mods.", + "nb_ts_mods_per_page_desc2": "Cambiare questo valore a 0 per disattivare la paginazione.", + "nb_ts_mods_reset": "Resetta a default", + "language": "Lingua", + "language_select": "Seleziona la tua lingua preferito", + "about": "Al riguardo:", + "flightcore_version": "Versione FlighCore:", + "testing": "Testando:", + "enable_test_channels": "Abilita i canali del test di rilascio", + "dev_mode_enabled_title": "Attenzione!", + "dev_mode_enabled_text": "Modalità Sviluppatore attivata.", + "repair": { + "title": "Ripara", + "open_window": "Apri finestra di riparazione", + "window": { + "title": "Finestra riparazione di FlightCore", + "warning": "Questa finestra contiene varie funzionalità per riparare problemi comuni con Northstar e FlightCore.", + "disable_all_but_core": "Disattiva tutte le mods (eccetto quelle di Northstar)", + "disable_all_but_core_success": "Disattivate tutte le mods (eccetto quelle di Northstar)", + "force_reinstall_ns": "Forza reinstallazione di Northstar", + "force_delete_temp_dl": "Forza l'eliminazione della cartella dei download temporanei", + "delete_persistent_store": "Elimina lo spazio d'archiviazione persistente di FlightCore", + "reinstall_title": "Reinstallando Northstar forzatamente", + "reinstall_text": "Attendere per favore", + "reinstall_success": "Northstar reinstallato con successo", + "kill_northstar_process": "Ferma il processo Northstar/Titanfall2 in esecuzione", + "disable_modsettings_success": "ModSettings disabilitata", + "disable_modsettings": "Disabilita la mod ModSettings" + } + }, + "profile": { + "active": "Profilo attivo", + "dialog": { + "clone": "Clona", + "delete": "Elimina", + "delete_confirm": "Sei sicuro di voler eliminare questo profilo?", + "title": "Profili" + }, + "edit": "Modifica profilo" + }, + "show_deprecated_mods": "Mostra mod di Thunderstore deprecate", + "show_deprecated_mods_desc2": "Fai attenzione, alcune mod di solito sono deprecate per un buon motivo.", + "show_deprecated_mods_desc1": "Permette di vedere le mod deprecate nella collezione online." + }, + "channels": { + "release": { + "switch": { + "text": "Cambiato il canale di rilascio a \"{canal}\"." + } + }, + "names": { + "Northstar": "Northstar", + "NorthstarReleaseCandidate": "Northstar versione pre-rilascio" + } + } +} diff --git a/src-vue/src/i18n/lang/pl.json b/src-vue/src/i18n/lang/pl.json new file mode 100644 index 00000000..175d6eb3 --- /dev/null +++ b/src-vue/src/i18n/lang/pl.json @@ -0,0 +1,177 @@ +{ + "menu": { + "changelog": "Dziennik zmian", + "mods": "Mody", + "settings": "Ustawienia", + "dev": "Dev", + "play": "Graj" + }, + "generic": { + "yes": "Tak", + "no": "Nie", + "error": "Błąd", + "cancel": "Anuluj", + "downloading": "Pobieranie", + "extracting": "Wypakowywanie", + "done": "Gotowe", + "success": "Sukces", + "informationShort": "Informacja", + "confirm": "Potwierdź" + }, + "play": { + "button": { + "northstar_is_running": "Gra jest uruchomiona", + "select_game_dir": "Wybierz folder gry Titanfall2", + "install": "Zainstaluj", + "update": "Aktualizuj", + "updating": "Aktualizowanie...", + "ready_to_play": "Uruchom grę", + "installing": "Instalowanie..." + }, + "unknown_version": "Nieznana wersja", + "see_patch_notes": "zobacz listę zmian", + "players": "gracze", + "servers": "serwery", + "northstar_running": "Northstar jest uruchomiony:", + "ea_app_running": "EA App jest uruchomiony:", + "unable_to_load_playercount": "Nie można załadować liczby graczy" + }, + "mods": { + "local": { + "no_mods": "Nie znaleziono żadnych modów.", + "delete_confirm": "Czy na pewno chcesz usunąć ten mod?", + "delete": "Usuń", + "success_deleting": "Sukces usuwania {modName}", + "part_of_ts_mod": "Ten mod Northstar jest częścią moda Thunderstore" + }, + "online": { + "no_match": "Nie znaleziono pasującego moda.", + "try_another_search": "Spróbuj innego wyszukiwania!" + }, + "menu": { + "local": "Lokalne", + "online": "Online", + "filter": "Filtry", + "search": "Szukaj", + "sort_mods": "Sortowanie modów", + "select_categories": "Wybierz kategorie", + "sort": { + "name_asc": "Według nazwy (od A do Z)", + "name_desc": "Według nazwy (od Z do A)", + "date_desc": "Według daty (od najnowszej)", + "most_downloaded": "Najczęściej pobierane", + "top_rated": "Najwyżej ocenione", + "date_asc": "Według daty (od najstarszej)" + } + }, + "card": { + "button": { + "being_installed": "Instalowanie...", + "being_updated": "Aktualizowanie...", + "installed": "Zainstalowano", + "install": "Zainstaluj", + "outdated": "Aktualizuj" + }, + "by": "od", + "more_info": "Więcej informacji", + "remove": "Usuń moda", + "remove_dialog_title": "Ostrzeżenie", + "remove_dialog_text": "Usunąć mod Thunderstore?", + "remove_success": "Usunięto {modName}", + "install_success": "Zainstalowano {modName}" + } + }, + "settings": { + "manage_install": "Zarządzaj instalacją", + "choose_folder": "Wybierz folder instalacyjny", + "nb_ts_mods_per_page": "Liczba modów Thunderstore na stronie", + "nb_ts_mods_per_page_desc2": "Ustaw tę wartość na 0, aby wyłączyć paginację.", + "nb_ts_mods_reset": "Przywrócenie ustawień domyślnych", + "language": "Język", + "language_select": "Wybierz swój ulubiony język", + "about": "O:", + "flightcore_version": "Wersja FlightCore:", + "testing": "Testy:", + "enable_test_channels": "Włączenie kanałów wydań testowych", + "dev_mode_enabled_title": "Uważaj!", + "dev_mode_enabled_text": "Tryb deweloperski włączony.", + "repair": { + "title": "Naprawa", + "open_window": "Otwórz okno naprawy", + "window": { + "disable_all_but_core": "Wyłączenie wszystkich modów poza podstawowymi", + "disable_all_but_core_success": "Wyłączone wszystkie mody oprócz podstawowych", + "force_reinstall_ns": "Wymuś reinstalację Northstara", + "force_delete_temp_dl": "Wymuś usunięcie folderu tymczasowego pobierania", + "delete_persistent_store": "Usuń stały magazyn FlightCore", + "reinstall_title": "Wymuszona reinstalacja Northstara", + "reinstall_text": "Proszę czekać", + "reinstall_success": "Pomyślnie przeinstalowano Northstar", + "title": "Okno naprawy FlightCore", + "warning": "To okno zawiera różne funkcje do naprawy typowych problemów z Northstar i FlightCore.", + "disable_modsettings": "Wyłącz moda ModSettings", + "disable_modsettings_success": "Wyłączono moda ModSettings", + "kill_northstar_process": "Zamknij uruchomiony proces Northstar/Titanfall2" + } + }, + "nb_ts_mods_per_page_desc1": "Ma to wpływ na wydajność wyświetlania podczas przeglądania modów Thunderstore.", + "open_game_folder": "Otwórz folder", + "show_deprecated_mods_desc2": "Ostrożnie, mody są zazwyczaj oznaczone jako przestarzałe nie bez powodu.", + "show_deprecated_mods": "Pokaż przestarzałe mody Thunderstore", + "show_deprecated_mods_desc1": "Pozwala to zobaczyć przestarzałe mody w kolekcji modów online.", + "profile": { + "active": "Aktywny profil", + "dialog": { + "title": "Profile", + "delete": "Usuń", + "clone": "Klonuj", + "new_profile_name": "Wprowadź nową nazwę profilu", + "create_empty": "Nowy profil", + "delete_confirm": "Czy na pewno chcesz usunąć ten profil?" + }, + "edit": "Edytuj profile" + } + }, + "notification": { + "game_folder": { + "new": { + "title": "Nowy folder z grą", + "text": "Folder gry został pomyślnie zaktualizowany." + }, + "wrong": { + "title": "Niewłaściwy folder", + "text": "Wybrany folder nie jest poprawną instalacją Titanfall2." + }, + "not_found": { + "title": "Nie znaleziono Titanfall2!", + "text": "Proszę ręcznie wybrać lokalizację instalacji" + } + }, + "flightcore_outdated": { + "title": "FlightCore nieaktualny!", + "text": "Proszę zaktualizować FlightCore.\nUruchomiono przestarzałą wersję {oldVersion}.\nNajnowsza to {newVersion}!" + }, + "profile": { + "invalid": { + "title": "Nieprawidłowy profil", + "text": "Profil, na który próbowano się przełączyć, nie jest już prawidłowy." + } + }, + "no_new": { + "title": "Aktualny", + "text": "Nie ma tu nic do obejrzenia!" + }, + "date_prefix": "na" + }, + "channels": { + "release": { + "switch": { + "text": "Przełączono kanał wydań na \"{canal}\"." + } + }, + "names": { + "Northstar": "Northstar", + "NorthstarReleaseCandidate": "Kandydat do wydania Northstar" + } + } +} diff --git a/src-vue/src/i18n/lang/ru.json b/src-vue/src/i18n/lang/ru.json new file mode 100644 index 00000000..b0261299 --- /dev/null +++ b/src-vue/src/i18n/lang/ru.json @@ -0,0 +1,178 @@ +{ + "generic": { + "yes": "Да", + "no": "Нет", + "extracting": "Распаковывание", + "done": "Готово", + "success": "Успешно", + "error": "Ошибка", + "cancel": "Отмена", + "informationShort": "Информация", + "downloading": "Скачивание", + "confirm": "Подтвердить" + }, + "menu": { + "mods": "Моды", + "play": "Играть", + "settings": "Настройки", + "dev": "Разработчик", + "changelog": "Обновления" + }, + "play": { + "button": { + "northstar_is_running": "Игра запущена", + "install": "Установить", + "installing": "Установка...", + "updating": "Обновление...", + "ready_to_play": "Запустить игру", + "update": "Обновить", + "select_game_dir": "Выберите папку с Titanfall 2" + }, + "unknown_version": "Неизвестная версия", + "players": "игроков", + "servers": "серверов", + "unable_to_load_playercount": "Не можем загрузить количество игроков", + "northstar_running": "Northstar запущен:", + "ea_app_running": "EA App запущен:", + "see_patch_notes": "просмотреть список изменений" + }, + "mods": { + "local": { + "delete_confirm": "Вы уверены, что хотите удалить этот мод?", + "delete": "Удалить", + "success_deleting": "{modName} Успешно удален", + "no_mods": "Моды не найдены.", + "part_of_ts_mod": "Этот мод Northstar является частью мода на Thunderstore" + }, + "online": { + "no_match": "Не найдено совпадающих модов.", + "try_another_search": "Попробуйте другой запрос!" + }, + "menu": { + "online": "Онлайн", + "filter": "Фильтр", + "search": "Поиск", + "sort_mods": "Сортировать моды", + "sort": { + "name_asc": "По имени (от A до Z)", + "name_desc": "По имени (от Z до A)", + "date_asc": "По дате (со старейшего)", + "date_desc": "По дате (с новейшего)", + "top_rated": "Самый популярный", + "most_downloaded": "Самый загружаемый" + }, + "local": "Установленные", + "select_categories": "Выбрать категории" + }, + "card": { + "button": { + "being_installed": "Установка...", + "being_updated": "Обновление...", + "installed": "Установлен", + "install": "Установить", + "outdated": "Обновить" + }, + "by": "от", + "remove": "Удалить мод", + "remove_dialog_title": "Внимание", + "remove_dialog_text": "Удалить мод Thunderstore?", + "remove_success": "{modName} Удален", + "more_info": "Подробнее", + "install_success": "{modName} Установлен" + } + }, + "settings": { + "manage_install": "Управлять установкой", + "choose_folder": "Выберите папку установки", + "open_game_folder": "Открыть папку", + "nb_ts_mods_reset": "Вернуть по умолчанию", + "language": "Язык", + "language_select": "Выберите свой любимый язык", + "testing": "Тестирование:", + "enable_test_channels": "Включить каналы с тестовыми релизами", + "dev_mode_enabled_title": "Осторожно!", + "repair": { + "open_window": "Открыть окно фиксов", + "window": { + "title": "Окно фиксов FlightCore", + "force_reinstall_ns": "Принудительно переустановить Northstar", + "delete_persistent_store": "Удалить постоянное хранилище FlightCore", + "reinstall_title": "Принудительно переустанавливаем Northstar", + "reinstall_text": "Пожалуйста, подождите", + "disable_all_but_core_success": "Выключены все моды кроме главных", + "disable_all_but_core": "Выключить все моды, кроме главных", + "warning": "Это окно содержит различные функции для устранения часто возникающих проблем с Northstar и FlightCore.", + "force_delete_temp_dl": "Принудительно удалить папку с временными загрузками", + "reinstall_success": "Northstar успешно переустановлен", + "disable_modsettings": "Выключить мод ModSettings", + "disable_modsettings_success": "Выключен мод ModSettings", + "kill_northstar_process": "Закрыть запущенный Northstar/Titanfall 2" + }, + "title": "Фиксы" + }, + "nb_ts_mods_per_page_desc1": "Это влияет на производительность при просмотре модов с Thunderstore.", + "about": "Информация:", + "nb_ts_mods_per_page": "Количество модов Thunderstore на каждую страницу", + "nb_ts_mods_per_page_desc2": "Установите это значение на 0, чтобы отключить страницы.", + "flightcore_version": "Версия FlightCore:", + "dev_mode_enabled_text": "Включен режим разработчика.", + "show_deprecated_mods": "Показать устаревшие моды Thunderstore", + "show_deprecated_mods_desc1": "Это позволяет вам видеть устаревшие моды в меню онлайн модов.", + "show_deprecated_mods_desc2": "Внимание, такие моды обычно устаревшие по хорошей причине.", + "profile": { + "active": "Активный Профиль", + "edit": "Редактировать Профили", + "dialog": { + "title": "Профили", + "clone": "Копировать", + "delete": "Удалить", + "delete_confirm": "Вы уверены, что хотите удалить этот профиль?", + "new_profile_name": "Введите новое имя профиля", + "create_empty": "Новый профиль" + } + }, + "show_nsfw_mods": "Показывать NSFW-моды с Thunderstore" + }, + "notification": { + "game_folder": { + "new": { + "title": "Новая папка игры", + "text": "Папка игры успешно обновлена." + }, + "wrong": { + "title": "Неправильная папка", + "text": "Выбранная папка не является папкой с Titanfall 2." + }, + "not_found": { + "title": "Titanfall 2 не найден!", + "text": "Пожалуйста, вручную выберите место установки" + } + }, + "flightcore_outdated": { + "title": "FlightCore устарел!", + "text": "Пожалуйста, обновите FlightCore\nСейчас запущена старая версия - {oldVersion}.\nНовейшая версия - {newVersion}!" + }, + "profile": { + "invalid": { + "title": "Некорректный Профиль", + "text": "Профиль, на который вы пытаетесь переключиться, больше не является корректным." + } + }, + "no_new": { + "text": "Смотреть здесь нечего!", + "title": "Нет уведомлений" + }, + "date_prefix": "в" + }, + "channels": { + "release": { + "switch": { + "text": "Релизный канал переключен на \"{canal}\"." + } + }, + "names": { + "Northstar": "Northstar", + "NorthstarReleaseCandidate": "Пре-релизная версия Northstar" + } + } +} diff --git a/src-vue/src/i18n/lang/zh_Hans.json b/src-vue/src/i18n/lang/zh_Hans.json new file mode 100644 index 00000000..dca36f98 --- /dev/null +++ b/src-vue/src/i18n/lang/zh_Hans.json @@ -0,0 +1,169 @@ +{ + "menu": { + "mods": "模组", + "settings": "设置", + "dev": "开发者模式", + "play": "开始游玩", + "changelog": "更新日志" + }, + "generic": { + "error": "错误", + "cancel": "取消", + "yes": "是", + "no": "否", + "informationShort": "信息", + "downloading": "下载中", + "extracting": "解压中", + "done": "完成", + "success": "成功", + "confirm": "确认" + }, + "play": { + "button": { + "northstar_is_running": "游戏正在运行", + "select_game_dir": "选择Titanfall 2游戏目录", + "install": "安装", + "installing": "安装中...", + "update": "升级", + "ready_to_play": "启动游戏", + "updating": "升级中..." + }, + "unknown_version": "未知版本", + "see_patch_notes": "参阅相关补丁说明", + "servers": "服务器", + "players": "玩家", + "unable_to_load_playercount": "加载玩家数量失败", + "ea_app_running": "EA App运行状态:", + "northstar_running": "Northstar运行状态:" + }, + "mods": { + "local": { + "no_mods": "未找到模组。", + "delete_confirm": "你确定要删除该模组吗?", + "delete": "删除", + "part_of_ts_mod": "该Northstar模组来源于Thunderstore", + "success_deleting": "成功删除 {modName}" + }, + "online": { + "try_another_search": "尝试其他搜索方式!", + "no_match": "未找到相匹配的模组。" + }, + "menu": { + "local": "本地", + "search": "搜索", + "sort_mods": "模组排序", + "select_categories": "标签选择", + "sort": { + "date_desc": "日期降序", + "date_asc": "日期升序", + "name_desc": "按名称(Z到A)", + "most_downloaded": "最多下载", + "top_rated": "最高评分", + "name_asc": "按名称(A到Z)" + }, + "online": "线上", + "filter": "筛选" + }, + "card": { + "button": { + "being_installed": "安装中...", + "being_updated": "升级中...", + "installed": "已安装", + "install": "安装", + "outdated": "升级" + }, + "by": "作者:", + "remove": "移除模组", + "remove_dialog_title": "警告", + "remove_success": "已移除{modName}", + "install_success": "已安装 {modName}", + "more_info": "更多信息", + "remove_dialog_text": "删除该来自Thunderstore的模组?" + } + }, + "settings": { + "manage_install": "安装管理", + "choose_folder": "选择安装目录", + "open_game_folder": "打开文件夹", + "nb_ts_mods_per_page": "Thunderstore每页显示多少个模组", + "nb_ts_mods_per_page_desc2": "该值设为0时将不再显示页码。", + "nb_ts_mods_reset": "重置为默认值", + "language": "语言", + "language_select": "请选择你需要的语言", + "about": "关于:", + "flightcore_version": "FlightCore 版本:", + "testing": "测试选项:", + "enable_test_channels": "开启测试版本选项", + "nb_ts_mods_per_page_desc1": "该数值对加载Thunderstore页面时的速度有影响。", + "dev_mode_enabled_title": "看上面!", + "dev_mode_enabled_text": "开发者模式已启用。", + "show_deprecated_mods": "显示已弃用的Thunderstore模组", + "show_deprecated_mods_desc1": "该选项会使您可以在线上模组合集中看到已弃用的模组。", + "show_deprecated_mods_desc2": "请注意,这类模组被弃用一般是有原因的。", + "repair": { + "title": "修复", + "window": { + "title": "FlightCore 修复工具", + "warning": "此工具包含修复Northstar和FlightCore各种常见问题的功能。", + "disable_all_but_core": "除了核心模组以外禁用其他模组", + "disable_all_but_core_success": "已禁用除核心模组以外的所有模组", + "disable_modsettings": "禁用ModSettings模组", + "disable_modsettings_success": "已禁用ModSettings模组", + "force_delete_temp_dl": "强制删除临时下载目录", + "delete_persistent_store": "删除FlightCore永久存储文件", + "reinstall_text": "请耐心等待", + "reinstall_success": "成功重装Northstar", + "force_reinstall_ns": "强制重装Northstar", + "reinstall_title": "正在强制重装Northstar", + "kill_northstar_process": "终止正在运行的 Northstar/Titanfall2 进程" + }, + "open_window": "打开修复工具" + }, + "profile": { + "active": "当前用户配置", + "edit": "编辑用户配置", + "dialog": { + "title": "用户配置", + "delete_confirm": "你确定要删除此配置文件吗?", + "delete": "删除" + } + } + }, + "notification": { + "game_folder": { + "new": { + "title": "新的游戏目录", + "text": "已成功更新游戏目录。" + }, + "wrong": { + "title": "错误的文件夹", + "text": "所选文件夹不是有效的Titanfall2安装目录。" + }, + "not_found": { + "title": "未找到Titanfall2!", + "text": "请手动选择安装目录" + } + }, + "flightcore_outdated": { + "title": "FlightCore需要更新!", + "text": "请更新FlightCore.\n正在运行旧版本 {oldVersion}.\n最新版本为 {newVersion}!" + }, + "profile": { + "invalid": { + "title": "无效用户配置", + "text": "您尝试切换到的用户配置已失效。" + } + } + }, + "channels": { + "release": { + "switch": { + "text": "将资源版本切换至 \"{canal}\"." + } + }, + "names": { + "NorthstarReleaseCandidate": "Northstar测试版本", + "Northstar": "Northstar" + } + } +} diff --git a/src-vue/src/main.ts b/src-vue/src/main.ts index b670de8b..9d8fee83 100644 --- a/src-vue/src/main.ts +++ b/src-vue/src/main.ts @@ -1,4 +1,67 @@ -import { createApp } from "vue"; -import App from "./App.vue"; +import { createApp } from 'vue' +import { createI18n } from "vue-i18n"; +import App from './App.vue' +import ElementPlus from "element-plus"; +import * as ElementPlusIconsVue from '@element-plus/icons-vue' +import { store } from './plugins/store'; +import PlayView from "./views/PlayView.vue"; +import ChangelogView from "./views/ChangelogView.vue"; +import ModsView from "./views/ModsView.vue"; +import SettingsView from "./views/SettingsView.vue"; +import DeveloperView from "./views/DeveloperView.vue"; +import RepairView from "./views/RepairView.vue"; +import {createRouter, createWebHashHistory} from "vue-router"; +import en from "./i18n/lang/en.json"; +import fr from "./i18n/lang/fr.json"; +import da from "./i18n/lang/da.json"; +import de from "./i18n/lang/de.json"; +import es from "./i18n/lang/es.json"; +import pl from "./i18n/lang/pl.json"; +import ru from "./i18n/lang/ru.json"; +import it from "./i18n/lang/it.json"; +import zh_Hans from "./i18n/lang/zh_Hans.json"; -createApp(App).mount("#app"); + +const app = createApp(App); + +// internationalization +export const i18n = createI18n({ + locale: 'en', + fallbackLocale: 'en', + messages: { + en, fr, da, de, es, pl, ru, it, zh_Hans + } +}); +app.use(i18n); + +// styles +import 'element-plus/theme-chalk/index.css'; +import './style.css' + +app.use(ElementPlus); + +// icons +for (const [key, component] of Object.entries(ElementPlusIconsVue)) { + app.component(key, component); +} + +// style + + +// routes +const routes = [ + { path: '/', name: 'Main', component: async () => PlayView}, + { path: '/changelog', name: 'Changelog', component: async () => ChangelogView}, + { path: '/mods', name: 'Mods', component: async () => ModsView}, + { path: '/settings', name: 'Settings', component: async () => SettingsView}, + { path: '/dev', name: 'Dev', component: async () => DeveloperView}, + { path: '/repair', name: 'Repair', component: async () => RepairView}, +]; +export const router = createRouter({ + history: createWebHashHistory(), + routes, // short for `routes: routes` +}); +app.use(router); + + +app.mount('#app') diff --git a/src-vue/src/plugins/modules/notifications.ts b/src-vue/src/plugins/modules/notifications.ts new file mode 100644 index 00000000..ed57f8af --- /dev/null +++ b/src-vue/src/plugins/modules/notifications.ts @@ -0,0 +1,31 @@ +type NotificationType = 'success' | 'warning' | 'info' | 'error'; + +export interface Notification { + title: string; + text: string; + type: NotificationType; +} + +interface NotificationsStoreState { + notifications: Notification[]; +} + + +/** + * This notification module is meant to host the list of notifications that have been fired while the application was + * not focused. + * This list is then used by the [NotificationButton] component to display notifications to user. + **/ +export const notificationsModule = { + state: () => ({ + notifications: [] + }) as NotificationsStoreState, + mutations: { + addNotification(state: NotificationsStoreState, payload: Notification) { + state.notifications.push(payload); + }, + removeNotification(state: NotificationsStoreState, index: number): void { + state.notifications.splice(index, 1); + } + } + } diff --git a/src-vue/src/plugins/store.ts b/src-vue/src/plugins/store.ts new file mode 100644 index 00000000..d77fbc42 --- /dev/null +++ b/src-vue/src/plugins/store.ts @@ -0,0 +1,9 @@ +import { createStore } from 'vuex'; + + +/** + * This is called when application root component has been mounted. + * It invokes all Rust methods that are needed to initialize UI. + */ +async function _initializeApp(state: any) { +} diff --git a/src-vue/src/style.css b/src-vue/src/style.css new file mode 100644 index 00000000..d322a0dd --- /dev/null +++ b/src-vue/src/style.css @@ -0,0 +1,56 @@ +* { + box-sizing: border-box; +} + +html, body { + height: 100%; + width: 100%; +} + +body { + margin: 0; + font-family: 'Helvetica Neue', Helvetica, 'PingFang SC', 'Hiragino Sans GB', 'Microsoft YaHei', '微软雅黑', Arial, sans-serif; + --fc-menu_height: 50px; + user-select: none; +} + +#app { + position: relative; + height: 100%; + width: 100%; +} + +#fc_bg__container { + background: url(/src/assets/mp_colony020033.jpg) center no-repeat; + background-size: cover; + height: 100%; + width: 100%; + position: fixed; + filter: brightness(0.8); + scale: 1.03; +} + +.el-scrollbar { + --el-scrollbar-opacity: 0.5; + --el-scrollbar-hover-opacity: 0.7; +} + +.fc-container { + position: relative; + padding-top: var(--fc-menu_height); + height: 100%; + color: white; +} + +.noModMessage { + color: white; + margin: 30px 15px; +} + +.fc_popper { + width: auto !important; +} + +.el-popconfirm { + word-break: break-word; +} diff --git a/src-vue/src/utils/GameInstall.ts b/src-vue/src/utils/GameInstall.ts new file mode 100644 index 00000000..162d2860 --- /dev/null +++ b/src-vue/src/utils/GameInstall.ts @@ -0,0 +1,5 @@ +export interface GameInstall { + game_path: string; + profile: string, + install_type: string; +} diff --git a/src-vue/src/utils/NorthstarState.ts b/src-vue/src/utils/NorthstarState.ts new file mode 100644 index 00000000..2c8756b1 --- /dev/null +++ b/src-vue/src/utils/NorthstarState.ts @@ -0,0 +1,8 @@ +export enum NorthstarState { + GAME_NOT_FOUND = "GAME_NOT_FOUND", + INSTALL = "INSTALL", + INSTALLING = "INSTALLING", + MUST_UPDATE = "MUST_UPDATE", + UPDATING = "UPDATING", + READY_TO_PLAY = "READY_TO_PLAY" +}
\ No newline at end of file diff --git a/src-vue/src/utils/ReleaseCanal.ts b/src-vue/src/utils/ReleaseCanal.ts new file mode 100644 index 00000000..9363aa25 --- /dev/null +++ b/src-vue/src/utils/ReleaseCanal.ts @@ -0,0 +1,4 @@ +export enum ReleaseCanal { + RELEASE = <any>'Northstar', + RELEASE_CANDIDATE = <any>'NorthstarReleaseCandidate' +} diff --git a/src-vue/src/utils/SortOptions.d.ts b/src-vue/src/utils/SortOptions.d.ts new file mode 100644 index 00000000..b6f180d2 --- /dev/null +++ b/src-vue/src/utils/SortOptions.d.ts @@ -0,0 +1,8 @@ +export enum SortOptions { + NAME_ASC = 'name_asc', + NAME_DESC = 'name_desc', + DATE_ASC = 'date_asc', + DATE_DESC = 'date_desc', + MOST_DOWNLOADED = 'most_downloaded', + TOP_RATED = 'top_rated' +} diff --git a/src-vue/src/utils/Tabs.ts b/src-vue/src/utils/Tabs.ts new file mode 100644 index 00000000..5d31379c --- /dev/null +++ b/src-vue/src/utils/Tabs.ts @@ -0,0 +1,8 @@ +export enum Tabs { + PLAY = '/', + CHANGELOG = '/changelog', + SETTINGS = '/settings', + DEV = '/dev', + MODS = '/mods', + REPAIR = '/repair', +} diff --git a/src-vue/src/utils/filter.ts b/src-vue/src/utils/filter.ts new file mode 100644 index 00000000..b85b9623 --- /dev/null +++ b/src-vue/src/utils/filter.ts @@ -0,0 +1,26 @@ +/** + * Implements a fuzzy filter + * Iterates through chars of `search_term` and checks if each char exists in consecutive order in `text`. + * For example, this means that `text="Gecko"` and `search_term="geo"` will return `true` + * but using `text="Gecko"` and `search_term="goe"` will return `false` + * + * Implements a subset of "fuzzy string searching" + * https://en.wikipedia.org/wiki/Approximate_string_matching + */ +function fuzzy_filter(text: string, search_term: string): boolean { + const lowercase_text = text.toLowerCase(); + const lowercase_search_term = search_term.toLowerCase(); + + let previousIndex = -1; + for (let i = 0; i < lowercase_search_term.length; i++) { + const char = lowercase_search_term[i]; + const currentIndex = lowercase_text.indexOf(char, previousIndex + 1); + if (currentIndex === -1) { + return false; + } + previousIndex = currentIndex; + } + + return true; +} +export { fuzzy_filter }; diff --git a/src-vue/src/utils/thunderstore/ThunderstoreModStatus.ts b/src-vue/src/utils/thunderstore/ThunderstoreModStatus.ts new file mode 100644 index 00000000..f2351226 --- /dev/null +++ b/src-vue/src/utils/thunderstore/ThunderstoreModStatus.ts @@ -0,0 +1,7 @@ +export enum ThunderstoreModStatus { + INSTALLED, + BEING_INSTALLED, + BEING_UPDATED, + NOT_INSTALLED, + OUTDATED +} diff --git a/src-vue/src/utils/thunderstore/version.ts b/src-vue/src/utils/thunderstore/version.ts new file mode 100644 index 00000000..a111e08c --- /dev/null +++ b/src-vue/src/utils/thunderstore/version.ts @@ -0,0 +1,33 @@ +import {ThunderstoreMod} from "../../../../src-tauri/bindings/ThunderstoreMod"; +import {NorthstarMod} from "../../../../src-tauri/bindings/NorthstarMod"; +import {store} from "../../plugins/store"; + +/** + * Strips off a Thunderstore dependency string from its version + * (e.g. "taskinoz-WallrunningTitans-1.0.0" to + * "taskinoz-WallrunningTitans"). + **/ +function getThunderstoreDependencyStringPrefix(dependency: string): string { + const dependencyStringMembers = dependency.split('-'); + return `${dependencyStringMembers[0]}-${dependencyStringMembers[1]}`; +} + +function isThunderstoreModOutdated(mod: ThunderstoreMod): boolean { + // Ensure mod is up-to-date. + const tsModPrefix = getThunderstoreDependencyStringPrefix(mod.versions[0].full_name); + const matchingMods: NorthstarMod[] = store.state.installed_mods.filter((mod: NorthstarMod) => { + if (!mod.thunderstore_mod_string) return false; + return getThunderstoreDependencyStringPrefix(mod.thunderstore_mod_string!) === tsModPrefix; + }); + if (matchingMods.length !== 0) { + // There shouldn't be several mods with same dependency string, but we never know... + const matchingMod = matchingMods[0]; + // A mod is outdated if its dependency strings differs from Thunderstore dependency string + // (no need for semver check here). + // This assumes mod versions list is sorted from newest to oldest version. + return matchingMod.thunderstore_mod_string !== mod.versions[0].full_name; + } + return false; +} + +export { isThunderstoreModOutdated }; diff --git a/src-vue/src/views/ChangelogView.vue b/src-vue/src/views/ChangelogView.vue new file mode 100644 index 00000000..1c525a32 --- /dev/null +++ b/src-vue/src/views/ChangelogView.vue @@ -0,0 +1,10 @@ +<template> + <div class="fc-container"> + </div> +</template> + +<script lang="ts"> +</script> + +<style> +</style> diff --git a/src-vue/src/views/DeveloperView.vue b/src-vue/src/views/DeveloperView.vue new file mode 100644 index 00000000..3a187b18 --- /dev/null +++ b/src-vue/src/views/DeveloperView.vue @@ -0,0 +1,10 @@ +<template> + <div class="fc-container"> + </div> +</template> + +<script lang="ts"> +</script> + +<style scoped> +</style> diff --git a/src-vue/src/views/ModsView.vue b/src-vue/src/views/ModsView.vue new file mode 100644 index 00000000..2c55e401 --- /dev/null +++ b/src-vue/src/views/ModsView.vue @@ -0,0 +1,13 @@ +<template> + <div class="fc-container" style="display: flex"> + </div> +</template> + +<script lang="ts"> +import LocalModsView from "./mods/LocalModsView.vue"; +import ModsMenu from "../components/ModsMenu.vue"; + +</script> + +<style scoped> +</style> diff --git a/src-vue/src/views/PlayView.vue b/src-vue/src/views/PlayView.vue new file mode 100644 index 00000000..1f58c803 --- /dev/null +++ b/src-vue/src/views/PlayView.vue @@ -0,0 +1,10 @@ +<script lang="ts"> +</script> + +<template> + <div class="fc_launch__container"> + </div> +</template> + +<style scoped> +</style> diff --git a/src-vue/src/views/RepairView.vue b/src-vue/src/views/RepairView.vue new file mode 100644 index 00000000..3a187b18 --- /dev/null +++ b/src-vue/src/views/RepairView.vue @@ -0,0 +1,10 @@ +<template> + <div class="fc-container"> + </div> +</template> + +<script lang="ts"> +</script> + +<style scoped> +</style> diff --git a/src-vue/src/views/SettingsView.vue b/src-vue/src/views/SettingsView.vue new file mode 100644 index 00000000..3b0879d3 --- /dev/null +++ b/src-vue/src/views/SettingsView.vue @@ -0,0 +1,8 @@ +<template> +</template> + +<script lang="ts"> +</script> + +<style scoped> +</style> diff --git a/src-vue/src/views/mods/LocalModsView.vue b/src-vue/src/views/mods/LocalModsView.vue new file mode 100644 index 00000000..3b0879d3 --- /dev/null +++ b/src-vue/src/views/mods/LocalModsView.vue @@ -0,0 +1,8 @@ +<template> +</template> + +<script lang="ts"> +</script> + +<style scoped> +</style> diff --git a/src-vue/src/views/mods/ThunderstoreModsView.vue b/src-vue/src/views/mods/ThunderstoreModsView.vue new file mode 100644 index 00000000..b100b118 --- /dev/null +++ b/src-vue/src/views/mods/ThunderstoreModsView.vue @@ -0,0 +1,10 @@ +<template> + <div class="fc-container" style="padding: 0"> + </div> +</template> + +<script lang="ts"> +</script> + +<style scoped> +</style> diff --git a/src-vue/tsconfig.json b/src-vue/tsconfig.json index f82888f3..e149a27f 100644 --- a/src-vue/tsconfig.json +++ b/src-vue/tsconfig.json @@ -3,22 +3,18 @@ "target": "ES2020", "useDefineForClassFields": true, "module": "ESNext", - "lib": ["ES2020", "DOM", "DOM.Iterable"], - "skipLibCheck": true, - - /* Bundler mode */ "moduleResolution": "bundler", + "strict": true, "allowImportingTsExtensions": true, "resolveJsonModule": true, "isolatedModules": true, "noEmit": true, "jsx": "preserve", - - /* Linting */ - "strict": true, "noUnusedLocals": true, "noUnusedParameters": true, - "noFallthroughCasesInSwitch": true + "noFallthroughCasesInSwitch": true, + "lib": ["ES2020", "DOM", "DOM.Iterable"], + "skipLibCheck": true }, "include": ["src/**/*.ts", "src/**/*.d.ts", "src/**/*.tsx", "src/**/*.vue"], "references": [{ "path": "./tsconfig.node.json" }] |