"use client"; import { useState } from "react"; import Dashboard from "@/components/dashboard/dashboard"; import { Card, CardContent, CardDescription, CardFooter, CardHeader, CardTitle } from "@/components/ui/card"; import { Button } from "@/components/ui/button"; import { Wallet, Bitcoin, Coins, DollarSign, ArrowUpRight } from "lucide-react"; import { toast } from "sonner"; // Mock data for balances const mockBalances = { bitcoin: { symbol: "BTC", name: "Bitcoin", balance: 0.054321, usdValue: 2350.45, icon: Bitcoin, color: "text-orange-500", }, litecoin: { symbol: "LTC", name: "Litecoin", balance: 12.345678, usdValue: 987.65, icon: Coins, color: "text-blue-500", }, monero: { symbol: "XMR", name: "Monero", balance: 5.678901, usdValue: 1123.89, icon: DollarSign, color: "text-orange-600", }, }; export default function BalancePage() { const [isWithdrawing, setIsWithdrawing] = useState<{ bitcoin: boolean; litecoin: boolean; monero: boolean; }>({ bitcoin: false, litecoin: false, monero: false, }); const handleWithdrawal = async (currency: "bitcoin" | "litecoin" | "monero") => { setIsWithdrawing((prev) => ({ ...prev, [currency]: true })); try { // Simulate API call await new Promise((resolve) => setTimeout(resolve, 1500)); toast.success("Withdrawal Request Submitted", { description: `Your withdrawal request for ${mockBalances[currency].name} has been submitted successfully.`, }); } catch (error) { toast.error("Withdrawal Failed", { description: `Failed to submit withdrawal request for ${mockBalances[currency].name}. Please try again.`, }); } finally { setIsWithdrawing((prev) => ({ ...prev, [currency]: false })); } }; const totalUsdValue = Object.values(mockBalances).reduce( (sum, currency) => sum + currency.usdValue, 0 ); return (
{/* Header */}

Balance

View your cryptocurrency balances and request withdrawals

{/* Total Balance Card */} Total Balance Combined value of all cryptocurrencies
${totalUsdValue.toLocaleString("en-US", { minimumFractionDigits: 2, maximumFractionDigits: 2 })}

Equivalent in USD

{/* Currency Balance Cards */}
{Object.entries(mockBalances).map(([key, currency]) => { const Icon = currency.icon; return (
{currency.name}
{currency.symbol}
{currency.balance.toLocaleString("en-US", { minimumFractionDigits: 6, maximumFractionDigits: 8, })}
{currency.symbol}
${currency.usdValue.toLocaleString("en-US", { minimumFractionDigits: 2, maximumFractionDigits: 2, })}
USD Value
); })}
); }