'use client' import { useEffect, useRef } from 'react' import { ChatMessage } from './ChatMessage' import { ChatInput } from './ChatInput' import { useChatStream } from './useChatStream' import { useToast } from '@/components/ui/use-toast' import { Bot, Trash2, RotateCcw } from 'lucide-react' import { Button } from '@/components/ui/button' interface ChatPanelProps { className?: string } export function ChatPanel({ className }: ChatPanelProps) { const { toast } = useToast() const messagesEndRef = useRef(null) const { messages, isLoading, isStreaming, error, toolsExecuting, sendMessage, clearChat, } = useChatStream({ onError: (error) => { toast({ title: 'Fel', description: error, variant: 'destructive', }) }, }) // Auto-scroll to bottom when new messages arrive useEffect(() => { if (messagesEndRef.current) { messagesEndRef.current.scrollIntoView({ behavior: 'smooth' }) } }, [messages]) const handleClearChat = () => { clearChat() toast({ title: 'Chatten rensad', description: 'En ny konversation har startats.', }) } return (
{/* Header */}

AI-assistent

Skatt, moms och bokföring

{messages.length > 0 && ( )}
{/* Messages */}
{messages.length === 0 ? (

Hur kan jag hjälpa dig?

Jag kan svara på frågor om skatt, moms, bokföring och andra ekonomiska frågor för företagare.

sendMessage('Hur går det för mitt företag?')} disabled={isLoading} > Hur går det för mitt företag? sendMessage('Visa mina senaste fakturor')} disabled={isLoading} > Visa mina senaste fakturor sendMessage('Hur ser min resultaträkning ut?')} disabled={isLoading} > Hur ser min resultaträkning ut? sendMessage('Vad kan jag dra av som företagare?')} disabled={isLoading} > Vad kan jag dra av som företagare?
) : (
{messages.map((message, index) => ( ))}
)}
{/* Input */}
) } function SuggestionButton({ children, onClick, disabled, }: { children: React.ReactNode onClick: () => void disabled?: boolean }) { return ( ) }