import * as react from 'react'; import { ReactNode } from 'react'; /** * ChatDrawer — tabbed, collapsible panel that sits *above* a `PromptInput` * (via the input's `aboveInput` slot) so the drawer and composer share one * rounded shell. Each tab gets a numbered chip and a content panel; only * one panel renders at a time. * * * {tab === "tools" && } * {tab === "deal" && } * * } * budgetTokens={200_000} * onSubmit={(text) => send(text)} * /> * * The drawer is purely presentational and slot-driven — you decide what * each tab shows. Tab order in the numbered chips is the order you pass. */ type ChatDrawerTab = { /** Stable id — used as the React key and as `activeTabId`. */ id: string; /** Human label rendered on the chip. */ label: string; /** * Optional override for the numbered prefix (defaults to position +1). * Set to `null` to hide the number entirely (e.g. for a context-specific * tab like the deal one in the screenshots). */ number?: number | null; }; interface ChatDrawerProps { tabs: ChatDrawerTab[]; activeTabId: string; onTabChange: (id: string) => void; /** Body open/closed. Default true. */ open?: boolean; /** Called when the chevron is clicked. */ onToggle?: (open: boolean) => void; /** Body content for the active tab. */ children?: ReactNode; /** Min height of the body when open, in px. Default 140. */ minBodyHeight?: number; className?: string; } declare function ChatDrawer({ tabs, activeTabId, onTabChange, open, onToggle, children, minBodyHeight, className, }: ChatDrawerProps): react.JSX.Element; export { ChatDrawer, type ChatDrawerProps, type ChatDrawerTab };