import { Ban, CircleCheck, CircleHelp, EllipsisVertical, History, Lock, LockOpen, MessageSquareOff, Pencil, Pin, Sparkles, Trash2, } from 'lucide-react'; import { Button } from '@/components/ui/button'; import { DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuLabel, DropdownMenuSeparator, DropdownMenuTrigger, } from '@/components/ui/dropdown-menu'; import type { PostItem } from '../api/types'; export interface PostManageMenuProps { post: PostItem; isAdmin: boolean; isOwnerOrAdmin: boolean; canEdit: boolean; isEdited: boolean; isMobile?: boolean; editRemaining?: string; editBlockReason?: string; deleting?: boolean; onEdit: () => void; onShowRevisions: () => void; onToggleResolved: () => void; onApprove: () => void; onReject: () => void; onFeature: () => void; onPin: () => void; onBoardPin: () => void; onLock: () => void; onCommentsLock: () => void; onDelete: () => void; } /** 帖子右上角管理菜单:编辑、审核、置顶、锁定、删除等 */ export default function PostManageMenu({ post, isAdmin, isOwnerOrAdmin, canEdit, isEdited, isMobile, editRemaining, editBlockReason, deleting, onEdit, onShowRevisions, onToggleResolved, onApprove, onReject, onFeature, onPin, onBoardPin, onLock, onCommentsLock, onDelete, }: PostManageMenuProps) { const showContent = canEdit || (isOwnerOrAdmin && isEdited) || (isOwnerOrAdmin && post.post_type === 'question'); const hint = editRemaining || (!canEdit && isOwnerOrAdmin ? editBlockReason : '') || ''; if (!showContent && !isAdmin && !hint) return null; return ( {hint && ( <> {hint} )} {showContent && ( <> 内容 {canEdit && ( 编辑 )} {isOwnerOrAdmin && isEdited && ( 编辑历史 )} {isOwnerOrAdmin && post.post_type === 'question' && ( {post.question_resolved ? : } {post.question_resolved ? '标为未解决' : '标为已解决'} )} {isAdmin && } )} {isAdmin && ( <> 审核 {(post.status === 'pending' || post.status === 'rejected') && ( 通过审核 )} {post.status !== 'rejected' && ( 拒绝并通知 )} 展示 {post.featured ? '取消推荐' : '设为推荐'} {post.pinned ? '取消全局置顶' : '全局置顶'} {post.board_pinned ? '取消板块置顶' : '板块置顶'} 讨论 {post.edit_locked ? '解锁编辑' : '锁定编辑'} {post.comments_locked ? : } {post.comments_locked ? '开放讨论' : '锁定讨论'} 危险 删除 )} ); }