Compare commits

..
Author SHA1 Message Date
Lncvrt f2e4e6baa2 Update cdn url 2026-08-10 10:51:37 -07:00
Lncvrt 149c21b65d Make action buttons show on hover 2026-05-31 11:01:34 -07:00
Lncvrt fcd0aee487 try and fix issue 2026-05-31 10:38:02 -07:00
Lncvrt 1f8edb0b6f Improvements 2026-05-31 10:12:16 -07:00
Lncvrt f0ab704940 make swiper buttons same as text color 2026-05-31 10:06:48 -07:00
Lncvrt 0e01e56587 Add geo rays chatroom 2026-05-31 10:05:01 -07:00
Lncvrt 2979d345a9 Add geometry rays 2026-05-30 17:02:54 -07:00
Lncvrt 19ab6f8573 Use custom dropdown 2026-05-30 12:59:52 -07:00
Lncvrt bde6b252d7 Try and make this look how it did with the launcher 2026-05-30 09:49:20 -07:00
Lncvrt 15f7962f3c Remove button moving up on hover effect 2026-05-30 09:43:21 -07:00
Lncvrt 52d0d915f3 Change colors to match launcher more 2026-05-29 16:45:00 -07:00
Lncvrt 87f34f62a3 Add 404 page 2026-05-25 14:10:21 -07:00
Lncvrt 60e02ef0d1 Remove BDU 2026-05-25 14:02:33 -07:00
Lncvrt 553a7cc31b make chatroom work with launcher 2026-05-25 11:17:25 -07:00
Lncvrt 04033e8b6f I have no clue 2026-05-08 14:39:28 -07:00
Lncvrt 9a6c5c269f hopefully fix this so it looks like it did before 2026-05-08 14:17:57 -07:00
Lncvrt e517e3df79 Remove draggable abilities here 2026-05-08 14:16:05 -07:00
Lncvrt 68fd34f095 Match font for launcher flag 2026-05-07 14:03:59 -07:00
Lncvrt c0c43ef79f Changable theme stuff 2026-05-07 13:43:36 -07:00
Lncvrt 3616d9c070 Update dependencies
ESLint is fucked for now but it will still compile.
2026-05-07 13:14:20 -07:00
Lncvrt 7f38306e8e Hide discord & back button with launcher 2026-05-07 13:06:32 -07:00
Lncvrt 98c2dc4f33 stupid 2026-04-19 16:47:03 -07:00
Lncvrt aa8247fe09 Update dependencies 2026-04-19 16:39:53 -07:00
Lncvrt 413a55ea39 Update linux downloads 2026-04-19 16:36:30 -07:00
Lncvrt 607f04dd1f Remove x86 & arm32 support 2026-04-19 16:32:22 -07:00
Lncvrt 9c790eee92 Linux downloads page improvement 2026-04-03 19:50:49 -07:00
Lncvrt 41a23ed8e8 Update downloads page 2026-04-03 12:47:24 -07:00
46 changed files with 894 additions and 533 deletions

No files matched your search

