import { EyeOutlined, LikeOutlined, LikeFilled, UserOutlined, BankOutlined, CalendarOutlined, FileTextOutlined, SendOutlined, MailOutlined, } from "@ant-design/icons"; import { Button, Typography, Space, Tooltip } from "antd"; import { PostDto, PostStateLabels } from "@nice/common"; import dayjs from "dayjs"; import PostLikeButton from "./detail/PostHeader/PostLikeButton"; import { LetterBadge } from "./LetterBadge"; import PostHateButton from "./detail/PostHeader/PostHateButton"; const { Title, Paragraph, Text } = Typography; interface LetterCardProps { letter: PostDto; } export function LetterCard({ letter }: LetterCardProps) { return (
{ window.open(`/${letter.id}/detail`); }} className="cursor-pointer p-6 bg-slate-100/80 rounded-xl hover:ring-white hover:ring-1 transition-all duration-300 ease-in-out hover:-translate-y-0.5 active:scale-[0.98] border border-white group relative overflow-hidden">
{letter.title}
{/* Meta Info */}
{letter.author?.department?.name && (
{letter.author?.department?.name}
)}
{letter.author?.showname || "匿名用户"}
{letter.receivers.some((item) => item.showname) && (
item.showname) .filter(Boolean) .join(", ")}> {letter.receivers .map((item) => item.showname) .filter(Boolean) .slice(0, 2) .join("、")} {letter.receivers.filter( (item) => item.showname ).length > 2 && " 等"}
)}
{dayjs(letter.createdAt).format("YYYY-MM-DD")}
{/* Content Preview */} {letter.content && (
)} {/* Badges & Interactions */}
{letter?.meta?.tags?.map((tag) => ( ))} {letter.terms.map((term) => ( ))}
); }