Feat: Frontend hardening
This commit is contained in:
@@ -11,19 +11,21 @@
|
|||||||
"scripts": {
|
"scripts": {
|
||||||
"dev": "vite dev",
|
"dev": "vite dev",
|
||||||
"build": "vite build",
|
"build": "vite build",
|
||||||
"start": "vite start",
|
"typecheck": "tsc --noEmit",
|
||||||
|
"start": "vite preview",
|
||||||
"preview": "vite preview"
|
"preview": "vite preview"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"lucide-solid": "^0.542.0",
|
|
||||||
"@solidjs/start": "2.0.0-alpha.2",
|
"@solidjs/start": "2.0.0-alpha.2",
|
||||||
"@solidjs/vite-plugin-nitro-2": "^0.1.0",
|
"@solidjs/vite-plugin-nitro-2": "^0.1.0",
|
||||||
|
"lucide-solid": "^0.542.0",
|
||||||
"postcss": "^8.5.15",
|
"postcss": "^8.5.15",
|
||||||
"sass": "^1.101.0",
|
"sass": "^1.101.0",
|
||||||
"solid-js": "^1.9.5",
|
"solid-js": "^1.9.5",
|
||||||
"vite": "^7.0.0"
|
"vite": "^7.0.0"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
|
"@types/node": "^25.9.3",
|
||||||
"autoprefixer": "^10.5.0",
|
"autoprefixer": "^10.5.0",
|
||||||
"cssnano": "^8.0.2",
|
"cssnano": "^8.0.2",
|
||||||
"postcss-preset-env": "^11.3.0",
|
"postcss-preset-env": "^11.3.0",
|
||||||
|
|||||||
54
Frontend/pnpm-lock.yaml
generated
54
Frontend/pnpm-lock.yaml
generated
@@ -10,10 +10,10 @@ importers:
|
|||||||
dependencies:
|
dependencies:
|
||||||
'@solidjs/start':
|
'@solidjs/start':
|
||||||
specifier: 2.0.0-alpha.2
|
specifier: 2.0.0-alpha.2
|
||||||
version: 2.0.0-alpha.2(crossws@0.4.4(srvx@0.11.8))(vite@7.3.1(jiti@2.6.1)(sass-embedded@1.100.0)(sass@1.101.0)(terser@5.46.0))
|
version: 2.0.0-alpha.2(crossws@0.4.4(srvx@0.11.8))(vite@7.3.1(@types/node@25.9.3)(jiti@2.6.1)(sass-embedded@1.100.0)(sass@1.101.0)(terser@5.46.0))
|
||||||
'@solidjs/vite-plugin-nitro-2':
|
'@solidjs/vite-plugin-nitro-2':
|
||||||
specifier: ^0.1.0
|
specifier: ^0.1.0
|
||||||
version: 0.1.0(vite@7.3.1(jiti@2.6.1)(sass-embedded@1.100.0)(sass@1.101.0)(terser@5.46.0))
|
version: 0.1.0(vite@7.3.1(@types/node@25.9.3)(jiti@2.6.1)(sass-embedded@1.100.0)(sass@1.101.0)(terser@5.46.0))
|
||||||
lucide-solid:
|
lucide-solid:
|
||||||
specifier: ^0.542.0
|
specifier: ^0.542.0
|
||||||
version: 0.542.0(solid-js@1.9.11)
|
version: 0.542.0(solid-js@1.9.11)
|
||||||
@@ -28,8 +28,11 @@ importers:
|
|||||||
version: 1.9.11
|
version: 1.9.11
|
||||||
vite:
|
vite:
|
||||||
specifier: ^7.0.0
|
specifier: ^7.0.0
|
||||||
version: 7.3.1(jiti@2.6.1)(sass-embedded@1.100.0)(sass@1.101.0)(terser@5.46.0)
|
version: 7.3.1(@types/node@25.9.3)(jiti@2.6.1)(sass-embedded@1.100.0)(sass@1.101.0)(terser@5.46.0)
|
||||||
devDependencies:
|
devDependencies:
|
||||||
|
'@types/node':
|
||||||
|
specifier: ^25.9.3
|
||||||
|
version: 25.9.3
|
||||||
autoprefixer:
|
autoprefixer:
|
||||||
specifier: ^10.5.0
|
specifier: ^10.5.0
|
||||||
version: 10.5.0(postcss@8.5.15)
|
version: 10.5.0(postcss@8.5.15)
|
||||||
@@ -1262,6 +1265,9 @@ packages:
|
|||||||
'@types/micromatch@4.0.10':
|
'@types/micromatch@4.0.10':
|
||||||
resolution: {integrity: sha512-5jOhFDElqr4DKTrTEbnW8DZ4Hz5LRUEmyrGpCMrD/NphYv3nUnaF08xmSLx1rGGnyEs/kFnhiw6dCgcDqMr5PQ==}
|
resolution: {integrity: sha512-5jOhFDElqr4DKTrTEbnW8DZ4Hz5LRUEmyrGpCMrD/NphYv3nUnaF08xmSLx1rGGnyEs/kFnhiw6dCgcDqMr5PQ==}
|
||||||
|
|
||||||
|
'@types/node@25.9.3':
|
||||||
|
resolution: {integrity: sha512-603BddQMv3pUcr4U2dhujk83N2tTDVr/34wII2B6bJy6g+8WD6yUb11jszNs0gdi4PesVWl7ABt8nYMVpnLUcg==}
|
||||||
|
|
||||||
'@types/resolve@1.20.2':
|
'@types/resolve@1.20.2':
|
||||||
resolution: {integrity: sha512-60BCwRFOZCQhDncwQdxxeOEEkbc5dIMccYLwbxsS4TUNeVECQ/pBJ0j09mrHOl/JJvpRPGwO9SvE4nR2Nb/a4Q==}
|
resolution: {integrity: sha512-60BCwRFOZCQhDncwQdxxeOEEkbc5dIMccYLwbxsS4TUNeVECQ/pBJ0j09mrHOl/JJvpRPGwO9SvE4nR2Nb/a4Q==}
|
||||||
|
|
||||||
@@ -3217,6 +3223,9 @@ packages:
|
|||||||
unctx@2.5.0:
|
unctx@2.5.0:
|
||||||
resolution: {integrity: sha512-p+Rz9x0R7X+CYDkT+Xg8/GhpcShTlU8n+cf9OtOEf7zEQsNcCZO1dPKNRDqvUTaq+P32PMMkxWHwfrxkqfqAYg==}
|
resolution: {integrity: sha512-p+Rz9x0R7X+CYDkT+Xg8/GhpcShTlU8n+cf9OtOEf7zEQsNcCZO1dPKNRDqvUTaq+P32PMMkxWHwfrxkqfqAYg==}
|
||||||
|
|
||||||
|
undici-types@7.24.6:
|
||||||
|
resolution: {integrity: sha512-WRNW+sJgj5OBN4/0JpHFqtqzhpbnV0GuB+OozA9gCL7a993SmU+1JBZCzLNxYsbMfIeDL+lTsphD5jN5N+n0zg==}
|
||||||
|
|
||||||
unenv@2.0.0-rc.24:
|
unenv@2.0.0-rc.24:
|
||||||
resolution: {integrity: sha512-i7qRCmY42zmCwnYlh9H2SvLEypEFGye5iRmEMKjcGi7zk9UquigRjFtTLz0TYqr0ZGLZhaMHl/foy1bZR+Cwlw==}
|
resolution: {integrity: sha512-i7qRCmY42zmCwnYlh9H2SvLEypEFGye5iRmEMKjcGi7zk9UquigRjFtTLz0TYqr0ZGLZhaMHl/foy1bZR+Cwlw==}
|
||||||
|
|
||||||
@@ -4476,13 +4485,13 @@ snapshots:
|
|||||||
dependencies:
|
dependencies:
|
||||||
solid-js: 1.9.11
|
solid-js: 1.9.11
|
||||||
|
|
||||||
'@solidjs/start@2.0.0-alpha.2(crossws@0.4.4(srvx@0.11.8))(vite@7.3.1(jiti@2.6.1)(sass-embedded@1.100.0)(sass@1.101.0)(terser@5.46.0))':
|
'@solidjs/start@2.0.0-alpha.2(crossws@0.4.4(srvx@0.11.8))(vite@7.3.1(@types/node@25.9.3)(jiti@2.6.1)(sass-embedded@1.100.0)(sass@1.101.0)(terser@5.46.0))':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@babel/core': 7.29.0
|
'@babel/core': 7.29.0
|
||||||
'@babel/traverse': 7.29.0
|
'@babel/traverse': 7.29.0
|
||||||
'@babel/types': 7.29.0
|
'@babel/types': 7.29.0
|
||||||
'@solidjs/meta': 0.29.4(solid-js@1.9.11)
|
'@solidjs/meta': 0.29.4(solid-js@1.9.11)
|
||||||
'@tanstack/server-functions-plugin': 1.134.5(vite@7.3.1(jiti@2.6.1)(sass-embedded@1.100.0)(sass@1.101.0)(terser@5.46.0))
|
'@tanstack/server-functions-plugin': 1.134.5(vite@7.3.1(@types/node@25.9.3)(jiti@2.6.1)(sass-embedded@1.100.0)(sass@1.101.0)(terser@5.46.0))
|
||||||
'@types/babel__traverse': 7.28.0
|
'@types/babel__traverse': 7.28.0
|
||||||
'@types/micromatch': 4.0.10
|
'@types/micromatch': 4.0.10
|
||||||
cookie-es: 2.0.0
|
cookie-es: 2.0.0
|
||||||
@@ -4504,17 +4513,17 @@ snapshots:
|
|||||||
source-map-js: 1.2.1
|
source-map-js: 1.2.1
|
||||||
srvx: 0.9.8
|
srvx: 0.9.8
|
||||||
terracotta: 1.1.0(solid-js@1.9.11)
|
terracotta: 1.1.0(solid-js@1.9.11)
|
||||||
vite: 7.3.1(jiti@2.6.1)(sass-embedded@1.100.0)(sass@1.101.0)(terser@5.46.0)
|
vite: 7.3.1(@types/node@25.9.3)(jiti@2.6.1)(sass-embedded@1.100.0)(sass@1.101.0)(terser@5.46.0)
|
||||||
vite-plugin-solid: 2.11.10(solid-js@1.9.11)(vite@7.3.1(jiti@2.6.1)(sass-embedded@1.100.0)(sass@1.101.0)(terser@5.46.0))
|
vite-plugin-solid: 2.11.10(solid-js@1.9.11)(vite@7.3.1(@types/node@25.9.3)(jiti@2.6.1)(sass-embedded@1.100.0)(sass@1.101.0)(terser@5.46.0))
|
||||||
transitivePeerDependencies:
|
transitivePeerDependencies:
|
||||||
- '@testing-library/jest-dom'
|
- '@testing-library/jest-dom'
|
||||||
- crossws
|
- crossws
|
||||||
- supports-color
|
- supports-color
|
||||||
|
|
||||||
'@solidjs/vite-plugin-nitro-2@0.1.0(vite@7.3.1(jiti@2.6.1)(sass-embedded@1.100.0)(sass@1.101.0)(terser@5.46.0))':
|
'@solidjs/vite-plugin-nitro-2@0.1.0(vite@7.3.1(@types/node@25.9.3)(jiti@2.6.1)(sass-embedded@1.100.0)(sass@1.101.0)(terser@5.46.0))':
|
||||||
dependencies:
|
dependencies:
|
||||||
nitropack: 2.13.1
|
nitropack: 2.13.1
|
||||||
vite: 7.3.1(jiti@2.6.1)(sass-embedded@1.100.0)(sass@1.101.0)(terser@5.46.0)
|
vite: 7.3.1(@types/node@25.9.3)(jiti@2.6.1)(sass-embedded@1.100.0)(sass@1.101.0)(terser@5.46.0)
|
||||||
transitivePeerDependencies:
|
transitivePeerDependencies:
|
||||||
- '@azure/app-configuration'
|
- '@azure/app-configuration'
|
||||||
- '@azure/cosmos'
|
- '@azure/cosmos'
|
||||||
@@ -4549,7 +4558,7 @@ snapshots:
|
|||||||
|
|
||||||
'@speed-highlight/core@1.2.14': {}
|
'@speed-highlight/core@1.2.14': {}
|
||||||
|
|
||||||
'@tanstack/directive-functions-plugin@1.134.5(vite@7.3.1(jiti@2.6.1)(sass-embedded@1.100.0)(sass@1.101.0)(terser@5.46.0))':
|
'@tanstack/directive-functions-plugin@1.134.5(vite@7.3.1(@types/node@25.9.3)(jiti@2.6.1)(sass-embedded@1.100.0)(sass@1.101.0)(terser@5.46.0))':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@babel/code-frame': 7.27.1
|
'@babel/code-frame': 7.27.1
|
||||||
'@babel/core': 7.29.0
|
'@babel/core': 7.29.0
|
||||||
@@ -4559,7 +4568,7 @@ snapshots:
|
|||||||
babel-dead-code-elimination: 1.0.12
|
babel-dead-code-elimination: 1.0.12
|
||||||
pathe: 2.0.3
|
pathe: 2.0.3
|
||||||
tiny-invariant: 1.3.3
|
tiny-invariant: 1.3.3
|
||||||
vite: 7.3.1(jiti@2.6.1)(sass-embedded@1.100.0)(sass@1.101.0)(terser@5.46.0)
|
vite: 7.3.1(@types/node@25.9.3)(jiti@2.6.1)(sass-embedded@1.100.0)(sass@1.101.0)(terser@5.46.0)
|
||||||
transitivePeerDependencies:
|
transitivePeerDependencies:
|
||||||
- supports-color
|
- supports-color
|
||||||
|
|
||||||
@@ -4576,7 +4585,7 @@ snapshots:
|
|||||||
transitivePeerDependencies:
|
transitivePeerDependencies:
|
||||||
- supports-color
|
- supports-color
|
||||||
|
|
||||||
'@tanstack/server-functions-plugin@1.134.5(vite@7.3.1(jiti@2.6.1)(sass-embedded@1.100.0)(sass@1.101.0)(terser@5.46.0))':
|
'@tanstack/server-functions-plugin@1.134.5(vite@7.3.1(@types/node@25.9.3)(jiti@2.6.1)(sass-embedded@1.100.0)(sass@1.101.0)(terser@5.46.0))':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@babel/code-frame': 7.27.1
|
'@babel/code-frame': 7.27.1
|
||||||
'@babel/core': 7.29.0
|
'@babel/core': 7.29.0
|
||||||
@@ -4585,7 +4594,7 @@ snapshots:
|
|||||||
'@babel/template': 7.28.6
|
'@babel/template': 7.28.6
|
||||||
'@babel/traverse': 7.29.0
|
'@babel/traverse': 7.29.0
|
||||||
'@babel/types': 7.29.0
|
'@babel/types': 7.29.0
|
||||||
'@tanstack/directive-functions-plugin': 1.134.5(vite@7.3.1(jiti@2.6.1)(sass-embedded@1.100.0)(sass@1.101.0)(terser@5.46.0))
|
'@tanstack/directive-functions-plugin': 1.134.5(vite@7.3.1(@types/node@25.9.3)(jiti@2.6.1)(sass-embedded@1.100.0)(sass@1.101.0)(terser@5.46.0))
|
||||||
babel-dead-code-elimination: 1.0.12
|
babel-dead-code-elimination: 1.0.12
|
||||||
tiny-invariant: 1.3.3
|
tiny-invariant: 1.3.3
|
||||||
transitivePeerDependencies:
|
transitivePeerDependencies:
|
||||||
@@ -4629,6 +4638,10 @@ snapshots:
|
|||||||
dependencies:
|
dependencies:
|
||||||
'@types/braces': 3.0.5
|
'@types/braces': 3.0.5
|
||||||
|
|
||||||
|
'@types/node@25.9.3':
|
||||||
|
dependencies:
|
||||||
|
undici-types: 7.24.6
|
||||||
|
|
||||||
'@types/resolve@1.20.2': {}
|
'@types/resolve@1.20.2': {}
|
||||||
|
|
||||||
'@types/unist@3.0.3': {}
|
'@types/unist@3.0.3': {}
|
||||||
@@ -6753,6 +6766,8 @@ snapshots:
|
|||||||
magic-string: 0.30.21
|
magic-string: 0.30.21
|
||||||
unplugin: 2.3.11
|
unplugin: 2.3.11
|
||||||
|
|
||||||
|
undici-types@7.24.6: {}
|
||||||
|
|
||||||
unenv@2.0.0-rc.24:
|
unenv@2.0.0-rc.24:
|
||||||
dependencies:
|
dependencies:
|
||||||
pathe: 2.0.3
|
pathe: 2.0.3
|
||||||
@@ -6876,7 +6891,7 @@ snapshots:
|
|||||||
'@types/unist': 3.0.3
|
'@types/unist': 3.0.3
|
||||||
vfile-message: 4.0.3
|
vfile-message: 4.0.3
|
||||||
|
|
||||||
vite-plugin-solid@2.11.10(solid-js@1.9.11)(vite@7.3.1(jiti@2.6.1)(sass-embedded@1.100.0)(sass@1.101.0)(terser@5.46.0)):
|
vite-plugin-solid@2.11.10(solid-js@1.9.11)(vite@7.3.1(@types/node@25.9.3)(jiti@2.6.1)(sass-embedded@1.100.0)(sass@1.101.0)(terser@5.46.0)):
|
||||||
dependencies:
|
dependencies:
|
||||||
'@babel/core': 7.29.0
|
'@babel/core': 7.29.0
|
||||||
'@types/babel__core': 7.20.5
|
'@types/babel__core': 7.20.5
|
||||||
@@ -6884,12 +6899,12 @@ snapshots:
|
|||||||
merge-anything: 5.1.7
|
merge-anything: 5.1.7
|
||||||
solid-js: 1.9.11
|
solid-js: 1.9.11
|
||||||
solid-refresh: 0.6.3(solid-js@1.9.11)
|
solid-refresh: 0.6.3(solid-js@1.9.11)
|
||||||
vite: 7.3.1(jiti@2.6.1)(sass-embedded@1.100.0)(sass@1.101.0)(terser@5.46.0)
|
vite: 7.3.1(@types/node@25.9.3)(jiti@2.6.1)(sass-embedded@1.100.0)(sass@1.101.0)(terser@5.46.0)
|
||||||
vitefu: 1.1.2(vite@7.3.1(jiti@2.6.1)(sass-embedded@1.100.0)(sass@1.101.0)(terser@5.46.0))
|
vitefu: 1.1.2(vite@7.3.1(@types/node@25.9.3)(jiti@2.6.1)(sass-embedded@1.100.0)(sass@1.101.0)(terser@5.46.0))
|
||||||
transitivePeerDependencies:
|
transitivePeerDependencies:
|
||||||
- supports-color
|
- supports-color
|
||||||
|
|
||||||
vite@7.3.1(jiti@2.6.1)(sass-embedded@1.100.0)(sass@1.101.0)(terser@5.46.0):
|
vite@7.3.1(@types/node@25.9.3)(jiti@2.6.1)(sass-embedded@1.100.0)(sass@1.101.0)(terser@5.46.0):
|
||||||
dependencies:
|
dependencies:
|
||||||
esbuild: 0.27.3
|
esbuild: 0.27.3
|
||||||
fdir: 6.5.0(picomatch@4.0.3)
|
fdir: 6.5.0(picomatch@4.0.3)
|
||||||
@@ -6898,15 +6913,16 @@ snapshots:
|
|||||||
rollup: 4.59.0
|
rollup: 4.59.0
|
||||||
tinyglobby: 0.2.15
|
tinyglobby: 0.2.15
|
||||||
optionalDependencies:
|
optionalDependencies:
|
||||||
|
'@types/node': 25.9.3
|
||||||
fsevents: 2.3.3
|
fsevents: 2.3.3
|
||||||
jiti: 2.6.1
|
jiti: 2.6.1
|
||||||
sass: 1.101.0
|
sass: 1.101.0
|
||||||
sass-embedded: 1.100.0
|
sass-embedded: 1.100.0
|
||||||
terser: 5.46.0
|
terser: 5.46.0
|
||||||
|
|
||||||
vitefu@1.1.2(vite@7.3.1(jiti@2.6.1)(sass-embedded@1.100.0)(sass@1.101.0)(terser@5.46.0)):
|
vitefu@1.1.2(vite@7.3.1(@types/node@25.9.3)(jiti@2.6.1)(sass-embedded@1.100.0)(sass@1.101.0)(terser@5.46.0)):
|
||||||
optionalDependencies:
|
optionalDependencies:
|
||||||
vite: 7.3.1(jiti@2.6.1)(sass-embedded@1.100.0)(sass@1.101.0)(terser@5.46.0)
|
vite: 7.3.1(@types/node@25.9.3)(jiti@2.6.1)(sass-embedded@1.100.0)(sass@1.101.0)(terser@5.46.0)
|
||||||
|
|
||||||
webidl-conversions@3.0.1: {}
|
webidl-conversions@3.0.1: {}
|
||||||
|
|
||||||
|
|||||||
@@ -1,4 +1,21 @@
|
|||||||
|
// Path: Frontend/src/entry-client.tsx
|
||||||
|
|
||||||
// @refresh reload
|
// @refresh reload
|
||||||
|
import type { JSX } from "solid-js";
|
||||||
import { mount, StartClient } from "@solidjs/start/client";
|
import { mount, StartClient } from "@solidjs/start/client";
|
||||||
|
|
||||||
mount(() => <StartClient />, document.getElementById("app")!);
|
const getAppRoot = (): HTMLElement => {
|
||||||
|
const appRoot = document.getElementById("app");
|
||||||
|
|
||||||
|
if (!(appRoot instanceof HTMLElement)) {
|
||||||
|
throw new Error("App root element '#app' was not found.");
|
||||||
|
}
|
||||||
|
|
||||||
|
return appRoot;
|
||||||
|
};
|
||||||
|
|
||||||
|
const mountApp = (): void => {
|
||||||
|
mount((): JSX.Element => <StartClient />, getAppRoot());
|
||||||
|
};
|
||||||
|
|
||||||
|
mountApp();
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
// Path: Frontend/src/entry-server.tsx
|
// Path: Frontend/src/entry-server.tsx
|
||||||
|
|
||||||
// @refresh reload
|
// @refresh reload
|
||||||
|
import type { JSX } from "solid-js";
|
||||||
import { createHandler, StartServer } from "@solidjs/start/server";
|
import { createHandler, StartServer } from "@solidjs/start/server";
|
||||||
|
|
||||||
const themeBootstrapScript = `
|
const themeBootstrapScript = `
|
||||||
@@ -19,22 +20,32 @@ const themeBootstrapScript = `
|
|||||||
})();
|
})();
|
||||||
`;
|
`;
|
||||||
|
|
||||||
export default createHandler(() => (
|
type DocumentRenderProps = {
|
||||||
<StartServer
|
assets?: JSX.Element;
|
||||||
document={({ assets, children, scripts }) => (
|
children?: JSX.Element;
|
||||||
<html lang="en" data-theme="light">
|
scripts?: JSX.Element;
|
||||||
<head>
|
};
|
||||||
<meta charset="utf-8" />
|
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
const renderDocument = ({ assets, children, scripts }: DocumentRenderProps): JSX.Element => {
|
||||||
<link rel="icon" href="/favicon.ico" />
|
return (
|
||||||
<script innerHTML={themeBootstrapScript} />
|
<html lang="en" data-theme="light">
|
||||||
{assets}
|
<head>
|
||||||
</head>
|
<meta charset="utf-8" />
|
||||||
<body>
|
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
||||||
<div id="app">{children}</div>
|
<link rel="icon" href="/favicon.ico" />
|
||||||
{scripts}
|
<script innerHTML={themeBootstrapScript} />
|
||||||
</body>
|
{assets}
|
||||||
</html>
|
</head>
|
||||||
)}
|
<body>
|
||||||
/>
|
<div id="app">{children}</div>
|
||||||
));
|
{scripts}
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
|
);
|
||||||
|
};
|
||||||
|
|
||||||
|
const serverHandler = createHandler((): JSX.Element => {
|
||||||
|
return <StartServer document={renderDocument} />;
|
||||||
|
});
|
||||||
|
|
||||||
|
export default serverHandler;
|
||||||
|
|||||||
2
Frontend/src/global.d.ts
vendored
2
Frontend/src/global.d.ts
vendored
@@ -1 +1,3 @@
|
|||||||
|
// Path: Frontend/src/global.d.ts
|
||||||
|
|
||||||
/// <reference types="@solidjs/start/env" />
|
/// <reference types="@solidjs/start/env" />
|
||||||
|
|||||||
@@ -16,7 +16,7 @@ export const resolvePreferredTheme = (): Theme => {
|
|||||||
|
|
||||||
export const getDocumentTheme = (): Theme => (document.documentElement.getAttribute("data-theme") === "dark" ? "dark" : "light");
|
export const getDocumentTheme = (): Theme => (document.documentElement.getAttribute("data-theme") === "dark" ? "dark" : "light");
|
||||||
|
|
||||||
export const setTheme = (theme: Theme) => {
|
export const setTheme = (theme: Theme): void => {
|
||||||
document.documentElement.setAttribute("data-theme", theme);
|
document.documentElement.setAttribute("data-theme", theme);
|
||||||
localStorage.setItem(THEME_STORAGE_KEY, theme);
|
localStorage.setItem(THEME_STORAGE_KEY, theme);
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -1,3 +1,11 @@
|
|||||||
// Path: Frontend/src/lib/icons/index.ts
|
// Path: Frontend/src/lib/icons/index.ts
|
||||||
|
|
||||||
export { Bell, Check, ChevronDown, ChevronLeft, ChevronRight, Folder, FolderOpen, Home, LayoutGrid, MoreHorizontal, Plus, Search, Settings, User, X } from "lucide-solid";
|
export { default as Bell } from "lucide-solid/icons/bell";
|
||||||
|
export { default as ChevronDown } from "lucide-solid/icons/chevron-down";
|
||||||
|
export { default as Folder } from "lucide-solid/icons/folder";
|
||||||
|
export { default as Home } from "lucide-solid/icons/house";
|
||||||
|
export { default as LayoutGrid } from "lucide-solid/icons/layout-grid";
|
||||||
|
export { default as Plus } from "lucide-solid/icons/plus";
|
||||||
|
export { default as Search } from "lucide-solid/icons/search";
|
||||||
|
export { default as Settings } from "lucide-solid/icons/settings";
|
||||||
|
export { default as User } from "lucide-solid/icons/user";
|
||||||
|
|||||||
@@ -1,19 +1,21 @@
|
|||||||
{
|
{
|
||||||
"compilerOptions": {
|
"compilerOptions": {
|
||||||
"target": "ESNext",
|
"target": "ESNext",
|
||||||
"module": "ESNext",
|
"lib": ["DOM", "DOM.Iterable", "ESNext"],
|
||||||
"moduleResolution": "bundler",
|
"module": "ESNext",
|
||||||
"allowSyntheticDefaultImports": true,
|
"moduleResolution": "bundler",
|
||||||
"esModuleInterop": true,
|
"allowSyntheticDefaultImports": true,
|
||||||
"jsx": "preserve",
|
"esModuleInterop": true,
|
||||||
"jsxImportSource": "solid-js",
|
"jsx": "preserve",
|
||||||
"allowJs": true,
|
"jsxImportSource": "solid-js",
|
||||||
"strict": true,
|
"allowJs": true,
|
||||||
"noEmit": true,
|
"strict": true,
|
||||||
"types": ["vite/client"],
|
"skipLibCheck": true,
|
||||||
"isolatedModules": true,
|
"noEmit": true,
|
||||||
"paths": {
|
"types": ["vite/client", "node"],
|
||||||
"~/*": ["./src/*"]
|
"isolatedModules": true,
|
||||||
}
|
"paths": {
|
||||||
}
|
"~/*": ["./src/*"]
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user