SurfSense/surfsense_web/app/(home)/announcements/page.tsx

48 lines
1.5 KiB
TypeScript
Raw Normal View History

2026-02-12 16:12:45 -08:00
"use client";
import { useEffect } from "react";
import { AnnouncementCard } from "@/components/announcements/AnnouncementCard";
import { AnnouncementsEmptyState } from "@/components/announcements/AnnouncementsEmptyState";
import { useAnnouncements } from "@/hooks/use-announcements";
2026-02-12 16:12:45 -08:00
// ---------------------------------------------------------------------------
// Page
// ---------------------------------------------------------------------------
export default function AnnouncementsPage() {
const { announcements, markAllRead } = useAnnouncements();
2026-02-12 16:12:45 -08:00
// Auto-mark all visible announcements as read when the page is opened
useEffect(() => {
markAllRead();
}, [markAllRead]);
2026-02-12 16:12:45 -08:00
return (
<div className="min-h-screen relative pt-20">
{/* Header */}
<div className="border-b border-border/50">
<div className="max-w-5xl mx-auto relative">
<div className="p-6">
<h1 className="text-4xl font-bold tracking-tight bg-linear-to-r from-gray-900 to-gray-600 dark:from-white dark:to-gray-400 bg-clip-text text-transparent">
Announcements
</h1>
2026-02-12 16:12:45 -08:00
</div>
</div>
</div>
2026-02-12 16:12:45 -08:00
{/* Content */}
<div className="max-w-3xl mx-auto px-6 lg:px-10 pt-8 pb-20">
{announcements.length === 0 ? (
<AnnouncementsEmptyState />
) : (
<div className="flex flex-col gap-4">
{announcements.map((announcement) => (
2026-02-20 22:44:56 -08:00
<AnnouncementCard key={announcement.id} announcement={announcement} />
))}
2026-02-12 16:12:45 -08:00
</div>
)}
2026-02-12 16:12:45 -08:00
</div>
</div>
2026-02-12 16:12:45 -08:00
);
}