Untitled
unknown
javascript
9 months ago
7.3 kB
7
Indexable
import { ActionIcon, AppShell, Box, createTheme, Group, HoverCard, MantineProvider, Skeleton, Text, Tooltip, } from "@mantine/core"; import { FaCopy, FaEthereum, FaSquareCheck } from "react-icons/fa6"; import { MdAccountCircle } from "react-icons/md"; import { getIns } from "./utils/utils.js"; import data from "./assets/mockdata.json"; import { useState } from "react"; import { useEffect } from "react"; import { getEthereumAddress } from "@injectivelabs/sdk-ts"; import InjectiveIcon from "./utils/InjectiveIcon.jsx"; import { IoSearch } from "react-icons/io5"; import { IoMdExpand } from "react-icons/io"; import { LuSettings } from "react-icons/lu"; import { FaGlobeAmericas } from "react-icons/fa"; const theme = createTheme({ primaryColor: "orange", fontFamily: `"Inter Variable", "Roboto", system-ui, sans-serif`, }); export default function App() { const [account, setAccount] = useState({ ins: null, name: null, inj: null, evm: null, }); const [copy, setCopy] = useState(null); useEffect(() => { (async () => { setAccount({ ins: await getIns(data.address), name: "Account 1", inj: data.address, evm: getEthereumAddress(data.address), }); })(); }, []); return ( <MantineProvider defaultColorScheme="dark" theme={theme}> <AppShell className="w-full flex flex-col items-center"> <AppShell.Header className="w-full h-14 flex items-center justify-center px-4" bg={"dark.8"} pos={"sticky"} > <Box className="w-full max-w-screen-2xl justify-between h-full flex items-center"> <Group> <ActionIcon size={"lg"} radius={"xl"} variant="light"> <MdAccountCircle size={"1.25rem"} /> </ActionIcon> {account.ins ? ( // <Tooltip // label={`${account.inj.substring(0, 5)}..${account.inj.slice( // -5 // )}`} // withArrow // arrowSize={8} // > <HoverCard position="bottom-start" shadow="md"> <HoverCard.Target> <Group className="select-none" gap={"0.25rem"}> <Text className="font-semibold text-sm"> {account.ins ? `${account.ins[0].toUpperCase()}${account.ins.slice( 1 )}.inj` : account.name} </Text> <FaCopy size={"0.75rem"} /> </Group> </HoverCard.Target> <HoverCard.Dropdown> <Group className="flex-col items-start select-none"> <Group gap={"xs"} className="hover:brightness-150 cursor-pointer items-center" onClick={() => { setCopy("ins"); // Reset to null after 3 seconds const timer = setTimeout(() => { setCopy(null); }, 3000); return () => clearTimeout(timer); }} > <FaGlobeAmericas size={"0.75rem"} /> <Text className="font-semibold uppercase text-[0.7rem]"> {account.ins.length > 16 ? `${account.inj.substring( 0, 6 )}. . .${account.inj.slice(-6)}.inj` : `${account.ins}.inj`} </Text> {copy === "ins" ? ( <FaSquareCheck size={"0.75rem"} /> ) : ( <FaCopy size={"0.75rem"} /> )} </Group> <Group gap={"xs"} className="hover:brightness-150 cursor-pointer items-center" onClick={() => { setCopy("inj"); // Reset to null after 3 seconds const timer = setTimeout(() => { setCopy(null); }, 3000); return () => clearTimeout(timer); }} > <InjectiveIcon size={"0.75rem"} color={"var(--mantine-color-text)"} /> <Text className="font-semibold uppercase text-[0.7rem]">{`${account.inj.substring( 0, 6 )}. . .${account.inj.slice(-6)}`}</Text> {copy === "inj" ? ( <FaSquareCheck size={"0.75rem"} /> ) : ( <FaCopy size={"0.75rem"} /> )} </Group> <Group gap={"xs"} className="hover:brightness-150 cursor-pointer items-center" onClick={() => { setCopy("evm"); // Reset to null after 3 seconds const timer = setTimeout(() => { setCopy(null); }, 3000); return () => clearTimeout(timer); }} > <FaEthereum size={"0.75rem"} /> <Text className="font-semibold uppercase text-[0.7rem]">{`${account.evm.substring( 0, 6 )}. . .${account.evm.slice(-6)}`}</Text> {copy === "evm" ? ( <FaSquareCheck size={"0.75rem"} /> ) : ( <FaCopy size={"0.75rem"} /> )} </Group> </Group> </HoverCard.Dropdown> </HoverCard> ) : ( // </Tooltip> <Skeleton height={12} radius={"xl"} width={72} /> )} </Group> <Group gap={"xs"}> <ActionIcon variant="subtle" radius={"xl"} size={"md"}> <IoSearch /> </ActionIcon> <ActionIcon variant="subtle" radius={"xl"} size={"md"}> <IoMdExpand /> </ActionIcon> <ActionIcon variant="subtle" radius={"xl"} size={"md"}> <LuSettings /> </ActionIcon> </Group> </Box> </AppShell.Header> <AppShell.Main className="w-full max-w-screen-2xl p-4 min-h-max"> <Box className="w-full h-72 rounded-xl" bg={"dark.8"}></Box> </AppShell.Main> </AppShell> </MantineProvider> ); }
Editor is loading...
Leave a Comment