'use client' import * as React from 'react' import Textarea from 'react-textarea-autosize' import { useActions, useUIState } from '@aigxion/isdk/rsc' import { UserMessage } from './stocks/message' import { type AI } from '@/lib/chat/actions' import { Button } from './ui/button' import { IconArrowElbow, IconPlus } from './ui/icons' import { Tooltip, TooltipContent, TooltipTrigger } from './ui/tooltip' import { useEnterSubmit } from '@/lib/hooks/use-enter-submit' import { nanoid } from 'nanoid' import { useRouter } from 'next/navigation' export function PromptForm({ input, setInput }: { input: string setInput: (value: string) => void }) { const router = useRouter() const { formRef, onKeyDown } = useEnterSubmit() const inputRef = React.useRef(null) const { submitUserMessage } = useActions() const [_, setMessages] = useUIState() React.useEffect(() => { if (inputRef.current) { inputRef.current.focus() } }, []) return (
{ e.preventDefault() // Blur focus on mobile if (window.innerWidth < 600) { e.target['message']?.blur() } const value = input.trim() setInput('') if (!value) return // Optimistically add user message UI setMessages((currentMessages: any) => [ ...currentMessages, { id: nanoid(), display: {value} } ]) // Submit and get response message const responseMessage = await submitUserMessage(value) setMessages((currentMessages: any) => [...currentMessages, responseMessage]) }} >
New Chat