'use client' import { useState, useRef, useCallback, KeyboardEvent } from 'react' import { Button } from '@/components/ui/button' import { Textarea } from '@/components/ui/textarea' import { Send, Loader2 } from 'lucide-react' interface ChatInputProps { onSend: (message: string) => void disabled?: boolean isLoading?: boolean placeholder?: string } export function ChatInput({ onSend, disabled = false, isLoading = false, placeholder = 'Skriv ett meddelande...', }: ChatInputProps) { const [message, setMessage] = useState('') const textareaRef = useRef(null) const handleSend = useCallback(() => { const trimmed = message.trim() if (trimmed && !disabled && !isLoading) { onSend(trimmed) setMessage('') // Reset textarea height if (textareaRef.current) { textareaRef.current.style.height = 'auto' } } }, [message, disabled, isLoading, onSend]) const handleKeyDown = useCallback( (e: KeyboardEvent) => { // Send on Enter (without Shift) if (e.key === 'Enter' && !e.shiftKey) { e.preventDefault() handleSend() } }, [handleSend] ) const handleChange = (e: React.ChangeEvent) => { setMessage(e.target.value) // Auto-resize textarea const textarea = e.target textarea.style.height = 'auto' textarea.style.height = `${Math.min(textarea.scrollHeight, 200)}px` } const isDisabled = disabled || isLoading || !message.trim() return (