"use client"; import * as React from 'react'; import { SendHorizonalIcon, SquareIcon } from 'lucide-react'; import { cn } from '../../../lib/utils'; import { Button } from './Button'; import Tooltip from './Tooltip'; /* ─── Context ────────────────────────────────────────────────────── */ type PromptInputStatus = 'ready' | 'submitted' | 'streaming' | 'error'; interface PromptInputContextValue { status: PromptInputStatus; } const PromptInputContext = React.createContext(null); const usePromptInput = () => { const context = React.useContext(PromptInputContext); if (!context) { throw new Error('PromptInput components must be used within PromptInput'); } return context; }; /* ─── PromptInput (root form) ────────────────────────────────────── */ export interface PromptInputProps extends React.FormHTMLAttributes { status?: PromptInputStatus; } export const PromptInput = React.forwardRef( ({ className, status = 'ready', children, ...props }, ref) => { const contextValue = React.useMemo(() => ({ status }), [status]); return (
{children}
); } ); PromptInput.displayName = 'PromptInput'; /* ─── PromptInputHeader ──────────────────────────────────────────── */ export const PromptInputHeader = React.forwardRef< HTMLDivElement, React.HTMLAttributes >(({ className, ...props }, ref) => (
)); PromptInputHeader.displayName = 'PromptInputHeader'; /* ─── PromptInputBody ────────────────────────────────────────────── */ export const PromptInputBody = React.forwardRef< HTMLDivElement, React.HTMLAttributes >(({ className, ...props }, ref) => (
)); PromptInputBody.displayName = 'PromptInputBody'; /* ─── PromptInputTextarea ────────────────────────────────────────── */ export const PromptInputTextarea = React.forwardRef< HTMLTextAreaElement, React.TextareaHTMLAttributes >(({ className, ...props }, ref) => (