import type { JSX } from "@solidjs/web"; import { type Accessor } from "solid-js"; import { type MaybeAccessor } from "../internals/maybe-accessor.js"; /** * Why the dialog's open state changed. * * - `"trigger-press"` — trigger was clicked or keyboard-activated. * - `"escape-key"` — Escape dismissed the dialog. * - `"outside-press"` — pointer pressed outside (when enabled). * - `"close-button"` — `` was pressed. * - `"imperative"` — `d.setOpen()` called programmatically. */ export type DialogChangeReason = "trigger-press" | "escape-key" | "outside-press" | "close-button" | "imperative"; import type { DialogModalKind } from "./dialog-root-context.js"; export type { DialogModalKind }; /** * Options for {@link createDialog}. */ export interface CreateDialogOptions { /** * Open state. Consumer-owned signal. */ open: MaybeAccessor; /** * Whether interaction is suppressed. * @default false */ disabled?: MaybeAccessor; /** * Modal surface kind. * @default true */ modal?: MaybeAccessor; /** * When true, outside-press dismissal is disabled. * @default false */ disablePointerDismissal?: MaybeAccessor; /** * Pre-change callback fired via `runWithOwner(null, ...)`. */ onOpenChange?: (open: boolean, event: Event, reason: DialogChangeReason) => void; } /** * Public API returned by {@link createDialog}. */ export interface DialogApi { /** Reactive accessor for the current open state. */ open: Accessor; /** Whether interaction is suppressed. */ disabled: Accessor; /** Modal surface kind. */ modal: Accessor; /** Whether outside-press dismissal is disabled. */ disablePointerDismissal: Accessor; /** Imperative open setter. */ setOpen: (next: boolean, event?: Event, reason?: DialogChangeReason) => void; /** Flip open (no-op when disabled). */ toggle: (event?: Event, reason?: DialogChangeReason) => void; /** Context provider. */ Provider: (props: { children: JSX.Element; }) => JSX.Element; } /** * Read the nearest {@link DialogApi}. Throws unless `optional` is true. */ export declare function useDialog(): DialogApi; export declare function useDialog(optional: true): DialogApi | null; /** * Headless primitive for a dialog compound. Modal by default. Configurable * outside-press dismissal. DOM machinery lives in ``. */ export declare function createDialog(options: CreateDialogOptions): DialogApi; //# sourceMappingURL=create-dialog.d.ts.map