"use client"; import Link from "next/link"; import { Heart, ExternalLink, X } from "lucide-react"; import { useFollows, useRemoveFollow } from "@/lib/hooks/useFollows"; import { useBill } from "@/lib/hooks/useBills"; import { useMember } from "@/lib/hooks/useMembers"; import { FollowButton } from "@/components/shared/FollowButton"; import { billLabel, chamberBadgeColor, cn, formatDate, partyBadgeColor } from "@/lib/utils"; import type { Follow } from "@/lib/types"; // ── Bill row ──────────────────────────────────────────────────────────────── function BillRow({ follow }: { follow: Follow }) { const { data: bill } = useBill(follow.follow_value); const label = bill ? billLabel(bill.bill_type, bill.bill_number) : follow.follow_value; return (
{label} {bill?.chamber && ( {bill.chamber} )}
{bill ? (bill.short_title || bill.title || label) : Loading…} {bill?.latest_action_text && (

{bill.latest_action_date && {formatDate(bill.latest_action_date)} — } {bill.latest_action_text}

)}
); } // ── Member row ─────────────────────────────────────────────────────────────── function MemberRow({ follow, onRemove }: { follow: Follow; onRemove: () => void }) { const { data: member } = useMember(follow.follow_value); return (
{/* Photo */}
{member?.photo_url ? ( {member.name} ) : (
{member ? member.name[0] : "?"}
)}
{/* Info */}
{member?.name ?? follow.follow_value} {member?.party && ( {member.party} )}
{(member?.chamber || member?.state || member?.district) && (

{[member.chamber, member.state, member.district ? `District ${member.district}` : null] .filter(Boolean) .join(" · ")}

)} {member?.official_url && ( Official site )}
{/* Unfollow */}
); } // ── Page ───────────────────────────────────────────────────────────────────── export default function FollowingPage() { const { data: follows = [], isLoading } = useFollows(); const remove = useRemoveFollow(); const bills = follows.filter((f) => f.follow_type === "bill"); const members = follows.filter((f) => f.follow_type === "member"); const topics = follows.filter((f) => f.follow_type === "topic"); if (isLoading) return
Loading...
; return (

Following

Manage what you follow

{/* Bills */}

Bills ({bills.length})

{!bills.length ? (

No bills followed yet.

) : (
{bills.map((f) => )}
)}
{/* Members */}

Members ({members.length})

{!members.length ? (

No members followed yet.

) : (
{members.map((f) => ( remove.mutate(f.id)} /> ))}
)}
{/* Topics */}

Topics ({topics.length})

{!topics.length ? (

No topics followed yet.

) : (
{topics.map((f) => (
{f.follow_value.replace(/-/g, " ")}
))}
)}
); }