"use client" import type React from "react" import { useRef, useEffect } from "react" import { useChat } from "@ai-sdk/react" import { Button } from "@/components/ui/button" import { Input } from "@/components/ui/input" import { Card, CardContent, CardFooter, CardHeader, CardTitle } from "@/components/ui/card" import { ScrollArea } from "@/components/ui/scroll-area" import { Loader2, Send } from "lucide-react" export default function ChatPanel() { const { messages, input, handleInputChange, handleSubmit, isLoading } = useChat({ api: "/api/chat", maxSteps: 5, // Allow multiple steps for complex diagram generation }) const messagesEndRef = useRef(null) // Scroll to bottom when messages change useEffect(() => { if (messagesEndRef.current) { messagesEndRef.current.scrollIntoView({ behavior: "smooth" }) } }, [messages]) const onFormSubmit = (e: React.FormEvent) => { e.preventDefault() if (input.trim()) { handleSubmit(e) } } return ( Chat with Diagram Generator {messages.length === 0 ? (

Start a conversation to generate a diagram.

Try: "Create a flowchart for user authentication"

) : ( messages.map((message) => (
{message.content}
{message.toolInvocations?.map((tool, index) => (
{tool.state === "call" ? "Generating diagram..." : "Diagram generated"}
))}
)) )}
) }