diff --git a/index.html b/index.html
index ce0f261..918ac73 100644
--- a/index.html
+++ b/index.html
@@ -4,7 +4,6 @@
-
Pull the Trigger
diff --git a/package-lock.json b/package-lock.json
index b0efd21..17ca402 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -8,37 +8,38 @@
"name": "triggerfrontend",
"version": "1.1.0",
"dependencies": {
- "@gfazioli/mantine-text-animate": "^2.3.10",
+ "@gfazioli/mantine-text-animate": "^2.3.12",
"@hello-pangea/dnd": "^18.0.1",
- "@mantine/core": "^8.3.12",
- "@mantine/dates": "^8.3.12",
- "@mantine/form": "^8.3.12",
- "@mantine/hooks": "^8.3.12",
- "@mantine/notifications": "^8.3.12",
- "@tanstack/react-query": "^5.90.16",
+ "@mantine/core": "^8.3.13",
+ "@mantine/dates": "^8.3.13",
+ "@mantine/form": "^8.3.13",
+ "@mantine/hooks": "^8.3.13",
+ "@mantine/notifications": "^8.3.13",
+ "@tanstack/react-query": "^5.90.20",
"@tanstack/react-query-devtools": "^5.91.2",
- "@tanstack/react-query-persist-client": "^5.90.18",
+ "@tanstack/react-query-persist-client": "^5.90.22",
"@tanstack/react-table": "^8.21.3",
"idb-keyval": "^6.2.2",
- "jotai": "^2.16.1",
- "react": "^19.2.3",
- "react-dom": "^19.2.3",
+ "jotai": "^2.17.0",
+ "react": "^19.2.4",
+ "react-dom": "^19.2.4",
+ "react-fontpicker-ts": "^1.3.0",
"react-icons": "^5.5.0",
- "react-router-dom": "^7.12.0",
- "recharts": "^3.6.0"
+ "react-router-dom": "^7.13.0",
+ "recharts": "^3.7.0"
},
"devDependencies": {
- "@types/node": "^25.0.3",
- "@types/react": "^19.2.7",
+ "@types/node": "^25.1.0",
+ "@types/react": "^19.2.10",
"@types/react-dom": "^19.2.3",
"@vitejs/plugin-react": "^5.1.2",
- "@vitest/coverage-v8": "^4.0.16",
- "@vitest/ui": "^4.0.16",
+ "@vitest/coverage-v8": "^4.0.18",
+ "@vitest/ui": "^4.0.18",
"typescript": "^5.9.3",
"vite": "^7.3.1",
"vite-plugin-dts": "~4.5.4",
- "vite-tsconfig-paths": "^6.0.3",
- "vitest": "^4.0.16"
+ "vite-tsconfig-paths": "^6.0.5",
+ "vitest": "^4.0.18"
}
},
"node_modules/@babel/code-frame": {
@@ -834,9 +835,9 @@
"license": "MIT"
},
"node_modules/@gfazioli/mantine-text-animate": {
- "version": "2.3.10",
- "resolved": "https://registry.npmjs.org/@gfazioli/mantine-text-animate/-/mantine-text-animate-2.3.10.tgz",
- "integrity": "sha512-2mN/0dN6NteRNdMEC7wKkycJPwTfSO0MoNBzf00tDUk8sBeMQkV+f4bRLw0F7Z0MnbjSafh1bolzdS0uwKvYRw==",
+ "version": "2.3.12",
+ "resolved": "https://registry.npmjs.org/@gfazioli/mantine-text-animate/-/mantine-text-animate-2.3.12.tgz",
+ "integrity": "sha512-On/IBFHloxPk7ObXys/mcCUe3tuOvg92+BTqh4LIn3KhY7hcfZ8lIGPO8iOMMMN9g63tNH2tTaCwoKFAxr4aZg==",
"peerDependencies": {
"@mantine/core": ">=7.0.0",
"@mantine/hooks": ">=7.0.0",
@@ -911,9 +912,9 @@
}
},
"node_modules/@mantine/core": {
- "version": "8.3.12",
- "resolved": "https://registry.npmjs.org/@mantine/core/-/core-8.3.12.tgz",
- "integrity": "sha512-bDEoUl4SneltfI1GeEaBk6BVDbLuB/w15YwseAmUvc8ldAbNcsVhxKxY/BdhwqUo6O3L2vhdlb3WwxR1y8741g==",
+ "version": "8.3.13",
+ "resolved": "https://registry.npmjs.org/@mantine/core/-/core-8.3.13.tgz",
+ "integrity": "sha512-ZgW4vqN4meaPyIMxzAufBvsgmJRfYZdTpsrAOcS8pWy7m9e8i685E7XsAxnwJCOIHudpvpvt+7Bx7VaIjEsYEw==",
"dependencies": {
"@floating-ui/react": "^0.27.16",
"clsx": "^2.1.1",
@@ -923,30 +924,30 @@
"type-fest": "^4.41.0"
},
"peerDependencies": {
- "@mantine/hooks": "8.3.12",
+ "@mantine/hooks": "8.3.13",
"react": "^18.x || ^19.x",
"react-dom": "^18.x || ^19.x"
}
},
"node_modules/@mantine/dates": {
- "version": "8.3.12",
- "resolved": "https://registry.npmjs.org/@mantine/dates/-/dates-8.3.12.tgz",
- "integrity": "sha512-rL2kYJRTrU29l1KjQt5bdUweiZuJs3DjiIcc6VGHUuj7OwfYZbEpWzMbcu8fSrya/+kZAe8JM0irX22CjmsDGw==",
+ "version": "8.3.13",
+ "resolved": "https://registry.npmjs.org/@mantine/dates/-/dates-8.3.13.tgz",
+ "integrity": "sha512-Fk3k9oUENQQwU2cb1Ir2Q3J17emkYvW8xWaAF3nZC0PEF4KddY/p8bhF4NCxhsRjkvtEJiaAWlEq+6LF6hNxDA==",
"dependencies": {
"clsx": "^2.1.1"
},
"peerDependencies": {
- "@mantine/core": "8.3.12",
- "@mantine/hooks": "8.3.12",
+ "@mantine/core": "8.3.13",
+ "@mantine/hooks": "8.3.13",
"dayjs": ">=1.0.0",
"react": "^18.x || ^19.x",
"react-dom": "^18.x || ^19.x"
}
},
"node_modules/@mantine/form": {
- "version": "8.3.12",
- "resolved": "https://registry.npmjs.org/@mantine/form/-/form-8.3.12.tgz",
- "integrity": "sha512-bjXL1Ah3lAZYHrjrF37FeHV8DFGeXV+apn0PRQw2MTLpdUSqKsiYIDDgugzRfNXWX1cn1ELtxtDXsMfdj/LI7Q==",
+ "version": "8.3.13",
+ "resolved": "https://registry.npmjs.org/@mantine/form/-/form-8.3.13.tgz",
+ "integrity": "sha512-P7Avh24QiL8V517Jxj8JuUbCuSOA1BjwTB8/htH92cRmLoJtWn4ycZYE7ks8v3Hrg8fpd0Xd2O5o9R4+bXwD/A==",
"dependencies": {
"fast-deep-equal": "^3.1.3",
"klona": "^2.0.6"
@@ -956,32 +957,32 @@
}
},
"node_modules/@mantine/hooks": {
- "version": "8.3.12",
- "resolved": "https://registry.npmjs.org/@mantine/hooks/-/hooks-8.3.12.tgz",
- "integrity": "sha512-lMMDzDewd3lUNtJCAHDj3g8On9X5aBl4q6EBwgOixKQSby9RG9ASEpK8oYHundHTm9tzo3MDeXWV/z32oSQWuw==",
+ "version": "8.3.13",
+ "resolved": "https://registry.npmjs.org/@mantine/hooks/-/hooks-8.3.13.tgz",
+ "integrity": "sha512-7YMbMW/tR9E8m/9DbBW01+3RNApm2mE/JbRKXf9s9+KxgbjQvq0FYGWV8Y4+Sjz48AO4vtWk2qBriUTgBMKAyg==",
"peerDependencies": {
"react": "^18.x || ^19.x"
}
},
"node_modules/@mantine/notifications": {
- "version": "8.3.12",
- "resolved": "https://registry.npmjs.org/@mantine/notifications/-/notifications-8.3.12.tgz",
- "integrity": "sha512-lqPPa11XdcndG8ywMao8yVkMA4jg/pBNbS85bR7OwHQa1yUftmfVlqJl9PZZCiWLX2AgKY3+xM5dHo4LidL+DA==",
+ "version": "8.3.13",
+ "resolved": "https://registry.npmjs.org/@mantine/notifications/-/notifications-8.3.13.tgz",
+ "integrity": "sha512-VgQwA3C4NbjguobobFnqqQyKBWXOfzM8BES1LIX9EyzMwsvGAlShJHrF9/yLS0Jqf5DiZi4L8hxL3wcmmbnljA==",
"dependencies": {
- "@mantine/store": "8.3.12",
+ "@mantine/store": "8.3.13",
"react-transition-group": "4.4.5"
},
"peerDependencies": {
- "@mantine/core": "8.3.12",
- "@mantine/hooks": "8.3.12",
+ "@mantine/core": "8.3.13",
+ "@mantine/hooks": "8.3.13",
"react": "^18.x || ^19.x",
"react-dom": "^18.x || ^19.x"
}
},
"node_modules/@mantine/store": {
- "version": "8.3.12",
- "resolved": "https://registry.npmjs.org/@mantine/store/-/store-8.3.12.tgz",
- "integrity": "sha512-EC4eIKpm5s7neMbBrWsP6jGKLqrzHf63Ao3penYr7fn25dFXdbXZYw+IG8GYzxOC4yG61b2zTS+bpy5+vwzXpw==",
+ "version": "8.3.13",
+ "resolved": "https://registry.npmjs.org/@mantine/store/-/store-8.3.13.tgz",
+ "integrity": "sha512-pnHHwiffGfaqLFxuyJIuU1P6+3zOd7bfBRVFFzIEDyUbPJs7dmVUFt31bry5FokrBfCjNWyg2XfyAQqIwd2LLA==",
"peerDependencies": {
"react": "^18.x || ^19.x"
}
@@ -1608,9 +1609,9 @@
"license": "MIT"
},
"node_modules/@tanstack/query-core": {
- "version": "5.90.16",
- "resolved": "https://registry.npmjs.org/@tanstack/query-core/-/query-core-5.90.16.tgz",
- "integrity": "sha512-MvtWckSVufs/ja463/K4PyJeqT+HMlJWtw6PrCpywznd2NSgO3m4KwO9RqbFqGg6iDE8vVMFWMeQI4Io3eEYww==",
+ "version": "5.90.20",
+ "resolved": "https://registry.npmjs.org/@tanstack/query-core/-/query-core-5.90.20.tgz",
+ "integrity": "sha512-OMD2HLpNouXEfZJWcKeVKUgQ5n+n3A2JFmBaScpNDUqSrQSjiveC7dKMe53uJUg1nDG16ttFPz2xfilz6i2uVg==",
"funding": {
"type": "github",
"url": "https://github.com/sponsors/tannerlinsley"
@@ -1626,11 +1627,11 @@
}
},
"node_modules/@tanstack/query-persist-client-core": {
- "version": "5.91.15",
- "resolved": "https://registry.npmjs.org/@tanstack/query-persist-client-core/-/query-persist-client-core-5.91.15.tgz",
- "integrity": "sha512-vnPSfQVo41EKJN8v20nkhWNZPyB1dMJIy5icOvCGzcCJzsmRefYY1owtr63ICOcjOiPPTuNEfPsdjdBhkzYnmA==",
+ "version": "5.91.19",
+ "resolved": "https://registry.npmjs.org/@tanstack/query-persist-client-core/-/query-persist-client-core-5.91.19.tgz",
+ "integrity": "sha512-whrASqbVq8261Ue+/ZzpHsrLDYVfRaENs4HTdLuYKxawkGWzdMfV7BmOdWl8ZF0mEBEbrQR8V6oE3R635JF2Fw==",
"dependencies": {
- "@tanstack/query-core": "5.90.16"
+ "@tanstack/query-core": "5.90.20"
},
"funding": {
"type": "github",
@@ -1638,11 +1639,11 @@
}
},
"node_modules/@tanstack/react-query": {
- "version": "5.90.16",
- "resolved": "https://registry.npmjs.org/@tanstack/react-query/-/react-query-5.90.16.tgz",
- "integrity": "sha512-bpMGOmV4OPmif7TNMteU/Ehf/hoC0Kf98PDc0F4BZkFrEapRMEqI/V6YS0lyzwSV6PQpY1y4xxArUIfBW5LVxQ==",
+ "version": "5.90.20",
+ "resolved": "https://registry.npmjs.org/@tanstack/react-query/-/react-query-5.90.20.tgz",
+ "integrity": "sha512-vXBxa+qeyveVO7OA0jX1z+DeyCA4JKnThKv411jd5SORpBKgkcVnYKCiBgECvADvniBX7tobwBmg01qq9JmMJw==",
"dependencies": {
- "@tanstack/query-core": "5.90.16"
+ "@tanstack/query-core": "5.90.20"
},
"funding": {
"type": "github",
@@ -1669,18 +1670,18 @@
}
},
"node_modules/@tanstack/react-query-persist-client": {
- "version": "5.90.18",
- "resolved": "https://registry.npmjs.org/@tanstack/react-query-persist-client/-/react-query-persist-client-5.90.18.tgz",
- "integrity": "sha512-ToVRTVpjzTrd9S/p7JIvGdLs+Xtz9aDMM/7+TQGSV9notY8Jt64irfAAAkZ05syftLKS+3KPgyKAnHcVeKVbWQ==",
+ "version": "5.90.22",
+ "resolved": "https://registry.npmjs.org/@tanstack/react-query-persist-client/-/react-query-persist-client-5.90.22.tgz",
+ "integrity": "sha512-BrD3Y/SsrSIDl+t/gpYvjvGHXd7m7oF+GIqktKE8LmTgt7bS1lYHd/CLkVxMPixTU53gHHVFfPNGmY7Hv4L/7g==",
"dependencies": {
- "@tanstack/query-persist-client-core": "5.91.15"
+ "@tanstack/query-persist-client-core": "5.91.19"
},
"funding": {
"type": "github",
"url": "https://github.com/sponsors/tannerlinsley"
},
"peerDependencies": {
- "@tanstack/react-query": "^5.90.16",
+ "@tanstack/react-query": "^5.90.20",
"react": "^18 || ^19"
}
},
@@ -1851,18 +1852,18 @@
"license": "MIT"
},
"node_modules/@types/node": {
- "version": "25.0.3",
- "resolved": "https://registry.npmjs.org/@types/node/-/node-25.0.3.tgz",
- "integrity": "sha512-W609buLVRVmeW693xKfzHeIV6nJGGz98uCPfeXI1ELMLXVeKYZ9m15fAMSaUPBHYLGFsVRcMmSCksQOrZV9BYA==",
+ "version": "25.1.0",
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-25.1.0.tgz",
+ "integrity": "sha512-t7frlewr6+cbx+9Ohpl0NOTKXZNV9xHRmNOvql47BFJKcEG1CxtxlPEEe+gR9uhVWM4DwhnvTF110mIL4yP9RA==",
"dev": true,
"dependencies": {
"undici-types": "~7.16.0"
}
},
"node_modules/@types/react": {
- "version": "19.2.7",
- "resolved": "https://registry.npmjs.org/@types/react/-/react-19.2.7.tgz",
- "integrity": "sha512-MWtvHrGZLFttgeEj28VXHxpmwYbor/ATPYbBfSFZEIRK0ecCFLl2Qo55z52Hss+UV9CRN7trSeq1zbgx7YDWWg==",
+ "version": "19.2.10",
+ "resolved": "https://registry.npmjs.org/@types/react/-/react-19.2.10.tgz",
+ "integrity": "sha512-WPigyYuGhgZ/cTPRXB2EwUw+XvsRA3GqHlsP4qteqrnnjDrApbS7MxcGr/hke5iUoeB7E/gQtrs9I37zAJ0Vjw==",
"devOptional": true,
"dependencies": {
"csstype": "^3.2.2"
@@ -1905,17 +1906,16 @@
}
},
"node_modules/@vitest/coverage-v8": {
- "version": "4.0.16",
- "resolved": "https://registry.npmjs.org/@vitest/coverage-v8/-/coverage-v8-4.0.16.tgz",
- "integrity": "sha512-2rNdjEIsPRzsdu6/9Eq0AYAzYdpP6Bx9cje9tL3FE5XzXRQF1fNU9pe/1yE8fCrS0HD+fBtt6gLPh6LI57tX7A==",
+ "version": "4.0.18",
+ "resolved": "https://registry.npmjs.org/@vitest/coverage-v8/-/coverage-v8-4.0.18.tgz",
+ "integrity": "sha512-7i+N2i0+ME+2JFZhfuz7Tg/FqKtilHjGyGvoHYQ6iLV0zahbsJ9sljC9OcFcPDbhYKCet+sG8SsVqlyGvPflZg==",
"dev": true,
"dependencies": {
"@bcoe/v8-coverage": "^1.0.2",
- "@vitest/utils": "4.0.16",
- "ast-v8-to-istanbul": "^0.3.8",
+ "@vitest/utils": "4.0.18",
+ "ast-v8-to-istanbul": "^0.3.10",
"istanbul-lib-coverage": "^3.2.2",
"istanbul-lib-report": "^3.0.1",
- "istanbul-lib-source-maps": "^5.0.6",
"istanbul-reports": "^3.2.0",
"magicast": "^0.5.1",
"obug": "^2.1.1",
@@ -1926,8 +1926,8 @@
"url": "https://opencollective.com/vitest"
},
"peerDependencies": {
- "@vitest/browser": "4.0.16",
- "vitest": "4.0.16"
+ "@vitest/browser": "4.0.18",
+ "vitest": "4.0.18"
},
"peerDependenciesMeta": {
"@vitest/browser": {
@@ -1936,15 +1936,15 @@
}
},
"node_modules/@vitest/expect": {
- "version": "4.0.16",
- "resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-4.0.16.tgz",
- "integrity": "sha512-eshqULT2It7McaJkQGLkPjPjNph+uevROGuIMJdG3V+0BSR2w9u6J9Lwu+E8cK5TETlfou8GRijhafIMhXsimA==",
+ "version": "4.0.18",
+ "resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-4.0.18.tgz",
+ "integrity": "sha512-8sCWUyckXXYvx4opfzVY03EOiYVxyNrHS5QxX3DAIi5dpJAAkyJezHCP77VMX4HKA2LDT/Jpfo8i2r5BE3GnQQ==",
"dev": true,
"dependencies": {
"@standard-schema/spec": "^1.0.0",
"@types/chai": "^5.2.2",
- "@vitest/spy": "4.0.16",
- "@vitest/utils": "4.0.16",
+ "@vitest/spy": "4.0.18",
+ "@vitest/utils": "4.0.18",
"chai": "^6.2.1",
"tinyrainbow": "^3.0.3"
},
@@ -1953,12 +1953,12 @@
}
},
"node_modules/@vitest/mocker": {
- "version": "4.0.16",
- "resolved": "https://registry.npmjs.org/@vitest/mocker/-/mocker-4.0.16.tgz",
- "integrity": "sha512-yb6k4AZxJTB+q9ycAvsoxGn+j/po0UaPgajllBgt1PzoMAAmJGYFdDk0uCcRcxb3BrME34I6u8gHZTQlkqSZpg==",
+ "version": "4.0.18",
+ "resolved": "https://registry.npmjs.org/@vitest/mocker/-/mocker-4.0.18.tgz",
+ "integrity": "sha512-HhVd0MDnzzsgevnOWCBj5Otnzobjy5wLBe4EdeeFGv8luMsGcYqDuFRMcttKWZA5vVO8RFjexVovXvAM4JoJDQ==",
"dev": true,
"dependencies": {
- "@vitest/spy": "4.0.16",
+ "@vitest/spy": "4.0.18",
"estree-walker": "^3.0.3",
"magic-string": "^0.30.21"
},
@@ -1988,9 +1988,9 @@
}
},
"node_modules/@vitest/pretty-format": {
- "version": "4.0.16",
- "resolved": "https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-4.0.16.tgz",
- "integrity": "sha512-eNCYNsSty9xJKi/UdVD8Ou16alu7AYiS2fCPRs0b1OdhJiV89buAXQLpTbe+X8V9L6qrs9CqyvU7OaAopJYPsA==",
+ "version": "4.0.18",
+ "resolved": "https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-4.0.18.tgz",
+ "integrity": "sha512-P24GK3GulZWC5tz87ux0m8OADrQIUVDPIjjj65vBXYG17ZeU3qD7r+MNZ1RNv4l8CGU2vtTRqixrOi9fYk/yKw==",
"dev": true,
"dependencies": {
"tinyrainbow": "^3.0.3"
@@ -2000,12 +2000,12 @@
}
},
"node_modules/@vitest/runner": {
- "version": "4.0.16",
- "resolved": "https://registry.npmjs.org/@vitest/runner/-/runner-4.0.16.tgz",
- "integrity": "sha512-VWEDm5Wv9xEo80ctjORcTQRJ539EGPB3Pb9ApvVRAY1U/WkHXmmYISqU5E79uCwcW7xYUV38gwZD+RV755fu3Q==",
+ "version": "4.0.18",
+ "resolved": "https://registry.npmjs.org/@vitest/runner/-/runner-4.0.18.tgz",
+ "integrity": "sha512-rpk9y12PGa22Jg6g5M3UVVnTS7+zycIGk9ZNGN+m6tZHKQb7jrP7/77WfZy13Y/EUDd52NDsLRQhYKtv7XfPQw==",
"dev": true,
"dependencies": {
- "@vitest/utils": "4.0.16",
+ "@vitest/utils": "4.0.18",
"pathe": "^2.0.3"
},
"funding": {
@@ -2013,12 +2013,12 @@
}
},
"node_modules/@vitest/snapshot": {
- "version": "4.0.16",
- "resolved": "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-4.0.16.tgz",
- "integrity": "sha512-sf6NcrYhYBsSYefxnry+DR8n3UV4xWZwWxYbCJUt2YdvtqzSPR7VfGrY0zsv090DAbjFZsi7ZaMi1KnSRyK1XA==",
+ "version": "4.0.18",
+ "resolved": "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-4.0.18.tgz",
+ "integrity": "sha512-PCiV0rcl7jKQjbgYqjtakly6T1uwv/5BQ9SwBLekVg/EaYeQFPiXcgrC2Y7vDMA8dM1SUEAEV82kgSQIlXNMvA==",
"dev": true,
"dependencies": {
- "@vitest/pretty-format": "4.0.16",
+ "@vitest/pretty-format": "4.0.18",
"magic-string": "^0.30.21",
"pathe": "^2.0.3"
},
@@ -2027,21 +2027,21 @@
}
},
"node_modules/@vitest/spy": {
- "version": "4.0.16",
- "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-4.0.16.tgz",
- "integrity": "sha512-4jIOWjKP0ZUaEmJm00E0cOBLU+5WE0BpeNr3XN6TEF05ltro6NJqHWxXD0kA8/Zc8Nh23AT8WQxwNG+WeROupw==",
+ "version": "4.0.18",
+ "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-4.0.18.tgz",
+ "integrity": "sha512-cbQt3PTSD7P2OARdVW3qWER5EGq7PHlvE+QfzSC0lbwO+xnt7+XH06ZzFjFRgzUX//JmpxrCu92VdwvEPlWSNw==",
"dev": true,
"funding": {
"url": "https://opencollective.com/vitest"
}
},
"node_modules/@vitest/ui": {
- "version": "4.0.16",
- "resolved": "https://registry.npmjs.org/@vitest/ui/-/ui-4.0.16.tgz",
- "integrity": "sha512-rkoPH+RqWopVxDnCBE/ysIdfQ2A7j1eDmW8tCxxrR9nnFBa9jKf86VgsSAzxBd1x+ny0GC4JgiD3SNfRHv3pOg==",
+ "version": "4.0.18",
+ "resolved": "https://registry.npmjs.org/@vitest/ui/-/ui-4.0.18.tgz",
+ "integrity": "sha512-CGJ25bc8fRi8Lod/3GHSvXRKi7nBo3kxh0ApW4yCjmrWmRmlT53B5E08XRSZRliygG0aVNxLrBEqPYdz/KcCtQ==",
"dev": true,
"dependencies": {
- "@vitest/utils": "4.0.16",
+ "@vitest/utils": "4.0.18",
"fflate": "^0.8.2",
"flatted": "^3.3.3",
"pathe": "^2.0.3",
@@ -2053,16 +2053,16 @@
"url": "https://opencollective.com/vitest"
},
"peerDependencies": {
- "vitest": "4.0.16"
+ "vitest": "4.0.18"
}
},
"node_modules/@vitest/utils": {
- "version": "4.0.16",
- "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-4.0.16.tgz",
- "integrity": "sha512-h8z9yYhV3e1LEfaQ3zdypIrnAg/9hguReGZoS7Gl0aBG5xgA410zBqECqmaF/+RkTggRsfnzc1XaAHA6bmUufA==",
+ "version": "4.0.18",
+ "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-4.0.18.tgz",
+ "integrity": "sha512-msMRKLMVLWygpK3u2Hybgi4MNjcYJvwTb0Ru09+fOyCXIgT5raYP041DRRdiJiI3k/2U6SEbAETB3YtBrUkCFA==",
"dev": true,
"dependencies": {
- "@vitest/pretty-format": "4.0.16",
+ "@vitest/pretty-format": "4.0.18",
"tinyrainbow": "^3.0.3"
},
"funding": {
@@ -2234,11 +2234,10 @@
}
},
"node_modules/ast-v8-to-istanbul": {
- "version": "0.3.8",
- "resolved": "https://registry.npmjs.org/ast-v8-to-istanbul/-/ast-v8-to-istanbul-0.3.8.tgz",
- "integrity": "sha512-szgSZqUxI5T8mLKvS7WTjF9is+MVbOeLADU73IseOcrqhxr/VAvy6wfoVE39KnKzA7JRhjF5eUagNlHwvZPlKQ==",
+ "version": "0.3.10",
+ "resolved": "https://registry.npmjs.org/ast-v8-to-istanbul/-/ast-v8-to-istanbul-0.3.10.tgz",
+ "integrity": "sha512-p4K7vMz2ZSk3wN8l5o3y2bJAoZXT3VuJI5OLTATY/01CYWumWvwkUw0SqDBnNq6IiTO3qDa1eSQDibAV8g7XOQ==",
"dev": true,
- "license": "MIT",
"dependencies": {
"@jridgewell/trace-mapping": "^0.3.31",
"estree-walker": "^3.0.3",
@@ -2250,7 +2249,6 @@
"resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-3.0.3.tgz",
"integrity": "sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==",
"dev": true,
- "license": "MIT",
"dependencies": {
"@types/estree": "^1.0.0"
}
@@ -2259,8 +2257,7 @@
"version": "9.0.1",
"resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-9.0.1.tgz",
"integrity": "sha512-mxa9E9ITFOt0ban3j6L5MpjwegGz6lBQmM1IJkWeBZGcMxto50+eWdjC/52xDbS2vy0k7vIMK0Fe2wfL9OQSpQ==",
- "dev": true,
- "license": "MIT"
+ "dev": true
},
"node_modules/balanced-match": {
"version": "1.0.2",
@@ -2927,20 +2924,6 @@
"node": ">=8"
}
},
- "node_modules/istanbul-lib-source-maps": {
- "version": "5.0.6",
- "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-5.0.6.tgz",
- "integrity": "sha512-yg2d+Em4KizZC5niWhQaIomgf5WlL4vOOjZ5xGCmF8SnPE/mDWWXgvRExdcpCgh9lLRRa1/fSYp2ymmbJ1pI+A==",
- "dev": true,
- "dependencies": {
- "@jridgewell/trace-mapping": "^0.3.23",
- "debug": "^4.1.1",
- "istanbul-lib-coverage": "^3.0.0"
- },
- "engines": {
- "node": ">=10"
- }
- },
"node_modules/istanbul-reports": {
"version": "3.2.0",
"resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.2.0.tgz",
@@ -2962,9 +2945,9 @@
"dev": true
},
"node_modules/jotai": {
- "version": "2.16.1",
- "resolved": "https://registry.npmjs.org/jotai/-/jotai-2.16.1.tgz",
- "integrity": "sha512-vrHcAbo3P7Br37C8Bv6JshMtlKMPqqmx0DDREtTjT4nf3QChDrYdbH+4ik/9V0cXA57dK28RkJ5dctYvavcIlg==",
+ "version": "2.17.0",
+ "resolved": "https://registry.npmjs.org/jotai/-/jotai-2.17.0.tgz",
+ "integrity": "sha512-DBPT7Vx7E7R/ZJL7Uq7yUA9+LLR0IRiRM+Bw5ugVwv8L8++RjlXVXZ2//ccucypc5lcyuHOW09rYcW77RurduQ==",
"engines": {
"node": ">=12.20.0"
},
@@ -3364,22 +3347,30 @@
"license": "MIT"
},
"node_modules/react": {
- "version": "19.2.3",
- "resolved": "https://registry.npmjs.org/react/-/react-19.2.3.tgz",
- "integrity": "sha512-Ku/hhYbVjOQnXDZFv2+RibmLFGwFdeeKHFcOTlrt7xplBnya5OGn/hIRDsqDiSUcfORsDC7MPxwork8jBwsIWA==",
+ "version": "19.2.4",
+ "resolved": "https://registry.npmjs.org/react/-/react-19.2.4.tgz",
+ "integrity": "sha512-9nfp2hYpCwOjAN+8TZFGhtWEwgvWHXqESH8qT89AT/lWklpLON22Lc8pEtnpsZz7VmawabSU0gCjnj8aC0euHQ==",
"engines": {
"node": ">=0.10.0"
}
},
"node_modules/react-dom": {
- "version": "19.2.3",
- "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-19.2.3.tgz",
- "integrity": "sha512-yELu4WmLPw5Mr/lmeEpox5rw3RETacE++JgHqQzd2dg+YbJuat3jH4ingc+WPZhxaoFzdv9y33G+F7Nl5O0GBg==",
+ "version": "19.2.4",
+ "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-19.2.4.tgz",
+ "integrity": "sha512-AXJdLo8kgMbimY95O2aKQqsz2iWi9jMgKJhRBAxECE4IFxfcazB2LmzloIoibJI3C12IlY20+KFaLv+71bUJeQ==",
"dependencies": {
"scheduler": "^0.27.0"
},
"peerDependencies": {
- "react": "^19.2.3"
+ "react": "^19.2.4"
+ }
+ },
+ "node_modules/react-fontpicker-ts": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/react-fontpicker-ts/-/react-fontpicker-ts-1.3.0.tgz",
+ "integrity": "sha512-3s1wo8LTNGQXWihzGTvTIKvGqo7X4D5vl8Z4nZN7IPwpPd6GRbfXxW4oL2wfECt2Cp8SuCYXGIRtM1OOz21ORg==",
+ "peerDependencies": {
+ "react": ">=16.8"
}
},
"node_modules/react-icons": {
@@ -3486,9 +3477,9 @@
}
},
"node_modules/react-router": {
- "version": "7.12.0",
- "resolved": "https://registry.npmjs.org/react-router/-/react-router-7.12.0.tgz",
- "integrity": "sha512-kTPDYPFzDVGIIGNLS5VJykK0HfHLY5MF3b+xj0/tTyNYL1gF1qs7u67Z9jEhQk2sQ98SUaHxlG31g1JtF7IfVw==",
+ "version": "7.13.0",
+ "resolved": "https://registry.npmjs.org/react-router/-/react-router-7.13.0.tgz",
+ "integrity": "sha512-PZgus8ETambRT17BUm/LL8lX3Of+oiLaPuVTRH3l1eLvSPpKO3AvhAEb5N7ihAFZQrYDqkvvWfFh9p0z9VsjLw==",
"dependencies": {
"cookie": "^1.0.1",
"set-cookie-parser": "^2.6.0"
@@ -3507,11 +3498,11 @@
}
},
"node_modules/react-router-dom": {
- "version": "7.12.0",
- "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-7.12.0.tgz",
- "integrity": "sha512-pfO9fiBcpEfX4Tx+iTYKDtPbrSLLCbwJ5EqP+SPYQu1VYCXdy79GSj0wttR0U4cikVdlImZuEZ/9ZNCgoaxwBA==",
+ "version": "7.13.0",
+ "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-7.13.0.tgz",
+ "integrity": "sha512-5CO/l5Yahi2SKC6rGZ+HDEjpjkGaG/ncEP7eWFTvFxbHP8yeeI0PxTDjimtpXYlR3b3i9/WIL4VJttPrESIf2g==",
"dependencies": {
- "react-router": "7.12.0"
+ "react-router": "7.13.0"
},
"engines": {
"node": ">=20.0.0"
@@ -3576,9 +3567,9 @@
}
},
"node_modules/recharts": {
- "version": "3.6.0",
- "resolved": "https://registry.npmjs.org/recharts/-/recharts-3.6.0.tgz",
- "integrity": "sha512-L5bjxvQRAe26RlToBAziKUB7whaGKEwD3znoM6fz3DrTowCIC/FnJYnuq1GEzB8Zv2kdTfaxQfi5GoH0tBinyg==",
+ "version": "3.7.0",
+ "resolved": "https://registry.npmjs.org/recharts/-/recharts-3.7.0.tgz",
+ "integrity": "sha512-l2VCsy3XXeraxIID9fx23eCb6iCBsxUQDnE8tWm6DFdszVAO7WVY/ChAD9wVit01y6B2PMupYiMmQwhgPHc9Ew==",
"dependencies": {
"@reduxjs/toolkit": "1.x.x || 2.x.x",
"clsx": "^2.1.1",
@@ -4211,9 +4202,9 @@
}
},
"node_modules/vite-tsconfig-paths": {
- "version": "6.0.3",
- "resolved": "https://registry.npmjs.org/vite-tsconfig-paths/-/vite-tsconfig-paths-6.0.3.tgz",
- "integrity": "sha512-7bL7FPX/DSviaZGYUKowWF1AiDVWjMjxNbE8lyaVGDezkedWqfGhlnQ4BZXre0ZN5P4kAgIJfAlgFDVyjrCIyg==",
+ "version": "6.0.5",
+ "resolved": "https://registry.npmjs.org/vite-tsconfig-paths/-/vite-tsconfig-paths-6.0.5.tgz",
+ "integrity": "sha512-f/WvY6ekHykUF1rWJUAbCU7iS/5QYDIugwpqJA+ttwKbxSbzNlqlE8vZSrsnxNQciUW+z6lvhlXMaEyZn9MSig==",
"dev": true,
"dependencies": {
"debug": "^4.1.1",
@@ -4222,26 +4213,21 @@
},
"peerDependencies": {
"vite": "*"
- },
- "peerDependenciesMeta": {
- "vite": {
- "optional": true
- }
}
},
"node_modules/vitest": {
- "version": "4.0.16",
- "resolved": "https://registry.npmjs.org/vitest/-/vitest-4.0.16.tgz",
- "integrity": "sha512-E4t7DJ9pESL6E3I8nFjPa4xGUd3PmiWDLsDztS2qXSJWfHtbQnwAWylaBvSNY48I3vr8PTqIZlyK8TE3V3CA4Q==",
+ "version": "4.0.18",
+ "resolved": "https://registry.npmjs.org/vitest/-/vitest-4.0.18.tgz",
+ "integrity": "sha512-hOQuK7h0FGKgBAas7v0mSAsnvrIgAvWmRFjmzpJ7SwFHH3g1k2u37JtYwOwmEKhK6ZO3v9ggDBBm0La1LCK4uQ==",
"dev": true,
"dependencies": {
- "@vitest/expect": "4.0.16",
- "@vitest/mocker": "4.0.16",
- "@vitest/pretty-format": "4.0.16",
- "@vitest/runner": "4.0.16",
- "@vitest/snapshot": "4.0.16",
- "@vitest/spy": "4.0.16",
- "@vitest/utils": "4.0.16",
+ "@vitest/expect": "4.0.18",
+ "@vitest/mocker": "4.0.18",
+ "@vitest/pretty-format": "4.0.18",
+ "@vitest/runner": "4.0.18",
+ "@vitest/snapshot": "4.0.18",
+ "@vitest/spy": "4.0.18",
+ "@vitest/utils": "4.0.18",
"es-module-lexer": "^1.7.0",
"expect-type": "^1.2.2",
"magic-string": "^0.30.21",
@@ -4269,10 +4255,10 @@
"@edge-runtime/vm": "*",
"@opentelemetry/api": "^1.9.0",
"@types/node": "^20.0.0 || ^22.0.0 || >=24.0.0",
- "@vitest/browser-playwright": "4.0.16",
- "@vitest/browser-preview": "4.0.16",
- "@vitest/browser-webdriverio": "4.0.16",
- "@vitest/ui": "4.0.16",
+ "@vitest/browser-playwright": "4.0.18",
+ "@vitest/browser-preview": "4.0.18",
+ "@vitest/browser-webdriverio": "4.0.18",
+ "@vitest/ui": "4.0.18",
"happy-dom": "*",
"jsdom": "*"
},
diff --git a/package.json b/package.json
index 5767a88..bb4c5b7 100644
--- a/package.json
+++ b/package.json
@@ -10,36 +10,37 @@
"preview": "vite preview"
},
"dependencies": {
- "@gfazioli/mantine-text-animate": "^2.3.10",
+ "@gfazioli/mantine-text-animate": "^2.3.12",
"@hello-pangea/dnd": "^18.0.1",
- "@mantine/core": "^8.3.12",
- "@mantine/dates": "^8.3.12",
- "@mantine/form": "^8.3.12",
- "@mantine/hooks": "^8.3.12",
- "@mantine/notifications": "^8.3.12",
- "@tanstack/react-query": "^5.90.16",
+ "@mantine/core": "^8.3.13",
+ "@mantine/dates": "^8.3.13",
+ "@mantine/form": "^8.3.13",
+ "@mantine/hooks": "^8.3.13",
+ "@mantine/notifications": "^8.3.13",
+ "@tanstack/react-query": "^5.90.20",
"@tanstack/react-query-devtools": "^5.91.2",
- "@tanstack/react-query-persist-client": "^5.90.18",
+ "@tanstack/react-query-persist-client": "^5.90.22",
"@tanstack/react-table": "^8.21.3",
"idb-keyval": "^6.2.2",
- "jotai": "^2.16.1",
- "react": "^19.2.3",
- "react-dom": "^19.2.3",
+ "jotai": "^2.17.0",
+ "react": "^19.2.4",
+ "react-dom": "^19.2.4",
+ "react-fontpicker-ts": "^1.3.0",
"react-icons": "^5.5.0",
- "react-router-dom": "^7.12.0",
- "recharts": "^3.6.0"
+ "react-router-dom": "^7.13.0",
+ "recharts": "^3.7.0"
},
"devDependencies": {
- "@types/node": "^25.0.3",
- "@types/react": "^19.2.7",
+ "@types/node": "^25.1.0",
+ "@types/react": "^19.2.10",
"@types/react-dom": "^19.2.3",
"@vitejs/plugin-react": "^5.1.2",
- "@vitest/coverage-v8": "^4.0.16",
- "@vitest/ui": "^4.0.16",
+ "@vitest/coverage-v8": "^4.0.18",
+ "@vitest/ui": "^4.0.18",
"typescript": "^5.9.3",
"vite": "^7.3.1",
"vite-plugin-dts": "~4.5.4",
- "vite-tsconfig-paths": "^6.0.3",
- "vitest": "^4.0.16"
+ "vite-tsconfig-paths": "^6.0.5",
+ "vitest": "^4.0.18"
}
}
diff --git a/src/App.tsx b/src/App.tsx
index e2811ae..9df271a 100644
--- a/src/App.tsx
+++ b/src/App.tsx
@@ -19,6 +19,7 @@ import { Loading, MainLayout } from './components';
import '@mantine/core/styles.css';
import '@mantine/dates/styles.css';
import '@mantine/notifications/styles.css';
+import 'react-fontpicker-ts/dist/index.css';
import '@gfazioli/mantine-text-animate/styles.css';
import { ReactQueryDevtools } from '@tanstack/react-query-devtools';
@@ -54,7 +55,7 @@ function App() {
search: colorsTuple(theme.searchColor),
},
white: theme?.backgroundColor,
- fontFamily: '-apple-system,Jost,BlinkMacSystemFont,Helvetica Neue,Roboto,sans-serif',
+ fontFamily: `${personalData?.[0]?.defaultFont},Helvetica Neue,Roboto,system-ui,sans-serif`,
autoContrast: true,
});
const mantineTheme = mergeMantineTheme(DEFAULT_THEME, overrides);
@@ -81,7 +82,12 @@ function App() {
);
useEffect(() => {
- if (allThemes && themeName && personalData && isThemePlaylistsFetched) {
+ if (
+ allThemes &&
+ themeName &&
+ Object.keys(personalData).length > 0 &&
+ isThemePlaylistsFetched
+ ) {
if (currentThemePlaylist === 'All') {
if (themeName === 'random') {
handleThemeChange(allThemes, false);
diff --git a/src/pages/settings/components/Personalization/Personalization.tsx b/src/pages/settings/components/Personalization/Personalization.tsx
index 5267db9..eedafad 100644
--- a/src/pages/settings/components/Personalization/Personalization.tsx
+++ b/src/pages/settings/components/Personalization/Personalization.tsx
@@ -12,6 +12,7 @@ import { useDebouncedValue } from '@mantine/hooks';
import { SettingsHeader } from 'components';
import { useCommonHooks, useMutationAPI, useQueryAPI } from 'hooks';
import { useEffect, useState } from 'react';
+import FontPicker from 'react-fontpicker-ts';
import { cardClasses, switchClasses, textClasses, textInputClasses } from 'styles';
import type { PersonalData } from 'types';
@@ -20,25 +21,44 @@ const PersonalizationSettings = () => {
const { data: personalData, isFetching: personalDataIsFetching } = useQueryAPI({
endpoint: endpoint,
});
- const [personal, setPersonal] = useState(personalData?.[0] || {});
+ const personal: PersonalData = personalData?.[0] || {};
+ const [wolEnabled, setWolEnabled] = useState(personal?.enableWol === 1);
+ const [guacamoleEnabled, setGuacamoleEnabled] = useState(
+ personal?.enableGuacamole === 1,
+ );
+ const [defaultFont, setDefaultFont] = useState(personal?.defaultFont);
const [update, setUpdate] = useState({});
const [debounced] = useDebouncedValue(update, 1000);
const { mutateAsync } = useMutationAPI();
const { isMobile, theme } = useCommonHooks();
-
useEffect(() => {
if (Object.keys(debounced).length) {
- setPersonal(update);
mutateAsync({ method: 'PATCH', endpoint: endpoint, body: debounced });
setUpdate({});
}
}, [debounced]);
useEffect(() => {
- if (update !== personal && Object.keys(update).length) {
- setPersonal(update);
+ if (Object.keys(personal).length > 0) {
+ setWolEnabled(personal.enableWol === 1);
+ setGuacamoleEnabled(personal.enableGuacamole === 1);
+ setDefaultFont(personal.defaultFont);
}
- }, [update]);
+ }, [personal]);
+
+ useEffect(() => {
+ if (
+ Object.keys(personal).length > 0 &&
+ defaultFont &&
+ defaultFont !== personal.defaultFont
+ ) {
+ setUpdate({
+ ...personal,
+ defaultFont: defaultFont,
+ });
+ }
+ }, [defaultFont]);
+
return (
{
}}
/>
-
-
- {
- const updatedPersonal = {
- ...personal,
- firstName: event.currentTarget.value,
- };
- setUpdate(updatedPersonal);
- }}
- styles={
- theme.textShadowsEnabled
- ? {
- label: { boxShadow: '2px 2px var(--mantine-color-border-0)' },
- }
- : undefined
- }
- />
-
-
-
-
- {
- const updatedPersonal = {
- ...personal,
- lastName: event.currentTarget.value,
- };
- setUpdate(updatedPersonal);
- }}
- styles={
- theme.textShadowsEnabled
- ? {
- label: { boxShadow: '2px 2px var(--mantine-color-border-0)' },
- }
- : undefined
- }
- />
-
-
-
-
- {
- const updatedPersonal = {
- ...personal,
- email: event.currentTarget.value,
- };
- setUpdate(updatedPersonal);
- }}
- styles={
- theme.textShadowsEnabled
- ? {
- label: { boxShadow: '2px 2px var(--mantine-color-border-0)' },
- }
- : undefined
- }
- />
-
-
-
-
- {
- const updatedPersonal = {
- ...personal,
- physicalAddress: event.currentTarget.value,
- };
- setUpdate(updatedPersonal);
- }}
- styles={
- theme.textShadowsEnabled
- ? {
- label: { boxShadow: '2px 2px var(--mantine-color-border-0)' },
- }
- : undefined
- }
- />
-
-
+ {Object.keys(personal).length > 0 && (
+ <>
+
+
+ {
+ const updatedPersonal = {
+ ...personal,
+ firstName: event.currentTarget.value,
+ };
+ setUpdate(updatedPersonal);
+ }}
+ styles={
+ theme.textShadowsEnabled
+ ? {
+ label: { boxShadow: '2px 2px var(--mantine-color-border-0)' },
+ }
+ : undefined
+ }
+ />
+
+
+
+
+ {
+ const updatedPersonal = {
+ ...personal,
+ lastName: event.currentTarget.value,
+ };
+ setUpdate(updatedPersonal);
+ }}
+ styles={
+ theme.textShadowsEnabled
+ ? {
+ label: { boxShadow: '2px 2px var(--mantine-color-border-0)' },
+ }
+ : undefined
+ }
+ />
+
+
+
+
+ {
+ const updatedPersonal = {
+ ...personal,
+ email: event.currentTarget.value,
+ };
+ setUpdate(updatedPersonal);
+ }}
+ styles={
+ theme.textShadowsEnabled
+ ? {
+ label: { boxShadow: '2px 2px var(--mantine-color-border-0)' },
+ }
+ : undefined
+ }
+ />
+
+
+
+
+ {
+ const updatedPersonal = {
+ ...personal,
+ nickname: event.currentTarget.value,
+ };
+ setUpdate(updatedPersonal);
+ }}
+ styles={
+ theme.textShadowsEnabled
+ ? {
+ label: { boxShadow: '2px 2px var(--mantine-color-border-0)' },
+ }
+ : undefined
+ }
+ />
+
+
+
+
+ {
+ const updatedPersonal = {
+ ...personal,
+ physicalAddress: event.currentTarget.value,
+ };
+ setUpdate(updatedPersonal);
+ }}
+ styles={
+ theme.textShadowsEnabled
+ ? {
+ label: { boxShadow: '2px 2px var(--mantine-color-border-0)' },
+ }
+ : undefined
+ }
+ />
+
+
+
+
+
+
+ Extras
+
+ Font Select
+ {defaultFont && (
+ setDefaultFont(font)}
+ />
+ )}
+ {
+ setWolEnabled(!wolEnabled);
+ const updatedPersonal = {
+ ...personal,
+ enableWol: event.target.checked ? 1 : 0,
+ };
+ setUpdate(updatedPersonal);
+ }}
+ />
+ {
+ setGuacamoleEnabled(!guacamoleEnabled);
+ const updatedPersonal = {
+ ...personal,
+ enableGuacamole: event.target.checked ? 1 : 0,
+ };
+ setUpdate(updatedPersonal);
+ }}
+ />
+ {personal?.enableGuacamole === 1 && (
+ {
+ const updatedPersonal = {
+ ...personal,
+ guacamoleHost: event.currentTarget.value,
+ };
+ setUpdate(updatedPersonal);
+ }}
+ styles={
+ theme.textShadowsEnabled
+ ? {
+ label: {
+ boxShadow: '2px 2px var(--mantine-color-border-0)',
+ },
+ }
+ : undefined
+ }
+ />
+ )}
+
+
+
+ >
+ )}
-
-
-
- Extras
-
- {
- const updatedPersonal = {
- ...personal,
- enableWol: event.target.checked ? 1 : 0,
- };
- setUpdate(updatedPersonal);
- }}
- />
- {
- const updatedPersonal = {
- ...personal,
- enableGuacamole: event.target.checked ? 1 : 0,
- };
- setUpdate(updatedPersonal);
- }}
- />
- {personal?.enableGuacamole === 1 && (
- {
- const updatedPersonal = {
- ...personal,
- guacamoleHost: event.currentTarget.value,
- };
- setUpdate(updatedPersonal);
- }}
- styles={
- theme.textShadowsEnabled
- ? {
- label: { boxShadow: '2px 2px var(--mantine-color-border-0)' },
- }
- : undefined
- }
- />
- )}
-
-
);
diff --git a/src/styles/Text.module.css b/src/styles/Text.module.css
index e9f1a27..c9fc35d 100644
--- a/src/styles/Text.module.css
+++ b/src/styles/Text.module.css
@@ -10,8 +10,6 @@
.dateTime {
&.root {
display: flex;
- font-family: -apple-system, Jost, BlinkMacSystemFont, Helvetica Neue, Roboto,
- sans-serif !important;
font-size: 1.75rem;
margin: 0;
padding: 0;
@@ -78,7 +76,6 @@
font-size: .6875rem;
font-style: normal;
color: var(--mantine-color-primary-0);
- font-family: "Jost", sans-serif;
margin: 0;
overflow: hidden;
text-overflow: ellipsis;
diff --git a/src/types/personalData.ts b/src/types/personalData.ts
index 9ec2567..54c4887 100644
--- a/src/types/personalData.ts
+++ b/src/types/personalData.ts
@@ -6,4 +6,6 @@ export interface PersonalData {
enableWol: number;
enableGuacamole: number;
guacamoleHost?: string;
+ nickname?: string;
+ defaultFont: string;
}