import React, { useState, useMemo } from 'react'; import { Card, Button } from '../components/UiKit'; import { useOrg } from '../contexts/OrgContext'; import { CHAT_STARTERS } from '../constants'; const Chat: React.FC = () => { const { employees, reports, generateEmployeeReport } = useOrg(); const [messages, setMessages] = useState>([]); const [input, setInput] = useState(''); const [isLoading, setIsLoading] = useState(false); const [selectedEmployeeId, setSelectedEmployeeId] = useState(''); const selectedReport = selectedEmployeeId ? reports[selectedEmployeeId] : undefined; const dynamicStarters = useMemo(() => { if (!selectedReport) return CHAT_STARTERS.slice(0, 4); const strengths = selectedReport.insights.strengths?.slice(0, 2) || []; const weaknesses = selectedReport.insights.weaknesses?.slice(0, 1) || []; const risk = selectedReport.retentionRisk; const starters: string[] = []; if (strengths[0]) starters.push(`How can we further leverage ${strengths[0]} for cross-team impact?`); if (weaknesses[0]) starters.push(`What is an actionable plan to address ${weaknesses[0]} this quarter?`); if (risk) starters.push(`What factors contribute to ${selectedReport.employeeId}'s ${risk} retention risk?`); starters.push(`Is ${selectedReport.employeeId} a candidate for expanded scope or leadership?`); while (starters.length < 4) starters.push(CHAT_STARTERS[starters.length] || 'Provide an organizational insight.'); return starters.slice(0, 4); }, [selectedReport]); const handleSend = async (message?: string) => { const textToSend = message || input; if (!textToSend.trim()) return; const userMessage = { id: Date.now().toString(), role: 'user' as const, text: textToSend }; setMessages(prev => [...prev, userMessage]); setInput(''); setIsLoading(true); // Simulate AI response (placeholder for server /api/chat usage) setTimeout(() => { const aiResponse = { id: (Date.now() + 1).toString(), role: 'assistant' as const, text: `Based on ${selectedEmployeeId ? 'the selected employee\'s' : 'organizational'} data, here's an insight related to: "${textToSend}".` }; setMessages(prev => [...prev, aiResponse]); setIsLoading(false); }, 1500); }; return (

Chat with AI

Ask questions about your employees and organization

{selectedEmployeeId && !selectedReport && ( )}
{messages.length === 0 && (

Get started with these questions:

{dynamicStarters.map((starter, idx) => ( ))}
)}
{messages.map(message => (
{message.text}
))} {isLoading && (
)}
setInput(e.target.value)} onKeyPress={(e) => e.key === 'Enter' && handleSend()} placeholder="Ask about employees, reports, or company insights..." className="flex-1 px-3 py-2 border border-[--border-color] rounded-lg bg-[--background-secondary] text-[--text-primary] focus:outline-none focus:ring-2 focus:ring-blue-500" />
); }; export default Chat;