/** * TORUK Core's conversation header (`features/home/components/ChatPhaseHeader.jsx`, styled by the * `chatHeader*` block in `features/home/hooks/useHomeStyles.js`). * * It is a floating overlay, not a bar: the transcript scrolls *underneath* it, and the only reason * the title group and the action buttons carry a background is to mask the messages passing behind * them — which is why the fill is the page colour rather than a surface colour, and why the header * itself has `pointer-events: none` with the two interactive groups opting back in. * * Rename is inline, as Core's is: double-click the title or pick Rename from the menu, then Enter * or blur to commit and Escape to cancel. A modal or a browser prompt would be the wrong shape for * an embedded widget and is not what Core does either. * * Core's artifacts button is conditional (`{onOpenArtifacts && …}`) and the SDK has no artifacts * panel, so that slot is simply not rendered — the same branch Core takes when a caller omits it. */ export type ConversationHeaderProps = { /** Session title. Core falls back to a generic chat title when the session has none. */ title: string; backLabel?: string; menuLabel?: string; /** Core's `artifactsLabel`, on the icon-only button beside the menu. */ artifactsLabel?: string; renameLabel?: string; deleteLabel?: string; /** Core's back button starts a new chat rather than navigating; omit it when New Chat is switched off. */ onBack?: () => void; /** Called with the committed title. Omit to make the title read-only. */ onRename?: (title: string) => void; onDelete?: () => void; /** Core's `onOpenArtifacts`; omitted when the deployment has artifacts switched off. */ onOpenArtifacts?: () => void; /** Whether the artifacts surface is currently showing, for the button's pressed state. */ artifactsOpen?: boolean; }; export declare const ConversationHeader: (props: ConversationHeaderProps) => import("solid-js").JSX.Element;