From 59d4a691d6e600198f948a43f3f92caf8cdc01be Mon Sep 17 00:00:00 2001 From: Redsandy <34872843+Redsandyg@users.noreply.github.com> Date: Wed, 12 Aug 2026 11:27:07 +0300 Subject: [PATCH] Initialize Vyryi front-end project with React, Vite, and TypeScript. Add essential files including configuration, environment variables, and basic structure. Implement authentication, routing, and API interaction for a Telegram Mini App UI. Include README and styling for a cohesive user experience. --- .env.example | 1 + .gitignore | 26 + .oxlintrc.json | 8 + README.md | 32 + index.html | 14 + package-lock.json | 2076 +++++++++++++++++++++++++++++++ package.json | 32 + public/favicon.svg | 1 + public/icons.svg | 24 + public/logo.png | Bin 0 -> 192871 bytes src/App.tsx | 53 + src/api.ts | 83 ++ src/assets/hero.png | Bin 0 -> 13057 bytes src/auth.tsx | 83 ++ src/index.css | 618 +++++++++ src/legal.ts | 23 + src/main.tsx | 10 + src/pages/AgreementPage.tsx | 93 ++ src/pages/GamePage.tsx | 41 + src/pages/HomePage.tsx | 118 ++ src/pages/LegalDocumentPage.tsx | 22 + src/pages/RootRedirect.tsx | 12 + src/types.ts | 33 + src/vfx/GateTransitProvider.tsx | 323 +++++ src/vfx/gateCaps.ts | 14 + src/vfx/gateTimeline.ts | 130 ++ tsconfig.app.json | 26 + tsconfig.json | 7 + tsconfig.node.json | 23 + vite.config.ts | 7 + 30 files changed, 3933 insertions(+) create mode 100644 .env.example create mode 100644 .gitignore create mode 100644 .oxlintrc.json create mode 100644 README.md create mode 100644 index.html create mode 100644 package-lock.json create mode 100644 package.json create mode 100644 public/favicon.svg create mode 100644 public/icons.svg create mode 100644 public/logo.png create mode 100644 src/App.tsx create mode 100644 src/api.ts create mode 100644 src/assets/hero.png create mode 100644 src/auth.tsx create mode 100644 src/index.css create mode 100644 src/legal.ts create mode 100644 src/main.tsx create mode 100644 src/pages/AgreementPage.tsx create mode 100644 src/pages/GamePage.tsx create mode 100644 src/pages/HomePage.tsx create mode 100644 src/pages/LegalDocumentPage.tsx create mode 100644 src/pages/RootRedirect.tsx create mode 100644 src/types.ts create mode 100644 src/vfx/GateTransitProvider.tsx create mode 100644 src/vfx/gateCaps.ts create mode 100644 src/vfx/gateTimeline.ts create mode 100644 tsconfig.app.json create mode 100644 tsconfig.json create mode 100644 tsconfig.node.json create mode 100644 vite.config.ts diff --git a/.env.example b/.env.example new file mode 100644 index 0000000..ad82eb2 --- /dev/null +++ b/.env.example @@ -0,0 +1 @@ +VITE_API_URL=http://127.0.0.1:8000 diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..7c3d27f --- /dev/null +++ b/.gitignore @@ -0,0 +1,26 @@ +# Logs +logs +*.log +npm-debug.log* +yarn-debug.log* +yarn-error.log* +pnpm-debug.log* +lerna-debug.log* + +node_modules +dist +dist-ssr +*.local +.env +.env.local + +# Editor directories and files +.vscode/* +!.vscode/extensions.json +.idea +.DS_Store +*.suo +*.ntvs* +*.njsproj +*.sln +*.sw? diff --git a/.oxlintrc.json b/.oxlintrc.json new file mode 100644 index 0000000..6fa991d --- /dev/null +++ b/.oxlintrc.json @@ -0,0 +1,8 @@ +{ + "$schema": "./node_modules/oxlint/configuration_schema.json", + "plugins": ["react", "typescript", "oxc"], + "rules": { + "react/rules-of-hooks": "error", + "react/only-export-components": ["warn", { "allowConstantExport": true }] + } +} diff --git a/README.md b/README.md new file mode 100644 index 0000000..06b016d --- /dev/null +++ b/README.md @@ -0,0 +1,32 @@ +# Vyryi Front + +React (Vite + TypeScript) Telegram Mini App UI for **Vyryi**. + +## Stack + +- React 19 + React Router +- Local auth via backend `POST /auth/dev-login` +- Dark folk visual style matching the project logo + +## Screens + +1. `/` — logo + user agreement gate +2. `/home` — balance, stub deposit, slot stubs +3. `/games/:slug` — game placeholder + +## Quick start + +```bash +cd vyryi-front +npm install +copy .env.example .env +npm run dev +``` + +Open http://127.0.0.1:5173 — backend must be running on port 8000. + +## Env + +``` +VITE_API_URL=http://127.0.0.1:8000 +``` diff --git a/index.html b/index.html new file mode 100644 index 0000000..75ffd3d --- /dev/null +++ b/index.html @@ -0,0 +1,14 @@ + + + + + + + + Vyryi + + +
+ + + diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 0000000..31d2450 --- /dev/null +++ b/package-lock.json @@ -0,0 +1,2076 @@ +{ + "name": "vyryi-front", + "version": "0.0.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "vyryi-front", + "version": "0.0.0", + "dependencies": { + "@react-three/drei": "^10.7.8", + "@react-three/fiber": "^9.7.0", + "@react-three/postprocessing": "^3.0.5", + "gsap": "^3.15.0", + "react": "^19.2.8", + "react-dom": "^19.2.8", + "react-router-dom": "^7.18.2", + "three": "^0.185.1" + }, + "devDependencies": { + "@types/node": "^24.13.3", + "@types/react": "^19.2.17", + "@types/react-dom": "^19.2.3", + "@types/three": "^0.185.4", + "@vitejs/plugin-react": "^6.0.4", + "oxlint": "^1.75.0", + "typescript": "~6.0.2", + "vite": "^8.2.0" + } + }, + "node_modules/@babel/runtime": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.29.7.tgz", + "integrity": "sha512-Nq8OhGWiZIZGV6hLHoyAKLLcJihP/xFeBMGJoUrxTX2psI8dCifzLhZISFb+VWS3wFMRDmCGw5R+dOySCqPLhw==", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@dimforge/rapier3d-compat": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/@dimforge/rapier3d-compat/-/rapier3d-compat-0.12.0.tgz", + "integrity": "sha512-uekIGetywIgopfD97oDL5PfeezkFpNhwlzlaEYNOA0N6ghdsOvh/HYjSMek5Q2O1PYvRSDFcqFVJl4r4ZBwOow==", + "license": "Apache-2.0" + }, + "node_modules/@mediapipe/tasks-vision": { + "version": "0.10.17", + "resolved": "https://registry.npmjs.org/@mediapipe/tasks-vision/-/tasks-vision-0.10.17.tgz", + "integrity": "sha512-CZWV/q6TTe8ta61cZXjfnnHsfWIdFhms03M9T7Cnd5y2mdpylJM0rF1qRq+wsQVRMLz1OYPVEBU9ph2Bx8cxrg==", + "license": "Apache-2.0" + }, + "node_modules/@monogrid/gainmap-js": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/@monogrid/gainmap-js/-/gainmap-js-3.4.0.tgz", + "integrity": "sha512-2Z0FATFHaoYJ8b+Y4y4Hgfn3FRFwuU5zRrk+9dFWp4uGAdHGqVEdP7HP+gLA3X469KXHmfupJaUbKo1b/aDKIg==", + "license": "MIT", + "dependencies": { + "promise-worker-transferable": "^1.0.4" + }, + "peerDependencies": { + "three": ">= 0.159.0" + } + }, + "node_modules/@oxc-project/types": { + "version": "0.143.0", + "resolved": "https://registry.npmjs.org/@oxc-project/types/-/types-0.143.0.tgz", + "integrity": "sha512-u6JZdLBTLotrNC9Vd6vPssINdzcCzleKAH6EJKImQb7GtYvX5keN2dxkoK44stCc4tffE6QQRtZTXVSzsLUlWA==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/Boshen" + } + }, + "node_modules/@oxlint/binding-android-arm-eabi": { + "version": "1.78.0", + "resolved": "https://registry.npmjs.org/@oxlint/binding-android-arm-eabi/-/binding-android-arm-eabi-1.78.0.tgz", + "integrity": "sha512-Bu819lmAfZMUHErrpe0cEWj3iaefuUODHSU8+UbXy67V/r7/7f4K3FL0NmbD85E+wiFLDYuhP8Zlv0XnVeXshw==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@oxlint/binding-android-arm64": { + "version": "1.78.0", + "resolved": "https://registry.npmjs.org/@oxlint/binding-android-arm64/-/binding-android-arm64-1.78.0.tgz", + "integrity": "sha512-CDfxZgB61B7buRdY2FJoAYYPPXCZ1EoC1LKscnC5dg3kjobdxiconvAvvN1BmHyW4PyFT3jRLDag/BY/roSNBQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@oxlint/binding-darwin-arm64": { + "version": "1.78.0", + "resolved": "https://registry.npmjs.org/@oxlint/binding-darwin-arm64/-/binding-darwin-arm64-1.78.0.tgz", + "integrity": "sha512-2Y2U9Ahrz+OO0Ej88f9SJYq51/jUBp1Mc7iZu0ukrbeeZ3gpRGfzIFnoqfHDY96xr0GEfNrPUBFEy0nN5aD7HA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@oxlint/binding-darwin-x64": { + "version": "1.78.0", + "resolved": "https://registry.npmjs.org/@oxlint/binding-darwin-x64/-/binding-darwin-x64-1.78.0.tgz", + "integrity": "sha512-rpych6eJq6m9jDRypTEaPD1xysaEW5h9+xuxhGK/QhOg+/xaqPZrCrTNoIl/f3nEjuJeCEmstNDlrE9rJi/3/g==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@oxlint/binding-freebsd-x64": { + "version": "1.78.0", + "resolved": "https://registry.npmjs.org/@oxlint/binding-freebsd-x64/-/binding-freebsd-x64-1.78.0.tgz", + "integrity": "sha512-IcMGrQT3QizkOESUJd5et+rOhVqSkNDfNik1cvrKDqIbzqx9KMtRswpFgkCuNTSwylCFLKhGUu8KmqY1ZnC0Dg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@oxlint/binding-linux-arm-gnueabihf": { + "version": "1.78.0", + "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-arm-gnueabihf/-/binding-linux-arm-gnueabihf-1.78.0.tgz", + "integrity": "sha512-/uLdoJ0IXE6vo/0f0LKjinQAp+re+VMaCWaNT8ENIv2EOCkSsc8SGaflXAuW0Jua2dq5+GLVWm1NQK7P3UFSNQ==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@oxlint/binding-linux-arm-musleabihf": { + "version": "1.78.0", + "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-arm-musleabihf/-/binding-linux-arm-musleabihf-1.78.0.tgz", + "integrity": "sha512-7xi4Wb/O8NRJhLoUXmDJMUVpNYvB5kefdhFU1Jb8rtae4QoXlTiLwI14X4YvAXVZLNZChP8m5qO9SQAlWQTbkQ==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@oxlint/binding-linux-arm64-gnu": { + "version": "1.78.0", + "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-arm64-gnu/-/binding-linux-arm64-gnu-1.78.0.tgz", + "integrity": "sha512-4hFW0+fVXa3OIh1Y4A5SPkmvI4wuuBSrCVKzOyE7PTjhc7yEqZ1pmvEEeS5Lj/MaqvegFxXyF33N+6jkehxdyg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@oxlint/binding-linux-arm64-musl": { + "version": "1.78.0", + "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-arm64-musl/-/binding-linux-arm64-musl-1.78.0.tgz", + "integrity": "sha512-oC0mvsgBJjlMijSDEhx9KuvR9zYeHXceA9MjbuXB1F8NSR78Yj2unOBrstEvTVaq+pko+kuue6DajC00eqvTdg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@oxlint/binding-linux-ppc64-gnu": { + "version": "1.78.0", + "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-ppc64-gnu/-/binding-linux-ppc64-gnu-1.78.0.tgz", + "integrity": "sha512-XAllT5SUZS+ohjuZ3/5S0cwe0r7eboiuigeStCZ5DXRYx/2KVM2UvQXvAfyzXEimtQjAB7cDQ2YxDe2Zl2WNQQ==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@oxlint/binding-linux-riscv64-gnu": { + "version": "1.78.0", + "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-riscv64-gnu/-/binding-linux-riscv64-gnu-1.78.0.tgz", + "integrity": "sha512-trucMER/0QtecoXvc1y/UVqE3kwJipDwrx4oHfj+nNm3dq2zjP44WT0CfHNDPM3G1DXIkx/gY6lAD21NSCZVhA==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@oxlint/binding-linux-riscv64-musl": { + "version": "1.78.0", + "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-riscv64-musl/-/binding-linux-riscv64-musl-1.78.0.tgz", + "integrity": "sha512-cm3O4F/HQbdzOUX5mKHqG5KDL6E5w0pnlZ+fbBy2rmLryPOowkuLagFHTopQsEIpjcaZoPOrL+BmmAytAG9HFg==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@oxlint/binding-linux-s390x-gnu": { + "version": "1.78.0", + "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-s390x-gnu/-/binding-linux-s390x-gnu-1.78.0.tgz", + "integrity": "sha512-33wRf6HqGNsybJ3qX4cGaQN2ODPxNmc1rMa0mrTmx3eFq1VzOnvQooi9bIGVYakW8a/wmqVx1mgsUm8R2xfTiw==", + "cpu": [ + "s390x" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@oxlint/binding-linux-x64-gnu": { + "version": "1.78.0", + "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-x64-gnu/-/binding-linux-x64-gnu-1.78.0.tgz", + "integrity": "sha512-rRdISSYegj6VganMZ9tjRjijowfHJ09IZU01i0toBAqr6n5LEtwHq2IeS4FjW2RoskOHlb6efB26H5izYb3GEQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@oxlint/binding-linux-x64-musl": { + "version": "1.78.0", + "resolved": "https://registry.npmjs.org/@oxlint/binding-linux-x64-musl/-/binding-linux-x64-musl-1.78.0.tgz", + "integrity": "sha512-GmsP4rW0xTL6u5CVdcDsaN5Fbc7hBc382Wmar1kttbnwSEviM+rSINKOMQ+UQ6iH+AGwC+8gaAiwu134Tgh6Lg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@oxlint/binding-openharmony-arm64": { + "version": "1.78.0", + "resolved": "https://registry.npmjs.org/@oxlint/binding-openharmony-arm64/-/binding-openharmony-arm64-1.78.0.tgz", + "integrity": "sha512-sy9yeYuADc8a+n4TLBayzMCZiHPW78DcIFVpOXTmdKHWQeM9xe5uzkqIIZmi326D5hY9XVwacipEB1p7tQjPAg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openharmony" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@oxlint/binding-win32-arm64-msvc": { + "version": "1.78.0", + "resolved": "https://registry.npmjs.org/@oxlint/binding-win32-arm64-msvc/-/binding-win32-arm64-msvc-1.78.0.tgz", + "integrity": "sha512-rjc2hF1KfMi8fZj1X/m3AmnHbdsF3rL0v6KQg0Uc880Yb2khjz+3U14sfdZ7jWTpRnN1m1NQa/TT7uU9lJWPrA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@oxlint/binding-win32-ia32-msvc": { + "version": "1.78.0", + "resolved": "https://registry.npmjs.org/@oxlint/binding-win32-ia32-msvc/-/binding-win32-ia32-msvc-1.78.0.tgz", + "integrity": "sha512-zcuXFVrEFHIafRfkCQT8w/Xe41o07ozl/vwHq7p94vB29xVzsB0sZGYORU1jhcYKv3Lr0J3HbJ2T4fHH5rWmvA==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@oxlint/binding-win32-x64-msvc": { + "version": "1.78.0", + "resolved": "https://registry.npmjs.org/@oxlint/binding-win32-x64-msvc/-/binding-win32-x64-msvc-1.78.0.tgz", + "integrity": "sha512-Sb5ocmLSuYeOuXd+CFOToGKp/gjXUEWDnvIGwhnh8aq8wY4TMmEnKnvbogSW7RdMZv77JSARduS7/gv+khYEjA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@react-three/drei": { + "version": "10.7.8", + "resolved": "https://registry.npmjs.org/@react-three/drei/-/drei-10.7.8.tgz", + "integrity": "sha512-rJXyuzLm2Xq0kafHuR47ajDGbOe/pEhzIr4m8E8zwzQs0iNjloFDqBwRhrXmP/w+onLeYyN3EYPFW/cwWK/4yA==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.26.0", + "@mediapipe/tasks-vision": "0.10.17", + "@monogrid/gainmap-js": "^3.0.6", + "@use-gesture/react": "^10.3.1", + "camera-controls": "^3.1.0", + "cross-env": "^7.0.3", + "detect-gpu": "^5.0.56", + "glsl-noise": "^0.0.0", + "hls.js": "^1.5.17", + "maath": "^0.10.8", + "meshline": "^3.3.1", + "stats-gl": "^2.2.8", + "stats.js": "^0.17.0", + "suspend-react": "^0.1.3", + "three-mesh-bvh": "^0.8.3", + "three-stdlib": "^2.35.6", + "troika-three-text": "^0.52.4", + "tunnel-rat": "^0.1.2", + "use-sync-external-store": "^1.4.0", + "utility-types": "^3.11.0", + "zustand": "^5.0.1" + }, + "peerDependencies": { + "@react-three/fiber": "^9.0.0", + "react": "^19", + "react-dom": "^19", + "three": ">=0.159" + }, + "peerDependenciesMeta": { + "react-dom": { + "optional": true + } + } + }, + "node_modules/@react-three/fiber": { + "version": "9.7.0", + "resolved": "https://registry.npmjs.org/@react-three/fiber/-/fiber-9.7.0.tgz", + "integrity": "sha512-EWm9FwcaOZQu/ExFW5rggoCMM1NJet5YbxVxKaOE+KSncrjU0Wx7017qSyGFvupviK89nMYGCWU3BIK4dI1clw==", + "license": "MIT", + "peer": true, + "dependencies": { + "@babel/runtime": "^7.17.8", + "@types/webxr": "*", + "base64-js": "^1.5.1", + "buffer": "^6.0.3", + "its-fine": "^2.0.0", + "react-use-measure": "^2.1.7", + "scheduler": "^0.27.0", + "suspend-react": "^0.1.3", + "use-sync-external-store": "^1.4.0", + "zustand": "^5.0.3" + }, + "peerDependencies": { + "expo": ">=43.0", + "expo-asset": ">=8.4", + "expo-file-system": ">=11.0", + "expo-gl": ">=11.0", + "react": ">=19 <19.3", + "react-dom": ">=19 <19.3", + "react-native": ">=0.78", + "three": ">=0.156" + }, + "peerDependenciesMeta": { + "expo": { + "optional": true + }, + "expo-asset": { + "optional": true + }, + "expo-file-system": { + "optional": true + }, + "expo-gl": { + "optional": true + }, + "react-dom": { + "optional": true + }, + "react-native": { + "optional": true + } + } + }, + "node_modules/@react-three/postprocessing": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/@react-three/postprocessing/-/postprocessing-3.0.5.tgz", + "integrity": "sha512-rqxoH8cjq51w5yZ7Re3WNPVVDdSsuVwEYA+Nl90/nFLv0MIxYGjMkqhc6akp5+VLNwZD2aqOd8KcwuZW7NeUKQ==", + "license": "MIT", + "dependencies": { + "maath": "^0.10.8", + "n8ao": "^2.0.0" + }, + "peerDependencies": { + "@react-three/fiber": ">=9.7.0", + "postprocessing": "^6.36.0", + "react": "^19.2.0", + "three": ">= 0.182.0" + } + }, + "node_modules/@rolldown/binding-android-arm64": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/@rolldown/binding-android-arm64/-/binding-android-arm64-1.2.3.tgz", + "integrity": "sha512-zrJtHDcaZJ1Fp7xf4hNl+7seH9Cn/N5TwLYkhgXREtBwAd/jaqW3uqeHxpDugJLVICWg4eW44kOQEGJ1r6jCGw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/binding-darwin-arm64": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/@rolldown/binding-darwin-arm64/-/binding-darwin-arm64-1.2.3.tgz", + "integrity": "sha512-ieIiibVCp0tX7TLu2cafoNPv8wJyYi01ekXpbf8q2j7F4rGAhhXb/eQh7ge9DRBY78GwmRQtvjZDux7EDbA8kA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/binding-darwin-x64": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/@rolldown/binding-darwin-x64/-/binding-darwin-x64-1.2.3.tgz", + "integrity": "sha512-Zh9tCon19eDXJoihx0rqKhMUlMYqzwj3aPsSuHmI4RWZh62dWUL+DJN4C5YQya5TcQBJU/Fe8+rY0jhXTQITqA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/binding-freebsd-x64": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/@rolldown/binding-freebsd-x64/-/binding-freebsd-x64-1.2.3.tgz", + "integrity": "sha512-nGbJWewA1wrXXZiQhjAT5rhibGfns5ZNkDVqxsO6zJ3f3YvpoDNNmGMSbbhLuXKjNScaBJVOAboztAWVespQMg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/binding-linux-arm-gnueabihf": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-arm-gnueabihf/-/binding-linux-arm-gnueabihf-1.2.3.tgz", + "integrity": "sha512-QNniJr5Kml0kDEB98jiDOJjXNroxIIi0IXIbdYzY26Xt1pVbeP62+KnoIZLwirOymX/0jDk/2gI/bNUv7A7OIw==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/binding-linux-arm64-gnu": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-arm64-gnu/-/binding-linux-arm64-gnu-1.2.3.tgz", + "integrity": "sha512-TkqEAcmmvH3I/q4114NB4RVt6241Dao48pF45uLcFGrwAaIn0iITgTAKP/dLjbN0R4buJjGb91+UHSoFmpgIWw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/binding-linux-arm64-musl": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-arm64-musl/-/binding-linux-arm64-musl-1.2.3.tgz", + "integrity": "sha512-NHqjnxpsndf4MPymxteFAWHHfkTL8HjWh1KB7z23ofZ6QO2euONuxDXjat69dKZRALnGypg8k8SsK8vZJoXv1Q==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/binding-linux-ppc64-gnu": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-ppc64-gnu/-/binding-linux-ppc64-gnu-1.2.3.tgz", + "integrity": "sha512-6tbrbwfz5GB9DQ4Jwo6hy9v+vR31xZlvzZ6n5Xut6Hhx5PvrA9q/HsK8KMaYQp063iqZGXwNvZtYNLD7EM/x0w==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/binding-linux-s390x-gnu": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-s390x-gnu/-/binding-linux-s390x-gnu-1.2.3.tgz", + "integrity": "sha512-oyuXxXmoZHjXC917IAPFAAv4wWAa0cM9afk8nx1+9/jNNOX1uPf8yDA6p7G0RypOfw/X0PQt5IfoquY1um+zSg==", + "cpu": [ + "s390x" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/binding-linux-x64-gnu": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-x64-gnu/-/binding-linux-x64-gnu-1.2.3.tgz", + "integrity": "sha512-TytMwF2KVGqP2tgd0I1OY0PAv78dZRAYcF5ssDzjM34SUXCED3uXvSd5+lHoC0bTD6eEdFz7LdQNCO1y0oVk9w==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/binding-linux-x64-musl": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-x64-musl/-/binding-linux-x64-musl-1.2.3.tgz", + "integrity": "sha512-/E9m3qstrJFVPoULV25mVQblSNExY2+kBsYe4sy0Tn0yOOgJ8wZbZt3KnRbF/XeU2Gl1STKUQnDNTqhIE5MD4A==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/binding-openharmony-arm64": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/@rolldown/binding-openharmony-arm64/-/binding-openharmony-arm64-1.2.3.tgz", + "integrity": "sha512-Kr0OcsoQI816i6HOl3vFHpd1K0eZyh76zgfj4c1nTyaTsd5r2Mj1lwM4R90y/qaCfmTn9eHy0SKwi98eitRxug==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openharmony" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/binding-win32-arm64-msvc": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/@rolldown/binding-win32-arm64-msvc/-/binding-win32-arm64-msvc-1.2.3.tgz", + "integrity": "sha512-hOtMwTqnME+/gJcH/PCZ0wn0zPUjiWOgkHpxbSJpfGKMezHltx1S7/k1SitzVa7Ww2cqrDDaFbZEhcJZO8o+Jw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/binding-win32-x64-msvc": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/@rolldown/binding-win32-x64-msvc/-/binding-win32-x64-msvc-1.2.3.tgz", + "integrity": "sha512-ekcqMMkI2PlhYnfzQnB/cEdYUVVJViWvoUyLrbzgDoi3Snfc1mVBwdnc306ufA5ejy8JSPjT2RlW1nQSjW7efg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": "^20.19.0 || >=22.12.0" + } + }, + "node_modules/@rolldown/pluginutils": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@rolldown/pluginutils/-/pluginutils-1.0.1.tgz", + "integrity": "sha512-2j9bGt5Jh8hj+vPtgzPtl72j0yRxHAyumoo6TNfAjsLB04UtpSvPbPcDcBMxz7n+9CYB0c1GxQFxYRg2jimqGw==", + "dev": true, + "license": "MIT" + }, + "node_modules/@tweenjs/tween.js": { + "version": "23.1.3", + "resolved": "https://registry.npmjs.org/@tweenjs/tween.js/-/tween.js-23.1.3.tgz", + "integrity": "sha512-vJmvvwFxYuGnF2axRtPYocag6Clbb5YS7kLL+SO/TeVFzHqDIWrNKYtcsPMibjDx9O+bu+psAy9NKfWklassUA==", + "license": "MIT" + }, + "node_modules/@types/draco3d": { + "version": "1.4.10", + "resolved": "https://registry.npmjs.org/@types/draco3d/-/draco3d-1.4.10.tgz", + "integrity": "sha512-AX22jp8Y7wwaBgAixaSvkoG4M/+PlAcm3Qs4OW8yT9DM4xUpWKeFhLueTAyZF39pviAdcDdeJoACapiAceqNcw==", + "license": "MIT" + }, + "node_modules/@types/node": { + "version": "24.13.3", + "resolved": "https://registry.npmjs.org/@types/node/-/node-24.13.3.tgz", + "integrity": "sha512-Dh8vAsV36ig5wa9OX4pXvMc9D3Veibfw2wix0CUwYODLD8nkj9UsLjASr49nPg+2eKzxhBV+v7L8pXvT4e639Q==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "undici-types": "~7.18.0" + } + }, + "node_modules/@types/offscreencanvas": { + "version": "2019.7.3", + "resolved": "https://registry.npmjs.org/@types/offscreencanvas/-/offscreencanvas-2019.7.3.tgz", + "integrity": "sha512-ieXiYmgSRXUDeOntE1InxjWyvEelZGP63M+cGuquuRLuIKKT1osnkXjxev9B7d1nXSug5vpunx+gNlbVxMlC9A==", + "license": "MIT" + }, + "node_modules/@types/react": { + "version": "19.2.18", + "resolved": "https://registry.npmjs.org/@types/react/-/react-19.2.18.tgz", + "integrity": "sha512-AnzbBERsrLKtk2XSfTbYRLjQPdy116Sty4q+T+Bp3IC4l6jNBvreVPAHmpq9qhXQM7CXZPjLVmGMw9sy+hxQ3w==", + "license": "MIT", + "peer": true, + "dependencies": { + "csstype": "^3.2.2" + } + }, + "node_modules/@types/react-dom": { + "version": "19.2.4", + "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-19.2.4.tgz", + "integrity": "sha512-Bsc+QHgp+P/F02XDzNCY9jnZNCUuLki36KT7VKrTXXLdHf+vHMNZnW1rVu5DNW/rCK+fya3DATySbLM4yhtKUw==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "@types/react": "^19.2.0" + } + }, + "node_modules/@types/react-reconciler": { + "version": "0.28.9", + "resolved": "https://registry.npmjs.org/@types/react-reconciler/-/react-reconciler-0.28.9.tgz", + "integrity": "sha512-HHM3nxyUZ3zAylX8ZEyrDNd2XZOnQ0D5XfunJF5FLQnZbHHYq4UWvW1QfelQNXv1ICNkwYhfxjwfnqivYB6bFg==", + "license": "MIT", + "peerDependencies": { + "@types/react": "*" + } + }, + "node_modules/@types/stats.js": { + "version": "0.17.4", + "resolved": "https://registry.npmjs.org/@types/stats.js/-/stats.js-0.17.4.tgz", + "integrity": "sha512-jIBvWWShCvlBqBNIZt0KAshWpvSjhkwkEu4ZUcASoAvhmrgAUI2t1dXrjSL4xXVLB4FznPrIsX3nKXFl/Dt4vA==", + "license": "MIT" + }, + "node_modules/@types/three": { + "version": "0.185.4", + "resolved": "https://registry.npmjs.org/@types/three/-/three-0.185.4.tgz", + "integrity": "sha512-gAsBIC07NIFrxjbf7tH2t71c38uulFfk/RFoC7FNBSjMRAQ8J1x/RBvusX0N5PJouaYFJawXQqfCQ0RKUx/1nA==", + "license": "MIT", + "peer": true, + "dependencies": { + "@dimforge/rapier3d-compat": "~0.12.0", + "@tweenjs/tween.js": "~23.1.3", + "@types/stats.js": "*", + "@types/webxr": ">=0.5.17", + "fflate": "~0.8.2", + "meshoptimizer": "~1.1.1" + } + }, + "node_modules/@types/webxr": { + "version": "0.5.24", + "resolved": "https://registry.npmjs.org/@types/webxr/-/webxr-0.5.24.tgz", + "integrity": "sha512-h8fgEd/DpoS9CBrjEQXR+dIDraopAEfu4wYVNY2tEPwk60stPWhvZMf4Foo5FakuQ7HFZoa8WceaWFervK2Ovg==", + "license": "MIT" + }, + "node_modules/@use-gesture/core": { + "version": "10.3.1", + "resolved": "https://registry.npmjs.org/@use-gesture/core/-/core-10.3.1.tgz", + "integrity": "sha512-WcINiDt8WjqBdUXye25anHiNxPc0VOrlT8F6LLkU6cycrOGUDyY/yyFmsg3k8i5OLvv25llc0QC45GhR/C8llw==", + "license": "MIT" + }, + "node_modules/@use-gesture/react": { + "version": "10.3.1", + "resolved": "https://registry.npmjs.org/@use-gesture/react/-/react-10.3.1.tgz", + "integrity": "sha512-Yy19y6O2GJq8f7CHf7L0nxL8bf4PZCPaVOCgJrusOeFHY1LvHgYXnmnXg6N5iwAnbgbZCDjo60SiM6IPJi9C5g==", + "license": "MIT", + "dependencies": { + "@use-gesture/core": "10.3.1" + }, + "peerDependencies": { + "react": ">= 16.8.0" + } + }, + "node_modules/@vitejs/plugin-react": { + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/@vitejs/plugin-react/-/plugin-react-6.0.5.tgz", + "integrity": "sha512-BOVzne/NL162sMdResB25mUv+vWMF5NoAjNf09TeGlE7ZpszZWSD3winycicLJw72yeVsoCn/2kOhEuCvEShMA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@rolldown/pluginutils": "^1.0.1" + }, + "engines": { + "node": "^20.19.0 || >=22.12.0" + }, + "peerDependencies": { + "@rolldown/plugin-babel": "^0.1.7 || ^0.2.0", + "babel-plugin-react-compiler": "^1.0.0", + "vite": "^8.0.0" + }, + "peerDependenciesMeta": { + "@rolldown/plugin-babel": { + "optional": true + }, + "babel-plugin-react-compiler": { + "optional": true + } + } + }, + "node_modules/base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/bidi-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/bidi-js/-/bidi-js-1.0.3.tgz", + "integrity": "sha512-RKshQI1R3YQ+n9YJz2QQ147P66ELpa1FQEg20Dk8oW9t2KgLbpDLLp9aGZ7y8WHSshDknG0bknqGw5/tyCs5tw==", + "license": "MIT", + "dependencies": { + "require-from-string": "^2.0.2" + } + }, + "node_modules/buffer": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", + "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT", + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.2.1" + } + }, + "node_modules/camera-controls": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/camera-controls/-/camera-controls-3.1.2.tgz", + "integrity": "sha512-xkxfpG2ECZ6Ww5/9+kf4mfg1VEYAoe9aDSY+IwF0UEs7qEzwy0aVRfs2grImIECs/PoBtWFrh7RXsQkwG922JA==", + "license": "MIT", + "engines": { + "node": ">=22.0.0", + "npm": ">=10.5.1" + }, + "peerDependencies": { + "three": ">=0.126.1" + } + }, + "node_modules/cookie": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-1.1.1.tgz", + "integrity": "sha512-ei8Aos7ja0weRpFzJnEA9UHJ/7XQmqglbRwnf2ATjcB9Wq874VKH9kfjjirM6UhU2/E5fFYadylyhFldcqSidQ==", + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/cross-env": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-env/-/cross-env-7.0.3.tgz", + "integrity": "sha512-+/HKd6EgcQCJGh2PSjZuUitQBQynKor4wrFbRg4DtAgS1aWO+gU52xpH7M9ScGgXSYmAVS9bIJ8EzuaGw0oNAw==", + "license": "MIT", + "dependencies": { + "cross-spawn": "^7.0.1" + }, + "bin": { + "cross-env": "src/bin/cross-env.js", + "cross-env-shell": "src/bin/cross-env-shell.js" + }, + "engines": { + "node": ">=10.14", + "npm": ">=6", + "yarn": ">=1" + } + }, + "node_modules/cross-spawn": { + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", + "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", + "license": "MIT", + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/csstype": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.2.3.tgz", + "integrity": "sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ==", + "license": "MIT" + }, + "node_modules/detect-gpu": { + "version": "5.0.70", + "resolved": "https://registry.npmjs.org/detect-gpu/-/detect-gpu-5.0.70.tgz", + "integrity": "sha512-bqerEP1Ese6nt3rFkwPnGbsUF9a4q+gMmpTVVOEzoCyeCc+y7/RvJnQZJx1JwhgQI5Ntg0Kgat8Uu7XpBqnz1w==", + "license": "MIT", + "dependencies": { + "webgl-constants": "^1.1.1" + } + }, + "node_modules/detect-libc": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.1.2.tgz", + "integrity": "sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=8" + } + }, + "node_modules/draco3d": { + "version": "1.5.7", + "resolved": "https://registry.npmjs.org/draco3d/-/draco3d-1.5.7.tgz", + "integrity": "sha512-m6WCKt/erDXcw+70IJXnG7M3awwQPAsZvJGX5zY7beBqpELw6RDGkYVU0W43AFxye4pDZ5i2Lbyc/NNGqwjUVQ==", + "license": "Apache-2.0" + }, + "node_modules/fdir": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz", + "integrity": "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12.0.0" + }, + "peerDependencies": { + "picomatch": "^3 || ^4" + }, + "peerDependenciesMeta": { + "picomatch": { + "optional": true + } + } + }, + "node_modules/fflate": { + "version": "0.8.3", + "resolved": "https://registry.npmjs.org/fflate/-/fflate-0.8.3.tgz", + "integrity": "sha512-tbZNuJrLwGUp3zshBtdy4W+ORxZuIh8a5ilyIEQDC5rY1f3U20JMry0Ll3WBzU58EZKsEuJFXhb5gwv8CsPvgA==", + "license": "MIT" + }, + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/glsl-noise": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/glsl-noise/-/glsl-noise-0.0.0.tgz", + "integrity": "sha512-b/ZCF6amfAUb7dJM/MxRs7AetQEahYzJ8PtgfrmEdtw6uyGOr+ZSGtgjFm6mfsBkxJ4d2W7kg+Nlqzqvn3Bc0w==", + "license": "MIT" + }, + "node_modules/gsap": { + "version": "3.15.0", + "resolved": "https://registry.npmjs.org/gsap/-/gsap-3.15.0.tgz", + "integrity": "sha512-dMW4CWBTUK1AEEDeZc1g4xpPGIrSf9fJF960qbTZmN/QwZIWY5wgliS6JWl9/25fpTGJrMRtSjGtOmPnfjZB+A==", + "license": "Standard 'no charge' license: https://gsap.com/standard-license." + }, + "node_modules/hls.js": { + "version": "1.6.18", + "resolved": "https://registry.npmjs.org/hls.js/-/hls.js-1.6.18.tgz", + "integrity": "sha512-Rtovq9oJt9HWBqFJF9wZrZM7dRvdGHYNdMMv+wSDGDE2+FIybgs8RPJpR3kya1TZKBHVv2NOgLmn/M0MFjrQ3g==", + "license": "Apache-2.0" + }, + "node_modules/ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "BSD-3-Clause" + }, + "node_modules/immediate": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/immediate/-/immediate-3.0.6.tgz", + "integrity": "sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ==", + "license": "MIT" + }, + "node_modules/is-promise": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.2.2.tgz", + "integrity": "sha512-+lP4/6lKUBfQjZ2pdxThZvLUAafmZb8OAxFb8XXtiQmS35INgr85hdOGoEs124ez1FCnZJt6jau/T+alh58QFQ==", + "license": "MIT" + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "license": "ISC" + }, + "node_modules/its-fine": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/its-fine/-/its-fine-2.0.0.tgz", + "integrity": "sha512-KLViCmWx94zOvpLwSlsx6yOCeMhZYaxrJV87Po5k/FoZzcPSahvK5qJ7fYhS61sZi5ikmh2S3Hz55A2l3U69ng==", + "license": "MIT", + "dependencies": { + "@types/react-reconciler": "^0.28.9" + }, + "peerDependencies": { + "react": "^19.0.0" + } + }, + "node_modules/lie": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/lie/-/lie-3.3.0.tgz", + "integrity": "sha512-UaiMJzeWRlEujzAuw5LokY1L5ecNQYZKfmyZ9L7wDHb/p5etKaxXhohBcrw0EYby+G/NA52vRSN4N39dxHAIwQ==", + "license": "MIT", + "dependencies": { + "immediate": "~3.0.5" + } + }, + "node_modules/lightningcss": { + "version": "1.33.0", + "resolved": "https://registry.npmjs.org/lightningcss/-/lightningcss-1.33.0.tgz", + "integrity": "sha512-WkUDrojuJs0xkgGf2udWxa3yGBRxPtxUkB79i6aCZLRgc7PM8fZe9TosfPDcvEpQZbuFASnHYmRLBLUbmLOIIA==", + "dev": true, + "license": "MPL-2.0", + "dependencies": { + "detect-libc": "^2.0.3" + }, + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + }, + "optionalDependencies": { + "lightningcss-android-arm64": "1.33.0", + "lightningcss-darwin-arm64": "1.33.0", + "lightningcss-darwin-x64": "1.33.0", + "lightningcss-freebsd-x64": "1.33.0", + "lightningcss-linux-arm-gnueabihf": "1.33.0", + "lightningcss-linux-arm64-gnu": "1.33.0", + "lightningcss-linux-arm64-musl": "1.33.0", + "lightningcss-linux-x64-gnu": "1.33.0", + "lightningcss-linux-x64-musl": "1.33.0", + "lightningcss-win32-arm64-msvc": "1.33.0", + "lightningcss-win32-x64-msvc": "1.33.0" + } + }, + "node_modules/lightningcss-android-arm64": { + "version": "1.33.0", + "resolved": "https://registry.npmjs.org/lightningcss-android-arm64/-/lightningcss-android-arm64-1.33.0.tgz", + "integrity": "sha512-gEpRTalKdosp4Bb8qWtc2iOgE5SeIHlpS1up9bFq2wAyYhl1UdTObYiHe98zEM9SQvSoqQZ1IQD0JNpg3Ml5pg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-darwin-arm64": { + "version": "1.33.0", + "resolved": "https://registry.npmjs.org/lightningcss-darwin-arm64/-/lightningcss-darwin-arm64-1.33.0.tgz", + "integrity": "sha512-Sciaz8eenNTKn9b3t7+xr0ipTp9YxKQY4npwQ3mrRuL0BAVHBLyZxofhaKBAVtzmtRZ/zTyo0/to4B1uWG/Djg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-darwin-x64": { + "version": "1.33.0", + "resolved": "https://registry.npmjs.org/lightningcss-darwin-x64/-/lightningcss-darwin-x64-1.33.0.tgz", + "integrity": "sha512-Z5UPAxzrjlWNNyGy6i65cJzzvgJ5D3T6wMvs+gWpY9d7qRhANrxqAp6LhxIgZhWEw18RfJTGcRxjuLIBr+m8XQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-freebsd-x64": { + "version": "1.33.0", + "resolved": "https://registry.npmjs.org/lightningcss-freebsd-x64/-/lightningcss-freebsd-x64-1.33.0.tgz", + "integrity": "sha512-QQM/Ti/hQajJwCY+RiWuCZ9sdtI/XQk7nDK5vC8kkdwixezOlDgvDx7+RT+QjK6FcFT4MpsuoBnHIo/O3StRRg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-arm-gnueabihf": { + "version": "1.33.0", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm-gnueabihf/-/lightningcss-linux-arm-gnueabihf-1.33.0.tgz", + "integrity": "sha512-N7FVBe6iS24MlM6R/4RBTxGhQheZGs7tiQ9U32UtF75NzP5Q7xWPRqLBCKxlRQRk3rY1jCIPLzx7WzOhuUIRLQ==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-arm64-gnu": { + "version": "1.33.0", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-gnu/-/lightningcss-linux-arm64-gnu-1.33.0.tgz", + "integrity": "sha512-j2v/itmy4HlNxlc6voKXYgBqNi0Ng2LShg4z7GufpEgs05P+2suBVyi9I6YHq5uoVFx9ETin3eCEhLVyXGQnKg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-arm64-musl": { + "version": "1.33.0", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-musl/-/lightningcss-linux-arm64-musl-1.33.0.tgz", + "integrity": "sha512-yiO5ROMuYQgXbC60yjZU5CYSFZGKXL0HFATXt9mHJn1+zW55oCtMI9NfcVhYLMFDL7gV7oBPon/EmMMGg2OvtQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-x64-gnu": { + "version": "1.33.0", + "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-gnu/-/lightningcss-linux-x64-gnu-1.33.0.tgz", + "integrity": "sha512-ar+Ju7LmcN0Jo4FpL4hpFybwNG9/3A/Br5KW2n2jyODg3MEZXaDYADdemoNS+BDNfMgKvylJLj4S5tyRActuAg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-linux-x64-musl": { + "version": "1.33.0", + "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-musl/-/lightningcss-linux-x64-musl-1.33.0.tgz", + "integrity": "sha512-RYiYbkokw0trfKqqzfF55lginwEPrD3OJDfTuJzFs1MK6iFnDenaz1fqLLtX4ITG3OktJQXOeTaw1awrBAlZPw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-win32-arm64-msvc": { + "version": "1.33.0", + "resolved": "https://registry.npmjs.org/lightningcss-win32-arm64-msvc/-/lightningcss-win32-arm64-msvc-1.33.0.tgz", + "integrity": "sha512-1K+MPfLSFVpphzpdbfkhlWk6wBrTObBzS2T6db10PNOZgR9GoVsAWzwNyuhUYYbTp23j+4RrncfujZ4uAzXvwA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/lightningcss-win32-x64-msvc": { + "version": "1.33.0", + "resolved": "https://registry.npmjs.org/lightningcss-win32-x64-msvc/-/lightningcss-win32-x64-msvc-1.33.0.tgz", + "integrity": "sha512-OlEICDx/Xl0FqSp4bry8zFnCvGpig3Gl4gCquvYwHuqJKEC1+n9NgDniFvqHGmMv1ZkqDJrDqKKSykTDX+ehuA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MPL-2.0", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/maath": { + "version": "0.10.8", + "resolved": "https://registry.npmjs.org/maath/-/maath-0.10.8.tgz", + "integrity": "sha512-tRvbDF0Pgqz+9XUa4jjfgAQ8/aPKmQdWXilFu2tMy4GWj4NOsx99HlULO4IeREfbO3a0sA145DZYyvXPkybm0g==", + "license": "MIT", + "peerDependencies": { + "@types/three": ">=0.134.0", + "three": ">=0.134.0" + } + }, + "node_modules/meshline": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/meshline/-/meshline-3.3.1.tgz", + "integrity": "sha512-/TQj+JdZkeSUOl5Mk2J7eLcYTLiQm2IDzmlSvYm7ov15anEcDJ92GHqqazxTSreeNgfnYu24kiEvvv0WlbCdFQ==", + "license": "MIT", + "peerDependencies": { + "three": ">=0.137" + } + }, + "node_modules/meshoptimizer": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/meshoptimizer/-/meshoptimizer-1.1.1.tgz", + "integrity": "sha512-oRFNWJRDA/WTrVj7NWvqa5HqE1t9MYDj2VaWirQCzCCrAd2GHrqR/sQezCxiWATPNlKTcRaPRHPJwIRoPBAp5g==", + "license": "MIT" + }, + "node_modules/n8ao": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/n8ao/-/n8ao-2.0.1.tgz", + "integrity": "sha512-MoP1QKUdj4/3cKEnhFl917t0eQwWGER1l43ckz5mNOPyYWGRDGQbVoTOQz/VBvy01in6QVNG+AL6Xxx5AjZBYA==", + "license": "ISC", + "peerDependencies": { + "postprocessing": ">=6.30.0", + "three": ">=0.137" + } + }, + "node_modules/nanoid": { + "version": "3.3.18", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.18.tgz", + "integrity": "sha512-DTg4MJbGMWkfi6VZFdNt2/caMbQy4Ou+Op/hJQvGEWcnVfoA1QA+xzRKAzw9jD6+GVOOeYr/mIcuDSdug6F6+w==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/oxlint": { + "version": "1.78.0", + "resolved": "https://registry.npmjs.org/oxlint/-/oxlint-1.78.0.tgz", + "integrity": "sha512-QgQePuxIqKOzo1KSjG2EnITEeWvWnKAm77eq8nrMtf6AGoA+zyGc4PFYtDNJSD25g/ibOwfQ851hZ4/SPkMVoA==", + "dev": true, + "license": "MIT", + "bin": { + "oxlint": "bin/oxlint" + }, + "engines": { + "node": "^20.19.0 || >=22.12.0" + }, + "funding": { + "url": "https://github.com/sponsors/Boshen" + }, + "optionalDependencies": { + "@oxlint/binding-android-arm-eabi": "1.78.0", + "@oxlint/binding-android-arm64": "1.78.0", + "@oxlint/binding-darwin-arm64": "1.78.0", + "@oxlint/binding-darwin-x64": "1.78.0", + "@oxlint/binding-freebsd-x64": "1.78.0", + "@oxlint/binding-linux-arm-gnueabihf": "1.78.0", + "@oxlint/binding-linux-arm-musleabihf": "1.78.0", + "@oxlint/binding-linux-arm64-gnu": "1.78.0", + "@oxlint/binding-linux-arm64-musl": "1.78.0", + "@oxlint/binding-linux-ppc64-gnu": "1.78.0", + "@oxlint/binding-linux-riscv64-gnu": "1.78.0", + "@oxlint/binding-linux-riscv64-musl": "1.78.0", + "@oxlint/binding-linux-s390x-gnu": "1.78.0", + "@oxlint/binding-linux-x64-gnu": "1.78.0", + "@oxlint/binding-linux-x64-musl": "1.78.0", + "@oxlint/binding-openharmony-arm64": "1.78.0", + "@oxlint/binding-win32-arm64-msvc": "1.78.0", + "@oxlint/binding-win32-ia32-msvc": "1.78.0", + "@oxlint/binding-win32-x64-msvc": "1.78.0" + }, + "peerDependencies": { + "oxlint-tsgolint": ">=7.0.2001", + "vite-plus": "*" + }, + "peerDependenciesMeta": { + "oxlint-tsgolint": { + "optional": true + }, + "vite-plus": { + "optional": true + } + } + }, + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/picocolors": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", + "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", + "dev": true, + "license": "ISC" + }, + "node_modules/picomatch": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.5.tgz", + "integrity": "sha512-RvwwcruNjI1ncT5xRakeyS9Lf8lcItv34KD+aif+VH9kduAyfYBipGh12274xtenIPZ119/R9BdTBa8gAwSh0A==", + "dev": true, + "license": "MIT", + "peer": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/postcss": { + "version": "8.5.26", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.26.tgz", + "integrity": "sha512-u82N74LFzG8ca+dD8puPnplTXoGH4fTPpVGuIbt36G3qvNlkvfD0lEAZSxaly3KX8TS/L1A1gsCEmvKmBcVbkQ==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "nanoid": "^3.3.17", + "picocolors": "^1.1.1", + "source-map-js": "^1.2.1" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/postprocessing": { + "version": "6.39.4", + "resolved": "https://registry.npmjs.org/postprocessing/-/postprocessing-6.39.4.tgz", + "integrity": "sha512-oAS/PjAbc/xT3OzjUrGsorJ4J064XwhVD2t0OwKLP/E8QwDMUJ0oOv6ZI1SYMtLchv4g0ySEx+JcLy92+48vlA==", + "license": "Zlib", + "peer": true, + "peerDependencies": { + "three": ">= 0.168.0 < 0.186.0" + } + }, + "node_modules/potpack": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/potpack/-/potpack-1.0.2.tgz", + "integrity": "sha512-choctRBIV9EMT9WGAZHn3V7t0Z2pMQyl0EZE6pFc/6ml3ssw7Dlf/oAOvFwjm1HVsqfQN8GfeFyJ+d8tRzqueQ==", + "license": "ISC" + }, + "node_modules/promise-worker-transferable": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/promise-worker-transferable/-/promise-worker-transferable-1.0.4.tgz", + "integrity": "sha512-bN+0ehEnrXfxV2ZQvU2PetO0n4gqBD4ulq3MI1WOPLgr7/Mg9yRQkX5+0v1vagr74ZTsl7XtzlaYDo2EuCeYJw==", + "license": "Apache-2.0", + "dependencies": { + "is-promise": "^2.1.0", + "lie": "^3.0.2" + } + }, + "node_modules/react": { + "version": "19.2.8", + "resolved": "https://registry.npmjs.org/react/-/react-19.2.8.tgz", + "integrity": "sha512-PWaYA1L/q9u2u7xYQi+Y3L3Yfnie7XyLeaJICV1MGD6LprsBxcAqGjYyr0eY3p+QdsA+x/Irkt4Qif8D63+Sbw==", + "license": "MIT", + "peer": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/react-dom": { + "version": "19.2.8", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-19.2.8.tgz", + "integrity": "sha512-rVprimfGBG3DR+Tq0IQG2DT5PxKth1WIGDmj5yPmlzr4YBe7uyE+Du4oVqTDXZSHGGGXRtTJEGSSePyQCMBglQ==", + "license": "MIT", + "peer": true, + "dependencies": { + "scheduler": "^0.27.0" + }, + "peerDependencies": { + "react": "^19.2.8" + } + }, + "node_modules/react-router": { + "version": "7.18.2", + "resolved": "https://registry.npmjs.org/react-router/-/react-router-7.18.2.tgz", + "integrity": "sha512-aUVMjFm3GAPTTZL7oYr5E7ETiqfQCHRLH+B+5afnICvf0r7kkK4eR6SMuwbSTJw/7t+12khT/Kahij49fqOCIg==", + "license": "MIT", + "dependencies": { + "cookie": "^1.0.1", + "set-cookie-parser": "^2.6.0" + }, + "engines": { + "node": ">=20.0.0" + }, + "peerDependencies": { + "react": ">=18", + "react-dom": ">=18" + }, + "peerDependenciesMeta": { + "react-dom": { + "optional": true + } + } + }, + "node_modules/react-router-dom": { + "version": "7.18.2", + "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-7.18.2.tgz", + "integrity": "sha512-AIKJ/jgGlFb3EbfCXk5Gzshiwt+l3mqbCrNjmEWMMjqQxNJ3svBa6bgzFyCC2Sw3RA0VWF1kg3uQf2OFhxb8hw==", + "license": "MIT", + "dependencies": { + "react-router": "7.18.2" + }, + "engines": { + "node": ">=20.0.0" + }, + "peerDependencies": { + "react": ">=18", + "react-dom": ">=18" + } + }, + "node_modules/react-use-measure": { + "version": "2.1.7", + "resolved": "https://registry.npmjs.org/react-use-measure/-/react-use-measure-2.1.7.tgz", + "integrity": "sha512-KrvcAo13I/60HpwGO5jpW7E9DfusKyLPLvuHlUyP5zqnmAPhNc6qTRjUQrdTADl0lpPpDVU2/Gg51UlOGHXbdg==", + "license": "MIT", + "peerDependencies": { + "react": ">=16.13", + "react-dom": ">=16.13" + }, + "peerDependenciesMeta": { + "react-dom": { + "optional": true + } + } + }, + "node_modules/require-from-string": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", + "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/rolldown": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/rolldown/-/rolldown-1.2.3.tgz", + "integrity": "sha512-rn9wpmxplLf7NLNyCk9FyWh3FM43DbY8jOzCdEPzH7uflhTftRbCEpqi6Ly2osgoU8OwObtmavMbWLaWy4LX7A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@oxc-project/types": "=0.143.0", + "@rolldown/pluginutils": "^1.0.0" + }, + "bin": { + "rolldown": "bin/cli.mjs" + }, + "engines": { + "node": "^20.19.0 || >=22.12.0" + }, + "optionalDependencies": { + "@rolldown/binding-android-arm64": "1.2.3", + "@rolldown/binding-darwin-arm64": "1.2.3", + "@rolldown/binding-darwin-x64": "1.2.3", + "@rolldown/binding-freebsd-x64": "1.2.3", + "@rolldown/binding-linux-arm-gnueabihf": "1.2.3", + "@rolldown/binding-linux-arm64-gnu": "1.2.3", + "@rolldown/binding-linux-arm64-musl": "1.2.3", + "@rolldown/binding-linux-ppc64-gnu": "1.2.3", + "@rolldown/binding-linux-s390x-gnu": "1.2.3", + "@rolldown/binding-linux-x64-gnu": "1.2.3", + "@rolldown/binding-linux-x64-musl": "1.2.3", + "@rolldown/binding-openharmony-arm64": "1.2.3", + "@rolldown/binding-win32-arm64-msvc": "1.2.3", + "@rolldown/binding-win32-x64-msvc": "1.2.3" + } + }, + "node_modules/scheduler": { + "version": "0.27.0", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.27.0.tgz", + "integrity": "sha512-eNv+WrVbKu1f3vbYJT/xtiF5syA5HPIMtf9IgY/nKg0sWqzAUEvqY/xm7OcZc/qafLx/iO9FgOmeSAp4v5ti/Q==", + "license": "MIT" + }, + "node_modules/set-cookie-parser": { + "version": "2.7.2", + "resolved": "https://registry.npmjs.org/set-cookie-parser/-/set-cookie-parser-2.7.2.tgz", + "integrity": "sha512-oeM1lpU/UvhTxw+g3cIfxXHyJRc/uidd3yK1P242gzHds0udQBYzs3y8j4gCCW+ZJ7ad0yctld8RYO+bdurlvw==", + "license": "MIT" + }, + "node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "license": "MIT", + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/source-map-js": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", + "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/stats-gl": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/stats-gl/-/stats-gl-2.4.2.tgz", + "integrity": "sha512-g5O9B0hm9CvnM36+v7SFl39T7hmAlv541tU81ME8YeSb3i1CIP5/QdDeSB3A0la0bKNHpxpwxOVRo2wFTYEosQ==", + "license": "MIT", + "dependencies": { + "@types/three": "*", + "three": "^0.170.0" + }, + "peerDependencies": { + "@types/three": "*", + "three": "*" + } + }, + "node_modules/stats-gl/node_modules/three": { + "version": "0.170.0", + "resolved": "https://registry.npmjs.org/three/-/three-0.170.0.tgz", + "integrity": "sha512-FQK+LEpYc0fBD+J8g6oSEyyNzjp+Q7Ks1C568WWaoMRLW+TkNNWmenWeGgJjV105Gd+p/2ql1ZcjYvNiPZBhuQ==", + "license": "MIT" + }, + "node_modules/stats.js": { + "version": "0.17.0", + "resolved": "https://registry.npmjs.org/stats.js/-/stats.js-0.17.0.tgz", + "integrity": "sha512-hNKz8phvYLPEcRkeG1rsGmV5ChMjKDAWU7/OJJdDErPBNChQXxCo3WZurGpnWc6gZhAzEPFad1aVgyOANH1sMw==", + "license": "MIT" + }, + "node_modules/suspend-react": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/suspend-react/-/suspend-react-0.1.3.tgz", + "integrity": "sha512-aqldKgX9aZqpoDp3e8/BZ8Dm7x1pJl+qI3ZKxDN0i/IQTWUwBx/ManmlVJ3wowqbno6c2bmiIfs+Um6LbsjJyQ==", + "license": "MIT", + "peerDependencies": { + "react": ">=17.0" + } + }, + "node_modules/three": { + "version": "0.185.1", + "resolved": "https://registry.npmjs.org/three/-/three-0.185.1.tgz", + "integrity": "sha512-5aojFCXKwnjBRZvUnt3WFfEcvUJgkN5LlijRFN95hMy8WVkG4I0QNcJE+OuWvuJ0bOdStrbfXn0pkd6/QyiAlg==", + "license": "MIT", + "peer": true + }, + "node_modules/three-mesh-bvh": { + "version": "0.8.3", + "resolved": "https://registry.npmjs.org/three-mesh-bvh/-/three-mesh-bvh-0.8.3.tgz", + "integrity": "sha512-4G5lBaF+g2auKX3P0yqx+MJC6oVt6sB5k+CchS6Ob0qvH0YIhuUk1eYr7ktsIpY+albCqE80/FVQGV190PmiAg==", + "license": "MIT", + "peerDependencies": { + "three": ">= 0.159.0" + } + }, + "node_modules/three-stdlib": { + "version": "2.36.1", + "resolved": "https://registry.npmjs.org/three-stdlib/-/three-stdlib-2.36.1.tgz", + "integrity": "sha512-XyGQrFmNQ5O/IoKm556ftwKsBg11TIb301MB5dWNicziQBEs2g3gtOYIf7pFiLa0zI2gUwhtCjv9fmjnxKZ1Cg==", + "license": "MIT", + "dependencies": { + "@types/draco3d": "^1.4.0", + "@types/offscreencanvas": "^2019.6.4", + "@types/webxr": "^0.5.2", + "draco3d": "^1.4.1", + "fflate": "^0.6.9", + "potpack": "^1.0.1" + }, + "peerDependencies": { + "three": ">=0.128.0" + } + }, + "node_modules/three-stdlib/node_modules/fflate": { + "version": "0.6.11", + "resolved": "https://registry.npmjs.org/fflate/-/fflate-0.6.11.tgz", + "integrity": "sha512-3JyEFWGjFn7zHmoa9+zG1BmW7X2okcmAB+0Cnu9UFbVs/jCBnl2A8o065ZlXiw145K3eBM3uLuzrYXC0RK7eDg==", + "license": "MIT" + }, + "node_modules/tinyglobby": { + "version": "0.2.17", + "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.17.tgz", + "integrity": "sha512-wXR/dYpcqKmfWpEdZjiKJOwCNFndD0DMnrW/cYjVGttEkBfVgcLFHoNrlj47mjOVic9yyNu65alsgF4NQyTa2g==", + "dev": true, + "license": "MIT", + "dependencies": { + "fdir": "^6.5.0", + "picomatch": "^4.0.4" + }, + "engines": { + "node": ">=12.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/SuperchupuDev" + } + }, + "node_modules/troika-three-text": { + "version": "0.52.5", + "resolved": "https://registry.npmjs.org/troika-three-text/-/troika-three-text-0.52.5.tgz", + "integrity": "sha512-Ry3jRhic9pzcY4JduSvRRyDmVOSqEW19gT4vtK+aCiPNVcDlmkxvGG0YbFd36RTDq1wExOupXnvNF/j1oiHHDA==", + "license": "MIT", + "dependencies": { + "bidi-js": "^1.0.2", + "troika-three-utils": "^0.52.5", + "troika-worker-utils": "^0.52.0", + "webgl-sdf-generator": "1.1.1" + }, + "peerDependencies": { + "three": ">=0.125.0" + } + }, + "node_modules/troika-three-utils": { + "version": "0.52.5", + "resolved": "https://registry.npmjs.org/troika-three-utils/-/troika-three-utils-0.52.5.tgz", + "integrity": "sha512-WsePbcX8RtfidRfsxK1eCZCjF81ZDzAKHH/evLs0hdV2wpoCb0vArGZHdzdOJrSS3k4zfdtbKDaBh8+phkrYnw==", + "license": "MIT", + "peerDependencies": { + "three": ">=0.125.0" + } + }, + "node_modules/troika-worker-utils": { + "version": "0.52.0", + "resolved": "https://registry.npmjs.org/troika-worker-utils/-/troika-worker-utils-0.52.0.tgz", + "integrity": "sha512-W1CpvTHykaPH5brv5VHLfQo9D1OYuo0cSBEUQFFT/nBUzM8iD6Lq2/tgG/f1OelbAS1WtaTPQzE5uM49egnngw==", + "license": "MIT" + }, + "node_modules/tunnel-rat": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/tunnel-rat/-/tunnel-rat-0.1.2.tgz", + "integrity": "sha512-lR5VHmkPhzdhrM092lI2nACsLO4QubF0/yoOhzX7c+wIpbN1GjHNzCc91QlpxBi+cnx8vVJ+Ur6vL5cEoQPFpQ==", + "license": "MIT", + "dependencies": { + "zustand": "^4.3.2" + } + }, + "node_modules/tunnel-rat/node_modules/zustand": { + "version": "4.5.7", + "resolved": "https://registry.npmjs.org/zustand/-/zustand-4.5.7.tgz", + "integrity": "sha512-CHOUy7mu3lbD6o6LJLfllpjkzhHXSBlX8B9+qPddUsIfeF5S/UZ5q0kmCsnRqT1UHFQZchNFDDzMbQsuesHWlw==", + "license": "MIT", + "dependencies": { + "use-sync-external-store": "^1.2.2" + }, + "engines": { + "node": ">=12.7.0" + }, + "peerDependencies": { + "@types/react": ">=16.8", + "immer": ">=9.0.6", + "react": ">=16.8" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "immer": { + "optional": true + }, + "react": { + "optional": true + } + } + }, + "node_modules/typescript": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-6.0.3.tgz", + "integrity": "sha512-y2TvuxSZPDyQakkFRPZHKFm+KKVqIisdg9/CZwm9ftvKXLP8NRWj38/ODjNbr43SsoXqNuAisEf1GdCxqWcdBw==", + "dev": true, + "license": "Apache-2.0", + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=14.17" + } + }, + "node_modules/undici-types": { + "version": "7.18.2", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.18.2.tgz", + "integrity": "sha512-AsuCzffGHJybSaRrmr5eHr81mwJU3kjw6M+uprWvCXiNeN9SOGwQ3Jn8jb8m3Z6izVgknn1R0FTCEAP2QrLY/w==", + "dev": true, + "license": "MIT" + }, + "node_modules/use-sync-external-store": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/use-sync-external-store/-/use-sync-external-store-1.6.0.tgz", + "integrity": "sha512-Pp6GSwGP/NrPIrxVFAIkOQeyw8lFenOHijQWkUTrDvrF4ALqylP2C/KCkeS9dpUM3KvYRQhna5vt7IL95+ZQ9w==", + "license": "MIT", + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" + } + }, + "node_modules/utility-types": { + "version": "3.11.0", + "resolved": "https://registry.npmjs.org/utility-types/-/utility-types-3.11.0.tgz", + "integrity": "sha512-6Z7Ma2aVEWisaL6TvBCy7P8rm2LQoPv6dJ7ecIaIixHcwfbJ0x7mWdbcwlIM5IGQxPZSFYeqRCqlOOeKoJYMkw==", + "license": "MIT", + "engines": { + "node": ">= 4" + } + }, + "node_modules/vite": { + "version": "8.2.1", + "resolved": "https://registry.npmjs.org/vite/-/vite-8.2.1.tgz", + "integrity": "sha512-EU/eS7BH3XROHh2YnBefjM6DBKA6ZeMZEYQbj7NLWg5wHYlhB8B/Mayd5XsgWq+NFYccDOTemRpdETWR6Ka/lw==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "lightningcss": "^1.33.0", + "picomatch": "^4.0.5", + "postcss": "^8.5.25", + "rolldown": "~1.2.1", + "tinyglobby": "^0.2.17" + }, + "bin": { + "vite": "bin/vite.js" + }, + "engines": { + "node": "^20.19.0 || >=22.12.0" + }, + "funding": { + "url": "https://github.com/vitejs/vite?sponsor=1" + }, + "optionalDependencies": { + "fsevents": "~2.3.3" + }, + "peerDependencies": { + "@types/node": "^20.19.0 || >=22.12.0", + "@vitejs/devtools": "^0.4.0", + "esbuild": "^0.27.0 || ^0.28.0", + "jiti": ">=1.21.0", + "less": "^4.0.0", + "sass": "^1.70.0", + "sass-embedded": "^1.70.0", + "stylus": ">=0.54.8", + "sugarss": "^5.0.0", + "terser": "^5.16.0", + "tsx": "^4.8.1", + "yaml": "^2.4.2" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + }, + "@vitejs/devtools": { + "optional": true + }, + "esbuild": { + "optional": true + }, + "jiti": { + "optional": true + }, + "less": { + "optional": true + }, + "sass": { + "optional": true + }, + "sass-embedded": { + "optional": true + }, + "stylus": { + "optional": true + }, + "sugarss": { + "optional": true + }, + "terser": { + "optional": true + }, + "tsx": { + "optional": true + }, + "yaml": { + "optional": true + } + } + }, + "node_modules/webgl-constants": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/webgl-constants/-/webgl-constants-1.1.1.tgz", + "integrity": "sha512-LkBXKjU5r9vAW7Gcu3T5u+5cvSvh5WwINdr0C+9jpzVB41cjQAP5ePArDtk/WHYdVj0GefCgM73BA7FlIiNtdg==" + }, + "node_modules/webgl-sdf-generator": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/webgl-sdf-generator/-/webgl-sdf-generator-1.1.1.tgz", + "integrity": "sha512-9Z0JcMTFxeE+b2x1LJTdnaT8rT8aEp7MVxkNwoycNmJWwPdzoXzMh0BjJSh/AEFP+KPYZUli814h8bJZFIZ2jA==", + "license": "MIT" + }, + "node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "license": "ISC", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/zustand": { + "version": "5.0.14", + "resolved": "https://registry.npmjs.org/zustand/-/zustand-5.0.14.tgz", + "integrity": "sha512-/8tAspM5LMPr28b3fwLYrtdj77ECpfZviaP75CMTnwO8ISyaE4GDIG/9rDDYq/cH9D2Xw2A2RXglLInmVBQB/g==", + "license": "MIT", + "engines": { + "node": ">=12.20.0" + }, + "peerDependencies": { + "@types/react": ">=18.0.0", + "immer": ">=9.0.6", + "react": ">=18.0.0", + "use-sync-external-store": ">=1.2.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "immer": { + "optional": true + }, + "react": { + "optional": true + }, + "use-sync-external-store": { + "optional": true + } + } + } + } +} diff --git a/package.json b/package.json new file mode 100644 index 0000000..aa33987 --- /dev/null +++ b/package.json @@ -0,0 +1,32 @@ +{ + "name": "vyryi-front", + "private": true, + "version": "0.0.0", + "type": "module", + "scripts": { + "dev": "vite", + "build": "tsc -b && vite build", + "lint": "oxlint", + "preview": "vite preview" + }, + "dependencies": { + "@react-three/drei": "^10.7.8", + "@react-three/fiber": "^9.7.0", + "@react-three/postprocessing": "^3.0.5", + "gsap": "^3.15.0", + "react": "^19.2.8", + "react-dom": "^19.2.8", + "react-router-dom": "^7.18.2", + "three": "^0.185.1" + }, + "devDependencies": { + "@types/node": "^24.13.3", + "@types/react": "^19.2.17", + "@types/react-dom": "^19.2.3", + "@types/three": "^0.185.4", + "@vitejs/plugin-react": "^6.0.4", + "oxlint": "^1.75.0", + "typescript": "~6.0.2", + "vite": "^8.2.0" + } +} diff --git a/public/favicon.svg b/public/favicon.svg new file mode 100644 index 0000000..6893eb1 --- /dev/null +++ b/public/favicon.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/icons.svg b/public/icons.svg new file mode 100644 index 0000000..e952219 --- /dev/null +++ b/public/icons.svg @@ -0,0 +1,24 @@ + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/public/logo.png b/public/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..b036856bff1a726224ef3763867fb6c20974bfc8 GIT binary patch literal 192871 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 + Vyryi +

