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"; 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 => ( ))}
); }