import { default as React } from 'react'; export interface DrawerMobileProps { /** Drawer content. Function form receives context passed via open(). */ children?: React.ReactNode | ((context: TContext | null) => React.ReactNode); /** Open the drawer on mount. @default false */ defaultOpen?: boolean; /** Controlled open state. Changes trigger open/close. Internal closes (swipe, overlay) still work and notify via onClose. */ isOpen?: boolean; /** Called after the drawer closes. Receives context at close time. */ onClose?: (context: TContext | null) => void; /** Controlled snap value. Takes precedence over internal state. */ snap?: string | number | null; /** Available snap points. Accepts '%', 'px', numbers, or 'auto'. @default ['auto'] */ snapPoints?: (string | number | 'auto')[]; /** Callback when snap changes (controlled mode). */ setSnap?: (snap: string | number) => void; /** Render inline instead of portaling to document.body. @default false */ attachToParent?: boolean; /** Hide drawer completely when closed (no visible dragger). */ hideOnClose?: boolean; /** Unmount children after close transition. @default false */ unmountChildrenOnClose?: boolean; /** Header content. String renders as subtitle. Function receives context. */ header?: React.ReactNode | string | ((context: TContext | null) => React.ReactNode); /** Actions rendered in the header row (right side). */ headerActions?: React.ReactNode | ((context: TContext | null) => React.ReactNode); /** Title displayed in the header. */ title?: React.ReactNode; /** Hide the close button. @default false */ hideCloseButton?: boolean; /** Show dark backdrop overlay behind the drawer. @default false */ modal?: boolean; /** Close when clicking outside the drawer. Renders transparent overlay if modal=false. @default false */ closeOnOverlayClick?: boolean; /** Close on Escape key. Set false for non-dismissable flows. @default true */ closeOnEscape?: boolean; /** Footer content, pinned at bottom. Function receives context. */ footer?: React.ReactNode | ((context: TContext | null) => React.ReactNode); className?: string; /** CSS class for the content area. */ classNameContent?: string; /** CSS class for the footer area. */ classNameFooter?: string; /** CSS class for the header area. */ classNameHeader?: string; /** z-index for overlay and drawer. @default 60 */ zIndex?: number; } export interface DrawerMobileHandle { /** Open the drawer. Optionally pass context and snap point. */ open: (context?: TContext, snap?: string | number | 'auto') => void; /** Close the drawer. Triggers onClose callback. */ close: () => void; /** Whether the drawer is currently open. Not reactive — use subscribeOpenChange for reactive. */ isOpen: boolean; /** Get the current context value. */ getContext: () => TContext | null; /** * Fixed height (dragger, header, footer) outside the scrollable content area. * Useful for `calc(100vh - getChromeHeight())`, especially with attachToParent. */ getChromeHeight: () => number; /** Subscribe to open/close changes. Returns unsubscribe function. */ subscribeOpenChange: (cb: (open: boolean) => void) => () => void; } type DrawerMobileComponent = { (props: DrawerMobileProps & React.RefAttributes>): React.ReactElement | null; displayName?: string; }; declare const DrawerMobile: DrawerMobileComponent; export default DrawerMobile;