"use client" import React, { useCallback, useRef, useEffect } from "react" import { Button } from "@/components/ui/button" import { Textarea } from "@/components/ui/textarea" import { Loader2, Send } from "lucide-react" interface ChatInputProps { input: string status: "submitted" | "streaming" | "ready" | "error" onSubmit: (e: React.FormEvent) => void onChange: (e: React.ChangeEvent) => void } export function ChatInput({ input, status, onSubmit, onChange }: ChatInputProps) { const textareaRef = useRef(null) // Auto-resize textarea based on content const adjustTextareaHeight = useCallback(() => { const textarea = textareaRef.current if (textarea) { textarea.style.height = "auto" textarea.style.height = `${Math.min(textarea.scrollHeight, 200)}px` } }, []) useEffect(() => { adjustTextareaHeight() }, [input, adjustTextareaHeight]) // Handle keyboard shortcuts const handleKeyDown = (e: React.KeyboardEvent) => { if ((e.metaKey || e.ctrlKey) && e.key === "Enter") { e.preventDefault() const form = e.currentTarget.closest("form") if (form && input.trim() && status !== "streaming") { form.requestSubmit() } } } return (