"use client" import { useState } from "react" import Link from "next/link" import { useRouter } from "next/navigation" import { toast } from "sonner" import { useTranslations } from "next-intl" import { Pin } from "lucide-react" import { Badge } from "@/shared/components/ui/badge" import { Card, CardContent, CardHeader, CardTitle } from "@/shared/components/ui/card" import { cn, formatDate } from "@/shared/lib/utils" import { useAnnouncementsService } from "./announcements-service-context" import type { Announcement } from "../types" const statusVariant: Record = { draft: "secondary", published: "default", archived: "outline", } /** * 公告卡片(列表项)。 * * P1-3: 通过 `useAnnouncementsService()` 消费 togglePin,不直接 import actions。 * P2-1 a11y: 重构交互结构——卡片整体为 ``,置顶按钮用独立 ` ) : null} ) if (href) { return ( {card} ) } return card }