import { type ReactNode } from "react"; import { Button as WebButton } from "../../atoms/button/button.js"; import { Dialog as WebDialog } from "../dialog/dialog.js"; import { Steps as WebSteps, type Step } from "../steps/steps.js"; import * as s from "./wizard.styles.js"; import { type WizardTypography } from "./wizard.typography.js"; export interface WizardProps { /** Controlled modal visibility. */ open: boolean; /** Names the modal and its fixed header. */ title: string; /** Supporting text below the title. */ description?: string; /** Ordered stages; the application owns their content and transitions. */ steps: Step[]; /** Zero-based active stage; earlier stages read as complete. */ current: number; /** Called when the close action, Escape or native back requests dismissal. */ onOpenChange: (open: boolean) => void; /** Maximum panel width; defaults to the hand-off's 620px and shrinks to its parent. */ panelWidth?: number; /** Named previous stage action at the footer's start. */ previous?: { label: string; onPress: () => void; disabled?: boolean; }; /** Application actions at the footer's end. */ actions?: ReactNode; /** Save/progress status beside the title in the fixed header. */ status?: string; children?: ReactNode; /** Scroll the body (default true). Set false when a child, such as Chat, owns its scroll. */ scrollBody?: boolean; /** * Show the open wizard as a non-modal specimen, for a catalogue or a showcase: it keeps * its look, its dialog role and its labelling, but does not take focus, trap Tab, * claim `aria-modal`, or close on Escape or native back. It renders in place, in the * flow of the page, as Dialog's contained form does, rather than presenting into an * OverlayProvider. */ embedded?: boolean; /** * Lay the wizard out like a desktop assistant's window (the Claude desktop window, * reference claude-desktop-chat): the steps as sidebar rows down the panel's full height, * a 44 px top bar with the title and the status, and `previous` and `actions` in a bar * under the conversation. The body is unpadded so an `assistant flush` Chat fills it; a scrolled body centers its * content in the conversation's column. The description is not drawn. */ assistant?: boolean; /** Prefix for modal, steps, body-scroll and footer test hooks. */ testID?: string; } type WizardParts = { Dialog: typeof WebDialog; Steps: typeof WebSteps; Button: typeof WebButton; }; /** A wizard delegates modal behavior and platform controls to their existing components. */ export declare function createWizard(skin: s.WizardSkin, { Dialog, Steps, Button }?: Partial, typography?: WizardTypography): ({ open, title, description, steps, current, onOpenChange, panelWidth, previous, actions, status, children, scrollBody, embedded, assistant, testID }: WizardProps) => import("react").JSX.Element; export {}; //# sourceMappingURL=wizard.shared.d.ts.map