Files
PocketVeto/frontend/app/page.tsx
Jack Levy 10aced78b0 fix: remove Poll Now button from dashboard
Admin-only actions belong in the admin panel, not the dashboard.
Cleaned up dead imports and "Run a poll to populate" copy.

Authored-By: Jack Levy
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-01 23:57:35 -05:00

98 lines
3.9 KiB
TypeScript

"use client";
import { TrendingUp, BookOpen, Flame } from "lucide-react";
import Link from "next/link";
import { useDashboard } from "@/lib/hooks/useDashboard";
import { BillCard } from "@/components/shared/BillCard";
import { WelcomeBanner } from "@/components/shared/WelcomeBanner";
import { useAuthStore } from "@/stores/authStore";
export default function DashboardPage() {
const { data, isLoading } = useDashboard();
const token = useAuthStore((s) => s.token);
return (
<div className="space-y-8">
<div>
<h1 className="text-2xl font-bold">Dashboard</h1>
<p className="text-muted-foreground text-sm mt-1">
Your personalized Congressional activity feed
</p>
</div>
<WelcomeBanner />
{isLoading ? (
<div className="text-center py-20 text-muted-foreground">Loading dashboard...</div>
) : (
<div className="grid grid-cols-1 md:grid-cols-3 gap-4 md:gap-8">
<div className="md:col-span-2 space-y-4">
<h2 className="font-semibold flex items-center gap-2">
{token ? <BookOpen className="w-4 h-4" /> : <Flame className="w-4 h-4" />}
{token ? "Your Feed" : "Most Popular"}
{token && data?.follows && (
<span className="text-xs text-muted-foreground font-normal">
({data.follows.bills} bills · {data.follows.members} members · {data.follows.topics} topics)
</span>
)}
</h2>
{!token ? (
<div className="space-y-3">
<div className="rounded-lg border border-dashed px-4 py-3 flex items-center justify-between gap-4">
<p className="text-sm text-muted-foreground">
Sign in to personalise this feed with bills and members you follow.
</p>
<div className="flex gap-2 shrink-0">
<Link href="/register" className="px-3 py-1.5 text-xs font-medium rounded-md bg-primary text-primary-foreground hover:bg-primary/90 transition-colors">
Register
</Link>
<Link href="/login" className="px-3 py-1.5 text-xs font-medium rounded-md border border-border text-foreground hover:bg-accent transition-colors">
Sign in
</Link>
</div>
</div>
{data?.trending?.length ? (
<div className="space-y-3">
{data.trending.map((bill) => (
<BillCard key={bill.bill_id} bill={bill} />
))}
</div>
) : null}
</div>
) : !data?.feed?.length ? (
<div className="bg-card border border-border rounded-lg p-8 text-center text-muted-foreground">
<p className="text-sm">Your feed is empty.</p>
<p className="text-xs mt-1">Follow bills, members, or topics to see activity here.</p>
</div>
) : (
<div className="space-y-3">
{data.feed.map((bill) => (
<BillCard key={bill.bill_id} bill={bill} />
))}
</div>
)}
</div>
<div className="space-y-4">
<h2 className="font-semibold flex items-center gap-2">
<TrendingUp className="w-4 h-4" />
Trending
</h2>
{!data?.trending?.length ? (
<div className="bg-card border border-border rounded-lg p-6 text-center text-muted-foreground text-xs">
No trend data yet.
</div>
) : (
<div className="space-y-2">
{data.trending.map((bill) => (
<BillCard key={bill.bill_id} bill={bill} compact />
))}
</div>
)}
</div>
</div>
)}
</div>
);
}