Vyryi

+ + ) + } + return children +} + +export default function App() { + return ( + + + + + + } /> + } /> + } + /> + + } + /> + } /> + } /> + } /> + + + + + + ) +} diff --git a/src/api.ts b/src/api.ts new file mode 100644 index 0000000..ef54845 --- /dev/null +++ b/src/api.ts @@ -0,0 +1,83 @@ +import type { GameStub, TokenResponse, User, Wallet } from './types' + +const API_URL = import.meta.env.VITE_API_URL ?? 'http://127.0.0.1:8000' +const TOKEN_KEY = 'vyryi_token' + +export function getToken(): string | null { + return localStorage.getItem(TOKEN_KEY) +} + +export function setToken(token: string): void { + localStorage.setItem(TOKEN_KEY, token) +} + +export function clearToken(): void { + localStorage.removeItem(TOKEN_KEY) +} + +async function request(path: string, options: RequestInit = {}): Promise { + const headers = new Headers(options.headers) + headers.set('Content-Type', 'application/json') + const token = getToken() + if (token) { + headers.set('Authorization', `Bearer ${token}`) + } + + const response = await fetch(`${API_URL}${path}`, { + ...options, + headers, + }) + + if (!response.ok) { + let detail = `Request failed (${response.status})` + try { + const body = (await response.json()) as { detail?: string } + if (body.detail) detail = body.detail + } catch { + /* ignore */ + } + throw new Error(detail) + } + + return (await response.json()) as T +} + +export const api = { + async devLogin(payload?: { + telegram_id?: number + username?: string + first_name?: string + }): Promise { + return request('/auth/dev-login', { + method: 'POST', + body: JSON.stringify(payload ?? {}), + }) + }, + + getMe(): Promise { + return request('/me') + }, + + acceptAgreement(): Promise { + return request('/me/agreement', { method: 'POST' }) + }, + + getWallet(): Promise { + return request('/wallet') + }, + + deposit(amount: number): Promise { + return request('/wallet/deposit', { + method: 'POST', + body: JSON.stringify({ amount }), + }) + }, + + listGames(): Promise { + return request('/games') + }, + + getGame(slug: string): Promise { + return request(`/games/${slug}`) + }, +} diff --git a/src/assets/hero.png b/src/assets/hero.png new file mode 100644 index 0000000000000000000000000000000000000000..02251f4b956c55af2d76fd0788124d7eee2b45eb GIT binary patch literal 13057 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 P00000NkvXXu0mjft=yBf literal 0 HcmV?d00001 diff --git a/src/auth.tsx b/src/auth.tsx new file mode 100644 index 0000000..2f2a578 --- /dev/null +++ b/src/auth.tsx @@ -0,0 +1,83 @@ +import { + createContext, + useCallback, + useContext, + useEffect, + useMemo, + useState, + type ReactNode, +} from 'react' +import { api, clearToken, getToken, setToken } from './api' +import type { User } from './types' + +type AuthState = { + user: User | null + loading: boolean + error: string | null + refresh: () => Promise + acceptAgreement: () => Promise + setUser: (user: User) => void +} + +const AuthContext = createContext(null) + +export function AuthProvider({ children }: { children: ReactNode }) { + const [user, setUser] = useState(null) + const [loading, setLoading] = useState(true) + const [error, setError] = useState(null) + + const bootstrap = useCallback(async () => { + setLoading(true) + setError(null) + try { + // Local MVP: no Telegram bot yet — always ensure a JWT via dev-login. + if (!getToken()) { + const token = await api.devLogin({ + telegram_id: 100001, + username: 'dev_user', + first_name: 'Путник', + }) + setToken(token.access_token) + } + const me = await api.getMe() + setUser(me) + } catch (err) { + clearToken() + setUser(null) + setError(err instanceof Error ? err.message : 'Не удалось войти') + } finally { + setLoading(false) + } + }, []) + + useEffect(() => { + void bootstrap() + }, [bootstrap]) + + const acceptAgreement = useCallback(async () => { + const updated = await api.acceptAgreement() + setUser(updated) + }, []) + + const value = useMemo( + () => ({ + user, + loading, + error, + refresh: bootstrap, + acceptAgreement, + setUser, + }), + [user, loading, error, bootstrap, acceptAgreement], + ) + + return {children} +} + +export function useAuth(): AuthState { + const ctx = useContext(AuthContext) + if (!ctx) { + throw new Error('useAuth must be used within AuthProvider') + } + return ctx +} diff --git a/src/index.css b/src/index.css new file mode 100644 index 0000000..13f3f7c --- /dev/null +++ b/src/index.css @@ -0,0 +1,618 @@ +@import url('https://fonts.googleapis.com/css2?family=Cormorant+Garamond:ital,wght@0,500;0,600;0,700;1,500&family=Source+Sans+3:wght@400;500;600&display=swap'); + +:root { + --bg-deep: #1a1b16; + --bg: #2f3027; + --bg-lift: #3a3b31; + --gold: #a68946; + --gold-soft: #c4a96a; + --burgundy: #8c2b2b; + --eye: #c8d97d; + --cream: #e8e0d0; + --muted: #9a9486; + --ink: #0f100d; + --radius: 10px; + --font-display: 'Cormorant Garamond', 'Palatino Linotype', serif; + --font-body: 'Source Sans 3', 'Segoe UI', sans-serif; + color: var(--cream); + background: var(--bg-deep); + font-family: var(--font-body); + font-synthesis: none; + text-rendering: optimizeLegibility; + -webkit-font-smoothing: antialiased; +} + +*, +*::before, +*::after { + box-sizing: border-box; +} + +html, +body, +#root { + min-height: 100%; + margin: 0; +} + +body { + min-height: 100vh; + background: + radial-gradient(ellipse 80% 50% at 50% -10%, rgba(166, 137, 70, 0.18), transparent 55%), + radial-gradient(ellipse 60% 40% at 80% 100%, rgba(140, 43, 43, 0.12), transparent 50%), + linear-gradient(165deg, var(--bg-deep) 0%, var(--bg) 45%, #25261f 100%); + background-attachment: fixed; +} + +body::before { + content: ''; + position: fixed; + inset: 0; + pointer-events: none; + opacity: 0.07; + background-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 200 200' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E"); + z-index: 0; +} + +#root { + position: relative; + z-index: 1; +} + +a { + color: inherit; + text-decoration: none; +} + +button, +input { + font: inherit; +} + +.brand { + margin: 0; + font-family: var(--font-display); + font-weight: 700; + font-size: clamp(2.8rem, 10vw, 4rem); + letter-spacing: 0.08em; + text-transform: uppercase; + color: var(--gold-soft); + text-shadow: 0 2px 24px rgba(166, 137, 70, 0.35); + animation: brand-in 0.9s ease-out both; +} + +.brand--sm { + font-size: 1.35rem; + letter-spacing: 0.12em; + animation: none; +} + +.boot { + min-height: 100vh; + display: grid; + place-content: center; + gap: 0.75rem; + text-align: center; +} + +.boot__logo { + width: min(42vw, 180px); + margin: 0 auto; + animation: logo-rise 1.1s ease-out both; + filter: drop-shadow(0 8px 28px rgba(0, 0, 0, 0.55)); +} + +.gate { + min-height: 100vh; + display: flex; + align-items: center; + justify-content: center; + padding: 2rem 1.25rem 3rem; + position: relative; + overflow: hidden; + transform-origin: center center; +} + +.gate__glow { + position: absolute; + width: 280px; + height: 280px; + border-radius: 50%; + background: radial-gradient(circle, rgba(200, 217, 125, 0.16), transparent 70%); + top: 12%; + left: 50%; + transform: translateX(-50%); + animation: pulse-glow 4s ease-in-out infinite; + pointer-events: none; +} + +.gate__content { + width: min(100%, 420px); + text-align: center; + position: relative; +} + +.gate__logo { + width: min(58vw, 220px); + display: block; + margin: 0 auto 0.5rem; + animation: logo-rise 1.1s ease-out both; + filter: drop-shadow(0 10px 32px rgba(0, 0, 0, 0.6)); +} + +.gate__tagline { + margin: 0.35rem 0 1.75rem; + color: var(--muted); + font-size: 1.05rem; + font-style: italic; + font-family: var(--font-display); + animation: fade-up 1s 0.2s ease-out both; +} + +.agreement { + text-align: left; + animation: fade-up 0.9s 0.35s ease-out both; +} + +.agreement__check { + display: flex; + gap: 0.65rem; + align-items: flex-start; + margin-bottom: 1rem; + color: var(--cream); + font-size: 0.95rem; + cursor: pointer; +} + +.agreement__check input { + margin-top: 0.2rem; + accent-color: var(--gold); +} + +.legal-link { + color: var(--gold-soft); + text-decoration: underline; + text-underline-offset: 0.15em; +} + +.legal-link:hover { + color: var(--eye); +} + +.legal-page { + max-width: 560px; + margin: 0 auto; + padding: 1.25rem 1.15rem 2.5rem; +} + +.legal-doc { + margin-top: 1.25rem; +} + +.legal-doc h1 { + margin: 0 0 1rem; + font-family: var(--font-display); + font-size: clamp(1.6rem, 5vw, 2rem); + font-weight: 600; + color: var(--gold-soft); +} + +.legal-doc p { + margin: 0 0 0.9rem; + color: var(--muted); + line-height: 1.55; + font-size: 0.98rem; +} + +.legal-doc p:last-child { + margin-bottom: 0; +} + +.btn { + display: inline-flex; + align-items: center; + justify-content: center; + width: 100%; + border: none; + border-radius: var(--radius); + padding: 0.85rem 1.1rem; + cursor: pointer; + transition: transform 0.15s ease, filter 0.15s ease, background 0.15s ease, opacity 0.15s ease; +} + +.btn:disabled { + opacity: 0.45; + cursor: not-allowed; +} + +.btn:not(:disabled):active { + transform: translateY(1px); +} + +.btn--gold { + background: linear-gradient(180deg, var(--gold-soft), var(--gold)); + color: var(--ink); + font-weight: 600; + letter-spacing: 0.04em; +} + +.btn--gold:not(:disabled):hover { + filter: brightness(1.06); +} + +.btn--sm { + width: auto; + padding: 0.45rem 0.85rem; + font-size: 0.85rem; +} + +.btn--outline { + background: transparent; + border: 1px solid var(--gold); + color: var(--gold-soft); +} + +.btn--outline:not(:disabled):hover { + background: rgba(166, 137, 70, 0.12); +} + +.btn--ghost { + background: transparent; + color: var(--muted); + margin-top: 0.5rem; +} + +.error { + color: #e8a0a0; + font-size: 0.9rem; + margin: 0 0 0.75rem; +} + +.linkish { + display: inline; + margin-left: 0.5rem; + background: none; + border: none; + color: var(--eye); + cursor: pointer; + text-decoration: underline; + padding: 0; +} + +.home { + max-width: 520px; + margin: 0 auto; + padding: 1.25rem 1.15rem 2.5rem; +} + +.home__top { + display: flex; + flex-direction: column; + gap: 1rem; + margin-bottom: 1.5rem; +} + +.home__brand-row { + display: flex; + align-items: center; + gap: 0.65rem; +} + +.home__mark { + width: 42px; + height: 42px; + object-fit: contain; +} + +.balance-panel { + display: grid; + grid-template-columns: 1fr auto; + grid-template-areas: + 'label btn' + 'value btn'; + gap: 0.15rem 1rem; + align-items: center; + padding: 0.9rem 1rem; + background: rgba(15, 16, 13, 0.4); + border-bottom: 1px solid rgba(166, 137, 70, 0.4); +} + +.balance-panel__label { + grid-area: label; + color: var(--muted); + font-size: 0.8rem; + text-transform: uppercase; + letter-spacing: 0.08em; +} + +.balance-panel__value { + grid-area: value; + font-family: var(--font-display); + font-size: 2rem; + font-weight: 600; + color: var(--eye); +} + +.balance-panel .btn { + grid-area: btn; +} + +.section-lead { + margin: 0 0 1rem; + color: var(--muted); + font-size: 0.95rem; +} + +.games h2 { + margin: 0 0 0.35rem; + font-family: var(--font-display); + font-size: 1.75rem; + font-weight: 600; + color: var(--gold-soft); +} + +.games__list { + list-style: none; + margin: 0; + padding: 0; + display: flex; + flex-direction: column; + gap: 0.75rem; +} + +.game-link { + display: grid; + grid-template-columns: 1fr auto; + gap: 0.25rem 0.75rem; + padding: 0.95rem 0.25rem 1rem; + border-bottom: 1px solid rgba(166, 137, 70, 0.22); + transition: background 0.2s ease, padding-left 0.2s ease; +} + +.game-link:hover { + background: rgba(166, 137, 70, 0.06); + padding-left: 0.35rem; +} + +.game-link__title { + font-family: var(--font-display); + font-size: 1.25rem; + font-weight: 600; +} + +.game-link__status { + color: var(--burgundy); + font-size: 0.75rem; + text-transform: uppercase; + letter-spacing: 0.1em; + align-self: center; +} + +.game-link__desc { + grid-column: 1 / -1; + color: var(--muted); + font-size: 0.9rem; +} + +.toast { + margin: 0 0 1rem; + color: var(--eye); + font-size: 0.9rem; +} + +.modal { + position: fixed; + inset: 0; + background: rgba(10, 10, 8, 0.72); + display: grid; + place-items: center; + padding: 1.25rem; + z-index: 20; + animation: fade-in 0.2s ease; +} + +.modal__panel { + width: min(100%, 360px); + padding: 1.35rem 1.2rem; + background: linear-gradient(180deg, var(--bg-lift), var(--bg)); + border: 1px solid rgba(166, 137, 70, 0.4); + border-radius: var(--radius); + box-shadow: 0 16px 48px rgba(0, 0, 0, 0.5); +} + +.modal__panel h3 { + margin: 0 0 0.35rem; + font-family: var(--font-display); + font-size: 1.5rem; + color: var(--gold-soft); +} + +.deposit-grid { + display: grid; + grid-template-columns: repeat(3, 1fr); + gap: 0.5rem; + margin-bottom: 0.5rem; +} + +.game-page { + max-width: 520px; + margin: 0 auto; + padding: 1.25rem 1.15rem 2.5rem; +} + +.back-link { + color: var(--muted); + font-size: 0.9rem; +} + +.back-link:hover { + color: var(--gold-soft); +} + +.game-stub { + margin-top: 2rem; + text-align: center; +} + +.game-stub__mark { + width: 120px; + margin-bottom: 1rem; + opacity: 0.9; + animation: logo-rise 0.8s ease-out both; +} + +.game-stub h1 { + margin: 0 0 0.5rem; + font-family: var(--font-display); + font-size: 2rem; + color: var(--gold-soft); +} + +.game-stub p { + color: var(--muted); + margin: 0 0 1rem; +} + +.game-stub__badge { + display: inline-block; + color: var(--burgundy); + border: 1px solid rgba(140, 43, 43, 0.5); + padding: 0.35rem 0.85rem; + letter-spacing: 0.12em; + text-transform: uppercase; + font-size: 0.75rem; +} + +@keyframes logo-rise { + from { + opacity: 0; + transform: translateY(18px) scale(0.96); + } + to { + opacity: 1; + transform: translateY(0) scale(1); + } +} + +@keyframes brand-in { + from { + opacity: 0; + letter-spacing: 0.2em; + } + to { + opacity: 1; + letter-spacing: 0.08em; + } +} + +@keyframes fade-up { + from { + opacity: 0; + transform: translateY(12px); + } + to { + opacity: 1; + transform: translateY(0); + } +} + +@keyframes fade-in { + from { + opacity: 0; + } + to { + opacity: 1; + } +} + +@keyframes pulse-glow { + 0%, + 100% { + opacity: 0.55; + transform: translateX(-50%) scale(1); + } + 50% { + opacity: 1; + transform: translateX(-50%) scale(1.08); + } +} + +@media (min-width: 640px) { + .home__top { + flex-direction: row; + align-items: center; + justify-content: space-between; + } +} + +/* Gate logo fly-in transit */ +html.gate-transit-lock, +html.gate-transit-lock body { + overflow: hidden; + touch-action: none; +} + +.gate-transit { + position: fixed; + inset: 0; + z-index: 9000; + pointer-events: none; + overflow: hidden; +} + +.gate-transit__stage { + position: absolute; + inset: 0; + perspective: 1400px; + perspective-origin: 50% 46%; +} + +.gate-transit__hero { + /* Hidden until JS pins it over .gate__logo — avoids first-frame size flash */ + position: fixed; + top: 0; + left: 0; + width: 0; + height: 0; + opacity: 0; + visibility: hidden; + display: block; + margin: 0; + pointer-events: none; + user-select: none; + object-fit: contain; + filter: drop-shadow(0 10px 32px rgba(0, 0, 0, 0.6)); +} + + +.gate-transit__veil { + position: absolute; + inset: 0; + background: #000; + opacity: 0; + z-index: 3; +} + +.home--from-gate { + animation: home-from-void 0.95s cubic-bezier(0.22, 1, 0.36, 1) both; +} + +@keyframes home-from-void { + from { + opacity: 0; + transform: translateY(18px) scale(0.985); + filter: blur(8px); + } + to { + opacity: 1; + transform: translateY(0) scale(1); + filter: blur(0); + } +} + +@media (prefers-reduced-motion: reduce) { + .home--from-gate { + animation: fade-in 0.45s ease-out both; + } +} + diff --git a/src/legal.ts b/src/legal.ts new file mode 100644 index 0000000..73fb4c0 --- /dev/null +++ b/src/legal.ts @@ -0,0 +1,23 @@ +export const TERMS_DOC = { + title: 'Пользовательское соглашение', + paragraphs: [ + 'Настоящее Пользовательское соглашение (далее — «Соглашение») регулирует отношения между пользователем и сервисом Vyryi (далее — «Сервис») при использовании Telegram Mini App Vyryi.', + 'Vyryi — развлекательное приложение. Баланс в Сервисе можно пополнять. В текущей версии пополнение реализовано в тестовом режиме (заглушка). Вывод средств недоступен и не предусмотрен.', + 'Игры и иные функции Сервиса носят развлекательный характер. Участвуя в них, пользователь подтверждает, что понимает правила и принимает невозможность вывода денежных средств.', + 'Сервис вправе изменять набор игр, интерфейс, условия начисления и отображения баланса, а также временно ограничивать доступ для технического обслуживания.', + 'Пользователь обязуется не пытаться обойти ограничения Сервиса, не использовать вредоносное ПО и не нарушать работу приложения.', + 'Продолжая использование Сервиса после принятия Соглашения, пользователь подтверждает, что ознакомился с его условиями и полностью их принимает.', + ], +} + +export const PRIVACY_DOC = { + title: 'Политика обработки персональных данных', + paragraphs: [ + 'Настоящий документ описывает, какие данные обрабатывает сервис Vyryi и для каких целей.', + 'В рамках работы приложения могут обрабатываться идентификатор Telegram, имя пользователя, отображаемое имя, данные о принятии соглашений, баланс и история пополнений.', + 'Данные используются для аутентификации, предоставления функций Сервиса, учёта баланса, исполнения пользовательских соглашений и обеспечения безопасности.', + 'Данные хранятся на серверах, необходимых для работы приложения, и не передаются третьим лицам, за исключением случаев, прямо предусмотренных законом или технически необходимых для работы инфраструктуры.', + 'Пользователь может прекратить использование Сервиса. Вопросы по обработке данных можно направить оператору Сервиса после появления публичных контактов поддержки.', + 'Используя Vyryi и принимая соответствующие отметки на стартовом экране, пользователь подтверждает согласие на обработку указанных данных в объёме, необходимом для работы приложения.', + ], +} diff --git a/src/main.tsx b/src/main.tsx new file mode 100644 index 0000000..bef5202 --- /dev/null +++ b/src/main.tsx @@ -0,0 +1,10 @@ +import { StrictMode } from 'react' +import { createRoot } from 'react-dom/client' +import './index.css' +import App from './App.tsx' + +createRoot(document.getElementById('root')!).render( + + + , +) diff --git a/src/pages/AgreementPage.tsx b/src/pages/AgreementPage.tsx new file mode 100644 index 0000000..a0d7730 --- /dev/null +++ b/src/pages/AgreementPage.tsx @@ -0,0 +1,93 @@ +import { useState } from 'react' +import { Link } from 'react-router-dom' +import { useAuth } from '../auth' +import { useGateTransit } from '../vfx/GateTransitProvider' + +export function AgreementPage() { + const { user, loading, error, acceptAgreement, refresh } = useAuth() + const { start, active } = useGateTransit() + const [termsAccepted, setTermsAccepted] = useState(false) + const [privacyAccepted, setPrivacyAccepted] = useState(false) + const [submitting, setSubmitting] = useState(false) + const [localError, setLocalError] = useState(null) + + const canEnter = termsAccepted && privacyAccepted + + async function onEnter() { + if (!canEnter || submitting || active) return + setSubmitting(true) + setLocalError(null) + + const result = await start(async () => { + if (!user?.agreement_accepted) { + await acceptAgreement() + } + }) + + if (!result.ok) { + setLocalError(result.error ?? 'Ошибка') + setSubmitting(false) + } + } + + return ( +
+
+
+ Vyryi +

Vyryi

+

Врата, за которыми нет возврата.

+ +
+ + + + + {(error || localError) && ( +

+ {localError ?? error} + {error && ( + + )} +

+ )} + + +
+
+
+ ) +} diff --git a/src/pages/GamePage.tsx b/src/pages/GamePage.tsx new file mode 100644 index 0000000..9a07d46 --- /dev/null +++ b/src/pages/GamePage.tsx @@ -0,0 +1,41 @@ +import { useEffect, useState } from 'react' +import { Link, Navigate, useParams } from 'react-router-dom' +import { api } from '../api' +import { useAuth } from '../auth' +import type { GameStub } from '../types' + +export function GamePage() { + const { slug } = useParams<{ slug: string }>() + const { user, loading } = useAuth() + const [game, setGame] = useState(null) + const [error, setError] = useState(null) + + useEffect(() => { + if (!slug) return + void api + .getGame(slug) + .then(setGame) + .catch((err: unknown) => setError(err instanceof Error ? err.message : 'Не найдено')) + }, [slug]) + + if (!loading && user && !user.agreement_accepted) { + return + } + + return ( +
+ + ← Назад + + {error &&

{error}

} + {game && ( +
+ +

{game.title}

+

{game.description}

+

В разработке

+
+ )} +
+ ) +} diff --git a/src/pages/HomePage.tsx b/src/pages/HomePage.tsx new file mode 100644 index 0000000..16f67c5 --- /dev/null +++ b/src/pages/HomePage.tsx @@ -0,0 +1,118 @@ +import { useEffect, useState } from 'react' +import { Link, Navigate } from 'react-router-dom' +import { api } from '../api' +import { useAuth } from '../auth' +import type { GameStub } from '../types' +import { GATE_FROM_KEY } from '../vfx/gateCaps' + +const DEPOSIT_AMOUNTS = [100, 500, 1000] + +export function HomePage() { + const { user, loading, setUser } = useAuth() + const [games, setGames] = useState([]) + const [depositOpen, setDepositOpen] = useState(false) + const [busy, setBusy] = useState(false) + const [message, setMessage] = useState(null) + const [fromGate, setFromGate] = useState(false) + + useEffect(() => { + void api.listGames().then(setGames).catch(() => setGames([])) + }, []) + + useEffect(() => { + try { + if (sessionStorage.getItem(GATE_FROM_KEY) === '1') { + sessionStorage.removeItem(GATE_FROM_KEY) + setFromGate(true) + } + } catch { + /* ignore */ + } + }, []) + + if (!loading && user && !user.agreement_accepted) { + return + } + + if (!loading && !user) { + return + } + + async function deposit(amount: number) { + setBusy(true) + setMessage(null) + try { + const wallet = await api.deposit(amount) + if (user) { + setUser({ ...user, balance: wallet.balance }) + } + setMessage(`Зачислено ${amount}`) + setDepositOpen(false) + } catch (err) { + setMessage(err instanceof Error ? err.message : 'Ошибка пополнения') + } finally { + setBusy(false) + } + } + + return ( +
+
+
+ + Vyryi +
+
+ Баланс + {user?.balance ?? '—'} + +
+
+ + {message &&

{message}

} + +
+

Слоты

+

Врата ещё закрыты — пока только предвестники.

+
    + {games.map((game) => ( +
  • + + {game.title} + Скоро + {game.description} + +
  • + ))} +
+
+ + {depositOpen && ( +
+
+

Пополнение

+

Тестовая заглушка. Вывод недоступен.

+
+ {DEPOSIT_AMOUNTS.map((amount) => ( + + ))} +
+ +
+
+ )} +
+ ) +} diff --git a/src/pages/LegalDocumentPage.tsx b/src/pages/LegalDocumentPage.tsx new file mode 100644 index 0000000..e7caa3a --- /dev/null +++ b/src/pages/LegalDocumentPage.tsx @@ -0,0 +1,22 @@ +import { Link } from 'react-router-dom' + +type LegalDocumentPageProps = { + title: string + paragraphs: string[] +} + +export function LegalDocumentPage({ title, paragraphs }: LegalDocumentPageProps) { + return ( +
+ + ← Назад + +
+

{title}

+ {paragraphs.map((text, index) => ( +

{text}

+ ))} +
+
+ ) +} diff --git a/src/pages/RootRedirect.tsx b/src/pages/RootRedirect.tsx new file mode 100644 index 0000000..8546d5b --- /dev/null +++ b/src/pages/RootRedirect.tsx @@ -0,0 +1,12 @@ +import { Navigate } from 'react-router-dom' +import { useAuth } from '../auth' + +/** `/` → home if agreement done, otherwise onboarding. */ +export function RootRedirect() { + const { user, loading } = useAuth() + if (loading) return null + if (user?.agreement_accepted) { + return + } + return +} diff --git a/src/types.ts b/src/types.ts new file mode 100644 index 0000000..695fd8a --- /dev/null +++ b/src/types.ts @@ -0,0 +1,33 @@ +export type User = { + id: number + telegram_id: number | null + username: string | null + first_name: string | null + balance: string + agreement_accepted: boolean + agreement_accepted_at: string | null + created_at: string +} + +export type Deposit = { + id: number + amount: string + created_at: string +} + +export type Wallet = { + balance: string + deposits: Deposit[] +} + +export type GameStub = { + slug: string + title: string + description: string + status: string +} + +export type TokenResponse = { + access_token: string + token_type: string +} diff --git a/src/vfx/GateTransitProvider.tsx b/src/vfx/GateTransitProvider.tsx new file mode 100644 index 0000000..3a3d6a1 --- /dev/null +++ b/src/vfx/GateTransitProvider.tsx @@ -0,0 +1,323 @@ +import { + createContext, + useCallback, + useContext, + useEffect, + useMemo, + useRef, + useState, + type ReactNode, +} from 'react' +import { createPortal } from 'react-dom' +import { useNavigate } from 'react-router-dom' +import gsap from 'gsap' +import { GATE_FROM_KEY, prefersReducedMotion, type GateTransitPhase } from './gateCaps' +import { + createLogoFlyTimeline, + createReducedLogoFlyTimeline, + type LogoFlyTargets, +} from './gateTimeline' + +type StartResult = { + ok: boolean + error?: string +} + +type GateTransitContextValue = { + phase: GateTransitPhase + active: boolean + start: (runAccept: () => Promise) => Promise +} + +const GateTransitContext = createContext(null) + +export function useGateTransit() { + const ctx = useContext(GateTransitContext) + if (!ctx) { + throw new Error('useGateTransit must be used within GateTransitProvider') + } + return ctx +} + +function collectUiFade(gate: HTMLElement, logo: HTMLElement | null): HTMLElement[] { + const nodes: HTMLElement[] = [] + const glow = gate.querySelector('.gate__glow') + if (glow) nodes.push(glow) + const content = gate.querySelector('.gate__content') + if (content) { + for (const el of Array.from(content.children)) { + if (el instanceof HTMLElement && el !== logo) nodes.push(el) + } + } + return nodes +} + +function placeHeroOverLogo(hero: HTMLElement, logo: HTMLElement) { + const rect = logo.getBoundingClientRect() + // Geometry only — keep invisible until the original logo is hidden in the same frame + gsap.set(hero, { + position: 'fixed', + top: rect.top, + left: rect.left, + width: rect.width, + height: rect.height, + margin: 0, + zIndex: 2, + opacity: 0, + visibility: 'hidden', + scale: 1, + rotation: 0, + z: 0, + filter: 'drop-shadow(0 10px 32px rgba(0, 0, 0, 0.6))', + objectFit: 'contain', + transformOrigin: '50% 46%', + transformPerspective: 1400, + force3D: true, + willChange: 'transform, filter, opacity', + }) +} + +function revealHeroOverLogo(hero: HTMLElement, logo: HTMLElement) { + gsap.set(logo, { opacity: 0 }) + gsap.set(hero, { opacity: 1, visibility: 'visible' }) +} + +export function GateTransitProvider({ children }: { children: ReactNode }) { + const navigate = useNavigate() + const [phase, setPhase] = useState('idle') + const [showOverlay, setShowOverlay] = useState(false) + + const veilRef = useRef(null) + const stageRef = useRef(null) + const heroRef = useRef(null) + const timelineRef = useRef(null) + const acceptPromiseRef = useRef | null>(null) + const acceptErrorRef = useRef(null) + const acceptOkRef = useRef(false) + const navigatedRef = useRef(false) + const resolveStartRef = useRef<((result: StartResult) => void) | null>(null) + const reducedRef = useRef(false) + + const cleanupDomLocks = useCallback(() => { + document.documentElement.classList.remove('gate-transit-lock') + const gate = document.querySelector('.gate') + const logo = document.querySelector('.gate__logo') + const glow = document.querySelector('.gate__glow') + if (logo) gsap.set(logo, { clearProps: 'opacity' }) + if (glow) gsap.set(glow, { clearProps: 'opacity,filter,transform' }) + if (gate) { + gate.querySelectorAll('.gate__content > *').forEach((el) => { + gsap.set(el, { clearProps: 'opacity,filter,transform' }) + }) + } + }, []) + + const finish = useCallback( + (result: StartResult) => { + timelineRef.current?.kill() + timelineRef.current = null + setShowOverlay(false) + setPhase(result.ok ? 'done' : 'error') + cleanupDomLocks() + resolveStartRef.current?.(result) + resolveStartRef.current = null + window.setTimeout(() => { + setPhase('idle') + acceptPromiseRef.current = null + acceptErrorRef.current = null + acceptOkRef.current = false + navigatedRef.current = false + }, 80) + }, + [cleanupDomLocks], + ) + + const handleBlackout = useCallback(async () => { + setPhase('blackout') + + const waitAccept = async () => { + if (acceptOkRef.current) return true + if (acceptErrorRef.current) return false + if (!acceptPromiseRef.current) return false + try { + await Promise.race([ + acceptPromiseRef.current, + new Promise((_, reject) => { + window.setTimeout(() => reject(new Error('Слишком долго. Попробуйте ещё раз.')), 1500) + }), + ]) + return acceptOkRef.current + } catch (err) { + if (!acceptErrorRef.current) { + acceptErrorRef.current = err instanceof Error ? err.message : 'Ошибка' + } + return false + } + } + + const ok = await waitAccept() + if (!ok) { + finish({ ok: false, error: acceptErrorRef.current ?? 'Ошибка' }) + return + } + + if (!navigatedRef.current) { + navigatedRef.current = true + try { + sessionStorage.setItem(GATE_FROM_KEY, '1') + } catch { + /* ignore */ + } + navigate('/home', { replace: true, state: { fromGate: true } }) + } + }, [finish, navigate]) + + const handleRevealStart = useCallback(() => { + setPhase('revealing') + }, []) + + const handleComplete = useCallback(() => { + finish({ ok: true }) + }, [finish]) + + const startTimeline = useCallback(() => { + const logo = document.querySelector('.gate__logo') + const gate = document.querySelector('.gate') + const hero = heroRef.current + if (!hero || !logo || !gate) { + finish({ ok: false, error: 'Не удалось запустить переход' }) + return + } + + placeHeroOverLogo(hero, logo) + + // One frame with hero invisible + correct box, then atomic swap with the page logo + requestAnimationFrame(() => { + if (timelineRef.current) return + placeHeroOverLogo(hero, logo) + revealHeroOverLogo(hero, logo) + + const targets: LogoFlyTargets = { + hero, + uiFade: collectUiFade(gate, logo), + originalLogo: logo, + veil: veilRef.current, + stage: stageRef.current, + } + + const handlers = { + onBlackout: () => { + void handleBlackout() + }, + onRevealStart: handleRevealStart, + onComplete: handleComplete, + } + + timelineRef.current = reducedRef.current + ? createReducedLogoFlyTimeline(targets, handlers) + : createLogoFlyTimeline(targets, handlers) + }) + }, [finish, handleBlackout, handleComplete, handleRevealStart]) + + useEffect(() => { + if (phase !== 'playing' || !showOverlay) return + + let cancelled = false + let tries = 0 + + const tick = () => { + if (cancelled || timelineRef.current) return + if (!heroRef.current || !document.querySelector('.gate__logo')) { + tries += 1 + if (tries < 30) { + window.setTimeout(tick, 32) + return + } + finish({ ok: false, error: 'Не удалось запустить переход' }) + return + } + startTimeline() + } + + const id = window.setTimeout(tick, 0) + return () => { + cancelled = true + window.clearTimeout(id) + } + }, [phase, showOverlay, startTimeline, finish]) + + const start = useCallback( + (runAccept: () => Promise) => { + if (phase !== 'idle' && phase !== 'done' && phase !== 'error') { + return Promise.resolve({ ok: false, error: 'Переход уже идёт' }) + } + + reducedRef.current = prefersReducedMotion() + setShowOverlay(true) + setPhase('playing') + document.documentElement.classList.add('gate-transit-lock') + + acceptOkRef.current = false + acceptErrorRef.current = null + navigatedRef.current = false + timelineRef.current = null + + const acceptPromise = runAccept() + .then(() => { + acceptOkRef.current = true + }) + .catch((err: unknown) => { + acceptErrorRef.current = err instanceof Error ? err.message : 'Ошибка' + throw err + }) + acceptPromiseRef.current = acceptPromise + void acceptPromise.catch(() => undefined) + + return new Promise((resolve) => { + resolveStartRef.current = resolve + }) + }, + [phase], + ) + + useEffect(() => { + return () => { + timelineRef.current?.kill() + cleanupDomLocks() + } + }, [cleanupDomLocks]) + + const value = useMemo( + () => ({ + phase, + active: phase === 'playing' || phase === 'blackout' || phase === 'revealing', + start, + }), + [phase, start], + ) + + const overlayVisible = + showOverlay && (phase === 'playing' || phase === 'blackout' || phase === 'revealing') + + return ( + + {children} + {overlayVisible && + createPortal( +
+
+ +
+
+
, + document.body, + )} + + ) +} diff --git a/src/vfx/gateCaps.ts b/src/vfx/gateCaps.ts new file mode 100644 index 0000000..458f676 --- /dev/null +++ b/src/vfx/gateCaps.ts @@ -0,0 +1,14 @@ +export type GateTransitPhase = + | 'idle' + | 'playing' + | 'blackout' + | 'revealing' + | 'done' + | 'error' + +export const GATE_FROM_KEY = 'vyryi:from-gate' + +export function prefersReducedMotion(): boolean { + if (typeof window === 'undefined') return false + return window.matchMedia('(prefers-reduced-motion: reduce)').matches +} diff --git a/src/vfx/gateTimeline.ts b/src/vfx/gateTimeline.ts new file mode 100644 index 0000000..81b72e0 --- /dev/null +++ b/src/vfx/gateTimeline.ts @@ -0,0 +1,130 @@ +import gsap from 'gsap' + +export type GateTimelineHandlers = { + onBlackout: () => void + onRevealStart: () => void + onComplete: () => void +} + +export type LogoFlyTargets = { + hero: HTMLElement + uiFade: HTMLElement[] + originalLogo: HTMLElement | null + veil: HTMLElement | null + stage: HTMLElement | null +} + +/** Continuously fly into logo.png (central black arch), then void → home. */ +export function createLogoFlyTimeline(targets: LogoFlyTargets, handlers: GateTimelineHandlers) { + const { hero, uiFade, veil, stage } = targets + + gsap.set(hero, { + transformOrigin: '50% 46%', + transformPerspective: 1400, + force3D: true, + scale: 1, + z: 0, + rotation: 0, + filter: 'brightness(1) contrast(1) drop-shadow(0 10px 32px rgba(0, 0, 0, 0.6))', + }) + + if (stage) { + gsap.set(stage, { perspective: 1400 }) + } + + if (veil) { + gsap.set(veil, { opacity: 0 }) + } + + const tl = gsap.timeline({ + onComplete: () => handlers.onComplete(), + }) + + if (uiFade.length) { + tl.to( + uiFade, + { + opacity: 0, + y: 18, + filter: 'blur(10px)', + duration: 0.4, + stagger: 0.04, + ease: 'power2.out', + }, + 0, + ) + } + + // Dolly into the black arch — image stays on screen the whole time + tl.to( + hero, + { + scale: 26, + z: 280, + rotation: 0.4, + duration: 2.15, + ease: 'power3.in', + force3D: true, + }, + 0.05, + ) + + tl.to( + hero, + { + filter: + 'brightness(0.35) contrast(1.25) drop-shadow(0 10px 32px rgba(0, 0, 0, 0.6))', + duration: 1.1, + ease: 'power2.in', + }, + 1.1, + ) + + if (veil) { + tl.to(veil, { opacity: 1, duration: 0.55, ease: 'power2.in' }, 1.75) + } + + tl.call(() => handlers.onBlackout(), undefined, 2.15) + tl.to({}, { duration: 0.2 }, 2.15) + tl.call(() => handlers.onRevealStart(), undefined, 2.35) + + if (veil) { + tl.to(veil, { opacity: 0, duration: 0.85, ease: 'power2.out' }, 2.35) + } + + tl.to(hero, { opacity: 0, duration: 0.35, ease: 'power1.in' }, 2.4) + + return tl +} + +export function createReducedLogoFlyTimeline( + targets: LogoFlyTargets, + handlers: GateTimelineHandlers, +) { + const { hero, uiFade, veil } = targets + + gsap.set(hero, { transformOrigin: '50% 46%', scale: 1 }) + if (veil) gsap.set(veil, { opacity: 0 }) + + const tl = gsap.timeline({ onComplete: () => handlers.onComplete() }) + + if (uiFade.length) { + tl.to(uiFade, { opacity: 0, duration: 0.3, ease: 'power1.out' }, 0) + } + + tl.to(hero, { scale: 14, duration: 0.85, ease: 'power2.in' }, 0) + if (veil) { + tl.to(veil, { opacity: 1, duration: 0.4, ease: 'power2.in' }, 0.45) + } + + tl.call(() => handlers.onBlackout(), undefined, 0.85) + tl.to({}, { duration: 0.15 }, 0.85) + tl.call(() => handlers.onRevealStart(), undefined, 1.0) + + if (veil) { + tl.to(veil, { opacity: 0, duration: 0.55, ease: 'power2.out' }, 1.0) + } + tl.to(hero, { opacity: 0, duration: 0.25 }, 1.0) + + return tl +} diff --git a/tsconfig.app.json b/tsconfig.app.json new file mode 100644 index 0000000..6830b6f --- /dev/null +++ b/tsconfig.app.json @@ -0,0 +1,26 @@ +{ + "compilerOptions": { + "tsBuildInfoFile": "./node_modules/.tmp/tsconfig.app.tsbuildinfo", + "target": "es2023", + "lib": ["ES2023", "DOM"], + "module": "esnext", + "types": ["vite/client"], + "allowArbitraryExtensions": true, + "skipLibCheck": true, + + /* Bundler mode */ + "moduleResolution": "bundler", + "allowImportingTsExtensions": true, + "verbatimModuleSyntax": true, + "moduleDetection": "force", + "noEmit": true, + "jsx": "react-jsx", + + /* Linting */ + "noUnusedLocals": true, + "noUnusedParameters": true, + "erasableSyntaxOnly": true, + "noFallthroughCasesInSwitch": true + }, + "include": ["src"] +} diff --git a/tsconfig.json b/tsconfig.json new file mode 100644 index 0000000..1ffef60 --- /dev/null +++ b/tsconfig.json @@ -0,0 +1,7 @@ +{ + "files": [], + "references": [ + { "path": "./tsconfig.app.json" }, + { "path": "./tsconfig.node.json" } + ] +} diff --git a/tsconfig.node.json b/tsconfig.node.json new file mode 100644 index 0000000..8455dcb --- /dev/null +++ b/tsconfig.node.json @@ -0,0 +1,23 @@ +{ + "compilerOptions": { + "tsBuildInfoFile": "./node_modules/.tmp/tsconfig.node.tsbuildinfo", + "target": "es2023", + "lib": ["ES2023"], + "types": ["node"], + "skipLibCheck": true, + + /* Bundler mode */ + "module": "nodenext", + "allowImportingTsExtensions": true, + "verbatimModuleSyntax": true, + "moduleDetection": "force", + "noEmit": true, + + /* Linting */ + "noUnusedLocals": true, + "noUnusedParameters": true, + "erasableSyntaxOnly": true, + "noFallthroughCasesInSwitch": true + }, + "include": ["vite.config.ts"] +} diff --git a/vite.config.ts b/vite.config.ts new file mode 100644 index 0000000..8b0f57b --- /dev/null +++ b/vite.config.ts @@ -0,0 +1,7 @@ +import { defineConfig } from 'vite' +import react from '@vitejs/plugin-react' + +// https://vite.dev/config/ +export default defineConfig({ + plugins: [react()], +})