import type { ComponentPropsWithoutRef } from "react"; // 状态气泡组件 import { cn } from "../../lib/utils"; const STATUS_MAP: Record = { draft: { label: "草稿", className: "badge-neutral bg-zinc-200/50" }, reviewing: { label: "审批中", className: "badge-warning" }, pending: { label: "待派发", className: "badge-warning" }, processing: { label: "处理中", className: "badge-warning" }, succeeded: { label: "已成功", className: "badge-success" }, failed: { label: "失败", className: "badge-error" }, dead_letter: { label: "死信", className: "badge-error" }, not_triggered: { label: "未触发", className: "badge-neutral" }, pending_ocr: { label: "识别中", className: "badge-warning" }, approved: { label: "已通过", className: "badge-success" }, completed: { label: "已完成", className: "badge-success" }, in_progress: { label: "进行中", className: "badge-warning" }, available: { label: "可用", className: "badge-success" }, active: { label: "生效中", className: "badge-success" }, valid: { label: "有效", className: "badge-success" }, planned: { label: "已计划", className: "badge-primary" }, in_stock: { label: "库存中", className: "badge-primary" }, in_use: { label: "使用中", className: "badge-success" }, under_repair: { label: "维修中", className: "badge-warning" }, retired: { label: "已退役", className: "badge-neutral" }, paid: { label: "已支付", className: "badge-success" }, bound: { label: "已绑定", className: "badge-success" }, rejected: { label: "已驳回", className: "badge-error" }, ocr_failed: { label: "识别失败", className: "badge-error" }, cancelled: { label: "已取消", className: "badge-neutral" }, archived: { label: "已归档", className: "badge-neutral" }, skipped: { label: "已跳过", className: "badge-neutral" }, revoked: { label: "已撤销", className: "badge-neutral" }, expired: { label: "已过期", className: "badge-neutral" }, terminated: { label: "已终止", className: "badge-error" }, scheduled: { label: "已排期", className: "badge-primary" }, }; export function StatusBadge({ status, label, className, ...props }: ComponentPropsWithoutRef<"span"> & { status: string; label?: string; }) { const config = STATUS_MAP[status] || { label: status, className: "badge-neutral" }; return ( {label ?? config.label} ); }