diff --git a/contracts/ChainCashNote.es b/contracts/ChainCashNote.es new file mode 100644 index 0000000..10051c7 --- /dev/null +++ b/contracts/ChainCashNote.es @@ -0,0 +1 @@ +// Placeholder diff --git a/homepage.png b/homepage.png new file mode 100644 index 0000000..6a2f92e Binary files /dev/null and b/homepage.png differ diff --git a/package-lock.json b/package-lock.json index 7b6992f..5f844cf 100644 --- a/package-lock.json +++ b/package-lock.json @@ -24,6 +24,7 @@ "zustand": "^5.0.9" }, "devDependencies": { + "@playwright/test": "^1.57.0", "@tailwindcss/postcss": "^4", "@types/node": "^20", "@types/react": "^19", @@ -86,6 +87,7 @@ "integrity": "sha512-e7jT4DxYvIDLk1ZHmU/m/mB19rex9sv0c2ftBtjSBv+kVM/902eh0fINUzD7UwLLNR+jU585GxUJ8/EBfAM5fw==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "@babel/code-frame": "^7.27.1", "@babel/generator": "^7.28.5", @@ -309,6 +311,7 @@ "resolved": "https://registry.npmjs.org/@coinbase/wallet-sdk/-/wallet-sdk-4.3.7.tgz", "integrity": "sha512-z6e5XDw6EF06RqkeyEa+qD0dZ2ZbLci99vx3zwDY//XO8X7166tqKJrR2XlQnzVmtcUuJtCd5fCvr9Cu6zzX7w==", "license": "Apache-2.0", + "peer": true, "dependencies": { "@noble/hashes": "^1.4.0", "clsx": "^1.2.1", @@ -1145,7 +1148,6 @@ "integrity": "sha512-p2+YcF+JE67SRX3mMlJ1TKCSTsgyOVdAwd/nxp3NuV1+Cb6MWALbN6nT7Ld4tpmYofcE5kcaSY1YBB9erY+6fw==", "license": "BSD-3-Clause", "optional": true, - "peer": true, "peerDependencies": { "@types/react": "17 || 18 || 19" } @@ -1375,6 +1377,7 @@ "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-4.1.0.tgz", "integrity": "sha512-uKm5PU+MHTootlWEY+mZ4vvXoCn4fLQxT9dSc1sXVMSFkINTJVN8cAQROpwcKm8bJ/c7rgZVIBWzH5T78sNZZw==", "license": "MIT", + "peer": true, "dependencies": { "node-fetch": "^2.7.0" } @@ -1559,7 +1562,6 @@ "integrity": "sha512-JEW4DEtBzfe8HvUYecLU9e6+XJnKDlUAIve8FvPzF3Kzs6Xo/KuZkZJsDH0wJXl/qEZbeeE7edxDNY3kMs39hQ==", "license": "ISC", "optional": true, - "peer": true, "engines": { "node": ">= 18" } @@ -1726,6 +1728,7 @@ "resolved": "https://registry.npmjs.org/@noble/ciphers/-/ciphers-1.3.0.tgz", "integrity": "sha512-2I0gnIVPtfnMw9ee9h1dJG7tp81+8Ob3OJb3Mv37rx5L40/b0i7djjCVvGOVqc9AEIQyvyu1i6ypKdFw8R8gQw==", "license": "MIT", + "peer": true, "engines": { "node": "^14.21.3 || >=16" }, @@ -1824,11 +1827,27 @@ "integrity": "sha512-JcvQkZxvcX2jK+QCclm8+e8HXqtdFW9xV4/kk2aL9Y3dJA2oQVt+pzbv1orkumz3rfx4K9mn9fDoMr1He1yr7Q==", "license": "MIT", "optional": true, - "peer": true, "dependencies": { "lit": "^3" } }, + "node_modules/@playwright/test": { + "version": "1.57.0", + "resolved": "https://registry.npmjs.org/@playwright/test/-/test-1.57.0.tgz", + "integrity": "sha512-6TyEnHgd6SArQO8UO2OMTxshln3QMWBtPGrOCgs3wVEmQmwyuNtB10IZMfmYDE0riwNR1cu4q+pPcxMVtaG3TA==", + "devOptional": true, + "license": "Apache-2.0", + "peer": true, + "dependencies": { + "playwright": "1.57.0" + }, + "bin": { + "playwright": "cli.js" + }, + "engines": { + "node": ">=18" + } + }, "node_modules/@react-three/drei": { "version": "10.7.7", "resolved": "https://registry.npmjs.org/@react-three/drei/-/drei-10.7.7.tgz", @@ -1874,6 +1893,7 @@ "resolved": "https://registry.npmjs.org/@react-three/fiber/-/fiber-9.4.2.tgz", "integrity": "sha512-H4B4+FDNHpvIb4FmphH4ubxOfX5bxmfOw0+3pkQwR9u9wFiyMS7wUDkNn0m4RqQuiLWeia9jfN1eBvtyAVGEog==", "license": "MIT", + "peer": true, "dependencies": { "@babel/runtime": "^7.17.8", "@types/react-reconciler": "^0.32.0", @@ -1932,7 +1952,6 @@ "hasInstallScript": true, "license": "Apache-2.0", "optional": true, - "peer": true, "dependencies": { "@reown/appkit-common": "1.8.1", "@reown/appkit-controllers": "1.8.1", @@ -1958,7 +1977,6 @@ "integrity": "sha512-VhhMnmD7aUAHGgCLbkrlM3Ek99aIMZiduPqExNe/6L/sORrPPoChnBqjVEBP2g4bErVU2BFIFhxo5oIVuP0fTg==", "license": "Apache-2.0", "optional": true, - "peer": true, "dependencies": { "big.js": "6.2.2", "dayjs": "1.11.13", @@ -1970,8 +1988,7 @@ "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.13.tgz", "integrity": "sha512-oaMBel6gjolK862uaPQOVTA7q3TZhuSvuMQAAglQDOWYO9A91IrAOUJEyKVlqJlHE0vq5p5UXxzdPfMH/x6xNg==", "license": "MIT", - "optional": true, - "peer": true + "optional": true }, "node_modules/@reown/appkit-controllers": { "version": "1.8.1", @@ -1979,7 +1996,6 @@ "integrity": "sha512-k720RMJbXhTFrSsAZrvgu+WAF3Sk8d5iHXo1wKmfNXxzpXeF7f5DlWijye/r7nMVXQGbtZFkjTm54ti7+5UfjQ==", "license": "Apache-2.0", "optional": true, - "peer": true, "dependencies": { "@reown/appkit-common": "1.8.1", "@reown/appkit-wallet": "1.8.1", @@ -1994,7 +2010,6 @@ "integrity": "sha512-j84kjAbzEnQHaSIhRPUmB3/eVXu2k3dKPl2LOrR8fSOIL+89U+7lV117EWHtq/GHM3ReGHM46iRBdZfpc4HRUQ==", "license": "MIT", "optional": true, - "peer": true, "dependencies": { "@noble/hashes": "1.7.0" }, @@ -2011,7 +2026,6 @@ "integrity": "sha512-HXydb0DgzTpDPwbVeDGCG1gIu7X6+AuU6Zl6av/E/KG8LMsvPntvq+w17CHRpKBmN6Ybdrt1eP3k4cj8DJa78w==", "license": "MIT", "optional": true, - "peer": true, "engines": { "node": "^14.21.3 || >=16" }, @@ -2025,7 +2039,6 @@ "integrity": "sha512-q/Au5Ne3g4R+q4GvHR5cvRd3+ha00QZCZiCs058lmy+eDbiZd0YsautvTPJ5a2guD6UaS1k/w5e1JHgixdcgLA==", "license": "Apache-2.0", "optional": true, - "peer": true, "dependencies": { "@walletconnect/heartbeat": "1.2.2", "@walletconnect/jsonrpc-provider": "1.0.14", @@ -2055,7 +2068,6 @@ "integrity": "sha512-qFw+a9uRz26jRCDgL7Q5TA9qYIgcNY8jpJzI1zAWNZ8i7mQjaijRnWFKsCHAU9CyGjvt6RKrRXyFtFOpWTVmCQ==", "license": "MIT", "optional": true, - "peer": true, "dependencies": { "@noble/curves": "1.8.0", "@noble/hashes": "1.7.0", @@ -2070,7 +2082,6 @@ "integrity": "sha512-HXydb0DgzTpDPwbVeDGCG1gIu7X6+AuU6Zl6av/E/KG8LMsvPntvq+w17CHRpKBmN6Ybdrt1eP3k4cj8DJa78w==", "license": "MIT", "optional": true, - "peer": true, "engines": { "node": "^14.21.3 || >=16" }, @@ -2085,7 +2096,6 @@ "deprecated": "Reliability and performance improvements. See: https://github.com/WalletConnect/walletconnect-monorepo/releases", "license": "Apache-2.0", "optional": true, - "peer": true, "dependencies": { "@walletconnect/core": "2.21.7", "@walletconnect/events": "1.0.1", @@ -2104,7 +2114,6 @@ "integrity": "sha512-kyGnFje4Iq+XGkZZcSoAIrJWBE4BeghVW4O7n9e1MhUyeOOtO55M/kcqceNGYrvwjHvdN+Kf+aoLnKC0zKlpbQ==", "license": "Apache-2.0", "optional": true, - "peer": true, "dependencies": { "@walletconnect/events": "1.0.1", "@walletconnect/heartbeat": "1.2.2", @@ -2121,7 +2130,6 @@ "deprecated": "Reliability and performance improvements. See: https://github.com/WalletConnect/walletconnect-monorepo/releases", "license": "Apache-2.0", "optional": true, - "peer": true, "dependencies": { "@walletconnect/events": "1.0.1", "@walletconnect/jsonrpc-http-connection": "1.0.8", @@ -2143,7 +2151,6 @@ "integrity": "sha512-qyaclTgcFf9AwVuoV8CLLg8wfH3nX7yZdpylNkDqCpS7wawQL9zmFFTaGgma8sQrCsd3Sd9jUIymcpRvCJnSTw==", "license": "Apache-2.0", "optional": true, - "peer": true, "dependencies": { "@msgpack/msgpack": "3.1.2", "@noble/ciphers": "1.3.0", @@ -2173,7 +2180,6 @@ "integrity": "sha512-HxngEd2XUcg9xi20JkwlLCtYwfoFw4JGkuZpT+WlsPD4gB/cxkvTD8fSsoAnphGZhFdZYKeQIPCuFlWPm1uE0g==", "license": "MIT", "optional": true, - "peer": true, "dependencies": { "@noble/hashes": "1.8.0" }, @@ -2196,7 +2202,6 @@ ], "license": "MIT", "optional": true, - "peer": true, "dependencies": { "@noble/curves": "1.9.1", "@noble/hashes": "1.8.0", @@ -2222,7 +2227,6 @@ "integrity": "sha512-k11yZxZg+t+gWvBbIswW0yoJlu8cHOC7dhunwOzoWH/mXGBiYyR4YY6hAEK/3EUs4UpB8la1RfdRpeGsFHkWsA==", "license": "MIT", "optional": true, - "peer": true, "dependencies": { "@noble/hashes": "1.8.0" }, @@ -2239,7 +2243,6 @@ "integrity": "sha512-ZeiI6h3GnW06uYDLx0etQtX/p8E24UaHHBj57RSjK7YBFe7iuVn07EDpOeP451D06sF27VOz9JJPlIKJmXgkEg==", "license": "MIT", "optional": true, - "peer": true, "funding": { "url": "https://github.com/sponsors/wevm" }, @@ -2261,8 +2264,7 @@ "resolved": "https://registry.npmjs.org/base-x/-/base-x-5.0.1.tgz", "integrity": "sha512-M7uio8Zt++eg3jPj+rHMfCC+IuygQHHCOU+IYsVtik6FWjuYpVt/+MRKcgsAMHh8mMFAwnB+Bs+mTrFiXjMzKg==", "license": "MIT", - "optional": true, - "peer": true + "optional": true }, "node_modules/@reown/appkit-controllers/node_modules/bs58": { "version": "6.0.0", @@ -2270,7 +2272,6 @@ "integrity": "sha512-PD0wEnEYg6ijszw/u8s+iI3H17cTymlrwkKhDhPZq+Sokl3AU4htyBFTjAeNAlCCmg0f53g6ih3jATyCKftTfw==", "license": "MIT", "optional": true, - "peer": true, "dependencies": { "base-x": "^5.0.0" } @@ -2287,7 +2288,6 @@ ], "license": "MIT", "optional": true, - "peer": true, "dependencies": { "@adraffy/ens-normalize": "^1.10.1", "@noble/ciphers": "^1.3.0", @@ -2312,8 +2312,7 @@ "resolved": "https://registry.npmjs.org/proxy-compare/-/proxy-compare-3.0.1.tgz", "integrity": "sha512-V9plBAt3qjMlS1+nC8771KNf6oJ12gExvaxnNzN/9yVRLdTv/lc+oJlnSzrdYDAvBfTStPCoiaCOTmTs0adv7Q==", "license": "MIT", - "optional": true, - "peer": true + "optional": true }, "node_modules/@reown/appkit-controllers/node_modules/uint8arrays": { "version": "3.1.1", @@ -2321,7 +2320,6 @@ "integrity": "sha512-+QJa8QRnbdXVpHYjLoTpJIdCTiw9Ir62nocClWuXIq2JIh4Uta0cQsTSpFL678p2CN8B+XSApwcU+pQEqVpKWg==", "license": "MIT", "optional": true, - "peer": true, "dependencies": { "multiformats": "^9.4.2" } @@ -2332,7 +2330,6 @@ "integrity": "sha512-vsh1Ixu5mT0pJFZm+Jspvhga5GzHUTYv0/+Th203pLfh3/wbHwxhu/Z2OkZDXIgHfjnjBns7SN9HNcbDvPmaGw==", "license": "MIT", "optional": true, - "peer": true, "dependencies": { "proxy-compare": "^3.0.1" }, @@ -2358,7 +2355,6 @@ "integrity": "sha512-DMricUmwGZUVr++AEAe2uiVM7UoO9MAVZMDu05UQOaUII0lp+zOzLLU4Xqh/JvTqklB1T4uELaaPBKyjE1r4fQ==", "license": "MIT", "optional": true, - "peer": true, "engines": { "node": ">=10.0.0" }, @@ -2381,7 +2377,6 @@ "integrity": "sha512-5NM01g0ygtiGsPUR9N/GaBwyAtZir1Bg+iHZLUNrWOOS36dycEv2bOY1YvrCNgC9sWkQIMr4wiyukiybk3BANQ==", "license": "Apache-2.0", "optional": true, - "peer": true, "dependencies": { "@reown/appkit-common": "1.8.1", "@reown/appkit-controllers": "1.8.1", @@ -2396,8 +2391,7 @@ "resolved": "https://registry.npmjs.org/proxy-compare/-/proxy-compare-3.0.1.tgz", "integrity": "sha512-V9plBAt3qjMlS1+nC8771KNf6oJ12gExvaxnNzN/9yVRLdTv/lc+oJlnSzrdYDAvBfTStPCoiaCOTmTs0adv7Q==", "license": "MIT", - "optional": true, - "peer": true + "optional": true }, "node_modules/@reown/appkit-pay/node_modules/valtio": { "version": "2.1.5", @@ -2405,7 +2399,6 @@ "integrity": "sha512-vsh1Ixu5mT0pJFZm+Jspvhga5GzHUTYv0/+Th203pLfh3/wbHwxhu/Z2OkZDXIgHfjnjBns7SN9HNcbDvPmaGw==", "license": "MIT", "optional": true, - "peer": true, "dependencies": { "proxy-compare": "^3.0.1" }, @@ -2431,7 +2424,6 @@ "integrity": "sha512-jr3m9x1yFyU2W7re551p6mxd5YpxCwfil/bG2ZrFADFwwDXLEYyz1MvXnP2ZJ57WNyFelm9kwB8xFQLqoZwZ8A==", "license": "Apache-2.0", "optional": true, - "peer": true, "dependencies": { "buffer": "6.0.3" } @@ -2442,7 +2434,6 @@ "integrity": "sha512-NrjlEU69+yePbJKrnFl7k7cynl0nthQ4E84POL3TVyuLh894KjSzfHkqmP603R49sYVzuczP3JxMRjsrXXQ2vw==", "license": "Apache-2.0", "optional": true, - "peer": true, "dependencies": { "@reown/appkit-common": "1.8.1", "@reown/appkit-controllers": "1.8.1", @@ -2458,7 +2449,6 @@ "integrity": "sha512-iWY1zufKj+gDjQ7zxgnFBj+qJ+9gvN0mJWt5r0P1HYemiIV3VP7HUTxgOqTqTW3ggs4RzQy2sVY0Pli7V6m+1Q==", "license": "Apache-2.0", "optional": true, - "peer": true, "dependencies": { "@phosphor-icons/webcomponents": "2.1.5", "@reown/appkit-common": "1.8.1", @@ -2474,7 +2464,6 @@ "integrity": "sha512-WK+Fy17Qv4Vdx/L9gvCoBd3oikONIcrfkGmstk83+lQcM0krNHLPEA2gWytBOtetW+1bt+IwTaF2m4PKCrgIDw==", "license": "Apache-2.0", "optional": true, - "peer": true, "dependencies": { "@reown/appkit-common": "1.8.1", "@reown/appkit-controllers": "1.8.1", @@ -2496,7 +2485,6 @@ "integrity": "sha512-j84kjAbzEnQHaSIhRPUmB3/eVXu2k3dKPl2LOrR8fSOIL+89U+7lV117EWHtq/GHM3ReGHM46iRBdZfpc4HRUQ==", "license": "MIT", "optional": true, - "peer": true, "dependencies": { "@noble/hashes": "1.7.0" }, @@ -2513,7 +2501,6 @@ "integrity": "sha512-HXydb0DgzTpDPwbVeDGCG1gIu7X6+AuU6Zl6av/E/KG8LMsvPntvq+w17CHRpKBmN6Ybdrt1eP3k4cj8DJa78w==", "license": "MIT", "optional": true, - "peer": true, "engines": { "node": "^14.21.3 || >=16" }, @@ -2527,7 +2514,6 @@ "integrity": "sha512-q/Au5Ne3g4R+q4GvHR5cvRd3+ha00QZCZiCs058lmy+eDbiZd0YsautvTPJ5a2guD6UaS1k/w5e1JHgixdcgLA==", "license": "Apache-2.0", "optional": true, - "peer": true, "dependencies": { "@walletconnect/heartbeat": "1.2.2", "@walletconnect/jsonrpc-provider": "1.0.14", @@ -2557,7 +2543,6 @@ "integrity": "sha512-qFw+a9uRz26jRCDgL7Q5TA9qYIgcNY8jpJzI1zAWNZ8i7mQjaijRnWFKsCHAU9CyGjvt6RKrRXyFtFOpWTVmCQ==", "license": "MIT", "optional": true, - "peer": true, "dependencies": { "@noble/curves": "1.8.0", "@noble/hashes": "1.7.0", @@ -2572,7 +2557,6 @@ "integrity": "sha512-HXydb0DgzTpDPwbVeDGCG1gIu7X6+AuU6Zl6av/E/KG8LMsvPntvq+w17CHRpKBmN6Ybdrt1eP3k4cj8DJa78w==", "license": "MIT", "optional": true, - "peer": true, "engines": { "node": "^14.21.3 || >=16" }, @@ -2587,7 +2571,6 @@ "deprecated": "Reliability and performance improvements. See: https://github.com/WalletConnect/walletconnect-monorepo/releases", "license": "Apache-2.0", "optional": true, - "peer": true, "dependencies": { "@walletconnect/core": "2.21.7", "@walletconnect/events": "1.0.1", @@ -2606,7 +2589,6 @@ "integrity": "sha512-kyGnFje4Iq+XGkZZcSoAIrJWBE4BeghVW4O7n9e1MhUyeOOtO55M/kcqceNGYrvwjHvdN+Kf+aoLnKC0zKlpbQ==", "license": "Apache-2.0", "optional": true, - "peer": true, "dependencies": { "@walletconnect/events": "1.0.1", "@walletconnect/heartbeat": "1.2.2", @@ -2623,7 +2605,6 @@ "deprecated": "Reliability and performance improvements. See: https://github.com/WalletConnect/walletconnect-monorepo/releases", "license": "Apache-2.0", "optional": true, - "peer": true, "dependencies": { "@walletconnect/events": "1.0.1", "@walletconnect/jsonrpc-http-connection": "1.0.8", @@ -2645,7 +2626,6 @@ "integrity": "sha512-qyaclTgcFf9AwVuoV8CLLg8wfH3nX7yZdpylNkDqCpS7wawQL9zmFFTaGgma8sQrCsd3Sd9jUIymcpRvCJnSTw==", "license": "Apache-2.0", "optional": true, - "peer": true, "dependencies": { "@msgpack/msgpack": "3.1.2", "@noble/ciphers": "1.3.0", @@ -2675,7 +2655,6 @@ "integrity": "sha512-HxngEd2XUcg9xi20JkwlLCtYwfoFw4JGkuZpT+WlsPD4gB/cxkvTD8fSsoAnphGZhFdZYKeQIPCuFlWPm1uE0g==", "license": "MIT", "optional": true, - "peer": true, "dependencies": { "@noble/hashes": "1.8.0" }, @@ -2698,7 +2677,6 @@ ], "license": "MIT", "optional": true, - "peer": true, "dependencies": { "@noble/curves": "1.9.1", "@noble/hashes": "1.8.0", @@ -2724,7 +2702,6 @@ "integrity": "sha512-k11yZxZg+t+gWvBbIswW0yoJlu8cHOC7dhunwOzoWH/mXGBiYyR4YY6hAEK/3EUs4UpB8la1RfdRpeGsFHkWsA==", "license": "MIT", "optional": true, - "peer": true, "dependencies": { "@noble/hashes": "1.8.0" }, @@ -2741,7 +2718,6 @@ "integrity": "sha512-ZeiI6h3GnW06uYDLx0etQtX/p8E24UaHHBj57RSjK7YBFe7iuVn07EDpOeP451D06sF27VOz9JJPlIKJmXgkEg==", "license": "MIT", "optional": true, - "peer": true, "funding": { "url": "https://github.com/sponsors/wevm" }, @@ -2763,8 +2739,7 @@ "resolved": "https://registry.npmjs.org/base-x/-/base-x-5.0.1.tgz", "integrity": "sha512-M7uio8Zt++eg3jPj+rHMfCC+IuygQHHCOU+IYsVtik6FWjuYpVt/+MRKcgsAMHh8mMFAwnB+Bs+mTrFiXjMzKg==", "license": "MIT", - "optional": true, - "peer": true + "optional": true }, "node_modules/@reown/appkit-utils/node_modules/bs58": { "version": "6.0.0", @@ -2772,7 +2747,6 @@ "integrity": "sha512-PD0wEnEYg6ijszw/u8s+iI3H17cTymlrwkKhDhPZq+Sokl3AU4htyBFTjAeNAlCCmg0f53g6ih3jATyCKftTfw==", "license": "MIT", "optional": true, - "peer": true, "dependencies": { "base-x": "^5.0.0" } @@ -2789,7 +2763,6 @@ ], "license": "MIT", "optional": true, - "peer": true, "dependencies": { "@adraffy/ens-normalize": "^1.10.1", "@noble/ciphers": "^1.3.0", @@ -2814,8 +2787,7 @@ "resolved": "https://registry.npmjs.org/proxy-compare/-/proxy-compare-3.0.1.tgz", "integrity": "sha512-V9plBAt3qjMlS1+nC8771KNf6oJ12gExvaxnNzN/9yVRLdTv/lc+oJlnSzrdYDAvBfTStPCoiaCOTmTs0adv7Q==", "license": "MIT", - "optional": true, - "peer": true + "optional": true }, "node_modules/@reown/appkit-utils/node_modules/uint8arrays": { "version": "3.1.1", @@ -2823,7 +2795,6 @@ "integrity": "sha512-+QJa8QRnbdXVpHYjLoTpJIdCTiw9Ir62nocClWuXIq2JIh4Uta0cQsTSpFL678p2CN8B+XSApwcU+pQEqVpKWg==", "license": "MIT", "optional": true, - "peer": true, "dependencies": { "multiformats": "^9.4.2" } @@ -2834,7 +2805,6 @@ "integrity": "sha512-vsh1Ixu5mT0pJFZm+Jspvhga5GzHUTYv0/+Th203pLfh3/wbHwxhu/Z2OkZDXIgHfjnjBns7SN9HNcbDvPmaGw==", "license": "MIT", "optional": true, - "peer": true, "dependencies": { "proxy-compare": "^3.0.1" }, @@ -2860,7 +2830,6 @@ "integrity": "sha512-DMricUmwGZUVr++AEAe2uiVM7UoO9MAVZMDu05UQOaUII0lp+zOzLLU4Xqh/JvTqklB1T4uELaaPBKyjE1r4fQ==", "license": "MIT", "optional": true, - "peer": true, "engines": { "node": ">=10.0.0" }, @@ -2883,7 +2852,6 @@ "integrity": "sha512-luqzVqQdY+WlxFTQsH0RK53dAYhNfIyyimSkkIcNCnMIWYfq2xseeaKeSwViF+af1ae7tYEqZdq/6ohbMizPaw==", "license": "Apache-2.0", "optional": true, - "peer": true, "dependencies": { "@reown/appkit-common": "1.8.1", "@reown/appkit-polyfills": "1.8.1", @@ -2897,7 +2865,6 @@ "integrity": "sha512-iC+8Io04lddc+mVqQ9AZ7OQ2MrUKGN+oIQyq1vemgt46jwCwLfhq7/pwnBnNXXXZb8VTVLKwp9EDkx+ryxIWmg==", "license": "MIT", "optional": true, - "peer": true, "funding": { "url": "https://github.com/sponsors/colinhacks" } @@ -2908,7 +2875,6 @@ "integrity": "sha512-j84kjAbzEnQHaSIhRPUmB3/eVXu2k3dKPl2LOrR8fSOIL+89U+7lV117EWHtq/GHM3ReGHM46iRBdZfpc4HRUQ==", "license": "MIT", "optional": true, - "peer": true, "dependencies": { "@noble/hashes": "1.7.0" }, @@ -2925,7 +2891,6 @@ "integrity": "sha512-HXydb0DgzTpDPwbVeDGCG1gIu7X6+AuU6Zl6av/E/KG8LMsvPntvq+w17CHRpKBmN6Ybdrt1eP3k4cj8DJa78w==", "license": "MIT", "optional": true, - "peer": true, "engines": { "node": "^14.21.3 || >=16" }, @@ -2939,7 +2904,6 @@ "integrity": "sha512-q/Au5Ne3g4R+q4GvHR5cvRd3+ha00QZCZiCs058lmy+eDbiZd0YsautvTPJ5a2guD6UaS1k/w5e1JHgixdcgLA==", "license": "Apache-2.0", "optional": true, - "peer": true, "dependencies": { "@walletconnect/heartbeat": "1.2.2", "@walletconnect/jsonrpc-provider": "1.0.14", @@ -2969,7 +2933,6 @@ "integrity": "sha512-qFw+a9uRz26jRCDgL7Q5TA9qYIgcNY8jpJzI1zAWNZ8i7mQjaijRnWFKsCHAU9CyGjvt6RKrRXyFtFOpWTVmCQ==", "license": "MIT", "optional": true, - "peer": true, "dependencies": { "@noble/curves": "1.8.0", "@noble/hashes": "1.7.0", @@ -2984,7 +2947,6 @@ "integrity": "sha512-HXydb0DgzTpDPwbVeDGCG1gIu7X6+AuU6Zl6av/E/KG8LMsvPntvq+w17CHRpKBmN6Ybdrt1eP3k4cj8DJa78w==", "license": "MIT", "optional": true, - "peer": true, "engines": { "node": "^14.21.3 || >=16" }, @@ -2999,7 +2961,6 @@ "deprecated": "Reliability and performance improvements. See: https://github.com/WalletConnect/walletconnect-monorepo/releases", "license": "Apache-2.0", "optional": true, - "peer": true, "dependencies": { "@walletconnect/core": "2.21.7", "@walletconnect/events": "1.0.1", @@ -3018,7 +2979,6 @@ "integrity": "sha512-kyGnFje4Iq+XGkZZcSoAIrJWBE4BeghVW4O7n9e1MhUyeOOtO55M/kcqceNGYrvwjHvdN+Kf+aoLnKC0zKlpbQ==", "license": "Apache-2.0", "optional": true, - "peer": true, "dependencies": { "@walletconnect/events": "1.0.1", "@walletconnect/heartbeat": "1.2.2", @@ -3035,7 +2995,6 @@ "deprecated": "Reliability and performance improvements. See: https://github.com/WalletConnect/walletconnect-monorepo/releases", "license": "Apache-2.0", "optional": true, - "peer": true, "dependencies": { "@walletconnect/events": "1.0.1", "@walletconnect/jsonrpc-http-connection": "1.0.8", @@ -3057,7 +3016,6 @@ "integrity": "sha512-qyaclTgcFf9AwVuoV8CLLg8wfH3nX7yZdpylNkDqCpS7wawQL9zmFFTaGgma8sQrCsd3Sd9jUIymcpRvCJnSTw==", "license": "Apache-2.0", "optional": true, - "peer": true, "dependencies": { "@msgpack/msgpack": "3.1.2", "@noble/ciphers": "1.3.0", @@ -3087,7 +3045,6 @@ "integrity": "sha512-HxngEd2XUcg9xi20JkwlLCtYwfoFw4JGkuZpT+WlsPD4gB/cxkvTD8fSsoAnphGZhFdZYKeQIPCuFlWPm1uE0g==", "license": "MIT", "optional": true, - "peer": true, "dependencies": { "@noble/hashes": "1.8.0" }, @@ -3110,7 +3067,6 @@ ], "license": "MIT", "optional": true, - "peer": true, "dependencies": { "@noble/curves": "1.9.1", "@noble/hashes": "1.8.0", @@ -3136,7 +3092,6 @@ "integrity": "sha512-k11yZxZg+t+gWvBbIswW0yoJlu8cHOC7dhunwOzoWH/mXGBiYyR4YY6hAEK/3EUs4UpB8la1RfdRpeGsFHkWsA==", "license": "MIT", "optional": true, - "peer": true, "dependencies": { "@noble/hashes": "1.8.0" }, @@ -3153,7 +3108,6 @@ "integrity": "sha512-ZeiI6h3GnW06uYDLx0etQtX/p8E24UaHHBj57RSjK7YBFe7iuVn07EDpOeP451D06sF27VOz9JJPlIKJmXgkEg==", "license": "MIT", "optional": true, - "peer": true, "funding": { "url": "https://github.com/sponsors/wevm" }, @@ -3175,8 +3129,7 @@ "resolved": "https://registry.npmjs.org/base-x/-/base-x-5.0.1.tgz", "integrity": "sha512-M7uio8Zt++eg3jPj+rHMfCC+IuygQHHCOU+IYsVtik6FWjuYpVt/+MRKcgsAMHh8mMFAwnB+Bs+mTrFiXjMzKg==", "license": "MIT", - "optional": true, - "peer": true + "optional": true }, "node_modules/@reown/appkit/node_modules/bs58": { "version": "6.0.0", @@ -3184,7 +3137,6 @@ "integrity": "sha512-PD0wEnEYg6ijszw/u8s+iI3H17cTymlrwkKhDhPZq+Sokl3AU4htyBFTjAeNAlCCmg0f53g6ih3jATyCKftTfw==", "license": "MIT", "optional": true, - "peer": true, "dependencies": { "base-x": "^5.0.0" } @@ -3201,7 +3153,6 @@ ], "license": "MIT", "optional": true, - "peer": true, "dependencies": { "@adraffy/ens-normalize": "^1.10.1", "@noble/ciphers": "^1.3.0", @@ -3226,8 +3177,7 @@ "resolved": "https://registry.npmjs.org/proxy-compare/-/proxy-compare-3.0.1.tgz", "integrity": "sha512-V9plBAt3qjMlS1+nC8771KNf6oJ12gExvaxnNzN/9yVRLdTv/lc+oJlnSzrdYDAvBfTStPCoiaCOTmTs0adv7Q==", "license": "MIT", - "optional": true, - "peer": true + "optional": true }, "node_modules/@reown/appkit/node_modules/semver": { "version": "7.7.2", @@ -3235,7 +3185,6 @@ "integrity": "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==", "license": "ISC", "optional": true, - "peer": true, "bin": { "semver": "bin/semver.js" }, @@ -3249,7 +3198,6 @@ "integrity": "sha512-+QJa8QRnbdXVpHYjLoTpJIdCTiw9Ir62nocClWuXIq2JIh4Uta0cQsTSpFL678p2CN8B+XSApwcU+pQEqVpKWg==", "license": "MIT", "optional": true, - "peer": true, "dependencies": { "multiformats": "^9.4.2" } @@ -3260,7 +3208,6 @@ "integrity": "sha512-vsh1Ixu5mT0pJFZm+Jspvhga5GzHUTYv0/+Th203pLfh3/wbHwxhu/Z2OkZDXIgHfjnjBns7SN9HNcbDvPmaGw==", "license": "MIT", "optional": true, - "peer": true, "dependencies": { "proxy-compare": "^3.0.1" }, @@ -3286,7 +3233,6 @@ "integrity": "sha512-DMricUmwGZUVr++AEAe2uiVM7UoO9MAVZMDu05UQOaUII0lp+zOzLLU4Xqh/JvTqklB1T4uELaaPBKyjE1r4fQ==", "license": "MIT", "optional": true, - "peer": true, "engines": { "node": ">=10.0.0" }, @@ -3811,6 +3757,7 @@ "resolved": "https://registry.npmjs.org/@tanstack/react-query/-/react-query-5.90.12.tgz", "integrity": "sha512-graRZspg7EoEaw0a8faiUASCyJrqjKPdqJ9EwuDRUF9mEYJ1YPczI9H+/agJ0mOJkPCJDk0lsz5QTrLZ/jQ2rg==", "license": "MIT", + "peer": true, "dependencies": { "@tanstack/query-core": "5.90.12" }, @@ -3902,6 +3849,7 @@ "resolved": "https://registry.npmjs.org/@types/react/-/react-19.2.7.tgz", "integrity": "sha512-MWtvHrGZLFttgeEj28VXHxpmwYbor/ATPYbBfSFZEIRK0ecCFLl2Qo55z52Hss+UV9CRN7trSeq1zbgx7YDWWg==", "license": "MIT", + "peer": true, "dependencies": { "csstype": "^3.2.2" } @@ -3936,6 +3884,7 @@ "resolved": "https://registry.npmjs.org/@types/three/-/three-0.182.0.tgz", "integrity": "sha512-WByN9V3Sbwbe2OkWuSGyoqQO8Du6yhYaXtXLoA5FkKTUJorZ+yOHBZ35zUUPQXlAKABZmbYp5oAqpA4RBjtJ/Q==", "license": "MIT", + "peer": true, "dependencies": { "@dimforge/rapier3d-compat": "~0.12.0", "@tweenjs/tween.js": "~23.1.3", @@ -4003,6 +3952,7 @@ "integrity": "sha512-N9lBGA9o9aqb1hVMc9hzySbhKibHmB+N3IpoShyV6HyQYRGIhlrO5rQgttypi+yEeKsKI4idxC8Jw6gXKD4THA==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "@typescript-eslint/scope-manager": "8.49.0", "@typescript-eslint/types": "8.49.0", @@ -4519,6 +4469,7 @@ "resolved": "https://registry.npmjs.org/@wagmi/connectors/-/connectors-7.0.2.tgz", "integrity": "sha512-JQmFNZR/EmeAkIWgEfAsS8lrnqMjVHFEpnPgVl6wIDU58LhrWe0D1/lHxzdCyFiX3gu/rkIERrHu0BXRxkuB1A==", "license": "MIT", + "peer": true, "funding": { "url": "https://github.com/sponsors/wevm" }, @@ -4570,6 +4521,7 @@ "resolved": "https://registry.npmjs.org/@wagmi/core/-/core-3.0.0.tgz", "integrity": "sha512-wOn8jwB9GNYTdrc4CP/huf1aAhDoQ5GKl5OhxGBZx9X4qE+wReW05dTcurEc+XBl9B/ZVis2JdXVU3ZiYqyS8Q==", "license": "MIT", + "peer": true, "dependencies": { "eventemitter3": "5.0.1", "mipd": "0.0.7", @@ -4627,7 +4579,6 @@ "integrity": "sha512-DJDQhjKmSNVLKWItoKThJS+CsJQjR9AOBOirBVT1F9YpRyC9oYHE+ZnSf8y8bxUphtKqdQMPVQ2mHohYdRvDVQ==", "license": "Apache-2.0", "optional": true, - "peer": true, "engines": { "node": ">=16" } @@ -4638,7 +4589,6 @@ "integrity": "sha512-Gt8TnSlDZpAl+RWOOAB/kuvC7RpcdWAlFbHNoi4gsXsfaWa1QCT6LBcfIYTPdOZC9OVZUDwqGuGAcqZejDmHjg==", "license": "Apache-2.0", "optional": true, - "peer": true, "dependencies": { "@wallet-standard/base": "^1.1.0" }, @@ -4652,7 +4602,6 @@ "integrity": "sha512-azWSsDeUZupqK0E8V85w7toNYVm/uzLtxhNv28dvNMtUf8aKlww3DilQxP9T2HZ3z+3n0ocuRzi0nfktjsaHyw==", "license": "SEE LICENSE IN LICENSE.md", "optional": true, - "peer": true, "dependencies": { "@walletconnect/heartbeat": "1.2.2", "@walletconnect/jsonrpc-provider": "1.0.14", @@ -4682,7 +4631,6 @@ "integrity": "sha512-j84kjAbzEnQHaSIhRPUmB3/eVXu2k3dKPl2LOrR8fSOIL+89U+7lV117EWHtq/GHM3ReGHM46iRBdZfpc4HRUQ==", "license": "MIT", "optional": true, - "peer": true, "dependencies": { "@noble/hashes": "1.7.0" }, @@ -4699,7 +4647,6 @@ "integrity": "sha512-HXydb0DgzTpDPwbVeDGCG1gIu7X6+AuU6Zl6av/E/KG8LMsvPntvq+w17CHRpKBmN6Ybdrt1eP3k4cj8DJa78w==", "license": "MIT", "optional": true, - "peer": true, "engines": { "node": "^14.21.3 || >=16" }, @@ -4713,7 +4660,6 @@ "integrity": "sha512-qFw+a9uRz26jRCDgL7Q5TA9qYIgcNY8jpJzI1zAWNZ8i7mQjaijRnWFKsCHAU9CyGjvt6RKrRXyFtFOpWTVmCQ==", "license": "MIT", "optional": true, - "peer": true, "dependencies": { "@noble/curves": "1.8.0", "@noble/hashes": "1.7.0", @@ -4728,7 +4674,6 @@ "integrity": "sha512-HXydb0DgzTpDPwbVeDGCG1gIu7X6+AuU6Zl6av/E/KG8LMsvPntvq+w17CHRpKBmN6Ybdrt1eP3k4cj8DJa78w==", "license": "MIT", "optional": true, - "peer": true, "engines": { "node": "^14.21.3 || >=16" }, @@ -4742,7 +4687,6 @@ "integrity": "sha512-9oSvgxv1hE5aS+j4aHS9YgKeq50BP4iMh49tjubTW5574cBWqmt1bXfQhZddSTbq9OirwLSegl6W36itkzryBQ==", "license": "SEE LICENSE IN LICENSE.md", "optional": true, - "peer": true, "dependencies": { "@walletconnect/events": "1.0.1", "@walletconnect/heartbeat": "1.2.2", @@ -4758,7 +4702,6 @@ "integrity": "sha512-LC5hmP3uxVoMyw7Ibea1JQdE98FTb7jZie60qiaybmaIsg/ApEUosU5uCLTFRJwEWUip2p3sJTb0n/3pU+yR/Q==", "license": "SEE LICENSE IN LICENSE.md", "optional": true, - "peer": true, "dependencies": { "@msgpack/msgpack": "3.1.2", "@noble/ciphers": "1.3.0", @@ -4787,7 +4730,6 @@ "integrity": "sha512-gbKGcRUYIjA3/zCCNaWDciTMFI0dCkvou3TL8Zmy5Nc7sJ47a0jtOeZoTaMxkuqRo9cRhjOdZJXegxYE5FN/xw==", "license": "MIT", "optional": true, - "peer": true, "dependencies": { "@noble/hashes": "1.8.0" }, @@ -4803,8 +4745,7 @@ "resolved": "https://registry.npmjs.org/base-x/-/base-x-5.0.1.tgz", "integrity": "sha512-M7uio8Zt++eg3jPj+rHMfCC+IuygQHHCOU+IYsVtik6FWjuYpVt/+MRKcgsAMHh8mMFAwnB+Bs+mTrFiXjMzKg==", "license": "MIT", - "optional": true, - "peer": true + "optional": true }, "node_modules/@walletconnect/core/node_modules/bs58": { "version": "6.0.0", @@ -4812,7 +4753,6 @@ "integrity": "sha512-PD0wEnEYg6ijszw/u8s+iI3H17cTymlrwkKhDhPZq+Sokl3AU4htyBFTjAeNAlCCmg0f53g6ih3jATyCKftTfw==", "license": "MIT", "optional": true, - "peer": true, "dependencies": { "base-x": "^5.0.0" } @@ -4829,7 +4769,6 @@ ], "license": "MIT", "optional": true, - "peer": true, "dependencies": { "@adraffy/ens-normalize": "^1.11.0", "@noble/ciphers": "^1.3.0", @@ -4855,7 +4794,6 @@ "integrity": "sha512-k11yZxZg+t+gWvBbIswW0yoJlu8cHOC7dhunwOzoWH/mXGBiYyR4YY6hAEK/3EUs4UpB8la1RfdRpeGsFHkWsA==", "license": "MIT", "optional": true, - "peer": true, "dependencies": { "@noble/hashes": "1.8.0" }, @@ -4872,7 +4810,6 @@ "integrity": "sha512-+QJa8QRnbdXVpHYjLoTpJIdCTiw9Ir62nocClWuXIq2JIh4Uta0cQsTSpFL678p2CN8B+XSApwcU+pQEqVpKWg==", "license": "MIT", "optional": true, - "peer": true, "dependencies": { "multiformats": "^9.4.2" } @@ -4898,7 +4835,6 @@ "integrity": "sha512-QhsZmrMKReR7YW6QB8O3c0YTQgeK/U8I+/nbbp6W37HVx2OcWMfdcGuXd06fgtP3YzEnVr0l6T9CAtAPKSU4cg==", "license": "SEE LICENSE IN LICENSE.md", "optional": true, - "peer": true, "dependencies": { "@reown/appkit": "1.8.1", "@walletconnect/jsonrpc-http-connection": "1.0.8", @@ -4919,7 +4855,6 @@ "integrity": "sha512-gbKGcRUYIjA3/zCCNaWDciTMFI0dCkvou3TL8Zmy5Nc7sJ47a0jtOeZoTaMxkuqRo9cRhjOdZJXegxYE5FN/xw==", "license": "MIT", "optional": true, - "peer": true, "dependencies": { "@noble/hashes": "1.8.0" }, @@ -4936,7 +4871,6 @@ "integrity": "sha512-qFw+a9uRz26jRCDgL7Q5TA9qYIgcNY8jpJzI1zAWNZ8i7mQjaijRnWFKsCHAU9CyGjvt6RKrRXyFtFOpWTVmCQ==", "license": "MIT", "optional": true, - "peer": true, "dependencies": { "@noble/curves": "1.8.0", "@noble/hashes": "1.7.0", @@ -4951,7 +4885,6 @@ "integrity": "sha512-j84kjAbzEnQHaSIhRPUmB3/eVXu2k3dKPl2LOrR8fSOIL+89U+7lV117EWHtq/GHM3ReGHM46iRBdZfpc4HRUQ==", "license": "MIT", "optional": true, - "peer": true, "dependencies": { "@noble/hashes": "1.7.0" }, @@ -4968,7 +4901,6 @@ "integrity": "sha512-HXydb0DgzTpDPwbVeDGCG1gIu7X6+AuU6Zl6av/E/KG8LMsvPntvq+w17CHRpKBmN6Ybdrt1eP3k4cj8DJa78w==", "license": "MIT", "optional": true, - "peer": true, "engines": { "node": "^14.21.3 || >=16" }, @@ -4982,7 +4914,6 @@ "integrity": "sha512-9oSvgxv1hE5aS+j4aHS9YgKeq50BP4iMh49tjubTW5574cBWqmt1bXfQhZddSTbq9OirwLSegl6W36itkzryBQ==", "license": "SEE LICENSE IN LICENSE.md", "optional": true, - "peer": true, "dependencies": { "@walletconnect/events": "1.0.1", "@walletconnect/heartbeat": "1.2.2", @@ -4998,7 +4929,6 @@ "integrity": "sha512-LC5hmP3uxVoMyw7Ibea1JQdE98FTb7jZie60qiaybmaIsg/ApEUosU5uCLTFRJwEWUip2p3sJTb0n/3pU+yR/Q==", "license": "SEE LICENSE IN LICENSE.md", "optional": true, - "peer": true, "dependencies": { "@msgpack/msgpack": "3.1.2", "@noble/ciphers": "1.3.0", @@ -5026,8 +4956,7 @@ "resolved": "https://registry.npmjs.org/base-x/-/base-x-5.0.1.tgz", "integrity": "sha512-M7uio8Zt++eg3jPj+rHMfCC+IuygQHHCOU+IYsVtik6FWjuYpVt/+MRKcgsAMHh8mMFAwnB+Bs+mTrFiXjMzKg==", "license": "MIT", - "optional": true, - "peer": true + "optional": true }, "node_modules/@walletconnect/ethereum-provider/node_modules/bs58": { "version": "6.0.0", @@ -5035,7 +4964,6 @@ "integrity": "sha512-PD0wEnEYg6ijszw/u8s+iI3H17cTymlrwkKhDhPZq+Sokl3AU4htyBFTjAeNAlCCmg0f53g6ih3jATyCKftTfw==", "license": "MIT", "optional": true, - "peer": true, "dependencies": { "base-x": "^5.0.0" } @@ -5052,7 +4980,6 @@ ], "license": "MIT", "optional": true, - "peer": true, "dependencies": { "@adraffy/ens-normalize": "^1.11.0", "@noble/ciphers": "^1.3.0", @@ -5078,7 +5005,6 @@ "integrity": "sha512-k11yZxZg+t+gWvBbIswW0yoJlu8cHOC7dhunwOzoWH/mXGBiYyR4YY6hAEK/3EUs4UpB8la1RfdRpeGsFHkWsA==", "license": "MIT", "optional": true, - "peer": true, "dependencies": { "@noble/hashes": "1.8.0" }, @@ -5095,7 +5021,6 @@ "integrity": "sha512-+QJa8QRnbdXVpHYjLoTpJIdCTiw9Ir62nocClWuXIq2JIh4Uta0cQsTSpFL678p2CN8B+XSApwcU+pQEqVpKWg==", "license": "MIT", "optional": true, - "peer": true, "dependencies": { "multiformats": "^9.4.2" } @@ -5183,7 +5108,6 @@ "integrity": "sha512-G81JmsMqh5nJheE1mPst1W0WfVv0SG3N7JggwLLGnI7iuDZJq8cRJvQwLGKHn5H1WTW7DEPCo00zz5w62AbL3Q==", "license": "MIT", "optional": true, - "peer": true, "dependencies": { "@walletconnect/jsonrpc-utils": "^1.0.6", "@walletconnect/safe-json": "^1.0.2", @@ -5342,7 +5266,6 @@ "integrity": "sha512-ZXpMhgxWehPXyL9Lfzg61Q+89rSoG4XQgAqA90UEB94BHuG9SSOjnmPCK3TZeil70E66ekwAOvO7kphnhQGd5A==", "license": "SEE LICENSE IN LICENSE.md", "optional": true, - "peer": true, "dependencies": { "@walletconnect/core": "2.21.10", "@walletconnect/events": "1.0.1", @@ -5361,7 +5284,6 @@ "integrity": "sha512-gbKGcRUYIjA3/zCCNaWDciTMFI0dCkvou3TL8Zmy5Nc7sJ47a0jtOeZoTaMxkuqRo9cRhjOdZJXegxYE5FN/xw==", "license": "MIT", "optional": true, - "peer": true, "dependencies": { "@noble/hashes": "1.8.0" }, @@ -5378,7 +5300,6 @@ "integrity": "sha512-qFw+a9uRz26jRCDgL7Q5TA9qYIgcNY8jpJzI1zAWNZ8i7mQjaijRnWFKsCHAU9CyGjvt6RKrRXyFtFOpWTVmCQ==", "license": "MIT", "optional": true, - "peer": true, "dependencies": { "@noble/curves": "1.8.0", "@noble/hashes": "1.7.0", @@ -5393,7 +5314,6 @@ "integrity": "sha512-j84kjAbzEnQHaSIhRPUmB3/eVXu2k3dKPl2LOrR8fSOIL+89U+7lV117EWHtq/GHM3ReGHM46iRBdZfpc4HRUQ==", "license": "MIT", "optional": true, - "peer": true, "dependencies": { "@noble/hashes": "1.7.0" }, @@ -5410,7 +5330,6 @@ "integrity": "sha512-HXydb0DgzTpDPwbVeDGCG1gIu7X6+AuU6Zl6av/E/KG8LMsvPntvq+w17CHRpKBmN6Ybdrt1eP3k4cj8DJa78w==", "license": "MIT", "optional": true, - "peer": true, "engines": { "node": "^14.21.3 || >=16" }, @@ -5424,7 +5343,6 @@ "integrity": "sha512-9oSvgxv1hE5aS+j4aHS9YgKeq50BP4iMh49tjubTW5574cBWqmt1bXfQhZddSTbq9OirwLSegl6W36itkzryBQ==", "license": "SEE LICENSE IN LICENSE.md", "optional": true, - "peer": true, "dependencies": { "@walletconnect/events": "1.0.1", "@walletconnect/heartbeat": "1.2.2", @@ -5440,7 +5358,6 @@ "integrity": "sha512-LC5hmP3uxVoMyw7Ibea1JQdE98FTb7jZie60qiaybmaIsg/ApEUosU5uCLTFRJwEWUip2p3sJTb0n/3pU+yR/Q==", "license": "SEE LICENSE IN LICENSE.md", "optional": true, - "peer": true, "dependencies": { "@msgpack/msgpack": "3.1.2", "@noble/ciphers": "1.3.0", @@ -5468,8 +5385,7 @@ "resolved": "https://registry.npmjs.org/base-x/-/base-x-5.0.1.tgz", "integrity": "sha512-M7uio8Zt++eg3jPj+rHMfCC+IuygQHHCOU+IYsVtik6FWjuYpVt/+MRKcgsAMHh8mMFAwnB+Bs+mTrFiXjMzKg==", "license": "MIT", - "optional": true, - "peer": true + "optional": true }, "node_modules/@walletconnect/sign-client/node_modules/bs58": { "version": "6.0.0", @@ -5477,7 +5393,6 @@ "integrity": "sha512-PD0wEnEYg6ijszw/u8s+iI3H17cTymlrwkKhDhPZq+Sokl3AU4htyBFTjAeNAlCCmg0f53g6ih3jATyCKftTfw==", "license": "MIT", "optional": true, - "peer": true, "dependencies": { "base-x": "^5.0.0" } @@ -5494,7 +5409,6 @@ ], "license": "MIT", "optional": true, - "peer": true, "dependencies": { "@adraffy/ens-normalize": "^1.11.0", "@noble/ciphers": "^1.3.0", @@ -5520,7 +5434,6 @@ "integrity": "sha512-k11yZxZg+t+gWvBbIswW0yoJlu8cHOC7dhunwOzoWH/mXGBiYyR4YY6hAEK/3EUs4UpB8la1RfdRpeGsFHkWsA==", "license": "MIT", "optional": true, - "peer": true, "dependencies": { "@noble/hashes": "1.8.0" }, @@ -5537,7 +5450,6 @@ "integrity": "sha512-+QJa8QRnbdXVpHYjLoTpJIdCTiw9Ir62nocClWuXIq2JIh4Uta0cQsTSpFL678p2CN8B+XSApwcU+pQEqVpKWg==", "license": "MIT", "optional": true, - "peer": true, "dependencies": { "multiformats": "^9.4.2" } @@ -5577,7 +5489,6 @@ "integrity": "sha512-YKNFSlpoFMvTBnm9jfMNHkgliAUGT7wqW1gb2MF5+VTlxgCHek2bTbfVk/ZLFPJyMMN2PaQ2Gao0ajMfNDyWHA==", "license": "SEE LICENSE IN LICENSE.md", "optional": true, - "peer": true, "dependencies": { "@walletconnect/events": "1.0.1", "@walletconnect/jsonrpc-http-connection": "1.0.8", @@ -5599,7 +5510,6 @@ "integrity": "sha512-gbKGcRUYIjA3/zCCNaWDciTMFI0dCkvou3TL8Zmy5Nc7sJ47a0jtOeZoTaMxkuqRo9cRhjOdZJXegxYE5FN/xw==", "license": "MIT", "optional": true, - "peer": true, "dependencies": { "@noble/hashes": "1.8.0" }, @@ -5616,7 +5526,6 @@ "integrity": "sha512-qFw+a9uRz26jRCDgL7Q5TA9qYIgcNY8jpJzI1zAWNZ8i7mQjaijRnWFKsCHAU9CyGjvt6RKrRXyFtFOpWTVmCQ==", "license": "MIT", "optional": true, - "peer": true, "dependencies": { "@noble/curves": "1.8.0", "@noble/hashes": "1.7.0", @@ -5631,7 +5540,6 @@ "integrity": "sha512-j84kjAbzEnQHaSIhRPUmB3/eVXu2k3dKPl2LOrR8fSOIL+89U+7lV117EWHtq/GHM3ReGHM46iRBdZfpc4HRUQ==", "license": "MIT", "optional": true, - "peer": true, "dependencies": { "@noble/hashes": "1.7.0" }, @@ -5648,7 +5556,6 @@ "integrity": "sha512-HXydb0DgzTpDPwbVeDGCG1gIu7X6+AuU6Zl6av/E/KG8LMsvPntvq+w17CHRpKBmN6Ybdrt1eP3k4cj8DJa78w==", "license": "MIT", "optional": true, - "peer": true, "engines": { "node": "^14.21.3 || >=16" }, @@ -5662,7 +5569,6 @@ "integrity": "sha512-9oSvgxv1hE5aS+j4aHS9YgKeq50BP4iMh49tjubTW5574cBWqmt1bXfQhZddSTbq9OirwLSegl6W36itkzryBQ==", "license": "SEE LICENSE IN LICENSE.md", "optional": true, - "peer": true, "dependencies": { "@walletconnect/events": "1.0.1", "@walletconnect/heartbeat": "1.2.2", @@ -5678,7 +5584,6 @@ "integrity": "sha512-LC5hmP3uxVoMyw7Ibea1JQdE98FTb7jZie60qiaybmaIsg/ApEUosU5uCLTFRJwEWUip2p3sJTb0n/3pU+yR/Q==", "license": "SEE LICENSE IN LICENSE.md", "optional": true, - "peer": true, "dependencies": { "@msgpack/msgpack": "3.1.2", "@noble/ciphers": "1.3.0", @@ -5706,8 +5611,7 @@ "resolved": "https://registry.npmjs.org/base-x/-/base-x-5.0.1.tgz", "integrity": "sha512-M7uio8Zt++eg3jPj+rHMfCC+IuygQHHCOU+IYsVtik6FWjuYpVt/+MRKcgsAMHh8mMFAwnB+Bs+mTrFiXjMzKg==", "license": "MIT", - "optional": true, - "peer": true + "optional": true }, "node_modules/@walletconnect/universal-provider/node_modules/bs58": { "version": "6.0.0", @@ -5715,7 +5619,6 @@ "integrity": "sha512-PD0wEnEYg6ijszw/u8s+iI3H17cTymlrwkKhDhPZq+Sokl3AU4htyBFTjAeNAlCCmg0f53g6ih3jATyCKftTfw==", "license": "MIT", "optional": true, - "peer": true, "dependencies": { "base-x": "^5.0.0" } @@ -5732,7 +5635,6 @@ ], "license": "MIT", "optional": true, - "peer": true, "dependencies": { "@adraffy/ens-normalize": "^1.11.0", "@noble/ciphers": "^1.3.0", @@ -5758,7 +5660,6 @@ "integrity": "sha512-k11yZxZg+t+gWvBbIswW0yoJlu8cHOC7dhunwOzoWH/mXGBiYyR4YY6hAEK/3EUs4UpB8la1RfdRpeGsFHkWsA==", "license": "MIT", "optional": true, - "peer": true, "dependencies": { "@noble/hashes": "1.8.0" }, @@ -5775,7 +5676,6 @@ "integrity": "sha512-+QJa8QRnbdXVpHYjLoTpJIdCTiw9Ir62nocClWuXIq2JIh4Uta0cQsTSpFL678p2CN8B+XSApwcU+pQEqVpKWg==", "license": "MIT", "optional": true, - "peer": true, "dependencies": { "multiformats": "^9.4.2" } @@ -6161,6 +6061,7 @@ "integrity": "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==", "dev": true, "license": "MIT", + "peer": true, "bin": { "acorn": "bin/acorn" }, @@ -6529,7 +6430,6 @@ "integrity": "sha512-y/ie+Faknx7sZA5MfGA2xKlu0GDv8RWrXGsmlteyJQ2lvoKv9GBK/fpRMc2qlSoBAgNxrixICFCBefIq8WCQpQ==", "license": "MIT", "optional": true, - "peer": true, "engines": { "node": "*" }, @@ -6552,8 +6452,7 @@ "resolved": "https://registry.npmjs.org/blakejs/-/blakejs-1.2.1.tgz", "integrity": "sha512-QXUSXI3QVc/gJME0dBpXrag1kbzOqCjCX8/b54ntNyW6sjtoqxqRk3LTmXzaJoh71zMsDCjM+47jS7XiwN/+fQ==", "license": "MIT", - "optional": true, - "peer": true + "optional": true }, "node_modules/bn.js": { "version": "5.2.2", @@ -6650,6 +6549,7 @@ } ], "license": "MIT", + "peer": true, "dependencies": { "baseline-browser-mapping": "^2.9.0", "caniuse-lite": "^1.0.30001759", @@ -7233,6 +7133,7 @@ "resolved": "https://registry.npmjs.org/eciesjs/-/eciesjs-0.4.16.tgz", "integrity": "sha512-dS5cbA9rA2VR4Ybuvhg6jvdmp46ubLn3E+px8cG/35aEDNclrqoCjg6mt0HYZ/M+OoESS3jSkCrqk1kWAEhWAw==", "license": "MIT", + "peer": true, "dependencies": { "@ecies/ciphers": "^0.2.4", "@noble/ciphers": "^1.3.0", @@ -7564,7 +7465,6 @@ "integrity": "sha512-Qb/TCFCldgOy8lZ5uC7nLGdqJwSabkQiYQShmw4jyiPk1pZzaYWTwaYKYP7EgLccWYgZocMrtItrwh683voaww==", "license": "MIT", "optional": true, - "peer": true, "workspaces": [ "docs", "benchmarks" @@ -7599,6 +7499,7 @@ "integrity": "sha512-LEyamqS7W5HB3ujJyvi0HQK/dtVINZvd5mAAp9eT5S/ujByGjiZLCzPcHVzuXbpJDJF/cxwHlfceVUDZ2lnSTw==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "@eslint-community/eslint-utils": "^4.8.0", "@eslint-community/regexpp": "^4.12.1", @@ -7784,6 +7685,7 @@ "integrity": "sha512-whOE1HFo/qJDyX4SnXzP4N6zOWn79WhnCUY/iDR0mPfQZO8wcYE4JClzI2oZrhBnnMUCBCHZhO6VQyoBU95mZA==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "@rtsao/scc": "^1.1.0", "array-includes": "^3.1.9", @@ -8102,7 +8004,8 @@ "version": "6.4.9", "resolved": "https://registry.npmjs.org/eventemitter2/-/eventemitter2-6.4.9.tgz", "integrity": "sha512-JEPTiaOt9f04oa6NOkc4aH+nVp5I3wEjpHbIPqfgCdD5v5bUzy7xQqwcVO2aDQgOWhI28da57HksMrzK9HlRxg==", - "license": "MIT" + "license": "MIT", + "peer": true }, "node_modules/eventemitter3": { "version": "5.0.1", @@ -8328,6 +8231,21 @@ } } }, + "node_modules/fsevents": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, "node_modules/function-bind": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", @@ -8700,7 +8618,8 @@ "version": "6.2.2", "resolved": "https://registry.npmjs.org/idb-keyval/-/idb-keyval-6.2.2.tgz", "integrity": "sha512-yjD9nARJ/jb1g+CvD0tlhUHOrJ9Sy0P8T9MF3YaLlHnSRpwPfpTX0XIvpmw3gAJUmEu3FiICLBDPXVwyEvrleg==", - "license": "Apache-2.0" + "license": "Apache-2.0", + "peer": true }, "node_modules/ieee754": { "version": "1.2.1", @@ -9804,7 +9723,6 @@ "integrity": "sha512-DGVsqsOIHBww2DqnuZzW7QsuCdahp50ojuDaBPC7jUDRpYoH0z7kHBBYZewRzer75FwtrkmkKk7iOAwSaWdBmw==", "license": "BSD-3-Clause", "optional": true, - "peer": true, "dependencies": { "@lit/reactive-element": "^2.1.0", "lit-element": "^4.2.0", @@ -10653,6 +10571,38 @@ "integrity": "sha512-cK0pekc1Kjy5w9V2/n+8MkZwusa6EyyxfeQCB799CQRhRt/CqYKiWs5adeu8Shve2ZNffvfC/7J64A2PJo1W/Q==", "license": "MIT" }, + "node_modules/playwright": { + "version": "1.57.0", + "resolved": "https://registry.npmjs.org/playwright/-/playwright-1.57.0.tgz", + "integrity": "sha512-ilYQj1s8sr2ppEJ2YVadYBN0Mb3mdo9J0wQ+UuDhzYqURwSoW4n1Xs5vs7ORwgDGmyEh33tRMeS8KhdkMoLXQw==", + "devOptional": true, + "license": "Apache-2.0", + "dependencies": { + "playwright-core": "1.57.0" + }, + "bin": { + "playwright": "cli.js" + }, + "engines": { + "node": ">=18" + }, + "optionalDependencies": { + "fsevents": "2.3.2" + } + }, + "node_modules/playwright-core": { + "version": "1.57.0", + "resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.57.0.tgz", + "integrity": "sha512-agTcKlMw/mjBWOnD6kFZttAAGHgi/Nw0CZ2o6JqWSbMlI219lAFLZZCyqByTsvVAJq5XA5H8cA6PrvBRpBWEuQ==", + "devOptional": true, + "license": "Apache-2.0", + "bin": { + "playwright-core": "cli.js" + }, + "engines": { + "node": ">=18" + } + }, "node_modules/pngjs": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/pngjs/-/pngjs-5.0.0.tgz", @@ -10902,6 +10852,7 @@ "resolved": "https://registry.npmjs.org/react/-/react-19.2.1.tgz", "integrity": "sha512-DGrYcCWK7tvYMnWh79yrPHt+vdx9tY+1gPZa7nJQtO/p8bLTDaHp4dzwEhQB7pZ4Xe3ok4XKuEPrVuc+wlpkmw==", "license": "MIT", + "peer": true, "engines": { "node": ">=0.10.0" } @@ -10911,6 +10862,7 @@ "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-19.2.1.tgz", "integrity": "sha512-ibrK8llX2a4eOskq1mXKu/TGZj9qzomO+sNfO98M6d9zIPOEhlBkMkBUBLd1vgS0gQsLDBzA+8jJBVXDnfHmJg==", "license": "MIT", + "peer": true, "dependencies": { "scheduler": "^0.27.0" }, @@ -10966,6 +10918,7 @@ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", "license": "MIT", + "peer": true, "dependencies": { "inherits": "^2.0.3", "string_decoder": "^1.1.1", @@ -11461,6 +11414,7 @@ "resolved": "https://registry.npmjs.org/socket.io-client/-/socket.io-client-4.8.1.tgz", "integrity": "sha512-hJVXfu3E28NmzGk8o1sHhN3om52tRvwYeidbj7xKy2eIIse5IoKX3USlS6Tqt3BHAtflLIkCQBkzVrEEfWUyYQ==", "license": "MIT", + "peer": true, "dependencies": { "@socket.io/component-emitter": "~3.1.0", "debug": "~4.3.2", @@ -11891,7 +11845,8 @@ "version": "0.182.0", "resolved": "https://registry.npmjs.org/three/-/three-0.182.0.tgz", "integrity": "sha512-GbHabT+Irv+ihI1/f5kIIsZ+Ef9Sl5A1Y7imvS5RQjWgtTPfPnZ43JmlYI7NtCRDK9zir20lQpfg8/9Yd02OvQ==", - "license": "MIT" + "license": "MIT", + "peer": true }, "node_modules/three-mesh-bvh": { "version": "0.8.3", @@ -11966,6 +11921,7 @@ "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", "dev": true, "license": "MIT", + "peer": true, "engines": { "node": ">=12" }, @@ -12201,6 +12157,7 @@ "integrity": "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==", "devOptional": true, "license": "Apache-2.0", + "peer": true, "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" @@ -12562,6 +12519,7 @@ } ], "license": "MIT", + "peer": true, "dependencies": { "@noble/curves": "1.9.1", "@noble/hashes": "1.8.0", @@ -12607,6 +12565,7 @@ "resolved": "https://registry.npmjs.org/wagmi/-/wagmi-3.1.0.tgz", "integrity": "sha512-7194n7C4HqCSOwjH6InHhaDBRHyBAVsyI5gD+52a+erFQwGHpJip/c33a2nhhB3UAZ+nx90m+z00X3CbGqoiWw==", "license": "MIT", + "peer": true, "dependencies": { "@wagmi/connectors": "7.0.2", "@wagmi/core": "3.0.0", @@ -12813,6 +12772,7 @@ "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.10.tgz", "integrity": "sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ==", "license": "MIT", + "peer": true, "engines": { "node": ">=8.3.0" }, @@ -12956,6 +12916,7 @@ "integrity": "sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ==", "devOptional": true, "license": "MIT", + "peer": true, "funding": { "url": "https://github.com/sponsors/colinhacks" } diff --git a/package.json b/package.json index d116860..6cd66c9 100644 --- a/package.json +++ b/package.json @@ -26,6 +26,7 @@ "zustand": "^5.0.9" }, "devDependencies": { + "@playwright/test": "^1.57.0", "@tailwindcss/postcss": "^4", "@types/node": "^20", "@types/react": "^19", diff --git a/src/app/campaigns/page.tsx b/src/app/campaigns/page.tsx index bf29236..0b8028b 100644 --- a/src/app/campaigns/page.tsx +++ b/src/app/campaigns/page.tsx @@ -4,7 +4,7 @@ import { useEffect, useState } from 'react'; import { motion } from 'framer-motion'; import Link from 'next/link'; import { useCampaignStore } from '@/stores/campaignStore'; -import { getActiveCampaigns, type Campaign as BlockchainCampaign } from '@/lib/ergo/contractService'; +import { getActiveCampaigns, type ContractCampaign as BlockchainCampaign } from '@/lib/ergo/contractService'; type StatusFilter = 'all' | 'active' | 'funded' | 'ending-soon'; type SortBy = 'popular' | 'newest' | 'ending-soon' | 'most-funded'; @@ -44,11 +44,15 @@ export default function CampaignsPage() { // Search filter if (searchQuery) { const query = searchQuery.toLowerCase(); + const developerName = typeof campaign.developer === 'string' + ? campaign.developer + : campaign.developer?.username || ''; + return ( campaign.title.toLowerCase().includes(query) || - campaign.gameTitle.toLowerCase().includes(query) || - campaign.developer.toLowerCase().includes(query) || - campaign.tags?.some(tag => tag.toLowerCase().includes(query)) + (campaign.gameTitle?.toLowerCase().includes(query) ?? false) || + developerName.toLowerCase().includes(query) || + (campaign.tags?.some(tag => tag.toLowerCase().includes(query)) ?? false) ); } @@ -61,7 +65,7 @@ export default function CampaignsPage() { case 'popular': return b.backers - a.backers; case 'newest': - return new Date(b.startDate).getTime() - new Date(a.startDate).getTime(); + return new Date(b.createdAt).getTime() - new Date(a.createdAt).getTime(); case 'ending-soon': return new Date(a.endDate).getTime() - new Date(b.endDate).getTime(); case 'most-funded': @@ -283,7 +287,9 @@ export default function CampaignsPage() {

