|
| 1 | +import { FC } from "react"; |
| 2 | +import { InfoBadge } from "~/components/info-badge"; |
| 3 | +import { useLatestContractClasses, useLatestContractInstances } from "~/hooks"; |
| 4 | +import { useTotalContracts, useTotalContractsLast24h } from "~/hooks/stats"; |
| 5 | +import { mapContractClasses, mapContractInstances } from "./util"; |
| 6 | +import { ContractInstancesTable } from "~/components/contracts/instances/table"; |
| 7 | +import { ContractClassesTable } from "~/components/contracts/classes/table"; |
| 8 | +import { TableBadge } from "~/components/table-badge"; |
| 9 | + |
| 10 | +export const Contracts: FC = () => { |
| 11 | + const { |
| 12 | + data: classesData, |
| 13 | + isLoading: isLoadingClasses, |
| 14 | + error: errorClasses, |
| 15 | + } = useLatestContractClasses(); |
| 16 | + const { |
| 17 | + data: instancesData, |
| 18 | + isLoading: isLoadingInstances, |
| 19 | + error: errorInstances, |
| 20 | + } = useLatestContractInstances(); |
| 21 | + const { |
| 22 | + data: totalAmountOfContracts, |
| 23 | + isLoading: loadingAmountContracts, |
| 24 | + error: errorAmountContracts, |
| 25 | + } = useTotalContracts(); |
| 26 | + const { |
| 27 | + data: totalAmountOfContracts24h, |
| 28 | + isLoading: loadingAmountContracts24h, |
| 29 | + error: errorAmountContracts24h, |
| 30 | + } = useTotalContractsLast24h(); |
| 31 | + |
| 32 | + return ( |
| 33 | + <div className="mx-auto px-7 max-w-[1440px] md:px-[70px]"> |
| 34 | + <div className="flex flex-wrap justify-center gap-3 m-5 "> |
| 35 | + <h2 className="mt-2 text-primary md:hidden">All contracts</h2> |
| 36 | + <h1 className="hidden md:block md:mt-16">All contracts</h1> |
| 37 | + </div> |
| 38 | + <div className="flex flex-row justify-center gap-4 m-8"> |
| 39 | + <InfoBadge |
| 40 | + title="Total Contract Classes" |
| 41 | + isLoading={loadingAmountContracts} |
| 42 | + error={errorAmountContracts} |
| 43 | + data={totalAmountOfContracts} |
| 44 | + /> |
| 45 | + <InfoBadge |
| 46 | + title="Total Contract Classes last 24h" |
| 47 | + isLoading={loadingAmountContracts24h} |
| 48 | + error={errorAmountContracts24h} |
| 49 | + data={totalAmountOfContracts24h} |
| 50 | + /> |
| 51 | + </div> |
| 52 | + |
| 53 | + <div className="flex flex-col gap-4 md:flex-row "> |
| 54 | + <TableBadge |
| 55 | + title="Total Contract Instances" |
| 56 | + isLoading={isLoadingClasses} |
| 57 | + error={errorClasses} |
| 58 | + > |
| 59 | + {classesData && ( |
| 60 | + <ContractClassesTable contracts={mapContractClasses(classesData)} /> |
| 61 | + )} |
| 62 | + </TableBadge> |
| 63 | + |
| 64 | + <TableBadge |
| 65 | + title="Total Contract Instances" |
| 66 | + isLoading={isLoadingInstances} |
| 67 | + error={errorInstances} |
| 68 | + > |
| 69 | + {instancesData && ( |
| 70 | + <ContractInstancesTable |
| 71 | + contracts={mapContractInstances(instancesData)} |
| 72 | + /> |
| 73 | + )} |
| 74 | + </TableBadge> |
| 75 | + </div> |
| 76 | + </div> |
| 77 | + ); |
| 78 | +}; |
0 commit comments