diff --git a/package.json b/package.json
index 660ded9..99b6001 100644
--- a/package.json
+++ b/package.json
@@ -19,8 +19,8 @@
"@fastify/static": "^7.0.4",
"@iconify-json/ph": "^1.2.0",
"@mercuryworkshop/bare-mux": "1.1.1",
- "@mercuryworkshop/epoxy-tls-new": "npm:@mercuryworkshop/epoxy-tls@^2.1.4-1",
"@mercuryworkshop/epoxy-tls": "2.0.0-3",
+ "@mercuryworkshop/epoxy-tls-new": "npm:@mercuryworkshop/epoxy-tls@^2.1.4-1",
"@mercuryworkshop/epoxy-transport": "2.0.1",
"@titaniumnetwork-dev/ultraviolet": "3.1.2",
"astro": "^4.15.9",
@@ -35,6 +35,7 @@
"sequelize": "^6.37.3",
"sqlite3": "^5.1.7",
"svelte": "^4.2.19",
+ "svelte-french-toast": "^1.2.0",
"tailwindcss": "^3.4.13",
"typescript": "^5.6.2",
"vite-plugin-static-copy": "^1.0.6",
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 0f1f159..1397012 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -13,13 +13,13 @@ importers:
version: 0.8.3(typescript@5.6.2)
'@astrojs/node':
specifier: ^8.3.4
- version: 8.3.4(astro@4.15.9(@types/node@22.7.4)(rollup@4.22.5)(typescript@5.6.2))
+ version: 8.3.4(astro@4.15.9(@types/node@22.7.4)(rollup@4.22.5)(sass@1.79.4)(typescript@5.6.2))
'@astrojs/svelte':
specifier: ^5.7.1
- version: 5.7.1(astro@4.15.9(@types/node@22.7.4)(rollup@4.22.5)(typescript@5.6.2))(svelte@4.2.19)(typescript@5.6.2)(vite@5.4.8(@types/node@22.7.4))
+ version: 5.7.1(astro@4.15.9(@types/node@22.7.4)(rollup@4.22.5)(sass@1.79.4)(typescript@5.6.2))(svelte@4.2.19)(typescript@5.6.2)(vite@5.4.8(@types/node@22.7.4)(sass@1.79.4))
'@astrojs/tailwind':
specifier: ^5.1.1
- version: 5.1.1(astro@4.15.9(@types/node@22.7.4)(rollup@4.22.5)(typescript@5.6.2))(tailwindcss@3.4.13)
+ version: 5.1.1(astro@4.15.9(@types/node@22.7.4)(rollup@4.22.5)(sass@1.79.4)(typescript@5.6.2))(tailwindcss@3.4.13)
'@fastify/compress':
specifier: ^7.0.3
version: 7.0.3
@@ -46,7 +46,7 @@ importers:
version: 3.1.2
astro:
specifier: ^4.15.9
- version: 4.15.9(@types/node@22.7.4)(rollup@4.22.5)(typescript@5.6.2)
+ version: 4.15.9(@types/node@22.7.4)(rollup@4.22.5)(sass@1.79.4)(typescript@5.6.2)
astro-icon:
specifier: ^1.1.1
version: 1.1.1
@@ -80,6 +80,9 @@ importers:
svelte:
specifier: ^4.2.19
version: 4.2.19
+ svelte-french-toast:
+ specifier: ^1.2.0
+ version: 1.2.0(svelte@4.2.19)
tailwindcss:
specifier: ^3.4.13
version: 3.4.13
@@ -88,7 +91,7 @@ importers:
version: 5.6.2
vite-plugin-static-copy:
specifier: ^1.0.6
- version: 1.0.6(vite@5.4.8(@types/node@22.7.4))
+ version: 1.0.6(vite@5.4.8(@types/node@22.7.4)(sass@1.79.4))
wisp-server-node:
specifier: ^1.1.7
version: 1.1.7
@@ -1122,6 +1125,10 @@ packages:
resolution: {integrity: sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==}
engines: {node: '>= 8.10.0'}
+ chokidar@4.0.1:
+ resolution: {integrity: sha512-n8enUVCED/KVRQlab1hr3MVpcVMvxtZjmEa956u+4YijlmQED223XMSYj2tLuKvr4jcCTzNNMpQDUer72MMmzA==}
+ engines: {node: '>= 14.16.0'}
+
chownr@1.1.4:
resolution: {integrity: sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==}
@@ -1804,6 +1811,9 @@ packages:
ieee754@1.2.1:
resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==}
+ immutable@4.3.7:
+ resolution: {integrity: sha512-1hqclzwYwjRDFLjcFxOM5AYkkG0rpFPpr1RLPMEuGczoS7YA8gLhy8SWXYRAA/XwfEHpfo3cw5JGioS32fnMRw==}
+
import-meta-resolve@4.1.0:
resolution: {integrity: sha512-I6fiaX09Xivtk+THaMfAwnA3MVA5Big1WHF1Dfx9hFuvNIWpXnorlkzhcQf6ehrqQiiZECRt1poOAkPmer3ruw==}
@@ -2688,6 +2698,10 @@ packages:
resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==}
engines: {node: '>=8.10.0'}
+ readdirp@4.0.1:
+ resolution: {integrity: sha512-GkMg9uOTpIWWKbSsgwb5fA4EavTR+SG/PMPoAY8hkhHfEEY0/vqljY+XHqtDf2cr2IJtoNRDbrrEpZUiZCkYRw==}
+ engines: {node: '>= 14.16.0'}
+
real-require@0.2.0:
resolution: {integrity: sha512-57frrGM/OCTLqLOAh0mhVA9VBMHd+9U7Zb2THMGdBUoZVOtGbJzjxsYGDJ3A9AYYCP4hn6y1TVbaOfzWtm5GFg==}
engines: {node: '>= 12.13.0'}
@@ -2825,6 +2839,11 @@ packages:
safer-buffer@2.1.2:
resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==}
+ sass@1.79.4:
+ resolution: {integrity: sha512-K0QDSNPXgyqO4GZq2HO5Q70TLxTH6cIT59RdoCHMivrC8rqzaTw5ab9prjz9KUN1El4FLXrBXJhik61JR4HcGg==}
+ engines: {node: '>=14.0.0'}
+ hasBin: true
+
section-matter@1.0.0:
resolution: {integrity: sha512-vfD3pmTzGpufjScBh50YHKzEu2lxBWhVEHsNGoEXmCmn2hKGfeNLYMzCJpe8cD7gqX7TJluOVpBkAequ6dgMmA==}
engines: {node: '>=4'}
@@ -3062,12 +3081,22 @@ packages:
resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==}
engines: {node: '>= 0.4'}
+ svelte-french-toast@1.2.0:
+ resolution: {integrity: sha512-5PW+6RFX3xQPbR44CngYAP1Sd9oCq9P2FOox4FZffzJuZI2mHOB7q5gJBVnOiLF5y3moVGZ7u2bYt7+yPAgcEQ==}
+ peerDependencies:
+ svelte: ^3.57.0 || ^4.0.0
+
svelte-hmr@0.16.0:
resolution: {integrity: sha512-Gyc7cOS3VJzLlfj7wKS0ZnzDVdv3Pn2IuVeJPk9m2skfhcu5bq3wtIZyQGggr7/Iim5rH5cncyQft/kRLupcnA==}
engines: {node: ^12.20 || ^14.13.1 || >= 16}
peerDependencies:
svelte: ^3.19.0 || ^4.0.0
+ svelte-writable-derived@3.1.1:
+ resolution: {integrity: sha512-w4LR6/bYZEuCs7SGr+M54oipk/UQKtiMadyOhW0PTwAtJ/Ai12QS77sLngEcfBx2q4H8ZBQucc9ktSA5sUGZWw==}
+ peerDependencies:
+ svelte: ^3.2.1 || ^4.0.0-next.1 || ^5.0.0-next.94
+
svelte2tsx@0.7.21:
resolution: {integrity: sha512-cdYR5gYBK0Ys3/jzGu9yfW9oxGLtLAnxcKtS7oJy2pjLhLLYSZcWeeeuaY9SMULwlqMZ1HfngGH3n5VdquRC3Q==}
peerDependencies:
@@ -3656,9 +3685,9 @@ snapshots:
transitivePeerDependencies:
- supports-color
- '@astrojs/node@8.3.4(astro@4.15.9(@types/node@22.7.4)(rollup@4.22.5)(typescript@5.6.2))':
+ '@astrojs/node@8.3.4(astro@4.15.9(@types/node@22.7.4)(rollup@4.22.5)(sass@1.79.4)(typescript@5.6.2))':
dependencies:
- astro: 4.15.9(@types/node@22.7.4)(rollup@4.22.5)(typescript@5.6.2)
+ astro: 4.15.9(@types/node@22.7.4)(rollup@4.22.5)(sass@1.79.4)(typescript@5.6.2)
send: 0.19.0
server-destroy: 1.0.1
transitivePeerDependencies:
@@ -3668,10 +3697,10 @@ snapshots:
dependencies:
prismjs: 1.29.0
- '@astrojs/svelte@5.7.1(astro@4.15.9(@types/node@22.7.4)(rollup@4.22.5)(typescript@5.6.2))(svelte@4.2.19)(typescript@5.6.2)(vite@5.4.8(@types/node@22.7.4))':
+ '@astrojs/svelte@5.7.1(astro@4.15.9(@types/node@22.7.4)(rollup@4.22.5)(sass@1.79.4)(typescript@5.6.2))(svelte@4.2.19)(typescript@5.6.2)(vite@5.4.8(@types/node@22.7.4)(sass@1.79.4))':
dependencies:
- '@sveltejs/vite-plugin-svelte': 3.1.2(svelte@4.2.19)(vite@5.4.8(@types/node@22.7.4))
- astro: 4.15.9(@types/node@22.7.4)(rollup@4.22.5)(typescript@5.6.2)
+ '@sveltejs/vite-plugin-svelte': 3.1.2(svelte@4.2.19)(vite@5.4.8(@types/node@22.7.4)(sass@1.79.4))
+ astro: 4.15.9(@types/node@22.7.4)(rollup@4.22.5)(sass@1.79.4)(typescript@5.6.2)
svelte: 4.2.19
svelte2tsx: 0.7.21(svelte@4.2.19)(typescript@5.6.2)
typescript: 5.6.2
@@ -3679,9 +3708,9 @@ snapshots:
- supports-color
- vite
- '@astrojs/tailwind@5.1.1(astro@4.15.9(@types/node@22.7.4)(rollup@4.22.5)(typescript@5.6.2))(tailwindcss@3.4.13)':
+ '@astrojs/tailwind@5.1.1(astro@4.15.9(@types/node@22.7.4)(rollup@4.22.5)(sass@1.79.4)(typescript@5.6.2))(tailwindcss@3.4.13)':
dependencies:
- astro: 4.15.9(@types/node@22.7.4)(rollup@4.22.5)(typescript@5.6.2)
+ astro: 4.15.9(@types/node@22.7.4)(rollup@4.22.5)(sass@1.79.4)(typescript@5.6.2)
autoprefixer: 10.4.20(postcss@8.4.47)
postcss: 8.4.47
postcss-load-config: 4.0.2(postcss@8.4.47)
@@ -4266,26 +4295,26 @@ snapshots:
'@shikijs/vscode-textmate@9.2.2': {}
- '@sveltejs/vite-plugin-svelte-inspector@2.1.0(@sveltejs/vite-plugin-svelte@3.1.2(svelte@4.2.19)(vite@5.4.8(@types/node@22.7.4)))(svelte@4.2.19)(vite@5.4.8(@types/node@22.7.4))':
+ '@sveltejs/vite-plugin-svelte-inspector@2.1.0(@sveltejs/vite-plugin-svelte@3.1.2(svelte@4.2.19)(vite@5.4.8(@types/node@22.7.4)(sass@1.79.4)))(svelte@4.2.19)(vite@5.4.8(@types/node@22.7.4)(sass@1.79.4))':
dependencies:
- '@sveltejs/vite-plugin-svelte': 3.1.2(svelte@4.2.19)(vite@5.4.8(@types/node@22.7.4))
+ '@sveltejs/vite-plugin-svelte': 3.1.2(svelte@4.2.19)(vite@5.4.8(@types/node@22.7.4)(sass@1.79.4))
debug: 4.3.7
svelte: 4.2.19
- vite: 5.4.8(@types/node@22.7.4)
+ vite: 5.4.8(@types/node@22.7.4)(sass@1.79.4)
transitivePeerDependencies:
- supports-color
- '@sveltejs/vite-plugin-svelte@3.1.2(svelte@4.2.19)(vite@5.4.8(@types/node@22.7.4))':
+ '@sveltejs/vite-plugin-svelte@3.1.2(svelte@4.2.19)(vite@5.4.8(@types/node@22.7.4)(sass@1.79.4))':
dependencies:
- '@sveltejs/vite-plugin-svelte-inspector': 2.1.0(@sveltejs/vite-plugin-svelte@3.1.2(svelte@4.2.19)(vite@5.4.8(@types/node@22.7.4)))(svelte@4.2.19)(vite@5.4.8(@types/node@22.7.4))
+ '@sveltejs/vite-plugin-svelte-inspector': 2.1.0(@sveltejs/vite-plugin-svelte@3.1.2(svelte@4.2.19)(vite@5.4.8(@types/node@22.7.4)(sass@1.79.4)))(svelte@4.2.19)(vite@5.4.8(@types/node@22.7.4)(sass@1.79.4))
debug: 4.3.7
deepmerge: 4.3.1
kleur: 4.1.5
magic-string: 0.30.11
svelte: 4.2.19
svelte-hmr: 0.16.0(svelte@4.2.19)
- vite: 5.4.8(@types/node@22.7.4)
- vitefu: 0.2.5(vite@5.4.8(@types/node@22.7.4))
+ vite: 5.4.8(@types/node@22.7.4)(sass@1.79.4)
+ vitefu: 0.2.5(vite@5.4.8(@types/node@22.7.4)(sass@1.79.4))
transitivePeerDependencies:
- supports-color
@@ -4523,7 +4552,7 @@ snapshots:
- debug
- supports-color
- astro@4.15.9(@types/node@22.7.4)(rollup@4.22.5)(typescript@5.6.2):
+ astro@4.15.9(@types/node@22.7.4)(rollup@4.22.5)(sass@1.79.4)(typescript@5.6.2):
dependencies:
'@astrojs/compiler': 2.10.3
'@astrojs/internal-helpers': 0.4.1
@@ -4582,8 +4611,8 @@ snapshots:
tsconfck: 3.1.3(typescript@5.6.2)
unist-util-visit: 5.0.0
vfile: 6.0.3
- vite: 5.4.8(@types/node@22.7.4)
- vitefu: 1.0.2(vite@5.4.8(@types/node@22.7.4))
+ vite: 5.4.8(@types/node@22.7.4)(sass@1.79.4)
+ vitefu: 1.0.2(vite@5.4.8(@types/node@22.7.4)(sass@1.79.4))
which-pm: 3.0.0
xxhash-wasm: 1.0.2
yargs-parser: 21.1.1
@@ -4825,6 +4854,11 @@ snapshots:
optionalDependencies:
fsevents: 2.3.3
+ chokidar@4.0.1:
+ dependencies:
+ readdirp: 4.0.1
+ optional: true
+
chownr@1.1.4: {}
chownr@2.0.0: {}
@@ -5617,6 +5651,9 @@ snapshots:
ieee754@1.2.1: {}
+ immutable@4.3.7:
+ optional: true
+
import-meta-resolve@4.1.0: {}
imurmurhash@0.1.4:
@@ -6688,6 +6725,9 @@ snapshots:
dependencies:
picomatch: 2.3.1
+ readdirp@4.0.1:
+ optional: true
+
real-require@0.2.0: {}
regenerator-runtime@0.14.1: {}
@@ -6885,6 +6925,13 @@ snapshots:
safer-buffer@2.1.2: {}
+ sass@1.79.4:
+ dependencies:
+ chokidar: 4.0.1
+ immutable: 4.3.7
+ source-map-js: 1.2.1
+ optional: true
+
section-matter@1.0.0:
dependencies:
extend-shallow: 2.0.1
@@ -7166,10 +7213,19 @@ snapshots:
supports-preserve-symlinks-flag@1.0.0: {}
+ svelte-french-toast@1.2.0(svelte@4.2.19):
+ dependencies:
+ svelte: 4.2.19
+ svelte-writable-derived: 3.1.1(svelte@4.2.19)
+
svelte-hmr@0.16.0(svelte@4.2.19):
dependencies:
svelte: 4.2.19
+ svelte-writable-derived@3.1.1(svelte@4.2.19):
+ dependencies:
+ svelte: 4.2.19
+
svelte2tsx@0.7.21(svelte@4.2.19)(typescript@5.6.2):
dependencies:
dedent-js: 1.0.1
@@ -7430,15 +7486,15 @@ snapshots:
'@types/unist': 3.0.3
vfile-message: 4.0.2
- vite-plugin-static-copy@1.0.6(vite@5.4.8(@types/node@22.7.4)):
+ vite-plugin-static-copy@1.0.6(vite@5.4.8(@types/node@22.7.4)(sass@1.79.4)):
dependencies:
chokidar: 3.6.0
fast-glob: 3.3.2
fs-extra: 11.2.0
picocolors: 1.1.0
- vite: 5.4.8(@types/node@22.7.4)
+ vite: 5.4.8(@types/node@22.7.4)(sass@1.79.4)
- vite@5.4.8(@types/node@22.7.4):
+ vite@5.4.8(@types/node@22.7.4)(sass@1.79.4):
dependencies:
esbuild: 0.21.5
postcss: 8.4.47
@@ -7446,14 +7502,15 @@ snapshots:
optionalDependencies:
'@types/node': 22.7.4
fsevents: 2.3.3
+ sass: 1.79.4
- vitefu@0.2.5(vite@5.4.8(@types/node@22.7.4)):
+ vitefu@0.2.5(vite@5.4.8(@types/node@22.7.4)(sass@1.79.4)):
optionalDependencies:
- vite: 5.4.8(@types/node@22.7.4)
+ vite: 5.4.8(@types/node@22.7.4)(sass@1.79.4)
- vitefu@1.0.2(vite@5.4.8(@types/node@22.7.4)):
+ vitefu@1.0.2(vite@5.4.8(@types/node@22.7.4)(sass@1.79.4)):
optionalDependencies:
- vite: 5.4.8(@types/node@22.7.4)
+ vite: 5.4.8(@types/node@22.7.4)(sass@1.79.4)
volar-service-css@0.0.61(@volar/language-service@2.4.5):
dependencies:
diff --git a/public/cloaks/canvas.ico b/public/cloaks/canvas.ico
new file mode 100644
index 0000000..7798ef1
Binary files /dev/null and b/public/cloaks/canvas.ico differ
diff --git a/public/cloaks/classroom.png b/public/cloaks/classroom.png
new file mode 100644
index 0000000..49804ad
Binary files /dev/null and b/public/cloaks/classroom.png differ
diff --git a/public/cloaks/google.png b/public/cloaks/google.png
new file mode 100644
index 0000000..8642fc1
Binary files /dev/null and b/public/cloaks/google.png differ
diff --git a/public/cloaks/ps.ico b/public/cloaks/ps.ico
new file mode 100644
index 0000000..22d60e3
Binary files /dev/null and b/public/cloaks/ps.ico differ
diff --git a/public/cloaks/wikipedia.ico b/public/cloaks/wikipedia.ico
new file mode 100644
index 0000000..e700218
Binary files /dev/null and b/public/cloaks/wikipedia.ico differ
diff --git a/src/components/settings/Loader.astro b/src/components/settings/Loader.astro
new file mode 100644
index 0000000..0ad41fb
--- /dev/null
+++ b/src/components/settings/Loader.astro
@@ -0,0 +1,7 @@
+
diff --git a/src/components/settings/SettingsCard.astro b/src/components/settings/SettingsCard.astro
index 6aaa0f0..a2f31c1 100644
--- a/src/components/settings/SettingsCard.astro
+++ b/src/components/settings/SettingsCard.astro
@@ -40,7 +40,7 @@ const { title, description, input, select, button } = Astro.props;
}
{select.select &&
-