u
This commit is contained in:
1 parent
295b3306a3
commit
c62c9d080b
8 files changed
+876
-134
No files matched your search
@@ -58,6 +58,7 @@
|
|||||||
"react-native-web": "^0.21.0",
|
"react-native-web": "^0.21.0",
|
||||||
"react-native-worklets": "0.5.1",
|
"react-native-worklets": "0.5.1",
|
||||||
"tailwind-merge": "^3.4.0",
|
"tailwind-merge": "^3.4.0",
|
||||||
|
"victory-native": "^37.3.6",
|
||||||
"zustand": "^5.0.8"
|
"zustand": "^5.0.8"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
|
|||||||
Generated
+615
-8
@@ -152,6 +152,9 @@ importers:
|
|||||||
tailwind-merge:
|
tailwind-merge:
|
||||||
specifier: ^3.4.0
|
specifier: ^3.4.0
|
||||||
version: 3.4.0
|
version: 3.4.0
|
||||||
|
victory-native:
|
||||||
|
specifier: ^37.3.6
|
||||||
|
version: 37.3.6(react@19.1.0)
|
||||||
zustand:
|
zustand:
|
||||||
specifier: ^5.0.8
|
specifier: ^5.0.8
|
||||||
version: 5.0.8(@types/react@19.1.17)(react@19.1.0)(use-sync-external-store@1.6.0(react@19.1.0))
|
version: 5.0.8(@types/react@19.1.17)(react@19.1.0)(use-sync-external-store@1.6.0(react@19.1.0))
|
||||||
@@ -2205,6 +2208,33 @@ packages:
|
|||||||
'@types/big.js@6.2.2':
|
'@types/big.js@6.2.2':
|
||||||
resolution: {integrity: sha512-e2cOW9YlVzFY2iScnGBBkplKsrn2CsObHQ2Hiw4V1sSyiGbgWL8IyqE3zFi1Pt5o1pdAtYkDAIsF3KKUPjdzaA==}
|
resolution: {integrity: sha512-e2cOW9YlVzFY2iScnGBBkplKsrn2CsObHQ2Hiw4V1sSyiGbgWL8IyqE3zFi1Pt5o1pdAtYkDAIsF3KKUPjdzaA==}
|
||||||
|
|
||||||
|
'@types/d3-array@3.2.2':
|
||||||
|
resolution: {integrity: sha512-hOLWVbm7uRza0BYXpIIW5pxfrKe0W+D5lrFiAEYR+pb6w3N2SwSMaJbXdUfSEv+dT4MfHBLtn5js0LAWaO6otw==}
|
||||||
|
|
||||||
|
'@types/d3-color@3.1.3':
|
||||||
|
resolution: {integrity: sha512-iO90scth9WAbmgv7ogoq57O9YpKmFBbmoEoCHDB2xMBY0+/KVrqAaCDyCE16dUspeOvIxFFRI+0sEtqDqy2b4A==}
|
||||||
|
|
||||||
|
'@types/d3-ease@3.0.2':
|
||||||
|
resolution: {integrity: sha512-NcV1JjO5oDzoK26oMzbILE6HW7uVXOHLQvHshBUW4UMdZGfiY6v5BeQwh9a9tCzv+CeefZQHJt5SRgK154RtiA==}
|
||||||
|
|
||||||
|
'@types/d3-interpolate@3.0.4':
|
||||||
|
resolution: {integrity: sha512-mgLPETlrpVV1YRJIglr4Ez47g7Yxjl1lj7YKsiMCb27VJH9W8NVM6Bb9d8kkpG/uAQS5AmbA48q2IAolKKo1MA==}
|
||||||
|
|
||||||
|
'@types/d3-path@3.1.1':
|
||||||
|
resolution: {integrity: sha512-VMZBYyQvbGmWyWVea0EHs/BwLgxc+MKi1zLDCONksozI4YJMcTt8ZEuIR4Sb1MMTE8MMW49v0IwI5+b7RmfWlg==}
|
||||||
|
|
||||||
|
'@types/d3-scale@4.0.9':
|
||||||
|
resolution: {integrity: sha512-dLmtwB8zkAeO/juAMfnV+sItKjlsw2lKdZVVy6LRr0cBmegxSABiLEpGVmSJJ8O08i4+sGR6qQtb6WtuwJdvVw==}
|
||||||
|
|
||||||
|
'@types/d3-shape@3.1.8':
|
||||||
|
resolution: {integrity: sha512-lae0iWfcDeR7qt7rA88BNiqdvPS5pFVPpo5OfjElwNaT2yyekbM0C9vK+yqBqEmHr6lDkRnYNoTBYlAgJa7a4w==}
|
||||||
|
|
||||||
|
'@types/d3-time@3.0.4':
|
||||||
|
resolution: {integrity: sha512-yuzZug1nkAAaBlBBikKZTgzCeA+k1uy4ZFwWANOfKw5z5LRhV0gNA7gNkKm7HoK+HRN0wX3EkxGk0fpbWhmB7g==}
|
||||||
|
|
||||||
|
'@types/d3-timer@3.0.2':
|
||||||
|
resolution: {integrity: sha512-Ps3T8E8dZDam6fUyNiMkekK3XUsaUEik+idO9/YjPtfj2qruF8tFBXS7XhtE4iIXBLxhmLjP3SXpLhVf21I9Lw==}
|
||||||
|
|
||||||
'@types/debug@4.1.12':
|
'@types/debug@4.1.12':
|
||||||
resolution: {integrity: sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ==}
|
resolution: {integrity: sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ==}
|
||||||
|
|
||||||
@@ -2851,6 +2881,53 @@ packages:
|
|||||||
csstype@3.2.0:
|
csstype@3.2.0:
|
||||||
resolution: {integrity: sha512-si++xzRAY9iPp60roQiFta7OFbhrgvcthrhlNAGeQptSY25uJjkfUV8OArC3KLocB8JT8ohz+qgxWCmz8RhjIg==}
|
resolution: {integrity: sha512-si++xzRAY9iPp60roQiFta7OFbhrgvcthrhlNAGeQptSY25uJjkfUV8OArC3KLocB8JT8ohz+qgxWCmz8RhjIg==}
|
||||||
|
|
||||||
|
d3-array@3.2.4:
|
||||||
|
resolution: {integrity: sha512-tdQAmyA18i4J7wprpYq8ClcxZy3SC31QMeByyCFyRt7BVHdREQZ5lpzoe5mFEYZUWe+oq8HBvk9JjpibyEV4Jg==}
|
||||||
|
engines: {node: '>=12'}
|
||||||
|
|
||||||
|
d3-color@3.1.0:
|
||||||
|
resolution: {integrity: sha512-zg/chbXyeBtMQ1LbD/WSoW2DpC3I0mpmPdW+ynRTj/x2DAWYrIY7qeZIHidozwV24m4iavr15lNwIwLxRmOxhA==}
|
||||||
|
engines: {node: '>=12'}
|
||||||
|
|
||||||
|
d3-ease@3.0.1:
|
||||||
|
resolution: {integrity: sha512-wR/XK3D3XcLIZwpbvQwQ5fK+8Ykds1ip7A2Txe0yxncXSdq1L9skcG7blcedkOX+ZcgxGAmLX1FrRGbADwzi0w==}
|
||||||
|
engines: {node: '>=12'}
|
||||||
|
|
||||||
|
d3-format@3.1.2:
|
||||||
|
resolution: {integrity: sha512-AJDdYOdnyRDV5b6ArilzCPPwc1ejkHcoyFarqlPqT7zRYjhavcT3uSrqcMvsgh2CgoPbK3RCwyHaVyxYcP2Arg==}
|
||||||
|
engines: {node: '>=12'}
|
||||||
|
|
||||||
|
d3-interpolate@3.0.1:
|
||||||
|
resolution: {integrity: sha512-3bYs1rOD33uo8aqJfKP3JWPAibgw8Zm2+L9vBKEHJ2Rg+viTR7o5Mmv5mZcieN+FRYaAOWX5SJATX6k1PWz72g==}
|
||||||
|
engines: {node: '>=12'}
|
||||||
|
|
||||||
|
d3-path@3.1.0:
|
||||||
|
resolution: {integrity: sha512-p3KP5HCf/bvjBSSKuXid6Zqijx7wIfNW+J/maPs+iwR35at5JCbLUT0LzF1cnjbCHWhqzQTIN2Jpe8pRebIEFQ==}
|
||||||
|
engines: {node: '>=12'}
|
||||||
|
|
||||||
|
d3-scale@4.0.2:
|
||||||
|
resolution: {integrity: sha512-GZW464g1SH7ag3Y7hXjf8RoUuAFIqklOAq3MRl4OaWabTFJY9PN/E1YklhXLh+OQ3fM9yS2nOkCoS+WLZ6kvxQ==}
|
||||||
|
engines: {node: '>=12'}
|
||||||
|
|
||||||
|
d3-shape@3.2.0:
|
||||||
|
resolution: {integrity: sha512-SaLBuwGm3MOViRq2ABk3eLoxwZELpH6zhl3FbAoJ7Vm1gofKx6El1Ib5z23NUEhF9AsGl7y+dzLe5Cw2AArGTA==}
|
||||||
|
engines: {node: '>=12'}
|
||||||
|
|
||||||
|
d3-time-format@4.1.0:
|
||||||
|
resolution: {integrity: sha512-dJxPBlzC7NugB2PDLwo9Q8JiTR3M3e4/XANkreKSUxF8vvXKqm1Yfq4Q5dl8budlunRVlUUaDUgFt7eA8D6NLg==}
|
||||||
|
engines: {node: '>=12'}
|
||||||
|
|
||||||
|
d3-time@3.1.0:
|
||||||
|
resolution: {integrity: sha512-VqKjzBLejbSMT4IgbmVgDjpkYrNWUYJnbCGo874u7MMKIWsILRX+OpX/gTk8MqjpT1A/c6HY2dCA77ZN0lkQ2Q==}
|
||||||
|
engines: {node: '>=12'}
|
||||||
|
|
||||||
|
d3-timer@3.0.1:
|
||||||
|
resolution: {integrity: sha512-ndfJ/JxxMd3nw31uyKoY2naivF+r29V+Lc0svZxe1JvvIRmi8hUsrMvdOwgS1o6uBHmiz91geQ0ylPP0aj1VUA==}
|
||||||
|
engines: {node: '>=12'}
|
||||||
|
|
||||||
|
d3-voronoi@1.1.4:
|
||||||
|
resolution: {integrity: sha512-dArJ32hchFsrQ8uMiTBLq256MpnZjeuBtdHpaDlYuQyjU0CVzCJl/BVW+SkszaAeH95D/8gxqAhgx0ouAWAfRg==}
|
||||||
|
|
||||||
dayjs@1.11.19:
|
dayjs@1.11.19:
|
||||||
resolution: {integrity: sha512-t5EcLVS6QPBNqM2z8fakk/NKel+Xzshgt8FFKAn+qwlD1pzZWxh0nVCrvFK7ZDb6XucZeF9z8C7CBWTRIVApAw==}
|
resolution: {integrity: sha512-t5EcLVS6QPBNqM2z8fakk/NKel+Xzshgt8FFKAn+qwlD1pzZWxh0nVCrvFK7ZDb6XucZeF9z8C7CBWTRIVApAw==}
|
||||||
|
|
||||||
@@ -2919,6 +2996,12 @@ packages:
|
|||||||
resolution: {integrity: sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==}
|
resolution: {integrity: sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==}
|
||||||
engines: {node: '>=8'}
|
engines: {node: '>=8'}
|
||||||
|
|
||||||
|
delaunator@4.0.1:
|
||||||
|
resolution: {integrity: sha512-WNPWi1IRKZfCt/qIDMfERkDp93+iZEmOxN2yy4Jg+Xhv8SLk2UTqqbe1sfiipn0and9QrE914/ihdx82Y/Giag==}
|
||||||
|
|
||||||
|
delaunay-find@0.0.6:
|
||||||
|
resolution: {integrity: sha512-1+almjfrnR7ZamBk0q3Nhg6lqSe6Le4vL0WJDSMx4IDbQwTpUTXPjxC00lqLBT8MYsJpPCbI16sIkw9cPsbi7Q==}
|
||||||
|
|
||||||
delayed-stream@1.0.0:
|
delayed-stream@1.0.0:
|
||||||
resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==}
|
resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==}
|
||||||
engines: {node: '>=0.4.0'}
|
engines: {node: '>=0.4.0'}
|
||||||
@@ -3778,6 +3861,10 @@ packages:
|
|||||||
inline-style-prefixer@7.0.1:
|
inline-style-prefixer@7.0.1:
|
||||||
resolution: {integrity: sha512-lhYo5qNTQp3EvSSp3sRvXMbVQTLrvGV6DycRMJ5dm2BLMiJ30wpXKdDdgX+GmJZ5uQMucwRKHamXSst3Sj/Giw==}
|
resolution: {integrity: sha512-lhYo5qNTQp3EvSSp3sRvXMbVQTLrvGV6DycRMJ5dm2BLMiJ30wpXKdDdgX+GmJZ5uQMucwRKHamXSst3Sj/Giw==}
|
||||||
|
|
||||||
|
internmap@2.0.3:
|
||||||
|
resolution: {integrity: sha512-5Hh7Y1wQbvY5ooGgPbDaL5iYLAPzMTUrjMulskHLH6wnv/A+1q5rgEaiuqEjB+oxGXIVZs1FF+R/KPN3ZSQYYg==}
|
||||||
|
engines: {node: '>=12'}
|
||||||
|
|
||||||
intl-messageformat@10.7.18:
|
intl-messageformat@10.7.18:
|
||||||
resolution: {integrity: sha512-m3Ofv/X/tV8Y3tHXLohcuVuhWKo7BBq62cqY15etqmLxg2DZ34AGGgQDeR+SCta2+zICb1NX83af0GJmbQ1++g==}
|
resolution: {integrity: sha512-m3Ofv/X/tV8Y3tHXLohcuVuhWKo7BBq62cqY15etqmLxg2DZ34AGGgQDeR+SCta2+zICb1NX83af0GJmbQ1++g==}
|
||||||
|
|
||||||
@@ -3934,6 +4021,9 @@ packages:
|
|||||||
json-stable-stringify-without-jsonify@1.0.1:
|
json-stable-stringify-without-jsonify@1.0.1:
|
||||||
resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==}
|
resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==}
|
||||||
|
|
||||||
|
json-stringify-safe@5.0.1:
|
||||||
|
resolution: {integrity: sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==}
|
||||||
|
|
||||||
json5@2.2.3:
|
json5@2.2.3:
|
||||||
resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==}
|
resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==}
|
||||||
engines: {node: '>=6'}
|
engines: {node: '>=6'}
|
||||||
@@ -4027,56 +4117,48 @@ packages:
|
|||||||
engines: {node: '>= 12.0.0'}
|
engines: {node: '>= 12.0.0'}
|
||||||
cpu: [arm64]
|
cpu: [arm64]
|
||||||
os: [linux]
|
os: [linux]
|
||||||
libc: [glibc]
|
|
||||||
|
|
||||||
lightningcss-linux-arm64-gnu@1.30.2:
|
lightningcss-linux-arm64-gnu@1.30.2:
|
||||||
resolution: {integrity: sha512-UK65WJAbwIJbiBFXpxrbTNArtfuznvxAJw4Q2ZGlU8kPeDIWEX1dg3rn2veBVUylA2Ezg89ktszWbaQnxD/e3A==}
|
resolution: {integrity: sha512-UK65WJAbwIJbiBFXpxrbTNArtfuznvxAJw4Q2ZGlU8kPeDIWEX1dg3rn2veBVUylA2Ezg89ktszWbaQnxD/e3A==}
|
||||||
engines: {node: '>= 12.0.0'}
|
engines: {node: '>= 12.0.0'}
|
||||||
cpu: [arm64]
|
cpu: [arm64]
|
||||||
os: [linux]
|
os: [linux]
|
||||||
libc: [glibc]
|
|
||||||
|
|
||||||
lightningcss-linux-arm64-musl@1.27.0:
|
lightningcss-linux-arm64-musl@1.27.0:
|
||||||
resolution: {integrity: sha512-rCGBm2ax7kQ9pBSeITfCW9XSVF69VX+fm5DIpvDZQl4NnQoMQyRwhZQm9pd59m8leZ1IesRqWk2v/DntMo26lg==}
|
resolution: {integrity: sha512-rCGBm2ax7kQ9pBSeITfCW9XSVF69VX+fm5DIpvDZQl4NnQoMQyRwhZQm9pd59m8leZ1IesRqWk2v/DntMo26lg==}
|
||||||
engines: {node: '>= 12.0.0'}
|
engines: {node: '>= 12.0.0'}
|
||||||
cpu: [arm64]
|
cpu: [arm64]
|
||||||
os: [linux]
|
os: [linux]
|
||||||
libc: [musl]
|
|
||||||
|
|
||||||
lightningcss-linux-arm64-musl@1.30.2:
|
lightningcss-linux-arm64-musl@1.30.2:
|
||||||
resolution: {integrity: sha512-5Vh9dGeblpTxWHpOx8iauV02popZDsCYMPIgiuw97OJ5uaDsL86cnqSFs5LZkG3ghHoX5isLgWzMs+eD1YzrnA==}
|
resolution: {integrity: sha512-5Vh9dGeblpTxWHpOx8iauV02popZDsCYMPIgiuw97OJ5uaDsL86cnqSFs5LZkG3ghHoX5isLgWzMs+eD1YzrnA==}
|
||||||
engines: {node: '>= 12.0.0'}
|
engines: {node: '>= 12.0.0'}
|
||||||
cpu: [arm64]
|
cpu: [arm64]
|
||||||
os: [linux]
|
os: [linux]
|
||||||
libc: [musl]
|
|
||||||
|
|
||||||
lightningcss-linux-x64-gnu@1.27.0:
|
lightningcss-linux-x64-gnu@1.27.0:
|
||||||
resolution: {integrity: sha512-Dk/jovSI7qqhJDiUibvaikNKI2x6kWPN79AQiD/E/KeQWMjdGe9kw51RAgoWFDi0coP4jinaH14Nrt/J8z3U4A==}
|
resolution: {integrity: sha512-Dk/jovSI7qqhJDiUibvaikNKI2x6kWPN79AQiD/E/KeQWMjdGe9kw51RAgoWFDi0coP4jinaH14Nrt/J8z3U4A==}
|
||||||
engines: {node: '>= 12.0.0'}
|
engines: {node: '>= 12.0.0'}
|
||||||
cpu: [x64]
|
cpu: [x64]
|
||||||
os: [linux]
|
os: [linux]
|
||||||
libc: [glibc]
|
|
||||||
|
|
||||||
lightningcss-linux-x64-gnu@1.30.2:
|
lightningcss-linux-x64-gnu@1.30.2:
|
||||||
resolution: {integrity: sha512-Cfd46gdmj1vQ+lR6VRTTadNHu6ALuw2pKR9lYq4FnhvgBc4zWY1EtZcAc6EffShbb1MFrIPfLDXD6Xprbnni4w==}
|
resolution: {integrity: sha512-Cfd46gdmj1vQ+lR6VRTTadNHu6ALuw2pKR9lYq4FnhvgBc4zWY1EtZcAc6EffShbb1MFrIPfLDXD6Xprbnni4w==}
|
||||||
engines: {node: '>= 12.0.0'}
|
engines: {node: '>= 12.0.0'}
|
||||||
cpu: [x64]
|
cpu: [x64]
|
||||||
os: [linux]
|
os: [linux]
|
||||||
libc: [glibc]
|
|
||||||
|
|
||||||
lightningcss-linux-x64-musl@1.27.0:
|
lightningcss-linux-x64-musl@1.27.0:
|
||||||
resolution: {integrity: sha512-QKjTxXm8A9s6v9Tg3Fk0gscCQA1t/HMoF7Woy1u68wCk5kS4fR+q3vXa1p3++REW784cRAtkYKrPy6JKibrEZA==}
|
resolution: {integrity: sha512-QKjTxXm8A9s6v9Tg3Fk0gscCQA1t/HMoF7Woy1u68wCk5kS4fR+q3vXa1p3++REW784cRAtkYKrPy6JKibrEZA==}
|
||||||
engines: {node: '>= 12.0.0'}
|
engines: {node: '>= 12.0.0'}
|
||||||
cpu: [x64]
|
cpu: [x64]
|
||||||
os: [linux]
|
os: [linux]
|
||||||
libc: [musl]
|
|
||||||
|
|
||||||
lightningcss-linux-x64-musl@1.30.2:
|
lightningcss-linux-x64-musl@1.30.2:
|
||||||
resolution: {integrity: sha512-XJaLUUFXb6/QG2lGIW6aIk6jKdtjtcffUT0NKvIqhSBY3hh9Ch+1LCeH80dR9q9LBjG3ewbDjnumefsLsP6aiA==}
|
resolution: {integrity: sha512-XJaLUUFXb6/QG2lGIW6aIk6jKdtjtcffUT0NKvIqhSBY3hh9Ch+1LCeH80dR9q9LBjG3ewbDjnumefsLsP6aiA==}
|
||||||
engines: {node: '>= 12.0.0'}
|
engines: {node: '>= 12.0.0'}
|
||||||
cpu: [x64]
|
cpu: [x64]
|
||||||
os: [linux]
|
os: [linux]
|
||||||
libc: [musl]
|
|
||||||
|
|
||||||
lightningcss-win32-arm64-msvc@1.27.0:
|
lightningcss-win32-arm64-msvc@1.27.0:
|
||||||
resolution: {integrity: sha512-/wXegPS1hnhkeG4OXQKEMQeJd48RDC3qdh+OA8pCuOPCyvnm/yEayrJdJVqzBsqpy1aJklRCVxscpFur80o6iQ==}
|
resolution: {integrity: sha512-/wXegPS1hnhkeG4OXQKEMQeJd48RDC3qdh+OA8pCuOPCyvnm/yEayrJdJVqzBsqpy1aJklRCVxscpFur80o6iQ==}
|
||||||
@@ -5680,6 +5762,182 @@ packages:
|
|||||||
react: ^16.8 || ^17.0 || ^18.0 || ^19.0.0 || ^19.0.0-rc
|
react: ^16.8 || ^17.0 || ^18.0 || ^19.0.0 || ^19.0.0-rc
|
||||||
react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0.0 || ^19.0.0-rc
|
react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0.0 || ^19.0.0-rc
|
||||||
|
|
||||||
|
victory-area@37.3.6:
|
||||||
|
resolution: {integrity: sha512-wVC8LKrZJLiSySNuJLRCB449qZTsPiRyzLlNoJwe21y+XA/a2HJbmJSeywmo8P153aX8viKe1H8ygDsTFXQhHw==}
|
||||||
|
engines: {node: '>=18.0.0'}
|
||||||
|
peerDependencies:
|
||||||
|
react: '>=16.6.0'
|
||||||
|
|
||||||
|
victory-axis@37.3.6:
|
||||||
|
resolution: {integrity: sha512-Vi0dZvgmXmnCdoqc49WckeG5cMXnl7FTtqVhXu9JweA9cgCnkZabBd5mRvAjblb3Lo4j0HZCSPKHYWUPW70qZg==}
|
||||||
|
engines: {node: '>=18.0.0'}
|
||||||
|
peerDependencies:
|
||||||
|
react: '>=16.6.0'
|
||||||
|
|
||||||
|
victory-bar@37.3.6:
|
||||||
|
resolution: {integrity: sha512-jdATFRWL1LUW/yEpKWx/aId2BiU2o1pPF9+Kh1TFISBduJoI4ZqvZD90H1QK4f/z50PikqiqiDECaKoKM1jfOQ==}
|
||||||
|
engines: {node: '>=18.0.0'}
|
||||||
|
peerDependencies:
|
||||||
|
react: '>=16.6.0'
|
||||||
|
|
||||||
|
victory-box-plot@37.3.6:
|
||||||
|
resolution: {integrity: sha512-GOucnD63h14ScBuISC/nd1GBTEx6gIZfLE+0P0gyeH1poBKq0trTTvpQDvAMuGR8zICfEETG3ltmUMCwRrFyUg==}
|
||||||
|
engines: {node: '>=18.0.0'}
|
||||||
|
peerDependencies:
|
||||||
|
react: '>=16.6.0'
|
||||||
|
|
||||||
|
victory-brush-container@37.3.6:
|
||||||
|
resolution: {integrity: sha512-LfZ2CgX1cYAqCtYxcSB68OfZS2v0T2VLXoEArd0lCXfRBY1Gya7GacCUcuo7GoK9XOXeslx7S/U95aVutt1VLg==}
|
||||||
|
engines: {node: '>=18.0.0'}
|
||||||
|
peerDependencies:
|
||||||
|
react: '>=16.6.0'
|
||||||
|
|
||||||
|
victory-brush-line@37.3.6:
|
||||||
|
resolution: {integrity: sha512-zsZJfF1fUj4F7mUoIMV+h73qoTClPA4bKM1terlYrDBD8l/c/f0KBbEotu3E1X+n4QMmDRruswaB/YUdqK5QLA==}
|
||||||
|
engines: {node: '>=18.0.0'}
|
||||||
|
peerDependencies:
|
||||||
|
react: '>=16.6.0'
|
||||||
|
|
||||||
|
victory-candlestick@37.3.6:
|
||||||
|
resolution: {integrity: sha512-h/mOmkCrsWrirn4dFnpLxJPXpxT+uHxuYxnXGrAyH+YUOrVj3iKaDJlEiVlz5vy30syE5j5hzTQCMsZ/hzHNdg==}
|
||||||
|
engines: {node: '>=18.0.0'}
|
||||||
|
peerDependencies:
|
||||||
|
react: '>=16.6.0'
|
||||||
|
|
||||||
|
victory-canvas@37.3.6:
|
||||||
|
resolution: {integrity: sha512-1CD4S0uZ92sUGGSIEQferEfSqd/z9EXw9G6zkzPIoJeTKFshpfqCjUkNRx9Iu9Upxt3fUpId8Qwl1YfchmbrFg==}
|
||||||
|
engines: {node: '>=18.0.0'}
|
||||||
|
peerDependencies:
|
||||||
|
react: '>=16.6.0'
|
||||||
|
|
||||||
|
victory-chart@37.3.6:
|
||||||
|
resolution: {integrity: sha512-IkPo/W4AJ7bPu902TGER09OseR9ODm+FQAKfOBw4JsdEhZZ7BiG9zgd/25+x0r5EsTLu81CYGQVkBa+ZazcOlA==}
|
||||||
|
engines: {node: '>=18.0.0'}
|
||||||
|
peerDependencies:
|
||||||
|
react: '>=16.6.0'
|
||||||
|
|
||||||
|
victory-core@37.3.6:
|
||||||
|
resolution: {integrity: sha512-aFgO6KokxPbUCPznZP5UPhOdI22pMuwDXKDt6eoQOnkVim66Ia+K95TQar2nwVKGYV5j26aKVf/n9blwphGJRw==}
|
||||||
|
engines: {node: '>=18.0.0'}
|
||||||
|
peerDependencies:
|
||||||
|
react: '>=16.6.0'
|
||||||
|
|
||||||
|
victory-create-container@37.3.6:
|
||||||
|
resolution: {integrity: sha512-Uf5bFQvqUsXCjqpvBW4LhrdrHkM6dBqxYgub6FCsBb86f84xZQ3vY7jFkg/JfvF0oGKMoWXYYrYLC1sk+fcWVA==}
|
||||||
|
engines: {node: '>=18.0.0'}
|
||||||
|
peerDependencies:
|
||||||
|
react: '>=16.6.0'
|
||||||
|
|
||||||
|
victory-cursor-container@37.3.6:
|
||||||
|
resolution: {integrity: sha512-+Oiw57d5nE+iq8As8RvepknzmNtKq1Gsc50u1X3IRd4jXtX8zqZrgXGlVZ+BP/tkLsWnGYVjKulwKBf2oaEUuw==}
|
||||||
|
engines: {node: '>=18.0.0'}
|
||||||
|
peerDependencies:
|
||||||
|
react: '>=16.6.0'
|
||||||
|
|
||||||
|
victory-errorbar@37.3.6:
|
||||||
|
resolution: {integrity: sha512-WGAv/qizOlfmwKv+Yfxr4q6pDgTfloNQwi3Z3M0h8povjMZt74tHYkvi/TASSRYr3zv5kjUqUJ28qAyGMWwryQ==}
|
||||||
|
engines: {node: '>=18.0.0'}
|
||||||
|
peerDependencies:
|
||||||
|
react: '>=16.6.0'
|
||||||
|
|
||||||
|
victory-group@37.3.6:
|
||||||
|
resolution: {integrity: sha512-kgy/Azl5BxwlJAV0KDPGypv35TMrOD1J2ZxnJW2Wyyq+e8i0GGBIv5MoBzou64BRsDlS9V0CYRIjnkHgrBpB5w==}
|
||||||
|
engines: {node: '>=18.0.0'}
|
||||||
|
peerDependencies:
|
||||||
|
react: '>=16.6.0'
|
||||||
|
|
||||||
|
victory-histogram@37.3.6:
|
||||||
|
resolution: {integrity: sha512-K4d43MpXHYnGCLEMzfRpJ+lCRRDKALPi/juxfMGVzBPzSMgjC8h9x6hKdxaejiTd/E04UdzNO7J24plL3Uz8rA==}
|
||||||
|
engines: {node: '>=18.0.0'}
|
||||||
|
peerDependencies:
|
||||||
|
react: '>=16.6.0'
|
||||||
|
|
||||||
|
victory-legend@37.3.6:
|
||||||
|
resolution: {integrity: sha512-vRRrhj3/ENqKVLdaBMzEmR83N6BOjox1bthYT1eJjN2H5SIK35bxn30IkiV/Pz3y627EqZe4TAWaxc0jiJlCiA==}
|
||||||
|
engines: {node: '>=18.0.0'}
|
||||||
|
peerDependencies:
|
||||||
|
react: '>=16.6.0'
|
||||||
|
|
||||||
|
victory-line@37.3.6:
|
||||||
|
resolution: {integrity: sha512-Ke817uf/qFbN9jU7Dba7CrcHXYO5wAZuKKnyeHJmLDeQeFST0773xejnIuC+dBgZipjFr4KIbSd+VcUafFNE1g==}
|
||||||
|
engines: {node: '>=18.0.0'}
|
||||||
|
peerDependencies:
|
||||||
|
react: '>=16.6.0'
|
||||||
|
|
||||||
|
victory-native@37.3.6:
|
||||||
|
resolution: {integrity: sha512-3m7kg4MtI4ZCzYuz4NT2N6AXiBMRwC3HiDoF5RhE8kaTeLd7iCi2YNi8y6F3FIU9gRrLiXWkyky054O3iZXVjw==}
|
||||||
|
peerDependencies:
|
||||||
|
react: '>=16.6.0'
|
||||||
|
|
||||||
|
victory-pie@37.3.6:
|
||||||
|
resolution: {integrity: sha512-tvdgAZ/HQWlo3KDDe0XAVbizHuaNMbgkkiF7zfA7Ww+3bHSs+0P9dsDtK2xP365D8gBCOv8pWmuzvKRhzNbqeA==}
|
||||||
|
engines: {node: '>=18.0.0'}
|
||||||
|
peerDependencies:
|
||||||
|
react: '>=16.6.0'
|
||||||
|
|
||||||
|
victory-polar-axis@37.3.6:
|
||||||
|
resolution: {integrity: sha512-RpFsCkzHezJq5P+C/wtVdjEHX25JIFsSgs6qYSnfr/hayaFbWgK5HhRFpriQm5hg61cx47WxAOLyHvzf0nasvw==}
|
||||||
|
engines: {node: '>=18.0.0'}
|
||||||
|
peerDependencies:
|
||||||
|
react: '>=16.6.0'
|
||||||
|
|
||||||
|
victory-scatter@37.3.6:
|
||||||
|
resolution: {integrity: sha512-fp95zMTPXgW1cmTowzDXhn+KxePMVDrzU0lotsHQMdBV7eB+ioXdu9hORlx4VHmMYg2ihsGwRTF+VAZ7rGxphA==}
|
||||||
|
engines: {node: '>=18.0.0'}
|
||||||
|
peerDependencies:
|
||||||
|
react: '>=16.6.0'
|
||||||
|
|
||||||
|
victory-selection-container@37.3.6:
|
||||||
|
resolution: {integrity: sha512-gd3qODDlBtLEJM7+2jCXk2YcLBUmIpYEEHswytMhwc6zihxXipGBUHRulhLj/I05mKay2gaOAg5ewiJHd4Awgw==}
|
||||||
|
engines: {node: '>=18.0.0'}
|
||||||
|
peerDependencies:
|
||||||
|
react: '>=16.6.0'
|
||||||
|
|
||||||
|
victory-shared-events@37.3.6:
|
||||||
|
resolution: {integrity: sha512-ygrbOtzLUTbtKebacZKyQRekhSAROnAvMkVI/PKsAGsz0ClY9P7qDEJG7eTUUygjO6ax0tI6WNE6JogQzeD1gw==}
|
||||||
|
engines: {node: '>=18.0.0'}
|
||||||
|
peerDependencies:
|
||||||
|
react: '>=16.6.0'
|
||||||
|
|
||||||
|
victory-stack@37.3.6:
|
||||||
|
resolution: {integrity: sha512-ldod04RdqGJGH5p5eWXCofdTkbhZqIp3iwW7NpxSbMDLs8zPQIVvDFVtuJgMwQiC5vnIpbhMmxVeFbr8m64ZKA==}
|
||||||
|
engines: {node: '>=18.0.0'}
|
||||||
|
peerDependencies:
|
||||||
|
react: '>=16.6.0'
|
||||||
|
|
||||||
|
victory-tooltip@37.3.6:
|
||||||
|
resolution: {integrity: sha512-vqaJS9noauOqDDBBAV9Ln9duOY/i17h1DCfCPAqhwPFyvFbwKvAub9zPTeYWAm/14VvWX5O/0yekFCVbcC7hjg==}
|
||||||
|
engines: {node: '>=18.0.0'}
|
||||||
|
peerDependencies:
|
||||||
|
react: '>=16.6.0'
|
||||||
|
|
||||||
|
victory-vendor@37.3.6:
|
||||||
|
resolution: {integrity: sha512-SbPDPdDBYp+5MJHhBCAyI7wKM3d5ivekigc2Dk2s7pgbZ9wIgIBYGVw4zGHBml/qTFbexrofXW6Gu4noGxrOwQ==}
|
||||||
|
|
||||||
|
victory-voronoi-container@37.3.6:
|
||||||
|
resolution: {integrity: sha512-qAAG0rMuK7A4EoJ4cyUk5wNdOW+HuCXNKPOko+hYK6wWOYXJvFhiglYyA85a695YyAXECc6JyJS/crm4IOEFag==}
|
||||||
|
engines: {node: '>=18.0.0'}
|
||||||
|
peerDependencies:
|
||||||
|
react: '>=16.6.0'
|
||||||
|
|
||||||
|
victory-voronoi@37.3.6:
|
||||||
|
resolution: {integrity: sha512-Q+1FWHp8IAbmDL9pGWS0y0N4Cb5qmD9OOgxoxCfIDsLlhGvd6LddhRoknWsN7WnreaK+XiwjSfQkdMTCZ4hdhQ==}
|
||||||
|
engines: {node: '>=18.0.0'}
|
||||||
|
peerDependencies:
|
||||||
|
react: '>=16.6.0'
|
||||||
|
|
||||||
|
victory-zoom-container@37.3.6:
|
||||||
|
resolution: {integrity: sha512-AGL+k20mI44OL5b0VgIxlmnNSefIoFmbbim5NraPmIxbtns9qQW/56ivIncJcYomBungIx99gUpsEpcQaMNHgQ==}
|
||||||
|
engines: {node: '>=18.0.0'}
|
||||||
|
peerDependencies:
|
||||||
|
react: '>=16.6.0'
|
||||||
|
|
||||||
|
victory@37.3.6:
|
||||||
|
resolution: {integrity: sha512-CZ1vjvra0R1U3T2dMI4EsjI8Ng+JmQ2ox/EweSzjkTnHfW/Vn5ylryadawDiYjDMcBvABjO3uODsIlSEm4d/Sw==}
|
||||||
|
engines: {node: '>=18.0.0'}
|
||||||
|
peerDependencies:
|
||||||
|
react: '>=16.6.0'
|
||||||
|
|
||||||
vlq@1.0.1:
|
vlq@1.0.1:
|
||||||
resolution: {integrity: sha512-gQpnTgkubC6hQgdIcRdYGDSDc+SaujOdyesZQMv6JlfQee/9Mp0Qhnys6WxDWvQnL5WZdT7o2Ul187aSt0Rq+w==}
|
resolution: {integrity: sha512-gQpnTgkubC6hQgdIcRdYGDSDc+SaujOdyesZQMv6JlfQee/9Mp0Qhnys6WxDWvQnL5WZdT7o2Ul187aSt0Rq+w==}
|
||||||
|
|
||||||
@@ -8724,6 +8982,30 @@ snapshots:
|
|||||||
|
|
||||||
'@types/big.js@6.2.2': {}
|
'@types/big.js@6.2.2': {}
|
||||||
|
|
||||||
|
'@types/d3-array@3.2.2': {}
|
||||||
|
|
||||||
|
'@types/d3-color@3.1.3': {}
|
||||||
|
|
||||||
|
'@types/d3-ease@3.0.2': {}
|
||||||
|
|
||||||
|
'@types/d3-interpolate@3.0.4':
|
||||||
|
dependencies:
|
||||||
|
'@types/d3-color': 3.1.3
|
||||||
|
|
||||||
|
'@types/d3-path@3.1.1': {}
|
||||||
|
|
||||||
|
'@types/d3-scale@4.0.9':
|
||||||
|
dependencies:
|
||||||
|
'@types/d3-time': 3.0.4
|
||||||
|
|
||||||
|
'@types/d3-shape@3.1.8':
|
||||||
|
dependencies:
|
||||||
|
'@types/d3-path': 3.1.1
|
||||||
|
|
||||||
|
'@types/d3-time@3.0.4': {}
|
||||||
|
|
||||||
|
'@types/d3-timer@3.0.2': {}
|
||||||
|
|
||||||
'@types/debug@4.1.12':
|
'@types/debug@4.1.12':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@types/ms': 2.1.0
|
'@types/ms': 2.1.0
|
||||||
@@ -9482,6 +9764,46 @@ snapshots:
|
|||||||
|
|
||||||
csstype@3.2.0: {}
|
csstype@3.2.0: {}
|
||||||
|
|
||||||
|
d3-array@3.2.4:
|
||||||
|
dependencies:
|
||||||
|
internmap: 2.0.3
|
||||||
|
|
||||||
|
d3-color@3.1.0: {}
|
||||||
|
|
||||||
|
d3-ease@3.0.1: {}
|
||||||
|
|
||||||
|
d3-format@3.1.2: {}
|
||||||
|
|
||||||
|
d3-interpolate@3.0.1:
|
||||||
|
dependencies:
|
||||||
|
d3-color: 3.1.0
|
||||||
|
|
||||||
|
d3-path@3.1.0: {}
|
||||||
|
|
||||||
|
d3-scale@4.0.2:
|
||||||
|
dependencies:
|
||||||
|
d3-array: 3.2.4
|
||||||
|
d3-format: 3.1.2
|
||||||
|
d3-interpolate: 3.0.1
|
||||||
|
d3-time: 3.1.0
|
||||||
|
d3-time-format: 4.1.0
|
||||||
|
|
||||||
|
d3-shape@3.2.0:
|
||||||
|
dependencies:
|
||||||
|
d3-path: 3.1.0
|
||||||
|
|
||||||
|
d3-time-format@4.1.0:
|
||||||
|
dependencies:
|
||||||
|
d3-time: 3.1.0
|
||||||
|
|
||||||
|
d3-time@3.1.0:
|
||||||
|
dependencies:
|
||||||
|
d3-array: 3.2.4
|
||||||
|
|
||||||
|
d3-timer@3.0.1: {}
|
||||||
|
|
||||||
|
d3-voronoi@1.1.4: {}
|
||||||
|
|
||||||
dayjs@1.11.19: {}
|
dayjs@1.11.19: {}
|
||||||
|
|
||||||
debug@2.6.9:
|
debug@2.6.9:
|
||||||
@@ -9522,6 +9844,12 @@ snapshots:
|
|||||||
|
|
||||||
define-lazy-prop@2.0.0: {}
|
define-lazy-prop@2.0.0: {}
|
||||||
|
|
||||||
|
delaunator@4.0.1: {}
|
||||||
|
|
||||||
|
delaunay-find@0.0.6:
|
||||||
|
dependencies:
|
||||||
|
delaunator: 4.0.1
|
||||||
|
|
||||||
delayed-stream@1.0.0: {}
|
delayed-stream@1.0.0: {}
|
||||||
|
|
||||||
depd@2.0.0: {}
|
depd@2.0.0: {}
|
||||||
@@ -10465,6 +10793,8 @@ snapshots:
|
|||||||
dependencies:
|
dependencies:
|
||||||
css-in-js-utils: 3.1.0
|
css-in-js-utils: 3.1.0
|
||||||
|
|
||||||
|
internmap@2.0.3: {}
|
||||||
|
|
||||||
intl-messageformat@10.7.18:
|
intl-messageformat@10.7.18:
|
||||||
dependencies:
|
dependencies:
|
||||||
'@formatjs/ecma402-abstract': 2.3.6
|
'@formatjs/ecma402-abstract': 2.3.6
|
||||||
@@ -10637,6 +10967,8 @@ snapshots:
|
|||||||
|
|
||||||
json-stable-stringify-without-jsonify@1.0.1: {}
|
json-stable-stringify-without-jsonify@1.0.1: {}
|
||||||
|
|
||||||
|
json-stringify-safe@5.0.1: {}
|
||||||
|
|
||||||
json5@2.2.3: {}
|
json5@2.2.3: {}
|
||||||
|
|
||||||
jsonc-eslint-parser@2.4.1:
|
jsonc-eslint-parser@2.4.1:
|
||||||
@@ -12690,6 +13022,281 @@ snapshots:
|
|||||||
- '@types/react'
|
- '@types/react'
|
||||||
- '@types/react-dom'
|
- '@types/react-dom'
|
||||||
|
|
||||||
|
victory-area@37.3.6(react@19.1.0):
|
||||||
|
dependencies:
|
||||||
|
lodash: 4.17.21
|
||||||
|
react: 19.1.0
|
||||||
|
victory-core: 37.3.6(react@19.1.0)
|
||||||
|
victory-vendor: 37.3.6
|
||||||
|
|
||||||
|
victory-axis@37.3.6(react@19.1.0):
|
||||||
|
dependencies:
|
||||||
|
lodash: 4.17.21
|
||||||
|
react: 19.1.0
|
||||||
|
victory-core: 37.3.6(react@19.1.0)
|
||||||
|
|
||||||
|
victory-bar@37.3.6(react@19.1.0):
|
||||||
|
dependencies:
|
||||||
|
lodash: 4.17.21
|
||||||
|
react: 19.1.0
|
||||||
|
victory-core: 37.3.6(react@19.1.0)
|
||||||
|
victory-vendor: 37.3.6
|
||||||
|
|
||||||
|
victory-box-plot@37.3.6(react@19.1.0):
|
||||||
|
dependencies:
|
||||||
|
lodash: 4.17.21
|
||||||
|
react: 19.1.0
|
||||||
|
victory-core: 37.3.6(react@19.1.0)
|
||||||
|
victory-vendor: 37.3.6
|
||||||
|
|
||||||
|
victory-brush-container@37.3.6(react@19.1.0):
|
||||||
|
dependencies:
|
||||||
|
lodash: 4.17.21
|
||||||
|
react: 19.1.0
|
||||||
|
react-fast-compare: 3.2.2
|
||||||
|
victory-core: 37.3.6(react@19.1.0)
|
||||||
|
|
||||||
|
victory-brush-line@37.3.6(react@19.1.0):
|
||||||
|
dependencies:
|
||||||
|
lodash: 4.17.21
|
||||||
|
react: 19.1.0
|
||||||
|
react-fast-compare: 3.2.2
|
||||||
|
victory-core: 37.3.6(react@19.1.0)
|
||||||
|
|
||||||
|
victory-candlestick@37.3.6(react@19.1.0):
|
||||||
|
dependencies:
|
||||||
|
lodash: 4.17.21
|
||||||
|
react: 19.1.0
|
||||||
|
victory-core: 37.3.6(react@19.1.0)
|
||||||
|
|
||||||
|
victory-canvas@37.3.6(react@19.1.0):
|
||||||
|
dependencies:
|
||||||
|
lodash: 4.17.21
|
||||||
|
react: 19.1.0
|
||||||
|
victory-bar: 37.3.6(react@19.1.0)
|
||||||
|
victory-core: 37.3.6(react@19.1.0)
|
||||||
|
|
||||||
|
victory-chart@37.3.6(react@19.1.0):
|
||||||
|
dependencies:
|
||||||
|
lodash: 4.17.21
|
||||||
|
react: 19.1.0
|
||||||
|
react-fast-compare: 3.2.2
|
||||||
|
victory-axis: 37.3.6(react@19.1.0)
|
||||||
|
victory-core: 37.3.6(react@19.1.0)
|
||||||
|
victory-polar-axis: 37.3.6(react@19.1.0)
|
||||||
|
victory-shared-events: 37.3.6(react@19.1.0)
|
||||||
|
|
||||||
|
victory-core@37.3.6(react@19.1.0):
|
||||||
|
dependencies:
|
||||||
|
lodash: 4.17.21
|
||||||
|
react: 19.1.0
|
||||||
|
react-fast-compare: 3.2.2
|
||||||
|
victory-vendor: 37.3.6
|
||||||
|
|
||||||
|
victory-create-container@37.3.6(react@19.1.0):
|
||||||
|
dependencies:
|
||||||
|
lodash: 4.17.21
|
||||||
|
react: 19.1.0
|
||||||
|
victory-brush-container: 37.3.6(react@19.1.0)
|
||||||
|
victory-core: 37.3.6(react@19.1.0)
|
||||||
|
victory-cursor-container: 37.3.6(react@19.1.0)
|
||||||
|
victory-selection-container: 37.3.6(react@19.1.0)
|
||||||
|
victory-voronoi-container: 37.3.6(react@19.1.0)
|
||||||
|
victory-zoom-container: 37.3.6(react@19.1.0)
|
||||||
|
|
||||||
|
victory-cursor-container@37.3.6(react@19.1.0):
|
||||||
|
dependencies:
|
||||||
|
lodash: 4.17.21
|
||||||
|
react: 19.1.0
|
||||||
|
victory-core: 37.3.6(react@19.1.0)
|
||||||
|
|
||||||
|
victory-errorbar@37.3.6(react@19.1.0):
|
||||||
|
dependencies:
|
||||||
|
lodash: 4.17.21
|
||||||
|
react: 19.1.0
|
||||||
|
victory-core: 37.3.6(react@19.1.0)
|
||||||
|
|
||||||
|
victory-group@37.3.6(react@19.1.0):
|
||||||
|
dependencies:
|
||||||
|
lodash: 4.17.21
|
||||||
|
react: 19.1.0
|
||||||
|
react-fast-compare: 3.2.2
|
||||||
|
victory-core: 37.3.6(react@19.1.0)
|
||||||
|
victory-shared-events: 37.3.6(react@19.1.0)
|
||||||
|
|
||||||
|
victory-histogram@37.3.6(react@19.1.0):
|
||||||
|
dependencies:
|
||||||
|
lodash: 4.17.21
|
||||||
|
react: 19.1.0
|
||||||
|
react-fast-compare: 3.2.2
|
||||||
|
victory-bar: 37.3.6(react@19.1.0)
|
||||||
|
victory-core: 37.3.6(react@19.1.0)
|
||||||
|
victory-vendor: 37.3.6
|
||||||
|
|
||||||
|
victory-legend@37.3.6(react@19.1.0):
|
||||||
|
dependencies:
|
||||||
|
lodash: 4.17.21
|
||||||
|
react: 19.1.0
|
||||||
|
victory-core: 37.3.6(react@19.1.0)
|
||||||
|
|
||||||
|
victory-line@37.3.6(react@19.1.0):
|
||||||
|
dependencies:
|
||||||
|
lodash: 4.17.21
|
||||||
|
react: 19.1.0
|
||||||
|
victory-core: 37.3.6(react@19.1.0)
|
||||||
|
victory-vendor: 37.3.6
|
||||||
|
|
||||||
|
victory-native@37.3.6(react@19.1.0):
|
||||||
|
dependencies:
|
||||||
|
hoist-non-react-statics: 3.3.2
|
||||||
|
lodash: 4.17.21
|
||||||
|
react: 19.1.0
|
||||||
|
react-fast-compare: 3.2.2
|
||||||
|
victory: 37.3.6(react@19.1.0)
|
||||||
|
victory-area: 37.3.6(react@19.1.0)
|
||||||
|
victory-axis: 37.3.6(react@19.1.0)
|
||||||
|
victory-bar: 37.3.6(react@19.1.0)
|
||||||
|
victory-box-plot: 37.3.6(react@19.1.0)
|
||||||
|
victory-brush-container: 37.3.6(react@19.1.0)
|
||||||
|
victory-brush-line: 37.3.6(react@19.1.0)
|
||||||
|
victory-candlestick: 37.3.6(react@19.1.0)
|
||||||
|
victory-chart: 37.3.6(react@19.1.0)
|
||||||
|
victory-core: 37.3.6(react@19.1.0)
|
||||||
|
victory-create-container: 37.3.6(react@19.1.0)
|
||||||
|
victory-cursor-container: 37.3.6(react@19.1.0)
|
||||||
|
victory-errorbar: 37.3.6(react@19.1.0)
|
||||||
|
victory-group: 37.3.6(react@19.1.0)
|
||||||
|
victory-histogram: 37.3.6(react@19.1.0)
|
||||||
|
victory-legend: 37.3.6(react@19.1.0)
|
||||||
|
victory-line: 37.3.6(react@19.1.0)
|
||||||
|
victory-pie: 37.3.6(react@19.1.0)
|
||||||
|
victory-polar-axis: 37.3.6(react@19.1.0)
|
||||||
|
victory-scatter: 37.3.6(react@19.1.0)
|
||||||
|
victory-selection-container: 37.3.6(react@19.1.0)
|
||||||
|
victory-shared-events: 37.3.6(react@19.1.0)
|
||||||
|
victory-stack: 37.3.6(react@19.1.0)
|
||||||
|
victory-tooltip: 37.3.6(react@19.1.0)
|
||||||
|
victory-voronoi: 37.3.6(react@19.1.0)
|
||||||
|
victory-voronoi-container: 37.3.6(react@19.1.0)
|
||||||
|
victory-zoom-container: 37.3.6(react@19.1.0)
|
||||||
|
|
||||||
|
victory-pie@37.3.6(react@19.1.0):
|
||||||
|
dependencies:
|
||||||
|
lodash: 4.17.21
|
||||||
|
react: 19.1.0
|
||||||
|
victory-core: 37.3.6(react@19.1.0)
|
||||||
|
victory-vendor: 37.3.6
|
||||||
|
|
||||||
|
victory-polar-axis@37.3.6(react@19.1.0):
|
||||||
|
dependencies:
|
||||||
|
lodash: 4.17.21
|
||||||
|
react: 19.1.0
|
||||||
|
victory-core: 37.3.6(react@19.1.0)
|
||||||
|
|
||||||
|
victory-scatter@37.3.6(react@19.1.0):
|
||||||
|
dependencies:
|
||||||
|
lodash: 4.17.21
|
||||||
|
react: 19.1.0
|
||||||
|
victory-core: 37.3.6(react@19.1.0)
|
||||||
|
|
||||||
|
victory-selection-container@37.3.6(react@19.1.0):
|
||||||
|
dependencies:
|
||||||
|
lodash: 4.17.21
|
||||||
|
react: 19.1.0
|
||||||
|
victory-core: 37.3.6(react@19.1.0)
|
||||||
|
|
||||||
|
victory-shared-events@37.3.6(react@19.1.0):
|
||||||
|
dependencies:
|
||||||
|
json-stringify-safe: 5.0.1
|
||||||
|
lodash: 4.17.21
|
||||||
|
react: 19.1.0
|
||||||
|
react-fast-compare: 3.2.2
|
||||||
|
victory-core: 37.3.6(react@19.1.0)
|
||||||
|
|
||||||
|
victory-stack@37.3.6(react@19.1.0):
|
||||||
|
dependencies:
|
||||||
|
lodash: 4.17.21
|
||||||
|
react: 19.1.0
|
||||||
|
react-fast-compare: 3.2.2
|
||||||
|
victory-core: 37.3.6(react@19.1.0)
|
||||||
|
victory-shared-events: 37.3.6(react@19.1.0)
|
||||||
|
|
||||||
|
victory-tooltip@37.3.6(react@19.1.0):
|
||||||
|
dependencies:
|
||||||
|
lodash: 4.17.21
|
||||||
|
react: 19.1.0
|
||||||
|
victory-core: 37.3.6(react@19.1.0)
|
||||||
|
|
||||||
|
victory-vendor@37.3.6:
|
||||||
|
dependencies:
|
||||||
|
'@types/d3-array': 3.2.2
|
||||||
|
'@types/d3-ease': 3.0.2
|
||||||
|
'@types/d3-interpolate': 3.0.4
|
||||||
|
'@types/d3-scale': 4.0.9
|
||||||
|
'@types/d3-shape': 3.1.8
|
||||||
|
'@types/d3-time': 3.0.4
|
||||||
|
'@types/d3-timer': 3.0.2
|
||||||
|
d3-array: 3.2.4
|
||||||
|
d3-ease: 3.0.1
|
||||||
|
d3-interpolate: 3.0.1
|
||||||
|
d3-scale: 4.0.2
|
||||||
|
d3-shape: 3.2.0
|
||||||
|
d3-time: 3.1.0
|
||||||
|
d3-timer: 3.0.1
|
||||||
|
|
||||||
|
victory-voronoi-container@37.3.6(react@19.1.0):
|
||||||
|
dependencies:
|
||||||
|
delaunay-find: 0.0.6
|
||||||
|
lodash: 4.17.21
|
||||||
|
react: 19.1.0
|
||||||
|
react-fast-compare: 3.2.2
|
||||||
|
victory-core: 37.3.6(react@19.1.0)
|
||||||
|
victory-tooltip: 37.3.6(react@19.1.0)
|
||||||
|
|
||||||
|
victory-voronoi@37.3.6(react@19.1.0):
|
||||||
|
dependencies:
|
||||||
|
d3-voronoi: 1.1.4
|
||||||
|
lodash: 4.17.21
|
||||||
|
react: 19.1.0
|
||||||
|
victory-core: 37.3.6(react@19.1.0)
|
||||||
|
|
||||||
|
victory-zoom-container@37.3.6(react@19.1.0):
|
||||||
|
dependencies:
|
||||||
|
lodash: 4.17.21
|
||||||
|
react: 19.1.0
|
||||||
|
victory-core: 37.3.6(react@19.1.0)
|
||||||
|
|
||||||
|
victory@37.3.6(react@19.1.0):
|
||||||
|
dependencies:
|
||||||
|
react: 19.1.0
|
||||||
|
victory-area: 37.3.6(react@19.1.0)
|
||||||
|
victory-axis: 37.3.6(react@19.1.0)
|
||||||
|
victory-bar: 37.3.6(react@19.1.0)
|
||||||
|
victory-box-plot: 37.3.6(react@19.1.0)
|
||||||
|
victory-brush-container: 37.3.6(react@19.1.0)
|
||||||
|
victory-brush-line: 37.3.6(react@19.1.0)
|
||||||
|
victory-candlestick: 37.3.6(react@19.1.0)
|
||||||
|
victory-canvas: 37.3.6(react@19.1.0)
|
||||||
|
victory-chart: 37.3.6(react@19.1.0)
|
||||||
|
victory-core: 37.3.6(react@19.1.0)
|
||||||
|
victory-create-container: 37.3.6(react@19.1.0)
|
||||||
|
victory-cursor-container: 37.3.6(react@19.1.0)
|
||||||
|
victory-errorbar: 37.3.6(react@19.1.0)
|
||||||
|
victory-group: 37.3.6(react@19.1.0)
|
||||||
|
victory-histogram: 37.3.6(react@19.1.0)
|
||||||
|
victory-legend: 37.3.6(react@19.1.0)
|
||||||
|
victory-line: 37.3.6(react@19.1.0)
|
||||||
|
victory-pie: 37.3.6(react@19.1.0)
|
||||||
|
victory-polar-axis: 37.3.6(react@19.1.0)
|
||||||
|
victory-scatter: 37.3.6(react@19.1.0)
|
||||||
|
victory-selection-container: 37.3.6(react@19.1.0)
|
||||||
|
victory-shared-events: 37.3.6(react@19.1.0)
|
||||||
|
victory-stack: 37.3.6(react@19.1.0)
|
||||||
|
victory-tooltip: 37.3.6(react@19.1.0)
|
||||||
|
victory-voronoi: 37.3.6(react@19.1.0)
|
||||||
|
victory-voronoi-container: 37.3.6(react@19.1.0)
|
||||||
|
victory-zoom-container: 37.3.6(react@19.1.0)
|
||||||
|
|
||||||
vlq@1.0.1: {}
|
vlq@1.0.1: {}
|
||||||
|
|
||||||
vue-eslint-parser@10.2.0(eslint@9.39.1(jiti@1.21.7)):
|
vue-eslint-parser@10.2.0(eslint@9.39.1(jiti@1.21.7)):
|
||||||
|
|||||||
@@ -1,17 +1,6 @@
|
|||||||
|
import { DateRangePicker } from '@yz1311/react-native-wheel-picker'
|
||||||
import React from 'react'
|
import React from 'react'
|
||||||
import { Button, ButtonText } from '@/components/ui/button'
|
import { Button, ButtonText } from '@/components/ui/button'
|
||||||
import {
|
|
||||||
Drawer,
|
|
||||||
DrawerBackdrop,
|
|
||||||
DrawerBody,
|
|
||||||
DrawerCloseButton,
|
|
||||||
DrawerContent,
|
|
||||||
DrawerFooter,
|
|
||||||
DrawerHeader,
|
|
||||||
} from '@/components/ui/drawer'
|
|
||||||
import { Heading } from '@/components/ui/heading'
|
|
||||||
import { CloseIcon, Icon } from '@/components/ui/icon'
|
|
||||||
import { Text } from '@/components/ui/text'
|
|
||||||
|
|
||||||
export default function Example() {
|
export default function Example() {
|
||||||
const [showDrawer, setShowDrawer] = React.useState(false)
|
const [showDrawer, setShowDrawer] = React.useState(false)
|
||||||
@@ -21,39 +10,31 @@ export default function Example() {
|
|||||||
onPress={() => {
|
onPress={() => {
|
||||||
setShowDrawer(true)
|
setShowDrawer(true)
|
||||||
}}
|
}}
|
||||||
|
className="mt-10"
|
||||||
>
|
>
|
||||||
<ButtonText>Open Drawer</ButtonText>
|
<ButtonText>Open Drawer</ButtonText>
|
||||||
</Button>
|
</Button>
|
||||||
<Drawer
|
|
||||||
isOpen={showDrawer}
|
<DateRangePicker
|
||||||
anchor="bottom"
|
pickerTitle="预约时间"
|
||||||
size="lg"
|
pickerCancelBtnText="取消"
|
||||||
onClose={() => {
|
pickerConfirmBtnText="确认"
|
||||||
|
// 开启modal模式
|
||||||
|
isModal={true}
|
||||||
|
// 可以自定义modal的一些属性
|
||||||
|
modalProps={{
|
||||||
|
|
||||||
|
}}
|
||||||
|
modalVisible={showDrawer}
|
||||||
|
// modalVisible回调函数
|
||||||
|
onModalVisibleChange={(visible) => {
|
||||||
|
}}
|
||||||
|
onPickerCancel={() => {
|
||||||
|
}}
|
||||||
|
onPickerConfirm={(date) => {
|
||||||
setShowDrawer(false)
|
setShowDrawer(false)
|
||||||
}}
|
}}
|
||||||
>
|
/>
|
||||||
<DrawerBackdrop />
|
|
||||||
<DrawerContent>
|
|
||||||
<DrawerHeader>
|
|
||||||
<Text>取消</Text>
|
|
||||||
<Text>分类设置</Text>
|
|
||||||
<Text>确认</Text>
|
|
||||||
</DrawerHeader>
|
|
||||||
<DrawerBody>
|
|
||||||
<Text>This is the basic drawer component.</Text>
|
|
||||||
</DrawerBody>
|
|
||||||
<DrawerFooter>
|
|
||||||
<Button
|
|
||||||
variant="outline"
|
|
||||||
onPress={() => {
|
|
||||||
setShowDrawer(false)
|
|
||||||
}}
|
|
||||||
>
|
|
||||||
<ButtonText>Cancel</ButtonText>
|
|
||||||
</Button>
|
|
||||||
</DrawerFooter>
|
|
||||||
</DrawerContent>
|
|
||||||
</Drawer>
|
|
||||||
</>
|
</>
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
@@ -1,5 +1,5 @@
|
|||||||
import { useFocusEffect, useRouter } from 'expo-router'
|
import { useFocusEffect, useRouter } from 'expo-router'
|
||||||
import React, { useCallback, useEffect, useState } from 'react'
|
import React, { useCallback, useState } from 'react'
|
||||||
import { Image, Text, TouchableOpacity, View } from 'react-native'
|
import { Image, Text, TouchableOpacity, View } from 'react-native'
|
||||||
import { SafeAreaView, useSafeAreaInsets } from 'react-native-safe-area-context'
|
import { SafeAreaView, useSafeAreaInsets } from 'react-native-safe-area-context'
|
||||||
import { ADatePicker, ADrawer, AListItem, LucideIcon } from '@/components/common/ao'
|
import { ADatePicker, ADrawer, AListItem, LucideIcon } from '@/components/common/ao'
|
||||||
@@ -84,7 +84,6 @@ export default function Money() {
|
|||||||
>
|
>
|
||||||
<LucideIcon icon="Menu" size={24} clickable={false} />
|
<LucideIcon icon="Menu" size={24} clickable={false} />
|
||||||
</TouchableOpacity>
|
</TouchableOpacity>
|
||||||
|
|
||||||
</View>
|
</View>
|
||||||
|
|
||||||
<View
|
<View
|
||||||
@@ -208,6 +207,7 @@ export default function Money() {
|
|||||||
text="类别设置"
|
text="类别设置"
|
||||||
onPress={() => {
|
onPress={() => {
|
||||||
router.navigate('/money/category/setting')
|
router.navigate('/money/category/setting')
|
||||||
|
setShowActionsMenu(false)
|
||||||
}}
|
}}
|
||||||
/>
|
/>
|
||||||
</View>
|
</View>
|
||||||
@@ -217,7 +217,14 @@ export default function Money() {
|
|||||||
<Text className="text-gray-600 font-semibold text-sm">统计分析</Text>
|
<Text className="text-gray-600 font-semibold text-sm">统计分析</Text>
|
||||||
|
|
||||||
<View className="p-1">
|
<View className="p-1">
|
||||||
<AListItem icon="ChartSpline" text="图表分析" />
|
<AListItem
|
||||||
|
icon="ChartSpline"
|
||||||
|
text="图表分析"
|
||||||
|
onPress={() => {
|
||||||
|
router.navigate('/money/analysis')
|
||||||
|
setShowActionsMenu(false)
|
||||||
|
}}
|
||||||
|
/>
|
||||||
</View>
|
</View>
|
||||||
</View>
|
</View>
|
||||||
</SafeAreaView>
|
</SafeAreaView>
|
||||||
|
|||||||
@@ -0,0 +1,126 @@
|
|||||||
|
import dayjs from 'dayjs'
|
||||||
|
import { useState } from 'react'
|
||||||
|
import { Text, TouchableOpacity, View } from 'react-native'
|
||||||
|
import { VictoryChart, VictoryLine, VictoryPie, VictoryTheme, VictoryTooltip, VictoryVoronoiContainer } from 'victory-native'
|
||||||
|
import { ADatePicker, ASegmentedTabs, LucideIcon } from '@/components/common/ao'
|
||||||
|
import CustomHeader from '@/components/custom/Header'
|
||||||
|
import PagerTabs from '@/components/custom/PagerTabs'
|
||||||
|
|
||||||
|
type GroupBy = 'day' | 'month' | 'year'
|
||||||
|
type AnalysisType = 'expense' | 'income'
|
||||||
|
|
||||||
|
interface AnalysisContentProps {
|
||||||
|
analysisType: AnalysisType
|
||||||
|
}
|
||||||
|
|
||||||
|
export default function Analysis() {
|
||||||
|
function AnalysisContent({ analysisType }: AnalysisContentProps) {
|
||||||
|
const [timeType, setTimeType] = useState<number>(0)
|
||||||
|
const [groupBy, setGroupBy] = useState<GroupBy>('day')
|
||||||
|
|
||||||
|
const [startDate, setStartDate] = useState(
|
||||||
|
dayjs().format('YYYY-MM'),
|
||||||
|
)
|
||||||
|
const [endDate, setEndDate] = useState(
|
||||||
|
dayjs().format('YYYY-MM'),
|
||||||
|
)
|
||||||
|
|
||||||
|
const [showDatePicker, setShowDatePicker] = useState(false)
|
||||||
|
|
||||||
|
return (
|
||||||
|
<View className="p-4">
|
||||||
|
<ASegmentedTabs
|
||||||
|
value={timeType}
|
||||||
|
onChange={(index) => {
|
||||||
|
setTimeType(index)
|
||||||
|
}}
|
||||||
|
tabs={[
|
||||||
|
{ key: '1', label: '按月' },
|
||||||
|
{ key: '2', label: '按年' },
|
||||||
|
{ key: '3', label: '自定义' },
|
||||||
|
]}
|
||||||
|
/>
|
||||||
|
|
||||||
|
<TouchableOpacity
|
||||||
|
className="mt-14 flex flex-row justify-center items-center"
|
||||||
|
>
|
||||||
|
<LucideIcon icon="Calendar" size={16} color="#666" clickable={false} />
|
||||||
|
<Text className="font-semibold text-lg mr-2 ml-1">{startDate}</Text>
|
||||||
|
{timeType === 2 && (
|
||||||
|
<>
|
||||||
|
<Text> - </Text>
|
||||||
|
<Text className="font-semibold text-lg mx-1">
|
||||||
|
{endDate}
|
||||||
|
</Text>
|
||||||
|
</>
|
||||||
|
)}
|
||||||
|
<LucideIcon icon="ChevronDown" size={16} color="#666" clickable={false} />
|
||||||
|
</TouchableOpacity>
|
||||||
|
|
||||||
|
<View className="mt-4">
|
||||||
|
<Text className="text-lg font-semibold text-gray-700">趋势分析</Text>
|
||||||
|
|
||||||
|
<VictoryChart
|
||||||
|
height={220}
|
||||||
|
theme={VictoryTheme.material}
|
||||||
|
padding={{ top: 15, bottom: 30, left: 40, right: 40 }}
|
||||||
|
>
|
||||||
|
<VictoryLine
|
||||||
|
interpolation="catmullRom"
|
||||||
|
data={[
|
||||||
|
]}
|
||||||
|
|
||||||
|
/>
|
||||||
|
</VictoryChart>
|
||||||
|
</View>
|
||||||
|
|
||||||
|
<View className="mt-4">
|
||||||
|
<Text className="text-lg font-semibold text-gray-700">分类构成</Text>
|
||||||
|
|
||||||
|
<VictoryPie
|
||||||
|
height={250}
|
||||||
|
innerRadius={50}
|
||||||
|
data={[
|
||||||
|
]}
|
||||||
|
theme={VictoryTheme.material}
|
||||||
|
/>
|
||||||
|
</View>
|
||||||
|
|
||||||
|
<ADatePicker
|
||||||
|
show={showDatePicker}
|
||||||
|
mode="month"
|
||||||
|
onConfirm={(val) => {
|
||||||
|
setShowDatePicker(false)
|
||||||
|
}}
|
||||||
|
onClose={() => {
|
||||||
|
setShowDatePicker(false)
|
||||||
|
}}
|
||||||
|
/>
|
||||||
|
</View>
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
return (
|
||||||
|
<View className="flex-1">
|
||||||
|
<CustomHeader
|
||||||
|
showHeader={false}
|
||||||
|
/>
|
||||||
|
|
||||||
|
<PagerTabs
|
||||||
|
showCustomHeader={true}
|
||||||
|
routes={[
|
||||||
|
{
|
||||||
|
key: 'expense',
|
||||||
|
title: '支出',
|
||||||
|
element: <AnalysisContent analysisType="expense" />,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
key: 'income',
|
||||||
|
title: '收入',
|
||||||
|
element: <AnalysisContent analysisType="income" />,
|
||||||
|
},
|
||||||
|
]}
|
||||||
|
/>
|
||||||
|
</View>
|
||||||
|
)
|
||||||
|
}
|
||||||
@@ -1,7 +1,10 @@
|
|||||||
import type { ViewStyle } from 'react-native'
|
import type { ViewStyle } from 'react-native'
|
||||||
|
import { useRouter } from 'expo-router'
|
||||||
import { useEffect, useRef, useState } from 'react'
|
import { useEffect, useRef, useState } from 'react'
|
||||||
import { Animated, Text, TouchableOpacity, View } from 'react-native'
|
import { Animated, Image, Text, TouchableOpacity, View } from 'react-native'
|
||||||
|
|
||||||
import PagerView from 'react-native-pager-view'
|
import PagerView from 'react-native-pager-view'
|
||||||
|
import { LucideIcon } from '../common/ao'
|
||||||
|
|
||||||
export interface PagerRoute {
|
export interface PagerRoute {
|
||||||
key: string
|
key: string
|
||||||
@@ -16,6 +19,7 @@ interface PagerTabsProps {
|
|||||||
selectedIndex?: number // 外部控制选中页
|
selectedIndex?: number // 外部控制选中页
|
||||||
onChange?: (key: string) => void
|
onChange?: (key: string) => void
|
||||||
indicatorWidth?: number
|
indicatorWidth?: number
|
||||||
|
showCustomHeader?: boolean
|
||||||
|
|
||||||
className?: string
|
className?: string
|
||||||
style?: ViewStyle
|
style?: ViewStyle
|
||||||
@@ -28,9 +32,12 @@ export default function PagerTabs({
|
|||||||
selectedIndex,
|
selectedIndex,
|
||||||
onChange,
|
onChange,
|
||||||
indicatorWidth = 38,
|
indicatorWidth = 38,
|
||||||
|
showCustomHeader,
|
||||||
className,
|
className,
|
||||||
style,
|
style,
|
||||||
}: PagerTabsProps) {
|
}: PagerTabsProps) {
|
||||||
|
const router = useRouter()
|
||||||
|
|
||||||
const pagerRef = useRef<PagerView>(null)
|
const pagerRef = useRef<PagerView>(null)
|
||||||
const [index, setIndex] = useState(selectedIndex ?? 0)
|
const [index, setIndex] = useState(selectedIndex ?? 0)
|
||||||
const [tabWidth, setTabWidth] = useState(0)
|
const [tabWidth, setTabWidth] = useState(0)
|
||||||
@@ -80,7 +87,15 @@ export default function PagerTabs({
|
|||||||
>
|
>
|
||||||
{/* Header */}
|
{/* Header */}
|
||||||
<View className="flex flex-row items-center">
|
<View className="flex flex-row items-center">
|
||||||
{left}
|
{left || (showCustomHeader
|
||||||
|
? (
|
||||||
|
<View className="w-10 items-center justify-center">
|
||||||
|
<TouchableOpacity onPress={() => router.back()}>
|
||||||
|
<LucideIcon icon="ChevronLeft" size={28} clickable={false} />
|
||||||
|
</TouchableOpacity>
|
||||||
|
</View>
|
||||||
|
)
|
||||||
|
: null)}
|
||||||
|
|
||||||
{/* Tabs */}
|
{/* Tabs */}
|
||||||
<View
|
<View
|
||||||
@@ -116,7 +131,16 @@ export default function PagerTabs({
|
|||||||
)}
|
)}
|
||||||
</View>
|
</View>
|
||||||
|
|
||||||
{right}
|
{right || (showCustomHeader
|
||||||
|
? (
|
||||||
|
<View className="w-10 items-center justify-center">
|
||||||
|
<Image
|
||||||
|
source={require('@/static/images/logo.png')}
|
||||||
|
style={{ width: 22, height: 22 }}
|
||||||
|
/>
|
||||||
|
</View>
|
||||||
|
)
|
||||||
|
: null)}
|
||||||
</View>
|
</View>
|
||||||
|
|
||||||
{/* Pager */}
|
{/* Pager */}
|
||||||
|
|||||||
@@ -28,8 +28,8 @@ function isWhiteListed(url: string) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
const alovaInstance = createAlova({
|
const alovaInstance = createAlova({
|
||||||
// baseURL: 'http://192.168.5.6:8086/app',
|
baseURL: 'http://192.168.5.6:8086/app',
|
||||||
baseURL: 'http://192.168.1.137:8086/app',
|
// baseURL: 'http://192.168.1.137:8086/app',
|
||||||
requestAdapter: axiosRequestAdapter(),
|
requestAdapter: axiosRequestAdapter(),
|
||||||
timeout: 5000,
|
timeout: 5000,
|
||||||
cacheFor: null,
|
cacheFor: null,
|
||||||
|
|||||||
@@ -1,91 +1,87 @@
|
|||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
<html lang="en">
|
<html lang="zh-CN">
|
||||||
|
|
||||||
<head>
|
<head>
|
||||||
<meta charset="UTF-8">
|
<meta charset="UTF-8">
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||||
<title>全局底部导航 Demo</title>
|
<title>财务分析 Demo</title>
|
||||||
<style>
|
<script src="https://cdn.tailwindcss.com"></script>
|
||||||
body {
|
|
||||||
margin: 0;
|
|
||||||
font-family: sans-serif;
|
|
||||||
background-color: #f0f2f5;
|
|
||||||
display: flex;
|
|
||||||
justify-content: center;
|
|
||||||
align-items: flex-end;
|
|
||||||
height: 100vh;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* 弹出面板 */
|
|
||||||
.bottom-panel {
|
|
||||||
width: 100%;
|
|
||||||
max-width: 400px;
|
|
||||||
background: white;
|
|
||||||
border-top-left-radius: 20px;
|
|
||||||
border-top-right-radius: 20px;
|
|
||||||
padding: 16px;
|
|
||||||
box-shadow: 0 -4px 12px rgba(0, 0, 0, 0.1);
|
|
||||||
display: grid;
|
|
||||||
grid-template-columns: repeat(3, 1fr);
|
|
||||||
gap: 12px;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* 每个导航 item */
|
|
||||||
.nav-item {
|
|
||||||
background: #f9f9f9;
|
|
||||||
border-radius: 16px;
|
|
||||||
padding: 16px 0;
|
|
||||||
display: flex;
|
|
||||||
flex-direction: column;
|
|
||||||
align-items: center;
|
|
||||||
justify-content: center;
|
|
||||||
cursor: pointer;
|
|
||||||
transition: transform 0.2s, background 0.2s;
|
|
||||||
text-align: center;
|
|
||||||
}
|
|
||||||
|
|
||||||
.nav-item:hover {
|
|
||||||
background: #e0e0ff;
|
|
||||||
transform: translateY(-3px) scale(1.05);
|
|
||||||
}
|
|
||||||
|
|
||||||
.nav-icon {
|
|
||||||
font-size: 28px;
|
|
||||||
margin-bottom: 6px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.nav-name {
|
|
||||||
font-size: 14px;
|
|
||||||
font-weight: 600;
|
|
||||||
}
|
|
||||||
</style>
|
|
||||||
</head>
|
</head>
|
||||||
|
<body class="bg-gray-100 p-4">
|
||||||
|
|
||||||
<body>
|
<!-- Header: 收支切换 -->
|
||||||
|
<div class="flex justify-center gap-4 mb-4">
|
||||||
|
<button id="expenseBtn" class="px-4 py-2 rounded-full bg-blue-500 text-white font-semibold">支出</button>
|
||||||
|
<button id="incomeBtn" class="px-4 py-2 rounded-full bg-gray-200 text-gray-700 font-semibold">收入</button>
|
||||||
|
</div>
|
||||||
|
|
||||||
<div class="bottom-panel">
|
<!-- 时间维度选择 -->
|
||||||
<div class="nav-item" onclick="alert('跳转到首页')">
|
<div class="flex justify-center gap-2 mb-4">
|
||||||
<div class="nav-icon">🏠</div>
|
<button class="timeBtn px-3 py-1 rounded-full bg-blue-500 text-white font-medium" data-type="month">按月</button>
|
||||||
<div class="nav-name">首页</div>
|
<button class="timeBtn px-3 py-1 rounded-full bg-gray-200 text-gray-700 font-medium" data-type="year">按年</button>
|
||||||
|
<button class="timeBtn px-3 py-1 rounded-full bg-gray-200 text-gray-700 font-medium" data-type="custom">自定义</button>
|
||||||
</div>
|
</div>
|
||||||
<div class="nav-item" onclick="alert('跳转到记账')">
|
|
||||||
<div class="nav-icon">📝</div>
|
<!-- 日期选择 -->
|
||||||
<div class="nav-name">记账</div>
|
<div id="datePickerContainer" class="flex justify-center mb-4">
|
||||||
</div>
|
<!-- 默认显示按月日期选择 -->
|
||||||
<div class="nav-item" onclick="alert('跳转到分类')">
|
<input type="month" id="monthInput" class="p-2 rounded border border-gray-300">
|
||||||
<div class="nav-icon">📂</div>
|
<input type="month" id="yearInput" class="p-2 rounded border border-gray-300 hidden">
|
||||||
<div class="nav-name">分类</div>
|
<div id="customInput" class="flex gap-2 hidden">
|
||||||
</div>
|
<input type="date" id="startDate" class="p-2 rounded border border-gray-300">
|
||||||
<div class="nav-item" onclick="alert('跳转到分析')">
|
<span class="self-center">~</span>
|
||||||
<div class="nav-icon">📊</div>
|
<input type="date" id="endDate" class="p-2 rounded border border-gray-300">
|
||||||
<div class="nav-name">分析</div>
|
|
||||||
</div>
|
|
||||||
<div class="nav-item" onclick="alert('跳转到设置')">
|
|
||||||
<div class="nav-icon">⚙️</div>
|
|
||||||
<div class="nav-name">设置</div>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
<!-- 示例图表区域 -->
|
||||||
|
<div class="bg-white p-4 rounded shadow text-center">
|
||||||
|
<p class="text-gray-500">这里显示图表或分析结果</p>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
const expenseBtn = document.getElementById('expenseBtn')
|
||||||
|
const incomeBtn = document.getElementById('incomeBtn')
|
||||||
|
const timeBtns = document.querySelectorAll('.timeBtn')
|
||||||
|
const monthInput = document.getElementById('monthInput')
|
||||||
|
const yearInput = document.getElementById('yearInput')
|
||||||
|
const customInput = document.getElementById('customInput')
|
||||||
|
|
||||||
|
// 收支切换逻辑
|
||||||
|
expenseBtn.addEventListener('click', () => {
|
||||||
|
expenseBtn.classList.add('bg-blue-500', 'text-white')
|
||||||
|
expenseBtn.classList.remove('bg-gray-200', 'text-gray-700')
|
||||||
|
incomeBtn.classList.add('bg-gray-200', 'text-gray-700')
|
||||||
|
incomeBtn.classList.remove('bg-blue-500', 'text-white')
|
||||||
|
})
|
||||||
|
|
||||||
|
incomeBtn.addEventListener('click', () => {
|
||||||
|
incomeBtn.classList.add('bg-blue-500', 'text-white')
|
||||||
|
incomeBtn.classList.remove('bg-gray-200', 'text-gray-700')
|
||||||
|
expenseBtn.classList.add('bg-gray-200', 'text-gray-700')
|
||||||
|
expenseBtn.classList.remove('bg-blue-500', 'text-white')
|
||||||
|
})
|
||||||
|
|
||||||
|
// 时间维度切换逻辑
|
||||||
|
timeBtns.forEach(btn => {
|
||||||
|
btn.addEventListener('click', () => {
|
||||||
|
timeBtns.forEach(b => {
|
||||||
|
b.classList.remove('bg-blue-500', 'text-white')
|
||||||
|
b.classList.add('bg-gray-200', 'text-gray-700')
|
||||||
|
})
|
||||||
|
btn.classList.add('bg-blue-500', 'text-white')
|
||||||
|
btn.classList.remove('bg-gray-200', 'text-gray-700')
|
||||||
|
|
||||||
|
// 显示对应日期选择控件
|
||||||
|
const type = btn.dataset.type
|
||||||
|
monthInput.classList.add('hidden')
|
||||||
|
yearInput.classList.add('hidden')
|
||||||
|
customInput.classList.add('hidden')
|
||||||
|
|
||||||
|
if (type === 'month') monthInput.classList.remove('hidden')
|
||||||
|
if (type === 'year') yearInput.classList.remove('hidden')
|
||||||
|
if (type === 'custom') customInput.classList.remove('hidden')
|
||||||
|
})
|
||||||
|
})
|
||||||
|
</script>
|
||||||
</body>
|
</body>
|
||||||
|
|
||||||
</html>
|
</html>
|
||||||
Reference in new issue
Block a user