import { EyeOutlined, LikeOutlined, LikeFilled, UserOutlined, BankOutlined, CalendarOutlined, FileTextOutlined } from '@ant-design/icons'; import { Button, Typography, Space, Tooltip } from 'antd'; import toast from 'react-hot-toast'; import { useState } from 'react'; import { getBadgeStyle } from '@web/src/app/main/letter/list/utils'; import { PostDto } from '@nice/common'; import dayjs from 'dayjs'; const { Title, Paragraph, Text } = Typography; interface LetterCardProps { letter: PostDto; } export function LetterCard({ letter }: LetterCardProps) { const [likes, setLikes] = useState(0); const [liked, setLiked] = useState(false); const [views] = useState(Math.floor(Math.random() * 100)); // 模拟浏览量数据 const handleLike = () => { if (!liked) { setLikes((prev) => prev + 1); setLiked(true); toast.success("已点赞!", { icon: , className: "custom-message", }); } else { setLikes((prev) => prev - 1); setLiked(false); toast("已取消点赞", { className: "custom-message", }); } }; return (
{/* Title & Priority */}
<a href={`/letters/${letter.id}`} target="_blank" className="text-primary transition-all duration-300 relative before:absolute before:bottom-0 before:left-0 before:w-0 before:h-[2px] before:bg-primary-600 group-hover:before:w-full before:transition-all before:duration-300 group-hover:text-primary-600 group-hover:scale-105 group-hover:drop-shadow-md" > {letter.title} </a>
{/* Meta Info */}
{letter.author.showname} | {letter.author.department.name} {dayjs(letter.createdAt).format('YYYY-MM-DD')}
{/* Content Preview */} {letter.content && (
{letter.content}
)} {/* Badges & Interactions */}
{views}
); } export function Badge({ type, value, className = "", }: { type: "priority" | "category" | "status"; value: string; className?: string; }) { return ( value && ( {value?.toUpperCase()} ) ); }