Files
assetx/webapp/components/lending/LendingPlaceholder.tsx

81 lines
3.1 KiB
TypeScript
Raw Permalink Normal View History

"use client";
import Image from "next/image";
import { useRouter } from "next/navigation";
import { Button } from "@heroui/react";
import { useApp } from "@/contexts/AppContext";
import { buttonStyles } from "@/lib/buttonStyles";
import { useAccount } from "wagmi";
import { useSuppliedBalance } from "@/hooks/useLendingSupply";
import { useCollateralValue } from "@/hooks/useCollateral";
import { useTokenList } from "@/hooks/useTokenList";
export default function LendingPlaceholder() {
const { t } = useApp();
const router = useRouter();
const { isConnected } = useAccount();
const { bySymbol } = useTokenList();
const { formattedBalance: suppliedBalance } = useSuppliedBalance();
const { valueRaw: valueA } = useCollateralValue(bySymbol['YT-A']);
const { valueRaw: valueB } = useCollateralValue(bySymbol['YT-B']);
const { valueRaw: valueC } = useCollateralValue(bySymbol['YT-C']);
const totalPortfolio = isConnected
? parseFloat(suppliedBalance) + valueA + valueB + valueC
: 0;
const portfolioDisplay = `$${totalPortfolio.toLocaleString('en-US', { minimumFractionDigits: 2, maximumFractionDigits: 2 })}`;
const collateralTotal = valueA + valueB + valueC;
return (
<div className="relative rounded-2xl h-[180px] overflow-hidden">
{/* Dark Background */}
<div className="absolute inset-0 bg-[#0f172b]" />
{/* Green Glow Effect */}
<div
className="absolute w-32 h-32 rounded-full right-0 top-[-64px]"
style={{
background: "rgba(0, 188, 125, 0.2)",
filter: "blur(40px)",
}}
/>
{/* Content - Centered */}
<div className="absolute left-1/2 top-1/2 -translate-x-1/2 -translate-y-1/2 flex flex-col gap-4 w-[90%]">
{/* Your Portfolio Section */}
<div className="flex flex-col gap-2">
{/* Label Row */}
<div className="flex items-center justify-between h-[21px]">
<span className="text-[10px] font-bold text-text-tertiary dark:text-gray-400 leading-[150%] tracking-[0.01em]">
{t("lending.yourPortfolio")}
</span>
{collateralTotal > 0 && (
<span className="text-[10px] font-bold text-[#10b981] dark:text-green-400 leading-[150%] tracking-[0.01em]">
+${collateralTotal.toLocaleString('en-US', { minimumFractionDigits: 2, maximumFractionDigits: 2 })} {t("lending.collateral")}
</span>
)}
</div>
{/* Amount */}
<div className="flex items-center gap-2">
<span className="text-heading-h2 font-bold text-white leading-[130%] tracking-[-0.01em]">
{portfolioDisplay}
</span>
</div>
</div>
{/* Supply USDC Button */}
<Button
color="default"
variant="solid"
className="h-11 rounded-xl px-6 text-body-small font-bold bg-[#282E3F] dark:bg-white dark:text-[#282E3F] text-background"
onPress={() => router.push("/lending/supply")}
endContent={<Image src="/icons/actions/arrow-right-icon.svg" alt="" width={20} height={20} />}
>
{t("lending.supplyUsdc")}
</Button>
</div>
</div>
);
}