diff --git a/gui/.env.development b/gui/.env.development new file mode 100644 index 0000000..8edc2f8 --- /dev/null +++ b/gui/.env.development @@ -0,0 +1,3 @@ +NODE_ENV=development +VITE_API_URL=http://localhost:3000 +VITE_API_URL=https://exz-nebulous-backend-staging-2003f98f736b.herokuapp.com diff --git a/gui/.env.production b/gui/.env.production new file mode 100644 index 0000000..6911199 --- /dev/null +++ b/gui/.env.production @@ -0,0 +1,3 @@ +NODE_ENV=production +VITE_API_URL=https://exz-nebulous-backend-staging-2003f98f736b.herokuapp.com + diff --git a/gui/.eslintignore b/gui/.eslintignore new file mode 100644 index 0000000..76add87 --- /dev/null +++ b/gui/.eslintignore @@ -0,0 +1,2 @@ +node_modules +dist \ No newline at end of file diff --git a/gui/.eslintrc.js b/gui/.eslintrc.js new file mode 100644 index 0000000..33223a7 --- /dev/null +++ b/gui/.eslintrc.js @@ -0,0 +1,34 @@ +module.exports = { + root: true, + env: { + node: true + }, + plugins: ["@typescript-eslint", "prettier"], + extends: ["plugin:vue/vue3-strongly-recommended", "@vue/typescript/recommended", "eslint:recommended", "prettier"], + parser: "vue-eslint-parser", + parserOptions: { + parser: "@typescript-eslint/parser", + sourceType: "module" + }, + rules: { + "prettier/prettier": ["error", { endOfLine: "auto" }], + "comma-dangle": ["error", "never"], + "no-console": process.env.NODE_ENV === "production" ? "warn" : "off", + "no-debugger": process.env.NODE_ENV === "production" ? "warn" : "off", + "no-unused-vars": "off", + "no-undef": "off", + "@typescript-eslint/no-unused-vars": "off", + "vue/multi-word-component-names": "off", + "space-before-function-paren": "off", + "vue/attribute-hyphenation": "off", + quotes: [2, "double", "avoid-escape"], + camelcase: "off", + "import/first": "off", + "vue/require-default-prop": "off", + "@typescript-eslint/ban-ts-comment": "off", + "vue/v-on-event-hyphenation": "off" + }, + globals: { + _: true + } +} diff --git a/gui/.gitignore b/gui/.gitignore new file mode 100644 index 0000000..e0c3de1 --- /dev/null +++ b/gui/.gitignore @@ -0,0 +1,27 @@ +# Logs +logs +*.log +npm-debug.log* +yarn-debug.log* +yarn-error.log* +pnpm-debug.log* +lerna-debug.log* + +node_modules +dist +dist-ssr +*.local + +# Editor directories and files +.idea +.vscode +.DS_Store +*.suo +*.ntvs* +*.njsproj +*.sln +*.sw? + +# we are using pnpm-lock.yaml +package-lock.json +yarn.lock \ No newline at end of file diff --git a/gui/.prettierignore b/gui/.prettierignore new file mode 100644 index 0000000..f06235c --- /dev/null +++ b/gui/.prettierignore @@ -0,0 +1,2 @@ +node_modules +dist diff --git a/gui/.prettierrc.js b/gui/.prettierrc.js new file mode 100644 index 0000000..3f68ad6 --- /dev/null +++ b/gui/.prettierrc.js @@ -0,0 +1,7 @@ +module.exports = { + trailingComma: "none", + semi: false, + singleQuote: false, + tabWidth: 2, + printWidth: 120 +} diff --git a/gui/README.md b/gui/README.md new file mode 100644 index 0000000..30b15e2 --- /dev/null +++ b/gui/README.md @@ -0,0 +1,16 @@ +# Vue 3 + TypeScript + Vite + +This template should help get you started developing with Vue 3 and TypeScript in Vite. The template uses Vue 3 ` + + diff --git a/gui/licenses/licenses.dev.csv b/gui/licenses/licenses.dev.csv new file mode 100644 index 0000000..39d7aa8 --- /dev/null +++ b/gui/licenses/licenses.dev.csv @@ -0,0 +1,55 @@ +"module name","license","repository" +"@babel/eslint-parser@7.23.3","MIT","https://github.com/babel/babel" +"@eslint-community/eslint-utils@4.4.0","MIT","https://github.com/eslint-community/eslint-utils" +"@eslint-community/regexpp@4.10.0","MIT","https://github.com/eslint-community/regexpp" +"@eslint/eslintrc@2.1.3","MIT","https://github.com/eslint/eslintrc" +"@eslint/js@8.53.0","MIT","https://github.com/eslint/eslint" +"@nicolo-ribaudo/eslint-scope-5-internals@5.1.1-v1","MIT","" +"@tailwindcss/forms@0.5.6","MIT","https://github.com/tailwindlabs/tailwindcss-forms" +"@types/dropzone@5.7.7","MIT","https://github.com/DefinitelyTyped/DefinitelyTyped" +"@types/flat@5.0.5","MIT","https://github.com/DefinitelyTyped/DefinitelyTyped" +"@types/js-beautify@1.14.3","MIT","https://github.com/DefinitelyTyped/DefinitelyTyped" +"@types/leaflet.markercluster@1.5.4","MIT","https://github.com/DefinitelyTyped/DefinitelyTyped" +"@types/leaflet@1.9.8","MIT","https://github.com/DefinitelyTyped/DefinitelyTyped" +"@types/lodash@4.14.201","MIT","https://github.com/DefinitelyTyped/DefinitelyTyped" +"@types/node@20.9.0","MIT","https://github.com/DefinitelyTyped/DefinitelyTyped" +"@types/tabulator-tables@5.5.4","MIT","https://github.com/DefinitelyTyped/DefinitelyTyped" +"@types/toastify-js@1.12.3","MIT","https://github.com/DefinitelyTyped/DefinitelyTyped" +"@typescript-eslint/parser@6.10.0","BSD-2-Clause","https://github.com/typescript-eslint/typescript-eslint" +"@typescript-eslint/scope-manager@6.10.0","MIT","https://github.com/typescript-eslint/typescript-eslint" +"@typescript-eslint/types@6.10.0","MIT","https://github.com/typescript-eslint/typescript-eslint" +"@typescript-eslint/typescript-estree@6.10.0","BSD-2-Clause","https://github.com/typescript-eslint/typescript-eslint" +"@typescript-eslint/visitor-keys@6.10.0","MIT","https://github.com/typescript-eslint/typescript-eslint" +"@vitejs/plugin-vue@4.4.1","MIT","https://github.com/vitejs/vite-plugin-vue" +"@vue/eslint-config-standard@8.0.1","MIT","https://github.com/vuejs/eslint-config-standard" +"autoprefixer@10.4.16","MIT","https://github.com/postcss/autoprefixer" +"enigma-nebulous@0.0.0","UNLICENSED","" +"eslint-config-prettier@9.0.0","MIT","https://github.com/prettier/eslint-config-prettier" +"eslint-config-standard@17.1.0","MIT","https://github.com/standard/eslint-config-standard" +"eslint-import-resolver-custom-alias@1.3.2","MIT","https://github.com/laysent/eslint-import-resolver-custom-alias" +"eslint-import-resolver-node@0.3.9","MIT","https://github.com/import-js/eslint-plugin-import" +"eslint-module-utils@2.8.0","MIT","https://github.com/import-js/eslint-plugin-import" +"eslint-plugin-es@4.1.0","MIT","https://github.com/mysticatea/eslint-plugin-es" +"eslint-plugin-import@2.29.0","MIT","https://github.com/import-js/eslint-plugin-import" +"eslint-plugin-n@15.7.0","MIT","https://github.com/eslint-community/eslint-plugin-n" +"eslint-plugin-prettier@5.0.1","MIT","https://github.com/prettier/eslint-plugin-prettier" +"eslint-plugin-promise@6.1.1","ISC","https://github.com/eslint-community/eslint-plugin-promise" +"eslint-plugin-vue@9.18.1","MIT","https://github.com/vuejs/eslint-plugin-vue" +"eslint-scope@7.2.2","BSD-2-Clause","https://github.com/eslint/eslint-scope" +"eslint-utils@3.0.0","MIT","https://github.com/mysticatea/eslint-utils" +"eslint-visitor-keys@2.1.0","Apache-2.0","https://github.com/eslint/eslint-visitor-keys" +"eslint@8.53.0","MIT","https://github.com/eslint/eslint" +"lodash@4.17.21","MIT","https://github.com/lodash/lodash" +"path@0.12.7","MIT","https://github.com/jinder/path" +"postcss-advanced-variables@3.0.1","CC0-1.0","https://github.com/jonathantneal/postcss-advanced-variables" +"postcss-import@15.1.0","MIT","https://github.com/postcss/postcss-import" +"postcss-nesting@12.0.1","MIT-0","https://github.com/csstools/postcss-plugins" +"postcss@8.4.31","MIT","https://github.com/postcss/postcss" +"prettier-linter-helpers@1.0.0","MIT","https://github.com/prettier/prettier-linter-helpers" +"prettier@3.0.3","MIT","https://github.com/prettier/prettier" +"tailwind-merge@1.14.0","MIT","https://github.com/dcastil/tailwind-merge" +"tailwindcss@3.3.5","MIT","https://github.com/tailwindlabs/tailwindcss" +"typescript@5.2.2","Apache-2.0","https://github.com/Microsoft/TypeScript" +"vite@4.5.0","MIT","https://github.com/vitejs/vite" +"vue-eslint-parser@9.3.2","MIT","https://github.com/vuejs/vue-eslint-parser" +"vue-tsc@1.8.22","MIT","https://github.com/vuejs/language-tools" \ No newline at end of file diff --git a/gui/package.json b/gui/package.json new file mode 100644 index 0000000..5f851f4 --- /dev/null +++ b/gui/package.json @@ -0,0 +1,95 @@ +{ + "name": "enigma-nebulous", + "private": true, + "version": "0.0.0", + "scripts": { + "serve": "vite", + "build": "vue-tsc && vite build", + "preview": "vite preview", + "lint": "eslint src --ext .js,.ts,.vue", + "format": "prettier . --write", + "license-checker:dev": "license-checker --development --csv --out ./licenses/licenses.dev.csv", + "license-validation": "license-checker --production --direct --excludePrivatePackages --onlyAllow 'MIT; ISC; 0BSD; BSD-3-Clause; BSD-2-Clause; Apache-2.0'" + }, + "dependencies": { + "@ckeditor/ckeditor5-build-balloon": "^38.1.0", + "@ckeditor/ckeditor5-build-balloon-block": "^38.1.0", + "@ckeditor/ckeditor5-build-classic": "^38.1.0", + "@ckeditor/ckeditor5-build-decoupled-document": "^38.1.0", + "@ckeditor/ckeditor5-build-inline": "^38.1.0", + "@fullcalendar/daygrid": "^5.11.3", + "@fullcalendar/interaction": "^5.11.3", + "@fullcalendar/list": "^5.11.3", + "@fullcalendar/timegrid": "^5.11.3", + "@fullcalendar/vue3": "^5.11.2", + "@headlessui/vue": "^1.7.13", + "@typescript-eslint/eslint-plugin": "^6.10.0", + "@vue/eslint-config-typescript": "^12.0.0", + "@vuelidate/components": "^1.2.6", + "@vuelidate/core": "^2.0.3", + "@vuelidate/validators": "^2.0.4", + "axios": "^1.6.2", + "chart.js": "^4.4.0", + "dayjs": "^1.11.5", + "dropzone": "^6.0.0-beta.2", + "flat": "^5.0.2", + "highlight.js": "^11.6.0", + "js-beautify": "^1.14.6", + "leaflet": "^1.9.3", + "leaflet.markercluster": "^1.5.3", + "license-checker": "^25.0.1", + "litepicker": "^2.0.12", + "lucide": "^0.90.0", + "lucide-vue-next": "^0.95.0", + "monaco-editor": "0.44.0", + "monaco-yaml": "^5.1.0", + "pinia": "^2.0.23", + "simplebar": "^5.3.9", + "tabulator-tables": "^5.3.4", + "tiny-slider": "^2.9.4", + "tippy.js": "^6.3.7", + "toastify-js": "^1.12.0", + "tom-select": "^2.3.1", + "uuid": "^9.0.1", + "vite-svg-loader": "^5.1.0", + "vue": "^3.3.9", + "vue-draggable-next": "^2.2.1", + "vue-router": "^4.1.6", + "xlsx": "^0.18.5", + "zoom-vanilla.js": "^2.0.6" + }, + "devDependencies": { + "@tailwindcss/forms": "^0.5.3", + "@types/dropzone": "^5.7.4", + "@types/flat": "^5.0.2", + "@types/js-beautify": "^1.13.3", + "@types/leaflet": "^1.9.3", + "@types/leaflet.markercluster": "^1.5.1", + "@types/lodash": "^4.14.195", + "@types/node": "^20.9.0", + "@types/tabulator-tables": "^5.4.8", + "@types/toastify-js": "^1.11.1", + "@types/uuid": "^9.0.7", + "@typescript-eslint/parser": "^6.10.0", + "@vitejs/plugin-vue": "^4.2.3", + "@vue/eslint-config-standard": "^8.0.1", + "autoprefixer": "^10.4.14", + "eslint": "^8.53.0", + "eslint-config-prettier": "^9.0.0", + "eslint-plugin-prettier": "^5.0.1", + "eslint-plugin-vue": "^9.18.1", + "lodash": "^4.17.21", + "path": "^0.12.7", + "postcss": "^8.4.25", + "postcss-advanced-variables": "^3.0.1", + "postcss-import": "^15.1.0", + "postcss-nesting": "^12.0.0", + "prettier": "^3.0.3", + "tailwind-merge": "^1.13.2", + "tailwindcss": "^3.3.2", + "typescript": "^5.2.2", + "vite": "^4.4.2", + "vue-eslint-parser": "^9.3.2", + "vue-tsc": "^1.8.22" + } +} diff --git a/gui/pnpm-lock.yaml b/gui/pnpm-lock.yaml new file mode 100644 index 0000000..f471ca5 --- /dev/null +++ b/gui/pnpm-lock.yaml @@ -0,0 +1,4826 @@ +lockfileVersion: '6.0' + +settings: + autoInstallPeers: true + excludeLinksFromLockfile: false + +dependencies: + '@ckeditor/ckeditor5-build-balloon': + specifier: ^38.1.0 + version: 38.1.1 + '@ckeditor/ckeditor5-build-balloon-block': + specifier: ^38.1.0 + version: 38.1.1 + '@ckeditor/ckeditor5-build-classic': + specifier: ^38.1.0 + version: 38.1.1 + '@ckeditor/ckeditor5-build-decoupled-document': + specifier: ^38.1.0 + version: 38.1.1 + '@ckeditor/ckeditor5-build-inline': + specifier: ^38.1.0 + version: 38.1.1 + '@fullcalendar/daygrid': + specifier: ^5.11.3 + version: 5.11.5 + '@fullcalendar/interaction': + specifier: ^5.11.3 + version: 5.11.5 + '@fullcalendar/list': + specifier: ^5.11.3 + version: 5.11.5 + '@fullcalendar/timegrid': + specifier: ^5.11.3 + version: 5.11.5 + '@fullcalendar/vue3': + specifier: ^5.11.2 + version: 5.11.5(vue@3.3.9) + '@headlessui/vue': + specifier: ^1.7.13 + version: 1.7.16(vue@3.3.9) + '@typescript-eslint/eslint-plugin': + specifier: ^6.10.0 + version: 6.10.0(@typescript-eslint/parser@6.10.0)(eslint@8.53.0)(typescript@5.2.2) + '@vue/eslint-config-typescript': + specifier: ^12.0.0 + version: 12.0.0(eslint-plugin-vue@9.18.1)(eslint@8.53.0)(typescript@5.2.2) + '@vuelidate/components': + specifier: ^1.2.6 + version: 1.2.6(vue@3.3.9) + '@vuelidate/core': + specifier: ^2.0.3 + version: 2.0.3(vue@3.3.9) + '@vuelidate/validators': + specifier: ^2.0.4 + version: 2.0.4(vue@3.3.9) + axios: + specifier: ^1.6.2 + version: 1.6.2 + chart.js: + specifier: ^4.4.0 + version: 4.4.0 + dayjs: + specifier: ^1.11.5 + version: 1.11.10 + dropzone: + specifier: ^6.0.0-beta.2 + version: 6.0.0-beta.2 + flat: + specifier: ^5.0.2 + version: 5.0.2 + highlight.js: + specifier: ^11.6.0 + version: 11.9.0 + js-beautify: + specifier: ^1.14.6 + version: 1.14.11 + leaflet: + specifier: ^1.9.3 + version: 1.9.4 + leaflet.markercluster: + specifier: ^1.5.3 + version: 1.5.3(leaflet@1.9.4) + license-checker: + specifier: ^25.0.1 + version: 25.0.1 + litepicker: + specifier: ^2.0.12 + version: 2.0.12 + lucide: + specifier: ^0.90.0 + version: 0.90.0 + lucide-vue-next: + specifier: ^0.95.0 + version: 0.95.0(vue@3.3.9) + monaco-editor: + specifier: 0.44.0 + version: 0.44.0 + monaco-yaml: + specifier: ^5.1.0 + version: 5.1.0(monaco-editor@0.44.0) + pinia: + specifier: ^2.0.23 + version: 2.1.7(typescript@5.2.2)(vue@3.3.9) + simplebar: + specifier: ^5.3.9 + version: 5.3.9 + tabulator-tables: + specifier: ^5.3.4 + version: 5.5.2 + tiny-slider: + specifier: ^2.9.4 + version: 2.9.4 + tippy.js: + specifier: ^6.3.7 + version: 6.3.7 + toastify-js: + specifier: ^1.12.0 + version: 1.12.0 + tom-select: + specifier: ^2.3.1 + version: 2.3.1 + uuid: + specifier: ^9.0.1 + version: 9.0.1 + vite-svg-loader: + specifier: ^5.1.0 + version: 5.1.0(vue@3.3.9) + vue: + specifier: ^3.3.9 + version: 3.3.9(typescript@5.2.2) + vue-draggable-next: + specifier: ^2.2.1 + version: 2.2.1(sortablejs@1.15.2)(vue@3.3.9) + vue-router: + specifier: ^4.1.6 + version: 4.2.5(vue@3.3.9) + xlsx: + specifier: ^0.18.5 + version: 0.18.5 + zoom-vanilla.js: + specifier: ^2.0.6 + version: 2.0.6 + +devDependencies: + '@tailwindcss/forms': + specifier: ^0.5.3 + version: 0.5.7(tailwindcss@3.3.5) + '@types/dropzone': + specifier: ^5.7.4 + version: 5.7.7 + '@types/flat': + specifier: ^5.0.2 + version: 5.0.5 + '@types/js-beautify': + specifier: ^1.13.3 + version: 1.14.3 + '@types/leaflet': + specifier: ^1.9.3 + version: 1.9.8 + '@types/leaflet.markercluster': + specifier: ^1.5.1 + version: 1.5.4 + '@types/lodash': + specifier: ^4.14.195 + version: 4.14.201 + '@types/node': + specifier: ^20.9.0 + version: 20.9.0 + '@types/tabulator-tables': + specifier: ^5.4.8 + version: 5.5.4 + '@types/toastify-js': + specifier: ^1.11.1 + version: 1.12.3 + '@types/uuid': + specifier: ^9.0.7 + version: 9.0.7 + '@typescript-eslint/parser': + specifier: ^6.10.0 + version: 6.10.0(eslint@8.53.0)(typescript@5.2.2) + '@vitejs/plugin-vue': + specifier: ^4.2.3 + version: 4.4.1(vite@4.5.0)(vue@3.3.9) + '@vue/eslint-config-standard': + specifier: ^8.0.1 + version: 8.0.1(@typescript-eslint/parser@6.10.0)(eslint-plugin-vue@9.18.1)(eslint@8.53.0) + autoprefixer: + specifier: ^10.4.14 + version: 10.4.16(postcss@8.4.31) + eslint: + specifier: ^8.53.0 + version: 8.53.0 + eslint-config-prettier: + specifier: ^9.0.0 + version: 9.0.0(eslint@8.53.0) + eslint-plugin-prettier: + specifier: ^5.0.1 + version: 5.0.1(eslint-config-prettier@9.0.0)(eslint@8.53.0)(prettier@3.1.0) + eslint-plugin-vue: + specifier: ^9.18.1 + version: 9.18.1(eslint@8.53.0) + lodash: + specifier: ^4.17.21 + version: 4.17.21 + path: + specifier: ^0.12.7 + version: 0.12.7 + postcss: + specifier: ^8.4.25 + version: 8.4.31 + postcss-advanced-variables: + specifier: ^3.0.1 + version: 3.0.1 + postcss-import: + specifier: ^15.1.0 + version: 15.1.0(postcss@8.4.31) + postcss-nesting: + specifier: ^12.0.0 + version: 12.0.1(postcss@8.4.31) + prettier: + specifier: ^3.0.3 + version: 3.1.0 + tailwind-merge: + specifier: ^1.13.2 + version: 1.14.0 + tailwindcss: + specifier: ^3.3.2 + version: 3.3.5 + typescript: + specifier: ^5.2.2 + version: 5.2.2 + vite: + specifier: ^4.4.2 + version: 4.5.0(@types/node@20.9.0) + vue-eslint-parser: + specifier: ^9.3.2 + version: 9.3.2(eslint@8.53.0) + vue-tsc: + specifier: ^1.8.22 + version: 1.8.22(typescript@5.2.2) + +packages: + + /@aashutoshrathi/word-wrap@1.2.6: + resolution: {integrity: sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==} + engines: {node: '>=0.10.0'} + + /@alloc/quick-lru@5.2.0: + resolution: {integrity: sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==} + engines: {node: '>=10'} + dev: true + + /@babel/helper-string-parser@7.22.5: + resolution: {integrity: sha512-mM4COjgZox8U+JcXQwPijIZLElkgEpO5rsERVDJTc2qfCDfERyob6k5WegS14SX18IIjv+XD+GrqNumY5JRCDw==} + engines: {node: '>=6.9.0'} + + /@babel/helper-validator-identifier@7.22.20: + resolution: {integrity: sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==} + engines: {node: '>=6.9.0'} + + /@babel/parser@7.23.3: + resolution: {integrity: sha512-uVsWNvlVsIninV2prNz/3lHCb+5CJ+e+IUBfbjToAHODtfGYLfCFuY4AU7TskI+dAKk+njsPiBjq1gKTvZOBaw==} + engines: {node: '>=6.0.0'} + hasBin: true + dependencies: + '@babel/types': 7.23.3 + + /@babel/types@7.23.3: + resolution: {integrity: sha512-OZnvoH2l8PK5eUvEcUyCt/sXgr/h+UWpVuBbOljwcrAgUl6lpchoQ++PHGyQy1AtYnVA6CEq3y5xeEI10brpXw==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/helper-string-parser': 7.22.5 + '@babel/helper-validator-identifier': 7.22.20 + to-fast-properties: 2.0.0 + + /@ckeditor/ckeditor5-adapter-ckfinder@38.1.1: + resolution: {integrity: sha512-TDv6xOkcXws0RmfkBJ6vfuH4vwj3mbI8S++9czLKrHmwp24jSrxiRwP1ZUlJSImy+/3sTjec4u8I5fq0HA2UOA==} + engines: {node: '>=16.0.0', npm: '>=5.7.1'} + dependencies: + ckeditor5: 38.1.1 + dev: false + + /@ckeditor/ckeditor5-alignment@38.1.1: + resolution: {integrity: sha512-eq8T9/YLjwFsspxDfEtvZqKuh/D0ckGHN42tzfM+TCcvpYgFDzxJd/GbenewVdQW4iU87JvKpS7aOaKCeJ5ckw==} + engines: {node: '>=16.0.0', npm: '>=5.7.1'} + dependencies: + ckeditor5: 38.1.1 + dev: false + + /@ckeditor/ckeditor5-autoformat@38.1.1: + resolution: {integrity: sha512-Ppxxp0qprhENktpKv3lkVFchS9iZt0GbCVLPg8ffTb5dCAQgeXyC/TdR1b3zpbdjgSyai07OYgU59oTNUOwtog==} + engines: {node: '>=16.0.0', npm: '>=5.7.1'} + dependencies: + ckeditor5: 38.1.1 + dev: false + + /@ckeditor/ckeditor5-basic-styles@38.1.1: + resolution: {integrity: sha512-+mky2W983jaSlYpvQ31af0ethMQxXUxuBkd2IzRi2cchvSK9YbQtBSkV0EM595uoJa1S3doyCJn7Y8bOdE+v3A==} + engines: {node: '>=16.0.0', npm: '>=5.7.1'} + dependencies: + ckeditor5: 38.1.1 + dev: false + + /@ckeditor/ckeditor5-block-quote@38.1.1: + resolution: {integrity: sha512-YPSw+qTE71mvQTo5OA2M9oQp1jpUJrj1d15mbVE5DIyvc2CMWRltqV49GoM15ZpzgQWbaF3VZ8ZT0+vZlfS0lw==} + engines: {node: '>=16.0.0', npm: '>=5.7.1'} + dependencies: + ckeditor5: 38.1.1 + dev: false + + /@ckeditor/ckeditor5-build-balloon-block@38.1.1: + resolution: {integrity: sha512-3ZLrEKB/nQ9b6TamfXFafipzxDFr3CJe+nfoiP3YJgzwfqOmRSvf2jSzgGGNSin2Zvw/5BwnM08GEts0L8o+2g==} + engines: {node: '>=16.0.0', npm: '>=5.7.1'} + dependencies: + '@ckeditor/ckeditor5-adapter-ckfinder': 38.1.1 + '@ckeditor/ckeditor5-autoformat': 38.1.1 + '@ckeditor/ckeditor5-basic-styles': 38.1.1 + '@ckeditor/ckeditor5-block-quote': 38.1.1 + '@ckeditor/ckeditor5-ckbox': 38.1.1 + '@ckeditor/ckeditor5-ckfinder': 38.1.1 + '@ckeditor/ckeditor5-cloud-services': 38.1.1 + '@ckeditor/ckeditor5-easy-image': 38.1.1 + '@ckeditor/ckeditor5-editor-balloon': 38.1.1 + '@ckeditor/ckeditor5-essentials': 38.1.1 + '@ckeditor/ckeditor5-heading': 38.1.1 + '@ckeditor/ckeditor5-image': 38.1.1 + '@ckeditor/ckeditor5-indent': 38.1.1 + '@ckeditor/ckeditor5-link': 38.1.1 + '@ckeditor/ckeditor5-list': 38.1.1 + '@ckeditor/ckeditor5-media-embed': 38.1.1 + '@ckeditor/ckeditor5-paragraph': 38.1.1 + '@ckeditor/ckeditor5-paste-from-office': 38.1.1 + '@ckeditor/ckeditor5-table': 38.1.1 + '@ckeditor/ckeditor5-typing': 38.1.1 + '@ckeditor/ckeditor5-ui': 38.1.1 + dev: false + + /@ckeditor/ckeditor5-build-balloon@38.1.1: + resolution: {integrity: sha512-yVywEYBpI+caSx3CogqFdEgn55Sl42q4InUqZJJqgB3wLjtLhm43+dQa2d2gf1DyDIFjMNl1q0O303bVx2ru9Q==} + engines: {node: '>=16.0.0', npm: '>=5.7.1'} + dependencies: + '@ckeditor/ckeditor5-adapter-ckfinder': 38.1.1 + '@ckeditor/ckeditor5-autoformat': 38.1.1 + '@ckeditor/ckeditor5-basic-styles': 38.1.1 + '@ckeditor/ckeditor5-block-quote': 38.1.1 + '@ckeditor/ckeditor5-ckbox': 38.1.1 + '@ckeditor/ckeditor5-ckfinder': 38.1.1 + '@ckeditor/ckeditor5-cloud-services': 38.1.1 + '@ckeditor/ckeditor5-easy-image': 38.1.1 + '@ckeditor/ckeditor5-editor-balloon': 38.1.1 + '@ckeditor/ckeditor5-essentials': 38.1.1 + '@ckeditor/ckeditor5-heading': 38.1.1 + '@ckeditor/ckeditor5-image': 38.1.1 + '@ckeditor/ckeditor5-indent': 38.1.1 + '@ckeditor/ckeditor5-link': 38.1.1 + '@ckeditor/ckeditor5-list': 38.1.1 + '@ckeditor/ckeditor5-media-embed': 38.1.1 + '@ckeditor/ckeditor5-paragraph': 38.1.1 + '@ckeditor/ckeditor5-paste-from-office': 38.1.1 + '@ckeditor/ckeditor5-table': 38.1.1 + '@ckeditor/ckeditor5-typing': 38.1.1 + dev: false + + /@ckeditor/ckeditor5-build-classic@38.1.1: + resolution: {integrity: sha512-TaVK+kVX2hMZD8imbfsQHKTiMo4seBkmZvu8KgNPn8tNarmJacO27EYmPmzL04KyctP2pv4rt2UTzPfuFZyqvg==} + engines: {node: '>=16.0.0', npm: '>=5.7.1'} + dependencies: + '@ckeditor/ckeditor5-adapter-ckfinder': 38.1.1 + '@ckeditor/ckeditor5-autoformat': 38.1.1 + '@ckeditor/ckeditor5-basic-styles': 38.1.1 + '@ckeditor/ckeditor5-block-quote': 38.1.1 + '@ckeditor/ckeditor5-ckbox': 38.1.1 + '@ckeditor/ckeditor5-ckfinder': 38.1.1 + '@ckeditor/ckeditor5-cloud-services': 38.1.1 + '@ckeditor/ckeditor5-easy-image': 38.1.1 + '@ckeditor/ckeditor5-editor-classic': 38.1.1 + '@ckeditor/ckeditor5-essentials': 38.1.1 + '@ckeditor/ckeditor5-heading': 38.1.1 + '@ckeditor/ckeditor5-image': 38.1.1 + '@ckeditor/ckeditor5-indent': 38.1.1 + '@ckeditor/ckeditor5-link': 38.1.1 + '@ckeditor/ckeditor5-list': 38.1.1 + '@ckeditor/ckeditor5-media-embed': 38.1.1 + '@ckeditor/ckeditor5-paragraph': 38.1.1 + '@ckeditor/ckeditor5-paste-from-office': 38.1.1 + '@ckeditor/ckeditor5-table': 38.1.1 + '@ckeditor/ckeditor5-typing': 38.1.1 + dev: false + + /@ckeditor/ckeditor5-build-decoupled-document@38.1.1: + resolution: {integrity: sha512-WI4zGIZxRhJ74hiXb6s0q1VJoaBSl6ZDC3bv56HMFBvLsDeeb1eE9SdgIs3u4x0RhyRPs3+R2vBhxFMkQdXRtg==} + engines: {node: '>=16.0.0', npm: '>=5.7.1'} + dependencies: + '@ckeditor/ckeditor5-adapter-ckfinder': 38.1.1 + '@ckeditor/ckeditor5-alignment': 38.1.1 + '@ckeditor/ckeditor5-autoformat': 38.1.1 + '@ckeditor/ckeditor5-basic-styles': 38.1.1 + '@ckeditor/ckeditor5-block-quote': 38.1.1 + '@ckeditor/ckeditor5-ckbox': 38.1.1 + '@ckeditor/ckeditor5-ckfinder': 38.1.1 + '@ckeditor/ckeditor5-cloud-services': 38.1.1 + '@ckeditor/ckeditor5-easy-image': 38.1.1 + '@ckeditor/ckeditor5-editor-decoupled': 38.1.1 + '@ckeditor/ckeditor5-essentials': 38.1.1 + '@ckeditor/ckeditor5-font': 38.1.1 + '@ckeditor/ckeditor5-heading': 38.1.1 + '@ckeditor/ckeditor5-image': 38.1.1 + '@ckeditor/ckeditor5-indent': 38.1.1 + '@ckeditor/ckeditor5-link': 38.1.1 + '@ckeditor/ckeditor5-list': 38.1.1 + '@ckeditor/ckeditor5-media-embed': 38.1.1 + '@ckeditor/ckeditor5-paragraph': 38.1.1 + '@ckeditor/ckeditor5-paste-from-office': 38.1.1 + '@ckeditor/ckeditor5-table': 38.1.1 + '@ckeditor/ckeditor5-typing': 38.1.1 + dev: false + + /@ckeditor/ckeditor5-build-inline@38.1.1: + resolution: {integrity: sha512-sZG7EISh1ZxeHABflLlzv0xEsxnwA7V1T3j4320/+I7D6R0HUrVvjfiM+RPQruyGKjD8bh7RTbEm40lQN82Xyg==} + engines: {node: '>=16.0.0', npm: '>=5.7.1'} + dependencies: + '@ckeditor/ckeditor5-adapter-ckfinder': 38.1.1 + '@ckeditor/ckeditor5-autoformat': 38.1.1 + '@ckeditor/ckeditor5-basic-styles': 38.1.1 + '@ckeditor/ckeditor5-block-quote': 38.1.1 + '@ckeditor/ckeditor5-ckbox': 38.1.1 + '@ckeditor/ckeditor5-ckfinder': 38.1.1 + '@ckeditor/ckeditor5-cloud-services': 38.1.1 + '@ckeditor/ckeditor5-easy-image': 38.1.1 + '@ckeditor/ckeditor5-editor-inline': 38.1.1 + '@ckeditor/ckeditor5-essentials': 38.1.1 + '@ckeditor/ckeditor5-heading': 38.1.1 + '@ckeditor/ckeditor5-image': 38.1.1 + '@ckeditor/ckeditor5-indent': 38.1.1 + '@ckeditor/ckeditor5-link': 38.1.1 + '@ckeditor/ckeditor5-list': 38.1.1 + '@ckeditor/ckeditor5-media-embed': 38.1.1 + '@ckeditor/ckeditor5-paragraph': 38.1.1 + '@ckeditor/ckeditor5-paste-from-office': 38.1.1 + '@ckeditor/ckeditor5-table': 38.1.1 + '@ckeditor/ckeditor5-typing': 38.1.1 + dev: false + + /@ckeditor/ckeditor5-ckbox@38.1.1: + resolution: {integrity: sha512-+R3Vz2QL/K2pdWzOZpFtrLwFHefxQfDT99sYQSUZiOQaXA6rSoLT4x6lhIdrQRjsI/ofCIGseQxuTHc8t86urA==} + engines: {node: '>=16.0.0', npm: '>=5.7.1'} + dependencies: + ckeditor5: 38.1.1 + dev: false + + /@ckeditor/ckeditor5-ckfinder@38.1.1: + resolution: {integrity: sha512-58139l/uKcMD6KZzd5uPzv8IwJYNnDFsT8N6DlecTZuh3ViKmg9t/pbRWu8epOboySwHeJoA3q12m2j05C1+JQ==} + engines: {node: '>=16.0.0', npm: '>=5.7.1'} + dependencies: + ckeditor5: 38.1.1 + dev: false + + /@ckeditor/ckeditor5-clipboard@38.1.1: + resolution: {integrity: sha512-FN6QxWw0ZcoMsCkm6FuN2do//qjNGofnsFernKWJPbL2E056dvB4WmhYHa4fCvGASCROcJ17yUV7oYI+1ah/og==} + engines: {node: '>=16.0.0', npm: '>=5.7.1'} + dependencies: + '@ckeditor/ckeditor5-core': 38.1.1 + '@ckeditor/ckeditor5-engine': 38.1.1 + '@ckeditor/ckeditor5-ui': 38.1.1 + '@ckeditor/ckeditor5-utils': 38.1.1 + '@ckeditor/ckeditor5-widget': 38.1.1 + lodash-es: 4.17.21 + dev: false + + /@ckeditor/ckeditor5-cloud-services@38.1.1: + resolution: {integrity: sha512-M4MykJmA9JqlZEDCJfcGwEKq6Y1AuDf8Kxbl0LfMZu6BKv74up+c0wSD/WX7isot3eqDdSQckVjHlJvmS31EOA==} + engines: {node: '>=16.0.0', npm: '>=5.7.1'} + dependencies: + ckeditor5: 38.1.1 + dev: false + + /@ckeditor/ckeditor5-core@38.1.1: + resolution: {integrity: sha512-5yC+oSoCnjfOrvmECbwtu4zBt9S5dJfOYsAzfIGEbmD9DVGIyLBDKEjJ9IbAKAy1HG6CgAkZyv1YyEc5G5g3ew==} + engines: {node: '>=16.0.0', npm: '>=5.7.1'} + dependencies: + '@ckeditor/ckeditor5-engine': 38.1.1 + '@ckeditor/ckeditor5-utils': 38.1.1 + lodash-es: 4.17.21 + dev: false + + /@ckeditor/ckeditor5-easy-image@38.1.1: + resolution: {integrity: sha512-kusGv9hBkFNm3/ZSr69fgdJ3V94feL0oXQoRUsCTsv2usda6KOIY3D5XMK8vvBpa7+0gFan98AvX9KM5IvrMkQ==} + engines: {node: '>=16.0.0', npm: '>=5.7.1'} + dependencies: + ckeditor5: 38.1.1 + dev: false + + /@ckeditor/ckeditor5-editor-balloon@38.1.1: + resolution: {integrity: sha512-gchehCuglncwOme1/7JGSA2obObm88MCWayy38xlNLHQZA/9FCUrbFAsqvkc2Pza+9+u84vw0FS/k2LIcG5nLQ==} + engines: {node: '>=16.0.0', npm: '>=5.7.1'} + dependencies: + ckeditor5: 38.1.1 + lodash-es: 4.17.21 + dev: false + + /@ckeditor/ckeditor5-editor-classic@38.1.1: + resolution: {integrity: sha512-LSh60tSuR8pGnLswy+Smx7x0NtFjbVX2dGiEkMyh4O0JLok/YgS3IU6UmoEd9FTjGqnOZ3644h3SpkSu84uDYA==} + engines: {node: '>=16.0.0', npm: '>=5.7.1'} + dependencies: + ckeditor5: 38.1.1 + lodash-es: 4.17.21 + dev: false + + /@ckeditor/ckeditor5-editor-decoupled@38.1.1: + resolution: {integrity: sha512-vFYKLbFNI8wWHQ6IGY43eJaE6hwyGzI0TEGNci0AKJo5K/szUo3heL/JnuEknOqRJf4EL7RGeHw8fLAmV2XiZQ==} + engines: {node: '>=16.0.0', npm: '>=5.7.1'} + dependencies: + ckeditor5: 38.1.1 + lodash-es: 4.17.21 + dev: false + + /@ckeditor/ckeditor5-editor-inline@38.1.1: + resolution: {integrity: sha512-orp4tRtiIaWxK3UB+612OgvL/NRTRVjDmxObq5QXfmdPE8I4diM0RFx4aLlBJzjK943+6tt9/8aQKVuN5s5TEQ==} + engines: {node: '>=16.0.0', npm: '>=5.7.1'} + dependencies: + ckeditor5: 38.1.1 + lodash-es: 4.17.21 + dev: false + + /@ckeditor/ckeditor5-engine@38.1.1: + resolution: {integrity: sha512-Z0LYg7B4vN3ZNUf3utmBRXQBn3JNy81Xs+45sQ09Fpf5p6aKer37vxEA315O17PnWYndildeKNRUNdjI942HcQ==} + engines: {node: '>=16.0.0', npm: '>=5.7.1'} + dependencies: + '@ckeditor/ckeditor5-utils': 38.1.1 + lodash-es: 4.17.21 + dev: false + + /@ckeditor/ckeditor5-enter@38.1.1: + resolution: {integrity: sha512-jzlTvyBwBw4TLr03NXwVeZD87pOSjisx8WCEahWM8Rxrw77k+7rg3blAWmmpw9cHUp2WkpxCztfvQtQouT9Jpw==} + engines: {node: '>=16.0.0', npm: '>=5.7.1'} + dependencies: + '@ckeditor/ckeditor5-core': 38.1.1 + '@ckeditor/ckeditor5-engine': 38.1.1 + '@ckeditor/ckeditor5-utils': 38.1.1 + dev: false + + /@ckeditor/ckeditor5-essentials@38.1.1: + resolution: {integrity: sha512-8Upvcjqny39pEZM5JbdyM8MESGjC6IkAJpjvqEFkbZsFcFzXjPolbxPReI3Xbl74XaMGYpwfraTv7ozkCxD7eA==} + engines: {node: '>=16.0.0', npm: '>=5.7.1'} + dependencies: + ckeditor5: 38.1.1 + dev: false + + /@ckeditor/ckeditor5-font@38.1.1: + resolution: {integrity: sha512-DHXtwbMbX4BtRzlCFTe/3Z2bISf5c1tOpu9+RozcOEnV3it0B8R8HacrETcbK3s0sH9zG5iZCVj5sRC66/TEvg==} + engines: {node: '>=16.0.0', npm: '>=5.7.1'} + dependencies: + '@ckeditor/ckeditor5-ui': 38.1.1 + ckeditor5: 38.1.1 + dev: false + + /@ckeditor/ckeditor5-heading@38.1.1: + resolution: {integrity: sha512-uEh62XWpw5uIpaslJfn8YZ+9DfViCRR5auAz5SdiYDY+tdLjwKS308S1um5i5G/CLjp1M3uXlvDieOopit9nYg==} + engines: {node: '>=16.0.0', npm: '>=5.7.1'} + dependencies: + ckeditor5: 38.1.1 + dev: false + + /@ckeditor/ckeditor5-image@38.1.1: + resolution: {integrity: sha512-iXUlw38Eoo5zwj3h9eKULenEDPYoohPLT/74UDYw1V7Q3QY3dN4fCovcWwQx7VFPMPFUtd5T1S/ki/3UpLQhSA==} + engines: {node: '>=16.0.0', npm: '>=5.7.1'} + dependencies: + '@ckeditor/ckeditor5-ui': 38.1.1 + ckeditor5: 38.1.1 + lodash-es: 4.17.21 + dev: false + + /@ckeditor/ckeditor5-indent@38.1.1: + resolution: {integrity: sha512-Wr0lAiTVGVAD4N/4zqFSGdO40uZEUdVaPFBNzRz2XeohLlMiu5poaWQkEmwtShyl8CFG5MYIayw0JBDw7uHPbA==} + engines: {node: '>=16.0.0', npm: '>=5.7.1'} + dependencies: + ckeditor5: 38.1.1 + dev: false + + /@ckeditor/ckeditor5-link@38.1.1: + resolution: {integrity: sha512-CMIPPaUIOvVPW/gIEmcZ00bYbQyy3/YenxPrzmdMkYjDWoPqfhDnn4FTrgEBYyWRXTNXXrS7D08VGeGCDOyYPA==} + engines: {node: '>=16.0.0', npm: '>=5.7.1'} + dependencies: + '@ckeditor/ckeditor5-ui': 38.1.1 + ckeditor5: 38.1.1 + lodash-es: 4.17.21 + dev: false + + /@ckeditor/ckeditor5-list@38.1.1: + resolution: {integrity: sha512-FzBdAZWaBXjUYmtd7fDzIJ4evXM6n1RbNYG7ICzoviarlKL99mv/wLEkEvNDH0japdu/G11JtV36tRtBCzwoDQ==} + engines: {node: '>=16.0.0', npm: '>=5.7.1'} + dependencies: + '@ckeditor/ckeditor5-ui': 38.1.1 + ckeditor5: 38.1.1 + dev: false + + /@ckeditor/ckeditor5-media-embed@38.1.1: + resolution: {integrity: sha512-jWZUsJNRwVBfeTroSHcssEijCmNLgs2pJwKzJTcltyJr44se2V2kTEieCT3r0qpQvbdyw90n+MfrrlWb+S1bnQ==} + engines: {node: '>=16.0.0', npm: '>=5.7.1'} + dependencies: + '@ckeditor/ckeditor5-ui': 38.1.1 + ckeditor5: 38.1.1 + dev: false + + /@ckeditor/ckeditor5-paragraph@38.1.1: + resolution: {integrity: sha512-IsiCDTMK5s9T1QWwiLW90VFKsNfsTUlYy8tnr/sH5t2QFP8LOkF2ZL2igb/BqyuROrGVvS8At+BTnlH3hqAW/Q==} + engines: {node: '>=16.0.0', npm: '>=5.7.1'} + dependencies: + '@ckeditor/ckeditor5-core': 38.1.1 + '@ckeditor/ckeditor5-ui': 38.1.1 + '@ckeditor/ckeditor5-utils': 38.1.1 + dev: false + + /@ckeditor/ckeditor5-paste-from-office@38.1.1: + resolution: {integrity: sha512-xCAw3HwxfFgsZPINf6jb29MObDN2wDzZFpiMkChdjzmHqaCugd2SAssZQo/flxdy5fkMXju8gCa0bfM2g1HTkQ==} + engines: {node: '>=16.0.0', npm: '>=5.7.1'} + dependencies: + ckeditor5: 38.1.1 + dev: false + + /@ckeditor/ckeditor5-select-all@38.1.1: + resolution: {integrity: sha512-e/JUdGsBkf902rG0g+6ii/QhDP+LFV2W9bxhrGppLahzPX09NT5BCJh2/bTtUPw0cIRpk49ji7hNBzDjCKqctQ==} + engines: {node: '>=16.0.0', npm: '>=5.7.1'} + dependencies: + '@ckeditor/ckeditor5-core': 38.1.1 + '@ckeditor/ckeditor5-ui': 38.1.1 + '@ckeditor/ckeditor5-utils': 38.1.1 + dev: false + + /@ckeditor/ckeditor5-table@38.1.1: + resolution: {integrity: sha512-QOTc+Re3K5mY6GHC2vmglNb8k5D49cCjVlO2ORvr3Pk/Nepmk6asW3NoSfox8YJZSAfJyloD+t56FagZSokP+g==} + engines: {node: '>=16.0.0', npm: '>=5.7.1'} + dependencies: + ckeditor5: 38.1.1 + lodash-es: 4.17.21 + dev: false + + /@ckeditor/ckeditor5-typing@38.1.1: + resolution: {integrity: sha512-KU0wF1ueWFwK3BnkGB2v2vpjISgwmC0OxpPM0RLHCDG5iSvIkPbu1tUj9rbxRx45JM6xgpTP1C9kEFSm5w5MoQ==} + engines: {node: '>=16.0.0', npm: '>=5.7.1'} + dependencies: + '@ckeditor/ckeditor5-core': 38.1.1 + '@ckeditor/ckeditor5-engine': 38.1.1 + '@ckeditor/ckeditor5-utils': 38.1.1 + lodash-es: 4.17.21 + dev: false + + /@ckeditor/ckeditor5-ui@38.1.1: + resolution: {integrity: sha512-lTqOaciupH66Zz7BSRGOm5DyjLURJwmFfZyCYCKD6+ZbTsxcP1asdiUm8y3bOx2maRCZTrHMhuAANp3qFWXoLQ==} + engines: {node: '>=16.0.0', npm: '>=5.7.1'} + dependencies: + '@ckeditor/ckeditor5-core': 38.1.1 + '@ckeditor/ckeditor5-utils': 38.1.1 + color-convert: 2.0.1 + color-parse: 1.4.2 + lodash-es: 4.17.21 + vanilla-colorful: 0.7.2 + dev: false + + /@ckeditor/ckeditor5-undo@38.1.1: + resolution: {integrity: sha512-21XCRb4XKYrK2bAkNTbOUb3Cmbu4FB11cqG3ncIg2rWSHSJJOijMdvZpZBvNpXVEsvJgA2Ol7bCiSXgdVUR/yQ==} + engines: {node: '>=16.0.0', npm: '>=5.7.1'} + dependencies: + '@ckeditor/ckeditor5-core': 38.1.1 + '@ckeditor/ckeditor5-engine': 38.1.1 + '@ckeditor/ckeditor5-ui': 38.1.1 + dev: false + + /@ckeditor/ckeditor5-upload@38.1.1: + resolution: {integrity: sha512-c7zau/N4cGJKpNPoRj0QEAQKOiIQzrSK2UCG0JsPtfF9jzTWa5fIJ/6hSHquwjtnhkB7zAL0PKXwcTNpdlyibA==} + engines: {node: '>=16.0.0', npm: '>=5.7.1'} + dependencies: + '@ckeditor/ckeditor5-core': 38.1.1 + '@ckeditor/ckeditor5-ui': 38.1.1 + '@ckeditor/ckeditor5-utils': 38.1.1 + dev: false + + /@ckeditor/ckeditor5-utils@38.1.1: + resolution: {integrity: sha512-+dSCchr8sseqWSfCuuOk5uajCo2Tr71IXmn3EGalEHE6Fc1GjWElO90GAA4Pbezrt1zG1tDqhh+bZHULAcK8wQ==} + engines: {node: '>=16.0.0', npm: '>=5.7.1'} + dependencies: + lodash-es: 4.17.21 + dev: false + + /@ckeditor/ckeditor5-watchdog@38.1.1: + resolution: {integrity: sha512-NijdWJsl+vnzdtyhI0u0Ln2TEVaSLa2VEHyB7J1r57cUN9Bq5tqRH4/BhvvqGKGc9lkpbvcSFduH2c6StHm0rw==} + engines: {node: '>=16.0.0', npm: '>=5.7.1'} + dependencies: + lodash-es: 4.17.21 + dev: false + + /@ckeditor/ckeditor5-widget@38.1.1: + resolution: {integrity: sha512-WAQhYBRfpu5jhV7Subc8pVkHYFCgXyJ65bQg5Jn8Em86lySejXQEi/GowjKwkwzlSrceqDrELEJV9jcCaUZlaA==} + engines: {node: '>=16.0.0', npm: '>=5.7.1'} + dependencies: + '@ckeditor/ckeditor5-core': 38.1.1 + '@ckeditor/ckeditor5-engine': 38.1.1 + '@ckeditor/ckeditor5-enter': 38.1.1 + '@ckeditor/ckeditor5-typing': 38.1.1 + '@ckeditor/ckeditor5-ui': 38.1.1 + '@ckeditor/ckeditor5-utils': 38.1.1 + lodash-es: 4.17.21 + dev: false + + /@csstools/sass-import-resolve@1.0.0: + resolution: {integrity: sha512-pH4KCsbtBLLe7eqUrw8brcuFO8IZlN36JjdKlOublibVdAIPHCzEnpBWOVUXK5sCf+DpBi8ZtuWtjF0srybdeA==} + engines: {node: '>=4.0.0'} + dev: true + + /@csstools/selector-specificity@3.0.0(postcss-selector-parser@6.0.13): + resolution: {integrity: sha512-hBI9tfBtuPIi885ZsZ32IMEU/5nlZH/KOVYJCOh7gyMxaVLGmLedYqFN6Ui1LXkI8JlC8IsuC0rF0btcRZKd5g==} + engines: {node: ^14 || ^16 || >=18} + peerDependencies: + postcss-selector-parser: ^6.0.13 + dependencies: + postcss-selector-parser: 6.0.13 + dev: true + + /@esbuild/android-arm64@0.18.20: + resolution: {integrity: sha512-Nz4rJcchGDtENV0eMKUNa6L12zz2zBDXuhj/Vjh18zGqB44Bi7MBMSXjgunJgjRhCmKOjnPuZp4Mb6OKqtMHLQ==} + engines: {node: '>=12'} + cpu: [arm64] + os: [android] + requiresBuild: true + dev: true + optional: true + + /@esbuild/android-arm@0.18.20: + resolution: {integrity: sha512-fyi7TDI/ijKKNZTUJAQqiG5T7YjJXgnzkURqmGj13C6dCqckZBLdl4h7bkhHt/t0WP+zO9/zwroDvANaOqO5Sw==} + engines: {node: '>=12'} + cpu: [arm] + os: [android] + requiresBuild: true + dev: true + optional: true + + /@esbuild/android-x64@0.18.20: + resolution: {integrity: sha512-8GDdlePJA8D6zlZYJV/jnrRAi6rOiNaCC/JclcXpB+KIuvfBN4owLtgzY2bsxnx666XjJx2kDPUmnTtR8qKQUg==} + engines: {node: '>=12'} + cpu: [x64] + os: [android] + requiresBuild: true + dev: true + optional: true + + /@esbuild/darwin-arm64@0.18.20: + resolution: {integrity: sha512-bxRHW5kHU38zS2lPTPOyuyTm+S+eobPUnTNkdJEfAddYgEcll4xkT8DB9d2008DtTbl7uJag2HuE5NZAZgnNEA==} + engines: {node: '>=12'} + cpu: [arm64] + os: [darwin] + requiresBuild: true + dev: true + optional: true + + /@esbuild/darwin-x64@0.18.20: + resolution: {integrity: sha512-pc5gxlMDxzm513qPGbCbDukOdsGtKhfxD1zJKXjCCcU7ju50O7MeAZ8c4krSJcOIJGFR+qx21yMMVYwiQvyTyQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [darwin] + requiresBuild: true + dev: true + optional: true + + /@esbuild/freebsd-arm64@0.18.20: + resolution: {integrity: sha512-yqDQHy4QHevpMAaxhhIwYPMv1NECwOvIpGCZkECn8w2WFHXjEwrBn3CeNIYsibZ/iZEUemj++M26W3cNR5h+Tw==} + engines: {node: '>=12'} + cpu: [arm64] + os: [freebsd] + requiresBuild: true + dev: true + optional: true + + /@esbuild/freebsd-x64@0.18.20: + resolution: {integrity: sha512-tgWRPPuQsd3RmBZwarGVHZQvtzfEBOreNuxEMKFcd5DaDn2PbBxfwLcj4+aenoh7ctXcbXmOQIn8HI6mCSw5MQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [freebsd] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-arm64@0.18.20: + resolution: {integrity: sha512-2YbscF+UL7SQAVIpnWvYwM+3LskyDmPhe31pE7/aoTMFKKzIc9lLbyGUpmmb8a8AixOL61sQ/mFh3jEjHYFvdA==} + engines: {node: '>=12'} + cpu: [arm64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-arm@0.18.20: + resolution: {integrity: sha512-/5bHkMWnq1EgKr1V+Ybz3s1hWXok7mDFUMQ4cG10AfW3wL02PSZi5kFpYKrptDsgb2WAJIvRcDm+qIvXf/apvg==} + engines: {node: '>=12'} + cpu: [arm] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-ia32@0.18.20: + resolution: {integrity: sha512-P4etWwq6IsReT0E1KHU40bOnzMHoH73aXp96Fs8TIT6z9Hu8G6+0SHSw9i2isWrD2nbx2qo5yUqACgdfVGx7TA==} + engines: {node: '>=12'} + cpu: [ia32] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-loong64@0.18.20: + resolution: {integrity: sha512-nXW8nqBTrOpDLPgPY9uV+/1DjxoQ7DoB2N8eocyq8I9XuqJ7BiAMDMf9n1xZM9TgW0J8zrquIb/A7s3BJv7rjg==} + engines: {node: '>=12'} + cpu: [loong64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-mips64el@0.18.20: + resolution: {integrity: sha512-d5NeaXZcHp8PzYy5VnXV3VSd2D328Zb+9dEq5HE6bw6+N86JVPExrA6O68OPwobntbNJ0pzCpUFZTo3w0GyetQ==} + engines: {node: '>=12'} + cpu: [mips64el] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-ppc64@0.18.20: + resolution: {integrity: sha512-WHPyeScRNcmANnLQkq6AfyXRFr5D6N2sKgkFo2FqguP44Nw2eyDlbTdZwd9GYk98DZG9QItIiTlFLHJHjxP3FA==} + engines: {node: '>=12'} + cpu: [ppc64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-riscv64@0.18.20: + resolution: {integrity: sha512-WSxo6h5ecI5XH34KC7w5veNnKkju3zBRLEQNY7mv5mtBmrP/MjNBCAlsM2u5hDBlS3NGcTQpoBvRzqBcRtpq1A==} + engines: {node: '>=12'} + cpu: [riscv64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-s390x@0.18.20: + resolution: {integrity: sha512-+8231GMs3mAEth6Ja1iK0a1sQ3ohfcpzpRLH8uuc5/KVDFneH6jtAJLFGafpzpMRO6DzJ6AvXKze9LfFMrIHVQ==} + engines: {node: '>=12'} + cpu: [s390x] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/linux-x64@0.18.20: + resolution: {integrity: sha512-UYqiqemphJcNsFEskc73jQ7B9jgwjWrSayxawS6UVFZGWrAAtkzjxSqnoclCXxWtfwLdzU+vTpcNYhpn43uP1w==} + engines: {node: '>=12'} + cpu: [x64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@esbuild/netbsd-x64@0.18.20: + resolution: {integrity: sha512-iO1c++VP6xUBUmltHZoMtCUdPlnPGdBom6IrO4gyKPFFVBKioIImVooR5I83nTew5UOYrk3gIJhbZh8X44y06A==} + engines: {node: '>=12'} + cpu: [x64] + os: [netbsd] + requiresBuild: true + dev: true + optional: true + + /@esbuild/openbsd-x64@0.18.20: + resolution: {integrity: sha512-e5e4YSsuQfX4cxcygw/UCPIEP6wbIL+se3sxPdCiMbFLBWu0eiZOJ7WoD+ptCLrmjZBK1Wk7I6D/I3NglUGOxg==} + engines: {node: '>=12'} + cpu: [x64] + os: [openbsd] + requiresBuild: true + dev: true + optional: true + + /@esbuild/sunos-x64@0.18.20: + resolution: {integrity: sha512-kDbFRFp0YpTQVVrqUd5FTYmWo45zGaXe0X8E1G/LKFC0v8x0vWrhOWSLITcCn63lmZIxfOMXtCfti/RxN/0wnQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [sunos] + requiresBuild: true + dev: true + optional: true + + /@esbuild/win32-arm64@0.18.20: + resolution: {integrity: sha512-ddYFR6ItYgoaq4v4JmQQaAI5s7npztfV4Ag6NrhiaW0RrnOXqBkgwZLofVTlq1daVTQNhtI5oieTvkRPfZrePg==} + engines: {node: '>=12'} + cpu: [arm64] + os: [win32] + requiresBuild: true + dev: true + optional: true + + /@esbuild/win32-ia32@0.18.20: + resolution: {integrity: sha512-Wv7QBi3ID/rROT08SABTS7eV4hX26sVduqDOTe1MvGMjNd3EjOz4b7zeexIR62GTIEKrfJXKL9LFxTYgkyeu7g==} + engines: {node: '>=12'} + cpu: [ia32] + os: [win32] + requiresBuild: true + dev: true + optional: true + + /@esbuild/win32-x64@0.18.20: + resolution: {integrity: sha512-kTdfRcSiDfQca/y9QIkng02avJ+NCaQvrMejlsB3RRv5sE9rRoeBPISaZpKxHELzRxZyLvNts1P27W3wV+8geQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [win32] + requiresBuild: true + dev: true + optional: true + + /@eslint-community/eslint-utils@4.4.0(eslint@8.53.0): + resolution: {integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 + dependencies: + eslint: 8.53.0 + eslint-visitor-keys: 3.4.3 + + /@eslint-community/regexpp@4.10.0: + resolution: {integrity: sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA==} + engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} + + /@eslint/eslintrc@2.1.3: + resolution: {integrity: sha512-yZzuIG+jnVu6hNSzFEN07e8BxF3uAzYtQb6uDkaYZLo6oYZDCq454c5kB8zxnzfCYyP4MIuyBn10L0DqwujTmA==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dependencies: + ajv: 6.12.6 + debug: 4.3.4 + espree: 9.6.1 + globals: 13.23.0 + ignore: 5.2.4 + import-fresh: 3.3.0 + js-yaml: 4.1.0 + minimatch: 3.1.2 + strip-json-comments: 3.1.1 + transitivePeerDependencies: + - supports-color + + /@eslint/js@8.53.0: + resolution: {integrity: sha512-Kn7K8dx/5U6+cT1yEhpX1w4PCSg0M+XyRILPgvwcEBjerFWCwQj5sbr3/VmxqV0JGHCBCzyd6LxypEuehypY1w==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + + /@fullcalendar/common@5.11.5: + resolution: {integrity: sha512-3iAYiUbHXhjSVXnYWz27Od2cslztUPsOwiwKlfGvQxBixv2Kl6a8IPwaijKFYJHXdwYmfPoEgK7rvqAGVoIYwA==} + dependencies: + tslib: 2.6.2 + dev: false + + /@fullcalendar/core@5.11.5: + resolution: {integrity: sha512-M/WQuq1+uUHxFDEIu2ib/aaPZ70VsRk2ITECo/WCLSLTVWcHPXwEg83reyP3G8JrMM4gRL4vScEHhX0U5aoNSw==} + dependencies: + '@fullcalendar/common': 5.11.5 + preact: 10.12.1 + tslib: 2.6.2 + dev: false + + /@fullcalendar/daygrid@5.11.5: + resolution: {integrity: sha512-hMpq0U3Nucys2jDD+crbkJCr+tVt3fDw04OE3fbpisuzqtrHxIzRmnUOdbWUjJQyToAAkt7UVUQ9E7hYdmvyGA==} + dependencies: + '@fullcalendar/common': 5.11.5 + tslib: 2.6.2 + dev: false + + /@fullcalendar/interaction@5.11.5: + resolution: {integrity: sha512-Vg9uw8zKXZc2RP7it88U8R/kxJIQsK4pyv+s+RhlvT5NBZ9KLOh5y2xGCS4A4hyY7qLrzugxnKYlu6NwNqJ/RQ==} + dependencies: + '@fullcalendar/common': 5.11.5 + tslib: 2.6.2 + dev: false + + /@fullcalendar/list@5.11.5: + resolution: {integrity: sha512-ZYMPT4CVt9tIYkVVNx7CKkB2xc+n9L56+vgXkurptgYgPsacXYkcpF/1Hy/B5LKlg0ROEF9Qfftjow8xjANqaA==} + dependencies: + '@fullcalendar/common': 5.11.5 + tslib: 2.6.2 + dev: false + + /@fullcalendar/timegrid@5.11.5: + resolution: {integrity: sha512-OEH5mrTclwxgUbb51N6qr7ifzNkR74ygUEFpiMLyyUjkp7a76N6BsAP5mBQnTOpTTUZBu9tAOmfcnvi7skUayQ==} + dependencies: + '@fullcalendar/common': 5.11.5 + '@fullcalendar/daygrid': 5.11.5 + tslib: 2.6.2 + dev: false + + /@fullcalendar/vue3@5.11.5(vue@3.3.9): + resolution: {integrity: sha512-813zzFAuW9/ysysLhjxFKIThUrT23qjf1EKymyj0tCnrFtfTrpbk1k/txRQ5dwITanHEU3iFxgE/d+PlswL/bg==} + peerDependencies: + vue: ^3.0.11 + dependencies: + '@fullcalendar/core': 5.11.5 + tslib: 2.6.2 + vue: 3.3.9(typescript@5.2.2) + dev: false + + /@headlessui/vue@1.7.16(vue@3.3.9): + resolution: {integrity: sha512-nKT+nf/q6x198SsyK54mSszaQl/z+QxtASmgMEJtpxSX2Q0OPJX0upS/9daDyiECpeAsvjkoOrm2O/6PyBQ+Qg==} + engines: {node: '>=10'} + peerDependencies: + vue: ^3.2.0 + dependencies: + vue: 3.3.9(typescript@5.2.2) + dev: false + + /@humanwhocodes/config-array@0.11.13: + resolution: {integrity: sha512-JSBDMiDKSzQVngfRjOdFXgFfklaXI4K9nLF49Auh21lmBWRLIK3+xTErTWD4KU54pb6coM6ESE7Awz/FNU3zgQ==} + engines: {node: '>=10.10.0'} + dependencies: + '@humanwhocodes/object-schema': 2.0.1 + debug: 4.3.4 + minimatch: 3.1.2 + transitivePeerDependencies: + - supports-color + + /@humanwhocodes/module-importer@1.0.1: + resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==} + engines: {node: '>=12.22'} + + /@humanwhocodes/object-schema@2.0.1: + resolution: {integrity: sha512-dvuCeX5fC9dXgJn9t+X5atfmgQAzUOWqS1254Gh0m6i8wKd10ebXkfNKiRK+1GWi/yTvvLDHpoxLr0xxxeslWw==} + + /@isaacs/cliui@8.0.2: + resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==} + engines: {node: '>=12'} + dependencies: + string-width: 5.1.2 + string-width-cjs: /string-width@4.2.3 + strip-ansi: 7.1.0 + strip-ansi-cjs: /strip-ansi@6.0.1 + wrap-ansi: 8.1.0 + wrap-ansi-cjs: /wrap-ansi@7.0.0 + dev: false + + /@jridgewell/gen-mapping@0.3.3: + resolution: {integrity: sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==} + engines: {node: '>=6.0.0'} + dependencies: + '@jridgewell/set-array': 1.1.2 + '@jridgewell/sourcemap-codec': 1.4.15 + '@jridgewell/trace-mapping': 0.3.20 + dev: true + + /@jridgewell/resolve-uri@3.1.1: + resolution: {integrity: sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==} + engines: {node: '>=6.0.0'} + dev: true + + /@jridgewell/set-array@1.1.2: + resolution: {integrity: sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==} + engines: {node: '>=6.0.0'} + dev: true + + /@jridgewell/sourcemap-codec@1.4.15: + resolution: {integrity: sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==} + + /@jridgewell/trace-mapping@0.3.20: + resolution: {integrity: sha512-R8LcPeWZol2zR8mmH3JeKQ6QRCFb7XgUhV9ZlGhHLGyg4wpPiPZNQOOWhFZhxKw8u//yTbNGI42Bx/3paXEQ+Q==} + dependencies: + '@jridgewell/resolve-uri': 3.1.1 + '@jridgewell/sourcemap-codec': 1.4.15 + dev: true + + /@juggle/resize-observer@3.4.0: + resolution: {integrity: sha512-dfLbk+PwWvFzSxwk3n5ySL0hfBog779o8h68wK/7/APo/7cgyWp5jcXockbxdk5kFRkbeXWm4Fbi9FrdN381sA==} + dev: false + + /@kurkle/color@0.3.2: + resolution: {integrity: sha512-fuscdXJ9G1qb7W8VdHi+IwRqij3lBkosAm4ydQtEmbY58OzHXqQhvlxqEkoz0yssNVn38bcpRWgA9PP+OGoisw==} + dev: false + + /@nodelib/fs.scandir@2.1.5: + resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} + engines: {node: '>= 8'} + dependencies: + '@nodelib/fs.stat': 2.0.5 + run-parallel: 1.2.0 + + /@nodelib/fs.stat@2.0.5: + resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} + engines: {node: '>= 8'} + + /@nodelib/fs.walk@1.2.8: + resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} + engines: {node: '>= 8'} + dependencies: + '@nodelib/fs.scandir': 2.1.5 + fastq: 1.15.0 + + /@one-ini/wasm@0.1.1: + resolution: {integrity: sha512-XuySG1E38YScSJoMlqovLru4KTUNSjgVTIjyh7qMX6aNN5HY5Ct5LhRJdxO79JtTzKfzV/bnWpz+zquYrISsvw==} + dev: false + + /@orchidjs/sifter@1.0.3: + resolution: {integrity: sha512-zCZbwKegHytfsPm8Amcfh7v/4vHqTAaOu6xFswBYcn8nznBOuseu6COB2ON7ez0tFV0mKL0nRNnCiZZA+lU9/g==} + dependencies: + '@orchidjs/unicode-variants': 1.0.4 + dev: false + + /@orchidjs/unicode-variants@1.0.4: + resolution: {integrity: sha512-NvVBRnZNE+dugiXERFsET1JlKZfM5lJDEpSMilKW4bToYJ7pxf0Zne78xyXB2ny2c2aHfJ6WLnz1AaTNHAmQeQ==} + dev: false + + /@pkgjs/parseargs@0.11.0: + resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} + engines: {node: '>=14'} + requiresBuild: true + dev: false + optional: true + + /@pkgr/utils@2.4.2: + resolution: {integrity: sha512-POgTXhjrTfbTV63DiFXav4lBHiICLKKwDeaKn9Nphwj7WH6m0hMMCaJkMyRWjgtPFyRKRVoMXXjczsTQRDEhYw==} + engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0} + dependencies: + cross-spawn: 7.0.3 + fast-glob: 3.3.2 + is-glob: 4.0.3 + open: 9.1.0 + picocolors: 1.0.0 + tslib: 2.6.2 + dev: true + + /@popperjs/core@2.11.8: + resolution: {integrity: sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A==} + dev: false + + /@swc/helpers@0.2.14: + resolution: {integrity: sha512-wpCQMhf5p5GhNg2MmGKXzUNwxe7zRiCsmqYsamez2beP7mKPCSiu+BjZcdN95yYSzO857kr0VfQewmGpS77nqA==} + dev: false + + /@tailwindcss/forms@0.5.7(tailwindcss@3.3.5): + resolution: {integrity: sha512-QE7X69iQI+ZXwldE+rzasvbJiyV/ju1FGHH0Qn2W3FKbuYtqp8LKcy6iSw79fVUT5/Vvf+0XgLCeYVG+UV6hOw==} + peerDependencies: + tailwindcss: '>=3.0.0 || >= 3.0.0-alpha.1' + dependencies: + mini-svg-data-uri: 1.4.4 + tailwindcss: 3.3.5 + dev: true + + /@trysound/sax@0.2.0: + resolution: {integrity: sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA==} + engines: {node: '>=10.13.0'} + dev: false + + /@types/dropzone@5.7.7: + resolution: {integrity: sha512-6+7OyrVG9hme2HatFv+985qeJNlDidiAHtU9oKdCrhFO/BESF1L6+7MYHH9ycC6aD+af6uRLMYnderZlGhC5Fw==} + dependencies: + '@types/jquery': 3.5.27 + dev: true + + /@types/flat@5.0.5: + resolution: {integrity: sha512-nPLljZQKSnac53KDUDzuzdRfGI0TDb5qPrb+SrQyN3MtdQrOnGsKniHN1iYZsJEBIVQve94Y6gNz22sgISZq+Q==} + dev: true + + /@types/geojson@7946.0.13: + resolution: {integrity: sha512-bmrNrgKMOhM3WsafmbGmC+6dsF2Z308vLFsQ3a/bT8X8Sv5clVYpPars/UPq+sAaJP+5OoLAYgwbkS5QEJdLUQ==} + dev: true + + /@types/jquery@3.5.27: + resolution: {integrity: sha512-TR28Y8ezIGgfyA02UOh9x+Fy16/1qWYAnvtRd2gTBJuccX/vmddyti0MezLkTv7f+OLofVc2T961VPyKv1tXJQ==} + dependencies: + '@types/sizzle': 2.3.6 + dev: true + + /@types/js-beautify@1.14.3: + resolution: {integrity: sha512-FMbQHz+qd9DoGvgLHxeqqVPaNRffpIu5ZjozwV8hf9JAGpIOzuAf4wGbRSo8LNITHqGjmmVjaMggTT5P4v4IHg==} + dev: true + + /@types/json-schema@7.0.15: + resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==} + dev: false + + /@types/json5@0.0.29: + resolution: {integrity: sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==} + dev: true + + /@types/leaflet.markercluster@1.5.4: + resolution: {integrity: sha512-tfMP8J62+wfsVLDLGh5Zh1JZxijCaBmVsMAX78MkLPwvPitmZZtSin5aWOVRhZrCS+pEOZwNzexbfWXlY+7yjg==} + dependencies: + '@types/leaflet': 1.9.8 + dev: true + + /@types/leaflet@1.9.8: + resolution: {integrity: sha512-EXdsL4EhoUtGm2GC2ZYtXn+Fzc6pluVgagvo2VC1RHWToLGlTRwVYoDpqS/7QXa01rmDyBjJk3Catpf60VMkwg==} + dependencies: + '@types/geojson': 7946.0.13 + dev: true + + /@types/lodash@4.14.201: + resolution: {integrity: sha512-y9euML0cim1JrykNxADLfaG0FgD1g/yTHwUs/Jg9ZIU7WKj2/4IW9Lbb1WZbvck78W/lfGXFfe+u2EGfIJXdLQ==} + dev: true + + /@types/node@20.9.0: + resolution: {integrity: sha512-nekiGu2NDb1BcVofVcEKMIwzlx4NjHlcjhoxxKBNLtz15Y1z7MYf549DFvkHSId02Ax6kGwWntIBPC3l/JZcmw==} + dependencies: + undici-types: 5.26.5 + dev: true + + /@types/semver@7.5.5: + resolution: {integrity: sha512-+d+WYC1BxJ6yVOgUgzK8gWvp5qF8ssV5r4nsDcZWKRWcDQLQ619tvWAxJQYGgBrO1MnLJC7a5GtiYsAoQ47dJg==} + dev: false + + /@types/sizzle@2.3.6: + resolution: {integrity: sha512-m04Om5Gz6kbjUwAQ7XJJQ30OdEFsSmAVsvn4NYwcTRyMVpKKa1aPuESw1n2CxS5fYkOQv3nHgDKeNa8e76fUkw==} + dev: true + + /@types/tabulator-tables@5.5.4: + resolution: {integrity: sha512-gAeMwFaWLu3WgtC7YSqXfIuNjZGu7BzDQafsAf3DYeCsyGFe5g6DDvClc3ZrT/Etw9PPmDI0CG+7KwwqBkPDHQ==} + dev: true + + /@types/toastify-js@1.12.3: + resolution: {integrity: sha512-9RjLlbAHMSaae/KZNHGv19VG4gcLIm3YjvacCXBtfMfYn26h76YP5oxXI8k26q4iKXCB9LNfv18lsoS0JnFPTg==} + dev: true + + /@types/uuid@9.0.7: + resolution: {integrity: sha512-WUtIVRUZ9i5dYXefDEAI7sh9/O7jGvHg7Df/5O/gtH3Yabe5odI3UWopVR1qbPXQtvOxWu3mM4XxlYeZtMWF4g==} + dev: true + + /@typescript-eslint/eslint-plugin@6.10.0(@typescript-eslint/parser@6.10.0)(eslint@8.53.0)(typescript@5.2.2): + resolution: {integrity: sha512-uoLj4g2OTL8rfUQVx2AFO1hp/zja1wABJq77P6IclQs6I/m9GLrm7jCdgzZkvWdDCQf1uEvoa8s8CupsgWQgVg==} + engines: {node: ^16.0.0 || >=18.0.0} + peerDependencies: + '@typescript-eslint/parser': ^6.0.0 || ^6.0.0-alpha + eslint: ^7.0.0 || ^8.0.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@eslint-community/regexpp': 4.10.0 + '@typescript-eslint/parser': 6.10.0(eslint@8.53.0)(typescript@5.2.2) + '@typescript-eslint/scope-manager': 6.10.0 + '@typescript-eslint/type-utils': 6.10.0(eslint@8.53.0)(typescript@5.2.2) + '@typescript-eslint/utils': 6.10.0(eslint@8.53.0)(typescript@5.2.2) + '@typescript-eslint/visitor-keys': 6.10.0 + debug: 4.3.4 + eslint: 8.53.0 + graphemer: 1.4.0 + ignore: 5.2.4 + natural-compare: 1.4.0 + semver: 7.5.4 + ts-api-utils: 1.0.3(typescript@5.2.2) + typescript: 5.2.2 + transitivePeerDependencies: + - supports-color + dev: false + + /@typescript-eslint/parser@6.10.0(eslint@8.53.0)(typescript@5.2.2): + resolution: {integrity: sha512-+sZwIj+s+io9ozSxIWbNB5873OSdfeBEH/FR0re14WLI6BaKuSOnnwCJ2foUiu8uXf4dRp1UqHP0vrZ1zXGrog==} + engines: {node: ^16.0.0 || >=18.0.0} + peerDependencies: + eslint: ^7.0.0 || ^8.0.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@typescript-eslint/scope-manager': 6.10.0 + '@typescript-eslint/types': 6.10.0 + '@typescript-eslint/typescript-estree': 6.10.0(typescript@5.2.2) + '@typescript-eslint/visitor-keys': 6.10.0 + debug: 4.3.4 + eslint: 8.53.0 + typescript: 5.2.2 + transitivePeerDependencies: + - supports-color + + /@typescript-eslint/scope-manager@6.10.0: + resolution: {integrity: sha512-TN/plV7dzqqC2iPNf1KrxozDgZs53Gfgg5ZHyw8erd6jd5Ta/JIEcdCheXFt9b1NYb93a1wmIIVW/2gLkombDg==} + engines: {node: ^16.0.0 || >=18.0.0} + dependencies: + '@typescript-eslint/types': 6.10.0 + '@typescript-eslint/visitor-keys': 6.10.0 + + /@typescript-eslint/type-utils@6.10.0(eslint@8.53.0)(typescript@5.2.2): + resolution: {integrity: sha512-wYpPs3hgTFblMYwbYWPT3eZtaDOjbLyIYuqpwuLBBqhLiuvJ+9sEp2gNRJEtR5N/c9G1uTtQQL5AhV0fEPJYcg==} + engines: {node: ^16.0.0 || >=18.0.0} + peerDependencies: + eslint: ^7.0.0 || ^8.0.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@typescript-eslint/typescript-estree': 6.10.0(typescript@5.2.2) + '@typescript-eslint/utils': 6.10.0(eslint@8.53.0)(typescript@5.2.2) + debug: 4.3.4 + eslint: 8.53.0 + ts-api-utils: 1.0.3(typescript@5.2.2) + typescript: 5.2.2 + transitivePeerDependencies: + - supports-color + dev: false + + /@typescript-eslint/types@6.10.0: + resolution: {integrity: sha512-36Fq1PWh9dusgo3vH7qmQAj5/AZqARky1Wi6WpINxB6SkQdY5vQoT2/7rW7uBIsPDcvvGCLi4r10p0OJ7ITAeg==} + engines: {node: ^16.0.0 || >=18.0.0} + + /@typescript-eslint/typescript-estree@6.10.0(typescript@5.2.2): + resolution: {integrity: sha512-ek0Eyuy6P15LJVeghbWhSrBCj/vJpPXXR+EpaRZqou7achUWL8IdYnMSC5WHAeTWswYQuP2hAZgij/bC9fanBg==} + engines: {node: ^16.0.0 || >=18.0.0} + peerDependencies: + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@typescript-eslint/types': 6.10.0 + '@typescript-eslint/visitor-keys': 6.10.0 + debug: 4.3.4 + globby: 11.1.0 + is-glob: 4.0.3 + semver: 7.5.4 + ts-api-utils: 1.0.3(typescript@5.2.2) + typescript: 5.2.2 + transitivePeerDependencies: + - supports-color + + /@typescript-eslint/utils@6.10.0(eslint@8.53.0)(typescript@5.2.2): + resolution: {integrity: sha512-v+pJ1/RcVyRc0o4wAGux9x42RHmAjIGzPRo538Z8M1tVx6HOnoQBCX/NoadHQlZeC+QO2yr4nNSFWOoraZCAyg==} + engines: {node: ^16.0.0 || >=18.0.0} + peerDependencies: + eslint: ^7.0.0 || ^8.0.0 + dependencies: + '@eslint-community/eslint-utils': 4.4.0(eslint@8.53.0) + '@types/json-schema': 7.0.15 + '@types/semver': 7.5.5 + '@typescript-eslint/scope-manager': 6.10.0 + '@typescript-eslint/types': 6.10.0 + '@typescript-eslint/typescript-estree': 6.10.0(typescript@5.2.2) + eslint: 8.53.0 + semver: 7.5.4 + transitivePeerDependencies: + - supports-color + - typescript + dev: false + + /@typescript-eslint/visitor-keys@6.10.0: + resolution: {integrity: sha512-xMGluxQIEtOM7bqFCo+rCMh5fqI+ZxV5RUUOa29iVPz1OgCZrtc7rFnz5cLUazlkPKYqX+75iuDq7m0HQ48nCg==} + engines: {node: ^16.0.0 || >=18.0.0} + dependencies: + '@typescript-eslint/types': 6.10.0 + eslint-visitor-keys: 3.4.3 + + /@ungap/structured-clone@1.2.0: + resolution: {integrity: sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==} + + /@vitejs/plugin-vue@4.4.1(vite@4.5.0)(vue@3.3.9): + resolution: {integrity: sha512-HCQG8VDFDM7YDAdcj5QI5DvUi+r6xvo9LgvYdk7LSkUNwdpempdB5horkMSZsbdey9Ywsf5aaU8kEPw9M5kREA==} + engines: {node: ^14.18.0 || >=16.0.0} + peerDependencies: + vite: ^4.0.0 + vue: ^3.2.25 + dependencies: + vite: 4.5.0(@types/node@20.9.0) + vue: 3.3.9(typescript@5.2.2) + dev: true + + /@volar/language-core@1.10.10: + resolution: {integrity: sha512-nsV1o3AZ5n5jaEAObrS3MWLBWaGwUj/vAsc15FVNIv+DbpizQRISg9wzygsHBr56ELRH8r4K75vkYNMtsSNNWw==} + dependencies: + '@volar/source-map': 1.10.10 + dev: true + + /@volar/source-map@1.10.10: + resolution: {integrity: sha512-GVKjLnifV4voJ9F0vhP56p4+F3WGf+gXlRtjFZsv6v3WxBTWU3ZVeaRaEHJmWrcv5LXmoYYpk/SC25BKemPRkg==} + dependencies: + muggle-string: 0.3.1 + dev: true + + /@volar/typescript@1.10.10: + resolution: {integrity: sha512-4a2r5bdUub2m+mYVnLu2wt59fuoYWe7nf0uXtGHU8QQ5LDNfzAR0wK7NgDiQ9rcl2WT3fxT2AA9AylAwFtj50A==} + dependencies: + '@volar/language-core': 1.10.10 + path-browserify: 1.0.1 + dev: true + + /@vue/compiler-core@3.3.8: + resolution: {integrity: sha512-hN/NNBUECw8SusQvDSqqcVv6gWq8L6iAktUR0UF3vGu2OhzRqcOiAno0FmBJWwxhYEXRlQJT5XnoKsVq1WZx4g==} + dependencies: + '@babel/parser': 7.23.3 + '@vue/shared': 3.3.8 + estree-walker: 2.0.2 + source-map-js: 1.0.2 + dev: true + + /@vue/compiler-core@3.3.9: + resolution: {integrity: sha512-+/Lf68Vr/nFBA6ol4xOtJrW+BQWv3QWKfRwGSm70jtXwfhZNF4R/eRgyVJYoxFRhdCTk/F6g99BP0ffPgZihfQ==} + dependencies: + '@babel/parser': 7.23.3 + '@vue/shared': 3.3.9 + estree-walker: 2.0.2 + source-map-js: 1.0.2 + + /@vue/compiler-dom@3.3.8: + resolution: {integrity: sha512-+PPtv+p/nWDd0AvJu3w8HS0RIm/C6VGBIRe24b9hSyNWOAPEUosFZ5diwawwP8ip5sJ8n0Pe87TNNNHnvjs0FQ==} + dependencies: + '@vue/compiler-core': 3.3.8 + '@vue/shared': 3.3.8 + dev: true + + /@vue/compiler-dom@3.3.9: + resolution: {integrity: sha512-nfWubTtLXuT4iBeDSZ5J3m218MjOy42Vp2pmKVuBKo2/BLcrFUX8nCSr/bKRFiJ32R8qbdnnnBgRn9AdU5v0Sg==} + dependencies: + '@vue/compiler-core': 3.3.9 + '@vue/shared': 3.3.9 + + /@vue/compiler-sfc@3.3.9: + resolution: {integrity: sha512-wy0CNc8z4ihoDzjASCOCsQuzW0A/HP27+0MDSSICMjVIFzk/rFViezkR3dzH+miS2NDEz8ywMdbjO5ylhOLI2A==} + dependencies: + '@babel/parser': 7.23.3 + '@vue/compiler-core': 3.3.9 + '@vue/compiler-dom': 3.3.9 + '@vue/compiler-ssr': 3.3.9 + '@vue/reactivity-transform': 3.3.9 + '@vue/shared': 3.3.9 + estree-walker: 2.0.2 + magic-string: 0.30.5 + postcss: 8.4.31 + source-map-js: 1.0.2 + + /@vue/compiler-ssr@3.3.9: + resolution: {integrity: sha512-NO5oobAw78R0G4SODY5A502MGnDNiDjf6qvhn7zD7TJGc8XDeIEw4fg6JU705jZ/YhuokBKz0A5a/FL/XZU73g==} + dependencies: + '@vue/compiler-dom': 3.3.9 + '@vue/shared': 3.3.9 + + /@vue/devtools-api@6.5.1: + resolution: {integrity: sha512-+KpckaAQyfbvshdDW5xQylLni1asvNSGme1JFs8I1+/H5pHEhqUKMEQD/qn3Nx5+/nycBq11qAEi8lk+LXI2dA==} + dev: false + + /@vue/eslint-config-standard@8.0.1(@typescript-eslint/parser@6.10.0)(eslint-plugin-vue@9.18.1)(eslint@8.53.0): + resolution: {integrity: sha512-+FsTb8kOf2GSbXXTwbigRBRRur/byMbwL6Ijii2JoXW4hsLB4arl9lbgV54OUOV5o20INLHDmBVONO16rP/a1g==} + peerDependencies: + eslint: ^8.0.1 + eslint-plugin-vue: ^9.2.0 + dependencies: + eslint: 8.53.0 + eslint-config-standard: 17.1.0(eslint-plugin-import@2.29.0)(eslint-plugin-n@15.7.0)(eslint-plugin-promise@6.1.1)(eslint@8.53.0) + eslint-import-resolver-custom-alias: 1.3.2(eslint-plugin-import@2.29.0) + eslint-import-resolver-node: 0.3.9 + eslint-plugin-import: 2.29.0(@typescript-eslint/parser@6.10.0)(eslint@8.53.0) + eslint-plugin-n: 15.7.0(eslint@8.53.0) + eslint-plugin-promise: 6.1.1(eslint@8.53.0) + eslint-plugin-vue: 9.18.1(eslint@8.53.0) + transitivePeerDependencies: + - '@typescript-eslint/parser' + - eslint-import-resolver-typescript + - eslint-import-resolver-webpack + - supports-color + dev: true + + /@vue/eslint-config-typescript@12.0.0(eslint-plugin-vue@9.18.1)(eslint@8.53.0)(typescript@5.2.2): + resolution: {integrity: sha512-StxLFet2Qe97T8+7L8pGlhYBBr8Eg05LPuTDVopQV6il+SK6qqom59BA/rcFipUef2jD8P2X44Vd8tMFytfvlg==} + engines: {node: ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^6.2.0 || ^7.0.0 || ^8.0.0 + eslint-plugin-vue: ^9.0.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@typescript-eslint/eslint-plugin': 6.10.0(@typescript-eslint/parser@6.10.0)(eslint@8.53.0)(typescript@5.2.2) + '@typescript-eslint/parser': 6.10.0(eslint@8.53.0)(typescript@5.2.2) + eslint: 8.53.0 + eslint-plugin-vue: 9.18.1(eslint@8.53.0) + typescript: 5.2.2 + vue-eslint-parser: 9.3.2(eslint@8.53.0) + transitivePeerDependencies: + - supports-color + dev: false + + /@vue/language-core@1.8.22(typescript@5.2.2): + resolution: {integrity: sha512-bsMoJzCrXZqGsxawtUea1cLjUT9dZnDsy5TuZ+l1fxRMzUGQUG9+Ypq4w//CqpWmrx7nIAJpw2JVF/t258miRw==} + peerDependencies: + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@volar/language-core': 1.10.10 + '@volar/source-map': 1.10.10 + '@vue/compiler-dom': 3.3.8 + '@vue/shared': 3.3.8 + computeds: 0.0.1 + minimatch: 9.0.3 + muggle-string: 0.3.1 + typescript: 5.2.2 + vue-template-compiler: 2.7.15 + dev: true + + /@vue/reactivity-transform@3.3.9: + resolution: {integrity: sha512-HnUFm7Ry6dFa4Lp63DAxTixUp8opMtQr6RxQCpDI1vlh12rkGIeYqMvJtK+IKyEfEOa2I9oCkD1mmsPdaGpdVg==} + dependencies: + '@babel/parser': 7.23.3 + '@vue/compiler-core': 3.3.9 + '@vue/shared': 3.3.9 + estree-walker: 2.0.2 + magic-string: 0.30.5 + + /@vue/reactivity@3.3.9: + resolution: {integrity: sha512-VmpIqlNp+aYDg2X0xQhJqHx9YguOmz2UxuUJDckBdQCNkipJvfk9yA75woLWElCa0Jtyec3lAAt49GO0izsphw==} + dependencies: + '@vue/shared': 3.3.9 + + /@vue/runtime-core@3.3.9: + resolution: {integrity: sha512-xxaG9KvPm3GTRuM4ZyU8Tc+pMVzcu6eeoSRQJ9IE7NmCcClW6z4B3Ij6L4EDl80sxe/arTtQ6YmgiO4UZqRc+w==} + dependencies: + '@vue/reactivity': 3.3.9 + '@vue/shared': 3.3.9 + + /@vue/runtime-dom@3.3.9: + resolution: {integrity: sha512-e7LIfcxYSWbV6BK1wQv9qJyxprC75EvSqF/kQKe6bdZEDNValzeRXEVgiX7AHI6hZ59HA4h7WT5CGvm69vzJTQ==} + dependencies: + '@vue/runtime-core': 3.3.9 + '@vue/shared': 3.3.9 + csstype: 3.1.2 + + /@vue/server-renderer@3.3.9(vue@3.3.9): + resolution: {integrity: sha512-w0zT/s5l3Oa3ZjtLW88eO4uV6AQFqU8X5GOgzq7SkQQu6vVr+8tfm+OI2kDBplS/W/XgCBuFXiPw6T5EdwXP0A==} + peerDependencies: + vue: 3.3.9 + dependencies: + '@vue/compiler-ssr': 3.3.9 + '@vue/shared': 3.3.9 + vue: 3.3.9(typescript@5.2.2) + + /@vue/shared@3.3.8: + resolution: {integrity: sha512-8PGwybFwM4x8pcfgqEQFy70NaQxASvOC5DJwLQfpArw1UDfUXrJkdxD3BhVTMS+0Lef/TU7YO0Jvr0jJY8T+mw==} + dev: true + + /@vue/shared@3.3.9: + resolution: {integrity: sha512-ZE0VTIR0LmYgeyhurPTpy4KzKsuDyQbMSdM49eKkMnT5X4VfFBLysMzjIZhLEFQYjjOVVfbvUDHckwjDFiO2eA==} + + /@vuelidate/components@1.2.6(vue@3.3.9): + resolution: {integrity: sha512-oteVHhic9F4zDnSvSRIAadrmu1can/TwjAqGOnpGFc+rKDd29fhUdbmIVEDQLQjVAF0VzZK7s0y+cxvfMERF9w==} + peerDependencies: + '@vue/composition-api': ^1.0.0-rc.1 + vue: ^2.0.0 || >=3.0.0 + peerDependenciesMeta: + '@vue/composition-api': + optional: true + dependencies: + '@vuelidate/core': 2.0.3(vue@3.3.9) + vue: 3.3.9(typescript@5.2.2) + vue-demi: 0.13.11(vue@3.3.9) + dev: false + + /@vuelidate/core@2.0.3(vue@3.3.9): + resolution: {integrity: sha512-AN6l7KF7+mEfyWG0doT96z+47ljwPpZfi9/JrNMkOGLFv27XVZvKzRLXlmDPQjPl/wOB1GNnHuc54jlCLRNqGA==} + peerDependencies: + '@vue/composition-api': ^1.0.0-rc.1 + vue: ^2.0.0 || >=3.0.0 + peerDependenciesMeta: + '@vue/composition-api': + optional: true + dependencies: + vue: 3.3.9(typescript@5.2.2) + vue-demi: 0.13.11(vue@3.3.9) + dev: false + + /@vuelidate/validators@2.0.4(vue@3.3.9): + resolution: {integrity: sha512-odTxtUZ2JpwwiQ10t0QWYJkkYrfd0SyFYhdHH44QQ1jDatlZgTh/KRzrWVmn/ib9Gq7H4hFD4e8ahoo5YlUlDw==} + peerDependencies: + '@vue/composition-api': ^1.0.0-rc.1 + vue: ^2.0.0 || >=3.0.0 + peerDependenciesMeta: + '@vue/composition-api': + optional: true + dependencies: + vue: 3.3.9(typescript@5.2.2) + vue-demi: 0.13.11(vue@3.3.9) + dev: false + + /abbrev@1.1.1: + resolution: {integrity: sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==} + dev: false + + /abbrev@2.0.0: + resolution: {integrity: sha512-6/mh1E2u2YgEsCHdY0Yx5oW+61gZU+1vXaoiHHrpKeuRNNgFvS+/jrwHiQhB5apAf5oB7UB7E19ol2R2LKH8hQ==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + dev: false + + /acorn-jsx@5.3.2(acorn@8.11.2): + resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} + peerDependencies: + acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 + dependencies: + acorn: 8.11.2 + + /acorn@8.11.2: + resolution: {integrity: sha512-nc0Axzp/0FILLEVsm4fNwLCwMttvhEI263QtVPQcbpfZZ3ts0hLsZGOpE6czNlid7CJ9MlyH8reXkpsf3YUY4w==} + engines: {node: '>=0.4.0'} + hasBin: true + + /adler-32@1.3.1: + resolution: {integrity: sha512-ynZ4w/nUUv5rrsR8UUGoe1VC9hZj6V5hU9Qw1HlMDJGEJw5S7TfTErWTjMys6M7vr0YWcPqs3qAr4ss0nDfP+A==} + engines: {node: '>=0.8'} + dev: false + + /ajv@6.12.6: + resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} + dependencies: + fast-deep-equal: 3.1.3 + fast-json-stable-stringify: 2.1.0 + json-schema-traverse: 0.4.1 + uri-js: 4.4.1 + + /ansi-regex@5.0.1: + resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} + engines: {node: '>=8'} + + /ansi-regex@6.0.1: + resolution: {integrity: sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==} + engines: {node: '>=12'} + dev: false + + /ansi-styles@3.2.1: + resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==} + engines: {node: '>=4'} + dependencies: + color-convert: 1.9.3 + dev: false + + /ansi-styles@4.3.0: + resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} + engines: {node: '>=8'} + dependencies: + color-convert: 2.0.1 + + /ansi-styles@6.2.1: + resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==} + engines: {node: '>=12'} + dev: false + + /any-promise@1.3.0: + resolution: {integrity: sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==} + dev: true + + /anymatch@3.1.3: + resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} + engines: {node: '>= 8'} + dependencies: + normalize-path: 3.0.0 + picomatch: 2.3.1 + dev: true + + /arg@5.0.2: + resolution: {integrity: sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==} + dev: true + + /argparse@2.0.1: + resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} + + /array-buffer-byte-length@1.0.0: + resolution: {integrity: sha512-LPuwb2P+NrQw3XhxGc36+XSvuBPopovXYTR9Ew++Du9Yb/bx5AzBfrIsBoj0EZUifjQU+sHL21sseZ3jerWO/A==} + dependencies: + call-bind: 1.0.5 + is-array-buffer: 3.0.2 + dev: true + + /array-find-index@1.0.2: + resolution: {integrity: sha512-M1HQyIXcBGtVywBt8WVdim+lrNaK7VHp99Qt5pSNziXznKHViIBbXWtfRTpEFpF/c4FdfxNAsCCwPp5phBYJtw==} + engines: {node: '>=0.10.0'} + dev: false + + /array-includes@3.1.7: + resolution: {integrity: sha512-dlcsNBIiWhPkHdOEEKnehA+RNUWDc4UqFtnIXU4uuYDPtA4LDkr7qip2p0VvFAEXNDr0yWZ9PJyIRiGjRLQzwQ==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.5 + define-properties: 1.2.1 + es-abstract: 1.22.3 + get-intrinsic: 1.2.2 + is-string: 1.0.7 + dev: true + + /array-union@2.1.0: + resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==} + engines: {node: '>=8'} + + /array.prototype.findlastindex@1.2.3: + resolution: {integrity: sha512-LzLoiOMAxvy+Gd3BAq3B7VeIgPdo+Q8hthvKtXybMvRV0jrXfJM/t8mw7nNlpEcVlVUnCnM2KSX4XU5HmpodOA==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.5 + define-properties: 1.2.1 + es-abstract: 1.22.3 + es-shim-unscopables: 1.0.2 + get-intrinsic: 1.2.2 + dev: true + + /array.prototype.flat@1.3.2: + resolution: {integrity: sha512-djYB+Zx2vLewY8RWlNCUdHjDXs2XOgm602S9E7P/UpHgfeHL00cRiIF+IN/G/aUJ7kGPb6yO/ErDI5V2s8iycA==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.5 + define-properties: 1.2.1 + es-abstract: 1.22.3 + es-shim-unscopables: 1.0.2 + dev: true + + /array.prototype.flatmap@1.3.2: + resolution: {integrity: sha512-Ewyx0c9PmpcsByhSW4r+9zDU7sGjFc86qf/kKtuSCRdhfbk0SNLLkaT5qvcHnRGgc5NP/ly/y+qkXkqONX54CQ==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.5 + define-properties: 1.2.1 + es-abstract: 1.22.3 + es-shim-unscopables: 1.0.2 + dev: true + + /arraybuffer.prototype.slice@1.0.2: + resolution: {integrity: sha512-yMBKppFur/fbHu9/6USUe03bZ4knMYiwFBcyiaXB8Go0qNehwX6inYPzK9U0NeQvGxKthcmHcaR8P5MStSRBAw==} + engines: {node: '>= 0.4'} + dependencies: + array-buffer-byte-length: 1.0.0 + call-bind: 1.0.5 + define-properties: 1.2.1 + es-abstract: 1.22.3 + get-intrinsic: 1.2.2 + is-array-buffer: 3.0.2 + is-shared-array-buffer: 1.0.2 + dev: true + + /asap@2.0.6: + resolution: {integrity: sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==} + dev: false + + /asynckit@0.4.0: + resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} + dev: false + + /autoprefixer@10.4.16(postcss@8.4.31): + resolution: {integrity: sha512-7vd3UC6xKp0HLfua5IjZlcXvGAGy7cBAXTg2lyQ/8WpNhd6SiZ8Be+xm3FyBSYJx5GKcpRCzBh7RH4/0dnY+uQ==} + engines: {node: ^10 || ^12 || >=14} + hasBin: true + peerDependencies: + postcss: ^8.1.0 + dependencies: + browserslist: 4.22.1 + caniuse-lite: 1.0.30001561 + fraction.js: 4.3.7 + normalize-range: 0.1.2 + picocolors: 1.0.0 + postcss: 8.4.31 + postcss-value-parser: 4.2.0 + dev: true + + /available-typed-arrays@1.0.5: + resolution: {integrity: sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==} + engines: {node: '>= 0.4'} + dev: true + + /axios@1.6.2: + resolution: {integrity: sha512-7i24Ri4pmDRfJTR7LDBhsOTtcm+9kjX5WiY1X3wIisx6G9So3pfMkEiU7emUBe46oceVImccTEM3k6C5dbVW8A==} + dependencies: + follow-redirects: 1.15.3 + form-data: 4.0.0 + proxy-from-env: 1.1.0 + transitivePeerDependencies: + - debug + dev: false + + /balanced-match@1.0.2: + resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} + + /big-integer@1.6.51: + resolution: {integrity: sha512-GPEid2Y9QU1Exl1rpO9B2IPJGHPSupF5GnVIP0blYvNOMer2bTvSWs1jGOUg04hTmu67nmLsQ9TBo1puaotBHg==} + engines: {node: '>=0.6'} + dev: true + + /binary-extensions@2.2.0: + resolution: {integrity: sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==} + engines: {node: '>=8'} + dev: true + + /boolbase@1.0.0: + resolution: {integrity: sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==} + + /bplist-parser@0.2.0: + resolution: {integrity: sha512-z0M+byMThzQmD9NILRniCUXYsYpjwnlO8N5uCFaCqIOpqRsJCrQL9NK3JsD67CN5a08nF5oIL2bD6loTdHOuKw==} + engines: {node: '>= 5.10.0'} + dependencies: + big-integer: 1.6.51 + dev: true + + /brace-expansion@1.1.11: + resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} + dependencies: + balanced-match: 1.0.2 + concat-map: 0.0.1 + + /brace-expansion@2.0.1: + resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==} + dependencies: + balanced-match: 1.0.2 + + /braces@3.0.2: + resolution: {integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==} + engines: {node: '>=8'} + dependencies: + fill-range: 7.0.1 + + /browserslist@4.22.1: + resolution: {integrity: sha512-FEVc202+2iuClEhZhrWy6ZiAcRLvNMyYcxZ8raemul1DYVOVdFsbqckWLdsixQZCpJlwe77Z3UTalE7jsjnKfQ==} + engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} + hasBin: true + dependencies: + caniuse-lite: 1.0.30001561 + electron-to-chromium: 1.4.581 + node-releases: 2.0.13 + update-browserslist-db: 1.0.13(browserslist@4.22.1) + dev: true + + /builtins@5.0.1: + resolution: {integrity: sha512-qwVpFEHNfhYJIzNRBvd2C1kyo6jz3ZSMPyyuR47OPdiKWlbYnZNyDWuyR175qDnAJLiCo5fBBqPb3RiXgWlkOQ==} + dependencies: + semver: 7.5.4 + dev: true + + /bundle-name@3.0.0: + resolution: {integrity: sha512-PKA4BeSvBpQKQ8iPOGCSiell+N8P+Tf1DlwqmYhpe2gAhKPHn8EYOxVT+ShuGmhg8lN8XiSlS80yiExKXrURlw==} + engines: {node: '>=12'} + dependencies: + run-applescript: 5.0.0 + dev: true + + /call-bind@1.0.5: + resolution: {integrity: sha512-C3nQxfFZxFRVoJoGKKI8y3MOEo129NQ+FgQ08iye+Mk4zNZZGdjfs06bVTr+DBSlA66Q2VEcMki/cUCP4SercQ==} + dependencies: + function-bind: 1.1.2 + get-intrinsic: 1.2.2 + set-function-length: 1.1.1 + dev: true + + /callsites@3.1.0: + resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} + engines: {node: '>=6'} + + /camelcase-css@2.0.1: + resolution: {integrity: sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==} + engines: {node: '>= 6'} + dev: true + + /can-use-dom@0.1.0: + resolution: {integrity: sha512-ceOhN1DL7Y4O6M0j9ICgmTYziV89WMd96SvSl0REd8PMgrY0B/WBOPoed5S1KUmJqXgUXh8gzSe6E3ae27upsQ==} + dev: false + + /caniuse-lite@1.0.30001561: + resolution: {integrity: sha512-NTt0DNoKe958Q0BE0j0c1V9jbUzhBxHIEJy7asmGrpE0yG63KTV7PLHPnK2E1O9RsQrQ081I3NLuXGS6zht3cw==} + dev: true + + /cfb@1.2.2: + resolution: {integrity: sha512-KfdUZsSOw19/ObEWasvBP/Ac4reZvAGauZhs6S/gqNhXhI7cKwvlH7ulj+dOEYnca4bm4SGo8C1bTAQvnTjgQA==} + engines: {node: '>=0.8'} + dependencies: + adler-32: 1.3.1 + crc-32: 1.2.2 + dev: false + + /chalk@2.4.2: + resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==} + engines: {node: '>=4'} + dependencies: + ansi-styles: 3.2.1 + escape-string-regexp: 1.0.5 + supports-color: 5.5.0 + dev: false + + /chalk@4.1.2: + resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} + engines: {node: '>=10'} + dependencies: + ansi-styles: 4.3.0 + supports-color: 7.2.0 + + /chart.js@4.4.0: + resolution: {integrity: sha512-vQEj6d+z0dcsKLlQvbKIMYFHd3t8W/7L2vfJIbYcfyPcRx92CsHqECpueN8qVGNlKyDcr5wBrYAYKnfu/9Q1hQ==} + engines: {pnpm: '>=7'} + dependencies: + '@kurkle/color': 0.3.2 + dev: false + + /chokidar@3.5.3: + resolution: {integrity: sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==} + engines: {node: '>= 8.10.0'} + dependencies: + anymatch: 3.1.3 + braces: 3.0.2 + glob-parent: 5.1.2 + is-binary-path: 2.1.0 + is-glob: 4.0.3 + normalize-path: 3.0.0 + readdirp: 3.6.0 + optionalDependencies: + fsevents: 2.3.3 + dev: true + + /ckeditor5@38.1.1: + resolution: {integrity: sha512-KE6H2WGLlhlI4F//AZn+fv52DhbwAeVv+ZeSIsa5gC81/3ZCzuYc3+IMur/70IBE9Gze8gKwFP9elh/TIaQ5Hw==} + engines: {node: '>=16.0.0', npm: '>=5.7.1'} + dependencies: + '@ckeditor/ckeditor5-clipboard': 38.1.1 + '@ckeditor/ckeditor5-core': 38.1.1 + '@ckeditor/ckeditor5-engine': 38.1.1 + '@ckeditor/ckeditor5-enter': 38.1.1 + '@ckeditor/ckeditor5-paragraph': 38.1.1 + '@ckeditor/ckeditor5-select-all': 38.1.1 + '@ckeditor/ckeditor5-typing': 38.1.1 + '@ckeditor/ckeditor5-ui': 38.1.1 + '@ckeditor/ckeditor5-undo': 38.1.1 + '@ckeditor/ckeditor5-upload': 38.1.1 + '@ckeditor/ckeditor5-utils': 38.1.1 + '@ckeditor/ckeditor5-watchdog': 38.1.1 + '@ckeditor/ckeditor5-widget': 38.1.1 + dev: false + + /codepage@1.15.0: + resolution: {integrity: sha512-3g6NUTPd/YtuuGrhMnOMRjFc+LJw/bnMp3+0r/Wcz3IXUuCosKRJvMphm5+Q+bvTVGcJJuRvVLuYba+WojaFaA==} + engines: {node: '>=0.8'} + dev: false + + /color-convert@1.9.3: + resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==} + dependencies: + color-name: 1.1.3 + dev: false + + /color-convert@2.0.1: + resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} + engines: {node: '>=7.0.0'} + dependencies: + color-name: 1.1.4 + + /color-name@1.1.3: + resolution: {integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==} + dev: false + + /color-name@1.1.4: + resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} + + /color-parse@1.4.2: + resolution: {integrity: sha512-RI7s49/8yqDj3fECFZjUI1Yi0z/Gq1py43oNJivAIIDSyJiOZLfYCRQEgn8HEVAj++PcRe8AnL2XF0fRJ3BTnA==} + dependencies: + color-name: 1.1.4 + dev: false + + /combined-stream@1.0.8: + resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==} + engines: {node: '>= 0.8'} + dependencies: + delayed-stream: 1.0.0 + dev: false + + /commander@10.0.1: + resolution: {integrity: sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==} + engines: {node: '>=14'} + dev: false + + /commander@4.1.1: + resolution: {integrity: sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==} + engines: {node: '>= 6'} + dev: true + + /commander@7.2.0: + resolution: {integrity: sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==} + engines: {node: '>= 10'} + dev: false + + /computeds@0.0.1: + resolution: {integrity: sha512-7CEBgcMjVmitjYo5q8JTJVra6X5mQ20uTThdK+0kR7UEaDrAWEQcRiBtWJzga4eRpP6afNwwLsX2SET2JhVB1Q==} + dev: true + + /concat-map@0.0.1: + resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} + + /config-chain@1.1.13: + resolution: {integrity: sha512-qj+f8APARXHrM0hraqXYb2/bOVSV4PvJQlNZ/DVj0QrmNM2q2euizkeuVckQ57J+W0mRH6Hvi+k50M4Jul2VRQ==} + dependencies: + ini: 1.3.8 + proto-list: 1.2.4 + dev: false + + /core-js@3.33.2: + resolution: {integrity: sha512-XeBzWI6QL3nJQiHmdzbAOiMYqjrb7hwU7A39Qhvd/POSa/t9E1AeZyEZx3fNvp/vtM8zXwhoL0FsiS0hD0pruQ==} + requiresBuild: true + dev: false + + /crc-32@1.2.2: + resolution: {integrity: sha512-ROmzCKrTnOwybPcJApAA6WBWij23HVfGVNKqqrZpuyZOHqK2CwHSvpGuyt/UNNvaIjEd8X5IFGp4Mh+Ie1IHJQ==} + engines: {node: '>=0.8'} + hasBin: true + dev: false + + /cross-spawn@7.0.3: + resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==} + engines: {node: '>= 8'} + dependencies: + path-key: 3.1.1 + shebang-command: 2.0.0 + which: 2.0.2 + + /css-select@5.1.0: + resolution: {integrity: sha512-nwoRF1rvRRnnCqqY7updORDsuqKzqYJ28+oSMaJMMgOauh3fvwHqMS7EZpIPqK8GL+g9mKxF1vP/ZjSeNjEVHg==} + dependencies: + boolbase: 1.0.0 + css-what: 6.1.0 + domhandler: 5.0.3 + domutils: 3.1.0 + nth-check: 2.1.1 + dev: false + + /css-tree@2.2.1: + resolution: {integrity: sha512-OA0mILzGc1kCOCSJerOeqDxDQ4HOh+G8NbOJFOTgOCzpw7fCBubk0fEyxp8AgOL/jvLgYA/uV0cMbe43ElF1JA==} + engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0, npm: '>=7.0.0'} + dependencies: + mdn-data: 2.0.28 + source-map-js: 1.0.2 + dev: false + + /css-tree@2.3.1: + resolution: {integrity: sha512-6Fv1DV/TYw//QF5IzQdqsNDjx/wc8TrMBZsqjL9eW01tWb7R7k/mq+/VXfJCl7SoD5emsJop9cOByJZfs8hYIw==} + engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0} + dependencies: + mdn-data: 2.0.30 + source-map-js: 1.0.2 + dev: false + + /css-what@6.1.0: + resolution: {integrity: sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==} + engines: {node: '>= 6'} + dev: false + + /cssesc@3.0.0: + resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==} + engines: {node: '>=4'} + hasBin: true + + /csso@5.0.5: + resolution: {integrity: sha512-0LrrStPOdJj+SPCCrGhzryycLjwcgUSHBtxNA8aIDxf0GLsRh1cKYhB00Gd1lDOS4yGH69+SNn13+TWbVHETFQ==} + engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0, npm: '>=7.0.0'} + dependencies: + css-tree: 2.2.1 + dev: false + + /csstype@3.1.2: + resolution: {integrity: sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ==} + + /dayjs@1.11.10: + resolution: {integrity: sha512-vjAczensTgRcqDERK0SR2XMwsF/tSvnvlv6VcF2GIhg6Sx4yOIt/irsr1RDJsKiIyBzJDpCoXiWWq28MqH2cnQ==} + dev: false + + /de-indent@1.0.2: + resolution: {integrity: sha512-e/1zu3xH5MQryN2zdVaF0OrdNLUbvWxzMbi+iNA6Bky7l1RoP8a2fIbRocyHclXt/arDrrR6lL3TqFD9pMQTsg==} + dev: true + + /debug@3.2.7: + resolution: {integrity: sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + dependencies: + ms: 2.1.3 + + /debug@4.3.4: + resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} + engines: {node: '>=6.0'} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + dependencies: + ms: 2.1.2 + + /debuglog@1.0.1: + resolution: {integrity: sha512-syBZ+rnAK3EgMsH2aYEOLUW7mZSY9Gb+0wUMCFsZvcmiz+HigA0LOcq/HoQqVuGG+EKykunc7QG2bzrponfaSw==} + deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info. + dev: false + + /deep-is@0.1.4: + resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} + + /default-browser-id@3.0.0: + resolution: {integrity: sha512-OZ1y3y0SqSICtE8DE4S8YOE9UZOJ8wO16fKWVP5J1Qz42kV9jcnMVFrEE/noXb/ss3Q4pZIH79kxofzyNNtUNA==} + engines: {node: '>=12'} + dependencies: + bplist-parser: 0.2.0 + untildify: 4.0.0 + dev: true + + /default-browser@4.0.0: + resolution: {integrity: sha512-wX5pXO1+BrhMkSbROFsyxUm0i/cJEScyNhA4PPxc41ICuv05ZZB/MX28s8aZx6xjmatvebIapF6hLEKEcpneUA==} + engines: {node: '>=14.16'} + dependencies: + bundle-name: 3.0.0 + default-browser-id: 3.0.0 + execa: 7.2.0 + titleize: 3.0.0 + dev: true + + /define-data-property@1.1.1: + resolution: {integrity: sha512-E7uGkTzkk1d0ByLeSc6ZsFS79Axg+m1P/VsgYsxHgiuc3tFSj+MjMIwe90FC4lOAZzNBdY7kkO2P2wKdsQ1vgQ==} + engines: {node: '>= 0.4'} + dependencies: + get-intrinsic: 1.2.2 + gopd: 1.0.1 + has-property-descriptors: 1.0.1 + dev: true + + /define-lazy-prop@3.0.0: + resolution: {integrity: sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg==} + engines: {node: '>=12'} + dev: true + + /define-properties@1.2.1: + resolution: {integrity: sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==} + engines: {node: '>= 0.4'} + dependencies: + define-data-property: 1.1.1 + has-property-descriptors: 1.0.1 + object-keys: 1.1.1 + dev: true + + /delayed-stream@1.0.0: + resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} + engines: {node: '>=0.4.0'} + dev: false + + /dezalgo@1.0.4: + resolution: {integrity: sha512-rXSP0bf+5n0Qonsb+SVVfNfIsimO4HEtmnIpPHY8Q1UCzKlQrDMfdobr8nJOOsRgWCyMRqeSBQzmWUMq7zvVig==} + dependencies: + asap: 2.0.6 + wrappy: 1.0.2 + dev: false + + /didyoumean@1.2.2: + resolution: {integrity: sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==} + dev: true + + /dir-glob@3.0.1: + resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} + engines: {node: '>=8'} + dependencies: + path-type: 4.0.0 + + /dlv@1.1.3: + resolution: {integrity: sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==} + dev: true + + /doctrine@2.1.0: + resolution: {integrity: sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==} + engines: {node: '>=0.10.0'} + dependencies: + esutils: 2.0.3 + dev: true + + /doctrine@3.0.0: + resolution: {integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==} + engines: {node: '>=6.0.0'} + dependencies: + esutils: 2.0.3 + + /dom-serializer@2.0.0: + resolution: {integrity: sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==} + dependencies: + domelementtype: 2.3.0 + domhandler: 5.0.3 + entities: 4.5.0 + dev: false + + /domelementtype@2.3.0: + resolution: {integrity: sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==} + dev: false + + /domhandler@5.0.3: + resolution: {integrity: sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==} + engines: {node: '>= 4'} + dependencies: + domelementtype: 2.3.0 + dev: false + + /domutils@3.1.0: + resolution: {integrity: sha512-H78uMmQtI2AhgDJjWeQmHwJJ2bLPD3GMmO7Zja/ZZh84wkm+4ut+IUnUdRa8uCGX88DiVx1j6FRe1XfxEgjEZA==} + dependencies: + dom-serializer: 2.0.0 + domelementtype: 2.3.0 + domhandler: 5.0.3 + dev: false + + /dropzone@6.0.0-beta.2: + resolution: {integrity: sha512-k44yLuFFhRk53M8zP71FaaNzJYIzr99SKmpbO/oZKNslDjNXQsBTdfLs+iONd0U0L94zzlFzRnFdqbLcs7h9fQ==} + dependencies: + '@swc/helpers': 0.2.14 + just-extend: 5.1.1 + dev: false + + /eastasianwidth@0.2.0: + resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} + dev: false + + /editorconfig@1.0.4: + resolution: {integrity: sha512-L9Qe08KWTlqYMVvMcTIvMAdl1cDUubzRNYL+WfA4bLDMHe4nemKkpmYzkznE1FwLKu0EEmy6obgQKzMJrg4x9Q==} + engines: {node: '>=14'} + hasBin: true + dependencies: + '@one-ini/wasm': 0.1.1 + commander: 10.0.1 + minimatch: 9.0.1 + semver: 7.5.4 + dev: false + + /electron-to-chromium@1.4.581: + resolution: {integrity: sha512-6uhqWBIapTJUxgPTCHH9sqdbxIMPt7oXl0VcAL1kOtlU6aECdcMncCrX5Z7sHQ/invtrC9jUQUef7+HhO8vVFw==} + dev: true + + /emoji-regex@8.0.0: + resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} + dev: false + + /emoji-regex@9.2.2: + resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} + dev: false + + /entities@4.5.0: + resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==} + engines: {node: '>=0.12'} + dev: false + + /es-abstract@1.22.3: + resolution: {integrity: sha512-eiiY8HQeYfYH2Con2berK+To6GrK2RxbPawDkGq4UiCQQfZHb6wX9qQqkbpPqaxQFcl8d9QzZqo0tGE0VcrdwA==} + engines: {node: '>= 0.4'} + dependencies: + array-buffer-byte-length: 1.0.0 + arraybuffer.prototype.slice: 1.0.2 + available-typed-arrays: 1.0.5 + call-bind: 1.0.5 + es-set-tostringtag: 2.0.2 + es-to-primitive: 1.2.1 + function.prototype.name: 1.1.6 + get-intrinsic: 1.2.2 + get-symbol-description: 1.0.0 + globalthis: 1.0.3 + gopd: 1.0.1 + has-property-descriptors: 1.0.1 + has-proto: 1.0.1 + has-symbols: 1.0.3 + hasown: 2.0.0 + internal-slot: 1.0.6 + is-array-buffer: 3.0.2 + is-callable: 1.2.7 + is-negative-zero: 2.0.2 + is-regex: 1.1.4 + is-shared-array-buffer: 1.0.2 + is-string: 1.0.7 + is-typed-array: 1.1.12 + is-weakref: 1.0.2 + object-inspect: 1.13.1 + object-keys: 1.1.1 + object.assign: 4.1.4 + regexp.prototype.flags: 1.5.1 + safe-array-concat: 1.0.1 + safe-regex-test: 1.0.0 + string.prototype.trim: 1.2.8 + string.prototype.trimend: 1.0.7 + string.prototype.trimstart: 1.0.7 + typed-array-buffer: 1.0.0 + typed-array-byte-length: 1.0.0 + typed-array-byte-offset: 1.0.0 + typed-array-length: 1.0.4 + unbox-primitive: 1.0.2 + which-typed-array: 1.1.13 + dev: true + + /es-set-tostringtag@2.0.2: + resolution: {integrity: sha512-BuDyupZt65P9D2D2vA/zqcI3G5xRsklm5N3xCwuiy+/vKy8i0ifdsQP1sLgO4tZDSCaQUSnmC48khknGMV3D2Q==} + engines: {node: '>= 0.4'} + dependencies: + get-intrinsic: 1.2.2 + has-tostringtag: 1.0.0 + hasown: 2.0.0 + dev: true + + /es-shim-unscopables@1.0.2: + resolution: {integrity: sha512-J3yBRXCzDu4ULnQwxyToo/OjdMx6akgVC7K6few0a7F/0wLtmKKN7I73AH5T2836UuXRqN7Qg+IIUw/+YJksRw==} + dependencies: + hasown: 2.0.0 + dev: true + + /es-to-primitive@1.2.1: + resolution: {integrity: sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==} + engines: {node: '>= 0.4'} + dependencies: + is-callable: 1.2.7 + is-date-object: 1.0.5 + is-symbol: 1.0.4 + dev: true + + /esbuild@0.18.20: + resolution: {integrity: sha512-ceqxoedUrcayh7Y7ZX6NdbbDzGROiyVBgC4PriJThBKSVPWnnFHZAkfI1lJT8QFkOwH4qOS2SJkS4wvpGl8BpA==} + engines: {node: '>=12'} + hasBin: true + requiresBuild: true + optionalDependencies: + '@esbuild/android-arm': 0.18.20 + '@esbuild/android-arm64': 0.18.20 + '@esbuild/android-x64': 0.18.20 + '@esbuild/darwin-arm64': 0.18.20 + '@esbuild/darwin-x64': 0.18.20 + '@esbuild/freebsd-arm64': 0.18.20 + '@esbuild/freebsd-x64': 0.18.20 + '@esbuild/linux-arm': 0.18.20 + '@esbuild/linux-arm64': 0.18.20 + '@esbuild/linux-ia32': 0.18.20 + '@esbuild/linux-loong64': 0.18.20 + '@esbuild/linux-mips64el': 0.18.20 + '@esbuild/linux-ppc64': 0.18.20 + '@esbuild/linux-riscv64': 0.18.20 + '@esbuild/linux-s390x': 0.18.20 + '@esbuild/linux-x64': 0.18.20 + '@esbuild/netbsd-x64': 0.18.20 + '@esbuild/openbsd-x64': 0.18.20 + '@esbuild/sunos-x64': 0.18.20 + '@esbuild/win32-arm64': 0.18.20 + '@esbuild/win32-ia32': 0.18.20 + '@esbuild/win32-x64': 0.18.20 + dev: true + + /escalade@3.1.1: + resolution: {integrity: sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==} + engines: {node: '>=6'} + dev: true + + /escape-string-regexp@1.0.5: + resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==} + engines: {node: '>=0.8.0'} + dev: false + + /escape-string-regexp@4.0.0: + resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} + engines: {node: '>=10'} + + /eslint-config-prettier@9.0.0(eslint@8.53.0): + resolution: {integrity: sha512-IcJsTkJae2S35pRsRAwoCE+925rJJStOdkKnLVgtE+tEpqU0EVVM7OqrwxqgptKdX29NUwC82I5pXsGFIgSevw==} + hasBin: true + peerDependencies: + eslint: '>=7.0.0' + dependencies: + eslint: 8.53.0 + dev: true + + /eslint-config-standard@17.1.0(eslint-plugin-import@2.29.0)(eslint-plugin-n@15.7.0)(eslint-plugin-promise@6.1.1)(eslint@8.53.0): + resolution: {integrity: sha512-IwHwmaBNtDK4zDHQukFDW5u/aTb8+meQWZvNFWkiGmbWjD6bqyuSSBxxXKkCftCUzc1zwCH2m/baCNDLGmuO5Q==} + engines: {node: '>=12.0.0'} + peerDependencies: + eslint: ^8.0.1 + eslint-plugin-import: ^2.25.2 + eslint-plugin-n: '^15.0.0 || ^16.0.0 ' + eslint-plugin-promise: ^6.0.0 + dependencies: + eslint: 8.53.0 + eslint-plugin-import: 2.29.0(@typescript-eslint/parser@6.10.0)(eslint@8.53.0) + eslint-plugin-n: 15.7.0(eslint@8.53.0) + eslint-plugin-promise: 6.1.1(eslint@8.53.0) + dev: true + + /eslint-import-resolver-custom-alias@1.3.2(eslint-plugin-import@2.29.0): + resolution: {integrity: sha512-wBPcZA2k6/IXaT8FsLMyiyVSG6WVEuaYIAbeKLXeGwr523BmeB9lKAAoLJWSqp3txsnU4gpkgD2x1q6K8k0uDQ==} + peerDependencies: + eslint-plugin-import: '>=2.2.0' + dependencies: + eslint-plugin-import: 2.29.0(@typescript-eslint/parser@6.10.0)(eslint@8.53.0) + glob-parent: 6.0.2 + resolve: 1.22.8 + dev: true + + /eslint-import-resolver-node@0.3.9: + resolution: {integrity: sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==} + dependencies: + debug: 3.2.7 + is-core-module: 2.13.1 + resolve: 1.22.8 + transitivePeerDependencies: + - supports-color + dev: true + + /eslint-module-utils@2.8.0(@typescript-eslint/parser@6.10.0)(eslint-import-resolver-node@0.3.9)(eslint@8.53.0): + resolution: {integrity: sha512-aWajIYfsqCKRDgUfjEXNN/JlrzauMuSEy5sbd7WXbtW3EH6A6MpwEh42c7qD+MqQo9QMJ6fWLAeIJynx0g6OAw==} + engines: {node: '>=4'} + peerDependencies: + '@typescript-eslint/parser': '*' + eslint: '*' + eslint-import-resolver-node: '*' + eslint-import-resolver-typescript: '*' + eslint-import-resolver-webpack: '*' + peerDependenciesMeta: + '@typescript-eslint/parser': + optional: true + eslint: + optional: true + eslint-import-resolver-node: + optional: true + eslint-import-resolver-typescript: + optional: true + eslint-import-resolver-webpack: + optional: true + dependencies: + '@typescript-eslint/parser': 6.10.0(eslint@8.53.0)(typescript@5.2.2) + debug: 3.2.7 + eslint: 8.53.0 + eslint-import-resolver-node: 0.3.9 + transitivePeerDependencies: + - supports-color + dev: true + + /eslint-plugin-es@4.1.0(eslint@8.53.0): + resolution: {integrity: sha512-GILhQTnjYE2WorX5Jyi5i4dz5ALWxBIdQECVQavL6s7cI76IZTDWleTHkxz/QT3kvcs2QlGHvKLYsSlPOlPXnQ==} + engines: {node: '>=8.10.0'} + peerDependencies: + eslint: '>=4.19.1' + dependencies: + eslint: 8.53.0 + eslint-utils: 2.1.0 + regexpp: 3.2.0 + dev: true + + /eslint-plugin-import@2.29.0(@typescript-eslint/parser@6.10.0)(eslint@8.53.0): + resolution: {integrity: sha512-QPOO5NO6Odv5lpoTkddtutccQjysJuFxoPS7fAHO+9m9udNHvTCPSAMW9zGAYj8lAIdr40I8yPCdUYrncXtrwg==} + engines: {node: '>=4'} + peerDependencies: + '@typescript-eslint/parser': '*' + eslint: ^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 + peerDependenciesMeta: + '@typescript-eslint/parser': + optional: true + dependencies: + '@typescript-eslint/parser': 6.10.0(eslint@8.53.0)(typescript@5.2.2) + array-includes: 3.1.7 + array.prototype.findlastindex: 1.2.3 + array.prototype.flat: 1.3.2 + array.prototype.flatmap: 1.3.2 + debug: 3.2.7 + doctrine: 2.1.0 + eslint: 8.53.0 + eslint-import-resolver-node: 0.3.9 + eslint-module-utils: 2.8.0(@typescript-eslint/parser@6.10.0)(eslint-import-resolver-node@0.3.9)(eslint@8.53.0) + hasown: 2.0.0 + is-core-module: 2.13.1 + is-glob: 4.0.3 + minimatch: 3.1.2 + object.fromentries: 2.0.7 + object.groupby: 1.0.1 + object.values: 1.1.7 + semver: 6.3.1 + tsconfig-paths: 3.14.2 + transitivePeerDependencies: + - eslint-import-resolver-typescript + - eslint-import-resolver-webpack + - supports-color + dev: true + + /eslint-plugin-n@15.7.0(eslint@8.53.0): + resolution: {integrity: sha512-jDex9s7D/Qial8AGVIHq4W7NswpUD5DPDL2RH8Lzd9EloWUuvUkHfv4FRLMipH5q2UtyurorBkPeNi1wVWNh3Q==} + engines: {node: '>=12.22.0'} + peerDependencies: + eslint: '>=7.0.0' + dependencies: + builtins: 5.0.1 + eslint: 8.53.0 + eslint-plugin-es: 4.1.0(eslint@8.53.0) + eslint-utils: 3.0.0(eslint@8.53.0) + ignore: 5.2.4 + is-core-module: 2.13.1 + minimatch: 3.1.2 + resolve: 1.22.8 + semver: 7.5.4 + dev: true + + /eslint-plugin-prettier@5.0.1(eslint-config-prettier@9.0.0)(eslint@8.53.0)(prettier@3.1.0): + resolution: {integrity: sha512-m3u5RnR56asrwV/lDC4GHorlW75DsFfmUcjfCYylTUs85dBRnB7VM6xG8eCMJdeDRnppzmxZVf1GEPJvl1JmNg==} + engines: {node: ^14.18.0 || >=16.0.0} + peerDependencies: + '@types/eslint': '>=8.0.0' + eslint: '>=8.0.0' + eslint-config-prettier: '*' + prettier: '>=3.0.0' + peerDependenciesMeta: + '@types/eslint': + optional: true + eslint-config-prettier: + optional: true + dependencies: + eslint: 8.53.0 + eslint-config-prettier: 9.0.0(eslint@8.53.0) + prettier: 3.1.0 + prettier-linter-helpers: 1.0.0 + synckit: 0.8.5 + dev: true + + /eslint-plugin-promise@6.1.1(eslint@8.53.0): + resolution: {integrity: sha512-tjqWDwVZQo7UIPMeDReOpUgHCmCiH+ePnVT+5zVapL0uuHnegBUs2smM13CzOs2Xb5+MHMRFTs9v24yjba4Oig==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^7.0.0 || ^8.0.0 + dependencies: + eslint: 8.53.0 + dev: true + + /eslint-plugin-vue@9.18.1(eslint@8.53.0): + resolution: {integrity: sha512-7hZFlrEgg9NIzuVik2I9xSnJA5RsmOfueYgsUGUokEDLJ1LHtxO0Pl4duje1BriZ/jDWb+44tcIlC3yi0tdlZg==} + engines: {node: ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^6.2.0 || ^7.0.0 || ^8.0.0 + dependencies: + '@eslint-community/eslint-utils': 4.4.0(eslint@8.53.0) + eslint: 8.53.0 + natural-compare: 1.4.0 + nth-check: 2.1.1 + postcss-selector-parser: 6.0.13 + semver: 7.5.4 + vue-eslint-parser: 9.3.2(eslint@8.53.0) + xml-name-validator: 4.0.0 + transitivePeerDependencies: + - supports-color + + /eslint-scope@7.2.2: + resolution: {integrity: sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dependencies: + esrecurse: 4.3.0 + estraverse: 5.3.0 + + /eslint-utils@2.1.0: + resolution: {integrity: sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==} + engines: {node: '>=6'} + dependencies: + eslint-visitor-keys: 1.3.0 + dev: true + + /eslint-utils@3.0.0(eslint@8.53.0): + resolution: {integrity: sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==} + engines: {node: ^10.0.0 || ^12.0.0 || >= 14.0.0} + peerDependencies: + eslint: '>=5' + dependencies: + eslint: 8.53.0 + eslint-visitor-keys: 2.1.0 + dev: true + + /eslint-visitor-keys@1.3.0: + resolution: {integrity: sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==} + engines: {node: '>=4'} + dev: true + + /eslint-visitor-keys@2.1.0: + resolution: {integrity: sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==} + engines: {node: '>=10'} + dev: true + + /eslint-visitor-keys@3.4.3: + resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + + /eslint@8.53.0: + resolution: {integrity: sha512-N4VuiPjXDUa4xVeV/GC/RV3hQW9Nw+Y463lkWaKKXKYMvmRiRDAtfpuPFLN+E1/6ZhyR8J2ig+eVREnYgUsiag==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + hasBin: true + dependencies: + '@eslint-community/eslint-utils': 4.4.0(eslint@8.53.0) + '@eslint-community/regexpp': 4.10.0 + '@eslint/eslintrc': 2.1.3 + '@eslint/js': 8.53.0 + '@humanwhocodes/config-array': 0.11.13 + '@humanwhocodes/module-importer': 1.0.1 + '@nodelib/fs.walk': 1.2.8 + '@ungap/structured-clone': 1.2.0 + ajv: 6.12.6 + chalk: 4.1.2 + cross-spawn: 7.0.3 + debug: 4.3.4 + doctrine: 3.0.0 + escape-string-regexp: 4.0.0 + eslint-scope: 7.2.2 + eslint-visitor-keys: 3.4.3 + espree: 9.6.1 + esquery: 1.5.0 + esutils: 2.0.3 + fast-deep-equal: 3.1.3 + file-entry-cache: 6.0.1 + find-up: 5.0.0 + glob-parent: 6.0.2 + globals: 13.23.0 + graphemer: 1.4.0 + ignore: 5.2.4 + imurmurhash: 0.1.4 + is-glob: 4.0.3 + is-path-inside: 3.0.3 + js-yaml: 4.1.0 + json-stable-stringify-without-jsonify: 1.0.1 + levn: 0.4.1 + lodash.merge: 4.6.2 + minimatch: 3.1.2 + natural-compare: 1.4.0 + optionator: 0.9.3 + strip-ansi: 6.0.1 + text-table: 0.2.0 + transitivePeerDependencies: + - supports-color + + /espree@9.6.1: + resolution: {integrity: sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + dependencies: + acorn: 8.11.2 + acorn-jsx: 5.3.2(acorn@8.11.2) + eslint-visitor-keys: 3.4.3 + + /esquery@1.5.0: + resolution: {integrity: sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==} + engines: {node: '>=0.10'} + dependencies: + estraverse: 5.3.0 + + /esrecurse@4.3.0: + resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} + engines: {node: '>=4.0'} + dependencies: + estraverse: 5.3.0 + + /estraverse@5.3.0: + resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} + engines: {node: '>=4.0'} + + /estree-walker@2.0.2: + resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==} + + /esutils@2.0.3: + resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} + engines: {node: '>=0.10.0'} + + /execa@5.1.1: + resolution: {integrity: sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==} + engines: {node: '>=10'} + dependencies: + cross-spawn: 7.0.3 + get-stream: 6.0.1 + human-signals: 2.1.0 + is-stream: 2.0.1 + merge-stream: 2.0.0 + npm-run-path: 4.0.1 + onetime: 5.1.2 + signal-exit: 3.0.7 + strip-final-newline: 2.0.0 + dev: true + + /execa@7.2.0: + resolution: {integrity: sha512-UduyVP7TLB5IcAQl+OzLyLcS/l32W/GLg+AhHJ+ow40FOk2U3SAllPwR44v4vmdFwIWqpdwxxpQbF1n5ta9seA==} + engines: {node: ^14.18.0 || ^16.14.0 || >=18.0.0} + dependencies: + cross-spawn: 7.0.3 + get-stream: 6.0.1 + human-signals: 4.3.1 + is-stream: 3.0.0 + merge-stream: 2.0.0 + npm-run-path: 5.1.0 + onetime: 6.0.0 + signal-exit: 3.0.7 + strip-final-newline: 3.0.0 + dev: true + + /fast-deep-equal@3.1.3: + resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} + + /fast-diff@1.3.0: + resolution: {integrity: sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==} + dev: true + + /fast-glob@3.3.2: + resolution: {integrity: sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==} + engines: {node: '>=8.6.0'} + dependencies: + '@nodelib/fs.stat': 2.0.5 + '@nodelib/fs.walk': 1.2.8 + glob-parent: 5.1.2 + merge2: 1.4.1 + micromatch: 4.0.5 + + /fast-json-stable-stringify@2.1.0: + resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} + + /fast-levenshtein@2.0.6: + resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} + + /fastq@1.15.0: + resolution: {integrity: sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==} + dependencies: + reusify: 1.0.4 + + /file-entry-cache@6.0.1: + resolution: {integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==} + engines: {node: ^10.12.0 || >=12.0.0} + dependencies: + flat-cache: 3.2.0 + + /fill-range@7.0.1: + resolution: {integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==} + engines: {node: '>=8'} + dependencies: + to-regex-range: 5.0.1 + + /find-up@5.0.0: + resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} + engines: {node: '>=10'} + dependencies: + locate-path: 6.0.0 + path-exists: 4.0.0 + + /flat-cache@3.2.0: + resolution: {integrity: sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==} + engines: {node: ^10.12.0 || >=12.0.0} + dependencies: + flatted: 3.2.9 + keyv: 4.5.4 + rimraf: 3.0.2 + + /flat@5.0.2: + resolution: {integrity: sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==} + hasBin: true + dev: false + + /flatted@3.2.9: + resolution: {integrity: sha512-36yxDn5H7OFZQla0/jFJmbIKTdZAQHngCedGxiMmpNfEZM0sdEeT+WczLQrjK6D7o2aiyLYDnkw0R3JK0Qv1RQ==} + + /follow-redirects@1.15.3: + resolution: {integrity: sha512-1VzOtuEM8pC9SFU1E+8KfTjZyMztRsgEfwQl44z8A25uy13jSzTj6dyK2Df52iV0vgHCfBwLhDWevLn95w5v6Q==} + engines: {node: '>=4.0'} + peerDependencies: + debug: '*' + peerDependenciesMeta: + debug: + optional: true + dev: false + + /for-each@0.3.3: + resolution: {integrity: sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==} + dependencies: + is-callable: 1.2.7 + dev: true + + /foreground-child@3.1.1: + resolution: {integrity: sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==} + engines: {node: '>=14'} + dependencies: + cross-spawn: 7.0.3 + signal-exit: 4.1.0 + dev: false + + /form-data@4.0.0: + resolution: {integrity: sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==} + engines: {node: '>= 6'} + dependencies: + asynckit: 0.4.0 + combined-stream: 1.0.8 + mime-types: 2.1.35 + dev: false + + /frac@1.1.2: + resolution: {integrity: sha512-w/XBfkibaTl3YDqASwfDUqkna4Z2p9cFSr1aHDt0WoMTECnRfBOv2WArlZILlqgWlmdIlALXGpM2AOhEk5W3IA==} + engines: {node: '>=0.8'} + dev: false + + /fraction.js@4.3.7: + resolution: {integrity: sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==} + dev: true + + /fs.realpath@1.0.0: + resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} + + /fsevents@2.3.3: + resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} + engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} + os: [darwin] + requiresBuild: true + dev: true + optional: true + + /function-bind@1.1.2: + resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} + + /function.prototype.name@1.1.6: + resolution: {integrity: sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.5 + define-properties: 1.2.1 + es-abstract: 1.22.3 + functions-have-names: 1.2.3 + dev: true + + /functions-have-names@1.2.3: + resolution: {integrity: sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==} + dev: true + + /get-intrinsic@1.2.2: + resolution: {integrity: sha512-0gSo4ml/0j98Y3lngkFEot/zhiCeWsbYIlZ+uZOVgzLyLaUw7wxUL+nCTP0XJvJg1AXulJRI3UJi8GsbDuxdGA==} + dependencies: + function-bind: 1.1.2 + has-proto: 1.0.1 + has-symbols: 1.0.3 + hasown: 2.0.0 + dev: true + + /get-stream@6.0.1: + resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==} + engines: {node: '>=10'} + dev: true + + /get-symbol-description@1.0.0: + resolution: {integrity: sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.5 + get-intrinsic: 1.2.2 + dev: true + + /glob-parent@5.1.2: + resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} + engines: {node: '>= 6'} + dependencies: + is-glob: 4.0.3 + + /glob-parent@6.0.2: + resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} + engines: {node: '>=10.13.0'} + dependencies: + is-glob: 4.0.3 + + /glob@10.3.10: + resolution: {integrity: sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g==} + engines: {node: '>=16 || 14 >=14.17'} + hasBin: true + dependencies: + foreground-child: 3.1.1 + jackspeak: 2.3.6 + minimatch: 9.0.3 + minipass: 7.0.4 + path-scurry: 1.10.1 + dev: false + + /glob@7.1.6: + resolution: {integrity: sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==} + dependencies: + fs.realpath: 1.0.0 + inflight: 1.0.6 + inherits: 2.0.4 + minimatch: 3.1.2 + once: 1.4.0 + path-is-absolute: 1.0.1 + dev: true + + /glob@7.2.3: + resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} + dependencies: + fs.realpath: 1.0.0 + inflight: 1.0.6 + inherits: 2.0.4 + minimatch: 3.1.2 + once: 1.4.0 + path-is-absolute: 1.0.1 + + /globals@13.23.0: + resolution: {integrity: sha512-XAmF0RjlrjY23MA51q3HltdlGxUpXPvg0GioKiD9X6HD28iMjo2dKC8Vqwm7lne4GNr78+RHTfliktR6ZH09wA==} + engines: {node: '>=8'} + dependencies: + type-fest: 0.20.2 + + /globalthis@1.0.3: + resolution: {integrity: sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==} + engines: {node: '>= 0.4'} + dependencies: + define-properties: 1.2.1 + dev: true + + /globby@11.1.0: + resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==} + engines: {node: '>=10'} + dependencies: + array-union: 2.1.0 + dir-glob: 3.0.1 + fast-glob: 3.3.2 + ignore: 5.2.4 + merge2: 1.4.1 + slash: 3.0.0 + + /gopd@1.0.1: + resolution: {integrity: sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==} + dependencies: + get-intrinsic: 1.2.2 + dev: true + + /graceful-fs@4.2.11: + resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} + dev: false + + /graphemer@1.4.0: + resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==} + + /has-bigints@1.0.2: + resolution: {integrity: sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==} + dev: true + + /has-flag@3.0.0: + resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==} + engines: {node: '>=4'} + dev: false + + /has-flag@4.0.0: + resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} + engines: {node: '>=8'} + + /has-property-descriptors@1.0.1: + resolution: {integrity: sha512-VsX8eaIewvas0xnvinAe9bw4WfIeODpGYikiWYLH+dma0Jw6KHYqWiWfhQlgOVK8D6PvjubK5Uc4P0iIhIcNVg==} + dependencies: + get-intrinsic: 1.2.2 + dev: true + + /has-proto@1.0.1: + resolution: {integrity: sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==} + engines: {node: '>= 0.4'} + dev: true + + /has-symbols@1.0.3: + resolution: {integrity: sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==} + engines: {node: '>= 0.4'} + dev: true + + /has-tostringtag@1.0.0: + resolution: {integrity: sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==} + engines: {node: '>= 0.4'} + dependencies: + has-symbols: 1.0.3 + dev: true + + /hasown@2.0.0: + resolution: {integrity: sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==} + engines: {node: '>= 0.4'} + dependencies: + function-bind: 1.1.2 + + /he@1.2.0: + resolution: {integrity: sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==} + hasBin: true + dev: true + + /highlight.js@11.9.0: + resolution: {integrity: sha512-fJ7cW7fQGCYAkgv4CPfwFHrfd/cLS4Hau96JuJ+ZTOWhjnhoeN1ub1tFmALm/+lW5z4WCAuAV9bm05AP0mS6Gw==} + engines: {node: '>=12.0.0'} + dev: false + + /hosted-git-info@2.8.9: + resolution: {integrity: sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==} + dev: false + + /human-signals@2.1.0: + resolution: {integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==} + engines: {node: '>=10.17.0'} + dev: true + + /human-signals@4.3.1: + resolution: {integrity: sha512-nZXjEF2nbo7lIw3mgYjItAfgQXog3OjJogSbKa2CQIIvSGWcKgeJnQlNXip6NglNzYH45nSRiEVimMvYL8DDqQ==} + engines: {node: '>=14.18.0'} + dev: true + + /ignore@5.2.4: + resolution: {integrity: sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==} + engines: {node: '>= 4'} + + /import-fresh@3.3.0: + resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==} + engines: {node: '>=6'} + dependencies: + parent-module: 1.0.1 + resolve-from: 4.0.0 + + /imurmurhash@0.1.4: + resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} + engines: {node: '>=0.8.19'} + + /inflight@1.0.6: + resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} + dependencies: + once: 1.4.0 + wrappy: 1.0.2 + + /inherits@2.0.3: + resolution: {integrity: sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==} + dev: true + + /inherits@2.0.4: + resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} + + /ini@1.3.8: + resolution: {integrity: sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==} + dev: false + + /internal-slot@1.0.6: + resolution: {integrity: sha512-Xj6dv+PsbtwyPpEflsejS+oIZxmMlV44zAhG479uYu89MsjcYOhCFnNyKrkJrihbsiasQyY0afoCl/9BLR65bg==} + engines: {node: '>= 0.4'} + dependencies: + get-intrinsic: 1.2.2 + hasown: 2.0.0 + side-channel: 1.0.4 + dev: true + + /is-array-buffer@3.0.2: + resolution: {integrity: sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w==} + dependencies: + call-bind: 1.0.5 + get-intrinsic: 1.2.2 + is-typed-array: 1.1.12 + dev: true + + /is-bigint@1.0.4: + resolution: {integrity: sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==} + dependencies: + has-bigints: 1.0.2 + dev: true + + /is-binary-path@2.1.0: + resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} + engines: {node: '>=8'} + dependencies: + binary-extensions: 2.2.0 + dev: true + + /is-boolean-object@1.1.2: + resolution: {integrity: sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.5 + has-tostringtag: 1.0.0 + dev: true + + /is-callable@1.2.7: + resolution: {integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==} + engines: {node: '>= 0.4'} + dev: true + + /is-core-module@2.13.1: + resolution: {integrity: sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==} + dependencies: + hasown: 2.0.0 + + /is-date-object@1.0.5: + resolution: {integrity: sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==} + engines: {node: '>= 0.4'} + dependencies: + has-tostringtag: 1.0.0 + dev: true + + /is-docker@2.2.1: + resolution: {integrity: sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==} + engines: {node: '>=8'} + hasBin: true + dev: true + + /is-docker@3.0.0: + resolution: {integrity: sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + hasBin: true + dev: true + + /is-extglob@2.1.1: + resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} + engines: {node: '>=0.10.0'} + + /is-fullwidth-code-point@3.0.0: + resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} + engines: {node: '>=8'} + dev: false + + /is-glob@4.0.3: + resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} + engines: {node: '>=0.10.0'} + dependencies: + is-extglob: 2.1.1 + + /is-inside-container@1.0.0: + resolution: {integrity: sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA==} + engines: {node: '>=14.16'} + hasBin: true + dependencies: + is-docker: 3.0.0 + dev: true + + /is-negative-zero@2.0.2: + resolution: {integrity: sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==} + engines: {node: '>= 0.4'} + dev: true + + /is-number-object@1.0.7: + resolution: {integrity: sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==} + engines: {node: '>= 0.4'} + dependencies: + has-tostringtag: 1.0.0 + dev: true + + /is-number@7.0.0: + resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} + engines: {node: '>=0.12.0'} + + /is-path-inside@3.0.3: + resolution: {integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==} + engines: {node: '>=8'} + + /is-regex@1.1.4: + resolution: {integrity: sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.5 + has-tostringtag: 1.0.0 + dev: true + + /is-shared-array-buffer@1.0.2: + resolution: {integrity: sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==} + dependencies: + call-bind: 1.0.5 + dev: true + + /is-stream@2.0.1: + resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==} + engines: {node: '>=8'} + dev: true + + /is-stream@3.0.0: + resolution: {integrity: sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + dev: true + + /is-string@1.0.7: + resolution: {integrity: sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==} + engines: {node: '>= 0.4'} + dependencies: + has-tostringtag: 1.0.0 + dev: true + + /is-symbol@1.0.4: + resolution: {integrity: sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==} + engines: {node: '>= 0.4'} + dependencies: + has-symbols: 1.0.3 + dev: true + + /is-typed-array@1.1.12: + resolution: {integrity: sha512-Z14TF2JNG8Lss5/HMqt0//T9JeHXttXy5pH/DBU4vi98ozO2btxzq9MwYDZYnKwU8nRsz/+GVFVRDq3DkVuSPg==} + engines: {node: '>= 0.4'} + dependencies: + which-typed-array: 1.1.13 + dev: true + + /is-weakref@1.0.2: + resolution: {integrity: sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==} + dependencies: + call-bind: 1.0.5 + dev: true + + /is-wsl@2.2.0: + resolution: {integrity: sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==} + engines: {node: '>=8'} + dependencies: + is-docker: 2.2.1 + dev: true + + /isarray@2.0.5: + resolution: {integrity: sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==} + dev: true + + /isexe@2.0.0: + resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} + + /jackspeak@2.3.6: + resolution: {integrity: sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ==} + engines: {node: '>=14'} + dependencies: + '@isaacs/cliui': 8.0.2 + optionalDependencies: + '@pkgjs/parseargs': 0.11.0 + dev: false + + /jiti@1.21.0: + resolution: {integrity: sha512-gFqAIbuKyyso/3G2qhiO2OM6shY6EPP/R0+mkDbyspxKazh8BXDC5FiFsUjlczgdNz/vfra0da2y+aHrusLG/Q==} + hasBin: true + dev: true + + /js-beautify@1.14.11: + resolution: {integrity: sha512-rPogWqAfoYh1Ryqqh2agUpVfbxAhbjuN1SmU86dskQUKouRiggUTCO4+2ym9UPXllc2WAp0J+T5qxn7Um3lCdw==} + engines: {node: '>=14'} + hasBin: true + dependencies: + config-chain: 1.1.13 + editorconfig: 1.0.4 + glob: 10.3.10 + nopt: 7.2.0 + dev: false + + /js-yaml@4.1.0: + resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} + hasBin: true + dependencies: + argparse: 2.0.1 + + /json-buffer@3.0.1: + resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==} + + /json-parse-even-better-errors@2.3.1: + resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==} + dev: false + + /json-schema-traverse@0.4.1: + resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} + + /json-stable-stringify-without-jsonify@1.0.1: + resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} + + /json5@1.0.2: + resolution: {integrity: sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==} + hasBin: true + dependencies: + minimist: 1.2.8 + dev: true + + /jsonc-parser@3.2.0: + resolution: {integrity: sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==} + dev: false + + /just-extend@5.1.1: + resolution: {integrity: sha512-b+z6yF1d4EOyDgylzQo5IminlUmzSeqR1hs/bzjBNjuGras4FXq/6TrzjxfN0j+TmI0ltJzTNlqXUMCniciwKQ==} + dev: false + + /keyv@4.5.4: + resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==} + dependencies: + json-buffer: 3.0.1 + + /leaflet.markercluster@1.5.3(leaflet@1.9.4): + resolution: {integrity: sha512-vPTw/Bndq7eQHjLBVlWpnGeLa3t+3zGiuM7fJwCkiMFq+nmRuG3RI3f7f4N4TDX7T4NpbAXpR2+NTRSEGfCSeA==} + peerDependencies: + leaflet: ^1.3.1 + dependencies: + leaflet: 1.9.4 + dev: false + + /leaflet@1.9.4: + resolution: {integrity: sha512-nxS1ynzJOmOlHp+iL3FyWqK89GtNL8U8rvlMOsQdTTssxZwCXh8N2NB3GDQOL+YR3XnWyZAxwQixURb+FA74PA==} + dev: false + + /levn@0.4.1: + resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} + engines: {node: '>= 0.8.0'} + dependencies: + prelude-ls: 1.2.1 + type-check: 0.4.0 + + /license-checker@25.0.1: + resolution: {integrity: sha512-mET5AIwl7MR2IAKYYoVBBpV0OnkKQ1xGj2IMMeEFIs42QAkEVjRtFZGWmQ28WeU7MP779iAgOaOy93Mn44mn6g==} + hasBin: true + dependencies: + chalk: 2.4.2 + debug: 3.2.7 + mkdirp: 0.5.6 + nopt: 4.0.3 + read-installed: 4.0.3 + semver: 5.7.2 + spdx-correct: 3.2.0 + spdx-expression-parse: 3.0.1 + spdx-satisfies: 4.0.1 + treeify: 1.1.0 + transitivePeerDependencies: + - supports-color + dev: false + + /lilconfig@2.1.0: + resolution: {integrity: sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==} + engines: {node: '>=10'} + dev: true + + /lines-and-columns@1.2.4: + resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} + dev: true + + /litepicker@2.0.12: + resolution: {integrity: sha512-1N0sZJca/eALvS1hbJsVqKXwJAmp0BsJn73kZKWGGLjZkvjKr7HXGPV+/shu60aEY/JXoOg2XUmo7hbdIOsFpQ==} + dev: false + + /locate-path@6.0.0: + resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} + engines: {node: '>=10'} + dependencies: + p-locate: 5.0.0 + + /lodash-es@4.17.21: + resolution: {integrity: sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==} + dev: false + + /lodash.debounce@4.0.8: + resolution: {integrity: sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==} + dev: false + + /lodash.memoize@4.1.2: + resolution: {integrity: sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==} + dev: false + + /lodash.merge@4.6.2: + resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} + + /lodash.throttle@4.1.1: + resolution: {integrity: sha512-wIkUCfVKpVsWo3JSZlc+8MB5it+2AN5W8J7YVMST30UrvcQNZ1Okbj+rbVniijTWE6FGYy4XJq/rHkas8qJMLQ==} + dev: false + + /lodash@4.17.21: + resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} + + /lru-cache@10.0.2: + resolution: {integrity: sha512-Yj9mA8fPiVgOUpByoTZO5pNrcl5Yk37FcSHsUINpAsaBIEZIuqcCclDZJCVxqQShDsmYX8QG63svJiTbOATZwg==} + engines: {node: 14 || >=16.14} + dependencies: + semver: 7.5.4 + dev: false + + /lru-cache@6.0.0: + resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==} + engines: {node: '>=10'} + dependencies: + yallist: 4.0.0 + + /lucide-vue-next@0.95.0(vue@3.3.9): + resolution: {integrity: sha512-Z8PQLMbmf5pcQtfoA0tvk3yDnaaZ6B9gntPnnGbv/y1xXnp6QGpo/xWPSFSC2rSrqdE9vfV/BE/JDj1DOD4WMg==} + peerDependencies: + vue: '>=3.0.1' + dependencies: + vue: 3.3.9(typescript@5.2.2) + dev: false + + /lucide@0.90.0: + resolution: {integrity: sha512-CtlovyyuQF97+XK5FcHLX5uOc9fcJy1equ4PU7Tv79Blbhp/Y7fTUdfx6Ppw3y8QrM7HFENos/JIF+ItyBeH9g==} + dev: false + + /magic-string@0.30.5: + resolution: {integrity: sha512-7xlpfBaQaP/T6Vh8MO/EqXSW5En6INHEvEXQiuff7Gku0PWjU3uf6w/j9o7O+SpB5fOAkrI5HeoNgwjEO0pFsA==} + engines: {node: '>=12'} + dependencies: + '@jridgewell/sourcemap-codec': 1.4.15 + + /mdn-data@2.0.28: + resolution: {integrity: sha512-aylIc7Z9y4yzHYAJNuESG3hfhC+0Ibp/MAMiaOZgNv4pmEdFyfZhhhny4MNiAfWdBQ1RQ2mfDWmM1x8SvGyp8g==} + dev: false + + /mdn-data@2.0.30: + resolution: {integrity: sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA==} + dev: false + + /merge-stream@2.0.0: + resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==} + dev: true + + /merge2@1.4.1: + resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} + engines: {node: '>= 8'} + + /micromatch@4.0.5: + resolution: {integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==} + engines: {node: '>=8.6'} + dependencies: + braces: 3.0.2 + picomatch: 2.3.1 + + /mime-db@1.52.0: + resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} + engines: {node: '>= 0.6'} + dev: false + + /mime-types@2.1.35: + resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} + engines: {node: '>= 0.6'} + dependencies: + mime-db: 1.52.0 + dev: false + + /mimic-fn@2.1.0: + resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==} + engines: {node: '>=6'} + dev: true + + /mimic-fn@4.0.0: + resolution: {integrity: sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==} + engines: {node: '>=12'} + dev: true + + /mini-svg-data-uri@1.4.4: + resolution: {integrity: sha512-r9deDe9p5FJUPZAk3A59wGH7Ii9YrjjWw0jmw/liSbHl2CHiyXj6FcDXDu2K3TjVAXqiJdaw3xxwlZZr9E6nHg==} + hasBin: true + dev: true + + /minimatch@3.1.2: + resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} + dependencies: + brace-expansion: 1.1.11 + + /minimatch@9.0.1: + resolution: {integrity: sha512-0jWhJpD/MdhPXwPuiRkCbfYfSKp2qnn2eOc279qI7f+osl/l+prKSrvhg157zSYvx/1nmgn2NqdT6k2Z7zSH9w==} + engines: {node: '>=16 || 14 >=14.17'} + dependencies: + brace-expansion: 2.0.1 + dev: false + + /minimatch@9.0.3: + resolution: {integrity: sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==} + engines: {node: '>=16 || 14 >=14.17'} + dependencies: + brace-expansion: 2.0.1 + + /minimist@1.2.8: + resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} + + /minipass@7.0.4: + resolution: {integrity: sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==} + engines: {node: '>=16 || 14 >=14.17'} + dev: false + + /mkdirp@0.5.6: + resolution: {integrity: sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==} + hasBin: true + dependencies: + minimist: 1.2.8 + dev: false + + /monaco-editor@0.44.0: + resolution: {integrity: sha512-5SmjNStN6bSuSE5WPT2ZV+iYn1/yI9sd4Igtk23ChvqB7kDk9lZbB9F5frsuvpB+2njdIeGGFf2G4gbE6rCC9Q==} + dev: false + + /monaco-languageserver-types@0.2.3: + resolution: {integrity: sha512-QyV5R7s+rJ87bX1sRioMJZULWiTnMp0Vm+RLILgMEL0SqWuBsQBSW0EZunr4xMZhv6Qun3UZNCN4JrCCLURcgQ==} + dependencies: + monaco-types: 0.1.0 + vscode-languageserver-protocol: 3.17.5 + dev: false + + /monaco-marker-data-provider@1.1.1(monaco-editor@0.44.0): + resolution: {integrity: sha512-PGB7TJSZE5tmHzkxv/OEwK2RGNC2A7dcq4JRJnnj31CUAsfmw0Gl+1QTrH0W0deKhcQmQM0YVPaqgQ+0wCt8Mg==} + peerDependencies: + monaco-editor: '>=0.30.0' + dependencies: + monaco-editor: 0.44.0 + dev: false + + /monaco-types@0.1.0: + resolution: {integrity: sha512-aWK7SN9hAqNYi0WosPoMjenMeXJjwCxDibOqWffyQ/qXdzB/86xshGQobRferfmNz7BSNQ8GB0MD0oby9/5fTQ==} + dev: false + + /monaco-worker-manager@2.0.1(monaco-editor@0.44.0): + resolution: {integrity: sha512-kdPL0yvg5qjhKPNVjJoym331PY/5JC11aPJXtCZNwWRvBr6jhkIamvYAyiY5P1AWFmNOy0aRDRoMdZfa71h8kg==} + peerDependencies: + monaco-editor: '>=0.30.0' + dependencies: + monaco-editor: 0.44.0 + dev: false + + /monaco-yaml@5.1.0(monaco-editor@0.44.0): + resolution: {integrity: sha512-DU+cgXSJdOFKQ4I4oLg0V+mHKq1dJX+7hbIE4fJsgegUf1zEHW3PNlGj6qabUU2HZIPJ5NmXEf005GU9YDzTYQ==} + peerDependencies: + monaco-editor: '>=0.36' + dependencies: + '@types/json-schema': 7.0.15 + jsonc-parser: 3.2.0 + monaco-editor: 0.44.0 + monaco-languageserver-types: 0.2.3 + monaco-marker-data-provider: 1.1.1(monaco-editor@0.44.0) + monaco-types: 0.1.0 + monaco-worker-manager: 2.0.1(monaco-editor@0.44.0) + path-browserify: 1.0.1 + prettier: 2.8.8 + vscode-languageserver-textdocument: 1.0.11 + vscode-languageserver-types: 3.17.5 + vscode-uri: 3.0.8 + yaml: 2.3.4 + dev: false + + /ms@2.1.2: + resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} + + /ms@2.1.3: + resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} + + /muggle-string@0.3.1: + resolution: {integrity: sha512-ckmWDJjphvd/FvZawgygcUeQCxzvohjFO5RxTjj4eq8kw359gFF3E1brjfI+viLMxss5JrHTDRHZvu2/tuy0Qg==} + dev: true + + /mz@2.7.0: + resolution: {integrity: sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==} + dependencies: + any-promise: 1.3.0 + object-assign: 4.1.1 + thenify-all: 1.6.0 + dev: true + + /nanoid@3.3.7: + resolution: {integrity: sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==} + engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} + hasBin: true + + /natural-compare@1.4.0: + resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} + + /node-releases@2.0.13: + resolution: {integrity: sha512-uYr7J37ae/ORWdZeQ1xxMJe3NtdmqMC/JZK+geofDrkLUApKRHPd18/TxtBOJ4A0/+uUIliorNrfYV6s1b02eQ==} + dev: true + + /nopt@4.0.3: + resolution: {integrity: sha512-CvaGwVMztSMJLOeXPrez7fyfObdZqNUK1cPAEzLHrTybIua9pMdmmPR5YwtfNftIOMv3DPUhFaxsZMNTQO20Kg==} + hasBin: true + dependencies: + abbrev: 1.1.1 + osenv: 0.1.5 + dev: false + + /nopt@7.2.0: + resolution: {integrity: sha512-CVDtwCdhYIvnAzFoJ6NJ6dX3oga9/HyciQDnG1vQDjSLMeKLJ4A93ZqYKDrgYSr1FBY5/hMYC+2VCi24pgpkGA==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + hasBin: true + dependencies: + abbrev: 2.0.0 + dev: false + + /normalize-package-data@2.5.0: + resolution: {integrity: sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==} + dependencies: + hosted-git-info: 2.8.9 + resolve: 1.22.8 + semver: 5.7.2 + validate-npm-package-license: 3.0.4 + dev: false + + /normalize-path@3.0.0: + resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} + engines: {node: '>=0.10.0'} + dev: true + + /normalize-range@0.1.2: + resolution: {integrity: sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==} + engines: {node: '>=0.10.0'} + dev: true + + /npm-normalize-package-bin@1.0.1: + resolution: {integrity: sha512-EPfafl6JL5/rU+ot6P3gRSCpPDW5VmIzX959Ob1+ySFUuuYHWHekXpwdUZcKP5C+DS4GEtdJluwBjnsNDl+fSA==} + dev: false + + /npm-run-path@4.0.1: + resolution: {integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==} + engines: {node: '>=8'} + dependencies: + path-key: 3.1.1 + dev: true + + /npm-run-path@5.1.0: + resolution: {integrity: sha512-sJOdmRGrY2sjNTRMbSvluQqg+8X7ZK61yvzBEIDhz4f8z1TZFYABsqjjCBd/0PUNE9M6QDgHJXQkGUEm7Q+l9Q==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + dependencies: + path-key: 4.0.0 + dev: true + + /nth-check@2.1.1: + resolution: {integrity: sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==} + dependencies: + boolbase: 1.0.0 + + /object-assign@4.1.1: + resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} + engines: {node: '>=0.10.0'} + dev: true + + /object-hash@3.0.0: + resolution: {integrity: sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==} + engines: {node: '>= 6'} + dev: true + + /object-inspect@1.13.1: + resolution: {integrity: sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==} + dev: true + + /object-keys@1.1.1: + resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==} + engines: {node: '>= 0.4'} + dev: true + + /object.assign@4.1.4: + resolution: {integrity: sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.5 + define-properties: 1.2.1 + has-symbols: 1.0.3 + object-keys: 1.1.1 + dev: true + + /object.fromentries@2.0.7: + resolution: {integrity: sha512-UPbPHML6sL8PI/mOqPwsH4G6iyXcCGzLin8KvEPenOZN5lpCNBZZQ+V62vdjB1mQHrmqGQt5/OJzemUA+KJmEA==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.5 + define-properties: 1.2.1 + es-abstract: 1.22.3 + dev: true + + /object.groupby@1.0.1: + resolution: {integrity: sha512-HqaQtqLnp/8Bn4GL16cj+CUYbnpe1bh0TtEaWvybszDG4tgxCJuRpV8VGuvNaI1fAnI4lUJzDG55MXcOH4JZcQ==} + dependencies: + call-bind: 1.0.5 + define-properties: 1.2.1 + es-abstract: 1.22.3 + get-intrinsic: 1.2.2 + dev: true + + /object.values@1.1.7: + resolution: {integrity: sha512-aU6xnDFYT3x17e/f0IiiwlGPTy2jzMySGfUB4fq6z7CV8l85CWHDk5ErhyhpfDHhrOMwGFhSQkhMGHaIotA6Ng==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.5 + define-properties: 1.2.1 + es-abstract: 1.22.3 + dev: true + + /once@1.4.0: + resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} + dependencies: + wrappy: 1.0.2 + + /onetime@5.1.2: + resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==} + engines: {node: '>=6'} + dependencies: + mimic-fn: 2.1.0 + dev: true + + /onetime@6.0.0: + resolution: {integrity: sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==} + engines: {node: '>=12'} + dependencies: + mimic-fn: 4.0.0 + dev: true + + /open@9.1.0: + resolution: {integrity: sha512-OS+QTnw1/4vrf+9hh1jc1jnYjzSG4ttTBB8UxOwAnInG3Uo4ssetzC1ihqaIHjLJnA5GGlRl6QlZXOTQhRBUvg==} + engines: {node: '>=14.16'} + dependencies: + default-browser: 4.0.0 + define-lazy-prop: 3.0.0 + is-inside-container: 1.0.0 + is-wsl: 2.2.0 + dev: true + + /optionator@0.9.3: + resolution: {integrity: sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==} + engines: {node: '>= 0.8.0'} + dependencies: + '@aashutoshrathi/word-wrap': 1.2.6 + deep-is: 0.1.4 + fast-levenshtein: 2.0.6 + levn: 0.4.1 + prelude-ls: 1.2.1 + type-check: 0.4.0 + + /os-homedir@1.0.2: + resolution: {integrity: sha512-B5JU3cabzk8c67mRRd3ECmROafjYMXbuzlwtqdM8IbS8ktlTix8aFGb2bAGKrSRIlnfKwovGUUr72JUPyOb6kQ==} + engines: {node: '>=0.10.0'} + dev: false + + /os-tmpdir@1.0.2: + resolution: {integrity: sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==} + engines: {node: '>=0.10.0'} + dev: false + + /osenv@0.1.5: + resolution: {integrity: sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==} + dependencies: + os-homedir: 1.0.2 + os-tmpdir: 1.0.2 + dev: false + + /p-limit@3.1.0: + resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} + engines: {node: '>=10'} + dependencies: + yocto-queue: 0.1.0 + + /p-locate@5.0.0: + resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} + engines: {node: '>=10'} + dependencies: + p-limit: 3.1.0 + + /parent-module@1.0.1: + resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} + engines: {node: '>=6'} + dependencies: + callsites: 3.1.0 + + /path-browserify@1.0.1: + resolution: {integrity: sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==} + + /path-exists@4.0.0: + resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} + engines: {node: '>=8'} + + /path-is-absolute@1.0.1: + resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} + engines: {node: '>=0.10.0'} + + /path-key@3.1.1: + resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} + engines: {node: '>=8'} + + /path-key@4.0.0: + resolution: {integrity: sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==} + engines: {node: '>=12'} + dev: true + + /path-parse@1.0.7: + resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} + + /path-scurry@1.10.1: + resolution: {integrity: sha512-MkhCqzzBEpPvxxQ71Md0b1Kk51W01lrYvlMzSUaIzNsODdd7mqhiimSZlr+VegAz5Z6Vzt9Xg2ttE//XBhH3EQ==} + engines: {node: '>=16 || 14 >=14.17'} + dependencies: + lru-cache: 10.0.2 + minipass: 7.0.4 + dev: false + + /path-type@4.0.0: + resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} + engines: {node: '>=8'} + + /path@0.12.7: + resolution: {integrity: sha512-aXXC6s+1w7otVF9UletFkFcDsJeO7lSZBPUQhtb5O0xJe8LtYhj/GxldoL09bBj9+ZmE2hNoHqQSFMN5fikh4Q==} + dependencies: + process: 0.11.10 + util: 0.10.4 + dev: true + + /picocolors@0.2.1: + resolution: {integrity: sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==} + dev: true + + /picocolors@1.0.0: + resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==} + + /picomatch@2.3.1: + resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} + engines: {node: '>=8.6'} + + /pify@2.3.0: + resolution: {integrity: sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==} + engines: {node: '>=0.10.0'} + dev: true + + /pinia@2.1.7(typescript@5.2.2)(vue@3.3.9): + resolution: {integrity: sha512-+C2AHFtcFqjPih0zpYuvof37SFxMQ7OEG2zV9jRI12i9BOy3YQVAHwdKtyyc8pDcDyIc33WCIsZaCFWU7WWxGQ==} + peerDependencies: + '@vue/composition-api': ^1.4.0 + typescript: '>=4.4.4' + vue: ^2.6.14 || ^3.3.0 + peerDependenciesMeta: + '@vue/composition-api': + optional: true + typescript: + optional: true + dependencies: + '@vue/devtools-api': 6.5.1 + typescript: 5.2.2 + vue: 3.3.9(typescript@5.2.2) + vue-demi: 0.14.6(vue@3.3.9) + dev: false + + /pirates@4.0.6: + resolution: {integrity: sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==} + engines: {node: '>= 6'} + dev: true + + /postcss-advanced-variables@3.0.1: + resolution: {integrity: sha512-JqVjfkmqPoazMobVeQYzbt7djcDGJfMlpwBd9abTqmzWR40tvIUMXpTU5w3riqz7h+wYPY7V6GF8BIXL/ybEfg==} + engines: {node: '>=6.0.0'} + dependencies: + '@csstools/sass-import-resolve': 1.0.0 + postcss: 7.0.39 + dev: true + + /postcss-import@15.1.0(postcss@8.4.31): + resolution: {integrity: sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==} + engines: {node: '>=14.0.0'} + peerDependencies: + postcss: ^8.0.0 + dependencies: + postcss: 8.4.31 + postcss-value-parser: 4.2.0 + read-cache: 1.0.0 + resolve: 1.22.8 + dev: true + + /postcss-js@4.0.1(postcss@8.4.31): + resolution: {integrity: sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw==} + engines: {node: ^12 || ^14 || >= 16} + peerDependencies: + postcss: ^8.4.21 + dependencies: + camelcase-css: 2.0.1 + postcss: 8.4.31 + dev: true + + /postcss-load-config@4.0.1(postcss@8.4.31): + resolution: {integrity: sha512-vEJIc8RdiBRu3oRAI0ymerOn+7rPuMvRXslTvZUKZonDHFIczxztIyJ1urxM1x9JXEikvpWWTUUqal5j/8QgvA==} + engines: {node: '>= 14'} + peerDependencies: + postcss: '>=8.0.9' + ts-node: '>=9.0.0' + peerDependenciesMeta: + postcss: + optional: true + ts-node: + optional: true + dependencies: + lilconfig: 2.1.0 + postcss: 8.4.31 + yaml: 2.3.4 + dev: true + + /postcss-nested@6.0.1(postcss@8.4.31): + resolution: {integrity: sha512-mEp4xPMi5bSWiMbsgoPfcP74lsWLHkQbZc3sY+jWYd65CUwXrUaTp0fmNpa01ZcETKlIgUdFN/MpS2xZtqL9dQ==} + engines: {node: '>=12.0'} + peerDependencies: + postcss: ^8.2.14 + dependencies: + postcss: 8.4.31 + postcss-selector-parser: 6.0.13 + dev: true + + /postcss-nesting@12.0.1(postcss@8.4.31): + resolution: {integrity: sha512-6LCqCWP9pqwXw/njMvNK0hGY44Fxc4B2EsGbn6xDcxbNRzP8GYoxT7yabVVMLrX3quqOJ9hg2jYMsnkedOf8pA==} + engines: {node: ^14 || ^16 || >=18} + peerDependencies: + postcss: ^8.4 + dependencies: + '@csstools/selector-specificity': 3.0.0(postcss-selector-parser@6.0.13) + postcss: 8.4.31 + postcss-selector-parser: 6.0.13 + dev: true + + /postcss-selector-parser@6.0.13: + resolution: {integrity: sha512-EaV1Gl4mUEV4ddhDnv/xtj7sxwrwxdetHdWUGnT4VJQf+4d05v6lHYZr8N573k5Z0BViss7BDhfWtKS3+sfAqQ==} + engines: {node: '>=4'} + dependencies: + cssesc: 3.0.0 + util-deprecate: 1.0.2 + + /postcss-value-parser@4.2.0: + resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==} + dev: true + + /postcss@7.0.39: + resolution: {integrity: sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==} + engines: {node: '>=6.0.0'} + dependencies: + picocolors: 0.2.1 + source-map: 0.6.1 + dev: true + + /postcss@8.4.31: + resolution: {integrity: sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==} + engines: {node: ^10 || ^12 || >=14} + dependencies: + nanoid: 3.3.7 + picocolors: 1.0.0 + source-map-js: 1.0.2 + + /preact@10.12.1: + resolution: {integrity: sha512-l8386ixSsBdbreOAkqtrwqHwdvR35ID8c3rKPa8lCWuO86dBi32QWHV4vfsZK1utLLFMvw+Z5Ad4XLkZzchscg==} + dev: false + + /prelude-ls@1.2.1: + resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} + engines: {node: '>= 0.8.0'} + + /prettier-linter-helpers@1.0.0: + resolution: {integrity: sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==} + engines: {node: '>=6.0.0'} + dependencies: + fast-diff: 1.3.0 + dev: true + + /prettier@2.8.8: + resolution: {integrity: sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==} + engines: {node: '>=10.13.0'} + hasBin: true + dev: false + + /prettier@3.1.0: + resolution: {integrity: sha512-TQLvXjq5IAibjh8EpBIkNKxO749UEWABoiIZehEPiY4GNpVdhaFKqSTu+QrlU6D2dPAfubRmtJTi4K4YkQ5eXw==} + engines: {node: '>=14'} + hasBin: true + dev: true + + /process@0.11.10: + resolution: {integrity: sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==} + engines: {node: '>= 0.6.0'} + dev: true + + /proto-list@1.2.4: + resolution: {integrity: sha512-vtK/94akxsTMhe0/cbfpR+syPuszcuwhqVjJq26CuNDgFGj682oRBXOP5MJpv2r7JtE8MsiepGIqvvOTBwn2vA==} + dev: false + + /proxy-from-env@1.1.0: + resolution: {integrity: sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==} + dev: false + + /punycode@2.3.1: + resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} + engines: {node: '>=6'} + + /queue-microtask@1.2.3: + resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} + + /read-cache@1.0.0: + resolution: {integrity: sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==} + dependencies: + pify: 2.3.0 + dev: true + + /read-installed@4.0.3: + resolution: {integrity: sha512-O03wg/IYuV/VtnK2h/KXEt9VIbMUFbk3ERG0Iu4FhLZw0EP0T9znqrYDGn6ncbEsXUFaUjiVAWXHzxwt3lhRPQ==} + dependencies: + debuglog: 1.0.1 + read-package-json: 2.1.2 + readdir-scoped-modules: 1.1.0 + semver: 5.7.2 + slide: 1.1.6 + util-extend: 1.0.3 + optionalDependencies: + graceful-fs: 4.2.11 + dev: false + + /read-package-json@2.1.2: + resolution: {integrity: sha512-D1KmuLQr6ZSJS0tW8hf3WGpRlwszJOXZ3E8Yd/DNRaM5d+1wVRZdHlpGBLAuovjr28LbWvjpWkBHMxpRGGjzNA==} + dependencies: + glob: 7.2.3 + json-parse-even-better-errors: 2.3.1 + normalize-package-data: 2.5.0 + npm-normalize-package-bin: 1.0.1 + dev: false + + /readdir-scoped-modules@1.1.0: + resolution: {integrity: sha512-asaikDeqAQg7JifRsZn1NJZXo9E+VwlyCfbkZhwyISinqk5zNS6266HS5kah6P0SaQKGF6SkNnZVHUzHFYxYDw==} + deprecated: This functionality has been moved to @npmcli/fs + dependencies: + debuglog: 1.0.1 + dezalgo: 1.0.4 + graceful-fs: 4.2.11 + once: 1.4.0 + dev: false + + /readdirp@3.6.0: + resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} + engines: {node: '>=8.10.0'} + dependencies: + picomatch: 2.3.1 + dev: true + + /regexp.prototype.flags@1.5.1: + resolution: {integrity: sha512-sy6TXMN+hnP/wMy+ISxg3krXx7BAtWVO4UouuCN/ziM9UEne0euamVNafDfvC83bRNr95y0V5iijeDQFUNpvrg==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.5 + define-properties: 1.2.1 + set-function-name: 2.0.1 + dev: true + + /regexpp@3.2.0: + resolution: {integrity: sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==} + engines: {node: '>=8'} + dev: true + + /resolve-from@4.0.0: + resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} + engines: {node: '>=4'} + + /resolve@1.22.8: + resolution: {integrity: sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==} + hasBin: true + dependencies: + is-core-module: 2.13.1 + path-parse: 1.0.7 + supports-preserve-symlinks-flag: 1.0.0 + + /reusify@1.0.4: + resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} + engines: {iojs: '>=1.0.0', node: '>=0.10.0'} + + /rimraf@3.0.2: + resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==} + hasBin: true + dependencies: + glob: 7.2.3 + + /rollup@3.29.4: + resolution: {integrity: sha512-oWzmBZwvYrU0iJHtDmhsm662rC15FRXmcjCk1xD771dFDx5jJ02ufAQQTn0etB2emNk4J9EZg/yWKpsn9BWGRw==} + engines: {node: '>=14.18.0', npm: '>=8.0.0'} + hasBin: true + optionalDependencies: + fsevents: 2.3.3 + dev: true + + /run-applescript@5.0.0: + resolution: {integrity: sha512-XcT5rBksx1QdIhlFOCtgZkB99ZEouFZ1E2Kc2LHqNW13U3/74YGdkQRmThTwxy4QIyookibDKYZOPqX//6BlAg==} + engines: {node: '>=12'} + dependencies: + execa: 5.1.1 + dev: true + + /run-parallel@1.2.0: + resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} + dependencies: + queue-microtask: 1.2.3 + + /safe-array-concat@1.0.1: + resolution: {integrity: sha512-6XbUAseYE2KtOuGueyeobCySj9L4+66Tn6KQMOPQJrAJEowYKW/YR/MGJZl7FdydUdaFu4LYyDZjxf4/Nmo23Q==} + engines: {node: '>=0.4'} + dependencies: + call-bind: 1.0.5 + get-intrinsic: 1.2.2 + has-symbols: 1.0.3 + isarray: 2.0.5 + dev: true + + /safe-regex-test@1.0.0: + resolution: {integrity: sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==} + dependencies: + call-bind: 1.0.5 + get-intrinsic: 1.2.2 + is-regex: 1.1.4 + dev: true + + /semver@5.7.2: + resolution: {integrity: sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==} + hasBin: true + dev: false + + /semver@6.3.1: + resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} + hasBin: true + dev: true + + /semver@7.5.4: + resolution: {integrity: sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==} + engines: {node: '>=10'} + hasBin: true + dependencies: + lru-cache: 6.0.0 + + /set-function-length@1.1.1: + resolution: {integrity: sha512-VoaqjbBJKiWtg4yRcKBQ7g7wnGnLV3M8oLvVWwOk2PdYY6PEFegR1vezXR0tw6fZGF9csVakIRjrJiy2veSBFQ==} + engines: {node: '>= 0.4'} + dependencies: + define-data-property: 1.1.1 + get-intrinsic: 1.2.2 + gopd: 1.0.1 + has-property-descriptors: 1.0.1 + dev: true + + /set-function-name@2.0.1: + resolution: {integrity: sha512-tMNCiqYVkXIZgc2Hnoy2IvC/f8ezc5koaRFkCjrpWzGpCd3qbZXPzVy9MAZzK1ch/X0jvSkojys3oqJN0qCmdA==} + engines: {node: '>= 0.4'} + dependencies: + define-data-property: 1.1.1 + functions-have-names: 1.2.3 + has-property-descriptors: 1.0.1 + dev: true + + /shebang-command@2.0.0: + resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} + engines: {node: '>=8'} + dependencies: + shebang-regex: 3.0.0 + + /shebang-regex@3.0.0: + resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} + engines: {node: '>=8'} + + /side-channel@1.0.4: + resolution: {integrity: sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==} + dependencies: + call-bind: 1.0.5 + get-intrinsic: 1.2.2 + object-inspect: 1.13.1 + dev: true + + /signal-exit@3.0.7: + resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} + dev: true + + /signal-exit@4.1.0: + resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} + engines: {node: '>=14'} + dev: false + + /simplebar@5.3.9: + resolution: {integrity: sha512-1vIIpjDvY9sVH14e0LGeiCiTFU3ILqAghzO6OI9axeG+mvU/vMSrvXeAXkBolqFFz3XYaY8n5ahH9MeP3sp2Ag==} + dependencies: + '@juggle/resize-observer': 3.4.0 + can-use-dom: 0.1.0 + core-js: 3.33.2 + lodash.debounce: 4.0.8 + lodash.memoize: 4.1.2 + lodash.throttle: 4.1.1 + dev: false + + /slash@3.0.0: + resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} + engines: {node: '>=8'} + + /slide@1.1.6: + resolution: {integrity: sha512-NwrtjCg+lZoqhFU8fOwl4ay2ei8PaqCBOUV3/ektPY9trO1yQ1oXEfmHAhKArUVUr/hOHvy5f6AdP17dCM0zMw==} + dev: false + + /sortablejs@1.15.2: + resolution: {integrity: sha512-FJF5jgdfvoKn1MAKSdGs33bIqLi3LmsgVTliuX6iITj834F+JRQZN90Z93yql8h0K2t0RwDPBmxwlbZfDcxNZA==} + dev: false + + /source-map-js@1.0.2: + resolution: {integrity: sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==} + engines: {node: '>=0.10.0'} + + /source-map@0.6.1: + resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} + engines: {node: '>=0.10.0'} + dev: true + + /spdx-compare@1.0.0: + resolution: {integrity: sha512-C1mDZOX0hnu0ep9dfmuoi03+eOdDoz2yvK79RxbcrVEG1NO1Ph35yW102DHWKN4pk80nwCgeMmSY5L25VE4D9A==} + dependencies: + array-find-index: 1.0.2 + spdx-expression-parse: 3.0.1 + spdx-ranges: 2.1.1 + dev: false + + /spdx-correct@3.2.0: + resolution: {integrity: sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==} + dependencies: + spdx-expression-parse: 3.0.1 + spdx-license-ids: 3.0.16 + dev: false + + /spdx-exceptions@2.3.0: + resolution: {integrity: sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==} + dev: false + + /spdx-expression-parse@3.0.1: + resolution: {integrity: sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==} + dependencies: + spdx-exceptions: 2.3.0 + spdx-license-ids: 3.0.16 + dev: false + + /spdx-license-ids@3.0.16: + resolution: {integrity: sha512-eWN+LnM3GR6gPu35WxNgbGl8rmY1AEmoMDvL/QD6zYmPWgywxWqJWNdLGT+ke8dKNWrcYgYjPpG5gbTfghP8rw==} + dev: false + + /spdx-ranges@2.1.1: + resolution: {integrity: sha512-mcdpQFV7UDAgLpXEE/jOMqvK4LBoO0uTQg0uvXUewmEFhpiZx5yJSZITHB8w1ZahKdhfZqP5GPEOKLyEq5p8XA==} + dev: false + + /spdx-satisfies@4.0.1: + resolution: {integrity: sha512-WVzZ/cXAzoNmjCWiEluEA3BjHp5tiUmmhn9MK+X0tBbR9sOqtC6UQwmgCNrAIZvNlMuBUYAaHYfb2oqlF9SwKA==} + dependencies: + spdx-compare: 1.0.0 + spdx-expression-parse: 3.0.1 + spdx-ranges: 2.1.1 + dev: false + + /ssf@0.11.2: + resolution: {integrity: sha512-+idbmIXoYET47hH+d7dfm2epdOMUDjqcB4648sTZ+t2JwoyBFL/insLfB/racrDmsKB3diwsDA696pZMieAC5g==} + engines: {node: '>=0.8'} + dependencies: + frac: 1.1.2 + dev: false + + /string-width@4.2.3: + resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} + engines: {node: '>=8'} + dependencies: + emoji-regex: 8.0.0 + is-fullwidth-code-point: 3.0.0 + strip-ansi: 6.0.1 + dev: false + + /string-width@5.1.2: + resolution: {integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==} + engines: {node: '>=12'} + dependencies: + eastasianwidth: 0.2.0 + emoji-regex: 9.2.2 + strip-ansi: 7.1.0 + dev: false + + /string.prototype.trim@1.2.8: + resolution: {integrity: sha512-lfjY4HcixfQXOfaqCvcBuOIapyaroTXhbkfJN3gcB1OtyupngWK4sEET9Knd0cXd28kTUqu/kHoV4HKSJdnjiQ==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.5 + define-properties: 1.2.1 + es-abstract: 1.22.3 + dev: true + + /string.prototype.trimend@1.0.7: + resolution: {integrity: sha512-Ni79DqeB72ZFq1uH/L6zJ+DKZTkOtPIHovb3YZHQViE+HDouuU4mBrLOLDn5Dde3RF8qw5qVETEjhu9locMLvA==} + dependencies: + call-bind: 1.0.5 + define-properties: 1.2.1 + es-abstract: 1.22.3 + dev: true + + /string.prototype.trimstart@1.0.7: + resolution: {integrity: sha512-NGhtDFu3jCEm7B4Fy0DpLewdJQOZcQ0rGbwQ/+stjnrp2i+rlKeCvos9hOIeCmqwratM47OBxY7uFZzjxHXmrg==} + dependencies: + call-bind: 1.0.5 + define-properties: 1.2.1 + es-abstract: 1.22.3 + dev: true + + /strip-ansi@6.0.1: + resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} + engines: {node: '>=8'} + dependencies: + ansi-regex: 5.0.1 + + /strip-ansi@7.1.0: + resolution: {integrity: sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==} + engines: {node: '>=12'} + dependencies: + ansi-regex: 6.0.1 + dev: false + + /strip-bom@3.0.0: + resolution: {integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==} + engines: {node: '>=4'} + dev: true + + /strip-final-newline@2.0.0: + resolution: {integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==} + engines: {node: '>=6'} + dev: true + + /strip-final-newline@3.0.0: + resolution: {integrity: sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==} + engines: {node: '>=12'} + dev: true + + /strip-json-comments@3.1.1: + resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} + engines: {node: '>=8'} + + /sucrase@3.34.0: + resolution: {integrity: sha512-70/LQEZ07TEcxiU2dz51FKaE6hCTWC6vr7FOk3Gr0U60C3shtAN+H+BFr9XlYe5xqf3RA8nrc+VIwzCfnxuXJw==} + engines: {node: '>=8'} + hasBin: true + dependencies: + '@jridgewell/gen-mapping': 0.3.3 + commander: 4.1.1 + glob: 7.1.6 + lines-and-columns: 1.2.4 + mz: 2.7.0 + pirates: 4.0.6 + ts-interface-checker: 0.1.13 + dev: true + + /supports-color@5.5.0: + resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==} + engines: {node: '>=4'} + dependencies: + has-flag: 3.0.0 + dev: false + + /supports-color@7.2.0: + resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} + engines: {node: '>=8'} + dependencies: + has-flag: 4.0.0 + + /supports-preserve-symlinks-flag@1.0.0: + resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} + engines: {node: '>= 0.4'} + + /svgo@3.0.4: + resolution: {integrity: sha512-T+Xul3JwuJ6VGXKo/p2ndqx1ibxNKnLTvRc1ZTWKCfyKS/GgNjRZcYsK84fxTsy/izr91g/Rwx6fGnVgaFSI5g==} + engines: {node: '>=14.0.0'} + hasBin: true + dependencies: + '@trysound/sax': 0.2.0 + commander: 7.2.0 + css-select: 5.1.0 + css-tree: 2.3.1 + css-what: 6.1.0 + csso: 5.0.5 + picocolors: 1.0.0 + dev: false + + /synckit@0.8.5: + resolution: {integrity: sha512-L1dapNV6vu2s/4Sputv8xGsCdAVlb5nRDMFU/E27D44l5U6cw1g0dGd45uLc+OXjNMmF4ntiMdCimzcjFKQI8Q==} + engines: {node: ^14.18.0 || >=16.0.0} + dependencies: + '@pkgr/utils': 2.4.2 + tslib: 2.6.2 + dev: true + + /tabulator-tables@5.5.2: + resolution: {integrity: sha512-GlzUPXeH9Rw1iPXcl3uBLJk6Sz51xdwscZ5RrsKxDQDQ+t2g31hGq/0xjaj6ea62wHgl8vzVsHuwap0jKzsUNg==} + dev: false + + /tailwind-merge@1.14.0: + resolution: {integrity: sha512-3mFKyCo/MBcgyOTlrY8T7odzZFx+w+qKSMAmdFzRvqBfLlSigU6TZnlFHK0lkMwj9Bj8OYU+9yW9lmGuS0QEnQ==} + dev: true + + /tailwindcss@3.3.5: + resolution: {integrity: sha512-5SEZU4J7pxZgSkv7FP1zY8i2TIAOooNZ1e/OGtxIEv6GltpoiXUqWvLy89+a10qYTB1N5Ifkuw9lqQkN9sscvA==} + engines: {node: '>=14.0.0'} + hasBin: true + dependencies: + '@alloc/quick-lru': 5.2.0 + arg: 5.0.2 + chokidar: 3.5.3 + didyoumean: 1.2.2 + dlv: 1.1.3 + fast-glob: 3.3.2 + glob-parent: 6.0.2 + is-glob: 4.0.3 + jiti: 1.21.0 + lilconfig: 2.1.0 + micromatch: 4.0.5 + normalize-path: 3.0.0 + object-hash: 3.0.0 + picocolors: 1.0.0 + postcss: 8.4.31 + postcss-import: 15.1.0(postcss@8.4.31) + postcss-js: 4.0.1(postcss@8.4.31) + postcss-load-config: 4.0.1(postcss@8.4.31) + postcss-nested: 6.0.1(postcss@8.4.31) + postcss-selector-parser: 6.0.13 + resolve: 1.22.8 + sucrase: 3.34.0 + transitivePeerDependencies: + - ts-node + dev: true + + /text-table@0.2.0: + resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==} + + /thenify-all@1.6.0: + resolution: {integrity: sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==} + engines: {node: '>=0.8'} + dependencies: + thenify: 3.3.1 + dev: true + + /thenify@3.3.1: + resolution: {integrity: sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==} + dependencies: + any-promise: 1.3.0 + dev: true + + /tiny-slider@2.9.4: + resolution: {integrity: sha512-LAs2kldWcY+BqCKw4kxd4CMx2RhWrHyEePEsymlOIISTlOVkjfK40sSD7ay73eKXBLg/UkluAZpcfCstimHXew==} + dev: false + + /tippy.js@6.3.7: + resolution: {integrity: sha512-E1d3oP2emgJ9dRQZdf3Kkn0qJgI6ZLpyS5z6ZkY1DF3kaQaBsGZsndEpHwx+eC+tYM41HaSNvNtLx8tU57FzTQ==} + dependencies: + '@popperjs/core': 2.11.8 + dev: false + + /titleize@3.0.0: + resolution: {integrity: sha512-KxVu8EYHDPBdUYdKZdKtU2aj2XfEx9AfjXxE/Aj0vT06w2icA09Vus1rh6eSu1y01akYg6BjIK/hxyLJINoMLQ==} + engines: {node: '>=12'} + dev: true + + /to-fast-properties@2.0.0: + resolution: {integrity: sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==} + engines: {node: '>=4'} + + /to-regex-range@5.0.1: + resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} + engines: {node: '>=8.0'} + dependencies: + is-number: 7.0.0 + + /toastify-js@1.12.0: + resolution: {integrity: sha512-HeMHCO9yLPvP9k0apGSdPUWrUbLnxUKNFzgUoZp1PHCLploIX/4DSQ7V8H25ef+h4iO9n0he7ImfcndnN6nDrQ==} + dev: false + + /tom-select@2.3.1: + resolution: {integrity: sha512-QS4vnOcB6StNGqX4sGboGXL2fkhBF2gIBB+8Hwv30FZXYPn0CyYO8kkdATRvwfCTThxiR4WcXwKJZ3cOmtI9eg==} + dependencies: + '@orchidjs/sifter': 1.0.3 + '@orchidjs/unicode-variants': 1.0.4 + dev: false + + /treeify@1.1.0: + resolution: {integrity: sha512-1m4RA7xVAJrSGrrXGs0L3YTwyvBs2S8PbRHaLZAkFw7JR8oIFwYtysxlBZhYIa7xSyiYJKZ3iGrrk55cGA3i9A==} + engines: {node: '>=0.6'} + dev: false + + /ts-api-utils@1.0.3(typescript@5.2.2): + resolution: {integrity: sha512-wNMeqtMz5NtwpT/UZGY5alT+VoKdSsOOP/kqHFcUW1P/VRhH2wJ48+DN2WwUliNbQ976ETwDL0Ifd2VVvgonvg==} + engines: {node: '>=16.13.0'} + peerDependencies: + typescript: '>=4.2.0' + dependencies: + typescript: 5.2.2 + + /ts-interface-checker@0.1.13: + resolution: {integrity: sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==} + dev: true + + /tsconfig-paths@3.14.2: + resolution: {integrity: sha512-o/9iXgCYc5L/JxCHPe3Hvh8Q/2xm5Z+p18PESBU6Ff33695QnCHBEjcytY2q19ua7Mbl/DavtBOLq+oG0RCL+g==} + dependencies: + '@types/json5': 0.0.29 + json5: 1.0.2 + minimist: 1.2.8 + strip-bom: 3.0.0 + dev: true + + /tslib@2.6.2: + resolution: {integrity: sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==} + + /type-check@0.4.0: + resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} + engines: {node: '>= 0.8.0'} + dependencies: + prelude-ls: 1.2.1 + + /type-fest@0.20.2: + resolution: {integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==} + engines: {node: '>=10'} + + /typed-array-buffer@1.0.0: + resolution: {integrity: sha512-Y8KTSIglk9OZEr8zywiIHG/kmQ7KWyjseXs1CbSo8vC42w7hg2HgYTxSWwP0+is7bWDc1H+Fo026CpHFwm8tkw==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.5 + get-intrinsic: 1.2.2 + is-typed-array: 1.1.12 + dev: true + + /typed-array-byte-length@1.0.0: + resolution: {integrity: sha512-Or/+kvLxNpeQ9DtSydonMxCx+9ZXOswtwJn17SNLvhptaXYDJvkFFP5zbfU/uLmvnBJlI4yrnXRxpdWH/M5tNA==} + engines: {node: '>= 0.4'} + dependencies: + call-bind: 1.0.5 + for-each: 0.3.3 + has-proto: 1.0.1 + is-typed-array: 1.1.12 + dev: true + + /typed-array-byte-offset@1.0.0: + resolution: {integrity: sha512-RD97prjEt9EL8YgAgpOkf3O4IF9lhJFr9g0htQkm0rchFp/Vx7LW5Q8fSXXub7BXAODyUQohRMyOc3faCPd0hg==} + engines: {node: '>= 0.4'} + dependencies: + available-typed-arrays: 1.0.5 + call-bind: 1.0.5 + for-each: 0.3.3 + has-proto: 1.0.1 + is-typed-array: 1.1.12 + dev: true + + /typed-array-length@1.0.4: + resolution: {integrity: sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng==} + dependencies: + call-bind: 1.0.5 + for-each: 0.3.3 + is-typed-array: 1.1.12 + dev: true + + /typescript@5.2.2: + resolution: {integrity: sha512-mI4WrpHsbCIcwT9cF4FZvr80QUeKvsUsUvKDoR+X/7XHQH98xYD8YHZg7ANtz2GtZt/CBq2QJ0thkGJMHfqc1w==} + engines: {node: '>=14.17'} + hasBin: true + + /unbox-primitive@1.0.2: + resolution: {integrity: sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==} + dependencies: + call-bind: 1.0.5 + has-bigints: 1.0.2 + has-symbols: 1.0.3 + which-boxed-primitive: 1.0.2 + dev: true + + /undici-types@5.26.5: + resolution: {integrity: sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==} + dev: true + + /untildify@4.0.0: + resolution: {integrity: sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw==} + engines: {node: '>=8'} + dev: true + + /update-browserslist-db@1.0.13(browserslist@4.22.1): + resolution: {integrity: sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==} + hasBin: true + peerDependencies: + browserslist: '>= 4.21.0' + dependencies: + browserslist: 4.22.1 + escalade: 3.1.1 + picocolors: 1.0.0 + dev: true + + /uri-js@4.4.1: + resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} + dependencies: + punycode: 2.3.1 + + /util-deprecate@1.0.2: + resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} + + /util-extend@1.0.3: + resolution: {integrity: sha512-mLs5zAK+ctllYBj+iAQvlDCwoxU/WDOUaJkcFudeiAX6OajC6BKXJUa9a+tbtkC11dz2Ufb7h0lyvIOVn4LADA==} + dev: false + + /util@0.10.4: + resolution: {integrity: sha512-0Pm9hTQ3se5ll1XihRic3FDIku70C+iHUdT/W926rSgHV5QgXsYbKZN8MSC3tJtSkhuROzvsQjAaFENRXr+19A==} + dependencies: + inherits: 2.0.3 + dev: true + + /uuid@9.0.1: + resolution: {integrity: sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==} + hasBin: true + dev: false + + /validate-npm-package-license@3.0.4: + resolution: {integrity: sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==} + dependencies: + spdx-correct: 3.2.0 + spdx-expression-parse: 3.0.1 + dev: false + + /vanilla-colorful@0.7.2: + resolution: {integrity: sha512-z2YZusTFC6KnLERx1cgoIRX2CjPRP0W75N+3CC6gbvdX5Ch47rZkEMGO2Xnf+IEmi3RiFLxS18gayMA27iU7Kg==} + dev: false + + /vite-svg-loader@5.1.0(vue@3.3.9): + resolution: {integrity: sha512-M/wqwtOEjgb956/+m5ZrYT/Iq6Hax0OakWbokj8+9PXOnB7b/4AxESHieEtnNEy7ZpjsjYW1/5nK8fATQMmRxw==} + peerDependencies: + vue: '>=3.2.13' + dependencies: + svgo: 3.0.4 + vue: 3.3.9(typescript@5.2.2) + dev: false + + /vite@4.5.0(@types/node@20.9.0): + resolution: {integrity: sha512-ulr8rNLA6rkyFAlVWw2q5YJ91v098AFQ2R0PRFwPzREXOUJQPtFUG0t+/ZikhaOCDqFoDhN6/v8Sq0o4araFAw==} + engines: {node: ^14.18.0 || >=16.0.0} + hasBin: true + peerDependencies: + '@types/node': '>= 14' + less: '*' + lightningcss: ^1.21.0 + sass: '*' + stylus: '*' + sugarss: '*' + terser: ^5.4.0 + peerDependenciesMeta: + '@types/node': + optional: true + less: + optional: true + lightningcss: + optional: true + sass: + optional: true + stylus: + optional: true + sugarss: + optional: true + terser: + optional: true + dependencies: + '@types/node': 20.9.0 + esbuild: 0.18.20 + postcss: 8.4.31 + rollup: 3.29.4 + optionalDependencies: + fsevents: 2.3.3 + dev: true + + /vscode-jsonrpc@8.2.0: + resolution: {integrity: sha512-C+r0eKJUIfiDIfwJhria30+TYWPtuHJXHtI7J0YlOmKAo7ogxP20T0zxB7HZQIFhIyvoBPwWskjxrvAtfjyZfA==} + engines: {node: '>=14.0.0'} + dev: false + + /vscode-languageserver-protocol@3.17.5: + resolution: {integrity: sha512-mb1bvRJN8SVznADSGWM9u/b07H7Ecg0I3OgXDuLdn307rl/J3A9YD6/eYOssqhecL27hK1IPZAsaqh00i/Jljg==} + dependencies: + vscode-jsonrpc: 8.2.0 + vscode-languageserver-types: 3.17.5 + dev: false + + /vscode-languageserver-textdocument@1.0.11: + resolution: {integrity: sha512-X+8T3GoiwTVlJbicx/sIAF+yuJAqz8VvwJyoMVhwEMoEKE/fkDmrqUgDMyBECcM2A2frVZIUj5HI/ErRXCfOeA==} + dev: false + + /vscode-languageserver-types@3.17.5: + resolution: {integrity: sha512-Ld1VelNuX9pdF39h2Hgaeb5hEZM2Z3jUrrMgWQAu82jMtZp7p3vJT3BzToKtZI7NgQssZje5o0zryOrhQvzQAg==} + dev: false + + /vscode-uri@3.0.8: + resolution: {integrity: sha512-AyFQ0EVmsOZOlAnxoFOGOq1SQDWAB7C6aqMGS23svWAllfOaxbuFvcT8D1i8z3Gyn8fraVeZNNmN6e9bxxXkKw==} + dev: false + + /vue-demi@0.13.11(vue@3.3.9): + resolution: {integrity: sha512-IR8HoEEGM65YY3ZJYAjMlKygDQn25D5ajNFNoKh9RSDMQtlzCxtfQjdQgv9jjK+m3377SsJXY8ysq8kLCZL25A==} + engines: {node: '>=12'} + hasBin: true + requiresBuild: true + peerDependencies: + '@vue/composition-api': ^1.0.0-rc.1 + vue: ^3.0.0-0 || ^2.6.0 + peerDependenciesMeta: + '@vue/composition-api': + optional: true + dependencies: + vue: 3.3.9(typescript@5.2.2) + dev: false + + /vue-demi@0.14.6(vue@3.3.9): + resolution: {integrity: sha512-8QA7wrYSHKaYgUxDA5ZC24w+eHm3sYCbp0EzcDwKqN3p6HqtTCGR/GVsPyZW92unff4UlcSh++lmqDWN3ZIq4w==} + engines: {node: '>=12'} + hasBin: true + requiresBuild: true + peerDependencies: + '@vue/composition-api': ^1.0.0-rc.1 + vue: ^3.0.0-0 || ^2.6.0 + peerDependenciesMeta: + '@vue/composition-api': + optional: true + dependencies: + vue: 3.3.9(typescript@5.2.2) + dev: false + + /vue-draggable-next@2.2.1(sortablejs@1.15.2)(vue@3.3.9): + resolution: {integrity: sha512-EAMS1IRHF0kZO0o5PMOinsQsXIqsrKT1hKmbICxG3UEtn7zLFkLxlAtajcCcUTisNvQ6TtCB5COjD9a1raNADw==} + peerDependencies: + sortablejs: ^1.14.0 + vue: ^3.2.2 + dependencies: + sortablejs: 1.15.2 + vue: 3.3.9(typescript@5.2.2) + dev: false + + /vue-eslint-parser@9.3.2(eslint@8.53.0): + resolution: {integrity: sha512-q7tWyCVaV9f8iQyIA5Mkj/S6AoJ9KBN8IeUSf3XEmBrOtxOZnfTg5s4KClbZBCK3GtnT/+RyCLZyDHuZwTuBjg==} + engines: {node: ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: '>=6.0.0' + dependencies: + debug: 4.3.4 + eslint: 8.53.0 + eslint-scope: 7.2.2 + eslint-visitor-keys: 3.4.3 + espree: 9.6.1 + esquery: 1.5.0 + lodash: 4.17.21 + semver: 7.5.4 + transitivePeerDependencies: + - supports-color + + /vue-router@4.2.5(vue@3.3.9): + resolution: {integrity: sha512-DIUpKcyg4+PTQKfFPX88UWhlagBEBEfJ5A8XDXRJLUnZOvcpMF8o/dnL90vpVkGaPbjvXazV/rC1qBKrZlFugw==} + peerDependencies: + vue: ^3.2.0 + dependencies: + '@vue/devtools-api': 6.5.1 + vue: 3.3.9(typescript@5.2.2) + dev: false + + /vue-template-compiler@2.7.15: + resolution: {integrity: sha512-yQxjxMptBL7UAog00O8sANud99C6wJF+7kgbcwqkvA38vCGF7HWE66w0ZFnS/kX5gSoJr/PQ4/oS3Ne2pW37Og==} + dependencies: + de-indent: 1.0.2 + he: 1.2.0 + dev: true + + /vue-tsc@1.8.22(typescript@5.2.2): + resolution: {integrity: sha512-j9P4kHtW6eEE08aS5McFZE/ivmipXy0JzrnTgbomfABMaVKx37kNBw//irL3+LlE3kOo63XpnRigyPC3w7+z+A==} + hasBin: true + peerDependencies: + typescript: '*' + dependencies: + '@volar/typescript': 1.10.10 + '@vue/language-core': 1.8.22(typescript@5.2.2) + semver: 7.5.4 + typescript: 5.2.2 + dev: true + + /vue@3.3.9(typescript@5.2.2): + resolution: {integrity: sha512-sy5sLCTR8m6tvUk1/ijri3Yqzgpdsmxgj6n6yl7GXXCXqVbmW2RCXe9atE4cEI6Iv7L89v5f35fZRRr5dChP9w==} + peerDependencies: + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@vue/compiler-dom': 3.3.9 + '@vue/compiler-sfc': 3.3.9 + '@vue/runtime-dom': 3.3.9 + '@vue/server-renderer': 3.3.9(vue@3.3.9) + '@vue/shared': 3.3.9 + typescript: 5.2.2 + + /which-boxed-primitive@1.0.2: + resolution: {integrity: sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==} + dependencies: + is-bigint: 1.0.4 + is-boolean-object: 1.1.2 + is-number-object: 1.0.7 + is-string: 1.0.7 + is-symbol: 1.0.4 + dev: true + + /which-typed-array@1.1.13: + resolution: {integrity: sha512-P5Nra0qjSncduVPEAr7xhoF5guty49ArDTwzJ/yNuPIbZppyRxFQsRCWrocxIY+CnMVG+qfbU2FmDKyvSGClow==} + engines: {node: '>= 0.4'} + dependencies: + available-typed-arrays: 1.0.5 + call-bind: 1.0.5 + for-each: 0.3.3 + gopd: 1.0.1 + has-tostringtag: 1.0.0 + dev: true + + /which@2.0.2: + resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} + engines: {node: '>= 8'} + hasBin: true + dependencies: + isexe: 2.0.0 + + /wmf@1.0.2: + resolution: {integrity: sha512-/p9K7bEh0Dj6WbXg4JG0xvLQmIadrner1bi45VMJTfnbVHsc7yIajZyoSoK60/dtVBs12Fm6WkUI5/3WAVsNMw==} + engines: {node: '>=0.8'} + dev: false + + /word@0.3.0: + resolution: {integrity: sha512-OELeY0Q61OXpdUfTp+oweA/vtLVg5VDOXh+3he3PNzLGG/y0oylSOC1xRVj0+l4vQ3tj/bB1HVHv1ocXkQceFA==} + engines: {node: '>=0.8'} + dev: false + + /wrap-ansi@7.0.0: + resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} + engines: {node: '>=10'} + dependencies: + ansi-styles: 4.3.0 + string-width: 4.2.3 + strip-ansi: 6.0.1 + dev: false + + /wrap-ansi@8.1.0: + resolution: {integrity: sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==} + engines: {node: '>=12'} + dependencies: + ansi-styles: 6.2.1 + string-width: 5.1.2 + strip-ansi: 7.1.0 + dev: false + + /wrappy@1.0.2: + resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} + + /xlsx@0.18.5: + resolution: {integrity: sha512-dmg3LCjBPHZnQp5/F/+nnTa+miPJxUXB6vtk42YjBBKayDNagxGEeIdWApkYPOf3Z3pm3k62Knjzp7lMeTEtFQ==} + engines: {node: '>=0.8'} + hasBin: true + dependencies: + adler-32: 1.3.1 + cfb: 1.2.2 + codepage: 1.15.0 + crc-32: 1.2.2 + ssf: 0.11.2 + wmf: 1.0.2 + word: 0.3.0 + dev: false + + /xml-name-validator@4.0.0: + resolution: {integrity: sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw==} + engines: {node: '>=12'} + + /yallist@4.0.0: + resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} + + /yaml@2.3.4: + resolution: {integrity: sha512-8aAvwVUSHpfEqTQ4w/KMlf3HcRdt50E5ODIQJBw1fQ5RL34xabzxtUlzTXVqc4rkZsPbvrXKWnABCD7kWSmocA==} + engines: {node: '>= 14'} + + /yocto-queue@0.1.0: + resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} + engines: {node: '>=10'} + + /zoom-vanilla.js@2.0.6: + resolution: {integrity: sha512-VKtOyMaNedVTi8uLpUO5JPFE/MgaELQ7BPjzX3APbvEJufr4JRj+c7f+APVcRMr2Rt9wcm7JeLmD/fjU2q5etw==} + dev: false diff --git a/gui/postcss.config.cjs b/gui/postcss.config.cjs new file mode 100644 index 0000000..9b33748 --- /dev/null +++ b/gui/postcss.config.cjs @@ -0,0 +1,9 @@ +module.exports = { + plugins: { + "postcss-import": {}, + "postcss-advanced-variables": {}, + "tailwindcss/nesting": {}, + tailwindcss: {}, + autoprefixer: {} + } +} diff --git a/gui/public/vite.svg b/gui/public/vite.svg new file mode 100644 index 0000000..e7b8dfb --- /dev/null +++ b/gui/public/vite.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/gui/src/Master.vue b/gui/src/Master.vue new file mode 100644 index 0000000..4dd0c93 --- /dev/null +++ b/gui/src/Master.vue @@ -0,0 +1,47 @@ + + + diff --git a/gui/src/assets/css/_public-sans.css b/gui/src/assets/css/_public-sans.css new file mode 100644 index 0000000..4273376 --- /dev/null +++ b/gui/src/assets/css/_public-sans.css @@ -0,0 +1,1926 @@ +/* cyrillic-ext */ +@font-face { + font-family: "Montserrat"; + font-style: italic; + font-weight: 100; + font-display: swap; + src: url(https://fonts.gstatic.com/s/montserrat/v25/JTUQjIg1_i6t8kCHKm459WxRxC7m0dR9pBOi.woff2) format("woff2"); + unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F; +} +/* cyrillic */ +@font-face { + font-family: "Montserrat"; + font-style: italic; + font-weight: 100; + font-display: swap; + src: url(https://fonts.gstatic.com/s/montserrat/v25/JTUQjIg1_i6t8kCHKm459WxRzS7m0dR9pBOi.woff2) format("woff2"); + unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116; +} +/* vietnamese */ +@font-face { + font-family: "Montserrat"; + font-style: italic; + font-weight: 100; + font-display: swap; + src: url(https://fonts.gstatic.com/s/montserrat/v25/JTUQjIg1_i6t8kCHKm459WxRxi7m0dR9pBOi.woff2) format("woff2"); + unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, + U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB; +} +/* latin-ext */ +@font-face { + font-family: "Montserrat"; + font-style: italic; + font-weight: 100; + font-display: swap; + src: url(https://fonts.gstatic.com/s/montserrat/v25/JTUQjIg1_i6t8kCHKm459WxRxy7m0dR9pBOi.woff2) format("woff2"); + unicode-range: U+0100-02AF, U+0304, U+0308, U+0329, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, + U+2C60-2C7F, U+A720-A7FF; +} +/* latin */ +@font-face { + font-family: "Montserrat"; + font-style: italic; + font-weight: 100; + font-display: swap; + src: url(https://fonts.gstatic.com/s/montserrat/v25/JTUQjIg1_i6t8kCHKm459WxRyS7m0dR9pA.woff2) format("woff2"); + unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, + U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; +} +/* cyrillic-ext */ +@font-face { + font-family: "Montserrat"; + font-style: italic; + font-weight: 200; + font-display: swap; + src: url(https://fonts.gstatic.com/s/montserrat/v25/JTUQjIg1_i6t8kCHKm459WxRxC7m0dR9pBOi.woff2) format("woff2"); + unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F; +} +/* cyrillic */ +@font-face { + font-family: "Montserrat"; + font-style: italic; + font-weight: 200; + font-display: swap; + src: url(https://fonts.gstatic.com/s/montserrat/v25/JTUQjIg1_i6t8kCHKm459WxRzS7m0dR9pBOi.woff2) format("woff2"); + unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116; +} +/* vietnamese */ +@font-face { + font-family: "Montserrat"; + font-style: italic; + font-weight: 200; + font-display: swap; + src: url(https://fonts.gstatic.com/s/montserrat/v25/JTUQjIg1_i6t8kCHKm459WxRxi7m0dR9pBOi.woff2) format("woff2"); + unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, + U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB; +} +/* latin-ext */ +@font-face { + font-family: "Montserrat"; + font-style: italic; + font-weight: 200; + font-display: swap; + src: url(https://fonts.gstatic.com/s/montserrat/v25/JTUQjIg1_i6t8kCHKm459WxRxy7m0dR9pBOi.woff2) format("woff2"); + unicode-range: U+0100-02AF, U+0304, U+0308, U+0329, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, + U+2C60-2C7F, U+A720-A7FF; +} +/* latin */ +@font-face { + font-family: "Montserrat"; + font-style: italic; + font-weight: 200; + font-display: swap; + src: url(https://fonts.gstatic.com/s/montserrat/v25/JTUQjIg1_i6t8kCHKm459WxRyS7m0dR9pA.woff2) format("woff2"); + unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, + U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; +} +/* cyrillic-ext */ +@font-face { + font-family: "Montserrat"; + font-style: italic; + font-weight: 300; + font-display: swap; + src: url(https://fonts.gstatic.com/s/montserrat/v25/JTUQjIg1_i6t8kCHKm459WxRxC7m0dR9pBOi.woff2) format("woff2"); + unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F; +} +/* cyrillic */ +@font-face { + font-family: "Montserrat"; + font-style: italic; + font-weight: 300; + font-display: swap; + src: url(https://fonts.gstatic.com/s/montserrat/v25/JTUQjIg1_i6t8kCHKm459WxRzS7m0dR9pBOi.woff2) format("woff2"); + unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116; +} +/* vietnamese */ +@font-face { + font-family: "Montserrat"; + font-style: italic; + font-weight: 300; + font-display: swap; + src: url(https://fonts.gstatic.com/s/montserrat/v25/JTUQjIg1_i6t8kCHKm459WxRxi7m0dR9pBOi.woff2) format("woff2"); + unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, + U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB; +} +/* latin-ext */ +@font-face { + font-family: "Montserrat"; + font-style: italic; + font-weight: 300; + font-display: swap; + src: url(https://fonts.gstatic.com/s/montserrat/v25/JTUQjIg1_i6t8kCHKm459WxRxy7m0dR9pBOi.woff2) format("woff2"); + unicode-range: U+0100-02AF, U+0304, U+0308, U+0329, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, + U+2C60-2C7F, U+A720-A7FF; +} +/* latin */ +@font-face { + font-family: "Montserrat"; + font-style: italic; + font-weight: 300; + font-display: swap; + src: url(https://fonts.gstatic.com/s/montserrat/v25/JTUQjIg1_i6t8kCHKm459WxRyS7m0dR9pA.woff2) format("woff2"); + unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, + U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; +} +/* cyrillic-ext */ +@font-face { + font-family: "Montserrat"; + font-style: italic; + font-weight: 400; + font-display: swap; + src: url(https://fonts.gstatic.com/s/montserrat/v25/JTUQjIg1_i6t8kCHKm459WxRxC7m0dR9pBOi.woff2) format("woff2"); + unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F; +} +/* cyrillic */ +@font-face { + font-family: "Montserrat"; + font-style: italic; + font-weight: 400; + font-display: swap; + src: url(https://fonts.gstatic.com/s/montserrat/v25/JTUQjIg1_i6t8kCHKm459WxRzS7m0dR9pBOi.woff2) format("woff2"); + unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116; +} +/* vietnamese */ +@font-face { + font-family: "Montserrat"; + font-style: italic; + font-weight: 400; + font-display: swap; + src: url(https://fonts.gstatic.com/s/montserrat/v25/JTUQjIg1_i6t8kCHKm459WxRxi7m0dR9pBOi.woff2) format("woff2"); + unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, + U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB; +} +/* latin-ext */ +@font-face { + font-family: "Montserrat"; + font-style: italic; + font-weight: 400; + font-display: swap; + src: url(https://fonts.gstatic.com/s/montserrat/v25/JTUQjIg1_i6t8kCHKm459WxRxy7m0dR9pBOi.woff2) format("woff2"); + unicode-range: U+0100-02AF, U+0304, U+0308, U+0329, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, + U+2C60-2C7F, U+A720-A7FF; +} +/* latin */ +@font-face { + font-family: "Montserrat"; + font-style: italic; + font-weight: 400; + font-display: swap; + src: url(https://fonts.gstatic.com/s/montserrat/v25/JTUQjIg1_i6t8kCHKm459WxRyS7m0dR9pA.woff2) format("woff2"); + unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, + U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; +} +/* cyrillic-ext */ +@font-face { + font-family: "Montserrat"; + font-style: italic; + font-weight: 500; + font-display: swap; + src: url(https://fonts.gstatic.com/s/montserrat/v25/JTUQjIg1_i6t8kCHKm459WxRxC7m0dR9pBOi.woff2) format("woff2"); + unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F; +} +/* cyrillic */ +@font-face { + font-family: "Montserrat"; + font-style: italic; + font-weight: 500; + font-display: swap; + src: url(https://fonts.gstatic.com/s/montserrat/v25/JTUQjIg1_i6t8kCHKm459WxRzS7m0dR9pBOi.woff2) format("woff2"); + unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116; +} +/* vietnamese */ +@font-face { + font-family: "Montserrat"; + font-style: italic; + font-weight: 500; + font-display: swap; + src: url(https://fonts.gstatic.com/s/montserrat/v25/JTUQjIg1_i6t8kCHKm459WxRxi7m0dR9pBOi.woff2) format("woff2"); + unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, + U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB; +} +/* latin-ext */ +@font-face { + font-family: "Montserrat"; + font-style: italic; + font-weight: 500; + font-display: swap; + src: url(https://fonts.gstatic.com/s/montserrat/v25/JTUQjIg1_i6t8kCHKm459WxRxy7m0dR9pBOi.woff2) format("woff2"); + unicode-range: U+0100-02AF, U+0304, U+0308, U+0329, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, + U+2C60-2C7F, U+A720-A7FF; +} +/* latin */ +@font-face { + font-family: "Montserrat"; + font-style: italic; + font-weight: 500; + font-display: swap; + src: url(https://fonts.gstatic.com/s/montserrat/v25/JTUQjIg1_i6t8kCHKm459WxRyS7m0dR9pA.woff2) format("woff2"); + unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, + U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; +} +/* cyrillic-ext */ +@font-face { + font-family: "Montserrat"; + font-style: italic; + font-weight: 600; + font-display: swap; + src: url(https://fonts.gstatic.com/s/montserrat/v25/JTUQjIg1_i6t8kCHKm459WxRxC7m0dR9pBOi.woff2) format("woff2"); + unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F; +} +/* cyrillic */ +@font-face { + font-family: "Montserrat"; + font-style: italic; + font-weight: 600; + font-display: swap; + src: url(https://fonts.gstatic.com/s/montserrat/v25/JTUQjIg1_i6t8kCHKm459WxRzS7m0dR9pBOi.woff2) format("woff2"); + unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116; +} +/* vietnamese */ +@font-face { + font-family: "Montserrat"; + font-style: italic; + font-weight: 600; + font-display: swap; + src: url(https://fonts.gstatic.com/s/montserrat/v25/JTUQjIg1_i6t8kCHKm459WxRxi7m0dR9pBOi.woff2) format("woff2"); + unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, + U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB; +} +/* latin-ext */ +@font-face { + font-family: "Montserrat"; + font-style: italic; + font-weight: 600; + font-display: swap; + src: url(https://fonts.gstatic.com/s/montserrat/v25/JTUQjIg1_i6t8kCHKm459WxRxy7m0dR9pBOi.woff2) format("woff2"); + unicode-range: U+0100-02AF, U+0304, U+0308, U+0329, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, + U+2C60-2C7F, U+A720-A7FF; +} +/* latin */ +@font-face { + font-family: "Montserrat"; + font-style: italic; + font-weight: 600; + font-display: swap; + src: url(https://fonts.gstatic.com/s/montserrat/v25/JTUQjIg1_i6t8kCHKm459WxRyS7m0dR9pA.woff2) format("woff2"); + unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, + U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; +} +/* cyrillic-ext */ +@font-face { + font-family: "Montserrat"; + font-style: italic; + font-weight: 700; + font-display: swap; + src: url(https://fonts.gstatic.com/s/montserrat/v25/JTUQjIg1_i6t8kCHKm459WxRxC7m0dR9pBOi.woff2) format("woff2"); + unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F; +} +/* cyrillic */ +@font-face { + font-family: "Montserrat"; + font-style: italic; + font-weight: 700; + font-display: swap; + src: url(https://fonts.gstatic.com/s/montserrat/v25/JTUQjIg1_i6t8kCHKm459WxRzS7m0dR9pBOi.woff2) format("woff2"); + unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116; +} +/* vietnamese */ +@font-face { + font-family: "Montserrat"; + font-style: italic; + font-weight: 700; + font-display: swap; + src: url(https://fonts.gstatic.com/s/montserrat/v25/JTUQjIg1_i6t8kCHKm459WxRxi7m0dR9pBOi.woff2) format("woff2"); + unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, + U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB; +} +/* latin-ext */ +@font-face { + font-family: "Montserrat"; + font-style: italic; + font-weight: 700; + font-display: swap; + src: url(https://fonts.gstatic.com/s/montserrat/v25/JTUQjIg1_i6t8kCHKm459WxRxy7m0dR9pBOi.woff2) format("woff2"); + unicode-range: U+0100-02AF, U+0304, U+0308, U+0329, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, + U+2C60-2C7F, U+A720-A7FF; +} +/* latin */ +@font-face { + font-family: "Montserrat"; + font-style: italic; + font-weight: 700; + font-display: swap; + src: url(https://fonts.gstatic.com/s/montserrat/v25/JTUQjIg1_i6t8kCHKm459WxRyS7m0dR9pA.woff2) format("woff2"); + unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, + U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; +} +/* cyrillic-ext */ +@font-face { + font-family: "Montserrat"; + font-style: italic; + font-weight: 800; + font-display: swap; + src: url(https://fonts.gstatic.com/s/montserrat/v25/JTUQjIg1_i6t8kCHKm459WxRxC7m0dR9pBOi.woff2) format("woff2"); + unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F; +} +/* cyrillic */ +@font-face { + font-family: "Montserrat"; + font-style: italic; + font-weight: 800; + font-display: swap; + src: url(https://fonts.gstatic.com/s/montserrat/v25/JTUQjIg1_i6t8kCHKm459WxRzS7m0dR9pBOi.woff2) format("woff2"); + unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116; +} +/* vietnamese */ +@font-face { + font-family: "Montserrat"; + font-style: italic; + font-weight: 800; + font-display: swap; + src: url(https://fonts.gstatic.com/s/montserrat/v25/JTUQjIg1_i6t8kCHKm459WxRxi7m0dR9pBOi.woff2) format("woff2"); + unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, + U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB; +} +/* latin-ext */ +@font-face { + font-family: "Montserrat"; + font-style: italic; + font-weight: 800; + font-display: swap; + src: url(https://fonts.gstatic.com/s/montserrat/v25/JTUQjIg1_i6t8kCHKm459WxRxy7m0dR9pBOi.woff2) format("woff2"); + unicode-range: U+0100-02AF, U+0304, U+0308, U+0329, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, + U+2C60-2C7F, U+A720-A7FF; +} +/* latin */ +@font-face { + font-family: "Montserrat"; + font-style: italic; + font-weight: 800; + font-display: swap; + src: url(https://fonts.gstatic.com/s/montserrat/v25/JTUQjIg1_i6t8kCHKm459WxRyS7m0dR9pA.woff2) format("woff2"); + unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, + U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; +} +/* cyrillic-ext */ +@font-face { + font-family: "Montserrat"; + font-style: italic; + font-weight: 900; + font-display: swap; + src: url(https://fonts.gstatic.com/s/montserrat/v25/JTUQjIg1_i6t8kCHKm459WxRxC7m0dR9pBOi.woff2) format("woff2"); + unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F; +} +/* cyrillic */ +@font-face { + font-family: "Montserrat"; + font-style: italic; + font-weight: 900; + font-display: swap; + src: url(https://fonts.gstatic.com/s/montserrat/v25/JTUQjIg1_i6t8kCHKm459WxRzS7m0dR9pBOi.woff2) format("woff2"); + unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116; +} +/* vietnamese */ +@font-face { + font-family: "Montserrat"; + font-style: italic; + font-weight: 900; + font-display: swap; + src: url(https://fonts.gstatic.com/s/montserrat/v25/JTUQjIg1_i6t8kCHKm459WxRxi7m0dR9pBOi.woff2) format("woff2"); + unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, + U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB; +} +/* latin-ext */ +@font-face { + font-family: "Montserrat"; + font-style: italic; + font-weight: 900; + font-display: swap; + src: url(https://fonts.gstatic.com/s/montserrat/v25/JTUQjIg1_i6t8kCHKm459WxRxy7m0dR9pBOi.woff2) format("woff2"); + unicode-range: U+0100-02AF, U+0304, U+0308, U+0329, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, + U+2C60-2C7F, U+A720-A7FF; +} +/* latin */ +@font-face { + font-family: "Montserrat"; + font-style: italic; + font-weight: 900; + font-display: swap; + src: url(https://fonts.gstatic.com/s/montserrat/v25/JTUQjIg1_i6t8kCHKm459WxRyS7m0dR9pA.woff2) format("woff2"); + unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, + U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; +} +/* cyrillic-ext */ +@font-face { + font-family: "Montserrat"; + font-style: normal; + font-weight: 100; + font-display: swap; + src: url(https://fonts.gstatic.com/s/montserrat/v25/JTUSjIg1_i6t8kCHKm459WRhyyTh89ZNpQ.woff2) format("woff2"); + unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F; +} +/* cyrillic */ +@font-face { + font-family: "Montserrat"; + font-style: normal; + font-weight: 100; + font-display: swap; + src: url(https://fonts.gstatic.com/s/montserrat/v25/JTUSjIg1_i6t8kCHKm459W1hyyTh89ZNpQ.woff2) format("woff2"); + unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116; +} +/* vietnamese */ +@font-face { + font-family: "Montserrat"; + font-style: normal; + font-weight: 100; + font-display: swap; + src: url(https://fonts.gstatic.com/s/montserrat/v25/JTUSjIg1_i6t8kCHKm459WZhyyTh89ZNpQ.woff2) format("woff2"); + unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, + U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB; +} +/* latin-ext */ +@font-face { + font-family: "Montserrat"; + font-style: normal; + font-weight: 100; + font-display: swap; + src: url(https://fonts.gstatic.com/s/montserrat/v25/JTUSjIg1_i6t8kCHKm459WdhyyTh89ZNpQ.woff2) format("woff2"); + unicode-range: U+0100-02AF, U+0304, U+0308, U+0329, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, + U+2C60-2C7F, U+A720-A7FF; +} +/* latin */ +@font-face { + font-family: "Montserrat"; + font-style: normal; + font-weight: 100; + font-display: swap; + src: url(https://fonts.gstatic.com/s/montserrat/v25/JTUSjIg1_i6t8kCHKm459WlhyyTh89Y.woff2) format("woff2"); + unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, + U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; +} +/* cyrillic-ext */ +@font-face { + font-family: "Montserrat"; + font-style: normal; + font-weight: 200; + font-display: swap; + src: url(https://fonts.gstatic.com/s/montserrat/v25/JTUSjIg1_i6t8kCHKm459WRhyyTh89ZNpQ.woff2) format("woff2"); + unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F; +} +/* cyrillic */ +@font-face { + font-family: "Montserrat"; + font-style: normal; + font-weight: 200; + font-display: swap; + src: url(https://fonts.gstatic.com/s/montserrat/v25/JTUSjIg1_i6t8kCHKm459W1hyyTh89ZNpQ.woff2) format("woff2"); + unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116; +} +/* vietnamese */ +@font-face { + font-family: "Montserrat"; + font-style: normal; + font-weight: 200; + font-display: swap; + src: url(https://fonts.gstatic.com/s/montserrat/v25/JTUSjIg1_i6t8kCHKm459WZhyyTh89ZNpQ.woff2) format("woff2"); + unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, + U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB; +} +/* latin-ext */ +@font-face { + font-family: "Montserrat"; + font-style: normal; + font-weight: 200; + font-display: swap; + src: url(https://fonts.gstatic.com/s/montserrat/v25/JTUSjIg1_i6t8kCHKm459WdhyyTh89ZNpQ.woff2) format("woff2"); + unicode-range: U+0100-02AF, U+0304, U+0308, U+0329, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, + U+2C60-2C7F, U+A720-A7FF; +} +/* latin */ +@font-face { + font-family: "Montserrat"; + font-style: normal; + font-weight: 200; + font-display: swap; + src: url(https://fonts.gstatic.com/s/montserrat/v25/JTUSjIg1_i6t8kCHKm459WlhyyTh89Y.woff2) format("woff2"); + unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, + U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; +} +/* cyrillic-ext */ +@font-face { + font-family: "Montserrat"; + font-style: normal; + font-weight: 300; + font-display: swap; + src: url(https://fonts.gstatic.com/s/montserrat/v25/JTUSjIg1_i6t8kCHKm459WRhyyTh89ZNpQ.woff2) format("woff2"); + unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F; +} +/* cyrillic */ +@font-face { + font-family: "Montserrat"; + font-style: normal; + font-weight: 300; + font-display: swap; + src: url(https://fonts.gstatic.com/s/montserrat/v25/JTUSjIg1_i6t8kCHKm459W1hyyTh89ZNpQ.woff2) format("woff2"); + unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116; +} +/* vietnamese */ +@font-face { + font-family: "Montserrat"; + font-style: normal; + font-weight: 300; + font-display: swap; + src: url(https://fonts.gstatic.com/s/montserrat/v25/JTUSjIg1_i6t8kCHKm459WZhyyTh89ZNpQ.woff2) format("woff2"); + unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, + U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB; +} +/* latin-ext */ +@font-face { + font-family: "Montserrat"; + font-style: normal; + font-weight: 300; + font-display: swap; + src: url(https://fonts.gstatic.com/s/montserrat/v25/JTUSjIg1_i6t8kCHKm459WdhyyTh89ZNpQ.woff2) format("woff2"); + unicode-range: U+0100-02AF, U+0304, U+0308, U+0329, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, + U+2C60-2C7F, U+A720-A7FF; +} +/* latin */ +@font-face { + font-family: "Montserrat"; + font-style: normal; + font-weight: 300; + font-display: swap; + src: url(https://fonts.gstatic.com/s/montserrat/v25/JTUSjIg1_i6t8kCHKm459WlhyyTh89Y.woff2) format("woff2"); + unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, + U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; +} +/* cyrillic-ext */ +@font-face { + font-family: "Montserrat"; + font-style: normal; + font-weight: 400; + font-display: swap; + src: url(https://fonts.gstatic.com/s/montserrat/v25/JTUSjIg1_i6t8kCHKm459WRhyyTh89ZNpQ.woff2) format("woff2"); + unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F; +} +/* cyrillic */ +@font-face { + font-family: "Montserrat"; + font-style: normal; + font-weight: 400; + font-display: swap; + src: url(https://fonts.gstatic.com/s/montserrat/v25/JTUSjIg1_i6t8kCHKm459W1hyyTh89ZNpQ.woff2) format("woff2"); + unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116; +} +/* vietnamese */ +@font-face { + font-family: "Montserrat"; + font-style: normal; + font-weight: 400; + font-display: swap; + src: url(https://fonts.gstatic.com/s/montserrat/v25/JTUSjIg1_i6t8kCHKm459WZhyyTh89ZNpQ.woff2) format("woff2"); + unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, + U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB; +} +/* latin-ext */ +@font-face { + font-family: "Montserrat"; + font-style: normal; + font-weight: 400; + font-display: swap; + src: url(https://fonts.gstatic.com/s/montserrat/v25/JTUSjIg1_i6t8kCHKm459WdhyyTh89ZNpQ.woff2) format("woff2"); + unicode-range: U+0100-02AF, U+0304, U+0308, U+0329, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, + U+2C60-2C7F, U+A720-A7FF; +} +/* latin */ +@font-face { + font-family: "Montserrat"; + font-style: normal; + font-weight: 400; + font-display: swap; + src: url(https://fonts.gstatic.com/s/montserrat/v25/JTUSjIg1_i6t8kCHKm459WlhyyTh89Y.woff2) format("woff2"); + unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, + U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; +} +/* cyrillic-ext */ +@font-face { + font-family: "Montserrat"; + font-style: normal; + font-weight: 500; + font-display: swap; + src: url(https://fonts.gstatic.com/s/montserrat/v25/JTUSjIg1_i6t8kCHKm459WRhyyTh89ZNpQ.woff2) format("woff2"); + unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F; +} +/* cyrillic */ +@font-face { + font-family: "Montserrat"; + font-style: normal; + font-weight: 500; + font-display: swap; + src: url(https://fonts.gstatic.com/s/montserrat/v25/JTUSjIg1_i6t8kCHKm459W1hyyTh89ZNpQ.woff2) format("woff2"); + unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116; +} +/* vietnamese */ +@font-face { + font-family: "Montserrat"; + font-style: normal; + font-weight: 500; + font-display: swap; + src: url(https://fonts.gstatic.com/s/montserrat/v25/JTUSjIg1_i6t8kCHKm459WZhyyTh89ZNpQ.woff2) format("woff2"); + unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, + U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB; +} +/* latin-ext */ +@font-face { + font-family: "Montserrat"; + font-style: normal; + font-weight: 500; + font-display: swap; + src: url(https://fonts.gstatic.com/s/montserrat/v25/JTUSjIg1_i6t8kCHKm459WdhyyTh89ZNpQ.woff2) format("woff2"); + unicode-range: U+0100-02AF, U+0304, U+0308, U+0329, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, + U+2C60-2C7F, U+A720-A7FF; +} +/* latin */ +@font-face { + font-family: "Montserrat"; + font-style: normal; + font-weight: 500; + font-display: swap; + src: url(https://fonts.gstatic.com/s/montserrat/v25/JTUSjIg1_i6t8kCHKm459WlhyyTh89Y.woff2) format("woff2"); + unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, + U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; +} +/* cyrillic-ext */ +@font-face { + font-family: "Montserrat"; + font-style: normal; + font-weight: 600; + font-display: swap; + src: url(https://fonts.gstatic.com/s/montserrat/v25/JTUSjIg1_i6t8kCHKm459WRhyyTh89ZNpQ.woff2) format("woff2"); + unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F; +} +/* cyrillic */ +@font-face { + font-family: "Montserrat"; + font-style: normal; + font-weight: 600; + font-display: swap; + src: url(https://fonts.gstatic.com/s/montserrat/v25/JTUSjIg1_i6t8kCHKm459W1hyyTh89ZNpQ.woff2) format("woff2"); + unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116; +} +/* vietnamese */ +@font-face { + font-family: "Montserrat"; + font-style: normal; + font-weight: 600; + font-display: swap; + src: url(https://fonts.gstatic.com/s/montserrat/v25/JTUSjIg1_i6t8kCHKm459WZhyyTh89ZNpQ.woff2) format("woff2"); + unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, + U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB; +} +/* latin-ext */ +@font-face { + font-family: "Montserrat"; + font-style: normal; + font-weight: 600; + font-display: swap; + src: url(https://fonts.gstatic.com/s/montserrat/v25/JTUSjIg1_i6t8kCHKm459WdhyyTh89ZNpQ.woff2) format("woff2"); + unicode-range: U+0100-02AF, U+0304, U+0308, U+0329, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, + U+2C60-2C7F, U+A720-A7FF; +} +/* latin */ +@font-face { + font-family: "Montserrat"; + font-style: normal; + font-weight: 600; + font-display: swap; + src: url(https://fonts.gstatic.com/s/montserrat/v25/JTUSjIg1_i6t8kCHKm459WlhyyTh89Y.woff2) format("woff2"); + unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, + U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; +} +/* cyrillic-ext */ +@font-face { + font-family: "Montserrat"; + font-style: normal; + font-weight: 700; + font-display: swap; + src: url(https://fonts.gstatic.com/s/montserrat/v25/JTUSjIg1_i6t8kCHKm459WRhyyTh89ZNpQ.woff2) format("woff2"); + unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F; +} +/* cyrillic */ +@font-face { + font-family: "Montserrat"; + font-style: normal; + font-weight: 700; + font-display: swap; + src: url(https://fonts.gstatic.com/s/montserrat/v25/JTUSjIg1_i6t8kCHKm459W1hyyTh89ZNpQ.woff2) format("woff2"); + unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116; +} +/* vietnamese */ +@font-face { + font-family: "Montserrat"; + font-style: normal; + font-weight: 700; + font-display: swap; + src: url(https://fonts.gstatic.com/s/montserrat/v25/JTUSjIg1_i6t8kCHKm459WZhyyTh89ZNpQ.woff2) format("woff2"); + unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, + U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB; +} +/* latin-ext */ +@font-face { + font-family: "Montserrat"; + font-style: normal; + font-weight: 700; + font-display: swap; + src: url(https://fonts.gstatic.com/s/montserrat/v25/JTUSjIg1_i6t8kCHKm459WdhyyTh89ZNpQ.woff2) format("woff2"); + unicode-range: U+0100-02AF, U+0304, U+0308, U+0329, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, + U+2C60-2C7F, U+A720-A7FF; +} +/* latin */ +@font-face { + font-family: "Montserrat"; + font-style: normal; + font-weight: 700; + font-display: swap; + src: url(https://fonts.gstatic.com/s/montserrat/v25/JTUSjIg1_i6t8kCHKm459WlhyyTh89Y.woff2) format("woff2"); + unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, + U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; +} +/* cyrillic-ext */ +@font-face { + font-family: "Montserrat"; + font-style: normal; + font-weight: 800; + font-display: swap; + src: url(https://fonts.gstatic.com/s/montserrat/v25/JTUSjIg1_i6t8kCHKm459WRhyyTh89ZNpQ.woff2) format("woff2"); + unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F; +} +/* cyrillic */ +@font-face { + font-family: "Montserrat"; + font-style: normal; + font-weight: 800; + font-display: swap; + src: url(https://fonts.gstatic.com/s/montserrat/v25/JTUSjIg1_i6t8kCHKm459W1hyyTh89ZNpQ.woff2) format("woff2"); + unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116; +} +/* vietnamese */ +@font-face { + font-family: "Montserrat"; + font-style: normal; + font-weight: 800; + font-display: swap; + src: url(https://fonts.gstatic.com/s/montserrat/v25/JTUSjIg1_i6t8kCHKm459WZhyyTh89ZNpQ.woff2) format("woff2"); + unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, + U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB; +} +/* latin-ext */ +@font-face { + font-family: "Montserrat"; + font-style: normal; + font-weight: 800; + font-display: swap; + src: url(https://fonts.gstatic.com/s/montserrat/v25/JTUSjIg1_i6t8kCHKm459WdhyyTh89ZNpQ.woff2) format("woff2"); + unicode-range: U+0100-02AF, U+0304, U+0308, U+0329, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, + U+2C60-2C7F, U+A720-A7FF; +} +/* latin */ +@font-face { + font-family: "Montserrat"; + font-style: normal; + font-weight: 800; + font-display: swap; + src: url(https://fonts.gstatic.com/s/montserrat/v25/JTUSjIg1_i6t8kCHKm459WlhyyTh89Y.woff2) format("woff2"); + unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, + U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; +} +/* cyrillic-ext */ +@font-face { + font-family: "Montserrat"; + font-style: normal; + font-weight: 900; + font-display: swap; + src: url(https://fonts.gstatic.com/s/montserrat/v25/JTUSjIg1_i6t8kCHKm459WRhyyTh89ZNpQ.woff2) format("woff2"); + unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F; +} +/* cyrillic */ +@font-face { + font-family: "Montserrat"; + font-style: normal; + font-weight: 900; + font-display: swap; + src: url(https://fonts.gstatic.com/s/montserrat/v25/JTUSjIg1_i6t8kCHKm459W1hyyTh89ZNpQ.woff2) format("woff2"); + unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116; +} +/* vietnamese */ +@font-face { + font-family: "Montserrat"; + font-style: normal; + font-weight: 900; + font-display: swap; + src: url(https://fonts.gstatic.com/s/montserrat/v25/JTUSjIg1_i6t8kCHKm459WZhyyTh89ZNpQ.woff2) format("woff2"); + unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, + U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB; +} +/* latin-ext */ +@font-face { + font-family: "Montserrat"; + font-style: normal; + font-weight: 900; + font-display: swap; + src: url(https://fonts.gstatic.com/s/montserrat/v25/JTUSjIg1_i6t8kCHKm459WdhyyTh89ZNpQ.woff2) format("woff2"); + unicode-range: U+0100-02AF, U+0304, U+0308, U+0329, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, + U+2C60-2C7F, U+A720-A7FF; +} +/* latin */ +@font-face { + font-family: "Montserrat"; + font-style: normal; + font-weight: 900; + font-display: swap; + src: url(https://fonts.gstatic.com/s/montserrat/v25/JTUSjIg1_i6t8kCHKm459WlhyyTh89Y.woff2) format("woff2"); + unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, + U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; +} +/* devanagari */ +@font-face { + font-family: "Poppins"; + font-style: italic; + font-weight: 100; + font-display: swap; + src: url(https://fonts.gstatic.com/s/poppins/v20/pxiAyp8kv8JHgFVrJJLmE0tDMPKhSkFEkm8.woff2) format("woff2"); + unicode-range: U+0900-097F, U+1CD0-1CF9, U+200C-200D, U+20A8, U+20B9, U+25CC, U+A830-A839, U+A8E0-A8FF; +} +/* latin-ext */ +@font-face { + font-family: "Poppins"; + font-style: italic; + font-weight: 100; + font-display: swap; + src: url(https://fonts.gstatic.com/s/poppins/v20/pxiAyp8kv8JHgFVrJJLmE0tMMPKhSkFEkm8.woff2) format("woff2"); + unicode-range: U+0100-02AF, U+0304, U+0308, U+0329, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, + U+2C60-2C7F, U+A720-A7FF; +} +/* latin */ +@font-face { + font-family: "Poppins"; + font-style: italic; + font-weight: 100; + font-display: swap; + src: url(https://fonts.gstatic.com/s/poppins/v20/pxiAyp8kv8JHgFVrJJLmE0tCMPKhSkFE.woff2) format("woff2"); + unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, + U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; +} +/* devanagari */ +@font-face { + font-family: "Poppins"; + font-style: italic; + font-weight: 200; + font-display: swap; + src: url(https://fonts.gstatic.com/s/poppins/v20/pxiDyp8kv8JHgFVrJJLmv1pVFteOYktMqlap.woff2) format("woff2"); + unicode-range: U+0900-097F, U+1CD0-1CF9, U+200C-200D, U+20A8, U+20B9, U+25CC, U+A830-A839, U+A8E0-A8FF; +} +/* latin-ext */ +@font-face { + font-family: "Poppins"; + font-style: italic; + font-weight: 200; + font-display: swap; + src: url(https://fonts.gstatic.com/s/poppins/v20/pxiDyp8kv8JHgFVrJJLmv1pVGdeOYktMqlap.woff2) format("woff2"); + unicode-range: U+0100-02AF, U+0304, U+0308, U+0329, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, + U+2C60-2C7F, U+A720-A7FF; +} +/* latin */ +@font-face { + font-family: "Poppins"; + font-style: italic; + font-weight: 200; + font-display: swap; + src: url(https://fonts.gstatic.com/s/poppins/v20/pxiDyp8kv8JHgFVrJJLmv1pVF9eOYktMqg.woff2) format("woff2"); + unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, + U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; +} +/* devanagari */ +@font-face { + font-family: "Poppins"; + font-style: italic; + font-weight: 300; + font-display: swap; + src: url(https://fonts.gstatic.com/s/poppins/v20/pxiDyp8kv8JHgFVrJJLm21lVFteOYktMqlap.woff2) format("woff2"); + unicode-range: U+0900-097F, U+1CD0-1CF9, U+200C-200D, U+20A8, U+20B9, U+25CC, U+A830-A839, U+A8E0-A8FF; +} +/* latin-ext */ +@font-face { + font-family: "Poppins"; + font-style: italic; + font-weight: 300; + font-display: swap; + src: url(https://fonts.gstatic.com/s/poppins/v20/pxiDyp8kv8JHgFVrJJLm21lVGdeOYktMqlap.woff2) format("woff2"); + unicode-range: U+0100-02AF, U+0304, U+0308, U+0329, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, + U+2C60-2C7F, U+A720-A7FF; +} +/* latin */ +@font-face { + font-family: "Poppins"; + font-style: italic; + font-weight: 300; + font-display: swap; + src: url(https://fonts.gstatic.com/s/poppins/v20/pxiDyp8kv8JHgFVrJJLm21lVF9eOYktMqg.woff2) format("woff2"); + unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, + U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; +} +/* devanagari */ +@font-face { + font-family: "Poppins"; + font-style: italic; + font-weight: 400; + font-display: swap; + src: url(https://fonts.gstatic.com/s/poppins/v20/pxiGyp8kv8JHgFVrJJLucXtAOvWDSHFF.woff2) format("woff2"); + unicode-range: U+0900-097F, U+1CD0-1CF9, U+200C-200D, U+20A8, U+20B9, U+25CC, U+A830-A839, U+A8E0-A8FF; +} +/* latin-ext */ +@font-face { + font-family: "Poppins"; + font-style: italic; + font-weight: 400; + font-display: swap; + src: url(https://fonts.gstatic.com/s/poppins/v20/pxiGyp8kv8JHgFVrJJLufntAOvWDSHFF.woff2) format("woff2"); + unicode-range: U+0100-02AF, U+0304, U+0308, U+0329, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, + U+2C60-2C7F, U+A720-A7FF; +} +/* latin */ +@font-face { + font-family: "Poppins"; + font-style: italic; + font-weight: 400; + font-display: swap; + src: url(https://fonts.gstatic.com/s/poppins/v20/pxiGyp8kv8JHgFVrJJLucHtAOvWDSA.woff2) format("woff2"); + unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, + U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; +} +/* devanagari */ +@font-face { + font-family: "Poppins"; + font-style: italic; + font-weight: 500; + font-display: swap; + src: url(https://fonts.gstatic.com/s/poppins/v20/pxiDyp8kv8JHgFVrJJLmg1hVFteOYktMqlap.woff2) format("woff2"); + unicode-range: U+0900-097F, U+1CD0-1CF9, U+200C-200D, U+20A8, U+20B9, U+25CC, U+A830-A839, U+A8E0-A8FF; +} +/* latin-ext */ +@font-face { + font-family: "Poppins"; + font-style: italic; + font-weight: 500; + font-display: swap; + src: url(https://fonts.gstatic.com/s/poppins/v20/pxiDyp8kv8JHgFVrJJLmg1hVGdeOYktMqlap.woff2) format("woff2"); + unicode-range: U+0100-02AF, U+0304, U+0308, U+0329, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, + U+2C60-2C7F, U+A720-A7FF; +} +/* latin */ +@font-face { + font-family: "Poppins"; + font-style: italic; + font-weight: 500; + font-display: swap; + src: url(https://fonts.gstatic.com/s/poppins/v20/pxiDyp8kv8JHgFVrJJLmg1hVF9eOYktMqg.woff2) format("woff2"); + unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, + U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; +} +/* devanagari */ +@font-face { + font-family: "Poppins"; + font-style: italic; + font-weight: 600; + font-display: swap; + src: url(https://fonts.gstatic.com/s/poppins/v20/pxiDyp8kv8JHgFVrJJLmr19VFteOYktMqlap.woff2) format("woff2"); + unicode-range: U+0900-097F, U+1CD0-1CF9, U+200C-200D, U+20A8, U+20B9, U+25CC, U+A830-A839, U+A8E0-A8FF; +} +/* latin-ext */ +@font-face { + font-family: "Poppins"; + font-style: italic; + font-weight: 600; + font-display: swap; + src: url(https://fonts.gstatic.com/s/poppins/v20/pxiDyp8kv8JHgFVrJJLmr19VGdeOYktMqlap.woff2) format("woff2"); + unicode-range: U+0100-02AF, U+0304, U+0308, U+0329, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, + U+2C60-2C7F, U+A720-A7FF; +} +/* latin */ +@font-face { + font-family: "Poppins"; + font-style: italic; + font-weight: 600; + font-display: swap; + src: url(https://fonts.gstatic.com/s/poppins/v20/pxiDyp8kv8JHgFVrJJLmr19VF9eOYktMqg.woff2) format("woff2"); + unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, + U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; +} +/* devanagari */ +@font-face { + font-family: "Poppins"; + font-style: italic; + font-weight: 700; + font-display: swap; + src: url(https://fonts.gstatic.com/s/poppins/v20/pxiDyp8kv8JHgFVrJJLmy15VFteOYktMqlap.woff2) format("woff2"); + unicode-range: U+0900-097F, U+1CD0-1CF9, U+200C-200D, U+20A8, U+20B9, U+25CC, U+A830-A839, U+A8E0-A8FF; +} +/* latin-ext */ +@font-face { + font-family: "Poppins"; + font-style: italic; + font-weight: 700; + font-display: swap; + src: url(https://fonts.gstatic.com/s/poppins/v20/pxiDyp8kv8JHgFVrJJLmy15VGdeOYktMqlap.woff2) format("woff2"); + unicode-range: U+0100-02AF, U+0304, U+0308, U+0329, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, + U+2C60-2C7F, U+A720-A7FF; +} +/* latin */ +@font-face { + font-family: "Poppins"; + font-style: italic; + font-weight: 700; + font-display: swap; + src: url(https://fonts.gstatic.com/s/poppins/v20/pxiDyp8kv8JHgFVrJJLmy15VF9eOYktMqg.woff2) format("woff2"); + unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, + U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; +} +/* devanagari */ +@font-face { + font-family: "Poppins"; + font-style: italic; + font-weight: 800; + font-display: swap; + src: url(https://fonts.gstatic.com/s/poppins/v20/pxiDyp8kv8JHgFVrJJLm111VFteOYktMqlap.woff2) format("woff2"); + unicode-range: U+0900-097F, U+1CD0-1CF9, U+200C-200D, U+20A8, U+20B9, U+25CC, U+A830-A839, U+A8E0-A8FF; +} +/* latin-ext */ +@font-face { + font-family: "Poppins"; + font-style: italic; + font-weight: 800; + font-display: swap; + src: url(https://fonts.gstatic.com/s/poppins/v20/pxiDyp8kv8JHgFVrJJLm111VGdeOYktMqlap.woff2) format("woff2"); + unicode-range: U+0100-02AF, U+0304, U+0308, U+0329, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, + U+2C60-2C7F, U+A720-A7FF; +} +/* latin */ +@font-face { + font-family: "Poppins"; + font-style: italic; + font-weight: 800; + font-display: swap; + src: url(https://fonts.gstatic.com/s/poppins/v20/pxiDyp8kv8JHgFVrJJLm111VF9eOYktMqg.woff2) format("woff2"); + unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, + U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; +} +/* devanagari */ +@font-face { + font-family: "Poppins"; + font-style: italic; + font-weight: 900; + font-display: swap; + src: url(https://fonts.gstatic.com/s/poppins/v20/pxiDyp8kv8JHgFVrJJLm81xVFteOYktMqlap.woff2) format("woff2"); + unicode-range: U+0900-097F, U+1CD0-1CF9, U+200C-200D, U+20A8, U+20B9, U+25CC, U+A830-A839, U+A8E0-A8FF; +} +/* latin-ext */ +@font-face { + font-family: "Poppins"; + font-style: italic; + font-weight: 900; + font-display: swap; + src: url(https://fonts.gstatic.com/s/poppins/v20/pxiDyp8kv8JHgFVrJJLm81xVGdeOYktMqlap.woff2) format("woff2"); + unicode-range: U+0100-02AF, U+0304, U+0308, U+0329, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, + U+2C60-2C7F, U+A720-A7FF; +} +/* latin */ +@font-face { + font-family: "Poppins"; + font-style: italic; + font-weight: 900; + font-display: swap; + src: url(https://fonts.gstatic.com/s/poppins/v20/pxiDyp8kv8JHgFVrJJLm81xVF9eOYktMqg.woff2) format("woff2"); + unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, + U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; +} +/* devanagari */ +@font-face { + font-family: "Poppins"; + font-style: normal; + font-weight: 100; + font-display: swap; + src: url(https://fonts.gstatic.com/s/poppins/v20/pxiGyp8kv8JHgFVrLPTucXtAOvWDSHFF.woff2) format("woff2"); + unicode-range: U+0900-097F, U+1CD0-1CF9, U+200C-200D, U+20A8, U+20B9, U+25CC, U+A830-A839, U+A8E0-A8FF; +} +/* latin-ext */ +@font-face { + font-family: "Poppins"; + font-style: normal; + font-weight: 100; + font-display: swap; + src: url(https://fonts.gstatic.com/s/poppins/v20/pxiGyp8kv8JHgFVrLPTufntAOvWDSHFF.woff2) format("woff2"); + unicode-range: U+0100-02AF, U+0304, U+0308, U+0329, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, + U+2C60-2C7F, U+A720-A7FF; +} +/* latin */ +@font-face { + font-family: "Poppins"; + font-style: normal; + font-weight: 100; + font-display: swap; + src: url(https://fonts.gstatic.com/s/poppins/v20/pxiGyp8kv8JHgFVrLPTucHtAOvWDSA.woff2) format("woff2"); + unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, + U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; +} +/* devanagari */ +@font-face { + font-family: "Poppins"; + font-style: normal; + font-weight: 200; + font-display: swap; + src: url(https://fonts.gstatic.com/s/poppins/v20/pxiByp8kv8JHgFVrLFj_Z11lFd2JQEl8qw.woff2) format("woff2"); + unicode-range: U+0900-097F, U+1CD0-1CF9, U+200C-200D, U+20A8, U+20B9, U+25CC, U+A830-A839, U+A8E0-A8FF; +} +/* latin-ext */ +@font-face { + font-family: "Poppins"; + font-style: normal; + font-weight: 200; + font-display: swap; + src: url(https://fonts.gstatic.com/s/poppins/v20/pxiByp8kv8JHgFVrLFj_Z1JlFd2JQEl8qw.woff2) format("woff2"); + unicode-range: U+0100-02AF, U+0304, U+0308, U+0329, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, + U+2C60-2C7F, U+A720-A7FF; +} +/* latin */ +@font-face { + font-family: "Poppins"; + font-style: normal; + font-weight: 200; + font-display: swap; + src: url(https://fonts.gstatic.com/s/poppins/v20/pxiByp8kv8JHgFVrLFj_Z1xlFd2JQEk.woff2) format("woff2"); + unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, + U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; +} +/* devanagari */ +@font-face { + font-family: "Poppins"; + font-style: normal; + font-weight: 300; + font-display: swap; + src: url(https://fonts.gstatic.com/s/poppins/v20/pxiByp8kv8JHgFVrLDz8Z11lFd2JQEl8qw.woff2) format("woff2"); + unicode-range: U+0900-097F, U+1CD0-1CF9, U+200C-200D, U+20A8, U+20B9, U+25CC, U+A830-A839, U+A8E0-A8FF; +} +/* latin-ext */ +@font-face { + font-family: "Poppins"; + font-style: normal; + font-weight: 300; + font-display: swap; + src: url(https://fonts.gstatic.com/s/poppins/v20/pxiByp8kv8JHgFVrLDz8Z1JlFd2JQEl8qw.woff2) format("woff2"); + unicode-range: U+0100-02AF, U+0304, U+0308, U+0329, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, + U+2C60-2C7F, U+A720-A7FF; +} +/* latin */ +@font-face { + font-family: "Poppins"; + font-style: normal; + font-weight: 300; + font-display: swap; + src: url(https://fonts.gstatic.com/s/poppins/v20/pxiByp8kv8JHgFVrLDz8Z1xlFd2JQEk.woff2) format("woff2"); + unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, + U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; +} +/* devanagari */ +@font-face { + font-family: "Poppins"; + font-style: normal; + font-weight: 400; + font-display: swap; + src: url(https://fonts.gstatic.com/s/poppins/v20/pxiEyp8kv8JHgFVrJJbecnFHGPezSQ.woff2) format("woff2"); + unicode-range: U+0900-097F, U+1CD0-1CF9, U+200C-200D, U+20A8, U+20B9, U+25CC, U+A830-A839, U+A8E0-A8FF; +} +/* latin-ext */ +@font-face { + font-family: "Poppins"; + font-style: normal; + font-weight: 400; + font-display: swap; + src: url(https://fonts.gstatic.com/s/poppins/v20/pxiEyp8kv8JHgFVrJJnecnFHGPezSQ.woff2) format("woff2"); + unicode-range: U+0100-02AF, U+0304, U+0308, U+0329, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, + U+2C60-2C7F, U+A720-A7FF; +} +/* latin */ +@font-face { + font-family: "Poppins"; + font-style: normal; + font-weight: 400; + font-display: swap; + src: url(https://fonts.gstatic.com/s/poppins/v20/pxiEyp8kv8JHgFVrJJfecnFHGPc.woff2) format("woff2"); + unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, + U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; +} +/* devanagari */ +@font-face { + font-family: "Poppins"; + font-style: normal; + font-weight: 500; + font-display: swap; + src: url(https://fonts.gstatic.com/s/poppins/v20/pxiByp8kv8JHgFVrLGT9Z11lFd2JQEl8qw.woff2) format("woff2"); + unicode-range: U+0900-097F, U+1CD0-1CF9, U+200C-200D, U+20A8, U+20B9, U+25CC, U+A830-A839, U+A8E0-A8FF; +} +/* latin-ext */ +@font-face { + font-family: "Poppins"; + font-style: normal; + font-weight: 500; + font-display: swap; + src: url(https://fonts.gstatic.com/s/poppins/v20/pxiByp8kv8JHgFVrLGT9Z1JlFd2JQEl8qw.woff2) format("woff2"); + unicode-range: U+0100-02AF, U+0304, U+0308, U+0329, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, + U+2C60-2C7F, U+A720-A7FF; +} +/* latin */ +@font-face { + font-family: "Poppins"; + font-style: normal; + font-weight: 500; + font-display: swap; + src: url(https://fonts.gstatic.com/s/poppins/v20/pxiByp8kv8JHgFVrLGT9Z1xlFd2JQEk.woff2) format("woff2"); + unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, + U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; +} +/* devanagari */ +@font-face { + font-family: "Poppins"; + font-style: normal; + font-weight: 600; + font-display: swap; + src: url(https://fonts.gstatic.com/s/poppins/v20/pxiByp8kv8JHgFVrLEj6Z11lFd2JQEl8qw.woff2) format("woff2"); + unicode-range: U+0900-097F, U+1CD0-1CF9, U+200C-200D, U+20A8, U+20B9, U+25CC, U+A830-A839, U+A8E0-A8FF; +} +/* latin-ext */ +@font-face { + font-family: "Poppins"; + font-style: normal; + font-weight: 600; + font-display: swap; + src: url(https://fonts.gstatic.com/s/poppins/v20/pxiByp8kv8JHgFVrLEj6Z1JlFd2JQEl8qw.woff2) format("woff2"); + unicode-range: U+0100-02AF, U+0304, U+0308, U+0329, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, + U+2C60-2C7F, U+A720-A7FF; +} +/* latin */ +@font-face { + font-family: "Poppins"; + font-style: normal; + font-weight: 600; + font-display: swap; + src: url(https://fonts.gstatic.com/s/poppins/v20/pxiByp8kv8JHgFVrLEj6Z1xlFd2JQEk.woff2) format("woff2"); + unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, + U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; +} +/* devanagari */ +@font-face { + font-family: "Poppins"; + font-style: normal; + font-weight: 700; + font-display: swap; + src: url(https://fonts.gstatic.com/s/poppins/v20/pxiByp8kv8JHgFVrLCz7Z11lFd2JQEl8qw.woff2) format("woff2"); + unicode-range: U+0900-097F, U+1CD0-1CF9, U+200C-200D, U+20A8, U+20B9, U+25CC, U+A830-A839, U+A8E0-A8FF; +} +/* latin-ext */ +@font-face { + font-family: "Poppins"; + font-style: normal; + font-weight: 700; + font-display: swap; + src: url(https://fonts.gstatic.com/s/poppins/v20/pxiByp8kv8JHgFVrLCz7Z1JlFd2JQEl8qw.woff2) format("woff2"); + unicode-range: U+0100-02AF, U+0304, U+0308, U+0329, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, + U+2C60-2C7F, U+A720-A7FF; +} +/* latin */ +@font-face { + font-family: "Poppins"; + font-style: normal; + font-weight: 700; + font-display: swap; + src: url(https://fonts.gstatic.com/s/poppins/v20/pxiByp8kv8JHgFVrLCz7Z1xlFd2JQEk.woff2) format("woff2"); + unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, + U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; +} +/* devanagari */ +@font-face { + font-family: "Poppins"; + font-style: normal; + font-weight: 800; + font-display: swap; + src: url(https://fonts.gstatic.com/s/poppins/v20/pxiByp8kv8JHgFVrLDD4Z11lFd2JQEl8qw.woff2) format("woff2"); + unicode-range: U+0900-097F, U+1CD0-1CF9, U+200C-200D, U+20A8, U+20B9, U+25CC, U+A830-A839, U+A8E0-A8FF; +} +/* latin-ext */ +@font-face { + font-family: "Poppins"; + font-style: normal; + font-weight: 800; + font-display: swap; + src: url(https://fonts.gstatic.com/s/poppins/v20/pxiByp8kv8JHgFVrLDD4Z1JlFd2JQEl8qw.woff2) format("woff2"); + unicode-range: U+0100-02AF, U+0304, U+0308, U+0329, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, + U+2C60-2C7F, U+A720-A7FF; +} +/* latin */ +@font-face { + font-family: "Poppins"; + font-style: normal; + font-weight: 800; + font-display: swap; + src: url(https://fonts.gstatic.com/s/poppins/v20/pxiByp8kv8JHgFVrLDD4Z1xlFd2JQEk.woff2) format("woff2"); + unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, + U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; +} +/* devanagari */ +@font-face { + font-family: "Poppins"; + font-style: normal; + font-weight: 900; + font-display: swap; + src: url(https://fonts.gstatic.com/s/poppins/v20/pxiByp8kv8JHgFVrLBT5Z11lFd2JQEl8qw.woff2) format("woff2"); + unicode-range: U+0900-097F, U+1CD0-1CF9, U+200C-200D, U+20A8, U+20B9, U+25CC, U+A830-A839, U+A8E0-A8FF; +} +/* latin-ext */ +@font-face { + font-family: "Poppins"; + font-style: normal; + font-weight: 900; + font-display: swap; + src: url(https://fonts.gstatic.com/s/poppins/v20/pxiByp8kv8JHgFVrLBT5Z1JlFd2JQEl8qw.woff2) format("woff2"); + unicode-range: U+0100-02AF, U+0304, U+0308, U+0329, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, + U+2C60-2C7F, U+A720-A7FF; +} +/* latin */ +@font-face { + font-family: "Poppins"; + font-style: normal; + font-weight: 900; + font-display: swap; + src: url(https://fonts.gstatic.com/s/poppins/v20/pxiByp8kv8JHgFVrLBT5Z1xlFd2JQEk.woff2) format("woff2"); + unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, + U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; +} +/* vietnamese */ +@font-face { + font-family: "Public Sans"; + font-style: italic; + font-weight: 100; + font-display: swap; + src: url(https://fonts.gstatic.com/s/publicsans/v14/ijwTs572Xtc6ZYQws9YVwnNDTJPax8s3JimW3w.woff2) format("woff2"); + unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, + U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB; +} +/* latin-ext */ +@font-face { + font-family: "Public Sans"; + font-style: italic; + font-weight: 100; + font-display: swap; + src: url(https://fonts.gstatic.com/s/publicsans/v14/ijwTs572Xtc6ZYQws9YVwnNDTJLax8s3JimW3w.woff2) format("woff2"); + unicode-range: U+0100-02AF, U+0304, U+0308, U+0329, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, + U+2C60-2C7F, U+A720-A7FF; +} +/* latin */ +@font-face { + font-family: "Public Sans"; + font-style: italic; + font-weight: 100; + font-display: swap; + src: url(https://fonts.gstatic.com/s/publicsans/v14/ijwTs572Xtc6ZYQws9YVwnNDTJzax8s3Jik.woff2) format("woff2"); + unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, + U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; +} +/* vietnamese */ +@font-face { + font-family: "Public Sans"; + font-style: italic; + font-weight: 200; + font-display: swap; + src: url(https://fonts.gstatic.com/s/publicsans/v14/ijwTs572Xtc6ZYQws9YVwnNDTJPax8s3JimW3w.woff2) format("woff2"); + unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, + U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB; +} +/* latin-ext */ +@font-face { + font-family: "Public Sans"; + font-style: italic; + font-weight: 200; + font-display: swap; + src: url(https://fonts.gstatic.com/s/publicsans/v14/ijwTs572Xtc6ZYQws9YVwnNDTJLax8s3JimW3w.woff2) format("woff2"); + unicode-range: U+0100-02AF, U+0304, U+0308, U+0329, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, + U+2C60-2C7F, U+A720-A7FF; +} +/* latin */ +@font-face { + font-family: "Public Sans"; + font-style: italic; + font-weight: 200; + font-display: swap; + src: url(https://fonts.gstatic.com/s/publicsans/v14/ijwTs572Xtc6ZYQws9YVwnNDTJzax8s3Jik.woff2) format("woff2"); + unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, + U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; +} +/* vietnamese */ +@font-face { + font-family: "Public Sans"; + font-style: italic; + font-weight: 300; + font-display: swap; + src: url(https://fonts.gstatic.com/s/publicsans/v14/ijwTs572Xtc6ZYQws9YVwnNDTJPax8s3JimW3w.woff2) format("woff2"); + unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, + U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB; +} +/* latin-ext */ +@font-face { + font-family: "Public Sans"; + font-style: italic; + font-weight: 300; + font-display: swap; + src: url(https://fonts.gstatic.com/s/publicsans/v14/ijwTs572Xtc6ZYQws9YVwnNDTJLax8s3JimW3w.woff2) format("woff2"); + unicode-range: U+0100-02AF, U+0304, U+0308, U+0329, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, + U+2C60-2C7F, U+A720-A7FF; +} +/* latin */ +@font-face { + font-family: "Public Sans"; + font-style: italic; + font-weight: 300; + font-display: swap; + src: url(https://fonts.gstatic.com/s/publicsans/v14/ijwTs572Xtc6ZYQws9YVwnNDTJzax8s3Jik.woff2) format("woff2"); + unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, + U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; +} +/* vietnamese */ +@font-face { + font-family: "Public Sans"; + font-style: italic; + font-weight: 400; + font-display: swap; + src: url(https://fonts.gstatic.com/s/publicsans/v14/ijwTs572Xtc6ZYQws9YVwnNDTJPax8s3JimW3w.woff2) format("woff2"); + unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, + U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB; +} +/* latin-ext */ +@font-face { + font-family: "Public Sans"; + font-style: italic; + font-weight: 400; + font-display: swap; + src: url(https://fonts.gstatic.com/s/publicsans/v14/ijwTs572Xtc6ZYQws9YVwnNDTJLax8s3JimW3w.woff2) format("woff2"); + unicode-range: U+0100-02AF, U+0304, U+0308, U+0329, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, + U+2C60-2C7F, U+A720-A7FF; +} +/* latin */ +@font-face { + font-family: "Public Sans"; + font-style: italic; + font-weight: 400; + font-display: swap; + src: url(https://fonts.gstatic.com/s/publicsans/v14/ijwTs572Xtc6ZYQws9YVwnNDTJzax8s3Jik.woff2) format("woff2"); + unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, + U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; +} +/* vietnamese */ +@font-face { + font-family: "Public Sans"; + font-style: italic; + font-weight: 500; + font-display: swap; + src: url(https://fonts.gstatic.com/s/publicsans/v14/ijwTs572Xtc6ZYQws9YVwnNDTJPax8s3JimW3w.woff2) format("woff2"); + unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, + U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB; +} +/* latin-ext */ +@font-face { + font-family: "Public Sans"; + font-style: italic; + font-weight: 500; + font-display: swap; + src: url(https://fonts.gstatic.com/s/publicsans/v14/ijwTs572Xtc6ZYQws9YVwnNDTJLax8s3JimW3w.woff2) format("woff2"); + unicode-range: U+0100-02AF, U+0304, U+0308, U+0329, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, + U+2C60-2C7F, U+A720-A7FF; +} +/* latin */ +@font-face { + font-family: "Public Sans"; + font-style: italic; + font-weight: 500; + font-display: swap; + src: url(https://fonts.gstatic.com/s/publicsans/v14/ijwTs572Xtc6ZYQws9YVwnNDTJzax8s3Jik.woff2) format("woff2"); + unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, + U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; +} +/* vietnamese */ +@font-face { + font-family: "Public Sans"; + font-style: italic; + font-weight: 600; + font-display: swap; + src: url(https://fonts.gstatic.com/s/publicsans/v14/ijwTs572Xtc6ZYQws9YVwnNDTJPax8s3JimW3w.woff2) format("woff2"); + unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, + U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB; +} +/* latin-ext */ +@font-face { + font-family: "Public Sans"; + font-style: italic; + font-weight: 600; + font-display: swap; + src: url(https://fonts.gstatic.com/s/publicsans/v14/ijwTs572Xtc6ZYQws9YVwnNDTJLax8s3JimW3w.woff2) format("woff2"); + unicode-range: U+0100-02AF, U+0304, U+0308, U+0329, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, + U+2C60-2C7F, U+A720-A7FF; +} +/* latin */ +@font-face { + font-family: "Public Sans"; + font-style: italic; + font-weight: 600; + font-display: swap; + src: url(https://fonts.gstatic.com/s/publicsans/v14/ijwTs572Xtc6ZYQws9YVwnNDTJzax8s3Jik.woff2) format("woff2"); + unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, + U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; +} +/* vietnamese */ +@font-face { + font-family: "Public Sans"; + font-style: italic; + font-weight: 700; + font-display: swap; + src: url(https://fonts.gstatic.com/s/publicsans/v14/ijwTs572Xtc6ZYQws9YVwnNDTJPax8s3JimW3w.woff2) format("woff2"); + unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, + U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB; +} +/* latin-ext */ +@font-face { + font-family: "Public Sans"; + font-style: italic; + font-weight: 700; + font-display: swap; + src: url(https://fonts.gstatic.com/s/publicsans/v14/ijwTs572Xtc6ZYQws9YVwnNDTJLax8s3JimW3w.woff2) format("woff2"); + unicode-range: U+0100-02AF, U+0304, U+0308, U+0329, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, + U+2C60-2C7F, U+A720-A7FF; +} +/* latin */ +@font-face { + font-family: "Public Sans"; + font-style: italic; + font-weight: 700; + font-display: swap; + src: url(https://fonts.gstatic.com/s/publicsans/v14/ijwTs572Xtc6ZYQws9YVwnNDTJzax8s3Jik.woff2) format("woff2"); + unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, + U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; +} +/* vietnamese */ +@font-face { + font-family: "Public Sans"; + font-style: italic; + font-weight: 800; + font-display: swap; + src: url(https://fonts.gstatic.com/s/publicsans/v14/ijwTs572Xtc6ZYQws9YVwnNDTJPax8s3JimW3w.woff2) format("woff2"); + unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, + U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB; +} +/* latin-ext */ +@font-face { + font-family: "Public Sans"; + font-style: italic; + font-weight: 800; + font-display: swap; + src: url(https://fonts.gstatic.com/s/publicsans/v14/ijwTs572Xtc6ZYQws9YVwnNDTJLax8s3JimW3w.woff2) format("woff2"); + unicode-range: U+0100-02AF, U+0304, U+0308, U+0329, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, + U+2C60-2C7F, U+A720-A7FF; +} +/* latin */ +@font-face { + font-family: "Public Sans"; + font-style: italic; + font-weight: 800; + font-display: swap; + src: url(https://fonts.gstatic.com/s/publicsans/v14/ijwTs572Xtc6ZYQws9YVwnNDTJzax8s3Jik.woff2) format("woff2"); + unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, + U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; +} +/* vietnamese */ +@font-face { + font-family: "Public Sans"; + font-style: italic; + font-weight: 900; + font-display: swap; + src: url(https://fonts.gstatic.com/s/publicsans/v14/ijwTs572Xtc6ZYQws9YVwnNDTJPax8s3JimW3w.woff2) format("woff2"); + unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, + U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB; +} +/* latin-ext */ +@font-face { + font-family: "Public Sans"; + font-style: italic; + font-weight: 900; + font-display: swap; + src: url(https://fonts.gstatic.com/s/publicsans/v14/ijwTs572Xtc6ZYQws9YVwnNDTJLax8s3JimW3w.woff2) format("woff2"); + unicode-range: U+0100-02AF, U+0304, U+0308, U+0329, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, + U+2C60-2C7F, U+A720-A7FF; +} +/* latin */ +@font-face { + font-family: "Public Sans"; + font-style: italic; + font-weight: 900; + font-display: swap; + src: url(https://fonts.gstatic.com/s/publicsans/v14/ijwTs572Xtc6ZYQws9YVwnNDTJzax8s3Jik.woff2) format("woff2"); + unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, + U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; +} +/* vietnamese */ +@font-face { + font-family: "Public Sans"; + font-style: normal; + font-weight: 100; + font-display: swap; + src: url(https://fonts.gstatic.com/s/publicsans/v14/ijwRs572Xtc6ZYQws9YVwnNJfJ7QwOk1Fig.woff2) format("woff2"); + unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, + U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB; +} +/* latin-ext */ +@font-face { + font-family: "Public Sans"; + font-style: normal; + font-weight: 100; + font-display: swap; + src: url(https://fonts.gstatic.com/s/publicsans/v14/ijwRs572Xtc6ZYQws9YVwnNIfJ7QwOk1Fig.woff2) format("woff2"); + unicode-range: U+0100-02AF, U+0304, U+0308, U+0329, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, + U+2C60-2C7F, U+A720-A7FF; +} +/* latin */ +@font-face { + font-family: "Public Sans"; + font-style: normal; + font-weight: 100; + font-display: swap; + src: url(https://fonts.gstatic.com/s/publicsans/v14/ijwRs572Xtc6ZYQws9YVwnNGfJ7QwOk1.woff2) format("woff2"); + unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, + U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; +} +/* vietnamese */ +@font-face { + font-family: "Public Sans"; + font-style: normal; + font-weight: 200; + font-display: swap; + src: url(https://fonts.gstatic.com/s/publicsans/v14/ijwRs572Xtc6ZYQws9YVwnNJfJ7QwOk1Fig.woff2) format("woff2"); + unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, + U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB; +} +/* latin-ext */ +@font-face { + font-family: "Public Sans"; + font-style: normal; + font-weight: 200; + font-display: swap; + src: url(https://fonts.gstatic.com/s/publicsans/v14/ijwRs572Xtc6ZYQws9YVwnNIfJ7QwOk1Fig.woff2) format("woff2"); + unicode-range: U+0100-02AF, U+0304, U+0308, U+0329, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, + U+2C60-2C7F, U+A720-A7FF; +} +/* latin */ +@font-face { + font-family: "Public Sans"; + font-style: normal; + font-weight: 200; + font-display: swap; + src: url(https://fonts.gstatic.com/s/publicsans/v14/ijwRs572Xtc6ZYQws9YVwnNGfJ7QwOk1.woff2) format("woff2"); + unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, + U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; +} +/* vietnamese */ +@font-face { + font-family: "Public Sans"; + font-style: normal; + font-weight: 300; + font-display: swap; + src: url(https://fonts.gstatic.com/s/publicsans/v14/ijwRs572Xtc6ZYQws9YVwnNJfJ7QwOk1Fig.woff2) format("woff2"); + unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, + U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB; +} +/* latin-ext */ +@font-face { + font-family: "Public Sans"; + font-style: normal; + font-weight: 300; + font-display: swap; + src: url(https://fonts.gstatic.com/s/publicsans/v14/ijwRs572Xtc6ZYQws9YVwnNIfJ7QwOk1Fig.woff2) format("woff2"); + unicode-range: U+0100-02AF, U+0304, U+0308, U+0329, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, + U+2C60-2C7F, U+A720-A7FF; +} +/* latin */ +@font-face { + font-family: "Public Sans"; + font-style: normal; + font-weight: 300; + font-display: swap; + src: url(https://fonts.gstatic.com/s/publicsans/v14/ijwRs572Xtc6ZYQws9YVwnNGfJ7QwOk1.woff2) format("woff2"); + unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, + U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; +} +/* vietnamese */ +@font-face { + font-family: "Public Sans"; + font-style: normal; + font-weight: 400; + font-display: swap; + src: url(https://fonts.gstatic.com/s/publicsans/v14/ijwRs572Xtc6ZYQws9YVwnNJfJ7QwOk1Fig.woff2) format("woff2"); + unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, + U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB; +} +/* latin-ext */ +@font-face { + font-family: "Public Sans"; + font-style: normal; + font-weight: 400; + font-display: swap; + src: url(https://fonts.gstatic.com/s/publicsans/v14/ijwRs572Xtc6ZYQws9YVwnNIfJ7QwOk1Fig.woff2) format("woff2"); + unicode-range: U+0100-02AF, U+0304, U+0308, U+0329, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, + U+2C60-2C7F, U+A720-A7FF; +} +/* latin */ +@font-face { + font-family: "Public Sans"; + font-style: normal; + font-weight: 400; + font-display: swap; + src: url(https://fonts.gstatic.com/s/publicsans/v14/ijwRs572Xtc6ZYQws9YVwnNGfJ7QwOk1.woff2) format("woff2"); + unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, + U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; +} +/* vietnamese */ +@font-face { + font-family: "Public Sans"; + font-style: normal; + font-weight: 500; + font-display: swap; + src: url(https://fonts.gstatic.com/s/publicsans/v14/ijwRs572Xtc6ZYQws9YVwnNJfJ7QwOk1Fig.woff2) format("woff2"); + unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, + U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB; +} +/* latin-ext */ +@font-face { + font-family: "Public Sans"; + font-style: normal; + font-weight: 500; + font-display: swap; + src: url(https://fonts.gstatic.com/s/publicsans/v14/ijwRs572Xtc6ZYQws9YVwnNIfJ7QwOk1Fig.woff2) format("woff2"); + unicode-range: U+0100-02AF, U+0304, U+0308, U+0329, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, + U+2C60-2C7F, U+A720-A7FF; +} +/* latin */ +@font-face { + font-family: "Public Sans"; + font-style: normal; + font-weight: 500; + font-display: swap; + src: url(https://fonts.gstatic.com/s/publicsans/v14/ijwRs572Xtc6ZYQws9YVwnNGfJ7QwOk1.woff2) format("woff2"); + unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, + U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; +} +/* vietnamese */ +@font-face { + font-family: "Public Sans"; + font-style: normal; + font-weight: 600; + font-display: swap; + src: url(https://fonts.gstatic.com/s/publicsans/v14/ijwRs572Xtc6ZYQws9YVwnNJfJ7QwOk1Fig.woff2) format("woff2"); + unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, + U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB; +} +/* latin-ext */ +@font-face { + font-family: "Public Sans"; + font-style: normal; + font-weight: 600; + font-display: swap; + src: url(https://fonts.gstatic.com/s/publicsans/v14/ijwRs572Xtc6ZYQws9YVwnNIfJ7QwOk1Fig.woff2) format("woff2"); + unicode-range: U+0100-02AF, U+0304, U+0308, U+0329, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, + U+2C60-2C7F, U+A720-A7FF; +} +/* latin */ +@font-face { + font-family: "Public Sans"; + font-style: normal; + font-weight: 600; + font-display: swap; + src: url(https://fonts.gstatic.com/s/publicsans/v14/ijwRs572Xtc6ZYQws9YVwnNGfJ7QwOk1.woff2) format("woff2"); + unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, + U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; +} +/* vietnamese */ +@font-face { + font-family: "Public Sans"; + font-style: normal; + font-weight: 700; + font-display: swap; + src: url(https://fonts.gstatic.com/s/publicsans/v14/ijwRs572Xtc6ZYQws9YVwnNJfJ7QwOk1Fig.woff2) format("woff2"); + unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, + U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB; +} +/* latin-ext */ +@font-face { + font-family: "Public Sans"; + font-style: normal; + font-weight: 700; + font-display: swap; + src: url(https://fonts.gstatic.com/s/publicsans/v14/ijwRs572Xtc6ZYQws9YVwnNIfJ7QwOk1Fig.woff2) format("woff2"); + unicode-range: U+0100-02AF, U+0304, U+0308, U+0329, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, + U+2C60-2C7F, U+A720-A7FF; +} +/* latin */ +@font-face { + font-family: "Public Sans"; + font-style: normal; + font-weight: 700; + font-display: swap; + src: url(https://fonts.gstatic.com/s/publicsans/v14/ijwRs572Xtc6ZYQws9YVwnNGfJ7QwOk1.woff2) format("woff2"); + unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, + U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; +} +/* vietnamese */ +@font-face { + font-family: "Public Sans"; + font-style: normal; + font-weight: 800; + font-display: swap; + src: url(https://fonts.gstatic.com/s/publicsans/v14/ijwRs572Xtc6ZYQws9YVwnNJfJ7QwOk1Fig.woff2) format("woff2"); + unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, + U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB; +} +/* latin-ext */ +@font-face { + font-family: "Public Sans"; + font-style: normal; + font-weight: 800; + font-display: swap; + src: url(https://fonts.gstatic.com/s/publicsans/v14/ijwRs572Xtc6ZYQws9YVwnNIfJ7QwOk1Fig.woff2) format("woff2"); + unicode-range: U+0100-02AF, U+0304, U+0308, U+0329, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, + U+2C60-2C7F, U+A720-A7FF; +} +/* latin */ +@font-face { + font-family: "Public Sans"; + font-style: normal; + font-weight: 800; + font-display: swap; + src: url(https://fonts.gstatic.com/s/publicsans/v14/ijwRs572Xtc6ZYQws9YVwnNGfJ7QwOk1.woff2) format("woff2"); + unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, + U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; +} +/* vietnamese */ +@font-face { + font-family: "Public Sans"; + font-style: normal; + font-weight: 900; + font-display: swap; + src: url(https://fonts.gstatic.com/s/publicsans/v14/ijwRs572Xtc6ZYQws9YVwnNJfJ7QwOk1Fig.woff2) format("woff2"); + unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, + U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB; +} +/* latin-ext */ +@font-face { + font-family: "Public Sans"; + font-style: normal; + font-weight: 900; + font-display: swap; + src: url(https://fonts.gstatic.com/s/publicsans/v14/ijwRs572Xtc6ZYQws9YVwnNIfJ7QwOk1Fig.woff2) format("woff2"); + unicode-range: U+0100-02AF, U+0304, U+0308, U+0329, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, + U+2C60-2C7F, U+A720-A7FF; +} +/* latin */ +@font-face { + font-family: "Public Sans"; + font-style: normal; + font-weight: 900; + font-display: swap; + src: url(https://fonts.gstatic.com/s/publicsans/v14/ijwRs572Xtc6ZYQws9YVwnNGfJ7QwOk1.woff2) format("woff2"); + unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, + U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; +} diff --git a/gui/src/assets/css/_tailwind.css b/gui/src/assets/css/_tailwind.css new file mode 100644 index 0000000..b5c61c9 --- /dev/null +++ b/gui/src/assets/css/_tailwind.css @@ -0,0 +1,3 @@ +@tailwind base; +@tailwind components; +@tailwind utilities; diff --git a/gui/src/assets/css/app.css b/gui/src/assets/css/app.css new file mode 100644 index 0000000..fb84a20 --- /dev/null +++ b/gui/src/assets/css/app.css @@ -0,0 +1,81 @@ +/* + |-------------------------------------------------------------------------- + | TailwindCSS Directives + |-------------------------------------------------------------------------- + | + | Import TailwindCSS directives and swipe out at build-time with all of + | the styles it generates based on your configured design system. + | + | Please check this link for more details: + | https://tailwindcss.com/docs/installation#include-tailwind-in-your-css + | + */ +@import "./_tailwind.css"; + +/* + |-------------------------------------------------------------------------- + | Fonts + |-------------------------------------------------------------------------- + | + | Import all fonts used in the template, the font configuration can be + | seen in "tailwind.config.js". + | + | Please check this link for more details: + | https://tailwindcss.com/docs/theme + | + */ +@import "./_public-sans.css"; + +/* + |-------------------------------------------------------------------------- + | 3rd Party Libraries + |-------------------------------------------------------------------------- + | + | Import 3rd party library CSS files. + | + */ +@import "simplebar/src/simplebar.css"; +@import "dropzone/dist/dropzone.css"; +@import "tabulator-tables/dist/css/tabulator.css"; +@import "tom-select/dist/css/tom-select.css"; +@import "zoom-vanilla.js/dist/zoom.css"; +@import "toastify-js/src/toastify.css"; +@import "highlight.js/styles/github.css"; +@import "tippy.js/dist/tippy.css"; +@import "tippy.js/themes/light.css"; +@import "tippy.js/dist/svg-arrow.css"; +@import "tippy.js/animations/shift-away.css"; +@import "tiny-slider/dist/tiny-slider.css"; +@import "leaflet/dist/leaflet.css"; +@import "leaflet.markercluster/dist/MarkerCluster.css"; + +/* + |-------------------------------------------------------------------------- + | Components + |-------------------------------------------------------------------------- + | + | Import CSS components. + | + */ +@import "./components/_global.css"; +@import "./components/_side-nav.css"; +@import "./components/_mobile-menu.css"; +@import "./components/_top-nav.css"; +@import "./components/_intro.css"; +@import "./components/_zoom-in.css"; +@import "./components/_image-fit.css"; +@import "./components/_typing-dots.css"; +@import "./components/_scrollbar.css"; +@import "./components/_scrollbar-hidden.css"; +@import "./components/_box.css"; +@import "./components/_tiny-slider.css"; +@import "./components/_tippy.css"; +@import "./components/_toastify.css"; +@import "./components/_transitions.css"; +@import "./components/_zoom-vanilla.css"; +@import "./components/_tom-select.css"; +@import "./components/_ckeditor.css"; +@import "./components/_litepicker.css"; +@import "./components/_full-calendar.css"; +@import "./components/_tabulator.css"; +@import "./components/_main.css"; diff --git a/gui/src/assets/css/components/_box.css b/gui/src/assets/css/components/_box.css new file mode 100644 index 0000000..b39fda7 --- /dev/null +++ b/gui/src/assets/css/components/_box.css @@ -0,0 +1,16 @@ +@layer components { + .box { + box-shadow: 0px 3px 5px #0000000b; + background-color: white; + border: 1px solid theme("colors.slate.200"); + border-radius: 0.6rem; + position: relative; + } + + .dark { + .box { + background-color: theme("backgroundColor.card-color"); + border-color: theme("colors.darkmode.500"); + } + } +} diff --git a/gui/src/assets/css/components/_ckeditor.css b/gui/src/assets/css/components/_ckeditor.css new file mode 100644 index 0000000..58fa7b5 --- /dev/null +++ b/gui/src/assets/css/components/_ckeditor.css @@ -0,0 +1,284 @@ +.ck-editor, +.document-editor, +.ck-editor__editable { + box-shadow: theme("boxShadow.sm"); +} + +.document-editor { + display: flex; + max-height: 700px; + flex-flow: column nowrap; + border-radius: var(--ck-border-radius); + border: 1px solid theme("colors.slate.200"); + .document-editor__toolbar { + z-index: 1; + border-bottom: 1px solid theme("colors.slate.200"); + } + .document-editor__toolbar .ck-toolbar { + border: 0; + border-radius: 0; + background-color: theme("colors.slate.100"); + .ck-icon { + width: 16px; + } + } + .document-editor__editable-container { + overflow-y: scroll; + padding: calc(2 * var(--ck-spacing-large)); + background-color: theme("colors.slate.100"); + } + .document-editor__editable-container .ck-editor__editable { + width: 15.8cm; + margin: 0 auto; + min-height: 21cm; + background: white; + padding: 1cm 2cm 2cm; + border-radius: var(--ck-border-radius); + border: 1px solid theme("colors.slate.200"); + box-shadow: theme("boxShadow.sm"); + } + .ck-heading-dropdown .ck-list .ck-button__label { + line-height: calc(1.7 * var(--ck-line-height-base) * var(--ck-font-size-base)); + min-width: 6em; + } + .ck-heading-dropdown .ck-list .ck-button:not(.ck-heading_paragraph) .ck-button__label { + transform: scale(0.8); + transform-origin: left; + } + .ck-content h2, + .ck-heading-dropdown .ck-heading_heading1 .ck-button__label { + font-size: 2.18em; + font-weight: normal; + } + .ck-content h2 { + line-height: 1.37em; + padding-top: 0.342em; + margin-bottom: 0.142em; + } + .ck-content h3, + .ck-heading-dropdown .ck-heading_heading2 .ck-button__label { + font-size: 1.75em; + font-weight: normal; + color: hsl(203, 100%, 50%); + } + .ck-heading-dropdown .ck-heading_heading2.ck-on .ck-button__label { + color: var(--ck-color-list-button-on-text); + } + .ck-content h3 { + line-height: 1.86em; + padding-top: 0.171em; + margin-bottom: 0.357em; + } + .ck-content h4, + .ck-heading-dropdown .ck-heading_heading3 .ck-button__label { + font-size: 1.31em; + font-weight: bold; + } + .ck-content h4 { + line-height: 1.24em; + padding-top: 0.286em; + margin-bottom: 0.952em; + } + .ck-content p { + font-size: 1em; + line-height: 1.63em; + padding-top: 0.5em; + margin-bottom: 1.13em; + } + .ck-content blockquote { + font-family: Georgia, serif; + margin-left: calc(2 * var(--ck-spacing-large)); + margin-right: calc(2 * var(--ck-spacing-large)); + } +} + +.ck.ck-content { + min-height: 250px; + &.ck-editor__editable_inline { + border: 1px solid theme("colors.slate.200"); + } +} + +.ck .ck { + .ck-content { + min-height: 250px; + &.ck-editor__editable_inline { + border: 1px solid theme("colors.slate.200"); + } + blockquote, + dl, + dd, + h1, + h2, + h3, + h4, + h5, + h6, + hr, + figure, + p, + pre { + margin: revert; + } + ol, + ul { + list-style: revert; + margin: revert; + padding: revert; + } + h1, + h2, + h3, + h4, + h5, + h6 { + font-size: revert; + font-weight: revert; + } + img, + svg, + video, + canvas, + audio, + iframe, + embed, + object { + display: revert; + vertical-align: revert; + } + } + &.ck-reset_all, + &.ck-reset_all * { + color: theme("colors.slate.700"); + } + &.ck-toolbar, + &.ck-balloon-panel { + background-color: theme("colors.slate.100"); + border-color: theme("colors.slate.200"); + .ck-icon { + width: 16px; + } + } + &.ck-editor__main > .ck-editor__editable:not(.ck-focused) { + border-color: theme("colors.slate.200"); + } + &.ck-button:not(.ck-disabled):hover, + &a.ck-button:not(.ck-disabled):hover { + background-color: theme("colors.slate.200"); + } +} + +.dark { + .document-editor { + border-color: theme("colors.darkmode.900" / 30%); + .document-editor__toolbar { + border-color: theme("colors.darkmode.900" / 20%); + } + .document-editor__toolbar .ck-toolbar { + background-color: theme("colors.darkmode.900" / 20%); + .ck-toolbar__separator { + background-color: theme("colors.darkmode.800"); + } + .ck-tooltip .ck-tooltip__text { + color: theme("colors.slate.200"); + background-color: theme("colors.darkmode.800"); + &:after { + border-bottom: theme("colors.darkmode.800"); + } + } + .ck.ck-icon :not([fill]) { + fill: theme("colors.slate.300"); + } + .ck.ck-dropdown__panel { + border-color: theme("colors.darkmode.800"); + } + .ck.ck-button.ck-on, + a.ck.ck-button.ck-on { + background-color: theme("colors.darkmode.800"); + } + } + .document-editor__editable-container { + background-color: theme("colors.darkmode.600"); + } + .document-editor__editable-container .ck-editor__editable { + border-color: theme("colors.darkmode.900" / 20%); + background-color: theme("colors.darkmode.800"); + } + } + + .ck.ck-content.ck-editor__editable_inline { + border-color: theme("colors.darkmode.900" / 20%); + background-color: theme("colors.darkmode.800"); + } + + .ck { + &.ck-list { + background-color: theme("colors.darkmode.800"); + } + &.ck-dropdown__panel { + background-color: theme("colors.darkmode.800"); + border-color: theme("colors.darkmode.800"); + } + &.ck.ck-input-text { + background-color: theme("colors.darkmode.400"); + border-color: theme("colors.darkmode.400"); + &:focus { + box-shadow: none; + } + } + .ck-insert-table-dropdown-grid-box { + border-color: theme("colors.darkmode.400"); + } + &.ck-reset_all, + &.ck-reset_all * { + color: theme("colors.slate.300") !important; + } + .ck { + .ck-content.ck-editor__editable_inline { + border-color: theme("colors.darkmode.900" / 20%); + background-color: theme("colors.darkmode.800"); + } + &.ck-toolbar, + &.ck-balloon-panel { + background-color: theme("colors.darkmode.700"); + border-color: theme("colors.darkmode.900" / 20%); + &:before { + border-bottom-color: theme("colors.darkmode.900" / 20%) !important; + } + &:after { + border-bottom-color: theme("colors.darkmode.900" / 20%) !important; + } + .ck-toolbar__separator { + background-color: theme("colors.darkmode.800"); + } + .ck-tooltip .ck-tooltip__text { + color: theme("colors.slate.200"); + background-color: theme("colors.darkmode.800"); + &:after { + border-bottom-color: theme("colors.darkmode.900" / 20%); + } + } + .ck.ck-icon :not([fill]) { + fill: theme("colors.slate.300"); + } + .ck.ck-dropdown__panel { + border-color: theme("colors.darkmode.800"); + } + .ck.ck-button.ck-on, + a.ck.ck-button.ck-on { + background-color: theme("colors.darkmode.800"); + } + } + &.ck-editor__main > .ck-editor__editable { + background-color: theme("colors.darkmode.800"); + &:not(.ck-focused) { + border-color: theme("colors.darkmode.900" / 20%); + } + } + &.ck-button:not(.ck-disabled):hover, + &a.ck-button:not(.ck-disabled):hover { + background-color: theme("colors.darkmode.900" / 20%); + } + } + } +} diff --git a/gui/src/assets/css/components/_full-calendar.css b/gui/src/assets/css/components/_full-calendar.css new file mode 100644 index 0000000..a0e70e3 --- /dev/null +++ b/gui/src/assets/css/components/_full-calendar.css @@ -0,0 +1,215 @@ +.full-calendar { + .fc-toolbar { + @media (max-width: calc(theme("screens.lg") - 1px)) { + flex-direction: column; + } + .fc-toolbar-chunk { + &:nth-child(1) { + order: 3; + } + &:nth-child(2) { + order: 1; + } + &:nth-child(3) { + order: 2; + @media (max-width: calc(theme("screens.lg") - 1px)) { + margin-top: theme("spacing.3"); + margin-bottom: theme("spacing.3"); + } + .fc-button-group { + @media (max-width: calc(theme("screens.sm") - 1px)) { + display: block; + } + button { + width: theme("spacing.20"); + @media (max-width: calc(theme("screens.sm") - 1px)) { + width: 100%; + border-radius: theme("borderRadius.md"); + margin-bottom: theme("spacing.2"); + } + } + } + } + } + .fc-toolbar-title { + font-size: theme("fontSize.lg"); + font-weight: theme("fontWeight.medium"); + } + } + .fc-toolbar-chunk .fc-button-primary { + &:first-child { + border-top-left-radius: theme("borderRadius.md"); + border-bottom-left-radius: theme("borderRadius.md"); + } + &:last-child { + border-top-right-radius: theme("borderRadius.md"); + border-bottom-right-radius: theme("borderRadius.md"); + } + } + .fc-theme-standard { + .fc-scrollgrid, + th, + td, + .fc-list { + border-color: theme("colors.slate.200" / 60%); + } + } + table { + border-radius: theme("borderRadius.md"); + tr th .fc-scrollgrid-sync-inner { + padding-top: theme("spacing.3"); + padding-bottom: theme("spacing.3"); + } + } + .fc-daygrid-event-harness { + margin-left: theme("spacing.5"); + margin-right: theme("spacing.5"); + } + .fc-h-event { + background-color: theme("colors.primary"); + border-color: theme("colors.primary"); + border-radius: theme("borderRadius.md"); + } + .fc-event-title-container { + padding: theme("spacing.1") theme("spacing.2"); + font-size: theme("fontSize.xs"); + } + .fc-daygrid-event { + font-size: theme("fontSize.xs"); + } + .fc-daygrid-event-dot { + border-color: theme("colors.primary"); + margin-right: theme("spacing.2"); + } + .fc-daygrid-dot-event .fc-event-title { + font-weight: theme("fontWeight.medium"); + } + .fc-col-header-cell-cushion { + font-weight: theme("fontWeight.medium"); + } + &.fc .fc-view-harness { + @media (max-width: calc(theme("screens.sm") - 1px)) { + min-height: 400px !important; + } + } + &.fc .fc-daygrid-day-frame { + @media (max-width: calc(theme("screens.sm") - 1px)) { + min-height: 60px !important; + } + } + .fc-daygrid-more-link { + font-size: theme("fontSize.sm"); + @media (max-width: calc(theme("screens.md") - 1px)) { + color: theme("colors.slate.500"); + font-size: 10px; + } + @media (max-width: calc(theme("screens.sm") - 1px)) { + padding-left: 0; + display: block; + margin-top: calc(theme("spacing.3") * -1); + leading: 10px; + } + } + .fc-daygrid-day-bottom { + padding-top: theme("spacing.1"); + } + .fc-day-other { + background-color: theme("colors.slate.100" / 50%); + } + .fc-button-primary { + font-weight: theme("fontWeight.normal") !important; + display: inline-block !important; + border: 1px solid theme("colors.slate.200" / 60%) !important; + color: theme("colors.slate.500") !important; + background-color: transparent !important; + text-transform: capitalize !important; + padding: 0.4em 0.65em !important; + transition-property: color, background-color, border-color, text-decoration-color, fill, stroke, opacity, box-shadow, + transform, filter, backdrop-filter; + transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1); + transition-duration: 200ms; + box-shadow: theme("boxShadow.sm"); + align-items: center; + justify-content: center; + border-radius: theme("borderRadius.md"); + cursor: pointer; + &:focus { + box-shadow: theme("ringWidth.4"); + --tw-ring-color: theme("colors.primary"); + --tw-text-opacity: 0.2; + } + &:hover:not(:disabled) { + --tw-background-opacity: 0.9; + --tw-border-opacity: 0.9; + } + &:not(button) { + text-align: center; + } + &:disabled { + opacity: 0.7; + cursor: not-allowed; + } + .fc-icon { + font-size: 1.2em !important; + } + &:focus { + box-shadow: none !important; + } + } + .fc-button-primary:not(:disabled):active, + .fc-button-primary:not(:disabled).fc-button-active { + color: white !important; + background-color: theme("colors.primary") !important; + border-color: theme("colors.primary") !important; + } + .fc-list-day-cushion { + background-color: theme("colors.slate.100" / 50%) !important; + padding: 0.75rem 1.25rem !important; + } + .fc-list-event td { + padding: theme("spacing.3") theme("spacing.5"); + } + .fc-list-event-dot { + border-color: theme("colors.primary") !important; + } + .fc-event-time { + padding-left: theme("spacing.[0.5]"); + padding-right: theme("spacing.[0.5]"); + font-size: 0.75rem !important; + } + .fc-daygrid-more-link { + padding-left: theme("spacing.2"); + } +} + +.dark { + .full-calendar { + .fc-button-primary { + background-color: theme("colors.darkmode.400") !important; + border-color: theme("colors.darkmode.400") !important; + } + .fc-list-day-cushion { + background-color: theme("colors.darkmode.400") !important; + } + .fc-event:hover td { + border-color: theme("colors.darkmode.400") !important; + background-color: theme("colors.darkmode.400") !important; + } + .fc-theme-standard { + .fc-scrollgrid, + th, + td, + .fc-list { + border-color: theme("colors.darkmode.400"); + } + } + .fc-day-other { + background-color: theme("colors.darkmode.700"); + } + .fc-button-primary:focus { + --tw-ring-color: theme("colors.slate.700"); + --tw-ring-opacity: 0.5; + transition-property: none; + } + } +} diff --git a/gui/src/assets/css/components/_global.css b/gui/src/assets/css/components/_global.css new file mode 100644 index 0000000..2e68490 --- /dev/null +++ b/gui/src/assets/css/components/_global.css @@ -0,0 +1,46 @@ +html { + scroll-behavior: smooth; + background-color: theme("colors.primary"); + @media screen(md) { + background-color: theme("colors.slate.200"); + } + &.dark { + background-color: theme("colors.darkmode.800"); + body { + color: theme("colors.slate.300"); + *, + ::before, + ::after { + border-color: theme("colors.white" / 5%); + } + } + } + body { + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + overflow-x: hidden; + padding-left: theme("spacing.3"); + padding-right: theme("spacing.3"); + font-family: theme("fontFamily.public-sans"); + font-size: theme("fontSize.sm"); + line-height: theme("lineHeight.5"); + color: theme("colors.slate.800"); + @media screen(sm) { + padding-left: theme("spacing.8"); + padding-right: theme("spacing.8"); + } + @media screen(md) { + padding-left: 0; + padding-right: 0; + } + } +} + +svg { + &:hover:not([disabled]) { + color: theme("colors.primary") + } + &:disabled { + pointer-events: none; + } +} \ No newline at end of file diff --git a/gui/src/assets/css/components/_image-fit.css b/gui/src/assets/css/components/_image-fit.css new file mode 100644 index 0000000..68fa006 --- /dev/null +++ b/gui/src/assets/css/components/_image-fit.css @@ -0,0 +1,12 @@ +@layer components { + .image-fit { + position: relative; + & > img { + position: absolute; + object-fit: cover; + top: 0; + width: 100%; + height: 100%; + } + } +} diff --git a/gui/src/assets/css/components/_intro.css b/gui/src/assets/css/components/_intro.css new file mode 100644 index 0000000..db675a0 --- /dev/null +++ b/gui/src/assets/css/components/_intro.css @@ -0,0 +1,53 @@ +* { + @for $i from 1 to 50 { + > .intro-x:nth-child($i) { + z-index: calc(50 - $i); + opacity: 0; + position: relative; + transform: translateX(50px); + animation: 0.4s intro-x-animation ease-in-out 0.33333s; + animation-fill-mode: forwards; + animation-delay: calc($i * 0.1s); + } + > .-intro-x:nth-child($i) { + z-index: calc(50 - $i); + opacity: 0; + position: relative; + transform: translateX(-50px); + animation: 0.4s intro-x-animation ease-in-out 0.33333s; + animation-fill-mode: forwards; + animation-delay: calc($i * 0.1s); + } + > .intro-y:nth-child($i) { + z-index: calc(50 - $i); + opacity: 0; + position: relative; + transform: translateY(50px); + animation: 0.4s intro-y-animation ease-in-out 0.33333s; + animation-fill-mode: forwards; + animation-delay: calc($i * 0.1s); + } + > .-intro-y:nth-child($i) { + z-index: calc(50 - $i); + opacity: 0; + position: relative; + transform: translateY(-50px); + animation: 0.4s intro-y-animation ease-in-out 0.33333s; + animation-fill-mode: forwards; + animation-delay: calc($i * 0.1s); + } + } +} + +@keyframes intro-x-animation { + 100% { + opacity: 1; + transform: translateX(0px); + } +} +@keyframes intro-y-animation { + 100% { + opacity: 1; + transform: translateY(0px); + } +} diff --git a/gui/src/assets/css/components/_litepicker.css b/gui/src/assets/css/components/_litepicker.css new file mode 100644 index 0000000..436f79c --- /dev/null +++ b/gui/src/assets/css/components/_litepicker.css @@ -0,0 +1,282 @@ +.litepicker { + background-color: white; + border-radius: theme("borderRadius.md"); + font-size: theme("fontSize.sm"); + z-index: 999999 !important; + margin-top: 7px; + box-shadow: 0px 3px 20px #00000014; + @media (max-width: calc(theme("screens.lg") - 1px)) { + width: 310px; + } + @media (max-width: calc(theme("screens.sm") - 1px)) { + left: 0px !important; + right: 0px; + margin-left: auto; + margin-right: auto; + } + &:before { + content: ""; + left: 9px; + top: -7px; + border-bottom-color: #f7f7f7; + border-right: 7px solid transparent; + border-left: 7px solid transparent; + border-bottom: 7px solid #e8e8e8; + position: absolute; + display: inline-block; + } + &:after { + content: ""; + left: 10px; + top: -6px; + border-right: 6px solid transparent; + border-bottom: 6px solid #fff; + border-left: 6px solid transparent; + position: absolute; + display: inline-block; + } + .container__months, + .container__footer { + box-shadow: none; + background-color: transparent; + padding-top: 0; + } + .container__footer { + border-top: 1px solid theme("colors.slate.200" / 60%); + margin: 0; + padding: theme("spacing.3"); + @media (max-width: calc(theme("screens.lg") - 1px)) { + display: flex; + flex-direction: column-reverse; + text-align: center; + } + .preview-date-range { + @media (max-width: calc(theme("screens.lg") - 1px)) { + width: 100%; + display: block; + order: 1; + margin-bottom: theme("spacing.[1.5]"); + } + } + .button-cancel { + @media (max-width: calc(theme("screens.lg") - 1px)) { + width: 100% !important; + margin-left: 0px !important; + padding-top: 0.375rem !important; + padding-bottom: 0.375rem !important; + } + } + .button-apply { + @media (max-width: calc(theme("screens.lg") - 1px)) { + width: 100% !important; + margin-left: 0px !important; + padding-top: 0.375rem !important; + padding-bottom: 0.375rem !important; + margin-bottom: theme("spacing.[1.5]"); + } + } + .button-apply, + .button-cancel { + width: theme("spacing.20"); + padding: theme("spacing.1") theme("spacing.2"); + border-radius: theme("borderRadius.md"); + font-weight: theme("fontWeight.medium"); + margin-left: theme("spacing.1"); + margin-right: 0; + } + .button-apply { + background-color: theme("colors.primary"); + color: white; + } + .button-cancel { + background-color: theme("colors.slate.200" / 70%); + color: theme("colors.slate.500"); + } + } + .container__months { + padding-left: theme("spacing.1"); + padding-right: theme("spacing.1"); + .month-item-weekdays-row { + color: theme("colors.slate.400"); + margin-top: theme("spacing.3"); + } + .month-item-header { + padding-left: 0; + padding-right: 0; + padding-bottom: 0; + padding-top: theme("spacing.2"); + .button-previous-month { + display: flex; + align-items: center; + justify-content: center; + width: theme("spacing.8"); + height: theme("spacing.8"); + &:hover { + background-color: theme("colors.slate.100"); + } + svg { + transform: rotate(135deg); + margin-right: calc(theme("spacing.1") * -1); + } + } + .button-next-month { + display: flex; + align-items: center; + justify-content: center; + width: theme("spacing.8"); + height: theme("spacing.8"); + &:hover { + background-color: theme("colors.slate.100"); + } + svg { + transform: rotate(-45deg); + margin-left: calc(theme("spacing.1") * -1); + } + } + .button-previous-month:hover svg, + .button-previous-month svg, + .button-next-month:hover svg, + .button-next-month svg { + fill: transparent; + border: solid black; + border-width: 0 2px 2px 0; + border-radius: 0; + display: inline-block; + border-color: #4a5568; + width: theme("spacing.2"); + height: theme("spacing.2"); + display: block; + } + div > .month-item-name, + div > .month-item-year { + background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='rgb(74, 85, 104)' stroke-width='2' stroke-linecap='round' stroke-linejoin='round' class='lucide lucide-chevron-down'%3E%3Cpolyline points='6 9 12 15 18 9'/%3E%3C/svg%3E"); + background-size: 15px; + background-position: center right 0.6rem; + background-color: transparent; + font-size: theme("fontSize.sm"); + border-width: 1px; + border-style: solid; + background-repeat: no-repeat; + padding-top: theme("spacing.1"); + padding-bottom: theme("spacing.1"); + padding-left: theme("spacing.2"); + padding-right: theme("spacing.8"); + border-radius: theme("borderRadius.md"); + border-color: theme("colors.slate.200"); + font-weight: theme("fontWeight.normal"); + &:focus { + outline: none; + border-color: theme("colors.slate.200"); + --tw-ring-color: transparent; + } + } + } + } + .container__days { + .day-item { + color: theme("colors.slate.700"); + &:hover { + box-shadow: none; + background-color: theme("colors.slate.100"); + color: theme("colors.slate.700"); + } + &.is-today, + &.is-today:hover { + font-weight: theme("fontWeight.medium"); + color: theme("colors.primary"); + } + &.is-start-date, + &.is-start-date:hover, + &.is-end-date, + &.is-end-date:hover { + background-color: theme("colors.primary"); + color: white; + } + &.is-in-range, + &.is-in-range:hover { + background-color: theme("colors.slate.100"); + } + } + .week-number { + color: theme("colors.slate.400"); + } + } +} +@media (max-width: calc(theme("screens.lg") - 1px)) { + :root { + --litepicker-day-width: 35px; + } +} + +.dark { + .litepicker { + background-color: theme("colors.darkmode.600"); + &:before, + &:after { + border-right-color: transparent; + border-left-color: transparent; + border-bottom-color: theme("colors.darkmode.600"); + } + .container__months { + .button-previous-month:hover { + background-color: theme("colors.darkmode.400"); + } + .button-next-month:hover { + background-color: theme("colors.darkmode.400"); + } + .month-item-header { + .button-previous-month:hover svg, + .button-previous-month svg, + .button-next-month:hover svg, + .button-next-month svg { + border-color: theme("colors.slate.200"); + } + div > .month-item-name, + div > .month-item-year { + color: theme("colors.slate.200"); + } + div > .month-item-name, + div > .month-item-year { + border-color: theme("colors.darkmode.400"); + } + } + } + .container__days { + .day-item { + color: theme("colors.slate.200"); + &:hover { + background-color: theme("colors.darkmode.400"); + } + &.is-start-date, + &.is-start-date:hover, + &.is-end-date, + &.is-end-date:hover { + background-color: theme("colors.primary"); + color: theme("colors.slate.200"); + } + &.is-in-range, + &.is-in-range:hover { + background-color: theme("colors.darkmode.400"); + } + &.is-today, + &.is-today:hover { + color: theme("colors.slate.200"); + } + } + } + .container__footer { + border-color: theme("colors.darkmode.400"); + .button-cancel { + background-color: theme("colors.darkmode.400"); + color: theme("colors.slate.300"); + } + } + .container__tooltip { + background-color: theme("colors.darkmode.400"); + &:before, + &:after { + border-top-color: theme("colors.darkmode.600"); + } + } + } +} diff --git a/gui/src/assets/css/components/_main.css b/gui/src/assets/css/components/_main.css new file mode 100644 index 0000000..fb2aa52 --- /dev/null +++ b/gui/src/assets/css/components/_main.css @@ -0,0 +1,7 @@ +.text-error { + @apply text-sm font-medium text-danger normal-case; +} + +.input--invalid { + @apply !border-red-700 border; +} \ No newline at end of file diff --git a/gui/src/assets/css/components/_mobile-menu.css b/gui/src/assets/css/components/_mobile-menu.css new file mode 100644 index 0000000..c418a0d --- /dev/null +++ b/gui/src/assets/css/components/_mobile-menu.css @@ -0,0 +1,88 @@ +.mobile-menu { + .menu__divider { + width: 100%; + height: 1px; + background-color: theme("colors.white" / 8%); + position: relative; + } + .menu { + height: 50px; + display: flex; + align-items: center; + color: white; + .menu__title { + display: flex; + align-items: center; + width: 100%; + margin-left: theme("spacing.3"); + .menu__sub-icon { + transition-property: theme("transitionProperty.DEFAULT"); + transition-timing-function: theme("transitionTimingFunction.in"); + transition-duration: theme("transitionDuration.100"); + margin-left: auto; + svg { + width: theme("spacing.5"); + height: theme("spacing.5"); + } + } + } + } + ul { + & > li { + /* First level */ + & > .menu { + padding-left: theme("spacing.6"); + padding-right: theme("spacing.6"); + } + & > ul { + background: theme("colors.black" / 10%); + border-radius: theme("borderRadius.lg"); + margin: theme("spacing.1") theme("spacing.4"); + &:not(.menu__sub-open) { + display: none; + } + & > li { + /* Second level */ + & > .menu { + padding-left: theme("spacing.4"); + padding-right: theme("spacing.4"); + } + & > ul { + background: theme("colors.black" / 10%); + border-radius: theme("borderRadius.lg"); + margin: theme("spacing.1") auto; + &:not(.menu__sub-open) { + display: none; + } + & > li { + /* Third level */ + & > .menu { + padding-left: theme("spacing.4"); + padding-right: theme("spacing.4"); + } + } + } + } + } + } + } +} + +.dark { + .mobile-menu { + ul { + & > li { + /* First level */ + & > ul { + background-color: theme("colors.darkmode.700"); + & > li { + /* Second level */ + & > ul { + background-color: theme("colors.darkmode.600"); + } + } + } + } + } + } +} diff --git a/gui/src/assets/css/components/_scrollbar-hidden.css b/gui/src/assets/css/components/_scrollbar-hidden.css new file mode 100644 index 0000000..6be28a9 --- /dev/null +++ b/gui/src/assets/css/components/_scrollbar-hidden.css @@ -0,0 +1,7 @@ +@layer components { + .scrollbar-hidden { + &::-webkit-scrollbar { + @apply w-0 bg-transparent; + } + } +} diff --git a/gui/src/assets/css/components/_scrollbar.css b/gui/src/assets/css/components/_scrollbar.css new file mode 100644 index 0000000..1458e2b --- /dev/null +++ b/gui/src/assets/css/components/_scrollbar.css @@ -0,0 +1,21 @@ +/* width */ +::-webkit-scrollbar { + width: 8px; + height: 8px; + @apply cursor-pointer; +} + +/* Track */ +::-webkit-scrollbar-track { + @apply bg-secondary; +} + +/* Handle */ +::-webkit-scrollbar-thumb { + @apply bg-primary; +} + +/* Handle on hover */ +::-webkit-scrollbar-thumb:hover { + @apply bg-primary; +} diff --git a/gui/src/assets/css/components/_side-nav.css b/gui/src/assets/css/components/_side-nav.css new file mode 100644 index 0000000..2984467 --- /dev/null +++ b/gui/src/assets/css/components/_side-nav.css @@ -0,0 +1,385 @@ +.side-nav { + &.side-nav--simple { + .side-menu { + .side-menu__title { + @apply hidden; + .side-menu__sub-icon { + @apply hidden; + } + } + } + } + + .side-nav__divider { + display: none; + padding-left: theme("spacing.5"); + position: relative; + z-index: 10; + @media screen(xl) { + display: block; + } + } + + .side-nav__divider::before { + content: ""; + top: 50%; + left: 0; + height: 1px; + width: 20px; + margin-left: -15px; + background-color: theme("colors.slate.500"); + z-index: 10; + position: absolute; + } + + .side-menu { + height: 50px; + display: flex; + align-items: center; + padding-left: theme("spacing.5"); + color: theme("colors.primary"); + margin-bottom: theme("spacing.1"); + position: relative; + border-radius: theme("borderRadius.xl"); + + .side-menu__bullet { + display: block; + width: 15px; + height: 15px; + border-radius: 100%; + background-color: theme("colors.primary"); + z-index: 10; + } + + .side-menu__title { + display: none; + align-items: center; + flex-grow: 1; + margin-left: theme("spacing.3"); + @media screen(xl) { + display: flex; + } + + .side-menu__sub-icon { + transition-property: theme("transitionProperty.DEFAULT"); + transition-timing-function: theme("transitionTimingFunction.in"); + transition-duration: theme("transitionDuration.100"); + margin-left: auto; + margin-right: theme("spacing.5"); + display: none; + @media screen(xl) { + display: block; + } + + svg { + width: theme("spacing.4"); + height: theme("spacing.4"); + } + } + } + } + + & > ul { + & > li { + /* First level */ + + & > .side-menu { + &.side-menu--active { + background-color: theme("colors.slate.100"); + z-index: 10; + + &:before { + content: ""; + display: block; + top: 0; + left: 0; + right: 0; + bottom: 0; + border-radius: theme("borderRadius.xl"); + position: absolute; + border-bottom: 3px solid theme("colors.black" / 8%); + } + + &:after { + content: ""; + width: 20px; + height: 80px; + background-repeat: no-repeat; + background-size: cover; + position: absolute; + top: 0; + bottom: 0; + right: 0; + margin-top: auto; + margin-bottom: auto; + background-image: theme("backgroundImage.menu-active"); + margin-right: -47px; + opacity: 0; + animation: 0.3s ease-in-out 1s active-side-menu-chevron; + animation-fill-mode: forwards; + } + + .side-menu__icon { + z-index: 10; + } + + .side-menu__title { + font-weight: theme("fontWeight.medium"); + z-index: 10; + } + } + + &:hover { + &:not(.side-menu--active):not(.side-menu--open) { + background-color: theme("colors.slate.100"); + + &:before { + content: ""; + display: block; + top: 0; + left: 0; + right: 0; + bottom: 0; + border-radius: theme("borderRadius.xl"); + position: absolute; + z-index: -1; + border-bottom: 3px solid theme("colors.black" / 8%); + } + } + } + } + + & > ul { + padding: theme("spacing[1.5]") 0; + background-color: theme("colors.white" / 4%); + border-radius: theme("borderRadius.xl"); + position: relative; + + &:before { + content: ""; + display: block; + top: 0; + left: 0; + right: 0; + bottom: 0; + background-color: theme("colors.white" / 30%); + border-radius: theme("borderRadius.xl"); + position: absolute; + z-index: -1; + } + + &.side-menu__sub-open { + margin-bottom: theme("spacing.1"); + } + + & > li { + /* Second level */ + + & > .side-menu { + height: 48px; + + &.side-menu--active { + .side-menu__icon { + color: theme("colors.slate.700"); + } + + .side-menu__title { + color: theme("colors.slate.700"); + font-weight: theme("fontWeight.medium"); + } + + .side-menu__bullet { + outline: 4px solid theme("colors.primary" / 70%); + } + } + + &:not(.side-menu--active) { + color: theme("colors.slate.600"); + } + } + + & > ul { + padding: theme("spacing[1.5]") 0; + background-color: theme("colors.white" / 4%); + border-radius: theme("borderRadius.xl"); + position: relative; + + &:before { + content: ""; + display: block; + top: 0; + left: 0; + right: 0; + bottom: 0; + background-color: theme("colors.white" / 30%); + border-radius: theme("borderRadius.xl"); + position: absolute; + z-index: -1; + } + + &.side-menu__sub-open { + margin-bottom: theme("spacing.1"); + } + + & > li { + /* Third level */ + + & > .side-menu { + height: 48px; + + &.side-menu--active { + .side-menu__icon { + color: theme("colors.slate.700"); + } + + .side-menu__title { + color: theme("colors.slate.700"); + font-weight: theme("fontWeight.medium"); + } + } + + &:not(.side-menu--active) { + color: theme("colors.slate.600"); + } + + &:hover { + } + + .side-menu__icon { + } + } + } + } + } + } + } + } +} + +@keyframes active-side-menu-chevron { + 100% { + opacity: 1; + margin-right: -27px; + } +} + +.dark { + .side-nav { + .side-menu { + color: theme("colors.slate.300"); + } + + & > ul { + & > li { + /* First level */ + + & > .side-menu { + &.side-menu--active { + background-color: transparent; + + &:before { + border-color: theme("colors.black" / 8%); + background-color: theme("colors.darkmode.800"); + } + + &:after { + background-image: theme("backgroundImage.menu-active-dark"); + } + + .side-menu__icon { + color: theme("colors.slate.300"); + } + + .side-menu__title { + color: theme("colors.slate.300"); + } + } + + &:not(.side-menu--active) { + .side-menu__icon { + color: theme("colors.slate.400"); + } + + .side-menu__title { + color: theme("colors.slate.400"); + } + } + + &:hover { + &:not(.side-menu--active):not(.side-menu--open) { + background-color: transparent; + + &:before { + background-color: theme("colors.darkmode.700"); + } + } + } + } + + & > ul { + background-color: transparent; + + &:before { + background-color: theme("colors.darkmode.900" / 30%); + } + + & > li { + /* Second level */ + + & > .side-menu { + &.side-menu--active { + .side-menu__icon { + color: theme("colors.slate.300"); + } + + .side-menu__title { + color: theme("colors.slate.300"); + } + } + + &:not(.side-menu--active) { + color: theme("colors.slate.400"); + + .side-menu__icon { + color: theme("colors.slate.400"); + } + } + } + + & > ul { + background-color: transparent; + + &:before { + background-color: theme("colors.darkmode.900" / 30%); + } + + & > li { + /* Third level */ + + & > .side-menu { + &.side-menu--active { + .side-menu__icon { + color: theme("colors.slate.300"); + } + + .side-menu__title { + color: theme("colors.slate.300"); + } + } + + &:not(.side-menu--active) { + color: theme("colors.slate.400"); + + .side-menu__icon { + color: theme("colors.slate.400"); + } + } + } + } + } + } + } + } + } + } +} diff --git a/gui/src/assets/css/components/_tabulator.css b/gui/src/assets/css/components/_tabulator.css new file mode 100644 index 0000000..464b226 --- /dev/null +++ b/gui/src/assets/css/components/_tabulator.css @@ -0,0 +1,297 @@ +.tabulator-print-fullscreen-hide:before { + content: ""; + position: fixed; + background-color: white; + top: 0; + left: 0; + width: 100%; + height: 100vh; +} +.tabulator { + overflow: hidden; + border: 0; + background-color: transparent; + .tabulator-header { + font-weight: theme("fontWeight.medium"); + color: currentColor; + border-top: 1px solid theme("colors.slate.200"); + border-bottom: 1px solid theme("colors.slate.200"); + background-color: transparent; + .tabulator-headers { + .tabulator-col { + background-color: transparent; + border-right-width: 0; + &:hover { + background-color: theme("colors.slate.100"); + } + .tabulator-col-content { + padding: theme("spacing.3") theme("spacing.5"); + .tabulator-col-title { + padding-right: 0; + } + .tabulator-arrow { + top: -3px; + border-left-width: 5px; + border-right-width: 5px; + bottom: 0; + margin-top: auto; + margin-bottom: auto; + } + } + &.tabulator-sortable[aria-sort="none"] .tabulator-col-content .tabulator-arrow { + border-bottom-color: #cbd5e0; + } + } + } + } + .tabulator-row { + border-bottom: 1px solid theme("colors.slate.200"); + &:hover, + &.tabulator-row-even:hover { + background-color: theme("colors.slate.200"); + } + &.tabulator-row-even { + background-color: theme("colors.slate.100"); + } + .tabulator-cell { + border-right: 0; + padding: theme("spacing.3") theme("spacing.5"); + &.tabulator-row-handle { + padding-left: 0; + padding-right: 0; + } + .tabulator-responsive-collapse-toggle { + width: theme("spacing.4"); + height: theme("spacing.4"); + margin-right: calc(theme("spacing.5") * -1); + background-color: theme("colors.slate.400"); + border-radius: theme("borderRadius.full"); + } + } + .tabulator-responsive-collapse { + padding: theme("spacing.3"); + border-color: theme("colors.slate.200"); + border-bottom: 0; + td { + padding: theme("spacing.2"); + strong { + font-weight: theme("fontWeight.medium"); + } + } + } + } + .tabulator-footer { + background-color: transparent; + border-top: 0; + padding: 0; + margin-top: theme("spacing.2"); + @media (max-width: calc(theme("screens.md") - 1px)) { + white-space: normal; + } + .tabulator-paginator { + display: flex; + align-items: center; + @media (max-width: calc(theme("screens.md") - 1px)) { + display: block; + text-align: left; + } + > label { + font-weight: theme("fontWeight.normal"); + color: theme("colors.slate.700"); + } + .tabulator-page-size { + background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='rgb(74, 85, 104)' stroke-width='2' stroke-linecap='round' stroke-linejoin='round' class='lucide lucide-chevron-down'%3E%3Cpolyline points='6 9 12 15 18 9'/%3E%3C/svg%3E"); + background-size: 15px; + background-position: center right 0.6rem; + padding-top: theme("spacing.2"); + padding-bottom: theme("spacing.2"); + padding-left: theme("spacing.3"); + padding-right: theme("spacing.8"); + margin-left: theme("spacing.2"); + margin-right: auto; + border-radius: theme("borderRadius.md"); + appearance: none; + font-weight: theme("fontWeight.normal"); + background-color: white; + border-color: theme("colors.slate.200"); + background-repeat: no-repeat; + @media (max-width: calc(theme("screens.md") - 1px)) { + margin-right: theme("spacing.3"); + } + } + .tabulator-page { + min-width: 40px; + display: inline-flex; + align-items: center; + justify-content: center; + border-color: transparent; + color: theme("colors.slate.700"); + transition-property: color, background-color, border-color, text-decoration-color, fill, stroke, opacity, + box-shadow, transform, filter, backdrop-filter; + transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1); + transition-duration: 200ms; + border-width: 1px; + box-shadow: theme("boxShadow.sm"); + align-items: center; + justify-content: center; + padding: theme("spacing.2") theme("spacing.3"); + border-radius: theme("borderRadius.md"); + font-weight: theme("fontWeight.normal"); + cursor: pointer; + &:focus { + box-shadow: theme("ringWidth.4"); + --tw-ring-color: theme("colors.primary"); + --tw-text-opacity: 0.2; + } + &:hover:not(:disabled) { + --tw-background-opacity: 0.9; + --tw-border-opacity: 0.9; + } + &:not(button) { + text-align: center; + } + &:disabled { + opacity: 0.7; + cursor: not-allowed; + } + @media (max-width: calc(theme("screens.sm") - 1px)) { + margin-right: 0; + padding-left: theme("spacing.1"); + padding-right: theme("spacing.1"); + } + &:hover { + background-color: theme("colors.slate.200"); + color: theme("colors.slate.700"); + } + &.active { + background-color: theme("colors.slate.100"); + font-weight: theme("fontWeight.medium"); + &:hover { + background-color: theme("colors.slate.100"); + } + } + &[data-page="first"], + &[data-page="prev"], + &[data-page="next"], + &[data-page="last"] { + width: theme("spacing.5"); + color: transparent; + } + &[data-page="first"] { + background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24' stroke='%232d3748' stroke-width='1.1' fill='none' stroke-linecap='round' stroke-linejoin='round' class='css-i6dzq1'%3E%3Cpolyline points='11 17 6 12 11 7'%3E%3C/polyline%3E%3Cpolyline points='18 17 13 12 18 7'%3E%3C/polyline%3E%3C/svg%3E"); + background-size: 50%; + background-position: center; + background-repeat: no-repeat; + } + &[data-page="prev"] { + background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24' stroke='%232d3748' stroke-width='1.1' fill='none' stroke-linecap='round' stroke-linejoin='round' class='css-i6dzq1'%3E%3Cpolyline points='15 18 9 12 15 6'%3E%3C/polyline%3E%3C/svg%3E"); + background-size: 45%; + background-position: center; + background-repeat: no-repeat; + } + &[data-page="next"] { + background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24' stroke='%232d3748' stroke-width='1.1' fill='none' stroke-linecap='round' stroke-linejoin='round' class='css-i6dzq1'%3E%3Cpolyline points='9 18 15 12 9 6'%3E%3C/polyline%3E%3C/svg%3E"); + background-size: 45%; + background-position: center; + background-repeat: no-repeat; + } + &[data-page="last"] { + background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24' stroke='%232d3748' stroke-width='1.1' fill='none' stroke-linecap='round' stroke-linejoin='round' class='css-i6dzq1'%3E%3Cpolyline points='13 17 18 12 13 7'%3E%3C/polyline%3E%3Cpolyline points='6 17 11 12 6 7'%3E%3C/polyline%3E%3C/svg%3E"); + background-size: 50%; + background-position: center; + background-repeat: no-repeat; + } + } + } + } + .tabulator-tableholder { + overflow-x: auto; + overflow-y: hidden; + .tabulator-placeholder { + margin-top: calc(theme("spacing.2") * -1); + .tabulator-placeholder-contents { + color: theme("colors.slate.500"); + font-weight: theme("fontWeight.normal"); + font-size: theme("fontSize.sm"); + } + } + } + .tabulator-alert { + background: #ffffffbd; + .tabulator-alert-msg { + font-weight: theme("fontWeight.normal"); + font-size: theme("fontSize.base"); + background-color: transparent; + &.tabulator-alert-state-msg { + border-width: 0; + color: theme("colors.slate.700"); + } + &.tabulator-alert-state-error { + border-width: 0; + color: theme("colors.danger"); + } + } + } +} + +.dark { + .tabulator { + .tabulator-header { + color: theme("colors.slate.300"); + border-color: theme("colors.darkmode.400"); + .tabulator-headers .tabulator-col:hover { + background-color: theme("colors.darkmode.300"); + } + } + .tabulator-table { + background-color: transparent; + color: theme("colors.slate.200"); + .tabulator-row { + background-color: transparent; + border-color: transparent; + &:hover, + &.tabulator-row-even:hover { + background-color: theme("colors.darkmode.700"); + } + &.tabulator-row-even { + background-color: theme("colors.darkmode.400"); + } + } + } + .tabulator-footer { + .tabulator-paginator { + > label { + color: theme("colors.slate.200"); + } + .tabulator-page-size { + background-color: theme("colors.darkmode.300"); + border-color: theme("colors.darkmode.600"); + color: theme("colors.slate.200"); + } + .tabulator-page { + background: transparent; + color: theme("colors.slate.200"); + &:focus { + --tw-ring-color: theme("colors.slate.700"); + --tw-ring-opacity: 0.5; + transition: none; + } + &:hover { + background-color: theme("colors.darkmode.700"); + color: theme("colors.slate.300"); + } + &.active, + &.active:hover { + background-color: theme("colors.darkmode.300"); + } + } + } + } + .tabulator-alert { + background-color: theme("colors.black"/ 30%); + .tabulator-alert-msg.tabulator-alert-state-msg { + color: theme("colors.slate.200"); + } + } + } +} diff --git a/gui/src/assets/css/components/_tiny-slider.css b/gui/src/assets/css/components/_tiny-slider.css new file mode 100644 index 0000000..53da112 --- /dev/null +++ b/gui/src/assets/css/components/_tiny-slider.css @@ -0,0 +1,110 @@ +.tns-outer { + position: relative; + .tns-controls button { + width: theme("spacing.5"); + height: theme("spacing.5"); + background-color: theme("colors.slate.200"); + color: transparent; + border-radius: theme("borderRadius.full"); + position: absolute; + top: 0; + bottom: 0; + margin-top: auto; + margin-bottom: auto; + z-index: theme("zIndex.10"); + outline: none; + &:hover { + background-color: theme("colors.slate.300"); + } + &[data-controls="prev"] { + left: 0; + margin-left: calc(theme("spacing.6") * -1); + &:before { + content: ""; + background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='rgb(102 113 132)' stroke-width='2' stroke-linecap='round' stroke-linejoin='round' class='lucide lucide-chevron-down'%3E%3Cpolyline points='6 9 12 15 18 9'/%3E%3C/svg%3E"); + background-size: 80%; + width: 100%; + height: 100%; + background-position: center; + transform: rotate(90deg); + position: absolute; + margin: auto; + top: 0; + bottom: 0; + left: 0; + right: 0; + } + } + &[data-controls="next"] { + right: 0; + margin-right: calc(theme("spacing.6") * -1); + &:before { + content: ""; + background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='rgb(102 113 132)' stroke-width='2' stroke-linecap='round' stroke-linejoin='round' class='lucide lucide-chevron-down'%3E%3Cpolyline points='6 9 12 15 18 9'/%3E%3C/svg%3E"); + background-size: 80%; + width: 100%; + height: 100%; + background-position: center; + transform: rotate(-90deg); + position: absolute; + margin: auto; + top: 0; + bottom: 0; + left: 0; + right: 0; + } + } + } + .tns-nav { + margin-bottom: -1.8rem; + width: 100%; + position: absolute; + bottom: 0; + z-index: theme("zIndex.10"); + display: flex; + justify-content: center; + button { + width: theme("spacing.3"); + height: theme("spacing.3"); + background-color: theme("colors.slate.300"); + border-radius: theme("borderRadius.full"); + margin-left: theme("spacing.1"); + margin-right: theme("spacing.1"); + outline: none; + &.tns-nav-active { + background-color: theme("colors.slate.500"); + } + } + } + button[data-action] { + display: none; + } + .tns-visually-hidden { + display: none; + } +} + +.dark { + .tns-outer { + .tns-controls button { + background-color: theme("colors.darkmode.300"); + &:hover { + background-color: theme("colors.darkmode.200"); + } + } + .tns-nav { + button { + background-color: theme("colors.darkmode.300"); + &.tns-nav-active { + background-color: theme("colors.darkmode.200"); + } + } + } + button[data-action] { + display: none; + } + .tns-visually-hidden { + display: none; + } + } +} diff --git a/gui/src/assets/css/components/_tippy.css b/gui/src/assets/css/components/_tippy.css new file mode 100644 index 0000000..f276f4b --- /dev/null +++ b/gui/src/assets/css/components/_tippy.css @@ -0,0 +1,54 @@ +.tooltip-content { + left: 10000px; + position: fixed; +} +.tippy-box { + border-radius: theme("borderRadius.md"); + .tippy-content { + padding: theme("spacing.[1.5]") theme("spacing.3"); + } +} +.tippy-popper { + &[x-placement="left"], + &[x-placement="right"], + &[x-placement="left-start"], + &[x-placement="left-end"], + &[x-placement="right-start"], + &[x-placement="right-end"] { + .tippy-roundarrow, + .tippy-arrow { + top: 0; + bottom: 0; + margin-top: auto; + margin-bottom: auto; + } + } + &[x-placement="top"], + &[x-placement="bottom"], + &[x-placement="top-start"], + &[x-placement="top-end"], + &[x-placement="bottom-start"], + &[x-placement="bottom-end"] { + .tippy-roundarrow, + .tippy-arrow { + left: 0; + right: 0; + margin-left: auto; + margin-right: auto; + } + } +} + +.dark { + .tippy-box { + box-shadow: + 0 0 20px 4px #00000026, + 0 4px 80px -8px #24282f40, + 0 4px 4px -2px #5b5e6926; + color: theme("colors.slate.300"); + background-color: theme("colors.darkmode.300"); + & > .tippy-svg-arrow { + fill: theme("colors.darkmode.300"); + } + } +} diff --git a/gui/src/assets/css/components/_toastify.css b/gui/src/assets/css/components/_toastify.css new file mode 100644 index 0000000..13f4437 --- /dev/null +++ b/gui/src/assets/css/components/_toastify.css @@ -0,0 +1,29 @@ +.toastify { + background: none; + box-shadow: none; + padding: 0; + color: theme("colors.slate.700"); + max-width: calc(100% - 30px); + @media screen(md) { + max-width: none; + } + .toast-close { + color: transparent; + position: absolute; + opacity: 1; + top: 0; + bottom: 0; + right: 0; + padding-right: theme("spacing.3"); + display: flex; + align-items: center; + &:before { + content: "×"; + display: block; + color: theme("colors.slate.500"); + font-size: theme("fontSize.3xl"); + margin-top: calc(theme("spacing.[1.5]") * -1); + font-weight: theme("fontWeight.light"); + } + } +} diff --git a/gui/src/assets/css/components/_tom-select.css b/gui/src/assets/css/components/_tom-select.css new file mode 100644 index 0000000..8f48b6f --- /dev/null +++ b/gui/src/assets/css/components/_tom-select.css @@ -0,0 +1,173 @@ +.tom-select { + &.ts-wrapper, + &.plugin-dropdown_input.focus.dropdown-active { + border-width: 1px; + border-style: solid; + box-shadow: theme("boxShadow.sm"); + border-radius: theme("borderRadius.DEFAULT"); + background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='rgb(74 85 104)' stroke-width='2' stroke-linecap='round' stroke-linejoin='round' class='lucide lucide-chevron-down'%3E%3Cpolyline points='6 9 12 15 18 9'/%3E%3C/svg%3E"); + background-size: 18px; + background-position: center right 0.6rem; + background-repeat: no-repeat; + .ts-control { + border: 0; + display: flex; + outline: none; + min-height: 36px; + align-items: center; + background-color: transparent; + font-size: inherit; + padding: theme("spacing.2") theme("spacing.3"); + input { + font-size: inherit; + } + } + } + &.ts-wrapper.disabled { + background-color: theme("colors.slate.100"); + } + &.ts-wrapper.single.input-active .ts-control { + background-color: transparent; + } + &.ts-wrapper.multi { + &.has-items .ts-control { + column-gap: theme("spacing.[2.5]"); + row-gap: theme("spacing.1"); + padding: theme("spacing.1") theme("spacing.[2.5]"); + } + .ts-control > div { + padding: 0 theme("spacing.2"); + margin: 0 0 0 calc(theme("spacing.[1.5]") * -1); + border-radius: theme("borderRadius.DEFAULT"); + background-color: theme("colors.slate.200"); + } + } + &.ts-wrapper.plugin-remove_button .item .remove { + display: flex; + align-items: center; + justify-content: center; + border-color: theme("colors.slate.300"); + padding: theme("spacing.1") theme("spacing.2"); + } + &.ts-wrapper.plugin-remove_button:not(.rtl) .item .remove { + margin-left: theme("spacing.2"); + } + &.ts-wrapper .dropdown-header { + border-color: theme("colors.slate.200"); + background-color: theme("colors.slate.100"); + padding: theme("spacing.[2.5]"); + font-weight: theme("fontWeight.medium"); + } + &.plugin-dropdown_input.focus.dropdown-active { + background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' transform='rotate(180)' fill='none' stroke='rgb(74 85 104)' stroke-width='2' stroke-linecap='round' stroke-linejoin='round' class='lucide lucide-chevron-down'%3E%3Cpolyline points='6 9 12 15 18 9'/%3E%3C/svg%3E"); + } + &.plugin-dropdown_input .dropdown-input-wrap .dropdown-input { + outline: none; + } + .ts-dropdown { + left: -1px; + right: -1px; + width: auto; + z-index: 50; + margin-top: 1px; + font-size: inherit; + box-shadow: theme("boxShadow.sm"); + border-radius: theme("borderRadius.DEFAULT"); + border: 1px solid theme("colors.slate.200"); + .dropdown-input-wrap { + padding: theme("spacing.2"); + .dropdown-input { + border-radius: theme("borderRadius.DEFAULT"); + border: 1px solid theme("colors.slate.200"); + } + } + .optgroup-header { + padding: theme("spacing.[2.5]") theme("spacing.3"); + font-weight: theme("fontWeight.medium"); + background-color: theme("colors.slate.100"); + } + .option { + padding: theme("spacing.[2.5]") theme("spacing.3"); + &[data-selectable] { + &.active:not(.selected) { + color: inherit; + background-color: transparent; + background-color: theme("colors.slate.100"); + } + &:hover:not(.selected) { + color: inherit; + background-color: theme("colors.slate.100"); + } + } + } + .selected { + color: white; + background-color: theme("colors.primary"); + } + [data-selectable] .highlight { + color: white; + background-color: theme("colors.danger"); + } + } +} + +.dark { + .tom-select { + &.ts-wrapper, + &.plugin-dropdown_input.focus.dropdown-active { + background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='rgb(255 255 255)' stroke-width='2' stroke-linecap='round' stroke-linejoin='round' class='lucide lucide-chevron-down'%3E%3Cpolyline points='6 9 12 15 18 9'/%3E%3C/svg%3E"); + .ts-control { + color: theme("colors.slate.300"); + } + } + &.ts-wrapper.disabled { + border-color: transparent; + background-color: theme("colors.darkmode.800" / 50%); + } + &.ts-wrapper.multi { + .ts-control > div { + color: theme("colors.slate.300"); + background-color: theme("colors.darkmode.600"); + } + } + &.ts-wrapper.plugin-remove_button .item .remove { + border-color: theme("colors.darkmode.400"); + } + &.ts-wrapper .dropdown-header { + border-color: theme("colors.darkmode.800"); + background-color: theme("colors.darkmode.800"); + } + &.plugin-dropdown_input.focus.dropdown-active { + background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' transform='rotate(180)' fill='none' stroke='rgb(255 255 255)' stroke-width='2' stroke-linecap='round' stroke-linejoin='round' class='lucide lucide-chevron-down'%3E%3Cpolyline points='6 9 12 15 18 9'/%3E%3C/svg%3E"); + } + .ts-dropdown { + color: theme("colors.slate.300"); + border-color: theme("colors.darkmode.800"); + background-color: theme("colors.darkmode.700"); + .dropdown-input-wrap { + .dropdown-input { + border-color: theme("colors.darkmode.800"); + background-color: theme("colors.darkmode.600"); + } + } + .optgroup-header { + color: theme("colors.slate.300"); + background-color: theme("colors.darkmode.800"); + } + .option { + &[data-selectable] { + &.active:not(.selected) { + background-color: theme("colors.darkmode.600"); + } + &:hover:not(.selected) { + background-color: theme("colors.darkmode.600"); + } + } + } + } + } + .ts-wrapper { + border-color: theme("colors.darkmode.800"); + background-color: theme("colors.darkmode.800"); + } +} diff --git a/gui/src/assets/css/components/_top-nav.css b/gui/src/assets/css/components/_top-nav.css new file mode 100644 index 0000000..ba6938f --- /dev/null +++ b/gui/src/assets/css/components/_top-nav.css @@ -0,0 +1,335 @@ +.top-nav { + .top-menu { + height: 55px; + display: flex; + align-items: center; + padding-left: theme("spacing.5"); + padding-right: theme("spacing.5"); + margin-right: theme("spacing.1"); + color: theme("colors.slate.600"); + position: relative; + border-radius: theme("borderRadius.full"); + @media screen(xl) { + border-radius: theme("borderRadius.xl"); + } + .top-menu__icon { + z-index: 10; + } + .top-menu__title { + margin-left: theme("spacing.3"); + display: flex; + align-items: center; + white-space: nowrap; + z-index: 10; + .top-menu__sub-icon { + transition-property: theme("transitionProperty.DEFAULT"); + transition-timing-function: theme("transitionTimingFunction.in"); + transition-duration: theme("transitionDuration.100"); + width: theme("spacing.4"); + height: theme("spacing.4"); + display: none; + @media screen(xl) { + display: block; + } + } + } + } + & > ul { + & > li { + /* First level */ + &:hover { + & > .top-menu { + &:not(.top-menu--active) { + background-color: theme("colors.slate.100"); + &:before { + content: ""; + display: block; + top: 0; + left: 0; + right: 0; + bottom: 0; + border-radius: theme("borderRadius.full"); + position: absolute; + z-index: -1; + border-bottom: 3px solid theme("colors.black" / 8%); + @media screen(xl) { + border-radius: theme("borderRadius.xl"); + } + } + } + .top-menu__title { + .top-menu__sub-icon { + transform: rotate(180deg); + } + } + } + & > ul { + display: block; + } + } + & > .top-menu { + margin-top: 3px; + &.top-menu--active { + color: theme("colors.primary"); + background-color: theme("colors.slate.100"); + &:before { + content: ""; + display: none; + top: 0; + left: 0; + right: 0; + bottom: 0; + border-radius: theme("borderRadius.xl"); + position: absolute; + border-bottom: 3px solid theme("colors.black" / 8%); + @media screen(xl) { + display: block; + } + } + &:after { + content: ""; + width: 20px; + height: 80px; + background-image: theme("backgroundImage.menu-active"); + background-repeat: no-repeat; + background-size: cover; + position: absolute; + left: 0; + right: 0; + bottom: 0; + margin-left: auto; + margin-right: auto; + transform: rotate(90deg); + display: none; + animation: 0.3s ease-in-out 1s active-top-menu-chevron; + animation-fill-mode: forwards; + margin-bottom: -74px; + opacity: 0; + @media screen(xl) { + display: block; + } + } + .top-menu__icon { + color: theme("colors.primary"); + } + .top-menu__title { + font-weight: theme("fontWeight.medium"); + color: theme("colors.slate.800"); + @media screen(xl) { + color: theme("colors.primary"); + } + } + } + .top-menu__icon { + margin-top: -3px; + } + .top-menu__title { + margin-top: -3px; + .top-menu__sub-icon { + margin-left: theme("spacing.2"); + } + } + } + & > ul { + box-shadow: 0px 3px 20px #00000014; + background-color: theme("colors.slate.100"); + display: none; + width: theme("spacing.56"); + position: absolute; + border-radius: theme("borderRadius.md"); + z-index: 20; + padding-left: 0; + padding-right: 0; + margin-top: theme("spacing.1"); + &:before { + content: ""; + display: block; + position: absolute; + width: 100%; + height: 100%; + background-color: theme("colors.white" / 4%); + top: 0; + left: 0; + right: 0; + bottom: 0; + border-radius: theme("borderRadius.md"); + z-index: -1; + } + &:after { + content: ""; + width: 100%; + height: theme("spacing.1"); + position: absolute; + top: 0; + left: 0; + margin-top: calc(theme("spacing.1") * -1); + cursor: pointer; + } + & > li { + /* Second level */ + padding-left: theme("spacing.5"); + padding-right: theme("spacing.5"); + position: relative; + &:hover { + position: relative; + & > .top-menu { + .top-menu__title { + .top-menu__sub-icon { + transform: rotate(-90deg); + } + } + } + & > ul { + display: block; + } + } + & > .top-menu { + padding-left: 0; + padding-right: 0; + margin-right: 0; + .top-menu__title { + width: 100%; + .top-menu__sub-icon { + margin-left: auto; + } + } + } + & > ul { + box-shadow: 0px 3px 20px #00000014; + left: 100%; + background-color: theme("colors.slate.100"); + display: none; + width: theme("spacing.56"); + position: absolute; + border-radius: theme("borderRadius.md"); + margin-top: 0; + margin-left: 0; + top: 0; + z-index: 20; + padding-left: 0; + padding-right: 0; + &:before { + content: ""; + display: block; + position: absolute; + width: 100%; + height: 100%; + background-color: theme("colors.white" / 4%); + top: 0; + left: 0; + right: 0; + bottom: 0; + border-radius: theme("borderRadius.md"); + z-index: -1; + } + &:after { + content: ""; + width: 100%; + height: theme("spacing.1"); + position: absolute; + top: 0; + left: 0; + margin-top: calc(theme("spacing.1") * -1); + cursor: pointer; + } + & > li { + /* Third level */ + padding-left: theme("spacing.5"); + padding-right: theme("spacing.5"); + & > .top-menu { + padding-left: 0; + padding-right: 0; + margin-right: 0; + .top-menu__title { + width: 100%; + .top-menu__sub-icon { + margin-left: auto; + } + } + } + } + } + } + } + } + } +} + +@keyframes active-top-menu-chevron { + 100% { + opacity: 1; + margin-bottom: -56px; + } +} + +.dark { + .top-nav { + .top-menu { + .top-menu__icon { + color: theme("colors.slate.400"); + } + .top-menu__title { + color: theme("colors.slate.400"); + } + } + & > ul { + & > li { + /* First level */ + &:hover { + & > .top-menu { + &:not(.top-menu--active) { + background-color: transparent; + &:before { + background-color: theme("colors.darkmode.700"); + } + } + } + } + & > .top-menu { + &.top-menu--active { + background-color: theme("colors.darkmode.700"); + &:before { + border-color: theme("colors.black"/ 8%); + background-color: theme("colors.darkmode.700"); + } + &:after { + background-image: theme("backgroundImage.menu-active-dark"); + } + .top-menu__icon { + color: white; + } + .top-menu__title { + color: white; + } + } + } + & > ul { + box-shadow: 0px 3px 7px #0000001c; + background-color: theme("colors.darkmode.600"); + &:before { + background-color: theme("colors.black" / 10%); + } + & > li { + /* Second level */ + & > ul { + box-shadow: 0px 3px 7px #0000001c; + background-color: theme("colors.darkmode.600"); + &:before { + background-color: theme("colors.black" / 10%); + } + & > li { + /* Third level */ + & > .top-menu { + .top-menu__title { + .top-menu__sub-icon { + } + } + } + } + } + } + } + } + } + } +} diff --git a/gui/src/assets/css/components/_transitions.css b/gui/src/assets/css/components/_transitions.css new file mode 100644 index 0000000..37244f8 --- /dev/null +++ b/gui/src/assets/css/components/_transitions.css @@ -0,0 +1,40 @@ +.unwrap-enter-active { + animation: unwrapToRight .6s cubic-bezier(0.165, 0.840, 0.440, 1.000) forwards; +} + +.unwrap-leave-active { + animation: wrapToLeft .6s cubic-bezier(0.165, 0.840, 0.440, 1.000) forwards; +} + +@keyframes unwrapToRight { + from { + clip-path: inset(0 100% 0 0); + } + to { + clip-path: inset(0 0 0 0); + } +} + +@keyframes wrapToLeft { + from { + clip-path: inset(0 0 0 0); + } + to { + clip-path: inset(0 100% 0 0); + } +} + +.fade-enter-active, +.fade-leave-active { + transition: opacity 0.6s ease; +} + +.fade-enter-from, +.fade-leave-to { + opacity: 0; +} + +.fade-enter-to, +.fade-leave-from { + opacity: 1; +} \ No newline at end of file diff --git a/gui/src/assets/css/components/_typing-dots.css b/gui/src/assets/css/components/_typing-dots.css new file mode 100644 index 0000000..7c41de8 --- /dev/null +++ b/gui/src/assets/css/components/_typing-dots.css @@ -0,0 +1,22 @@ +@layer components { + .typing-dots { + span { + @apply opacity-0; + &:nth-child(1) { + animation: 1s type-animation infinite 0.33333s; + } + &:nth-child(2) { + animation: 1s type-animation infinite 0.66666s; + } + &:nth-child(3) { + animation: 1s type-animation infinite 0.99999s; + } + } + } + + @keyframes type-animation { + 50% { + @apply opacity-100; + } + } +} diff --git a/gui/src/assets/css/components/_zoom-in.css b/gui/src/assets/css/components/_zoom-in.css new file mode 100644 index 0000000..f9df277 --- /dev/null +++ b/gui/src/assets/css/components/_zoom-in.css @@ -0,0 +1,14 @@ +@layer components { + .zoom-in { + transition-property: transform, box-shadow; + transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1); + transition-duration: 150ms; + transition-duration: 300ms; + transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1); + cursor: pointer; + &:hover { + transform: scale(theme("scale.105")); + box-shadow: theme("boxShadow.xl"); + } + } +} diff --git a/gui/src/assets/css/components/_zoom-vanilla.css b/gui/src/assets/css/components/_zoom-vanilla.css new file mode 100644 index 0000000..2c59d26 --- /dev/null +++ b/gui/src/assets/css/components/_zoom-vanilla.css @@ -0,0 +1,9 @@ +.zoom-overlay { + background-color: theme("colors.black" / 75%); +} + +.dark { + .zoom-overlay { + background-color: theme("colors.black" / 40%); + } +} diff --git a/gui/src/assets/images/fakers/food-beverage-1.jpg b/gui/src/assets/images/fakers/food-beverage-1.jpg new file mode 100644 index 0000000..547586c Binary files /dev/null and b/gui/src/assets/images/fakers/food-beverage-1.jpg differ diff --git a/gui/src/assets/images/fakers/food-beverage-2.jpg b/gui/src/assets/images/fakers/food-beverage-2.jpg new file mode 100644 index 0000000..c49f8d1 Binary files /dev/null and b/gui/src/assets/images/fakers/food-beverage-2.jpg differ diff --git a/gui/src/assets/images/fakers/preview-1.jpg b/gui/src/assets/images/fakers/preview-1.jpg new file mode 100644 index 0000000..e303cc2 Binary files /dev/null and b/gui/src/assets/images/fakers/preview-1.jpg differ diff --git a/gui/src/assets/images/fakers/preview-2.jpg b/gui/src/assets/images/fakers/preview-2.jpg new file mode 100644 index 0000000..b709fe7 Binary files /dev/null and b/gui/src/assets/images/fakers/preview-2.jpg differ diff --git a/gui/src/assets/images/fakers/profile-1.jpg b/gui/src/assets/images/fakers/profile-1.jpg new file mode 100644 index 0000000..766ead5 Binary files /dev/null and b/gui/src/assets/images/fakers/profile-1.jpg differ diff --git a/gui/src/assets/images/fakers/profile-2.jpg b/gui/src/assets/images/fakers/profile-2.jpg new file mode 100644 index 0000000..262fdd3 Binary files /dev/null and b/gui/src/assets/images/fakers/profile-2.jpg differ diff --git a/gui/src/assets/images/nebulous-logo.png b/gui/src/assets/images/nebulous-logo.png new file mode 100644 index 0000000..dc4d6f6 Binary files /dev/null and b/gui/src/assets/images/nebulous-logo.png differ diff --git a/gui/src/assets/svg/ArrowDown.svg b/gui/src/assets/svg/ArrowDown.svg new file mode 100644 index 0000000..53df37a --- /dev/null +++ b/gui/src/assets/svg/ArrowDown.svg @@ -0,0 +1,6 @@ + + + + diff --git a/gui/src/assets/svg/error-illustration.svg b/gui/src/assets/svg/error-illustration.svg new file mode 100644 index 0000000..19f09e9 --- /dev/null +++ b/gui/src/assets/svg/error-illustration.svg @@ -0,0 +1,72 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/gui/src/assets/svg/illustration.svg b/gui/src/assets/svg/illustration.svg new file mode 100644 index 0000000..a0ae933 --- /dev/null +++ b/gui/src/assets/svg/illustration.svg @@ -0,0 +1,121 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/gui/src/assets/svg/logo.svg b/gui/src/assets/svg/logo.svg new file mode 100644 index 0000000..28c5228 --- /dev/null +++ b/gui/src/assets/svg/logo.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/gui/src/assets/svg/phone-illustration.svg b/gui/src/assets/svg/phone-illustration.svg new file mode 100644 index 0000000..279c65a --- /dev/null +++ b/gui/src/assets/svg/phone-illustration.svg @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/gui/src/assets/svg/radial-gradient.svg b/gui/src/assets/svg/radial-gradient.svg new file mode 100644 index 0000000..ae1da68 --- /dev/null +++ b/gui/src/assets/svg/radial-gradient.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + + \ No newline at end of file diff --git a/gui/src/assets/svg/woman-illustration.svg b/gui/src/assets/svg/woman-illustration.svg new file mode 100644 index 0000000..f023ddf --- /dev/null +++ b/gui/src/assets/svg/woman-illustration.svg @@ -0,0 +1,32 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/gui/src/base-components/Alert/Alert.vue b/gui/src/base-components/Alert/Alert.vue new file mode 100644 index 0000000..ab961c8 --- /dev/null +++ b/gui/src/base-components/Alert/Alert.vue @@ -0,0 +1,200 @@ + + + + + diff --git a/gui/src/base-components/Alert/DismissButton.vue b/gui/src/base-components/Alert/DismissButton.vue new file mode 100644 index 0000000..4ffdfb4 --- /dev/null +++ b/gui/src/base-components/Alert/DismissButton.vue @@ -0,0 +1,31 @@ + + + + + diff --git a/gui/src/base-components/Alert/index.ts b/gui/src/base-components/Alert/index.ts new file mode 100644 index 0000000..e6e1975 --- /dev/null +++ b/gui/src/base-components/Alert/index.ts @@ -0,0 +1,8 @@ +import Alert from "./Alert.vue" +import DismissButton from "./DismissButton.vue" + +const AlertComponent = Object.assign({}, Alert, { + DismissButton +}) + +export default AlertComponent diff --git a/gui/src/base-components/Breadcrumb/Breadcrumb.vue b/gui/src/base-components/Breadcrumb/Breadcrumb.vue new file mode 100644 index 0000000..c559dc0 --- /dev/null +++ b/gui/src/base-components/Breadcrumb/Breadcrumb.vue @@ -0,0 +1,27 @@ + + + diff --git a/gui/src/base-components/Breadcrumb/Link.vue b/gui/src/base-components/Breadcrumb/Link.vue new file mode 100644 index 0000000..86c1236 --- /dev/null +++ b/gui/src/base-components/Breadcrumb/Link.vue @@ -0,0 +1,42 @@ + + + diff --git a/gui/src/base-components/Breadcrumb/index.ts b/gui/src/base-components/Breadcrumb/index.ts new file mode 100644 index 0000000..334517c --- /dev/null +++ b/gui/src/base-components/Breadcrumb/index.ts @@ -0,0 +1,8 @@ +import Breadcrumb from "./Breadcrumb.vue" +import Link from "./Link.vue" + +const BreadcrumbComponent = Object.assign({}, Breadcrumb, { + Link +}) + +export default BreadcrumbComponent diff --git a/gui/src/base-components/Button/Button.vue b/gui/src/base-components/Button/Button.vue new file mode 100644 index 0000000..0b010d5 --- /dev/null +++ b/gui/src/base-components/Button/Button.vue @@ -0,0 +1,230 @@ + + + + + diff --git a/gui/src/base-components/Button/index.ts b/gui/src/base-components/Button/index.ts new file mode 100644 index 0000000..9b9e263 --- /dev/null +++ b/gui/src/base-components/Button/index.ts @@ -0,0 +1,3 @@ +import Button from "./Button.vue" + +export default Button diff --git a/gui/src/base-components/Calendar/Draggable.vue b/gui/src/base-components/Calendar/Draggable.vue new file mode 100644 index 0000000..2136c14 --- /dev/null +++ b/gui/src/base-components/Calendar/Draggable.vue @@ -0,0 +1,28 @@ + + + diff --git a/gui/src/base-components/Calendar/index.ts b/gui/src/base-components/Calendar/index.ts new file mode 100644 index 0000000..37b029c --- /dev/null +++ b/gui/src/base-components/Calendar/index.ts @@ -0,0 +1,3 @@ +import Draggable from "./Draggable.vue" + +export { Draggable } diff --git a/gui/src/base-components/Card/Card.vue b/gui/src/base-components/Card/Card.vue new file mode 100644 index 0000000..2f6b38c --- /dev/null +++ b/gui/src/base-components/Card/Card.vue @@ -0,0 +1,35 @@ + + + + + diff --git a/gui/src/base-components/Card/index.ts b/gui/src/base-components/Card/index.ts new file mode 100644 index 0000000..5556b07 --- /dev/null +++ b/gui/src/base-components/Card/index.ts @@ -0,0 +1,3 @@ +import Card from "./Card.vue" + +export default Card diff --git a/gui/src/base-components/Chart/ProgressBar.vue b/gui/src/base-components/Chart/ProgressBar.vue new file mode 100644 index 0000000..42f15c8 --- /dev/null +++ b/gui/src/base-components/Chart/ProgressBar.vue @@ -0,0 +1,48 @@ + + + diff --git a/gui/src/base-components/Chart/index.ts b/gui/src/base-components/Chart/index.ts new file mode 100644 index 0000000..6e1bef8 --- /dev/null +++ b/gui/src/base-components/Chart/index.ts @@ -0,0 +1,6 @@ +import Chart from "./index.vue" +import ProgressBar from "./ProgressBar.vue" +export type { ProvideChart } from "./index.vue" + +export default Chart +export { ProgressBar } diff --git a/gui/src/base-components/Chart/index.vue b/gui/src/base-components/Chart/index.vue new file mode 100644 index 0000000..b84b1b1 --- /dev/null +++ b/gui/src/base-components/Chart/index.vue @@ -0,0 +1,112 @@ + + + + + diff --git a/gui/src/base-components/Ckeditor/BalloonBlockEditor.vue b/gui/src/base-components/Ckeditor/BalloonBlockEditor.vue new file mode 100644 index 0000000..ae898e8 --- /dev/null +++ b/gui/src/base-components/Ckeditor/BalloonBlockEditor.vue @@ -0,0 +1,60 @@ + + + diff --git a/gui/src/base-components/Ckeditor/BalloonEditor.vue b/gui/src/base-components/Ckeditor/BalloonEditor.vue new file mode 100644 index 0000000..a286760 --- /dev/null +++ b/gui/src/base-components/Ckeditor/BalloonEditor.vue @@ -0,0 +1,60 @@ + + + diff --git a/gui/src/base-components/Ckeditor/ClassicEditor.vue b/gui/src/base-components/Ckeditor/ClassicEditor.vue new file mode 100644 index 0000000..daf2e17 --- /dev/null +++ b/gui/src/base-components/Ckeditor/ClassicEditor.vue @@ -0,0 +1,60 @@ + + + diff --git a/gui/src/base-components/Ckeditor/DocumentEditor.vue b/gui/src/base-components/Ckeditor/DocumentEditor.vue new file mode 100644 index 0000000..2e1c855 --- /dev/null +++ b/gui/src/base-components/Ckeditor/DocumentEditor.vue @@ -0,0 +1,61 @@ + + + diff --git a/gui/src/base-components/Ckeditor/InlineEditor.vue b/gui/src/base-components/Ckeditor/InlineEditor.vue new file mode 100644 index 0000000..c6b9f01 --- /dev/null +++ b/gui/src/base-components/Ckeditor/InlineEditor.vue @@ -0,0 +1,60 @@ + + + diff --git a/gui/src/base-components/Ckeditor/ckeditor.ts b/gui/src/base-components/Ckeditor/ckeditor.ts new file mode 100644 index 0000000..0b6c4be --- /dev/null +++ b/gui/src/base-components/Ckeditor/ckeditor.ts @@ -0,0 +1,86 @@ +import { Ref, UnwrapRef } from "vue" + +export interface CkeditorElement extends HTMLDivElement { + CKEditor: unknown +} + +export type CkeditorProps = { + modelValue: string + config: { initialData: string } + disabled?: boolean + refKey?: string +} + +export type CkeditorEmit = { + (e: "update:modelValue", value: string): void + (e: "focus", value: string, editor: unknown): void + (e: "blur", value: string, editor: unknown): void + (e: "ready", editor: unknown): void +} + +const init = async ( + el: CkeditorElement, + editorBuild: unknown, + { + props, + emit, + cacheData + }: { + props: CkeditorProps + emit: CkeditorEmit + cacheData: Ref> + } +) => { + // Initial data + cacheData.value = props.modelValue + props.config.initialData = props.modelValue + + // Init CKEditor + // @ts-ignore + const editor = await editorBuild.create(el, props.config) + + // Attach CKEditor instance + el.CKEditor = editor + + // Set initial disabled state + props.disabled && editor.enableReadOnlyMode("ckeditor") + + // Set on change event + editor.model.document.on("change:data", () => { + const data = editor.getData() + cacheData.value = data + emit("update:modelValue", data) + }) + + // Set on focus event + editor.editing.view.document.on("focus", (evt: string) => { + emit("focus", evt, editor) + }) + + // Set on blur event + editor.editing.view.document.on("blur", (evt: string) => { + emit("blur", evt, editor) + }) + + // Set on ready event + emit("ready", editor) +} + +// Watch model change +const updateData = ( + el: CkeditorElement, + { + props, + cacheData + }: { + props: CkeditorProps + cacheData: Ref> + } +) => { + if (cacheData.value !== props.modelValue) { + // @ts-ignore + el.CKEditor.setData(props.modelValue) + } +} + +export { init, updateData } diff --git a/gui/src/base-components/Ckeditor/index.ts b/gui/src/base-components/Ckeditor/index.ts new file mode 100644 index 0000000..81177cc --- /dev/null +++ b/gui/src/base-components/Ckeditor/index.ts @@ -0,0 +1,13 @@ +import BalloonBlockEditor from "./BalloonBlockEditor.vue" +import BalloonEditor from "./BalloonEditor.vue" +import ClassicEditor from "./ClassicEditor.vue" +import DocumentEditor from "./DocumentEditor.vue" +import InlineEditor from "./InlineEditor.vue" + +export type { ProvideBalloonBlockEditor } from "./BalloonBlockEditor.vue" +export type { ProvideBalloonEditor } from "./BalloonEditor.vue" +export type { ProvideClassicEditor } from "./ClassicEditor.vue" +export type { ProvideDocumentEditor } from "./DocumentEditor.vue" +export type { ProvideInlineEditor } from "./InlineEditor.vue" + +export { BalloonBlockEditor, BalloonEditor, ClassicEditor, DocumentEditor, InlineEditor } diff --git a/gui/src/base-components/Dropzone/Dropzone.vue b/gui/src/base-components/Dropzone/Dropzone.vue new file mode 100644 index 0000000..875d8cd --- /dev/null +++ b/gui/src/base-components/Dropzone/Dropzone.vue @@ -0,0 +1,53 @@ + + + diff --git a/gui/src/base-components/Dropzone/dropzone.ts b/gui/src/base-components/Dropzone/dropzone.ts new file mode 100644 index 0000000..837611b --- /dev/null +++ b/gui/src/base-components/Dropzone/dropzone.ts @@ -0,0 +1,17 @@ +import Dropzone, { DropzoneOptions } from "dropzone" +import { DropzoneElement } from "./Dropzone.vue" + +const init = ( + el: DropzoneElement, + props: { + options: DropzoneOptions + refKey?: string + } +) => { + Dropzone.autoDiscover = false + if (!el.dropzone) { + el.dropzone = new Dropzone(el, props.options) + } +} + +export { init } diff --git a/gui/src/base-components/Dropzone/index.ts b/gui/src/base-components/Dropzone/index.ts new file mode 100644 index 0000000..dc01668 --- /dev/null +++ b/gui/src/base-components/Dropzone/index.ts @@ -0,0 +1,5 @@ +import Dropzone from "./Dropzone.vue" + +export type { ProvideDropzone, DropzoneElement } from "./Dropzone.vue" + +export default Dropzone diff --git a/gui/src/base-components/ExpandTransition/index.vue b/gui/src/base-components/ExpandTransition/index.vue new file mode 100644 index 0000000..05f6fa1 --- /dev/null +++ b/gui/src/base-components/ExpandTransition/index.vue @@ -0,0 +1,63 @@ + + + + + diff --git a/gui/src/base-components/FileIcon/FileIcon.vue b/gui/src/base-components/FileIcon/FileIcon.vue new file mode 100644 index 0000000..81840bb --- /dev/null +++ b/gui/src/base-components/FileIcon/FileIcon.vue @@ -0,0 +1,44 @@ + + + diff --git a/gui/src/base-components/FileIcon/index.ts b/gui/src/base-components/FileIcon/index.ts new file mode 100644 index 0000000..5a01eef --- /dev/null +++ b/gui/src/base-components/FileIcon/index.ts @@ -0,0 +1,3 @@ +import FileIcon from "./FileIcon.vue" + +export default FileIcon diff --git a/gui/src/base-components/Form/FormCheck/FormCheck.vue b/gui/src/base-components/Form/FormCheck/FormCheck.vue new file mode 100644 index 0000000..4b9940c --- /dev/null +++ b/gui/src/base-components/Form/FormCheck/FormCheck.vue @@ -0,0 +1,20 @@ + + + + + diff --git a/gui/src/base-components/Form/FormCheck/Input.vue b/gui/src/base-components/Form/FormCheck/Input.vue new file mode 100644 index 0000000..30ec0c1 --- /dev/null +++ b/gui/src/base-components/Form/FormCheck/Input.vue @@ -0,0 +1,66 @@ + + + + + diff --git a/gui/src/base-components/Form/FormCheck/Label.vue b/gui/src/base-components/Form/FormCheck/Label.vue new file mode 100644 index 0000000..ac3697b --- /dev/null +++ b/gui/src/base-components/Form/FormCheck/Label.vue @@ -0,0 +1,20 @@ + + + + + diff --git a/gui/src/base-components/Form/FormCheck/index.ts b/gui/src/base-components/Form/FormCheck/index.ts new file mode 100644 index 0000000..40cf9f1 --- /dev/null +++ b/gui/src/base-components/Form/FormCheck/index.ts @@ -0,0 +1,10 @@ +import FormCheck from "./FormCheck.vue" +import Input from "./Input.vue" +import Label from "./Label.vue" + +const FormCheckComponent = Object.assign({}, FormCheck, { + Input, + Label +}) + +export default FormCheckComponent diff --git a/gui/src/base-components/Form/FormHelp.vue b/gui/src/base-components/Form/FormHelp.vue new file mode 100644 index 0000000..2ddceb8 --- /dev/null +++ b/gui/src/base-components/Form/FormHelp.vue @@ -0,0 +1,22 @@ + + + + + diff --git a/gui/src/base-components/Form/FormInline.vue b/gui/src/base-components/Form/FormInline.vue new file mode 100644 index 0000000..40ed1a5 --- /dev/null +++ b/gui/src/base-components/Form/FormInline.vue @@ -0,0 +1,26 @@ + + + + + diff --git a/gui/src/base-components/Form/FormInput.vue b/gui/src/base-components/Form/FormInput.vue new file mode 100644 index 0000000..cb8560a --- /dev/null +++ b/gui/src/base-components/Form/FormInput.vue @@ -0,0 +1,57 @@ + + + + + diff --git a/gui/src/base-components/Form/FormLabel.vue b/gui/src/base-components/Form/FormLabel.vue new file mode 100644 index 0000000..5fd7633 --- /dev/null +++ b/gui/src/base-components/Form/FormLabel.vue @@ -0,0 +1,30 @@ + + + + + diff --git a/gui/src/base-components/Form/FormSelect.vue b/gui/src/base-components/Form/FormSelect.vue new file mode 100644 index 0000000..8062d1c --- /dev/null +++ b/gui/src/base-components/Form/FormSelect.vue @@ -0,0 +1,64 @@ + + + + + diff --git a/gui/src/base-components/Form/FormSwitch/FormSwitch.vue b/gui/src/base-components/Form/FormSwitch/FormSwitch.vue new file mode 100644 index 0000000..e076ce4 --- /dev/null +++ b/gui/src/base-components/Form/FormSwitch/FormSwitch.vue @@ -0,0 +1,9 @@ + + + diff --git a/gui/src/base-components/Form/FormSwitch/Input.vue b/gui/src/base-components/Form/FormSwitch/Input.vue new file mode 100644 index 0000000..9bf855b --- /dev/null +++ b/gui/src/base-components/Form/FormSwitch/Input.vue @@ -0,0 +1,55 @@ + + + + + diff --git a/gui/src/base-components/Form/FormSwitch/Label.vue b/gui/src/base-components/Form/FormSwitch/Label.vue new file mode 100644 index 0000000..c14e183 --- /dev/null +++ b/gui/src/base-components/Form/FormSwitch/Label.vue @@ -0,0 +1,9 @@ + + + diff --git a/gui/src/base-components/Form/FormSwitch/index.ts b/gui/src/base-components/Form/FormSwitch/index.ts new file mode 100644 index 0000000..45c7f6f --- /dev/null +++ b/gui/src/base-components/Form/FormSwitch/index.ts @@ -0,0 +1,10 @@ +import FormSwitch from "./FormSwitch.vue" +import Input from "./Input.vue" +import Label from "./Label.vue" + +const FormSwitchComponent = Object.assign({}, FormSwitch, { + Input, + Label +}) + +export default FormSwitchComponent diff --git a/gui/src/base-components/Form/FormTextarea.vue b/gui/src/base-components/Form/FormTextarea.vue new file mode 100644 index 0000000..df4cdfa --- /dev/null +++ b/gui/src/base-components/Form/FormTextarea.vue @@ -0,0 +1,58 @@ + + + + + diff --git a/gui/src/base-components/Preview/Panel.vue b/gui/src/base-components/Preview/Panel.vue new file mode 100644 index 0000000..552c712 --- /dev/null +++ b/gui/src/base-components/Preview/Panel.vue @@ -0,0 +1,23 @@ + + + diff --git a/gui/src/base-components/Preview/Preview.vue b/gui/src/base-components/Preview/Preview.vue new file mode 100644 index 0000000..88bbee4 --- /dev/null +++ b/gui/src/base-components/Preview/Preview.vue @@ -0,0 +1,24 @@ + + + diff --git a/gui/src/base-components/Preview/index.ts b/gui/src/base-components/Preview/index.ts new file mode 100644 index 0000000..9622fc4 --- /dev/null +++ b/gui/src/base-components/Preview/index.ts @@ -0,0 +1,11 @@ +import Preview from "./Preview.vue" +import Panel from "./Panel.vue" +import Highlight from "./Highlight.vue" + +const PreviewComponent = Object.assign({}, Preview, { + Preview, + Panel, + Highlight +}) + +export default PreviewComponent diff --git a/gui/src/base-components/Progress/Bar.vue b/gui/src/base-components/Progress/Bar.vue new file mode 100644 index 0000000..f0d8dee --- /dev/null +++ b/gui/src/base-components/Progress/Bar.vue @@ -0,0 +1,19 @@ + + + diff --git a/gui/src/base-components/Progress/Progress.vue b/gui/src/base-components/Progress/Progress.vue new file mode 100644 index 0000000..e407c61 --- /dev/null +++ b/gui/src/base-components/Progress/Progress.vue @@ -0,0 +1,16 @@ + + + diff --git a/gui/src/base-components/Progress/index.ts b/gui/src/base-components/Progress/index.ts new file mode 100644 index 0000000..7ee7107 --- /dev/null +++ b/gui/src/base-components/Progress/index.ts @@ -0,0 +1,8 @@ +import Progress from "./Progress.vue" +import Bar from "./Bar.vue" + +const ProgressComponent = Object.assign({}, Progress, { + Bar +}) + +export default ProgressComponent diff --git a/gui/src/base-components/ScrollToTop/ScrollToTop.vue b/gui/src/base-components/ScrollToTop/ScrollToTop.vue new file mode 100644 index 0000000..6b4c19a --- /dev/null +++ b/gui/src/base-components/ScrollToTop/ScrollToTop.vue @@ -0,0 +1 @@ + diff --git a/gui/src/base-components/ScrollToTop/index.ts b/gui/src/base-components/ScrollToTop/index.ts new file mode 100644 index 0000000..3e0ad26 --- /dev/null +++ b/gui/src/base-components/ScrollToTop/index.ts @@ -0,0 +1,3 @@ +import ScrollToTop from "./ScrollToTop.vue" + +export default ScrollToTop diff --git a/gui/src/base-components/Table/Table.vue b/gui/src/base-components/Table/Table.vue new file mode 100644 index 0000000..9adf933 --- /dev/null +++ b/gui/src/base-components/Table/Table.vue @@ -0,0 +1,59 @@ + + + + + diff --git a/gui/src/base-components/Table/Tbody.vue b/gui/src/base-components/Table/Tbody.vue new file mode 100644 index 0000000..a038040 --- /dev/null +++ b/gui/src/base-components/Table/Tbody.vue @@ -0,0 +1,5 @@ + diff --git a/gui/src/base-components/Table/Td.vue b/gui/src/base-components/Table/Td.vue new file mode 100644 index 0000000..c19ddf7 --- /dev/null +++ b/gui/src/base-components/Table/Td.vue @@ -0,0 +1,38 @@ + + + + + diff --git a/gui/src/base-components/Table/Th.vue b/gui/src/base-components/Table/Th.vue new file mode 100644 index 0000000..2ec8b81 --- /dev/null +++ b/gui/src/base-components/Table/Th.vue @@ -0,0 +1,44 @@ + + + + + diff --git a/gui/src/base-components/Table/Thead.vue b/gui/src/base-components/Table/Thead.vue new file mode 100644 index 0000000..7c31a11 --- /dev/null +++ b/gui/src/base-components/Table/Thead.vue @@ -0,0 +1,43 @@ + + + + + diff --git a/gui/src/base-components/Table/Tr.vue b/gui/src/base-components/Table/Tr.vue new file mode 100644 index 0000000..54baa05 --- /dev/null +++ b/gui/src/base-components/Table/Tr.vue @@ -0,0 +1,37 @@ + + + + + diff --git a/gui/src/base-components/Table/index.ts b/gui/src/base-components/Table/index.ts new file mode 100644 index 0000000..5bc4738 --- /dev/null +++ b/gui/src/base-components/Table/index.ts @@ -0,0 +1,16 @@ +import Table from "./Table.vue" +import Thead from "./Thead.vue" +import Tbody from "./Tbody.vue" +import Tr from "./Tr.vue" +import Th from "./Th.vue" +import Td from "./Td.vue" + +const TableComponent = Object.assign({}, Table, { + Thead, + Tbody, + Tr, + Th, + Td +}) + +export default TableComponent diff --git a/gui/src/base-components/TinySlider/TinySlider.vue b/gui/src/base-components/TinySlider/TinySlider.vue new file mode 100644 index 0000000..b926c39 --- /dev/null +++ b/gui/src/base-components/TinySlider/TinySlider.vue @@ -0,0 +1,50 @@ + + + diff --git a/gui/src/base-components/TinySlider/index.ts b/gui/src/base-components/TinySlider/index.ts new file mode 100644 index 0000000..35bd5af --- /dev/null +++ b/gui/src/base-components/TinySlider/index.ts @@ -0,0 +1,5 @@ +import TinySlider from "./TinySlider.vue" + +export type { TinySliderElement } from "./TinySlider.vue" + +export default TinySlider diff --git a/gui/src/base-components/TinySlider/tiny-slider.ts b/gui/src/base-components/TinySlider/tiny-slider.ts new file mode 100644 index 0000000..803b739 --- /dev/null +++ b/gui/src/base-components/TinySlider/tiny-slider.ts @@ -0,0 +1,24 @@ +import { tns } from "tiny-slider/src/tiny-slider" +import { TinySliderElement, TinySliderProps } from "./TinySlider.vue" + +const init = (el: TinySliderElement, props: TinySliderProps) => { + el.tns = tns({ + container: el, + slideBy: "page", + mouseDrag: true, + autoplay: true, + controls: false, + nav: false, + speed: 500, + ...props.options + }) +} + +const reInit = (el: TinySliderElement) => { + if (el.tns.version !== null) { + el.tns.destroy() + el.tns = el.tns.rebuild() + } +} + +export { init, reInit } diff --git a/gui/src/base-components/Tippy/Tippy.vue b/gui/src/base-components/Tippy/Tippy.vue new file mode 100644 index 0000000..436fd4d --- /dev/null +++ b/gui/src/base-components/Tippy/Tippy.vue @@ -0,0 +1,81 @@ + + + diff --git a/gui/src/base-components/Tippy/index.ts b/gui/src/base-components/Tippy/index.ts new file mode 100644 index 0000000..586cc31 --- /dev/null +++ b/gui/src/base-components/Tippy/index.ts @@ -0,0 +1,5 @@ +import Tippy from "./Tippy.vue" + +export type { ProvideTippy } from "./Tippy.vue" + +export default Tippy diff --git a/gui/src/base-components/TippyContent/TippyContent.vue b/gui/src/base-components/TippyContent/TippyContent.vue new file mode 100644 index 0000000..67eec0d --- /dev/null +++ b/gui/src/base-components/TippyContent/TippyContent.vue @@ -0,0 +1,63 @@ + + + diff --git a/gui/src/base-components/TippyContent/index.ts b/gui/src/base-components/TippyContent/index.ts new file mode 100644 index 0000000..0110366 --- /dev/null +++ b/gui/src/base-components/TippyContent/index.ts @@ -0,0 +1,3 @@ +import TippyContent from "./TippyContent.vue" + +export default TippyContent diff --git a/gui/src/base-components/TomSelect/TomSelect.vue b/gui/src/base-components/TomSelect/TomSelect.vue new file mode 100644 index 0000000..d34ace6 --- /dev/null +++ b/gui/src/base-components/TomSelect/TomSelect.vue @@ -0,0 +1,118 @@ + + + diff --git a/gui/src/base-components/TomSelect/index.ts b/gui/src/base-components/TomSelect/index.ts new file mode 100644 index 0000000..f6faba1 --- /dev/null +++ b/gui/src/base-components/TomSelect/index.ts @@ -0,0 +1,3 @@ +import TomSelect from "./TomSelect.vue" + +export default TomSelect diff --git a/gui/src/base-components/TomSelect/tom-select.ts b/gui/src/base-components/TomSelect/tom-select.ts new file mode 100644 index 0000000..ea966dc --- /dev/null +++ b/gui/src/base-components/TomSelect/tom-select.ts @@ -0,0 +1,145 @@ +import { TomSelectProps, TomSelectElement, TomSelectEmit } from "./TomSelect.vue" +import { TomSettings, RecursivePartial } from "tom-select/src/types" +import TomSelect from "tom-select" +import _ from "lodash" +import TomSelectPlugin from "tom-select" + +const setValue = (el: TomSelectElement, props: TomSelectProps) => { + if (props.modelValue.length) { + if (Array.isArray(props.modelValue)) { + for (const value of props.modelValue) { + const selectedOption = Array.from(el).find( + (option) => option instanceof HTMLOptionElement && option.value === value + ) + + if (selectedOption !== undefined && selectedOption instanceof HTMLOptionElement) { + selectedOption.selected = true + } + } + } else { + el.value = props.modelValue + } + } +} + +const init = ( + originalEl: TomSelectElement, + clonedEl: TomSelectElement, + props: TomSelectProps, + computedOptions: RecursivePartial, + emit: TomSelectEmit +): TomSelectPlugin => { + // On option add + if (Array.isArray(props.modelValue)) { + computedOptions = { + onOptionAdd: function (value: string | number) { + // Add new option + const newOption = document.createElement("option") + newOption.value = value.toString() + newOption.text = value.toString() + originalEl.add(newOption) + + // Emit option add + emit("optionAdd", value) + }, + ...computedOptions + } + } + + clonedEl.TomSelect = new TomSelect(clonedEl, computedOptions) + + // On change + clonedEl.TomSelect.on("change", function (selectedItems: string[] | string) { + emit("update:modelValue", Array.isArray(selectedItems) ? [...selectedItems] : selectedItems) + }) + + clonedEl.TomSelect.on("change", function (selectedItems: string[] | string) { + emit("change", Array.isArray(selectedItems) ? [...selectedItems] : selectedItems) + }) + + return clonedEl.TomSelect +} + +const getOptions = (options: HTMLCollection | undefined, tempOptions: Element[] = []) => { + if (options) { + Array.from(options).forEach(function (optionEl) { + if (optionEl instanceof HTMLOptGroupElement) { + getOptions(optionEl.children, tempOptions) + } else { + tempOptions.push(optionEl) + } + }) + } + + return tempOptions +} + +const updateValue = ( + originalEl: TomSelectElement, + clonedEl: TomSelectElement, + value: string | string[], + props: TomSelectProps, + computedOptions: RecursivePartial, + emit: TomSelectEmit +) => { + // Remove old options + for (const [, option] of Object.entries(clonedEl.TomSelect.options)) { + if ( + !getOptions(originalEl.children).filter((optionEl) => { + return optionEl instanceof HTMLOptionElement && optionEl.value === option.value + }).length + ) { + clonedEl.TomSelect.removeOption(option.value) + } + } + + // Update classnames + const initialClassNames = clonedEl.getAttribute("data-initial-class")?.split(" ") + clonedEl.setAttribute( + "class", + [ + ...Array.from(originalEl.classList), + ...Array.from(clonedEl.classList).filter((className) => initialClassNames?.indexOf(className) === -1) + ].join(" ") + ) + clonedEl.TomSelect.wrapper.setAttribute( + "class", + [ + ...Array.from(originalEl.classList), + ...Array.from(clonedEl.TomSelect.wrapper.classList).filter( + (className) => initialClassNames?.indexOf(className) === -1 + ) + ].join(" ") + ) + clonedEl.setAttribute("data-initial-class", Array.from(originalEl.classList).join(" ")) + + // Add new options + const options = originalEl.children + if (options) { + Array.from(options).forEach(function (optionEl) { + clonedEl.TomSelect.addOption({ + text: optionEl.textContent, + value: optionEl.getAttribute("value") + }) + }) + } + + // Refresh options + clonedEl.TomSelect.refreshOptions(false) + + // Update value + if ( + value === "" || + (!Array.isArray(value) && value !== clonedEl.TomSelect.getValue()) || + (Array.isArray(value) && !_.isEqual(value, clonedEl.TomSelect.getValue())) + ) { + clonedEl.TomSelect.destroy() + if (originalEl.innerHTML) { + clonedEl.innerHTML = originalEl.innerHTML + } + setValue(clonedEl, props) + init(originalEl, clonedEl, props, computedOptions, emit) + } +} + +export { setValue, init, updateValue } diff --git a/gui/src/components/Application/Details.vue b/gui/src/components/Application/Details.vue new file mode 100644 index 0000000..d9fcd88 --- /dev/null +++ b/gui/src/components/Application/Details.vue @@ -0,0 +1,269 @@ + + + diff --git a/gui/src/components/Application/ExpressionEditor.vue b/gui/src/components/Application/ExpressionEditor.vue new file mode 100644 index 0000000..16afa58 --- /dev/null +++ b/gui/src/components/Application/ExpressionEditor.vue @@ -0,0 +1,209 @@ + + + diff --git a/gui/src/components/Application/Metrics/Metrics.vue b/gui/src/components/Application/Metrics/Metrics.vue new file mode 100644 index 0000000..718c928 --- /dev/null +++ b/gui/src/components/Application/Metrics/Metrics.vue @@ -0,0 +1,66 @@ + + + diff --git a/gui/src/components/Application/Metrics/MetricsComposable.ts b/gui/src/components/Application/Metrics/MetricsComposable.ts new file mode 100644 index 0000000..5f3acef --- /dev/null +++ b/gui/src/components/Application/Metrics/MetricsComposable.ts @@ -0,0 +1,133 @@ +import { computed, reactive, ref } from "vue" +import { IMetricComposite, IMetricRaw } from "@/interfaces/metrics.interface.ts" +import _ from "lodash" +import { required } from "@vuelidate/validators" +import { ValidationRule } from "@vuelidate/core" + +export function useMetrics(metrics: Array) { + const localMetrics = computed(() => metrics) + const previouslyEditedMetricsData: Record = {} + + const metricsRawRules = { + name: { required } + } + + const metricsCompositeRules = { + name: { required }, + formula: { required } + } + + const metricRules = reactive({ + name: { required }, + formula: { required } + }) + + // Could not make it work better. Only "reactive" can keep validation rules dynamic + const getValidationRules = (type: string) => { + if (type === "composite") { + Object.assign(metricRules, { formula: { required } }) + } else { + // @ts-ignore + delete metricRules.formula + } + return metricRules + } + + const metricTypeChangeHandler = (index: number, event: HTMLElementEvent) => { + const { target } = event + const previouslyEdited: IMetricRaw | IMetricComposite = previouslyEditedMetricsData?.[index] + previouslyEditedMetricsData[index] = _.cloneDeep(localMetrics.value[index]) + + if (previouslyEdited) { + localMetrics.value[index] = previouslyEdited + } else if (target.value === "composite") { + localMetrics.value[index] = { + type: "composite", + name: "", + formula: "", + isWindowInput: true, + isWindowOutput: true, + level: "global", + input: { + type: "all", + interval: 0, + unit: "ms" + }, + output: { + type: "all", + interval: 0, + unit: "ms" + } + } + } else { + localMetrics.value[index] = { + type: "raw", + isWindowOutputRaw: true, + isWindowInputRaw: true, + outputRaw: { + type: "all", + interval: 0, + unit: "ms" + }, + inputRaw: { + type: "all", + interval: 0, + unit: "ms" + }, + name: "", + sensor: "", + config: [] + } + } + } + + const removeMetric = (index: number) => { + localMetrics.value.splice(index, 1) + delete previouslyEditedMetricsData[index] + } + + const addSetting = (metric: IMetricRaw) => { + metric.config.push({ name: "", value: "" }) + } + + const removeSetting = (metric: IMetricRaw, index: number) => { + metric.config.splice(index, 1) + } + + const isCompositeMetric = (metric: IMetricRaw | IMetricComposite): metric is IMetricComposite => { + return (metric as IMetricComposite).type === "composite" + } + + const isRawMetric = (metric: IMetricRaw | IMetricComposite): metric is IMetricRaw => { + return (metric as IMetricRaw).type === "raw" + } + + const getInputValue = (metric: IMetricRaw | IMetricComposite) => { + if (isRawMetric(metric)) return "-" + return metric.isWindowInput && metric.input + ? `${metric.input.type} ${metric.input.interval} ${metric.input.unit}` + : "-" + } + + const getOutputValue = (metric: IMetricRaw | IMetricComposite) => { + if (isRawMetric(metric)) return "-" + return metric.isWindowOutput && metric.output + ? `${metric.output.type} ${metric.output.interval} ${metric.output.unit}` + : "-" + } + + return { + localMetrics, + getValidationRules, + metricsRawRules, + metricsCompositeRules, + metricTypeChangeHandler, + removeMetric, + addSetting, + removeSetting, + isCompositeMetric, + isRawMetric, + getInputValue, + getOutputValue + } +} diff --git a/gui/src/components/Application/Metrics/MetricsTemplateDesktop.vue b/gui/src/components/Application/Metrics/MetricsTemplateDesktop.vue new file mode 100644 index 0000000..2d5f59f --- /dev/null +++ b/gui/src/components/Application/Metrics/MetricsTemplateDesktop.vue @@ -0,0 +1,435 @@ + + + diff --git a/gui/src/components/Application/Metrics/MetricsTemplateMobile.vue b/gui/src/components/Application/Metrics/MetricsTemplateMobile.vue new file mode 100644 index 0000000..1e27ae2 --- /dev/null +++ b/gui/src/components/Application/Metrics/MetricsTemplateMobile.vue @@ -0,0 +1,421 @@ +