diff --git a/Directory.Packages.props b/Directory.Packages.props index b4df5f9..6598017 100644 --- a/Directory.Packages.props +++ b/Directory.Packages.props @@ -18,7 +18,7 @@ - + diff --git a/ProblemSource/AdminApp/package-lock.json b/ProblemSource/AdminApp/package-lock.json index affbf90..670430e 100644 --- a/ProblemSource/AdminApp/package-lock.json +++ b/ProblemSource/AdminApp/package-lock.json @@ -29,6 +29,7 @@ "eslint": "8.16.0", "eslint-config-prettier": "8.3.0", "eslint-plugin-svelte3": "4.0.0", + "mdsvex": "^0.11.1", "prettier": "2.6.2", "prettier-plugin-svelte": "2.7.0", "svelte": "3.55.0", @@ -733,6 +734,13 @@ "dev": true, "license": "MIT" }, + "node_modules/@types/unist": { + "version": "2.0.11", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.11.tgz", + "integrity": "sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA==", + "dev": true, + "license": "MIT" + }, "node_modules/@typescript-eslint/eslint-plugin": { "version": "5.27.0", "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.27.0.tgz", @@ -2147,6 +2155,22 @@ "@jridgewell/sourcemap-codec": "^1.5.0" } }, + "node_modules/mdsvex": { + "version": "0.11.1", + "resolved": "https://registry.npmjs.org/mdsvex/-/mdsvex-0.11.1.tgz", + "integrity": "sha512-8g1WIKP8AD+KyW6EOSXkEUkxuKL3uX+Tqpv6MUyMFCXvDOb8FDuTFoaOSqi/1CKXVXTLdP/RZU2WS4W9pnuOmA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/unist": "^2.0.3", + "prism-svelte": "^0.4.7", + "prismjs": "^1.17.1", + "vfile-message": "^2.0.4" + }, + "peerDependencies": { + "svelte": ">=3 <6" + } + }, "node_modules/merge2": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", @@ -2480,6 +2504,23 @@ "svelte": "^3.2.0" } }, + "node_modules/prism-svelte": { + "version": "0.4.7", + "resolved": "https://registry.npmjs.org/prism-svelte/-/prism-svelte-0.4.7.tgz", + "integrity": "sha512-yABh19CYbM24V7aS7TuPYRNMqthxwbvx6FF/Rw920YbyBWO3tnyPIqRMgHuSVsLmuHkkBS1Akyof463FVdkeDQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/prismjs": { + "version": "1.29.0", + "resolved": "https://registry.npmjs.org/prismjs/-/prismjs-1.29.0.tgz", + "integrity": "sha512-Kx/1w86q/epKcmte75LNrEoT+lX8pBpavuAbvJWRXar7Hz8jrtF+e3vY751p0R8H9HdArwaCTNDDzHg/ScJK1Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, "node_modules/psl": { "version": "1.10.0", "resolved": "https://registry.npmjs.org/psl/-/psl-1.10.0.tgz", @@ -3232,6 +3273,20 @@ "node": ">=12.18" } }, + "node_modules/unist-util-stringify-position": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-2.0.3.tgz", + "integrity": "sha512-3faScn5I+hy9VleOq/qNbAd6pAx7iH5jYBMS9I1HgQVijz/4mv5Bvw5iw1sC/90CODiKo81G/ps8AJrISn687g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/unist": "^2.0.2" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, "node_modules/universalify": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.2.0.tgz", @@ -3268,6 +3323,21 @@ "dev": true, "license": "MIT" }, + "node_modules/vfile-message": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-2.0.4.tgz", + "integrity": "sha512-DjssxRGkMvifUOJre00juHoP9DPWuzjxKuMDrhNbk2TdaYYBNMStsNhEOt3idrtI12VQYM/1+iM0KOzXi4pxwQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/unist": "^2.0.0", + "unist-util-stringify-position": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, "node_modules/vite": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/vite/-/vite-4.2.0.tgz", diff --git a/ProblemSource/AdminApp/package.json b/ProblemSource/AdminApp/package.json index e86eb26..d147a5f 100644 --- a/ProblemSource/AdminApp/package.json +++ b/ProblemSource/AdminApp/package.json @@ -14,25 +14,26 @@ }, "devDependencies": { "@playwright/test": "1.25.0", + "@sveltejs/adapter-auto": "2.0.0", "@sveltejs/adapter-static": "2.0.1", + "@sveltejs/kit": "1.5.0", "@types/color-convert": "2.0.0", + "@types/node": "18.15.5", "@typescript-eslint/eslint-plugin": "5.27.0", "@typescript-eslint/parser": "5.27.0", "@vitejs/plugin-basic-ssl": "1.0.1", "eslint": "8.16.0", "eslint-config-prettier": "8.3.0", "eslint-plugin-svelte3": "4.0.0", + "mdsvex": "^0.11.1", "prettier": "2.6.2", "prettier-plugin-svelte": "2.7.0", + "svelte": "3.55.0", + "svelte-check": "3.0.1", "svelte-preprocess": "5.0.3", - "@sveltejs/adapter-auto": "2.0.0", - "@sveltejs/kit": "1.5.0", - "@types/node": "18.15.5", - "svelte": "3.55.0", - "svelte-check": "3.0.1", - "tslib": "2.4.1", - "typescript": "5.6.3", - "vite": "4.2.0" + "tslib": "2.4.1", + "typescript": "5.6.3", + "vite": "4.2.0" }, "type": "module", "dependencies": { diff --git a/ProblemSource/AdminApp/src/app.css b/ProblemSource/AdminApp/src/app.css new file mode 100644 index 0000000..e8b8936 --- /dev/null +++ b/ProblemSource/AdminApp/src/app.css @@ -0,0 +1,107 @@ +body { + font-family: sans-serif; +} +input { + font-family: sans-serif; +} + +button { + border: 1px solid #4ba7b2; + background: white; + color: #4ba7b2; + border-radius: 5px; + padding: 0px 10px; + height: 30px; + vertical-align: middle; +} + +button.primary { + font-weight: bold; + background: #4ba7b2; + color: white; + border: none; +} + +.inline-button { + background: none; + border: none; + display: inline; + cursor: pointer; +} + +html { + box-sizing: border-box; +} + +*, +*:before, +*:after { + box-sizing: inherit; +} + +[data-tooltip] { + position: relative; + z-index: 2; + display: block; + color: red; +} + +[data-tooltip]:before, +[data-tooltip]:after { + visibility: hidden; + opacity: 0; + pointer-events: none; + transition: 0.2s ease-out; + transform: translate(-50%, 5px); +} + +[data-tooltip]:before { + position: absolute; + bottom: 120%; + left: 50%; + margin-bottom: 5px; + padding: 7px; + width: 100%; + min-width: 170px; + max-width: 250px; + -webkit-border-radius: 3px; + -moz-border-radius: 3px; + border-radius: 3px; + background-color: #000; + background-color: hsla(0, 0%, 20%, 0.9); + color: #fff; + content: attr(data-tooltip); + text-align: center; + font-size: 12px; + font-weight: normal; + line-height: 1.2; + transition: 0.2s ease-out; + white-space: break-spaces; +} + +[data-tooltip]:after { + position: absolute; + bottom: 120%; + left: 50%; + width: 0; + border-top: 5px solid #000; + border-top: 5px solid hsla(0, 0%, 20%, 0.9); + border-right: 5px solid transparent; + border-left: 5px solid transparent; + content: ' '; + font-size: 0; + line-height: 0; +} + +[data-tooltip]:hover:before, +[data-tooltip]:hover:after { + visibility: visible; + opacity: 1; + transform: translate(-50%, 0); +} + +[data-tooltip='false']:hover:before, +[data-tooltip='false']:hover:after { + visibility: hidden; + opacity: 0; +} diff --git a/ProblemSource/AdminApp/src/components/helpWidget.svelte b/ProblemSource/AdminApp/src/components/helpWidget.svelte new file mode 100644 index 0000000..4c9dc2f --- /dev/null +++ b/ProblemSource/AdminApp/src/components/helpWidget.svelte @@ -0,0 +1,57 @@ + + + + +{#if $currentUrl} +
+ +
+