"use client"; import { BarChart3, Check, ChevronDown, FileText, GitBranch, Loader2, Megaphone, Sparkles, Target, } from "lucide-react"; import { AnimatePresence, motion, useReducedMotion } from "motion/react"; import { useState } from "react"; import { AGENT_AUDIENCE_TAGS, AGENT_PROGRESS_STAGES, } from "./playground-content"; import { agentEase, agentPanelTransition, agentSoftSpring, agentStaggerFast, agentThreadItem, } from "./agent-motion"; import { cn } from "@/lib/utils"; import { type } from "@/lib/typography"; import type { ChatMessage } from "./types"; interface AgentThreadProps { messages: ChatMessage[]; isTyping?: boolean; bottomRef?: React.RefObject; } function ProgressCard() { const activeStage = 2; const reduceMotion = useReducedMotion(); return (

تولید سناریو آغاز شد

۵ دقیقه
{AGENT_PROGRESS_STAGES.map((stage, index) => { const isComplete = index < activeStage; const isActive = index === activeStage; return (
{stage}
); })}
); } function TaskRow({ title, status, expanded, onToggle, children, index = 0, }: { title: string; status: "done" | "active" | "pending"; expanded?: boolean; onToggle?: () => void; children?: React.ReactNode; index?: number; }) { const reduceMotion = useReducedMotion(); return ( {expanded && children && (
{children}
)}
); } function AudienceTags() { const allTags = [ ...AGENT_AUDIENCE_TAGS.companyType, ...AGENT_AUDIENCE_TAGS.stage, ...AGENT_AUDIENCE_TAGS.region, ]; const reduceMotion = useReducedMotion(); return (
{allTags.map((tag, index) => ( {tag} ))}
); } function AssistantBubble({ content }: { content: string }) { return (

{content}

); } export function AgentThread({ messages, isTyping = false, bottomRef, }: AgentThreadProps) { const [expandedTask, setExpandedTask] = useState(true); const lastUserMessage = [...messages].reverse().find((m) => m.role === "user"); const assistantMessages = messages.filter((m) => m.role === "assistant"); const lastAssistant = assistantMessages[assistantMessages.length - 1]; return (
{lastUserMessage && (

{lastUserMessage.content}

)}
{(isTyping || assistantMessages.length > 0) && ( {isTyping && ( )}
setExpandedTask((v) => !v)} index={1} >
{!isTyping && lastAssistant && ( )} {!isTyping && assistantMessages.length > 0 && ( سناریوی شما آماده است! پیش‌نمایش )}
)}
); } export function FeatureCardIcon({ icon, className, }: { icon: (typeof import("./playground-content").AGENT_FEATURE_CARDS)[number]["icon"]; className?: string; }) { const iconClass = cn("size-4", className); switch (icon) { case "megaphone": return ; case "document": return ; case "sparkles": return ; case "chart": return ; case "target": return ; case "steps": return ; } }