From 22f8f807db48786e24c2eab9492c9ebda30ddebc Mon Sep 17 00:00:00 2001 From: Noxdor Date: Thu, 18 Nov 2021 12:38:26 +0100 Subject: [PATCH 01/98] added vue & vue plugin for snowpack and basic test --- .eslintrc.js | 5 +- package-lock.json | 349 +++++++++++++++++++++++-- package.json | 4 + snowpack.config.js | 1 + src/css/components/banner.css | 1 + src/css/components/banner.css.map | 1 + src/css/components/gradeTable.css | 1 + src/css/components/gradeTable.css.map | 1 + src/css/components/share.css | 1 + src/css/components/share.css.map | 1 + src/css/components/switch.css | 1 + src/css/components/switch.css.map | 1 + src/css/palette.css | 1 + src/css/palette.css.map | 1 + src/css/popup.css | 1 + src/css/popup.css.map | 1 + src/css/settings.css | 1 + src/css/settings.css.map | 1 + src/freshContent/settings/Settings.vue | 16 ++ src/freshContent/settings/index.html | 11 + src/freshContent/settings/main.ts | 4 + src/freshContent/shims.d.ts | 4 + tsconfig.json | 30 +++ 23 files changed, 415 insertions(+), 23 deletions(-) create mode 100644 src/css/components/banner.css create mode 100644 src/css/components/banner.css.map create mode 100644 src/css/components/gradeTable.css create mode 100644 src/css/components/gradeTable.css.map create mode 100644 src/css/components/share.css create mode 100644 src/css/components/share.css.map create mode 100644 src/css/components/switch.css create mode 100644 src/css/components/switch.css.map create mode 100644 src/css/palette.css create mode 100644 src/css/palette.css.map create mode 100644 src/css/popup.css create mode 100644 src/css/popup.css.map create mode 100644 src/css/settings.css create mode 100644 src/css/settings.css.map create mode 100644 src/freshContent/settings/Settings.vue create mode 100644 src/freshContent/settings/index.html create mode 100644 src/freshContent/settings/main.ts create mode 100644 src/freshContent/shims.d.ts create mode 100644 tsconfig.json diff --git a/.eslintrc.js b/.eslintrc.js index 5fb4533b..d3d7f1c4 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -5,7 +5,10 @@ module.exports = { webextensions: true, jquery: true }, - extends: ['standard'], + extends: [ + 'standard', + 'plugin:vue/vue3-recommended', + ], plugins: ['promise'], rules: { 'prefer-arrow-callback': 'warn' diff --git a/package-lock.json b/package-lock.json index e6de60aa..ed539e04 100644 --- a/package-lock.json +++ b/package-lock.json @@ -8,8 +8,12 @@ "name": "tufast_tud", "version": "6.0.0", "license": "GPL-3.0", + "dependencies": { + "vue": "^3.2.22" + }, "devDependencies": { "@snowpack/plugin-sass": "^1.4.0", + "@snowpack/plugin-vue": "^2.6.2", "eslint": "^7.32.0", "eslint-config-standard": "^16.0.3", "eslint-plugin-import": "^2.25.2", @@ -75,6 +79,17 @@ "node": ">=0.8.0" } }, + "node_modules/@babel/parser": { + "version": "7.16.4", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.16.4.tgz", + "integrity": "sha512-6V0qdPUaiVHH3RtZeLIsc+6pDhbYzHR8ogA8w+f+Wc77DuXto19g2QUwveINoS34Uw+W8/hQDGJCx+i4n7xcng==", + "bin": { + "parser": "bin/babel-parser.js" + }, + "engines": { + "node": ">=6.0.0" + } + }, "node_modules/@eslint/eslintrc": { "version": "0.4.3", "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-0.4.3.tgz", @@ -502,6 +517,17 @@ "node": ">=8" } }, + "node_modules/@snowpack/plugin-vue": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/@snowpack/plugin-vue/-/plugin-vue-2.6.2.tgz", + "integrity": "sha512-RdfDvor9EI+YjwqOXXb7SrQHMrnhZsfbAqndkLA3F0oDzcGcLt+/Mog2CkiedfmWx/WOI4F2x8MkSIjTcJsjww==", + "dev": true, + "dependencies": { + "@rollup/plugin-replace": "^2.4.2", + "@vue/compiler-sfc": "^3.0.10", + "hash-sum": "^2.0.0" + } + }, "node_modules/@szmarczak/http-timer": { "version": "4.0.6", "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-4.0.6.tgz", @@ -592,6 +618,124 @@ "@types/node": "*" } }, + "node_modules/@vue/compiler-core": { + "version": "3.2.22", + "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.2.22.tgz", + "integrity": "sha512-uAkovrVeTcjzpiM4ECmVaMrv/bjdgAaLzvjcGqQPBEyUrcqsCgccT9fHJ/+hWVGhyMahmBwLqcn4guULNx7sdw==", + "dependencies": { + "@babel/parser": "^7.15.0", + "@vue/shared": "3.2.22", + "estree-walker": "^2.0.2", + "source-map": "^0.6.1" + } + }, + "node_modules/@vue/compiler-core/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/@vue/compiler-dom": { + "version": "3.2.22", + "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.2.22.tgz", + "integrity": "sha512-VZdsw/VuO1ODs8K7NQwnMQzKITDkIFlYYC03SVnunuf6eNRxBPEonSyqbWNoo6qNaHAEBTG6VVcZC5xC9bAx1g==", + "dependencies": { + "@vue/compiler-core": "3.2.22", + "@vue/shared": "3.2.22" + } + }, + "node_modules/@vue/compiler-sfc": { + "version": "3.2.22", + "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.2.22.tgz", + "integrity": "sha512-tWRQ5ge1tsTDhUwHgueicKJ8rYm6WUVAPTaIpFW3GSwZKcOEJ2rXdfkHFShNVGupeRALz2ET2H84OL0GeRxY0A==", + "dependencies": { + "@babel/parser": "^7.15.0", + "@vue/compiler-core": "3.2.22", + "@vue/compiler-dom": "3.2.22", + "@vue/compiler-ssr": "3.2.22", + "@vue/ref-transform": "3.2.22", + "@vue/shared": "3.2.22", + "estree-walker": "^2.0.2", + "magic-string": "^0.25.7", + "postcss": "^8.1.10", + "source-map": "^0.6.1" + } + }, + "node_modules/@vue/compiler-sfc/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/@vue/compiler-ssr": { + "version": "3.2.22", + "resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.2.22.tgz", + "integrity": "sha512-Cl6aoLJtXzzBkk1sKod8S0WBJLts3+ugVC91d22gGpbkw/64WnF12tOZi7Rg54PPLi1NovqyNWPsLH/SAFcu+w==", + "dependencies": { + "@vue/compiler-dom": "3.2.22", + "@vue/shared": "3.2.22" + } + }, + "node_modules/@vue/reactivity": { + "version": "3.2.22", + "resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.2.22.tgz", + "integrity": "sha512-xNkLAItjI0xB+lFeDgKCrSItmrHTaAzSnt8LmdSCPQnDyarmzbi/u4ESQnckWvlL7lSRKiEaOvblaNyqAa7OnQ==", + "dependencies": { + "@vue/shared": "3.2.22" + } + }, + "node_modules/@vue/ref-transform": { + "version": "3.2.22", + "resolved": "https://registry.npmjs.org/@vue/ref-transform/-/ref-transform-3.2.22.tgz", + "integrity": "sha512-qalVWbq5xWWxLZ0L9OroBg/JZhzavQuCcDXblfErxyDEH6Xc5gIJ4feo1SVCICFzhAUgLgQTdSFLpgjBawbFpw==", + "dependencies": { + "@babel/parser": "^7.15.0", + "@vue/compiler-core": "3.2.22", + "@vue/shared": "3.2.22", + "estree-walker": "^2.0.2", + "magic-string": "^0.25.7" + } + }, + "node_modules/@vue/runtime-core": { + "version": "3.2.22", + "resolved": "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.2.22.tgz", + "integrity": "sha512-e7WOC55wmHPvmoVUk9VBe/Z9k5bJfWJfVIlkUkiADJn0bOgQD29oh/GS14Kb3aEJXIHLI17Em6+HxNut1sIh7Q==", + "dependencies": { + "@vue/reactivity": "3.2.22", + "@vue/shared": "3.2.22" + } + }, + "node_modules/@vue/runtime-dom": { + "version": "3.2.22", + "resolved": "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.2.22.tgz", + "integrity": "sha512-w7VHYJoliLRTLc5beN77wxuOjla4v9wr2FF22xpZFYBmH4U1V7HkYhoHc1BTuNghI15CXT1tNIMhibI1nrQgdw==", + "dependencies": { + "@vue/runtime-core": "3.2.22", + "@vue/shared": "3.2.22", + "csstype": "^2.6.8" + } + }, + "node_modules/@vue/server-renderer": { + "version": "3.2.22", + "resolved": "https://registry.npmjs.org/@vue/server-renderer/-/server-renderer-3.2.22.tgz", + "integrity": "sha512-jCwbQgKPXiXoH9VS9F7K+gyEvEMrjutannwEZD1R8fQ9szmOTqC+RRbIY3Uf2ibQjZtZ8DV9a4FjxICvd9zZlQ==", + "dependencies": { + "@vue/compiler-ssr": "3.2.22", + "@vue/shared": "3.2.22" + }, + "peerDependencies": { + "vue": "3.2.22" + } + }, + "node_modules/@vue/shared": { + "version": "3.2.22", + "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.2.22.tgz", + "integrity": "sha512-qWVav014mpjEtbWbEgl0q9pEyrrIySKum8UVYjwhC6njrKzknLZPvfuYdQyVbApsqr94tf/3dP4pCuZmmjdCWQ==" + }, "node_modules/abbrev": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", @@ -1419,6 +1563,11 @@ "node": ">=4" } }, + "node_modules/csstype": { + "version": "2.6.19", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-2.6.19.tgz", + "integrity": "sha512-ZVxXaNy28/k3kJg0Fou5MiYpp88j7H9hLZp8PDC3jV0WFjfH5E9xHb56L0W59cPbKbcHXeP4qyT8PrHp8t6LcQ==" + }, "node_modules/dashdash": { "version": "1.14.1", "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", @@ -2310,8 +2459,7 @@ "node_modules/estree-walker": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", - "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", - "dev": true + "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==" }, "node_modules/esutils": { "version": "2.0.3", @@ -2907,6 +3055,12 @@ "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=", "dev": true }, + "node_modules/hash-sum": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/hash-sum/-/hash-sum-2.0.0.tgz", + "integrity": "sha512-WdZTbAByD+pHfl/g9QSsBIIwy8IT+EsPiKDs0KNX+zSHhdDLFKdZu0BQHljvO+0QI/BasbMSUa8wYNCZTvhslg==", + "dev": true + }, "node_modules/hosted-git-info": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.0.2.tgz", @@ -3723,7 +3877,6 @@ "version": "0.25.7", "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.7.tgz", "integrity": "sha512-4CrMT5DOHTDk4HYDlzmwu4FVCcIYI8gauveasrdCu2IKIFOJ3f0v/8MDGJCDL9oD2ppz/Av1b0Nj345H9M+XIA==", - "dev": true, "dependencies": { "sourcemap-codec": "^1.4.4" } @@ -3987,7 +4140,6 @@ "version": "3.1.30", "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.1.30.tgz", "integrity": "sha512-zJpuPDwOv8D2zq2WRoMe1HsfZthVewpel9CAvTfc/2mBD1uUT/agc5f7GHGWXlYkFvi1mVxe4IjvP2HNrop7nQ==", - "dev": true, "bin": { "nanoid": "bin/nanoid.cjs" }, @@ -4596,8 +4748,7 @@ "node_modules/picocolors": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", - "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", - "dev": true + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==" }, "node_modules/picomatch": { "version": "2.3.0", @@ -4636,7 +4787,6 @@ "version": "8.3.11", "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.3.11.tgz", "integrity": "sha512-hCmlUAIlUiav8Xdqw3Io4LcpA1DOt7h3LSTAC4G6JGHFFaWzI6qvFt9oilvl8BmkbBRX1IhM90ZAmpk68zccQA==", - "dev": true, "dependencies": { "nanoid": "^3.1.30", "picocolors": "^1.0.0", @@ -5511,7 +5661,6 @@ "version": "0.6.2", "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-0.6.2.tgz", "integrity": "sha512-/3GptzWzu0+0MBQFrDKzw/DvvMTUORvgY6k6jd/VS6iCR4RDTKWH6v6WPwQoUO8667uQEf9Oe38DxAYWY5F/Ug==", - "dev": true, "engines": { "node": ">=0.10.0" } @@ -5519,8 +5668,7 @@ "node_modules/sourcemap-codec": { "version": "1.4.8", "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz", - "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==", - "dev": true + "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==" }, "node_modules/sprintf-js": { "version": "1.0.3", @@ -6003,6 +6151,18 @@ "node": ">=6.0" } }, + "node_modules/vue": { + "version": "3.2.22", + "resolved": "https://registry.npmjs.org/vue/-/vue-3.2.22.tgz", + "integrity": "sha512-KD5nZpXVZquOC6926Xnp3zOvswrUyO9Rya7ZUoxWFQEjFDW4iACtwzubRB4Um2Om9kj6CaJOqAVRDSFlqLpdgw==", + "dependencies": { + "@vue/compiler-dom": "3.2.22", + "@vue/compiler-sfc": "3.2.22", + "@vue/runtime-dom": "3.2.22", + "@vue/server-renderer": "3.2.22", + "@vue/shared": "3.2.22" + } + }, "node_modules/walk-up-path": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/walk-up-path/-/walk-up-path-1.0.0.tgz", @@ -6180,6 +6340,11 @@ } } }, + "@babel/parser": { + "version": "7.16.4", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.16.4.tgz", + "integrity": "sha512-6V0qdPUaiVHH3RtZeLIsc+6pDhbYzHR8ogA8w+f+Wc77DuXto19g2QUwveINoS34Uw+W8/hQDGJCx+i4n7xcng==" + }, "@eslint/eslintrc": { "version": "0.4.3", "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-0.4.3.tgz", @@ -6526,6 +6691,17 @@ } } }, + "@snowpack/plugin-vue": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/@snowpack/plugin-vue/-/plugin-vue-2.6.2.tgz", + "integrity": "sha512-RdfDvor9EI+YjwqOXXb7SrQHMrnhZsfbAqndkLA3F0oDzcGcLt+/Mog2CkiedfmWx/WOI4F2x8MkSIjTcJsjww==", + "dev": true, + "requires": { + "@rollup/plugin-replace": "^2.4.2", + "@vue/compiler-sfc": "^3.0.10", + "hash-sum": "^2.0.0" + } + }, "@szmarczak/http-timer": { "version": "4.0.6", "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-4.0.6.tgz", @@ -6610,6 +6786,119 @@ "@types/node": "*" } }, + "@vue/compiler-core": { + "version": "3.2.22", + "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.2.22.tgz", + "integrity": "sha512-uAkovrVeTcjzpiM4ECmVaMrv/bjdgAaLzvjcGqQPBEyUrcqsCgccT9fHJ/+hWVGhyMahmBwLqcn4guULNx7sdw==", + "requires": { + "@babel/parser": "^7.15.0", + "@vue/shared": "3.2.22", + "estree-walker": "^2.0.2", + "source-map": "^0.6.1" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + } + } + }, + "@vue/compiler-dom": { + "version": "3.2.22", + "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.2.22.tgz", + "integrity": "sha512-VZdsw/VuO1ODs8K7NQwnMQzKITDkIFlYYC03SVnunuf6eNRxBPEonSyqbWNoo6qNaHAEBTG6VVcZC5xC9bAx1g==", + "requires": { + "@vue/compiler-core": "3.2.22", + "@vue/shared": "3.2.22" + } + }, + "@vue/compiler-sfc": { + "version": "3.2.22", + "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.2.22.tgz", + "integrity": "sha512-tWRQ5ge1tsTDhUwHgueicKJ8rYm6WUVAPTaIpFW3GSwZKcOEJ2rXdfkHFShNVGupeRALz2ET2H84OL0GeRxY0A==", + "requires": { + "@babel/parser": "^7.15.0", + "@vue/compiler-core": "3.2.22", + "@vue/compiler-dom": "3.2.22", + "@vue/compiler-ssr": "3.2.22", + "@vue/ref-transform": "3.2.22", + "@vue/shared": "3.2.22", + "estree-walker": "^2.0.2", + "magic-string": "^0.25.7", + "postcss": "^8.1.10", + "source-map": "^0.6.1" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + } + } + }, + "@vue/compiler-ssr": { + "version": "3.2.22", + "resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.2.22.tgz", + "integrity": "sha512-Cl6aoLJtXzzBkk1sKod8S0WBJLts3+ugVC91d22gGpbkw/64WnF12tOZi7Rg54PPLi1NovqyNWPsLH/SAFcu+w==", + "requires": { + "@vue/compiler-dom": "3.2.22", + "@vue/shared": "3.2.22" + } + }, + "@vue/reactivity": { + "version": "3.2.22", + "resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.2.22.tgz", + "integrity": "sha512-xNkLAItjI0xB+lFeDgKCrSItmrHTaAzSnt8LmdSCPQnDyarmzbi/u4ESQnckWvlL7lSRKiEaOvblaNyqAa7OnQ==", + "requires": { + "@vue/shared": "3.2.22" + } + }, + "@vue/ref-transform": { + "version": "3.2.22", + "resolved": "https://registry.npmjs.org/@vue/ref-transform/-/ref-transform-3.2.22.tgz", + "integrity": "sha512-qalVWbq5xWWxLZ0L9OroBg/JZhzavQuCcDXblfErxyDEH6Xc5gIJ4feo1SVCICFzhAUgLgQTdSFLpgjBawbFpw==", + "requires": { + "@babel/parser": "^7.15.0", + "@vue/compiler-core": "3.2.22", + "@vue/shared": "3.2.22", + "estree-walker": "^2.0.2", + "magic-string": "^0.25.7" + } + }, + "@vue/runtime-core": { + "version": "3.2.22", + "resolved": "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.2.22.tgz", + "integrity": "sha512-e7WOC55wmHPvmoVUk9VBe/Z9k5bJfWJfVIlkUkiADJn0bOgQD29oh/GS14Kb3aEJXIHLI17Em6+HxNut1sIh7Q==", + "requires": { + "@vue/reactivity": "3.2.22", + "@vue/shared": "3.2.22" + } + }, + "@vue/runtime-dom": { + "version": "3.2.22", + "resolved": "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.2.22.tgz", + "integrity": "sha512-w7VHYJoliLRTLc5beN77wxuOjla4v9wr2FF22xpZFYBmH4U1V7HkYhoHc1BTuNghI15CXT1tNIMhibI1nrQgdw==", + "requires": { + "@vue/runtime-core": "3.2.22", + "@vue/shared": "3.2.22", + "csstype": "^2.6.8" + } + }, + "@vue/server-renderer": { + "version": "3.2.22", + "resolved": "https://registry.npmjs.org/@vue/server-renderer/-/server-renderer-3.2.22.tgz", + "integrity": "sha512-jCwbQgKPXiXoH9VS9F7K+gyEvEMrjutannwEZD1R8fQ9szmOTqC+RRbIY3Uf2ibQjZtZ8DV9a4FjxICvd9zZlQ==", + "requires": { + "@vue/compiler-ssr": "3.2.22", + "@vue/shared": "3.2.22" + } + }, + "@vue/shared": { + "version": "3.2.22", + "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.2.22.tgz", + "integrity": "sha512-qWVav014mpjEtbWbEgl0q9pEyrrIySKum8UVYjwhC6njrKzknLZPvfuYdQyVbApsqr94tf/3dP4pCuZmmjdCWQ==" + }, "abbrev": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", @@ -7257,6 +7546,11 @@ "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", "dev": true }, + "csstype": { + "version": "2.6.19", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-2.6.19.tgz", + "integrity": "sha512-ZVxXaNy28/k3kJg0Fou5MiYpp88j7H9hLZp8PDC3jV0WFjfH5E9xHb56L0W59cPbKbcHXeP4qyT8PrHp8t6LcQ==" + }, "dashdash": { "version": "1.14.1", "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", @@ -7938,8 +8232,7 @@ "estree-walker": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", - "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", - "dev": true + "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==" }, "esutils": { "version": "2.0.3", @@ -8390,6 +8683,12 @@ "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=", "dev": true }, + "hash-sum": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/hash-sum/-/hash-sum-2.0.0.tgz", + "integrity": "sha512-WdZTbAByD+pHfl/g9QSsBIIwy8IT+EsPiKDs0KNX+zSHhdDLFKdZu0BQHljvO+0QI/BasbMSUa8wYNCZTvhslg==", + "dev": true + }, "hosted-git-info": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.0.2.tgz", @@ -9013,7 +9312,6 @@ "version": "0.25.7", "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.7.tgz", "integrity": "sha512-4CrMT5DOHTDk4HYDlzmwu4FVCcIYI8gauveasrdCu2IKIFOJ3f0v/8MDGJCDL9oD2ppz/Av1b0Nj345H9M+XIA==", - "dev": true, "requires": { "sourcemap-codec": "^1.4.4" } @@ -9216,8 +9514,7 @@ "nanoid": { "version": "3.1.30", "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.1.30.tgz", - "integrity": "sha512-zJpuPDwOv8D2zq2WRoMe1HsfZthVewpel9CAvTfc/2mBD1uUT/agc5f7GHGWXlYkFvi1mVxe4IjvP2HNrop7nQ==", - "dev": true + "integrity": "sha512-zJpuPDwOv8D2zq2WRoMe1HsfZthVewpel9CAvTfc/2mBD1uUT/agc5f7GHGWXlYkFvi1mVxe4IjvP2HNrop7nQ==" }, "natural-compare": { "version": "1.4.0", @@ -9668,8 +9965,7 @@ "picocolors": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", - "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", - "dev": true + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==" }, "picomatch": { "version": "2.3.0", @@ -9696,7 +9992,6 @@ "version": "8.3.11", "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.3.11.tgz", "integrity": "sha512-hCmlUAIlUiav8Xdqw3Io4LcpA1DOt7h3LSTAC4G6JGHFFaWzI6qvFt9oilvl8BmkbBRX1IhM90ZAmpk68zccQA==", - "dev": true, "requires": { "nanoid": "^3.1.30", "picocolors": "^1.0.0", @@ -10345,14 +10640,12 @@ "source-map-js": { "version": "0.6.2", "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-0.6.2.tgz", - "integrity": "sha512-/3GptzWzu0+0MBQFrDKzw/DvvMTUORvgY6k6jd/VS6iCR4RDTKWH6v6WPwQoUO8667uQEf9Oe38DxAYWY5F/Ug==", - "dev": true + "integrity": "sha512-/3GptzWzu0+0MBQFrDKzw/DvvMTUORvgY6k6jd/VS6iCR4RDTKWH6v6WPwQoUO8667uQEf9Oe38DxAYWY5F/Ug==" }, "sourcemap-codec": { "version": "1.4.8", "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz", - "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==", - "dev": true + "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==" }, "sprintf-js": { "version": "1.0.3", @@ -10742,6 +11035,18 @@ "integrity": "sha512-LuCAHZN75H9tdrAiLFf030oW7nJV5xwNMuk1ymOZwopmuK3d2H4L1Kv4+GFHgarKiLfXXLFU+7LDABHnwOkWng==", "dev": true }, + "vue": { + "version": "3.2.22", + "resolved": "https://registry.npmjs.org/vue/-/vue-3.2.22.tgz", + "integrity": "sha512-KD5nZpXVZquOC6926Xnp3zOvswrUyO9Rya7ZUoxWFQEjFDW4iACtwzubRB4Um2Om9kj6CaJOqAVRDSFlqLpdgw==", + "requires": { + "@vue/compiler-dom": "3.2.22", + "@vue/compiler-sfc": "3.2.22", + "@vue/runtime-dom": "3.2.22", + "@vue/server-renderer": "3.2.22", + "@vue/shared": "3.2.22" + } + }, "walk-up-path": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/walk-up-path/-/walk-up-path-1.0.0.tgz", diff --git a/package.json b/package.json index ce3f260c..d36c68e9 100644 --- a/package.json +++ b/package.json @@ -36,6 +36,7 @@ "homepage": "https://github.com/TUfast-TUD/TUfast_TUD#readme", "devDependencies": { "@snowpack/plugin-sass": "^1.4.0", + "@snowpack/plugin-vue": "^2.6.2", "eslint": "^7.32.0", "eslint-config-standard": "^16.0.3", "eslint-plugin-import": "^2.25.2", @@ -44,5 +45,8 @@ "sass": "^1.42.1", "snowpack": "^3.8.8", "typescript": "^4.4.3" + }, + "dependencies": { + "vue": "^3.2.22" } } diff --git a/snowpack.config.js b/snowpack.config.js index ba62abf2..a59eb744 100644 --- a/snowpack.config.js +++ b/snowpack.config.js @@ -8,6 +8,7 @@ module.exports = { }, plugins: [ '@snowpack/plugin-sass', + '@snowpack/plugin-vue', ], packageOptions: { /* ... */ diff --git a/src/css/components/banner.css b/src/css/components/banner.css new file mode 100644 index 00000000..e2e6ae9c --- /dev/null +++ b/src/css/components/banner.css @@ -0,0 +1 @@ +@keyframes rotate{from{transform:rotate(0deg)}to{transform:rotate(360deg)}}.banner{position:fixed;top:25px;right:200px;width:fit-content;background-color:#47bb5d;display:flex;justify-content:space-between;align-items:center;border-radius:.5rem;transition:all 200ms ease;z-index:10000000}.banner:hover{transform:scale(1.025);box-shadow:.5rem .5rem 3rem .1rem rgba(0,0,0,.5)}.banner::after{content:"";width:40px;height:20px;position:absolute;background-color:inherit;clip-path:polygon(50% 0%, 100% 100%, 0 100%);right:50px;top:-18px}.banner__icon{height:2rem;margin-left:1rem}.banner__icon:hover{animation:rotate 400ms ease-in-out}.banner__title{margin:1rem .5rem;user-select:none;color:#fff}.banner__close{border:none;background-color:transparent;cursor:pointer;font-size:2rem;height:50%;position:absolute;top:0;right:0;line-height:1}.banner__close:hover{color:red}.banner strong{font-size:1.2em;font-weight:800}/*# sourceMappingURL=banner.css.map */ diff --git a/src/css/components/banner.css.map b/src/css/components/banner.css.map new file mode 100644 index 00000000..d454d4b1 --- /dev/null +++ b/src/css/components/banner.css.map @@ -0,0 +1 @@ +{"version":3,"sourceRoot":"","sources":["../../scss/components/banner.scss"],"names":[],"mappings":"AAAA,kBACC,KACC,uBAED,GACC,0BAIF,QACC,eACA,SACA,YACA,kBACA,yBACA,aACA,8BACA,mBACA,oBACA,0BACA,iBAGD,cACC,uBACA,iDAGD,eACC,WACA,WACA,YACA,kBACA,yBACA,6CACA,WACA,UAGD,cACC,YACA,iBAGD,oBACC,mCAGD,eACC,kBACA,iBACA,WAGD,eACC,YACA,6BACA,eACA,eACA,WACA,kBACA,MACA,QACA,cAID,qBACC,UAGD,eACC,gBACA","file":"banner.css"} \ No newline at end of file diff --git a/src/css/components/gradeTable.css b/src/css/components/gradeTable.css new file mode 100644 index 00000000..3054a60c --- /dev/null +++ b/src/css/components/gradeTable.css @@ -0,0 +1 @@ +.tr-table-state-dark .td{background-color:#0B2A51DD;color:#fff}.tr-table-state-danger .td,.red{background-color:#91BFD666}.tr-table-state-success .td,.green{background-color:#38C79E66}.tr-table-state-primary .td,.blue{background-color:#00567FAA;color:#fff}.tr-table-state-warn .td{background-color:#E5EE1B99}.tr-table-state-success,.tr-table-state-primary,.tr-table-state-danger,.tr-table-state-warning{color:#000}.info-row{display:flex;flex-direction:row;justify-content:space-around;width:50%}.square{width:20px;height:20px;margin:0 8px}.info-row__info{display:flex;flex-direction:row;align-items:center;width:33%}#container{display:flex;align-items:center;justify-content:center}#pimpedTable{width:95vw}#pimpedTable .td{font-size:inherit;padding:8px 5px}#portal-footer{height:inherit !important}/*# sourceMappingURL=gradeTable.css.map */ diff --git a/src/css/components/gradeTable.css.map b/src/css/components/gradeTable.css.map new file mode 100644 index 00000000..3969f71b --- /dev/null +++ b/src/css/components/gradeTable.css.map @@ -0,0 +1 @@ +{"version":3,"sourceRoot":"","sources":["../../scss/components/gradeTable.scss"],"names":[],"mappings":"AAAA,yBACC,2BACA,WAGD,gCACC,2BAGD,mCACC,2BAGD,kCACC,2BACA,WAGD,yBACC,2BAGD,+FACC,WAGD,UACC,aACA,mBACA,6BACA,UAGD,QACC,WACA,YACA,aAGD,gBACC,aACA,mBACA,mBACA,UAGD,WACC,aACA,mBACA,uBAGD,aACC,WAID,iBACC,kBACA,gBAKD,eACC","file":"gradeTable.css"} \ No newline at end of file diff --git a/src/css/components/share.css b/src/css/components/share.css new file mode 100644 index 00000000..ddc9ab66 --- /dev/null +++ b/src/css/components/share.css @@ -0,0 +1 @@ +@media not screen and (prefers-color-scheme: dark){:root{color-scheme:light;scrollbar-color:unset;--color-text-primary: #24292e;--color-text-secondary: #586069;--color-text-tertiary: #6a737d;--color-text-placeholder: #6a737d;--color-text-disabled: #959da5;--color-text-inverse: #fff;--color-text-link: #0366d6;--color-text-danger: #cb2431;--color-text-success: #22863a;--color-text-warning: #b08800;--color-text-white: #fff;--color-text-purple: #6f42c1;--color-bg-primary: #f9f9fa;--color-bg-secondary: #fafbfc;--color-bg-tertiary: #f6f8fa;--color-bg-overlay: #fff;--color-bg-backdrop: rgba(27,31,35,0.5);--color-bg-scrollbar: #dbdbdb;--color-bg-scrollbar-thumb: #9c9c9c;--color-bg-info: rgb(222 244 255);--color-bg-success: rgb(230 255 228);--color-btn-text: #24292e;--color-btn-bg: #fafbfc;--color-btn-border: rgba(27,31,35,0.15);--color-btn-hover-bg: #f3f4f6;--color-btn-hover-border: rgba(27,31,35,0.15);--color-btn-active-bg: #ebecf0;--color-btn-active-border: rgba(27,31,35,0.1);--color-btn-selected-bg: #eeeff2;--color-btn-focus-bg: #fafbfc;--color-btn-focus-border: rgba(27,31,35,0.15);--color-btn-accept-bg: #28933c;--color-btn-accept-hover-bg: #2ea043;--color-btn-deny-bg: #586069;--color-btn-deny-hover-bg: #6a737d;--color-btn-switch-bg: #ccc;--color-border-primary: #e1e4e8;--color-border-secondary: #ebedef;--color-border-tertiary: #d1d5da;--color-border-overlay: #e1e4e8;--color-border-inverse: #fff;--color-border-info: #0366d6;--color-border-danger: #d73a49;--color-border-success: #34d058;--color-border-warning: #f9c513;--color-border-input: #e1e4e8;--color-border-radio: #e1e4e8;--color-border-popup: #dddddd}:root .swap-light{display:block}:root .swap-dark{display:none}:root .invert{filter:none}}@media only screen and (prefers-color-scheme: dark){:root{color-scheme:dark;scrollbar-color:#737373 #38383d;--color-text-primary: #c9d1d9;--color-text-secondary: #8b949e;--color-text-tertiary: #8b949e;--color-text-placeholder: #484f58;--color-text-disabled: #484f58;--color-text-inverse: #0d1117;--color-text-link: #58a6ff;--color-text-danger: #f85149;--color-text-success: #56d364;--color-text-warning: #e3b341;--color-text-white: #f0f6fc;--color-text-purple: #8a63d2;--color-bg-primary: #0d1117;--color-bg-secondary: #0d1117;--color-bg-tertiary: #161b22;--color-bg-overlay: #1c2128;--color-bg-backdrop: rgba(1, 4, 9, .8);--color-bg-scrollbar: #0d1117;--color-bg-scrollbar-thumb: #30363d;--color-bg-info: rgba(56,139,253,0.25);--color-bg-success: rgba(63,185,80,0.4);--color-btn-text: #c9d1d9;--color-btn-bg: #21262d;--color-btn-border: #30363d;--color-btn-hover-bg: #30363d;--color-btn-hover-border: #8b949e;--color-btn-active-bg: #292e34;--color-btn-active-border: #6e7681;--color-btn-selected-bg: #161b22;--color-btn-focus-bg: #21262d;--color-btn-focus-border: #8b949e;--color-btn-accept-bg: #28933c;--color-btn-accept-hover-bg: #2ea043;--color-btn-deny-bg: #21262d;--color-btn-deny-hover-bg: #292e34;--color-btn-switch-bg: #30363d;--color-border-primary: #30363d;--color-border-secondary: #21262d;--color-border-tertiary: #6e7681;--color-border-overlay: #30363d;--color-border-inverse: #f0f6fc;--color-border-info: rgba(56,139,253,0.4);--color-border-danger: rgba(248,81,73,0.4);--color-border-success: rgba(63,185,80,0.4);--color-border-warning: rgba(187,128,9,0.4);--color-border-input: #30363d;--color-border-radio: #21262d;--color-border-popup: #30363d}:root .swap-light{display:none}:root .swap-dark{display:block}:root .invert{filter:invert(1) hue-rotate(180deg)}}:root[data-theme=light]{color-scheme:light;scrollbar-color:unset;--color-text-primary: #24292e;--color-text-secondary: #586069;--color-text-tertiary: #6a737d;--color-text-placeholder: #6a737d;--color-text-disabled: #959da5;--color-text-inverse: #fff;--color-text-link: #0366d6;--color-text-danger: #cb2431;--color-text-success: #22863a;--color-text-warning: #b08800;--color-text-white: #fff;--color-text-purple: #6f42c1;--color-bg-primary: #f9f9fa;--color-bg-secondary: #fafbfc;--color-bg-tertiary: #f6f8fa;--color-bg-overlay: #fff;--color-bg-backdrop: rgba(27,31,35,0.5);--color-bg-scrollbar: #dbdbdb;--color-bg-scrollbar-thumb: #9c9c9c;--color-bg-info: rgb(222 244 255);--color-bg-success: rgb(230 255 228);--color-btn-text: #24292e;--color-btn-bg: #fafbfc;--color-btn-border: rgba(27,31,35,0.15);--color-btn-hover-bg: #f3f4f6;--color-btn-hover-border: rgba(27,31,35,0.15);--color-btn-active-bg: #ebecf0;--color-btn-active-border: rgba(27,31,35,0.1);--color-btn-selected-bg: #eeeff2;--color-btn-focus-bg: #fafbfc;--color-btn-focus-border: rgba(27,31,35,0.15);--color-btn-accept-bg: #28933c;--color-btn-accept-hover-bg: #2ea043;--color-btn-deny-bg: #586069;--color-btn-deny-hover-bg: #6a737d;--color-btn-switch-bg: #ccc;--color-border-primary: #e1e4e8;--color-border-secondary: #ebedef;--color-border-tertiary: #d1d5da;--color-border-overlay: #e1e4e8;--color-border-inverse: #fff;--color-border-info: #0366d6;--color-border-danger: #d73a49;--color-border-success: #34d058;--color-border-warning: #f9c513;--color-border-input: #e1e4e8;--color-border-radio: #e1e4e8;--color-border-popup: #dddddd}:root[data-theme=light] .swap-light{display:block}:root[data-theme=light] .swap-dark{display:none}:root[data-theme=light] .invert{filter:none}:root[data-theme=dark]{color-scheme:dark;scrollbar-color:#737373 #38383d;--color-text-primary: #c9d1d9;--color-text-secondary: #8b949e;--color-text-tertiary: #8b949e;--color-text-placeholder: #484f58;--color-text-disabled: #484f58;--color-text-inverse: #0d1117;--color-text-link: #58a6ff;--color-text-danger: #f85149;--color-text-success: #56d364;--color-text-warning: #e3b341;--color-text-white: #f0f6fc;--color-text-purple: #8a63d2;--color-bg-primary: #0d1117;--color-bg-secondary: #0d1117;--color-bg-tertiary: #161b22;--color-bg-overlay: #1c2128;--color-bg-backdrop: rgba(1, 4, 9, .8);--color-bg-scrollbar: #0d1117;--color-bg-scrollbar-thumb: #30363d;--color-bg-info: rgba(56,139,253,0.25);--color-bg-success: rgba(63,185,80,0.4);--color-btn-text: #c9d1d9;--color-btn-bg: #21262d;--color-btn-border: #30363d;--color-btn-hover-bg: #30363d;--color-btn-hover-border: #8b949e;--color-btn-active-bg: #292e34;--color-btn-active-border: #6e7681;--color-btn-selected-bg: #161b22;--color-btn-focus-bg: #21262d;--color-btn-focus-border: #8b949e;--color-btn-accept-bg: #28933c;--color-btn-accept-hover-bg: #2ea043;--color-btn-deny-bg: #21262d;--color-btn-deny-hover-bg: #292e34;--color-btn-switch-bg: #30363d;--color-border-primary: #30363d;--color-border-secondary: #21262d;--color-border-tertiary: #6e7681;--color-border-overlay: #30363d;--color-border-inverse: #f0f6fc;--color-border-info: rgba(56,139,253,0.4);--color-border-danger: rgba(248,81,73,0.4);--color-border-success: rgba(63,185,80,0.4);--color-border-warning: rgba(187,128,9,0.4);--color-border-input: #30363d;--color-border-radio: #21262d;--color-border-popup: #30363d}:root[data-theme=dark] .swap-light{display:none}:root[data-theme=dark] .swap-dark{display:block}:root[data-theme=dark] .invert{filter:invert(1) hue-rotate(180deg)}.the-bottom{padding:0px;bottom:13%;font-size:1.3em;position:absolute;left:50%;transform:translateX(-50%);white-space:nowrap;display:"inline-block"}.grey_a{text-decoration:underline;color:var(--color-text-secondary);font-weight:100}.grey{color:var(--color-text-secondary);font-weight:100}#download-section{position:relative;top:1.3em}html{overflow:hidden}.tufast_text{text-align:center}.download-link{font-size:1em}.huge{font-size:1.5em;font-weight:800;display:inline;vertical-align:middle;line-height:1.4em}.the-middle{padding:5px;top:3%;position:absolute;left:50%;transform:translateX(-50%);font-size:1.9em;line-height:2em;text-align:center}.imgicon{height:1em;vertical-align:middle}.browser_name{display:inline;vertical-align:middle;font-size:.9em;line-height:.9em}a{text-decoration:none}/*# sourceMappingURL=share.css.map */ diff --git a/src/css/components/share.css.map b/src/css/components/share.css.map new file mode 100644 index 00000000..ccb32fd8 --- /dev/null +++ b/src/css/components/share.css.map @@ -0,0 +1 @@ +{"version":3,"sourceRoot":"","sources":["../../scss/palette.scss","../../scss/components/share.scss"],"names":[],"mappings":"AAwJA,mDACE,MAvJA,mBAEA,sBAGA,8BACA,gCACA,+BACA,kCACA,+BACA,2BACA,2BACA,6BACA,8BACA,8BACA,yBACA,6BAGA,4BACA,8BACA,6BACA,yBACA,wCACA,8BACA,oCACA,kCACA,qCAGA,0BACA,wBACA,wCACA,8BACA,8CACA,+BACA,8CACA,iCACA,8BACA,8CACA,+BACA,qCACA,6BACA,mCACA,4BAGA,gCACA,kCACA,iCACA,gCACA,6BACA,6BACA,+BACA,gCACA,gCACA,8BACA,8BACA,8BAmEA,kBACE,cAEF,iBACE,aAEF,cACE,aA0BJ,oDACE,MAhGA,kBAEA,gCAGA,8BACA,gCACA,+BACA,kCACA,+BACA,8BACA,2BACA,6BACA,8BACA,8BACA,4BACA,6BAGA,4BACA,8BACA,6BACA,4BACA,uCACA,8BACA,oCACA,uCACA,wCAGA,0BACA,wBACA,4BACA,8BACA,kCACA,+BACA,mCACA,iCACA,8BACA,kCACA,+BACA,qCACA,6BACA,mCACA,+BAGA,gCACA,kCACA,iCACA,gCACA,gCACA,0CACA,2CACA,4CACA,4CACA,8BACA,8BACA,8BAgBA,kBACE,aAEF,iBACE,cAEF,cACE,qCAsBJ,wBAtKE,mBAEA,sBAGA,8BACA,gCACA,+BACA,kCACA,+BACA,2BACA,2BACA,6BACA,8BACA,8BACA,yBACA,6BAGA,4BACA,8BACA,6BACA,yBACA,wCACA,8BACA,oCACA,kCACA,qCAGA,0BACA,wBACA,wCACA,8BACA,8CACA,+BACA,8CACA,iCACA,8BACA,8CACA,+BACA,qCACA,6BACA,mCACA,4BAGA,gCACA,kCACA,iCACA,gCACA,6BACA,6BACA,+BACA,gCACA,gCACA,8BACA,8BACA,8BAmEA,oCACE,cAEF,mCACE,aAEF,gCACE,YAwCJ,uBA7GE,kBAEA,gCAGA,8BACA,gCACA,+BACA,kCACA,+BACA,8BACA,2BACA,6BACA,8BACA,8BACA,4BACA,6BAGA,4BACA,8BACA,6BACA,4BACA,uCACA,8BACA,oCACA,uCACA,wCAGA,0BACA,wBACA,4BACA,8BACA,kCACA,+BACA,mCACA,iCACA,8BACA,kCACA,+BACA,qCACA,6BACA,mCACA,+BAGA,gCACA,kCACA,iCACA,gCACA,gCACA,0CACA,2CACA,4CACA,4CACA,8BACA,8BACA,8BAgBA,mCACE,aAEF,kCACE,cAEF,+BACE,oCChJJ,YACI,YACA,WACA,gBACA,kBACA,SACA,2BACA,mBACA,uBAGJ,QACI,0BACA,kCACA,gBAGJ,MACI,kCACA,gBAIJ,kBACI,kBACA,UAGJ,KACI,gBAGJ,aACI,kBAGJ,eACI,cAGJ,MACI,gBACA,gBACA,eACA,sBACA,kBAGJ,YACI,YACA,OACA,kBACA,SACA,2BACA,gBACA,gBACA,kBAGJ,SACI,WACA,sBAGJ,cACI,eACA,sBACA,eACA,iBAGJ,EACI","file":"share.css"} \ No newline at end of file diff --git a/src/css/components/switch.css b/src/css/components/switch.css new file mode 100644 index 00000000..bb729532 --- /dev/null +++ b/src/css/components/switch.css @@ -0,0 +1 @@ +@media not screen and (prefers-color-scheme: dark){:root{color-scheme:light;scrollbar-color:unset;--color-text-primary: #24292e;--color-text-secondary: #586069;--color-text-tertiary: #6a737d;--color-text-placeholder: #6a737d;--color-text-disabled: #959da5;--color-text-inverse: #fff;--color-text-link: #0366d6;--color-text-danger: #cb2431;--color-text-success: #22863a;--color-text-warning: #b08800;--color-text-white: #fff;--color-text-purple: #6f42c1;--color-bg-primary: #f9f9fa;--color-bg-secondary: #fafbfc;--color-bg-tertiary: #f6f8fa;--color-bg-overlay: #fff;--color-bg-backdrop: rgba(27,31,35,0.5);--color-bg-scrollbar: #dbdbdb;--color-bg-scrollbar-thumb: #9c9c9c;--color-bg-info: rgb(222 244 255);--color-bg-success: rgb(230 255 228);--color-btn-text: #24292e;--color-btn-bg: #fafbfc;--color-btn-border: rgba(27,31,35,0.15);--color-btn-hover-bg: #f3f4f6;--color-btn-hover-border: rgba(27,31,35,0.15);--color-btn-active-bg: #ebecf0;--color-btn-active-border: rgba(27,31,35,0.1);--color-btn-selected-bg: #eeeff2;--color-btn-focus-bg: #fafbfc;--color-btn-focus-border: rgba(27,31,35,0.15);--color-btn-accept-bg: #28933c;--color-btn-accept-hover-bg: #2ea043;--color-btn-deny-bg: #586069;--color-btn-deny-hover-bg: #6a737d;--color-btn-switch-bg: #ccc;--color-border-primary: #e1e4e8;--color-border-secondary: #ebedef;--color-border-tertiary: #d1d5da;--color-border-overlay: #e1e4e8;--color-border-inverse: #fff;--color-border-info: #0366d6;--color-border-danger: #d73a49;--color-border-success: #34d058;--color-border-warning: #f9c513;--color-border-input: #e1e4e8;--color-border-radio: #e1e4e8;--color-border-popup: #dddddd}:root .swap-light{display:block}:root .swap-dark{display:none}:root .invert{filter:none}}@media only screen and (prefers-color-scheme: dark){:root{color-scheme:dark;scrollbar-color:#737373 #38383d;--color-text-primary: #c9d1d9;--color-text-secondary: #8b949e;--color-text-tertiary: #8b949e;--color-text-placeholder: #484f58;--color-text-disabled: #484f58;--color-text-inverse: #0d1117;--color-text-link: #58a6ff;--color-text-danger: #f85149;--color-text-success: #56d364;--color-text-warning: #e3b341;--color-text-white: #f0f6fc;--color-text-purple: #8a63d2;--color-bg-primary: #0d1117;--color-bg-secondary: #0d1117;--color-bg-tertiary: #161b22;--color-bg-overlay: #1c2128;--color-bg-backdrop: rgba(1, 4, 9, .8);--color-bg-scrollbar: #0d1117;--color-bg-scrollbar-thumb: #30363d;--color-bg-info: rgba(56,139,253,0.25);--color-bg-success: rgba(63,185,80,0.4);--color-btn-text: #c9d1d9;--color-btn-bg: #21262d;--color-btn-border: #30363d;--color-btn-hover-bg: #30363d;--color-btn-hover-border: #8b949e;--color-btn-active-bg: #292e34;--color-btn-active-border: #6e7681;--color-btn-selected-bg: #161b22;--color-btn-focus-bg: #21262d;--color-btn-focus-border: #8b949e;--color-btn-accept-bg: #28933c;--color-btn-accept-hover-bg: #2ea043;--color-btn-deny-bg: #21262d;--color-btn-deny-hover-bg: #292e34;--color-btn-switch-bg: #30363d;--color-border-primary: #30363d;--color-border-secondary: #21262d;--color-border-tertiary: #6e7681;--color-border-overlay: #30363d;--color-border-inverse: #f0f6fc;--color-border-info: rgba(56,139,253,0.4);--color-border-danger: rgba(248,81,73,0.4);--color-border-success: rgba(63,185,80,0.4);--color-border-warning: rgba(187,128,9,0.4);--color-border-input: #30363d;--color-border-radio: #21262d;--color-border-popup: #30363d}:root .swap-light{display:none}:root .swap-dark{display:block}:root .invert{filter:invert(1) hue-rotate(180deg)}}:root[data-theme=light]{color-scheme:light;scrollbar-color:unset;--color-text-primary: #24292e;--color-text-secondary: #586069;--color-text-tertiary: #6a737d;--color-text-placeholder: #6a737d;--color-text-disabled: #959da5;--color-text-inverse: #fff;--color-text-link: #0366d6;--color-text-danger: #cb2431;--color-text-success: #22863a;--color-text-warning: #b08800;--color-text-white: #fff;--color-text-purple: #6f42c1;--color-bg-primary: #f9f9fa;--color-bg-secondary: #fafbfc;--color-bg-tertiary: #f6f8fa;--color-bg-overlay: #fff;--color-bg-backdrop: rgba(27,31,35,0.5);--color-bg-scrollbar: #dbdbdb;--color-bg-scrollbar-thumb: #9c9c9c;--color-bg-info: rgb(222 244 255);--color-bg-success: rgb(230 255 228);--color-btn-text: #24292e;--color-btn-bg: #fafbfc;--color-btn-border: rgba(27,31,35,0.15);--color-btn-hover-bg: #f3f4f6;--color-btn-hover-border: rgba(27,31,35,0.15);--color-btn-active-bg: #ebecf0;--color-btn-active-border: rgba(27,31,35,0.1);--color-btn-selected-bg: #eeeff2;--color-btn-focus-bg: #fafbfc;--color-btn-focus-border: rgba(27,31,35,0.15);--color-btn-accept-bg: #28933c;--color-btn-accept-hover-bg: #2ea043;--color-btn-deny-bg: #586069;--color-btn-deny-hover-bg: #6a737d;--color-btn-switch-bg: #ccc;--color-border-primary: #e1e4e8;--color-border-secondary: #ebedef;--color-border-tertiary: #d1d5da;--color-border-overlay: #e1e4e8;--color-border-inverse: #fff;--color-border-info: #0366d6;--color-border-danger: #d73a49;--color-border-success: #34d058;--color-border-warning: #f9c513;--color-border-input: #e1e4e8;--color-border-radio: #e1e4e8;--color-border-popup: #dddddd}:root[data-theme=light] .swap-light{display:block}:root[data-theme=light] .swap-dark{display:none}:root[data-theme=light] .invert{filter:none}:root[data-theme=dark]{color-scheme:dark;scrollbar-color:#737373 #38383d;--color-text-primary: #c9d1d9;--color-text-secondary: #8b949e;--color-text-tertiary: #8b949e;--color-text-placeholder: #484f58;--color-text-disabled: #484f58;--color-text-inverse: #0d1117;--color-text-link: #58a6ff;--color-text-danger: #f85149;--color-text-success: #56d364;--color-text-warning: #e3b341;--color-text-white: #f0f6fc;--color-text-purple: #8a63d2;--color-bg-primary: #0d1117;--color-bg-secondary: #0d1117;--color-bg-tertiary: #161b22;--color-bg-overlay: #1c2128;--color-bg-backdrop: rgba(1, 4, 9, .8);--color-bg-scrollbar: #0d1117;--color-bg-scrollbar-thumb: #30363d;--color-bg-info: rgba(56,139,253,0.25);--color-bg-success: rgba(63,185,80,0.4);--color-btn-text: #c9d1d9;--color-btn-bg: #21262d;--color-btn-border: #30363d;--color-btn-hover-bg: #30363d;--color-btn-hover-border: #8b949e;--color-btn-active-bg: #292e34;--color-btn-active-border: #6e7681;--color-btn-selected-bg: #161b22;--color-btn-focus-bg: #21262d;--color-btn-focus-border: #8b949e;--color-btn-accept-bg: #28933c;--color-btn-accept-hover-bg: #2ea043;--color-btn-deny-bg: #21262d;--color-btn-deny-hover-bg: #292e34;--color-btn-switch-bg: #30363d;--color-border-primary: #30363d;--color-border-secondary: #21262d;--color-border-tertiary: #6e7681;--color-border-overlay: #30363d;--color-border-inverse: #f0f6fc;--color-border-info: rgba(56,139,253,0.4);--color-border-danger: rgba(248,81,73,0.4);--color-border-success: rgba(63,185,80,0.4);--color-border-warning: rgba(187,128,9,0.4);--color-border-input: #30363d;--color-border-radio: #21262d;--color-border-popup: #30363d}:root[data-theme=dark] .swap-light{display:none}:root[data-theme=dark] .swap-dark{display:block}:root[data-theme=dark] .invert{filter:invert(1) hue-rotate(180deg)}.switch{position:relative;display:inline-block;vertical-align:middle;width:50px;height:20px}.switch input{opacity:0;width:0;height:0}.slider{position:absolute;cursor:pointer;top:0;left:0;right:0;bottom:0;background-color:var(--color-btn-switch-bg);-webkit-transition:.4s;transition:.4s}.slider:before{position:absolute;content:"";height:12.5px;width:12.5px;left:4px;bottom:4px;background-color:#fff;-webkit-transition:.4s;transition:.4s}input:checked+.slider{background-color:var(--color-btn-accept-bg)}input:focus+.slider{box-shadow:0 0 1px var(--color-btn-accept-bg)}input:checked+.slider:before{-webkit-transform:translateX(26px);-ms-transform:translateX(26px);transform:translateX(26px)}.slider.round{border-radius:34px}.slider.round:before{border-radius:50%}input[type=checkbox]:checked{filter:hue-rotate(220deg)}/*# sourceMappingURL=switch.css.map */ diff --git a/src/css/components/switch.css.map b/src/css/components/switch.css.map new file mode 100644 index 00000000..77165bec --- /dev/null +++ b/src/css/components/switch.css.map @@ -0,0 +1 @@ +{"version":3,"sourceRoot":"","sources":["../../scss/palette.scss","../../scss/components/switch.scss"],"names":[],"mappings":"AAwJA,mDACE,MAvJA,mBAEA,sBAGA,8BACA,gCACA,+BACA,kCACA,+BACA,2BACA,2BACA,6BACA,8BACA,8BACA,yBACA,6BAGA,4BACA,8BACA,6BACA,yBACA,wCACA,8BACA,oCACA,kCACA,qCAGA,0BACA,wBACA,wCACA,8BACA,8CACA,+BACA,8CACA,iCACA,8BACA,8CACA,+BACA,qCACA,6BACA,mCACA,4BAGA,gCACA,kCACA,iCACA,gCACA,6BACA,6BACA,+BACA,gCACA,gCACA,8BACA,8BACA,8BAmEA,kBACE,cAEF,iBACE,aAEF,cACE,aA0BJ,oDACE,MAhGA,kBAEA,gCAGA,8BACA,gCACA,+BACA,kCACA,+BACA,8BACA,2BACA,6BACA,8BACA,8BACA,4BACA,6BAGA,4BACA,8BACA,6BACA,4BACA,uCACA,8BACA,oCACA,uCACA,wCAGA,0BACA,wBACA,4BACA,8BACA,kCACA,+BACA,mCACA,iCACA,8BACA,kCACA,+BACA,qCACA,6BACA,mCACA,+BAGA,gCACA,kCACA,iCACA,gCACA,gCACA,0CACA,2CACA,4CACA,4CACA,8BACA,8BACA,8BAgBA,kBACE,aAEF,iBACE,cAEF,cACE,qCAsBJ,wBAtKE,mBAEA,sBAGA,8BACA,gCACA,+BACA,kCACA,+BACA,2BACA,2BACA,6BACA,8BACA,8BACA,yBACA,6BAGA,4BACA,8BACA,6BACA,yBACA,wCACA,8BACA,oCACA,kCACA,qCAGA,0BACA,wBACA,wCACA,8BACA,8CACA,+BACA,8CACA,iCACA,8BACA,8CACA,+BACA,qCACA,6BACA,mCACA,4BAGA,gCACA,kCACA,iCACA,gCACA,6BACA,6BACA,+BACA,gCACA,gCACA,8BACA,8BACA,8BAmEA,oCACE,cAEF,mCACE,aAEF,gCACE,YAwCJ,uBA7GE,kBAEA,gCAGA,8BACA,gCACA,+BACA,kCACA,+BACA,8BACA,2BACA,6BACA,8BACA,8BACA,4BACA,6BAGA,4BACA,8BACA,6BACA,4BACA,uCACA,8BACA,oCACA,uCACA,wCAGA,0BACA,wBACA,4BACA,8BACA,kCACA,+BACA,mCACA,iCACA,8BACA,kCACA,+BACA,qCACA,6BACA,mCACA,+BAGA,gCACA,kCACA,iCACA,gCACA,gCACA,0CACA,2CACA,4CACA,4CACA,8BACA,8BACA,8BAgBA,mCACE,aAEF,kCACE,cAEF,+BACE,oCC/IJ,QACI,kBACA,qBACA,sBACA,WACA,YAIF,cACE,UACA,QACA,SAIF,QACE,kBACA,eACA,MACA,OACA,QACA,SACA,4CACA,uBACA,eAGF,eACE,kBACA,WACA,cACA,aACA,SACA,WACA,sBACA,uBACA,eAGF,sBACE,4CAGF,oBACE,8CAGF,6BACE,mCACA,+BACA,2BAIF,cACE,mBAGF,qBACE,kBAGJ,6BACE","file":"switch.css"} \ No newline at end of file diff --git a/src/css/palette.css b/src/css/palette.css new file mode 100644 index 00000000..0b1210bc --- /dev/null +++ b/src/css/palette.css @@ -0,0 +1 @@ +@media not screen and (prefers-color-scheme: dark){:root{color-scheme:light;scrollbar-color:unset;--color-text-primary: #24292e;--color-text-secondary: #586069;--color-text-tertiary: #6a737d;--color-text-placeholder: #6a737d;--color-text-disabled: #959da5;--color-text-inverse: #fff;--color-text-link: #0366d6;--color-text-danger: #cb2431;--color-text-success: #22863a;--color-text-warning: #b08800;--color-text-white: #fff;--color-text-purple: #6f42c1;--color-bg-primary: #f9f9fa;--color-bg-secondary: #fafbfc;--color-bg-tertiary: #f6f8fa;--color-bg-overlay: #fff;--color-bg-backdrop: rgba(27,31,35,0.5);--color-bg-scrollbar: #dbdbdb;--color-bg-scrollbar-thumb: #9c9c9c;--color-bg-info: rgb(222 244 255);--color-bg-success: rgb(230 255 228);--color-btn-text: #24292e;--color-btn-bg: #fafbfc;--color-btn-border: rgba(27,31,35,0.15);--color-btn-hover-bg: #f3f4f6;--color-btn-hover-border: rgba(27,31,35,0.15);--color-btn-active-bg: #ebecf0;--color-btn-active-border: rgba(27,31,35,0.1);--color-btn-selected-bg: #eeeff2;--color-btn-focus-bg: #fafbfc;--color-btn-focus-border: rgba(27,31,35,0.15);--color-btn-accept-bg: #28933c;--color-btn-accept-hover-bg: #2ea043;--color-btn-deny-bg: #586069;--color-btn-deny-hover-bg: #6a737d;--color-btn-switch-bg: #ccc;--color-border-primary: #e1e4e8;--color-border-secondary: #ebedef;--color-border-tertiary: #d1d5da;--color-border-overlay: #e1e4e8;--color-border-inverse: #fff;--color-border-info: #0366d6;--color-border-danger: #d73a49;--color-border-success: #34d058;--color-border-warning: #f9c513;--color-border-input: #e1e4e8;--color-border-radio: #e1e4e8;--color-border-popup: #dddddd}:root .swap-light{display:block}:root .swap-dark{display:none}:root .invert{filter:none}}@media only screen and (prefers-color-scheme: dark){:root{color-scheme:dark;scrollbar-color:#737373 #38383d;--color-text-primary: #c9d1d9;--color-text-secondary: #8b949e;--color-text-tertiary: #8b949e;--color-text-placeholder: #484f58;--color-text-disabled: #484f58;--color-text-inverse: #0d1117;--color-text-link: #58a6ff;--color-text-danger: #f85149;--color-text-success: #56d364;--color-text-warning: #e3b341;--color-text-white: #f0f6fc;--color-text-purple: #8a63d2;--color-bg-primary: #0d1117;--color-bg-secondary: #0d1117;--color-bg-tertiary: #161b22;--color-bg-overlay: #1c2128;--color-bg-backdrop: rgba(1, 4, 9, .8);--color-bg-scrollbar: #0d1117;--color-bg-scrollbar-thumb: #30363d;--color-bg-info: rgba(56,139,253,0.25);--color-bg-success: rgba(63,185,80,0.4);--color-btn-text: #c9d1d9;--color-btn-bg: #21262d;--color-btn-border: #30363d;--color-btn-hover-bg: #30363d;--color-btn-hover-border: #8b949e;--color-btn-active-bg: #292e34;--color-btn-active-border: #6e7681;--color-btn-selected-bg: #161b22;--color-btn-focus-bg: #21262d;--color-btn-focus-border: #8b949e;--color-btn-accept-bg: #28933c;--color-btn-accept-hover-bg: #2ea043;--color-btn-deny-bg: #21262d;--color-btn-deny-hover-bg: #292e34;--color-btn-switch-bg: #30363d;--color-border-primary: #30363d;--color-border-secondary: #21262d;--color-border-tertiary: #6e7681;--color-border-overlay: #30363d;--color-border-inverse: #f0f6fc;--color-border-info: rgba(56,139,253,0.4);--color-border-danger: rgba(248,81,73,0.4);--color-border-success: rgba(63,185,80,0.4);--color-border-warning: rgba(187,128,9,0.4);--color-border-input: #30363d;--color-border-radio: #21262d;--color-border-popup: #30363d}:root .swap-light{display:none}:root .swap-dark{display:block}:root .invert{filter:invert(1) hue-rotate(180deg)}}:root[data-theme=light]{color-scheme:light;scrollbar-color:unset;--color-text-primary: #24292e;--color-text-secondary: #586069;--color-text-tertiary: #6a737d;--color-text-placeholder: #6a737d;--color-text-disabled: #959da5;--color-text-inverse: #fff;--color-text-link: #0366d6;--color-text-danger: #cb2431;--color-text-success: #22863a;--color-text-warning: #b08800;--color-text-white: #fff;--color-text-purple: #6f42c1;--color-bg-primary: #f9f9fa;--color-bg-secondary: #fafbfc;--color-bg-tertiary: #f6f8fa;--color-bg-overlay: #fff;--color-bg-backdrop: rgba(27,31,35,0.5);--color-bg-scrollbar: #dbdbdb;--color-bg-scrollbar-thumb: #9c9c9c;--color-bg-info: rgb(222 244 255);--color-bg-success: rgb(230 255 228);--color-btn-text: #24292e;--color-btn-bg: #fafbfc;--color-btn-border: rgba(27,31,35,0.15);--color-btn-hover-bg: #f3f4f6;--color-btn-hover-border: rgba(27,31,35,0.15);--color-btn-active-bg: #ebecf0;--color-btn-active-border: rgba(27,31,35,0.1);--color-btn-selected-bg: #eeeff2;--color-btn-focus-bg: #fafbfc;--color-btn-focus-border: rgba(27,31,35,0.15);--color-btn-accept-bg: #28933c;--color-btn-accept-hover-bg: #2ea043;--color-btn-deny-bg: #586069;--color-btn-deny-hover-bg: #6a737d;--color-btn-switch-bg: #ccc;--color-border-primary: #e1e4e8;--color-border-secondary: #ebedef;--color-border-tertiary: #d1d5da;--color-border-overlay: #e1e4e8;--color-border-inverse: #fff;--color-border-info: #0366d6;--color-border-danger: #d73a49;--color-border-success: #34d058;--color-border-warning: #f9c513;--color-border-input: #e1e4e8;--color-border-radio: #e1e4e8;--color-border-popup: #dddddd}:root[data-theme=light] .swap-light{display:block}:root[data-theme=light] .swap-dark{display:none}:root[data-theme=light] .invert{filter:none}:root[data-theme=dark]{color-scheme:dark;scrollbar-color:#737373 #38383d;--color-text-primary: #c9d1d9;--color-text-secondary: #8b949e;--color-text-tertiary: #8b949e;--color-text-placeholder: #484f58;--color-text-disabled: #484f58;--color-text-inverse: #0d1117;--color-text-link: #58a6ff;--color-text-danger: #f85149;--color-text-success: #56d364;--color-text-warning: #e3b341;--color-text-white: #f0f6fc;--color-text-purple: #8a63d2;--color-bg-primary: #0d1117;--color-bg-secondary: #0d1117;--color-bg-tertiary: #161b22;--color-bg-overlay: #1c2128;--color-bg-backdrop: rgba(1, 4, 9, .8);--color-bg-scrollbar: #0d1117;--color-bg-scrollbar-thumb: #30363d;--color-bg-info: rgba(56,139,253,0.25);--color-bg-success: rgba(63,185,80,0.4);--color-btn-text: #c9d1d9;--color-btn-bg: #21262d;--color-btn-border: #30363d;--color-btn-hover-bg: #30363d;--color-btn-hover-border: #8b949e;--color-btn-active-bg: #292e34;--color-btn-active-border: #6e7681;--color-btn-selected-bg: #161b22;--color-btn-focus-bg: #21262d;--color-btn-focus-border: #8b949e;--color-btn-accept-bg: #28933c;--color-btn-accept-hover-bg: #2ea043;--color-btn-deny-bg: #21262d;--color-btn-deny-hover-bg: #292e34;--color-btn-switch-bg: #30363d;--color-border-primary: #30363d;--color-border-secondary: #21262d;--color-border-tertiary: #6e7681;--color-border-overlay: #30363d;--color-border-inverse: #f0f6fc;--color-border-info: rgba(56,139,253,0.4);--color-border-danger: rgba(248,81,73,0.4);--color-border-success: rgba(63,185,80,0.4);--color-border-warning: rgba(187,128,9,0.4);--color-border-input: #30363d;--color-border-radio: #21262d;--color-border-popup: #30363d}:root[data-theme=dark] .swap-light{display:none}:root[data-theme=dark] .swap-dark{display:block}:root[data-theme=dark] .invert{filter:invert(1) hue-rotate(180deg)}/*# sourceMappingURL=palette.css.map */ diff --git a/src/css/palette.css.map b/src/css/palette.css.map new file mode 100644 index 00000000..e4a95766 --- /dev/null +++ b/src/css/palette.css.map @@ -0,0 +1 @@ +{"version":3,"sourceRoot":"","sources":["../scss/palette.scss"],"names":[],"mappings":"AAwJA,mDACE,MAvJA,mBAEA,sBAGA,8BACA,gCACA,+BACA,kCACA,+BACA,2BACA,2BACA,6BACA,8BACA,8BACA,yBACA,6BAGA,4BACA,8BACA,6BACA,yBACA,wCACA,8BACA,oCACA,kCACA,qCAGA,0BACA,wBACA,wCACA,8BACA,8CACA,+BACA,8CACA,iCACA,8BACA,8CACA,+BACA,qCACA,6BACA,mCACA,4BAGA,gCACA,kCACA,iCACA,gCACA,6BACA,6BACA,+BACA,gCACA,gCACA,8BACA,8BACA,8BAmEA,kBACE,cAEF,iBACE,aAEF,cACE,aA0BJ,oDACE,MAhGA,kBAEA,gCAGA,8BACA,gCACA,+BACA,kCACA,+BACA,8BACA,2BACA,6BACA,8BACA,8BACA,4BACA,6BAGA,4BACA,8BACA,6BACA,4BACA,uCACA,8BACA,oCACA,uCACA,wCAGA,0BACA,wBACA,4BACA,8BACA,kCACA,+BACA,mCACA,iCACA,8BACA,kCACA,+BACA,qCACA,6BACA,mCACA,+BAGA,gCACA,kCACA,iCACA,gCACA,gCACA,0CACA,2CACA,4CACA,4CACA,8BACA,8BACA,8BAgBA,kBACE,aAEF,iBACE,cAEF,cACE,qCAsBJ,wBAtKE,mBAEA,sBAGA,8BACA,gCACA,+BACA,kCACA,+BACA,2BACA,2BACA,6BACA,8BACA,8BACA,yBACA,6BAGA,4BACA,8BACA,6BACA,yBACA,wCACA,8BACA,oCACA,kCACA,qCAGA,0BACA,wBACA,wCACA,8BACA,8CACA,+BACA,8CACA,iCACA,8BACA,8CACA,+BACA,qCACA,6BACA,mCACA,4BAGA,gCACA,kCACA,iCACA,gCACA,6BACA,6BACA,+BACA,gCACA,gCACA,8BACA,8BACA,8BAmEA,oCACE,cAEF,mCACE,aAEF,gCACE,YAwCJ,uBA7GE,kBAEA,gCAGA,8BACA,gCACA,+BACA,kCACA,+BACA,8BACA,2BACA,6BACA,8BACA,8BACA,4BACA,6BAGA,4BACA,8BACA,6BACA,4BACA,uCACA,8BACA,oCACA,uCACA,wCAGA,0BACA,wBACA,4BACA,8BACA,kCACA,+BACA,mCACA,iCACA,8BACA,kCACA,+BACA,qCACA,6BACA,mCACA,+BAGA,gCACA,kCACA,iCACA,gCACA,gCACA,0CACA,2CACA,4CACA,4CACA,8BACA,8BACA,8BAgBA,mCACE,aAEF,kCACE,cAEF,+BACE","file":"palette.css"} \ No newline at end of file diff --git a/src/css/popup.css b/src/css/popup.css new file mode 100644 index 00000000..2989d0a7 --- /dev/null +++ b/src/css/popup.css @@ -0,0 +1 @@ +@media not screen and (prefers-color-scheme: dark){:root{color-scheme:light;scrollbar-color:unset;--color-text-primary: #24292e;--color-text-secondary: #586069;--color-text-tertiary: #6a737d;--color-text-placeholder: #6a737d;--color-text-disabled: #959da5;--color-text-inverse: #fff;--color-text-link: #0366d6;--color-text-danger: #cb2431;--color-text-success: #22863a;--color-text-warning: #b08800;--color-text-white: #fff;--color-text-purple: #6f42c1;--color-bg-primary: #f9f9fa;--color-bg-secondary: #fafbfc;--color-bg-tertiary: #f6f8fa;--color-bg-overlay: #fff;--color-bg-backdrop: rgba(27,31,35,0.5);--color-bg-scrollbar: #dbdbdb;--color-bg-scrollbar-thumb: #9c9c9c;--color-bg-info: rgb(222 244 255);--color-bg-success: rgb(230 255 228);--color-btn-text: #24292e;--color-btn-bg: #fafbfc;--color-btn-border: rgba(27,31,35,0.15);--color-btn-hover-bg: #f3f4f6;--color-btn-hover-border: rgba(27,31,35,0.15);--color-btn-active-bg: #ebecf0;--color-btn-active-border: rgba(27,31,35,0.1);--color-btn-selected-bg: #eeeff2;--color-btn-focus-bg: #fafbfc;--color-btn-focus-border: rgba(27,31,35,0.15);--color-btn-accept-bg: #28933c;--color-btn-accept-hover-bg: #2ea043;--color-btn-deny-bg: #586069;--color-btn-deny-hover-bg: #6a737d;--color-btn-switch-bg: #ccc;--color-border-primary: #e1e4e8;--color-border-secondary: #ebedef;--color-border-tertiary: #d1d5da;--color-border-overlay: #e1e4e8;--color-border-inverse: #fff;--color-border-info: #0366d6;--color-border-danger: #d73a49;--color-border-success: #34d058;--color-border-warning: #f9c513;--color-border-input: #e1e4e8;--color-border-radio: #e1e4e8;--color-border-popup: #dddddd}:root .swap-light{display:block}:root .swap-dark{display:none}:root .invert{filter:none}}@media only screen and (prefers-color-scheme: dark){:root{color-scheme:dark;scrollbar-color:#737373 #38383d;--color-text-primary: #c9d1d9;--color-text-secondary: #8b949e;--color-text-tertiary: #8b949e;--color-text-placeholder: #484f58;--color-text-disabled: #484f58;--color-text-inverse: #0d1117;--color-text-link: #58a6ff;--color-text-danger: #f85149;--color-text-success: #56d364;--color-text-warning: #e3b341;--color-text-white: #f0f6fc;--color-text-purple: #8a63d2;--color-bg-primary: #0d1117;--color-bg-secondary: #0d1117;--color-bg-tertiary: #161b22;--color-bg-overlay: #1c2128;--color-bg-backdrop: rgba(1, 4, 9, .8);--color-bg-scrollbar: #0d1117;--color-bg-scrollbar-thumb: #30363d;--color-bg-info: rgba(56,139,253,0.25);--color-bg-success: rgba(63,185,80,0.4);--color-btn-text: #c9d1d9;--color-btn-bg: #21262d;--color-btn-border: #30363d;--color-btn-hover-bg: #30363d;--color-btn-hover-border: #8b949e;--color-btn-active-bg: #292e34;--color-btn-active-border: #6e7681;--color-btn-selected-bg: #161b22;--color-btn-focus-bg: #21262d;--color-btn-focus-border: #8b949e;--color-btn-accept-bg: #28933c;--color-btn-accept-hover-bg: #2ea043;--color-btn-deny-bg: #21262d;--color-btn-deny-hover-bg: #292e34;--color-btn-switch-bg: #30363d;--color-border-primary: #30363d;--color-border-secondary: #21262d;--color-border-tertiary: #6e7681;--color-border-overlay: #30363d;--color-border-inverse: #f0f6fc;--color-border-info: rgba(56,139,253,0.4);--color-border-danger: rgba(248,81,73,0.4);--color-border-success: rgba(63,185,80,0.4);--color-border-warning: rgba(187,128,9,0.4);--color-border-input: #30363d;--color-border-radio: #21262d;--color-border-popup: #30363d}:root .swap-light{display:none}:root .swap-dark{display:block}:root .invert{filter:invert(1) hue-rotate(180deg)}}:root[data-theme=light]{color-scheme:light;scrollbar-color:unset;--color-text-primary: #24292e;--color-text-secondary: #586069;--color-text-tertiary: #6a737d;--color-text-placeholder: #6a737d;--color-text-disabled: #959da5;--color-text-inverse: #fff;--color-text-link: #0366d6;--color-text-danger: #cb2431;--color-text-success: #22863a;--color-text-warning: #b08800;--color-text-white: #fff;--color-text-purple: #6f42c1;--color-bg-primary: #f9f9fa;--color-bg-secondary: #fafbfc;--color-bg-tertiary: #f6f8fa;--color-bg-overlay: #fff;--color-bg-backdrop: rgba(27,31,35,0.5);--color-bg-scrollbar: #dbdbdb;--color-bg-scrollbar-thumb: #9c9c9c;--color-bg-info: rgb(222 244 255);--color-bg-success: rgb(230 255 228);--color-btn-text: #24292e;--color-btn-bg: #fafbfc;--color-btn-border: rgba(27,31,35,0.15);--color-btn-hover-bg: #f3f4f6;--color-btn-hover-border: rgba(27,31,35,0.15);--color-btn-active-bg: #ebecf0;--color-btn-active-border: rgba(27,31,35,0.1);--color-btn-selected-bg: #eeeff2;--color-btn-focus-bg: #fafbfc;--color-btn-focus-border: rgba(27,31,35,0.15);--color-btn-accept-bg: #28933c;--color-btn-accept-hover-bg: #2ea043;--color-btn-deny-bg: #586069;--color-btn-deny-hover-bg: #6a737d;--color-btn-switch-bg: #ccc;--color-border-primary: #e1e4e8;--color-border-secondary: #ebedef;--color-border-tertiary: #d1d5da;--color-border-overlay: #e1e4e8;--color-border-inverse: #fff;--color-border-info: #0366d6;--color-border-danger: #d73a49;--color-border-success: #34d058;--color-border-warning: #f9c513;--color-border-input: #e1e4e8;--color-border-radio: #e1e4e8;--color-border-popup: #dddddd}:root[data-theme=light] .swap-light{display:block}:root[data-theme=light] .swap-dark{display:none}:root[data-theme=light] .invert{filter:none}:root[data-theme=dark]{color-scheme:dark;scrollbar-color:#737373 #38383d;--color-text-primary: #c9d1d9;--color-text-secondary: #8b949e;--color-text-tertiary: #8b949e;--color-text-placeholder: #484f58;--color-text-disabled: #484f58;--color-text-inverse: #0d1117;--color-text-link: #58a6ff;--color-text-danger: #f85149;--color-text-success: #56d364;--color-text-warning: #e3b341;--color-text-white: #f0f6fc;--color-text-purple: #8a63d2;--color-bg-primary: #0d1117;--color-bg-secondary: #0d1117;--color-bg-tertiary: #161b22;--color-bg-overlay: #1c2128;--color-bg-backdrop: rgba(1, 4, 9, .8);--color-bg-scrollbar: #0d1117;--color-bg-scrollbar-thumb: #30363d;--color-bg-info: rgba(56,139,253,0.25);--color-bg-success: rgba(63,185,80,0.4);--color-btn-text: #c9d1d9;--color-btn-bg: #21262d;--color-btn-border: #30363d;--color-btn-hover-bg: #30363d;--color-btn-hover-border: #8b949e;--color-btn-active-bg: #292e34;--color-btn-active-border: #6e7681;--color-btn-selected-bg: #161b22;--color-btn-focus-bg: #21262d;--color-btn-focus-border: #8b949e;--color-btn-accept-bg: #28933c;--color-btn-accept-hover-bg: #2ea043;--color-btn-deny-bg: #21262d;--color-btn-deny-hover-bg: #292e34;--color-btn-switch-bg: #30363d;--color-border-primary: #30363d;--color-border-secondary: #21262d;--color-border-tertiary: #6e7681;--color-border-overlay: #30363d;--color-border-inverse: #f0f6fc;--color-border-info: rgba(56,139,253,0.4);--color-border-danger: rgba(248,81,73,0.4);--color-border-success: rgba(63,185,80,0.4);--color-border-warning: rgba(187,128,9,0.4);--color-border-input: #30363d;--color-border-radio: #21262d;--color-border-popup: #30363d}:root[data-theme=dark] .swap-light{display:none}:root[data-theme=dark] .swap-dark{display:block}:root[data-theme=dark] .invert{filter:invert(1) hue-rotate(180deg)}.list{max-height:450px;overflow:auto;margin-bottom:3px;overflow-x:hidden}.list-entry{display:flex;padding:9px;margin:2px;margin-left:5px;margin-right:5px;text-decoration:none;color:var(--color-text-primary)}.list-entry-wrapper{border-bottom:1.5px solid var(--color-border-primary)}.list-intro{border-radius:3px;background-color:var(--color-bg-info);margin:5px 15px 5px 15px;margin:2px;margin-left:5px;padding:9px;margin-bottom:5px}.list-outro{border-radius:3px;background-color:var(--color-bg-success);margin:5px 15px 5px 15px;margin:2px;margin-left:5px;padding:9px;margin-bottom:5px}.studiengang-img{flex:1;padding-right:3px;padding-left:3px;max-height:35px;width:auto}.list-search{flex:100;margin-left:7px;margin-right:5px;border-radius:4px;font-size:12px;border:1.5px solid var(--color-border-input);background-image:url("../../assets/icons/searchicon.png");background-position:12px 7px;background-size:19px;background-repeat:no-repeat;padding:9px 0px 9px 40px;background-color:var(--color-bg-primary);color:var(--color-text-primary)}.list-search::placeholder{color:var(--color-text-placeholder)}.list-search:focus::placeholder{opacity:0}.list-entry-text{flex:9;justify-self:center;align-self:center;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.list-entry-img{flex:1;align-items:center;justify-content:center;display:flex}.list-img{object-fit:contain;width:32px;height:16px}body{border:solid 2px var(--color-border-popup);background-color:var(--color-bg-overlay);color:var(--color-text-primary);border-radius:4px;max-width:510px;min-width:510px;max-height:590px;margin:0px;font-size:12px;font-family:Helvetica,sans-serif}.settings-footer{background-color:var(--color-bg-tertiary);box-shadow:0px -3px 3px rgba(68,68,68,.3)}.settings-footer-bar{display:flex;height:30px;border-top:solid 2px var(--color-border-popup);border-radius:0px}.settings-footer-bar:first-child{border-radius:3px}.settings-section{display:flex;align-items:center;justify-content:space-evenly;padding-left:4px;padding-right:4px}.settings-section:not(:last-child){border-right:solid 2px var(--color-border-popup)}.settings-section-icon{display:flex;border:none;height:100%;align-items:center;justify-content:center;padding-left:6px;padding-right:6px;border-radius:3px}.settings-text{float:left}.settings-icon{float:right;margin-left:15px}.settings-img{object-fit:contain;width:32px;height:17px}.headline{display:none}.custom-scrollbar::-webkit-scrollbar-track{-webkit-box-shadow:inset 0 0 6px rgba(68,68,68,.3);box-shadow:inset 0 0 6px rgba(68,68,68,.3);border-radius:10px;background-color:var(--color-bg-scrollbar)}.custom-scrollbar::-webkit-scrollbar{width:10px;background-color:var(--color-bg-scrollbar)}.custom-scrollbar::-webkit-scrollbar-thumb{border-radius:10px;-webkit-box-shadow:inset 0 0 6px rgba(68,68,68,.3);box-shadow:inset 0 0 6px rgba(68,68,68,.3);background-color:var(--color-bg-scrollbar-thumb)}.list-entry:hover,.settings-section-icon:hover,.select_studiengang_dropdown:hover{background-color:var(--color-btn-active-bg)}.select_studiengang_btn{width:15px;padding:13px 4px 4px 4px}.select_studiengang_dropdown{cursor:pointer;border-radius:3px}.select_studiengang_dropdown_content{display:none;position:absolute;min-width:180px;background-color:var(--color-bg-overlay);box-shadow:0px 8px 16px 0px rgba(0,0,0,.2);z-index:1;right:14px;border-radius:3px;overflow-y:auto}.select_studiengang_dropdown_content p{padding:3px;display:block;margin:0}.select_studiengang_dropdown_content p:hover{background-color:var(--color-btn-hover-bg)}.show{display:block}.starRatingContainer{cursor:pointer}#time{color:var(--color-text-purple)}a{color:var(--color-text-link);text-decoration:none}a:hover{text-decoration:underline}@media(prefers-color-scheme: dark){.invert{filter:invert(1) hue-rotate(180deg)}.emptyStarRating{filter:invert(0.8)}:root{color-scheme:dark;scrollbar-color:#737373 #38383d}}/*# sourceMappingURL=popup.css.map */ diff --git a/src/css/popup.css.map b/src/css/popup.css.map new file mode 100644 index 00000000..32dc4c95 --- /dev/null +++ b/src/css/popup.css.map @@ -0,0 +1 @@ +{"version":3,"sourceRoot":"","sources":["../scss/palette.scss","../scss/popup.scss"],"names":[],"mappings":"AAwJA,mDACE,MAvJA,mBAEA,sBAGA,8BACA,gCACA,+BACA,kCACA,+BACA,2BACA,2BACA,6BACA,8BACA,8BACA,yBACA,6BAGA,4BACA,8BACA,6BACA,yBACA,wCACA,8BACA,oCACA,kCACA,qCAGA,0BACA,wBACA,wCACA,8BACA,8CACA,+BACA,8CACA,iCACA,8BACA,8CACA,+BACA,qCACA,6BACA,mCACA,4BAGA,gCACA,kCACA,iCACA,gCACA,6BACA,6BACA,+BACA,gCACA,gCACA,8BACA,8BACA,8BAmEA,kBACE,cAEF,iBACE,aAEF,cACE,aA0BJ,oDACE,MAhGA,kBAEA,gCAGA,8BACA,gCACA,+BACA,kCACA,+BACA,8BACA,2BACA,6BACA,8BACA,8BACA,4BACA,6BAGA,4BACA,8BACA,6BACA,4BACA,uCACA,8BACA,oCACA,uCACA,wCAGA,0BACA,wBACA,4BACA,8BACA,kCACA,+BACA,mCACA,iCACA,8BACA,kCACA,+BACA,qCACA,6BACA,mCACA,+BAGA,gCACA,kCACA,iCACA,gCACA,gCACA,0CACA,2CACA,4CACA,4CACA,8BACA,8BACA,8BAgBA,kBACE,aAEF,iBACE,cAEF,cACE,qCAsBJ,wBAtKE,mBAEA,sBAGA,8BACA,gCACA,+BACA,kCACA,+BACA,2BACA,2BACA,6BACA,8BACA,8BACA,yBACA,6BAGA,4BACA,8BACA,6BACA,yBACA,wCACA,8BACA,oCACA,kCACA,qCAGA,0BACA,wBACA,wCACA,8BACA,8CACA,+BACA,8CACA,iCACA,8BACA,8CACA,+BACA,qCACA,6BACA,mCACA,4BAGA,gCACA,kCACA,iCACA,gCACA,6BACA,6BACA,+BACA,gCACA,gCACA,8BACA,8BACA,8BAmEA,oCACE,cAEF,mCACE,aAEF,gCACE,YAwCJ,uBA7GE,kBAEA,gCAGA,8BACA,gCACA,+BACA,kCACA,+BACA,8BACA,2BACA,6BACA,8BACA,8BACA,4BACA,6BAGA,4BACA,8BACA,6BACA,4BACA,uCACA,8BACA,oCACA,uCACA,wCAGA,0BACA,wBACA,4BACA,8BACA,kCACA,+BACA,mCACA,iCACA,8BACA,kCACA,+BACA,qCACA,6BACA,mCACA,+BAGA,gCACA,kCACA,iCACA,gCACA,gCACA,0CACA,2CACA,4CACA,4CACA,8BACA,8BACA,8BAgBA,mCACE,aAEF,kCACE,cAEF,+BACE,oCC/IJ,MACE,iBACA,cACA,kBACA,kBAGF,YACE,aACA,YACA,WACA,gBACA,iBACA,qBACA,gCAGF,oBACE,sDAGF,YACE,kBACA,sCACA,yBACA,WACA,gBACA,YACA,kBAGF,YACE,kBACA,yCACA,yBACA,WACA,gBACA,YACA,kBAGF,iBACE,OACA,kBACA,iBACA,gBACA,WAGF,aACE,SACA,gBACA,iBACA,kBACA,eACA,6CACA,0DACA,6BACA,qBACA,4BACA,yBAEA,yCACA,gCAGF,0BACE,oCAGF,gCACE,UAGF,iBACE,OACA,oBACA,kBACA,gBACA,mBACA,uBAGF,gBACE,OACA,mBACA,uBACA,aAGF,UACE,mBACA,WACA,YAGF,KACE,2CACA,yCACA,gCACA,kBACA,gBACA,gBACA,iBACA,WACA,eACA,iCAIF,iBACE,0CACA,0CAGF,qBACE,aACA,YACA,+CACA,kBAGF,iCACE,kBAGF,kBACE,aACA,mBACA,6BACA,iBACA,kBAGF,mCACE,iDAGF,uBACE,aACA,YACA,YACA,mBACA,uBACA,iBACA,kBACA,kBAGF,eACE,WAGF,eACE,YACA,iBAGF,cACE,mBACA,WACA,YAIF,UACE,aAIF,2CACE,mDACA,2CACA,mBACA,2CAGF,qCACE,WACA,2CAGF,2CACE,mBACA,mDACA,2CACA,iDAGF,kFAGE,4CAIF,wBACE,WACA,yBAIF,6BACE,eACA,kBAIF,qCACE,aACA,kBACA,gBACA,yCACA,2CACA,UACA,WACA,kBACA,gBAIF,uCACE,YACA,cACA,SAIF,6CACE,2CAIF,MACE,cAIF,qBACE,eAGF,MACE,+BAGF,EACE,6BACA,qBAGF,QACE,0BAIF,mCACE,QACE,oCAGF,iBACE,mBAGF,MAEE,kBAEA","file":"popup.css"} \ No newline at end of file diff --git a/src/css/settings.css b/src/css/settings.css new file mode 100644 index 00000000..7c0ac039 --- /dev/null +++ b/src/css/settings.css @@ -0,0 +1 @@ +@media not screen and (prefers-color-scheme: dark){:root{color-scheme:light;scrollbar-color:unset;--color-text-primary: #24292e;--color-text-secondary: #586069;--color-text-tertiary: #6a737d;--color-text-placeholder: #6a737d;--color-text-disabled: #959da5;--color-text-inverse: #fff;--color-text-link: #0366d6;--color-text-danger: #cb2431;--color-text-success: #22863a;--color-text-warning: #b08800;--color-text-white: #fff;--color-text-purple: #6f42c1;--color-bg-primary: #f9f9fa;--color-bg-secondary: #fafbfc;--color-bg-tertiary: #f6f8fa;--color-bg-overlay: #fff;--color-bg-backdrop: rgba(27,31,35,0.5);--color-bg-scrollbar: #dbdbdb;--color-bg-scrollbar-thumb: #9c9c9c;--color-bg-info: rgb(222 244 255);--color-bg-success: rgb(230 255 228);--color-btn-text: #24292e;--color-btn-bg: #fafbfc;--color-btn-border: rgba(27,31,35,0.15);--color-btn-hover-bg: #f3f4f6;--color-btn-hover-border: rgba(27,31,35,0.15);--color-btn-active-bg: #ebecf0;--color-btn-active-border: rgba(27,31,35,0.1);--color-btn-selected-bg: #eeeff2;--color-btn-focus-bg: #fafbfc;--color-btn-focus-border: rgba(27,31,35,0.15);--color-btn-accept-bg: #28933c;--color-btn-accept-hover-bg: #2ea043;--color-btn-deny-bg: #586069;--color-btn-deny-hover-bg: #6a737d;--color-btn-switch-bg: #ccc;--color-border-primary: #e1e4e8;--color-border-secondary: #ebedef;--color-border-tertiary: #d1d5da;--color-border-overlay: #e1e4e8;--color-border-inverse: #fff;--color-border-info: #0366d6;--color-border-danger: #d73a49;--color-border-success: #34d058;--color-border-warning: #f9c513;--color-border-input: #e1e4e8;--color-border-radio: #e1e4e8;--color-border-popup: #dddddd}:root .swap-light{display:block}:root .swap-dark{display:none}:root .invert{filter:none}}@media only screen and (prefers-color-scheme: dark){:root{color-scheme:dark;scrollbar-color:#737373 #38383d;--color-text-primary: #c9d1d9;--color-text-secondary: #8b949e;--color-text-tertiary: #8b949e;--color-text-placeholder: #484f58;--color-text-disabled: #484f58;--color-text-inverse: #0d1117;--color-text-link: #58a6ff;--color-text-danger: #f85149;--color-text-success: #56d364;--color-text-warning: #e3b341;--color-text-white: #f0f6fc;--color-text-purple: #8a63d2;--color-bg-primary: #0d1117;--color-bg-secondary: #0d1117;--color-bg-tertiary: #161b22;--color-bg-overlay: #1c2128;--color-bg-backdrop: rgba(1, 4, 9, .8);--color-bg-scrollbar: #0d1117;--color-bg-scrollbar-thumb: #30363d;--color-bg-info: rgba(56,139,253,0.25);--color-bg-success: rgba(63,185,80,0.4);--color-btn-text: #c9d1d9;--color-btn-bg: #21262d;--color-btn-border: #30363d;--color-btn-hover-bg: #30363d;--color-btn-hover-border: #8b949e;--color-btn-active-bg: #292e34;--color-btn-active-border: #6e7681;--color-btn-selected-bg: #161b22;--color-btn-focus-bg: #21262d;--color-btn-focus-border: #8b949e;--color-btn-accept-bg: #28933c;--color-btn-accept-hover-bg: #2ea043;--color-btn-deny-bg: #21262d;--color-btn-deny-hover-bg: #292e34;--color-btn-switch-bg: #30363d;--color-border-primary: #30363d;--color-border-secondary: #21262d;--color-border-tertiary: #6e7681;--color-border-overlay: #30363d;--color-border-inverse: #f0f6fc;--color-border-info: rgba(56,139,253,0.4);--color-border-danger: rgba(248,81,73,0.4);--color-border-success: rgba(63,185,80,0.4);--color-border-warning: rgba(187,128,9,0.4);--color-border-input: #30363d;--color-border-radio: #21262d;--color-border-popup: #30363d}:root .swap-light{display:none}:root .swap-dark{display:block}:root .invert{filter:invert(1) hue-rotate(180deg)}}:root[data-theme=light]{color-scheme:light;scrollbar-color:unset;--color-text-primary: #24292e;--color-text-secondary: #586069;--color-text-tertiary: #6a737d;--color-text-placeholder: #6a737d;--color-text-disabled: #959da5;--color-text-inverse: #fff;--color-text-link: #0366d6;--color-text-danger: #cb2431;--color-text-success: #22863a;--color-text-warning: #b08800;--color-text-white: #fff;--color-text-purple: #6f42c1;--color-bg-primary: #f9f9fa;--color-bg-secondary: #fafbfc;--color-bg-tertiary: #f6f8fa;--color-bg-overlay: #fff;--color-bg-backdrop: rgba(27,31,35,0.5);--color-bg-scrollbar: #dbdbdb;--color-bg-scrollbar-thumb: #9c9c9c;--color-bg-info: rgb(222 244 255);--color-bg-success: rgb(230 255 228);--color-btn-text: #24292e;--color-btn-bg: #fafbfc;--color-btn-border: rgba(27,31,35,0.15);--color-btn-hover-bg: #f3f4f6;--color-btn-hover-border: rgba(27,31,35,0.15);--color-btn-active-bg: #ebecf0;--color-btn-active-border: rgba(27,31,35,0.1);--color-btn-selected-bg: #eeeff2;--color-btn-focus-bg: #fafbfc;--color-btn-focus-border: rgba(27,31,35,0.15);--color-btn-accept-bg: #28933c;--color-btn-accept-hover-bg: #2ea043;--color-btn-deny-bg: #586069;--color-btn-deny-hover-bg: #6a737d;--color-btn-switch-bg: #ccc;--color-border-primary: #e1e4e8;--color-border-secondary: #ebedef;--color-border-tertiary: #d1d5da;--color-border-overlay: #e1e4e8;--color-border-inverse: #fff;--color-border-info: #0366d6;--color-border-danger: #d73a49;--color-border-success: #34d058;--color-border-warning: #f9c513;--color-border-input: #e1e4e8;--color-border-radio: #e1e4e8;--color-border-popup: #dddddd}:root[data-theme=light] .swap-light{display:block}:root[data-theme=light] .swap-dark{display:none}:root[data-theme=light] .invert{filter:none}:root[data-theme=dark]{color-scheme:dark;scrollbar-color:#737373 #38383d;--color-text-primary: #c9d1d9;--color-text-secondary: #8b949e;--color-text-tertiary: #8b949e;--color-text-placeholder: #484f58;--color-text-disabled: #484f58;--color-text-inverse: #0d1117;--color-text-link: #58a6ff;--color-text-danger: #f85149;--color-text-success: #56d364;--color-text-warning: #e3b341;--color-text-white: #f0f6fc;--color-text-purple: #8a63d2;--color-bg-primary: #0d1117;--color-bg-secondary: #0d1117;--color-bg-tertiary: #161b22;--color-bg-overlay: #1c2128;--color-bg-backdrop: rgba(1, 4, 9, .8);--color-bg-scrollbar: #0d1117;--color-bg-scrollbar-thumb: #30363d;--color-bg-info: rgba(56,139,253,0.25);--color-bg-success: rgba(63,185,80,0.4);--color-btn-text: #c9d1d9;--color-btn-bg: #21262d;--color-btn-border: #30363d;--color-btn-hover-bg: #30363d;--color-btn-hover-border: #8b949e;--color-btn-active-bg: #292e34;--color-btn-active-border: #6e7681;--color-btn-selected-bg: #161b22;--color-btn-focus-bg: #21262d;--color-btn-focus-border: #8b949e;--color-btn-accept-bg: #28933c;--color-btn-accept-hover-bg: #2ea043;--color-btn-deny-bg: #21262d;--color-btn-deny-hover-bg: #292e34;--color-btn-switch-bg: #30363d;--color-border-primary: #30363d;--color-border-secondary: #21262d;--color-border-tertiary: #6e7681;--color-border-overlay: #30363d;--color-border-inverse: #f0f6fc;--color-border-info: rgba(56,139,253,0.4);--color-border-danger: rgba(248,81,73,0.4);--color-border-success: rgba(63,185,80,0.4);--color-border-warning: rgba(187,128,9,0.4);--color-border-input: #30363d;--color-border-radio: #21262d;--color-border-popup: #30363d}:root[data-theme=dark] .swap-light{display:none}:root[data-theme=dark] .swap-dark{display:block}:root[data-theme=dark] .invert{filter:invert(1) hue-rotate(180deg)}body{margin-left:20%;margin-right:20%;margin-bottom:50px;margin-top:30px;font-size:14px;font-family:Arial,Helvetica,sans-serif;line-height:25px;background-color:var(--color-bg-primary);color:var(--color-text-primary);transition:background-color .4s ease}[data-preload] *{transition:none !important}html{overflow-y:scroll}a{color:var(--color-text-link);text-decoration:none}a:hover{text-decoration:underline}.heading{font-size:20px;font-weight:bold}.grey-text{color:var(--color-text-secondary)}.red-text{color:var(--color-text-danger)}.green-text{color:var(--color-text-success)}.the-bottom{padding:0px;bottom:0%;margin-left:5%}.red-text{color:var(--color-text-danger)}.small-text{font-size:12px}input[type=text],input[type=password]{width:200px;padding:12px 20px;margin:8px 0;display:inline-block;border:1px solid var(--color-border-input);border-radius:4px;font-size:14px;box-sizing:border-box;background-color:var(--color-bg-primary);color:var(--color-text-primary);transition:background-color .4s ease,border-color .4s ease}input[type=text]::placeholder,input[type=password]::placeholder{color:var(--color-text-placeholder)}input[type=text]:focus::placeholder,input[type=password]:focus::placeholder{opacity:0}select{color:var(--color-text-primary);background-color:var(--color-bg-primary);border:1px solid var(--color-border-input);outline:none;transition:all .4s ease}input::-webkit-input-placeholder{font-size:13px}input:focus{outline:none !important}.btn--settings{width:200px;background-color:var(--color-btn-bg);color:var(--color-btn-text);padding:12px 20px;margin:8px 0;border:none;border-radius:4px;cursor:pointer;font-size:13px;transition:background-color .4s ease}.btn--settings:hover{background-color:var(--color-btn-hover-bg)}#themeSwitcher{display:block}.theme-text{margin-left:.5em}.accordion{background-color:var(--color-btn-bg);color:var(--color-btn-text);cursor:pointer;padding:18px;padding-right:35px;width:100%;text-align:left;border:none;outline:none;transition:background-color .4s ease;font-size:14px;box-shadow:0 1px 4px rgba(12,12,13,.1)}.active,.accordion:hover{background-color:var(--color-btn-active-bg)}.panel{padding:0 18px;background-color:var(--color-bg-tertiary);max-height:0;overflow:hidden;transition:max-height .2s ease-out,background-color .4s ease;box-shadow:0 1px 4px rgba(12,12,13,.1)}.accordion:after{content:"‹";-webkit-transform:rotate(-90deg) scale(2.5, 2.5);transform:rotate(-90deg) scale(2.5, 2.5);font-size:14px;color:var(--color-btn-text);float:right;margin-left:5px}.active:after{content:"›"}#dashboard-tutorial{position:fixed;top:0px;right:0px;margin-top:2%;width:10%;margin-right:2%}[type=radio]:checked,[type=radio]:not(:checked){position:absolute;left:-9999px}[type=radio]:checked+label,[type=radio]:not(:checked)+label{position:relative;padding-left:28px;cursor:pointer;line-height:20px}[type=radio]:checked+label:before,[type=radio]:not(:checked)+label:before{content:"";position:absolute;left:0;top:0;width:18px;height:18px;border:1px solid var(--color-border-radio);border-radius:100%;background-color:var(--color-btn-bg);transition:background-color .4s ease,border-color .4s ease}[type=radio]:hover:checked+label:before,[type=radio]:hover:not(:checked)+label:before{background-color:var(--color-btn-hover-bg)}[type=radio]:checked+label:after,[type=radio]:not(:checked)+label:after{content:"";width:12px;height:12px;background-color:#2f8f12;position:absolute;top:4px;left:4px;border-radius:100%;-webkit-transition:all .2s ease;transition:all .2s ease}[type=radio]:not(:checked)+label:after{opacity:0;-webkit-transform:scale(0);transform:scale(0)}[type=radio]:checked+label:after{opacity:1;-webkit-transform:scale(1);transform:scale(1)}.helper{display:inline-block;height:100%;vertical-align:middle}.helper img{vertical-align:middle}.button-accept{width:200px;background-color:var(--color-btn-accept-bg);color:var(--color-text-white);padding:12px 19px;margin:8px 0;border:none;border-radius:4px;cursor:pointer;font-size:14px}.button-accept:hover{background-color:var(--color-btn-accept-hover-bg)}.button-deny{width:200px;background-color:var(--color-btn-deny-bg);color:var(--color-text-white);padding:12px 19px;margin:8px 0;border:none;border-radius:4px;cursor:pointer;font-size:14px}.button-deny:hover{background-color:var(--color-btn-deny-hover-bg)}.unread-mail-icon{vertical-align:middle;height:32px}.img-opal-kurse{max-width:100%;width:550px;border-radius:2px}.banner{right:20px;font-size:.9em}/*# sourceMappingURL=settings.css.map */ diff --git a/src/css/settings.css.map b/src/css/settings.css.map new file mode 100644 index 00000000..a96459c2 --- /dev/null +++ b/src/css/settings.css.map @@ -0,0 +1 @@ +{"version":3,"sourceRoot":"","sources":["../scss/palette.scss","../scss/settings.scss"],"names":[],"mappings":"CAwJA,mDACE,MAvJA,mBAEA,sBAGA,8BACA,gCACA,+BACA,kCACA,+BACA,2BACA,2BACA,6BACA,8BACA,8BACA,yBACA,6BAGA,4BACA,8BACA,6BACA,yBACA,wCACA,8BACA,oCACA,kCACA,qCAGA,0BACA,wBACA,wCACA,8BACA,8CACA,+BACA,8CACA,iCACA,8BACA,8CACA,+BACA,qCACA,6BACA,mCACA,4BAGA,gCACA,kCACA,iCACA,gCACA,6BACA,6BACA,+BACA,gCACA,gCACA,8BACA,8BACA,8BAmEA,kBACE,cAEF,iBACE,aAEF,cACE,aA0BJ,oDACE,MAhGA,kBAEA,gCAGA,8BACA,gCACA,+BACA,kCACA,+BACA,8BACA,2BACA,6BACA,8BACA,8BACA,4BACA,6BAGA,4BACA,8BACA,6BACA,4BACA,uCACA,8BACA,oCACA,uCACA,wCAGA,0BACA,wBACA,4BACA,8BACA,kCACA,+BACA,mCACA,iCACA,8BACA,kCACA,+BACA,qCACA,6BACA,mCACA,+BAGA,gCACA,kCACA,iCACA,gCACA,gCACA,0CACA,2CACA,4CACA,4CACA,8BACA,8BACA,8BAgBA,kBACE,aAEF,iBACE,cAEF,cACE,qCAsBJ,wBAtKE,mBAEA,sBAGA,8BACA,gCACA,+BACA,kCACA,+BACA,2BACA,2BACA,6BACA,8BACA,8BACA,yBACA,6BAGA,4BACA,8BACA,6BACA,yBACA,wCACA,8BACA,oCACA,kCACA,qCAGA,0BACA,wBACA,wCACA,8BACA,8CACA,+BACA,8CACA,iCACA,8BACA,8CACA,+BACA,qCACA,6BACA,mCACA,4BAGA,gCACA,kCACA,iCACA,gCACA,6BACA,6BACA,+BACA,gCACA,gCACA,8BACA,8BACA,8BAmEA,oCACE,cAEF,mCACE,aAEF,gCACE,YAwCJ,uBA7GE,kBAEA,gCAGA,8BACA,gCACA,+BACA,kCACA,+BACA,8BACA,2BACA,6BACA,8BACA,8BACA,4BACA,6BAGA,4BACA,8BACA,6BACA,4BACA,uCACA,8BACA,oCACA,uCACA,wCAGA,0BACA,wBACA,4BACA,8BACA,kCACA,+BACA,mCACA,iCACA,8BACA,kCACA,+BACA,qCACA,6BACA,mCACA,+BAGA,gCACA,kCACA,iCACA,gCACA,gCACA,0CACA,2CACA,4CACA,4CACA,8BACA,8BACA,8BAgBA,mCACE,aAEF,kCACE,cAEF,+BACE,oCChJJ,KACE,gBACA,iBACA,mBACA,gBACA,eACA,uCACA,iBACA,yCACA,gCACA,qCAGF,iBACE,2BAGF,KACE,kBAGF,EACE,6BACA,qBAGF,QACE,0BAGF,SACE,eACA,iBAGF,WACE,kCAGF,UACE,+BAGF,YACE,gCAGF,YACE,YACA,UACA,eAIF,UACE,+BAIF,YACE,eAGF,sCACE,YACA,kBACA,aACA,qBACA,2CACA,kBACA,eACA,sBACA,yCACA,gCACA,2DAGF,gEAEE,oCAGF,4EAEE,UAGF,OACE,gCACA,yCACA,2CACA,aACA,wBAGF,iCACE,eAGF,YACE,wBAGF,eACE,YACA,qCACA,4BACA,kBACA,aACA,YACA,kBACA,eACA,eACA,qCAGF,qBACE,2CAGF,eACE,cAGF,YACE,iBAIF,WACE,qCACA,4BACA,eACA,aACA,mBACA,WACA,gBACA,YACA,aACA,qCACA,eACA,uCAIF,yBACE,4CAIF,OACE,eACA,0CACA,aACA,gBACA,6DACA,uCAGF,iBACE,YACA,iDACA,yCACA,eACA,4BACA,YACA,gBAGF,cACE,YAGF,oBACE,eACA,QACA,UACA,cACA,UACA,gBAMF,gDAEE,kBACA,aAEF,4DAGE,kBACA,kBACA,eACA,iBAIF,0EAEE,WACA,kBACA,OACA,MACA,WACA,YACA,2CACA,mBACA,qCACA,2DAEF,sFAEE,2CAEF,wEAEE,WACA,WACA,YACA,yBACA,kBACA,QACA,SACA,mBACA,gCACA,wBAEF,uCACE,UACA,2BACA,mBAEF,iCACE,UACA,2BACA,mBAGF,QACE,qBACA,YACA,sBAEF,YACE,sBAGF,eACE,YACA,4CACA,8BACA,kBACA,aACA,YACA,kBACA,eACA,eAGF,qBACE,kDAGF,aACE,YACA,0CACA,8BACA,kBACA,aACA,YACA,kBACA,eACA,eAGF,mBACE,gDAGF,kBACE,sBACA,YAGF,gBACE,eACA,YACA,kBAGF,QACE,WACA","file":"settings.css"} \ No newline at end of file diff --git a/src/freshContent/settings/Settings.vue b/src/freshContent/settings/Settings.vue new file mode 100644 index 00000000..4e53c14b --- /dev/null +++ b/src/freshContent/settings/Settings.vue @@ -0,0 +1,16 @@ + + + + + \ No newline at end of file diff --git a/src/freshContent/settings/index.html b/src/freshContent/settings/index.html new file mode 100644 index 00000000..6bb5fef4 --- /dev/null +++ b/src/freshContent/settings/index.html @@ -0,0 +1,11 @@ + + + + + Settings + + +
+ \ No newline at end of file diff --git a/src/freshContent/settings/index.html b/src/freshContent/settings/index.html index e364b184..8f15361d 100644 --- a/src/freshContent/settings/index.html +++ b/src/freshContent/settings/index.html @@ -5,7 +5,7 @@ Settings -
- \ No newline at end of file diff --git a/src/manifest.json b/src/manifest.json index 7c209331..bfe1e0a7 100644 --- a/src/manifest.json +++ b/src/manifest.json @@ -420,7 +420,7 @@ "default_popup": "freshContent/popup/popup.html" }, "options_ui": { - "page": "freshContent/settings/settings.html", + "page": "freshContent/settings/index.html", "open_in_tab": true }, "web_accessible_resources": [ From 118d31865d1b050ad5398515921010bb36865c83 Mon Sep 17 00:00:00 2001 From: Noxdor Date: Tue, 7 Dec 2021 16:31:05 +0100 Subject: [PATCH 05/98] finished visuals of header of new settings page --- package-lock.json | 261 ++++++-- package.json | 2 + src/assets/settings/background_dark.svg | 54 ++ src/assets/settings/background_light.svg | 58 ++ src/assets/settings/theme_lottie.json | 1 + src/freshContent/settings/Settings.vue | 57 +- .../settings/components/Dropdown.vue | 36 ++ .../settings/components/LanguageSelect.vue | 87 +++ .../settings/components/Lottie.vue | 44 ++ .../settings/components/SettingTile.vue | 0 .../settings/components/Statistics.vue | 40 ++ src/freshContent/settings/index.html | 1 + src/freshContent/settings/main.ts | 6 +- src/freshContent/settings/settings.html | 244 ------- src/freshContent/settings/settings.js | 595 ------------------ src/styles/palette_new/_reset.sass | 44 ++ src/styles/palette_new/_typo.sass | 18 + src/styles/palette_new/_variables.sass | 8 + src/styles/palette_new/palette_new.sass | 3 + src/styles/settings.scss | 299 --------- tsconfig.json | 2 + 21 files changed, 653 insertions(+), 1207 deletions(-) create mode 100644 src/assets/settings/background_dark.svg create mode 100644 src/assets/settings/background_light.svg create mode 100644 src/assets/settings/theme_lottie.json create mode 100644 src/freshContent/settings/components/Dropdown.vue create mode 100644 src/freshContent/settings/components/LanguageSelect.vue create mode 100644 src/freshContent/settings/components/Lottie.vue create mode 100644 src/freshContent/settings/components/SettingTile.vue create mode 100644 src/freshContent/settings/components/Statistics.vue delete mode 100644 src/freshContent/settings/settings.html delete mode 100644 src/freshContent/settings/settings.js create mode 100644 src/styles/palette_new/_reset.sass create mode 100644 src/styles/palette_new/_typo.sass create mode 100644 src/styles/palette_new/_variables.sass create mode 100644 src/styles/palette_new/palette_new.sass delete mode 100644 src/styles/settings.scss diff --git a/package-lock.json b/package-lock.json index ed539e04..9f4fb572 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9,6 +9,8 @@ "version": "6.0.0", "license": "GPL-3.0", "dependencies": { + "@lottiefiles/lottie-player": "^1.5.2", + "phosphor-vue": "^4.3.1", "vue": "^3.2.22" }, "devDependencies": { @@ -151,6 +153,19 @@ "integrity": "sha512-SQ7Kzhh9+D+ZW9MA0zkYv3VXhIDNx+LzM6EJ+/65I3QY+enU6Itte7E5XX7EWrqLW2FN4n06GWzBnPoC3th2aQ==", "dev": true }, + "node_modules/@lottiefiles/lottie-player": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/@lottiefiles/lottie-player/-/lottie-player-1.5.2.tgz", + "integrity": "sha512-zQfOvfE4I6uEOx0FltOFpPqgDoWiV9mOZAWVzDbWJ3PSNggKD8SpIyo0LWv4XMHBBD78XsOrGvyqCb9FCM8wjA==", + "dependencies": { + "@types/pako": "^1.0.1", + "lit-element": "^2.3.1", + "lottie-web": "^5.8.1", + "pako": "^1.0.11", + "resize-observer-polyfill": "^1.5.1", + "shx": "^0.3.3" + } + }, "node_modules/@npmcli/arborist": { "version": "2.10.0", "resolved": "https://registry.npmjs.org/@npmcli/arborist/-/arborist-2.10.0.tgz", @@ -594,6 +609,11 @@ "integrity": "sha512-ua7PgUoeQFjmWPcoo9khiPum3Pd60k4/2ZGXt18sm2Slk0W0xZTqt5Y0Ny1NyBiN1EVQ/+FaF9NcY4Qe6rwk5w==", "dev": true }, + "node_modules/@types/pako": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@types/pako/-/pako-1.0.2.tgz", + "integrity": "sha512-8UJl2MjkqqS6ncpLZqRZ5LmGiFBkbYxocD4e4jmBqGvfRG1RS23gKsBQbdtV9O9GvRyjFTiRHRByjSlKCLlmZw==" + }, "node_modules/@types/parse-json": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.0.tgz", @@ -985,8 +1005,7 @@ "node_modules/balanced-match": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", - "dev": true + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" }, "node_modules/bcrypt-pbkdf": { "version": "1.0.2", @@ -1060,7 +1079,6 @@ "version": "1.1.11", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, "dependencies": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" @@ -1478,8 +1496,7 @@ "node_modules/concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", - "dev": true + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" }, "node_modules/console-control-strings": { "version": "1.1.0", @@ -2739,8 +2756,7 @@ "node_modules/fs.realpath": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", - "dev": true + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" }, "node_modules/fsevents": { "version": "2.3.2", @@ -2759,8 +2775,7 @@ "node_modules/function-bind": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", - "dev": true + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" }, "node_modules/functional-red-black-tree": { "version": "1.0.1", @@ -2895,7 +2910,6 @@ "version": "7.2.0", "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", - "dev": true, "dependencies": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", @@ -2996,7 +3010,6 @@ "version": "1.0.3", "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", - "dev": true, "dependencies": { "function-bind": "^1.1.1" }, @@ -3273,7 +3286,6 @@ "version": "1.0.6", "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", - "dev": true, "dependencies": { "once": "^1.3.0", "wrappy": "1" @@ -3282,8 +3294,7 @@ "node_modules/inherits": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", - "dev": true + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" }, "node_modules/internal-slot": { "version": "1.0.3", @@ -3299,6 +3310,14 @@ "node": ">= 0.4" } }, + "node_modules/interpret": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.4.0.tgz", + "integrity": "sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==", + "engines": { + "node": ">= 0.10" + } + }, "node_modules/ip": { "version": "1.1.5", "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.5.tgz", @@ -3367,7 +3386,6 @@ "version": "2.8.0", "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.8.0.tgz", "integrity": "sha512-vd15qHsaqrRL7dtH6QNuy0ndJmRDrS9HAM1CAiSifNUFv4x1a0CCVsj18hJ1mShxIG6T2i1sO78MkP56r0nYRw==", - "dev": true, "dependencies": { "has": "^1.0.3" }, @@ -3801,6 +3819,19 @@ "integrity": "sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA=", "dev": true }, + "node_modules/lit-element": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/lit-element/-/lit-element-2.5.1.tgz", + "integrity": "sha512-ogu7PiJTA33bEK0xGu1dmaX5vhcRjBXCFexPja0e7P7jqLhTpNKYRPmE+GmiCaRVAbiQKGkUgkh/i6+bh++dPQ==", + "dependencies": { + "lit-html": "^1.1.1" + } + }, + "node_modules/lit-html": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/lit-html/-/lit-html-1.4.1.tgz", + "integrity": "sha512-B9btcSgPYb1q4oSOb/PrOT6Z/H+r6xuNzfH4lFli/AWhYwdtrgQkQWBbIc6mdnf6E2IL3gDXdkkqNktpU0OZQA==" + }, "node_modules/loader-utils": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.0.tgz", @@ -3852,6 +3883,11 @@ "integrity": "sha1-WjUNoLERO4N+z//VgSy+WNbq4ZM=", "dev": true }, + "node_modules/lottie-web": { + "version": "5.8.1", + "resolved": "https://registry.npmjs.org/lottie-web/-/lottie-web-5.8.1.tgz", + "integrity": "sha512-9gIizWADlaHC2GCt+D+yNpk5l2clZQFqnVWWIVdY0LnxC/uLa39dYltAe3fcmC/hrZ2IUQ8dLlY0O934Npjs7Q==" + }, "node_modules/lowercase-keys": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz", @@ -3990,7 +4026,6 @@ "version": "3.0.4", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", - "dev": true, "dependencies": { "brace-expansion": "^1.1.7" }, @@ -4001,8 +4036,7 @@ "node_modules/minimist": { "version": "1.2.5", "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", - "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", - "dev": true + "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==" }, "node_modules/minipass": { "version": "3.1.5", @@ -4441,7 +4475,6 @@ "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", - "dev": true, "dependencies": { "wrappy": "1" } @@ -4631,6 +4664,11 @@ "node": ">=10" } }, + "node_modules/pako": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", + "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==" + }, "node_modules/parent-module": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", @@ -4700,7 +4738,6 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", - "dev": true, "engines": { "node": ">=0.10.0" } @@ -4717,8 +4754,7 @@ "node_modules/path-parse": { "version": "1.0.7", "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", - "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", - "dev": true + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==" }, "node_modules/path-type": { "version": "4.0.0", @@ -4745,6 +4781,17 @@ "is-reference": "^1.1.4" } }, + "node_modules/phosphor-vue": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/phosphor-vue/-/phosphor-vue-4.3.1.tgz", + "integrity": "sha512-W3fk+1RDR+Yvyxpe8XYtynCjwqECuBsduHPR1gBXFxCpKK2HXbAiuomlCoXHvBGdz/h76SM77s8DKpoMkX2EQw==", + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "vue": "^3.0.0 <3.0.3" + } + }, "node_modules/picocolors": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", @@ -5068,6 +5115,17 @@ "node": ">=8.10.0" } }, + "node_modules/rechoir": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz", + "integrity": "sha1-hSBLVNuoLVdC4oyWdW70OvUOM4Q=", + "dependencies": { + "resolve": "^1.1.6" + }, + "engines": { + "node": ">= 0.10" + } + }, "node_modules/regexpp": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz", @@ -5121,11 +5179,15 @@ "node": ">=0.10.0" } }, + "node_modules/resize-observer-polyfill": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/resize-observer-polyfill/-/resize-observer-polyfill-1.5.1.tgz", + "integrity": "sha512-LwZrotdHOo12nQuZlHEmtuXdqGoOD0OhaxopaNFxWzInpEgaLWoVuAMbTzixuosCx2nEG58ngzW3vxdWoxIgdg==" + }, "node_modules/resolve": { "version": "1.20.0", "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.20.0.tgz", "integrity": "sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==", - "dev": true, "dependencies": { "is-core-module": "^2.2.0", "path-parse": "^1.0.6" @@ -5290,6 +5352,37 @@ "node": ">=8" } }, + "node_modules/shelljs": { + "version": "0.8.4", + "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.8.4.tgz", + "integrity": "sha512-7gk3UZ9kOfPLIAbslLzyWeGiEqx9e3rxwZM0KE6EL8GlGwjym9Mrlx5/p33bWTu9YG6vcS4MBxYZDHYr5lr8BQ==", + "dependencies": { + "glob": "^7.0.0", + "interpret": "^1.0.0", + "rechoir": "^0.6.2" + }, + "bin": { + "shjs": "bin/shjs" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/shx": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/shx/-/shx-0.3.3.tgz", + "integrity": "sha512-nZJ3HFWVoTSyyB+evEKjJ1STiixGztlqwKLTUNV5KqMWtGey9fTd4KU1gdZ1X9BV6215pswQ/Jew9NsuS/fNDA==", + "dependencies": { + "minimist": "^1.2.3", + "shelljs": "^0.8.4" + }, + "bin": { + "shx": "lib/cli.js" + }, + "engines": { + "node": ">=6" + } + }, "node_modules/side-channel": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", @@ -6221,8 +6314,7 @@ "node_modules/wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", - "dev": true + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" }, "node_modules/write-file-atomic": { "version": "3.0.3", @@ -6399,6 +6491,19 @@ "integrity": "sha512-SQ7Kzhh9+D+ZW9MA0zkYv3VXhIDNx+LzM6EJ+/65I3QY+enU6Itte7E5XX7EWrqLW2FN4n06GWzBnPoC3th2aQ==", "dev": true }, + "@lottiefiles/lottie-player": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/@lottiefiles/lottie-player/-/lottie-player-1.5.2.tgz", + "integrity": "sha512-zQfOvfE4I6uEOx0FltOFpPqgDoWiV9mOZAWVzDbWJ3PSNggKD8SpIyo0LWv4XMHBBD78XsOrGvyqCb9FCM8wjA==", + "requires": { + "@types/pako": "^1.0.1", + "lit-element": "^2.3.1", + "lottie-web": "^5.8.1", + "pako": "^1.0.11", + "resize-observer-polyfill": "^1.5.1", + "shx": "^0.3.3" + } + }, "@npmcli/arborist": { "version": "2.10.0", "resolved": "https://registry.npmjs.org/@npmcli/arborist/-/arborist-2.10.0.tgz", @@ -6762,6 +6867,11 @@ "integrity": "sha512-ua7PgUoeQFjmWPcoo9khiPum3Pd60k4/2ZGXt18sm2Slk0W0xZTqt5Y0Ny1NyBiN1EVQ/+FaF9NcY4Qe6rwk5w==", "dev": true }, + "@types/pako": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@types/pako/-/pako-1.0.2.tgz", + "integrity": "sha512-8UJl2MjkqqS6ncpLZqRZ5LmGiFBkbYxocD4e4jmBqGvfRG1RS23gKsBQbdtV9O9GvRyjFTiRHRByjSlKCLlmZw==" + }, "@types/parse-json": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.0.tgz", @@ -7094,8 +7204,7 @@ "balanced-match": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", - "dev": true + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" }, "bcrypt-pbkdf": { "version": "1.0.2", @@ -7157,7 +7266,6 @@ "version": "1.1.11", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, "requires": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" @@ -7482,8 +7590,7 @@ "concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", - "dev": true + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" }, "console-control-strings": { "version": "1.1.0", @@ -8448,8 +8555,7 @@ "fs.realpath": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", - "dev": true + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" }, "fsevents": { "version": "2.3.2", @@ -8461,8 +8567,7 @@ "function-bind": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", - "dev": true + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" }, "functional-red-black-tree": { "version": "1.0.1", @@ -8572,7 +8677,6 @@ "version": "7.2.0", "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", - "dev": true, "requires": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", @@ -8645,7 +8749,6 @@ "version": "1.0.3", "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", - "dev": true, "requires": { "function-bind": "^1.1.1" } @@ -8849,7 +8952,6 @@ "version": "1.0.6", "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", - "dev": true, "requires": { "once": "^1.3.0", "wrappy": "1" @@ -8858,8 +8960,7 @@ "inherits": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", - "dev": true + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" }, "internal-slot": { "version": "1.0.3", @@ -8872,6 +8973,11 @@ "side-channel": "^1.0.4" } }, + "interpret": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.4.0.tgz", + "integrity": "sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==" + }, "ip": { "version": "1.1.5", "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.5.tgz", @@ -8922,7 +9028,6 @@ "version": "2.8.0", "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.8.0.tgz", "integrity": "sha512-vd15qHsaqrRL7dtH6QNuy0ndJmRDrS9HAM1CAiSifNUFv4x1a0CCVsj18hJ1mShxIG6T2i1sO78MkP56r0nYRw==", - "dev": true, "requires": { "has": "^1.0.3" } @@ -9248,6 +9353,19 @@ "integrity": "sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA=", "dev": true }, + "lit-element": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/lit-element/-/lit-element-2.5.1.tgz", + "integrity": "sha512-ogu7PiJTA33bEK0xGu1dmaX5vhcRjBXCFexPja0e7P7jqLhTpNKYRPmE+GmiCaRVAbiQKGkUgkh/i6+bh++dPQ==", + "requires": { + "lit-html": "^1.1.1" + } + }, + "lit-html": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/lit-html/-/lit-html-1.4.1.tgz", + "integrity": "sha512-B9btcSgPYb1q4oSOb/PrOT6Z/H+r6xuNzfH4lFli/AWhYwdtrgQkQWBbIc6mdnf6E2IL3gDXdkkqNktpU0OZQA==" + }, "loader-utils": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.0.tgz", @@ -9293,6 +9411,11 @@ "integrity": "sha1-WjUNoLERO4N+z//VgSy+WNbq4ZM=", "dev": true }, + "lottie-web": { + "version": "5.8.1", + "resolved": "https://registry.npmjs.org/lottie-web/-/lottie-web-5.8.1.tgz", + "integrity": "sha512-9gIizWADlaHC2GCt+D+yNpk5l2clZQFqnVWWIVdY0LnxC/uLa39dYltAe3fcmC/hrZ2IUQ8dLlY0O934Npjs7Q==" + }, "lowercase-keys": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz", @@ -9400,7 +9523,6 @@ "version": "3.0.4", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", - "dev": true, "requires": { "brace-expansion": "^1.1.7" } @@ -9408,8 +9530,7 @@ "minimist": { "version": "1.2.5", "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", - "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", - "dev": true + "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==" }, "minipass": { "version": "3.1.5", @@ -9733,7 +9854,6 @@ "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", - "dev": true, "requires": { "wrappy": "1" } @@ -9869,6 +9989,11 @@ "tar": "^6.1.0" } }, + "pako": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", + "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==" + }, "parent-module": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", @@ -9925,8 +10050,7 @@ "path-is-absolute": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", - "dev": true + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=" }, "path-key": { "version": "3.1.1", @@ -9937,8 +10061,7 @@ "path-parse": { "version": "1.0.7", "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", - "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", - "dev": true + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==" }, "path-type": { "version": "4.0.0", @@ -9962,6 +10085,12 @@ "is-reference": "^1.1.4" } }, + "phosphor-vue": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/phosphor-vue/-/phosphor-vue-4.3.1.tgz", + "integrity": "sha512-W3fk+1RDR+Yvyxpe8XYtynCjwqECuBsduHPR1gBXFxCpKK2HXbAiuomlCoXHvBGdz/h76SM77s8DKpoMkX2EQw==", + "requires": {} + }, "picocolors": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", @@ -10204,6 +10333,14 @@ "picomatch": "^2.2.1" } }, + "rechoir": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz", + "integrity": "sha1-hSBLVNuoLVdC4oyWdW70OvUOM4Q=", + "requires": { + "resolve": "^1.1.6" + } + }, "regexpp": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz", @@ -10244,11 +10381,15 @@ "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", "dev": true }, + "resize-observer-polyfill": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/resize-observer-polyfill/-/resize-observer-polyfill-1.5.1.tgz", + "integrity": "sha512-LwZrotdHOo12nQuZlHEmtuXdqGoOD0OhaxopaNFxWzInpEgaLWoVuAMbTzixuosCx2nEG58ngzW3vxdWoxIgdg==" + }, "resolve": { "version": "1.20.0", "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.20.0.tgz", "integrity": "sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==", - "dev": true, "requires": { "is-core-module": "^2.2.0", "path-parse": "^1.0.6" @@ -10368,6 +10509,25 @@ "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", "dev": true }, + "shelljs": { + "version": "0.8.4", + "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.8.4.tgz", + "integrity": "sha512-7gk3UZ9kOfPLIAbslLzyWeGiEqx9e3rxwZM0KE6EL8GlGwjym9Mrlx5/p33bWTu9YG6vcS4MBxYZDHYr5lr8BQ==", + "requires": { + "glob": "^7.0.0", + "interpret": "^1.0.0", + "rechoir": "^0.6.2" + } + }, + "shx": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/shx/-/shx-0.3.3.tgz", + "integrity": "sha512-nZJ3HFWVoTSyyB+evEKjJ1STiixGztlqwKLTUNV5KqMWtGey9fTd4KU1gdZ1X9BV6215pswQ/Jew9NsuS/fNDA==", + "requires": { + "minimist": "^1.2.3", + "shelljs": "^0.8.4" + } + }, "side-channel": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", @@ -11093,8 +11253,7 @@ "wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", - "dev": true + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" }, "write-file-atomic": { "version": "3.0.3", diff --git a/package.json b/package.json index d36c68e9..96858bdd 100644 --- a/package.json +++ b/package.json @@ -47,6 +47,8 @@ "typescript": "^4.4.3" }, "dependencies": { + "@lottiefiles/lottie-player": "^1.5.2", + "phosphor-vue": "^4.3.1", "vue": "^3.2.22" } } diff --git a/src/assets/settings/background_dark.svg b/src/assets/settings/background_dark.svg new file mode 100644 index 00000000..777567fc --- /dev/null +++ b/src/assets/settings/background_dark.svg @@ -0,0 +1,54 @@ + + + + + + + + + + diff --git a/src/assets/settings/background_light.svg b/src/assets/settings/background_light.svg new file mode 100644 index 00000000..a89240cf --- /dev/null +++ b/src/assets/settings/background_light.svg @@ -0,0 +1,58 @@ + + + + + + + + + + diff --git a/src/assets/settings/theme_lottie.json b/src/assets/settings/theme_lottie.json new file mode 100644 index 00000000..39ff3267 --- /dev/null +++ b/src/assets/settings/theme_lottie.json @@ -0,0 +1 @@ +{"v":"5.1.1","fr":60,"ip":0,"op":120,"w":960,"h":960,"nm":"Komp 1","ddd":0,"assets":[],"layers":[{"ddd":0,"ind":1,"ty":4,"nm":"Formebene 1","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":55.543,"s":[0],"e":[-25]},{"t":71.814453125}],"ix":10},"p":{"a":0,"k":[480,480,0],"ix":2},"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":1,"k":[{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":57.17,"s":[{"i":[[0,-50.451],[33.867,-32.242],[47.303,0],[0,97.754],[-97.754,0],[-31.753,-30.23]],"o":[[0,50.451],[-31.753,30.23],[-97.754,0],[0,-97.754],[47.303,0],[33.867,32.242]],"v":[[177,0],[122.025,128.215],[0,177],[-177,0],[0,-177],[122.025,-128.214]],"c":true}],"e":[{"i":[[0,-63.102],[-59.407,-12.436],[47.303,0],[0,97.754],[-97.754,0],[-31.753,-30.23]],"o":[[0,63.102],[-31.753,30.23],[-97.754,0],[0,-97.754],[47.303,0],[-59.407,12.436]],"v":[[45.488,0],[149.512,128.213],[27.488,177],[-149.512,0],[27.488,-177],[149.512,-128.213]],"c":true}]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.167,"y":0.167},"n":"0p833_0p833_0p167_0p167","t":88.086,"s":[{"i":[[0,-63.102],[-59.407,-12.436],[47.303,0],[0,97.754],[-97.754,0],[-31.753,-30.23]],"o":[[0,63.102],[-31.753,30.23],[-97.754,0],[0,-97.754],[47.303,0],[-59.407,12.436]],"v":[[45.488,0],[149.512,128.213],[27.488,177],[-149.512,0],[27.488,-177],[149.512,-128.213]],"c":true}],"e":[{"i":[[0,-63.102],[-59.407,-12.436],[47.303,0],[0,97.754],[-97.754,0],[-31.753,-30.23]],"o":[[0,63.102],[-31.753,30.23],[-97.754,0],[0,-97.754],[47.303,0],[-59.407,12.436]],"v":[[45.488,0],[149.512,128.213],[27.488,177],[-149.512,0],[27.488,-177],[149.512,-128.213]],"c":true}]},{"t":114.119140625}],"ix":2},"nm":"Pfad 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":18.119,"s":[0.145098045468,0.145098045468,0.172549024224,1],"e":[0.980392158031,0.980392158031,0.980392158031,1]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":88.086,"s":[0.980392158031,0.980392158031,0.980392158031,1],"e":[0.980392158031,0.980392158031,0.980392158031,1]},{"t":114.119140625}],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fläche 1","mn":"ADBE Vector Graphic - Fill","hd":false}],"ip":0,"op":120,"st":0,"bm":0},{"ddd":0,"ind":2,"ty":3,"nm":"Strahls","sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":18.119,"s":[100],"e":[100]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":23,"s":[100],"e":[2]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":40.898,"s":[2],"e":[0]},{"t":114.119140625}],"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":18.119,"s":[0],"e":[7]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":23,"s":[7],"e":[-66.714]},{"t":40.8984375}],"ix":10},"p":{"a":0,"k":[480,480,0],"ix":2},"a":{"a":0,"k":[50,50,0],"ix":1},"s":{"a":1,"k":[{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"n":["0p833_0p833_0p167_0p167","0p833_0p833_0p167_0p167","0p833_0p833_0p167_0p167"],"t":18.119,"s":[100,100,100],"e":[100,100,100]},{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"n":["0p833_0p833_0p167_0p167","0p833_0p833_0p167_0p167","0p833_0p833_0p167_0p167"],"t":23,"s":[100,100,100],"e":[54,54,100]},{"t":40.8984375}],"ix":6}},"ao":0,"ip":0,"op":120,"st":0,"bm":0},{"ddd":0,"ind":3,"ty":4,"nm":"Strahl 8","parent":2,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":18.119,"s":[100],"e":[0]},{"t":44.15234375}],"ix":11},"r":{"a":0,"k":315,"ix":10},"p":{"a":0,"k":[50,50.25,0],"ix":2},"a":{"a":0,"k":[-81.82,-56.34,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ty":"rc","d":1,"s":{"a":0,"k":[40.359,98.82],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"r":{"a":0,"k":0,"ix":4},"nm":"Rechteckpfad: 1","mn":"ADBE Vector Shape - Rect","hd":false},{"ty":"st","c":{"a":0,"k":[0.23964100258,0.783440982594,0.364695021685,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":0,"ix":5},"lc":2,"lj":2,"nm":"Kontur 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"fl","c":{"a":0,"k":[0.144749001896,0.143656996185,0.173452998143,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fläche 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[-81.82,-376.59],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,120.426],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transformieren"}],"nm":"Rechteck 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":120,"st":0,"bm":0},{"ddd":0,"ind":4,"ty":4,"nm":"Strahl 7","parent":2,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":18.119,"s":[100],"e":[0]},{"t":44.15234375}],"ix":11},"r":{"a":0,"k":270,"ix":10},"p":{"a":0,"k":[50,50.25,0],"ix":2},"a":{"a":0,"k":[-81.82,-56.34,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ty":"rc","d":1,"s":{"a":0,"k":[40.359,98.82],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"r":{"a":0,"k":0,"ix":4},"nm":"Rechteckpfad: 1","mn":"ADBE Vector Shape - Rect","hd":false},{"ty":"st","c":{"a":0,"k":[0.23964100258,0.783440982594,0.364695021685,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":0,"ix":5},"lc":2,"lj":2,"nm":"Kontur 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"fl","c":{"a":0,"k":[0.144749001896,0.143656996185,0.173452998143,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fläche 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[-81.82,-376.59],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,120.426],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transformieren"}],"nm":"Rechteck 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":120,"st":0,"bm":0},{"ddd":0,"ind":5,"ty":4,"nm":"Strahl 6","parent":2,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":18.119,"s":[100],"e":[0]},{"t":44.15234375}],"ix":11},"r":{"a":0,"k":225,"ix":10},"p":{"a":0,"k":[50,50.25,0],"ix":2},"a":{"a":0,"k":[-81.82,-56.34,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ty":"rc","d":1,"s":{"a":0,"k":[40.359,98.82],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"r":{"a":0,"k":0,"ix":4},"nm":"Rechteckpfad: 1","mn":"ADBE Vector Shape - Rect","hd":false},{"ty":"st","c":{"a":0,"k":[0.23964100258,0.783440982594,0.364695021685,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":0,"ix":5},"lc":2,"lj":2,"nm":"Kontur 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"fl","c":{"a":0,"k":[0.144749001896,0.143656996185,0.173452998143,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fläche 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[-81.82,-376.59],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,120.426],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transformieren"}],"nm":"Rechteck 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":120,"st":0,"bm":0},{"ddd":0,"ind":6,"ty":4,"nm":"Strahl 5","parent":2,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":18.119,"s":[100],"e":[0]},{"t":44.15234375}],"ix":11},"r":{"a":0,"k":180,"ix":10},"p":{"a":0,"k":[50,50.25,0],"ix":2},"a":{"a":0,"k":[-81.82,-56.34,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ty":"rc","d":1,"s":{"a":0,"k":[40.359,98.82],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"r":{"a":0,"k":0,"ix":4},"nm":"Rechteckpfad: 1","mn":"ADBE Vector Shape - Rect","hd":false},{"ty":"st","c":{"a":0,"k":[0.23964100258,0.783440982594,0.364695021685,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":0,"ix":5},"lc":2,"lj":2,"nm":"Kontur 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"fl","c":{"a":0,"k":[0.144749001896,0.143656996185,0.173452998143,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fläche 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[-81.82,-376.59],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,120.426],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transformieren"}],"nm":"Rechteck 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":120,"st":0,"bm":0},{"ddd":0,"ind":7,"ty":4,"nm":"Strahl 4","parent":2,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":18.119,"s":[100],"e":[0]},{"t":44.15234375}],"ix":11},"r":{"a":0,"k":135,"ix":10},"p":{"a":0,"k":[50,50.25,0],"ix":2},"a":{"a":0,"k":[-81.82,-56.34,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ty":"rc","d":1,"s":{"a":0,"k":[40.359,98.82],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"r":{"a":0,"k":0,"ix":4},"nm":"Rechteckpfad: 1","mn":"ADBE Vector Shape - Rect","hd":false},{"ty":"st","c":{"a":0,"k":[0.23964100258,0.783440982594,0.364695021685,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":0,"ix":5},"lc":2,"lj":2,"nm":"Kontur 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"fl","c":{"a":0,"k":[0.144749001896,0.143656996185,0.173452998143,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fläche 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[-81.82,-376.59],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,120.426],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transformieren"}],"nm":"Rechteck 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":120,"st":0,"bm":0},{"ddd":0,"ind":8,"ty":4,"nm":"Strahl 2","parent":2,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":18.119,"s":[100],"e":[0]},{"t":44.15234375}],"ix":11},"r":{"a":0,"k":90,"ix":10},"p":{"a":0,"k":[50,50.25,0],"ix":2},"a":{"a":0,"k":[-81.82,-56.34,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ty":"rc","d":1,"s":{"a":0,"k":[40.359,98.82],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"r":{"a":0,"k":0,"ix":4},"nm":"Rechteckpfad: 1","mn":"ADBE Vector Shape - Rect","hd":false},{"ty":"st","c":{"a":0,"k":[0.23964100258,0.783440982594,0.364695021685,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":0,"ix":5},"lc":2,"lj":2,"nm":"Kontur 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"fl","c":{"a":0,"k":[0.144749001896,0.143656996185,0.173452998143,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fläche 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[-81.82,-376.59],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,120.426],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transformieren"}],"nm":"Rechteck 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":120,"st":0,"bm":0},{"ddd":0,"ind":9,"ty":4,"nm":"Strahl 3","parent":2,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":18.119,"s":[100],"e":[0]},{"t":44.15234375}],"ix":11},"r":{"a":0,"k":45,"ix":10},"p":{"a":0,"k":[50,50.25,0],"ix":2},"a":{"a":0,"k":[-81.82,-56.34,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ty":"rc","d":1,"s":{"a":0,"k":[40.359,98.82],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"r":{"a":0,"k":0,"ix":4},"nm":"Rechteckpfad: 1","mn":"ADBE Vector Shape - Rect","hd":false},{"ty":"st","c":{"a":0,"k":[0.23964100258,0.783440982594,0.364695021685,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":0,"ix":5},"lc":2,"lj":2,"nm":"Kontur 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"fl","c":{"a":0,"k":[0.144749001896,0.143656996185,0.173452998143,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fläche 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[-81.82,-376.59],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,120.426],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transformieren"}],"nm":"Rechteck 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":120,"st":0,"bm":0},{"ddd":0,"ind":10,"ty":4,"nm":"Strahl","parent":2,"sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":18.119,"s":[100],"e":[0]},{"t":44.15234375}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[50,50.25,0],"ix":2},"a":{"a":0,"k":[-81.82,-56.34,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ty":"rc","d":1,"s":{"a":0,"k":[40.359,98.82],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"r":{"a":0,"k":0,"ix":4},"nm":"Rechteckpfad: 1","mn":"ADBE Vector Shape - Rect","hd":false},{"ty":"st","c":{"a":0,"k":[0.23964100258,0.783440982594,0.364695021685,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":0,"ix":5},"lc":2,"lj":2,"nm":"Kontur 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"fl","c":{"a":0,"k":[0.144749001896,0.143656996185,0.173452998143,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fläche 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[-81.82,-376.59],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,120.426],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transformieren"}],"nm":"Rechteck 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":120,"st":0,"bm":0},{"ddd":0,"ind":11,"ty":4,"nm":"BG","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[482.607,480.992,0],"ix":2},"a":{"a":0,"k":[0,0,0],"ix":1},"s":{"a":0,"k":[105.052,102.494,100],"ix":6}},"ao":0,"shapes":[{"ty":"gr","it":[{"ty":"rc","d":1,"s":{"a":0,"k":[964.945,965.234],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"r":{"a":0,"k":0,"ix":4},"nm":"Rechteckpfad: 1","mn":"ADBE Vector Shape - Rect","hd":false},{"ty":"st","c":{"a":0,"k":[0.23964100258,0.783440982594,0.364695021685,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":0,"ix":5},"lc":1,"lj":1,"ml":4,"nm":"Kontur 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"fl","c":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":18.119,"s":[1,1,1,1],"e":[0.145098045468,0.145098045468,0.172549024224,1]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"n":["0p833_0p833_0p167_0p167"],"t":88.086,"s":[0.145098045468,0.145098045468,0.172549024224,1],"e":[0.145098045468,0.145098045468,0.172549024224,1]},{"t":114.119140625}],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"nm":"Fläche 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[-3.527,-1.383],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[99.185,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transformieren"}],"nm":"Rechteck 1","np":3,"cix":2,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":120,"op":120,"st":0,"bm":0,"hidden":0},{"ddd":0,"ind":12,"ty":1,"nm":"Weiß Farbfläche 1","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[480,480,0],"ix":2},"a":{"a":0,"k":[480,480,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"sw":960,"sh":960,"sc":"#fcfcfc","ip":60,"op":60,"st":0,"bm":0,"hidden":0}],"markers":[]} \ No newline at end of file diff --git a/src/freshContent/settings/Settings.vue b/src/freshContent/settings/Settings.vue index ecb84783..f5a4bb16 100644 --- a/src/freshContent/settings/Settings.vue +++ b/src/freshContent/settings/Settings.vue @@ -1,35 +1,58 @@ + + \ No newline at end of file diff --git a/src/freshContent/settings/components/Dropdown.vue b/src/freshContent/settings/components/Dropdown.vue new file mode 100644 index 00000000..c6eadf00 --- /dev/null +++ b/src/freshContent/settings/components/Dropdown.vue @@ -0,0 +1,36 @@ + + + + + \ No newline at end of file diff --git a/src/freshContent/settings/components/LanguageSelect.vue b/src/freshContent/settings/components/LanguageSelect.vue new file mode 100644 index 00000000..b9d1a189 --- /dev/null +++ b/src/freshContent/settings/components/LanguageSelect.vue @@ -0,0 +1,87 @@ + + + + + \ No newline at end of file diff --git a/src/freshContent/settings/components/Lottie.vue b/src/freshContent/settings/components/Lottie.vue new file mode 100644 index 00000000..1b6eb544 --- /dev/null +++ b/src/freshContent/settings/components/Lottie.vue @@ -0,0 +1,44 @@ + + + diff --git a/src/freshContent/settings/components/SettingTile.vue b/src/freshContent/settings/components/SettingTile.vue new file mode 100644 index 00000000..e69de29b diff --git a/src/freshContent/settings/components/Statistics.vue b/src/freshContent/settings/components/Statistics.vue new file mode 100644 index 00000000..1b4e7141 --- /dev/null +++ b/src/freshContent/settings/components/Statistics.vue @@ -0,0 +1,40 @@ + + + + + + \ No newline at end of file diff --git a/src/freshContent/settings/index.html b/src/freshContent/settings/index.html index 8f15361d..4b9c5335 100644 --- a/src/freshContent/settings/index.html +++ b/src/freshContent/settings/index.html @@ -2,6 +2,7 @@ + Settings diff --git a/src/freshContent/settings/main.ts b/src/freshContent/settings/main.ts index 06547114..e88630ae 100644 --- a/src/freshContent/settings/main.ts +++ b/src/freshContent/settings/main.ts @@ -1,4 +1,8 @@ import { createApp } from "vue" import Settings from "./Settings.vue" +import PhosphorVue from "phosphor-vue" -createApp(Settings).mount("#app") \ No newline at end of file + +createApp(Settings) + .use(PhosphorVue) + .mount("#app") \ No newline at end of file diff --git a/src/freshContent/settings/settings.html b/src/freshContent/settings/settings.html deleted file mode 100644 index ab2532a1..00000000 --- a/src/freshContent/settings/settings.html +++ /dev/null @@ -1,244 +0,0 @@ - - - - - - - TUFast - Einstellungen - - - - - - - - -

Willkommen bei TUfast 🚀

-

Hier kannst du alle Funktionen entdecken und Einstellungen vornehmen.

- -

-

-

- - -

-

-

-

- -   (entwickelt von Lucas) -

- - - - -
-

Werde in alle Online-Portale der TU Dresden automatisch angemeldet.
Dafür müssen deine - Login-Daten sicher auf diesem PC gespeichert werden.
Die Daten werden nur lokal und verschlüsselt - gespeichert.
- Du kannst sie jederzeit löschen.
- TUfast nimmt dir auch alle Klicks beim Anmelden ab! -

-
- - Plattform:
- (ohne @mailbox.tu-dresden.de. Also z.B. "s3276763" oder "luka075d")
-
- -

-
-
-


-

Hier kannst du alle Daten löschen:
- -

-

-
- - - - -
-

TUfast zeigt die Anzahl deiner ungelesenen Mails im TU-Dresden-Postfach (OWA) als kleines Icon oben rechts neben - der Rakete an.
- keine neuen Mails
- 5 neue Mails
- 16 neue Mails -

-

Das Abrufen der Anzahl deiner ungelesenen Mails kann bis zu 5 Minuten dauern. -
Weil TUfast dafür eine spezielle Berechtigung braucht, drücke bitte auf "Erlauben" im folgenden - Pop-Up. -

-

Aus Ein

-

- - -

-

Für diese Funktion ruft TUfast die Anzahl deiner ungelesenen Mails vom Mail-Server der TU - Dresden ab. Zum Anmelden werden deine Login-Daten verschlüsselt übertragen. Diese Verbindung ist sicher. - Es funktioniert genauso, als würdest du deine Mails über den Browser abrufen.

-
- - - - -
-

Finde alle deine OPAL-Kurse direkt im Dashboard.
- öffne das Dashboard oben rechts oder mit Alt+Q (ändern).
-

-

- - -

-

Für Power-User ⚡⚡⚡
- Öffne dein Dashboard mit Alt+Q und beginne direkt zu tippen. Wenn du dann Enter drückst, - wird der erste Kurs aus der Liste geöffnet.
-

- -

-
- - - - -
-

- Damit die Einstellungen wirksam werden, musst du OPAL einmal aktualisieren. Für Firefox funktioniert dieses Feature leider nicht stabil.
- - Möglicherweise braucht TUfast eine spezielle Berechtigung. Drücke bitte auf - "Erlauben" im folgenden - Pop-Up. - -

-

- -   PDF-Dokumente aus OPAL direkt im Browser öffnen, anstatt sie herunterzuladen. -

-

- -   PDF-Dokumente in neuem Tab öffnen (empfohlen!) -

-

- (entwickelt von peterkappelt, Noxdor) -

-
- - - - -
-

Öffne OPAL & Co. einfach mit Tastenkombinationen.
- Hier kannst du alle Shortcuts sehen und ändern. -

-
    -
  • Alt+Q → Dashboard öffnen
  • -
  • Alt+O → OPAL öffnen
  • -
  • Alt+M → Mail (Outlook-Web-App) öffnen
  • -
  • Alt+J → jExam öffnen
  • -
-

-

-

-
- - - - -
-

Gib z.B. "tumail" in der Google-Suche ein, um direkt zur Outlook-Web-App zu kommen. Es werden die meisten Suchmaschinen unterstützt!

-

Aus - - Ein -

-
    -
  • tumail → Outlook Web App
  • -
  • OPAL → OPAL
  • -
  • tucloud → Cloudstore TU Dresden
  • -
  • hisqis → Hisqis TU Dresden
  • -
  • selma → selma TU Dresden
  • -
  • jexam → jExam
  • -
  • tumatrix → Matrix-Chat TU Dresden
  • -
  • magma → Magma TU Dresden
  • -
  • tumed → eportal.med.tu-dresden
  • -
-

-
- - - - -
-

-

-

- Schalte neue Raketen frei und gestalte damit OPAL und deinen Browser!
- Damit unterstützt du auch das TUfast-Projekt und das hilft uns sehr 🙂 -

-

  Standard. Hat jeder.

-
-

- -
- - - - -
-

Hey, ich bin Oli 🙂
TUfast ist ein quelloffenes und studentisches Projekt.
- Wenn du es unterstützen möchtest, schau mal in der Sektion oben drüber nach 😉.
- Fragen und Feedback gern an frage@tu-fast.de.

-

TUfast Website. Der Quelltext ist Open Source auf GitHub.
- Ich bin verpflichtet eine Datenschutzerklärung zu veröffentlichen.

-

Danke an die großartigen Mitentwickler: Noxdor, peterkappelt, Lucas, Daniel!

-

So berechnen sich die gesparten Klicks:
- Ein gesparter Klick = 3 Sekunden
- Einen Shortcut verwenden = 2 gesparte Klicks
- Eine automatische Anmeldung = 3 gesparte Klicks
- Einen Kurs über Dashboard aufrufen = 3 gesparte Klicks
- Eine Weiterleitung der Google-Suche = 2 gesparte Klicks -

-
- - - - diff --git a/src/freshContent/settings/settings.js b/src/freshContent/settings/settings.js deleted file mode 100644 index 63f8def7..00000000 --- a/src/freshContent/settings/settings.js +++ /dev/null @@ -1,595 +0,0 @@ -// global vars -const isFirefox = navigator.userAgent.includes('Firefox/') // attention: no failsave browser detection -const webstorelink = isFirefox ? 'https://addons.mozilla.org/de/firefox/addon/tufast/?utm_source=addons.mozilla.org&utm_medium=referral&utm_content=search' : 'https://chrome.google.com/webstore/detail/tufast-tu-dresden/aheogihliekaafikeepfjngfegbnimbk?hl=de' - -const availableThemes = { - system: 'System theme', - light: 'Light theme', - dark: 'Dark theme' -} - -async function applyTheme (theme) { - if (theme in availableThemes) { - if (theme === 'system') { - document.documentElement.removeAttribute('data-theme') - } else { - document.documentElement.setAttribute('data-theme', theme) - } - - // Promisified until usage of Manifest V3 - await new Promise((resolve) => chrome.storage.local.set({ theme: theme }, resolve)) - - // update switcher - document.querySelector('#themeSwitcher > .theme-text').innerHTML = availableThemes[theme] - } else { - console.error('invalid theme: ' + theme) - } -} - -async function nextTheme () { - const themeOrder = Object.keys(availableThemes) - const currentTheme = document.documentElement.getAttribute('data-theme') || 'system' - const idx = (themeOrder.indexOf(currentTheme) + 1) % themeOrder.length - - await applyTheme(themeOrder[idx]) -} - -async function changePlatform (e) { - const platform = e.target.value - let [usernameExtraHint, usernameFieldHint, passwordFieldHint] = ['', '', ''] - switch (platform) { - case 'zih': - usernameFieldHint = 'Nutzername (selma-Login)' - passwordFieldHint = 'Passwort (selma-Login)' - usernameExtraHint = '(ohne @mailbox.tu-dresden.de. Also z.B. "s3276763" oder "luka075d")' - break - } - document.getElementById('username_field').setAttribute('placeholder', usernameFieldHint) - document.getElementById('password_field').setAttribute('placeholder', passwordFieldHint) - document.getElementById('user_extra_hint').innerHTML = usernameExtraHint - await updatePlatformStatus(platform) -} - -async function saveUserData () { - const platform = document.getElementById('platform_select')?.value || 'zih' - const user = document.getElementById('username_field')?.value - const pass = document.getElementById('password_field')?.value - if (!user || !pass) { - document.getElementById('status_platform').innerHTML = 'Die Felder dürfen nicht leer sein!' - return false - } else { - // Promisified until usage of Manifest V3 - await new Promise((resolve) => chrome.storage.local.set({ isEnabled: true }, resolve)) // need to activate auto login feature - chrome.runtime.sendMessage({ cmd: 'clear_badge' }) - await new Promise((resolve) => chrome.runtime.sendMessage({ cmd: 'set_user_data', userData: { user, pass }, platform }, resolve)) - document.getElementById('save_data').innerHTML = 'Gespeichert!' - document.getElementById('save_data').disabled = true - document.getElementById('username_field').value = '' - document.getElementById('password_field').value = '' - await updatePlatformStatus(platform) - await updateSavedStatus() - setTimeout(() => { - document.getElementById('save_data').innerHTML = 'Speichern' - document.getElementById('save_data').disabled = false - }, 2000) - } -} - -async function deleteUserData () { - chrome.runtime.sendMessage({ cmd: 'clear_badge' }) - // Promisified until usage of Manifest V3 - await new Promise((resolve) => chrome.storage.local.remove([ - 'udata', // this is how to delete user data! - 'meine_kurse', // delete opal courses - 'favoriten', // delete opal courses - 'isEnabled'], resolve)) // need to deactivate auto login feature - // -- - // -- also deactivate owa fetch - document.getElementById('owa_mail_fetch').checked = false - chrome.runtime.sendMessage({ cmd: 'disable_owa_fetch' }) - // Promisified until usage of Manifest V3 - await new Promise((resolve) => chrome.storage.local.set({ - enabledOWAFetch: false, - additionalNotificationOnNewMail: false - }, resolve)) - document.getElementById('additionalNotification').checked = false - // -- - document.getElementById('delete_data').innerHTML = 'Gelöscht!' - document.getElementById('delete_data').setAttribute('class', 'button-accept') - document.getElementById('delete_data').disabled = true - document.getElementById('username_field').value = '' - document.getElementById('password_field').value = '' - document.getElementById('status_platform').innerHTML = 'Derzeit sind keine Daten für diese Platform gespeichert.' - document.getElementById('status_msg').innerHTML = 'Derzeit sind keine Logindaten gespeichert.' - setTimeout(() => { - document.getElementById('delete_data').innerHTML = 'Alle Daten löschen' - document.getElementById('delete_data').setAttribute('class', 'button-deny') - document.getElementById('delete_data').disabled = false - }, 2000) -} - -async function fwdGoogleSearch () { - // Promisified until usage of Manifest V3 - const result = await new Promise((resolve) => chrome.storage.local.get(['fwdEnabled'], resolve)) - // Promisified until usage of Manifest V3 - await new Promise((resolve) => chrome.storage.local.set({ fwdEnabled: !(result.fwdEnabled) }, resolve)) -} - -async function checkSelectedRocket () { - // Promisified until usage of Manifest V3 - const res = await new Promise((resolve) => chrome.storage.local.get(['selectedRocketIcon'], resolve)) - try { - const icon = JSON.parse(res.selectedRocketIcon) - document.getElementById(icon.id).checked = true - } catch { - console.error('Cannot set rocket icon') - } -} - -// set switches and other elements -async function displayEnabled () { - const result = await new Promise((resolve) => chrome.storage.local.get([ - 'fwdEnabled', - 'enabledOWAFetch', - 'additionalNotificationOnNewMail', - 'studiengang', - 'openSettingsPageParam', - 'pdfInInline', - 'pdfInNewTab' - // 'dashboardDisplay' - ], resolve)) - - // '!!' should be used in checkboxes if value is undefined. Value will be false then - document.getElementById('switch_fwd').checked = !!result.fwdEnabled - document.getElementById('owa_mail_fetch').checked = !!result.enabledOWAFetch - document.getElementById('additionalNotification').checked = !!result.additionalNotificationOnNewMail - - if (result.openSettingsPageParam === 'add_studiengang') { - document.getElementById('studiengangSelect').value = 'add' - document.getElementById('addStudiengang').style.display = 'block' - } else if (!result.studiengang || result.studiengang === 'general') { - document.getElementById('studiengangSelect').value = 'general' - } else { - document.getElementById('studiengangSelect').value = result.studiengang - } - - document.getElementById('switch_pdf_inline').checked = !!result.pdfInInline - if (!result.pdfInInline) { - document.getElementById('switch_pdf_newtab_block').style.visibility = 'hidden' - } - - document.getElementById('switch_pdf_newtab').checked = result.pdfInNewTab - await updatePlatformStatus(document.getElementById('status_platform').value) - - /* - if(result.dashboardDisplay === "favoriten") {document.getElementById('fav').checked = true} - if(result.dashboardDisplay === "meine_kurse") {document.getElementById('crs').checked = true} - }) */ -} - -// handle dashboard course select customization -/* function dashboardCourseSelect () { - if(document.getElementById('fav').checked) { - chrome.storage.local.set({dashboardDisplay: "favoriten"}, function() {}) - }else if(document.getElementById('crs').checked) { - chrome.storage.local.set({dashboardDisplay: "meine_kurse"}, function() {}) - } -} */ - -async function updatePlatformStatus (platform = 'zih') { - const statusField = document.getElementById('status_platform') - statusField.innerHTML = '' - const dataSet = await new Promise((resolve) => chrome.runtime.sendMessage({ cmd: 'check_user_data', platform }, resolve)) - if (dataSet) statusField.innerHTML = 'Deine Zugangsdaten für diese Platform sind gespeichert!' - else statusField.innerHTML = 'Derzeit sind keine Daten für diese Platform gespeichert.' -} - -async function updateSavedStatus () { - const statusField = document.getElementById('status_msg') - const platformOption = document.getElementById('platform_select').children - const dataSaved = [] - for (const platform of platformOption) { - const platformName = platform.value - const dataSet = await new Promise((resolve) => chrome.runtime.sendMessage({ cmd: 'check_user_data', platform: platformName }, resolve)) - if (dataSet) dataSaved.push(platform.innerHTML) - } - if (dataSaved.length === 0) { - statusField.innerHTML = 'Derzeit sind keine Logindaten gespeichert.' - } else { - statusField.innerHTML = `Derzeit gespeichert sind Logindaten für: ${dataSaved.join(', ')}` - } -} - -// eslint-disable-next-line no-unused-vars -function clicksToTime (clicks) { - const clicksCalc = clicks * 3 - const secs = clicksCalc % 60 - const mins = Math.floor(clicksCalc / 60) - return '' + clicks + ' Klicks 🖱 und ' + mins + 'min ' + secs + 's ⏲ gespart!' -} - -function clicksToTimeNoIcon (clicks) { - const clicksCalc = clicks * 3 - const secs = clicksCalc % 60 - const mins = Math.floor(clicksCalc / 60) - return '' + clicks + ' Klicks und ' + mins + 'min ' + secs + 's gespart!' -} - -async function openKeyboardSettings () { - chrome.runtime.sendMessage({ cmd: 'open_shortcut_settings' }) -} - -async function toggleOWAfetch () { - // NOTE: not required to check for permission. Browser will only ask for permission, if not given yet! - // check for optional tabs permission - // await chrome.permissions.contains({ - // permissions: ['tabs'], - // }, async function(gotPermission) { - // if (gotPermission) { - // enableOWAFetch() - // } - // else { - // request permission - // Promisified until usage of Manifest V3 - const granted = await new Promise((resolve) => chrome.permissions.request({ permissions: ['tabs'] }, resolve)) - if (granted) { - await enableOWAFetch() - } else { - // Promisified until usage of Manifest V3 - await new Promise((resolve) => chrome.storage.local.set({ enabledOWAFetch: false }, resolve)) - document.getElementById('owa_mail_fetch').checked = false - alert("TUfast braucht diese Berechtigung, um regelmaessig alle Mails abzurufen. Bitte druecke auf 'Erlauben'.") - } - // } - // } - // ); -} - -async function enableOWAFetch () { - // Promisified until usage of Manifest V3 - const result = await new Promise((resolve) => chrome.storage.local.get(['enabledOWAFetch'], resolve)) - if (result.enabledOWAFetch) { - // disable - chrome.runtime.sendMessage({ cmd: 'disable_owa_fetch' }) - // Promisified until usage of Manifest V3 - await new Promise((resolve) => chrome.storage.local.set({ - enabledOWAFetch: false, - additionalNotificationOnNewMail: false - }, resolve)) - - document.getElementById('additionalNotification').checked = false - } else { - // Promisified until usage of Manifest V3 - const resp = await new Promise((resolve) => chrome.runtime.sendMessage({ cmd: 'get_user_data' }, resolve)) - const userData = await resp - // check if user data is saved - if (userData.user && userData.pass) { - document.getElementById('owa_fetch_msg').innerHTML = '' - // Promisified until usage of Manifest V3 - await new Promise((resolve) => chrome.storage.local.set({ - enabledOWAFetch: true, - openSettingsPageParam: 'mailFetchSettings', - openSettingsOnReload: true - }, resolve)) - // reload chrome extension is necessary - alert('Perfekt! Bitte starte den Browser einmal neu, damit die Einstellungen uebernommen werden!') - chrome.runtime.sendMessage({ cmd: 'reload_extension' }) - } else { - document.getElementById('owa_fetch_msg').innerHTML = 'Speichere deine Login-Daten im Punkt \'Automatisches Anmelden in Opal, Selma & Co.\' um diese Funktion zu nutzen!' - document.getElementById('owa_mail_fetch').checked = false - } - } -} - -async function getAvailableRockets () { - // Promisified until usage of Manifest V3 - const availableRockets = await new Promise((resolve) => chrome.storage.local.get(['availableRockets'], (resp) => resolve(resp.availableRockets))) - return availableRockets || {} // To prevent errors when undefined -} - -const rocketIconsConfig = { - - RI4: { - IconPathEnabled: '../../assets/icons/RocketIcons/4_103px.png', - IconPathDisabled: '../../assets/icons/RocketIcons/4_grey_103px.png', - innerHTMLToEnable: '  Spare mehr als 250 Klicks.', - innerHTMLEnabled: '  Mehr als 250 Klicks gespart. TUfast scheint nützlich!', - id: 'RI4' - }, - RI5: { - IconPathEnabled: '../../assets/icons/RocketIcons/13_128px.png', - IconPathDisabled: '../../assets/icons/RocketIcons/13_grey_128px.png', - innerHTMLToEnable: '  Spare mehr als 2500 Klicks. Du bist Profi!', - innerHTMLEnabled: '  Mehr als 2500 Klicks gespart. TUfast ist nützlich!', - id: 'RI5' - }, - RI3: { - IconPathEnabled: '../../assets/icons/RocketIcons/7_128px.png', - IconPathDisabled: '../../assets/icons/RocketIcons/7_grey_128px.png', - innerHTMLToEnable: '  Finde das Easteregg!', - innerHTMLEnabled: '  Easteregg gefunden :)', - id: 'RI3' - }, - RI2: { - IconPathEnabled: '../../assets/icons/RocketIcons/2_128px.png', - IconPathDisabled: '../../assets/icons/RocketIcons/2_grey_128px.png', - innerHTMLToEnable: "  Du findest TUfast nützlich? Erzähle es zwei Leuten mit 👉E-Mail, um diese schicke Rakete freizuschalten!", - innerHTMLEnabled: "  Diese Rakete hast du dir verdient! Mit E-Mail empfohlen.", - id: 'RI2' - }, - RI6: { - IconPathEnabled: '../../assets/icons/RocketIcons/6_128px.png', - IconPathDisabled: '../../assets/icons/RocketIcons/6_grey_128px.png', - innerHTMLToEnable: "  Gefällt dir TUfast? Oder hast du Anmerkdungen? Dann hinterlasse eine Bewertung im 👉WhatsApp und sammle diese tolle Rakete!", - innerHTMLEnabled: "  Danke für deine Unterstützung! Mit WhatsApp empfohlen.", - id: 'RI1' - } -} - -async function insertAllRocketIcons () { - const availableRockets = await getAvailableRockets() - - Object.keys(rocketIconsConfig).forEach((key) => { - const p = document.createElement('p') - const input = document.createElement('input') - const span = document.createElement('span') - const image = document.createElement('img') - const label = document.createElement('label') - const text = document.createElement('text') - - input.type = 'radio' - input.id = rocketIconsConfig[key].id - input.name = 'Rockets' - input.value = rocketIconsConfig[key].id - span.className = 'helper' - label.htmlFor = rocketIconsConfig[key].id - image.style = 'height: 50px;' - - if (availableRockets.includes(rocketIconsConfig[key].id)) { - image.src = rocketIconsConfig[key].IconPathEnabled - text.innerHTML = rocketIconsConfig[key].innerHTMLEnabled - } else { - image.src = rocketIconsConfig[key].IconPathDisabled - input.disabled = 'true' - text.innerHTML = rocketIconsConfig[key].innerHTMLToEnable - } - - span.appendChild(image) - span.appendChild(text) - p.appendChild(input) - p.appendChild(label) - p.appendChild(span) - - document.getElementById('RocketForm').appendChild(p) - }) - - await checkSelectedRocket() - - // attach on click handlers - document.querySelectorAll('#RocketForm a').forEach((el) => { - el.onclick = enableRocketIcon - }) - - // attach form change handler - document.querySelectorAll('input[name=Rockets]').forEach((el) => { - el.onclick = rocketIconSelectionChange - }) -} - -function rocketIconSelectionChange () { - const rocketNode = this.parentElement - const rocketID = this.id - const imgSrc = '../../assets/icons/RocketIcons' + rocketNode.querySelectorAll('img')[0].src.split('RocketIcons')[1] - chrome.storage.local.set({ selectedRocketIcon: '{"id": "' + rocketID + '", "link": "' + imgSrc + '"}' }) - chrome.browserAction.setIcon({ path: imgSrc }) -} - -async function enableRocketIcon () { - const el = this.parentElement.parentElement.parentElement - const rocketID = el.querySelectorAll('input')[0].id - - // save in storage - // Promisified until usage of Manifest V3 - const availRockets = await new Promise((resolve) => chrome.storage.local.get(['availableRockets'], (resp) => resolve(resp.availableRockets))) - if (!availRockets) { - // Promisified until usage of Manifest V3 - await new Promise((resolve) => chrome.storage.local.set({ availableRockets: [rocketID] }, resolve)) - } else if (!availRockets.includes(rocketID)) { - availRockets.push(rocketID) - // Promisified until usage of Manifest V3 - await new Promise((resolve) => chrome.storage.local.set({ availableRockets: availRockets }, resolve)) - } - - // change picture and text and enable radio button - const timestamp = new Date().getTime() - const rocketNode = document.querySelectorAll('#' + rocketID)[0] - const rocketImage = rocketNode.parentElement.querySelectorAll('img')[0] - const rocketText = rocketNode.parentElement.querySelectorAll('text')[0] - const rocketInput = rocketNode.parentElement.querySelectorAll('input')[0] - rocketImage.src = rocketIconsConfig[rocketID].IconPathEnabled + '?t =' + timestamp - rocketText.innerHTML = rocketIconsConfig[rocketID].innerHTMLEnabled - rocketInput.removeAttribute('disabled') -} - -// this need to be done here since manifest v2 -window.onload = async () => { - document.getElementsByClassName('banner__close')[0]?.addEventListener('click', () => document.getElementsByClassName('banner')[0]?.remove()) - - // apply initial theme - // Promisified until usage of Manifest V3 - const theme = await new Promise((resolve) => chrome.storage.local.get('theme', (res) => resolve(res.theme))) - await applyTheme(theme) - - // prevent transition on page load - setTimeout(() => { - document.documentElement.removeAttribute('data-preload') - }, 500) - - // only display additionNotificationSection in chrome, because it doesnt work in ff - if (isFirefox) { - document.getElementById('additionNotificationSection').style.display = 'none' - } - - await insertAllRocketIcons() - - // assign functions - document.getElementById('platform_select').onchange = changePlatform - document.getElementById('save_data').onclick = saveUserData - document.getElementById('delete_data').onclick = deleteUserData - document.getElementById('switch_fwd').onclick = fwdGoogleSearch - document.getElementById('open_shortcut_settings').onclick = openKeyboardSettings - document.getElementById('open_shortcut_settings1').onclick = openKeyboardSettings - document.getElementById('owa_mail_fetch').addEventListener('click', toggleOWAfetch) - document.getElementById('themeSwitcher').addEventListener('click', nextTheme) - - // document.getElementById('fav').onclick = dashboardCourseSelect - // document.getElementById('crs').onclick = dashboardCourseSelect - - // add additional notification checkbox listener - const checkbox = document.getElementById('additionalNotification') - checkbox.addEventListener('change', async (e) => { - if (e.target.checked) { - // only when owa fetch enabled - // Promisified until usage of Manifest V3 - const enabledOWAFetch = await new Promise((resolve) => chrome.storage.local.get(['enabledOWAFetch'], (resp) => resolve(resp.enabledOWAFetch))) - if (enabledOWAFetch) { - // Promisified until usage of Manifest V3 - await new Promise((resolve) => chrome.storage.local.set({ additionalNotificationOnNewMail: true }, resolve)) - } else { - document.getElementById('owa_fetch_msg').innerHTML = 'Für dieses Feature musst der Button auf \'Ein\' stehen.' - document.getElementById('additionalNotification').checked = false - } - } else { - // Promisified until usage of Manifest V3 - await new Promise((resolve) => chrome.storage.local.set({ additionalNotificationOnNewMail: false }, resolve)) - } - }) - - // add studiengang-select listener - document.getElementById('studiengangSelect').addEventListener('change', async (e) => { - if (e.target.value === 'add') { - document.getElementById('addStudiengang').style.display = 'block' - } else { - document.getElementById('addStudiengang').style.display = 'none' - // Promisified until usage of Manifest V3 - await new Promise((resolve) => chrome.storage.local.set({ studiengang: e.target.value }, resolve)) - } - }) - - // add storage listener for autologin - chrome.storage.onChanged.addListener(async (changes) => { - if ('openSettingsPageParam' in changes && changes.openSettingsPageParam.newValue === 'auto_login_settings') { - if (!document.getElementById('auto_login_settings').classList.contains('active')) { - document.getElementById('auto_login_settings').click() - } - // Promisified until usage of Manifest V3 - await new Promise((resolve) => chrome.storage.local.set({ openSettingsPageParam: false }, resolve)) - document.getElementById('settings_comment').innerHTML = 'Für dieses Feature gib hier deine Zugangsdaten ein.' - } - - if ('openSettingsPageParam' in changes && changes.openSettingsPageParam.newValue === 'add_studiengang') { - document.getElementById('studiengangSelect').value = 'add' - document.getElementById('addStudiengang').style.display = 'block' - // Promisified until usage of Manifest V3 - await new Promise((resolve) => chrome.storage.local.set({ openSettingsPageParam: false }, resolve)) - } - }) - - document.getElementById('switch_pdf_inline').addEventListener('click', async (e) => { - // Promisified until usage of Manifest V3 - await new Promise((resolve) => chrome.storage.local.set({ pdfInInline: e.target.checked }, resolve)) - - document.getElementById('switch_pdf_newtab_block').style.visibility = e.target.checked ? 'visible' : 'hidden' - - if (e.target.checked) { - // request necessary permissions - // Promisified until usage of Manifest V3 - const granted = await new Promise((resolve) => chrome.permissions.request({ permissions: ['webRequest', 'webRequestBlocking'], origins: ['https://bildungsportal.sachsen.de/opal/*'] }, resolve)) - if (granted) { - chrome.runtime.sendMessage({ cmd: 'toggle_pdf_inline_setting', enabled: true }) - if (isFirefox) { - alert('Perfekt! Bitte starte den Browser einmal neu, damit die Einstellungen uebernommen werden!') - // Promisified until usage of Manifest V3 - await new Promise((resolve) => chrome.storage.local.set({ openSettingsPageParam: 'opalCustomize', openSettingsOnReload: true }, resolve)) - chrome.runtime.sendMessage({ cmd: 'reload_extension' }) - } - } else { - // permission granting failed :( -> revert checkbox settings - // Promisified until usage of Manifest V3 - await new Promise((resolve) => chrome.storage.local.set({ pdfInInline: false }, resolve)) - e.target.checked = false - alert('TUfast braucht diese Berechtigung, um die PDFs im Browser anzeigen zu koennen. Versuche es erneut.') - document.getElementById('switch_pdf_newtab_block').style.visibility = 'hidden' - } - } else { - // disable "pdf in new tab" setting since it doesn't make any sense without inline pdf - // Promisified until usage of Manifest V3 - await new Promise((resolve) => chrome.storage.local.set({ pdfInNewTab: false }, resolve)) - document.getElementById('switch_pdf_newtab').checked = false - chrome.runtime.sendMessage({ cmd: 'toggle_pdf_inline_setting', enabled: false }) - } - }) - - document.getElementById('switch_pdf_newtab').addEventListener('click', async (e) => { - // Promisified until usage of Manifest V3 - await new Promise((resolve) => chrome.storage.local.set({ pdfInNewTab: e.target.checked }, resolve)) - }) - - // set all switches and elements - await displayEnabled() - - // prep accordion - const accList = document.getElementsByClassName('accordion') - for (const acc of accList) { - acc.addEventListener('click', (e) => { - // --only open one accordions section at a time - for (const acc of accList) { - if (acc === e.target) continue // skip actual clicked element - const pan = acc.nextElementSibling - if (pan.style.maxHeight) { - pan.style.maxHeight = null - acc.classList.toggle('active') - } - } - // -- - // open clicked accordion section and set active - e.target.classList.toggle('active') - const panel = e.target.nextElementSibling - if (panel.style.maxHeight) { - panel.style.maxHeight = null - } else { - panel.style.maxHeight = panel.scrollHeight + 'px' - } - }) - } - - // get things from storage// Promisified until usage of Manifest V3 - const result = await new Promise((resolve) => chrome.storage.local.get(['saved_click_counter', 'openSettingsPageParam', 'isEnabled'], resolve)) - await updateSavedStatus() - // update saved clicks - // see if any params are available - if (result.openSettingsPageParam === 'auto_login_settings') { - setTimeout(() => document.getElementById('auto_login_settings').click(), 200) - } else if (result.openSettingsPageParam === 'time_settings') { - setTimeout(() => document.getElementById('time_settings').click(), 200) - setTimeout(() => window.scrollTo({ top: document.body.scrollHeight, behavior: 'smooth' }), 500) - } else if (result.openSettingsPageParam === 'mailFetchSettings') { - setTimeout(() => document.getElementById('owa_mail_settings').click(), 200) - } else if (result.openSettingsPageParam === 'opalCustomize') { - setTimeout(() => document.getElementById('opal_modifications').click(), 200) - } else if (result.openSettingsPageParam === 'rocket_icons_settings') { - setTimeout(() => document.getElementById('rocket_icons').click(), 200) - setTimeout(() => window.scrollTo({ top: document.body.scrollHeight, behavior: 'smooth' }), 500) - } - - this.document.getElementById('settings_comment').innerHTML = 'Bereits ' + clicksToTimeNoIcon(result.saved_click_counter || 0) - // Promisified until usage of Manifest V3 - await new Promise((resolve) => chrome.storage.local.set({ openSettingsPageParam: false }, resolve)) -} diff --git a/src/styles/palette_new/_reset.sass b/src/styles/palette_new/_reset.sass new file mode 100644 index 00000000..d5c1e843 --- /dev/null +++ b/src/styles/palette_new/_reset.sass @@ -0,0 +1,44 @@ +body + font-family: var(--ff-heading) + font-size: var(--fs-400) + background-color: hsl(var(--clr-black) ) + color: hsl(var(--clr-white) ) + line-height: 1.5 + box-sizing: border-box + +*, *::after, *::before + box-sizing: inherit + +// reset margins +body, +h1, +h2, +h3, +h4, +h5, +h6, +p, +figure, +picture + margin: 0 + +img, +picture + max-width: 100% + display: block + +input, +button, +textarea, +select + font: inherit + +// Remove animations for people who prefer them turned off +@media (prefers-reduced-motion: reduce) + *, + *::before, + *::after + animation-duration: 0.01ms !important + animation-iteration-count: 1 !important + transition-duration: 0.01ms !important + scroll-behavior: auto !important \ No newline at end of file diff --git a/src/styles/palette_new/_typo.sass b/src/styles/palette_new/_typo.sass new file mode 100644 index 00000000..7055b12a --- /dev/null +++ b/src/styles/palette_new/_typo.sass @@ -0,0 +1,18 @@ +@import url("https://fonts.googleapis.com/css?family=Open+Sans&display=swap") +@import url("https://fonts.googleapis.com/css?family=Montserrat&display=swap") + +html + --ff-heading: "Montserrat" + --ff-paragraph: "Open Sans" + +h1, +h2, +h3, +h4, +h5, +h6, +p + font-weight: 400 + +.txt-bold + font-weight: 600 \ No newline at end of file diff --git a/src/styles/palette_new/_variables.sass b/src/styles/palette_new/_variables.sass new file mode 100644 index 00000000..fbb2d5fa --- /dev/null +++ b/src/styles/palette_new/_variables.sass @@ -0,0 +1,8 @@ +// Colours - HSL values +html + --clr-primary: 131, 46%, 51% + --clr-grey: 215, 15%, 15% + --clr-black: 216, 28%, 7% + --clr-alert: 3, 93%, 63% + --clr-warning: 42, 74%, 57% + --clr-white: 0, 0%, 98% \ No newline at end of file diff --git a/src/styles/palette_new/palette_new.sass b/src/styles/palette_new/palette_new.sass new file mode 100644 index 00000000..bab4553d --- /dev/null +++ b/src/styles/palette_new/palette_new.sass @@ -0,0 +1,3 @@ +@forward "variables" +@forward "typo" +@forward "reset" \ No newline at end of file diff --git a/src/styles/settings.scss b/src/styles/settings.scss deleted file mode 100644 index 90e8bf14..00000000 --- a/src/styles/settings.scss +++ /dev/null @@ -1,299 +0,0 @@ -@use 'palette.scss'; - -body { - margin-left: 20%; - margin-right: 20%; - margin-bottom: 50px; - margin-top: 30px; - font-size: 14px; - font-family: Arial, Helvetica, sans-serif; - line-height: 25px; - background-color: var(--color-bg-primary); - color: var(--color-text-primary); - transition: background-color .4s ease; -} - -[data-preload] * { - transition: none !important; -} - -html { - overflow-y: scroll; -} - -a { - color: var(--color-text-link); - text-decoration: none; -} - -a:hover { - text-decoration: underline; -} - -.heading { - font-size: 20px; - font-weight: bold; -} - -.grey-text { - color: var(--color-text-secondary); -} - -.red-text { - color: var(--color-text-danger); -} - -.green-text { - color: var(--color-text-success); -} - -.the-bottom { - padding:0px; - bottom: 0%; - margin-left: 5%; -} - - -.red-text { - color: var(--color-text-danger); -} - - -.small-text { - font-size: 12px; -} - -input[type=text], input[type=password] { - width: 200px; - padding: 12px 20px; - margin: 8px 0; - display: inline-block; - border: 1px solid var(--color-border-input); - border-radius: 4px; - font-size: 14px; - box-sizing: border-box; - background-color: var(--color-bg-primary); - color: var(--color-text-primary); - transition: background-color .4s ease, border-color .4s ease; -} - -input[type=text]::placeholder, -input[type=password]::placeholder { - color: var(--color-text-placeholder); -} - -input[type=text]:focus::placeholder, -input[type=password]:focus::placeholder { - opacity: 0; -} - -select { - color: var(--color-text-primary); - background-color: var(--color-bg-primary); - border: 1px solid var(--color-border-input); - outline: none; - transition: all .4s ease; -} - -input::-webkit-input-placeholder { - font-size: 13px; -} - -input:focus { - outline: none !important; -} - -.btn--settings { - width: 200px; - background-color: var(--color-btn-bg); - color: var(--color-btn-text); - padding: 12px 20px; - margin: 8px 0; - border: none; - border-radius: 4px; - cursor: pointer; - font-size: 13px; - transition: background-color .4s ease; -} - -.btn--settings:hover { - background-color: var(--color-btn-hover-bg); -} - -#themeSwitcher { - display: block; -} - -.theme-text { - margin-left: .5em; -} - -/* Style the buttons that are used to open and close the accordion panel */ -.accordion { - background-color: var(--color-btn-bg); - color: var(--color-btn-text); - cursor: pointer; - padding: 18px; - padding-right: 35px; /* required because arrow-symbol is scaled */ - width: 100%; - text-align: left; - border: none; - outline: none; - transition: background-color 0.4s ease; - font-size: 14px; - box-shadow: 0 1px 4px rgba(12, 12, 13, 0.1); -} - -/* Add a background color to the button if it is clicked on (add the .active class with JS), and when you move the mouse over it (hover) */ -.active, .accordion:hover { - background-color: var(--color-btn-active-bg); -} - -/* Style the accordion panel. Note: hidden by default */ -.panel { - padding: 0 18px; - background-color: var(--color-bg-tertiary); - max-height: 0; - overflow: hidden; - transition: max-height 0.2s ease-out, background-color .4s ease; - box-shadow: 0 1px 4px rgba(12, 12, 13, 0.1); -} - -.accordion:after { - content: '\2039'; /* Unicode character for "arrow" sign */ - -webkit-transform: rotate(-90deg) scale(2.5 , 2.5); - transform: rotate(-90deg) scale(2.5 , 2.5); - font-size: 14px; - color: var(--color-btn-text); - float: right; - margin-left: 5px; -} - -.active:after { - content: "\203A"; /* Unicode character for "arrow" sign */ -} - -#dashboard-tutorial { - position: fixed; /* absolute //for scrolling*/ - top: 0px; - right: 0px; - margin-top: 2%; - width: 10%; - margin-right: 2%; -} - -/* radio select */ -/* Customize the label (the container) */ - -[type="radio"]:checked, -[type="radio"]:not(:checked) { - position: absolute; - left: -9999px; -} -[type="radio"]:checked + label, -[type="radio"]:not(:checked) + label -{ - position: relative; - padding-left: 28px; - cursor: pointer; - line-height: 20px; - /*display: inline-block;*/ -} - -[type="radio"]:checked + label:before, -[type="radio"]:not(:checked) + label:before { - content: ''; - position: absolute; - left: 0; - top: 0; - width: 18px; - height: 18px; - border: 1px solid var(--color-border-radio); - border-radius: 100%; - background-color: var(--color-btn-bg); - transition: background-color .4s ease, border-color .4s ease; -} -[type="radio"]:hover:checked + label:before, -[type="radio"]:hover:not(:checked) + label:before { - background-color: var(--color-btn-hover-bg); -} -[type="radio"]:checked + label:after, -[type="radio"]:not(:checked) + label:after { - content: ''; - width: 12px; - height: 12px; - background-color: rgb(47, 143, 18); - position: absolute; - top: 4px; - left: 4px; - border-radius: 100%; - -webkit-transition: all 0.2s ease; - transition: all 0.2s ease; -} -[type="radio"]:not(:checked) + label:after { - opacity: 0; - -webkit-transform: scale(0); - transform: scale(0); -} -[type="radio"]:checked + label:after { - opacity: 1; - -webkit-transform: scale(1); - transform: scale(1); -} - -.helper { - display: inline-block; - height: 100%; - vertical-align: middle; -} -.helper img { - vertical-align: middle; -} - -.button-accept { - width: 200px; - background-color: var(--color-btn-accept-bg); - color: var(--color-text-white); - padding: 12px 19px; - margin: 8px 0; - border: none; - border-radius: 4px; - cursor: pointer; - font-size: 14px; -} - -.button-accept:hover { - background-color: var(--color-btn-accept-hover-bg); -} - -.button-deny { - width: 200px; - background-color: var(--color-btn-deny-bg); - color: var(--color-text-white); - padding: 12px 19px; - margin: 8px 0; - border: none; - border-radius: 4px; - cursor: pointer; - font-size: 14px; -} - -.button-deny:hover { - background-color: var(--color-btn-deny-hover-bg); -} - -.unread-mail-icon { - vertical-align: middle; - height: 32px; -} - -.img-opal-kurse { - max-width: 100%; - width: 550px; - border-radius: 2px; -} - -.banner { - right: 20px; - font-size: .9em; -} \ No newline at end of file diff --git a/tsconfig.json b/tsconfig.json index 5332ec03..95d3ded4 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -1,5 +1,6 @@ { "compilerOptions": { + "downlevelIteration": true, "strict": true, "noImplicitAny": false, "noImplicitThis": false, @@ -11,6 +12,7 @@ "esModuleInterop": true, "allowSyntheticDefaultImports": true, "sourceMap": true, + "resolveJsonModule": true, "baseUrl": ".", "lib": [ "esnext", From ae7fe4f85e8659c6e18fb458f74df951df1fe537 Mon Sep 17 00:00:00 2001 From: Noxdor Date: Tue, 7 Dec 2021 17:51:50 +0100 Subject: [PATCH 06/98] tiles basic design done --- src/freshContent/settings/Settings.vue | 40 ++++++++++++++++- .../settings/components/SettingTile.vue | 44 +++++++++++++++++++ src/freshContent/settings/settings.json | 34 ++++++++++++++ 3 files changed, 116 insertions(+), 2 deletions(-) create mode 100644 src/freshContent/settings/settings.json diff --git a/src/freshContent/settings/Settings.vue b/src/freshContent/settings/Settings.vue index f5a4bb16..cd8967c5 100644 --- a/src/freshContent/settings/Settings.vue +++ b/src/freshContent/settings/Settings.vue @@ -10,28 +10,46 @@
+
+ + +
+ + \ No newline at end of file diff --git a/src/freshContent/settings/settings.json b/src/freshContent/settings/settings.json new file mode 100644 index 00000000..43dc30c3 --- /dev/null +++ b/src/freshContent/settings/settings.json @@ -0,0 +1,34 @@ +[ + { + "title": "Automatisches Anmelden", + "icon": "ph-lock-key" + }, + { + "title": "E-Mail Benachrichtigungen", + "icon": "ph-notification" + }, + { + "title": "Opalkurse im Dashboard", + "icon": "ph-list-dashes" + }, + { + "title": "Opal personaliseren und verbessern", + "icon": "ph-sparkle" + }, + { + "title": "Shortcuts", + "icon": "ph-gauge" + }, + { + "title": "Abkürzungen in Suchmaschinen", + "icon": "ph-google-logo" + }, + { + "title": "Raketen sammeln", + "icon": "ph-rocket" + }, + { + "title": "Weiteres & Kontakt", + "icon": "ph-envelope-open" + } +] \ No newline at end of file From 6bf7e4aa1a14f13049ff728cf193680ac6b743f4 Mon Sep 17 00:00:00 2001 From: Noxdor Date: Thu, 9 Dec 2021 15:26:16 +0100 Subject: [PATCH 07/98] added small effect for click on setting tile --- src/freshContent/settings/Settings.vue | 20 +++--- .../settings/components/LanguageSelect.vue | 3 +- .../settings/components/SettingTile.vue | 70 ++++++++++++++++++- src/styles/palette_new/_typo.sass | 5 +- 4 files changed, 81 insertions(+), 17 deletions(-) diff --git a/src/freshContent/settings/Settings.vue b/src/freshContent/settings/Settings.vue index cd8967c5..d0b22a44 100644 --- a/src/freshContent/settings/Settings.vue +++ b/src/freshContent/settings/Settings.vue @@ -1,8 +1,8 @@ + + \ No newline at end of file diff --git a/src/freshContent/settings/components/Lottie.vue b/src/freshContent/settings/components/Lottie.vue index 1b6eb544..df29e12e 100644 --- a/src/freshContent/settings/components/Lottie.vue +++ b/src/freshContent/settings/components/Lottie.vue @@ -25,7 +25,6 @@ export default defineComponent({ const direction = ref(-1) onMounted(() => { - console.log(anim.value.setDirection) setTimeout(() => { anim.value.seek("98%") }, 0); diff --git a/src/freshContent/settings/components/SettingTile.vue b/src/freshContent/settings/components/SettingTile.vue index 40744f57..49d5b678 100644 --- a/src/freshContent/settings/components/SettingTile.vue +++ b/src/freshContent/settings/components/SettingTile.vue @@ -29,7 +29,10 @@ export default defineComponent({ } const click = (e : Event) => { - const target = e.target as HTMLDivElement + console.log("clicked!") + let target = e.target as HTMLElement + if(target.parentElement?.classList.contains("settings-tile")) + target = target.parentElement target.classList.add("settings-tile--animate") setTimeout(() => target.classList.remove("settings-tile--animate"), 1000); } @@ -48,8 +51,7 @@ export default defineComponent({ --wave-animation-time: 1000ms --wave-delay: 150ms background-color: hsl(var(--clr-black) ) - border-radius: 40px - + border-radius: var(--brd-rad) display: flex flex-direction: column justify-content: center @@ -88,7 +90,7 @@ export default defineComponent({ left: 0 width: 100% height: 100% - border-radius: inherit + border-radius: var(--brd-rad) animation-fill-mode: forwards background-color: hsl(var(--clr-black) ) &::before diff --git a/src/freshContent/settings/components/Statistics.vue b/src/freshContent/settings/components/Statistics.vue index 1b4e7141..19df240b 100644 --- a/src/freshContent/settings/components/Statistics.vue +++ b/src/freshContent/settings/components/Statistics.vue @@ -3,8 +3,8 @@

Bereits gespart

- 40 - Clicks + {{ counter }} + {{ counter === 1 ? "Click" : "Clicks" }}
@@ -16,10 +16,18 @@ + + \ No newline at end of file diff --git a/src/freshContent/settings/settingPages/AutoLogin.vue b/src/freshContent/settings/settingPages/AutoLogin.vue new file mode 100644 index 00000000..e16d69d3 --- /dev/null +++ b/src/freshContent/settings/settingPages/AutoLogin.vue @@ -0,0 +1,29 @@ + + + + + \ No newline at end of file diff --git a/src/freshContent/settings/settingPages/ImproveOpal.vue b/src/freshContent/settings/settingPages/ImproveOpal.vue new file mode 100644 index 00000000..4553ca9f --- /dev/null +++ b/src/freshContent/settings/settingPages/ImproveOpal.vue @@ -0,0 +1,32 @@ + + + + + \ No newline at end of file diff --git a/src/freshContent/settings/settings.json b/src/freshContent/settings/settings.json index 43dc30c3..4a4b2b66 100644 --- a/src/freshContent/settings/settings.json +++ b/src/freshContent/settings/settings.json @@ -1,7 +1,8 @@ [ { "title": "Automatisches Anmelden", - "icon": "ph-lock-key" + "icon": "ph-lock-key", + "settingsPage": "AutoLogin" }, { "title": "E-Mail Benachrichtigungen", @@ -13,7 +14,8 @@ }, { "title": "Opal personaliseren und verbessern", - "icon": "ph-sparkle" + "icon": "ph-sparkle", + "settingsPage": "ImproveOpal" }, { "title": "Shortcuts", diff --git a/src/styles/palette_new/_variables.sass b/src/styles/palette_new/_variables.sass index fbb2d5fa..c6407cbd 100644 --- a/src/styles/palette_new/_variables.sass +++ b/src/styles/palette_new/_variables.sass @@ -5,4 +5,6 @@ html --clr-black: 216, 28%, 7% --clr-alert: 3, 93%, 63% --clr-warning: 42, 74%, 57% - --clr-white: 0, 0%, 98% \ No newline at end of file + --clr-white: 0, 0%, 98% + + --brd-rad: 40px \ No newline at end of file diff --git a/tsconfig.json b/tsconfig.json index 95d3ded4..05a29ef3 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -18,7 +18,10 @@ "esnext", "dom", "dom.iterable", - "scripthost" + "scripthost", + ], + "types": [ + "chrome" ] }, "include": [ From f5f30f389779baa64fb486f5ed9a7b1bf3ac1748 Mon Sep 17 00:00:00 2001 From: Noxdor Date: Fri, 10 Dec 2021 14:41:13 +0100 Subject: [PATCH 09/98] implemented statistics functionality --- .../settings/components/Statistics.vue | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) diff --git a/src/freshContent/settings/components/Statistics.vue b/src/freshContent/settings/components/Statistics.vue index 19df240b..cd1b24e7 100644 --- a/src/freshContent/settings/components/Statistics.vue +++ b/src/freshContent/settings/components/Statistics.vue @@ -8,25 +8,36 @@
- 2min - 15s + {{ getMinutes(counter) }}min + {{ getSeconds(counter) }}s
+ + \ No newline at end of file diff --git a/src/freshContent/settings/components/Card.vue b/src/freshContent/settings/components/Card.vue index efd32dd9..1bf0a498 100644 --- a/src/freshContent/settings/components/Card.vue +++ b/src/freshContent/settings/components/Card.vue @@ -2,7 +2,7 @@
-

{{ title }}

+

{{ title }}

@@ -64,9 +64,8 @@ export default defineComponent({ height: var(--card-height) background-color: hsl(var(--clr-black) ) border-radius: var(--brd-rad) - - &__title - text-transform: uppercase + // display: flex + // flex-direction: column &__header // width: 100% @@ -78,6 +77,9 @@ export default defineComponent({ &__body margin: 2rem 2.5rem + overflow-y: auto + // overflow-x: visible + height: auto &__close width: 4rem diff --git a/src/freshContent/settings/components/Input.vue b/src/freshContent/settings/components/Input.vue new file mode 100644 index 00000000..7c55493e --- /dev/null +++ b/src/freshContent/settings/components/Input.vue @@ -0,0 +1,82 @@ + + + + + \ No newline at end of file diff --git a/src/freshContent/settings/settingPages/AutoLogin.vue b/src/freshContent/settings/settingPages/AutoLogin.vue index e16d69d3..76c6383c 100644 --- a/src/freshContent/settings/settingPages/AutoLogin.vue +++ b/src/freshContent/settings/settingPages/AutoLogin.vue @@ -1,9 +1,15 @@ \ No newline at end of file + diff --git a/src/styles/palette_new/_typo.sass b/src/styles/palette_new/_typo.sass index a2ba758c..2dfe152f 100644 --- a/src/styles/palette_new/_typo.sass +++ b/src/styles/palette_new/_typo.sass @@ -18,4 +18,10 @@ p font-weight: 600 .upper - text-transform: uppercase \ No newline at end of file + text-transform: uppercase + +.max-line + width: var(--max-line) + +.p-margin + margin: 1rem 0 \ No newline at end of file diff --git a/src/styles/palette_new/_variables.sass b/src/styles/palette_new/_variables.sass index c6407cbd..488d86e9 100644 --- a/src/styles/palette_new/_variables.sass +++ b/src/styles/palette_new/_variables.sass @@ -7,4 +7,6 @@ html --clr-warning: 42, 74%, 57% --clr-white: 0, 0%, 98% - --brd-rad: 40px \ No newline at end of file + --brd-rad: 40px + + --max-line: 60ch \ No newline at end of file From 29dc0bb0f9dcc2113fdda42bce079e2f0ab2c3e5 Mon Sep 17 00:00:00 2001 From: Noxdor Date: Sun, 12 Dec 2021 14:06:25 +0100 Subject: [PATCH 11/98] started email page, added secondary button class --- src/freshContent/settings/Settings.vue | 2 ++ .../settings/components/Button.vue | 14 +++++++- src/freshContent/settings/components/Card.vue | 11 +++--- .../settings/components/Input.vue | 6 +++- .../settings/settingPages/AutoLogin.vue | 6 ++-- .../settings/settingPages/Email.vue | 36 +++++++++++++++++++ src/freshContent/settings/settings.json | 3 +- src/styles/palette_new/_typo.sass | 1 + src/styles/palette_new/_variables.sass | 4 +-- 9 files changed, 68 insertions(+), 15 deletions(-) create mode 100644 src/freshContent/settings/settingPages/Email.vue diff --git a/src/freshContent/settings/Settings.vue b/src/freshContent/settings/Settings.vue index 65d06c5a..e46b8c70 100644 --- a/src/freshContent/settings/Settings.vue +++ b/src/freshContent/settings/Settings.vue @@ -55,6 +55,7 @@ import Toggle from './components/Toggle.vue' // Settings Page Components import AutoLogin from "./settingPages/AutoLogin.vue" +import Email from "./settingPages/Email.vue" import ImproveOpal from './settingPages/ImproveOpal.vue' export default defineComponent({ @@ -68,6 +69,7 @@ export default defineComponent({ Toggle, ImproveOpal, AutoLogin, + Email, }, setup() { const body = document.getElementsByTagName("body")[0] diff --git a/src/freshContent/settings/components/Button.vue b/src/freshContent/settings/components/Button.vue index ac3e5885..a1787a70 100644 --- a/src/freshContent/settings/components/Button.vue +++ b/src/freshContent/settings/components/Button.vue @@ -20,6 +20,7 @@ export default defineComponent({ \ No newline at end of file diff --git a/src/freshContent/settings/components/Card.vue b/src/freshContent/settings/components/Card.vue index 1bf0a498..085517b8 100644 --- a/src/freshContent/settings/components/Card.vue +++ b/src/freshContent/settings/components/Card.vue @@ -64,11 +64,10 @@ export default defineComponent({ height: var(--card-height) background-color: hsl(var(--clr-black) ) border-radius: var(--brd-rad) - // display: flex - // flex-direction: column + display: flex + flex-direction: column &__header - // width: 100% height: min-content display: flex justify-content: space-between @@ -77,14 +76,12 @@ export default defineComponent({ &__body margin: 2rem 2.5rem - overflow-y: auto - // overflow-x: visible - height: auto + height: 100% + overflow: auto &__close width: 4rem height: 4rem - // margin: 1rem 1rem cursor: pointer &:hover color: hsl(var(--clr-alert) ) diff --git a/src/freshContent/settings/components/Input.vue b/src/freshContent/settings/components/Input.vue index 7c55493e..27ceac0e 100644 --- a/src/freshContent/settings/components/Input.vue +++ b/src/freshContent/settings/components/Input.vue @@ -18,8 +18,12 @@ export default defineComponent({ type: String as PropType, required: true, }, + pattern: { + type: Object as PropType, + default: null, + } }, - setup() { + setup(props) { const statusIcon = ref("ph-check-circle") const inputText = ref("") const regexPatternSelmaLogin = /([s]\d{6})|(\w+\d{3}\w)/gm diff --git a/src/freshContent/settings/settingPages/AutoLogin.vue b/src/freshContent/settings/settingPages/AutoLogin.vue index 76c6383c..a7e762c7 100644 --- a/src/freshContent/settings/settingPages/AutoLogin.vue +++ b/src/freshContent/settings/settingPages/AutoLogin.vue @@ -6,9 +6,10 @@

TUfast nimmt dir auch alle Klicks beim Anmelden ab!

- - + +
@@ -39,6 +40,7 @@ export default defineComponent({ align-items: stretch justify-content: space-between gap: 1rem + margin-left: 1rem .important font-weight: 600 diff --git a/src/freshContent/settings/settingPages/Email.vue b/src/freshContent/settings/settingPages/Email.vue new file mode 100644 index 00000000..89f1ef05 --- /dev/null +++ b/src/freshContent/settings/settingPages/Email.vue @@ -0,0 +1,36 @@ + + + + + \ No newline at end of file diff --git a/src/freshContent/settings/settings.json b/src/freshContent/settings/settings.json index 4a4b2b66..b10dc8ae 100644 --- a/src/freshContent/settings/settings.json +++ b/src/freshContent/settings/settings.json @@ -6,7 +6,8 @@ }, { "title": "E-Mail Benachrichtigungen", - "icon": "ph-notification" + "icon": "ph-notification", + "settingsPage": "Email" }, { "title": "Opalkurse im Dashboard", diff --git a/src/styles/palette_new/_typo.sass b/src/styles/palette_new/_typo.sass index 2dfe152f..b3ec2ef9 100644 --- a/src/styles/palette_new/_typo.sass +++ b/src/styles/palette_new/_typo.sass @@ -4,6 +4,7 @@ html --ff-heading: "Montserrat" --ff-paragraph: "Open Sans" + --max-line: 60ch h1, h2, diff --git a/src/styles/palette_new/_variables.sass b/src/styles/palette_new/_variables.sass index 488d86e9..c6407cbd 100644 --- a/src/styles/palette_new/_variables.sass +++ b/src/styles/palette_new/_variables.sass @@ -7,6 +7,4 @@ html --clr-warning: 42, 74%, 57% --clr-white: 0, 0%, 98% - --brd-rad: 40px - - --max-line: 60ch \ No newline at end of file + --brd-rad: 40px \ No newline at end of file From add4abe2961397333d7f1a395bba9619103aaa6f Mon Sep 17 00:00:00 2001 From: Noxdor Date: Thu, 23 Dec 2021 18:21:39 +0100 Subject: [PATCH 12/98] started opal courses setting tile --- src/freshContent/settings/Settings.vue | 4 ++- .../settings/components/Toggle.vue | 9 +++++- .../settings/settingPages/Email.vue | 31 ++++++++++++++----- .../settings/settingPages/OpalCourses.vue | 23 ++++++++++++++ src/freshContent/settings/settings.json | 3 +- 5 files changed, 60 insertions(+), 10 deletions(-) create mode 100644 src/freshContent/settings/settingPages/OpalCourses.vue diff --git a/src/freshContent/settings/Settings.vue b/src/freshContent/settings/Settings.vue index e46b8c70..ee1da95c 100644 --- a/src/freshContent/settings/Settings.vue +++ b/src/freshContent/settings/Settings.vue @@ -56,6 +56,7 @@ import Toggle from './components/Toggle.vue' // Settings Page Components import AutoLogin from "./settingPages/AutoLogin.vue" import Email from "./settingPages/Email.vue" +import OpalCourses from "./settingPages/OpalCourses.vue" import ImproveOpal from './settingPages/ImproveOpal.vue' export default defineComponent({ @@ -67,9 +68,10 @@ export default defineComponent({ SettingTile, Card, Toggle, - ImproveOpal, AutoLogin, Email, + OpalCourses, + ImproveOpal, }, setup() { const body = document.getElementsByTagName("body")[0] diff --git a/src/freshContent/settings/components/Toggle.vue b/src/freshContent/settings/components/Toggle.vue index 4642e2b0..c6b9ebac 100644 --- a/src/freshContent/settings/components/Toggle.vue +++ b/src/freshContent/settings/components/Toggle.vue @@ -1,6 +1,6 @@ @@ -29,8 +29,15 @@ export default defineComponent({ height: 40px border-radius: 100% + &:hover + background-color: hsl(var(--clr-white), .8) + cursor: pointer + + &--toggled background-color: hsl(var(--clr-primary) ) + &:hover + background-color: hsl(var(--clr-primary), .8) &__icon width: 80% diff --git a/src/freshContent/settings/settingPages/Email.vue b/src/freshContent/settings/settingPages/Email.vue index 89f1ef05..1c6b79ec 100644 --- a/src/freshContent/settings/settingPages/Email.vue +++ b/src/freshContent/settings/settingPages/Email.vue @@ -1,23 +1,32 @@ + + \ No newline at end of file diff --git a/src/freshContent/settings/settings.json b/src/freshContent/settings/settings.json index b10dc8ae..b62de489 100644 --- a/src/freshContent/settings/settings.json +++ b/src/freshContent/settings/settings.json @@ -11,7 +11,8 @@ }, { "title": "Opalkurse im Dashboard", - "icon": "ph-list-dashes" + "icon": "ph-list-dashes", + "settingsPage": "OpalCourses" }, { "title": "Opal personaliseren und verbessern", From 3516b9b71f3833ae551d4b257d3f16c795912b45 Mon Sep 17 00:00:00 2001 From: Noxdor Date: Thu, 23 Dec 2021 22:57:32 +0100 Subject: [PATCH 13/98] completed visual design of setting tiles --- src/freshContent/settings/Settings.vue | 19 +++++--- src/freshContent/settings/components/Link.vue | 47 +++++++++++++++++++ .../settings/components/Setting.vue | 36 ++++++++++++++ .../settings/settingPages/Contact.vue | 42 +++++++++++++++++ .../settings/settingPages/Email.vue | 9 ++-- .../settings/settingPages/ImproveOpal.vue | 25 +++------- .../settings/settingPages/OpalCourses.vue | 30 ++++++++---- .../settings/settingPages/Rockets.vue | 17 +++++++ .../settings/settingPages/SearchEngines.vue | 36 ++++++++++++++ .../settings/settingPages/Shortcuts.vue | 39 +++++++++++++++ src/freshContent/settings/settings.json | 12 +++-- 11 files changed, 268 insertions(+), 44 deletions(-) create mode 100644 src/freshContent/settings/components/Link.vue create mode 100644 src/freshContent/settings/components/Setting.vue create mode 100644 src/freshContent/settings/settingPages/Contact.vue create mode 100644 src/freshContent/settings/settingPages/Rockets.vue create mode 100644 src/freshContent/settings/settingPages/SearchEngines.vue create mode 100644 src/freshContent/settings/settingPages/Shortcuts.vue diff --git a/src/freshContent/settings/Settings.vue b/src/freshContent/settings/Settings.vue index ee1da95c..be5da68c 100644 --- a/src/freshContent/settings/Settings.vue +++ b/src/freshContent/settings/Settings.vue @@ -40,13 +40,10 @@ import SettingTile from './components/SettingTile.vue' // Settings Data (Names and Icons) import settings from "./settings.json" -type setting = { title: string; - icon: string; - settingsPage: string; -} | { - title: string; - icon: string; - settingsPage?: undefined; +type setting = { + title: string, + icon: string, + settingsPage: string, } // Components @@ -58,6 +55,10 @@ import AutoLogin from "./settingPages/AutoLogin.vue" import Email from "./settingPages/Email.vue" import OpalCourses from "./settingPages/OpalCourses.vue" import ImproveOpal from './settingPages/ImproveOpal.vue' +import Shortcuts from './settingPages/Shortcuts.vue' +import SearchEngines from './settingPages/SearchEngines.vue' +import Rockets from './settingPages/Rockets.vue' +import Contact from './settingPages/Contact.vue' export default defineComponent({ components: { @@ -72,6 +73,10 @@ export default defineComponent({ Email, OpalCourses, ImproveOpal, + Shortcuts, + SearchEngines, + Rockets, + Contact, }, setup() { const body = document.getElementsByTagName("body")[0] diff --git a/src/freshContent/settings/components/Link.vue b/src/freshContent/settings/components/Link.vue new file mode 100644 index 00000000..99765270 --- /dev/null +++ b/src/freshContent/settings/components/Link.vue @@ -0,0 +1,47 @@ + + + + + + \ No newline at end of file diff --git a/src/freshContent/settings/components/Setting.vue b/src/freshContent/settings/components/Setting.vue new file mode 100644 index 00000000..015eaec2 --- /dev/null +++ b/src/freshContent/settings/components/Setting.vue @@ -0,0 +1,36 @@ + + + + + + \ No newline at end of file diff --git a/src/freshContent/settings/settingPages/Contact.vue b/src/freshContent/settings/settingPages/Contact.vue new file mode 100644 index 00000000..80d6f782 --- /dev/null +++ b/src/freshContent/settings/settingPages/Contact.vue @@ -0,0 +1,42 @@ + + + + + \ No newline at end of file diff --git a/src/freshContent/settings/settingPages/Email.vue b/src/freshContent/settings/settingPages/Email.vue index 1c6b79ec..1c112cc1 100644 --- a/src/freshContent/settings/settingPages/Email.vue +++ b/src/freshContent/settings/settingPages/Email.vue @@ -1,8 +1,5 @@ diff --git a/src/freshContent/settings/settingPages/Rockets.vue b/src/freshContent/settings/settingPages/Rockets.vue index 16cd16dc..7d7b25e9 100644 --- a/src/freshContent/settings/settingPages/Rockets.vue +++ b/src/freshContent/settings/settingPages/Rockets.vue @@ -1,11 +1,38 @@ \ No newline at end of file diff --git a/src/freshContent/settings/settingPages/SearchEngines.vue b/src/freshContent/settings/settingPages/SearchEngines.vue index efd4b47f..42595094 100644 --- a/src/freshContent/settings/settingPages/SearchEngines.vue +++ b/src/freshContent/settings/settingPages/SearchEngines.vue @@ -1,5 +1,8 @@ From ce03b014c40dbb3961b752ac351848bc0ddacde5 Mon Sep 17 00:00:00 2001 From: Noxdor Date: Fri, 24 Dec 2021 21:13:06 +0100 Subject: [PATCH 19/98] added selection menu for rockets --- .../settings/components/LanguageSelect.vue | 9 +- .../settings/components/RocketSelect.vue | 87 +++++++++++++++++++ src/freshContent/settings/rockets.json | 47 ++++++++++ .../settings/settingPages/Rockets.vue | 29 ++----- 4 files changed, 146 insertions(+), 26 deletions(-) create mode 100644 src/freshContent/settings/components/RocketSelect.vue create mode 100644 src/freshContent/settings/rockets.json diff --git a/src/freshContent/settings/components/LanguageSelect.vue b/src/freshContent/settings/components/LanguageSelect.vue index 6b7ef80b..496b866f 100644 --- a/src/freshContent/settings/components/LanguageSelect.vue +++ b/src/freshContent/settings/components/LanguageSelect.vue @@ -1,9 +1,6 @@ + + \ No newline at end of file From 16346d92459e8117adcb56c92afd722077d30dbf Mon Sep 17 00:00:00 2001 From: Noxdor Date: Sun, 26 Dec 2021 19:30:01 +0100 Subject: [PATCH 23/98] statistics bug fix try --- src/freshContent/settings/components/Lottie.vue | 2 -- src/freshContent/settings/components/Statistics.vue | 4 ++-- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/src/freshContent/settings/components/Lottie.vue b/src/freshContent/settings/components/Lottie.vue index f1ea394a..cef3e5b3 100644 --- a/src/freshContent/settings/components/Lottie.vue +++ b/src/freshContent/settings/components/Lottie.vue @@ -25,8 +25,6 @@ export default defineComponent({ const direction = ref(props.animState === "dark" ? -1 : 1) const animSeek = ref(props.animState === "dark" ? 99 : 0) - console.log(animSeek.value) - console.log(direction.value) onMounted(() => { setTimeout(() => { anim.value.seek(`${animSeek.value}%`) diff --git a/src/freshContent/settings/components/Statistics.vue b/src/freshContent/settings/components/Statistics.vue index cd1b24e7..fdd05dd2 100644 --- a/src/freshContent/settings/components/Statistics.vue +++ b/src/freshContent/settings/components/Statistics.vue @@ -26,12 +26,12 @@ export default defineComponent({ const getMinutes = (clicks : number) => { const clickValue = clicks * 3 - return Math.floor(clicks / 60) + return Math.floor(clicks / 60) ?? 0 } const getSeconds = (clicks : number) => { const clickValue = clicks * 3 - return clicks % 60 + return clicks % 60 ?? 0 } return { From 734700202336be7e09f5478e9f6d1bcc901012a4 Mon Sep 17 00:00:00 2001 From: Noxdor Date: Sun, 26 Dec 2021 19:30:01 +0100 Subject: [PATCH 24/98] statistics bug fix try --- src/freshContent/settings/components/Statistics.vue | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/freshContent/settings/components/Statistics.vue b/src/freshContent/settings/components/Statistics.vue index fdd05dd2..9030beb4 100644 --- a/src/freshContent/settings/components/Statistics.vue +++ b/src/freshContent/settings/components/Statistics.vue @@ -16,13 +16,13 @@ + + diff --git a/src/freshContent/settings/components/Stepper.vue b/src/freshContent/settings/components/Stepper.vue new file mode 100644 index 00000000..258db0e2 --- /dev/null +++ b/src/freshContent/settings/components/Stepper.vue @@ -0,0 +1,42 @@ + + + + + From 1d66dd16079614e5b0e2b816a8c2603a9ae89e20 Mon Sep 17 00:00:00 2001 From: Noxdor Date: Thu, 27 Jan 2022 09:52:19 +0100 Subject: [PATCH 33/98] =?UTF-8?q?rocket=20has=20launched=20for=20onboardin?= =?UTF-8?q?g=20=F0=9F=9A=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/freshContent/settings/Settings.vue | 14 ++- .../settings/components/Onboarding.vue | 96 ++++++++++++++++--- .../settings/components/OnboardingButton.vue | 72 ++++++++++++++ .../settings/components/Stepper.vue | 10 +- .../settings/onboardingPages/Studies.vue | 35 +++++++ .../settings/onboardingPages/Welcome.vue | 39 ++++++++ src/styles/palette_new/_typo.sass | 2 +- 7 files changed, 242 insertions(+), 26 deletions(-) create mode 100644 src/freshContent/settings/components/OnboardingButton.vue create mode 100644 src/freshContent/settings/onboardingPages/Studies.vue create mode 100644 src/freshContent/settings/onboardingPages/Welcome.vue diff --git a/src/freshContent/settings/Settings.vue b/src/freshContent/settings/Settings.vue index 27e5a9c5..b5578fa9 100644 --- a/src/freshContent/settings/Settings.vue +++ b/src/freshContent/settings/Settings.vue @@ -25,8 +25,8 @@ - - + + @@ -64,6 +64,9 @@ import SearchEngines from './settingPages/SearchEngines.vue' import Rockets from './settingPages/Rockets.vue' import Contact from './settingPages/Contact.vue' +// Onboarding Pages +import Welcome from "./onboardingPages/Welcome.vue" + export default defineComponent({ components: { ColorSwitch, @@ -81,10 +84,12 @@ export default defineComponent({ SearchEngines, Rockets, Contact, - Onboarding + Onboarding, + Welcome, }, setup() { const showCard = ref(false) + const showWelcome = ref(true) const currentSetting = ref(settings[0]) const animState = ref<"dark" | "light">("dark") @@ -112,8 +117,9 @@ export default defineComponent({ } return { - settings, showCard, + showWelcome, + settings, currentSetting, openSetting, toggleTheme, diff --git a/src/freshContent/settings/components/Onboarding.vue b/src/freshContent/settings/components/Onboarding.vue index 7dfc5ba4..2be7f7aa 100644 --- a/src/freshContent/settings/components/Onboarding.vue +++ b/src/freshContent/settings/components/Onboarding.vue @@ -1,26 +1,49 @@ + + diff --git a/src/freshContent/settings/components/Stepper.vue b/src/freshContent/settings/components/Stepper.vue index 258db0e2..e7e84e6d 100644 --- a/src/freshContent/settings/components/Stepper.vue +++ b/src/freshContent/settings/components/Stepper.vue @@ -14,11 +14,9 @@ import { PropType, ref, defineComponent } from 'vue' export default defineComponent({ props: { steps: Number as PropType, + currentStep: Number as PropType, }, setup() { - const currentStep = ref(1) - - return { currentStep } } }) @@ -26,12 +24,12 @@ export default defineComponent({ diff --git a/src/freshContent/settings/onboardingPages/Welcome.vue b/src/freshContent/settings/onboardingPages/Welcome.vue new file mode 100644 index 00000000..948a6d67 --- /dev/null +++ b/src/freshContent/settings/onboardingPages/Welcome.vue @@ -0,0 +1,39 @@ + + + + + diff --git a/src/styles/palette_new/_typo.sass b/src/styles/palette_new/_typo.sass index b3ec2ef9..a12c3ed3 100644 --- a/src/styles/palette_new/_typo.sass +++ b/src/styles/palette_new/_typo.sass @@ -22,7 +22,7 @@ p text-transform: uppercase .max-line - width: var(--max-line) + max-width: var(--max-line) .p-margin margin: 1rem 0 \ No newline at end of file From bbd266e6e2b481987be91cade39640591490e4da Mon Sep 17 00:00:00 2001 From: Noxdor Date: Thu, 27 Jan 2022 13:12:41 +0100 Subject: [PATCH 34/98] optimized padding and added more fun for the main button --- .../settings/components/Onboarding.vue | 16 ++++++++++++++-- .../settings/components/OnboardingButton.vue | 10 ++++++++-- src/freshContent/settings/components/Stepper.vue | 1 + 3 files changed, 23 insertions(+), 4 deletions(-) diff --git a/src/freshContent/settings/components/Onboarding.vue b/src/freshContent/settings/components/Onboarding.vue index 2be7f7aa..ce4a978a 100644 --- a/src/freshContent/settings/components/Onboarding.vue +++ b/src/freshContent/settings/components/Onboarding.vue @@ -1,6 +1,6 @@ + + diff --git a/src/freshContent/settings/onboardingPages/EMailSetup.vue b/src/freshContent/settings/onboardingPages/EMailSetup.vue new file mode 100644 index 00000000..c945f0dd --- /dev/null +++ b/src/freshContent/settings/onboardingPages/EMailSetup.vue @@ -0,0 +1,33 @@ + + + + + \ No newline at end of file diff --git a/src/freshContent/settings/onboardingPages/LoginAccept.vue b/src/freshContent/settings/onboardingPages/LoginAccept.vue new file mode 100644 index 00000000..939f30b8 --- /dev/null +++ b/src/freshContent/settings/onboardingPages/LoginAccept.vue @@ -0,0 +1,65 @@ + + + + + \ No newline at end of file diff --git a/src/freshContent/settings/onboardingPages/LoginSetup.vue b/src/freshContent/settings/onboardingPages/LoginSetup.vue new file mode 100644 index 00000000..0694f48e --- /dev/null +++ b/src/freshContent/settings/onboardingPages/LoginSetup.vue @@ -0,0 +1,37 @@ + + + + + \ No newline at end of file diff --git a/src/freshContent/settings/onboardingPages/OpalSetup.vue b/src/freshContent/settings/onboardingPages/OpalSetup.vue new file mode 100644 index 00000000..9523b0a3 --- /dev/null +++ b/src/freshContent/settings/onboardingPages/OpalSetup.vue @@ -0,0 +1,34 @@ + + + + + \ No newline at end of file diff --git a/src/freshContent/settings/onboardingPages/SearchSetup.vue b/src/freshContent/settings/onboardingPages/SearchSetup.vue new file mode 100644 index 00000000..1bc2f6f3 --- /dev/null +++ b/src/freshContent/settings/onboardingPages/SearchSetup.vue @@ -0,0 +1,42 @@ + + + + + \ No newline at end of file diff --git a/src/freshContent/settings/onboardingPages/Studies.vue b/src/freshContent/settings/onboardingPages/Studies.vue deleted file mode 100644 index 8c8ea3b2..00000000 --- a/src/freshContent/settings/onboardingPages/Studies.vue +++ /dev/null @@ -1,35 +0,0 @@ - - - - - diff --git a/src/freshContent/settings/onboardingPages/Welcome.vue b/src/freshContent/settings/onboardingPages/Welcome.vue index 948a6d67..1b9fa4fc 100644 --- a/src/freshContent/settings/onboardingPages/Welcome.vue +++ b/src/freshContent/settings/onboardingPages/Welcome.vue @@ -1,19 +1,9 @@ - - From 3817280c51e2dadadac962d64f1685c675e0e4a6 Mon Sep 17 00:00:00 2001 From: Noxdor Date: Fri, 28 Jan 2022 18:43:47 +0100 Subject: [PATCH 36/98] finished design of onboarding process --- src/freshContent/settings/Settings.vue | 2 +- src/freshContent/settings/components/Input.vue | 13 ++++++++++--- src/freshContent/settings/components/Onboarding.vue | 13 +++++++++++-- .../settings/components/OnboardingButton.vue | 13 +++++++++++++ src/freshContent/settings/components/Setting.vue | 4 +++- src/freshContent/settings/components/Stepper.vue | 7 +++++++ src/freshContent/settings/components/Toggle.vue | 2 +- .../settings/settingPages/AutoLogin.vue | 1 - 8 files changed, 46 insertions(+), 9 deletions(-) diff --git a/src/freshContent/settings/Settings.vue b/src/freshContent/settings/Settings.vue index c02dca23..75afae38 100644 --- a/src/freshContent/settings/Settings.vue +++ b/src/freshContent/settings/Settings.vue @@ -134,7 +134,7 @@ export default defineComponent({ chrome.storage.local.remove("theme") } - html.classList.add("light") + // html.classList.add("light") return { showWelcome, diff --git a/src/freshContent/settings/components/Input.vue b/src/freshContent/settings/components/Input.vue index 45fc6fa6..ee08c61d 100644 --- a/src/freshContent/settings/components/Input.vue +++ b/src/freshContent/settings/components/Input.vue @@ -89,14 +89,21 @@ export default defineComponent({ &--column flex-direction: column -// .error-message -// margin-left: .8rem +html:not(.light) .input-container--column + & .input + background-color: hsl(var(--clr-white)) + border: 1px solid hsl(var(--clr-black), .4) + &__input + color: hsl(var(--clr-black) ) + &::placeholder + color: hsl(var(--clr-black), .5) + .input display: flex justify-content: space-between align-items: center - width: min-content + width: 300px height: 60px border-radius: 12px background-color: hsl(var(--clr-grey) ) diff --git a/src/freshContent/settings/components/Onboarding.vue b/src/freshContent/settings/components/Onboarding.vue index 1ca3d1ad..88c79386 100644 --- a/src/freshContent/settings/components/Onboarding.vue +++ b/src/freshContent/settings/components/Onboarding.vue @@ -12,7 +12,7 @@
- +
@@ -88,7 +88,7 @@ export default defineComponent({ width: 50vw height: 70vh min-height: 70vh - background-color: hsl(var(--clr-black), ) + background-color: hsl(var(--clr-grey), ) border-radius: var(--brd-rad) padding-bottom: .5rem @@ -134,6 +134,10 @@ export default defineComponent({ &__main-btn color: hsl(var(--clr-white), ) + transition: transform 300ms ease + + &--turned + transform: rotate(90deg) &--closing animation: enter 500ms ease @@ -146,6 +150,11 @@ export default defineComponent({ animation-delay: 300ms animation-fill-mode: backwards +.light + & .onboarding + &__main, &__footer, &__close:not(:hover) + color: hsl(var(--clr-black), ) + @keyframes enter 0% opacity: .2 diff --git a/src/freshContent/settings/components/OnboardingButton.vue b/src/freshContent/settings/components/OnboardingButton.vue index 96f0ec39..8b218b12 100644 --- a/src/freshContent/settings/components/OnboardingButton.vue +++ b/src/freshContent/settings/components/OnboardingButton.vue @@ -75,4 +75,17 @@ export default defineComponent({ height: 80% z-index: 2 color: hsl(var(--clr-black), ) + +.light + & .onboarding-btn + box-shadow: 0 0 3rem 4px hsl(var(--clr-black), .4) + + &:hover + box-shadow: 0 0 3rem 4px hsl(var(--clr-primary), .4) + + &__inner + background-color: hsl(var(--clr-black), ) + + &__arrow + color: hsl(var(--clr-white), ) diff --git a/src/freshContent/settings/components/Setting.vue b/src/freshContent/settings/components/Setting.vue index 044c7955..fcc77f29 100644 --- a/src/freshContent/settings/components/Setting.vue +++ b/src/freshContent/settings/components/Setting.vue @@ -39,7 +39,6 @@ export default defineComponent({ }, setup(props, { emit }) { const toggleState = ref(false) - const setting = ref watch(props, () => toggleState.value = props.modelValue) @@ -73,4 +72,7 @@ export default defineComponent({ &--column &__toggle width: 80px height: 80px +.light + & .setting__toggle + background-color: hsl(var(--clr-black), ) \ No newline at end of file diff --git a/src/freshContent/settings/components/Stepper.vue b/src/freshContent/settings/components/Stepper.vue index 9ff5c2fd..ad02dadc 100644 --- a/src/freshContent/settings/components/Stepper.vue +++ b/src/freshContent/settings/components/Stepper.vue @@ -38,4 +38,11 @@ export default defineComponent({ &--current flex: 2 0 auto background-color: hsl(var(--clr-white), .8) + +.light + & .stepper__step + background-color: hsl(var(--clr-black), .4) + + &--current + background-color: hsl(var(--clr-black), .8) diff --git a/src/freshContent/settings/components/Toggle.vue b/src/freshContent/settings/components/Toggle.vue index 7c5a24e3..dc512328 100644 --- a/src/freshContent/settings/components/Toggle.vue +++ b/src/freshContent/settings/components/Toggle.vue @@ -67,7 +67,7 @@ export default defineComponent({ transform: scale(1000%) &--toggled - background-color: hsl(var(--clr-primary) ) + background-color: hsl(var(--clr-primary) ) !important &:hover background-color: hsl(var(--clr-primary), .8) diff --git a/src/freshContent/settings/settingPages/AutoLogin.vue b/src/freshContent/settings/settingPages/AutoLogin.vue index 386938e3..58342dfe 100644 --- a/src/freshContent/settings/settingPages/AutoLogin.vue +++ b/src/freshContent/settings/settingPages/AutoLogin.vue @@ -97,7 +97,6 @@ export default defineComponent({ width: 300px display: flex flex-direction: column - align-items: stretch justify-content: space-between gap: 1rem margin-left: 1rem From dce1a2675164c65c92ab6b69aba0f551a4ee2424 Mon Sep 17 00:00:00 2001 From: Noxdor Date: Sat, 29 Jan 2022 12:35:37 +0100 Subject: [PATCH 37/98] fixed small color issue --- src/freshContent/settings/Settings.vue | 59 +++++++++---------- .../settings/components/Onboarding.vue | 1 - .../settings/components/Setting.vue | 8 ++- .../settings/onboardingPages/SearchSetup.vue | 18 +++++- .../settings/settingPages/ImproveOpal.vue | 7 +++ .../settings/settingPages/SearchEngines.vue | 3 +- 6 files changed, 57 insertions(+), 39 deletions(-) diff --git a/src/freshContent/settings/Settings.vue b/src/freshContent/settings/Settings.vue index 75afae38..6688b7f8 100644 --- a/src/freshContent/settings/Settings.vue +++ b/src/freshContent/settings/Settings.vue @@ -44,6 +44,8 @@ import Statistics from "./components/Statistics.vue" import Dropdown from './components/Dropdown.vue' import SettingTile from './components/SettingTile.vue' import Onboarding from "./components/Onboarding.vue" +import Card from './components/Card.vue' +import Toggle from './components/Toggle.vue' // Settings Data (Names and Icons) import settings from "./settings.json" @@ -54,10 +56,6 @@ type setting = { settingsPage: string, } -// Components -import Card from './components/Card.vue' -import Toggle from './components/Toggle.vue' - // Settings Page Components import AutoLogin from "./settingPages/AutoLogin.vue" import Email from "./settingPages/Email.vue" @@ -68,7 +66,7 @@ import SearchEngines from './settingPages/SearchEngines.vue' import Rockets from './settingPages/Rockets.vue' import Contact from './settingPages/Contact.vue' -// Onboarding Pages +// Onboarding Page Components import onboardingSteps from "./onboarding.json" import Welcome from "./onboardingPages/Welcome.vue" import SearchSetup from "./onboardingPages/SearchSetup.vue" @@ -80,30 +78,30 @@ import DoneSetup from './onboardingPages/DoneSetup.vue' export default defineComponent({ components: { - ColorSwitch, - LanguageSelect, - Statistics, - Dropdown, - SettingTile, - Card, - Toggle, - AutoLogin, - Email, - OpalCourses, - ImproveOpal, - Shortcuts, - SearchEngines, - Rockets, - Contact, - Onboarding, - Welcome, - SearchSetup, - LoginSetup, - LoginAccept, - EMailSetup, - OpalSetup, - DoneSetup, -}, + ColorSwitch, + LanguageSelect, + Statistics, + Dropdown, + SettingTile, + Card, + Toggle, + AutoLogin, + Email, + OpalCourses, + ImproveOpal, + Shortcuts, + SearchEngines, + Rockets, + Contact, + Onboarding, + Welcome, + SearchSetup, + LoginSetup, + LoginAccept, + EMailSetup, + OpalSetup, + DoneSetup, + }, setup() { const showWelcome = ref(true) const onboardingStep = ref(0) @@ -134,8 +132,6 @@ export default defineComponent({ chrome.storage.local.remove("theme") } - // html.classList.add("light") - return { showWelcome, onboardingSteps, @@ -189,5 +185,4 @@ export default defineComponent({ .light & .main-grid__header, & .main-grid__menues, & .main-grid__color-select color: hsl(var(--clr-black) ) - diff --git a/src/freshContent/settings/components/Onboarding.vue b/src/freshContent/settings/components/Onboarding.vue index 88c79386..8fe7ec95 100644 --- a/src/freshContent/settings/components/Onboarding.vue +++ b/src/freshContent/settings/components/Onboarding.vue @@ -164,5 +164,4 @@ export default defineComponent({ transform: scale(1.1) 100% transform: scale(1) - diff --git a/src/freshContent/settings/components/Setting.vue b/src/freshContent/settings/components/Setting.vue index fcc77f29..35ed4689 100644 --- a/src/freshContent/settings/components/Setting.vue +++ b/src/freshContent/settings/components/Setting.vue @@ -35,6 +35,10 @@ export default defineComponent({ column: { type: Boolean as PropType, default: false, + }, + default: { + type: Boolean as PropType, + default: false, } }, setup(props, { emit }) { @@ -73,6 +77,6 @@ export default defineComponent({ width: 80px height: 80px .light - & .setting__toggle + & .setting--column .setting__toggle background-color: hsl(var(--clr-black), ) - \ No newline at end of file + diff --git a/src/freshContent/settings/onboardingPages/SearchSetup.vue b/src/freshContent/settings/onboardingPages/SearchSetup.vue index 1bc2f6f3..8a8b9213 100644 --- a/src/freshContent/settings/onboardingPages/SearchSetup.vue +++ b/src/freshContent/settings/onboardingPages/SearchSetup.vue @@ -11,12 +11,17 @@ magma → Magma TU Dresden
tumed → eportal.med.tu-dresden

- + + + \ No newline at end of file diff --git a/src/freshContent/settings/settingPages/SearchEngines.vue b/src/freshContent/settings/settingPages/SearchEngines.vue index fb00163a..37cd1082 100644 --- a/src/freshContent/settings/settingPages/SearchEngines.vue +++ b/src/freshContent/settings/settingPages/SearchEngines.vue @@ -2,7 +2,8 @@ + txt="Suchmaschinen Superpower aktivieren" + />

Gib z.B. "tumail" in der Google-Suche ein, um direkt zur Outlook-Web-App zu kommen. Es werden die meisten Suchmaschinen unterstützt!

tumail → Outlook Web App
From 0866bea6161fb7d400aff2533b769095b2e33612 Mon Sep 17 00:00:00 2001 From: Noxdor Date: Sat, 5 Feb 2022 17:23:37 +0100 Subject: [PATCH 38/98] onboarding doesnt open anymore once close is clicked or onboarding ended --- src/freshContent/settings/Settings.vue | 20 ++++++++++++++----- .../settings/components/Setting.vue | 6 +----- 2 files changed, 16 insertions(+), 10 deletions(-) diff --git a/src/freshContent/settings/Settings.vue b/src/freshContent/settings/Settings.vue index 6688b7f8..7b1b3b99 100644 --- a/src/freshContent/settings/Settings.vue +++ b/src/freshContent/settings/Settings.vue @@ -25,8 +25,8 @@ - - + + @@ -35,7 +35,7 @@ @@ -89,6 +107,13 @@ export default defineComponent({ transform: translateX(20px) opacity: .4 + &--selected + background-color: hsl(var(--clr-primary) ) + + &:hover + background-color: hsl(var(--clr-primary)) + filter: brightness(.8) + &__image max-height: 100% diff --git a/src/freshContent/settings/components/RocketSelect.vue b/src/freshContent/settings/components/RocketSelect.vue index 30435099..ab884b30 100644 --- a/src/freshContent/settings/components/RocketSelect.vue +++ b/src/freshContent/settings/components/RocketSelect.vue @@ -75,7 +75,8 @@ export default defineComponent({ transform: translateY(var(--pos)) &__rockets - padding-left: .9rem + padding-left: .8rem + padding-top: .2rem user-select: none display: flex flex-direction: column @@ -85,6 +86,7 @@ export default defineComponent({ display: flex align-items: center height: 4rem + padding-right: .2rem &__image margin-right: .8rem diff --git a/src/freshContent/studies.json b/src/freshContent/studies.json index 69c05eac..05206d55 100644 --- a/src/freshContent/studies.json +++ b/src/freshContent/studies.json @@ -50,4 +50,4 @@ { "name": "+ Studiengang hinzufügen..." } -] \ No newline at end of file +] From f1b9d3e2602e402018b669020f2e7a01b05ddacb Mon Sep 17 00:00:00 2001 From: Daniel Kluge Date: Tue, 2 Aug 2022 14:10:15 +0200 Subject: [PATCH 49/98] Rename save_click_counter to savedClickCounter --- src/freshContent/settings/components/Statistics.vue | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/freshContent/settings/components/Statistics.vue b/src/freshContent/settings/components/Statistics.vue index 4589d9dd..76187e7a 100644 --- a/src/freshContent/settings/components/Statistics.vue +++ b/src/freshContent/settings/components/Statistics.vue @@ -21,7 +21,7 @@ import { time } from '../utilities' export default defineComponent({ setup() { const counter = ref(0) - chrome.storage.local.get(["saved_click_counter"], (clicks) => counter.value = clicks.saved_click_counter ?? 0) + chrome.storage.local.get(["savedClickCounter"], (clicks) => counter.value = clicks.savedClickCounter ?? 0) return { counter, From ef65cb2fe161310ee5f61114c79446a82852e9de Mon Sep 17 00:00:00 2001 From: Daniel Kluge Date: Tue, 2 Aug 2022 14:18:00 +0200 Subject: [PATCH 50/98] Fix rocket icon setting We need a migration for this -> #102 --- src/background.ts | 3 ++- src/freshContent/settings/components/RocketSelect.vue | 11 ++++++----- 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/src/background.ts b/src/background.ts index b25a212f..2bdb71f3 100644 --- a/src/background.ts +++ b/src/background.ts @@ -148,8 +148,9 @@ chrome.commands.onCommand.addListener(async (command) => { chrome.storage.local.get(['selectedRocketIcon'], (resp) => { try { const r = JSON.parse(resp.selectedRocketIcon) + if(!r.iconPathUnlocked) console.warn('Rocket icon has no attribute "iconPathUnlocked", fallback to default icon.') chrome.browserAction.setIcon({ - path: r.link + path: r.iconPathUnlocked || 'assets/icons/RocketIcons/default_128px.png' }) } catch (e) { console.log(`Cannot parse rocket icon: ${resp}`) diff --git a/src/freshContent/settings/components/RocketSelect.vue b/src/freshContent/settings/components/RocketSelect.vue index ab884b30..761c31c4 100644 --- a/src/freshContent/settings/components/RocketSelect.vue +++ b/src/freshContent/settings/components/RocketSelect.vue @@ -7,7 +7,7 @@ />

- + @@ -33,12 +33,13 @@ export default defineComponent({ const isFirefox = navigator.userAgent.includes('Firefox/') // attention: no failsave browser detection - const select = (index : number, iconPath : string) => { + const select = (index : number) => { pos.value = 100 * index - chrome.storage.local.set({ selectedRocketIcon: `{ "id": 1, link: "${iconPath}" }` }, () => {}) - chrome.storage.local.set({ selectedRocketId : index }, () => {}) - chrome.browserAction.setIcon({ path: iconPath }) + const rocket = rockets[index] + chrome.storage.local.set({ selectedRocketIcon: JSON.stringify(rocket) }) + //chrome.storage.local.set({ selectedRocketId : index }, () => {}) + chrome.browserAction.setIcon({ path: rocket.iconPathUnlocked }) } onMounted(() => chrome.storage.local.get("selectedRocketId", (res) => { pos.value = 100 * res.selectedRocketId })) From 6a63c601eb12b18b008bec2695b01c9a91555d01 Mon Sep 17 00:00:00 2001 From: Daniel Kluge Date: Tue, 2 Aug 2022 14:39:58 +0200 Subject: [PATCH 51/98] Studiengangselektor --- .../settings/components/Dropdown.vue | 9 +- src/freshContent/studies.json | 148 +++++++++++------- 2 files changed, 100 insertions(+), 57 deletions(-) diff --git a/src/freshContent/settings/components/Dropdown.vue b/src/freshContent/settings/components/Dropdown.vue index 21b41508..892763f6 100644 --- a/src/freshContent/settings/components/Dropdown.vue +++ b/src/freshContent/settings/components/Dropdown.vue @@ -10,11 +10,12 @@
+ @@ -44,7 +45,7 @@ export default defineComponent({ chrome.storage.local.get("studiengang", (res) => selectedStudy.value = res.studiengang) const setStudySubject = (studiengang: string) => { - if (studiengang === "+ Studiengang hinzufügen...") { + if (studiengang === "addStudiengang") { window.location.href = "mailto:frage@tu-fast.de?Subject=Vorschlag Studiengang" return } diff --git a/src/freshContent/studies.json b/src/freshContent/studies.json index 05206d55..8e67952c 100644 --- a/src/freshContent/studies.json +++ b/src/freshContent/studies.json @@ -1,53 +1,95 @@ -[ - { - "name": "Geowissenschaften", - "fsr_icon": "../../assets/icons/FSRIcons/fsr_geo.png", - "fsr_link": "https://tu-dresden.de/bu/umwelt/geo/fsr", - "fsr_icon_2": "../../assets/icons/OPAL.png", - "fsr_link_2": "https://bildungsportal.sachsen.de/opal/auth/RepositoryEntry/15833497605", - "footer_icons_display": ["selma", "opal", "qis", "matrix", "msx", "cloud", "swdd", "geoportal"] - }, - { - "name": "Maschinenwesen", - "fsr_icon": "../../assets/icons/FSRIcons/fsr_mw.png", - "fsr_link": "https://tu-dresden.de/ing/maschinenwesen/fsr", - "footer_icons_display": ["selma", "opal", "qis", "matrix", "msx", "cloud", "swdd"] - }, - { - "name": "Mathematik", - "fsr_icon": "../../assets/icons/FSRIcons/fsr_mathe.png", - "fsr_link": "https://myfsr.de/dokuwiki/doku.php?id=start", - "footer_icons_display": ["selma", "opal", "matrix", "msx", "cloud", "gitlab", "je", "swdd"] - }, - { - "name": "Medizin", - "fsr_icon": "../../assets/icons/FSRIcons/fsr_medi_small.png", - "fsr_link": "https://www.medforum-dresden.de/", - "footer_icons_display": ["selma", "opal", "moodle", "eportal", "msx", "cloud", "swdd"] - }, - { - "name": "Psychologie", - "fsr_icon": "../../assets/icons/FSRIcons/fsr_psy.png", - "fsr_link": "https://tu-dresden.de/mn/psychologie/fsrpsy", - "footer_icons_display": ["selma", "opal", "qis", "matrix", "msx", "cloud", "swdd", "orsee"] - }, - { - "name": "Wirtschaftswissenschaften", - "fsr_icon": "../../assets/icons/FSRIcons/fsr_wiwi.png", - "fsr_link": "https://fsrwiwi.de", - "footer_icons_display": ["selma", "opal", "qis", "matrix", "msx", "cloud", "swdd"] - }, - { - "name": "Elektrotechnik", - "fsr_icon": "../../assets/icons/FSRIcons/FSR_ET.png", - "fsr_link": "https://fsret.de", - "footer_icons_display": ["selma", "opal", "qis", "matrix", "msx", "cloud", "swdd"] - }, - { - "name": "Standardeinstellungen", - "footer_icons_display": ["selma", "opal", "qis", "matrix", "msx", "cloud", "je", "swdd"] - }, - { - "name": "+ Studiengang hinzufügen..." - } -] +{ + "geowissenschaften": { + "name": "Geowissenschaften", + "fsr_icon": "../../assets/icons/FSRIcons/fsr_geo.png", + "fsr_link": "https://tu-dresden.de/bu/umwelt/geo/fsr", + "fsr_icon_2": "../../assets/icons/OPAL.png", + "fsr_link_2": "https://bildungsportal.sachsen.de/opal/auth/RepositoryEntry/15833497605", + "fsr_icon_dashboard_style": "", + "fsr_icon_dashboard_style_2": "max-height: 20px; margin-top: 10px; padding-right:10px", + "footer_icons_display": ["selma", "opal", "qis", "matrix", "msx", "cloud", "swdd", "geoportal"], + "footer_icons_links": { + "swdd": "https://www.studentenwerk-dresden.de/mensen/speiseplan/mensa-siedepunkt.html" + }, + "invert_icon_dark_theme": false + }, + "maschinenbau": { + "name": "Maschinenwesen", + "fsr_icon": "../../assets/icons/FSRIcons/fsr_mw.png", + "fsr_icon_dashboard_style": "max-height: 32px;", + "fsr_link": "https://tu-dresden.de/ing/maschinenwesen/fsr", + "footer_icons_display": ["selma", "opal", "qis", "matrix", "msx", "cloud", "swdd"], + "footer_icons_links": { + "swdd": "https://www.studentenwerk-dresden.de/mensen/speiseplan/" + }, + "invert_icon_dark_theme": false + }, + "mathematik": { + "name": "Mathematik", + "fsr_icon": "../../assets/icons/FSRIcons/fsr_mathe.png", + "fsr_icon_dashboard_style": "max-height: 32px;", + "fsr_link": "https://myfsr.de/dokuwiki/doku.php?id=start", + "footer_icons_display": ["selma", "opal", "matrix", "msx", "cloud", "gitlab", "je", "swdd"], + "footer_icons_links": { + "swdd": "https://www.studentenwerk-dresden.de/mensen/speiseplan/" + }, + "invert_icon_dark_theme": false + }, + "medizin": { + "name": "Medizin", + "fsr_icon": "../../assets/icons/FSRIcons/fsr_medi_small.png", + "fsr_link": "https://www.medforum-dresden.de/", + "fsr_icon_dashboard_style": "", + "footer_icons_display": ["selma", "opal", "moodle", "eportal", "msx", "cloud", "swdd"], + "footer_icons_links": { + "swdd": "https://www.studentenwerk-dresden.de/mensen/speiseplan/mensologie.html" + }, + "invert_icon_dark_theme": false + }, + "psychologie": { + "name": "Psychologie", + "fsr_icon": "../../assets/icons/FSRIcons/fsr_psy.png", + "fsr_link": "https://tu-dresden.de/mn/psychologie/fsrpsy", + "fsr_icon_dashboard_style": "", + "footer_icons_display": ["selma", "opal", "qis", "matrix", "msx", "cloud", "swdd", "orsee"], + "footer_icons_links": { + "swdd": "https://www.studentenwerk-dresden.de/mensen/speiseplan/mensa-siedepunkt.html" + }, + "invert_icon_dark_theme": false + }, + "wirtschaftswissenschaften": { + "name": "Wirtschaftswissenschaften", + "fsr_icon": "../../assets/icons/FSRIcons/fsr_wiwi.png", + "fsr_icon_dashboard_style": "max-height: 32px;", + "fsr_link": "https://fsrwiwi.de", + "footer_icons_display": ["selma", "opal", "qis", "matrix", "msx", "cloud", "swdd"], + "footer_icons_links": { + "swdd": "https://www.studentenwerk-dresden.de/mensen/speiseplan/" + }, + "invert_icon_dark_theme": false + }, + "elektrotechnik": { + "name": "Elektrotechnik", + "fsr_icon": "../../assets/icons/FSRIcons/FSR_ET.png", + "fsr_icon_dashboard_style": "max-height: 32px;", + "fsr_link": "https://fsret.de", + "footer_icons_display": ["selma", "opal", "qis", "matrix", "msx", "cloud", "swdd"], + "footer_icons_links": { + "swdd": "https://www.studentenwerk-dresden.de/mensen/speiseplan/" + }, + "invert_icon_dark_theme": true + }, + "general": { + "name": "Standardeinstellungen", + "fsr_icon": "", + "fsr_link": "", + "footer_icons_display": ["selma", "opal", "qis", "matrix", "msx", "cloud", "je", "swdd"], + "footer_icons_links": { + "swdd": "https://www.studentenwerk-dresden.de/mensen/speiseplan/" + }, + "invert_icon_dark_theme": false + }, + "addStudiengang": { + "name": "+ Studiengang hinzufügen..." + } +} \ No newline at end of file From a64777c5020ee03911f5c13297fc0a7ed09c0c9d Mon Sep 17 00:00:00 2001 From: Daniel Kluge Date: Tue, 2 Aug 2022 14:45:57 +0200 Subject: [PATCH 52/98] studies.json in popup --- src/freshContent/popup/popup.html | 2 +- src/freshContent/popup/popup.js | 108 ++---------------------------- 2 files changed, 6 insertions(+), 104 deletions(-) diff --git a/src/freshContent/popup/popup.html b/src/freshContent/popup/popup.html index b875839e..0fbc2f90 100644 --- a/src/freshContent/popup/popup.html +++ b/src/freshContent/popup/popup.html @@ -4,7 +4,7 @@ - + diff --git a/src/freshContent/popup/popup.js b/src/freshContent/popup/popup.js index c3808182..302eca17 100644 --- a/src/freshContent/popup/popup.js +++ b/src/freshContent/popup/popup.js @@ -1,107 +1,9 @@ +import studiengangConfig from "../studies.json" + const shareHTML = '
Hilf deinen Mitstudierenden
TUfast  zu entdecken

Gemacht mit 🖤 von Studenten | GitHub | Kontakt

' const bananaHTML = ' ' -// this config is used to customize TUfast for a course of study -// it overrides the default setting from popup.html -// if you want to add an footer icon for your course of study, you need to add it to popup.html and set footer_icons_display property in this config -const studiengangConfig = { - geowissenschaften: { - name: 'Geowissenschaften', - fsr_icon: '../../assets/icons/FSRIcons/fsr_geo.png', - fsr_link: 'https://tu-dresden.de/bu/umwelt/geo/fsr', - fsr_icon_2: '../../assets/icons/OPAL.png', - fsr_link_2: 'https://bildungsportal.sachsen.de/opal/auth/RepositoryEntry/15833497605', - fsr_icon_dashboard_style: '', - fsr_icon_dashboard_style_2: 'max-height: 20px; margin-top: 10px; padding-right:10px', - footer_icons_display: ['selma', 'opal', 'qis', 'matrix', 'msx', 'cloud', 'swdd', 'geoportal'], - footer_icons_links: { - swdd: 'https://www.studentenwerk-dresden.de/mensen/speiseplan/mensa-siedepunkt.html' - }, - invert_icon_dark_theme: false - }, - maschinenbau: { - name: 'Maschinenwesen', - fsr_icon: '../../assets/icons/FSRIcons/fsr_mw.png', - fsr_icon_dashboard_style: 'max-height: 32px;', - fsr_link: 'https://tu-dresden.de/ing/maschinenwesen/fsr', - footer_icons_display: ['selma', 'opal', 'qis', 'matrix', 'msx', 'cloud', 'swdd'], - footer_icons_links: { - swdd: 'https://www.studentenwerk-dresden.de/mensen/speiseplan/' - }, - invert_icon_dark_theme: false - }, - mathematik: { - name: 'Mathematik', - fsr_icon: '../../assets/icons/FSRIcons/fsr_mathe.png', - fsr_icon_dashboard_style: 'max-height: 32px;', - fsr_link: 'https://myfsr.de/dokuwiki/doku.php?id=start', - footer_icons_display: ['selma', 'opal', 'matrix', 'msx', 'cloud', 'gitlab', 'je', 'swdd'], - footer_icons_links: { - swdd: 'https://www.studentenwerk-dresden.de/mensen/speiseplan/' - }, - invert_icon_dark_theme: false - }, - medizin: { - name: 'Medizin', - fsr_icon: '../../assets/icons/FSRIcons/fsr_medi_small.png', - fsr_link: 'https://www.medforum-dresden.de/', - fsr_icon_dashboard_style: '', - footer_icons_display: ['selma', 'opal', 'moodle', 'eportal', 'msx', 'cloud', 'swdd'], - footer_icons_links: { - swdd: 'https://www.studentenwerk-dresden.de/mensen/speiseplan/mensologie.html' - }, - invert_icon_dark_theme: false - }, - psychologie: { - name: 'Psychologie', - fsr_icon: '../../assets/icons/FSRIcons/fsr_psy.png', - fsr_link: 'https://tu-dresden.de/mn/psychologie/fsrpsy', - fsr_icon_dashboard_style: '', - footer_icons_display: ['selma', 'opal', 'qis', 'matrix', 'msx', 'cloud', 'swdd', 'orsee'], - footer_icons_links: { - swdd: 'https://www.studentenwerk-dresden.de/mensen/speiseplan/mensa-siedepunkt.html' - }, - invert_icon_dark_theme: false - }, - wirtschaftswissenschaften: { - name: 'Wirtschaftswissenschaften', - fsr_icon: '../../assets/icons/FSRIcons/fsr_wiwi.png', - fsr_icon_dashboard_style: 'max-height: 32px;', - fsr_link: 'https://fsrwiwi.de', - footer_icons_display: ['selma', 'opal', 'qis', 'matrix', 'msx', 'cloud', 'swdd'], - footer_icons_links: { - swdd: 'https://www.studentenwerk-dresden.de/mensen/speiseplan/' - }, - invert_icon_dark_theme: false - }, - elektrotechnik: { - name: 'Elektrotechnik', - fsr_icon: '../../assets/icons/FSRIcons/FSR_ET.png', - fsr_icon_dashboard_style: 'max-height: 32px;', - fsr_link: 'https://fsret.de', - footer_icons_display: ['selma', 'opal', 'qis', 'matrix', 'msx', 'cloud', 'swdd'], - footer_icons_links: { - swdd: 'https://www.studentenwerk-dresden.de/mensen/speiseplan/' - }, - invert_icon_dark_theme: true - }, - general: { - name: 'Standardeinstellungen', - fsr_icon: '', - fsr_link: '', - footer_icons_display: ['selma', 'opal', 'qis', 'matrix', 'msx', 'cloud', 'je', 'swdd'], - footer_icons_links: { - swdd: 'https://www.studentenwerk-dresden.de/mensen/speiseplan/' - }, - invert_icon_dark_theme: false - }, - addStudiengang: { - name: '+ Studiengang hinzufügen...' - } -} - const starRatingSettings = { - // initial rating value rating: '0.0', @@ -200,10 +102,10 @@ window.onload = async () => { // asign input search fct // onkeydown? - this.document.getElementById('searchListInput').onkeyup = listSearchFunction + document.getElementById('searchListInput').onkeyup = listSearchFunction - this.document.getElementById('settings').onclick = openSettings - this.document.getElementById('share').onclick = openShare + document.getElementById('settings').onclick = openSettings + document.getElementById('share').onclick = openShare await displayEnabled() From 91630e152dc059282cdabaf34cc3e902b4d7a659 Mon Sep 17 00:00:00 2001 From: Daniel Kluge Date: Tue, 2 Aug 2022 15:12:46 +0200 Subject: [PATCH 53/98] owa fetch stuff --- src/background.ts | 23 ++++++++------- .../settings/settingPages/Email.vue | 28 +++++++++++++------ src/modules/owaFetch.ts | 10 +++++++ 3 files changed, 40 insertions(+), 21 deletions(-) diff --git a/src/background.ts b/src/background.ts index 2bdb71f3..7bcb1bb7 100644 --- a/src/background.ts +++ b/src/background.ts @@ -165,19 +165,12 @@ chrome.storage.local.get(['enabledOWAFetch', 'numberOfUnreadMails', 'additionalN if (await credentials.userDataExists('zih') && result.enabledOWAFetch) { await owaFetch.enableOWAFetch() } + + // When no notifications are enabled, there is nothing to do anymore + if (!result.additionalNotificationOnNewMail) return // Promisified until usage of Manifest V3 - await new Promise((resolve) => chrome.permissions.contains({ permissions: ['notifications'] }, (granted: boolean) => { - if (granted && result.additionalNotificationOnNewMail) { - // register listener for owaFetch notifications - chrome.notifications.onClicked.addListener(async (id) => { - if (id === 'tuFastNewEmailNotification') { - // Promisified until usage of Manifest V3 - await new Promise((resolve) => chrome.tabs.create({ url: 'https://msx.tu-dresden.de/owa/' }, resolve)) - } - }) - } - resolve() - })) + const notificationAccess = await new Promise((resolve) => chrome.permissions.contains({ permissions: ['notifications'] }, resolve)) + if (notificationAccess) owaFetch.registerNotificationClickListener() }) // Register header listener @@ -228,9 +221,15 @@ chrome.runtime.onMessage.addListener((request, _sender, sendResponse) => { case 'read_mail_owa': owaFetch.readMailOWA(request.nrOfUnreadMail || 0) break + case 'enable_owa_fetch': + owaFetch.enableOWAFetch() + break; case 'disable_owa_fetch': owaFetch.disableOwaFetch() break + case 'owa_notifications_enabled': + owaFetch.registerNotificationClickListener() + break; case 'reload_extension': chrome.runtime.reload() break diff --git a/src/freshContent/settings/settingPages/Email.vue b/src/freshContent/settings/settingPages/Email.vue index 57064a75..c7b4ebab 100644 --- a/src/freshContent/settings/settingPages/Email.vue +++ b/src/freshContent/settings/settingPages/Email.vue @@ -50,17 +50,18 @@ export default defineComponent({ if (!autoLoginActive.value) return if (!OWAFetchActive.value) { - chrome.runtime.sendMessage({ cmd: "enable_owa_fetch" }, () => {}) + chrome.runtime.sendMessage({ cmd: "enable_owa_fetch" }) chrome.storage.local.set({ enabledOWAFetch: true }) // reload extension - alert("Perfekt! Bitte starte den Browser einmal neu, damit die Einstellungen übernommen werden!") - chrome.runtime.sendMessage({ cmd: "reload_extension" }, () => {}) + //alert("Perfekt! Bitte starte den Browser einmal neu, damit die Einstellungen übernommen werden!") + //chrome.runtime.sendMessage({ cmd: "reload_extension" }, () => {}) } if (OWAFetchActive.value) { chrome.runtime.sendMessage({ cmd: "disable_owa_fetch" }) chrome.storage.local.set({ enabledOWAFetch: false }) chrome.storage.local.set({ additionalNotificationOnNewMail: false }) OWAFetchActive.value = !OWAFetchActive.value + notificationOnNewEmailActive.value = false; } } @@ -68,13 +69,22 @@ export default defineComponent({ if (!autoLoginActive.value || !OWAFetchActive.value) return if (!notificationOnNewEmailActive.value) { - console.log("activated") - chrome.storage.local.set({ additionalNotificationOnNewMail : true }) - } - if (notificationOnNewEmailActive.value) { - console.log("disactivated") - chrome.storage.local.set({ additionalNotificationOnNewMail : false }) + //console.log("activated") + chrome.permissions.request({ permissions: ["notifications"] }, (granted) => { + if (granted) { + chrome.runtime.sendMessage({ cmd: "owa_notifications_enabled" }) + chrome.storage.local.set({ additionalNotificationOnNewMail : true }) + } else { + alert('Du musst die Erlaubnis erteilen, um diese Funktion nutzen zu können!') + return + } + }) + } else { + //console.log("disactivated") + chrome.storage.local.remove(['additionalNotificationOnNewMail']) } + + notificationOnNewEmailActive.value = !notificationOnNewEmailActive.value; } return { diff --git a/src/modules/owaFetch.ts b/src/modules/owaFetch.ts index 0c8b559e..33ffeccf 100644 --- a/src/modules/owaFetch.ts +++ b/src/modules/owaFetch.ts @@ -249,3 +249,13 @@ export async function owaFetch () { await new Promise((resolve) => chrome.storage.local.set({ numberOfUnreadMails }, resolve)) await setBadgeUnreadMails(numberOfUnreadMails) } + +export function registerNotificationClickListener() { + // register listener for owaFetch notifications + chrome.notifications.onClicked.addListener(async (id) => { + if (id === 'tuFastNewEmailNotification') { + // Promisified until usage of Manifest V3 + await new Promise((resolve) => chrome.tabs.create({ url: 'https://msx.tu-dresden.de/owa/' }, resolve)) + } + }) +} From 8c53a260797c0a95b50064fd74536b5b98beb58e Mon Sep 17 00:00:00 2001 From: Daniel Kluge Date: Tue, 2 Aug 2022 15:26:26 +0200 Subject: [PATCH 54/98] Fix credentials setup --- src/freshContent/settings/settingPages/AutoLogin.vue | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/freshContent/settings/settingPages/AutoLogin.vue b/src/freshContent/settings/settingPages/AutoLogin.vue index 6390e23b..ea018f55 100644 --- a/src/freshContent/settings/settingPages/AutoLogin.vue +++ b/src/freshContent/settings/settingPages/AutoLogin.vue @@ -55,9 +55,9 @@ export default defineComponent({ if (target.disabled) return - chrome.storage.local.set({ isEnabled: true }, () => {}) // activate auto login feature - chrome.runtime.sendMessage({ cmd: "clear_badge" }) - chrome.runtime.sendMessage({ cmd: 'set_user_data', userData: { asdf: username.value, fdsa: password.value } }) + chrome.storage.local.set({ isEnabled: true }) // activate auto login feature + //chrome.runtime.sendMessage({ cmd: "clear_badge" }) + chrome.runtime.sendMessage({ cmd: 'set_user_data', userData: { user: username.value, pass: password.value } }, () => {}) username.value = "" password.value = "" autoLoginActive.value = true From a99850170c89ad9abe756b255ae8545d263a5b69 Mon Sep 17 00:00:00 2001 From: Daniel Kluge Date: Tue, 2 Aug 2022 15:38:29 +0200 Subject: [PATCH 55/98] Small typos and stuff --- src/freshContent/settings/settingPages/OpalCourses.vue | 2 +- src/freshContent/settings/settingPages/SearchEngines.vue | 7 ++++--- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/freshContent/settings/settingPages/OpalCourses.vue b/src/freshContent/settings/settingPages/OpalCourses.vue index c642f26a..d4cedcca 100644 --- a/src/freshContent/settings/settingPages/OpalCourses.vue +++ b/src/freshContent/settings/settingPages/OpalCourses.vue @@ -1,5 +1,5 @@ From 31cb8b70a46e726a08e6f1e625841512a0677051 Mon Sep 17 00:00:00 2001 From: Daniel Kluge Date: Wed, 3 Aug 2022 17:37:34 +0200 Subject: [PATCH 56/98] Fixing all the rocket stuff (#102) --- src/background.ts | 50 +++++++----- src/freshContent/{settings => }/rockets.json | 53 +++++++------ .../settings/components/RocketSelect.vue | 78 +++++++++++++++---- src/manifest.json | 1 - 4 files changed, 124 insertions(+), 58 deletions(-) rename src/freshContent/{settings => }/rockets.json (63%) diff --git a/src/background.ts b/src/background.ts index 7bcb1bb7..982aa7a9 100644 --- a/src/background.ts +++ b/src/background.ts @@ -1,6 +1,7 @@ 'use strict' import * as credentials from './modules/credentials' import * as owaFetch from './modules/owaFetch' +import rockets from "./freshContent/rockets.json" // eslint-disable-next-line no-unused-vars const isFirefox = !!(typeof globalThis.browser !== 'undefined' && globalThis.browser.runtime && globalThis.browser.runtime.getBrowserInfo) @@ -15,8 +16,8 @@ chrome.runtime.onInstalled.addListener(async (details) => { dashboardDisplay: 'favoriten', fwdEnabled: true, encryptionLevel: 3, - availableRockets: ['RI_default'], - selectedRocketIcon: '{"id": "RI_default", "link": "assets/icons/RocketIcons/default_128px.png"}', + availableRockets: ['default'], + selectedRocketIcon: JSON.stringify(rockets.default), theme: 'system', studiengang: 'general' }) @@ -94,15 +95,32 @@ chrome.runtime.onInstalled.addListener(async (details) => { } // Upgrading availableRockets - const avRockets = currentSettings.availableRockets || ['RI_default'] - if (savedClicks > 250 && !avRockets.includes('RI4')) avRockets.push('RI4') - if (savedClicks > 2500 && !avRockets.includes('RI5')) avRockets.push('RI5') - if (currentSettings.Rocket === 'colorful' && currentSettings.foundEasteregg === undefined) { - updateObj.foundEasteregg = true - updateObj.selectedRocketIcon = '{"id": "RI3", "link": "assets/icons/RocketIcons/3_120px.png"}' - avRockets.push('RI3') + let avRockets: string[] = currentSettings.availableRockets || ['default'] + // Renaming the rockets + avRockets = avRockets.map(rocket => { + switch (rocket) { + case 'RI_default': return 'default' + case 'RI1': return 'whatsapp' + case 'RI2': return 'email' + case 'RI3': return 'easteregg' + case 'RI4': return '250clicks' + case 'RI5': return '2500clicks' + case 'RI6': return 'webstore' + default: return rocket + } + }) + // Making things unique + avRockets = avRockets.filter((value, index, array) => array.indexOf(value) === index) + + if (savedClicks >= 250 && !avRockets.includes('250clicks')) avRockets.push('250clicks') + if (savedClicks >= 2500 && !avRockets.includes('2500clicks')) avRockets.push('2500clicks') + if (currentSettings.Rocket === 'colorful') { + if (!currentSettings.foundEasteregg) updateObj.foundEasteregg = true + + if (!avRockets.includes('easteregg')) avRockets.push('easteregg') + updateObj.selectedRocketIcon = rockets.easteregg // Promisified until usage of Manifest V3 - await new Promise((resolve) => chrome.browserAction.setIcon({ path: 'assets/icons/RocketIcons/3_128px.png' }, resolve)) + await new Promise((resolve) => chrome.browserAction.setIcon({ path: rockets.easteregg.iconPathUnlocked }, resolve)) // Promisified until usage of Manifest V3 await new Promise((resolve) => chrome.storage.local.remove(['Rocket'], resolve)) } @@ -149,14 +167,10 @@ chrome.storage.local.get(['selectedRocketIcon'], (resp) => { try { const r = JSON.parse(resp.selectedRocketIcon) if(!r.iconPathUnlocked) console.warn('Rocket icon has no attribute "iconPathUnlocked", fallback to default icon.') - chrome.browserAction.setIcon({ - path: r.iconPathUnlocked || 'assets/icons/RocketIcons/default_128px.png' - }) + chrome.browserAction.setIcon({ path: r.iconPathUnlocked || rockets.default.iconPathUnlocked }) } catch (e) { console.log(`Cannot parse rocket icon: ${resp}`) - chrome.browserAction.setIcon({ - path: 'assets/icons/RocketIcons/default_128px.png' - }) + chrome.browserAction.setIcon({ path: rockets.default.iconPathUnlocked }) } }) @@ -327,8 +341,8 @@ async function saveClicks (counter: number) { // make rocketIcons available if appropriate // Promisified until usage of Manifest V3 const { availableRockets } = await new Promise((resolve) => chrome.storage.local.get(['availableRockets'], resolve)) - if (savedClickCounter > 250 && !availableRockets.includes('RI4')) availableRockets.push('RI4') - if (savedClickCounter > 2500 && !availableRockets.includes('RI5')) availableRockets.push('RI5') + if (savedClickCounter >= 250 && !availableRockets.includes('250clicks')) availableRockets.push('250clicks') + if (savedClickCounter >= 2500 && !availableRockets.includes('2500clicks')) availableRockets.push('2500clicks') // Promisified until usage of Manifest V3 await new Promise((resolve) => chrome.storage.local.set({ availableRockets }, resolve)) } diff --git a/src/freshContent/settings/rockets.json b/src/freshContent/rockets.json similarity index 63% rename from src/freshContent/settings/rockets.json rename to src/freshContent/rockets.json index d21f7194..970f5ed6 100644 --- a/src/freshContent/settings/rockets.json +++ b/src/freshContent/rockets.json @@ -1,48 +1,55 @@ -[ - { - "iconPathUnlocked": "../../../assets/icons/RocketIcons/default_128px.png", - "iconPathBeforeUnlock": "../../../assets/icons/RocketIcons/default_grey_128px.png", +{ + "default": { + "id": "default", + "iconPathUnlocked": "/assets/icons/RocketIcons/default_128px.png", + "iconPathBeforeUnlock": "/assets/icons/RocketIcons/default_grey_128px.png", "beforeUnlock": "Standard. Hat jeder.", "unlocked": "Standard. Hat jeder." }, - { - "iconPathUnlocked": "../../../assets/icons/RocketIcons/4_103px.png", - "iconPathBeforeUnlock": "../../../assets/icons/RocketIcons/4_grey_103px.png", + "250clicks": { + "id": "250clicks", + "iconPathUnlocked": "/assets/icons/RocketIcons/4_103px.png", + "iconPathBeforeUnlock": "/assets/icons/RocketIcons/4_grey_103px.png", "beforeUnlock": "Spare mehr als 250 Klicks.", "unlocked": "Mehr als 250 Klicks gespart. TUfast scheint nützlich zu sein!" }, - { - "iconPathUnlocked": "../../../assets/icons/RocketIcons/13_128px.png", - "iconPathBeforeUnlock": "../../../assets/icons/RocketIcons/13_grey_128px.png", + "2500clicks": { + "id": "2500clicks", + "iconPathUnlocked": "/assets/icons/RocketIcons/13_128px.png", + "iconPathBeforeUnlock": "/assets/icons/RocketIcons/13_grey_128px.png", "beforeUnlock": "Spare mehr als 2500 Klicks. Du bist Profi!", "unlocked": "Mehr als 2500 Klicks gespart. TUfast ist nützlich!" }, - { - "iconPathUnlocked": "../../../assets/icons/RocketIcons/7_128px.png", - "iconPathBeforeUnlock": "../../../assets/icons/RocketIcons/7_grey_128px.png", + "easteregg": { + "id": "easteregg", + "iconPathUnlocked": "/assets/icons/RocketIcons/7_128px.png", + "iconPathBeforeUnlock": "/assets/icons/RocketIcons/7_grey_128px.png", "beforeUnlock": "Finde das Easteregg!", "unlocked": "Easteregg gefunden :)" }, - { - "iconPathUnlocked": "../../../assets/icons/RocketIcons/2_128px.png", - "iconPathBeforeUnlock": "../../../assets/icons/RocketIcons/2_grey_128px.png", + "email": { + "id": "email", + "iconPathUnlocked": "/assets/icons/RocketIcons/2_128px.png", + "iconPathBeforeUnlock": "/assets/icons/RocketIcons/2_grey_128px.png", "beforeUnlock": "Du findest TUfast nützlich? Erzähle es zwei Leuten per E-Mail, um diese schicke Rakete freizuschalten!", "unlocked": "Diese Rakete hast du dir verdient! Per E-Mail empfohlen.", "link": "mailto:?subject=Probiere%20mal%20TUfast!%20%F0%9F%9A%80&body=Hey%20%3A)%0A%0Akennst%20du%20schon%20TUfast%3F%0A%0ATUfast%20hilft%20beim%20t%C3%A4glichen%20Arbeiten%20mit%20den%20Online-Portalen%20der%20TU%20Dresden.%0ADamit%20spare%20ich%20viel%20Zeit%20und%20nervige%20Klicks.%0A%0ATUfast%20ist%20eine%20Erweiterung%20f%C3%BCr%20den%20Browser%20und%20wurde%20von%20Studenten%20entwickelt.%0AProbiere%20es%20jetzt%20auf%20www.tu-fast.de%20!%0A%0ALiebe%20Gr%C3%BC%C3%9Fe%C2%A0%F0%9F%96%90" }, - { - "iconPathUnlocked": "../../../assets/icons/RocketIcons/6_128px.png", - "iconPathBeforeUnlock": "../../../assets/icons/RocketIcons/6_grey_128px.png", + "webstore": { + "id": "webstore", + "iconPathUnlocked": "/assets/icons/RocketIcons/6_128px.png", + "iconPathBeforeUnlock": "/assets/icons/RocketIcons/6_grey_128px.png", "beforeUnlock": "Gefällt dir TUfast? Oder hast du Anmerkdungen? Dann hinterlasse eine Bewertung im Webstore!", "unlocked": "Danke für deine Bewertung im Webstore!", "linkFirefox": "https://addons.mozilla.org/de/firefox/addon/tufast/?utm_source=addons.mozilla.org&utm_medium=referral&utm_content=search", "linkChromium": "https://chrome.google.com/webstore/detail/tufast-tu-dresden/aheogihliekaafikeepfjngfegbnimbk?hl=de" }, - { - "iconPathUnlocked": "../../../assets/icons/RocketIcons/1_128px.png", - "iconPathBeforeUnlock": "../../../assets/icons/RocketIcons/1_grey_128px.png", + "whatsapp": { + "id": "whatsapp", + "iconPathUnlocked": "/assets/icons/RocketIcons/1_128px.png", + "iconPathBeforeUnlock": "/assets/icons/RocketIcons/1_grey_128px.png", "beforeUnlock": "Coole Dinge teilen ist dein Ding? Teile TUfast mit zwei Freunden auf WhatsApp und sammle diese tolle Rakete!", "unlocked": "Danke für deine Unterstützung! Mit WhatsApp empfohlen.", "link": "https://api.whatsapp.com/send?text=Hey%2C%20kennst%20du%20schon%20TUfast%3F%20%F0%9F%9A%80%0A%0AMacht%20das%20arbeiten%20mit%20allen%20Online-Portalen%20der%20TU%20Dresden%20produktiver%20und%20hat%20mir%20schon%20viel%20Zeit%20und%20nervige%20Klicks%20gespart.%20Eine%20richtig%20n%C3%BCtzliche%20Browsererweiterung%20f%C3%BCr%20Studenten!%0A%0AProbiers%20gleich%20mal%20aus%3A%20www.tu-fast.de%20%F0%9F%96%90" } -] +} diff --git a/src/freshContent/settings/components/RocketSelect.vue b/src/freshContent/settings/components/RocketSelect.vue index 761c31c4..49ffb96d 100644 --- a/src/freshContent/settings/components/RocketSelect.vue +++ b/src/freshContent/settings/components/RocketSelect.vue @@ -6,12 +6,10 @@ :style="`--pos: ${pos}%`" />
-
- - - - -

{{ rocket.unlocked }}

+
+ + +

{{ getText(rocket) }}

@@ -20,7 +18,7 @@ diff --git a/src/manifest.json b/src/manifest.json index 89774bb4..52c5087a 100644 --- a/src/manifest.json +++ b/src/manifest.json @@ -299,7 +299,6 @@ }, "web_accessible_resources": [ "assets/*", - "assets/icons/RocketIcons/default_128px.png", "contentScripts/forward/searchEngines/common.js", "contentScripts/login/common.js", "contentScripts/other/hisqis/*", From b82f6e40278843a9981d0838e91837999c1acabc Mon Sep 17 00:00:00 2001 From: Noxdor Date: Mon, 12 Sep 2022 16:34:57 +0200 Subject: [PATCH 57/98] Stuff from the wrong branch. --- .../settings/components/Button.vue | 5 +- .../settings/components/LoginTabs.vue | 63 +++++++++++++++ .../settings/composables/chrome.ts | 19 +++++ .../settings/composables/logins.ts | 32 ++++++++ .../settings/settingPages/AutoLogin.vue | 77 +++++++++++++------ src/freshContent/settings/types/Login.ts | 12 +++ 6 files changed, 181 insertions(+), 27 deletions(-) create mode 100644 src/freshContent/settings/components/LoginTabs.vue create mode 100644 src/freshContent/settings/composables/chrome.ts create mode 100644 src/freshContent/settings/composables/logins.ts create mode 100644 src/freshContent/settings/types/Login.ts diff --git a/src/freshContent/settings/components/Button.vue b/src/freshContent/settings/components/Button.vue index e0e9c9d6..c94d585e 100644 --- a/src/freshContent/settings/components/Button.vue +++ b/src/freshContent/settings/components/Button.vue @@ -49,9 +49,10 @@ export default defineComponent({ background-color: hsl(var(--clr-grey), .8 ) &:hover outline: none - + &:disabled background-color: hsl(var(--clr-primary), .5) + cursor: not-allowed &:hover outline: none - \ No newline at end of file + diff --git a/src/freshContent/settings/components/LoginTabs.vue b/src/freshContent/settings/components/LoginTabs.vue new file mode 100644 index 00000000..662c6f48 --- /dev/null +++ b/src/freshContent/settings/components/LoginTabs.vue @@ -0,0 +1,63 @@ + + + + + + diff --git a/src/freshContent/settings/composables/chrome.ts b/src/freshContent/settings/composables/chrome.ts new file mode 100644 index 00000000..b1101ed4 --- /dev/null +++ b/src/freshContent/settings/composables/chrome.ts @@ -0,0 +1,19 @@ + +export const useChrome = () => ({ + setChromeLocalStorage, + sendChromeRuntimeMessage, + getChromeLocalStorage, +}) + +const setChromeLocalStorage = async (items: Record) => +await new Promise((resolve) => chrome.storage.local.set(items, resolve as () => {})) + +const sendChromeRuntimeMessage = async (items: Record) => +await new Promise((resolve) => chrome.runtime.sendMessage(items, resolve)) + +const getChromeLocalStorage = async (items: string | string[]) => { + if (typeof items === 'string') + return await new Promise((resolve) => chrome.storage.local.get(items, (res) => resolve(res[items]))) + else + return await new Promise((resolve) => chrome.storage.local.get(items, resolve)) +} diff --git a/src/freshContent/settings/composables/logins.ts b/src/freshContent/settings/composables/logins.ts new file mode 100644 index 00000000..9556402a --- /dev/null +++ b/src/freshContent/settings/composables/logins.ts @@ -0,0 +1,32 @@ +import type { Login } from '../types/Login' + +export const useLogins = () => ({ + logins, +}) + +const logins: Login[] = [ + { + id: "zih", + title: "Werde in alle Online-Portale der TU Dresden automatisch angemeldet.", + name: "Selma", + state: false, + usernamePlaceholder: "Nutzername (selma-Login)", + usernamePattern: /^(([s]{1}\d{7})|([a-z]{2,6}\d{3}[a-z]{1}))$/, + usernameError: "Ohne @mailbox.tu-dresden.de, also z.B. 's3276763' oder 'luka075d'", + passwordPlaceholder: "Passwort (selma-Login)", + passwordPattern: /.{5,}/, + passwordError: "Das Passwort muss mindestens 5 Zeichen lang sein!", + }, + { + id: "slub", + title: "Werde automatisch auf der SLUB-Seite angemeldet.", + name: "Slub", + state: false, + usernamePlaceholder: "Benutzernummer (SLUB-Login)", + usernamePattern: /[a-zA-Z]*/, + usernameError: "die Nutzernummer findest du u.a. auf deiner SLUB-Karte", + passwordPlaceholder: "Passwort (SLUB-Login)", + passwordPattern: /.{5,}/, + passwordError: "Das Passwort muss mindestens 5 Zeichen lang sein!" + } +] diff --git a/src/freshContent/settings/settingPages/AutoLogin.vue b/src/freshContent/settings/settingPages/AutoLogin.vue index ea018f55..e7cc25a8 100644 --- a/src/freshContent/settings/settingPages/AutoLogin.vue +++ b/src/freshContent/settings/settingPages/AutoLogin.vue @@ -1,7 +1,8 @@ diff --git a/src/freshContent/settings/components/Dropdown.vue b/src/freshContent/settings/components/Dropdown.vue index 892763f6..2ec45ac5 100644 --- a/src/freshContent/settings/components/Dropdown.vue +++ b/src/freshContent/settings/components/Dropdown.vue @@ -2,7 +2,7 @@