"use client"; import { useRef, useEffect, useState } from "react"; import { Button } from "@/components/ui/button"; import { Textarea } from "@/components/ui/textarea"; import { useClaudeChat } from "@/hooks/use-claude-chat"; import { Send, Loader2 } from "lucide-react"; export function ClaudeChat({ campaignId }: { campaignId: string }) { const { messages, sendMessage, isStreaming } = useClaudeChat(campaignId); const [input, setInput] = useState(""); const messagesEndRef = useRef(null); useEffect(() => { messagesEndRef.current?.scrollIntoView({ behavior: "smooth" }); }, [messages]); function handleSubmit(e: React.FormEvent) { e.preventDefault(); if (!input.trim() || isStreaming) return; sendMessage(input.trim()); setInput(""); } function handleKeyDown(e: React.KeyboardEvent) { if (e.key === "Enter" && !e.shiftKey) { e.preventDefault(); handleSubmit(e); } } return (
{/* Messages */}
{messages.length === 0 && (

Chat with Claude about this campaign. Ask for edits, new variations, or feedback on generated content.

)} {messages.map((msg, i) => (
{msg.content} {isStreaming && i === messages.length - 1 && msg.role === "assistant" && ( )}
))}
{/* Input */}