@cryptotaxi247 / CoPilot / commits / e775b4df

Vertical menu (#553)

* chore: update frontend dependencies * feat: add vertical layout + global refactor * refactor: logo * chore: update CURRENT_VERSION to 0.1.7 --------- Co-authored-by: Davide Di Modica <webmaster.ddm@gmail.com>

taylor_socfortress committed Dec 5, 2025 at 18:25 UTC e775b4dfd473c7eb8bcbe49ee76146194d8714c0
149 files changed +813 -684
backend/app/version/services/version.py
+1 -1
@@ -7,7 +7,7 @@ from loguru import logger
7 from packaging.version import Version
8
9 # Current version - update this with each release
10 -CURRENT_VERSION = "0.1.6"
10 +CURRENT_VERSION = "0.1.7"
11 VERSION_CHECK_URL = "https://api.github.com/repos/socfortress/CoPilot/releases/latest"
12
13
frontend/package.json
+10 -10
@@ -47,7 +47,7 @@
47 "@fontsource/jetbrains-mono": "^5.2.8",
48 "@fontsource/lexend": "^5.2.11",
49 "@fontsource/public-sans": "^5.2.7",
50 - "@shikijs/markdown-it": "^3.17.0",
50 + "@shikijs/markdown-it": "^3.19.0",
51 "@singulio/app-auth-search": "^0.0.3",
52 "@types/codemirror": "^5.60.17",
53 "@vueuse/core": "^14.1.0",
@@ -62,7 +62,7 @@
62 "fast-xml-parser": "^5.3.2",
63 "file-saver": "^2.0.5",
64 "html-entities": "^2.6.0",
65 - "jose": "^6.1.2",
65 + "jose": "^6.1.3",
66 "js-md5": "^0.8.3",
67 "lodash": "^4.17.21",
68 "mitt": "^3.0.1",
@@ -72,7 +72,7 @@
72 "pinia": "^3.0.4",
73 "pinia-plugin-persistedstate": "^4.7.1",
74 "secure-ls": "^2.0.0",
75 - "shiki": "^3.17.0",
75 + "shiki": "^3.19.0",
76 "thememirror": "^2.0.1",
77 "validator": "^13.15.23",
78 "vue": "^3.5.25",
@@ -94,7 +94,7 @@
94 "vueuc": "^0.4.64"
95 },
96 "devDependencies": {
97 - "@antfu/eslint-config": "~6.2.0",
97 + "@antfu/eslint-config": "~6.4.2",
98 "@clack/prompts": "^0.11.0",
99 "@iconify/vue": "^5.0.0",
100 "@tailwindcss/vite": "^4.1.17",
@@ -111,27 +111,27 @@
111 "@vitejs/plugin-vue-jsx": "^5.1.2",
112 "@vue/test-utils": "^2.4.6",
113 "@vue/tsconfig": "~0.7.0",
114 - "cypress": "^15.7.0",
114 + "cypress": "^15.7.1",
115 "depcheck": "^1.4.7",
116 "eslint": "~9.39.1",
117 "flourite": "^1.3.0",
118 "fs-extra": "^11.3.2",
119 "jsdom": "^27.2.0",
120 "npm-run-all2": "^8.0.4",
121 - "prettier": "^3.7.3",
122 - "prettier-plugin-tailwindcss": "^0.7.1",
121 + "prettier": "^3.7.4",
122 + "prettier-plugin-tailwindcss": "^0.7.2",
123 "sass": "^1.94.2",
124 "start-server-and-test": "^2.1.3",
125 "tailwindcss": "^4.1.17",
126 "taze": "^19.9.2",
127 - "type-fest": "^5.2.0",
127 + "type-fest": "^5.3.0",
128 "typescript": "~5.9.3",
129 - "vite": "^7.2.4",
129 + "vite": "^7.2.6",
130 "vite-bundle-visualizer": "^1.2.1",
131 "vite-plugin-inspect": "^11.3.3",
132 "vite-plugin-vue-devtools": "^8.0.5",
133 "vite-svg-loader": "^5.1.0",
134 - "vitest": "^4.0.14",
134 + "vitest": "^4.0.15",
135 "vue-tsc": "^3.1.5"
136 },
137 "pnpm": {
frontend/pnpm-lock.yaml
+329 -238
@@ -42,8 +42,8 @@ importers:
42 specifier: ^5.2.7
43 version: 5.2.7
44 '@shikijs/markdown-it':
45 - specifier: ^3.17.0
46 - version: 3.17.0
45 + specifier: ^3.19.0
46 + version: 3.19.0
47 '@singulio/app-auth-search':
48 specifier: ^0.0.3
49 version: 0.0.3
@@ -87,8 +87,8 @@ importers:
87 specifier: ^2.6.0
88 version: 2.6.0
89 jose:
90 - specifier: ^6.1.2
91 - version: 6.1.2
90 + specifier: ^6.1.3
91 + version: 6.1.3
92 js-md5:
93 specifier: ^0.8.3
94 version: 0.8.3
@@ -117,8 +117,8 @@ importers:
117 specifier: ^2.0.0
118 version: 2.0.0
119 shiki:
120 - specifier: ^3.17.0
121 - version: 3.17.0
120 + specifier: ^3.19.0
121 + version: 3.19.0
122 thememirror:
123 specifier: ^2.0.1
124 version: 2.0.1(@codemirror/language@6.11.3)(@codemirror/state@6.5.2)(@codemirror/view@6.38.8)
@@ -163,8 +163,8 @@ importers:
163 version: 5.1.0(@types/node@24.10.1)
164 devDependencies:
165 '@antfu/eslint-config':
166 - specifier: ~6.2.0
167 - version: 6.2.0(@vue/compiler-sfc@3.5.25)(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)(vitest@4.0.14(@types/node@24.10.1)(jiti@2.6.1)(jsdom@27.2.0)(lightningcss@1.30.2)(sass@1.94.2)(yaml@2.8.1))
166 + specifier: ~6.4.2
167 + version: 6.4.2(@vue/compiler-sfc@3.5.25)(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)(vitest@4.0.15(@types/node@24.10.1)(jiti@2.6.1)(jsdom@27.2.0)(lightningcss@1.30.2)(sass@1.94.2)(yaml@2.8.2))
168 '@clack/prompts':
169 specifier: ^0.11.0
170 version: 0.11.0
@@ -173,7 +173,7 @@ importers:
173 version: 5.0.0(vue@3.5.25(typescript@5.9.3))
174 '@tailwindcss/vite':
175 specifier: ^4.1.17
176 - version: 4.1.17(vite@7.2.4(@types/node@24.10.1)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.94.2)(yaml@2.8.1))
176 + version: 4.1.17(vite@7.2.6(@types/node@24.10.1)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.94.2)(yaml@2.8.2))
177 '@tsconfig/node20':
178 specifier: ^20.1.8
179 version: 20.1.8
@@ -203,10 +203,10 @@ importers:
203 version: 13.15.10
204 '@vitejs/plugin-vue':
205 specifier: ^6.0.2
206 - version: 6.0.2(vite@7.2.4(@types/node@24.10.1)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.94.2)(yaml@2.8.1))(vue@3.5.25(typescript@5.9.3))
206 + version: 6.0.2(vite@7.2.6(@types/node@24.10.1)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.94.2)(yaml@2.8.2))(vue@3.5.25(typescript@5.9.3))
207 '@vitejs/plugin-vue-jsx':
208 specifier: ^5.1.2
209 - version: 5.1.2(vite@7.2.4(@types/node@24.10.1)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.94.2)(yaml@2.8.1))(vue@3.5.25(typescript@5.9.3))
209 + version: 5.1.2(vite@7.2.6(@types/node@24.10.1)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.94.2)(yaml@2.8.2))(vue@3.5.25(typescript@5.9.3))
210 '@vue/test-utils':
211 specifier: ^2.4.6
212 version: 2.4.6
@@ -214,8 +214,8 @@ importers:
214 specifier: ~0.7.0
215 version: 0.7.0(typescript@5.9.3)(vue@3.5.25(typescript@5.9.3))
216 cypress:
217 - specifier: ^15.7.0
218 - version: 15.7.0
217 + specifier: ^15.7.1
218 + version: 15.7.1
219 depcheck:
220 specifier: ^1.4.7
221 version: 1.4.7
@@ -235,11 +235,11 @@ importers:
235 specifier: ^8.0.4
236 version: 8.0.4
237 prettier:
238 - specifier: ^3.7.3
239 - version: 3.7.3
238 + specifier: ^3.7.4
239 + version: 3.7.4
240 prettier-plugin-tailwindcss:
241 - specifier: ^0.7.1
242 - version: 0.7.1(prettier@3.7.3)
241 + specifier: ^0.7.2
242 + version: 0.7.2(prettier@3.7.4)
243 sass:
244 specifier: ^1.94.2
245 version: 1.94.2
@@ -253,29 +253,29 @@ importers:
253 specifier: ^19.9.2
254 version: 19.9.2
255 type-fest:
256 - specifier: ^5.2.0
257 - version: 5.2.0
256 + specifier: ^5.3.0
257 + version: 5.3.0
258 typescript:
259 specifier: ~5.9.3
260 version: 5.9.3
261 vite:
262 - specifier: ^7.2.4
263 - version: 7.2.4(@types/node@24.10.1)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.94.2)(yaml@2.8.1)
262 + specifier: ^7.2.6
263 + version: 7.2.6(@types/node@24.10.1)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.94.2)(yaml@2.8.2)
264 vite-bundle-visualizer:
265 specifier: ^1.2.1
266 version: 1.2.1(rollup@4.52.5)
267 vite-plugin-inspect:
268 specifier: ^11.3.3
269 - version: 11.3.3(@nuxt/kit@3.20.0)(vite@7.2.4(@types/node@24.10.1)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.94.2)(yaml@2.8.1))
269 + version: 11.3.3(@nuxt/kit@3.20.0)(vite@7.2.6(@types/node@24.10.1)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.94.2)(yaml@2.8.2))
270 vite-plugin-vue-devtools:
271 specifier: ^8.0.5
272 - version: 8.0.5(@nuxt/kit@3.20.0)(vite@7.2.4(@types/node@24.10.1)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.94.2)(yaml@2.8.1))(vue@3.5.25(typescript@5.9.3))
272 + version: 8.0.5(@nuxt/kit@3.20.0)(vite@7.2.6(@types/node@24.10.1)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.94.2)(yaml@2.8.2))(vue@3.5.25(typescript@5.9.3))
273 vite-svg-loader:
274 specifier: ^5.1.0
275 version: 5.1.0(vue@3.5.25(typescript@5.9.3))
276 vitest:
277 - specifier: ^4.0.14
278 - version: 4.0.14(@types/node@24.10.1)(jiti@2.6.1)(jsdom@27.2.0)(lightningcss@1.30.2)(sass@1.94.2)(yaml@2.8.1)
277 + specifier: ^4.0.15
278 + version: 4.0.15(@types/node@24.10.1)(jiti@2.6.1)(jsdom@27.2.0)(lightningcss@1.30.2)(sass@1.94.2)(yaml@2.8.2)
279 vue-tsc:
280 specifier: ^3.1.5
281 version: 3.1.5(typescript@5.9.3)
@@ -354,8 +354,8 @@ packages:
354 resolution: {integrity: sha512-gkLNpU+b1pCIwk1hKTJz2NWQPT8gsfGhQasnZ5QVv4jd79fKRL/1ikd86P0AzuIQs9tbbhlMwxsSTyJmlq502w==}
355 engines: {node: '>= 14.0.0'}
356
357 - '@antfu/eslint-config@6.2.0':
358 - resolution: {integrity: sha512-ksasd+mJk441HHodwPh3Nhmwo9jSHUmgQyfTxMQM05U7SjDS0fy2KnXnPx0Vhc/CqKiJnx8wGpQCCJibyASX9Q==}
357 + '@antfu/eslint-config@6.4.2':
358 + resolution: {integrity: sha512-kj6tZEKXMu07pCBH9TjPyRsQf8oZCwd3I6RFycKz8gPP5/uALictvUJsEA9bXBqZvtqA8SUEwLPLhVRZTSUTWQ==}
359 hasBin: true
360 peerDependencies:
361 '@eslint-react/eslint-plugin': ^2.0.1
@@ -855,10 +855,6 @@ packages:
855 resolution: {integrity: sha512-gBrxN88gOIf3R7ja5K9slwNayVcZgK6SOUORm2uBzTeIEfeVaIhOpCtTox3P6R7o2jLFwLFTLnC7kU/RGcYEgw==}
856 engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
857
858 - '@eslint/core@0.16.0':
859 - resolution: {integrity: sha512-nmC8/totwobIiFcGkDza3GIKfAw1+hLiYVrh3I1nIomQ8PEr5cxg34jnkmGawul/ep52wGRAcyeDCNtWKSOj4Q==}
860 - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
861 -
858 '@eslint/core@0.17.0':
859 resolution: {integrity: sha512-yL/sLrpmtDaFEiUj1osRP4TI2MDz1AddJL+jZ7KSqvBuliN4xqYY54IfdN8qD8Toa6g1iloph1fxQNkjOxrrpQ==}
860 engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
@@ -871,8 +867,8 @@ packages:
867 resolution: {integrity: sha512-S26Stp4zCy88tH94QbBv3XCuzRQiZ9yXofEILmglYTh/Ug/a9/umqvgFtYBAo3Lp0nsI/5/qH1CCrbdK3AP1Tw==}
868 engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
869
874 - '@eslint/markdown@7.5.0':
875 - resolution: {integrity: sha512-reKloVSpytg4ene3yviPJcUO7zglpNn9kWNRiSQ/8gBbBFMKW5Q042LaCi3wv2vVtbPNnLrl6WvhRAHeBd43QA==}
870 + '@eslint/markdown@7.5.1':
871 + resolution: {integrity: sha512-R8uZemG9dKTbru/DQRPblbJyXpObwKzo8rv1KYGGuPUPtjM4LXBYM9q5CIZAComzZupws3tWbDwam5AFpPLyJQ==}
872 engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
873
874 '@eslint/object-schema@2.1.7':
@@ -1225,31 +1221,31 @@ packages:
1221 cpu: [x64]
1222 os: [win32]
1223
1228 - '@shikijs/core@3.17.0':
1229 - resolution: {integrity: sha512-/HjeOnbc62C+n33QFNFrAhUlIADKwfuoS50Ht0pxujxP4QjZAlFp5Q+OkDo531SCTzivx5T18khwyBdKoPdkuw==}
1224 + '@shikijs/core@3.19.0':
1225 + resolution: {integrity: sha512-L7SrRibU7ZoYi1/TrZsJOFAnnHyLTE1SwHG1yNWjZIVCqjOEmCSuK2ZO9thnRbJG6TOkPp+Z963JmpCNw5nzvA==}
1226
1231 - '@shikijs/engine-javascript@3.17.0':
1232 - resolution: {integrity: sha512-WwF99xdP8KfuDrIbT4wxyypfhoIxMeeOCp1AiuvzzZ6JT5B3vIuoclL8xOuuydA6LBeeNXUF/XV5zlwwex1jlA==}
1227 + '@shikijs/engine-javascript@3.19.0':
1228 + resolution: {integrity: sha512-ZfWJNm2VMhKkQIKT9qXbs76RRcT0SF/CAvEz0+RkpUDAoDaCx0uFdCGzSRiD9gSlhm6AHkjdieOBJMaO2eC1rQ==}
1229
1234 - '@shikijs/engine-oniguruma@3.17.0':
1235 - resolution: {integrity: sha512-flSbHZAiOZDNTrEbULY8DLWavu/TyVu/E7RChpLB4WvKX4iHMfj80C6Hi3TjIWaQtHOW0KC6kzMcuB5TO1hZ8Q==}
1230 + '@shikijs/engine-oniguruma@3.19.0':
1231 + resolution: {integrity: sha512-1hRxtYIJfJSZeM5ivbUXv9hcJP3PWRo5prG/V2sWwiubUKTa+7P62d2qxCW8jiVFX4pgRHhnHNp+qeR7Xl+6kg==}
1232
1237 - '@shikijs/langs@3.17.0':
1238 - resolution: {integrity: sha512-icmur2n5Ojb+HAiQu6NEcIIJ8oWDFGGEpiqSCe43539Sabpx7Y829WR3QuUW2zjTM4l6V8Sazgb3rrHO2orEAw==}
1233 + '@shikijs/langs@3.19.0':
1234 + resolution: {integrity: sha512-dBMFzzg1QiXqCVQ5ONc0z2ebyoi5BKz+MtfByLm0o5/nbUu3Iz8uaTCa5uzGiscQKm7lVShfZHU1+OG3t5hgwg==}
1235
1240 - '@shikijs/markdown-it@3.17.0':
1241 - resolution: {integrity: sha512-2DYbo4hi79UkloTHZJsqKooHjLbMQew8yLIcM7P9tuThL52HKIP+Gy9WY9WzkCmcdOufEkUcnjoBjoxrx1rMhA==}
1236 + '@shikijs/markdown-it@3.19.0':
1237 + resolution: {integrity: sha512-T9Lt3pPZoK5uu7t2/jQ6OzhwZ9FPBtZhHKSk62IdPaJkj2gVPeRWSJb825dpliSFvURp4JQvcInBkrJZYmhynQ==}
1238 peerDependencies:
1239 markdown-it-async: ^2.2.0
1240 peerDependenciesMeta:
1241 markdown-it-async:
1242 optional: true
1243
1248 - '@shikijs/themes@3.17.0':
1249 - resolution: {integrity: sha512-/xEizMHLBmMHwtx4JuOkRf3zwhWD2bmG5BRr0IPjpcWpaq4C3mYEuTk/USAEglN0qPrTwEHwKVpSu/y2jhferA==}
1244 + '@shikijs/themes@3.19.0':
1245 + resolution: {integrity: sha512-H36qw+oh91Y0s6OlFfdSuQ0Ld+5CgB/VE6gNPK+Hk4VRbVG/XQgkjnt4KzfnnoO6tZPtKJKHPjwebOCfjd6F8A==}
1246
1251 - '@shikijs/types@3.17.0':
1252 - resolution: {integrity: sha512-wjLVfutYWVUnxAjsWEob98xgyaGv0dTEnMZDruU5mRjVN7szcGOfgO+997W2yR6odp+1PtSBNeSITRRTfUzK/g==}
1247 + '@shikijs/types@3.19.0':
1248 + resolution: {integrity: sha512-Z2hdeEQlzuntf/BZpFG8a+Fsw9UVXdML7w0o3TgSXV3yNESGon+bs9ITkQb3Ki7zxoXOOu5oJWqZ2uto06V9iQ==}
1249
1250 '@shikijs/vscode-textmate@10.0.2':
1251 resolution: {integrity: sha512-83yeghZ2xxin3Nj8z1NMd/NCuca+gsYXswywDy5bHvwlWL8tpTQmzGeUuHd9FC3E/SBEMvzJRwWEOz5gGes9Qg==}
@@ -1264,8 +1260,8 @@ packages:
1260 '@standard-schema/spec@1.0.0':
1261 resolution: {integrity: sha512-m2bOd0f2RT9k8QJx1JN85cZYyH1RqFBdlwtkSlf4tBDYLCiiZnv1fIIwacK6cqwXavOydf0NPToMQgpKq+dVlA==}
1262
1267 - '@stylistic/eslint-plugin@5.5.0':
1268 - resolution: {integrity: sha512-IeZF+8H0ns6prg4VrkhgL+yrvDXWDH2cKchrbh80ejG9dQgZWp10epHMbgRuQvgchLII/lfh6Xn3lu6+6L86Hw==}
1263 + '@stylistic/eslint-plugin@5.6.1':
1264 + resolution: {integrity: sha512-JCs+MqoXfXrRPGbGmho/zGS/jMcn3ieKl/A8YImqib76C8kjgZwq5uUFzc30lJkMvcchuRn6/v8IApLxli3Jyw==}
1265 engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
1266 peerDependencies:
1267 eslint: '>=9.0.0'
@@ -1488,16 +1484,16 @@ packages:
1484 '@types/yauzl@2.10.3':
1485 resolution: {integrity: sha512-oJoftv0LSuaDZE3Le4DbKX+KS9G36NzOeSap90UIK0yMA/NhKJhqlSGtNDORNRaIbQfzjXDrQa0ytJ6mNRGz/Q==}
1486
1491 - '@typescript-eslint/eslint-plugin@8.46.2':
1492 - resolution: {integrity: sha512-ZGBMToy857/NIPaaCucIUQgqueOiq7HeAKkhlvqVV4lm089zUFW6ikRySx2v+cAhKeUCPuWVHeimyk6Dw1iY3w==}
1487 + '@typescript-eslint/eslint-plugin@8.48.1':
1488 + resolution: {integrity: sha512-X63hI1bxl5ohelzr0LY5coufyl0LJNthld+abwxpCoo6Gq+hSqhKwci7MUWkXo67mzgUK6YFByhmaHmUcuBJmA==}
1489 engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
1490 peerDependencies:
1495 - '@typescript-eslint/parser': ^8.46.2
1491 + '@typescript-eslint/parser': ^8.48.1
1492 eslint: ^8.57.0 || ^9.0.0
1493 typescript: '>=4.8.4 <6.0.0'
1494
1499 - '@typescript-eslint/parser@8.46.2':
1500 - resolution: {integrity: sha512-BnOroVl1SgrPLywqxyqdJ4l3S2MsKVLDVxZvjI1Eoe8ev2r3kGDo+PcMihNmDE+6/KjkTubSJnmqGZZjQSBq/g==}
1495 + '@typescript-eslint/parser@8.48.1':
1496 + resolution: {integrity: sha512-PC0PDZfJg8sP7cmKe6L3QIL8GZwU5aRvUFedqSIpw3B+QjRSUZeeITC2M5XKeMXEzL6wccN196iy3JLwKNvDVA==}
1497 engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
1498 peerDependencies:
1499 eslint: ^8.57.0 || ^9.0.0
@@ -1509,18 +1505,34 @@ packages:
1505 peerDependencies:
1506 typescript: '>=4.8.4 <6.0.0'
1507
1508 + '@typescript-eslint/project-service@8.48.1':
1509 + resolution: {integrity: sha512-HQWSicah4s9z2/HifRPQ6b6R7G+SBx64JlFQpgSSHWPKdvCZX57XCbszg/bapbRsOEv42q5tayTYcEFpACcX1w==}
1510 + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
1511 + peerDependencies:
1512 + typescript: '>=4.8.4 <6.0.0'
1513 +
1514 '@typescript-eslint/scope-manager@8.46.2':
1515 resolution: {integrity: sha512-LF4b/NmGvdWEHD2H4MsHD8ny6JpiVNDzrSZr3CsckEgCbAGZbYM4Cqxvi9L+WqDMT+51Ozy7lt2M+d0JLEuBqA==}
1516 engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
1517
1518 + '@typescript-eslint/scope-manager@8.48.1':
1519 + resolution: {integrity: sha512-rj4vWQsytQbLxC5Bf4XwZ0/CKd362DkWMUkviT7DCS057SK64D5lH74sSGzhI6PDD2HCEq02xAP9cX68dYyg1w==}
1520 + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
1521 +
1522 '@typescript-eslint/tsconfig-utils@8.46.2':
1523 resolution: {integrity: sha512-a7QH6fw4S57+F5y2FIxxSDyi5M4UfGF+Jl1bCGd7+L4KsaUY80GsiF/t0UoRFDHAguKlBaACWJRmdrc6Xfkkag==}
1524 engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
1525 peerDependencies:
1526 typescript: '>=4.8.4 <6.0.0'
1527
1522 - '@typescript-eslint/type-utils@8.46.2':
1523 - resolution: {integrity: sha512-HbPM4LbaAAt/DjxXaG9yiS9brOOz6fabal4uvUmaUYe6l3K1phQDMQKBRUrr06BQkxkvIZVVHttqiybM9nJsLA==}
1528 + '@typescript-eslint/tsconfig-utils@8.48.1':
1529 + resolution: {integrity: sha512-k0Jhs4CpEffIBm6wPaCXBAD7jxBtrHjrSgtfCjUvPp9AZ78lXKdTR8fxyZO5y4vWNlOvYXRtngSZNSn+H53Jkw==}
1530 + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
1531 + peerDependencies:
1532 + typescript: '>=4.8.4 <6.0.0'
1533 +
1534 + '@typescript-eslint/type-utils@8.48.1':
1535 + resolution: {integrity: sha512-1jEop81a3LrJQLTf/1VfPQdhIY4PlGDBc/i67EVWObrtvcziysbLN3oReexHOM6N3jyXgCrkBsZpqwH0hiDOQg==}
1536 engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
1537 peerDependencies:
1538 eslint: ^8.57.0 || ^9.0.0
@@ -1530,12 +1542,22 @@ packages:
1542 resolution: {integrity: sha512-lNCWCbq7rpg7qDsQrd3D6NyWYu+gkTENkG5IKYhUIcxSb59SQC/hEQ+MrG4sTgBVghTonNWq42bA/d4yYumldQ==}
1543 engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
1544
1545 + '@typescript-eslint/types@8.48.1':
1546 + resolution: {integrity: sha512-+fZ3LZNeiELGmimrujsDCT4CRIbq5oXdHe7chLiW8qzqyPMnn1puNstCrMNVAqwcl2FdIxkuJ4tOs/RFDBVc/Q==}
1547 + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
1548 +
1549 '@typescript-eslint/typescript-estree@8.46.2':
1550 resolution: {integrity: sha512-f7rW7LJ2b7Uh2EiQ+7sza6RDZnajbNbemn54Ob6fRwQbgcIn+GWfyuHDHRYgRoZu1P4AayVScrRW+YfbTvPQoQ==}
1551 engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
1552 peerDependencies:
1553 typescript: '>=4.8.4 <6.0.0'
1554
1555 + '@typescript-eslint/typescript-estree@8.48.1':
1556 + resolution: {integrity: sha512-/9wQ4PqaefTK6POVTjJaYS0bynCgzh6ClJHGSBj06XEHjkfylzB+A3qvyaXnErEZSaxhIo4YdyBgq6j4RysxDg==}
1557 + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
1558 + peerDependencies:
1559 + typescript: '>=4.8.4 <6.0.0'
1560 +
1561 '@typescript-eslint/utils@8.46.2':
1562 resolution: {integrity: sha512-sExxzucx0Tud5tE0XqR0lT0psBQvEpnpiul9XbGUB1QwpWJJAps1O/Z7hJxLGiZLBKMCutjTzDgmd1muEhBnVg==}
1563 engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
@@ -1543,10 +1565,21 @@ packages:
1565 eslint: ^8.57.0 || ^9.0.0
1566 typescript: '>=4.8.4 <6.0.0'
1567
1568 + '@typescript-eslint/utils@8.48.1':
1569 + resolution: {integrity: sha512-fAnhLrDjiVfey5wwFRwrweyRlCmdz5ZxXz2G/4cLn0YDLjTapmN4gcCsTBR1N2rWnZSDeWpYtgLDsJt+FpmcwA==}
1570 + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
1571 + peerDependencies:
1572 + eslint: ^8.57.0 || ^9.0.0
1573 + typescript: '>=4.8.4 <6.0.0'
1574 +
1575 '@typescript-eslint/visitor-keys@8.46.2':
1576 resolution: {integrity: sha512-tUFMXI4gxzzMXt4xpGJEsBsTox0XbNQ1y94EwlD/CuZwFcQP79xfQqMhau9HsRc/J0cAPA/HZt1dZPtGn9V/7w==}
1577 engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
1578
1579 + '@typescript-eslint/visitor-keys@8.48.1':
1580 + resolution: {integrity: sha512-BmxxndzEWhE4TIEEMBs8lP3MBWN3jFPs/p6gPm/wkv02o41hI6cq9AuSmGAaTTHPtA1FTi2jBre4A9rm5ZmX+Q==}
1581 + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
1582 +
1583 '@ungap/structured-clone@1.3.0':
1584 resolution: {integrity: sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g==}
1585
@@ -1564,8 +1597,8 @@ packages:
1597 vite: ^5.0.0 || ^6.0.0 || ^7.0.0
1598 vue: ^3.2.25
1599
1567 - '@vitest/eslint-plugin@1.4.0':
1568 - resolution: {integrity: sha512-TMzJ0Vqdsc71stblzI0ZdqSnt6Bp4mJ+amD3Hv3qhKK82hBUnznYfnLwA80gdGfe5V24ysndMOoSGrol6fyvbA==}
1600 + '@vitest/eslint-plugin@1.5.1':
1601 + resolution: {integrity: sha512-t49CNERe/YadnLn90NTTKJLKzs99xBkXElcoUTLodG6j1G0Q7jy3mXqqiHd3N5aryG2KkgOg4UAoGwgwSrZqKQ==}
1602 engines: {node: '>=18'}
1603 peerDependencies:
1604 eslint: '>=8.57.0'
@@ -1577,11 +1610,11 @@ packages:
1610 vitest:
1611 optional: true
1612
1580 - '@vitest/expect@4.0.14':
1581 - resolution: {integrity: sha512-RHk63V3zvRiYOWAV0rGEBRO820ce17hz7cI2kDmEdfQsBjT2luEKB5tCOc91u1oSQoUOZkSv3ZyzkdkSLD7lKw==}
1613 + '@vitest/expect@4.0.15':
1614 + resolution: {integrity: sha512-Gfyva9/GxPAWXIWjyGDli9O+waHDC0Q0jaLdFP1qPAUUfo1FEXPXUfUkp3eZA0sSq340vPycSyOlYUeM15Ft1w==}
1615
1583 - '@vitest/mocker@4.0.14':
1584 - resolution: {integrity: sha512-RzS5NujlCzeRPF1MK7MXLiEFpkIXeMdQ+rN3Kk3tDI9j0mtbr7Nmuq67tpkOJQpgyClbOltCXMjLZicJHsH5Cg==}
1616 + '@vitest/mocker@4.0.15':
1617 + resolution: {integrity: sha512-CZ28GLfOEIFkvCFngN8Sfx5h+Se0zN+h4B7yOsPVCcgtiO7t5jt9xQh2E1UkFep+eb9fjyMfuC5gBypwb07fvQ==}
1618 peerDependencies:
1619 msw: ^2.4.9
1620 vite: ^6.0.0 || ^7.0.0-0
@@ -1591,20 +1624,20 @@ packages:
1624 vite:
1625 optional: true
1626
1594 - '@vitest/pretty-format@4.0.14':
1595 - resolution: {integrity: sha512-SOYPgujB6TITcJxgd3wmsLl+wZv+fy3av2PpiPpsWPZ6J1ySUYfScfpIt2Yv56ShJXR2MOA6q2KjKHN4EpdyRQ==}
1627 + '@vitest/pretty-format@4.0.15':
1628 + resolution: {integrity: sha512-SWdqR8vEv83WtZcrfLNqlqeQXlQLh2iilO1Wk1gv4eiHKjEzvgHb2OVc3mIPyhZE6F+CtfYjNlDJwP5MN6Km7A==}
1629
1597 - '@vitest/runner@4.0.14':
1598 - resolution: {integrity: sha512-BsAIk3FAqxICqREbX8SetIteT8PiaUL/tgJjmhxJhCsigmzzH8xeadtp7LRnTpCVzvf0ib9BgAfKJHuhNllKLw==}
1630 + '@vitest/runner@4.0.15':
1631 + resolution: {integrity: sha512-+A+yMY8dGixUhHmNdPUxOh0la6uVzun86vAbuMT3hIDxMrAOmn5ILBHm8ajrqHE0t8R9T1dGnde1A5DTnmi3qw==}
1632
1600 - '@vitest/snapshot@4.0.14':
1601 - resolution: {integrity: sha512-aQVBfT1PMzDSA16Y3Fp45a0q8nKexx6N5Amw3MX55BeTeZpoC08fGqEZqVmPcqN0ueZsuUQ9rriPMhZ3Mu19Ag==}
1633 + '@vitest/snapshot@4.0.15':
1634 + resolution: {integrity: sha512-A7Ob8EdFZJIBjLjeO0DZF4lqR6U7Ydi5/5LIZ0xcI+23lYlsYJAfGn8PrIWTYdZQRNnSRlzhg0zyGu37mVdy5g==}
1635
1603 - '@vitest/spy@4.0.14':
1604 - resolution: {integrity: sha512-JmAZT1UtZooO0tpY3GRyiC/8W7dCs05UOq9rfsUUgEZEdq+DuHLmWhPsrTt0TiW7WYeL/hXpaE07AZ2RCk44hg==}
1636 + '@vitest/spy@4.0.15':
1637 + resolution: {integrity: sha512-+EIjOJmnY6mIfdXtE/bnozKEvTC4Uczg19yeZ2vtCz5Yyb0QQ31QWVQ8hswJ3Ysx/K2EqaNsVanjr//2+P3FHw==}
1638
1606 - '@vitest/utils@4.0.14':
1607 - resolution: {integrity: sha512-hLqXZKAWNg8pI+SQXyXxWCTOpA3MvsqcbVeNgSi8x/CSN2wi26dSzn1wrOhmCmFjEvN9p8/kLFRHa6PI8jHazw==}
1639 + '@vitest/utils@4.0.15':
1640 + resolution: {integrity: sha512-HXjPW2w5dxhTD0dLwtYHDnelK3j8sR8cWIaLxr22evTyY6q8pRCjZSmhRWVjBaOVXChQd6AwMzi9pucorXCPZA==}
1641
1642 '@volar/language-core@2.4.23':
1643 resolution: {integrity: sha512-hEEd5ET/oSmBC6pi1j6NaNYRWoAiDhINbT8rmwtINugR39loROSlufGdYMF9TaKGfz+ViGs1Idi3mAhnuPcoGQ==}
@@ -2196,8 +2229,8 @@ packages:
2229 csstype@3.1.3:
2230 resolution: {integrity: sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==}
2231
2199 - cypress@15.7.0:
2200 - resolution: {integrity: sha512-1C81zKxnQckYm2XGi37rPV4rN0bzUoWhydhKdOyshJn5gJKszEx5as9VLSZI0jp0ye49QxmnbU4TtMpcD+OmGQ==}
2232 + cypress@15.7.1:
2233 + resolution: {integrity: sha512-U3sYnJ+Cnpgr6IPycxsznTg//mGVXfPGeGV+om7VQCyp5XyVkhG4oPr3X3hTq1+OB0Om0O5DxusYmt7cbvwqMQ==}
2234 engines: {node: ^20.1.0 || ^22.0.0 || >=24.0.0}
2235 hasBin: true
2236
@@ -2494,8 +2527,8 @@ packages:
2527 typescript:
2528 optional: true
2529
2497 - eslint-plugin-jsdoc@61.1.11:
2498 - resolution: {integrity: sha512-c+NQQOFd+ZTjFt0pfFMB8OTumExg0vf8mlJsOtLj6qTDGewtLh7bhwoDgBg6rIiTziYc8N4u4dYmSdAIn0yTEQ==}
2530 + eslint-plugin-jsdoc@61.4.1:
2531 + resolution: {integrity: sha512-3c1QW/bV25sJ1MsIvsvW+EtLtN6yZMduw7LVQNVt72y2/5BbV5Pg5b//TE5T48LRUxoEQGaZJejCmcj3wCxBzw==}
2532 engines: {node: '>=20.11.0'}
2533 peerDependencies:
2534 eslint: ^7.0.0 || ^8.0.0 || ^9.0.0
@@ -2522,8 +2555,8 @@ packages:
2555 peerDependencies:
2556 eslint: '>=8.45.0'
2557
2525 - eslint-plugin-pnpm@1.3.0:
2526 - resolution: {integrity: sha512-Lkdnj3afoeUIkDUu8X74z60nrzjQ2U55EbOeI+qz7H1He4IO4gmUKT2KQIl0It52iMHJeuyLDWWNgjr6UIK8nw==}
2558 + eslint-plugin-pnpm@1.4.1:
2559 + resolution: {integrity: sha512-BVb2/cDN8YmgW+lu0bDeCP7a8CzE8CiKfztd46Ide71qbqR5uKD9TaD1W9FSRf36Pa8noEVuH73CAQ6rdgSu0w==}
2560 peerDependencies:
2561 eslint: ^9.0.0
2562
@@ -2554,8 +2587,8 @@ packages:
2587 '@typescript-eslint/eslint-plugin':
2588 optional: true
2589
2557 - eslint-plugin-vue@10.5.1:
2558 - resolution: {integrity: sha512-SbR9ZBUFKgvWAbq3RrdCtWaW0IKm6wwUiApxf3BVTNfqUIo4IQQmreMg2iHFJJ6C/0wss3LXURBJ1OwS/MhFcQ==}
2590 + eslint-plugin-vue@10.6.2:
2591 + resolution: {integrity: sha512-nA5yUs/B1KmKzvC42fyD0+l9Yd+LtEpVhWRbXuDj0e+ZURcTtyRbMDWUeJmTAh2wC6jC83raS63anNM2YT3NPw==}
2592 engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
2593 peerDependencies:
2594 '@stylistic/eslint-plugin': ^2.0.0 || ^3.0.0 || ^4.0.0 || ^5.0.0
@@ -2872,8 +2905,8 @@ packages:
2905 resolution: {integrity: sha512-7ACyT3wmyp3I61S4fG682L0VA2RGD9otkqGJIwNUMF1SWUombIIk+af1unuDYgMm082aHYwD+mzJvv9Iu8dsgg==}
2906 engines: {node: '>=18'}
2907
2875 - globals@16.4.0:
2876 - resolution: {integrity: sha512-ob/2LcVVaVGCYN+r14cnwnoDPUufjiYgSqRhiFD0Q1iI4Odora5RE8Iv1D24hAz5oMophRGkGz+yuvQmmUMnMw==}
2908 + globals@16.5.0:
2909 + resolution: {integrity: sha512-c/c15i26VrJ4IRt5Z89DnIzCGDn9EcebibhAOjw5ibqEHsE1wLUgkPn9RDmNcUKyU87GeaL633nyJ+pplFR2ZQ==}
2910 engines: {node: '>=18'}
2911
2912 globrex@0.1.2:
@@ -3111,8 +3144,8 @@ packages:
3144 resolution: {integrity: sha512-IiQpRyypSnLisQf3PwuN2eIHAsAIGZIrLZkd4zdvIar2bDyhM91ubRjy8a3eYablXsh9BeI/c7dmPYHca5qtoA==}
3145 engines: {node: '>= 20'}
3146
3114 - jose@6.1.2:
3115 - resolution: {integrity: sha512-MpcPtHLE5EmztuFIqB0vzHAWJPpmN1E6L4oo+kze56LIs3MyXIj9ZHMDxqOvkP38gBR7K1v3jqd4WU2+nrfONQ==}
3147 + jose@6.1.3:
3148 + resolution: {integrity: sha512-0TpaTfihd4QMNwrz/ob2Bp7X04yuxJkjRGi4aKmOqwhov54i6u79oCv7T+C7lo70MKH6BesI3vscD1yb/yzKXQ==}
3149
3150 js-beautify@1.15.4:
3151 resolution: {integrity: sha512-9/KXeZUKKJwqCXUdBxFJ3vPh467OCckSBmYDwSK/EtV090K+iMJ7zx2S3HLVDIWFQdqMIsZWbnaGiba18aWhaA==}
@@ -3837,11 +3870,14 @@ packages:
3870 pnpm-workspace-yaml@1.3.0:
3871 resolution: {integrity: sha512-Krb5q8Totd5mVuLx7we+EFHq/AfxA75nbfTm25Q1pIf606+RlaKUG+PXH8SDihfe5b5k4H09gE+sL47L1t5lbw==}
3872
3873 + pnpm-workspace-yaml@1.4.1:
3874 + resolution: {integrity: sha512-k3TFyIjKf4bJnZ/jnqTfdytcsZfoglnb26kTXP3E8pYYaPyvvqxTd7tL4aJ5Wotc8Oi/+YADYwdkOu3snFS+Hg==}
3875 +
3876 popmotion@11.0.5:
3877 resolution: {integrity: sha512-la8gPM1WYeFznb/JqF4GiTkRRPZsfaj2+kCxqQgr2MJylMmIKUwBfWW8Wa5fml/8gmtlD5yI01MP1QCZPWmppA==}
3878
3843 - postcss-selector-parser@6.1.2:
3844 - resolution: {integrity: sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==}
3879 + postcss-selector-parser@7.1.1:
3880 + resolution: {integrity: sha512-orRsuYpJVw8LdAwqqLykBj9ecS5/cRHlI5+nvTo8LcCKmzDmqVORXtOIYEEQuL9D4BxtA1lm5isAqzQZCoQ6Eg==}
3881 engines: {node: '>=4'}
3882
3883 postcss@8.5.6:
@@ -3852,8 +3888,8 @@ packages:
3888 resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==}
3889 engines: {node: '>= 0.8.0'}
3890
3855 - prettier-plugin-tailwindcss@0.7.1:
3856 - resolution: {integrity: sha512-Bzv1LZcuiR1Sk02iJTS1QzlFNp/o5l2p3xkopwOrbPmtMeh3fK9rVW5M3neBQzHq+kGKj/4LGQMTNcTH4NGPtQ==}
3891 + prettier-plugin-tailwindcss@0.7.2:
3892 + resolution: {integrity: sha512-LkphyK3Fw+q2HdMOoiEHWf93fNtYJwfamoKPl7UwtjFQdei/iIBoX11G6j706FzN3ymX9mPVi97qIY8328vdnA==}
3893 engines: {node: '>=20.19'}
3894 peerDependencies:
3895 '@ianvs/prettier-plugin-sort-imports': '*'
@@ -3907,8 +3943,8 @@ packages:
3943 prettier-plugin-svelte:
3944 optional: true
3945
3910 - prettier@3.7.3:
3911 - resolution: {integrity: sha512-QgODejq9K3OzoBbuyobZlUhznP5SKwPqp+6Q6xw6o8gnhr4O85L2U915iM2IDcfF2NPXVaM9zlo9tdwipnYwzg==}
3946 + prettier@3.7.4:
3947 + resolution: {integrity: sha512-v6UNi1+3hSlVvv8fSaoUbggEM5VErKmmpGA7Pl3HF8V6uKY7rvClBOJlH6yNwQtfTueNkGVpOv/mtWL9L4bgRA==}
3948 engines: {node: '>=14'}
3949 hasBin: true
3950
@@ -4132,8 +4168,8 @@ packages:
4168 resolution: {integrity: sha512-ObmnIF4hXNg1BqhnHmgbDETF8dLPCggZWBjkQfhZpbszZnYur5DUljTcCHii5LC3J5E0yeO/1LIMyH+UvHQgyw==}
4169 engines: {node: '>= 0.4'}
4170
4135 - shiki@3.17.0:
4136 - resolution: {integrity: sha512-lUZfWsyW7czITYTdo/Tb6ZM4VfyXlzmKYBQBjTz+pBzPPkP08RgIt00Ls1Z50Cl3SfwJsue6WbJeF3UgqLVI9Q==}
4171 + shiki@3.19.0:
4172 + resolution: {integrity: sha512-77VJr3OR/VUZzPiStyRhADmO2jApMM0V2b1qf0RpfWya8Zr1PeZev5AEpPGAAKWdiYUtcZGBE4F5QvJml1PvWA==}
4173
4174 side-channel-list@1.0.0:
4175 resolution: {integrity: sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==}
@@ -4333,9 +4369,6 @@ packages:
4369 tinybench@2.9.0:
4370 resolution: {integrity: sha512-0+DUvqWMValLmha6lr4kD8iAMK1HzV0/aKnCtWb9v9641TnP/MFb7Pc2bxoxQjTXAErryXVgUOfv2YqNllqGeg==}
4371
4336 - tinyexec@0.3.2:
4337 - resolution: {integrity: sha512-KQQR9yN7R5+OSwaK0XQoj22pwHoTlgYqmUscPYoknOoWCWfj/5/ABTMRi69FrKU5ffPVh5QcFikpWJI/P1ocHA==}
4338 -
4372 tinyexec@1.0.1:
4373 resolution: {integrity: sha512-5uC6DDlmeqiOwCPmK9jMSdOuZTh8bU39Ys6yidB+UTt5hfZUPGAypSgFRiEp+jbi9qH40BLDvy85jIU88wKSqw==}
4374
@@ -4445,8 +4478,8 @@ packages:
4478 resolution: {integrity: sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==}
4479 engines: {node: '>=8'}
4480
4448 - type-fest@5.2.0:
4449 - resolution: {integrity: sha512-xxCJm+Bckc6kQBknN7i9fnP/xobQRsRQxR01CztFkp/h++yfVxUUcmMgfR2HttJx/dpWjS9ubVuyspJv24Q9DA==}
4481 + type-fest@5.3.0:
4482 + resolution: {integrity: sha512-d9CwU93nN0IA1QL+GSNDdwLAu1Ew5ZjTwupvedwg3WdfoH6pIDvYQ2hV0Uc2nKBLPq7NB5apCx57MLS5qlmO5g==}
4483 engines: {node: '>=20'}
4484
4485 typescript@5.9.3:
@@ -4583,8 +4616,8 @@ packages:
4616 peerDependencies:
4617 vue: '>=3.2.13'
4618
4586 - vite@7.2.4:
4587 - resolution: {integrity: sha512-NL8jTlbo0Tn4dUEXEsUg8KeyG/Lkmc4Fnzb8JXN/Ykm9G4HNImjtABMJgkQoVjOBN/j2WAwDTRytdqJbZsah7w==}
4619 + vite@7.2.6:
4620 + resolution: {integrity: sha512-tI2l/nFHC5rLh7+5+o7QjKjSR04ivXDF4jcgV0f/bTQ+OJiITy5S6gaynVsEM+7RqzufMnVbIon6Sr5x1SDYaQ==}
4621 engines: {node: ^20.19.0 || >=22.12.0}
4622 hasBin: true
4623 peerDependencies:
@@ -4623,18 +4656,18 @@ packages:
4656 yaml:
4657 optional: true
4658
4626 - vitest@4.0.14:
4627 - resolution: {integrity: sha512-d9B2J9Cm9dN9+6nxMnnNJKJCtcyKfnHj15N6YNJfaFHRLua/d3sRKU9RuKmO9mB0XdFtUizlxfz/VPbd3OxGhw==}
4659 + vitest@4.0.15:
4660 + resolution: {integrity: sha512-n1RxDp8UJm6N0IbJLQo+yzLZ2sQCDyl1o0LeugbPWf8+8Fttp29GghsQBjYJVmWq3gBFfe9Hs1spR44vovn2wA==}
4661 engines: {node: ^20.0.0 || ^22.0.0 || >=24.0.0}
4662 hasBin: true
4663 peerDependencies:
4664 '@edge-runtime/vm': '*'
4665 '@opentelemetry/api': ^1.9.0
4666 '@types/node': ^20.0.0 || ^22.0.0 || >=24.0.0
4634 - '@vitest/browser-playwright': 4.0.14
4635 - '@vitest/browser-preview': 4.0.14
4636 - '@vitest/browser-webdriverio': 4.0.14
4637 - '@vitest/ui': 4.0.14
4667 + '@vitest/browser-playwright': 4.0.15
4668 + '@vitest/browser-preview': 4.0.15
4669 + '@vitest/browser-webdriverio': 4.0.15
4670 + '@vitest/ui': 4.0.15
4671 happy-dom: '*'
4672 jsdom: '*'
4673 peerDependenciesMeta:
@@ -4855,8 +4888,8 @@ packages:
4888 yallist@3.1.1:
4889 resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==}
4890
4858 - yaml-eslint-parser@1.3.0:
4859 - resolution: {integrity: sha512-E/+VitOorXSLiAqtTd7Yqax0/pAS3xaYMP+AUUJGOK1OZG3rhcj9fcJOM5HJ2VrP1FrStVCWr1muTfQCdj4tAA==}
4891 + yaml-eslint-parser@1.3.2:
4892 + resolution: {integrity: sha512-odxVsHAkZYYglR30aPYRY4nUGJnoJ2y1ww2HDvZALo0BDETv9kWbi16J52eHs+PWRNmF4ub6nZqfVOeesOvntg==}
4893 engines: {node: ^14.17.0 || >=16.0.0}
4894
4895 yaml@1.10.2:
@@ -4868,6 +4901,11 @@ packages:
4901 engines: {node: '>= 14.6'}
4902 hasBin: true
4903
4904 + yaml@2.8.2:
4905 + resolution: {integrity: sha512-mplynKqc1C2hTVYxd0PU2xQAc22TI1vShAYGksCCfxbn/dFwnHTNi1bvYsBTkhdUNtGIf5xNOg938rrSSYvS9A==}
4906 + engines: {node: '>= 14.6'}
4907 + hasBin: true
4908 +
4909 yargs-parser@20.2.9:
4910 resolution: {integrity: sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==}
4911 engines: {node: '>=10'}
@@ -4989,16 +5027,16 @@ snapshots:
5027 dependencies:
5028 '@algolia/client-common': 5.42.0
5029
4992 - '@antfu/eslint-config@6.2.0(@vue/compiler-sfc@3.5.25)(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)(vitest@4.0.14(@types/node@24.10.1)(jiti@2.6.1)(jsdom@27.2.0)(lightningcss@1.30.2)(sass@1.94.2)(yaml@2.8.1))':
5030 + '@antfu/eslint-config@6.4.2(@vue/compiler-sfc@3.5.25)(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)(vitest@4.0.15(@types/node@24.10.1)(jiti@2.6.1)(jsdom@27.2.0)(lightningcss@1.30.2)(sass@1.94.2)(yaml@2.8.2))':
5031 dependencies:
5032 '@antfu/install-pkg': 1.1.0
5033 '@clack/prompts': 0.11.0
5034 '@eslint-community/eslint-plugin-eslint-comments': 4.5.0(eslint@9.39.1(jiti@2.6.1))
4997 - '@eslint/markdown': 7.5.0
4998 - '@stylistic/eslint-plugin': 5.5.0(eslint@9.39.1(jiti@2.6.1))
4999 - '@typescript-eslint/eslint-plugin': 8.46.2(@typescript-eslint/parser@8.46.2(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)
5000 - '@typescript-eslint/parser': 8.46.2(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)
5001 - '@vitest/eslint-plugin': 1.4.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)(vitest@4.0.14(@types/node@24.10.1)(jiti@2.6.1)(jsdom@27.2.0)(lightningcss@1.30.2)(sass@1.94.2)(yaml@2.8.1))
5035 + '@eslint/markdown': 7.5.1
5036 + '@stylistic/eslint-plugin': 5.6.1(eslint@9.39.1(jiti@2.6.1))
5037 + '@typescript-eslint/eslint-plugin': 8.48.1(@typescript-eslint/parser@8.48.1(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)
5038 + '@typescript-eslint/parser': 8.48.1(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)
5039 + '@vitest/eslint-plugin': 1.5.1(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)(vitest@4.0.15(@types/node@24.10.1)(jiti@2.6.1)(jsdom@27.2.0)(lightningcss@1.30.2)(sass@1.94.2)(yaml@2.8.2))
5040 ansis: 4.2.0
5041 cac: 6.7.14
5042 eslint: 9.39.1(jiti@2.6.1)
@@ -5008,26 +5046,26 @@ snapshots:
5046 eslint-plugin-antfu: 3.1.1(eslint@9.39.1(jiti@2.6.1))
5047 eslint-plugin-command: 3.3.1(eslint@9.39.1(jiti@2.6.1))
5048 eslint-plugin-import-lite: 0.3.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)
5011 - eslint-plugin-jsdoc: 61.1.11(eslint@9.39.1(jiti@2.6.1))
5049 + eslint-plugin-jsdoc: 61.4.1(eslint@9.39.1(jiti@2.6.1))
5050 eslint-plugin-jsonc: 2.21.0(eslint@9.39.1(jiti@2.6.1))
5051 eslint-plugin-n: 17.23.1(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)
5052 eslint-plugin-no-only-tests: 3.3.0
5053 eslint-plugin-perfectionist: 4.15.1(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)
5016 - eslint-plugin-pnpm: 1.3.0(eslint@9.39.1(jiti@2.6.1))
5054 + eslint-plugin-pnpm: 1.4.1(eslint@9.39.1(jiti@2.6.1))
5055 eslint-plugin-regexp: 2.10.0(eslint@9.39.1(jiti@2.6.1))
5056 eslint-plugin-toml: 0.12.0(eslint@9.39.1(jiti@2.6.1))
5057 eslint-plugin-unicorn: 62.0.0(eslint@9.39.1(jiti@2.6.1))
5020 - eslint-plugin-unused-imports: 4.3.0(@typescript-eslint/eslint-plugin@8.46.2(@typescript-eslint/parser@8.46.2(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.1(jiti@2.6.1))
5021 - eslint-plugin-vue: 10.5.1(@stylistic/eslint-plugin@5.5.0(eslint@9.39.1(jiti@2.6.1)))(@typescript-eslint/parser@8.46.2(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.1(jiti@2.6.1))(vue-eslint-parser@10.2.0(eslint@9.39.1(jiti@2.6.1)))
5058 + eslint-plugin-unused-imports: 4.3.0(@typescript-eslint/eslint-plugin@8.48.1(@typescript-eslint/parser@8.48.1(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.1(jiti@2.6.1))
5059 + eslint-plugin-vue: 10.6.2(@stylistic/eslint-plugin@5.6.1(eslint@9.39.1(jiti@2.6.1)))(@typescript-eslint/parser@8.48.1(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.1(jiti@2.6.1))(vue-eslint-parser@10.2.0(eslint@9.39.1(jiti@2.6.1)))
5060 eslint-plugin-yml: 1.19.0(eslint@9.39.1(jiti@2.6.1))
5061 eslint-processor-vue-blocks: 2.0.0(@vue/compiler-sfc@3.5.25)(eslint@9.39.1(jiti@2.6.1))
5024 - globals: 16.4.0
5062 + globals: 16.5.0
5063 jsonc-eslint-parser: 2.4.1
5064 local-pkg: 1.1.2
5065 parse-gitignore: 2.0.0
5066 toml-eslint-parser: 0.10.0
5067 vue-eslint-parser: 10.2.0(eslint@9.39.1(jiti@2.6.1))
5030 - yaml-eslint-parser: 1.3.0
5068 + yaml-eslint-parser: 1.3.2
5069 transitivePeerDependencies:
5070 - '@eslint/json'
5071 - '@vue/compiler-sfc'
@@ -5038,7 +5076,7 @@ snapshots:
5076 '@antfu/install-pkg@1.1.0':
5077 dependencies:
5078 package-manager-detector: 1.5.0
5041 - tinyexec: 1.0.1
5079 + tinyexec: 1.0.2
5080
5081 '@antfu/ni@27.0.1':
5082 dependencies:
@@ -5527,10 +5565,6 @@ snapshots:
5565 dependencies:
5566 '@eslint/core': 0.17.0
5567
5530 - '@eslint/core@0.16.0':
5531 - dependencies:
5532 - '@types/json-schema': 7.0.15
5533 -
5568 '@eslint/core@0.17.0':
5569 dependencies:
5570 '@types/json-schema': 7.0.15
@@ -5551,9 +5585,9 @@ snapshots:
5585
5586 '@eslint/js@9.39.1': {}
5587
5554 - '@eslint/markdown@7.5.0':
5588 + '@eslint/markdown@7.5.1':
5589 dependencies:
5556 - '@eslint/core': 0.16.0
5590 + '@eslint/core': 0.17.0
5591 '@eslint/plugin-kit': 0.4.1
5592 github-slugger: 2.0.0
5593 mdast-util-from-markdown: 2.0.2
@@ -5866,38 +5900,38 @@ snapshots:
5900 '@rollup/rollup-win32-x64-msvc@4.52.5':
5901 optional: true
5902
5869 - '@shikijs/core@3.17.0':
5903 + '@shikijs/core@3.19.0':
5904 dependencies:
5871 - '@shikijs/types': 3.17.0
5905 + '@shikijs/types': 3.19.0
5906 '@shikijs/vscode-textmate': 10.0.2
5907 '@types/hast': 3.0.4
5908 hast-util-to-html: 9.0.5
5909
5876 - '@shikijs/engine-javascript@3.17.0':
5910 + '@shikijs/engine-javascript@3.19.0':
5911 dependencies:
5878 - '@shikijs/types': 3.17.0
5912 + '@shikijs/types': 3.19.0
5913 '@shikijs/vscode-textmate': 10.0.2
5914 oniguruma-to-es: 4.3.4
5915
5882 - '@shikijs/engine-oniguruma@3.17.0':
5916 + '@shikijs/engine-oniguruma@3.19.0':
5917 dependencies:
5884 - '@shikijs/types': 3.17.0
5918 + '@shikijs/types': 3.19.0
5919 '@shikijs/vscode-textmate': 10.0.2
5920
5887 - '@shikijs/langs@3.17.0':
5921 + '@shikijs/langs@3.19.0':
5922 dependencies:
5889 - '@shikijs/types': 3.17.0
5923 + '@shikijs/types': 3.19.0
5924
5891 - '@shikijs/markdown-it@3.17.0':
5925 + '@shikijs/markdown-it@3.19.0':
5926 dependencies:
5927 markdown-it: 14.1.0
5894 - shiki: 3.17.0
5928 + shiki: 3.19.0
5929
5896 - '@shikijs/themes@3.17.0':
5930 + '@shikijs/themes@3.19.0':
5931 dependencies:
5898 - '@shikijs/types': 3.17.0
5932 + '@shikijs/types': 3.19.0
5933
5900 - '@shikijs/types@3.17.0':
5934 + '@shikijs/types@3.19.0':
5935 dependencies:
5936 '@shikijs/vscode-textmate': 10.0.2
5937 '@types/hast': 3.0.4
@@ -5912,10 +5946,10 @@ snapshots:
5946
5947 '@standard-schema/spec@1.0.0': {}
5948
5915 - '@stylistic/eslint-plugin@5.5.0(eslint@9.39.1(jiti@2.6.1))':
5949 + '@stylistic/eslint-plugin@5.6.1(eslint@9.39.1(jiti@2.6.1))':
5950 dependencies:
5951 '@eslint-community/eslint-utils': 4.9.0(eslint@9.39.1(jiti@2.6.1))
5918 - '@typescript-eslint/types': 8.46.2
5952 + '@typescript-eslint/types': 8.48.1
5953 eslint: 9.39.1(jiti@2.6.1)
5954 eslint-visitor-keys: 4.2.1
5955 espree: 10.4.0
@@ -6002,12 +6036,12 @@ snapshots:
6036 '@tailwindcss/oxide-win32-arm64-msvc': 4.1.17
6037 '@tailwindcss/oxide-win32-x64-msvc': 4.1.17
6038
6005 - '@tailwindcss/vite@4.1.17(vite@7.2.4(@types/node@24.10.1)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.94.2)(yaml@2.8.1))':
6039 + '@tailwindcss/vite@4.1.17(vite@7.2.6(@types/node@24.10.1)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.94.2)(yaml@2.8.2))':
6040 dependencies:
6041 '@tailwindcss/node': 4.1.17
6042 '@tailwindcss/oxide': 4.1.17
6043 tailwindcss: 4.1.17
6010 - vite: 7.2.4(@types/node@24.10.1)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.94.2)(yaml@2.8.1)
6044 + vite: 7.2.6(@types/node@24.10.1)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.94.2)(yaml@2.8.2)
6045
6046 '@trysound/sax@0.2.0': {}
6047
@@ -6109,14 +6143,14 @@ snapshots:
6143 '@types/node': 24.10.1
6144 optional: true
6145
6112 - '@typescript-eslint/eslint-plugin@8.46.2(@typescript-eslint/parser@8.46.2(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)':
6146 + '@typescript-eslint/eslint-plugin@8.48.1(@typescript-eslint/parser@8.48.1(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)':
6147 dependencies:
6148 '@eslint-community/regexpp': 4.12.2
6115 - '@typescript-eslint/parser': 8.46.2(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)
6116 - '@typescript-eslint/scope-manager': 8.46.2
6117 - '@typescript-eslint/type-utils': 8.46.2(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)
6118 - '@typescript-eslint/utils': 8.46.2(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)
6119 - '@typescript-eslint/visitor-keys': 8.46.2
6149 + '@typescript-eslint/parser': 8.48.1(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)
6150 + '@typescript-eslint/scope-manager': 8.48.1
6151 + '@typescript-eslint/type-utils': 8.48.1(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)
6152 + '@typescript-eslint/utils': 8.48.1(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)
6153 + '@typescript-eslint/visitor-keys': 8.48.1
6154 eslint: 9.39.1(jiti@2.6.1)
6155 graphemer: 1.4.0
6156 ignore: 7.0.5
@@ -6126,12 +6160,12 @@ snapshots:
6160 transitivePeerDependencies:
6161 - supports-color
6162
6129 - '@typescript-eslint/parser@8.46.2(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)':
6163 + '@typescript-eslint/parser@8.48.1(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)':
6164 dependencies:
6131 - '@typescript-eslint/scope-manager': 8.46.2
6132 - '@typescript-eslint/types': 8.46.2
6133 - '@typescript-eslint/typescript-estree': 8.46.2(typescript@5.9.3)
6134 - '@typescript-eslint/visitor-keys': 8.46.2
6165 + '@typescript-eslint/scope-manager': 8.48.1
6166 + '@typescript-eslint/types': 8.48.1
6167 + '@typescript-eslint/typescript-estree': 8.48.1(typescript@5.9.3)
6168 + '@typescript-eslint/visitor-keys': 8.48.1
6169 debug: 4.4.3(supports-color@8.1.1)
6170 eslint: 9.39.1(jiti@2.6.1)
6171 typescript: 5.9.3
@@ -6147,20 +6181,38 @@ snapshots:
6181 transitivePeerDependencies:
6182 - supports-color
6183
6184 + '@typescript-eslint/project-service@8.48.1(typescript@5.9.3)':
6185 + dependencies:
6186 + '@typescript-eslint/tsconfig-utils': 8.48.1(typescript@5.9.3)
6187 + '@typescript-eslint/types': 8.48.1
6188 + debug: 4.4.3(supports-color@8.1.1)
6189 + typescript: 5.9.3
6190 + transitivePeerDependencies:
6191 + - supports-color
6192 +
6193 '@typescript-eslint/scope-manager@8.46.2':
6194 dependencies:
6195 '@typescript-eslint/types': 8.46.2
6196 '@typescript-eslint/visitor-keys': 8.46.2
6197
6198 + '@typescript-eslint/scope-manager@8.48.1':
6199 + dependencies:
6200 + '@typescript-eslint/types': 8.48.1
6201 + '@typescript-eslint/visitor-keys': 8.48.1
6202 +
6203 '@typescript-eslint/tsconfig-utils@8.46.2(typescript@5.9.3)':
6204 dependencies:
6205 typescript: 5.9.3
6206
6159 - '@typescript-eslint/type-utils@8.46.2(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)':
6207 + '@typescript-eslint/tsconfig-utils@8.48.1(typescript@5.9.3)':
6208 dependencies:
6161 - '@typescript-eslint/types': 8.46.2
6162 - '@typescript-eslint/typescript-estree': 8.46.2(typescript@5.9.3)
6163 - '@typescript-eslint/utils': 8.46.2(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)
6209 + typescript: 5.9.3
6210 +
6211 + '@typescript-eslint/type-utils@8.48.1(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)':
6212 + dependencies:
6213 + '@typescript-eslint/types': 8.48.1
6214 + '@typescript-eslint/typescript-estree': 8.48.1(typescript@5.9.3)
6215 + '@typescript-eslint/utils': 8.48.1(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)
6216 debug: 4.4.3(supports-color@8.1.1)
6217 eslint: 9.39.1(jiti@2.6.1)
6218 ts-api-utils: 2.1.0(typescript@5.9.3)
@@ -6170,6 +6222,8 @@ snapshots:
6222
6223 '@typescript-eslint/types@8.46.2': {}
6224
6225 + '@typescript-eslint/types@8.48.1': {}
6226 +
6227 '@typescript-eslint/typescript-estree@8.46.2(typescript@5.9.3)':
6228 dependencies:
6229 '@typescript-eslint/project-service': 8.46.2(typescript@5.9.3)
@@ -6186,6 +6240,21 @@ snapshots:
6240 transitivePeerDependencies:
6241 - supports-color
6242
6243 + '@typescript-eslint/typescript-estree@8.48.1(typescript@5.9.3)':
6244 + dependencies:
6245 + '@typescript-eslint/project-service': 8.48.1(typescript@5.9.3)
6246 + '@typescript-eslint/tsconfig-utils': 8.48.1(typescript@5.9.3)
6247 + '@typescript-eslint/types': 8.48.1
6248 + '@typescript-eslint/visitor-keys': 8.48.1
6249 + debug: 4.4.3(supports-color@8.1.1)
6250 + minimatch: 9.0.5
6251 + semver: 7.7.3
6252 + tinyglobby: 0.2.15
6253 + ts-api-utils: 2.1.0(typescript@5.9.3)
6254 + typescript: 5.9.3
6255 + transitivePeerDependencies:
6256 + - supports-color
6257 +
6258 '@typescript-eslint/utils@8.46.2(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)':
6259 dependencies:
6260 '@eslint-community/eslint-utils': 4.9.0(eslint@9.39.1(jiti@2.6.1))
@@ -6197,79 +6266,95 @@ snapshots:
6266 transitivePeerDependencies:
6267 - supports-color
6268
6269 + '@typescript-eslint/utils@8.48.1(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)':
6270 + dependencies:
6271 + '@eslint-community/eslint-utils': 4.9.0(eslint@9.39.1(jiti@2.6.1))
6272 + '@typescript-eslint/scope-manager': 8.48.1
6273 + '@typescript-eslint/types': 8.48.1
6274 + '@typescript-eslint/typescript-estree': 8.48.1(typescript@5.9.3)
6275 + eslint: 9.39.1(jiti@2.6.1)
6276 + typescript: 5.9.3
6277 + transitivePeerDependencies:
6278 + - supports-color
6279 +
6280 '@typescript-eslint/visitor-keys@8.46.2':
6281 dependencies:
6282 '@typescript-eslint/types': 8.46.2
6283 eslint-visitor-keys: 4.2.1
6284
6285 + '@typescript-eslint/visitor-keys@8.48.1':
6286 + dependencies:
6287 + '@typescript-eslint/types': 8.48.1
6288 + eslint-visitor-keys: 4.2.1
6289 +
6290 '@ungap/structured-clone@1.3.0': {}
6291
6207 - '@vitejs/plugin-vue-jsx@5.1.2(vite@7.2.4(@types/node@24.10.1)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.94.2)(yaml@2.8.1))(vue@3.5.25(typescript@5.9.3))':
6292 + '@vitejs/plugin-vue-jsx@5.1.2(vite@7.2.6(@types/node@24.10.1)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.94.2)(yaml@2.8.2))(vue@3.5.25(typescript@5.9.3))':
6293 dependencies:
6294 '@babel/core': 7.28.5
6295 '@babel/plugin-syntax-typescript': 7.27.1(@babel/core@7.28.5)
6296 '@babel/plugin-transform-typescript': 7.28.5(@babel/core@7.28.5)
6297 '@rolldown/pluginutils': 1.0.0-beta.52
6298 '@vue/babel-plugin-jsx': 2.0.1(@babel/core@7.28.5)
6214 - vite: 7.2.4(@types/node@24.10.1)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.94.2)(yaml@2.8.1)
6299 + vite: 7.2.6(@types/node@24.10.1)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.94.2)(yaml@2.8.2)
6300 vue: 3.5.25(typescript@5.9.3)
6301 transitivePeerDependencies:
6302 - supports-color
6303
6219 - '@vitejs/plugin-vue@6.0.2(vite@7.2.4(@types/node@24.10.1)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.94.2)(yaml@2.8.1))(vue@3.5.25(typescript@5.9.3))':
6304 + '@vitejs/plugin-vue@6.0.2(vite@7.2.6(@types/node@24.10.1)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.94.2)(yaml@2.8.2))(vue@3.5.25(typescript@5.9.3))':
6305 dependencies:
6306 '@rolldown/pluginutils': 1.0.0-beta.50
6222 - vite: 7.2.4(@types/node@24.10.1)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.94.2)(yaml@2.8.1)
6307 + vite: 7.2.6(@types/node@24.10.1)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.94.2)(yaml@2.8.2)
6308 vue: 3.5.25(typescript@5.9.3)
6309
6225 - '@vitest/eslint-plugin@1.4.0(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)(vitest@4.0.14(@types/node@24.10.1)(jiti@2.6.1)(jsdom@27.2.0)(lightningcss@1.30.2)(sass@1.94.2)(yaml@2.8.1))':
6310 + '@vitest/eslint-plugin@1.5.1(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)(vitest@4.0.15(@types/node@24.10.1)(jiti@2.6.1)(jsdom@27.2.0)(lightningcss@1.30.2)(sass@1.94.2)(yaml@2.8.2))':
6311 dependencies:
6312 '@typescript-eslint/scope-manager': 8.46.2
6313 '@typescript-eslint/utils': 8.46.2(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)
6314 eslint: 9.39.1(jiti@2.6.1)
6315 optionalDependencies:
6316 typescript: 5.9.3
6232 - vitest: 4.0.14(@types/node@24.10.1)(jiti@2.6.1)(jsdom@27.2.0)(lightningcss@1.30.2)(sass@1.94.2)(yaml@2.8.1)
6317 + vitest: 4.0.15(@types/node@24.10.1)(jiti@2.6.1)(jsdom@27.2.0)(lightningcss@1.30.2)(sass@1.94.2)(yaml@2.8.2)
6318 transitivePeerDependencies:
6319 - supports-color
6320
6236 - '@vitest/expect@4.0.14':
6321 + '@vitest/expect@4.0.15':
6322 dependencies:
6323 '@standard-schema/spec': 1.0.0
6324 '@types/chai': 5.2.3
6240 - '@vitest/spy': 4.0.14
6241 - '@vitest/utils': 4.0.14
6325 + '@vitest/spy': 4.0.15
6326 + '@vitest/utils': 4.0.15
6327 chai: 6.2.1
6328 tinyrainbow: 3.0.3
6329
6245 - '@vitest/mocker@4.0.14(vite@7.2.4(@types/node@24.10.1)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.94.2)(yaml@2.8.1))':
6330 + '@vitest/mocker@4.0.15(vite@7.2.6(@types/node@24.10.1)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.94.2)(yaml@2.8.2))':
6331 dependencies:
6247 - '@vitest/spy': 4.0.14
6332 + '@vitest/spy': 4.0.15
6333 estree-walker: 3.0.3
6334 magic-string: 0.30.21
6335 optionalDependencies:
6251 - vite: 7.2.4(@types/node@24.10.1)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.94.2)(yaml@2.8.1)
6336 + vite: 7.2.6(@types/node@24.10.1)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.94.2)(yaml@2.8.2)
6337
6253 - '@vitest/pretty-format@4.0.14':
6338 + '@vitest/pretty-format@4.0.15':
6339 dependencies:
6340 tinyrainbow: 3.0.3
6341
6257 - '@vitest/runner@4.0.14':
6342 + '@vitest/runner@4.0.15':
6343 dependencies:
6259 - '@vitest/utils': 4.0.14
6344 + '@vitest/utils': 4.0.15
6345 pathe: 2.0.3
6346
6262 - '@vitest/snapshot@4.0.14':
6347 + '@vitest/snapshot@4.0.15':
6348 dependencies:
6264 - '@vitest/pretty-format': 4.0.14
6349 + '@vitest/pretty-format': 4.0.15
6350 magic-string: 0.30.21
6351 pathe: 2.0.3
6352
6268 - '@vitest/spy@4.0.14': {}
6353 + '@vitest/spy@4.0.15': {}
6354
6270 - '@vitest/utils@4.0.14':
6355 + '@vitest/utils@4.0.15':
6356 dependencies:
6272 - '@vitest/pretty-format': 4.0.14
6357 + '@vitest/pretty-format': 4.0.15
6358 tinyrainbow: 3.0.3
6359
6360 '@volar/language-core@2.4.23':
@@ -6408,14 +6493,14 @@ snapshots:
6493 dependencies:
6494 '@vue/devtools-kit': 7.7.7
6495
6411 - '@vue/devtools-core@8.0.5(vite@7.2.4(@types/node@24.10.1)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.94.2)(yaml@2.8.1))(vue@3.5.25(typescript@5.9.3))':
6496 + '@vue/devtools-core@8.0.5(vite@7.2.6(@types/node@24.10.1)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.94.2)(yaml@2.8.2))(vue@3.5.25(typescript@5.9.3))':
6497 dependencies:
6498 '@vue/devtools-kit': 8.0.5
6499 '@vue/devtools-shared': 8.0.5
6500 mitt: 3.0.1
6501 nanoid: 5.1.6
6502 pathe: 2.0.3
6418 - vite-hot-client: 2.1.0(vite@7.2.4(@types/node@24.10.1)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.94.2)(yaml@2.8.1))
6503 + vite-hot-client: 2.1.0(vite@7.2.6(@types/node@24.10.1)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.94.2)(yaml@2.8.2))
6504 vue: 3.5.25(typescript@5.9.3)
6505 transitivePeerDependencies:
6506 - vite
@@ -6944,7 +7029,7 @@ snapshots:
7029
7030 csstype@3.1.3: {}
7031
6947 - cypress@15.7.0:
7032 + cypress@15.7.1:
7033 dependencies:
7034 '@cypress/request': 3.0.9
7035 '@cypress/xvfb': 1.2.4(supports-color@8.1.1)
@@ -7284,7 +7369,7 @@ snapshots:
7369 optionalDependencies:
7370 typescript: 5.9.3
7371
7287 - eslint-plugin-jsdoc@61.1.11(eslint@9.39.1(jiti@2.6.1)):
7372 + eslint-plugin-jsdoc@61.4.1(eslint@9.39.1(jiti@2.6.1)):
7373 dependencies:
7374 '@es-joy/jsdoccomment': 0.76.0
7375 '@es-joy/resolve.exports': 1.2.0
@@ -7346,15 +7431,16 @@ snapshots:
7431 - supports-color
7432 - typescript
7433
7349 - eslint-plugin-pnpm@1.3.0(eslint@9.39.1(jiti@2.6.1)):
7434 + eslint-plugin-pnpm@1.4.1(eslint@9.39.1(jiti@2.6.1)):
7435 dependencies:
7436 empathic: 2.0.0
7437 eslint: 9.39.1(jiti@2.6.1)
7438 jsonc-eslint-parser: 2.4.1
7439 pathe: 2.0.3
7355 - pnpm-workspace-yaml: 1.3.0
7440 + pnpm-workspace-yaml: 1.4.1
7441 tinyglobby: 0.2.15
7357 - yaml-eslint-parser: 1.3.0
7442 + yaml: 2.8.2
7443 + yaml-eslint-parser: 1.3.2
7444
7445 eslint-plugin-regexp@2.10.0(eslint@9.39.1(jiti@2.6.1)):
7446 dependencies:
@@ -7389,7 +7475,7 @@ snapshots:
7475 eslint: 9.39.1(jiti@2.6.1)
7476 esquery: 1.6.0
7477 find-up-simple: 1.0.1
7392 - globals: 16.4.0
7478 + globals: 16.5.0
7479 indent-string: 5.0.0
7480 is-builtin-module: 5.0.0
7481 jsesc: 3.1.0
@@ -7399,25 +7485,25 @@ snapshots:
7485 semver: 7.7.3
7486 strip-indent: 4.1.1
7487
7402 - eslint-plugin-unused-imports@4.3.0(@typescript-eslint/eslint-plugin@8.46.2(@typescript-eslint/parser@8.46.2(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.1(jiti@2.6.1)):
7488 + eslint-plugin-unused-imports@4.3.0(@typescript-eslint/eslint-plugin@8.48.1(@typescript-eslint/parser@8.48.1(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.1(jiti@2.6.1)):
7489 dependencies:
7490 eslint: 9.39.1(jiti@2.6.1)
7491 optionalDependencies:
7406 - '@typescript-eslint/eslint-plugin': 8.46.2(@typescript-eslint/parser@8.46.2(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)
7492 + '@typescript-eslint/eslint-plugin': 8.48.1(@typescript-eslint/parser@8.48.1(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)
7493
7408 - eslint-plugin-vue@10.5.1(@stylistic/eslint-plugin@5.5.0(eslint@9.39.1(jiti@2.6.1)))(@typescript-eslint/parser@8.46.2(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.1(jiti@2.6.1))(vue-eslint-parser@10.2.0(eslint@9.39.1(jiti@2.6.1))):
7494 + eslint-plugin-vue@10.6.2(@stylistic/eslint-plugin@5.6.1(eslint@9.39.1(jiti@2.6.1)))(@typescript-eslint/parser@8.48.1(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.1(jiti@2.6.1))(vue-eslint-parser@10.2.0(eslint@9.39.1(jiti@2.6.1))):
7495 dependencies:
7496 '@eslint-community/eslint-utils': 4.9.0(eslint@9.39.1(jiti@2.6.1))
7497 eslint: 9.39.1(jiti@2.6.1)
7498 natural-compare: 1.4.0
7499 nth-check: 2.1.1
7414 - postcss-selector-parser: 6.1.2
7500 + postcss-selector-parser: 7.1.1
7501 semver: 7.7.3
7502 vue-eslint-parser: 10.2.0(eslint@9.39.1(jiti@2.6.1))
7503 xml-name-validator: 4.0.0
7504 optionalDependencies:
7419 - '@stylistic/eslint-plugin': 5.5.0(eslint@9.39.1(jiti@2.6.1))
7420 - '@typescript-eslint/parser': 8.46.2(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)
7505 + '@stylistic/eslint-plugin': 5.6.1(eslint@9.39.1(jiti@2.6.1))
7506 + '@typescript-eslint/parser': 8.48.1(eslint@9.39.1(jiti@2.6.1))(typescript@5.9.3)
7507
7508 eslint-plugin-yml@1.19.0(eslint@9.39.1(jiti@2.6.1)):
7509 dependencies:
@@ -7427,7 +7513,7 @@ snapshots:
7513 eslint: 9.39.1(jiti@2.6.1)
7514 eslint-compat-utils: 0.6.5(eslint@9.39.1(jiti@2.6.1))
7515 natural-compare: 1.4.0
7430 - yaml-eslint-parser: 1.3.0
7516 + yaml-eslint-parser: 1.3.2
7517 transitivePeerDependencies:
7518 - supports-color
7519
@@ -7787,7 +7873,7 @@ snapshots:
7873
7874 globals@15.15.0: {}
7875
7790 - globals@16.4.0: {}
7876 + globals@16.5.0: {}
7877
7878 globrex@0.1.2: {}
7879
@@ -7991,7 +8077,7 @@ snapshots:
8077 '@hapi/topo': 6.0.2
8078 '@standard-schema/spec': 1.0.0
8079
7994 - jose@6.1.2: {}
8080 + jose@6.1.3: {}
8081
8082 js-beautify@1.15.4:
8083 dependencies:
@@ -8884,6 +8970,10 @@ snapshots:
8970 dependencies:
8971 yaml: 2.8.1
8972
8973 + pnpm-workspace-yaml@1.4.1:
8974 + dependencies:
8975 + yaml: 2.8.2
8976 +
8977 popmotion@11.0.5:
8978 dependencies:
8979 framesync: 6.1.2
@@ -8891,7 +8981,7 @@ snapshots:
8981 style-value-types: 5.1.2
8982 tslib: 2.4.0
8983
8894 - postcss-selector-parser@6.1.2:
8984 + postcss-selector-parser@7.1.1:
8985 dependencies:
8986 cssesc: 3.0.0
8987 util-deprecate: 1.0.2
@@ -8904,11 +8994,11 @@ snapshots:
8994
8995 prelude-ls@1.2.1: {}
8996
8907 - prettier-plugin-tailwindcss@0.7.1(prettier@3.7.3):
8997 + prettier-plugin-tailwindcss@0.7.2(prettier@3.7.4):
8998 dependencies:
8909 - prettier: 3.7.3
8999 + prettier: 3.7.4
9000
8911 - prettier@3.7.3: {}
9001 + prettier@3.7.4: {}
9002
9003 pretty-bytes@5.6.0: {}
9004
@@ -9121,14 +9211,14 @@ snapshots:
9211
9212 shell-quote@1.8.3: {}
9213
9124 - shiki@3.17.0:
9214 + shiki@3.19.0:
9215 dependencies:
9126 - '@shikijs/core': 3.17.0
9127 - '@shikijs/engine-javascript': 3.17.0
9128 - '@shikijs/engine-oniguruma': 3.17.0
9129 - '@shikijs/langs': 3.17.0
9130 - '@shikijs/themes': 3.17.0
9131 - '@shikijs/types': 3.17.0
9216 + '@shikijs/core': 3.19.0
9217 + '@shikijs/engine-javascript': 3.19.0
9218 + '@shikijs/engine-oniguruma': 3.19.0
9219 + '@shikijs/langs': 3.19.0
9220 + '@shikijs/themes': 3.19.0
9221 + '@shikijs/types': 3.19.0
9222 '@shikijs/vscode-textmate': 10.0.2
9223 '@types/hast': 3.0.4
9224
@@ -9349,9 +9439,8 @@ snapshots:
9439
9440 tinybench@2.9.0: {}
9441
9352 - tinyexec@0.3.2: {}
9353 -
9354 - tinyexec@1.0.1: {}
9442 + tinyexec@1.0.1:
9443 + optional: true
9444
9445 tinyexec@1.0.2: {}
9446
@@ -9438,7 +9527,7 @@ snapshots:
9527
9528 type-fest@0.8.1: {}
9529
9441 - type-fest@5.2.0:
9530 + type-fest@5.3.0:
9531 dependencies:
9532 tagged-tag: 1.0.0
9533
@@ -9568,17 +9657,17 @@ snapshots:
9657 - rollup
9658 - supports-color
9659
9571 - vite-dev-rpc@1.1.0(vite@7.2.4(@types/node@24.10.1)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.94.2)(yaml@2.8.1)):
9660 + vite-dev-rpc@1.1.0(vite@7.2.6(@types/node@24.10.1)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.94.2)(yaml@2.8.2)):
9661 dependencies:
9662 birpc: 2.6.1
9574 - vite: 7.2.4(@types/node@24.10.1)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.94.2)(yaml@2.8.1)
9575 - vite-hot-client: 2.1.0(vite@7.2.4(@types/node@24.10.1)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.94.2)(yaml@2.8.1))
9663 + vite: 7.2.6(@types/node@24.10.1)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.94.2)(yaml@2.8.2)
9664 + vite-hot-client: 2.1.0(vite@7.2.6(@types/node@24.10.1)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.94.2)(yaml@2.8.2))
9665
9577 - vite-hot-client@2.1.0(vite@7.2.4(@types/node@24.10.1)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.94.2)(yaml@2.8.1)):
9666 + vite-hot-client@2.1.0(vite@7.2.6(@types/node@24.10.1)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.94.2)(yaml@2.8.2)):
9667 dependencies:
9579 - vite: 7.2.4(@types/node@24.10.1)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.94.2)(yaml@2.8.1)
9668 + vite: 7.2.6(@types/node@24.10.1)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.94.2)(yaml@2.8.2)
9669
9581 - vite-plugin-inspect@11.3.3(@nuxt/kit@3.20.0)(vite@7.2.4(@types/node@24.10.1)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.94.2)(yaml@2.8.1)):
9670 + vite-plugin-inspect@11.3.3(@nuxt/kit@3.20.0)(vite@7.2.6(@types/node@24.10.1)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.94.2)(yaml@2.8.2)):
9671 dependencies:
9672 ansis: 4.2.0
9673 debug: 4.4.3(supports-color@8.1.1)
@@ -9588,28 +9677,28 @@ snapshots:
9677 perfect-debounce: 2.0.0
9678 sirv: 3.0.2
9679 unplugin-utils: 0.3.1
9591 - vite: 7.2.4(@types/node@24.10.1)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.94.2)(yaml@2.8.1)
9592 - vite-dev-rpc: 1.1.0(vite@7.2.4(@types/node@24.10.1)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.94.2)(yaml@2.8.1))
9680 + vite: 7.2.6(@types/node@24.10.1)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.94.2)(yaml@2.8.2)
9681 + vite-dev-rpc: 1.1.0(vite@7.2.6(@types/node@24.10.1)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.94.2)(yaml@2.8.2))
9682 optionalDependencies:
9683 '@nuxt/kit': 3.20.0
9684 transitivePeerDependencies:
9685 - supports-color
9686
9598 - vite-plugin-vue-devtools@8.0.5(@nuxt/kit@3.20.0)(vite@7.2.4(@types/node@24.10.1)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.94.2)(yaml@2.8.1))(vue@3.5.25(typescript@5.9.3)):
9687 + vite-plugin-vue-devtools@8.0.5(@nuxt/kit@3.20.0)(vite@7.2.6(@types/node@24.10.1)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.94.2)(yaml@2.8.2))(vue@3.5.25(typescript@5.9.3)):
9688 dependencies:
9600 - '@vue/devtools-core': 8.0.5(vite@7.2.4(@types/node@24.10.1)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.94.2)(yaml@2.8.1))(vue@3.5.25(typescript@5.9.3))
9689 + '@vue/devtools-core': 8.0.5(vite@7.2.6(@types/node@24.10.1)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.94.2)(yaml@2.8.2))(vue@3.5.25(typescript@5.9.3))
9690 '@vue/devtools-kit': 8.0.5
9691 '@vue/devtools-shared': 8.0.5
9692 sirv: 3.0.2
9604 - vite: 7.2.4(@types/node@24.10.1)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.94.2)(yaml@2.8.1)
9605 - vite-plugin-inspect: 11.3.3(@nuxt/kit@3.20.0)(vite@7.2.4(@types/node@24.10.1)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.94.2)(yaml@2.8.1))
9606 - vite-plugin-vue-inspector: 5.3.2(vite@7.2.4(@types/node@24.10.1)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.94.2)(yaml@2.8.1))
9693 + vite: 7.2.6(@types/node@24.10.1)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.94.2)(yaml@2.8.2)
9694 + vite-plugin-inspect: 11.3.3(@nuxt/kit@3.20.0)(vite@7.2.6(@types/node@24.10.1)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.94.2)(yaml@2.8.2))
9695 + vite-plugin-vue-inspector: 5.3.2(vite@7.2.6(@types/node@24.10.1)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.94.2)(yaml@2.8.2))
9696 transitivePeerDependencies:
9697 - '@nuxt/kit'
9698 - supports-color
9699 - vue
9700
9612 - vite-plugin-vue-inspector@5.3.2(vite@7.2.4(@types/node@24.10.1)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.94.2)(yaml@2.8.1)):
9701 + vite-plugin-vue-inspector@5.3.2(vite@7.2.6(@types/node@24.10.1)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.94.2)(yaml@2.8.2)):
9702 dependencies:
9703 '@babel/core': 7.28.5
9704 '@babel/plugin-proposal-decorators': 7.28.0(@babel/core@7.28.5)
@@ -9620,7 +9709,7 @@ snapshots:
9709 '@vue/compiler-dom': 3.5.22
9710 kolorist: 1.8.0
9711 magic-string: 0.30.21
9623 - vite: 7.2.4(@types/node@24.10.1)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.94.2)(yaml@2.8.1)
9712 + vite: 7.2.6(@types/node@24.10.1)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.94.2)(yaml@2.8.2)
9713 transitivePeerDependencies:
9714 - supports-color
9715
@@ -9629,7 +9718,7 @@ snapshots:
9718 svgo: 3.3.2
9719 vue: 3.5.25(typescript@5.9.3)
9720
9632 - vite@7.2.4(@types/node@24.10.1)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.94.2)(yaml@2.8.1):
9721 + vite@7.2.6(@types/node@24.10.1)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.94.2)(yaml@2.8.2):
9722 dependencies:
9723 esbuild: 0.25.11
9724 fdir: 6.5.0(picomatch@4.0.3)
@@ -9643,17 +9732,17 @@ snapshots:
9732 jiti: 2.6.1
9733 lightningcss: 1.30.2
9734 sass: 1.94.2
9646 - yaml: 2.8.1
9735 + yaml: 2.8.2
9736
9648 - vitest@4.0.14(@types/node@24.10.1)(jiti@2.6.1)(jsdom@27.2.0)(lightningcss@1.30.2)(sass@1.94.2)(yaml@2.8.1):
9737 + vitest@4.0.15(@types/node@24.10.1)(jiti@2.6.1)(jsdom@27.2.0)(lightningcss@1.30.2)(sass@1.94.2)(yaml@2.8.2):
9738 dependencies:
9650 - '@vitest/expect': 4.0.14
9651 - '@vitest/mocker': 4.0.14(vite@7.2.4(@types/node@24.10.1)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.94.2)(yaml@2.8.1))
9652 - '@vitest/pretty-format': 4.0.14
9653 - '@vitest/runner': 4.0.14
9654 - '@vitest/snapshot': 4.0.14
9655 - '@vitest/spy': 4.0.14
9656 - '@vitest/utils': 4.0.14
9739 + '@vitest/expect': 4.0.15
9740 + '@vitest/mocker': 4.0.15(vite@7.2.6(@types/node@24.10.1)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.94.2)(yaml@2.8.2))
9741 + '@vitest/pretty-format': 4.0.15
9742 + '@vitest/runner': 4.0.15
9743 + '@vitest/snapshot': 4.0.15
9744 + '@vitest/spy': 4.0.15
9745 + '@vitest/utils': 4.0.15
9746 es-module-lexer: 1.7.0
9747 expect-type: 1.2.2
9748 magic-string: 0.30.21
@@ -9662,10 +9751,10 @@ snapshots:
9751 picomatch: 4.0.3
9752 std-env: 3.10.0
9753 tinybench: 2.9.0
9665 - tinyexec: 0.3.2
9754 + tinyexec: 1.0.2
9755 tinyglobby: 0.2.15
9756 tinyrainbow: 3.0.3
9668 - vite: 7.2.4(@types/node@24.10.1)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.94.2)(yaml@2.8.1)
9757 + vite: 7.2.6(@types/node@24.10.1)(jiti@2.6.1)(lightningcss@1.30.2)(sass@1.94.2)(yaml@2.8.2)
9758 why-is-node-running: 2.3.0
9759 optionalDependencies:
9760 '@types/node': 24.10.1
@@ -9875,7 +9964,7 @@ snapshots:
9964
9965 yallist@3.1.1: {}
9966
9878 - yaml-eslint-parser@1.3.0:
9967 + yaml-eslint-parser@1.3.2:
9968 dependencies:
9969 eslint-visitor-keys: 3.4.3
9970 yaml: 2.8.1
@@ -9884,6 +9973,8 @@ snapshots:
9973
9974 yaml@2.8.1: {}
9975
9976 + yaml@2.8.2: {}
9977 +
9978 yargs-parser@20.2.9: {}
9979
9980 yargs-parser@21.1.1: {}
frontend/src/App.vue
+2 -2
@@ -33,7 +33,7 @@ import { useRoute, useRouter } from "vue-router"
33 import Blank from "@/app-layouts/Blank"
34 import Provider from "@/app-layouts/common/Provider.vue"
35 import SplashScreen from "@/app-layouts/common/SplashScreen.vue"
36 -import HorizontalNav from "@/app-layouts/HorizontalNav"
36 +import VerticalNav from "@/app-layouts/VerticalNav"
37 import ChatButton from "@/components/aiChatbot/ChatButton.vue"
38 import SearchDialog from "@/components/common/SearchDialog.vue"
39 import { useAuthStore } from "@/stores/auth"
@@ -41,7 +41,7 @@ import { useMainStore } from "@/stores/main"
41 import { useThemeStore } from "@/stores/theme"
42
43 const layoutComponents = {
44 - HorizontalNav,
44 + VerticalNav,
45 Blank
46 }
47
frontend/src/api/endpoints/version.ts
+3 -3
@@ -3,7 +3,7 @@ import type { VersionCheckResponse } from "@/types/version.d"
3 import { HttpClient } from "../httpClient"
4
5 export default {
6 - checkVersion() {
7 - return HttpClient.get<FlaskBaseResponse & VersionCheckResponse>(`/version/check`)
8 - }
6 + checkVersion() {
7 + return HttpClient.get<FlaskBaseResponse & VersionCheckResponse>(`/version/check`)
8 + }
9 }
frontend/src/app-layouts/HorizontalNav/HeaderBar.vue deleted
-57
@@ -1,57 +0,0 @@
1 -<template>
2 - <div class="header-bar flex items-center gap-3">
3 - <Logo :mini="false" :dark="isDark" class="anim-wrap" />
4 - <n-scrollbar class="grow" x-scrollable>
5 - <Navbar :collapsed="false" mode="horizontal" />
6 - </n-scrollbar>
7 - </div>
8 -</template>
9 -
10 -<script lang="ts" setup>
11 -import { NScrollbar } from "naive-ui"
12 -import { computed } from "vue"
13 -import Logo from "@/app-layouts/common/Logo.vue"
14 -import Navbar from "@/app-layouts/common/Navbar"
15 -import { useThemeStore } from "@/stores/theme"
16 -
17 -const themeStore = useThemeStore()
18 -const isDark = computed<boolean>(() => themeStore.isThemeDark)
19 -</script>
20 -
21 -<style lang="scss" scoped>
22 -@import "./variables";
23 -
24 -.header-bar {
25 - padding-left: var(--view-padding);
26 - min-height: var(--header-bar-height);
27 - height: var(--header-bar-height);
28 - max-height: var(--header-bar-height);
29 - background-color: var(--bg-sidebar-color);
30 -
31 - :deep(.n-scrollbar-rail) {
32 - opacity: 0.15;
33 - }
34 -
35 - .nav {
36 - padding-top: 10px;
37 - margin-right: var(--view-padding);
38 - }
39 -
40 - @media (max-width: $sidebar-bp) {
41 - display: none;
42 - }
43 -}
44 -
45 -.direction-rtl {
46 - .header-bar {
47 - direction: rtl;
48 - padding-left: 0;
49 - padding-right: var(--view-padding);
50 -
51 - .nav {
52 - margin-right: 0;
53 - margin-left: var(--view-padding);
54 - }
55 - }
56 -}
57 -</style>
frontend/src/app-layouts/HorizontalNav/index.ts deleted
-1
@@ -1 +0,0 @@
1 -export { default } from "./HorizontalNav.vue"
frontend/src/app-layouts/VerticalNav/MainContainer.vue renamed
+38 -4
@@ -14,8 +14,7 @@
14 railInsetVerticalLeft: `${toolbarHeight}px auto 4px 4px`
15 }"
16 >
17 - <Toolbar :boxed="toolbarBoxed" gradient="sidebar" />
18 -
17 + <Toolbar :boxed="toolbarBoxed" gradient="body" />
18 <div
19 id="app-view"
20 class="view"
@@ -40,7 +39,7 @@ import { useThemeStore } from "@/stores/theme"
39 const themeStore = useThemeStore()
40 const router = useRouter()
41 const route = useRoute()
43 -const sidebarCollapsed = computed<boolean>(() => themeStore.sidebar.collapsed)
42 +const sidebarCollapsed = computed(() => themeStore.sidebar.collapsed)
43 const footerShown = computed(() => themeStore.isFooterShown)
44 const themeBoxed = computed<boolean>(() => themeStore.isBoxed)
45 const overrideBoxed = ref<boolean | undefined>(undefined)
@@ -83,15 +82,24 @@ onMounted(() => {
82
83 .main {
84 width: 100%;
86 - overflow: hidden;
85 + position: relative;
86 + padding-left: var(--sidebar-open-width);
87 background-color: var(--bg-body-color);
88 transition: all var(--sidebar-anim-ease) var(--sidebar-anim-duration);
89 + display: flex;
90 + flex-direction: column;
91 +
92 + &.sidebar-collapsed {
93 + padding-left: var(--sidebar-close-width);
94 + }
95
96 .view {
97 padding: 0 var(--view-padding);
98 flex-grow: 1;
99 width: 100%;
100 margin: 0 auto;
101 + display: flex;
102 + flex-direction: column;
103
104 &.boxed {
105 max-width: var(--boxed-width);
@@ -102,6 +110,12 @@ onMounted(() => {
110 }
111
112 @media (max-width: $sidebar-bp) {
113 + padding-left: 0px;
114 +
115 + &.sidebar-collapsed {
116 + padding-left: 0px;
117 + }
118 +
119 &.sidebar-opened {
120 /*
121 transform: scale(0.8) translateX(100%) rotateY(35deg);
@@ -124,4 +138,24 @@ onMounted(() => {
138 }
139 }
140 }
141 +
142 +.direction-rtl {
143 + .main {
144 + padding-left: unset;
145 + padding-right: var(--sidebar-open-width);
146 +
147 + &.sidebar-collapsed {
148 + padding-left: unset;
149 + padding-right: var(--sidebar-close-width);
150 + }
151 +
152 + @media (max-width: $sidebar-bp) {
153 + padding-right: 0px;
154 +
155 + &.sidebar-collapsed {
156 + padding-right: 0px;
157 + }
158 + }
159 + }
160 +}
161 </style>
frontend/src/app-layouts/VerticalNav/Sidebar.vue renamed
+24 -13
@@ -6,11 +6,11 @@
6 >
7 <div ref="sidebar" class="sidebar-wrap flex grow flex-col">
8 <div :class="{ 'px-7': !sidebarClosed, 'px-2': sidebarClosed }" class="transition-all">
9 - <SidebarHeader :logo-mini="sidebarClosed" />
9 + <SidebarHeader :logo-small="sidebarClosed" />
10 </div>
11 - <n-scrollbar>
11 + <n-scrollbar :trigger="sidebarClosed ? 'hover' : 'none'">
12 <div :class="{ 'px-2': !sidebarClosed }" class="transition-all">
13 - <Navbar :collapsed="sidebarClosed" mode="vertical" />
13 + <Navbar :collapsed="sidebarClosed" />
14 </div>
15 </n-scrollbar>
16 <div class="p-2">
@@ -33,8 +33,8 @@ import SidebarHeader from "./SidebarHeader.vue"
33 const themeStore = useThemeStore()
34 const sidebar = ref(null)
35 const sidebarHovered = useElementHover(sidebar)
36 -const sidebarCollapsed = computed<boolean>(() => themeStore.sidebar.collapsed)
37 -const sidebarClosed = computed<boolean>(() => !sidebarHovered.value && sidebarCollapsed.value)
36 +const sidebarCollapsed = computed(() => themeStore.sidebar.collapsed)
37 +const sidebarClosed = computed(() => !sidebarHovered.value && sidebarCollapsed.value)
38
39 function clickListener() {
40 if (sidebar.value) {
@@ -46,6 +46,7 @@ function clickListener() {
46 })
47 }
48 }
49 +
50 onMounted(() => {
51 watch(
52 sidebarCollapsed,
@@ -72,7 +73,7 @@ onMounted(() => {
73
74 .sidebar {
75 position: fixed;
75 - z-index: 4;
76 + z-index: 5;
77 top: 0;
78 left: 0;
79 width: var(--sidebar-open-width);
@@ -86,25 +87,35 @@ onMounted(() => {
87 box-shadow var(--sidebar-anim-ease) var(--sidebar-anim-duration),
88 color 0.3s var(--bezier-ease) 0s,
89 background-color 0.3s var(--bezier-ease) 0s;
89 - z-index: -1;
90 - transition: all 0.3s var(--bezier-ease) 0s;
91 - transform: translateX(-100%);
90
91 .sidebar-wrap {
92 overflow: hidden;
93 }
94
95 + :deep(.n-scrollbar-rail) {
96 + opacity: 0.15;
97 + }
98 +
99 + &.collapsed {
100 + width: var(--sidebar-close-width);
101 +
102 + &:hover {
103 + width: var(--sidebar-open-width);
104 + box-shadow: 0px 0px 80px 0px rgba(0, 0, 0, 0.2);
105 + }
106 + }
107 +
108 @media (max-width: $sidebar-bp) {
109 + z-index: -1;
110 + transition: all 0.3s var(--bezier-ease) 0s;
111 + transform: translateX(-100%);
112 +
113 &.opened {
114 z-index: 2100;
115 transform: translateX(0);
116 box-shadow: 0px 0px 80px 0px rgba(0, 0, 0, 0.2);
117 }
118 }
104 -
105 - :deep(.n-scrollbar-rail) {
106 - opacity: 0.15;
107 - }
119 }
120
121 .direction-rtl {
frontend/src/app-layouts/VerticalNav/SidebarFooter.vue renamed
+23 -3
@@ -1,5 +1,5 @@
1 <template>
2 - <div class="bg-body rounded-lg py-0.5" :class="{ collapsed }">
2 + <div class="sidebar-footer bg-body rounded-lg py-0.5" :class="{ collapsed }">
3 <n-menu :options="menuOptions" :collapsed :collapsed-width :indent="18" />
4 </div>
5 </template>
@@ -7,29 +7,49 @@
7 <script lang="ts" setup>
8 import { NMenu } from "naive-ui"
9 import { computed, h, ref } from "vue"
10 +import { RouterLink } from "vue-router"
11 import { useThemeStore } from "@/stores/theme"
12 import { renderIcon } from "@/utils"
13
14 const { collapsed = false } = defineProps<{
15 collapsed?: boolean
16 }>()
17 +
18 const ContactIcon = "ic:outline-alternate-email"
19 +const LogoutIcon = "ion:log-out-outline"
20 +
21 const menuOptions = ref([
22 {
23 label: () =>
24 h(
25 "a",
26 {
23 - href: "https://www.socfortress.co/contact_form.html",
27 + href: "https://www.socfortress.co/contact-us",
28 target: "_blank",
29 rel: "noopenner noreferrer"
30 },
27 - "Contact SOCFortress"
31 + { default: () => "Contact SOCFortress" }
32 ),
33 key: "contact-socfortress",
34 icon: renderIcon(ContactIcon)
35 + },
36 + {
37 + label: () =>
38 + h(
39 + RouterLink,
40 + {
41 + to: {
42 + name: "Logout"
43 + }
44 + },
45 + { default: () => "logout" }
46 + ),
47 + key: "Logout",
48 + icon: renderIcon(LogoutIcon)
49 }
50 ])
51 +
52 const themeStore = useThemeStore()
53 +
54 const collapsedWidth = computed<number>(() => themeStore.sidebar.closeWidth - 16)
55 </script>
frontend/src/app-layouts/VerticalNav/SidebarHeader.vue renamed
+12 -12
@@ -1,16 +1,17 @@
1 <template>
2 <div class="sidebar-header flex items-center justify-between gap-4">
3 - <div class="flex grow" :class="{ 'justify-center': logoMini }">
3 + <div class="flex grow" :class="{ 'justify-center': logoSmall }">
4 <Logo
5 - v-if="logoMini"
6 - mini
7 - :dark="isDark"
8 - class="animate-[fade_calc(var(--sidebar-anim-duration)_*_2)_forwards_calc(var(--sidebar-anim-duration)_/_2)] opacity-0"
5 + v-if="logoSmall"
6 + type="small"
7 + max-height="32px"
8 + class="animate-[fade_calc(var(--sidebar-anim-duration)*2)_forwards_calc(var(--sidebar-anim-duration)/2)] opacity-0"
9 />
10 <Logo
11 - v-if="!logoMini"
12 - :dark="isDark"
13 - class="animate-[fade_calc(var(--sidebar-anim-duration)_*_2)_forwards_calc(var(--sidebar-anim-duration)_/_2)] opacity-0"
11 + v-if="!logoSmall"
12 + type="large"
13 + max-height="28px"
14 + class="animate-[fade_calc(var(--sidebar-anim-duration)*2)_forwards_calc(var(--sidebar-anim-duration)/2)] opacity-0"
15 />
16 </div>
17 <Transition name="fade" mode="out-in">
@@ -36,15 +37,15 @@ import Logo from "@/app-layouts/common/Logo.vue"
37 import Icon from "@/components/common/Icon.vue"
38 import { useThemeStore } from "@/stores/theme"
39
39 -const { logoMini } = defineProps<{
40 - logoMini?: boolean
40 +const { logoSmall } = defineProps<{
41 + logoSmall?: boolean
42 }>()
43
44 const CircleRegular = "fa6-regular:circle"
45 const DotCircleRegular = "fa6-regular:circle-dot"
46 const CloseOutline = "carbon:chevron-left"
47 const themeStore = useThemeStore()
47 -const showPin = computed<boolean>(() => !logoMini)
48 +const showPin = computed<boolean>(() => !logoSmall)
49 const sidebarCollapsed = computed({
50 get(): boolean {
51 return themeStore.sidebar.collapsed
@@ -53,7 +54,6 @@ const sidebarCollapsed = computed({
54 themeStore.toggleSidebar()
55 }
56 })
56 -const isDark = computed<boolean>(() => themeStore.isThemeDark)
57 </script>
58
59 <style lang="scss" scoped>
frontend/src/app-layouts/VerticalNav/VerticalNav.vue renamed
+1 -3
@@ -1,6 +1,5 @@
1 <template>
2 - <div class="layout flex flex-col">
3 - <HeaderBar />
2 + <div class="layout flex">
3 <Sidebar />
4 <MainContainer class="grow">
5 <slot />
@@ -9,7 +8,6 @@
8 </template>
9
10 <script lang="ts" setup>
12 -import HeaderBar from "./HeaderBar.vue"
11 import MainContainer from "./MainContainer.vue"
12 import Sidebar from "./Sidebar.vue"
13 import "./main.scss"
frontend/src/app-layouts/VerticalNav/_mixin.scss renamed
frontend/src/app-layouts/VerticalNav/_variables.scss renamed
frontend/src/app-layouts/VerticalNav/index.ts new
+1
@@ -0,0 +1 @@
1 +export { default } from "./VerticalNav.vue"
frontend/src/app-layouts/VerticalNav/main.scss renamed
+4 -4
@@ -1,17 +1,17 @@
1 @import "variables";
2 @import "mixin";
3
4 -.layout-HorizontalNav {
4 +.layout-VerticalNav {
5 .page {
6 padding-bottom: var(--view-padding);
7 }
8 .page-wrapped {
9 padding-bottom: 0;
10 - height: calc(100svh - var(--toolbar-height) - var(--view-padding) - var(--header-bar-height));
10 + height: calc(100svh - var(--toolbar-height) - var(--view-padding));
11 }
12 .page-min-wrapped {
13 padding-bottom: 0;
14 - min-height: calc(100svh - var(--toolbar-height) - var(--view-padding) - var(--header-bar-height));
14 + min-height: calc(100svh - var(--toolbar-height) - var(--view-padding));
15 }
16 .page-mobile-full {
17 @media (max-width: $sidebar-bp) {
@@ -21,7 +21,7 @@
21 }
22 }
23 .direction-rtl {
24 - .layout-HorizontalNav {
24 + .layout-VerticalNav {
25 .page-mobile-full {
26 @media (max-width: $sidebar-bp) {
27 right: calc(var(--view-padding) * -1);
frontend/src/app-layouts/common/Logo.vue
+44 -22
@@ -1,15 +1,14 @@
1 <template>
2 - <div v-if="isDark && !mini" class="logo">
3 - <img alt="logo" src="@/assets/images/socfortress_logo.svg?url" />
4 - </div>
5 - <div v-else-if="isLight && !mini" class="logo">
6 - <img alt="logo" src="@/assets/images/socfortress_logo.svg?url" />
7 - </div>
8 - <div v-else-if="isDark && mini" class="logo">
9 - <img alt="logo" src="@/assets/images/socfortress_logo.svg?url" />
10 - </div>
11 - <div v-else-if="isLight && mini" class="logo">
12 - <img alt="logo" src="@/assets/images/socfortress_logo.svg?url" />
2 + <div class="logo">
3 + <Transition name="logo-fade" mode="out-in">
4 + <img
5 + :key="logoSrc"
6 + :src="logoSrc"
7 + alt="SOCFortress logo"
8 + aria-label="SOCFortress logo"
9 + class="logo-image"
10 + />
11 + </Transition>
12 </div>
13 </template>
14
@@ -17,18 +16,26 @@
16 import { computed } from "vue"
17 import { useThemeStore } from "@/stores/theme"
18
20 -const {
21 - mini,
22 - dark,
23 - maxHeight = "32px"
24 -} = defineProps<{
25 - mini?: boolean
19 +interface Props {
20 + type?: "default" | "small" | "large"
21 dark?: boolean
22 maxHeight?: string
28 -}>()
23 +}
24 +
25 +const props = withDefaults(defineProps<Props>(), {
26 + type: "default",
27 + dark: undefined,
28 + maxHeight: "32px"
29 +})
30 +
31 const themeStore = useThemeStore()
30 -const isDark = computed<boolean>(() => dark ?? themeStore.isThemeDark)
31 -const isLight = computed<boolean>(() => !dark || themeStore.isThemeLight)
32 +
33 +const isDark = computed<boolean>(() => props.dark ?? themeStore.isThemeDark)
34 +
35 +const logoSrc = computed<string>(() => {
36 + const theme = isDark.value ? "dark" : "light"
37 + return new URL(`../../assets/images/socfortress_logo_${props.type}_${theme}.svg`, import.meta.url).href
38 +})
39 </script>
40
41 <style lang="scss" scoped>
@@ -36,11 +43,26 @@ const isLight = computed<boolean>(() => !dark || themeStore.isThemeLight)
43 height: 100%;
44 display: flex;
45 align-items: center;
46 + justify-content: center;
47 + position: relative;
48
40 - img {
49 + .logo-image {
50 max-height: v-bind(maxHeight);
42 - display: block;
51 height: 100%;
52 + width: auto;
53 + display: block;
54 + object-fit: contain;
55 }
56 }
57 +
58 +// Smooth transition between theme changes
59 +.logo-fade-enter-active,
60 +.logo-fade-leave-active {
61 + transition: opacity 0.2s ease-in-out;
62 +}
63 +
64 +.logo-fade-enter-from,
65 +.logo-fade-leave-to {
66 + opacity: 0;
67 +}
68 </style>
frontend/src/app-layouts/common/Navbar/Navbar.vue
+2 -12
@@ -1,11 +1,10 @@
1 <template>
2 - <nav class="nav" :class="[{ collapsed }, mode]">
2 + <nav class="nav" :class="{ collapsed }">
3 <n-menu
4 ref="menu"
5 v-model:value="selectedKey"
6 :options="menuOptions"
7 :collapsed
8 - :mode
8 :indent="18"
9 accordion
10 :collapsed-width
@@ -32,8 +31,7 @@ import { useRoute, useRouter } from "vue-router"
31 import { useThemeStore } from "@/stores/theme"
32 import getItems from "./items"
33
35 -const { mode = "horizontal", collapsed = false } = defineProps<{
36 - mode?: "vertical" | "horizontal"
34 +const { collapsed = false } = defineProps<{
35 collapsed?: boolean
36 }>()
37
@@ -160,14 +158,6 @@ function handleUpdateExpandedKeys(value: string[]) {
158 }
159 }
160 }
163 -
164 - .n-menu--horizontal {
165 - .n-menu-item-content {
166 - .n-menu-item-content-header {
167 - overflow: initial;
168 - }
169 - }
170 - }
161 }
162 }
163
frontend/src/app-layouts/common/Toolbar/Avatar.vue
+1 -1
@@ -49,7 +49,7 @@ const options = ref([
49 h(
50 "a",
51 {
52 - href: "https://www.socfortress.co/contact_form.html",
52 + href: "https://www.socfortress.co/contact-us",
53 target: "_blank",
54 rel: "noopenner noreferrer"
55 },
frontend/src/app-layouts/common/Toolbar/PinnedPagesV2.vue
+2 -2
@@ -22,7 +22,7 @@
22
23 <Transition name="anim" tag="div" class="shortcuts-container flex items-center">
24 <div v-if="pinned.length" class="flex items-center">
25 - <n-popover :show-arrow="false" placement="bottom" trigger="hover" class="!p-1">
25 + <n-popover :show-arrow="false" placement="bottom" trigger="hover" class="p-1!">
26 <template #trigger>
27 <button class="shortcuts-btn flex items-center gap-2 text-sm">
28 <span>Shortcuts</span>
@@ -35,7 +35,7 @@
35 :key="page.name"
36 size="small"
37 quaternary
38 - class="!justify-start"
38 + class="justify-start!"
39 @click="gotoPage(page.name)"
40 >
41 <span class="flex items-center gap-1">
frontend/src/app-layouts/common/Toolbar/Toolbar.vue
+1 -1
@@ -2,7 +2,7 @@
2 <header class="toolbar" :class="{ boxed }">
3 <div class="wrap flex items-center justify-end gap-3">
4 <div class="logo-box flex cursor-pointer items-center gap-2" @click="openNav()">
5 - <Logo mini />
5 + <Logo type="small" />
6 <Icon :size="20" name="carbon:chevron-right" />
7 </div>
8
frontend/src/assets/images/socfortress_logo_default_dark.svg renamed
frontend/src/assets/images/socfortress_logo_default_light.svg new
+3
@@ -0,0 +1,3 @@
1 +<?xml version="1.0" standalone="no"?>
2 +<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
3 +<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" id="svg" version="1.1" width="400" height="497.1875" viewBox="0, 0, 400,497.1875"><g id="svgg"><path id="path0" d="M163.187 283.504 C 163.117 320.247,163.007 318.404,165.423 320.832 C 165.964 321.375,166.881 322.392,167.461 323.091 C 168.041 323.791,168.642 324.285,168.797 324.190 C 168.952 324.094,169.045 324.132,169.004 324.274 C 168.877 324.716,169.816 325.938,170.284 325.938 C 170.529 325.938,170.635 326.032,170.520 326.147 C 170.405 326.261,170.544 326.613,170.829 326.928 C 171.324 327.474,172.623 327.500,199.952 327.500 L 228.557 327.500 229.669 326.299 C 237.848 317.465,236.850 323.401,236.796 283.906 C 236.771 265.688,236.702 251.801,236.643 253.047 L 236.535 255.313 200.000 255.313 L 163.465 255.313 163.357 253.047 C 163.298 251.801,163.221 265.506,163.187 283.504 M0.313 265.477 C 0.313 275.210,0.341 275.707,0.973 276.966 C 2.064 279.137,3.126 280.334,4.489 280.930 C 5.200 281.240,7.750 282.439,10.156 283.594 C 12.563 284.749,16.289 286.538,18.438 287.569 C 20.586 288.600,23.328 289.905,24.531 290.469 C 25.734 291.033,29.180 292.679,32.188 294.128 C 35.195 295.576,38.254 297.025,38.984 297.347 L 40.313 297.933 40.382 317.326 C 40.420 327.992,40.494 334.645,40.546 332.109 L 40.642 327.500 86.406 327.500 L 132.171 327.500 132.278 332.109 C 132.337 334.645,132.364 323.500,132.338 307.344 C 132.296 281.827,132.223 277.579,131.783 275.000 C 130.884 269.738,130.032 267.327,127.695 263.438 C 126.365 261.225,123.870 258.438,123.220 258.438 C 122.996 258.438,122.813 258.313,122.813 258.161 C 122.812 258.008,122.355 257.653,121.797 257.371 C 120.339 256.634,119.564 256.139,119.308 255.781 C 119.161 255.575,98.839 255.441,59.699 255.387 L 0.313 255.305 0.313 265.477 M280.703 255.737 C 280.316 255.929,280.000 256.193,280.000 256.324 C 280.000 256.455,279.812 256.563,279.582 256.563 C 278.920 256.563,275.625 259.049,275.625 259.548 C 275.625 259.797,275.438 260.000,275.209 260.000 C 274.444 260.000,272.173 263.141,270.916 265.938 C 270.568 266.711,270.166 267.562,270.021 267.829 C 269.668 268.483,268.526 273.110,268.097 275.625 C 267.864 276.992,267.728 287.319,267.682 307.188 C 267.644 323.430,267.661 334.645,267.721 332.109 L 267.829 327.500 313.594 327.500 L 359.358 327.500 359.454 332.109 C 359.506 334.645,359.582 328.000,359.622 317.344 L 359.695 297.969 360.863 297.423 C 363.848 296.030,370.955 292.650,375.739 290.348 C 378.638 288.954,381.044 287.813,381.087 287.813 C 381.131 287.813,384.103 286.390,387.692 284.652 C 391.282 282.914,394.922 281.178,395.781 280.794 C 399.749 279.022,399.869 278.559,399.757 265.445 L 399.671 255.313 340.539 255.351 C 297.771 255.379,281.212 255.486,280.703 255.737 M172.721 329.024 C 173.441 329.716,173.926 329.912,173.595 329.377 C 173.489 329.206,173.094 328.907,172.717 328.713 L 172.031 328.360 172.721 329.024 " stroke="none" fill="#fbab44" fill-rule="evenodd"/><path id="path1" d="M0.207 176.484 C 0.094 180.223,0.034 204.094,0.074 229.531 C 0.115 254.969,0.186 271.175,0.234 265.545 L 0.321 255.309 59.223 255.389 C 91.619 255.433,118.125 255.435,118.125 255.395 C 118.125 255.251,115.844 254.370,115.142 254.243 C 114.750 254.172,114.142 253.960,113.790 253.771 C 113.438 253.583,113.039 253.448,112.903 253.470 C 112.767 253.493,112.586 253.484,112.500 253.451 C 111.792 253.175,104.237 251.869,103.433 251.884 C 103.006 251.892,101.953 251.817,101.094 251.717 C 99.332 251.512,96.400 251.225,94.531 251.076 C 93.844 251.021,92.508 250.892,91.563 250.789 C 90.617 250.686,89.281 250.542,88.594 250.469 C 68.487 248.333,56.970 240.804,48.921 224.531 C 42.866 212.290,38.598 191.192,38.317 172.109 L 38.281 169.688 19.347 169.688 L 0.412 169.688 0.207 176.484 M39.844 170.000 C 39.950 170.172,40.240 170.313,40.487 170.313 C 40.735 170.313,40.938 170.418,40.939 170.547 C 40.942 170.889,42.824 171.905,43.117 171.724 C 43.254 171.639,43.540 171.779,43.753 172.035 C 43.965 172.291,44.262 172.500,44.413 172.500 C 44.564 172.500,44.969 172.781,45.313 173.125 C 45.656 173.469,46.212 173.750,46.547 173.750 C 46.882 173.750,47.269 173.940,47.406 174.173 C 47.544 174.405,48.310 174.957,49.110 175.399 C 49.909 175.841,51.136 176.565,51.838 177.008 C 52.539 177.450,53.189 177.813,53.282 177.813 C 53.375 177.813,53.975 178.147,54.616 178.556 C 55.257 178.964,58.172 180.669,61.094 182.345 C 64.016 184.020,68.023 186.338,70.000 187.495 C 74.085 189.886,97.436 203.374,124.375 218.902 C 147.524 232.246,148.698 232.924,151.719 234.704 C 153.094 235.514,154.790 236.464,155.489 236.815 C 160.132 239.149,162.895 244.302,163.298 251.380 L 163.522 255.313 199.996 255.313 L 236.471 255.313 236.688 251.641 C 237.236 242.355,238.811 240.161,249.253 234.146 C 264.241 225.511,277.317 217.958,288.906 211.239 C 290.994 210.029,296.178 207.048,303.281 202.973 C 307.406 200.607,312.398 197.720,314.375 196.559 C 316.352 195.398,318.461 194.168,319.063 193.826 C 319.664 193.484,322.898 191.618,326.250 189.679 C 329.602 187.741,332.766 185.916,333.281 185.625 C 334.295 185.052,341.339 180.967,343.125 179.916 C 343.727 179.563,345.977 178.235,348.125 176.967 C 350.273 175.698,352.313 174.495,352.656 174.292 C 353.000 174.090,353.809 173.602,354.453 173.208 C 355.098 172.814,355.625 172.590,355.625 172.710 C 355.625 172.831,356.030 172.542,356.525 172.068 C 357.311 171.314,357.854 171.055,358.847 170.961 C 358.986 170.948,359.013 170.798,358.908 170.629 C 358.799 170.451,358.924 170.399,359.203 170.506 C 359.469 170.608,359.688 170.547,359.688 170.369 C 359.688 170.191,359.934 169.982,360.234 169.903 C 360.535 169.824,288.527 169.744,200.216 169.724 C 93.243 169.700,39.715 169.792,39.844 170.000 M361.724 171.954 C 361.726 173.200,361.637 175.063,361.525 176.094 C 361.413 177.125,361.234 179.336,361.127 181.006 C 358.825 217.064,347.461 239.582,327.963 246.718 C 325.065 247.779,324.284 248.053,323.910 248.143 C 323.830 248.162,323.023 248.383,322.116 248.633 C 321.210 248.884,320.117 249.142,319.688 249.208 C 319.258 249.273,317.641 249.538,316.094 249.797 C 313.333 250.258,311.392 250.513,308.281 250.822 C 306.745 250.975,306.251 251.017,302.188 251.334 C 300.248 251.485,299.357 251.578,295.577 252.021 C 293.281 252.291,288.384 253.131,287.813 253.354 C 287.555 253.454,287.168 253.508,286.953 253.473 C 286.738 253.438,286.563 253.572,286.563 253.770 C 286.563 253.968,286.365 254.054,286.124 253.961 C 285.883 253.869,285.598 253.881,285.490 253.989 C 285.383 254.097,285.123 254.216,284.913 254.254 C 279.486 255.244,280.800 255.268,340.855 255.290 L 399.679 255.313 399.766 265.391 C 399.814 270.934,399.886 254.727,399.926 229.375 C 399.966 204.023,399.906 180.223,399.793 176.484 L 399.588 169.688 380.653 169.688 L 361.719 169.689 361.724 171.954 " stroke="none" fill="#fb9b3c" fill-rule="evenodd"/><path id="path2" d="M43.051 418.013 C 42.581 418.263,41.808 418.977,41.333 419.600 L 40.469 420.732 40.387 456.698 L 40.305 492.664 41.012 494.048 C 41.401 494.809,42.116 495.722,42.601 496.075 L 43.483 496.719 199.724 496.798 C 338.186 496.868,356.068 496.823,356.873 496.408 C 357.372 496.149,358.174 495.422,358.656 494.790 L 359.531 493.642 359.531 457.212 L 359.531 420.781 358.631 419.605 C 356.922 417.371,358.257 417.478,333.366 417.572 C 308.066 417.667,309.971 417.467,308.594 420.176 C 307.992 421.360,307.965 422.117,307.881 440.391 L 307.794 459.375 289.060 459.375 L 270.326 459.375 270.241 439.914 L 270.156 420.453 269.428 419.523 C 267.785 417.426,269.037 417.528,244.756 417.513 C 220.973 417.499,221.546 417.460,220.063 419.198 C 218.773 420.710,218.750 421.077,218.750 440.489 L 218.750 459.375 200.000 459.375 L 181.250 459.375 181.250 440.507 C 181.250 418.749,181.296 419.072,178.027 417.833 C 176.227 417.152,133.830 417.407,132.284 418.108 C 129.592 419.331,129.688 418.513,129.688 440.300 L 129.688 459.375 110.938 459.375 L 92.188 459.375 92.188 440.973 C 92.188 420.244,92.175 420.112,90.046 418.489 L 88.955 417.656 66.431 417.608 C 47.275 417.567,43.778 417.628,43.051 418.013 " stroke="none" fill="#fccf5b" fill-rule="evenodd"/><path id="path3" d="M2.859 0.840 C 2.283 1.125,1.439 1.922,0.984 2.610 L 0.156 3.861 0.146 91.383 C 0.140 139.521,0.179 176.834,0.232 174.302 L 0.329 169.697 19.461 169.614 C 29.984 169.569,38.760 169.602,38.962 169.688 C 39.165 169.773,111.798 169.773,200.368 169.688 C 288.939 169.602,370.016 169.569,380.539 169.614 L 399.671 169.697 399.768 174.302 C 399.821 176.834,399.860 139.521,399.854 91.383 L 399.844 3.861 399.012 2.604 C 397.377 0.133,399.990 0.294,363.069 0.386 L 330.156 0.469 329.104 1.219 C 326.750 2.898,326.890 0.648,326.882 37.109 L 326.875 69.688 308.906 69.688 L 290.938 69.688 290.938 44.441 L 290.937 19.195 290.234 17.802 C 289.772 16.886,289.103 16.169,288.281 15.707 L 287.031 15.006 254.163 15.081 C 217.137 15.166,220.575 14.931,218.828 17.497 L 218.125 18.530 218.125 44.109 L 218.125 69.688 200.000 69.688 L 181.875 69.688 181.875 44.109 L 181.875 18.530 181.172 17.497 C 179.425 14.931,182.863 15.166,145.837 15.081 L 112.969 15.006 111.719 15.707 C 110.897 16.169,110.228 16.886,109.766 17.802 L 109.062 19.195 109.063 44.441 L 109.063 69.688 91.094 69.688 L 73.125 69.688 73.118 37.109 C 73.110 0.648,73.250 2.898,70.896 1.219 L 69.844 0.469 36.875 0.395 C 6.708 0.328,3.817 0.366,2.859 0.840 M361.648 171.250 C 361.648 172.023,361.709 172.340,361.783 171.953 C 361.858 171.566,361.858 170.934,361.783 170.547 C 361.709 170.160,361.648 170.477,361.648 171.250 M357.144 171.568 L 356.406 172.198 357.266 171.830 C 357.738 171.628,358.125 171.344,358.125 171.200 C 358.125 170.810,357.958 170.873,357.144 171.568 M43.125 171.759 C 43.125 171.921,43.547 172.302,44.063 172.607 C 44.580 172.912,45.000 173.012,45.000 172.830 C 45.000 172.649,44.835 172.500,44.634 172.500 C 44.433 172.500,44.011 172.267,43.696 171.983 C 43.382 171.698,43.125 171.598,43.125 171.759 " stroke="none" fill="#fc862e" fill-rule="evenodd"/><path id="path4" d="M40.519 334.297 C 40.406 338.035,40.317 349.602,40.320 360.000 C 40.327 381.137,40.273 380.601,42.542 382.218 L 43.594 382.969 86.025 383.050 C 123.482 383.122,128.563 383.076,129.374 382.657 C 130.775 381.932,131.789 380.671,132.162 379.189 C 132.542 377.680,132.636 345.641,132.293 334.297 L 132.088 327.500 86.406 327.500 L 40.725 327.500 40.519 334.297 M172.522 328.457 C 173.111 328.983,173.594 329.525,173.594 329.661 C 173.594 329.965,174.624 331.148,183.281 340.783 C 185.000 342.696,187.250 345.224,188.281 346.401 C 189.313 347.577,190.302 348.692,190.481 348.879 C 190.660 349.066,191.920 350.484,193.281 352.031 C 196.329 355.495,196.773 355.907,198.037 356.446 C 200.772 357.613,202.678 356.646,206.742 352.031 C 208.407 350.141,210.278 348.028,210.900 347.335 C 211.522 346.643,212.664 345.373,213.438 344.512 C 214.211 343.651,215.941 341.731,217.282 340.245 C 218.623 338.758,220.029 337.148,220.407 336.665 C 221.032 335.867,223.081 333.572,224.453 332.135 C 224.754 331.820,224.941 331.563,224.868 331.563 C 224.751 331.563,225.925 330.264,227.905 328.203 L 228.581 327.500 200.015 327.500 L 171.450 327.500 172.522 328.457 M267.707 334.297 C 267.364 345.641,267.458 377.680,267.838 379.189 C 268.211 380.671,269.225 381.932,270.626 382.657 C 271.437 383.076,276.518 383.122,313.975 383.050 L 356.406 382.969 357.458 382.218 C 359.727 380.601,359.673 381.137,359.680 360.000 C 359.683 349.602,359.594 338.035,359.481 334.297 L 359.275 327.500 313.594 327.500 L 267.912 327.500 267.707 334.297 " stroke="none" fill="#fcbc4c" fill-rule="evenodd"/></g></svg>
frontend/src/assets/images/socfortress_logo_large_dark.svg new
+12
@@ -0,0 +1,12 @@
1 +<?xml version="1.0" encoding="UTF-8"?>
2 +<!-- Generated by Pixelmator Pro 3.7.1 -->
3 +<svg width="3237" height="497" viewBox="0 0 3237 497" xmlns="http://www.w3.org/2000/svg">
4 + <g id="svgg">
5 + <path id="path0" fill="#fbab44" fill-rule="evenodd" stroke="none" d="M 163.186996 283.316498 C 163.117004 320.059509 163.007004 318.216492 165.423004 320.644501 C 165.964005 321.1875 166.880997 322.204498 167.460999 322.903503 C 168.041 323.603485 168.641998 324.097504 168.796997 324.002502 C 168.951996 323.906494 169.044998 323.944489 169.003998 324.086487 C 168.876999 324.528503 169.815994 325.750488 170.283997 325.750488 C 170.529007 325.750488 170.634995 325.844513 170.520004 325.959503 C 170.404999 326.073486 170.544006 326.425507 170.828995 326.740509 C 171.324005 327.286499 172.623001 327.3125 199.951996 327.3125 L 228.557007 327.3125 L 229.669006 326.111511 C 237.848007 317.277496 236.850006 323.213501 236.796005 283.718506 C 236.770996 265.500488 236.701996 251.613495 236.643005 252.859497 L 236.535004 255.125504 L 200 255.125504 L 163.464996 255.125504 L 163.356995 252.859497 C 163.298004 251.613495 163.220993 265.318512 163.186996 283.316498 M 0.313 265.28949 C 0.313 275.022491 0.341 275.519501 0.973 276.778503 C 2.064 278.949493 3.126 280.146515 4.489 280.742493 C 5.2 281.05249 7.75 282.251495 10.156 283.406494 C 12.563 284.561493 16.289 286.350494 18.438 287.3815 C 20.586 288.412506 23.327999 289.717499 24.531 290.281494 C 25.733999 290.84549 29.18 292.491486 32.188 293.940491 C 35.195 295.388489 38.254002 296.837494 38.984001 297.159485 L 40.313 297.745514 L 40.382 317.138489 C 40.419998 327.804504 40.493999 334.457489 40.546001 331.921509 L 40.641998 327.3125 L 86.405998 327.3125 L 132.171005 327.3125 L 132.278 331.921509 C 132.337006 334.457489 132.363998 323.3125 132.337997 307.156494 C 132.296005 281.639496 132.223007 277.39151 131.783005 274.8125 C 130.884003 269.550507 130.031998 267.139496 127.695 263.250488 C 126.364998 261.037506 123.870003 258.250488 123.220001 258.250488 C 122.996002 258.250488 122.813004 258.125488 122.813004 257.973511 C 122.811996 257.820496 122.355003 257.465515 121.796997 257.183502 C 120.338997 256.446503 119.564003 255.951508 119.307999 255.593506 C 119.161003 255.387497 98.838997 255.253494 59.699001 255.199493 L 0.313 255.117493 L 0.313 265.28949 M 280.703003 255.5495 C 280.31601 255.741501 280 256.005493 280 256.136505 C 280 256.267487 279.812012 256.375488 279.582001 256.375488 C 278.920013 256.375488 275.625 258.861511 275.625 259.360504 C 275.625 259.609497 275.437988 259.8125 275.209015 259.8125 C 274.444 259.8125 272.173004 262.953491 270.915985 265.750488 C 270.567993 266.523499 270.165985 267.374512 270.020996 267.64151 C 269.667999 268.295502 268.526001 272.922485 268.096985 275.4375 C 267.864014 276.804504 267.727997 287.1315 267.682007 307.000488 C 267.644012 323.242493 267.661011 334.457489 267.721008 331.921509 L 267.82901 327.3125 L 313.593994 327.3125 L 359.358002 327.3125 L 359.45401 331.921509 C 359.506012 334.457489 359.582001 327.8125 359.622009 317.156494 L 359.695007 297.781494 L 360.863007 297.235504 C 363.847992 295.842499 370.954987 292.462494 375.739014 290.160492 C 378.638 288.76651 381.044006 287.625488 381.087006 287.625488 C 381.131012 287.625488 384.102997 286.202515 387.691986 284.464508 C 391.282013 282.726501 394.921997 280.990509 395.781006 280.606506 C 399.748993 278.834503 399.868988 278.37149 399.756989 265.257507 L 399.67099 255.125504 L 340.539001 255.163498 C 297.770996 255.191498 281.212006 255.298492 280.703003 255.5495 M 172.720993 328.836487 C 173.440994 329.528503 173.925995 329.724487 173.595001 329.189514 C 173.488998 329.018494 173.093994 328.719513 172.716995 328.525513 L 172.031006 328.172485 L 172.720993 328.836487"/>
6 + <path id="path1" fill="#fb9b3c" fill-rule="evenodd" stroke="none" d="M 0.207 176.296509 C 0.094 180.035522 0.034 203.906494 0.074 229.343506 C 0.115 254.781494 0.186 270.987488 0.234 265.357513 L 0.321 255.121506 L 59.223 255.201508 C 91.619003 255.245499 118.125 255.247498 118.125 255.207504 C 118.125 255.063507 115.844002 254.182495 115.141998 254.055496 C 114.75 253.984497 114.141998 253.772507 113.790001 253.583496 C 113.438004 253.395493 113.039001 253.260498 112.903 253.282501 C 112.766998 253.305496 112.585999 253.296494 112.5 253.263504 C 111.792 252.987503 104.237 251.681503 103.432999 251.696503 C 103.005997 251.704498 101.953003 251.629501 101.094002 251.529495 C 99.332001 251.324493 96.400002 251.037506 94.530998 250.888504 C 93.844002 250.833496 92.508003 250.704498 91.563004 250.601501 C 90.616997 250.498505 89.280998 250.354507 88.594002 250.281494 C 68.487 248.145493 56.970001 240.616516 48.921001 224.343506 C 42.866001 212.102478 38.598 191.004517 38.317001 171.921509 L 38.280998 169.500488 L 19.347 169.500488 L 0.412 169.500488 L 0.207 176.296509 M 39.844002 169.8125 C 39.950001 169.984497 40.240002 170.125488 40.487 170.125488 C 40.735001 170.125488 40.938 170.230499 40.938999 170.359497 C 40.942001 170.701508 42.824001 171.717499 43.117001 171.536499 C 43.254002 171.451508 43.540001 171.591492 43.752998 171.847504 C 43.965 172.103516 44.262001 172.3125 44.412998 172.3125 C 44.563999 172.3125 44.969002 172.593506 45.313 172.9375 C 45.655998 173.281494 46.212002 173.5625 46.547001 173.5625 C 46.882 173.5625 47.269001 173.752502 47.405998 173.985504 C 47.543999 174.217499 48.310001 174.769501 49.110001 175.211487 C 49.909 175.653503 51.136002 176.377502 51.838001 176.820496 C 52.539001 177.262512 53.188999 177.625488 53.282001 177.625488 C 53.375 177.625488 53.974998 177.959503 54.616001 178.3685 C 55.257 178.776489 58.172001 180.481506 61.094002 182.157501 C 64.015999 183.83252 68.023003 186.150513 70 187.307495 C 74.084999 189.698486 97.435997 203.186493 124.375 218.714478 C 147.524002 232.058502 148.697998 232.736511 151.718994 234.516479 C 153.093994 235.326508 154.789993 236.276489 155.488998 236.627502 C 160.132004 238.961487 162.895004 244.114502 163.298004 251.192505 L 163.522003 255.125504 L 199.996002 255.125504 L 236.470993 255.125504 L 236.688004 251.453506 C 237.235992 242.167496 238.811005 239.973511 249.253006 233.958496 C 264.240997 225.323486 277.316986 217.770508 288.906006 211.051514 C 290.993988 209.841492 296.178009 206.860504 303.281006 202.785522 C 307.406006 200.419495 312.39801 197.532501 314.375 196.371521 C 316.35199 195.21051 318.460999 193.980499 319.062988 193.638489 C 319.664001 193.296509 322.89801 191.430481 326.25 189.491516 C 329.60199 187.553497 332.765991 185.728516 333.281006 185.4375 C 334.295013 184.864502 341.338989 180.77948 343.125 179.728516 C 343.72699 179.375488 345.97699 178.047485 348.125 176.77948 C 350.27301 175.510498 352.312988 174.307495 352.656006 174.104492 C 353 173.902496 353.80899 173.41449 354.453003 173.020508 C 355.097992 172.626495 355.625 172.402496 355.625 172.522522 C 355.625 172.643494 356.029999 172.354492 356.524994 171.880493 C 357.311005 171.126495 357.854004 170.867493 358.846985 170.773499 C 358.985992 170.760498 359.013 170.610504 358.90799 170.441498 C 358.799011 170.263489 358.924011 170.211487 359.203003 170.318481 C 359.468994 170.420502 359.687988 170.359497 359.687988 170.181519 C 359.687988 170.003479 359.93399 169.794495 360.234009 169.715515 C 360.535004 169.636505 288.527008 169.556519 200.216003 169.536499 C 93.242996 169.512512 39.715 169.604492 39.844002 169.8125 M 361.723999 171.766479 C 361.726013 173.012512 361.636993 174.875488 361.524994 175.906494 C 361.412994 176.9375 361.234009 179.148499 361.127014 180.818481 C 358.825012 216.876495 347.460999 239.394501 327.963013 246.530502 C 325.065002 247.591507 324.283997 247.865494 323.910004 247.955505 C 323.829987 247.974503 323.02301 248.195496 322.115997 248.445496 C 321.209991 248.696503 320.117004 248.954498 319.687988 249.020493 C 319.257996 249.085495 317.640991 249.350494 316.093994 249.609497 C 313.333008 250.070496 311.391998 250.3255 308.281006 250.634506 C 306.744995 250.787506 306.251007 250.829498 302.187988 251.1465 C 300.247986 251.297501 299.356995 251.390503 295.576996 251.833496 C 293.281006 252.1035 288.384003 252.943497 287.812988 253.166504 C 287.554993 253.266495 287.167999 253.320496 286.953003 253.285507 C 286.738007 253.250504 286.562988 253.384506 286.562988 253.582504 C 286.562988 253.780502 286.36499 253.866501 286.123993 253.773499 C 285.882996 253.681503 285.597992 253.693497 285.48999 253.801498 C 285.382996 253.9095 285.122986 254.028503 284.912994 254.066498 C 279.485992 255.056503 280.799988 255.080505 340.855011 255.102493 L 399.678986 255.125504 L 399.765991 265.203491 C 399.813995 270.74649 399.885986 254.539505 399.925995 229.1875 C 399.966003 203.83551 399.906006 180.035522 399.792999 176.296509 L 399.588013 169.500488 L 380.653015 169.500488 L 361.718994 169.501495 L 361.723999 171.766479"/>
7 + <path id="path2" fill="#fccf5b" fill-rule="evenodd" stroke="none" d="M 43.050999 417.8255 C 42.581001 418.0755 41.807999 418.78949 41.333 419.412506 L 40.469002 420.544495 L 40.387001 456.510498 L 40.305 492.476501 L 41.012001 493.860504 C 41.401001 494.62149 42.116001 495.534485 42.601002 495.887512 L 43.483002 496.531494 L 199.723999 496.610504 C 338.186005 496.680511 356.067993 496.635498 356.872986 496.22049 C 357.372009 495.961487 358.174011 495.234497 358.656006 494.602509 L 359.531006 493.454498 L 359.531006 457.024506 L 359.531006 420.593506 L 358.631012 419.417511 C 356.921997 417.183502 358.256989 417.290497 333.365997 417.384491 C 308.06601 417.479492 309.971008 417.27951 308.593994 419.988495 C 307.992004 421.172485 307.964996 421.929504 307.881012 440.203491 L 307.794006 459.1875 L 289.059998 459.1875 L 270.325989 459.1875 L 270.240997 439.726501 L 270.156006 420.265503 L 269.428009 419.33551 C 267.785004 417.238495 269.036987 417.340515 244.755997 417.3255 C 220.973007 417.311493 221.546005 417.272491 220.063004 419.010498 C 218.772995 420.522491 218.75 420.889496 218.75 440.301514 L 218.75 459.1875 L 200 459.1875 L 181.25 459.1875 L 181.25 440.319489 C 181.25 418.561493 181.296005 418.884491 178.026993 417.645508 C 176.227005 416.964508 133.830002 417.219513 132.283997 417.920502 C 129.591995 419.143494 129.688004 418.3255 129.688004 440.112488 L 129.688004 459.1875 L 110.938004 459.1875 L 92.188004 459.1875 L 92.188004 440.785492 C 92.188004 420.056488 92.175003 419.9245 90.045998 418.301514 L 88.955002 417.468506 L 66.431 417.420502 C 47.275002 417.379486 43.778 417.440491 43.050999 417.8255"/>
8 + <path id="path3" fill="#fc862e" fill-rule="evenodd" stroke="none" d="M 2.859 0.652496 C 2.283 0.9375 1.439 1.734497 0.984 2.422485 L 0.156 3.673492 L 0.146 91.195496 C 0.14 139.333496 0.179 176.646484 0.232 174.114502 L 0.329 169.509521 L 19.461 169.426514 C 29.983999 169.3815 38.759998 169.41449 38.962002 169.500488 C 39.165001 169.58551 111.797997 169.58551 200.367996 169.500488 C 288.938995 169.41449 370.015991 169.3815 380.539001 169.426514 L 399.67099 169.509521 L 399.768005 174.114502 C 399.821014 176.646484 399.859985 139.333496 399.854004 91.195496 L 399.843994 3.673492 L 399.011993 2.416504 C 397.377014 -0.054504 399.98999 0.106506 363.069 0.198486 L 330.156006 0.281494 L 329.104004 1.031494 C 326.75 2.71051 326.890015 0.46051 326.881989 36.921509 L 326.875 69.500488 L 308.906006 69.500488 L 290.937988 69.500488 L 290.937988 44.25351 L 290.937012 19.007507 L 290.234009 17.614502 C 289.772003 16.698486 289.102997 15.981506 288.281006 15.519501 L 287.031006 14.818512 L 254.162994 14.893494 C 217.136993 14.978516 220.574997 14.7435 218.828003 17.309509 L 218.125 18.342499 L 218.125 43.921509 L 218.125 69.500488 L 200 69.500488 L 181.875 69.500488 L 181.875 43.921509 L 181.875 18.342499 L 181.171997 17.309509 C 179.425003 14.7435 182.863007 14.978516 145.837006 14.893494 L 112.969002 14.818512 L 111.719002 15.519501 C 110.897003 15.981506 110.227997 16.698486 109.765999 17.614502 L 109.061996 19.007507 L 109.063004 44.25351 L 109.063004 69.500488 L 91.094002 69.500488 L 73.125 69.500488 L 73.117996 36.921509 C 73.110001 0.46051 73.25 2.71051 70.896004 1.031494 L 69.844002 0.281494 L 36.875 0.207489 C 6.708 0.140503 3.817 0.178497 2.859 0.652496 M 361.64801 171.0625 C 361.64801 171.83551 361.709015 172.152496 361.78299 171.765503 C 361.858002 171.378479 361.858002 170.746521 361.78299 170.359497 C 361.709015 169.972504 361.64801 170.28949 361.64801 171.0625 M 357.144012 171.380493 L 356.406006 172.010498 L 357.265991 171.642517 C 357.738007 171.440491 358.125 171.156494 358.125 171.012512 C 358.125 170.622498 357.958008 170.685486 357.144012 171.380493 M 43.125 171.571503 C 43.125 171.733521 43.547001 172.114502 44.063 172.419495 C 44.580002 172.724487 45 172.824493 45 172.642517 C 45 172.461487 44.834999 172.3125 44.633999 172.3125 C 44.432999 172.3125 44.011002 172.079498 43.695999 171.795502 C 43.382 171.510498 43.125 171.410522 43.125 171.571503"/>
9 + <path id="path4" fill="#fcbc4c" fill-rule="evenodd" stroke="none" d="M 40.519001 334.109497 C 40.405998 337.847504 40.317001 349.41449 40.32 359.8125 C 40.327 380.949493 40.272999 380.413513 42.542 382.030487 L 43.594002 382.781494 L 86.025002 382.862488 C 123.482002 382.934509 128.563004 382.888489 129.373993 382.469513 C 130.774994 381.744507 131.789001 380.48349 132.162003 379.001495 C 132.542007 377.492493 132.636002 345.453491 132.292999 334.109497 L 132.087997 327.3125 L 86.405998 327.3125 L 40.724998 327.3125 L 40.519001 334.109497 M 172.522003 328.269501 C 173.110992 328.795502 173.593994 329.337494 173.593994 329.473511 C 173.593994 329.777496 174.623993 330.96051 183.281006 340.59549 C 185 342.508514 187.25 345.036499 188.281006 346.213501 C 189.313004 347.389496 190.302002 348.504486 190.481003 348.691498 C 190.660004 348.87851 191.919998 350.296509 193.281006 351.843506 C 196.328995 355.307495 196.772995 355.719513 198.037003 356.258514 C 200.772003 357.425507 202.677994 356.458496 206.742004 351.843506 C 208.406998 349.953491 210.278 347.840515 210.899994 347.147491 C 211.522003 346.455505 212.664001 345.185486 213.438004 344.324493 C 214.210999 343.463501 215.940994 341.543488 217.281998 340.057495 C 218.623001 338.570496 220.029007 336.96051 220.406998 336.477509 C 221.031998 335.679504 223.080994 333.384491 224.453003 331.94751 C 224.753998 331.632507 224.940994 331.375488 224.867996 331.375488 C 224.751007 331.375488 225.925003 330.076508 227.904999 328.015503 L 228.580994 327.3125 L 200.014999 327.3125 L 171.449997 327.3125 L 172.522003 328.269501 M 267.707001 334.109497 C 267.364014 345.453491 267.458008 377.492493 267.838013 379.001495 C 268.210999 380.48349 269.225006 381.744507 270.626007 382.469513 C 271.437012 382.888489 276.518005 382.934509 313.975006 382.862488 L 356.406006 382.781494 L 357.458008 382.030487 C 359.72699 380.413513 359.673004 380.949493 359.679993 359.8125 C 359.683014 349.41449 359.593994 337.847504 359.480988 334.109497 L 359.274994 327.3125 L 313.593994 327.3125 L 267.911987 327.3125 L 267.707001 334.109497"/>
10 + </g>
11 + <text id="SOCFortress" xml:space="preserve" x="639" y="374" font-family="Orbitron" font-size="364" fill="#ffffff" letter-spacing="-7.28">SOCFortress</text>
12 +</svg>
frontend/src/assets/images/socfortress_logo_large_light.svg new
+12
@@ -0,0 +1,12 @@
1 +<?xml version="1.0" encoding="UTF-8"?>
2 +<!-- Generated by Pixelmator Pro 3.7.1 -->
3 +<svg width="3237" height="497" viewBox="0 0 3237 497" xmlns="http://www.w3.org/2000/svg">
4 + <g id="svgg">
5 + <path id="path0" fill="#fbab44" fill-rule="evenodd" stroke="none" d="M 163.186996 283.316498 C 163.117004 320.059509 163.007004 318.216492 165.423004 320.644501 C 165.964005 321.1875 166.880997 322.204498 167.460999 322.903503 C 168.041 323.603485 168.641998 324.097504 168.796997 324.002502 C 168.951996 323.906494 169.044998 323.944489 169.003998 324.086487 C 168.876999 324.528503 169.815994 325.750488 170.283997 325.750488 C 170.529007 325.750488 170.634995 325.844513 170.520004 325.959503 C 170.404999 326.073486 170.544006 326.425507 170.828995 326.740509 C 171.324005 327.286499 172.623001 327.3125 199.951996 327.3125 L 228.557007 327.3125 L 229.669006 326.111511 C 237.848007 317.277496 236.850006 323.213501 236.796005 283.718506 C 236.770996 265.500488 236.701996 251.613495 236.643005 252.859497 L 236.535004 255.125504 L 200 255.125504 L 163.464996 255.125504 L 163.356995 252.859497 C 163.298004 251.613495 163.220993 265.318512 163.186996 283.316498 M 0.313 265.28949 C 0.313 275.022491 0.341 275.519501 0.973 276.778503 C 2.064 278.949493 3.126 280.146515 4.489 280.742493 C 5.2 281.05249 7.75 282.251495 10.156 283.406494 C 12.563 284.561493 16.289 286.350494 18.438 287.3815 C 20.586 288.412506 23.327999 289.717499 24.531 290.281494 C 25.733999 290.84549 29.18 292.491486 32.188 293.940491 C 35.195 295.388489 38.254002 296.837494 38.984001 297.159485 L 40.313 297.745514 L 40.382 317.138489 C 40.419998 327.804504 40.493999 334.457489 40.546001 331.921509 L 40.641998 327.3125 L 86.405998 327.3125 L 132.171005 327.3125 L 132.278 331.921509 C 132.337006 334.457489 132.363998 323.3125 132.337997 307.156494 C 132.296005 281.639496 132.223007 277.39151 131.783005 274.8125 C 130.884003 269.550507 130.031998 267.139496 127.695 263.250488 C 126.364998 261.037506 123.870003 258.250488 123.220001 258.250488 C 122.996002 258.250488 122.813004 258.125488 122.813004 257.973511 C 122.811996 257.820496 122.355003 257.465515 121.796997 257.183502 C 120.338997 256.446503 119.564003 255.951508 119.307999 255.593506 C 119.161003 255.387497 98.838997 255.253494 59.699001 255.199493 L 0.313 255.117493 L 0.313 265.28949 M 280.703003 255.5495 C 280.31601 255.741501 280 256.005493 280 256.136505 C 280 256.267487 279.812012 256.375488 279.582001 256.375488 C 278.920013 256.375488 275.625 258.861511 275.625 259.360504 C 275.625 259.609497 275.437988 259.8125 275.209015 259.8125 C 274.444 259.8125 272.173004 262.953491 270.915985 265.750488 C 270.567993 266.523499 270.165985 267.374512 270.020996 267.64151 C 269.667999 268.295502 268.526001 272.922485 268.096985 275.4375 C 267.864014 276.804504 267.727997 287.1315 267.682007 307.000488 C 267.644012 323.242493 267.661011 334.457489 267.721008 331.921509 L 267.82901 327.3125 L 313.593994 327.3125 L 359.358002 327.3125 L 359.45401 331.921509 C 359.506012 334.457489 359.582001 327.8125 359.622009 317.156494 L 359.695007 297.781494 L 360.863007 297.235504 C 363.847992 295.842499 370.954987 292.462494 375.739014 290.160492 C 378.638 288.76651 381.044006 287.625488 381.087006 287.625488 C 381.131012 287.625488 384.102997 286.202515 387.691986 284.464508 C 391.282013 282.726501 394.921997 280.990509 395.781006 280.606506 C 399.748993 278.834503 399.868988 278.37149 399.756989 265.257507 L 399.67099 255.125504 L 340.539001 255.163498 C 297.770996 255.191498 281.212006 255.298492 280.703003 255.5495 M 172.720993 328.836487 C 173.440994 329.528503 173.925995 329.724487 173.595001 329.189514 C 173.488998 329.018494 173.093994 328.719513 172.716995 328.525513 L 172.031006 328.172485 L 172.720993 328.836487"/>
6 + <path id="path1" fill="#fb9b3c" fill-rule="evenodd" stroke="none" d="M 0.207 176.296509 C 0.094 180.035522 0.034 203.906494 0.074 229.343506 C 0.115 254.781494 0.186 270.987488 0.234 265.357513 L 0.321 255.121506 L 59.223 255.201508 C 91.619003 255.245499 118.125 255.247498 118.125 255.207504 C 118.125 255.063507 115.844002 254.182495 115.141998 254.055496 C 114.75 253.984497 114.141998 253.772507 113.790001 253.583496 C 113.438004 253.395493 113.039001 253.260498 112.903 253.282501 C 112.766998 253.305496 112.585999 253.296494 112.5 253.263504 C 111.792 252.987503 104.237 251.681503 103.432999 251.696503 C 103.005997 251.704498 101.953003 251.629501 101.094002 251.529495 C 99.332001 251.324493 96.400002 251.037506 94.530998 250.888504 C 93.844002 250.833496 92.508003 250.704498 91.563004 250.601501 C 90.616997 250.498505 89.280998 250.354507 88.594002 250.281494 C 68.487 248.145493 56.970001 240.616516 48.921001 224.343506 C 42.866001 212.102478 38.598 191.004517 38.317001 171.921509 L 38.280998 169.500488 L 19.347 169.500488 L 0.412 169.500488 L 0.207 176.296509 M 39.844002 169.8125 C 39.950001 169.984497 40.240002 170.125488 40.487 170.125488 C 40.735001 170.125488 40.938 170.230499 40.938999 170.359497 C 40.942001 170.701508 42.824001 171.717499 43.117001 171.536499 C 43.254002 171.451508 43.540001 171.591492 43.752998 171.847504 C 43.965 172.103516 44.262001 172.3125 44.412998 172.3125 C 44.563999 172.3125 44.969002 172.593506 45.313 172.9375 C 45.655998 173.281494 46.212002 173.5625 46.547001 173.5625 C 46.882 173.5625 47.269001 173.752502 47.405998 173.985504 C 47.543999 174.217499 48.310001 174.769501 49.110001 175.211487 C 49.909 175.653503 51.136002 176.377502 51.838001 176.820496 C 52.539001 177.262512 53.188999 177.625488 53.282001 177.625488 C 53.375 177.625488 53.974998 177.959503 54.616001 178.3685 C 55.257 178.776489 58.172001 180.481506 61.094002 182.157501 C 64.015999 183.83252 68.023003 186.150513 70 187.307495 C 74.084999 189.698486 97.435997 203.186493 124.375 218.714478 C 147.524002 232.058502 148.697998 232.736511 151.718994 234.516479 C 153.093994 235.326508 154.789993 236.276489 155.488998 236.627502 C 160.132004 238.961487 162.895004 244.114502 163.298004 251.192505 L 163.522003 255.125504 L 199.996002 255.125504 L 236.470993 255.125504 L 236.688004 251.453506 C 237.235992 242.167496 238.811005 239.973511 249.253006 233.958496 C 264.240997 225.323486 277.316986 217.770508 288.906006 211.051514 C 290.993988 209.841492 296.178009 206.860504 303.281006 202.785522 C 307.406006 200.419495 312.39801 197.532501 314.375 196.371521 C 316.35199 195.21051 318.460999 193.980499 319.062988 193.638489 C 319.664001 193.296509 322.89801 191.430481 326.25 189.491516 C 329.60199 187.553497 332.765991 185.728516 333.281006 185.4375 C 334.295013 184.864502 341.338989 180.77948 343.125 179.728516 C 343.72699 179.375488 345.97699 178.047485 348.125 176.77948 C 350.27301 175.510498 352.312988 174.307495 352.656006 174.104492 C 353 173.902496 353.80899 173.41449 354.453003 173.020508 C 355.097992 172.626495 355.625 172.402496 355.625 172.522522 C 355.625 172.643494 356.029999 172.354492 356.524994 171.880493 C 357.311005 171.126495 357.854004 170.867493 358.846985 170.773499 C 358.985992 170.760498 359.013 170.610504 358.90799 170.441498 C 358.799011 170.263489 358.924011 170.211487 359.203003 170.318481 C 359.468994 170.420502 359.687988 170.359497 359.687988 170.181519 C 359.687988 170.003479 359.93399 169.794495 360.234009 169.715515 C 360.535004 169.636505 288.527008 169.556519 200.216003 169.536499 C 93.242996 169.512512 39.715 169.604492 39.844002 169.8125 M 361.723999 171.766479 C 361.726013 173.012512 361.636993 174.875488 361.524994 175.906494 C 361.412994 176.9375 361.234009 179.148499 361.127014 180.818481 C 358.825012 216.876495 347.460999 239.394501 327.963013 246.530502 C 325.065002 247.591507 324.283997 247.865494 323.910004 247.955505 C 323.829987 247.974503 323.02301 248.195496 322.115997 248.445496 C 321.209991 248.696503 320.117004 248.954498 319.687988 249.020493 C 319.257996 249.085495 317.640991 249.350494 316.093994 249.609497 C 313.333008 250.070496 311.391998 250.3255 308.281006 250.634506 C 306.744995 250.787506 306.251007 250.829498 302.187988 251.1465 C 300.247986 251.297501 299.356995 251.390503 295.576996 251.833496 C 293.281006 252.1035 288.384003 252.943497 287.812988 253.166504 C 287.554993 253.266495 287.167999 253.320496 286.953003 253.285507 C 286.738007 253.250504 286.562988 253.384506 286.562988 253.582504 C 286.562988 253.780502 286.36499 253.866501 286.123993 253.773499 C 285.882996 253.681503 285.597992 253.693497 285.48999 253.801498 C 285.382996 253.9095 285.122986 254.028503 284.912994 254.066498 C 279.485992 255.056503 280.799988 255.080505 340.855011 255.102493 L 399.678986 255.125504 L 399.765991 265.203491 C 399.813995 270.74649 399.885986 254.539505 399.925995 229.1875 C 399.966003 203.83551 399.906006 180.035522 399.792999 176.296509 L 399.588013 169.500488 L 380.653015 169.500488 L 361.718994 169.501495 L 361.723999 171.766479"/>
7 + <path id="path2" fill="#fccf5b" fill-rule="evenodd" stroke="none" d="M 43.050999 417.8255 C 42.581001 418.0755 41.807999 418.78949 41.333 419.412506 L 40.469002 420.544495 L 40.387001 456.510498 L 40.305 492.476501 L 41.012001 493.860504 C 41.401001 494.62149 42.116001 495.534485 42.601002 495.887512 L 43.483002 496.531494 L 199.723999 496.610504 C 338.186005 496.680511 356.067993 496.635498 356.872986 496.22049 C 357.372009 495.961487 358.174011 495.234497 358.656006 494.602509 L 359.531006 493.454498 L 359.531006 457.024506 L 359.531006 420.593506 L 358.631012 419.417511 C 356.921997 417.183502 358.256989 417.290497 333.365997 417.384491 C 308.06601 417.479492 309.971008 417.27951 308.593994 419.988495 C 307.992004 421.172485 307.964996 421.929504 307.881012 440.203491 L 307.794006 459.1875 L 289.059998 459.1875 L 270.325989 459.1875 L 270.240997 439.726501 L 270.156006 420.265503 L 269.428009 419.33551 C 267.785004 417.238495 269.036987 417.340515 244.755997 417.3255 C 220.973007 417.311493 221.546005 417.272491 220.063004 419.010498 C 218.772995 420.522491 218.75 420.889496 218.75 440.301514 L 218.75 459.1875 L 200 459.1875 L 181.25 459.1875 L 181.25 440.319489 C 181.25 418.561493 181.296005 418.884491 178.026993 417.645508 C 176.227005 416.964508 133.830002 417.219513 132.283997 417.920502 C 129.591995 419.143494 129.688004 418.3255 129.688004 440.112488 L 129.688004 459.1875 L 110.938004 459.1875 L 92.188004 459.1875 L 92.188004 440.785492 C 92.188004 420.056488 92.175003 419.9245 90.045998 418.301514 L 88.955002 417.468506 L 66.431 417.420502 C 47.275002 417.379486 43.778 417.440491 43.050999 417.8255"/>
8 + <path id="path3" fill="#fc862e" fill-rule="evenodd" stroke="none" d="M 2.859 0.652496 C 2.283 0.9375 1.439 1.734497 0.984 2.422485 L 0.156 3.673492 L 0.146 91.195496 C 0.14 139.333496 0.179 176.646484 0.232 174.114502 L 0.329 169.509521 L 19.461 169.426514 C 29.983999 169.3815 38.759998 169.41449 38.962002 169.500488 C 39.165001 169.58551 111.797997 169.58551 200.367996 169.500488 C 288.938995 169.41449 370.015991 169.3815 380.539001 169.426514 L 399.67099 169.509521 L 399.768005 174.114502 C 399.821014 176.646484 399.859985 139.333496 399.854004 91.195496 L 399.843994 3.673492 L 399.011993 2.416504 C 397.377014 -0.054504 399.98999 0.106506 363.069 0.198486 L 330.156006 0.281494 L 329.104004 1.031494 C 326.75 2.71051 326.890015 0.46051 326.881989 36.921509 L 326.875 69.500488 L 308.906006 69.500488 L 290.937988 69.500488 L 290.937988 44.25351 L 290.937012 19.007507 L 290.234009 17.614502 C 289.772003 16.698486 289.102997 15.981506 288.281006 15.519501 L 287.031006 14.818512 L 254.162994 14.893494 C 217.136993 14.978516 220.574997 14.7435 218.828003 17.309509 L 218.125 18.342499 L 218.125 43.921509 L 218.125 69.500488 L 200 69.500488 L 181.875 69.500488 L 181.875 43.921509 L 181.875 18.342499 L 181.171997 17.309509 C 179.425003 14.7435 182.863007 14.978516 145.837006 14.893494 L 112.969002 14.818512 L 111.719002 15.519501 C 110.897003 15.981506 110.227997 16.698486 109.765999 17.614502 L 109.061996 19.007507 L 109.063004 44.25351 L 109.063004 69.500488 L 91.094002 69.500488 L 73.125 69.500488 L 73.117996 36.921509 C 73.110001 0.46051 73.25 2.71051 70.896004 1.031494 L 69.844002 0.281494 L 36.875 0.207489 C 6.708 0.140503 3.817 0.178497 2.859 0.652496 M 361.64801 171.0625 C 361.64801 171.83551 361.709015 172.152496 361.78299 171.765503 C 361.858002 171.378479 361.858002 170.746521 361.78299 170.359497 C 361.709015 169.972504 361.64801 170.28949 361.64801 171.0625 M 357.144012 171.380493 L 356.406006 172.010498 L 357.265991 171.642517 C 357.738007 171.440491 358.125 171.156494 358.125 171.012512 C 358.125 170.622498 357.958008 170.685486 357.144012 171.380493 M 43.125 171.571503 C 43.125 171.733521 43.547001 172.114502 44.063 172.419495 C 44.580002 172.724487 45 172.824493 45 172.642517 C 45 172.461487 44.834999 172.3125 44.633999 172.3125 C 44.432999 172.3125 44.011002 172.079498 43.695999 171.795502 C 43.382 171.510498 43.125 171.410522 43.125 171.571503"/>
9 + <path id="path4" fill="#fcbc4c" fill-rule="evenodd" stroke="none" d="M 40.519001 334.109497 C 40.405998 337.847504 40.317001 349.41449 40.32 359.8125 C 40.327 380.949493 40.272999 380.413513 42.542 382.030487 L 43.594002 382.781494 L 86.025002 382.862488 C 123.482002 382.934509 128.563004 382.888489 129.373993 382.469513 C 130.774994 381.744507 131.789001 380.48349 132.162003 379.001495 C 132.542007 377.492493 132.636002 345.453491 132.292999 334.109497 L 132.087997 327.3125 L 86.405998 327.3125 L 40.724998 327.3125 L 40.519001 334.109497 M 172.522003 328.269501 C 173.110992 328.795502 173.593994 329.337494 173.593994 329.473511 C 173.593994 329.777496 174.623993 330.96051 183.281006 340.59549 C 185 342.508514 187.25 345.036499 188.281006 346.213501 C 189.313004 347.389496 190.302002 348.504486 190.481003 348.691498 C 190.660004 348.87851 191.919998 350.296509 193.281006 351.843506 C 196.328995 355.307495 196.772995 355.719513 198.037003 356.258514 C 200.772003 357.425507 202.677994 356.458496 206.742004 351.843506 C 208.406998 349.953491 210.278 347.840515 210.899994 347.147491 C 211.522003 346.455505 212.664001 345.185486 213.438004 344.324493 C 214.210999 343.463501 215.940994 341.543488 217.281998 340.057495 C 218.623001 338.570496 220.029007 336.96051 220.406998 336.477509 C 221.031998 335.679504 223.080994 333.384491 224.453003 331.94751 C 224.753998 331.632507 224.940994 331.375488 224.867996 331.375488 C 224.751007 331.375488 225.925003 330.076508 227.904999 328.015503 L 228.580994 327.3125 L 200.014999 327.3125 L 171.449997 327.3125 L 172.522003 328.269501 M 267.707001 334.109497 C 267.364014 345.453491 267.458008 377.492493 267.838013 379.001495 C 268.210999 380.48349 269.225006 381.744507 270.626007 382.469513 C 271.437012 382.888489 276.518005 382.934509 313.975006 382.862488 L 356.406006 382.781494 L 357.458008 382.030487 C 359.72699 380.413513 359.673004 380.949493 359.679993 359.8125 C 359.683014 349.41449 359.593994 337.847504 359.480988 334.109497 L 359.274994 327.3125 L 313.593994 327.3125 L 267.911987 327.3125 L 267.707001 334.109497"/>
10 + </g>
11 + <text id="SOCFortress" xml:space="preserve"><tspan x="637" y="376" font-family="Orbitron" font-size="364" fill="#000000" letter-spacing="-7.28" xml:space="preserve">SOCF</tspan><tspan font-family="Orbitron" font-size="364" fill="#000000" letter-spacing="-7.28" xml:space="preserve">or</tspan><tspan font-family="Orbitron" font-size="364" fill="#000000" letter-spacing="-7.28" xml:space="preserve">tr</tspan><tspan font-family="Orbitron" font-size="364" fill="#000000" letter-spacing="-7.28" xml:space="preserve">es</tspan><tspan font-family="Orbitron" font-size="364" fill="#000000" letter-spacing="-7.28" xml:space="preserve">s</tspan></text>
12 +</svg>
frontend/src/assets/images/socfortress_logo_small_dark.svg new
+3
@@ -0,0 +1,3 @@
1 +<?xml version="1.0" standalone="no"?>
2 +<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
3 +<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" id="svg" version="1.1" width="400" height="497.1875" viewBox="0, 0, 400,497.1875"><g id="svgg"><path id="path0" d="M163.187 283.504 C 163.117 320.247,163.007 318.404,165.423 320.832 C 165.964 321.375,166.881 322.392,167.461 323.091 C 168.041 323.791,168.642 324.285,168.797 324.190 C 168.952 324.094,169.045 324.132,169.004 324.274 C 168.877 324.716,169.816 325.938,170.284 325.938 C 170.529 325.938,170.635 326.032,170.520 326.147 C 170.405 326.261,170.544 326.613,170.829 326.928 C 171.324 327.474,172.623 327.500,199.952 327.500 L 228.557 327.500 229.669 326.299 C 237.848 317.465,236.850 323.401,236.796 283.906 C 236.771 265.688,236.702 251.801,236.643 253.047 L 236.535 255.313 200.000 255.313 L 163.465 255.313 163.357 253.047 C 163.298 251.801,163.221 265.506,163.187 283.504 M0.313 265.477 C 0.313 275.210,0.341 275.707,0.973 276.966 C 2.064 279.137,3.126 280.334,4.489 280.930 C 5.200 281.240,7.750 282.439,10.156 283.594 C 12.563 284.749,16.289 286.538,18.438 287.569 C 20.586 288.600,23.328 289.905,24.531 290.469 C 25.734 291.033,29.180 292.679,32.188 294.128 C 35.195 295.576,38.254 297.025,38.984 297.347 L 40.313 297.933 40.382 317.326 C 40.420 327.992,40.494 334.645,40.546 332.109 L 40.642 327.500 86.406 327.500 L 132.171 327.500 132.278 332.109 C 132.337 334.645,132.364 323.500,132.338 307.344 C 132.296 281.827,132.223 277.579,131.783 275.000 C 130.884 269.738,130.032 267.327,127.695 263.438 C 126.365 261.225,123.870 258.438,123.220 258.438 C 122.996 258.438,122.813 258.313,122.813 258.161 C 122.812 258.008,122.355 257.653,121.797 257.371 C 120.339 256.634,119.564 256.139,119.308 255.781 C 119.161 255.575,98.839 255.441,59.699 255.387 L 0.313 255.305 0.313 265.477 M280.703 255.737 C 280.316 255.929,280.000 256.193,280.000 256.324 C 280.000 256.455,279.812 256.563,279.582 256.563 C 278.920 256.563,275.625 259.049,275.625 259.548 C 275.625 259.797,275.438 260.000,275.209 260.000 C 274.444 260.000,272.173 263.141,270.916 265.938 C 270.568 266.711,270.166 267.562,270.021 267.829 C 269.668 268.483,268.526 273.110,268.097 275.625 C 267.864 276.992,267.728 287.319,267.682 307.188 C 267.644 323.430,267.661 334.645,267.721 332.109 L 267.829 327.500 313.594 327.500 L 359.358 327.500 359.454 332.109 C 359.506 334.645,359.582 328.000,359.622 317.344 L 359.695 297.969 360.863 297.423 C 363.848 296.030,370.955 292.650,375.739 290.348 C 378.638 288.954,381.044 287.813,381.087 287.813 C 381.131 287.813,384.103 286.390,387.692 284.652 C 391.282 282.914,394.922 281.178,395.781 280.794 C 399.749 279.022,399.869 278.559,399.757 265.445 L 399.671 255.313 340.539 255.351 C 297.771 255.379,281.212 255.486,280.703 255.737 M172.721 329.024 C 173.441 329.716,173.926 329.912,173.595 329.377 C 173.489 329.206,173.094 328.907,172.717 328.713 L 172.031 328.360 172.721 329.024 " stroke="none" fill="#fbab44" fill-rule="evenodd"/><path id="path1" d="M0.207 176.484 C 0.094 180.223,0.034 204.094,0.074 229.531 C 0.115 254.969,0.186 271.175,0.234 265.545 L 0.321 255.309 59.223 255.389 C 91.619 255.433,118.125 255.435,118.125 255.395 C 118.125 255.251,115.844 254.370,115.142 254.243 C 114.750 254.172,114.142 253.960,113.790 253.771 C 113.438 253.583,113.039 253.448,112.903 253.470 C 112.767 253.493,112.586 253.484,112.500 253.451 C 111.792 253.175,104.237 251.869,103.433 251.884 C 103.006 251.892,101.953 251.817,101.094 251.717 C 99.332 251.512,96.400 251.225,94.531 251.076 C 93.844 251.021,92.508 250.892,91.563 250.789 C 90.617 250.686,89.281 250.542,88.594 250.469 C 68.487 248.333,56.970 240.804,48.921 224.531 C 42.866 212.290,38.598 191.192,38.317 172.109 L 38.281 169.688 19.347 169.688 L 0.412 169.688 0.207 176.484 M39.844 170.000 C 39.950 170.172,40.240 170.313,40.487 170.313 C 40.735 170.313,40.938 170.418,40.939 170.547 C 40.942 170.889,42.824 171.905,43.117 171.724 C 43.254 171.639,43.540 171.779,43.753 172.035 C 43.965 172.291,44.262 172.500,44.413 172.500 C 44.564 172.500,44.969 172.781,45.313 173.125 C 45.656 173.469,46.212 173.750,46.547 173.750 C 46.882 173.750,47.269 173.940,47.406 174.173 C 47.544 174.405,48.310 174.957,49.110 175.399 C 49.909 175.841,51.136 176.565,51.838 177.008 C 52.539 177.450,53.189 177.813,53.282 177.813 C 53.375 177.813,53.975 178.147,54.616 178.556 C 55.257 178.964,58.172 180.669,61.094 182.345 C 64.016 184.020,68.023 186.338,70.000 187.495 C 74.085 189.886,97.436 203.374,124.375 218.902 C 147.524 232.246,148.698 232.924,151.719 234.704 C 153.094 235.514,154.790 236.464,155.489 236.815 C 160.132 239.149,162.895 244.302,163.298 251.380 L 163.522 255.313 199.996 255.313 L 236.471 255.313 236.688 251.641 C 237.236 242.355,238.811 240.161,249.253 234.146 C 264.241 225.511,277.317 217.958,288.906 211.239 C 290.994 210.029,296.178 207.048,303.281 202.973 C 307.406 200.607,312.398 197.720,314.375 196.559 C 316.352 195.398,318.461 194.168,319.063 193.826 C 319.664 193.484,322.898 191.618,326.250 189.679 C 329.602 187.741,332.766 185.916,333.281 185.625 C 334.295 185.052,341.339 180.967,343.125 179.916 C 343.727 179.563,345.977 178.235,348.125 176.967 C 350.273 175.698,352.313 174.495,352.656 174.292 C 353.000 174.090,353.809 173.602,354.453 173.208 C 355.098 172.814,355.625 172.590,355.625 172.710 C 355.625 172.831,356.030 172.542,356.525 172.068 C 357.311 171.314,357.854 171.055,358.847 170.961 C 358.986 170.948,359.013 170.798,358.908 170.629 C 358.799 170.451,358.924 170.399,359.203 170.506 C 359.469 170.608,359.688 170.547,359.688 170.369 C 359.688 170.191,359.934 169.982,360.234 169.903 C 360.535 169.824,288.527 169.744,200.216 169.724 C 93.243 169.700,39.715 169.792,39.844 170.000 M361.724 171.954 C 361.726 173.200,361.637 175.063,361.525 176.094 C 361.413 177.125,361.234 179.336,361.127 181.006 C 358.825 217.064,347.461 239.582,327.963 246.718 C 325.065 247.779,324.284 248.053,323.910 248.143 C 323.830 248.162,323.023 248.383,322.116 248.633 C 321.210 248.884,320.117 249.142,319.688 249.208 C 319.258 249.273,317.641 249.538,316.094 249.797 C 313.333 250.258,311.392 250.513,308.281 250.822 C 306.745 250.975,306.251 251.017,302.188 251.334 C 300.248 251.485,299.357 251.578,295.577 252.021 C 293.281 252.291,288.384 253.131,287.813 253.354 C 287.555 253.454,287.168 253.508,286.953 253.473 C 286.738 253.438,286.563 253.572,286.563 253.770 C 286.563 253.968,286.365 254.054,286.124 253.961 C 285.883 253.869,285.598 253.881,285.490 253.989 C 285.383 254.097,285.123 254.216,284.913 254.254 C 279.486 255.244,280.800 255.268,340.855 255.290 L 399.679 255.313 399.766 265.391 C 399.814 270.934,399.886 254.727,399.926 229.375 C 399.966 204.023,399.906 180.223,399.793 176.484 L 399.588 169.688 380.653 169.688 L 361.719 169.689 361.724 171.954 " stroke="none" fill="#fb9b3c" fill-rule="evenodd"/><path id="path2" d="M43.051 418.013 C 42.581 418.263,41.808 418.977,41.333 419.600 L 40.469 420.732 40.387 456.698 L 40.305 492.664 41.012 494.048 C 41.401 494.809,42.116 495.722,42.601 496.075 L 43.483 496.719 199.724 496.798 C 338.186 496.868,356.068 496.823,356.873 496.408 C 357.372 496.149,358.174 495.422,358.656 494.790 L 359.531 493.642 359.531 457.212 L 359.531 420.781 358.631 419.605 C 356.922 417.371,358.257 417.478,333.366 417.572 C 308.066 417.667,309.971 417.467,308.594 420.176 C 307.992 421.360,307.965 422.117,307.881 440.391 L 307.794 459.375 289.060 459.375 L 270.326 459.375 270.241 439.914 L 270.156 420.453 269.428 419.523 C 267.785 417.426,269.037 417.528,244.756 417.513 C 220.973 417.499,221.546 417.460,220.063 419.198 C 218.773 420.710,218.750 421.077,218.750 440.489 L 218.750 459.375 200.000 459.375 L 181.250 459.375 181.250 440.507 C 181.250 418.749,181.296 419.072,178.027 417.833 C 176.227 417.152,133.830 417.407,132.284 418.108 C 129.592 419.331,129.688 418.513,129.688 440.300 L 129.688 459.375 110.938 459.375 L 92.188 459.375 92.188 440.973 C 92.188 420.244,92.175 420.112,90.046 418.489 L 88.955 417.656 66.431 417.608 C 47.275 417.567,43.778 417.628,43.051 418.013 " stroke="none" fill="#fccf5b" fill-rule="evenodd"/><path id="path3" d="M2.859 0.840 C 2.283 1.125,1.439 1.922,0.984 2.610 L 0.156 3.861 0.146 91.383 C 0.140 139.521,0.179 176.834,0.232 174.302 L 0.329 169.697 19.461 169.614 C 29.984 169.569,38.760 169.602,38.962 169.688 C 39.165 169.773,111.798 169.773,200.368 169.688 C 288.939 169.602,370.016 169.569,380.539 169.614 L 399.671 169.697 399.768 174.302 C 399.821 176.834,399.860 139.521,399.854 91.383 L 399.844 3.861 399.012 2.604 C 397.377 0.133,399.990 0.294,363.069 0.386 L 330.156 0.469 329.104 1.219 C 326.750 2.898,326.890 0.648,326.882 37.109 L 326.875 69.688 308.906 69.688 L 290.938 69.688 290.938 44.441 L 290.937 19.195 290.234 17.802 C 289.772 16.886,289.103 16.169,288.281 15.707 L 287.031 15.006 254.163 15.081 C 217.137 15.166,220.575 14.931,218.828 17.497 L 218.125 18.530 218.125 44.109 L 218.125 69.688 200.000 69.688 L 181.875 69.688 181.875 44.109 L 181.875 18.530 181.172 17.497 C 179.425 14.931,182.863 15.166,145.837 15.081 L 112.969 15.006 111.719 15.707 C 110.897 16.169,110.228 16.886,109.766 17.802 L 109.062 19.195 109.063 44.441 L 109.063 69.688 91.094 69.688 L 73.125 69.688 73.118 37.109 C 73.110 0.648,73.250 2.898,70.896 1.219 L 69.844 0.469 36.875 0.395 C 6.708 0.328,3.817 0.366,2.859 0.840 M361.648 171.250 C 361.648 172.023,361.709 172.340,361.783 171.953 C 361.858 171.566,361.858 170.934,361.783 170.547 C 361.709 170.160,361.648 170.477,361.648 171.250 M357.144 171.568 L 356.406 172.198 357.266 171.830 C 357.738 171.628,358.125 171.344,358.125 171.200 C 358.125 170.810,357.958 170.873,357.144 171.568 M43.125 171.759 C 43.125 171.921,43.547 172.302,44.063 172.607 C 44.580 172.912,45.000 173.012,45.000 172.830 C 45.000 172.649,44.835 172.500,44.634 172.500 C 44.433 172.500,44.011 172.267,43.696 171.983 C 43.382 171.698,43.125 171.598,43.125 171.759 " stroke="none" fill="#fc862e" fill-rule="evenodd"/><path id="path4" d="M40.519 334.297 C 40.406 338.035,40.317 349.602,40.320 360.000 C 40.327 381.137,40.273 380.601,42.542 382.218 L 43.594 382.969 86.025 383.050 C 123.482 383.122,128.563 383.076,129.374 382.657 C 130.775 381.932,131.789 380.671,132.162 379.189 C 132.542 377.680,132.636 345.641,132.293 334.297 L 132.088 327.500 86.406 327.500 L 40.725 327.500 40.519 334.297 M172.522 328.457 C 173.111 328.983,173.594 329.525,173.594 329.661 C 173.594 329.965,174.624 331.148,183.281 340.783 C 185.000 342.696,187.250 345.224,188.281 346.401 C 189.313 347.577,190.302 348.692,190.481 348.879 C 190.660 349.066,191.920 350.484,193.281 352.031 C 196.329 355.495,196.773 355.907,198.037 356.446 C 200.772 357.613,202.678 356.646,206.742 352.031 C 208.407 350.141,210.278 348.028,210.900 347.335 C 211.522 346.643,212.664 345.373,213.438 344.512 C 214.211 343.651,215.941 341.731,217.282 340.245 C 218.623 338.758,220.029 337.148,220.407 336.665 C 221.032 335.867,223.081 333.572,224.453 332.135 C 224.754 331.820,224.941 331.563,224.868 331.563 C 224.751 331.563,225.925 330.264,227.905 328.203 L 228.581 327.500 200.015 327.500 L 171.450 327.500 172.522 328.457 M267.707 334.297 C 267.364 345.641,267.458 377.680,267.838 379.189 C 268.211 380.671,269.225 381.932,270.626 382.657 C 271.437 383.076,276.518 383.122,313.975 383.050 L 356.406 382.969 357.458 382.218 C 359.727 380.601,359.673 381.137,359.680 360.000 C 359.683 349.602,359.594 338.035,359.481 334.297 L 359.275 327.500 313.594 327.500 L 267.912 327.500 267.707 334.297 " stroke="none" fill="#fcbc4c" fill-rule="evenodd"/></g></svg>
frontend/src/assets/images/socfortress_logo_small_light.svg new
+3
@@ -0,0 +1,3 @@
1 +<?xml version="1.0" standalone="no"?>
2 +<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
3 +<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" id="svg" version="1.1" width="400" height="497.1875" viewBox="0, 0, 400,497.1875"><g id="svgg"><path id="path0" d="M163.187 283.504 C 163.117 320.247,163.007 318.404,165.423 320.832 C 165.964 321.375,166.881 322.392,167.461 323.091 C 168.041 323.791,168.642 324.285,168.797 324.190 C 168.952 324.094,169.045 324.132,169.004 324.274 C 168.877 324.716,169.816 325.938,170.284 325.938 C 170.529 325.938,170.635 326.032,170.520 326.147 C 170.405 326.261,170.544 326.613,170.829 326.928 C 171.324 327.474,172.623 327.500,199.952 327.500 L 228.557 327.500 229.669 326.299 C 237.848 317.465,236.850 323.401,236.796 283.906 C 236.771 265.688,236.702 251.801,236.643 253.047 L 236.535 255.313 200.000 255.313 L 163.465 255.313 163.357 253.047 C 163.298 251.801,163.221 265.506,163.187 283.504 M0.313 265.477 C 0.313 275.210,0.341 275.707,0.973 276.966 C 2.064 279.137,3.126 280.334,4.489 280.930 C 5.200 281.240,7.750 282.439,10.156 283.594 C 12.563 284.749,16.289 286.538,18.438 287.569 C 20.586 288.600,23.328 289.905,24.531 290.469 C 25.734 291.033,29.180 292.679,32.188 294.128 C 35.195 295.576,38.254 297.025,38.984 297.347 L 40.313 297.933 40.382 317.326 C 40.420 327.992,40.494 334.645,40.546 332.109 L 40.642 327.500 86.406 327.500 L 132.171 327.500 132.278 332.109 C 132.337 334.645,132.364 323.500,132.338 307.344 C 132.296 281.827,132.223 277.579,131.783 275.000 C 130.884 269.738,130.032 267.327,127.695 263.438 C 126.365 261.225,123.870 258.438,123.220 258.438 C 122.996 258.438,122.813 258.313,122.813 258.161 C 122.812 258.008,122.355 257.653,121.797 257.371 C 120.339 256.634,119.564 256.139,119.308 255.781 C 119.161 255.575,98.839 255.441,59.699 255.387 L 0.313 255.305 0.313 265.477 M280.703 255.737 C 280.316 255.929,280.000 256.193,280.000 256.324 C 280.000 256.455,279.812 256.563,279.582 256.563 C 278.920 256.563,275.625 259.049,275.625 259.548 C 275.625 259.797,275.438 260.000,275.209 260.000 C 274.444 260.000,272.173 263.141,270.916 265.938 C 270.568 266.711,270.166 267.562,270.021 267.829 C 269.668 268.483,268.526 273.110,268.097 275.625 C 267.864 276.992,267.728 287.319,267.682 307.188 C 267.644 323.430,267.661 334.645,267.721 332.109 L 267.829 327.500 313.594 327.500 L 359.358 327.500 359.454 332.109 C 359.506 334.645,359.582 328.000,359.622 317.344 L 359.695 297.969 360.863 297.423 C 363.848 296.030,370.955 292.650,375.739 290.348 C 378.638 288.954,381.044 287.813,381.087 287.813 C 381.131 287.813,384.103 286.390,387.692 284.652 C 391.282 282.914,394.922 281.178,395.781 280.794 C 399.749 279.022,399.869 278.559,399.757 265.445 L 399.671 255.313 340.539 255.351 C 297.771 255.379,281.212 255.486,280.703 255.737 M172.721 329.024 C 173.441 329.716,173.926 329.912,173.595 329.377 C 173.489 329.206,173.094 328.907,172.717 328.713 L 172.031 328.360 172.721 329.024 " stroke="none" fill="#fbab44" fill-rule="evenodd"/><path id="path1" d="M0.207 176.484 C 0.094 180.223,0.034 204.094,0.074 229.531 C 0.115 254.969,0.186 271.175,0.234 265.545 L 0.321 255.309 59.223 255.389 C 91.619 255.433,118.125 255.435,118.125 255.395 C 118.125 255.251,115.844 254.370,115.142 254.243 C 114.750 254.172,114.142 253.960,113.790 253.771 C 113.438 253.583,113.039 253.448,112.903 253.470 C 112.767 253.493,112.586 253.484,112.500 253.451 C 111.792 253.175,104.237 251.869,103.433 251.884 C 103.006 251.892,101.953 251.817,101.094 251.717 C 99.332 251.512,96.400 251.225,94.531 251.076 C 93.844 251.021,92.508 250.892,91.563 250.789 C 90.617 250.686,89.281 250.542,88.594 250.469 C 68.487 248.333,56.970 240.804,48.921 224.531 C 42.866 212.290,38.598 191.192,38.317 172.109 L 38.281 169.688 19.347 169.688 L 0.412 169.688 0.207 176.484 M39.844 170.000 C 39.950 170.172,40.240 170.313,40.487 170.313 C 40.735 170.313,40.938 170.418,40.939 170.547 C 40.942 170.889,42.824 171.905,43.117 171.724 C 43.254 171.639,43.540 171.779,43.753 172.035 C 43.965 172.291,44.262 172.500,44.413 172.500 C 44.564 172.500,44.969 172.781,45.313 173.125 C 45.656 173.469,46.212 173.750,46.547 173.750 C 46.882 173.750,47.269 173.940,47.406 174.173 C 47.544 174.405,48.310 174.957,49.110 175.399 C 49.909 175.841,51.136 176.565,51.838 177.008 C 52.539 177.450,53.189 177.813,53.282 177.813 C 53.375 177.813,53.975 178.147,54.616 178.556 C 55.257 178.964,58.172 180.669,61.094 182.345 C 64.016 184.020,68.023 186.338,70.000 187.495 C 74.085 189.886,97.436 203.374,124.375 218.902 C 147.524 232.246,148.698 232.924,151.719 234.704 C 153.094 235.514,154.790 236.464,155.489 236.815 C 160.132 239.149,162.895 244.302,163.298 251.380 L 163.522 255.313 199.996 255.313 L 236.471 255.313 236.688 251.641 C 237.236 242.355,238.811 240.161,249.253 234.146 C 264.241 225.511,277.317 217.958,288.906 211.239 C 290.994 210.029,296.178 207.048,303.281 202.973 C 307.406 200.607,312.398 197.720,314.375 196.559 C 316.352 195.398,318.461 194.168,319.063 193.826 C 319.664 193.484,322.898 191.618,326.250 189.679 C 329.602 187.741,332.766 185.916,333.281 185.625 C 334.295 185.052,341.339 180.967,343.125 179.916 C 343.727 179.563,345.977 178.235,348.125 176.967 C 350.273 175.698,352.313 174.495,352.656 174.292 C 353.000 174.090,353.809 173.602,354.453 173.208 C 355.098 172.814,355.625 172.590,355.625 172.710 C 355.625 172.831,356.030 172.542,356.525 172.068 C 357.311 171.314,357.854 171.055,358.847 170.961 C 358.986 170.948,359.013 170.798,358.908 170.629 C 358.799 170.451,358.924 170.399,359.203 170.506 C 359.469 170.608,359.688 170.547,359.688 170.369 C 359.688 170.191,359.934 169.982,360.234 169.903 C 360.535 169.824,288.527 169.744,200.216 169.724 C 93.243 169.700,39.715 169.792,39.844 170.000 M361.724 171.954 C 361.726 173.200,361.637 175.063,361.525 176.094 C 361.413 177.125,361.234 179.336,361.127 181.006 C 358.825 217.064,347.461 239.582,327.963 246.718 C 325.065 247.779,324.284 248.053,323.910 248.143 C 323.830 248.162,323.023 248.383,322.116 248.633 C 321.210 248.884,320.117 249.142,319.688 249.208 C 319.258 249.273,317.641 249.538,316.094 249.797 C 313.333 250.258,311.392 250.513,308.281 250.822 C 306.745 250.975,306.251 251.017,302.188 251.334 C 300.248 251.485,299.357 251.578,295.577 252.021 C 293.281 252.291,288.384 253.131,287.813 253.354 C 287.555 253.454,287.168 253.508,286.953 253.473 C 286.738 253.438,286.563 253.572,286.563 253.770 C 286.563 253.968,286.365 254.054,286.124 253.961 C 285.883 253.869,285.598 253.881,285.490 253.989 C 285.383 254.097,285.123 254.216,284.913 254.254 C 279.486 255.244,280.800 255.268,340.855 255.290 L 399.679 255.313 399.766 265.391 C 399.814 270.934,399.886 254.727,399.926 229.375 C 399.966 204.023,399.906 180.223,399.793 176.484 L 399.588 169.688 380.653 169.688 L 361.719 169.689 361.724 171.954 " stroke="none" fill="#fb9b3c" fill-rule="evenodd"/><path id="path2" d="M43.051 418.013 C 42.581 418.263,41.808 418.977,41.333 419.600 L 40.469 420.732 40.387 456.698 L 40.305 492.664 41.012 494.048 C 41.401 494.809,42.116 495.722,42.601 496.075 L 43.483 496.719 199.724 496.798 C 338.186 496.868,356.068 496.823,356.873 496.408 C 357.372 496.149,358.174 495.422,358.656 494.790 L 359.531 493.642 359.531 457.212 L 359.531 420.781 358.631 419.605 C 356.922 417.371,358.257 417.478,333.366 417.572 C 308.066 417.667,309.971 417.467,308.594 420.176 C 307.992 421.360,307.965 422.117,307.881 440.391 L 307.794 459.375 289.060 459.375 L 270.326 459.375 270.241 439.914 L 270.156 420.453 269.428 419.523 C 267.785 417.426,269.037 417.528,244.756 417.513 C 220.973 417.499,221.546 417.460,220.063 419.198 C 218.773 420.710,218.750 421.077,218.750 440.489 L 218.750 459.375 200.000 459.375 L 181.250 459.375 181.250 440.507 C 181.250 418.749,181.296 419.072,178.027 417.833 C 176.227 417.152,133.830 417.407,132.284 418.108 C 129.592 419.331,129.688 418.513,129.688 440.300 L 129.688 459.375 110.938 459.375 L 92.188 459.375 92.188 440.973 C 92.188 420.244,92.175 420.112,90.046 418.489 L 88.955 417.656 66.431 417.608 C 47.275 417.567,43.778 417.628,43.051 418.013 " stroke="none" fill="#fccf5b" fill-rule="evenodd"/><path id="path3" d="M2.859 0.840 C 2.283 1.125,1.439 1.922,0.984 2.610 L 0.156 3.861 0.146 91.383 C 0.140 139.521,0.179 176.834,0.232 174.302 L 0.329 169.697 19.461 169.614 C 29.984 169.569,38.760 169.602,38.962 169.688 C 39.165 169.773,111.798 169.773,200.368 169.688 C 288.939 169.602,370.016 169.569,380.539 169.614 L 399.671 169.697 399.768 174.302 C 399.821 176.834,399.860 139.521,399.854 91.383 L 399.844 3.861 399.012 2.604 C 397.377 0.133,399.990 0.294,363.069 0.386 L 330.156 0.469 329.104 1.219 C 326.750 2.898,326.890 0.648,326.882 37.109 L 326.875 69.688 308.906 69.688 L 290.938 69.688 290.938 44.441 L 290.937 19.195 290.234 17.802 C 289.772 16.886,289.103 16.169,288.281 15.707 L 287.031 15.006 254.163 15.081 C 217.137 15.166,220.575 14.931,218.828 17.497 L 218.125 18.530 218.125 44.109 L 218.125 69.688 200.000 69.688 L 181.875 69.688 181.875 44.109 L 181.875 18.530 181.172 17.497 C 179.425 14.931,182.863 15.166,145.837 15.081 L 112.969 15.006 111.719 15.707 C 110.897 16.169,110.228 16.886,109.766 17.802 L 109.062 19.195 109.063 44.441 L 109.063 69.688 91.094 69.688 L 73.125 69.688 73.118 37.109 C 73.110 0.648,73.250 2.898,70.896 1.219 L 69.844 0.469 36.875 0.395 C 6.708 0.328,3.817 0.366,2.859 0.840 M361.648 171.250 C 361.648 172.023,361.709 172.340,361.783 171.953 C 361.858 171.566,361.858 170.934,361.783 170.547 C 361.709 170.160,361.648 170.477,361.648 171.250 M357.144 171.568 L 356.406 172.198 357.266 171.830 C 357.738 171.628,358.125 171.344,358.125 171.200 C 358.125 170.810,357.958 170.873,357.144 171.568 M43.125 171.759 C 43.125 171.921,43.547 172.302,44.063 172.607 C 44.580 172.912,45.000 173.012,45.000 172.830 C 45.000 172.649,44.835 172.500,44.634 172.500 C 44.433 172.500,44.011 172.267,43.696 171.983 C 43.382 171.698,43.125 171.598,43.125 171.759 " stroke="none" fill="#fc862e" fill-rule="evenodd"/><path id="path4" d="M40.519 334.297 C 40.406 338.035,40.317 349.602,40.320 360.000 C 40.327 381.137,40.273 380.601,42.542 382.218 L 43.594 382.969 86.025 383.050 C 123.482 383.122,128.563 383.076,129.374 382.657 C 130.775 381.932,131.789 380.671,132.162 379.189 C 132.542 377.680,132.636 345.641,132.293 334.297 L 132.088 327.500 86.406 327.500 L 40.725 327.500 40.519 334.297 M172.522 328.457 C 173.111 328.983,173.594 329.525,173.594 329.661 C 173.594 329.965,174.624 331.148,183.281 340.783 C 185.000 342.696,187.250 345.224,188.281 346.401 C 189.313 347.577,190.302 348.692,190.481 348.879 C 190.660 349.066,191.920 350.484,193.281 352.031 C 196.329 355.495,196.773 355.907,198.037 356.446 C 200.772 357.613,202.678 356.646,206.742 352.031 C 208.407 350.141,210.278 348.028,210.900 347.335 C 211.522 346.643,212.664 345.373,213.438 344.512 C 214.211 343.651,215.941 341.731,217.282 340.245 C 218.623 338.758,220.029 337.148,220.407 336.665 C 221.032 335.867,223.081 333.572,224.453 332.135 C 224.754 331.820,224.941 331.563,224.868 331.563 C 224.751 331.563,225.925 330.264,227.905 328.203 L 228.581 327.500 200.015 327.500 L 171.450 327.500 172.522 328.457 M267.707 334.297 C 267.364 345.641,267.458 377.680,267.838 379.189 C 268.211 380.671,269.225 381.932,270.626 382.657 C 271.437 383.076,276.518 383.122,313.975 383.050 L 356.406 382.969 357.458 382.218 C 359.727 380.601,359.673 381.137,359.680 360.000 C 359.683 349.602,359.594 338.035,359.481 334.297 L 359.275 327.500 313.594 327.500 L 267.912 327.500 267.707 334.297 " stroke="none" fill="#fcbc4c" fill-rule="evenodd"/></g></svg>
frontend/src/components/activeResponse/ActiveResponseWizardButton.vue
+1 -1
@@ -13,7 +13,7 @@
13 :style="{ maxWidth: 'min(600px, 90vw)', minHeight: 'min(300px, 90vh)', overflow: 'hidden' }"
14 title="Active Response Wizard"
15 :bordered="false"
16 - content-class="flex flex-col !p-0"
16 + content-class="flex flex-col p-0!"
17 segmented
18 >
19 <ActiveResponseWizard v-model:loading="loading" @mounted="activeResponseWizardCTX = $event" />
frontend/src/components/agents/AgentToolbar.vue
+1 -1
@@ -1,5 +1,5 @@
1 <template>
2 - <n-card class="agent-toolbar" content-class="!p-0">
2 + <n-card class="agent-toolbar" content-class="p-0!">
3 <div class="wrapper flex flex-col gap-6 px-4 py-3">
4 <div class="flex flex-col gap-2">
5 <div class="agent-search flex gap-3">
frontend/src/components/agents/agentFlow/AgentFlowItem.vue
+1 -1
@@ -74,7 +74,7 @@
74 <n-modal
75 v-model:show="showDetails"
76 preset="card"
77 - content-class="!p-0"
77 + content-class="p-0!"
78 :style="{ maxWidth: 'min(800px, 90vw)', minHeight: 'min(550px, 90vh)', overflow: 'hidden' }"
79 :title="`Agent Flow: ${flow.session_id}`"
80 :bordered="false"
frontend/src/components/agents/agentFlow/AgentFlowQueryStat.vue
+1 -1
@@ -45,7 +45,7 @@
45 <n-modal
46 v-model:show="showDetails"
47 preset="card"
48 - content-class="!p-0"
48 + content-class="p-0!"
49 :style="{ maxWidth: 'min(800px, 90vw)', minHeight: 'min(550px, 90vh)', overflow: 'hidden' }"
50 :title="`Agent Query Stat ${stat.Artifact ? `: ${stat.Artifact}` : ''}`"
51 :bordered="false"
frontend/src/components/agents/sca/ScaItem.vue
+2 -2
@@ -1,6 +1,6 @@
1 <template>
2 <n-tabs type="line" animated :tabs-padding="24">
3 - <n-tab-pane name="Details" tab="Details" display-directive="show" class="flex flex-col gap-4 !py-8">
3 + <n-tab-pane name="Details" tab="Details" display-directive="show" class="flex flex-col gap-4 py-8!">
4 <div class="px-7">
5 <n-card embedded class="overflow-hidden">
6 <div class="flex flex-wrap justify-between gap-8">
@@ -14,7 +14,7 @@
14 </div>
15 <div class="px-7">
16 <n-card embedded class="overflow-hidden">
17 - <div class="xs:!flex-row flex flex-col justify-between gap-8">
17 + <div class="xs:flex-row! flex flex-col justify-between gap-8">
18 <n-statistic
19 class="grow"
20 label="Start scan"
frontend/src/components/agents/sca/ScaResultItem.vue
+1 -1
@@ -60,7 +60,7 @@
60 <n-modal
61 v-model:show="showDetails"
62 preset="card"
63 - content-class="!p-0"
63 + content-class="p-0!"
64 :style="{ maxWidth: 'min(900px, 90vw)', minHeight: 'min(600px, 90vh)', overflow: 'hidden' }"
65 :title="data?.title"
66 :bordered="false"
frontend/src/components/agents/sca/ScaResultItemDetails.vue
+2 -2
@@ -1,6 +1,6 @@
1 <template>
2 <n-tabs type="line" animated :tabs-padding="24">
3 - <n-tab-pane name="Overview" tab="Overview" display-directive="show:lazy" class="flex flex-col gap-4 !py-8">
3 + <n-tab-pane name="Overview" tab="Overview" display-directive="show:lazy" class="flex flex-col gap-4 py-8!">
4 <div class="px-7">
5 <n-card embedded class="overflow-hidden">
6 <div class="flex flex-wrap justify-between gap-8">
@@ -28,7 +28,7 @@
28 </div>
29
30 <div class="px-7">
31 - <n-card content-class="!p-0" embedded class="overflow-hidden">
31 + <n-card content-class="p-0!" embedded class="overflow-hidden">
32 <div
33 v-shiki="{ lang: 'shell', decode: true }"
34 class="scrollbar-styled code-bg-transparent overflow-hidden"
frontend/src/components/agents/sca/ScaResults.vue
+3 -3
@@ -5,7 +5,7 @@
5 <n-popover overlap placement="bottom-start">
6 <template #trigger>
7 <div class="bg-default rounded-lg">
8 - <n-button size="small" class="!cursor-help">
8 + <n-button size="small" class="cursor-help!">
9 <template #icon>
10 <Icon :name="InfoIcon" />
11 </template>
@@ -41,7 +41,7 @@
41 :item-count="itemsFiltered.length"
42 :simple="simpleMode"
43 />
44 - <n-popover overlap placement="right" class="!px-0">
44 + <n-popover overlap placement="right" class="px-0!">
45 <template #trigger>
46 <div class="bg-default rounded-lg">
47 <n-button size="small">
@@ -60,7 +60,7 @@
60 :options="resultOptions"
61 clearable
62 placeholder="All"
63 - class="!w-40"
63 + class="w-40!"
64 />
65 </div>
66 </div>
frontend/src/components/agents/vulnerabilities/VulnerabilitiesGrid.vue
+1 -1
@@ -2,7 +2,7 @@
2 <div class="vulnerabilities-section">
3 <div class="toolbar mb-8 flex items-center gap-3">
4 <n-form-item label="Severity" label-placement="left" size="small" :show-feedback="false">
5 - <n-select v-model:value="severity" :options="severityOptions" class="!w-28" />
5 + <n-select v-model:value="severity" :options="severityOptions" class="w-28!" />
6 </n-form-item>
7
8 <n-button
frontend/src/components/agents/vulnerabilities/VulnerabilityCard.vue
+1 -1
@@ -59,7 +59,7 @@
59 preset="card"
60 class="vulnerability-dialog"
61 :title="extract"
62 - content-class="!p-0"
62 + content-class="p-0!"
63 style="width: 90vw; max-width: 1000px"
64 >
65 <n-tabs type="line" animated :tabs-padding="24">
frontend/src/components/aiChatbot/ChatBubble.vue
+3 -3
@@ -43,12 +43,12 @@
43
44 <div v-if="thought && isThoughtVisible">
45 <CollapseKeepAlive :show="!isThoughtCollapsed">
46 - <div class="text-secondary bg-secondary mb-2 rounded-md p-2 [&_*]:text-[10px]">
46 + <div class="text-secondary bg-secondary mb-2 rounded-md p-2 **:text-[10px]">
47 <Markdown :source="thought" class="animate-fade overflow-hidden" />
48 </div>
49 </CollapseKeepAlive>
50 </div>
51 - <div v-if="body && isBodyVisible" class="[&_*]:text-default [&_*]:text-sm [&_*:last-child]:mb-0!">
51 + <div v-if="body && isBodyVisible" class="**:text-default **:text-sm [&_*:last-child]:mb-0!">
52 <Markdown :source="body" class="animate-fade overflow-hidden" />
53 </div>
54 </template>
@@ -83,7 +83,7 @@
83 </n-tooltip>
84 </div>
85 </div>
86 - <div class="bg-secondary [&_*]:text-default rounded-lg px-2 py-1 text-sm [&_*:last-child]:mb-0!">
86 + <div class="bg-secondary **:text-default rounded-lg px-2 py-1 text-sm [&_*:last-child]:mb-0!">
87 <Markdown :source="entity.body" class="animate-fade overflow-hidden" />
88 </div>
89 </div>
frontend/src/components/aiChatbot/ChatQuery.vue
+2 -2
@@ -34,7 +34,7 @@
34 <template #trigger>
35 <Icon name="carbon:help" :size="14" class="cursor-help" />
36 </template>
37 - <div class="divide-border flex flex-col divide-y-1">
37 + <div class="divide-border flex flex-col divide-y">
38 <div class="flex flex-col gap-1 px-3 py-2 text-sm">
39 <div>{{ selectedServerDetails.name }}</div>
40 <div class="text-secondary text-xs">
@@ -60,7 +60,7 @@
60 <template #trigger>
61 <Icon name="carbon:settings-adjust" :size="14" />
62 </template>
63 - <div class="divide-border flex flex-col divide-y-1">
63 + <div class="divide-border flex flex-col divide-y">
64 <div class="px-3 py-2">
65 <div class="flex items-center gap-2 text-sm">
66 <div>verbose response</div>
frontend/src/components/alerts/Alert.vue
+7 -7
@@ -17,7 +17,7 @@
17 <div class="flex flex-wrap items-center gap-3">
18 <Badge type="splitted" color="primary">
19 <template #iconLeft>
20 - <Icon :name="TargetIcon" :size="13" class="!opacity-80" />
20 + <Icon :name="TargetIcon" :size="13" class="opacity-80!" />
21 </template>
22 <template #label>Fired times</template>
23 <template #value>
@@ -36,13 +36,13 @@
36 <template #trigger>
37 <Badge type="splitted" color="primary" hint-cursor>
38 <template #iconLeft>
39 - <Icon :name="AgentIcon" :size="13" class="!opacity-80" />
39 + <Icon :name="AgentIcon" :size="13" class="opacity-80!" />
40 </template>
41 <template #label>Agent</template>
42 <template #value>
43 <div class="flex flex-wrap items-center gap-2">
44 {{ alert._source.agent_name }} / {{ alert._source.agent_labels_customer }}
45 - <Icon :name="InfoIcon" :size="13" class="!opacity-80" />
45 + <Icon :name="InfoIcon" :size="13" class="opacity-80!" />
46 </div>
47 </template>
48 </Badge>
@@ -82,19 +82,19 @@
82 <template #label>syslog</template>
83 <template #value>{{ alert._source.syslog_type }} / {{ alert._source.syslog_level }}</template>
84 </Badge>
85 - <Badge type="splitted" color="primary" class="!hidden @2xl:!flex">
85 + <Badge type="splitted" color="primary" class="hidden! @2xl:flex!">
86 <template #label>manager</template>
87 <template #value>
88 {{ alert._source.manager_name }}
89 </template>
90 </Badge>
91 - <Badge type="splitted" color="primary" class="!hidden @2xl:!flex">
91 + <Badge type="splitted" color="primary" class="hidden! @2xl:flex!">
92 <template #label>decoder</template>
93 <template #value>
94 {{ alert._source.decoder_name }}
95 </template>
96 </Badge>
97 - <Badge type="splitted" color="primary" class="!hidden @2xl:!flex">
97 + <Badge type="splitted" color="primary" class="hidden! @2xl:flex!">
98 <template #label>source</template>
99 <template #value>
100 {{ alert._source.source }}
@@ -119,7 +119,7 @@
119 <n-modal
120 v-model:show="showDetails"
121 preset="card"
122 - content-class="!p-0"
122 + content-class="p-0!"
123 :style="{ maxWidth: 'min(800px, 90vw)', minHeight: 'min(600px, 90vh)', overflow: 'hidden' }"
124 :title="`Alert: ${alert._id || alert._source.id}`"
125 :bordered="false"
frontend/src/components/alerts/AlertsFilters.vue
+1 -1
@@ -15,7 +15,7 @@
15 class="basis-1/2"
16 >
17 <template #action>
18 - <n-button size="tiny" quaternary class="!w-full" @click="clearFieldsHistory()">
18 + <n-button size="tiny" quaternary class="w-full!" @click="clearFieldsHistory()">
19 <template #icon>
20 <Icon :name="ClearIcon" />
21 </template>
frontend/src/components/alerts/AlertsGraylogList.vue
+1 -1
@@ -5,7 +5,7 @@
5 <n-popover overlap placement="bottom-start">
6 <template #trigger>
7 <div class="bg-default rounded-lg">
8 - <n-button size="small" class="!cursor-help">
8 + <n-button size="small" class="cursor-help!">
9 <template #icon>
10 <Icon :name="InfoIcon" />
11 </template>
frontend/src/components/alerts/AlertsList.vue
+1 -1
@@ -5,7 +5,7 @@
5 <n-popover overlap placement="bottom-start">
6 <template #trigger>
7 <div class="bg-default rounded-lg">
8 - <n-button size="small" class="!cursor-help">
8 + <n-button size="small" class="cursor-help!">
9 <template #icon>
10 <Icon :name="InfoIcon" />
11 </template>
frontend/src/components/alerts/AlertsSummary.vue
+1 -1
@@ -36,7 +36,7 @@
36 </n-scrollbar>
37
38 <div v-if="alertsSummary.alerts.length > 3" class="load-more" @click="showAllAlerts = true">
39 - <n-button size="small" text class="!w-full">
39 + <n-button size="small" text class="w-full!">
40 <template #icon>
41 <Icon :name="ExpandIcon" />
42 </template>
frontend/src/components/artifacts/ArtifactRecommendation.vue
+3 -3
@@ -22,7 +22,7 @@
22 v-model:value="selectedOs"
23 size="small"
24 :options="osOptions"
25 - class="!w-32"
25 + class="w-32!"
26 placeholder="Select OS"
27 :disabled="loading"
28 />
@@ -46,12 +46,12 @@
46 v-for="recommendation of recommendations"
47 :key="recommendation.name"
48 embedded
49 - content-class="flex flex-col gap-2 !p-0"
49 + content-class="flex flex-col gap-2 p-0!"
50 class="item-appear item-appear-bottom item-appear-005 overflow-hidden"
51 size="small"
52 >
53 <strong class="recommendation-name px-4 pt-3 pb-1 font-mono">{{ recommendation.name }}</strong>
54 - <n-divider class="!m-0" />
54 + <n-divider class="m-0!" />
55 <div class="recommendation-description px-4 pt-1">
56 {{ recommendation.description }}
57 </div>
frontend/src/components/artifacts/ArtifactsCollect.vue
+1 -1
@@ -5,7 +5,7 @@
5 <n-popover overlap placement="bottom-start">
6 <template #trigger>
7 <div class="bg-default rounded-lg">
8 - <n-button size="small" class="!cursor-help">
8 + <n-button size="small" class="cursor-help!">
9 <template #icon>
10 <Icon :name="InfoIcon" />
11 </template>
frontend/src/components/artifacts/ArtifactsList.vue
+2 -2
@@ -5,7 +5,7 @@
5 <n-popover overlap placement="bottom-start">
6 <template #trigger>
7 <div class="bg-default rounded-lg">
8 - <n-button size="small" class="!cursor-help">
8 + <n-button size="small" class="cursor-help!">
9 <template #icon>
10 <Icon :name="InfoIcon" />
11 </template>
@@ -29,7 +29,7 @@
29 :item-count="totalArtifacts"
30 :simple="simpleMode"
31 />
32 - <n-popover :show="showFilters" trigger="manual" overlap placement="right" class="!px-0">
32 + <n-popover :show="showFilters" trigger="manual" overlap placement="right" class="px-0!">
33 <template #trigger>
34 <div class="bg-default rounded-lg">
35 <n-badge
frontend/src/components/artifacts/ArtifactsQuarantine.vue
+1 -1
@@ -42,7 +42,7 @@
42 :options="actionsOptions"
43 :disabled="loading"
44 size="small"
45 - class="!w-32"
45 + class="w-32!"
46 status="success"
47 />
48 <n-button
frontend/src/components/artifacts/CollectItem.vue
+1 -1
@@ -10,7 +10,7 @@
10 {{ prop.value }}
11 </template>
12 </CardKV>
13 - <CardKV class="hover:!border-primary cursor-pointer" @click="showDetails = true">
13 + <CardKV class="hover:border-primary! cursor-pointer" @click="showDetails = true">
14 <template #value>
15 <div class="flex h-full w-full items-center justify-center text-center">view more...</div>
16 </template>
frontend/src/components/auth/AuthForm.vue
+1 -4
@@ -1,7 +1,7 @@
1 <template>
2 <div class="w-full max-w-96 min-w-64">
3 <div>
4 - <Logo mini :dark="isDark" class="mb-4" max-height="40px" />
4 + <Logo type="small" class="mb-4" max-height="40px" />
5 <div class="font-display mb-4 text-4xl font-bold" data-test="login-title">
6 {{ title }}
7 </div>
@@ -20,7 +20,6 @@
20 import type { FormType } from "./types.d"
21 import { computed, onBeforeMount, ref } from "vue"
22 import Logo from "@/app-layouts/common/Logo.vue"
23 -import { useThemeStore } from "@/stores/theme"
23 import SignIn from "./SignIn.vue"
24
25 const props = defineProps<{
@@ -28,8 +27,6 @@ const props = defineProps<{
27 }>()
28
29 const type = ref<FormType>("signin")
31 -const themeStore = useThemeStore()
32 -const isDark = computed<boolean>(() => themeStore.isThemeDark)
30 const title = computed<string>(() =>
31 type.value === "signin"
32 ? "SOCFortress CoPilot"
frontend/src/components/cloudSecurityAssessment/AvailableReportsList.vue
+1 -1
@@ -5,7 +5,7 @@
5 <n-popover overlap placement="bottom-start">
6 <template #trigger>
7 <div class="bg-default rounded-lg">
8 - <n-button size="small" class="!cursor-help">
8 + <n-button size="small" class="cursor-help!">
9 <template #icon>
10 <Icon :name="InfoIcon" />
11 </template>
frontend/src/components/common/CodeSource.vue
+1 -1
@@ -1,6 +1,6 @@
1 <template>
2 <div class="flex flex-col gap-2">
3 - <n-card v-if="!showSource" content-class="!p-0" embedded class="overflow-hidden">
3 + <n-card v-if="!showSource" content-class="p-0!" embedded class="overflow-hidden">
4 <div v-shiki="{ lang, decode }" class="scrollbar-styled code-bg-transparent overflow-hidden">
5 <pre v-html="source"></pre>
6 </div>
frontend/src/components/common/Percentage.vue
+1 -1
@@ -17,7 +17,7 @@
17 :percentage="value"
18 :show-indicator="false"
19 :stroke-width="18"
20 - class="!w-12"
20 + class="w-12!"
21 />
22 </span>
23 <span v-if="icon && icon === 'arrow'" class="percentage-icon flex items-center">
frontend/src/components/common/SegmentedPage.vue
+1 -1
@@ -41,7 +41,7 @@
41 </template>
42
43 <template #[tplNameMain]>
44 - <div class="main flex flex-grow flex-col">
44 + <div class="main flex grow flex-col">
45 <div v-if="$slots['main-toolbar']" class="main-toolbar flex items-center">
46 <div v-if="sidebarAvailable && !hideMenuBtn" class="menu-btn flex justify-center opacity-50">
47 <n-button text @click="sidebarOpen = true">
frontend/src/components/common/VersionUpdateBanner.vue
+44 -54
@@ -1,11 +1,5 @@
1 <template>
2 - <n-alert
3 - v-if="showBanner && versionInfo?.is_outdated"
4 - type="info"
5 - closable
6 - class="mb-4"
7 - @close="dismissBanner"
8 - >
2 + <n-alert v-if="showBanner && versionInfo?.is_outdated" type="info" closable class="mb-4" @close="dismissBanner">
3 <template #icon>
4 <Icon :name="UpdateIcon" />
5 </template>
@@ -13,21 +7,17 @@
7 <div class="flex items-center justify-between gap-4">
8 <div>
9 <strong>New version available!</strong>
16 - <div class="text-sm mt-1">
17 - You're running v{{ versionInfo.current_version }},
18 - v{{ versionInfo.latest_version }} is now available.
10 + <div class="mt-1 text-sm">
11 + You're running v{{ versionInfo.current_version }}, v{{ versionInfo.latest_version }} is now
12 + available.
13 <span v-if="versionInfo.published_at" class="opacity-75">
14 (Released {{ formatDate(versionInfo.published_at) }})
15 </span>
16 </div>
17 </div>
18 <div class="flex gap-2">
25 - <n-button
26 - v-if="showReleaseNotes"
27 - size="small"
28 - @click="toggleNotes"
29 - >
30 - {{ expandedNotes ? 'Hide' : 'Show' }} Release Notes
19 + <n-button v-if="showReleaseNotes" size="small" @click="toggleNotes">
20 + {{ expandedNotes ? "Hide" : "Show" }} Release Notes
21 </n-button>
22 <n-button
23 v-if="versionInfo.release_url"
@@ -43,7 +33,7 @@
33 </div>
34 <n-collapse-transition :show="expandedNotes">
35 <div v-if="versionInfo.release_notes" class="release-notes text-sm">
46 - <n-divider class="!my-2" />
36 + <n-divider class="my-2!" />
37 <pre class="whitespace-pre-wrap">{{ versionInfo.release_notes }}</pre>
38 </div>
39 </n-collapse-transition>
@@ -68,67 +58,67 @@ const DISMISS_KEY = "version_banner_dismissed"
58 const DISMISS_DURATION = 24 * 60 * 60 * 1000 // 24 hours
59
60 const showReleaseNotes = computed(() => {
71 - return versionInfo.value?.release_notes && versionInfo.value.release_notes.trim().length > 0
61 + return versionInfo.value?.release_notes && versionInfo.value.release_notes.trim().length > 0
62 })
63
64 function formatDate(dateString: string): string {
75 - return dayjs(dateString).format("MMM D, YYYY")
65 + return dayjs(dateString).format("MMM D, YYYY")
66 }
67
68 function toggleNotes() {
79 - expandedNotes.value = !expandedNotes.value
69 + expandedNotes.value = !expandedNotes.value
70 }
71
72 function checkIfDismissed() {
83 - const dismissed = localStorage.getItem(DISMISS_KEY)
84 - if (dismissed) {
85 - const dismissedTime = Number.parseInt(dismissed)
86 - const now = Date.now()
87 - // Show again after 24 hours
88 - return now - dismissedTime < DISMISS_DURATION
89 - }
90 - return false
73 + const dismissed = localStorage.getItem(DISMISS_KEY)
74 + if (dismissed) {
75 + const dismissedTime = Number.parseInt(dismissed)
76 + const now = Date.now()
77 + // Show again after 24 hours
78 + return now - dismissedTime < DISMISS_DURATION
79 + }
80 + return false
81 }
82
83 function dismissBanner() {
94 - localStorage.setItem(DISMISS_KEY, Date.now().toString())
95 - showBanner.value = false
84 + localStorage.setItem(DISMISS_KEY, Date.now().toString())
85 + showBanner.value = false
86 }
87
88 async function checkVersion() {
99 - // Don't check if recently dismissed
100 - if (checkIfDismissed()) {
101 - return
102 - }
89 + // Don't check if recently dismissed
90 + if (checkIfDismissed()) {
91 + return
92 + }
93
104 - try {
105 - const response = await Api.version.checkVersion()
106 - if (response.data.success) {
107 - versionInfo.value = response.data
108 - showBanner.value = response.data.is_outdated
109 - }
110 - } catch (err) {
111 - // Silently fail - version check is not critical
112 - console.warn("Failed to check version:", err)
113 - }
94 + try {
95 + const response = await Api.version.checkVersion()
96 + if (response.data.success) {
97 + versionInfo.value = response.data
98 + showBanner.value = response.data.is_outdated
99 + }
100 + } catch (err) {
101 + // Silently fail - version check is not critical
102 + console.warn("Failed to check version:", err)
103 + }
104 }
105
106 onMounted(() => {
117 - checkVersion()
107 + checkVersion()
108 })
109 </script>
110
111 <style lang="scss" scoped>
112 .release-notes {
123 - max-height: 400px;
124 - overflow-y: auto;
125 - padding: 0.5rem;
126 - border-radius: 4px;
127 - background-color: rgba(0, 0, 0, 0.05);
113 + max-height: 400px;
114 + overflow-y: auto;
115 + padding: 0.5rem;
116 + border-radius: 4px;
117 + background-color: rgba(0, 0, 0, 0.05);
118
129 - pre {
130 - font-family: inherit;
131 - margin: 0;
132 - }
119 + pre {
120 + font-family: inherit;
121 + margin: 0;
122 + }
123 }
124 </style>
frontend/src/components/common/cards/CardEntity.vue
+1 -1
@@ -1,7 +1,7 @@
1 <template>
2 <n-card
3 class="card-entity"
4 - content-class="!p-0"
4 + content-class="p-0!"
5 :class="[
6 `card-size-${size}`,
7 `card-status-${status}`,
frontend/src/components/common/cards/CardStatsBars.vue
+1 -1
@@ -1,5 +1,5 @@
1 <template>
2 - <n-card content-class="!p-0" :class="{ hovered }">
2 + <n-card content-class="p-0!" :class="{ hovered }">
3 <div class="flex flex-col overflow-hidden">
4 <div class="card-header flex items-center justify-between gap-4">
5 <div class="title flex grow items-center gap-2">
frontend/src/components/common/cards/CardStatsMulti.vue
+1 -1
@@ -1,5 +1,5 @@
1 <template>
2 - <n-card content-class="!p-0" :class="{ hovered }">
2 + <n-card content-class="p-0!" :class="{ hovered }">
3 <div class="flex h-full flex-col overflow-hidden">
4 <div class="card-header flex items-center justify-between gap-4">
5 <div class="title flex grow items-center gap-2">
frontend/src/components/customers/CustomerItem.vue
+1 -1
@@ -47,7 +47,7 @@
47 v-if="addressLabel !== '-'"
48 :name="InfoIcon"
49 :size="13"
50 - class="!opacity-80"
50 + class="opacity-80!"
51 />
52 </div>
53 </template>
frontend/src/components/customers/CustomerWazuhWorker.vue
+1 -1
@@ -105,7 +105,7 @@
105 :bordered="false"
106 title="Resource Control"
107 >
108 - <div class="flex flex-col gap-4 @2xl:!flex-row">
108 + <div class="flex flex-col gap-4 @2xl:flex-row!">
109 <SimpleJsonViewer
110 v-if="portainerStack"
111 class="vuesjv-override grow"
frontend/src/components/customers/healthcheck/CustomerHealthcheckItem.vue
+2 -2
@@ -40,7 +40,7 @@
40 <template #trigger>
41 <Badge type="splitted" hint-cursor>
42 <template #iconLeft>
43 - <Icon :name="AgentIcon" :size="13" class="!opacity-80" />
43 + <Icon :name="AgentIcon" :size="13" class="opacity-80!" />
44 </template>
45 <template #label>Agent</template>
46 <template #value>
@@ -72,7 +72,7 @@
72 <n-modal
73 v-model:show="showDetails"
74 preset="card"
75 - content-class="!p-0"
75 + content-class="p-0!"
76 :style="{ maxWidth: 'min(800px, 90vw)', overflow: 'hidden' }"
77 :title="`Health check ${source}`"
78 :bordered="false"
frontend/src/components/customers/healthcheck/CustomerHealthcheckList.vue
+4 -4
@@ -7,15 +7,15 @@
7 :options="unitOptions"
8 placeholder="Time unit"
9 clearable
10 - class="!w-28"
10 + class="w-28!"
11 />
12 - <n-input-number v-model:value="filters.time" :min="1" clearable placeholder="Time" class="!w-32" />
12 + <n-input-number v-model:value="filters.time" :min="1" clearable placeholder="Time" class="w-32!" />
13 </n-input-group>
14 </div>
15 </div>
16 <n-spin :show="loading">
17 <div class="flex min-h-52 flex-col gap-6">
18 - <div v-if="healthyList.length" class="flex flex-col gap-2 [&:not(:last-child)]:mb-5">
18 + <div v-if="healthyList.length" class="flex flex-col gap-2 not-last:mb-5">
19 <div class="text-primary mb-2 flex items-center gap-2">
20 <Icon :name="CheckIcon" :size="16" />
21 Healthy
@@ -31,7 +31,7 @@
31 class="item-appear item-appear-bottom item-appear-005"
32 />
33 </div>
34 - <div v-if="unhealthyList.length" class="flex flex-col gap-2 [&:not(:last-child)]:mb-5">
34 + <div v-if="unhealthyList.length" class="flex flex-col gap-2 not-last:mb-5">
35 <div class="text-warning mb-2 flex items-center gap-2">
36 <Icon :name="AlertIcon" :size="16" />
37 Unhealthy
frontend/src/components/graylog/Alerts/List.vue
+3 -3
@@ -5,7 +5,7 @@
5 <n-popover overlap placement="bottom-start">
6 <template #trigger>
7 <div class="bg-default rounded-lg">
8 - <n-button size="small" class="!cursor-help">
8 + <n-button size="small" class="cursor-help!">
9 <template #icon>
10 <Icon :name="InfoIcon" />
11 </template>
@@ -33,7 +33,7 @@
33 :page-sizes="pageSizes"
34 :simple="simpleMode"
35 />
36 - <n-select v-if="!compactMode" v-model:value="timerange" size="small" :options="timeOptions" class="!w-32" />
36 + <n-select v-if="!compactMode" v-model:value="timerange" size="small" :options="timeOptions" class="w-32!" />
37 <n-popover v-if="compactMode" overlap placement="right">
38 <template #trigger>
39 <div class="bg-default rounded-lg">
@@ -46,7 +46,7 @@
46 </template>
47 <div class="mb-2">
48 <div class="text-secondary my-1 text-sm">Time range:</div>
49 - <n-select v-model:value="timerange" size="small" :options="timeOptions" class="mb-1 !w-32" />
49 + <n-select v-model:value="timerange" size="small" :options="timeOptions" class="mb-1 w-32!" />
50 </div>
51 </n-popover>
52 </div>
frontend/src/components/graylog/Events/Item.vue
+1 -1
@@ -33,7 +33,7 @@
33 <n-modal
34 v-model:show="showDetails"
35 preset="card"
36 - content-class="!p-0"
36 + content-class="p-0!"
37 :style="{ maxWidth: 'min(600px, 90vw)', overflow: 'hidden' }"
38 :title="event.title"
39 :bordered="false"
frontend/src/components/graylog/Events/List.vue
+1 -1
@@ -5,7 +5,7 @@
5 <n-popover overlap placement="bottom-start">
6 <template #trigger>
7 <div class="bg-default rounded-lg">
8 - <n-button size="small" class="!cursor-help">
8 + <n-button size="small" class="cursor-help!">
9 <template #icon>
10 <Icon :name="InfoIcon" />
11 </template>
frontend/src/components/graylog/Inputs/Item.vue
+1 -1
@@ -64,7 +64,7 @@
64 <n-modal
65 v-model:show="showDetails"
66 preset="card"
67 - content-class="!p-0"
67 + content-class="p-0!"
68 :style="{ maxWidth: 'min(600px, 90vw)', overflow: 'hidden' }"
69 :title="input.title"
70 :bordered="false"
frontend/src/components/graylog/Inputs/List.vue
+1 -1
@@ -5,7 +5,7 @@
5 <n-popover overlap placement="bottom-start">
6 <template #trigger>
7 <div class="bg-default rounded-lg">
8 - <n-button size="small" class="!cursor-help">
8 + <n-button size="small" class="cursor-help!">
9 <template #icon>
10 <Icon :name="InfoIcon" />
11 </template>
frontend/src/components/graylog/Messages/List.vue
+1 -1
@@ -5,7 +5,7 @@
5 <n-popover overlap placement="bottom-start">
6 <template #trigger>
7 <div class="bg-default rounded-lg">
8 - <n-button size="small" class="!cursor-help">
8 + <n-button size="small" class="cursor-help!">
9 <template #icon>
10 <Icon :name="InfoIcon" />
11 </template>
frontend/src/components/graylog/MonitoringAlerts/List.vue
+1 -1
@@ -5,7 +5,7 @@
5 <n-popover overlap placement="bottom-start">
6 <template #trigger>
7 <div class="bg-default rounded-lg">
8 - <n-button size="small" class="!cursor-help">
8 + <n-button size="small" class="cursor-help!">
9 <template #icon>
10 <Icon :name="InfoIcon" />
11 </template>
frontend/src/components/graylog/Pipelines/PipeList.vue
+2 -2
@@ -1,6 +1,6 @@
1 <template>
2 <div class="pipe-list">
3 - <n-card content-class="!px-0">
3 + <n-card content-class="px-0!">
4 <n-spin :show="loading" content-class="min-h-7">
5 <n-collapse v-if="pipelines.length" v-model:expanded-names="selectedPipeline" accordion>
6 <n-collapse-item
@@ -34,7 +34,7 @@
34 <n-modal
35 v-model:show="showDetails"
36 preset="card"
37 - content-class="!p-0"
37 + content-class="p-0!"
38 :style="{ maxWidth: 'min(600px, 90vw)', overflow: 'hidden' }"
39 :title="highlightPipe?.title"
40 :bordered="false"
frontend/src/components/graylog/Pipelines/Rule.vue
+1 -1
@@ -37,7 +37,7 @@
37 <n-modal
38 v-model:show="showDetails"
39 preset="card"
40 - content-class="!p-0"
40 + content-class="p-0!"
41 :style="{ maxWidth: 'min(600px, 90vw)', overflow: 'hidden' }"
42 :title="rule.title"
43 :bordered="false"
frontend/src/components/graylog/Streams/List.vue
+5 -5
@@ -5,7 +5,7 @@
5 <n-popover overlap placement="bottom-start">
6 <template #trigger>
7 <div class="bg-default rounded-lg">
8 - <n-button size="small" class="!cursor-help">
8 + <n-button size="small" class="cursor-help!">
9 <template #icon>
10 <Icon :name="InfoIcon" />
11 </template>
@@ -33,7 +33,7 @@
33 :item-count="total"
34 :simple="simpleMode"
35 />
36 - <n-popover overlap placement="right" class="!px-0">
36 + <n-popover overlap placement="right" class="px-0!">
37 <template #trigger>
38 <div class="bg-default rounded-lg">
39 <n-button size="small">
@@ -52,10 +52,10 @@
52 :options="enabledOptions"
53 clearable
54 placeholder="All"
55 - class="!w-36"
55 + class="w-36!"
56 />
57 </div>
58 - <n-divider class="!my-3" />
58 + <n-divider class="my-3!" />
59 <div class="px-3">
60 <div class="text-secondary mb-1 text-sm">Editable:</div>
61 <n-select
@@ -64,7 +64,7 @@
64 :options="editableOptions"
65 clearable
66 placeholder="All"
67 - class="!w-36"
67 + class="w-36!"
68 />
69 </div>
70 </div>
frontend/src/components/incidentManagement/alerts/AlertAsset.vue
+2 -2
@@ -46,7 +46,7 @@
46 <n-modal
47 v-model:show="showDetails"
48 preset="card"
49 - content-class="!p-0"
49 + content-class="p-0!"
50 :style="{ maxWidth: 'min(800px, 90vw)', minHeight: 'min(550px, 90vh)', overflow: 'hidden' }"
51 :bordered="false"
52 :title="assetNameTruncated"
@@ -83,7 +83,7 @@
83 />
84 </n-spin>
85
86 - <n-divider class="!my-0" />
86 + <n-divider class="my-0!" />
87
88 <n-tabs type="line" animated :tabs-padding="24">
89 <n-tab-pane name="Info" tab="Info" display-directive="show">
frontend/src/components/incidentManagement/alerts/AlertAssetInfo.vue
+1 -1
@@ -40,7 +40,7 @@
40 <n-modal
41 v-model:show="showAlertDetails"
42 preset="card"
43 - content-class="!p-0"
43 + content-class="p-0!"
44 :style="{ maxWidth: 'min(800px, 90vw)', minHeight: 'min(550px, 90vh)', overflow: 'hidden' }"
45 :bordered="false"
46 title="Alert Details"
frontend/src/components/incidentManagement/alerts/AlertDetailTimelineItem.vue
+1 -1
@@ -7,7 +7,7 @@
7 <n-modal
8 v-model:show="showDetails"
9 preset="card"
10 - content-class="!p-0"
10 + content-class="p-0!"
11 :style="{ maxWidth: 'min(700px, 90vw)', minHeight: 'min(550px, 90vh)', overflow: 'hidden' }"
12 :bordered="false"
13 title="Timeline Details"
frontend/src/components/incidentManagement/alerts/AlertItem.vue
+8 -8
@@ -146,7 +146,7 @@
146 </Badge>
147 </AlertAssignUser>
148
149 - <Badge v-if="alert.customer_code" type="splitted" class="!hidden sm:!flex">
149 + <Badge v-if="alert.customer_code" type="splitted" class="hidden! sm:flex!">
150 <template #label>Customer</template>
151 <template #value>
152 <div class="flex h-full items-center">
@@ -161,7 +161,7 @@
161 </template>
162 </Badge>
163
164 - <Badge v-if="alert.assets?.length" type="splitted" fluid class="!hidden sm:!flex">
164 + <Badge v-if="alert.assets?.length" type="splitted" fluid class="hidden! sm:flex!">
165 <template #label>Assets</template>
166 <template #value>
167 <div class="flex flex-wrap gap-1">
@@ -170,7 +170,7 @@
170 </template>
171 </Badge>
172
173 - <Badge type="splitted" class="!hidden sm:!flex">
173 + <Badge type="splitted" class="hidden! sm:flex!">
174 <template #label>Linked Cases</template>
175 <template #value>
176 <AlertLinkedCases v-if="alert.linked_cases?.length" :alert @updated="updateAlert($event)" />
@@ -182,7 +182,7 @@
182
183 <template v-if="alert && !compact" #footerMain>
184 <div class="flex flex-wrap items-center gap-3">
185 - <Badge v-if="alert.alert_creation_time" type="splitted" :class="{ 'flex sm:!hidden': !compact }">
185 + <Badge v-if="alert.alert_creation_time" type="splitted" :class="{ 'flex sm:hidden!': !compact }">
186 <template #iconLeft>
187 <Icon :name="TimeIcon" :size="16" />
188 </template>
@@ -193,7 +193,7 @@
193
194 <n-tooltip trigger="hover">
195 <template #trigger>
196 - <Badge type="splitted" class="xs:!flex !hidden">
196 + <Badge type="splitted" class="xs:flex! hidden!">
197 <template #iconLeft>
198 <Icon :name="AssetsIcon" :size="16" />
199 </template>
@@ -207,7 +207,7 @@
207
208 <n-tooltip trigger="hover">
209 <template #trigger>
210 - <Badge type="splitted" class="xs:!flex !hidden">
210 + <Badge type="splitted" class="xs:flex! hidden!">
211 <template #iconLeft>
212 <Icon :name="CommentsIcon" :size="16" />
213 </template>
@@ -221,7 +221,7 @@
221
222 <n-tooltip trigger="hover">
223 <template #trigger>
224 - <Badge type="splitted" class="xs:!flex !hidden">
224 + <Badge type="splitted" class="xs:flex! hidden!">
225 <template #iconLeft>
226 <Icon :name="IoCsIcon" :size="16" />
227 </template>
@@ -255,7 +255,7 @@
255 display-directive="show"
256 >
257 <n-card
258 - content-class="flex flex-col !p-0"
258 + content-class="flex flex-col p-0!"
259 :title="alertNameTruncated"
260 closable
261 :bordered="false"
frontend/src/components/incidentManagement/alerts/AlertMergeCaseButton.vue
+1 -1
@@ -12,7 +12,7 @@
12 preset="card"
13 :title="`Select the case you want to merge ${alerts.length > 1 ? 'them' : 'it'} with :`"
14 :style="{ maxWidth: 'min(850px, 90vw)', minHeight: 'min(540px, 90vh)', maxHeight: '80vh' }"
15 - content-class="flex flex-col overflow-hidden !px-2 !py-0"
15 + content-class="flex flex-col overflow-hidden px-2! py-0!"
16 segmented
17 >
18 <n-spin
frontend/src/components/incidentManagement/alerts/AlertOverview.vue
+1 -1
@@ -2,7 +2,7 @@
2 <n-spin :show="loading" class="flex grow flex-col" content-class="flex grow flex-col">
3 <div class="flex grow flex-col justify-between gap-4">
4 <div class="content-box flex flex-col gap-4 py-3">
5 - <div class="flex flex-col gap-4 px-7 sm:!flex-row">
5 + <div class="flex flex-col gap-4 px-7 sm:flex-row!">
6 <CardKV
7 :color="
8 alert.status === 'OPEN' ? 'danger' : alert.status === 'IN_PROGRESS' ? 'warning' : 'success'
frontend/src/components/incidentManagement/alerts/AlertsFilters.vue
+8 -8
@@ -8,7 +8,7 @@
8 size="small"
9 :options="statusOptions"
10 placeholder="Select..."
11 - class="!w-32"
11 + class="w-32!"
12 />
13 <n-button size="small" secondary tabindex="-1" @click="delFilter(filter.type)">
14 <template #icon>
@@ -25,7 +25,7 @@
25 placeholder="Select..."
26 size="small"
27 filterable
28 - class="!w-40"
28 + class="w-40!"
29 :loading="loadingAvailableUsers || !usersOptions.length"
30 />
31 <n-button size="small" secondary tabindex="-1" @click="delFilter(filter.type)">
@@ -43,7 +43,7 @@
43 placeholder="Select..."
44 size="small"
45 filterable
46 - class="!w-56"
46 + class="w-56!"
47 :loading="loadingCustomers || !customersOptions.length"
48 />
49 <n-button size="small" secondary tabindex="-1" @click="delFilter(filter.type)">
@@ -61,7 +61,7 @@
61 placeholder="Select..."
62 size="small"
63 filterable
64 - class="!w-44"
64 + class="w-44!"
65 :loading="loadingConfiguredSources || !sourcesOptions.length"
66 />
67 <n-button size="small" secondary tabindex="-1" @click="delFilter(filter.type)">
@@ -83,7 +83,7 @@
83 placeholder="Input, press enter to create"
84 :show-arrow="false"
85 :show="false"
86 - class="!min-w-64"
86 + class="min-w-64!"
87 />
88 <n-button size="small" secondary tabindex="-1" @click="delFilter(filter.type)">
89 <template #icon>
@@ -96,7 +96,7 @@
96 v-if="filter.type === 'title' && (typeof filter.value === 'string' || filter.value === null)"
97 >
98 <n-input-group-label size="small">{{ getFilterLabel(filter.type) }}</n-input-group-label>
99 - <n-input v-model:value="filter.value" autosize placeholder="Input..." size="small" class="!min-w-40" />
99 + <n-input v-model:value="filter.value" autosize placeholder="Input..." size="small" class="min-w-40!" />
100 <n-button size="small" secondary tabindex="-1" @click="delFilter(filter.type)">
101 <template #icon>
102 <Icon :name="DelIcon" />
@@ -108,7 +108,7 @@
108 v-if="filter.type === 'assetName' && (typeof filter.value === 'string' || filter.value === null)"
109 >
110 <n-input-group-label size="small">{{ getFilterLabel(filter.type) }}</n-input-group-label>
111 - <n-input v-model:value="filter.value" autosize placeholder="Input..." size="small" class="!min-w-40" />
111 + <n-input v-model:value="filter.value" autosize placeholder="Input..." size="small" class="min-w-40!" />
112 <n-button size="small" secondary tabindex="-1" @click="delFilter(filter.type)">
113 <template #icon>
114 <Icon :name="DelIcon" />
@@ -120,7 +120,7 @@
120 v-if="filter.type === 'iocValue' && (typeof filter.value === 'string' || filter.value === null)"
121 >
122 <n-input-group-label size="small">{{ getFilterLabel(filter.type) }}</n-input-group-label>
123 - <n-input v-model:value="filter.value" autosize placeholder="Input..." size="small" class="!min-w-40" />
123 + <n-input v-model:value="filter.value" autosize placeholder="Input..." size="small" class="min-w-40!" />
124 <n-button size="small" secondary tabindex="-1" @click="delFilter(filter.type)">
125 <template #icon>
126 <Icon :name="DelIcon" />
frontend/src/components/incidentManagement/alerts/AlertsList.vue
+4 -4
@@ -1,11 +1,11 @@
1 <template>
2 <div class="alerts-list">
3 <div ref="header" class="flex items-center justify-end gap-2">
4 - <div class="info flex grow gap-2 lg:!hidden">
4 + <div class="info flex grow gap-2 lg:hidden!">
5 <n-popover overlap placement="left">
6 <template #trigger>
7 <div class="bg-default rounded-lg">
8 - <n-button size="small" class="!cursor-help">
8 + <n-button size="small" class="cursor-help!">
9 <template #icon>
10 <Icon :name="InfoIcon" />
11 </template>
@@ -121,7 +121,7 @@
121 style="position: sticky; top: calc(var(--toolbar-height) - 24px); z-index: 1"
122 >
123 <n-card content-class="flex flex-wrap items-center gap-3" size="small" class="mt-3 shadow-xl" embedded>
124 - <n-popover content-class="!p-0">
124 + <n-popover content-class="p-0!">
125 <template #trigger>
126 <n-button secondary size="small">
127 <div class="flex min-w-8 items-center gap-2">
@@ -129,7 +129,7 @@
129 <n-badge
130 :value="checkedAlerts.length"
131 color="rgba(var(--border-color-rgb) / 0.3)"
132 - class="!font-mono"
132 + class="font-mono!"
133 />
134 </div>
135 </n-button>
frontend/src/components/incidentManagement/cases/CaseItem.vue
+4 -4
@@ -10,7 +10,7 @@
10 >
11 <template v-if="caseEntity" #headerMain>
12 <div
13 - class="flex items-center gap-2 break-words"
13 + class="flex items-center gap-2 wrap-break-word"
14 :class="{ 'hover:text-primary cursor-pointer': !compact }"
15 @click="compact ? undefined : openDetails()"
16 >
@@ -132,7 +132,7 @@
132 </Badge>
133 </CaseAssignUser>
134
135 - <Badge v-if="caseEntity.customer_code" type="splitted" class="!hidden sm:!flex">
135 + <Badge v-if="caseEntity.customer_code" type="splitted" class="hidden! sm:flex!">
136 <template #label>Customer</template>
137 <template #value>
138 <div class="flex h-full items-center">
@@ -161,7 +161,7 @@
161 </template>
162 <template #header-extra>
163 <div class="actions-box ml-2 flex flex-wrap items-center justify-end gap-2">
164 - <n-button quaternary size="tiny" class="xs:!flex !hidden" @click="handleDelete()">
164 + <n-button quaternary size="tiny" class="xs:flex! hidden!" @click="handleDelete()">
165 Delete Case
166 </n-button>
167 <CaseReportButton :case-id="caseEntity.id" size="tiny" />
@@ -203,7 +203,7 @@
203 :style="{ maxWidth: 'min(850px, 90vw)', minHeight: 'min(482px, 90vh)', overflow: 'hidden' }"
204 >
205 <n-card
206 - content-class="flex flex-col !p-0"
206 + content-class="flex flex-col p-0!"
207 :title="caseNameTruncated"
208 closable
209 :bordered="false"
frontend/src/components/incidentManagement/cases/CaseOverview.vue
+1 -1
@@ -2,7 +2,7 @@
2 <n-spin :show="loading" class="flex grow flex-col" content-class="flex grow flex-col">
3 <div class="flex grow flex-col justify-between gap-4">
4 <div class="content-box flex flex-col gap-4 py-3">
5 - <div class="flex flex-col gap-4 px-7 sm:!flex-row">
5 + <div class="flex flex-col gap-4 px-7 sm:flex-row!">
6 <CardKV
7 :color="
8 caseData.case_status === 'OPEN'
frontend/src/components/incidentManagement/cases/CasesList.vue
+7 -7
@@ -5,7 +5,7 @@
5 <n-popover overlap placement="left">
6 <template #trigger>
7 <div class="bg-default rounded-lg">
8 - <n-button size="small" class="!cursor-help">
8 + <n-button size="small" class="cursor-help!">
9 <template #icon>
10 <Icon :name="InfoIcon" />
11 </template>
@@ -70,7 +70,7 @@
70 :item-count="total"
71 :simple="simpleMode"
72 />
73 - <n-popover v-if="!hideFilters" :show="showFilters" trigger="manual" overlap placement="right" class="!px-0">
73 + <n-popover v-if="!hideFilters" :show="showFilters" trigger="manual" overlap placement="right" class="px-0!">
74 <template #trigger>
75 <div class="bg-default rounded-lg">
76 <n-badge :show="filtered" dot type="success" :offset="[-4, 0]">
@@ -90,7 +90,7 @@
90 :options="typeOptions"
91 placeholder="Filter by..."
92 clearable
93 - class="!w-40"
93 + class="w-40!"
94 />
95
96 <n-select
@@ -100,7 +100,7 @@
100 placeholder="Value..."
101 :disabled="!filters.type"
102 clearable
103 - class="!w-56"
103 + class="w-56!"
104 />
105 <n-select
106 v-else-if="filters.type === 'assignedTo'"
@@ -110,7 +110,7 @@
110 :disabled="!filters.type"
111 clearable
112 filterable
113 - class="!w-56"
113 + class="w-56!"
114 />
115 <n-select
116 v-else-if="filters.type === 'customerCode'"
@@ -120,7 +120,7 @@
120 :disabled="!filters.type"
121 clearable
122 filterable
123 - class="!w-56"
123 + class="w-56!"
124 />
125 <n-input
126 v-else
@@ -128,7 +128,7 @@
128 placeholder="Value..."
129 :disabled="!filters.type"
130 clearable
131 - class="!w-56"
131 + class="w-56!"
132 />
133 </n-input-group>
134 </div>
frontend/src/components/incidentManagement/exclusionRules/ExclusionRuleItem.vue
+1 -1
@@ -75,7 +75,7 @@
75 display-directive="show"
76 >
77 <n-card
78 - content-class="flex flex-col !p-0"
78 + content-class="flex flex-col p-0!"
79 :title="`#${entity.id} • ${entity.name}`"
80 closable
81 :bordered="false"
frontend/src/components/incidentManagement/exclusionRules/ExclusionRulesList.vue
+2 -2
@@ -5,7 +5,7 @@
5 <n-popover v-if="showInfoPopover" overlap placement="bottom-start">
6 <template #trigger>
7 <div class="bg-default rounded-lg">
8 - <n-button size="small" class="!cursor-help">
8 + <n-button size="small" class="cursor-help!">
9 <template #icon>
10 <Icon :name="InfoIcon" />
11 </template>
@@ -31,7 +31,7 @@
31 <n-checkbox v-model:checked="filters.enabledOnly">Enabled only</n-checkbox>
32 </div>
33 <div class="block @md:hidden">
34 - <n-popover overlap placement="right" class="!px-0">
34 + <n-popover overlap placement="right" class="px-0!">
35 <template #trigger>
36 <div class="bg-default rounded-lg">
37 <n-badge :show="filters.enabledOnly" dot type="success" :offset="[-3, 4]">
frontend/src/components/incidentManagement/sources/ConfiguredSourcesList.vue
+1 -1
@@ -5,7 +5,7 @@
5 <n-popover overlap placement="bottom-start">
6 <template #trigger>
7 <div class="bg-default rounded-lg">
8 - <n-button size="small" class="!cursor-help">
8 + <n-button size="small" class="cursor-help!">
9 <template #icon>
10 <Icon :name="InfoIcon" />
11 </template>
frontend/src/components/incidentManagement/sources/NewConfiguredSourceButton.vue
+1 -1
@@ -14,7 +14,7 @@
14 :style="{ maxWidth: 'min(600px, 90vw)', minHeight: 'min(200px, 90vh)', overflow: 'hidden' }"
15 title="Create Source Configuration"
16 :bordered="false"
17 - content-class="flex flex-col !p-0"
17 + content-class="flex flex-col p-0!"
18 segmented
19 >
20 <SourceConfigurationWizard
frontend/src/components/indices/Marquee.vue
+1 -1
@@ -1,6 +1,6 @@
1 <template>
2 <div class="indices-marquee">
3 - <n-card content-class="!p-0" class="overflow-hidden">
3 + <n-card content-class="p-0!" class="overflow-hidden">
4 <n-spin :show="loading" content-class="h-12">
5 <Vue3Marquee
6 v-if="list?.length"
frontend/src/components/license/LicenseFeatureCheck.vue
+3 -3
@@ -8,7 +8,7 @@
8 <span v-else></span>
9 </template>
10 </template>
11 - <div class="flex w-[90vw] !max-w-lg flex-col gap-3">
11 + <div class="flex w-[90vw] max-w-lg! flex-col gap-3">
12 <div>
13 It seems that the feature you are looking for is currently unavailable. To unlock and use it, you
14 need to enable this feature. You can manage your features from the License page.
@@ -25,7 +25,7 @@
25 </n-tooltip>
26
27 <div v-if="showFeedback && feedback === 'overlay'" class="over-layer animate-fade">
28 - <n-card class="w-[90vw] !max-w-lg">
28 + <n-card class="w-[90vw] max-w-lg!">
29 <template #header>
30 <div class="flex items-center gap-3">
31 <Icon :name="AlertIcon" :size="18" />
@@ -49,7 +49,7 @@
49 </n-card>
50 </div>
51
52 - <n-modal v-model:show="showModal" class="w-[90vw] !max-w-lg" preset="card">
52 + <n-modal v-model:show="showModal" class="w-[90vw] max-w-lg!" preset="card">
53 <template #header>
54 <div class="flex items-center gap-3">
55 <Icon :name="AlertIcon" :size="18" />
frontend/src/components/license/LicenseFeatures.vue
+1 -1
@@ -39,7 +39,7 @@
39 </n-scrollbar>
40 </div>
41 <div v-if="license" class="cta-section">
42 - <n-button type="primary" class="!w-full" size="large" @click="openCheckout()">
42 + <n-button type="primary" class="w-full!" size="large" @click="openCheckout()">
43 <template #icon>
44 <Icon :name="ExtendIcon" />
45 </template>
frontend/src/components/license/deprecated/LicenseEditor.vue
+2 -2
@@ -50,7 +50,7 @@
50 </div>
51
52 <div v-if="replaceEnabled" class="replace-box mt-2 flex gap-2">
53 - <n-input v-model:value="licenseKeyModel" class="!max-w-72 grow" clearable />
53 + <n-input v-model:value="licenseKeyModel" class="max-w-72! grow" clearable />
54 <n-button secondary :disabled="loadingReplace" @click="resetLicense()">Reset</n-button>
55 <n-button type="success" :loading="loadingReplace" :disabled="!licenseKeyModel" @click="replaceLicense()">
56 <template #icon>
@@ -61,7 +61,7 @@
61 </div>
62
63 <div v-if="extendEnabled" class="extend-box mt-5 flex gap-2">
64 - <n-input-number v-model:value="period" class="!max-w-44 grow" :min="1">
64 + <n-input-number v-model:value="period" class="max-w-44! grow" :min="1">
65 <template #prefix>
66 <div class="min-w-12">Day{{ period === 1 ? "" : "s" }}</div>
67 </template>
frontend/src/components/logs/LogsFilters.vue
+3 -3
@@ -8,10 +8,10 @@
8 placeholder="Select"
9 size="tiny"
10 clearable
11 - class="!w-24"
11 + class="w-24!"
12 />
13 </div>
14 - <div class="!w-72 px-3">
14 + <div class="w-72! px-3">
15 <div v-if="filterType === 'userId'" class="flex grow">
16 <n-select
17 v-if="userIdOptions.length"
@@ -43,7 +43,7 @@
43 v-model:value="filterTimeRange.unit"
44 :options="unitOptions"
45 placeholder="Time unit"
46 - class="!w-40"
46 + class="w-40!"
47 />
48 <n-input-number v-model:value="filterTimeRange.time" :min="1" placeholder="Time" class="grow" />
49 </n-input-group>
frontend/src/components/logs/LogsList.vue
+2 -2
@@ -5,7 +5,7 @@
5 <n-popover overlap placement="bottom-start">
6 <template #trigger>
7 <div class="bg-default rounded-lg">
8 - <n-button size="small" class="!cursor-help">
8 + <n-button size="small" class="cursor-help!">
9 <template #icon>
10 <Icon :name="InfoIcon" />
11 </template>
@@ -44,7 +44,7 @@
44 :item-count="total"
45 :simple="simpleMode"
46 />
47 - <n-popover :show="showFilters" trigger="manual" overlap placement="right" class="!px-0">
47 + <n-popover :show="showFilters" trigger="manual" overlap placement="right" class="px-0!">
48 <template #trigger>
49 <div class="bg-default rounded-lg">
50 <n-badge :show="filtered" dot type="success" :offset="[-4, 0]">
frontend/src/components/mitre/AtomicTests/List.vue
+1 -1
@@ -6,7 +6,7 @@
6 <n-popover overlap placement="bottom-start">
7 <template #trigger>
8 <div class="bg-default rounded-lg">
9 - <n-button size="small" class="!cursor-help">
9 + <n-button size="small" class="cursor-help!">
10 <template #icon>
11 <Icon :name="InfoIcon" />
12 </template>
frontend/src/components/mitre/Group/GroupCard.vue
+1 -1
@@ -28,7 +28,7 @@
28 v-model:show="showDetails"
29 display-directive="show"
30 preset="card"
31 - content-class="!p-0"
31 + content-class="p-0!"
32 :style="{ maxWidth: 'min(900px, 90vw)', minHeight: 'min(600px, 90vh)', overflow: 'hidden' }"
33 :title="`Group • ${id}`"
34 :bordered="false"
frontend/src/components/mitre/Mitigation/MitigationCard.vue
+1 -1
@@ -28,7 +28,7 @@
28 v-model:show="showDetails"
29 display-directive="show"
30 preset="card"
31 - content-class="!p-0"
31 + content-class="p-0!"
32 :style="{ maxWidth: 'min(900px, 90vw)', minHeight: 'min(600px, 90vh)', overflow: 'hidden' }"
33 :title="`Mitigation • ${id}`"
34 :bordered="false"
frontend/src/components/mitre/Software/SoftwareCard.vue
+1 -1
@@ -28,7 +28,7 @@
28 v-model:show="showDetails"
29 display-directive="show"
30 preset="card"
31 - content-class="!p-0"
31 + content-class="p-0!"
32 :style="{ maxWidth: 'min(900px, 90vw)', minHeight: 'min(600px, 90vh)', overflow: 'hidden' }"
33 :title="`Software • ${id}`"
34 :bordered="false"
frontend/src/components/mitre/Tactic/TacticCard.vue
+1 -1
@@ -28,7 +28,7 @@
28 v-model:show="showDetails"
29 display-directive="show"
30 preset="card"
31 - content-class="!p-0"
31 + content-class="p-0!"
32 :style="{ maxWidth: 'min(900px, 90vw)', minHeight: 'min(600px, 90vh)', overflow: 'hidden' }"
33 :title="`Tactic • ${id}`"
34 :bordered="false"
frontend/src/components/mitre/Technique/TechniqueCard.vue
+1 -1
@@ -28,7 +28,7 @@
28 v-model:show="showDetails"
29 display-directive="show"
30 preset="card"
31 - content-class="!p-0"
31 + content-class="p-0!"
32 :style="{ maxWidth: 'min(900px, 90vw)', minHeight: 'min(600px, 90vh)', overflow: 'hidden' }"
33 :title="`Technique • ${id}`"
34 :bordered="false"
frontend/src/components/mitre/TechniqueAlert/TechniqueAlertCard.vue
+1 -1
@@ -29,7 +29,7 @@
29 v-model:show="showDetails"
30 display-directive="show"
31 preset="card"
32 - content-class="!p-0"
32 + content-class="p-0!"
33 :style="{ maxWidth: 'min(900px, 90vw)', minHeight: 'min(600px, 90vh)', overflow: 'hidden' }"
34 :title="`${entity.technique_id} • ${entity.technique_name}`"
35 :bordered="false"
frontend/src/components/mitre/TechniqueEvents/Filters.vue
+4 -4
@@ -14,7 +14,7 @@
14
15 <div class="pt-1 pb-2">
16 <div class="text-secondary mb-1 text-sm">Mitre field:</div>
17 - <n-input v-model:value="mitreField" size="small" clearable class="!w-40" />
17 + <n-input v-model:value="mitreField" size="small" clearable class="w-40!" />
18 </div>
19 </n-popover>
20 </div>
@@ -25,13 +25,13 @@
25 :options="unitOptions"
26 placeholder="Time unit"
27 size="small"
28 - class="!w-24"
28 + class="w-24!"
29 />
30 <n-input-number
31 v-model:value="filterTimeRange.value"
32 :min="1"
33 placeholder="Value"
34 - class="!w-26"
34 + class="w-26!"
35 size="small"
36 :parse="parseTimeValue"
37 />
@@ -40,7 +40,7 @@
40 <div v-for="filter of usedFilters" :key="filter.type">
41 <n-input-group>
42 <n-input-group-label size="small">{{ getFilterLabel(filter.type) }}</n-input-group-label>
43 - <n-input v-model:value="filter.value" autosize placeholder="Input..." size="small" class="!min-w-30" />
43 + <n-input v-model:value="filter.value" autosize placeholder="Input..." size="small" class="min-w-30!" />
44 <n-button size="small" secondary tabindex="-1" @click="delFilter(filter.type)">
45 <template #icon>
46 <Icon :name="DelIcon" />
frontend/src/components/mitre/TechniqueEvents/List.vue
+1 -1
@@ -8,7 +8,7 @@
8 <n-popover overlap placement="bottom-start">
9 <template #trigger>
10 <div class="bg-default rounded-lg">
11 - <n-button size="small" class="!cursor-help">
11 + <n-button size="small" class="cursor-help!">
12 <template #icon>
13 <Icon :name="InfoIcon" />
14 </template>
frontend/src/components/mitre/TechniqueEvents/TechniqueEventCard.vue
+7 -7
@@ -17,7 +17,7 @@
17 <div class="flex flex-wrap items-center gap-3">
18 <Badge type="splitted" color="primary">
19 <template #iconLeft>
20 - <Icon :name="TargetIcon" :size="13" class="!opacity-80" />
20 + <Icon :name="TargetIcon" :size="13" class="opacity-80!" />
21 </template>
22 <template #label>Fired times</template>
23 <template #value>
@@ -29,13 +29,13 @@
29 <template #trigger>
30 <Badge type="splitted" color="primary" hint-cursor>
31 <template #iconLeft>
32 - <Icon :name="AgentIcon" :size="13" class="!opacity-80" />
32 + <Icon :name="AgentIcon" :size="13" class="opacity-80!" />
33 </template>
34 <template #label>Agent</template>
35 <template #value>
36 <div class="flex flex-wrap items-center gap-2">
37 {{ alert.agent_name }} / {{ alert.agent_labels_customer }}
38 - <Icon :name="InfoIcon" :size="13" class="!opacity-80" />
38 + <Icon :name="InfoIcon" :size="13" class="opacity-80!" />
39 </div>
40 </template>
41 </Badge>
@@ -72,19 +72,19 @@
72 <template #label>syslog</template>
73 <template #value>{{ alert.syslog_type }} / {{ alert.syslog_level }}</template>
74 </Badge>
75 - <Badge type="splitted" color="primary" class="!hidden @2xl:!flex">
75 + <Badge type="splitted" color="primary" class="hidden! @2xl:flex!">
76 <template #label>manager</template>
77 <template #value>
78 {{ alert.manager_name }}
79 </template>
80 </Badge>
81 - <Badge type="splitted" color="primary" class="!hidden @2xl:!flex">
81 + <Badge type="splitted" color="primary" class="hidden! @2xl:flex!">
82 <template #label>decoder</template>
83 <template #value>
84 {{ alert.decoder_name }}
85 </template>
86 </Badge>
87 - <Badge type="splitted" color="primary" class="!hidden @2xl:!flex">
87 + <Badge type="splitted" color="primary" class="hidden! @2xl:flex!">
88 <template #label>source</template>
89 <template #value>
90 {{ alert.source }}
@@ -97,7 +97,7 @@
97 <n-modal
98 v-model:show="showDetails"
99 preset="card"
100 - content-class="!p-0"
100 + content-class="p-0!"
101 :style="{ maxWidth: 'min(800px, 90vw)', minHeight: 'min(600px, 90vh)', overflow: 'hidden' }"
102 :title="`Alert: ${alert.id}`"
103 :bordered="false"
frontend/src/components/mitre/TechniquesAlerts/Filters.vue
+4 -4
@@ -14,7 +14,7 @@
14
15 <div class="pt-1 pb-2">
16 <div class="text-secondary mb-1 text-sm">Mitre field:</div>
17 - <n-input v-model:value="mitreField" size="small" clearable class="!w-40" />
17 + <n-input v-model:value="mitreField" size="small" clearable class="w-40!" />
18 </div>
19 </n-popover>
20 </div>
@@ -25,13 +25,13 @@
25 :options="unitOptions"
26 placeholder="Time unit"
27 size="small"
28 - class="!w-24"
28 + class="w-24!"
29 />
30 <n-input-number
31 v-model:value="filterTimeRange.value"
32 :min="1"
33 placeholder="Value"
34 - class="!w-26"
34 + class="w-26!"
35 size="small"
36 :parse="parseTimeValue"
37 />
@@ -40,7 +40,7 @@
40 <div v-for="filter of usedFilters" :key="filter.type">
41 <n-input-group>
42 <n-input-group-label size="small">{{ getFilterLabel(filter.type) }}</n-input-group-label>
43 - <n-input v-model:value="filter.value" autosize placeholder="Input..." size="small" class="!min-w-30" />
43 + <n-input v-model:value="filter.value" autosize placeholder="Input..." size="small" class="min-w-30!" />
44 <n-button size="small" secondary tabindex="-1" @click="delFilter(filter.type)">
45 <template #icon>
46 <Icon :name="DelIcon" />
frontend/src/components/monitoringAlerts/List.vue
+1 -1
@@ -5,7 +5,7 @@
5 <n-popover overlap placement="bottom-start">
6 <template #trigger>
7 <div class="bg-default rounded-lg">
8 - <n-button size="small" class="!cursor-help">
8 + <n-button size="small" class="cursor-help!">
9 <template #icon>
10 <Icon :name="InfoIcon" />
11 </template>
frontend/src/components/reportCreation/Panels.vue
+1 -1
@@ -114,7 +114,7 @@
114 <div class="toolbar flex items-center justify-between gap-2 pr-4">
115 <n-button
116 v-if="dashboard || panelsReady"
117 - class="add-task-btn !mt-0 flex items-center justify-center"
117 + class="add-task-btn mt-0! flex items-center justify-center"
118 @click="addRow()"
119 >
120 <template #icon>
frontend/src/components/reportCreation/Wizard.vue
+3 -3
@@ -9,13 +9,13 @@
9 v-model:value="timeUnit"
10 :options="timeUnitOptions"
11 placeholder="Time unit"
12 - class="!min-w-28 basis-1"
12 + class="min-w-28! basis-1"
13 />
14 <n-input-number v-model:value="timeValue" :min="1" placeholder="Time" class="grow" />
15 </n-input-group>
16 </n-form-item>
17
18 - <n-form-item label="Organization" class="flex flex-grow">
18 + <n-form-item label="Organization" class="flex grow">
19 <n-select
20 v-model:value="selectedOrgId"
21 :options="orgsOptions"
@@ -24,7 +24,7 @@
24 />
25 </n-form-item>
26
27 - <n-form-item v-if="canSelectDashboard" label="Dashboard" class="flex flex-grow">
27 + <n-form-item v-if="canSelectDashboard" label="Dashboard" class="flex grow">
28 <n-select
29 v-model:value="selectedDashboardUID"
30 :options="dashboardsOptions"
frontend/src/components/sca/ScaCard.vue
+1 -1
@@ -80,7 +80,7 @@
80 :style="{ maxWidth: 'min(800px, 90vw)', minHeight: 'min(500px, 90vh)' }"
81 :title="`SCA Policy: ${sca.policy_name}`"
82 :bordered="false"
83 - content-class="!p-0"
83 + content-class="p-0!"
84 segmented
85 >
86 <ScaCardContent :sca />
frontend/src/components/sigma/QueriesList.vue
+5 -5
@@ -5,7 +5,7 @@
5 <n-popover overlap placement="bottom-start">
6 <template #trigger>
7 <div class="bg-default rounded-lg">
8 - <n-button size="small" class="!cursor-help">
8 + <n-button size="small" class="cursor-help!">
9 <template #icon>
10 <Icon :name="InfoIcon" />
11 </template>
@@ -35,8 +35,8 @@
35 <Icon :name="ToolsIcon" :size="16" />
36 <span class="xs:block hidden">Actions</span>
37 <Icon
38 - class="xs:!block !hidden transition-transform"
39 - :class="{ '!rotate-90': showActionsView }"
38 + class="xs:block! hidden! transition-transform"
39 + :class="{ 'rotate-90!': showActionsView }"
40 :name="ChevronIcon"
41 :size="16"
42 />
@@ -52,7 +52,7 @@
52 :item-count="total"
53 :simple="simpleMode"
54 />
55 - <n-popover :show="showFilters" trigger="manual" overlap placement="right" class="!px-0">
55 + <n-popover :show="showFilters" trigger="manual" overlap placement="right" class="px-0!">
56 <template #trigger>
57 <div class="bg-default rounded-lg">
58 <n-badge :show="filtered" dot type="success" :offset="[-4, 0]">
@@ -74,7 +74,7 @@
74 :options="activeOptions"
75 placeholder="Select a status"
76 clearable
77 - class="!w-56"
77 + class="w-56!"
78 />
79 </div>
80 <div class="flex justify-between gap-2 px-3">
frontend/src/components/sigma/QueryItem.vue
+2 -2
@@ -39,7 +39,7 @@
39 </Badge>
40 </QueryTimeIntervalForm>
41
42 - <Badge type="splitted" bright fluid class="!hidden sm:!flex">
42 + <Badge type="splitted" bright fluid class="hidden! sm:flex!">
43 <template #iconLeft>
44 <Icon :name="TimeIcon" />
45 </template>
@@ -76,7 +76,7 @@
76 display-directive="show"
77 >
78 <n-card
79 - content-class="flex flex-col !p-0"
79 + content-class="flex flex-col p-0!"
80 :title="`#${query.id}`"
81 closable
82 :bordered="false"
frontend/src/components/sigma/QueryOverview.vue
+1 -1
@@ -2,7 +2,7 @@
2 <n-spin :show="loading" class="flex grow flex-col" content-class="flex grow flex-col">
3 <div class="flex grow flex-col justify-between gap-4">
4 <div class="content-box flex flex-col gap-4 py-3">
5 - <div class="flex flex-col gap-4 px-7 sm:!flex-row">
5 + <div class="flex flex-col gap-4 px-7 sm:flex-row!">
6 <CardKV :color="query.active ? 'success' : undefined" size="lg" class="w-full grow">
7 <template #key>
8 <div class="flex items-center gap-2">
frontend/src/components/sigma/actionsProviders/QueryTimeIntervalForm.vue
+2 -2
@@ -12,14 +12,14 @@
12 :options="unitOptions"
13 placeholder="Time unit"
14 :disabled="loading"
15 - class="!w-28"
15 + class="w-28!"
16 />
17 <n-input-number
18 v-model:value="model.time"
19 :min="1"
20 clearable
21 placeholder="Time"
22 - class="!w-32"
22 + class="w-32!"
23 :disabled="loading"
24 />
25 </n-input-group>
frontend/src/components/soc/SocAlerts/SocAlertAssets/SocAlertAssetsItem.vue
+1 -1
@@ -62,7 +62,7 @@
62 <n-modal
63 v-model:show="showDetails"
64 preset="card"
65 - content-class="!p-0"
65 + content-class="p-0!"
66 :style="{ maxWidth: 'min(800px, 90vw)', minHeight: 'min(600px, 90vh)', overflow: 'hidden' }"
67 :title="`Assets #${asset.asset_id} - ${asset.asset_uuid}`"
68 :bordered="false"
frontend/src/components/soc/SocAlerts/SocAlertItem/SocAlertItem.vue
+1 -1
@@ -89,7 +89,7 @@
89 <n-modal
90 v-model:show="showDetails"
91 preset="card"
92 - content-class="!p-0"
92 + content-class="p-0!"
93 :style="{ maxWidth: 'min(800px, 90vw)', minHeight: 'min(550px, 90vh)', overflow: 'hidden' }"
94 :bordered="false"
95 display-directive="show"
frontend/src/components/soc/SocAlerts/SocAlertItem/SocAlertItemActions.vue
+1 -1
@@ -36,7 +36,7 @@
36 <n-modal
37 v-model:show="showSocCaseDetails"
38 preset="card"
39 - content-class="!p-0"
39 + content-class="p-0!"
40 :style="{ maxWidth: 'min(800px, 90vw)', minHeight: 'min(250px, 90vh)', overflow: 'hidden' }"
41 :title="`SOC Case: #${caseId}`"
42 :bordered="false"
frontend/src/components/soc/SocAlerts/SocAlertItem/SocAlertItemBadges.vue
+2 -2
@@ -23,7 +23,7 @@
23 {{ alert.severity?.severity_name || "-" }}
24 </template>
25 </Badge>
26 - <Badge type="splitted" color="primary" class="!hidden @2xl:!flex">
26 + <Badge type="splitted" color="primary" class="hidden! @2xl:!flex">
27 <template #iconLeft>
28 <Icon :name="SourceIcon" :size="13" />
29 </template>
@@ -32,7 +32,7 @@
32 {{ alert.alert_source || "-" }}
33 </template>
34 </Badge>
35 - <Badge type="splitted" color="primary" class="!hidden @2xl:!flex">
35 + <Badge type="splitted" color="primary" class="hidden! @2xl:!flex">
36 <template #iconLeft>
37 <Icon :name="CustomerIcon" :size="13" />
38 </template>
frontend/src/components/soc/SocAlerts/SocAlertsList.vue
+1 -1
@@ -35,7 +35,7 @@
35 </template>
36 <div class="checked-list flex flex-col gap-2">
37 <div v-for="alertId of checkedList" :key="alertId" class="w-full">
38 - <n-button size="small" class="!w-full !justify-start" @click="clearChecked(alertId)">
38 + <n-button size="small" class="w-full! !justify-start" @click="clearChecked(alertId)">
39 <template #icon>
40 <Icon :name="CloseIcon" :size="18" />
41 </template>
frontend/src/components/soc/SocCases/SocCaseAssetsItem.vue
+1 -1
@@ -57,7 +57,7 @@
57 <n-modal
58 v-model:show="showDetails"
59 preset="card"
60 - content-class="!p-0"
60 + content-class="p-0!"
61 :style="{ maxWidth: 'min(800px, 90vw)', minHeight: 'min(600px, 90vh)', overflow: 'hidden' }"
62 :title="`Assets #${asset.asset_id} - ${asset.asset_uuid}`"
63 :bordered="false"
frontend/src/components/soc/SocCases/SocCaseItem.vue
+2 -2
@@ -102,7 +102,7 @@
102 <n-modal
103 v-model:show="showSocAlertDetails"
104 preset="card"
105 - content-class="!p-0"
105 + content-class="p-0!"
106 :style="{ maxWidth: 'min(800px, 90vw)', minHeight: 'min(250px, 90vh)', overflow: 'hidden' }"
107 :title="`SOC Alert: #${baseInfo?.case_soc_id}`"
108 :bordered="false"
@@ -123,7 +123,7 @@
123 <n-modal
124 v-model:show="showDetails"
125 preset="card"
126 - content-class="!p-0"
126 + content-class="p-0!"
127 :style="{ maxWidth: 'min(800px, 90vw)', minHeight: 'min(550px, 90vh)', overflow: 'hidden' }"
128 :title="`SOC Case: ${baseInfo?.case_uuid}`"
129 :bordered="false"
frontend/src/components/soc/SocCases/SocCaseNote.vue
+1 -1
@@ -50,7 +50,7 @@
50 <n-modal
51 v-model:show="showDetails"
52 preset="card"
53 - content-class="!p-0"
53 + content-class="p-0!"
54 :style="{ maxWidth: 'min(800px, 90vw)', minHeight: 'min(600px, 90vh)', overflow: 'hidden' }"
55 :title="`Note: #${note.note_id} - ${note.note_details.note_uuid}`"
56 :bordered="false"
frontend/src/components/soc/SocCases/SocCaseNoteForm.vue
+2 -2
@@ -13,8 +13,8 @@
13 }"
14 />
15 <div class="flex justify-end gap-2">
16 - <n-button :disabled="loading" secondary class="!w-32" @click="clear(true)">Close</n-button>
17 - <n-button :disabled="loading || !title" secondary type="primary" class="!w-32" @click="addNote()">
16 + <n-button :disabled="loading" secondary class="w-32!" @click="clear(true)">Close</n-button>
17 + <n-button :disabled="loading || !title" secondary type="primary" class="w-32!" @click="addNote()">
18 Submit
19 </n-button>
20 </div>
frontend/src/components/soc/SocCases/SocCasesList.vue
+4 -4
@@ -5,7 +5,7 @@
5 <n-popover overlap placement="bottom-start">
6 <template #trigger>
7 <div class="bg-default rounded-lg">
8 - <n-button size="small" class="!cursor-help">
8 + <n-button size="small" class="cursor-help!">
9 <template #icon>
10 <Icon :name="InfoIcon" />
11 </template>
@@ -43,7 +43,7 @@
43 :item-count="total"
44 :simple="simpleMode"
45 />
46 - <n-popover :show="showFilters" trigger="manual" overlap placement="right" class="!px-0">
46 + <n-popover :show="showFilters" trigger="manual" overlap placement="right" class="px-0!">
47 <template #trigger>
48 <div class="bg-default rounded-lg">
49 <n-badge :show="filtered" dot type="success" :offset="[-4, 0]">
@@ -66,13 +66,13 @@
66 :options="unitOptions"
67 placeholder="Time unit"
68 clearable
69 - class="!w-28"
69 + class="w-28!"
70 />
71 <n-input-number
72 v-model:value="filters.olderThan"
73 clearable
74 placeholder="Time"
75 - class="!w-32"
75 + class="w-32!"
76 />
77 </n-input-group>
78 </div>
frontend/src/components/soc/SocUsers/SocUserAlerts.vue
+1 -1
@@ -18,7 +18,7 @@
18 <n-modal
19 v-model:show="showSocAlertDetails"
20 preset="card"
21 - content-class="!p-0"
21 + content-class="p-0!"
22 :style="{ maxWidth: 'min(800px, 90vw)', minHeight: 'min(250px, 90vh)', overflow: 'hidden' }"
23 :title="`SOC Alert: #${selectedAlertId}`"
24 :bordered="false"
frontend/src/components/threatIntel/AIAnalystButton.vue
+1 -1
@@ -35,7 +35,7 @@
35 <n-modal
36 v-model:show="showModal"
37 preset="card"
38 - content-class="!p-0"
38 + content-class="p-0!"
39 :style="{ maxWidth: 'min(710px, 90vw)', minHeight: 'min(500px, 90vh)' }"
40 :bordered="false"
41 segmented
frontend/src/components/threatIntel/AIVelociraptorArtifactRecommendationButton.vue
+1 -1
@@ -35,7 +35,7 @@
35 <n-modal
36 v-model:show="showModal"
37 preset="card"
38 - content-class="!p-0"
38 + content-class="p-0!"
39 :style="{ maxWidth: 'min(710px, 90vw)', minHeight: 'min(500px, 90vh)' }"
40 :bordered="false"
41 title="Velociraptor Artifact Recommendation"
frontend/src/components/threatIntel/AIWazuhExclusionRuleButton.vue
+1 -1
@@ -35,7 +35,7 @@
35 <n-modal
36 v-model:show="showModal"
37 preset="card"
38 - content-class="!p-0"
38 + content-class="p-0!"
39 :style="{ maxWidth: 'min(710px, 90vw)', minHeight: 'min(500px, 90vh)' }"
40 :bordered="false"
41 title="Wazuh Exclusion Rule"
frontend/src/components/threatIntel/ThreatIntelEpssScore.vue
+1 -1
@@ -15,7 +15,7 @@
15 embedded
16 class="item-appear item-appear-bottom item-appear-005 overflow-hidden"
17 >
18 - <div class="xs:!flex-row flex flex-col justify-between gap-8">
18 + <div class="xs:flex!-row flex flex-col justify-between gap-8">
19 <n-statistic class="grow" label="Date">
20 <span class="stats-value whitespace-nowrap">
21 {{ formatDate(item.date, dFormats.date) }}
frontend/src/components/threatIntel/ThreatIntelProcessEvaluationProvider.vue
+1 -1
@@ -38,7 +38,7 @@
38 name="Overview"
39 tab="Overview"
40 display-directive="show:lazy"
41 - class="flex flex-col gap-4 !py-8"
41 + class="flex flex-col gap-4 py-8!"
42 >
43 <div class="px-7">
44 <n-card embedded class="overflow-hidden">
frontend/src/components/threatIntel/VirusTotalEnrichmentButton.vue
+9 -9
@@ -12,7 +12,7 @@
12 <n-modal
13 v-model:show="showModal"
14 preset="card"
15 - content-class="!p-0"
15 + content-class="p-0!"
16 :style="{ maxWidth: 'min(710px, 90vw)', minHeight: 'min(500px, 90vh)' }"
17 :bordered="false"
18 segmented
@@ -85,7 +85,7 @@
85 >
86 <template #header>{{ key }}</template>
87 <template #footer>
88 - <div class="flex flex-col justify-between gap-4 text-sm @xs:!flex-row">
88 + <div class="@xs:flex!-row flex flex-col justify-between gap-4 text-sm">
89 <n-statistic class="grow">
90 <template #label>
91 <span class="text-sm">method</span>
@@ -162,7 +162,7 @@
162 </code>
163 </div>
164
165 - <CardKV value-class="!p-0 overflow-x-auto overflow-y-hidden">
165 + <CardKV value-class="p-0! overflow-x-auto overflow-y-hidden">
166 <template #key>cert_signature</template>
167 <template #value>
168 <n-table
@@ -188,7 +188,7 @@
188 </template>
189 </CardKV>
190
191 - <CardKV value-class="!p-0 overflow-x-auto overflow-y-hidden">
191 + <CardKV value-class="p-0! overflow-x-auto overflow-y-hidden">
192 <template #key>authority_key_identifier</template>
193 <template #value>
194 <n-table
@@ -350,7 +350,7 @@
350 </template>
351 </CardKV>
352
353 - <CardKV value-class="!p-0 overflow-x-auto overflow-y-hidden">
353 + <CardKV value-class="p-0! overflow-x-auto overflow-y-hidden">
354 <template #key>ca_information_access</template>
355 <template #value>
356 <n-table
@@ -402,7 +402,7 @@
402 </CardKV>
403 </div>
404
405 - <CardKV value-class="!p-0 overflow-x-auto overflow-y-hidden">
405 + <CardKV value-class="p-0! overflow-x-auto overflow-y-hidden">
406 <template #key>validity</template>
407 <template #value>
408 <n-table
@@ -438,7 +438,7 @@
438 </template>
439 </CardKV>
440
441 - <CardKV value-class="!p-0 overflow-x-auto overflow-y-hidden">
441 + <CardKV value-class="p-0! overflow-x-auto overflow-y-hidden">
442 <template #value>
443 <n-table :bordered="false" single-line>
444 <tbody>
@@ -473,7 +473,7 @@
473 </template>
474 </CardKV>
475
476 - <CardKV value-class="!p-0 overflow-x-auto overflow-y-hidden">
476 + <CardKV value-class="p-0! overflow-x-auto overflow-y-hidden">
477 <template #key>issuer</template>
478 <template #value>
479 <n-table
@@ -499,7 +499,7 @@
499 </template>
500 </CardKV>
501
502 - <CardKV value-class="!p-0 overflow-x-auto overflow-y-hidden">
502 + <CardKV value-class="p-0! overflow-x-auto overflow-y-hidden">
503 <template #key>subject</template>
504 <template #value>
505 <n-table
frontend/src/components/threatIntel/VirusTotalForm.vue
+3 -3
@@ -123,7 +123,7 @@
123 </div>
124 <div v-if="!_isEmpty(analysisResponse.attributes.stats)" class="flex flex-col gap-1 p-4">
125 <div class="text-secondary text-xs">stats</div>
126 - <div class="divide-border flex flex-col gap-2 divide-y-1">
126 + <div class="divide-border flex flex-col gap-2 divide-y">
127 <div
128 v-for="(val, key) of analysisResponse.attributes.stats"
129 :key="key"
@@ -165,7 +165,7 @@
165 class="border-default border"
166 >
167 <div class="px-2 py-1">{{ resultKey }}</div>
168 - <div class="divide-border bg-default flex flex-col gap-1 divide-y-1">
168 + <div class="divide-border bg-default flex flex-col gap-1 divide-y">
169 <div
170 v-for="(val, key) of resultVal"
171 :key="key"
@@ -180,7 +180,7 @@
180 </div>
181 <div v-if="!_isEmpty(analysisResponse.links)" class="flex flex-col gap-1 p-4">
182 <div class="text-secondary text-xs">links</div>
183 - <div class="divide-border flex flex-col gap-2 divide-y-1">
183 + <div class="divide-border flex flex-col gap-2 divide-y">
184 <div
185 v-for="(val, key) of analysisResponse.links"
186 :key="key"
frontend/src/components/users/AssignCustomer.vue
+1 -1
@@ -1,5 +1,5 @@
1 <template>
2 - <n-button quaternary class="!w-full !justify-start" @click="showModal = true">
2 + <n-button quaternary class="w-full! justify-start!" @click="showModal = true">
3 <template #icon>
4 <Icon :name="CustomerIcon" :size="14" />
5 </template>
frontend/src/components/users/AssignRole.vue
+1 -1
@@ -1,5 +1,5 @@
1 <template>
2 - <n-button quaternary class="!w-full !justify-start" @click="showModal = true">
2 + <n-button quaternary class="w-full! justify-start!" @click="showModal = true">
3 <template #icon>
4 <Icon :name="RoleIcon" :size="14" />
5 </template>
frontend/src/components/users/ChangePassword.vue
+1 -1
@@ -1,5 +1,5 @@
1 <template>
2 - <n-button :size :type quaternary class="!w-full !justify-start" @click="showFormDrawer = true">
2 + <n-button :size :type quaternary class="w-full! justify-start!" @click="showFormDrawer = true">
3 <template #icon>
4 <Icon :name="PasswordIcon" :size="14" />
5 </template>
frontend/src/components/users/DeleteUser.vue
+1 -1
@@ -1,5 +1,5 @@
1 <template>
2 - <n-button :size :type quaternary class="!w-full !justify-start" :loading @click="handleDelete()">
2 + <n-button :size :type quaternary class="w-full! justify-start!" :loading @click="handleDelete()">
3 <template #icon>
4 <Icon :name="DeleteIcon" :size="14" />
5 </template>
frontend/src/components/vulnerabilities/VulnerabilityCard.vue
+1 -1
@@ -84,7 +84,7 @@
84 :style="{ maxWidth: 'min(800px, 90vw)', minHeight: 'min(700px, 90vh)' }"
85 :title="`Vulnerability: ${vulnerability.cve_id}`"
86 :bordered="false"
87 - content-class="!p-0"
87 + content-class="p-0!"
88 segmented
89 >
90 <VulnerabilityCardContent :vulnerability />
frontend/src/components/webVulnerabilityAssessment/ReportsList.vue
+1 -1
@@ -5,7 +5,7 @@
5 <n-popover overlap placement="bottom-start">
6 <template #trigger>
7 <div class="bg-default rounded-lg">
8 - <n-button size="small" class="!cursor-help">
8 + <n-button size="small" class="cursor-help!">
9 <template #icon>
10 <Icon :name="InfoIcon" />
11 </template>
frontend/src/theme/index.ts
+1 -1
@@ -14,7 +14,7 @@ const osTheme = useOsTheme()
14
15 export function getDefaultState() {
16 return {
17 - layout: Layout.HorizontalNav, // Type of layout, with vertical or horizontal navigation
17 + layout: Layout.VerticalNav, // Type of layout, with vertical or horizontal navigation
18 themeName: osTheme.value === "dark" ? ThemeNameEnum.Dark : ThemeNameEnum.Light, // Theme name (Dark, Light), with fallback to the light theme
19 routerTransition: RouterTransition.FadeUp, // Type of transition for the router
20 routerTransitionDuration: 0.3, // Duration of the router transition in seconds
frontend/src/types/theme.d.ts
+1 -1
@@ -1,5 +1,5 @@
1 export enum Layout {
2 - HorizontalNav = "HorizontalNav",
2 + VerticalNav = "VerticalNav",
3 Blank = "Blank"
4 }
5
frontend/src/types/version.d.ts
+8 -8
@@ -1,10 +1,10 @@
1 export interface VersionCheckResponse {
2 - success: boolean
3 - message: string
4 - current_version: string
5 - latest_version: string | null
6 - is_outdated: boolean
7 - release_url?: string
8 - release_notes?: string
9 - published_at?: string
2 + success: boolean
3 + message: string
4 + current_version: string
5 + latest_version: string | null
6 + is_outdated: boolean
7 + release_url?: string
8 + release_notes?: string
9 + published_at?: string
10 }
frontend/src/views/Indices.vue
+1 -1
@@ -20,7 +20,7 @@
20 </div>
21
22 <n-card class="section overflow-hidden" content-style="padding:0">
23 - <div class="columns column-1200 flex !gap-0">
23 + <div class="columns column-1200 flex gap-0!">
24 <div class="col basis-2/5">
25 <NodeAllocation class="stretchy" style="border-radius: 0" :bordered="false" />
26 </div>
frontend/src/views/Overview.vue
+9 -9
@@ -5,17 +5,17 @@
5 <VersionUpdateBanner />
6 </div>
7
8 - <div class="section flex justify-end gap-3 lg:justify-between">
9 - <div class="left-box hidden gap-3 lg:flex">
8 + <div class="section flex justify-end gap-3 min-[70rem]:justify-between">
9 + <div class="left-box hidden gap-3 min-[70rem]:flex">
10 <StackProvisioningButton size="small" type="primary" />
11 <CloudSecurityAssessmentButton size="small" type="primary" />
12 <WebVulnerabilityAssessmentButton size="small" type="primary" />
13 </div>
14 - <div class="right-box hidden gap-3 lg:flex">
14 + <div class="right-box hidden gap-3 min-[70rem]:flex">
15 <ActiveResponseWizardButton size="small" type="primary" />
16 <ThreatIntelButton size="small" type="primary" />
17 </div>
18 - <div class="mobile-box block lg:hidden">
18 + <div class="mobile-box block min-[70rem]:hidden">
19 <n-button size="small" type="primary" @click="showQuickActions = true">
20 <template #icon>
21 <Icon :name="QuickActionsIcon" />
@@ -26,19 +26,19 @@
26 </div>
27 <div class="section">
28 <div class="grid grid-flow-row-dense grid-cols-12 gap-6">
29 - <div class="xs:col-span-12 col-span-12 sm:col-span-4 lg:col-span-2">
29 + <div class="xs:col-span-12 col-span-12 sm:col-span-4 min-[75rem]:col-span-2">
30 <AgentsCard class="h-full" />
31 </div>
32 - <div class="xs:col-span-6 col-span-12 sm:col-span-4 lg:col-span-2">
32 + <div class="xs:col-span-6 col-span-12 sm:col-span-4 min-[75rem]:col-span-2">
33 <HealthcheckCard class="h-full" />
34 </div>
35 - <div class="xs:col-span-6 col-span-12 sm:col-span-4 lg:col-span-2">
35 + <div class="xs:col-span-6 col-span-12 sm:col-span-4 min-[75rem]:col-span-2">
36 <CustomersCard class="h-full" />
37 </div>
38 - <div class="col-span-12 lg:col-span-3">
38 + <div class="col-span-12 sm:col-span-6 min-[75rem]:col-span-3">
39 <IncidentAlerts class="h-full" />
40 </div>
41 - <div class="col-span-12 lg:col-span-3">
41 + <div class="col-span-12 sm:col-span-6 min-[75rem]:col-span-3">
42 <IncidentCases class="h-full" />
43 </div>
44 </div>
frontend/src/views/Profile.vue
+1 -1
@@ -59,7 +59,7 @@
59 </div>
60 </n-card>
61 <div class="main">
62 - <n-tabs v-model:value="tabActive" tab-class="!hidden" animated>
62 + <n-tabs v-model:value="tabActive" tab-class="hidden!" animated>
63 <n-tab-pane name="settings">
64 <ProfileSettings />
65 </n-tab-pane>
frontend/src/views/ReportCreation.vue
+1 -1
@@ -60,7 +60,7 @@ const licenseResponse = ref(false)
60 </script>
61
62 <style lang="scss" scoped>
63 -@import "../app-layouts/HorizontalNav/_variables.scss";
63 +@import "../app-layouts/VerticalNav/_variables.scss";
64
65 .page {
66 overflow: hidden;
frontend/src/views/agents/Agents.vue
+1 -1
@@ -16,7 +16,7 @@
16 <div class="main flex grow flex-col overflow-hidden">
17 <n-spin class="flex h-full w-full flex-col overflow-hidden" :show="loadingAgents">
18 <n-scrollbar class="grow">
19 - <div class="agents-list flex flex-grow flex-col gap-3">
19 + <div class="agents-list flex grow flex-col gap-3">
20 <template v-if="agentsFiltered.length">
21 <AgentCard
22 v-for="agent in itemsPaginated"
frontend/src/views/agents/DetectionRules.vue
+2 -2
@@ -1,7 +1,7 @@
1 <template>
2 <div class="page page-wrapped page-mobile-full page-without-footer flex flex-col">
3 <SegmentedPage
4 - main-content-class="!p-0 overflow-hidden grow flex flex-col h-full"
4 + main-content-class="p-0! overflow-hidden grow flex flex-col h-full"
5 :use-main-scroll="false"
6 padding="18px"
7 enable-resize
@@ -37,7 +37,7 @@
37 <template #sidebar-content>
38 <n-spin :show="loadingList">
39 <template v-if="fileList.length">
40 - <div class="divide-border flex flex-col divide-y-1">
40 + <div class="divide-border flex flex-col divide-y">
41 <div
42 v-for="item of fileList"
43 :key="item.filename"
frontend/src/views/agents/Groups.vue
+2 -2
@@ -1,7 +1,7 @@
1 <template>
2 <div class="page page-wrapped page-mobile-full page-without-footer flex flex-col">
3 <SegmentedPage
4 - main-content-class="!p-0 overflow-hidden grow flex flex-col h-full"
4 + main-content-class="p-0! overflow-hidden grow flex flex-col h-full"
5 :use-main-scroll="false"
6 padding="18px"
7 enable-resize
@@ -37,7 +37,7 @@
37 <template #sidebar-content>
38 <n-spin :show="loadingGroups">
39 <template v-if="groupsList.length">
40 - <div class="divide-border flex flex-col divide-y-1">
40 + <div class="divide-border flex flex-col divide-y">
41 <div
42 v-for="group of groupsList"
43 :key="group.name"
frontend/src/views/agents/SysmonConfig.vue
+2 -2
@@ -1,7 +1,7 @@
1 <template>
2 <div class="page page-wrapped page-mobile-full page-without-footer flex flex-col">
3 <SegmentedPage
4 - main-content-class="!p-0 overflow-hidden grow flex h-full"
4 + main-content-class="p-0! overflow-hidden grow flex h-full"
5 :use-main-scroll="false"
6 padding="18px"
7 enable-resize
@@ -41,7 +41,7 @@
41 :options="customersOptions"
42 @select="newConfig($event)"
43 >
44 - <n-button secondary class="!mt-4 !w-full" size="large">
44 + <n-button secondary class="mt-4! w-full!" size="large">
45 <template #icon>
46 <Icon :size="18" :name="NewConfigIcon" />
47 </template>
frontend/src/views/graylog/Metrics.vue
+3 -3
@@ -12,19 +12,19 @@
12 </div>
13
14 <div class="toolbar flex items-center gap-3">
15 - <n-button v-if="!isRunning" size="small" type="primary" class="!w-24" @click="start()">
15 + <n-button v-if="!isRunning" size="small" type="primary" class="w-24!" @click="start()">
16 <template #icon>
17 <Icon :name="StartIcon" />
18 </template>
19 Start
20 </n-button>
21 - <n-button v-if="isRunning" size="small" type="error" ghost class="!w-24" @click="stop()">
21 + <n-button v-if="isRunning" size="small" type="error" ghost class="w-24!" @click="stop()">
22 <template #icon>
23 <Icon :name="StopIcon" />
24 </template>
25 Stop
26 </n-button>
27 - <n-select v-model:value="intervalSelected" size="small" :options="intervalOptions" class="!w-36" />
27 + <n-select v-model:value="intervalSelected" size="small" :options="intervalOptions" class="w-36!" />
28 </div>
29 </div>
30
frontend/src/views/graylog/Pipelines.vue
+1 -1
@@ -14,7 +14,7 @@
14 <n-modal
15 v-model:show="showDetails"
16 preset="card"
17 - content-class="!p-0"
17 + content-class="p-0!"
18 :style="{ maxWidth: 'min(600px, 90vw)', overflow: 'hidden' }"
19 :title="highlightPipe?.title"
20 :bordered="false"