'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' && ( )} > ) }
{account.institution}
{formatCents(account.currentBalanceCents)}
Inactive