"use client" import { useState, useRef } from "react" import { Send, Paperclip, Smile, Image as ImageIcon, FileText, Mic, MoreHorizontal } from "lucide-react" import { cn } from "@/lib/utils" import { Button } from "@/components/ui/button" import { Textarea } from "@/components/ui/textarea" import { DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuTrigger } from "@/components/ui/dropdown-menu" import { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger } from "@/components/ui/tooltip" interface MessageInputProps { onSendMessage: (content: string) => void disabled?: boolean placeholder?: string } export function MessageInput({ onSendMessage, disabled = false, placeholder = "Type a message..." }: MessageInputProps) { const [message, setMessage] = useState("") const [isTyping, setIsTyping] = useState(false) const textareaRef = useRef(null) const handleSendMessage = () => { const trimmedMessage = message.trim() if (trimmedMessage && !disabled) { onSendMessage(trimmedMessage) setMessage("") setIsTyping(false) // Reset textarea height if (textareaRef.current) { textareaRef.current.style.height = "auto" } } } const handleKeyPress = (e: React.KeyboardEvent) => { if (e.key === "Enter" && !e.shiftKey) { e.preventDefault() handleSendMessage() } } const handleTextareaChange = (e: React.ChangeEvent) => { const value = e.target.value setMessage(value) // Auto-resize textarea if (textareaRef.current) { textareaRef.current.style.height = "auto" textareaRef.current.style.height = `${Math.min(textareaRef.current.scrollHeight, 120)}px` } // Handle typing indicator if (value.trim() && !isTyping) { setIsTyping(true) } else if (!value.trim() && isTyping) { setIsTyping(false) } } const handleFileUpload = (type: "image" | "file") => { // In a real app, this would open a file picker console.log(`Upload ${type}`) } return (
{/* Attachment button */}

Attach file

handleFileUpload("image")} className="cursor-pointer" > Photo or video handleFileUpload("file")} className="cursor-pointer" > Document
{/* Message input */}