"use client" import type React from "react" import { useState, useRef } from "react" import { Card } from "@/components/ui/card" import { Button } from "@/components/ui/button" import { Badge } from "@/components/ui/badge" import { ChatMessages } from "@/components/chat-messages" import { ChatInput } from "@/components/chat-input" import { ProviderSelector } from "@/components/provider-selector" import { SuggestionPills } from "@/components/suggestion-pills" import { useChat } from "@/hooks/use-chat" import { Download, Upload, FileText, Copy, Globe, Zap } from "lucide-react" import type { AIProvider } from "@/types/chat" interface ChatInterfaceProps { messages?: any[] onSendMessage?: (message: string) => void suggestions?: string[] isGenerating?: boolean } export function ChatInterface({ messages: externalMessages, onSendMessage: externalSendMessage, suggestions: externalSuggestions, isGenerating: externalIsGenerating, }: ChatInterfaceProps) { const [selectedProvider, setSelectedProvider] = useState("openai") const [selectedModel, setSelectedModel] = useState("gpt-4o") const { messages: internalMessages, isLoading, sendMessage: internalSendMessage, suggestions: internalSuggestions, clearChat, uploadHistory, downloadHistory, exportHTML, copyJSON, } = useChat(selectedProvider) const fileInputRef = useRef(null) // Use external props if provided, otherwise use internal state const messages = externalMessages || internalMessages const sendMessage = externalSendMessage || internalSendMessage const suggestions = externalSuggestions || internalSuggestions const isGenerating = externalIsGenerating || isLoading const handleFileUpload = (event: React.ChangeEvent) => { const file = event.target.files?.[0] if (file) { uploadHistory(file) event.target.value = "" } } return (
Software Engineering Agent Website Generator
{messages.length} messages
{suggestions.length > 0 && (
)}
) }