"use client"; import { motion } from "framer-motion"; import { Copy, Pencil, Sparkles, Trash2, Video, Wand2, FileText } from "lucide-react"; import { Badge } from "@/components/ui/badge"; import { cn } from "@/lib/utils"; import type { AgentPreset } from "@/types/agent"; interface AgentPresetCardNewProps { preset: AgentPreset; selected?: boolean; onSelect: (presetId: string) => void; onFork?: (preset: AgentPreset) => void; onEdit?: (preset: AgentPreset) => void; onDelete?: (preset: AgentPreset) => void; index?: number; } export function AgentPresetCardNew({ preset, selected = false, onSelect, onFork, onEdit, onDelete, index = 0, }: AgentPresetCardNewProps) { const previewUrl = preset.avatarUrl || preset.referenceAssets?.[0]?.thumbnailUrl || preset.referenceAssets?.[0]?.originalUrl || ""; const ownerName = String(preset.owner?.name || "").trim() || String(preset.owner?.email || "").trim() || "未知发布人"; const publishedAt = (() => { const raw = preset.createdAt ? new Date(preset.createdAt) : null; if (!raw || Number.isNaN(raw.getTime())) return "未知时间"; return raw.toLocaleDateString("zh-CN", { timeZone: "Asia/Shanghai", year: "numeric", month: "2-digit", day: "2-digit", }); })(); const typeConfig = { image: { icon: Wand2, label: "生图", color: "bg-indigo-500/10 text-indigo-600 dark:text-indigo-400" }, video: { icon: Video, label: "视频", color: "bg-amber-500/10 text-amber-600 dark:text-amber-400" }, text: { icon: FileText, label: "生文", color: "bg-emerald-500/10 text-emerald-600 dark:text-emerald-400" }, }; const typeInfo = typeConfig[preset.type] || typeConfig.image; const TypeIcon = typeInfo.icon; return ( {/* 顶部选择指示条 */}
); }