import { animated, config as springConfig, useTransition, } from "@react-spring/web"; import { cva } from "class-variance-authority"; import React, { useCallback, useEffect, useMemo, useRef, useState, } from "react"; import { Avatar } from "./avatar"; import { Typography } from "@carrot-kpi/ui"; import { useAccount, useConnect } from "wagmi"; import { ChainSelect } from "../chain-select/chain-select"; import { useClickAway } from "react-use"; import Power from "../../icons/power"; import { Actions } from "./actions"; import Settings from "../../icons/settings"; import Arrow from "../../icons/arrow"; import { useTranslation } from "react-i18next"; import { Preferences } from "./preferences"; import { WalletConnectors } from "./wallet-connectors"; const overlayStyles = cva([ "fixed", "h-full", "w-full", "bottom-0", "z-9", "bg-black", "bg-opacity-50", ]); const rootStyles = cva([ "flex", "fixed", "h-[500px]", "w-full", "overflow-hidden", "right-0", "top-0", "bottom-0", "z-10", ]); const containerStyles = cva([ "z-10", "bg-white", "dark:bg-black", "sticky", "rounded-t-xl", "w-full", "h-[600px]", "px-11", "py-7", ]); interface AccountSettingsDrawerMobileProps { open: boolean; onClose: () => void; } export const AccountSettingsDrawerMobile = ({ open, onClose, }: AccountSettingsDrawerMobileProps) => { const { t } = useTranslation(); const { address } = useAccount(); const { chain } = useAccount(); const { connectors, connect } = useConnect(); const [settingsOpen, setSettingsOpen] = useState(false); const drawerRef = useRef(null); const readonlyConnector = useMemo(() => { return connectors.find((connector) => connector.id === "readonly"); }, [connectors]); const blockExplorerHref = useMemo(() => { if (!address || !chain || !chain.blockExplorers) return ""; return `${chain.blockExplorers.default.url}/address/${address}`; }, [address, chain]); useEffect(() => { if (!open) return; document.documentElement.classList.add("overflow-y-hidden"); return () => { document.documentElement.classList.remove("overflow-y-hidden"); }; }, [open]); const transitions = useTransition(open, { config: { ...springConfig.default, duration: 150, }, from: { transform: "translateY(100%)", opacity: 0 }, enter: { transform: "translateY(0%)", opacity: 1 }, leave: { transform: "translateY(100%)", opacity: 0 }, }); useClickAway(drawerRef, () => { onClose(); }); const handleDisconnectClick = useCallback(() => { if (!!readonlyConnector) connect({ connector: readonlyConnector, chainId: chain?.id }); onClose(); }, [connect, onClose, readonlyConnector, chain?.id]); const handleSettingsOpenClick = useCallback(() => { setSettingsOpen(true); }, []); const handleSettingsCloseClick = useCallback(() => { setSettingsOpen(false); }, []); return transitions( (style, item) => item && ( <>
{settingsOpen ? (
{t("settings.title")}
) : (
{address ? ( ) : (
{t( "connect.wallet.title", )}
)}
{address && ( )}
{address && ( )}
{address ? ( ) : ( )}
)}
), ); };