"use client" import { useCallback, useState } from "react" import ChatInput from "./input" import ChatModelSelector from "./model-selector" import { useProject } from "@/stores" import { cn } from "@lib/utils" import type { ModelId } from "@/lib/models" import { SpaceSelector } from "@/components/space-selector" import { AUTO_CHAT_SPACE_ID } from "@/lib/chat-auto-space" import { ReasoningSelector } from "./reasoning-selector" import { getDefaultReasoningEffort, type ReasoningEffort } from "@/lib/models" export function HomeChatComposer({ onStartChat, className, }: { onStartChat: ( message: string, model: ModelId, projectId: string, reasoningEffort: ReasoningEffort, ) => void className?: string }) { const [input, setInput] = useState("") const [selectedModel, setSelectedModel] = useState("gemini-2.5-pro") const [reasoningEffort, setReasoningEffort] = useState( getDefaultReasoningEffort("gemini-2.5-pro"), ) const { selectedProject } = useProject() const [chatSpaceProjects, setChatSpaceProjects] = useState([ AUTO_CHAT_SPACE_ID, ]) const handleModelChange = useCallback((model: ModelId) => { setSelectedModel(model) setReasoningEffort(getDefaultReasoningEffort(model)) }, []) const send = useCallback(() => { const t = input.trim() if (!t) return onStartChat( t, selectedModel, chatSpaceProjects[0] ?? selectedProject, reasoningEffort, ) setInput("") }, [ chatSpaceProjects, input, onStartChat, reasoningEffort, selectedModel, selectedProject, ]) const handleKeyDown = (e: React.KeyboardEvent) => { if (e.key === "Enter" && !e.shiftKey) { e.preventDefault() send() } } return (
setInput(e.target.value)} onSend={send} onStop={() => {}} onKeyDown={handleKeyDown} isResponding={false} showStatusStrip={false} stackedToolbar={ <> } />
) }