+102 -102
View File
@@ -9,24 +9,24 @@
"@fortawesome/free-brands-svg-icons": "7.2.0", "@fortawesome/free-brands-svg-icons": "7.2.0",
"@fortawesome/free-regular-svg-icons": "7.2.0", "@fortawesome/free-regular-svg-icons": "7.2.0",
"@fortawesome/free-solid-svg-icons": "7.2.0", "@fortawesome/free-solid-svg-icons": "7.2.0",
"@fortawesome/react-fontawesome": "3.3.0", "@fortawesome/react-fontawesome": "3.3.1",
"@marsidev/react-turnstile": "1.5.0", "@marsidev/react-turnstile": "1.5.2",
"axios": "1.14.0", "axios": "1.16.0",
"next": "16.2.2", "next": "16.2.6",
"react": "19.2.4", "react": "19.2.6",
"react-dom": "19.2.4", "react-dom": "19.2.6",
"swiper": "12.1.3", "swiper": "12.1.4",
"ua-parser-js": "2.0.9", "ua-parser-js": "2.0.9",
}, },
"devDependencies": { "devDependencies": {
"@tailwindcss/postcss": "4.2.2", "@tailwindcss/postcss": "4.2.4",
"@types/node": "25.5.0", "@types/node": "25.6.1",
"@types/react": "19.2.14", "@types/react": "19.2.14",
"@types/react-dom": "19.2.3", "@types/react-dom": "19.2.3",
"eslint": "9.39.4", "eslint": "9.39.4",
"eslint-config-next": "16.2.2", "eslint-config-next": "16.2.6",
"tailwindcss": "4.2.2", "tailwindcss": "4.2.4",
"typescript": "5.9.3", "typescript": "6.0.3",
}, },
}, },
}, },
@@ -35,7 +35,7 @@
"@babel/code-frame": ["@babel/code-frame@7.29.0", "", { "dependencies": { "@babel/helper-validator-identifier": "^7.28.5", "js-tokens": "^4.0.0", "picocolors": "^1.1.1" } }, "sha512-9NhCeYjq9+3uxgdtp20LSiJXJvN0FeCtNGpJxuMFZ1Kv3cWUNb6DOhJwUvcVCzKGR66cw4njwM6hrJLqgOwbcw=="], "@babel/code-frame": ["@babel/code-frame@7.29.0", "", { "dependencies": { "@babel/helper-validator-identifier": "^7.28.5", "js-tokens": "^4.0.0", "picocolors": "^1.1.1" } }, "sha512-9NhCeYjq9+3uxgdtp20LSiJXJvN0FeCtNGpJxuMFZ1Kv3cWUNb6DOhJwUvcVCzKGR66cw4njwM6hrJLqgOwbcw=="],
"@babel/compat-data": ["@babel/compat-data@7.29.0", "", {}, "sha512-T1NCJqT/j9+cn8fvkt7jtwbLBfLC/1y1c7NtCeXFRgzGTsafi68MRv8yzkYSapBnFA6L3U2VSc02ciDzoAJhJg=="], "@babel/compat-data": ["@babel/compat-data@7.29.3", "", {}, "sha512-LIVqM46zQWZhj17qA8wb4nW/ixr2y1Nw+r1etiAWgRM6U1IqP+LNhL1yg440jYZR72jCWcWbLWzIosH+uP1fqg=="],
"@babel/core": ["@babel/core@7.29.0", "", { "dependencies": { "@babel/code-frame": "^7.29.0", "@babel/generator": "^7.29.0", "@babel/helper-compilation-targets": "^7.28.6", "@babel/helper-module-transforms": "^7.28.6", "@babel/helpers": "^7.28.6", "@babel/parser": "^7.29.0", "@babel/template": "^7.28.6", "@babel/traverse": "^7.29.0", "@babel/types": "^7.29.0", "@jridgewell/remapping": "^2.3.5", "convert-source-map": "^2.0.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", "json5": "^2.2.3", "semver": "^6.3.1" } }, "sha512-CGOfOJqWjg2qW/Mb6zNsDm+u5vFQ8DxXfbM09z69p5Z6+mE1ikP2jUXw+j42Pf1XTYED2Rni5f95npYeuwMDQA=="], "@babel/core": ["@babel/core@7.29.0", "", { "dependencies": { "@babel/code-frame": "^7.29.0", "@babel/generator": "^7.29.0", "@babel/helper-compilation-targets": "^7.28.6", "@babel/helper-module-transforms": "^7.28.6", "@babel/helpers": "^7.28.6", "@babel/parser": "^7.29.0", "@babel/template": "^7.28.6", "@babel/traverse": "^7.29.0", "@babel/types": "^7.29.0", "@jridgewell/remapping": "^2.3.5", "convert-source-map": "^2.0.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", "json5": "^2.2.3", "semver": "^6.3.1" } }, "sha512-CGOfOJqWjg2qW/Mb6zNsDm+u5vFQ8DxXfbM09z69p5Z6+mE1ikP2jUXw+j42Pf1XTYED2Rni5f95npYeuwMDQA=="],
@@ -57,7 +57,7 @@
"@babel/helpers": ["@babel/helpers@7.29.2", "", { "dependencies": { "@babel/template": "^7.28.6", "@babel/types": "^7.29.0" } }, "sha512-HoGuUs4sCZNezVEKdVcwqmZN8GoHirLUcLaYVNBK2J0DadGtdcqgr3BCbvH8+XUo4NGjNl3VOtSjEKNzqfFgKw=="], "@babel/helpers": ["@babel/helpers@7.29.2", "", { "dependencies": { "@babel/template": "^7.28.6", "@babel/types": "^7.29.0" } }, "sha512-HoGuUs4sCZNezVEKdVcwqmZN8GoHirLUcLaYVNBK2J0DadGtdcqgr3BCbvH8+XUo4NGjNl3VOtSjEKNzqfFgKw=="],
"@babel/parser": ["@babel/parser@7.29.2", "", { "dependencies": { "@babel/types": "^7.29.0" }, "bin": "./bin/babel-parser.js" }, "sha512-4GgRzy/+fsBa72/RZVJmGKPmZu9Byn8o4MoLpmNe1m8ZfYnz5emHLQz3U4gLud6Zwl0RZIcgiLD7Uq7ySFuDLA=="], "@babel/parser": ["@babel/parser@7.29.3", "", { "dependencies": { "@babel/types": "^7.29.0" }, "bin": "./bin/babel-parser.js" }, "sha512-b3ctpQwp+PROvU/cttc4OYl4MzfJUWy6FZg+PMXfzmt/+39iHVF0sDfqay8TQM3JA2EUOyKcFZt75jWriQijsA=="],
"@babel/template": ["@babel/template@7.28.6", "", { "dependencies": { "@babel/code-frame": "^7.28.6", "@babel/parser": "^7.28.6", "@babel/types": "^7.28.6" } }, "sha512-YA6Ma2KsCdGb+WC6UpBVFJGXL58MDA6oyONbjyF/+5sBgxY/dwkhLogbMT2GXXyU84/IhRw/2D1Os1B/giz+BQ=="], "@babel/template": ["@babel/template@7.28.6", "", { "dependencies": { "@babel/code-frame": "^7.28.6", "@babel/parser": "^7.28.6", "@babel/types": "^7.28.6" } }, "sha512-YA6Ma2KsCdGb+WC6UpBVFJGXL58MDA6oyONbjyF/+5sBgxY/dwkhLogbMT2GXXyU84/IhRw/2D1Os1B/giz+BQ=="],
@@ -65,11 +65,11 @@
"@babel/types": ["@babel/types@7.29.0", "", { "dependencies": { "@babel/helper-string-parser": "^7.27.1", "@babel/helper-validator-identifier": "^7.28.5" } }, "sha512-LwdZHpScM4Qz8Xw2iKSzS+cfglZzJGvofQICy7W7v4caru4EaAmyUuO6BGrbyQ2mYV11W0U8j5mBhd14dd3B0A=="], "@babel/types": ["@babel/types@7.29.0", "", { "dependencies": { "@babel/helper-string-parser": "^7.27.1", "@babel/helper-validator-identifier": "^7.28.5" } }, "sha512-LwdZHpScM4Qz8Xw2iKSzS+cfglZzJGvofQICy7W7v4caru4EaAmyUuO6BGrbyQ2mYV11W0U8j5mBhd14dd3B0A=="],
"@emnapi/core": ["@emnapi/core@1.9.1", "", { "dependencies": { "@emnapi/wasi-threads": "1.2.0", "tslib": "^2.4.0" } }, "sha512-mukuNALVsoix/w1BJwFzwXBN/dHeejQtuVzcDsfOEsdpCumXb/E9j8w11h5S54tT1xhifGfbbSm/ICrObRb3KA=="], "@emnapi/core": ["@emnapi/core@1.10.0", "", { "dependencies": { "@emnapi/wasi-threads": "1.2.1", "tslib": "^2.4.0" } }, "sha512-yq6OkJ4p82CAfPl0u9mQebQHKPJkY7WrIuk205cTYnYe+k2Z8YBh11FrbRG/H6ihirqcacOgl2BIO8oyMQLeXw=="],
"@emnapi/runtime": ["@emnapi/runtime@1.9.1", "", { "dependencies": { "tslib": "^2.4.0" } }, "sha512-VYi5+ZVLhpgK4hQ0TAjiQiZ6ol0oe4mBx7mVv7IflsiEp0OWoVsp/+f9Vc1hOhE0TtkORVrI1GvzyreqpgWtkA=="], "@emnapi/runtime": ["@emnapi/runtime@1.10.0", "", { "dependencies": { "tslib": "^2.4.0" } }, "sha512-ewvYlk86xUoGI0zQRNq/mC+16R1QeDlKQy21Ki3oSYXNgLb45GV1P6A0M+/s6nyCuNDqe5VpaY84BzXGwVbwFA=="],
"@emnapi/wasi-threads": ["@emnapi/wasi-threads@1.2.0", "", { "dependencies": { "tslib": "^2.4.0" } }, "sha512-N10dEJNSsUx41Z6pZsXU8FjPjpBEplgH24sfkmITrBED1/U2Esum9F3lfLrMjKHHjmi557zQn7kR9R+XWXu5Rg=="], "@emnapi/wasi-threads": ["@emnapi/wasi-threads@1.2.1", "", { "dependencies": { "tslib": "^2.4.0" } }, "sha512-uTII7OYF+/Mes/MrcIOYp5yOtSMLBWSIoLPpcgwipoiKbli6k322tcoFsxoIIxPDqW01SQGAgko4EzZi2BNv2w=="],
"@eslint-community/eslint-utils": ["@eslint-community/eslint-utils@4.9.1", "", { "dependencies": { "eslint-visitor-keys": "^3.4.3" }, "peerDependencies": { "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" } }, "sha512-phrYmNiYppR7znFEdqgfWHXR6NCkZEK7hwWDHZUjit/2/U0r6XvkDl0SYnoM51Hq7FhCGdLDT6zxCCOY1hexsQ=="], "@eslint-community/eslint-utils": ["@eslint-community/eslint-utils@4.9.1", "", { "dependencies": { "eslint-visitor-keys": "^3.4.3" }, "peerDependencies": { "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" } }, "sha512-phrYmNiYppR7znFEdqgfWHXR6NCkZEK7hwWDHZUjit/2/U0r6XvkDl0SYnoM51Hq7FhCGdLDT6zxCCOY1hexsQ=="],
@@ -99,11 +99,13 @@
"@fortawesome/free-solid-svg-icons": ["@fortawesome/free-solid-svg-icons@7.2.0", "", { "dependencies": { "@fortawesome/fontawesome-common-types": "7.2.0" } }, "sha512-YTVITFGN0/24PxzXrwqCgnyd7njDuzp5ZvaCx5nq/jg55kUYd94Nj8UTchBdBofi/L0nwRfjGOg0E41d2u9T1w=="], "@fortawesome/free-solid-svg-icons": ["@fortawesome/free-solid-svg-icons@7.2.0", "", { "dependencies": { "@fortawesome/fontawesome-common-types": "7.2.0" } }, "sha512-YTVITFGN0/24PxzXrwqCgnyd7njDuzp5ZvaCx5nq/jg55kUYd94Nj8UTchBdBofi/L0nwRfjGOg0E41d2u9T1w=="],
"@fortawesome/react-fontawesome": ["@fortawesome/react-fontawesome@3.3.0", "", { "peerDependencies": { "@fortawesome/fontawesome-svg-core": "~6 || ~7", "react": "^18.0.0 || ^19.0.0" } }, "sha512-EHmHeTf8WgO29sdY3iX/7ekE3gNUdlc2RW6mm/FzELlHFKfTrA9S4MlyquRR+RRCRCn8+jXfLFpLGB2l7wCWyw=="], "@fortawesome/react-fontawesome": ["@fortawesome/react-fontawesome@3.3.1", "", { "peerDependencies": { "@fortawesome/fontawesome-svg-core": "~6 || ~7", "react": "^18.0.0 || ^19.0.0" } }, "sha512-wGnAPhfzivDwBWYmEG8MSrEXPruoiMMo48NnsRkj1NZkoaawgOijPNAiSHKMYEoCsqTBSgLTzL6EqTTWGaUR4w=="],
"@humanfs/core": ["@humanfs/core@0.19.1", "", {}, "sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA=="], "@humanfs/core": ["@humanfs/core@0.19.2", "", { "dependencies": { "@humanfs/types": "^0.15.0" } }, "sha512-UhXNm+CFMWcbChXywFwkmhqjs3PRCmcSa/hfBgLIb7oQ5HNb1wS0icWsGtSAUNgefHeI+eBrA8I1fxmbHsGdvA=="],
"@humanfs/node": ["@humanfs/node@0.16.7", "", { "dependencies": { "@humanfs/core": "^0.19.1", "@humanwhocodes/retry": "^0.4.0" } }, "sha512-/zUx+yOsIrG4Y43Eh2peDeKCxlRt/gET6aHfaKpuq267qXdYDFViVHfMaLyygZOnl0kGWxFIgsBy8QFuTLUXEQ=="], "@humanfs/node": ["@humanfs/node@0.16.8", "", { "dependencies": { "@humanfs/core": "^0.19.2", "@humanfs/types": "^0.15.0", "@humanwhocodes/retry": "^0.4.0" } }, "sha512-gE1eQNZ3R++kTzFUpdGlpmy8kDZD/MLyHqDwqjkVQI0JMdI1D51sy1H958PNXYkM2rAac7e5/CnIKZrHtPh3BQ=="],
"@humanfs/types": ["@humanfs/types@0.15.0", "", {}, "sha512-ZZ1w0aoQkwuUuC7Yf+7sdeaNfqQiiLcSRbfI08oAxqLtpXQr9AIVX7Ay7HLDuiLYAaFPu8oBYNq/QIi9URHJ3Q=="],
"@humanwhocodes/module-importer": ["@humanwhocodes/module-importer@1.0.1", "", {}, "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA=="], "@humanwhocodes/module-importer": ["@humanwhocodes/module-importer@1.0.1", "", {}, "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA=="],
@@ -169,29 +171,29 @@
"@jridgewell/trace-mapping": ["@jridgewell/trace-mapping@0.3.31", "", { "dependencies": { "@jridgewell/resolve-uri": "^3.1.0", "@jridgewell/sourcemap-codec": "^1.4.14" } }, "sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw=="], "@jridgewell/trace-mapping": ["@jridgewell/trace-mapping@0.3.31", "", { "dependencies": { "@jridgewell/resolve-uri": "^3.1.0", "@jridgewell/sourcemap-codec": "^1.4.14" } }, "sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw=="],
"@marsidev/react-turnstile": ["@marsidev/react-turnstile@1.5.0", "", { "peerDependencies": { "react": "^17.0.2 || ^18.0.0 || ^19.0", "react-dom": "^17.0.2 || ^18.0.0 || ^19.0" } }, "sha512-Ph6mcj8u9WBDsBO7s9jKPsyRDz1sBPBJwrk+Ngx09vFInvKsQ6U6kW5amEcGq4dHOreB6DgFrOJk7/fy318YlQ=="], "@marsidev/react-turnstile": ["@marsidev/react-turnstile@1.5.2", "", { "peerDependencies": { "react": "^17.0.2 || ^18.0.0 || ^19.0", "react-dom": "^17.0.2 || ^18.0.0 || ^19.0" } }, "sha512-+3aBPxp86JzSC0ZmgyonoGoUEENcUkH3LGahXSpkV87ArvD2DzRCmPgh0FyQk6PQRmJwQJDAfwNavFsxUxMQWA=="],
"@napi-rs/wasm-runtime": ["@napi-rs/wasm-runtime@0.2.12", "", { "dependencies": { "@emnapi/core": "^1.4.3", "@emnapi/runtime": "^1.4.3", "@tybys/wasm-util": "^0.10.0" } }, "sha512-ZVWUcfwY4E/yPitQJl481FjFo3K22D6qF0DuFH6Y/nbnE11GY5uguDxZMGXPQ8WQ0128MXQD7TnfHyK4oWoIJQ=="], "@napi-rs/wasm-runtime": ["@napi-rs/wasm-runtime@0.2.12", "", { "dependencies": { "@emnapi/core": "^1.4.3", "@emnapi/runtime": "^1.4.3", "@tybys/wasm-util": "^0.10.0" } }, "sha512-ZVWUcfwY4E/yPitQJl481FjFo3K22D6qF0DuFH6Y/nbnE11GY5uguDxZMGXPQ8WQ0128MXQD7TnfHyK4oWoIJQ=="],
"@next/env": ["@next/env@16.2.2", "", {}, "sha512-LqSGz5+xGk9EL/iBDr2yo/CgNQV6cFsNhRR2xhSXYh7B/hb4nePCxlmDvGEKG30NMHDFf0raqSyOZiQrO7BkHQ=="], "@next/env": ["@next/env@16.2.6", "", {}, "sha512-gd8HoHN4ufj73WmR3JmVolrpJR47ILK6LouP5xElPglaVxir6e1a7VzvTvDWkOoPXT9rkkTzyCxBu4yeZfZwcw=="],
"@next/eslint-plugin-next": ["@next/eslint-plugin-next@16.2.2", "", { "dependencies": { "fast-glob": "3.3.1" } }, "sha512-IOPbWzDQ+76AtjZioaCjpIY72xNSDMnarZ2GMQ4wjNLvnJEJHqxQwGFhgnIWLV9klb4g/+amg88Tk5OXVpyLTw=="], "@next/eslint-plugin-next": ["@next/eslint-plugin-next@16.2.6", "", { "dependencies": { "fast-glob": "3.3.1" } }, "sha512-Z8l6o4JWKUl755x4R+wogD86KPeU+Ckw4K+SYG4kHeOJtRenDeK+OSbGcqZpDtbwn9DsJVdir2UxmwXuinUbUw=="],
"@next/swc-darwin-arm64": ["@next/swc-darwin-arm64@16.2.2", "", { "os": "darwin", "cpu": "arm64" }, "sha512-B92G3ulrwmkDSEJEp9+XzGLex5wC1knrmCSIylyVeiAtCIfvEJYiN3v5kXPlYt5R4RFlsfO/v++aKV63Acrugg=="], "@next/swc-darwin-arm64": ["@next/swc-darwin-arm64@16.2.6", "", { "os": "darwin", "cpu": "arm64" }, "sha512-ZJGkkcNfYgrrMkqOdZ7zoLa1TOy0qpcMfk/z4Mh/FKUz40gVO+HNQWqmLxf67Z5WB64DRp0dhEbyHfel+6sJUg=="],
"@next/swc-darwin-x64": ["@next/swc-darwin-x64@16.2.2", "", { "os": "darwin", "cpu": "x64" }, "sha512-7ZwSgNKJNQiwW0CKhNm9B1WS2L1Olc4B2XY0hPYCAL3epFnugMhuw5TMWzMilQ3QCZcCHoYm9NGWTHbr5REFxw=="], "@next/swc-darwin-x64": ["@next/swc-darwin-x64@16.2.6", "", { "os": "darwin", "cpu": "x64" }, "sha512-v/YLBHIY132Ced3puBJ7YJKw1lqsCrgcNo2aRJlCEyQrrCeRJlvGlnmxhPxNQI3KE3N1DN5r9TPNPvka3nq5RQ=="],
"@next/swc-linux-arm64-gnu": ["@next/swc-linux-arm64-gnu@16.2.2", "", { "os": "linux", "cpu": "arm64" }, "sha512-c3m8kBHMziMgo2fICOP/cd/5YlrxDU5YYjAJeQLyFsCqVF8xjOTH/QYG4a2u48CvvZZSj1eHQfBCbyh7kBr30Q=="], "@next/swc-linux-arm64-gnu": ["@next/swc-linux-arm64-gnu@16.2.6", "", { "os": "linux", "cpu": "arm64" }, "sha512-RPOvqlYBbcQjkz9VQQDZ2T2bARIjXZV1KFlt+V2Mr6SW/e4I9fcKsaA0hdyf2FHoTlsV2xnBd5Y912rP/1Ce6w=="],
"@next/swc-linux-arm64-musl": ["@next/swc-linux-arm64-musl@16.2.2", "", { "os": "linux", "cpu": "arm64" }, "sha512-VKLuscm0P/mIfzt+SDdn2+8TNNJ7f0qfEkA+az7OqQbjzKdBxAHs0UvuiVoCtbwX+dqMEL9U54b5wQ/aN3dHeg=="], "@next/swc-linux-arm64-musl": ["@next/swc-linux-arm64-musl@16.2.6", "", { "os": "linux", "cpu": "arm64" }, "sha512-URUTu1+dMkxJsPFgm+OeEvq9wf5sujw0EvgYy80TDGHTSLTnIHeqb0Eu8A3sC95IRgjejQL+kC4mw+4yPxiAXA=="],
"@next/swc-linux-x64-gnu": ["@next/swc-linux-x64-gnu@16.2.2", "", { "os": "linux", "cpu": "x64" }, "sha512-kU3OPHJq6sBUjOk7wc5zJ7/lipn8yGldMoAv4z67j6ov6Xo/JvzA7L7LCsyzzsXmgLEhk3Qkpwqaq/1+XpNR3g=="], "@next/swc-linux-x64-gnu": ["@next/swc-linux-x64-gnu@16.2.6", "", { "os": "linux", "cpu": "x64" }, "sha512-DOj182mPV8G3UkrayLoREM5YEYI+Dk5wv7Ox9xl1fFibAELEsFD0lDPfHIeILlutMMfdyhlzYPELG3peuKaurw=="],
"@next/swc-linux-x64-musl": ["@next/swc-linux-x64-musl@16.2.2", "", { "os": "linux", "cpu": "x64" }, "sha512-CKXRILyErMtUftp+coGcZ38ZwE/Aqq45VMCcRLr2I4OXKrgxIBDXHnBgeX/UMil0S09i2JXaDL3Q+TN8D/cKmg=="], "@next/swc-linux-x64-musl": ["@next/swc-linux-x64-musl@16.2.6", "", { "os": "linux", "cpu": "x64" }, "sha512-HKQ5SP/V/ub73UvF7n/zeJlxk2kLmtL7Wzrg4WfmkjmNos5onJ2tKu7yZOPdL18A6Svfn3max29ym+ry7NkK4g=="],
"@next/swc-win32-arm64-msvc": ["@next/swc-win32-arm64-msvc@16.2.2", "", { "os": "win32", "cpu": "arm64" }, "sha512-sS/jSk5VUoShUqINJFvNjVT7JfR5ORYj/+/ZpOYbbIohv/lQfduWnGAycq2wlknbOql2xOR0DoV0s6Xfcy49+g=="], "@next/swc-win32-arm64-msvc": ["@next/swc-win32-arm64-msvc@16.2.6", "", { "os": "win32", "cpu": "arm64" }, "sha512-LZXpTlPyS5v7HhSmnvsLGP3iIYgYOBnc8r8ArlT55sGHV89bR2HlDdBjWQ+PY6SJMmk8TuVGFuxalnP3k/0Dwg=="],
"@next/swc-win32-x64-msvc": ["@next/swc-win32-x64-msvc@16.2.2", "", { "os": "win32", "cpu": "x64" }, "sha512-aHaKceJgdySReT7qeck5oShucxWRiiEuwCGK8HHALe6yZga8uyFpLkPgaRw3kkF04U7ROogL/suYCNt/+CuXGA=="], "@next/swc-win32-x64-msvc": ["@next/swc-win32-x64-msvc@16.2.6", "", { "os": "win32", "cpu": "x64" }, "sha512-F0+4i0h9J6C4eE3EAPWsoCk7UW/dbzOjyzxY0qnDUOYFu6FFmdZ6l97/XdV3/Nz3VYyO7UWjyEJUXkGqcoXfMA=="],
"@nodelib/fs.scandir": ["@nodelib/fs.scandir@2.1.5", "", { "dependencies": { "@nodelib/fs.stat": "2.0.5", "run-parallel": "^1.1.9" } }, "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g=="], "@nodelib/fs.scandir": ["@nodelib/fs.scandir@2.1.5", "", { "dependencies": { "@nodelib/fs.stat": "2.0.5", "run-parallel": "^1.1.9" } }, "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g=="],
@@ -205,69 +207,69 @@
"@swc/helpers": ["@swc/helpers@0.5.15", "", { "dependencies": { "tslib": "^2.8.0" } }, "sha512-JQ5TuMi45Owi4/BIMAJBoSQoOJu12oOk/gADqlcUL9JEdHB8vyjUSsxqeNXnmXHjYKMi2WcYtezGEEhqUI/E2g=="], "@swc/helpers": ["@swc/helpers@0.5.15", "", { "dependencies": { "tslib": "^2.8.0" } }, "sha512-JQ5TuMi45Owi4/BIMAJBoSQoOJu12oOk/gADqlcUL9JEdHB8vyjUSsxqeNXnmXHjYKMi2WcYtezGEEhqUI/E2g=="],
"@tailwindcss/node": ["@tailwindcss/node@4.2.2", "", { "dependencies": { "@jridgewell/remapping": "^2.3.5", "enhanced-resolve": "^5.19.0", "jiti": "^2.6.1", "lightningcss": "1.32.0", "magic-string": "^0.30.21", "source-map-js": "^1.2.1", "tailwindcss": "4.2.2" } }, "sha512-pXS+wJ2gZpVXqFaUEjojq7jzMpTGf8rU6ipJz5ovJV6PUGmlJ+jvIwGrzdHdQ80Sg+wmQxUFuoW1UAAwHNEdFA=="], "@tailwindcss/node": ["@tailwindcss/node@4.2.4", "", { "dependencies": { "@jridgewell/remapping": "^2.3.5", "enhanced-resolve": "^5.19.0", "jiti": "^2.6.1", "lightningcss": "1.32.0", "magic-string": "^0.30.21", "source-map-js": "^1.2.1", "tailwindcss": "4.2.4" } }, "sha512-Ai7+yQPxz3ddrDQzFfBKdHEVBg0w3Zl83jnjuwxnZOsnH9pGn93QHQtpU0p/8rYWxvbFZHneni6p1BSLK4DkGA=="],
"@tailwindcss/oxide": ["@tailwindcss/oxide@4.2.2", "", { "optionalDependencies": { "@tailwindcss/oxide-android-arm64": "4.2.2", "@tailwindcss/oxide-darwin-arm64": "4.2.2", "@tailwindcss/oxide-darwin-x64": "4.2.2", "@tailwindcss/oxide-freebsd-x64": "4.2.2", "@tailwindcss/oxide-linux-arm-gnueabihf": "4.2.2", "@tailwindcss/oxide-linux-arm64-gnu": "4.2.2", "@tailwindcss/oxide-linux-arm64-musl": "4.2.2", "@tailwindcss/oxide-linux-x64-gnu": "4.2.2", "@tailwindcss/oxide-linux-x64-musl": "4.2.2", "@tailwindcss/oxide-wasm32-wasi": "4.2.2", "@tailwindcss/oxide-win32-arm64-msvc": "4.2.2", "@tailwindcss/oxide-win32-x64-msvc": "4.2.2" } }, "sha512-qEUA07+E5kehxYp9BVMpq9E8vnJuBHfJEC0vPC5e7iL/hw7HR61aDKoVoKzrG+QKp56vhNZe4qwkRmMC0zDLvg=="], "@tailwindcss/oxide": ["@tailwindcss/oxide@4.2.4", "", { "optionalDependencies": { "@tailwindcss/oxide-android-arm64": "4.2.4", "@tailwindcss/oxide-darwin-arm64": "4.2.4", "@tailwindcss/oxide-darwin-x64": "4.2.4", "@tailwindcss/oxide-freebsd-x64": "4.2.4", "@tailwindcss/oxide-linux-arm-gnueabihf": "4.2.4", "@tailwindcss/oxide-linux-arm64-gnu": "4.2.4", "@tailwindcss/oxide-linux-arm64-musl": "4.2.4", "@tailwindcss/oxide-linux-x64-gnu": "4.2.4", "@tailwindcss/oxide-linux-x64-musl": "4.2.4", "@tailwindcss/oxide-wasm32-wasi": "4.2.4", "@tailwindcss/oxide-win32-arm64-msvc": "4.2.4", "@tailwindcss/oxide-win32-x64-msvc": "4.2.4" } }, "sha512-9El/iI069DKDSXwTvB9J4BwdO5JhRrOweGaK25taBAvBXyXqJAX+Jqdvs8r8gKpsI/1m0LeJLyQYTf/WLrBT1Q=="],
"@tailwindcss/oxide-android-arm64": ["@tailwindcss/oxide-android-arm64@4.2.2", "", { "os": "android", "cpu": "arm64" }, "sha512-dXGR1n+P3B6748jZO/SvHZq7qBOqqzQ+yFrXpoOWWALWndF9MoSKAT3Q0fYgAzYzGhxNYOoysRvYlpixRBBoDg=="], "@tailwindcss/oxide-android-arm64": ["@tailwindcss/oxide-android-arm64@4.2.4", "", { "os": "android", "cpu": "arm64" }, "sha512-e7MOr1SAn9U8KlZzPi1ZXGZHeC5anY36qjNwmZv9pOJ8E4Q6jmD1vyEHkQFmNOIN7twGPEMXRHmitN4zCMN03g=="],
"@tailwindcss/oxide-darwin-arm64": ["@tailwindcss/oxide-darwin-arm64@4.2.2", "", { "os": "darwin", "cpu": "arm64" }, "sha512-iq9Qjr6knfMpZHj55/37ouZeykwbDqF21gPFtfnhCCKGDcPI/21FKC9XdMO/XyBM7qKORx6UIhGgg6jLl7BZlg=="], "@tailwindcss/oxide-darwin-arm64": ["@tailwindcss/oxide-darwin-arm64@4.2.4", "", { "os": "darwin", "cpu": "arm64" }, "sha512-tSC/Kbqpz/5/o/C2sG7QvOxAKqyd10bq+ypZNf+9Fi2TvbVbv1zNpcEptcsU7DPROaSbVgUXmrzKhurFvo5eDg=="],
"@tailwindcss/oxide-darwin-x64": ["@tailwindcss/oxide-darwin-x64@4.2.2", "", { "os": "darwin", "cpu": "x64" }, "sha512-BlR+2c3nzc8f2G639LpL89YY4bdcIdUmiOOkv2GQv4/4M0vJlpXEa0JXNHhCHU7VWOKWT/CjqHdTP8aUuDJkuw=="], "@tailwindcss/oxide-darwin-x64": ["@tailwindcss/oxide-darwin-x64@4.2.4", "", { "os": "darwin", "cpu": "x64" }, "sha512-yPyUXn3yO/ufR6+Kzv0t4fCg2qNr90jxXc5QqBpjlPNd0NqyDXcmQb/6weunH/MEDXW5dhyEi+agTDiqa3WsGg=="],
"@tailwindcss/oxide-freebsd-x64": ["@tailwindcss/oxide-freebsd-x64@4.2.2", "", { "os": "freebsd", "cpu": "x64" }, "sha512-YUqUgrGMSu2CDO82hzlQ5qSb5xmx3RUrke/QgnoEx7KvmRJHQuZHZmZTLSuuHwFf0DJPybFMXMYf+WJdxHy/nQ=="], "@tailwindcss/oxide-freebsd-x64": ["@tailwindcss/oxide-freebsd-x64@4.2.4", "", { "os": "freebsd", "cpu": "x64" }, "sha512-BoMIB4vMQtZsXdGLVc2z+P9DbETkiopogfWZKbWwM8b/1Vinbs4YcUwo+kM/KeLkX3Ygrf4/PsRndKaYhS8Eiw=="],
"@tailwindcss/oxide-linux-arm-gnueabihf": ["@tailwindcss/oxide-linux-arm-gnueabihf@4.2.2", "", { "os": "linux", "cpu": "arm" }, "sha512-FPdhvsW6g06T9BWT0qTwiVZYE2WIFo2dY5aCSpjG/S/u1tby+wXoslXS0kl3/KXnULlLr1E3NPRRw0g7t2kgaQ=="], "@tailwindcss/oxide-linux-arm-gnueabihf": ["@tailwindcss/oxide-linux-arm-gnueabihf@4.2.4", "", { "os": "linux", "cpu": "arm" }, "sha512-7pIHBLTHYRAlS7V22JNuTh33yLH4VElwKtB3bwchK/UaKUPpQ0lPQiOWcbm4V3WP2I6fNIJ23vABIvoy2izdwA=="],
"@tailwindcss/oxide-linux-arm64-gnu": ["@tailwindcss/oxide-linux-arm64-gnu@4.2.2", "", { "os": "linux", "cpu": "arm64" }, "sha512-4og1V+ftEPXGttOO7eCmW7VICmzzJWgMx+QXAJRAhjrSjumCwWqMfkDrNu1LXEQzNAwz28NCUpucgQPrR4S2yw=="], "@tailwindcss/oxide-linux-arm64-gnu": ["@tailwindcss/oxide-linux-arm64-gnu@4.2.4", "", { "os": "linux", "cpu": "arm64" }, "sha512-+E4wxJ0ZGOzSH325reXTWB48l42i93kQqMvDyz5gqfRzRZ7faNhnmvlV4EPGJU3QJM/3Ab5jhJ5pCRUsKn6OQw=="],
"@tailwindcss/oxide-linux-arm64-musl": ["@tailwindcss/oxide-linux-arm64-musl@4.2.2", "", { "os": "linux", "cpu": "arm64" }, "sha512-oCfG/mS+/+XRlwNjnsNLVwnMWYH7tn/kYPsNPh+JSOMlnt93mYNCKHYzylRhI51X+TbR+ufNhhKKzm6QkqX8ag=="], "@tailwindcss/oxide-linux-arm64-musl": ["@tailwindcss/oxide-linux-arm64-musl@4.2.4", "", { "os": "linux", "cpu": "arm64" }, "sha512-bBADEGAbo4ASnppIziaQJelekCxdMaxisrk+fB7Thit72IBnALp9K6ffA2G4ruj90G9XRS2VQ6q2bCKbfFV82g=="],
"@tailwindcss/oxide-linux-x64-gnu": ["@tailwindcss/oxide-linux-x64-gnu@4.2.2", "", { "os": "linux", "cpu": "x64" }, "sha512-rTAGAkDgqbXHNp/xW0iugLVmX62wOp2PoE39BTCGKjv3Iocf6AFbRP/wZT/kuCxC9QBh9Pu8XPkv/zCZB2mcMg=="], "@tailwindcss/oxide-linux-x64-gnu": ["@tailwindcss/oxide-linux-x64-gnu@4.2.4", "", { "os": "linux", "cpu": "x64" }, "sha512-7Mx25E4WTfnht0TVRTyC00j3i0M+EeFe7wguMDTlX4mRxafznw0CA8WJkFjWYH5BlgELd1kSjuU2JiPnNZbJDA=="],
"@tailwindcss/oxide-linux-x64-musl": ["@tailwindcss/oxide-linux-x64-musl@4.2.2", "", { "os": "linux", "cpu": "x64" }, "sha512-XW3t3qwbIwiSyRCggeO2zxe3KWaEbM0/kW9e8+0XpBgyKU4ATYzcVSMKteZJ1iukJ3HgHBjbg9P5YPRCVUxlnQ=="], "@tailwindcss/oxide-linux-x64-musl": ["@tailwindcss/oxide-linux-x64-musl@4.2.4", "", { "os": "linux", "cpu": "x64" }, "sha512-2wwJRF7nyhOR0hhHoChc04xngV3iS+akccHTGtz965FwF0up4b2lOdo6kI1EbDaEXKgvcrFBYcYQQ/rrnWFVfA=="],
"@tailwindcss/oxide-wasm32-wasi": ["@tailwindcss/oxide-wasm32-wasi@4.2.2", "", { "dependencies": { "@emnapi/core": "^1.8.1", "@emnapi/runtime": "^1.8.1", "@emnapi/wasi-threads": "^1.1.0", "@napi-rs/wasm-runtime": "^1.1.1", "@tybys/wasm-util": "^0.10.1", "tslib": "^2.8.1" }, "cpu": "none" }, "sha512-eKSztKsmEsn1O5lJ4ZAfyn41NfG7vzCg496YiGtMDV86jz1q/irhms5O0VrY6ZwTUkFy/EKG3RfWgxSI3VbZ8Q=="], "@tailwindcss/oxide-wasm32-wasi": ["@tailwindcss/oxide-wasm32-wasi@4.2.4", "", { "dependencies": { "@emnapi/core": "^1.8.1", "@emnapi/runtime": "^1.8.1", "@emnapi/wasi-threads": "^1.1.0", "@napi-rs/wasm-runtime": "^1.1.1", "@tybys/wasm-util": "^0.10.1", "tslib": "^2.8.1" }, "cpu": "none" }, "sha512-FQsqApeor8Fo6gUEklzmaa9994orJZZDBAlQpK2Mq+DslRKFJeD6AjHpBQ0kZFQohVr8o85PPh8eOy86VlSCmw=="],
"@tailwindcss/oxide-win32-arm64-msvc": ["@tailwindcss/oxide-win32-arm64-msvc@4.2.2", "", { "os": "win32", "cpu": "arm64" }, "sha512-qPmaQM4iKu5mxpsrWZMOZRgZv1tOZpUm+zdhhQP0VhJfyGGO3aUKdbh3gDZc/dPLQwW4eSqWGrrcWNBZWUWaXQ=="], "@tailwindcss/oxide-win32-arm64-msvc": ["@tailwindcss/oxide-win32-arm64-msvc@4.2.4", "", { "os": "win32", "cpu": "arm64" }, "sha512-L9BXqxC4ToVgwMFqj3pmZRqyHEztulpUJzCxUtLjobMCzTPsGt1Fa9enKbOpY2iIyVtaHNeNvAK8ERP/64sqGQ=="],
"@tailwindcss/oxide-win32-x64-msvc": ["@tailwindcss/oxide-win32-x64-msvc@4.2.2", "", { "os": "win32", "cpu": "x64" }, "sha512-1T/37VvI7WyH66b+vqHj/cLwnCxt7Qt3WFu5Q8hk65aOvlwAhs7rAp1VkulBJw/N4tMirXjVnylTR72uI0HGcA=="], "@tailwindcss/oxide-win32-x64-msvc": ["@tailwindcss/oxide-win32-x64-msvc@4.2.4", "", { "os": "win32", "cpu": "x64" }, "sha512-ESlKG0EpVJQwRjXDDa9rLvhEAh0mhP1sF7sap9dNZT0yyl9SAG6T7gdP09EH0vIv0UNTlo6jPWyujD6559fZvw=="],
"@tailwindcss/postcss": ["@tailwindcss/postcss@4.2.2", "", { "dependencies": { "@alloc/quick-lru": "^5.2.0", "@tailwindcss/node": "4.2.2", "@tailwindcss/oxide": "4.2.2", "postcss": "^8.5.6", "tailwindcss": "4.2.2" } }, "sha512-n4goKQbW8RVXIbNKRB/45LzyUqN451deQK0nzIeauVEqjlI49slUlgKYJM2QyUzap/PcpnS7kzSUmPb1sCRvYQ=="], "@tailwindcss/postcss": ["@tailwindcss/postcss@4.2.4", "", { "dependencies": { "@alloc/quick-lru": "^5.2.0", "@tailwindcss/node": "4.2.4", "@tailwindcss/oxide": "4.2.4", "postcss": "^8.5.6", "tailwindcss": "4.2.4" } }, "sha512-wgAVj6nUWAolAu8YFvzT2cTBIElWHkjZwFYovF+xsqKsW2ADxM/X2opxj5NsF/qVccAOjRNe8X2IdPzMsWyHTg=="],
"@tybys/wasm-util": ["@tybys/wasm-util@0.10.1", "", { "dependencies": { "tslib": "^2.4.0" } }, "sha512-9tTaPJLSiejZKx+Bmog4uSubteqTvFrVrURwkmHixBo0G4seD0zUxp98E1DzUBJxLQ3NPwXrGKDiVjwx/DpPsg=="], "@tybys/wasm-util": ["@tybys/wasm-util@0.10.2", "", { "dependencies": { "tslib": "^2.4.0" } }, "sha512-RoBvJ2X0wuKlWFIjrwffGw1IqZHKQqzIchKaadZZfnNpsAYp2mM0h36JtPCjNDAHGgYez/15uMBpfGwchhiMgg=="],
"@types/estree": ["@types/estree@1.0.8", "", {}, "sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w=="], "@types/estree": ["@types/estree@1.0.9", "", {}, "sha512-GhdPgy1el4/ImP05X05Uw4cw2/M93BCUmnEvWZNStlCzEKME4Fkk+YpoA5OiHNQmoS7Cafb8Xa3Pya8m1Qrzeg=="],
"@types/json-schema": ["@types/json-schema@7.0.15", "", {}, "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA=="], "@types/json-schema": ["@types/json-schema@7.0.15", "", {}, "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA=="],
"@types/json5": ["@types/json5@0.0.29", "", {}, "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ=="], "@types/json5": ["@types/json5@0.0.29", "", {}, "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ=="],
"@types/node": ["@types/node@25.5.0", "", { "dependencies": { "undici-types": "~7.18.0" } }, "sha512-jp2P3tQMSxWugkCUKLRPVUpGaL5MVFwF8RDuSRztfwgN1wmqJeMSbKlnEtQqU8UrhTmzEmZdu2I6v2dpp7XIxw=="], "@types/node": ["@types/node@25.6.1", "", { "dependencies": { "undici-types": "~7.19.0" } }, "sha512-coJCN8O1q4AGyyqCAUSP06P+SrMTu18BkEj3NVAK07q6QUneD2wzj3CLv9+yP+BMeZQlMvneXqqvDe3w+xcq7g=="],
"@types/react": ["@types/react@19.2.14", "", { "dependencies": { "csstype": "^3.2.2" } }, "sha512-ilcTH/UniCkMdtexkoCN0bI7pMcJDvmQFPvuPvmEaYA/NSfFTAgdUSLAoVjaRJm7+6PvcM+q1zYOwS4wTYMF9w=="], "@types/react": ["@types/react@19.2.14", "", { "dependencies": { "csstype": "^3.2.2" } }, "sha512-ilcTH/UniCkMdtexkoCN0bI7pMcJDvmQFPvuPvmEaYA/NSfFTAgdUSLAoVjaRJm7+6PvcM+q1zYOwS4wTYMF9w=="],
"@types/react-dom": ["@types/react-dom@19.2.3", "", { "peerDependencies": { "@types/react": "^19.2.0" } }, "sha512-jp2L/eY6fn+KgVVQAOqYItbF0VY/YApe5Mz2F0aykSO8gx31bYCZyvSeYxCHKvzHG5eZjc+zyaS5BrBWya2+kQ=="], "@types/react-dom": ["@types/react-dom@19.2.3", "", { "peerDependencies": { "@types/react": "^19.2.0" } }, "sha512-jp2L/eY6fn+KgVVQAOqYItbF0VY/YApe5Mz2F0aykSO8gx31bYCZyvSeYxCHKvzHG5eZjc+zyaS5BrBWya2+kQ=="],
"@typescript-eslint/eslint-plugin": ["@typescript-eslint/eslint-plugin@8.58.0", "", { "dependencies": { "@eslint-community/regexpp": "^4.12.2", "@typescript-eslint/scope-manager": "8.58.0", "@typescript-eslint/type-utils": "8.58.0", "@typescript-eslint/utils": "8.58.0", "@typescript-eslint/visitor-keys": "8.58.0", "ignore": "^7.0.5", "natural-compare": "^1.4.0", "ts-api-utils": "^2.5.0" }, "peerDependencies": { "@typescript-eslint/parser": "^8.58.0", "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", "typescript": ">=4.8.4 <6.1.0" } }, "sha512-RLkVSiNuUP1C2ROIWfqX+YcUfLaSnxGE/8M+Y57lopVwg9VTYYfhuz15Yf1IzCKgZj6/rIbYTmJCUSqr76r0Wg=="], "@typescript-eslint/eslint-plugin": ["@typescript-eslint/eslint-plugin@8.59.2", "", { "dependencies": { "@eslint-community/regexpp": "^4.12.2", "@typescript-eslint/scope-manager": "8.59.2", "@typescript-eslint/type-utils": "8.59.2", "@typescript-eslint/utils": "8.59.2", "@typescript-eslint/visitor-keys": "8.59.2", "ignore": "^7.0.5", "natural-compare": "^1.4.0", "ts-api-utils": "^2.5.0" }, "peerDependencies": { "@typescript-eslint/parser": "^8.59.2", "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", "typescript": ">=4.8.4 <6.1.0" } }, "sha512-j/bwmkBvHUtPNxzuWe5z6BEk3q54YRyGlBXkSsmfoih7zNrBvl5A9A98anlp/7JbyZcWIJ8KXo/3Tq/DjFLtuQ=="],
"@typescript-eslint/parser": ["@typescript-eslint/parser@8.58.0", "", { "dependencies": { "@typescript-eslint/scope-manager": "8.58.0", "@typescript-eslint/types": "8.58.0", "@typescript-eslint/typescript-estree": "8.58.0", "@typescript-eslint/visitor-keys": "8.58.0", "debug": "^4.4.3" }, "peerDependencies": { "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", "typescript": ">=4.8.4 <6.1.0" } }, "sha512-rLoGZIf9afaRBYsPUMtvkDWykwXwUPL60HebR4JgTI8mxfFe2cQTu3AGitANp4b9B2QlVru6WzjgB2IzJKiCSA=="], "@typescript-eslint/parser": ["@typescript-eslint/parser@8.59.2", "", { "dependencies": { "@typescript-eslint/scope-manager": "8.59.2", "@typescript-eslint/types": "8.59.2", "@typescript-eslint/typescript-estree": "8.59.2", "@typescript-eslint/visitor-keys": "8.59.2", "debug": "^4.4.3" }, "peerDependencies": { "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", "typescript": ">=4.8.4 <6.1.0" } }, "sha512-plR3pp6D+SSUn1HM7xvSkx12/DhoHInI2YF35KAcVFNZvlC0gtrWqx7Qq1oH2Ssgi0vlFRCTbP+DZc7B9+TtsQ=="],
"@typescript-eslint/project-service": ["@typescript-eslint/project-service@8.58.0", "", { "dependencies": { "@typescript-eslint/tsconfig-utils": "^8.58.0", "@typescript-eslint/types": "^8.58.0", "debug": "^4.4.3" }, "peerDependencies": { "typescript": ">=4.8.4 <6.1.0" } }, "sha512-8Q/wBPWLQP1j16NxoPNIKpDZFMaxl7yWIoqXWYeWO+Bbd2mjgvoF0dxP2jKZg5+x49rgKdf7Ck473M8PC3V9lg=="], "@typescript-eslint/project-service": ["@typescript-eslint/project-service@8.59.2", "", { "dependencies": { "@typescript-eslint/tsconfig-utils": "^8.59.2", "@typescript-eslint/types": "^8.59.2", "debug": "^4.4.3" }, "peerDependencies": { "typescript": ">=4.8.4 <6.1.0" } }, "sha512-+2hqvEkeyf/0FBor67duF0Ll7Ot8jyKzDQOSrxazF/danillRq2DwR9dLptsXpoZQqxE1UisSmoZewrlPas9Vw=="],
"@typescript-eslint/scope-manager": ["@typescript-eslint/scope-manager@8.58.0", "", { "dependencies": { "@typescript-eslint/types": "8.58.0", "@typescript-eslint/visitor-keys": "8.58.0" } }, "sha512-W1Lur1oF50FxSnNdGp3Vs6P+yBRSmZiw4IIjEeYxd8UQJwhUF0gDgDD/W/Tgmh73mxgEU3qX0Bzdl/NGuSPEpQ=="], "@typescript-eslint/scope-manager": ["@typescript-eslint/scope-manager@8.59.2", "", { "dependencies": { "@typescript-eslint/types": "8.59.2", "@typescript-eslint/visitor-keys": "8.59.2" } }, "sha512-JzfyEpEtOU89CcFSwyNS3mu4MLvLSXqnmX05+aKBDM+TdR5jzcGOEBwxwGNxrEQ7p/z6kK2WyioCGBf2zZBnvg=="],
"@typescript-eslint/tsconfig-utils": ["@typescript-eslint/tsconfig-utils@8.58.0", "", { "peerDependencies": { "typescript": ">=4.8.4 <6.1.0" } }, "sha512-doNSZEVJsWEu4htiVC+PR6NpM+pa+a4ClH9INRWOWCUzMst/VA9c4gXq92F8GUD1rwhNvRLkgjfYtFXegXQF7A=="], "@typescript-eslint/tsconfig-utils": ["@typescript-eslint/tsconfig-utils@8.59.2", "", { "peerDependencies": { "typescript": ">=4.8.4 <6.1.0" } }, "sha512-BKK4alN7oi4C/zv4VqHQ+uRU+lTa6JGIZ7s1juw7b3RHo9OfKB+bKX3u0iVZetdsUCBBkSbdWbarJbmN0fTeSw=="],
"@typescript-eslint/type-utils": ["@typescript-eslint/type-utils@8.58.0", "", { "dependencies": { "@typescript-eslint/types": "8.58.0", "@typescript-eslint/typescript-estree": "8.58.0", "@typescript-eslint/utils": "8.58.0", "debug": "^4.4.3", "ts-api-utils": "^2.5.0" }, "peerDependencies": { "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", "typescript": ">=4.8.4 <6.1.0" } }, "sha512-aGsCQImkDIqMyx1u4PrVlbi/krmDsQUs4zAcCV6M7yPcPev+RqVlndsJy9kJ8TLihW9TZ0kbDAzctpLn5o+lOg=="], "@typescript-eslint/type-utils": ["@typescript-eslint/type-utils@8.59.2", "", { "dependencies": { "@typescript-eslint/types": "8.59.2", "@typescript-eslint/typescript-estree": "8.59.2", "@typescript-eslint/utils": "8.59.2", "debug": "^4.4.3", "ts-api-utils": "^2.5.0" }, "peerDependencies": { "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", "typescript": ">=4.8.4 <6.1.0" } }, "sha512-nhqaj1nmTdVVl/BP5omXNRGO38jn5iosis2vbdmupF2txCf8ylWT8lx+JlvMYYVqzGVKtjojUFoQ3JRWK+mfzQ=="],
"@typescript-eslint/types": ["@typescript-eslint/types@8.58.0", "", {}, "sha512-O9CjxypDT89fbHxRfETNoAnHj/i6IpRK0CvbVN3qibxlLdo5p5hcLmUuCCrHMpxiWSwKyI8mCP7qRNYuOJ0Uww=="], "@typescript-eslint/types": ["@typescript-eslint/types@8.59.2", "", {}, "sha512-e82GVOE8Ps3E++Egvb6Y3Dw0S10u8NkQ9KXmtRhCWJJ8kDhOJTvtMAWnFL16kB1583goCWXsr0NieKCZMs2/0Q=="],
"@typescript-eslint/typescript-estree": ["@typescript-eslint/typescript-estree@8.58.0", "", { "dependencies": { "@typescript-eslint/project-service": "8.58.0", "@typescript-eslint/tsconfig-utils": "8.58.0", "@typescript-eslint/types": "8.58.0", "@typescript-eslint/visitor-keys": "8.58.0", "debug": "^4.4.3", "minimatch": "^10.2.2", "semver": "^7.7.3", "tinyglobby": "^0.2.15", "ts-api-utils": "^2.5.0" }, "peerDependencies": { "typescript": ">=4.8.4 <6.1.0" } }, "sha512-7vv5UWbHqew/dvs+D3e1RvLv1v2eeZ9txRHPnEEBUgSNLx5ghdzjHa0sgLWYVKssH+lYmV0JaWdoubo0ncGYLA=="], "@typescript-eslint/typescript-estree": ["@typescript-eslint/typescript-estree@8.59.2", "", { "dependencies": { "@typescript-eslint/project-service": "8.59.2", "@typescript-eslint/tsconfig-utils": "8.59.2", "@typescript-eslint/types": "8.59.2", "@typescript-eslint/visitor-keys": "8.59.2", "debug": "^4.4.3", "minimatch": "^10.2.2", "semver": "^7.7.3", "tinyglobby": "^0.2.15", "ts-api-utils": "^2.5.0" }, "peerDependencies": { "typescript": ">=4.8.4 <6.1.0" } }, "sha512-o0XPGNwcWw+FIwStOWn+BwBuEmL6QXP0rsvAFg7ET1dey1Nr6Wb1ac8p5HEsK0ygO/6mUxlk+YWQD9xcb/nnXg=="],
"@typescript-eslint/utils": ["@typescript-eslint/utils@8.58.0", "", { "dependencies": { "@eslint-community/eslint-utils": "^4.9.1", "@typescript-eslint/scope-manager": "8.58.0", "@typescript-eslint/types": "8.58.0", "@typescript-eslint/typescript-estree": "8.58.0" }, "peerDependencies": { "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", "typescript": ">=4.8.4 <6.1.0" } }, "sha512-RfeSqcFeHMHlAWzt4TBjWOAtoW9lnsAGiP3GbaX9uVgTYYrMbVnGONEfUCiSss+xMHFl+eHZiipmA8WkQ7FuNA=="], "@typescript-eslint/utils": ["@typescript-eslint/utils@8.59.2", "", { "dependencies": { "@eslint-community/eslint-utils": "^4.9.1", "@typescript-eslint/scope-manager": "8.59.2", "@typescript-eslint/types": "8.59.2", "@typescript-eslint/typescript-estree": "8.59.2" }, "peerDependencies": { "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", "typescript": ">=4.8.4 <6.1.0" } }, "sha512-Juw3EinkXqjaffxz6roowvV7GZT/kET5vSKKZT6upl5TXdWkLkYmNPXwDDL2Vkt2DPn0nODIS4egC/0AGxKo/Q=="],
"@typescript-eslint/visitor-keys": ["@typescript-eslint/visitor-keys@8.58.0", "", { "dependencies": { "@typescript-eslint/types": "8.58.0", "eslint-visitor-keys": "^5.0.0" } }, "sha512-XJ9UD9+bbDo4a4epraTwG3TsNPeiB9aShrUneAVXy8q4LuwowN+qu89/6ByLMINqvIMeI9H9hOHQtg/ijrYXzQ=="], "@typescript-eslint/visitor-keys": ["@typescript-eslint/visitor-keys@8.59.2", "", { "dependencies": { "@typescript-eslint/types": "8.59.2", "eslint-visitor-keys": "^5.0.0" } }, "sha512-NwjLUnGy8/Zfx23fl50tRC8rYaYnM52xNRYFAXvmiil9yh1+K6aRVQMnzW6gQB/1DLgWt977lYQn7C+wtgXZiA=="],
"@unrs/resolver-binding-android-arm-eabi": ["@unrs/resolver-binding-android-arm-eabi@1.11.1", "", { "os": "android", "cpu": "arm" }, "sha512-ppLRUgHVaGRWUx0R0Ut06Mjo9gBaBkg3v/8AxusGLhsIotbBLuRk51rAzqLC8gq6NyyAojEXglNjzf6R948DNw=="], "@unrs/resolver-binding-android-arm-eabi": ["@unrs/resolver-binding-android-arm-eabi@1.11.1", "", { "os": "android", "cpu": "arm" }, "sha512-ppLRUgHVaGRWUx0R0Ut06Mjo9gBaBkg3v/8AxusGLhsIotbBLuRk51rAzqLC8gq6NyyAojEXglNjzf6R948DNw=="],
@@ -311,7 +313,7 @@
"acorn-jsx": ["acorn-jsx@5.3.2", "", { "peerDependencies": { "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" } }, "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ=="], "acorn-jsx": ["acorn-jsx@5.3.2", "", { "peerDependencies": { "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" } }, "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ=="],
"ajv": ["ajv@6.14.0", "", { "dependencies": { "fast-deep-equal": "^3.1.1", "fast-json-stable-stringify": "^2.0.0", "json-schema-traverse": "^0.4.1", "uri-js": "^4.2.2" } }, "sha512-IWrosm/yrn43eiKqkfkHis7QioDleaXQHdDVPKg0FSwwd/DuvyX79TZnFOnYpB7dcsFAMmtFztZuXPDvSePkFw=="], "ajv": ["ajv@6.15.0", "", { "dependencies": { "fast-deep-equal": "^3.1.1", "fast-json-stable-stringify": "^2.0.0", "json-schema-traverse": "^0.4.1", "uri-js": "^4.2.2" } }, "sha512-fgFx7Hfoq60ytK2c7DhnF8jIvzYgOMxfugjLOSMHjLIPgenqa7S7oaagATUq99mV6IYvN2tRmC0wnTYX6iPbMw=="],
"ansi-styles": ["ansi-styles@4.3.0", "", { "dependencies": { "color-convert": "^2.0.1" } }, "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg=="], "ansi-styles": ["ansi-styles@4.3.0", "", { "dependencies": { "color-convert": "^2.0.1" } }, "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg=="],
@@ -343,23 +345,23 @@
"available-typed-arrays": ["available-typed-arrays@1.0.7", "", { "dependencies": { "possible-typed-array-names": "^1.0.0" } }, "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ=="], "available-typed-arrays": ["available-typed-arrays@1.0.7", "", { "dependencies": { "possible-typed-array-names": "^1.0.0" } }, "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ=="],
"axe-core": ["axe-core@4.11.2", "", {}, "sha512-byD6KPdvo72y/wj2T/4zGEvvlis+PsZsn/yPS3pEO+sFpcrqRpX/TJCxvVaEsNeMrfQbCr7w163YqoD9IYwHXw=="], "axe-core": ["axe-core@4.11.4", "", {}, "sha512-KunSNx+TVpkAw/6ULfhnx+HWRecjqZGTOyquAoWHYLRSdK1tB5Ihce1ZW+UY3fj33bYAFWPu7W/GRSmmrCGuxA=="],
"axios": ["axios@1.14.0", "", { "dependencies": { "follow-redirects": "^1.15.11", "form-data": "^4.0.5", "proxy-from-env": "^2.1.0" } }, "sha512-3Y8yrqLSwjuzpXuZ0oIYZ/XGgLwUIBU3uLvbcpb0pidD9ctpShJd43KSlEEkVQg6DS0G9NKyzOvBfUtDKEyHvQ=="], "axios": ["axios@1.16.0", "", { "dependencies": { "follow-redirects": "^1.16.0", "form-data": "^4.0.5", "proxy-from-env": "^2.1.0" } }, "sha512-6hp5CwvTPlN2A31g5dxnwAX0orzM7pmCRDLnZSX772mv8WDqICwFjowHuPs04Mc8deIld1+ejhtaMn5vp6b+1w=="],
"axobject-query": ["axobject-query@4.1.0", "", {}, "sha512-qIj0G9wZbMGNLjLmg1PT6v2mE9AH2zlnADJD/2tC6E00hgmhUOfEB6greHPAfLRSufHqROIUTkw6E+M3lH0PTQ=="], "axobject-query": ["axobject-query@4.1.0", "", {}, "sha512-qIj0G9wZbMGNLjLmg1PT6v2mE9AH2zlnADJD/2tC6E00hgmhUOfEB6greHPAfLRSufHqROIUTkw6E+M3lH0PTQ=="],
"balanced-match": ["balanced-match@1.0.2", "", {}, "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw=="], "balanced-match": ["balanced-match@1.0.2", "", {}, "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw=="],
"baseline-browser-mapping": ["baseline-browser-mapping@2.10.13", "", { "bin": { "baseline-browser-mapping": "dist/cli.cjs" } }, "sha512-BL2sTuHOdy0YT1lYieUxTw/QMtPBC3pmlJC6xk8BBYVv6vcw3SGdKemQ+Xsx9ik2F/lYDO9tqsFQH1r9PFuHKw=="], "baseline-browser-mapping": ["baseline-browser-mapping@2.10.27", "", { "bin": { "baseline-browser-mapping": "dist/cli.cjs" } }, "sha512-zEs/ufmZoUd7WftKpKyXaT6RFxpQ5Qm9xytKRHvJfxFV9DFJkZph9RvJ1LcOUi0Z1ZVijMte65JbILeV+8QQEA=="],
"brace-expansion": ["brace-expansion@1.1.13", "", { "dependencies": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" } }, "sha512-9ZLprWS6EENmhEOpjCYW2c8VkmOvckIJZfkr7rBW6dObmfgJ/L1GpSYW5Hpo9lDz4D1+n0Ckz8rU7FwHDQiG/w=="], "brace-expansion": ["brace-expansion@1.1.14", "", { "dependencies": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" } }, "sha512-MWPGfDxnyzKU7rNOW9SP/c50vi3xrmrua/+6hfPbCS2ABNWfx24vPidzvC7krjU/RTo235sV776ymlsMtGKj8g=="],
"braces": ["braces@3.0.3", "", { "dependencies": { "fill-range": "^7.1.1" } }, "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA=="], "braces": ["braces@3.0.3", "", { "dependencies": { "fill-range": "^7.1.1" } }, "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA=="],
"browserslist": ["browserslist@4.28.2", "", { "dependencies": { "baseline-browser-mapping": "^2.10.12", "caniuse-lite": "^1.0.30001782", "electron-to-chromium": "^1.5.328", "node-releases": "^2.0.36", "update-browserslist-db": "^1.2.3" }, "bin": { "browserslist": "cli.js" } }, "sha512-48xSriZYYg+8qXna9kwqjIVzuQxi+KYWp2+5nCYnYKPTr0LvD89Jqk2Or5ogxz0NUMfIjhh2lIUX/LyX9B4oIg=="], "browserslist": ["browserslist@4.28.2", "", { "dependencies": { "baseline-browser-mapping": "^2.10.12", "caniuse-lite": "^1.0.30001782", "electron-to-chromium": "^1.5.328", "node-releases": "^2.0.36", "update-browserslist-db": "^1.2.3" }, "bin": { "browserslist": "cli.js" } }, "sha512-48xSriZYYg+8qXna9kwqjIVzuQxi+KYWp2+5nCYnYKPTr0LvD89Jqk2Or5ogxz0NUMfIjhh2lIUX/LyX9B4oIg=="],
"call-bind": ["call-bind@1.0.8", "", { "dependencies": { "call-bind-apply-helpers": "^1.0.0", "es-define-property": "^1.0.0", "get-intrinsic": "^1.2.4", "set-function-length": "^1.2.2" } }, "sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww=="], "call-bind": ["call-bind@1.0.9", "", { "dependencies": { "call-bind-apply-helpers": "^1.0.2", "es-define-property": "^1.0.1", "get-intrinsic": "^1.3.0", "set-function-length": "^1.2.2" } }, "sha512-a/hy+pNsFUTR+Iz8TCJvXudKVLAnz/DyeSUo10I5yvFDQJBFU2s9uqQpoSrJlroHUKoKqzg+epxyP9lqFdzfBQ=="],
"call-bind-apply-helpers": ["call-bind-apply-helpers@1.0.2", "", { "dependencies": { "es-errors": "^1.3.0", "function-bind": "^1.1.2" } }, "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ=="], "call-bind-apply-helpers": ["call-bind-apply-helpers@1.0.2", "", { "dependencies": { "es-errors": "^1.3.0", "function-bind": "^1.1.2" } }, "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ=="],
@@ -367,7 +369,7 @@
"callsites": ["callsites@3.1.0", "", {}, "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ=="], "callsites": ["callsites@3.1.0", "", {}, "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ=="],
"caniuse-lite": ["caniuse-lite@1.0.30001784", "", {}, "sha512-WU346nBTklUV9YfUl60fqRbU5ZqyXlqvo1SgigE1OAXK5bFL8LL9q1K7aap3N739l4BvNqnkm3YrGHiY9sfUQw=="], "caniuse-lite": ["caniuse-lite@1.0.30001792", "", {}, "sha512-hVLMUZFgR4JJ6ACt1uEESvQN1/dBVqPAKY0hgrV70eN3391K6juAfTjKZLKvOMsx8PxA7gsY1/tLMMTcfFLLpw=="],
"chalk": ["chalk@4.1.2", "", { "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" } }, "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA=="], "chalk": ["chalk@4.1.2", "", { "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" } }, "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA=="],
@@ -413,19 +415,19 @@
"dunder-proto": ["dunder-proto@1.0.1", "", { "dependencies": { "call-bind-apply-helpers": "^1.0.1", "es-errors": "^1.3.0", "gopd": "^1.2.0" } }, "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A=="], "dunder-proto": ["dunder-proto@1.0.1", "", { "dependencies": { "call-bind-apply-helpers": "^1.0.1", "es-errors": "^1.3.0", "gopd": "^1.2.0" } }, "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A=="],
"electron-to-chromium": ["electron-to-chromium@1.5.330", "", {}, "sha512-jFNydB5kFtYUobh4IkWUnXeyDbjf/r9gcUEXe1xcrcUxIGfTdzPXA+ld6zBRbwvgIGVzDll/LTIiDztEtckSnA=="], "electron-to-chromium": ["electron-to-chromium@1.5.352", "", {}, "sha512-9wHk8x6dyuimoe18EdiDPWKExNdxYqo4fn4FwOVVper6RxT3cmpBwBkWWfSOCYJjQdIco/nPhJhNLmn4Ufg1Yg=="],
"emoji-regex": ["emoji-regex@9.2.2", "", {}, "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg=="], "emoji-regex": ["emoji-regex@9.2.2", "", {}, "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg=="],
"enhanced-resolve": ["enhanced-resolve@5.20.1", "", { "dependencies": { "graceful-fs": "^4.2.4", "tapable": "^2.3.0" } }, "sha512-Qohcme7V1inbAfvjItgw0EaxVX5q2rdVEZHRBrEQdRZTssLDGsL8Lwrznl8oQ/6kuTJONLaDcGjkNP247XEhcA=="], "enhanced-resolve": ["enhanced-resolve@5.21.1", "", { "dependencies": { "graceful-fs": "^4.2.4", "tapable": "^2.3.3" } }, "sha512-8p7DUVq6XJnZEz9W4oSwiwycxBIjHjRzYb3Je3zVN+geKTRQKzAkR/K4PBExlS0090d9nshak6phMUxr3PDjmQ=="],
"es-abstract": ["es-abstract@1.24.1", "", { "dependencies": { "array-buffer-byte-length": "^1.0.2", "arraybuffer.prototype.slice": "^1.0.4", "available-typed-arrays": "^1.0.7", "call-bind": "^1.0.8", "call-bound": "^1.0.4", "data-view-buffer": "^1.0.2", "data-view-byte-length": "^1.0.2", "data-view-byte-offset": "^1.0.1", "es-define-property": "^1.0.1", "es-errors": "^1.3.0", "es-object-atoms": "^1.1.1", "es-set-tostringtag": "^2.1.0", "es-to-primitive": "^1.3.0", "function.prototype.name": "^1.1.8", "get-intrinsic": "^1.3.0", "get-proto": "^1.0.1", "get-symbol-description": "^1.1.0", "globalthis": "^1.0.4", "gopd": "^1.2.0", "has-property-descriptors": "^1.0.2", "has-proto": "^1.2.0", "has-symbols": "^1.1.0", "hasown": "^2.0.2", "internal-slot": "^1.1.0", "is-array-buffer": "^3.0.5", "is-callable": "^1.2.7", "is-data-view": "^1.0.2", "is-negative-zero": "^2.0.3", "is-regex": "^1.2.1", "is-set": "^2.0.3", "is-shared-array-buffer": "^1.0.4", "is-string": "^1.1.1", "is-typed-array": "^1.1.15", "is-weakref": "^1.1.1", "math-intrinsics": "^1.1.0", "object-inspect": "^1.13.4", "object-keys": "^1.1.1", "object.assign": "^4.1.7", "own-keys": "^1.0.1", "regexp.prototype.flags": "^1.5.4", "safe-array-concat": "^1.1.3", "safe-push-apply": "^1.0.0", "safe-regex-test": "^1.1.0", "set-proto": "^1.0.0", "stop-iteration-iterator": "^1.1.0", "string.prototype.trim": "^1.2.10", "string.prototype.trimend": "^1.0.9", "string.prototype.trimstart": "^1.0.8", "typed-array-buffer": "^1.0.3", "typed-array-byte-length": "^1.0.3", "typed-array-byte-offset": "^1.0.4", "typed-array-length": "^1.0.7", "unbox-primitive": "^1.1.0", "which-typed-array": "^1.1.19" } }, "sha512-zHXBLhP+QehSSbsS9Pt23Gg964240DPd6QCf8WpkqEXxQ7fhdZzYsocOr5u7apWonsS5EjZDmTF+/slGMyasvw=="], "es-abstract": ["es-abstract@1.24.2", "", { "dependencies": { "array-buffer-byte-length": "^1.0.2", "arraybuffer.prototype.slice": "^1.0.4", "available-typed-arrays": "^1.0.7", "call-bind": "^1.0.8", "call-bound": "^1.0.4", "data-view-buffer": "^1.0.2", "data-view-byte-length": "^1.0.2", "data-view-byte-offset": "^1.0.1", "es-define-property": "^1.0.1", "es-errors": "^1.3.0", "es-object-atoms": "^1.1.1", "es-set-tostringtag": "^2.1.0", "es-to-primitive": "^1.3.0", "function.prototype.name": "^1.1.8", "get-intrinsic": "^1.3.0", "get-proto": "^1.0.1", "get-symbol-description": "^1.1.0", "globalthis": "^1.0.4", "gopd": "^1.2.0", "has-property-descriptors": "^1.0.2", "has-proto": "^1.2.0", "has-symbols": "^1.1.0", "hasown": "^2.0.2", "internal-slot": "^1.1.0", "is-array-buffer": "^3.0.5", "is-callable": "^1.2.7", "is-data-view": "^1.0.2", "is-negative-zero": "^2.0.3", "is-regex": "^1.2.1", "is-set": "^2.0.3", "is-shared-array-buffer": "^1.0.4", "is-string": "^1.1.1", "is-typed-array": "^1.1.15", "is-weakref": "^1.1.1", "math-intrinsics": "^1.1.0", "object-inspect": "^1.13.4", "object-keys": "^1.1.1", "object.assign": "^4.1.7", "own-keys": "^1.0.1", "regexp.prototype.flags": "^1.5.4", "safe-array-concat": "^1.1.3", "safe-push-apply": "^1.0.0", "safe-regex-test": "^1.1.0", "set-proto": "^1.0.0", "stop-iteration-iterator": "^1.1.0", "string.prototype.trim": "^1.2.10", "string.prototype.trimend": "^1.0.9", "string.prototype.trimstart": "^1.0.8", "typed-array-buffer": "^1.0.3", "typed-array-byte-length": "^1.0.3", "typed-array-byte-offset": "^1.0.4", "typed-array-length": "^1.0.7", "unbox-primitive": "^1.1.0", "which-typed-array": "^1.1.19" } }, "sha512-2FpH9Q5i2RRwyEP1AylXe6nYLR5OhaJTZwmlcP0dL/+JCbgg7yyEo/sEK6HeGZRf3dFpWwThaRHVApXSkW3xeg=="],
"es-define-property": ["es-define-property@1.0.1", "", {}, "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g=="], "es-define-property": ["es-define-property@1.0.1", "", {}, "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g=="],
"es-errors": ["es-errors@1.3.0", "", {}, "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw=="], "es-errors": ["es-errors@1.3.0", "", {}, "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw=="],
"es-iterator-helpers": ["es-iterator-helpers@1.3.1", "", { "dependencies": { "call-bind": "^1.0.8", "call-bound": "^1.0.4", "define-properties": "^1.2.1", "es-abstract": "^1.24.1", "es-errors": "^1.3.0", "es-set-tostringtag": "^2.1.0", "function-bind": "^1.1.2", "get-intrinsic": "^1.3.0", "globalthis": "^1.0.4", "gopd": "^1.2.0", "has-property-descriptors": "^1.0.2", "has-proto": "^1.2.0", "has-symbols": "^1.1.0", "internal-slot": "^1.1.0", "iterator.prototype": "^1.1.5", "math-intrinsics": "^1.1.0", "safe-array-concat": "^1.1.3" } }, "sha512-zWwRvqWiuBPr0muUG/78cW3aHROFCNIQ3zpmYDpwdbnt2m+xlNyRWpHBpa2lJjSBit7BQ+RXA1iwbSmu5yJ/EQ=="], "es-iterator-helpers": ["es-iterator-helpers@1.3.2", "", { "dependencies": { "call-bind": "^1.0.9", "call-bound": "^1.0.4", "define-properties": "^1.2.1", "es-abstract": "^1.24.2", "es-errors": "^1.3.0", "es-set-tostringtag": "^2.1.0", "function-bind": "^1.1.2", "get-intrinsic": "^1.3.0", "globalthis": "^1.0.4", "gopd": "^1.2.0", "has-property-descriptors": "^1.0.2", "has-proto": "^1.2.0", "has-symbols": "^1.1.0", "internal-slot": "^1.1.0", "iterator.prototype": "^1.1.5", "math-intrinsics": "^1.1.0" } }, "sha512-HVLACW1TppGYjJ8H6/jqH/pqOtKRw6wMlrB23xfExmFWxFquAIWCmwoLsOyN96K4a5KbmOf5At9ZUO3GZbetAw=="],
"es-object-atoms": ["es-object-atoms@1.1.1", "", { "dependencies": { "es-errors": "^1.3.0" } }, "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA=="], "es-object-atoms": ["es-object-atoms@1.1.1", "", { "dependencies": { "es-errors": "^1.3.0" } }, "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA=="],
@@ -441,9 +443,9 @@
"eslint": ["eslint@9.39.4", "", { "dependencies": { "@eslint-community/eslint-utils": "^4.8.0", "@eslint-community/regexpp": "^4.12.1", "@eslint/config-array": "^0.21.2", "@eslint/config-helpers": "^0.4.2", "@eslint/core": "^0.17.0", "@eslint/eslintrc": "^3.3.5", "@eslint/js": "9.39.4", "@eslint/plugin-kit": "^0.4.1", "@humanfs/node": "^0.16.6", "@humanwhocodes/module-importer": "^1.0.1", "@humanwhocodes/retry": "^0.4.2", "@types/estree": "^1.0.6", "ajv": "^6.14.0", "chalk": "^4.0.0", "cross-spawn": "^7.0.6", "debug": "^4.3.2", "escape-string-regexp": "^4.0.0", "eslint-scope": "^8.4.0", "eslint-visitor-keys": "^4.2.1", "espree": "^10.4.0", "esquery": "^1.5.0", "esutils": "^2.0.2", "fast-deep-equal": "^3.1.3", "file-entry-cache": "^8.0.0", "find-up": "^5.0.0", "glob-parent": "^6.0.2", "ignore": "^5.2.0", "imurmurhash": "^0.1.4", "is-glob": "^4.0.0", "json-stable-stringify-without-jsonify": "^1.0.1", "lodash.merge": "^4.6.2", "minimatch": "^3.1.5", "natural-compare": "^1.4.0", "optionator": "^0.9.3" }, "peerDependencies": { "jiti": "*" }, "optionalPeers": ["jiti"], "bin": { "eslint": "bin/eslint.js" } }, "sha512-XoMjdBOwe/esVgEvLmNsD3IRHkm7fbKIUGvrleloJXUZgDHig2IPWNniv+GwjyJXzuNqVjlr5+4yVUZjycJwfQ=="], "eslint": ["eslint@9.39.4", "", { "dependencies": { "@eslint-community/eslint-utils": "^4.8.0", "@eslint-community/regexpp": "^4.12.1", "@eslint/config-array": "^0.21.2", "@eslint/config-helpers": "^0.4.2", "@eslint/core": "^0.17.0", "@eslint/eslintrc": "^3.3.5", "@eslint/js": "9.39.4", "@eslint/plugin-kit": "^0.4.1", "@humanfs/node": "^0.16.6", "@humanwhocodes/module-importer": "^1.0.1", "@humanwhocodes/retry": "^0.4.2", "@types/estree": "^1.0.6", "ajv": "^6.14.0", "chalk": "^4.0.0", "cross-spawn": "^7.0.6", "debug": "^4.3.2", "escape-string-regexp": "^4.0.0", "eslint-scope": "^8.4.0", "eslint-visitor-keys": "^4.2.1", "espree": "^10.4.0", "esquery": "^1.5.0", "esutils": "^2.0.2", "fast-deep-equal": "^3.1.3", "file-entry-cache": "^8.0.0", "find-up": "^5.0.0", "glob-parent": "^6.0.2", "ignore": "^5.2.0", "imurmurhash": "^0.1.4", "is-glob": "^4.0.0", "json-stable-stringify-without-jsonify": "^1.0.1", "lodash.merge": "^4.6.2", "minimatch": "^3.1.5", "natural-compare": "^1.4.0", "optionator": "^0.9.3" }, "peerDependencies": { "jiti": "*" }, "optionalPeers": ["jiti"], "bin": { "eslint": "bin/eslint.js" } }, "sha512-XoMjdBOwe/esVgEvLmNsD3IRHkm7fbKIUGvrleloJXUZgDHig2IPWNniv+GwjyJXzuNqVjlr5+4yVUZjycJwfQ=="],
"eslint-config-next": ["eslint-config-next@16.2.2", "", { "dependencies": { "@next/eslint-plugin-next": "16.2.2", "eslint-import-resolver-node": "^0.3.6", "eslint-import-resolver-typescript": "^3.5.2", "eslint-plugin-import": "^2.32.0", "eslint-plugin-jsx-a11y": "^6.10.0", "eslint-plugin-react": "^7.37.0", "eslint-plugin-react-hooks": "^7.0.0", "globals": "16.4.0", "typescript-eslint": "^8.46.0" }, "peerDependencies": { "eslint": ">=9.0.0", "typescript": ">=3.3.1" }, "optionalPeers": ["typescript"] }, "sha512-6VlvEhwoug2JpVgjZDhyXrJXUEuPY++TddzIpTaIRvlvlXXFgvQUtm3+Zr84IjFm0lXtJt73w19JA08tOaZVwg=="], "eslint-config-next": ["eslint-config-next@16.2.6", "", { "dependencies": { "@next/eslint-plugin-next": "16.2.6", "eslint-import-resolver-node": "^0.3.6", "eslint-import-resolver-typescript": "^3.5.2", "eslint-plugin-import": "^2.32.0", "eslint-plugin-jsx-a11y": "^6.10.0", "eslint-plugin-react": "^7.37.0", "eslint-plugin-react-hooks": "^7.0.0", "globals": "16.4.0", "typescript-eslint": "^8.46.0" }, "peerDependencies": { "eslint": ">=9.0.0", "typescript": ">=3.3.1" }, "optionalPeers": ["typescript"] }, "sha512-z2ELYSkyrrJ6cuunTU8vhsT/RpouPkjaSah06nVW6Rg2Hpg0Vs8s497/e5s8G8qtdp4ccsiovz5P1rv+5VSW2Q=="],
"eslint-import-resolver-node": ["eslint-import-resolver-node@0.3.9", "", { "dependencies": { "debug": "^3.2.7", "is-core-module": "^2.13.0", "resolve": "^1.22.4" } }, "sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g=="], "eslint-import-resolver-node": ["eslint-import-resolver-node@0.3.10", "", { "dependencies": { "debug": "^3.2.7", "is-core-module": "^2.16.1", "resolve": "^2.0.0-next.6" } }, "sha512-tRrKqFyCaKict5hOd244sL6EQFNycnMQnBe+j8uqGNXYzsImGbGUU4ibtoaBmv5FLwJwcFJNeg1GeVjQfbMrDQ=="],
"eslint-import-resolver-typescript": ["eslint-import-resolver-typescript@3.10.1", "", { "dependencies": { "@nolyfill/is-core-module": "1.0.39", "debug": "^4.4.0", "get-tsconfig": "^4.10.0", "is-bun-module": "^2.0.0", "stable-hash": "^0.0.5", "tinyglobby": "^0.2.13", "unrs-resolver": "^1.6.2" }, "peerDependencies": { "eslint": "*", "eslint-plugin-import": "*", "eslint-plugin-import-x": "*" }, "optionalPeers": ["eslint-plugin-import", "eslint-plugin-import-x"] }, "sha512-A1rHYb06zjMGAxdLSkN2fXPBwuSaQ0iO5M/hdyS0Ajj1VBaRp0sPD3dn1FhME3c/JluGFbwSxyCfqdSbtQLAHQ=="], "eslint-import-resolver-typescript": ["eslint-import-resolver-typescript@3.10.1", "", { "dependencies": { "@nolyfill/is-core-module": "1.0.39", "debug": "^4.4.0", "get-tsconfig": "^4.10.0", "is-bun-module": "^2.0.0", "stable-hash": "^0.0.5", "tinyglobby": "^0.2.13", "unrs-resolver": "^1.6.2" }, "peerDependencies": { "eslint": "*", "eslint-plugin-import": "*", "eslint-plugin-import-x": "*" }, "optionalPeers": ["eslint-plugin-import", "eslint-plugin-import-x"] }, "sha512-A1rHYb06zjMGAxdLSkN2fXPBwuSaQ0iO5M/hdyS0Ajj1VBaRp0sPD3dn1FhME3c/JluGFbwSxyCfqdSbtQLAHQ=="],
@@ -455,7 +457,7 @@
"eslint-plugin-react": ["eslint-plugin-react@7.37.5", "", { "dependencies": { "array-includes": "^3.1.8", "array.prototype.findlast": "^1.2.5", "array.prototype.flatmap": "^1.3.3", "array.prototype.tosorted": "^1.1.4", "doctrine": "^2.1.0", "es-iterator-helpers": "^1.2.1", "estraverse": "^5.3.0", "hasown": "^2.0.2", "jsx-ast-utils": "^2.4.1 || ^3.0.0", "minimatch": "^3.1.2", "object.entries": "^1.1.9", "object.fromentries": "^2.0.8", "object.values": "^1.2.1", "prop-types": "^15.8.1", "resolve": "^2.0.0-next.5", "semver": "^6.3.1", "string.prototype.matchall": "^4.0.12", "string.prototype.repeat": "^1.0.0" }, "peerDependencies": { "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9.7" } }, "sha512-Qteup0SqU15kdocexFNAJMvCJEfa2xUKNV4CC1xsVMrIIqEy3SQ/rqyxCWNzfrd3/ldy6HMlD2e0JDVpDg2qIA=="], "eslint-plugin-react": ["eslint-plugin-react@7.37.5", "", { "dependencies": { "array-includes": "^3.1.8", "array.prototype.findlast": "^1.2.5", "array.prototype.flatmap": "^1.3.3", "array.prototype.tosorted": "^1.1.4", "doctrine": "^2.1.0", "es-iterator-helpers": "^1.2.1", "estraverse": "^5.3.0", "hasown": "^2.0.2", "jsx-ast-utils": "^2.4.1 || ^3.0.0", "minimatch": "^3.1.2", "object.entries": "^1.1.9", "object.fromentries": "^2.0.8", "object.values": "^1.2.1", "prop-types": "^15.8.1", "resolve": "^2.0.0-next.5", "semver": "^6.3.1", "string.prototype.matchall": "^4.0.12", "string.prototype.repeat": "^1.0.0" }, "peerDependencies": { "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9.7" } }, "sha512-Qteup0SqU15kdocexFNAJMvCJEfa2xUKNV4CC1xsVMrIIqEy3SQ/rqyxCWNzfrd3/ldy6HMlD2e0JDVpDg2qIA=="],
"eslint-plugin-react-hooks": ["eslint-plugin-react-hooks@7.0.1", "", { "dependencies": { "@babel/core": "^7.24.4", "@babel/parser": "^7.24.4", "hermes-parser": "^0.25.1", "zod": "^3.25.0 || ^4.0.0", "zod-validation-error": "^3.5.0 || ^4.0.0" }, "peerDependencies": { "eslint": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 || ^9.0.0" } }, "sha512-O0d0m04evaNzEPoSW+59Mezf8Qt0InfgGIBJnpC0h3NH/WjUAR7BIKUfysC6todmtiZ/A0oUVS8Gce0WhBrHsA=="], "eslint-plugin-react-hooks": ["eslint-plugin-react-hooks@7.1.1", "", { "dependencies": { "@babel/core": "^7.24.4", "@babel/parser": "^7.24.4", "hermes-parser": "^0.25.1", "zod": "^3.25.0 || ^4.0.0", "zod-validation-error": "^3.5.0 || ^4.0.0" }, "peerDependencies": { "eslint": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 || ^9.0.0 || ^10.0.0" } }, "sha512-f2I7Gw6JbvCexzIInuSbZpfdQ44D7iqdWX01FKLvrPgqxoE7oMj8clOfto8U6vYiz4yd5oKu39rRSVOe1zRu0g=="],
"eslint-scope": ["eslint-scope@8.4.0", "", { "dependencies": { "esrecurse": "^4.3.0", "estraverse": "^5.2.0" } }, "sha512-sNXOfKCn74rt8RICKMvJS7XKV/Xk9kA7DyJr8mJik3S7Cwgy3qlkkmyS2uQB3jiJg6VNdZd/pDBJu0nvG2NlTg=="], "eslint-scope": ["eslint-scope@8.4.0", "", { "dependencies": { "esrecurse": "^4.3.0", "estraverse": "^5.2.0" } }, "sha512-sNXOfKCn74rt8RICKMvJS7XKV/Xk9kA7DyJr8mJik3S7Cwgy3qlkkmyS2uQB3jiJg6VNdZd/pDBJu0nvG2NlTg=="],
@@ -493,7 +495,7 @@
"flatted": ["flatted@3.4.2", "", {}, "sha512-PjDse7RzhcPkIJwy5t7KPWQSZ9cAbzQXcafsetQoD7sOJRQlGikNbx7yZp2OotDnJyrDcbyRq3Ttb18iYOqkxA=="], "flatted": ["flatted@3.4.2", "", {}, "sha512-PjDse7RzhcPkIJwy5t7KPWQSZ9cAbzQXcafsetQoD7sOJRQlGikNbx7yZp2OotDnJyrDcbyRq3Ttb18iYOqkxA=="],
"follow-redirects": ["follow-redirects@1.15.11", "", {}, "sha512-deG2P0JfjrTxl50XGCDyfI97ZGVCxIpfKYmfyrQ54n5FO/0gfIES8C/Psl6kWVDolizcaaxZJnTS0QSMxvnsBQ=="], "follow-redirects": ["follow-redirects@1.16.0", "", {}, "sha512-y5rN/uOsadFT/JfYwhxRS5R7Qce+g3zG97+JrtFZlC9klX/W5hD7iiLzScI4nZqUS7DNUdhPgw4xI8W2LuXlUw=="],
"for-each": ["for-each@0.3.5", "", { "dependencies": { "is-callable": "^1.2.7" } }, "sha512-dKx12eRCVIzqCxFGplyFKJMPvLEWgmNtUrpTiJIR5u97zEhRG8ySrtboPHZXx7daLxQVrl643cTzbab2tkQjxg=="], "for-each": ["for-each@0.3.5", "", { "dependencies": { "is-callable": "^1.2.7" } }, "sha512-dKx12eRCVIzqCxFGplyFKJMPvLEWgmNtUrpTiJIR5u97zEhRG8ySrtboPHZXx7daLxQVrl643cTzbab2tkQjxg=="],
@@ -515,7 +517,7 @@
"get-symbol-description": ["get-symbol-description@1.1.0", "", { "dependencies": { "call-bound": "^1.0.3", "es-errors": "^1.3.0", "get-intrinsic": "^1.2.6" } }, "sha512-w9UMqWwJxHNOvoNzSJ2oPF5wvYcvP7jUvYzhp67yEhTi17ZDBBC1z9pTdGuzjD+EFIqLSYRweZjqfiPzQ06Ebg=="], "get-symbol-description": ["get-symbol-description@1.1.0", "", { "dependencies": { "call-bound": "^1.0.3", "es-errors": "^1.3.0", "get-intrinsic": "^1.2.6" } }, "sha512-w9UMqWwJxHNOvoNzSJ2oPF5wvYcvP7jUvYzhp67yEhTi17ZDBBC1z9pTdGuzjD+EFIqLSYRweZjqfiPzQ06Ebg=="],
"get-tsconfig": ["get-tsconfig@4.13.7", "", { "dependencies": { "resolve-pkg-maps": "^1.0.0" } }, "sha512-7tN6rFgBlMgpBML5j8typ92BKFi2sFQvIdpAqLA2beia5avZDrMs0FLZiM5etShWq5irVyGcGMEA1jcDaK7A/Q=="], "get-tsconfig": ["get-tsconfig@4.14.0", "", { "dependencies": { "resolve-pkg-maps": "^1.0.0" } }, "sha512-yTb+8DXzDREzgvYmh6s9vHsSVCHeC0G3PI5bEXNBHtmshPnO+S5O7qgLEOn0I5QvMy6kpZN8K1NKGyilLb93wA=="],
"glob-parent": ["glob-parent@6.0.2", "", { "dependencies": { "is-glob": "^4.0.3" } }, "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A=="], "glob-parent": ["glob-parent@6.0.2", "", { "dependencies": { "is-glob": "^4.0.3" } }, "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A=="],
@@ -539,7 +541,7 @@
"has-tostringtag": ["has-tostringtag@1.0.2", "", { "dependencies": { "has-symbols": "^1.0.3" } }, "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw=="], "has-tostringtag": ["has-tostringtag@1.0.2", "", { "dependencies": { "has-symbols": "^1.0.3" } }, "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw=="],
"hasown": ["hasown@2.0.2", "", { "dependencies": { "function-bind": "^1.1.2" } }, "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ=="], "hasown": ["hasown@2.0.3", "", { "dependencies": { "function-bind": "^1.1.2" } }, "sha512-ej4AhfhfL2Q2zpMmLo7U1Uv9+PyhIZpgQLGT1F9miIGmiCJIoCgSmczFdrc97mWT4kVY72KA+WnnhJ5pghSvSg=="],
"hermes-estree": ["hermes-estree@0.25.1", "", {}, "sha512-0wUoCcLp+5Ev5pDW2OriHC2MJCbwLwuRx+gAqMTOkGKJJiBCLjtrvy4PWUGn6MIVefecRpzoOZ/UV6iGdOr+Cw=="], "hermes-estree": ["hermes-estree@0.25.1", "", {}, "sha512-0wUoCcLp+5Ev5pDW2OriHC2MJCbwLwuRx+gAqMTOkGKJJiBCLjtrvy4PWUGn6MIVefecRpzoOZ/UV6iGdOr+Cw=="],
@@ -565,7 +567,7 @@
"is-callable": ["is-callable@1.2.7", "", {}, "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA=="], "is-callable": ["is-callable@1.2.7", "", {}, "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA=="],
"is-core-module": ["is-core-module@2.16.1", "", { "dependencies": { "hasown": "^2.0.2" } }, "sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w=="], "is-core-module": ["is-core-module@2.16.2", "", { "dependencies": { "hasown": "^2.0.3" } }, "sha512-evOr8xfXKxE6qSR0hSXL2r3sd7ALj8+7jQEUvPYcm5sgZFdJ+AYzT6yNmJenvIYQBgIGwfwz08sL8zoL7yq2BA=="],
"is-data-view": ["is-data-view@1.0.2", "", { "dependencies": { "call-bound": "^1.0.2", "get-intrinsic": "^1.2.6", "is-typed-array": "^1.1.13" } }, "sha512-RKtWF8pGmS87i2D6gqQu/l7EYRlVdfzemCJN/P3UOs//x1QE7mfhvzHIApBTRf7axvT6DMGwSwBXYCT0nfB9xw=="], "is-data-view": ["is-data-view@1.0.2", "", { "dependencies": { "call-bound": "^1.0.2", "get-intrinsic": "^1.2.6", "is-typed-array": "^1.1.13" } }, "sha512-RKtWF8pGmS87i2D6gqQu/l7EYRlVdfzemCJN/P3UOs//x1QE7mfhvzHIApBTRf7axvT6DMGwSwBXYCT0nfB9xw=="],
@@ -613,7 +615,7 @@
"iterator.prototype": ["iterator.prototype@1.1.5", "", { "dependencies": { "define-data-property": "^1.1.4", "es-object-atoms": "^1.0.0", "get-intrinsic": "^1.2.6", "get-proto": "^1.0.0", "has-symbols": "^1.1.0", "set-function-name": "^2.0.2" } }, "sha512-H0dkQoCa3b2VEeKQBOxFph+JAbcrQdE7KC0UkqwpLmv2EC4P41QXP+rqo9wYodACiG5/WM5s9oDApTU8utwj9g=="], "iterator.prototype": ["iterator.prototype@1.1.5", "", { "dependencies": { "define-data-property": "^1.1.4", "es-object-atoms": "^1.0.0", "get-intrinsic": "^1.2.6", "get-proto": "^1.0.0", "has-symbols": "^1.1.0", "set-function-name": "^2.0.2" } }, "sha512-H0dkQoCa3b2VEeKQBOxFph+JAbcrQdE7KC0UkqwpLmv2EC4P41QXP+rqo9wYodACiG5/WM5s9oDApTU8utwj9g=="],
"jiti": ["jiti@2.6.1", "", { "bin": { "jiti": "lib/jiti-cli.mjs" } }, "sha512-ekilCSN1jwRvIbgeg/57YFh8qQDNbwDb9xT/qu2DAHbFFZUicIl4ygVaAvzveMhMVr3LnpSKTNnwt8PoOfmKhQ=="], "jiti": ["jiti@2.7.0", "", { "bin": { "jiti": "lib/jiti-cli.mjs" } }, "sha512-AC/7JofJvZGrrneWNaEnJeOLUx+JlGt7tNa0wZiRPT4MY1wmfKjt2+6O2p2uz2+skll8OZZmJMNqeke7kKbNgQ=="],
"js-tokens": ["js-tokens@4.0.0", "", {}, "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ=="], "js-tokens": ["js-tokens@4.0.0", "", {}, "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ=="],
@@ -689,17 +691,17 @@
"ms": ["ms@2.1.3", "", {}, "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA=="], "ms": ["ms@2.1.3", "", {}, "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA=="],
"nanoid": ["nanoid@3.3.11", "", { "bin": { "nanoid": "bin/nanoid.cjs" } }, "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w=="], "nanoid": ["nanoid@3.3.12", "", { "bin": { "nanoid": "bin/nanoid.cjs" } }, "sha512-ZB9RH/39qpq5Vu6Y+NmUaFhQR6pp+M2Xt76XBnEwDaGcVAqhlvxrl3B2bKS5D3NH3QR76v3aSrKaF/Kiy7lEtQ=="],
"napi-postinstall": ["napi-postinstall@0.3.4", "", { "bin": { "napi-postinstall": "lib/cli.js" } }, "sha512-PHI5f1O0EP5xJ9gQmFGMS6IZcrVvTjpXjz7Na41gTE7eE2hK11lg04CECCYEEjdc17EV4DO+fkGEtt7TpTaTiQ=="], "napi-postinstall": ["napi-postinstall@0.3.4", "", { "bin": { "napi-postinstall": "lib/cli.js" } }, "sha512-PHI5f1O0EP5xJ9gQmFGMS6IZcrVvTjpXjz7Na41gTE7eE2hK11lg04CECCYEEjdc17EV4DO+fkGEtt7TpTaTiQ=="],
"natural-compare": ["natural-compare@1.4.0", "", {}, "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw=="], "natural-compare": ["natural-compare@1.4.0", "", {}, "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw=="],
"next": ["next@16.2.2", "", { "dependencies": { "@next/env": "16.2.2", "@swc/helpers": "0.5.15", "baseline-browser-mapping": "^2.9.19", "caniuse-lite": "^1.0.30001579", "postcss": "8.4.31", "styled-jsx": "5.1.6" }, "optionalDependencies": { "@next/swc-darwin-arm64": "16.2.2", "@next/swc-darwin-x64": "16.2.2", "@next/swc-linux-arm64-gnu": "16.2.2", "@next/swc-linux-arm64-musl": "16.2.2", "@next/swc-linux-x64-gnu": "16.2.2", "@next/swc-linux-x64-musl": "16.2.2", "@next/swc-win32-arm64-msvc": "16.2.2", "@next/swc-win32-x64-msvc": "16.2.2", "sharp": "^0.34.5" }, "peerDependencies": { "@opentelemetry/api": "^1.1.0", "@playwright/test": "^1.51.1", "babel-plugin-react-compiler": "*", "react": "^18.2.0 || 19.0.0-rc-de68d2f4-20241204 || ^19.0.0", "react-dom": "^18.2.0 || 19.0.0-rc-de68d2f4-20241204 || ^19.0.0", "sass": "^1.3.0" }, "optionalPeers": ["@opentelemetry/api", "@playwright/test", "babel-plugin-react-compiler", "sass"], "bin": { "next": "dist/bin/next" } }, "sha512-i6AJdyVa4oQjyvX/6GeER8dpY/xlIV+4NMv/svykcLtURJSy/WzDnnUk/TM4d0uewFHK7xSQz4TbIwPgjky+3A=="], "next": ["next@16.2.6", "", { "dependencies": { "@next/env": "16.2.6", "@swc/helpers": "0.5.15", "baseline-browser-mapping": "^2.9.19", "caniuse-lite": "^1.0.30001579", "postcss": "8.4.31", "styled-jsx": "5.1.6" }, "optionalDependencies": { "@next/swc-darwin-arm64": "16.2.6", "@next/swc-darwin-x64": "16.2.6", "@next/swc-linux-arm64-gnu": "16.2.6", "@next/swc-linux-arm64-musl": "16.2.6", "@next/swc-linux-x64-gnu": "16.2.6", "@next/swc-linux-x64-musl": "16.2.6", "@next/swc-win32-arm64-msvc": "16.2.6", "@next/swc-win32-x64-msvc": "16.2.6", "sharp": "^0.34.5" }, "peerDependencies": { "@opentelemetry/api": "^1.1.0", "@playwright/test": "^1.51.1", "babel-plugin-react-compiler": "*", "react": "^18.2.0 || 19.0.0-rc-de68d2f4-20241204 || ^19.0.0", "react-dom": "^18.2.0 || 19.0.0-rc-de68d2f4-20241204 || ^19.0.0", "sass": "^1.3.0" }, "optionalPeers": ["@opentelemetry/api", "@playwright/test", "babel-plugin-react-compiler", "sass"], "bin": { "next": "dist/bin/next" } }, "sha512-qOVgKJg1+At15NpeUP+eJgCHvTCgXsogweq87Ri/Ix7PkqQHg4sdaXmSFqKlgaIXE4kW0g25LE68W87UANlHtw=="],
"node-exports-info": ["node-exports-info@1.6.0", "", { "dependencies": { "array.prototype.flatmap": "^1.3.3", "es-errors": "^1.3.0", "object.entries": "^1.1.9", "semver": "^6.3.1" } }, "sha512-pyFS63ptit/P5WqUkt+UUfe+4oevH+bFeIiPPdfb0pFeYEu/1ELnJu5l+5EcTKYL5M7zaAa7S8ddywgXypqKCw=="], "node-exports-info": ["node-exports-info@1.6.0", "", { "dependencies": { "array.prototype.flatmap": "^1.3.3", "es-errors": "^1.3.0", "object.entries": "^1.1.9", "semver": "^6.3.1" } }, "sha512-pyFS63ptit/P5WqUkt+UUfe+4oevH+bFeIiPPdfb0pFeYEu/1ELnJu5l+5EcTKYL5M7zaAa7S8ddywgXypqKCw=="],
"node-releases": ["node-releases@2.0.36", "", {}, "sha512-TdC8FSgHz8Mwtw9g5L4gR/Sh9XhSP/0DEkQxfEFXOpiul5IiHgHan2VhYYb6agDSfp4KuvltmGApc8HMgUrIkA=="], "node-releases": ["node-releases@2.0.38", "", {}, "sha512-3qT/88Y3FbH/Kx4szpQQ4HzUbVrHPKTLVpVocKiLfoYvw9XSGOX2FmD2d6DrXbVYyAQTF2HeF6My8jmzx7/CRw=="],
"object-assign": ["object-assign@4.1.1", "", {}, "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg=="], "object-assign": ["object-assign@4.1.1", "", {}, "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg=="],
@@ -739,7 +741,7 @@
"possible-typed-array-names": ["possible-typed-array-names@1.1.0", "", {}, "sha512-/+5VFTchJDoVj3bhoqi6UeymcD00DAwb1nJwamzPvHEszJ4FpF6SNNbUbOS8yI56qHzdV8eK0qEfOSiodkTdxg=="], "possible-typed-array-names": ["possible-typed-array-names@1.1.0", "", {}, "sha512-/+5VFTchJDoVj3bhoqi6UeymcD00DAwb1nJwamzPvHEszJ4FpF6SNNbUbOS8yI56qHzdV8eK0qEfOSiodkTdxg=="],
"postcss": ["postcss@8.5.8", "", { "dependencies": { "nanoid": "^3.3.11", "picocolors": "^1.1.1", "source-map-js": "^1.2.1" } }, "sha512-OW/rX8O/jXnm82Ey1k44pObPtdblfiuWnrd8X7GJ7emImCOstunGbXUpp7HdBrFQX6rJzn3sPT397Wp5aCwCHg=="], "postcss": ["postcss@8.5.14", "", { "dependencies": { "nanoid": "^3.3.11", "picocolors": "^1.1.1", "source-map-js": "^1.2.1" } }, "sha512-SoSL4+OSEtR99LHFZQiJLkT59C5B1amGO1NzTwj7TT1qCUgUO6hxOvzkOYxD+vMrXBM3XJIKzokoERdqQq/Zmg=="],
"prelude-ls": ["prelude-ls@1.2.1", "", {}, "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g=="], "prelude-ls": ["prelude-ls@1.2.1", "", {}, "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g=="],
@@ -751,9 +753,9 @@
"queue-microtask": ["queue-microtask@1.2.3", "", {}, "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A=="], "queue-microtask": ["queue-microtask@1.2.3", "", {}, "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A=="],
"react": ["react@19.2.4", "", {}, "sha512-9nfp2hYpCwOjAN+8TZFGhtWEwgvWHXqESH8qT89AT/lWklpLON22Lc8pEtnpsZz7VmawabSU0gCjnj8aC0euHQ=="], "react": ["react@19.2.6", "", {}, "sha512-sfWGGfavi0xr8Pg0sVsyHMAOziVYKgPLNrS7ig+ivMNb3wbCBw3KxtflsGBAwD3gYQlE/AEZsTLgToRrSCjb0Q=="],
"react-dom": ["react-dom@19.2.4", "", { "dependencies": { "scheduler": "^0.27.0" }, "peerDependencies": { "react": "^19.2.4" } }, "sha512-AXJdLo8kgMbimY95O2aKQqsz2iWi9jMgKJhRBAxECE4IFxfcazB2LmzloIoibJI3C12IlY20+KFaLv+71bUJeQ=="], "react-dom": ["react-dom@19.2.6", "", { "dependencies": { "scheduler": "^0.27.0" }, "peerDependencies": { "react": "^19.2.6" } }, "sha512-0prMI+hvBbPjsWnxDLxlCGyM8PN6UuWjEUCYmZhO67xIV9Xasa/r/vDnq+Xyq4Lo27g8QSbO5YzARu0D1Sps3g=="],
"react-is": ["react-is@16.13.1", "", {}, "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ=="], "react-is": ["react-is@16.13.1", "", {}, "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ=="],
@@ -761,7 +763,7 @@
"regexp.prototype.flags": ["regexp.prototype.flags@1.5.4", "", { "dependencies": { "call-bind": "^1.0.8", "define-properties": "^1.2.1", "es-errors": "^1.3.0", "get-proto": "^1.0.1", "gopd": "^1.2.0", "set-function-name": "^2.0.2" } }, "sha512-dYqgNSZbDwkaJ2ceRd9ojCGjBq+mOm9LmtXnAnEGyHhN/5R7iDW2TRw3h+o/jCFxus3P2LfWIIiwowAjANm7IA=="], "regexp.prototype.flags": ["regexp.prototype.flags@1.5.4", "", { "dependencies": { "call-bind": "^1.0.8", "define-properties": "^1.2.1", "es-errors": "^1.3.0", "get-proto": "^1.0.1", "gopd": "^1.2.0", "set-function-name": "^2.0.2" } }, "sha512-dYqgNSZbDwkaJ2ceRd9ojCGjBq+mOm9LmtXnAnEGyHhN/5R7iDW2TRw3h+o/jCFxus3P2LfWIIiwowAjANm7IA=="],
"resolve": ["resolve@1.22.11", "", { "dependencies": { "is-core-module": "^2.16.1", "path-parse": "^1.0.7", "supports-preserve-symlinks-flag": "^1.0.0" }, "bin": { "resolve": "bin/resolve" } }, "sha512-RfqAvLnMl313r7c9oclB1HhUEAezcpLjz95wFH4LVuhk9JF/r22qmVP9AMmOU4vMX7Q8pN8jwNg/CSpdFnMjTQ=="], "resolve": ["resolve@2.0.0-next.6", "", { "dependencies": { "es-errors": "^1.3.0", "is-core-module": "^2.16.1", "node-exports-info": "^1.6.0", "object-keys": "^1.1.1", "path-parse": "^1.0.7", "supports-preserve-symlinks-flag": "^1.0.0" }, "bin": { "resolve": "bin/resolve" } }, "sha512-3JmVl5hMGtJ3kMmB3zi3DL25KfkCEyy3Tw7Gmw7z5w8M9WlwoPFnIvwChzu1+cF3iaK3sp18hhPz8ANeimdJfA=="],
"resolve-from": ["resolve-from@4.0.0", "", {}, "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g=="], "resolve-from": ["resolve-from@4.0.0", "", {}, "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g=="],
@@ -771,7 +773,7 @@
"run-parallel": ["run-parallel@1.2.0", "", { "dependencies": { "queue-microtask": "^1.2.2" } }, "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA=="], "run-parallel": ["run-parallel@1.2.0", "", { "dependencies": { "queue-microtask": "^1.2.2" } }, "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA=="],
"safe-array-concat": ["safe-array-concat@1.1.3", "", { "dependencies": { "call-bind": "^1.0.8", "call-bound": "^1.0.2", "get-intrinsic": "^1.2.6", "has-symbols": "^1.1.0", "isarray": "^2.0.5" } }, "sha512-AURm5f0jYEOydBj7VQlVvDrjeFgthDdEF5H1dP+6mNpoXOMo1quQqJ4wvJDyRZ9+pO3kGWoOdmV08cSv2aJV6Q=="], "safe-array-concat": ["safe-array-concat@1.1.4", "", { "dependencies": { "call-bind": "^1.0.9", "call-bound": "^1.0.4", "get-intrinsic": "^1.3.0", "has-symbols": "^1.1.0", "isarray": "^2.0.5" } }, "sha512-wtZlHyOje6OZTGqAoaDKxFkgRtkF9CnHAVnCHKfuj200wAgL+bSJhdsCD2l0Qx/2ekEXjPWcyKkfGb5CPboslg=="],
"safe-push-apply": ["safe-push-apply@1.0.0", "", { "dependencies": { "es-errors": "^1.3.0", "isarray": "^2.0.5" } }, "sha512-iKE9w/Z7xCzUMIZqdBsp6pEQvwuEebH4vdpjcDWnyzaI6yl6O9FHvVpmGelvEHNsoY6wGblkxR6Zty/h00WiSA=="], "safe-push-apply": ["safe-push-apply@1.0.0", "", { "dependencies": { "es-errors": "^1.3.0", "isarray": "^2.0.5" } }, "sha512-iKE9w/Z7xCzUMIZqdBsp6pEQvwuEebH4vdpjcDWnyzaI6yl6O9FHvVpmGelvEHNsoY6wGblkxR6Zty/h00WiSA=="],
@@ -795,7 +797,7 @@
"side-channel": ["side-channel@1.1.0", "", { "dependencies": { "es-errors": "^1.3.0", "object-inspect": "^1.13.3", "side-channel-list": "^1.0.0", "side-channel-map": "^1.0.1", "side-channel-weakmap": "^1.0.2" } }, "sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw=="], "side-channel": ["side-channel@1.1.0", "", { "dependencies": { "es-errors": "^1.3.0", "object-inspect": "^1.13.3", "side-channel-list": "^1.0.0", "side-channel-map": "^1.0.1", "side-channel-weakmap": "^1.0.2" } }, "sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw=="],
"side-channel-list": ["side-channel-list@1.0.0", "", { "dependencies": { "es-errors": "^1.3.0", "object-inspect": "^1.13.3" } }, "sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA=="], "side-channel-list": ["side-channel-list@1.0.1", "", { "dependencies": { "es-errors": "^1.3.0", "object-inspect": "^1.13.4" } }, "sha512-mjn/0bi/oUURjc5Xl7IaWi/OJJJumuoJFQJfDDyO46+hBWsfaVM65TBHq2eoZBhzl9EchxOijpkbRC8SVBQU0w=="],
"side-channel-map": ["side-channel-map@1.0.1", "", { "dependencies": { "call-bound": "^1.0.2", "es-errors": "^1.3.0", "get-intrinsic": "^1.2.5", "object-inspect": "^1.13.3" } }, "sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA=="], "side-channel-map": ["side-channel-map@1.0.1", "", { "dependencies": { "call-bound": "^1.0.2", "es-errors": "^1.3.0", "get-intrinsic": "^1.2.5", "object-inspect": "^1.13.3" } }, "sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA=="],
@@ -829,13 +831,13 @@
"supports-preserve-symlinks-flag": ["supports-preserve-symlinks-flag@1.0.0", "", {}, "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w=="], "supports-preserve-symlinks-flag": ["supports-preserve-symlinks-flag@1.0.0", "", {}, "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w=="],
"swiper": ["swiper@12.1.3", "", {}, "sha512-XcWlVmkHFICI4fuoJKgbp8PscDcS4i7pBH8nwJRBi3dpQvhCySwsWRYm4bOf/BzKVWkHOYaFw7qz9uBSrY3oug=="], "swiper": ["swiper@12.1.4", "", {}, "sha512-bihiwoKMOQwW8FfdUbo1DgkVH25E+4ZELIq0oopL1KTKBteLuaTMi/wwFjMxtlhTkk45k3XQ89D1Fvv0spSqBA=="],
"tailwindcss": ["tailwindcss@4.2.2", "", {}, "sha512-KWBIxs1Xb6NoLdMVqhbhgwZf2PGBpPEiwOqgI4pFIYbNTfBXiKYyWoTsXgBQ9WFg/OlhnvHaY+AEpW7wSmFo2Q=="], "tailwindcss": ["tailwindcss@4.2.4", "", {}, "sha512-HhKppgO81FQof5m6TEnuBWCZGgfRAWbaeOaGT00KOy/Pf/j6oUihdvBpA7ltCeAvZpFhW3j0PTclkxsd4IXYDA=="],
"tapable": ["tapable@2.3.2", "", {}, "sha512-1MOpMXuhGzGL5TTCZFItxCc0AARf1EZFQkGqMm7ERKj8+Hgr5oLvJOVFcC+lRmR8hCe2S3jC4T5D7Vg/d7/fhA=="], "tapable": ["tapable@2.3.3", "", {}, "sha512-uxc/zpqFg6x7C8vOE7lh6Lbda8eEL9zmVm/PLeTPBRhh1xCgdWaQ+J1CUieGpIfm2HdtsUpRv+HshiasBMcc6A=="],
"tinyglobby": ["tinyglobby@0.2.15", "", { "dependencies": { "fdir": "^6.5.0", "picomatch": "^4.0.3" } }, "sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ=="], "tinyglobby": ["tinyglobby@0.2.16", "", { "dependencies": { "fdir": "^6.5.0", "picomatch": "^4.0.4" } }, "sha512-pn99VhoACYR8nFHhxqix+uvsbXineAasWm5ojXoN8xEwK5Kd3/TrhNn1wByuD52UxWRLy8pu+kRMniEi6Eq9Zg=="],
"to-regex-range": ["to-regex-range@5.0.1", "", { "dependencies": { "is-number": "^7.0.0" } }, "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ=="], "to-regex-range": ["to-regex-range@5.0.1", "", { "dependencies": { "is-number": "^7.0.0" } }, "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ=="],
@@ -855,9 +857,9 @@
"typed-array-length": ["typed-array-length@1.0.7", "", { "dependencies": { "call-bind": "^1.0.7", "for-each": "^0.3.3", "gopd": "^1.0.1", "is-typed-array": "^1.1.13", "possible-typed-array-names": "^1.0.0", "reflect.getprototypeof": "^1.0.6" } }, "sha512-3KS2b+kL7fsuk/eJZ7EQdnEmQoaho/r6KUef7hxvltNA5DR8NAUM+8wJMbJyZ4G9/7i3v5zPBIMN5aybAh2/Jg=="], "typed-array-length": ["typed-array-length@1.0.7", "", { "dependencies": { "call-bind": "^1.0.7", "for-each": "^0.3.3", "gopd": "^1.0.1", "is-typed-array": "^1.1.13", "possible-typed-array-names": "^1.0.0", "reflect.getprototypeof": "^1.0.6" } }, "sha512-3KS2b+kL7fsuk/eJZ7EQdnEmQoaho/r6KUef7hxvltNA5DR8NAUM+8wJMbJyZ4G9/7i3v5zPBIMN5aybAh2/Jg=="],
"typescript": ["typescript@5.9.3", "", { "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" } }, "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw=="], "typescript": ["typescript@6.0.3", "", { "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" } }, "sha512-y2TvuxSZPDyQakkFRPZHKFm+KKVqIisdg9/CZwm9ftvKXLP8NRWj38/ODjNbr43SsoXqNuAisEf1GdCxqWcdBw=="],
"typescript-eslint": ["typescript-eslint@8.58.0", "", { "dependencies": { "@typescript-eslint/eslint-plugin": "8.58.0", "@typescript-eslint/parser": "8.58.0", "@typescript-eslint/typescript-estree": "8.58.0", "@typescript-eslint/utils": "8.58.0" }, "peerDependencies": { "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", "typescript": ">=4.8.4 <6.1.0" } }, "sha512-e2TQzKfaI85fO+F3QywtX+tCTsu/D3WW5LVU6nz8hTFKFZ8yBJ6mSYRpXqdR3mFjPWmO0eWsTa5f+UpAOe/FMA=="], "typescript-eslint": ["typescript-eslint@8.59.2", "", { "dependencies": { "@typescript-eslint/eslint-plugin": "8.59.2", "@typescript-eslint/parser": "8.59.2", "@typescript-eslint/typescript-estree": "8.59.2", "@typescript-eslint/utils": "8.59.2" }, "peerDependencies": { "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", "typescript": ">=4.8.4 <6.1.0" } }, "sha512-pJw051uomb3ZeCzGTpRb8RbEqB5Y4WWet8gl/GcTlU35BSx0PVdZ86/bqkQCyKKuraVQEK7r6kBHQXF+fBhkoQ=="],
"ua-is-frozen": ["ua-is-frozen@0.1.2", "", {}, "sha512-RwKDW2p3iyWn4UbaxpP2+VxwqXh0jpvdxsYpZ5j/MLLiQOfbsV5shpgQiw93+KMYQPcteeMQ289MaAFzs3G9pw=="], "ua-is-frozen": ["ua-is-frozen@0.1.2", "", {}, "sha512-RwKDW2p3iyWn4UbaxpP2+VxwqXh0jpvdxsYpZ5j/MLLiQOfbsV5shpgQiw93+KMYQPcteeMQ289MaAFzs3G9pw=="],
@@ -865,7 +867,7 @@
"unbox-primitive": ["unbox-primitive@1.1.0", "", { "dependencies": { "call-bound": "^1.0.3", "has-bigints": "^1.0.2", "has-symbols": "^1.1.0", "which-boxed-primitive": "^1.1.1" } }, "sha512-nWJ91DjeOkej/TA8pXQ3myruKpKEYgqvpw9lz4OPHj/NWFNluYrjbz9j01CJ8yKQd2g4jFoOkINCTW2I5LEEyw=="], "unbox-primitive": ["unbox-primitive@1.1.0", "", { "dependencies": { "call-bound": "^1.0.3", "has-bigints": "^1.0.2", "has-symbols": "^1.1.0", "which-boxed-primitive": "^1.1.1" } }, "sha512-nWJ91DjeOkej/TA8pXQ3myruKpKEYgqvpw9lz4OPHj/NWFNluYrjbz9j01CJ8yKQd2g4jFoOkINCTW2I5LEEyw=="],
"undici-types": ["undici-types@7.18.2", "", {}, "sha512-AsuCzffGHJybSaRrmr5eHr81mwJU3kjw6M+uprWvCXiNeN9SOGwQ3Jn8jb8m3Z6izVgknn1R0FTCEAP2QrLY/w=="], "undici-types": ["undici-types@7.19.2", "", {}, "sha512-qYVnV5OEm2AW8cJMCpdV20CDyaN3g0AjDlOGf1OW4iaDEx8MwdtChUp4zu4H0VP3nDRF/8RKWH+IPp9uW0YGZg=="],
"unrs-resolver": ["unrs-resolver@1.11.1", "", { "dependencies": { "napi-postinstall": "^0.3.0" }, "optionalDependencies": { "@unrs/resolver-binding-android-arm-eabi": "1.11.1", "@unrs/resolver-binding-android-arm64": "1.11.1", "@unrs/resolver-binding-darwin-arm64": "1.11.1", "@unrs/resolver-binding-darwin-x64": "1.11.1", "@unrs/resolver-binding-freebsd-x64": "1.11.1", "@unrs/resolver-binding-linux-arm-gnueabihf": "1.11.1", "@unrs/resolver-binding-linux-arm-musleabihf": "1.11.1", "@unrs/resolver-binding-linux-arm64-gnu": "1.11.1", "@unrs/resolver-binding-linux-arm64-musl": "1.11.1", "@unrs/resolver-binding-linux-ppc64-gnu": "1.11.1", "@unrs/resolver-binding-linux-riscv64-gnu": "1.11.1", "@unrs/resolver-binding-linux-riscv64-musl": "1.11.1", "@unrs/resolver-binding-linux-s390x-gnu": "1.11.1", "@unrs/resolver-binding-linux-x64-gnu": "1.11.1", "@unrs/resolver-binding-linux-x64-musl": "1.11.1", "@unrs/resolver-binding-wasm32-wasi": "1.11.1", "@unrs/resolver-binding-win32-arm64-msvc": "1.11.1", "@unrs/resolver-binding-win32-ia32-msvc": "1.11.1", "@unrs/resolver-binding-win32-x64-msvc": "1.11.1" } }, "sha512-bSjt9pjaEBnNiGgc9rUiHGKv5l4/TGzDmYw3RhnkJGtLhbnnA/5qJj7x3dNDCRx/PJxu774LlH8lCOlB4hEfKg=="], "unrs-resolver": ["unrs-resolver@1.11.1", "", { "dependencies": { "napi-postinstall": "^0.3.0" }, "optionalDependencies": { "@unrs/resolver-binding-android-arm-eabi": "1.11.1", "@unrs/resolver-binding-android-arm64": "1.11.1", "@unrs/resolver-binding-darwin-arm64": "1.11.1", "@unrs/resolver-binding-darwin-x64": "1.11.1", "@unrs/resolver-binding-freebsd-x64": "1.11.1", "@unrs/resolver-binding-linux-arm-gnueabihf": "1.11.1", "@unrs/resolver-binding-linux-arm-musleabihf": "1.11.1", "@unrs/resolver-binding-linux-arm64-gnu": "1.11.1", "@unrs/resolver-binding-linux-arm64-musl": "1.11.1", "@unrs/resolver-binding-linux-ppc64-gnu": "1.11.1", "@unrs/resolver-binding-linux-riscv64-gnu": "1.11.1", "@unrs/resolver-binding-linux-riscv64-musl": "1.11.1", "@unrs/resolver-binding-linux-s390x-gnu": "1.11.1", "@unrs/resolver-binding-linux-x64-gnu": "1.11.1", "@unrs/resolver-binding-linux-x64-musl": "1.11.1", "@unrs/resolver-binding-wasm32-wasi": "1.11.1", "@unrs/resolver-binding-win32-arm64-msvc": "1.11.1", "@unrs/resolver-binding-win32-ia32-msvc": "1.11.1", "@unrs/resolver-binding-win32-x64-msvc": "1.11.1" } }, "sha512-bSjt9pjaEBnNiGgc9rUiHGKv5l4/TGzDmYw3RhnkJGtLhbnnA/5qJj7x3dNDCRx/PJxu774LlH8lCOlB4hEfKg=="],
@@ -889,7 +891,7 @@
"yocto-queue": ["yocto-queue@0.1.0", "", {}, "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q=="], "yocto-queue": ["yocto-queue@0.1.0", "", {}, "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q=="],
"zod": ["zod@4.3.6", "", {}, "sha512-rftlrkhHZOcjDwkGlnUtZZkvaPHCsDATp4pGpuOOMDaTdDDXF91wuVDJoWoPsKX/3YPQ5fHuF3STjcYyKr+Qhg=="], "zod": ["zod@4.4.3", "", {}, "sha512-ytENFjIJFl2UwYglde2jchW2Hwm4GJFLDiSXWdTrJQBIN9Fcyp7n4DhxJEiWNAJMV1/BqWfW/kkg71UDcHJyTQ=="],
"zod-validation-error": ["zod-validation-error@4.0.2", "", { "peerDependencies": { "zod": "^3.25.0 || ^4.0.0" } }, "sha512-Q6/nZLe6jxuU80qb/4uJ4t5v2VEZ44lzQjPDhYJNztRQ4wyWc6VF3D3Kb/fAuPetZQnhS3hnajCf9CsWesghLQ=="], "zod-validation-error": ["zod-validation-error@4.0.2", "", { "peerDependencies": { "zod": "^3.25.0 || ^4.0.0" } }, "sha512-Q6/nZLe6jxuU80qb/4uJ4t5v2VEZ44lzQjPDhYJNztRQ4wyWc6VF3D3Kb/fAuPetZQnhS3hnajCf9CsWesghLQ=="],
@@ -899,15 +901,15 @@
"@eslint/eslintrc/globals": ["globals@14.0.0", "", {}, "sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ=="], "@eslint/eslintrc/globals": ["globals@14.0.0", "", {}, "sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ=="],
"@tailwindcss/oxide-wasm32-wasi/@emnapi/core": ["@emnapi/core@1.9.1", "", { "dependencies": { "@emnapi/wasi-threads": "1.2.0", "tslib": "^2.4.0" }, "bundled": true }, "sha512-mukuNALVsoix/w1BJwFzwXBN/dHeejQtuVzcDsfOEsdpCumXb/E9j8w11h5S54tT1xhifGfbbSm/ICrObRb3KA=="], "@tailwindcss/oxide-wasm32-wasi/@emnapi/core": ["@emnapi/core@1.10.0", "", { "dependencies": { "@emnapi/wasi-threads": "1.2.1", "tslib": "^2.4.0" }, "bundled": true }, "sha512-yq6OkJ4p82CAfPl0u9mQebQHKPJkY7WrIuk205cTYnYe+k2Z8YBh11FrbRG/H6ihirqcacOgl2BIO8oyMQLeXw=="],
"@tailwindcss/oxide-wasm32-wasi/@emnapi/runtime": ["@emnapi/runtime@1.9.1", "", { "dependencies": { "tslib": "^2.4.0" }, "bundled": true }, "sha512-VYi5+ZVLhpgK4hQ0TAjiQiZ6ol0oe4mBx7mVv7IflsiEp0OWoVsp/+f9Vc1hOhE0TtkORVrI1GvzyreqpgWtkA=="], "@tailwindcss/oxide-wasm32-wasi/@emnapi/runtime": ["@emnapi/runtime@1.10.0", "", { "dependencies": { "tslib": "^2.4.0" }, "bundled": true }, "sha512-ewvYlk86xUoGI0zQRNq/mC+16R1QeDlKQy21Ki3oSYXNgLb45GV1P6A0M+/s6nyCuNDqe5VpaY84BzXGwVbwFA=="],
"@tailwindcss/oxide-wasm32-wasi/@emnapi/wasi-threads": ["@emnapi/wasi-threads@1.2.0", "", { "dependencies": { "tslib": "^2.4.0" }, "bundled": true }, "sha512-N10dEJNSsUx41Z6pZsXU8FjPjpBEplgH24sfkmITrBED1/U2Esum9F3lfLrMjKHHjmi557zQn7kR9R+XWXu5Rg=="], "@tailwindcss/oxide-wasm32-wasi/@emnapi/wasi-threads": ["@emnapi/wasi-threads@1.2.1", "", { "dependencies": { "tslib": "^2.4.0" }, "bundled": true }, "sha512-uTII7OYF+/Mes/MrcIOYp5yOtSMLBWSIoLPpcgwipoiKbli6k322tcoFsxoIIxPDqW01SQGAgko4EzZi2BNv2w=="],
"@tailwindcss/oxide-wasm32-wasi/@napi-rs/wasm-runtime": ["@napi-rs/wasm-runtime@1.1.2", "", { "dependencies": { "@tybys/wasm-util": "^0.10.1" }, "peerDependencies": { "@emnapi/core": "^1.7.1", "@emnapi/runtime": "^1.7.1" }, "bundled": true }, "sha512-sNXv5oLJ7ob93xkZ1XnxisYhGYXfaG9f65/ZgYuAu3qt7b3NadcOEhLvx28hv31PgX8SZJRYrAIPQilQmFpLVw=="], "@tailwindcss/oxide-wasm32-wasi/@napi-rs/wasm-runtime": ["@napi-rs/wasm-runtime@1.1.4", "", { "dependencies": { "@tybys/wasm-util": "^0.10.1" }, "peerDependencies": { "@emnapi/core": "^1.7.1", "@emnapi/runtime": "^1.7.1" }, "bundled": true }, "sha512-3NQNNgA1YSlJb/kMH1ildASP9HW7/7kYnRI2szWJaofaS1hWmbGI4H+d3+22aGzXXN9IJ+n+GiFVcGipJP18ow=="],
"@tailwindcss/oxide-wasm32-wasi/@tybys/wasm-util": ["@tybys/wasm-util@0.10.1", "", { "dependencies": { "tslib": "^2.4.0" }, "bundled": true }, "sha512-9tTaPJLSiejZKx+Bmog4uSubteqTvFrVrURwkmHixBo0G4seD0zUxp98E1DzUBJxLQ3NPwXrGKDiVjwx/DpPsg=="], "@tailwindcss/oxide-wasm32-wasi/@tybys/wasm-util": ["@tybys/wasm-util@0.10.2", "", { "dependencies": { "tslib": "^2.4.0" }, "bundled": true }, "sha512-RoBvJ2X0wuKlWFIjrwffGw1IqZHKQqzIchKaadZZfnNpsAYp2mM0h36JtPCjNDAHGgYez/15uMBpfGwchhiMgg=="],
"@tailwindcss/oxide-wasm32-wasi/tslib": ["tslib@2.8.1", "", { "bundled": true }, "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w=="], "@tailwindcss/oxide-wasm32-wasi/tslib": ["tslib@2.8.1", "", { "bundled": true }, "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w=="],
@@ -925,8 +927,6 @@
"eslint-plugin-import/debug": ["debug@3.2.7", "", { "dependencies": { "ms": "^2.1.1" } }, "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ=="], "eslint-plugin-import/debug": ["debug@3.2.7", "", { "dependencies": { "ms": "^2.1.1" } }, "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ=="],
"eslint-plugin-react/resolve": ["resolve@2.0.0-next.6", "", { "dependencies": { "es-errors": "^1.3.0", "is-core-module": "^2.16.1", "node-exports-info": "^1.6.0", "object-keys": "^1.1.1", "path-parse": "^1.0.7", "supports-preserve-symlinks-flag": "^1.0.0" }, "bin": { "resolve": "bin/resolve" } }, "sha512-3JmVl5hMGtJ3kMmB3zi3DL25KfkCEyy3Tw7Gmw7z5w8M9WlwoPFnIvwChzu1+cF3iaK3sp18hhPz8ANeimdJfA=="],
"fast-glob/glob-parent": ["glob-parent@5.1.2", "", { "dependencies": { "is-glob": "^4.0.1" } }, "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow=="], "fast-glob/glob-parent": ["glob-parent@5.1.2", "", { "dependencies": { "is-glob": "^4.0.1" } }, "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow=="],
"is-bun-module/semver": ["semver@7.7.4", "", { "bin": { "semver": "bin/semver.js" } }, "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA=="], "is-bun-module/semver": ["semver@7.7.4", "", { "bin": { "semver": "bin/semver.js" } }, "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA=="],
+12 -12
View File
@@ -13,23 +13,23 @@
"@fortawesome/free-brands-svg-icons": "7.2.0", "@fortawesome/free-brands-svg-icons": "7.2.0",
"@fortawesome/free-regular-svg-icons": "7.2.0", "@fortawesome/free-regular-svg-icons": "7.2.0",
"@fortawesome/free-solid-svg-icons": "7.2.0", "@fortawesome/free-solid-svg-icons": "7.2.0",
"@fortawesome/react-fontawesome": "3.3.0", "@fortawesome/react-fontawesome": "3.3.1",
"@marsidev/react-turnstile": "1.5.0", "@marsidev/react-turnstile": "1.5.2",
"axios": "1.14.0", "axios": "1.16.0",
"next": "16.2.2", "next": "16.2.6",
"react": "19.2.4", "react": "19.2.6",
"react-dom": "19.2.4", "react-dom": "19.2.6",
"swiper": "12.1.3", "swiper": "12.1.4",
"ua-parser-js": "2.0.9" "ua-parser-js": "2.0.9"
}, },
"devDependencies": { "devDependencies": {
"typescript": "5.9.3", "typescript": "6.0.3",
"@types/node": "25.5.0", "@types/node": "25.6.1",
"@types/react": "19.2.14", "@types/react": "19.2.14",
"@types/react-dom": "19.2.3", "@types/react-dom": "19.2.3",
"@tailwindcss/postcss": "4.2.2", "@tailwindcss/postcss": "4.2.4",
"tailwindcss": "4.2.2", "tailwindcss": "4.2.4",
"eslint": "9.39.4", "eslint": "9.39.4",
"eslint-config-next": "16.2.2" "eslint-config-next": "16.2.6"
} }
} }
+3 -1
View File
@@ -108,7 +108,9 @@ export default function AccountChangePasswordPage () {
onChange={e => setRetypeNewPassword(e.target.value)} onChange={e => setRetypeNewPassword(e.target.value)}
required required
/> />
<button type='submit'>Change Password</button> <button draggable={false} type='submit'>
Change Password
</button>
</form> </form>
)} )}
</div> </div>
+3 -1
View File
@@ -92,7 +92,9 @@ export default function AccountChangeUsernamePage () {
onChange={e => setNewUsername(e.target.value)} onChange={e => setNewUsername(e.target.value)}
required required
/> />
<button type='submit'>Change Username</button> <button draggable={false} type='submit'>
Change Username
</button>
</form> </form>
)} )}
</div> </div>
+3 -1
View File
@@ -105,7 +105,9 @@ export default function AccountForgotPasswordPage () {
onChange={e => setEmail(e.target.value)} onChange={e => setEmail(e.target.value)}
required required
/> />
<button type='submit'>Send email</button> <button draggable={false} type='submit'>
Send email
</button>
</form> </form>
) : ( ) : (
(result == 1 || result == 2) && ( (result == 1 || result == 2) && (
+3 -1
View File
@@ -105,7 +105,9 @@ export default function AccountForgotUsernamePage () {
onChange={e => setEmail(e.target.value)} onChange={e => setEmail(e.target.value)}
required required
/> />
<button type='submit'>Send email</button> <button draggable={false} type='submit'>
Send email
</button>
</form> </form>
) : ( ) : (
(result == 1 || result == 2) && ( (result == 1 || result == 2) && (
+6 -4
View File
@@ -124,7 +124,9 @@ function AccountLoginForm ({ redirect }: { redirect: string | null }) {
onChange={e => setPassword(e.target.value)} onChange={e => setPassword(e.target.value)}
required required
/> />
<button type='submit'>Login</button> <button draggable={false} type='submit'>
Login
</button>
</form> </form>
<p <p
className='my-2 w-60 whitespace-normal text-center text-sm' className='my-2 w-60 whitespace-normal text-center text-sm'
@@ -139,20 +141,20 @@ function AccountLoginForm ({ redirect }: { redirect: string | null }) {
hidden={alreadyLoggedIn} hidden={alreadyLoggedIn}
> >
<Link <Link
href='/account/forgot-username'
draggable={false} draggable={false}
href='/account/forgot-username'
className='button' className='button'
> >
Forgot username? Forgot username?
</Link> </Link>
<Link <Link
href='/account/forgot-password'
draggable={false} draggable={false}
href='/account/forgot-password'
className='button' className='button'
> >
Forgot password? Forgot password?
</Link> </Link>
<Link href='/account/register' draggable={false} className='button'> <Link draggable={false} href='/account/register' className='button'>
Don&apos;t have an account? Don&apos;t have an account?
</Link> </Link>
</div> </div>
+4 -4
View File
@@ -44,30 +44,30 @@ export default function AccountPage () {
</p> </p>
<div className='flex justify-center flex-col gap-2 mt-4 text-center'> <div className='flex justify-center flex-col gap-2 mt-4 text-center'>
<Link <Link
href='/account/change-username'
draggable={false} draggable={false}
href='/account/change-username'
className='button' className='button'
> >
Change username Change username
</Link> </Link>
<Link <Link
href='/account/change-password'
draggable={false} draggable={false}
href='/account/change-password'
className='button' className='button'
> >
Change password Change password
</Link> </Link>
<Link href='/account/login' draggable={false} className='button'> <Link draggable={false} href='/account/login' className='button'>
Refresh login Refresh login
</Link> </Link>
<button <button
draggable={false}
onClick={() => { onClick={() => {
unsetCookie('accountToken') unsetCookie('accountToken')
unsetCookie('accountUsername') unsetCookie('accountUsername')
unsetCookie('accountId') unsetCookie('accountId')
router.push('/account/login') router.push('/account/login')
}} }}
draggable={false}
> >
Logout Logout
</button> </button>
+4 -2
View File
@@ -158,12 +158,14 @@ export default function AccountRegisterPage () {
onChange={e => setRetypePassword(e.target.value)} onChange={e => setRetypePassword(e.target.value)}
required required
/> />
<button type='submit'>Register</button> <button draggable={false} type='submit'>
Register
</button>
</form> </form>
<div className='flex justify-center flex-col mt-6 text-center'> <div className='flex justify-center flex-col mt-6 text-center'>
<Link <Link
href='/account/login'
draggable={false} draggable={false}
href='/account/login'
className='button' className='button'
> >
Already have an account? Already have an account?
+3 -1
View File
@@ -123,7 +123,9 @@ function AccountResetPasswordForm ({ codeParam }: { codeParam: string }) {
onChange={e => setRetypeNewPassword(e.target.value)} onChange={e => setRetypeNewPassword(e.target.value)}
required required
/> />
<button type='submit'>Update password</button> <button draggable={false} type='submit'>
Update password
</button>
</form> </form>
) : ( ) : (
result == 1 && ( result == 1 && (
+33 -24
View File
@@ -6,6 +6,7 @@ import { DiscordButton } from '../../components/DiscordButton'
import { useEffect, useRef, useState } from 'react' import { useEffect, useRef, useState } from 'react'
import axios from 'axios' import axios from 'axios'
import { UAParser } from 'ua-parser-js' import { UAParser } from 'ua-parser-js'
import Dropdown from '@/components/Dropdown'
export default function DownloadPage () { export default function DownloadPage () {
const [platform, setPlatform] = useState<string>('') const [platform, setPlatform] = useState<string>('')
@@ -16,7 +17,7 @@ export default function DownloadPage () {
document.title = 'Lncvrt Games - Download' document.title = 'Lncvrt Games - Download'
;(async () => { ;(async () => {
try { try {
const result = await axios.get('/api/launcher/loader/latest') const result = await axios.get('/api/launcher/latest')
setVersion(result.data) setVersion(result.data)
} catch { } catch {
setVersion(-1) setVersion(-1)
@@ -67,18 +68,17 @@ export default function DownloadPage () {
The official downloads for Lncvrt Games Launcher The official downloads for Lncvrt Games Launcher
</p> </p>
<div className='flex justify-center'> <div className='flex justify-center'>
<select <Dropdown
value={platform} value={platform}
onChange={e => setPlatform(e.target.value)} options={[
className='' { label: 'Windows', value: 'windows' },
> { label: 'macOS', value: 'macos' },
<option value=''>Select platform</option> { label: 'Linux', value: 'linux' },
<option value='windows'>Windows</option> { label: 'Android', value: 'android' },
<option value='macos'>macOS</option> { label: 'iOS', value: 'ios' }
<option value='linux'>Linux</option> ]}
<option value='android'>Android</option> onChange={val => setPlatform(String(val))}
<option value='ios'>iOS</option> />
</select>
</div> </div>
{(platform == 'windows' || platform == 'macos' || platform == 'linux') && {(platform == 'windows' || platform == 'macos' || platform == 'linux') &&
(version === null || version === -1 ? ( (version === null || version === -1 ? (
@@ -90,30 +90,30 @@ export default function DownloadPage () {
{platform == 'windows' && ( {platform == 'windows' && (
<> <>
<Link <Link
href={`https://games-r2.lncvrt.xyz/lncvrt-games-launcher/Lncvrt-Games-Launcher-${version}-win-x64.msi`}
draggable={false} draggable={false}
href={`https://archive.org/download/lncvrt-games-archive/lncvrt-games-launcher-new/Lncvrt-Games-Launcher-${version}-win-x64.msi`}
> >
Windows 64-bit (x64) Windows 64-bit (x64)
</Link> </Link>
<Link <Link
href={`https://games-r2.lncvrt.xyz/lncvrt-games-launcher/Lncvrt-Games-Launcher-${version}-win-arm64.msi`}
draggable={false} draggable={false}
href={`https://archive.org/download/lncvrt-games-archive/lncvrt-games-launcher-new/Lncvrt-Games-Launcher-${version}-win-arm64.msi`}
> >
Windows ARM 64-bit Windows ARM (arm64)
</Link> </Link>
</> </>
)} )}
{platform == 'macos' && ( {platform == 'macos' && (
<> <>
<Link <Link
href={`https://games-r2.lncvrt.xyz/lncvrt-games-launcher/Lncvrt-Games-Launcher-${version}-macos-arm64.dmg`}
draggable={false} draggable={false}
href={`https://archive.org/download/lncvrt-games-archive/lncvrt-games-launcher-new/Lncvrt-Games-Launcher-${version}-macos-arm64.dmg`}
> >
macOS Apple Silicon (M1, M2, etc.) macOS Apple Silicon (M1, M2, etc.)
</Link> </Link>
<Link <Link
href={`https://games-r2.lncvrt.xyz/lncvrt-games-launcher/Lncvrt-Games-Launcher-${version}-macos-x64.dmg`}
draggable={false} draggable={false}
href={`https://archive.org/download/lncvrt-games-archive/lncvrt-games-launcher-new/Lncvrt-Games-Launcher-${version}-macos-x64.dmg`}
> >
macOS Intel (x64) macOS Intel (x64)
</Link> </Link>
@@ -122,22 +122,28 @@ export default function DownloadPage () {
{platform == 'linux' && ( {platform == 'linux' && (
<> <>
<Link <Link
href={`https://games-r2.lncvrt.xyz/lncvrt-games-launcher/Lncvrt-Games-Launcher-${version}-linux.deb`}
draggable={false} draggable={false}
href={`https://archive.org/download/lncvrt-games-archive/lncvrt-games-launcher-new/Lncvrt-Games-Launcher-${version}-linux-x64.deb`}
> >
Linux Debian/Ubuntu (.deb) Linux Debian-based (.deb, x64)
</Link> </Link>
<Link <Link
href={`https://games-r2.lncvrt.xyz/lncvrt-games-launcher/Lncvrt-Games-Launcher-${version}-linux.rpm`}
draggable={false} draggable={false}
href={`https://archive.org/download/lncvrt-games-archive/lncvrt-games-launcher-new/Lncvrt-Games-Launcher-${version}-linux-arm64.deb`}
> >
Linux Fedora/REHL (.rpm) Linux Debian-based (.deb, arm64)
</Link> </Link>
<Link <Link
href={`https://aur.archlinux.org/packages/lncvrt-games-launcher`}
draggable={false} draggable={false}
href={`https://archive.org/download/lncvrt-games-archive/lncvrt-games-launcher-new/Lncvrt-Games-Launcher-${version}-linux-x64.rpm`}
> >
Arch Linux (AUR) Linux Redhat-based (.rpm, x64)
</Link>
<Link
draggable={false}
href={`https://archive.org/download/lncvrt-games-archive/lncvrt-games-launcher-new/Lncvrt-Games-Launcher-${version}-linux-arm64.rpm`}
>
Linux Redhat-based (.deb, arm64)
</Link> </Link>
</> </>
)} )}
@@ -150,7 +156,10 @@ export default function DownloadPage () {
) && ( ) && (
<p className='mt-2 text-center'> <p className='mt-2 text-center'>
Mobile releases can be found at the bottom of a games page here{' '} Mobile releases can be found at the bottom of a games page here{' '}
<Link href='/'>here</Link>. <Link draggable={false} href='/'>
here
</Link>
.
</p> </p>
)} )}
</div> </div>
+16 -14
View File
@@ -4,6 +4,7 @@ import { HomeButton } from '../../components/HomeButton'
import { DiscordButton } from '../../components/DiscordButton' import { DiscordButton } from '../../components/DiscordButton'
import { useEffect, useRef, useState } from 'react' import { useEffect, useRef, useState } from 'react'
import axios from 'axios' import axios from 'axios'
import Dropdown from '@/components/Dropdown'
interface Version { interface Version {
id: string id: string
@@ -88,7 +89,7 @@ export default function GameDownloadsPage () {
<DiscordButton /> <DiscordButton />
<p className='text-center text-2xl sm:text-4xl'>Game Downloads</p> <p className='text-center text-2xl sm:text-4xl'>Game Downloads</p>
<p className='text-center text-sm sm:text-[18px] mb-2'> <p className='text-center text-sm sm:text-[18px] mb-2'>
The launcher's download sources, in a website! The launcher&apos;s download sources, in a website!
</p> </p>
{versionManifest == 0 || versionManifest == -1 ? ( {versionManifest == 0 || versionManifest == -1 ? (
<p className='text-center'> <p className='text-center'>
@@ -98,19 +99,19 @@ export default function GameDownloadsPage () {
<> <>
<div> <div>
<p className='text-center'>Game Filter</p> <p className='text-center'>Game Filter</p>
<div className='flex justify-center mb-4'> <div className='flex justify-center mb-2'>
<select <Dropdown
className='w-full max-w-xs' value={String(game)}
value={game} options={[
onChange={e => setGame(Number(e.target.value))} { label: 'Off', value: '-1' },
> ...versionManifest.games.map(g => ({
<option value='-1'>Off</option> label: g.name,
{versionManifest.games.map(g => ( value: String(g.id)
<option key={g.id} value={g.id}> }))
{g.name} ]}
</option> onChange={val => setGame(Number(val))}
))} width={240}
</select> />
</div> </div>
</div> </div>
<div className='flex flex-col gap-2'> <div className='flex flex-col gap-2'>
@@ -128,6 +129,7 @@ export default function GameDownloadsPage () {
<div className='flex flex-row flex-wrap gap-2 justify-center'> <div className='flex flex-row flex-wrap gap-2 justify-center'>
{Object.entries(v.downloads).map(([key, value]) => ( {Object.entries(v.downloads).map(([key, value]) => (
<button <button
draggable={false}
key={v.game + '-' + v.id + '-' + key} key={v.game + '-' + v.id + '-' + key}
className='text-sm sm:text-base' className='text-sm sm:text-base'
onClick={async e => { onClick={async e => {
+8 -8
View File
@@ -45,7 +45,7 @@ export default function BerryDashCustomGameInfo () {
<SwiperSlide> <SwiperSlide>
<Image <Image
src={ src={
'https://games-r2.lncvrt.xyz/screenshots/berry-dash-custom/home.png' 'https://archive.org/download/lncvrt-games-archive/screenshots/berry-dash-custom/home.png'
} }
width={960} width={960}
height={540} height={540}
@@ -55,7 +55,7 @@ export default function BerryDashCustomGameInfo () {
<SwiperSlide> <SwiperSlide>
<Image <Image
src={ src={
'https://games-r2.lncvrt.xyz/screenshots/berry-dash-custom/mode-select.png' 'https://archive.org/download/lncvrt-games-archive/screenshots/berry-dash-custom/mode-select.png'
} }
width={960} width={960}
height={540} height={540}
@@ -65,7 +65,7 @@ export default function BerryDashCustomGameInfo () {
<SwiperSlide> <SwiperSlide>
<Image <Image
src={ src={
'https://games-r2.lncvrt.xyz/screenshots/berry-dash-custom/playing.png' 'https://archive.org/download/lncvrt-games-archive/screenshots/berry-dash-custom/playing.png'
} }
width={960} width={960}
height={540} height={540}
@@ -75,7 +75,7 @@ export default function BerryDashCustomGameInfo () {
<SwiperSlide> <SwiperSlide>
<Image <Image
src={ src={
'https://games-r2.lncvrt.xyz/screenshots/berry-dash-custom/custom.png' 'https://archive.org/download/lncvrt-games-archive/screenshots/berry-dash-custom/custom.png'
} }
width={960} width={960}
height={540} height={540}
@@ -85,7 +85,7 @@ export default function BerryDashCustomGameInfo () {
<SwiperSlide> <SwiperSlide>
<Image <Image
src={ src={
'https://games-r2.lncvrt.xyz/screenshots/berry-dash-custom/icons.png' 'https://archive.org/download/lncvrt-games-archive/screenshots/berry-dash-custom/icons.png'
} }
width={960} width={960}
height={540} height={540}
@@ -96,18 +96,18 @@ export default function BerryDashCustomGameInfo () {
<p className='text-2xl mt-4 mb-1'>Downloads</p> <p className='text-2xl mt-4 mb-1'>Downloads</p>
<div className='downloads'> <div className='downloads'>
<Link <Link
href='https://games-r2.lncvrt.xyz/berry-dash-custom/Berry-Dash-Custom-1.1.1-android.apk'
draggable={false} draggable={false}
href='https://archive.org/download/lncvrt-games-archive/berry-dash-custom/Berry-Dash-Custom-1.1.1-android.apk'
> >
Android Android
</Link> </Link>
<Link <Link
href='https://games-r2.lncvrt.xyz/berry-dash-custom/Berry-Dash-Custom-1.1.1-ios.ipa'
draggable={false} draggable={false}
href='https://archive.org/download/lncvrt-games-archive/berry-dash-custom/Berry-Dash-Custom-1.1.1-ios.ipa'
> >
iOS iOS
</Link> </Link>
<Link href='/download' draggable={false}> <Link draggable={false} href='/download'>
Windows, macOS, or Linux Windows, macOS, or Linux
</Link> </Link>
</div> </div>
@@ -46,7 +46,7 @@ export default function BerryDashGodotRemakeGameInfo () {
<SwiperSlide> <SwiperSlide>
<Image <Image
src={ src={
'https://games-r2.lncvrt.xyz/screenshots/berry-dash-godot-remake/home.png' 'https://archive.org/download/lncvrt-games-archive/screenshots/berry-dash-godot-remake/home.png'
} }
width={960} width={960}
height={540} height={540}
@@ -56,7 +56,7 @@ export default function BerryDashGodotRemakeGameInfo () {
<SwiperSlide> <SwiperSlide>
<Image <Image
src={ src={
'https://games-r2.lncvrt.xyz/screenshots/berry-dash-godot-remake/settings.png' 'https://archive.org/download/lncvrt-games-archive/screenshots/berry-dash-godot-remake/settings.png'
} }
width={960} width={960}
height={540} height={540}
@@ -66,7 +66,7 @@ export default function BerryDashGodotRemakeGameInfo () {
<SwiperSlide> <SwiperSlide>
<Image <Image
src={ src={
'https://games-r2.lncvrt.xyz/screenshots/berry-dash-godot-remake/playing.png' 'https://archive.org/download/lncvrt-games-archive/screenshots/berry-dash-godot-remake/playing.png'
} }
width={960} width={960}
height={540} height={540}
@@ -77,18 +77,18 @@ export default function BerryDashGodotRemakeGameInfo () {
<p className='text-2xl mt-4 mb-1'>Downloads</p> <p className='text-2xl mt-4 mb-1'>Downloads</p>
<div className='downloads'> <div className='downloads'>
<Link <Link
href='https://games-r2.lncvrt.xyz/berry-dash-godot-remake/Berry-Dash-Godot-Remake-1.1.0-android.apk'
draggable={false} draggable={false}
href='https://archive.org/download/lncvrt-games-archive/berry-dash-godot-remake/Berry-Dash-Godot-Remake-1.1.0-android.apk'
> >
Android Android
</Link> </Link>
<Link <Link
href='https://games-r2.lncvrt.xyz/berry-dash-godot-remake/Berry-Dash-Godot-Remake-1.1.0-ios.ipa'
draggable={false} draggable={false}
href='https://archive.org/download/lncvrt-games-archive/berry-dash-godot-remake/Berry-Dash-Godot-Remake-1.1.0-ios.ipa'
> >
iOS iOS
</Link> </Link>
<Link href='/download' draggable={false}> <Link draggable={false} href='/download'>
Windows, macOS, or Linux Windows, macOS, or Linux
</Link> </Link>
</div> </div>
+5 -5
View File
@@ -50,7 +50,7 @@ export default function BerryDashLiteGameInfo () {
<SwiperSlide> <SwiperSlide>
<Image <Image
src={ src={
'https://games-r2.lncvrt.xyz/screenshots/berry-dash-lite/playing.png' 'https://archive.org/download/lncvrt-games-archive/screenshots/berry-dash-lite/playing.png'
} }
width={960} width={960}
height={540} height={540}
@@ -60,7 +60,7 @@ export default function BerryDashLiteGameInfo () {
<SwiperSlide> <SwiperSlide>
<Image <Image
src={ src={
'https://games-r2.lncvrt.xyz/screenshots/berry-dash-lite/stats.png' 'https://archive.org/download/lncvrt-games-archive/screenshots/berry-dash-lite/stats.png'
} }
width={960} width={960}
height={540} height={540}
@@ -71,18 +71,18 @@ export default function BerryDashLiteGameInfo () {
<p className='text-2xl mt-4 mb-1'>Downloads</p> <p className='text-2xl mt-4 mb-1'>Downloads</p>
<div className='downloads'> <div className='downloads'>
<Link <Link
href='https://games-r2.lncvrt.xyz/berry-dash-lite/Berry-Dash-Lite-1.0-android.apk'
draggable={false} draggable={false}
href='https://archive.org/download/lncvrt-games-archive/berry-dash-lite/Berry-Dash-Lite-1.0-android.apk'
> >
Android Android
</Link> </Link>
<Link <Link
href='https://games-r2.lncvrt.xyz/berry-dash-lite/Berry-Dash-Lite-1.0-ios.ipa'
draggable={false} draggable={false}
href='https://archive.org/download/lncvrt-games-archive/berry-dash-lite/Berry-Dash-Lite-1.0-ios.ipa'
> >
iOS iOS
</Link> </Link>
<Link href='/download' draggable={false}> <Link draggable={false} href='/download'>
Windows, macOS, or Linux Windows, macOS, or Linux
</Link> </Link>
</div> </div>
-55
View File
@@ -1,55 +0,0 @@
'use client'
import 'swiper/css'
import 'swiper/css/navigation'
import Link from 'next/link'
import { useEffect, useRef } from 'react'
import { HomeButton } from '@/components/HomeButton'
import { DiscordButton } from '@/components/DiscordButton'
export default function BerryDashUltimateGameInfo () {
const backButtonRef = useRef<HTMLAnchorElement>(null)
useEffect(() => {
document.title = 'Lncvrt Games - Berry Dash Ultimate'
const handleKeyDown = (e: KeyboardEvent) => {
if (e.key === 'Escape') {
backButtonRef.current?.click()
}
}
window.addEventListener('keydown', handleKeyDown)
return () => window.removeEventListener('keydown', handleKeyDown)
}, [])
return (
<div className='box text-center'>
<HomeButton refLink={backButtonRef} />
<DiscordButton />
<p className='text-4xl'>Berry Dash Ultimate</p>
<p>
Berry Dash Ultimate is a unofficial game made by BoNoise from scratch!
It includes a lot of custom mechanics and more!
</p>
<p className='text-2xl mt-4 mb-1'>Downloads</p>
<div className='downloads'>
<Link
href='https://games-r2.lncvrt.xyz/berry-dash-ultimate/Berry-Dash-Ultimate-1.5.0-android.apk'
draggable={false}
>
Android
</Link>
<Link
href='https://games-r2.lncvrt.xyz/berry-dash-ultimate/Berry-Dash-Ultimate-1.5.0-ios.ipa'
draggable={false}
>
iOS
</Link>
<Link href='/download' draggable={false}>
Windows, macOS, or Linux
</Link>
</div>
</div>
)
}
@@ -49,7 +49,7 @@ export default function BerryDashWithGunsCustomGameInfo () {
<SwiperSlide> <SwiperSlide>
<Image <Image
src={ src={
'https://games-r2.lncvrt.xyz/screenshots/berry-dash-with-guns-custom/playing-1.png' 'https://archive.org/download/lncvrt-games-archive/screenshots/berry-dash-with-guns-custom/playing-1.png'
} }
width={960} width={960}
height={540} height={540}
@@ -59,7 +59,7 @@ export default function BerryDashWithGunsCustomGameInfo () {
<SwiperSlide> <SwiperSlide>
<Image <Image
src={ src={
'https://games-r2.lncvrt.xyz/screenshots/berry-dash-with-guns-custom/playing-2.png' 'https://archive.org/download/lncvrt-games-archive/screenshots/berry-dash-with-guns-custom/playing-2.png'
} }
width={960} width={960}
height={540} height={540}
@@ -69,7 +69,7 @@ export default function BerryDashWithGunsCustomGameInfo () {
<SwiperSlide> <SwiperSlide>
<Image <Image
src={ src={
'https://games-r2.lncvrt.xyz/screenshots/berry-dash-with-guns-custom/stats.png' 'https://archive.org/download/lncvrt-games-archive/screenshots/berry-dash-with-guns-custom/stats.png'
} }
width={960} width={960}
height={540} height={540}
@@ -79,7 +79,7 @@ export default function BerryDashWithGunsCustomGameInfo () {
</Swiper> </Swiper>
<p className='text-2xl mt-4 mb-1'>Downloads</p> <p className='text-2xl mt-4 mb-1'>Downloads</p>
<div className='downloads'> <div className='downloads'>
<Link href='/download' draggable={false}> <Link draggable={false} href='/download'>
Windows, macOS, or Linux Windows, macOS, or Linux
</Link> </Link>
</div> </div>
+5 -5
View File
@@ -49,7 +49,7 @@ export default function BerryDashWithGunsGameInfo () {
<SwiperSlide> <SwiperSlide>
<Image <Image
src={ src={
'https://games-r2.lncvrt.xyz/screenshots/berry-dash-with-guns/playing.png' 'https://archive.org/download/lncvrt-games-archive/screenshots/berry-dash-with-guns/playing.png'
} }
width={960} width={960}
height={540} height={540}
@@ -59,7 +59,7 @@ export default function BerryDashWithGunsGameInfo () {
<SwiperSlide> <SwiperSlide>
<Image <Image
src={ src={
'https://games-r2.lncvrt.xyz/screenshots/berry-dash-with-guns/stats.png' 'https://archive.org/download/lncvrt-games-archive/screenshots/berry-dash-with-guns/stats.png'
} }
width={960} width={960}
height={540} height={540}
@@ -70,18 +70,18 @@ export default function BerryDashWithGunsGameInfo () {
<p className='text-2xl mt-4 mb-1'>Downloads</p> <p className='text-2xl mt-4 mb-1'>Downloads</p>
<div className='downloads'> <div className='downloads'>
<Link <Link
href='https://games-r2.lncvrt.xyz/berry-dash-with-guns/Berry-Dash-with-Guns-1.1-android.apk'
draggable={false} draggable={false}
href='https://archive.org/download/lncvrt-games-archive/berry-dash-with-guns/Berry-Dash-with-Guns-1.1-android.apk'
> >
Android Android
</Link> </Link>
<Link <Link
href='https://games-r2.lncvrt.xyz/berry-dash-with-guns/Berry-Dash-with-Guns-1.1-ios.ipa'
draggable={false} draggable={false}
href='https://archive.org/download/lncvrt-games-archive/berry-dash-with-guns/Berry-Dash-with-Guns-1.1-ios.ipa'
> >
iOS iOS
</Link> </Link>
<Link href='/download' draggable={false}> <Link draggable={false} href='/download'>
Windows, macOS, or Linux Windows, macOS, or Linux
</Link> </Link>
</div> </div>
+38 -15
View File
@@ -9,6 +9,7 @@ import { formatHumanTime } from '@/util/time'
import { faPencil, faTrashCan } from '@fortawesome/free-solid-svg-icons' import { faPencil, faTrashCan } from '@fortawesome/free-solid-svg-icons'
import { FontAwesomeIcon } from '@fortawesome/react-fontawesome' import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'
import Image from 'next/image' import Image from 'next/image'
import { useSearchParams } from 'next/navigation'
import { useEffect, useRef, useState } from 'react' import { useEffect, useRef, useState } from 'react'
interface WSMessage { interface WSMessage {
@@ -43,14 +44,15 @@ export default function BerryDashChatroom () {
const [messages, setMessages] = useState<Message[]>([]) const [messages, setMessages] = useState<Message[]>([])
const [ws, setWs] = useState<WebSocket | null>(null) const [ws, setWs] = useState<WebSocket | null>(null)
const backButtonRef = useRef<HTMLAnchorElement>(null) const backButtonRef = useRef<HTMLAnchorElement>(null)
const params = useSearchParams()
const messagesDiv = useRef<HTMLDivElement>(null) const messagesDiv = useRef<HTMLDivElement>(null)
const [input, setInput] = useState<string>('') const [input, setInput] = useState<string>('')
useEffect(() => { useEffect(() => {
document.title = 'Lncvrt Games - Chatroom' document.title = 'Lncvrt Games - Berry Dash Chatroom'
const token = getCookie('accountToken', '-1') const token = params.get('accountToken') ?? getCookie('accountToken', '-1')
if (token !== '-1') { if (token !== '-1') {
setTimeout(() => setLoggedIn(true), 0) setTimeout(() => setLoggedIn(true), 0)
setTimeout(() => setToken(token), 0) setTimeout(() => setToken(token), 0)
@@ -60,6 +62,16 @@ export default function BerryDashChatroom () {
socket.onopen = () => { socket.onopen = () => {
setConnected(true) setConnected(true)
socket.send(
JSON.stringify({
type: 'connected_with_current_scene',
sceneName: 'ChatroomMenu',
Requester: 'BerryDashClient',
ClientVersion: '26.1',
ClientPlatform: 'OSXPlayer',
timestamp: Date.now()
})
)
socket.send( socket.send(
JSON.stringify({ JSON.stringify({
type: 'info_request', type: 'info_request',
@@ -108,18 +120,20 @@ export default function BerryDashChatroom () {
return () => { return () => {
socket.close() socket.close()
} }
}, []) }, [params])
useEffect(() => { useEffect(() => {
const handleKeyDown = (e: KeyboardEvent) => { if (!params.get('launcher')) {
if (e.key === 'Escape') { const handleKeyDown = (e: KeyboardEvent) => {
backButtonRef.current?.click() if (e.key === 'Escape') {
backButtonRef.current?.click()
}
} }
}
window.addEventListener('keydown', handleKeyDown) window.addEventListener('keydown', handleKeyDown)
return () => window.removeEventListener('keydown', handleKeyDown) return () => window.removeEventListener('keydown', handleKeyDown)
}, []) }
}, [params])
useEffect(() => { useEffect(() => {
if (messagesDiv.current) { if (messagesDiv.current) {
@@ -129,8 +143,12 @@ export default function BerryDashChatroom () {
return ( return (
<div className='box'> <div className='box'>
<BackButton href='/game/berry-dash' refLink={backButtonRef} /> {!params.get('launcher') && (
<DiscordButton /> <>
<BackButton href='/game/berry-dash' refLink={backButtonRef} />
<DiscordButton />
</>
)}
<p className='px-8 mb-4 -mt-2 text-center text-2xl'> <p className='px-8 mb-4 -mt-2 text-center text-2xl'>
Berry Dash Chatroom Berry Dash Chatroom
</p> </p>
@@ -142,7 +160,7 @@ export default function BerryDashChatroom () {
> >
{messages.map(item => { {messages.map(item => {
return ( return (
<div key={item.id} className='sub-box2 flex flex-row gap-1'> <div key={item.id} className='message sub-box2'>
<Image <Image
src={ src={
!item.customIcon !item.customIcon
@@ -167,7 +185,10 @@ export default function BerryDashChatroom () {
className='pointer-events-none scale-x-[-1]' className='pointer-events-none scale-x-[-1]'
/> />
<div> <div>
{item.userId == Number(getCookie('accountId', '-1')) && ( {item.userId ==
Number(
params.get('accountId') ?? getCookie('accountId', '-1')
) && (
<div className='relative'> <div className='relative'>
<div <div
className='actionbutton mr-5' className='actionbutton mr-5'
@@ -292,7 +313,9 @@ export default function BerryDashChatroom () {
value={input} value={input}
onChange={e => setInput(e.target.value)} onChange={e => setInput(e.target.value)}
></input> ></input>
<button className='-mr-4'>{!editing ? 'Send' : 'Edit'}</button> <button draggable={false} className='-mr-4'>
{!editing ? 'Send' : 'Edit'}
</button>
</form> </form>
) : ( ) : (
<p className='text-center -mb-4 mt-6'> <p className='text-center -mb-4 mt-6'>
+10 -2
View File
@@ -1,5 +1,13 @@
@import "tailwindcss"; @import "tailwindcss";
.actionbutton { .message {
@apply absolute right-0 w-6 h-6 bg-(--col6) hover:bg-(--col8) rounded-full -mt-1.5 flex justify-center items-center cursor-pointer transition-colors; @apply flex flex-row gap-1;
}
.message:hover .actionbutton {
@apply flex;
}
.actionbutton {
@apply absolute right-0 w-6 h-6 bg-(--col5) hover:bg-(--col7) rounded-full -mt-1.5 justify-center items-center cursor-pointer transition-colors hidden;
} }
@@ -65,7 +65,7 @@ export default function BerryDashIconMarketplace () {
) : ( ) : (
response.map(icon => ( response.map(icon => (
<div className='sub-box2' key={icon.id}> <div className='sub-box2' key={icon.id}>
<div className='bg-(--col8) rounded-md w-fit h-fit p-2 mx-auto'> <div className='bg-(--col7) rounded-md w-fit h-fit p-2 mx-auto'>
<Image <Image
src={ src={
'/api/berrydash/icon-marketplace/icon?id=' + '/api/berrydash/icon-marketplace/icon?id=' +
@@ -74,7 +74,6 @@ export default function BerryDashIconMarketplace () {
} }
width={96} width={96}
height={96} height={96}
draggable={false}
alt='' alt=''
className='pointer-events-none' className='pointer-events-none'
/> />
@@ -170,16 +170,17 @@ export default function BerryDashSubmitIcon () {
onChange={e => setPrice(Number(e.target.value))} onChange={e => setPrice(Number(e.target.value))}
required required
/> />
<button type='submit'>Upload!</button> <button draggable={false} type='submit'>
Upload!
</button>
<div className='mt-4'> <div className='mt-4'>
<p className='text-center mb-1 text-xl'>Preview:</p> <p className='text-center mb-1 text-xl'>Preview:</p>
<div className='sub-box2 text-center'> <div className='sub-box2 text-center'>
<div className='bg-(--col8) rounded-md w-fit h-fit p-2 mx-auto'> <div className='bg-(--col7) rounded-md w-fit h-fit p-2 mx-auto'>
<img <img
src={preview ?? undefined} src={preview ?? undefined}
width={96} width={96}
height={96} height={96}
draggable={false}
className='pointer-events-none' className='pointer-events-none'
/> />
</div> </div>
+66 -36
View File
@@ -1,12 +1,15 @@
'use client' 'use client'
import './styles.css'
import { BackButton } from '@/components/BackButton' import { BackButton } from '@/components/BackButton'
import { DiscordButton } from '@/components/DiscordButton' import { DiscordButton } from '@/components/DiscordButton'
import { useCallback, useEffect, useRef, useState } from 'react' import { Suspense, useCallback, useEffect, useRef, useState } from 'react'
import { BirdColor } from '../chatroom/page' import { BirdColor } from '../chatroom/page'
import axios from 'axios' import axios from 'axios'
import { GetIconForUser } from '@/util/bd' import { GetIconForUser } from '@/util/bd'
import Image from 'next/image' import Image from 'next/image'
import { useSearchParams } from 'next/navigation'
import Dropdown from '@/components/Dropdown'
interface BaseEntry { interface BaseEntry {
id: number id: number
@@ -79,13 +82,14 @@ export function calculateLevel (xp: bigint): number {
return Math.floor(level) + 1 return Math.floor(level) + 1
} }
export default function BerryDashLeaderboards () { function BerryDashLeaderboardsSuspence () {
const [selected, setSelected] = useState<number>(-1) const [selected, setSelected] = useState<number>(-1)
const [selectedBerryOption, setSelectedBerryOption] = useState<number>(0) const [selectedBerryOption, setSelectedBerryOption] = useState<number>(0)
const [gettingEntries, setGettingEntries] = useState<boolean>(false) const [gettingEntries, setGettingEntries] = useState<boolean>(false)
const [entries, setEntries] = useState<(LeaderboardEntry | Account)[]>([]) const [entries, setEntries] = useState<(LeaderboardEntry | Account)[]>([])
const backButtonRef = useRef<HTMLAnchorElement>(null) const backButtonRef = useRef<HTMLAnchorElement>(null)
const backButtonRef2 = useRef<HTMLButtonElement>(null) const backButtonRef2 = useRef<HTMLButtonElement>(null)
const params = useSearchParams()
const Refresh = useCallback(async () => { const Refresh = useCallback(async () => {
setGettingEntries(true) setGettingEntries(true)
@@ -140,16 +144,18 @@ export default function BerryDashLeaderboards () {
useEffect(() => { useEffect(() => {
document.title = 'Lncvrt Games - Berry Dash Leaderboards' document.title = 'Lncvrt Games - Berry Dash Leaderboards'
const handleKeyDown = (e: KeyboardEvent) => { if (!params.get('launcher')) {
if (e.key === 'Escape') { const handleKeyDown = (e: KeyboardEvent) => {
backButtonRef.current?.click() if (e.key === 'Escape') {
backButtonRef2.current?.click() backButtonRef.current?.click()
backButtonRef2.current?.click()
}
} }
}
window.addEventListener('keydown', handleKeyDown) window.addEventListener('keydown', handleKeyDown)
return () => window.removeEventListener('keydown', handleKeyDown) return () => window.removeEventListener('keydown', handleKeyDown)
}, []) }
}, [params])
useEffect(() => { useEffect(() => {
if (selected != -1) setTimeout(() => Refresh(), 0) if (selected != -1) setTimeout(() => Refresh(), 0)
@@ -158,7 +164,9 @@ export default function BerryDashLeaderboards () {
return ( return (
<div className='box'> <div className='box'>
{selected == -1 ? ( {selected == -1 ? (
<BackButton href='/game/berry-dash' refLink={backButtonRef} /> !params.get('launcher') && (
<BackButton href='/game/berry-dash' refLink={backButtonRef} />
)
) : ( ) : (
<BackButton <BackButton
onClick={() => { onClick={() => {
@@ -170,7 +178,7 @@ export default function BerryDashLeaderboards () {
refButton={backButtonRef2} refButton={backButtonRef2}
/> />
)} )}
<DiscordButton /> {!params.get('launcher') && <DiscordButton />}
<p className='px-20 mb-2 -mt-2 text-center text-2xl'> <p className='px-20 mb-2 -mt-2 text-center text-2xl'>
Berry Dash Leaderboards Berry Dash Leaderboards
</p> </p>
@@ -178,13 +186,25 @@ export default function BerryDashLeaderboards () {
<> <>
<p className='text-center mt-4 text-xl'>Select a Leaderboard</p> <p className='text-center mt-4 text-xl'>Select a Leaderboard</p>
<div className='flex flex-col gap-2 mt-4 items-center justify-center'> <div className='flex flex-col gap-2 mt-4 items-center justify-center'>
<button onClick={() => setSelected(0)}>Score Leaderboard</button> <button draggable={false} onClick={() => setSelected(0)}>
<button onClick={() => setSelected(1)}>Berry Leaderboard</button> Score Leaderboard
<button onClick={() => setSelected(2)}>Coins Leaderboard</button> </button>
<button onClick={() => setSelected(3)}>Level Leaderboard</button> <button draggable={false} onClick={() => setSelected(1)}>
<button onClick={() => setSelected(4)}>Total XP Leaderboard</button> Berry Leaderboard
<button onClick={() => setSelected(5)}>Legacy Leaderboard</button> </button>
<button onClick={() => setSelected(6)}> <button draggable={false} onClick={() => setSelected(2)}>
Coins Leaderboard
</button>
<button draggable={false} onClick={() => setSelected(3)}>
Level Leaderboard
</button>
<button draggable={false} onClick={() => setSelected(4)}>
Total XP Leaderboard
</button>
<button draggable={false} onClick={() => setSelected(5)}>
Legacy Leaderboard
</button>
<button draggable={false} onClick={() => setSelected(6)}>
Total Berries Leaderboard Total Berries Leaderboard
</button> </button>
</div> </div>
@@ -199,7 +219,7 @@ export default function BerryDashLeaderboards () {
return ( return (
<div <div
key={item.id} key={item.id}
className='flex justify-between items-center' className='leaderboard-entry flex justify-between items-center'
> >
<div className='flex items-center gap-1'> <div className='flex items-center gap-1'>
<Image <Image
@@ -250,22 +270,22 @@ export default function BerryDashLeaderboards () {
})} })}
</div> </div>
{selected == 1 && ( {selected == 1 && (
<div className='flex justify-center'> <div className='flex justify-center -mb-4 mt-2'>
<select <Dropdown
value={selectedBerryOption} value={String(selectedBerryOption)}
onChange={e => setSelectedBerryOption(Number(e.target.value))} options={[
className='-my-4 mt-2' { label: 'Normal Berry', value: '0' },
> { label: 'Poison Berry', value: '1' },
<option value='0'>Normal Berry</option> { label: 'Slow Berry', value: '2' },
<option value='1'>Poison Berry</option> { label: 'Ultra Berry', value: '3' },
<option value='2'>Slow Berry</option> { label: 'Speedy Berry', value: '4' },
<option value='3'>Ultra Berry</option> { label: 'Coin Berry', value: '5' },
<option value='4'>Speedy Berry</option> { label: 'Random Berry', value: '6' },
<option value='5'>Coin Berry</option> { label: 'Anti Berry', value: '7' },
<option value='6'>Random Berry</option> { label: 'Golden Berry', value: '8' }
<option value='7'>Anti Berry</option> ]}
<option value='8'>Golden Berry</option> onChange={val => setSelectedBerryOption(Number(val))}
</select> />
</div> </div>
)} )}
</> </>
@@ -273,3 +293,13 @@ export default function BerryDashLeaderboards () {
</div> </div>
) )
} }
export default function BerryDashLeaderboards () {
return (
<Suspense
fallback={<p className='px-8 -mt-2 -mb-2 text-center'>Loading...</p>}
>
<BerryDashLeaderboardsSuspence />
</Suspense>
)
}
@@ -0,0 +1,5 @@
@import "tailwindcss";
.leaderboard-entry {
@apply rounded-lg text-lg px-1 py-0.5 transition-colors bg-(--col2) hover:bg-(--col3) border border-(--col4) hover:border-(--col5) cursor-pointer;
}
+14 -14
View File
@@ -48,7 +48,7 @@ export default function BerryDashGameInfo () {
> >
<SwiperSlide> <SwiperSlide>
<Image <Image
src={'https://games-r2.lncvrt.xyz/screenshots/berry-dash/home.png'} src={'https://archive.org/download/lncvrt-games-archive/screenshots/berry-dash/home.png'}
width={960} width={960}
height={540} height={540}
alt='' alt=''
@@ -57,7 +57,7 @@ export default function BerryDashGameInfo () {
<SwiperSlide> <SwiperSlide>
<Image <Image
src={ src={
'https://games-r2.lncvrt.xyz/screenshots/berry-dash/mode-select.png' 'https://archive.org/download/lncvrt-games-archive/screenshots/berry-dash/mode-select.png'
} }
width={960} width={960}
height={540} height={540}
@@ -67,7 +67,7 @@ export default function BerryDashGameInfo () {
<SwiperSlide> <SwiperSlide>
<Image <Image
src={ src={
'https://games-r2.lncvrt.xyz/screenshots/berry-dash/playing.png' 'https://archive.org/download/lncvrt-games-archive/screenshots/berry-dash/playing.png'
} }
width={960} width={960}
height={540} height={540}
@@ -77,7 +77,7 @@ export default function BerryDashGameInfo () {
<SwiperSlide> <SwiperSlide>
<Image <Image
src={ src={
'https://games-r2.lncvrt.xyz/screenshots/berry-dash/custom.png' 'https://archive.org/download/lncvrt-games-archive/screenshots/berry-dash/custom.png'
} }
width={960} width={960}
height={540} height={540}
@@ -86,7 +86,7 @@ export default function BerryDashGameInfo () {
</SwiperSlide> </SwiperSlide>
<SwiperSlide> <SwiperSlide>
<Image <Image
src={'https://games-r2.lncvrt.xyz/screenshots/berry-dash/stats.png'} src={'https://archive.org/download/lncvrt-games-archive/screenshots/berry-dash/stats.png'}
width={960} width={960}
height={540} height={540}
alt='' alt=''
@@ -95,7 +95,7 @@ export default function BerryDashGameInfo () {
<SwiperSlide> <SwiperSlide>
<Image <Image
src={ src={
'https://games-r2.lncvrt.xyz/screenshots/berry-dash/leaderboards.png' 'https://archive.org/download/lncvrt-games-archive/screenshots/berry-dash/leaderboards.png'
} }
width={960} width={960}
height={540} height={540}
@@ -105,7 +105,7 @@ export default function BerryDashGameInfo () {
<SwiperSlide> <SwiperSlide>
<Image <Image
src={ src={
'https://games-r2.lncvrt.xyz/screenshots/berry-dash/chatroom.png' 'https://archive.org/download/lncvrt-games-archive/screenshots/berry-dash/chatroom.png'
} }
width={960} width={960}
height={540} height={540}
@@ -115,34 +115,34 @@ export default function BerryDashGameInfo () {
</Swiper> </Swiper>
<p className='text-2xl mt-4 mb-1'>Stuff you can do in the browser</p> <p className='text-2xl mt-4 mb-1'>Stuff you can do in the browser</p>
<div className='downloads'> <div className='downloads'>
<Link href='/game/berry-dash/icon-marketplace' draggable={false}> <Link draggable={false} href='/game/berry-dash/icon-marketplace'>
View the Icon Marketplace! (can upload too) View the Icon Marketplace! (can upload too)
</Link> </Link>
<Link href='/game/berry-dash/splash' draggable={false}> <Link draggable={false} href='/game/berry-dash/splash'>
View the Splash Texts! (can submit too) View the Splash Texts! (can submit too)
</Link> </Link>
<Link href='/game/berry-dash/chatroom' draggable={false}> <Link draggable={false} href='/game/berry-dash/chatroom'>
View & interact with the Chatroom! View & interact with the Chatroom!
</Link> </Link>
<Link href='/game/berry-dash/leaderboards' draggable={false}> <Link draggable={false} href='/game/berry-dash/leaderboards'>
View the Leaderboards! View the Leaderboards!
</Link> </Link>
</div> </div>
<p className='text-2xl my-1'>Downloads</p> <p className='text-2xl my-1'>Downloads</p>
<div className='downloads'> <div className='downloads'>
<Link <Link
href='https://games-r2.lncvrt.xyz/berry-dash/Berry-Dash-26.1-android.apk'
draggable={false} draggable={false}
href='https://archive.org/download/lncvrt-games-archive/berry-dash/Berry-Dash-26.1-android.apk'
> >
Android Android
</Link> </Link>
<Link <Link
href='https://games-r2.lncvrt.xyz/berry-dash/Berry-Dash-26.1-ios.ipa'
draggable={false} draggable={false}
href='https://archive.org/download/lncvrt-games-archive/berry-dash/Berry-Dash-26.1-ios.ipa'
> >
iOS iOS
</Link> </Link>
<Link href='/download' draggable={false}> <Link draggable={false} href='/download'>
Windows, macOS, or Linux Windows, macOS, or Linux
</Link> </Link>
</div> </div>
@@ -113,7 +113,9 @@ export default function BerryDashSubmitSplash () {
onChange={e => setText(e.target.value)} onChange={e => setText(e.target.value)}
required required
/> />
<button type='submit'>Submit</button> <button draggable={false} type='submit'>
Submit
</button>
</form> </form>
) : ( ) : (
(result == 1 || result == 2) && ( (result == 1 || result == 2) && (
@@ -0,0 +1,116 @@
'use client'
import '../../berry-dash/chatroom/styles.css'
import { BackButton } from '@/components/BackButton'
import { DiscordButton } from '@/components/DiscordButton'
import axios from 'axios'
import { useSearchParams } from 'next/navigation'
import { useEffect, useRef, useState } from 'react'
interface Message {
username: string
content: string
}
export default function GeometryRaysChatroom () {
const [messages, setMessages] = useState<Message[]>([])
const backButtonRef = useRef<HTMLAnchorElement>(null)
const params = useSearchParams()
const messagesDiv = useRef<HTMLDivElement>(null)
const refresh = async () => {
const request = await axios.get(
'https://georays-proxy.lncvrt.xyz/data/chat.txt'
)
const response = request.data as string
setMessages(
response
.trim()
.split('\n')
.filter(item => {
const [username, content] = item.split(': ')
return (
username &&
content &&
username.trim().length != 0 &&
content.trim().length != 0
)
})
.map(item => {
const [username, content] = item.split(': ')
return {
username,
content
}
})
)
}
useEffect(() => {
document.title = 'Lncvrt Games - Geometry Rays Chatroom'
setTimeout(async () => await refresh(), 0)
const interval = setInterval(() => {
refresh()
}, 3000)
return () => {
clearInterval(interval)
}
}, [params])
useEffect(() => {
if (!params.get('launcher')) {
const handleKeyDown = (e: KeyboardEvent) => {
if (e.key === 'Escape') {
backButtonRef.current?.click()
}
}
window.addEventListener('keydown', handleKeyDown)
return () => window.removeEventListener('keydown', handleKeyDown)
}
}, [params])
useEffect(() => {
if (messagesDiv.current) {
messagesDiv.current.scrollTop = messagesDiv.current.scrollHeight
}
}, [messages])
return (
<div className='box'>
{!params.get('launcher') && (
<>
<BackButton href='/game/geometry-rays' refLink={backButtonRef} />
<DiscordButton />
</>
)}
<p className='px-8 mb-4 -mt-2 text-center text-2xl'>
Geometry Rays Chatroom
</p>
<>
<div
className='sub-box -m-4 mt-0 flex flex-col gap-2 max-h-[calc(100vh-204px)] overflow-y-auto'
ref={messagesDiv}
>
{messages.map((item, i) => {
return (
<div key={i} className='message sub-box2'>
<div>
<p>{item.username}</p>
<p className='w-240 max-w-[calc(100vw-136px)] truncate select-text'>
{item.content}
</p>
</div>
</div>
)
})}
</div>
</>
</div>
)
}
+103
View File
@@ -0,0 +1,103 @@
'use client'
import Image from 'next/image'
import { Swiper, SwiperSlide } from 'swiper/react'
import { Navigation, Keyboard } from 'swiper/modules'
import 'swiper/css'
import 'swiper/css/navigation'
import Link from 'next/link'
import { useEffect, useRef } from 'react'
import { HomeButton } from '@/components/HomeButton'
import { DiscordButton } from '@/components/DiscordButton'
export default function GeometryRaysGameInfo () {
const backButtonRef = useRef<HTMLAnchorElement>(null)
useEffect(() => {
document.title = 'Lncvrt Games - Geometry Rays'
const handleKeyDown = (e: KeyboardEvent) => {
if (e.key === 'Escape') {
backButtonRef.current?.click()
}
}
window.addEventListener('keydown', handleKeyDown)
return () => window.removeEventListener('keydown', handleKeyDown)
}, [])
return (
<div className='box text-center'>
<HomeButton refLink={backButtonRef} />
<DiscordButton href='https://discord.gg/dpkT256hWm' />
<p className='text-4xl'>Geometry Rays</p>
<p>
Geometry Rays is a small Geometry Dash fan game made by Puppet with a
custom editor & online levels
</p>
<p className='text-2xl mt-4 mb-1'>Screenshots</p>
<Swiper
modules={[Keyboard, Navigation]}
navigation
keyboard={{ enabled: true }}
className='screenshots-gallery mx-auto max-w-240 w-[calc(100vw-64px)]'
>
<SwiperSlide>
<Image
src={
'https://archive.org/download/lncvrt-games-archive/screenshots/geometry-rays/main-menu.png'
}
width={960}
height={540}
alt=''
/>
</SwiperSlide>
<SwiperSlide>
<Image
src={
'https://archive.org/download/lncvrt-games-archive/screenshots/geometry-rays/editor.png'
}
width={960}
height={540}
alt=''
/>
</SwiperSlide>
<SwiperSlide>
<Image
src={
'https://archive.org/download/lncvrt-games-archive/screenshots/geometry-rays/playing.png'
}
width={960}
height={540}
alt=''
/>
</SwiperSlide>
</Swiper>
<p className='text-2xl mt-4 mb-1'>Stuff you can do in the browser</p>
<div className='downloads'>
<Link draggable={false} href='/game/geometry-rays/chatroom'>
View the Chatroom!
</Link>
</div>
<p className='text-2xl mt-4 mb-1'>Other Links</p>
<div className='downloads'>
<Link
draggable={false}
href='https://georays.puppet57.xyz/'
target='_blank'
>
Official website
</Link>
<Link draggable={false} href='https://github.com/Geometry-Rays'>
GitHub
</Link>
</div>
<p className='text-2xl my-1'>Downloads</p>
<div className='downloads'>
<Link draggable={false} href='/download'>
Windows, macOS, or Linux
</Link>
</div>
</div>
)
}
+5 -5
View File
@@ -45,7 +45,7 @@ export default function TrianglesGameInfo () {
> >
<SwiperSlide> <SwiperSlide>
<Image <Image
src={'https://games-r2.lncvrt.xyz/screenshots/triangles/home.png'} src={'https://archive.org/download/lncvrt-games-archive/screenshots/triangles/home.png'}
width={960} width={960}
height={540} height={540}
alt='' alt=''
@@ -54,7 +54,7 @@ export default function TrianglesGameInfo () {
<SwiperSlide> <SwiperSlide>
<Image <Image
src={ src={
'https://games-r2.lncvrt.xyz/screenshots/triangles/created-levels.png' 'https://archive.org/download/lncvrt-games-archive/screenshots/triangles/created-levels.png'
} }
width={960} width={960}
height={540} height={540}
@@ -64,7 +64,7 @@ export default function TrianglesGameInfo () {
<SwiperSlide> <SwiperSlide>
<Image <Image
src={ src={
'https://games-r2.lncvrt.xyz/screenshots/triangles/created-level-info.png' 'https://archive.org/download/lncvrt-games-archive/screenshots/triangles/created-level-info.png'
} }
width={960} width={960}
height={540} height={540}
@@ -73,7 +73,7 @@ export default function TrianglesGameInfo () {
</SwiperSlide> </SwiperSlide>
<SwiperSlide> <SwiperSlide>
<Image <Image
src={'https://games-r2.lncvrt.xyz/screenshots/triangles/editor.png'} src={'https://archive.org/download/lncvrt-games-archive/screenshots/triangles/editor.png'}
width={960} width={960}
height={540} height={540}
alt='' alt=''
@@ -82,7 +82,7 @@ export default function TrianglesGameInfo () {
</Swiper> </Swiper>
<p className='text-2xl mt-4 mb-1'>Downloads</p> <p className='text-2xl mt-4 mb-1'>Downloads</p>
<div className='downloads'> <div className='downloads'>
<Link href='/download' draggable={false}> <Link draggable={false} href='/download'>
Windows, macOS, or Linux Windows, macOS, or Linux
</Link> </Link>
</div> </div>
+14 -14
View File
@@ -28,84 +28,84 @@ export default function XPSGameDownloads () {
<p className='px-10 -my-2 mb-4 text-3xl'>Xytriza&apos;s GDPS Downloads</p> <p className='px-10 -my-2 mb-4 text-3xl'>Xytriza&apos;s GDPS Downloads</p>
<div className='downloads lg:max-w-[60vw] md:max-w-[80vw] flex-col'> <div className='downloads lg:max-w-[60vw] md:max-w-[80vw] flex-col'>
<Link <Link
href='https://games-r2.lncvrt.xyz/xps/XPS-2.2-1.0.0-android.apk'
draggable={false} draggable={false}
href='https://archive.org/download/lncvrt-games-archive/xps/XPS-2.2-1.0.0-android.apk'
> >
Android: XPS 2.2 Android: XPS 2.2
</Link> </Link>
<Link <Link
href='https://games-r2.lncvrt.xyz/xps/XPS-2.1-1.0.0-android.apk'
draggable={false} draggable={false}
href='https://archive.org/download/lncvrt-games-archive/xps/XPS-2.1-1.0.0-android.apk'
> >
Android: XPS 2.1 Android: XPS 2.1
</Link> </Link>
<Link <Link
href='https://games-r2.lncvrt.xyz/xps/XPS-2.0-1.0.0-android.apk'
draggable={false} draggable={false}
href='https://archive.org/download/lncvrt-games-archive/xps/XPS-2.0-1.0.0-android.apk'
> >
Android: XPS 2.0 Android: XPS 2.0
</Link> </Link>
<Link <Link
href='https://games-r2.lncvrt.xyz/xps/XPS-1.9-1.0.0-android.apk'
draggable={false} draggable={false}
href='https://archive.org/download/lncvrt-games-archive/xps/XPS-1.9-1.0.0-android.apk'
> >
Android: XPS 1.9 Android: XPS 1.9
</Link> </Link>
<Link <Link
href='https://games-r2.lncvrt.xyz/xps/XPS-1.8-1.0.0-android.apk'
draggable={false} draggable={false}
href='https://archive.org/download/lncvrt-games-archive/xps/XPS-1.8-1.0.0-android.apk'
> >
Android: XPS 1.8 Android: XPS 1.8
</Link> </Link>
<Link <Link
href='https://games-r2.lncvrt.xyz/xps/XPS-1.7-1.0.0-android.apk'
draggable={false} draggable={false}
href='https://archive.org/download/lncvrt-games-archive/xps/XPS-1.7-1.0.0-android.apk'
> >
Android: XPS 1.7 Android: XPS 1.7
</Link> </Link>
<Link <Link
href='https://games-r2.lncvrt.xyz/xps/XPS-1.6-1.0.0-android.apk'
draggable={false} draggable={false}
href='https://archive.org/download/lncvrt-games-archive/xps/XPS-1.6-1.0.0-android.apk'
> >
Android: XPS 1.6 Android: XPS 1.6
</Link> </Link>
<Link <Link
href='https://games-r2.lncvrt.xyz/xps/XPS-1.5-1.0.0-android.apk'
draggable={false} draggable={false}
href='https://archive.org/download/lncvrt-games-archive/xps/XPS-1.5-1.0.0-android.apk'
> >
Android: XPS 1.5 Android: XPS 1.5
</Link> </Link>
<Link <Link
href='https://games-r2.lncvrt.xyz/xps/XPS-1.4-1.0.0-android.apk'
draggable={false} draggable={false}
href='https://archive.org/download/lncvrt-games-archive/xps/XPS-1.4-1.0.0-android.apk'
> >
Android: XPS 1.4 Android: XPS 1.4
</Link> </Link>
<Link <Link
href='https://games-r2.lncvrt.xyz/xps/XPS-1.3-1.0.0-android.apk'
draggable={false} draggable={false}
href='https://archive.org/download/lncvrt-games-archive/xps/XPS-1.3-1.0.0-android.apk'
> >
Android: XPS 1.3 Android: XPS 1.3
</Link> </Link>
<Link <Link
href='https://games-r2.lncvrt.xyz/xps/XPS-1.2-1.0.0-android.apk'
draggable={false} draggable={false}
href='https://archive.org/download/lncvrt-games-archive/xps/XPS-1.2-1.0.0-android.apk'
> >
Android: XPS 1.2 Android: XPS 1.2
</Link> </Link>
<Link <Link
href='https://games-r2.lncvrt.xyz/xps/XPS-1.1-1.0.0-android.apk'
draggable={false} draggable={false}
href='https://archive.org/download/lncvrt-games-archive/xps/XPS-1.1-1.0.0-android.apk'
> >
Android: XPS 1.1 Android: XPS 1.1
</Link> </Link>
<Link <Link
href='https://games-r2.lncvrt.xyz/xps/XPS-1.0-1.0.0-android.apk'
draggable={false} draggable={false}
href='https://archive.org/download/lncvrt-games-archive/xps/XPS-1.0-1.0.0-android.apk'
> >
Android: XPS 1.0 Android: XPS 1.0
</Link> </Link>
<Link href='/download' draggable={false}> <Link draggable={false} href='/download'>
Windows, macOS, or Linux Windows, macOS, or Linux
</Link> </Link>
</div> </div>
+2 -2
View File
@@ -36,10 +36,10 @@ export default function XPSGame () {
</p> </p>
<p className='text-2xl my-1'>Downloads</p> <p className='text-2xl my-1'>Downloads</p>
<div className='downloads'> <div className='downloads'>
<Link href='/game/xps/downloads' draggable={false}> <Link draggable={false} href='/game/xps/downloads'>
Android Android
</Link> </Link>
<Link href='/download' draggable={false}> <Link draggable={false} href='/download'>
Windows, macOS, or Linux Windows, macOS, or Linux
</Link> </Link>
</div> </div>
+56 -14
View File
@@ -2,7 +2,35 @@
* { * {
@apply outline-0; @apply outline-0;
}
.dark-theme {
--col0: rgb(8, 8, 8);
--col1: rgb(16, 16, 16);
--col2: rgb(32, 32, 32);
--col3: rgb(48, 48, 48);
--col4: rgb(64, 64, 64);
--col5: rgb(80, 80, 80);
--col6: rgb(96, 96, 96);
--col7: rgb(112, 112, 112);
--col8: rgb(128, 128, 128);
--col9: rgb(144, 144, 144);
}
.red-theme {
--col0: rgb(32, 8, 8);
--col1: rgb(40, 16, 16);
--col2: rgb(56, 32, 32);
--col3: rgb(72, 48, 48);
--col4: rgb(88, 64, 64);
--col5: rgb(104, 80, 80);
--col6: rgb(120, 96, 96);
--col7: rgb(136, 112, 112);
--col8: rgb(152, 128, 128);
--col9: rgb(168, 144, 144);
}
.blue-theme {
--col0: rgb(8, 8, 32); --col0: rgb(8, 8, 32);
--col1: rgb(16, 16, 40); --col1: rgb(16, 16, 40);
--col2: rgb(32, 32, 56); --col2: rgb(32, 32, 56);
@@ -12,22 +40,40 @@
--col6: rgb(96, 96, 120); --col6: rgb(96, 96, 120);
--col7: rgb(112, 112, 136); --col7: rgb(112, 112, 136);
--col8: rgb(128, 128, 152); --col8: rgb(128, 128, 152);
--col9: rgb(144, 144, 168);
}
.purple-theme {
--col0: rgb(20, 8, 32);
--col1: rgb(28, 16, 40);
--col2: rgb(44, 32, 56);
--col3: rgb(60, 48, 72);
--col4: rgb(76, 64, 88);
--col5: rgb(92, 80, 104);
--col6: rgb(108, 96, 120);
--col7: rgb(124, 112, 136);
--col8: rgb(140, 128, 152);
--col9: rgb(156, 144, 168);
} }
body { body {
@apply bg-(--col0) text-[rgb(200,200,250)] select-none flex items-center justify-center min-h-screen; @apply bg-(--col0) select-none flex items-center justify-center min-h-screen;
}
img {
@apply pointer-events-none;
} }
.box { .box {
@apply bg-(--col2) border border-(--col4) rounded-lg w-auto p-6 my-10; @apply bg-(--col1) border border-(--col3) rounded-lg w-auto p-6 my-10;
} }
.sub-box { .sub-box {
@apply bg-(--col3) border border-(--col5) rounded-lg w-auto p-2; @apply bg-(--col2) border border-(--col4) rounded-lg w-auto p-2;
} }
.sub-box2 { .sub-box2 {
@apply bg-(--col4) border border-(--col6) rounded-lg w-auto p-2; @apply bg-(--col3) border border-(--col5) rounded-lg w-auto p-2;
} }
.games-grid { .games-grid {
@@ -35,8 +81,8 @@ body {
} }
.games-grid a { .games-grid a {
@apply flex flex-col items-center justify-center px-5 py-2.5 m-1 bg-(--col4) border border-(--col6) rounded-lg transition-all duration-200; @apply flex flex-col items-center justify-center px-5 py-2.5 m-1 bg-(--col2) border border-(--col4) rounded-lg transition-all duration-200;
@apply hover:bg-(--col5) hover:border-(--col7) hover:-translate-y-0.5 min-w-30 w-auto h-32 shadow; @apply hover:bg-(--col3) hover:border-(--col5) min-w-30 w-auto h-32 shadow;
} }
.games-grid a img { .games-grid a img {
@@ -68,25 +114,21 @@ body {
button, button,
.button, .button,
select { select {
@apply bg-(--col4) hover:bg-(--col5) border border-(--col6) hover:border-(--col8) hover:-translate-y-0.5 rounded-lg px-4 py-2 inline-block transition-all duration-200 cursor-pointer; @apply bg-(--col2) hover:bg-(--col3) border border-(--col4) hover:border-(--col6) rounded-lg px-4 py-2 inline-block transition-all duration-200 cursor-pointer;
} }
button:disabled { button:disabled {
@apply bg-(--col3) hover:bg-(--col4) border border-(--col5) hover:border-(--col7); @apply bg-(--col1) hover:bg-(--col2) border border-(--col3) hover:border-(--col5);
} }
.top-button { .top-button {
@apply bg-(--col4) hover:bg-(--col5) border border-(--col6) hover:border-(--col7) hover:-translate-y-px rounded-full transition-all h-10 w-10 flex items-center justify-center; @apply bg-(--col2) hover:bg-(--col3) border border-(--col4) hover:border-(--col5) rounded-full transition-all h-10 w-10 flex items-center justify-center;
} }
.top-button svg { .top-button svg {
@apply h-5 w-5; @apply h-5 w-5;
} }
p a {
@apply text-white underline;
}
input { input {
@apply bg-(--col4) focus:bg-(--col5) border border-(--col6) focus:border-(--col7) rounded-lg px-4 py-2 inline-block transition-all duration-200 cursor-pointer focus:cursor-text; @apply bg-(--col2) focus:bg-(--col3) border border-(--col4) focus:border-(--col5) rounded-lg px-4 py-2 inline-block transition-all duration-200 cursor-pointer focus:cursor-text;
} }
+50 -4
View File
@@ -1,17 +1,34 @@
import { Lexend } from 'next/font/google' 'use client'
import { Lexend, Roboto } from 'next/font/google'
import './globals.css' import './globals.css'
import { Suspense } from 'react'
import { useSearchParams } from 'next/navigation'
const lexend = Lexend({ const lexend = Lexend({
subsets: ['latin'] subsets: ['latin']
}) })
export default function RootLayout ({ const roboto = Roboto({
subsets: ['latin']
})
function Layout ({
children children
}: Readonly<{ }: Readonly<{
children: React.ReactNode children: React.ReactNode
}>) { }>) {
const params = useSearchParams()
return ( return (
<html lang='en'> <html
lang='en'
className={
params.get('launcher')
? roboto.className + ' text-white'
: lexend.className + ' text-[rgb(200,200,250)]'
}
>
<head> <head>
<link <link
rel='icon' rel='icon'
@@ -19,7 +36,36 @@ export default function RootLayout ({
href='https://cdn.lncvrt.xyz/pfp-round.png' href='https://cdn.lncvrt.xyz/pfp-round.png'
/> />
</head> </head>
<body className={lexend.className}>{children}</body> <body className={(params.get('theme') ?? 'blue') + '-theme'}>
{children}
</body>
</html> </html>
) )
} }
export default function RootLayout ({
children
}: Readonly<{
children: React.ReactNode
}>) {
return (
<Suspense
fallback={
<html lang='en' className={lexend.className}>
<head>
<link
rel='icon'
type='image/png'
href='https://cdn.lncvrt.xyz/pfp-round.png'
/>
</head>
<body className='blue-theme'>
<p className='px-8 -mt-2 -mb-2 text-center'>Loading...</p>
</body>
</html>
}
>
<Layout>{children}</Layout>
</Suspense>
)
}
+25
View File
@@ -0,0 +1,25 @@
'use client'
import { DiscordButton } from '../components/DiscordButton'
import { HomeButton } from '@/components/HomeButton'
import Link from 'next/link'
import { useEffect } from 'react'
export default function Home () {
useEffect(() => {
document.title = 'Lncvrt Games - Not found'
}, [])
return (
<div className='box'>
<HomeButton />
<DiscordButton />
<p className='px-8 -my-2 text-center text-xl'>Lncvrt Games</p>
<p className='mt-6'>This page doesn&apos;t exist, sorry!</p>
<div className='downloads -mb-3'>
<button onClick={() => window.history.back()}>Go back</button>
<Link href='/'>Go home</Link>
</div>
</div>
)
}
+24 -34
View File
@@ -1,6 +1,8 @@
import Image from 'next/image' import Image from 'next/image'
import Link from 'next/link' import Link from 'next/link'
import { Metadata } from 'next' import { Metadata } from 'next'
import { DiscordButton } from '../components/DiscordButton'
import { AccountButton } from '../components/AccountButton'
export const metadata: Metadata = { export const metadata: Metadata = {
title: 'Lncvrt Games - Home', title: 'Lncvrt Games - Home',
@@ -10,33 +12,28 @@ export const metadata: Metadata = {
export default function Home () { export default function Home () {
return ( return (
<div className='box'> <div className='box'>
<AccountButton />
<DiscordButton />
<p className='text-center text-4xl'>Lncvrt Games</p> <p className='text-center text-4xl'>Lncvrt Games</p>
<p className='text-center text-[18px] mb-4'> <p className='text-center text-[18px] mb-4'>
A collection of games made by Lncvrt and others A collection of games made by Lncvrt and others
</p> </p>
<div className='flex justify-center'>
<Link href='/premium' draggable={false} className='button'>
INTRODUCING LNCVRT GAMES PREMIUM!
</Link>
</div>
<p className='text-center text-xl mt-2'>Main Games</p> <p className='text-center text-xl mt-2'>Main Games</p>
<div className='games-grid'> <div className='games-grid'>
<Link href='/game/berry-dash' draggable={false}> <Link draggable={false} href='/game/berry-dash'>
<Image <Image
src={'https://games-r2.lncvrt.xyz/icons/berry-dash.png'} src={'https://archive.org/download/lncvrt-games-archive/icons/berry-dash.png'}
width={64} width={64}
height={64} height={64}
draggable={false}
alt='' alt=''
/> />
<span>Berry Dash</span> <span>Berry Dash</span>
</Link> </Link>
<Link href='/game/triangles' draggable={false}> <Link draggable={false} href='/game/triangles'>
<Image <Image
src={'https://games-r2.lncvrt.xyz/icons/triangles.png'} src={'https://archive.org/download/lncvrt-games-archive/icons/triangles.png'}
width={64} width={64}
height={64} height={64}
draggable={false}
alt='' alt=''
/> />
<span>Triangles</span> <span>Triangles</span>
@@ -44,22 +41,20 @@ export default function Home () {
</div> </div>
<p className='text-center text-xl mt-2'>Spinoffs</p> <p className='text-center text-xl mt-2'>Spinoffs</p>
<div className='games-grid'> <div className='games-grid'>
<Link href='/game/berry-dash-lite' draggable={false}> <Link draggable={false} href='/game/berry-dash-lite'>
<Image <Image
src={'https://games-r2.lncvrt.xyz/icons/berry-dash-lite.png'} src={'https://archive.org/download/lncvrt-games-archive/icons/berry-dash-lite.png'}
width={64} width={64}
height={64} height={64}
draggable={false}
alt='' alt=''
/> />
<span>Berry Dash Lite</span> <span>Berry Dash Lite</span>
</Link> </Link>
<Link href='/game/berry-dash-with-guns' draggable={false}> <Link draggable={false} href='/game/berry-dash-with-guns'>
<Image <Image
src={'https://games-r2.lncvrt.xyz/icons/berry-dash-with-guns.png'} src={'https://archive.org/download/lncvrt-games-archive/icons/berry-dash-with-guns.png'}
width={64} width={64}
height={64} height={64}
draggable={false}
alt='' alt=''
/> />
<span>Berry Dash with Guns</span> <span>Berry Dash with Guns</span>
@@ -67,12 +62,11 @@ export default function Home () {
</div> </div>
<p className='text-center text-xl mt-2'>GDPS&apos;s</p> <p className='text-center text-xl mt-2'>GDPS&apos;s</p>
<div className='games-grid'> <div className='games-grid'>
<Link href='/game/xps' draggable={false}> <Link draggable={false} href='/game/xps'>
<Image <Image
src={'https://cdn.lncvrt.xyz/xps/square.png'} src={'https://cdn.lncvrt.xyz/xps/square.png'}
width={64} width={64}
height={64} height={64}
draggable={false}
alt='' alt=''
/> />
<span>XPS</span> <span>XPS</span>
@@ -82,57 +76,53 @@ export default function Home () {
Non-official but Verified games Non-official but Verified games
</p> </p>
<div className='games-grid'> <div className='games-grid'>
<Link href='/game/berry-dash-custom' draggable={false}> <Link draggable={false} href='/game/berry-dash-custom'>
<Image <Image
src={'https://games-r2.lncvrt.xyz/icons/berry-dash-custom.png'} src={'https://archive.org/download/lncvrt-games-archive/icons/berry-dash-custom.png'}
width={64} width={64}
height={64} height={64}
draggable={false}
alt='' alt=''
/> />
<span>Berry Dash Custom</span> <span>Berry Dash Custom</span>
</Link> </Link>
<Link href='/game/berry-dash-godot-remake' draggable={false}> <Link draggable={false} href='/game/berry-dash-godot-remake'>
<Image <Image
src={ src={
'https://games-r2.lncvrt.xyz/icons/berry-dash-godot-remake.png' 'https://archive.org/download/lncvrt-games-archive/icons/berry-dash-godot-remake.png'
} }
width={64} width={64}
height={64} height={64}
draggable={false}
alt='' alt=''
/> />
<span>Berry Dash Godot Remake</span> <span>Berry Dash Godot Remake</span>
</Link> </Link>
<Link href='/game/berry-dash-with-guns-custom' draggable={false}> <Link draggable={false} href='/game/berry-dash-with-guns-custom'>
<Image <Image
src={ src={
'https://games-r2.lncvrt.xyz/icons/berry-dash-with-guns-custom.png' 'https://archive.org/download/lncvrt-games-archive/icons/berry-dash-with-guns-custom.png'
} }
width={64} width={64}
height={64} height={64}
draggable={false}
alt='' alt=''
/> />
<span>Berry Dash with Guns Custom</span> <span>Berry Dash with Guns Custom</span>
</Link> </Link>
<Link href='/game/berry-dash-ultimate' draggable={false}> <Link draggable={false} href='/game/geometry-rays'>
<Image <Image
src={'https://games-r2.lncvrt.xyz/icons/berry-dash-ultimate.png'} src={'https://archive.org/download/lncvrt-games-archive/icons/geometry-rays.png'}
width={64} width={64}
height={64} height={64}
draggable={false}
alt='' alt=''
/> />
<span>Berry Dash Ultimate</span> <span>Geometry Rays</span>
</Link> </Link>
</div> </div>
<p className='text-2xl mt-4 mb-1 text-center'> <p className='text-2xl mt-4 mb-1 text-center'>
Looking for launcher downloads? Looking for launcher downloads?
</p> </p>
<div className='downloads'> <div className='downloads'>
<Link href='/premium' draggable={false}> <Link draggable={false} href='/download'>
You need premium for that, buy here! Download for Windows, macOS, or Linux
</Link> </Link>
</div> </div>
</div> </div>
-106
View File
@@ -1,106 +0,0 @@
'use client'
import './styles.css'
import { HomeButton } from '@/components/HomeButton'
import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'
import {
faDownload,
faGamepad,
faMoneyBill,
faPlus
} from '@fortawesome/free-solid-svg-icons'
import { faUser } from '@fortawesome/free-regular-svg-icons'
import { useEffect, useState } from 'react'
export default function PremiumPageHome () {
const [purchased, setPurchased] = useState<boolean>(false)
useEffect(() => {
document.title = 'Lncvrt Games - Premium'
}, [])
return (
<div className='box'>
<HomeButton />
<p className='text-center text-4xl'>
Lncvrt Games <span className='rainbow-text'>PREMIUM</span>
</p>
{!purchased ? (
<>
<p className='text-center text-[18px] mb-4'>
The premium package for Lncvrt Games, with Lncvrt Games Premium you
get access to:
</p>
<div className='flex flex-row gap-2 justify-center'>
<div className='sub-box flex flex-col gap-2 justify-center items-center'>
<FontAwesomeIcon
icon={faDownload}
width={48}
height={48}
className='bg-(--col4) border border-(--col6) rounded-lg p-2'
/>
<p className='max-w-80 text-center'>
Download manager, AKA Lncvrt Games Launcher
</p>
</div>
<div className='sub-box flex flex-col gap-2 justify-center items-center'>
<FontAwesomeIcon
icon={faGamepad}
width={48}
height={48}
className='bg-(--col4) border border-(--col6) rounded-lg p-2'
/>
<p className='max-w-80 text-center'>
Additional Games, like Fruit Dashy, Geometry Dash, Team Fortress
2 (all aquired by Lncvrt) and more!
</p>
</div>
<div className='sub-box flex flex-col gap-2 justify-center items-center'>
<FontAwesomeIcon
icon={faUser}
width={48}
height={48}
className='bg-(--col4) border border-(--col6) rounded-lg p-2'
/>
<p className='max-w-80 text-center'>Accounts & Leaderboards</p>
</div>
<div className='sub-box flex flex-col gap-2 justify-center items-center'>
<FontAwesomeIcon
icon={faPlus}
width={48}
height={48}
className='bg-(--col4) border border-(--col6) rounded-lg p-2'
/>
<p className='max-w-80 text-center'>And much, much more!</p>
</div>
<div className='sub-box flex flex-col gap-2 justify-center items-center'>
<FontAwesomeIcon
icon={faMoneyBill}
width={48}
height={48}
className='bg-(--col4) border border-(--col6) rounded-lg p-2'
/>
<p className='max-w-80 text-center'>
Battle pass, there will be 3 teirs: Basic, Pro and Ultimate. You
will need Pro for accounts.
</p>
</div>
</div>
</>
) : (
<iframe
className='mt-2'
width='1280'
height='720'
src='https://www.youtube.com/embed/dQw4w9WgXcQ?autoplay=1'
allow='autoplay'
></iframe>
)}
<div className='flex justify-center mt-2'>
<button className='button' onClick={() => setPurchased(!purchased)}>
{purchased ? 'Unpurchase' : 'Purchase'}
</button>
</div>
</div>
)
}
-29
View File
@@ -1,29 +0,0 @@
@import "tailwindcss";
@keyframes rainbow-shift {
0%,
100% {
background-position: 0% center;
}
50% {
background-position: 100% center;
}
}
@layer utilities {
.rainbow-text {
@apply text-transparent bg-clip-text;
background-image: linear-gradient(
90deg,
red,
orange,
yellow,
green,
blue,
indigo,
violet
);
background-size: 300% 100%;
animation: rainbow-shift 2s ease-in-out infinite;
}
}
+5 -1
View File
@@ -6,7 +6,11 @@ export function AccountButton () {
return ( return (
<> <>
<div className='relative'> <div className='relative'>
<Link href='/account' className='top-button absolute -top-4 -left-4'> <Link
draggable={false}
href='/account'
className='top-button absolute -top-4 -left-4'
>
<FontAwesomeIcon icon={faUser} /> <FontAwesomeIcon icon={faUser} />
</Link> </Link>
</div> </div>
+2
View File
@@ -18,6 +18,7 @@ export function BackButton ({
<div className='relative'> <div className='relative'>
{href && ( {href && (
<Link <Link
draggable={false}
href={href} href={href}
className='top-button absolute -top-4 -left-4' className='top-button absolute -top-4 -left-4'
ref={refLink} ref={refLink}
@@ -27,6 +28,7 @@ export function BackButton ({
)} )}
{onClick && ( {onClick && (
<button <button
draggable={false}
onClick={onClick} onClick={onClick}
className='top-button absolute -top-4 -left-4' className='top-button absolute -top-4 -left-4'
ref={refButton} ref={refButton}
+1
View File
@@ -7,6 +7,7 @@ export function DiscordButton ({ href }: { href?: string }) {
<> <>
<div className='relative'> <div className='relative'>
<Link <Link
draggable={false}
href={href ?? '/discord'} href={href ?? '/discord'}
className='top-button absolute -top-4 -right-4' className='top-button absolute -top-4 -right-4'
> >
+62
View File
@@ -0,0 +1,62 @@
import { useState, useRef, useEffect } from 'react'
import '@/styles/dropdown.css'
import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'
import { faChevronDown } from '@fortawesome/free-solid-svg-icons'
type Option = {
label: string
value: string | number
}
type Props = {
value: string | number
options: Option[]
onChange: (value: string | number) => void | Promise<void>
width?: number
}
export default function Dropdown ({ value, options, onChange, width }: Props) {
const [open, setOpen] = useState(false)
const ref = useRef<HTMLDivElement>(null)
const selected = options.find(o => o.value === value)
useEffect(() => {
const handleClick = (e: MouseEvent) => {
if (!ref.current?.contains(e.target as Node)) {
setOpen(false)
}
}
window.addEventListener('mousedown', handleClick)
return () => window.removeEventListener('mousedown', handleClick)
}, [])
return (
<div ref={ref} className='dropdown' style={{ width: width ?? 160 }}>
<button className='dropdown-btn' onClick={() => setOpen(o => !o)}>
<span>{selected?.label ?? 'Select...'}</span>
<FontAwesomeIcon
icon={faChevronDown}
className={`dropdown-arrow ${open ? 'open' : ''}`}
/>
</button>
<div className={`dropdown-menu ${open ? 'open' : ''}`}>
{options.map((option, i) => (
<div
key={option.value}
className={`dropdown-item ${
option.value === value ? 'active' : ''
}`}
style={{ ['--i']: i } as React.CSSProperties}
onClick={async () => {
await onChange(option.value)
setOpen(false)
}}
>
{option.label}
</div>
))}
</div>
</div>
)
}
+1
View File
@@ -12,6 +12,7 @@ export function HomeButton ({
<> <>
<div className='relative'> <div className='relative'>
<Link <Link
draggable={false}
href='/' href='/'
className='top-button absolute -top-4 -left-4' className='top-button absolute -top-4 -left-4'
ref={refLink} ref={refLink}
+1
View File
@@ -6,6 +6,7 @@ export function ReloadButton ({ action }: { action: () => void }) {
<> <>
<div className='relative'> <div className='relative'>
<button <button
draggable={false}
className='top-button absolute -top-4 -right-4' className='top-button absolute -top-4 -right-4'
onClick={action} onClick={action}
> >
+5 -1
View File
@@ -6,7 +6,11 @@ export function UploadButton ({ href }: { href: string }) {
return ( return (
<> <>
<div className='relative'> <div className='relative'>
<Link href={href} className='top-button absolute -top-4 right-8'> <Link
draggable={false}
href={href}
className='top-button absolute -top-4 right-8'
>
<FontAwesomeIcon icon={faUpload} /> <FontAwesomeIcon icon={faUpload} />
</Link> </Link>
</div> </div>
+59
View File
@@ -0,0 +1,59 @@
@import "tailwindcss";
.dropdown {
@apply relative;
}
.dropdown-btn {
@apply w-full flex items-center justify-between px-2 py-1 rounded-md cursor-pointer
bg-(--col2) hover:bg-(--col3)
border border-(--col4) hover:border-(--col5);
}
.dropdown-arrow {
@apply w-3 h-3 transition-transform stroke-current stroke-2 fill-none;
}
.dropdown-arrow.open {
@apply rotate-180;
}
.dropdown-menu {
@apply absolute z-50 mt-1 w-full rounded-md shadow-2xl overflow-hidden
bg-(--col2) border border-(--col4)
origin-top
opacity-0 scale-95 -translate-y-1 pointer-events-none
transition-[opacity,transform] duration-150 ease-out;
}
.dropdown-menu.open {
@apply opacity-100 scale-100 translate-y-0 pointer-events-auto;
}
.dropdown-item {
@apply px-2 py-1 cursor-pointer transition-colors border-b border-(--col4) last:border-b-0;
opacity: 0;
transform: translateY(-10px);
}
.dropdown-item:hover,
.dropdown-item.active {
@apply bg-(--col3);
}
.dropdown-menu.open .dropdown-item {
animation: dropIn 220ms ease-out forwards;
animation-delay: calc(var(--i) * 40ms);
}
@keyframes dropIn {
from {
opacity: 0;
transform: translateY(-10px);
}
to {
opacity: 1;
transform: translateY(0);
}
}
+2
View File
@@ -0,0 +1,2 @@
declare module 'swiper/css'
declare module 'swiper/css/navigation'