import { type ComponentType, type ReactNode } from "react"; import { type StyleProp, type ViewStyle } from "../../style/index.js"; import { type ButtonProps } from "../../atoms/button/button.shared.js"; import { type DrawerSkin } from "./drawer.styles.js"; export type ButtonComponent = ComponentType; export interface DrawerProps { /** Panel content. */ children?: ReactNode; /** Controlled open state. Omit for uncontrolled (a `trigger` opens it). */ open?: boolean; /** Fired when the open state changes (trigger press, scrim tap, back/escape). */ onOpenChange?: (open: boolean) => void; /** * Label for an optional outline trigger button. When set, the drawer renders the button * and opens itself on press (uncontrolled). Omit when you drive `open` yourself. */ trigger?: string; /** A full-height panel on the left edge (default). */ left?: boolean; /** A full-height panel on the right edge. */ right?: boolean; /** A sheet spanning the width, rising from the bottom. */ bottom?: boolean; /** A sheet spanning the width, dropping from the top. */ top?: boolean; /** Width of a side drawer in px (default 288). Ignored for the bottom/top sheet. */ width?: number; /** E2E hook forwarded to the root element. */ testID?: string; /** Outer layout composition for the panel surface, never a restyle hook. (Device safe-area insets are applied automatically.) */ style?: StyleProp; } /** * Build a Drawer component from a platform skin and the platform-correct trigger * Button. * * The trigger Button is passed in by each platform's thin `.tsx`/`.ios`/`.android` * file so the built-in `trigger` reads native on every build path. This matters * for the WEB docs 3-up preview: a bare barrel import always resolves the WEB * Button in a browser bundler, which would paint a web-styled trigger inside the * iOS/Android rows; each platform file passes its own `.ios`/`.android` Button so * the row's trigger reads native. On a real device Metro resolves the right Button * by extension regardless, so the default (the web base) is correct there too. */ export declare function createDrawer(skin: DrawerSkin, Button?: ButtonComponent): (props: DrawerProps) => import("react").JSX.Element; //# sourceMappingURL=drawer.shared.d.ts.map