"use client" import { useState, useEffect } from "react" import { useRouter } from "next/navigation" import { generateId } from "@lib/generate-id" import { usePersistentChat } from "@/stores/chat" import { ArrowUp } from "lucide-react" import { Button } from "@ui/components/button" import { ProjectSelector } from "./project-selector" import { ModelSelector } from "./model-selector" import { useAuth } from "@lib/auth-context" export function ChatInput() { const [message, setMessage] = useState("") const [selectedModel, setSelectedModel] = useState< "gpt-5" | "claude-sonnet-4.5" | "gemini-2.5-pro" >("gemini-2.5-pro") const router = useRouter() const { setCurrentChatId } = usePersistentChat() const { user } = useAuth() useEffect(() => { const savedModel = localStorage.getItem("selectedModel") as | "gpt-5" | "claude-sonnet-4.5" | "gemini-2.5-pro" if ( savedModel && ["gpt-5", "claude-sonnet-4.5", "gemini-2.5-pro"].includes(savedModel) ) { setSelectedModel(savedModel) } }, []) const handleModelChange = ( modelId: "gpt-5" | "claude-sonnet-4.5" | "gemini-2.5-pro", ) => { setSelectedModel(modelId) localStorage.setItem("selectedModel", modelId) } const handleSend = () => { if (!message.trim()) return const newChatId = generateId() setCurrentChatId(newChatId) sessionStorage.setItem(`chat-initial-${newChatId}`, message.trim()) sessionStorage.setItem(`chat-model-${newChatId}`, selectedModel) router.push(`/chat/${newChatId}`) setMessage("") } const handleKeyDown = (e: React.KeyboardEvent) => { if (e.key === "Enter" && !e.shiftKey) { e.preventDefault() handleSend() } } return (

Welcome, {user?.name}

{ e.preventDefault() if (!message.trim()) return handleSend() }} >