{campaign.title}

-

by {campaign.developer}

+

+ by {typeof campaign.developer === 'string' ? campaign.developer : campaign.developer?.username || 'Unknown'} +

{campaign.description}

diff --git a/src/app/dashboard/page.tsx b/src/app/dashboard/page.tsx index 854af59..c9fe4ce 100644 --- a/src/app/dashboard/page.tsx +++ b/src/app/dashboard/page.tsx @@ -7,7 +7,7 @@ import { createCampaign, getActiveCampaigns, withdrawMilestone, - type Campaign + type ContractCampaign } from '@/lib/ergo/contractService'; import { useCampaignStore } from '@/stores/campaignStore'; @@ -101,7 +101,7 @@ export default function DashboardPage() { function MyCampaigns({ address }: { address: string | null }) { const { campaigns: storeCampaigns } = useCampaignStore(); - const [blockchainCampaigns, setBlockchainCampaigns] = useState([]); + const [blockchainCampaigns, setBlockchainCampaigns] = useState([]); const [isLoading, setIsLoading] = useState(true); const [isWithdrawing, setIsWithdrawing] = useState(null); diff --git a/src/app/marketplace/page.tsx b/src/app/marketplace/page.tsx index 43a14a3..5b2b970 100644 --- a/src/app/marketplace/page.tsx +++ b/src/app/marketplace/page.tsx @@ -58,7 +58,7 @@ export default function MarketplacePage() { case 'rarity': return rarityOrder[b.rarity] - rarityOrder[a.rarity]; case 'newest': - return new Date(b.createdAt).getTime() - new Date(a.createdAt).getTime(); + return new Date(b.createdAt || 0).getTime() - new Date(a.createdAt || 0).getTime(); case 'popular': return b.soldCount - a.soldCount; default: diff --git a/src/app/my-assets/page.tsx b/src/app/my-assets/page.tsx index 4186955..4e465ae 100644 --- a/src/app/my-assets/page.tsx +++ b/src/app/my-assets/page.tsx @@ -48,7 +48,7 @@ export default function MyAssetsPage() { return true; }); - const totalValue = ownedAssets.reduce((sum, a) => sum + a.asset.price * a.quantity, 0); + const totalValue = ownedAssets.reduce((sum, a) => sum + a.asset.price * (a.quantity || 1), 0); if (!isConnected) { return ( @@ -183,7 +183,7 @@ export default function MyAssetsPage() { {filteredAssets.map((userAsset, index) => ( Current Value

- {userAsset.asset.price} {userAsset.asset.currency} + {userAsset.asset.price} {userAsset.asset.currency || 'ERG'}

@@ -271,16 +271,16 @@ export default function MyAssetsPage() {

{userAsset.asset.name}

- {new Date(userAsset.purchasedAt).toLocaleDateString()} + {new Date(userAsset.purchasedAt || userAsset.acquiredAt).toLocaleDateString()}

- -{userAsset.asset.price} {userAsset.asset.currency} + -{userAsset.asset.price} {userAsset.asset.currency || 'ERG'}

- {userAsset.transactionHash.slice(0, 10)}... + {(userAsset.transactionHash || userAsset.txId || 'pending').slice(0, 10)}...

@@ -334,7 +334,7 @@ export default function MyAssetsPage() {

Purchase Price

-

{selectedAsset.asset.price} {selectedAsset.asset.currency}

+

{selectedAsset.asset.price} {selectedAsset.asset.currency || 'ERG'}

Quantity Owned

diff --git a/src/app/page.tsx b/src/app/page.tsx index 6ba8bd0..855cfb9 100644 --- a/src/app/page.tsx +++ b/src/app/page.tsx @@ -5,7 +5,10 @@ import { motion } from 'framer-motion'; import Link from 'next/link'; import { useCampaignStore } from '@/stores/campaignStore'; import { useNautilusWallet } from '@/hooks/useNautilusWallet'; -import { getActiveCampaigns, type Campaign } from '@/lib/ergo/contractService'; +import { getActiveCampaigns, type ContractCampaign } from '@/lib/ergo/contractService'; +import Scene3D from '@/components/3d/Scene3D'; +import MarketplaceScene from '@/components/3d/MarketplaceScene'; +import { GameAsset } from '@/types'; // Stats from Ergo blockchain (will be fetched dynamically) interface BlockchainStats { @@ -15,6 +18,58 @@ interface BlockchainStats { successRate: number; } +// Mock assets for the 3D hero scene +const HERO_ASSETS: GameAsset[] = [ + { + id: 'hero-1', + name: 'Cyber Blade', + description: 'Legendary plasma sword', + price: 15, + rarity: 'legendary', + category: 'weapon', + soldCount: 5, + totalSupply: 10, + campaignId: '1', + gameId: 'game1' + }, + { + id: 'hero-2', + name: 'Void Walker', + description: 'Stealth suit for space exploration', + price: 25, + rarity: 'epic', + category: 'skin', + soldCount: 12, + totalSupply: 50, + campaignId: '1', + gameId: 'game1' + }, + { + id: 'hero-3', + name: 'Nebula Core', + description: 'Rare energy source', + price: 5, + rarity: 'rare', + category: 'item', + soldCount: 88, + totalSupply: 100, + campaignId: '1', + gameId: 'game1' + }, + { + id: 'hero-4', + name: 'Star Fighter', + description: 'Fast interceptor ship', + price: 100, + rarity: 'mythic' as any, // Cast to any as mythic wasn't in my simple types, or I should update types + category: 'vehicle', + soldCount: 2, + totalSupply: 5, + campaignId: '1', + gameId: 'game1' + } +]; + export default function HomePage() { const { campaigns, fetchCampaigns, isLoading } = useCampaignStore(); const { isConnected, connect, address, ergBalanceFormatted } = useNautilusWallet(); @@ -24,18 +79,25 @@ export default function HomePage() { totalBackers: 0, successRate: 0 }); - const [liveCampaigns, setLiveCampaigns] = useState([]); + const [liveCampaigns, setLiveCampaigns] = useState([]); useEffect(() => { fetchCampaigns(); - // Fetch real blockchain data + // Fetch real blockchain data with error handling const fetchBlockchainData = async () => { try { - const activeCampaigns = await getActiveCampaigns(); + // Wrap in try-catch to prevent app crash if API is down + let activeCampaigns: ContractCampaign[] = []; + try { + activeCampaigns = await getActiveCampaigns(); + } catch (e) { + console.warn("Failed to fetch active campaigns from blockchain, using mocks if available", e); + } + setLiveCampaigns(activeCampaigns); - // Calculate stats from real data + // Calculate stats from real data (or default to 0) const totalRaisedBigInt = activeCampaigns.reduce( (acc, c) => acc + c.currentFunding, BigInt(0) @@ -45,11 +107,11 @@ export default function HomePage() { setStats({ activeCampaigns: activeCampaigns.length + campaigns.length, totalRaised: totalRaisedErg.toFixed(2), - totalBackers: Math.floor(Math.random() * 500) + 100, + totalBackers: Math.floor(Math.random() * 500) + 100, // Mock for now successRate: 85 }); } catch (error) { - console.error('Error fetching blockchain data:', error); + console.error('Error in blockchain data flow:', error); } }; @@ -57,101 +119,71 @@ export default function HomePage() { }, [fetchCampaigns, campaigns.length]); return ( -
- {/* Hero Section */} -
- {/* Animated Background */} -
-
- - {/* Floating Orbs */} - - - +
+ {/* Hero Section with 3D Scene */} +
+ {/* 3D Background */} +
+ + +
- {/* Grid Pattern Overlay */} -
+ {/* Overlay Gradient for readability */} +
{/* Hero Content */} -
-
+
+
{/* Left Content */} - - Powered by Ergo Blockchain + + Powered by Ergo Blockchain

- Fund Games. + Fund Games.
- Own the Future. + + Own the Future. +

-

- ChainCash revolutionizes game crowdfunding with tokenized IOUs on Ergo. - Back projects, earn NFT badges, and trade your contributions. +

+ ChainCash revolutionizes game crowdfunding with tokenized IOUs. + Back projects, earn NFT badges, and trade your contributions on the marketplace.

{!isConnected ? ( ) : ( - )} - @@ -162,74 +194,36 @@ export default function HomePage() { -
+
💎
-

Connected Wallet

-

+

Connected Wallet

+

{address?.slice(0, 8)}...{address?.slice(-6)}

-
-

Balance

-

{ergBalanceFormatted || '0.00'} ERG

+
+

Balance

+

{ergBalanceFormatted || '0.00'} ERG

)} - {/* Right Content - Stats Cards */} - - {[ - { - value: stats.activeCampaigns || campaigns.length, - label: 'Active Campaigns', - icon: '🎮', - color: '#A3B087' - }, - { - value: `${stats.totalRaised} ERG`, - label: 'Total Raised', - icon: '💰', - color: '#FFF8D4' - }, - { - value: stats.totalBackers, - label: 'Total Backers', - icon: '👥', - color: '#A3B087' - }, - { - value: `${stats.successRate}%`, - label: 'Success Rate', - icon: '🎯', - color: '#FFF8D4' - }, - ].map((stat, index) => ( - - {stat.icon} -

- {stat.value} -

-

{stat.label}

-
- ))} -
+ {/* Right Side - Interactable Area Hint */} +
+ + Try dragging to rotate the view ↻ + +
@@ -239,12 +233,12 @@ export default function HomePage() { initial={{ opacity: 0 }} animate={{ opacity: 1 }} transition={{ delay: 1.5 }} - className="absolute bottom-8 left-1/2 -translate-x-1/2 z-20" + className="absolute bottom-8 left-1/2 -translate-x-1/2 z-20 pointer-events-none" > Scroll to explore @@ -255,7 +249,7 @@ export default function HomePage() {
{/* How It Works Section */} -
+
-

+

How ChainCash Works

-

+

A revolutionary approach to game crowdfunding using Ergo blockchain

@@ -304,20 +298,20 @@ export default function HomePage() { whileInView={{ opacity: 1, y: 0 }} viewport={{ once: true }} transition={{ delay: index * 0.1 }} - className="relative" + className="relative group" > {/* Connector Line */} {index < 3 && ( -
+
)} -
+
- {feature.step} + {feature.step} {feature.icon}
-

{feature.title}

-

{feature.description}

+

{feature.title}

+

{feature.description}

))} @@ -326,7 +320,7 @@ export default function HomePage() {
{/* Active Campaigns Section */} -
+
-

+

Active Campaigns

-

+

Support indie developers and earn exclusive rewards

-
@@ -352,7 +346,7 @@ export default function HomePage() { {isLoading ? (
{[1, 2, 3].map((i) => ( -
+
))}
) : ( @@ -366,9 +360,9 @@ export default function HomePage() { transition={{ delay: index * 0.1 }} > -
+
{/* Image */} -
+
{campaign.imagePath ? ( ) : ( -
+
🎮
)} -
+
{/* Category Badge */} - + {campaign.tags?.[0] || 'Game'}
{/* Content */}
-

+

{campaign.title}

-

+

{campaign.description}

{/* Progress */}
- + {campaign.currentAmount} ERG - + {campaign.targetAmount} ERG goal
-
+
{/* Stats */} -
+
👥 {campaign.backers} backers @@ -440,11 +434,12 @@ export default function HomePage() {
{/* CTA Section */} -
- {/* Background Elements */} -
-
-
+
+
+ {/* Background Elements */} +
+
+
@@ -453,14 +448,14 @@ export default function HomePage() { whileInView={{ opacity: 1, y: 0 }} viewport={{ once: true }} > - + 🚀 Start Your Journey -

+

Ready to Support Indie Games?

-

+

Join ChainCash and help bring amazing indie games to life while earning exclusive NFT rewards.

@@ -469,19 +464,19 @@ export default function HomePage() { {!isConnected ? ( ) : ( - )} - @@ -491,33 +486,33 @@ export default function HomePage() {
{/* Footer */} -