'use client' import { useState } from 'react' import { useRouter } from 'next/navigation' import Link from 'next/link' import { Account } from '@/generated/prisma/client' import { Card, CardContent, CardHeader, CardTitle } from '@/components/ui/card' import { DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuSeparator, DropdownMenuTrigger, } from '@/components/ui/dropdown-menu' import { MoreHorizontal, Pencil, Trash2, EyeOff, Eye, TrendingUp } from 'lucide-react' import { AccountBadge } from './AccountBadge' import { CreateAccountDialog } from './CreateAccountDialog' import { RecordValueDialog } from './RecordValueDialog' import { formatCents } from '@/lib/utils/currency' export function AccountCard({ account }: { account: Account }) { const router = useRouter() const [editOpen, setEditOpen] = useState(false) const [recordOpen, setRecordOpen] = useState(false) async function handleToggleActive() { await fetch(`/api/accounts/${account.id}`, { method: 'PATCH', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ isActive: !account.isActive }), }) router.refresh() } async function handleDelete() { if (!confirm(`Delete "${account.name}"? This cannot be undone.`)) return await fetch(`/api/accounts/${account.id}`, { method: 'DELETE' }) router.refresh() } return ( <>
{account.name} {account.institution && (

{account.institution}

)}
Account actions setEditOpen(true)}> Edit {account.type === 'INVESTMENT' && ( setRecordOpen(true)}> Record value )} {account.isActive ? <>Deactivate : <>Activate } Delete

{formatCents(account.currentBalanceCents)}

{!account.isActive && (

Inactive

)}
{account.type === 'INVESTMENT' && ( )} ) }