import { EyeOutlined, LikeOutlined, LikeFilled, UserOutlined, BankOutlined, CalendarOutlined, FileTextOutlined, SendOutlined, } 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 w-full p-6 bg-white rounded-xl group relative overflow-hidden duration-300 hover:-translate-y-1 transition-all ease-in-out " >
<a href={`/${letter.id}/detail`} target="_blank" className="text-primary hover:text-primary-600 transition-colors duration-200 hover:underline"> {letter.title} </a>
{/* Meta Info */}
{letter.author?.showname || '匿名用户'}
{letter.receivers.some(item => item.department?.name) && (
item.department?.name).filter(Boolean).join(', ')}> {letter.receivers .map(item => item.department?.name) .filter(Boolean) .slice(0, 2) .join('、')} {letter.receivers.filter(item => item.department?.name).length > 2 && ' 等'}
)} {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 && ( {letter.content} )}
{letter.meta.tags.map(tag => ( ))}
{/* Badges & Interactions */}
{letter.terms.map(term => ( ))}
); }