'use client'; import type { RequirementStatus } from '@/lib/requirement'; import { REQ_STATUS_LABEL } from '@/lib/requirement'; import { Pencil, Trash2 } from 'lucide-react'; import { RequirementStatusBadge } from './RequirementStatusBadge'; import { PRIORITY_LABEL } from '@/lib/constants'; interface RequirementItem { id: string; title: string; description: string; status: RequirementStatus; priority: number; creator?: { id: string; name: string }; createdAt: string; } interface Props { requirements: RequirementItem[]; statusFilter: RequirementStatus | null; onFilterChange: (status: RequirementStatus | null) => void; onEdit: (req: RequirementItem) => void; onStatusChange: (id: string, status: RequirementStatus) => void; onDelete: (id: string) => void; onCreate: () => void; } const ALL_STATUSES: RequirementStatus[] = ['pending_review', 'adopted', 'rejected', 'planned', 'developing', 'testing', 'released', 'closed']; export function RequirementTable({ requirements, statusFilter, onFilterChange, onEdit, onDelete, onCreate, }: Props) { return (
onFilterChange(null)}> 全部 {ALL_STATUSES.map((s) => ( onFilterChange(s)}> {REQ_STATUS_LABEL[s]} ))}
{requirements.length === 0 ? (

暂无需求

点击"新建需求"添加

) : (
{requirements.map((req) => ( ))}
标题 状态 优先级 创建者 操作
{req.title} {PRIORITY_LABEL[req.priority] || '无'} {req.creator?.name || '—'}
)}
); } function FilterChip({ active, onClick, children, }: { active: boolean; onClick: () => void; children: React.ReactNode; }) { return ( ); }