"use client" import { useCallback, useMemo, useState } from "react" import ChatInput from "./input" import ChatModelSelector from "./model-selector" import { getChatSpaceDisplayLabel } from "@/lib/chat-space-label" import { useProject } from "@/stores" import { useContainerTags } from "@/hooks/use-container-tags" import { dmSansClassName } from "@/lib/fonts" import { cn } from "@lib/utils" import type { ModelId } from "@/lib/models" export function HomeChatComposer({ onStartChat, className, }: { onStartChat: (message: string, model: ModelId) => void className?: string }) { const [input, setInput] = useState("") const [selectedModel, setSelectedModel] = useState("gemini-2.5-pro") const { selectedProject } = useProject() const { allProjects } = useContainerTags() const chatSpaceLabel = useMemo( () => getChatSpaceDisplayLabel({ selectedProject, allProjects, }), [selectedProject, allProjects], ) const send = useCallback(() => { const t = input.trim() if (!t) return onStartChat(t, selectedModel) setInput("") }, [input, onStartChat, selectedModel]) 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={ <>
{chatSpaceLabel}
} />
) }