import { W as SheetValue } from './side-sheet-modal-Bd5Qqvp9.js';
export { B as BaseSheetProps, a as BottomSheet, b as BottomSheetHandle, c as BottomSheetModal, d as BottomSheetModalProps, e as BottomSheetProps, f as BottomSheetSnapPoint, D as Dialog, g as DialogBody, h as DialogClose, i as DialogContent, j as DialogContentProps, k as DialogDescription, l as DialogFooter, m as DialogFullScreenContent, n as DialogFullScreenContentProps, o as DialogHeader, p as DialogIcon, q as DialogOverlay, r as DialogPortal, s as DialogProps, t as DialogTitle, u as DialogTrigger, v as DragHandle, w as DragHandleProps, x as Drawer, y as DrawerClose, z as DrawerContent, A as DrawerContentProps, C as DrawerDescription, E as DrawerFooter, F as DrawerHeader, G as DrawerOverlay, H as DrawerPortal, I as DrawerProps, J as DrawerTitle, K as DrawerTrigger, S as Scrim, L as ScrimProps, M as SheetEdge, N as SheetState, O as SideSheet, P as SideSheetModal, Q as SideSheetModalProps, R as SideSheetProps, U as UseBottomSheetOptions, T as UseBottomSheetReturn, V as useBottomSheet } from './side-sheet-modal-Bd5Qqvp9.js';
import * as React$1 from 'react';
import { useMotionValue, PanInfo } from 'motion/react';
import 'react/jsx-runtime';
import '@radix-ui/react-dialog';
import './scroll-area-CVS6HyLl.js';
import '@radix-ui/react-scroll-area';
/**
* @file sheets/bottom-sheet/bottom-sheet-scaffold.tsx
*
* Standard Bottom Sheet Scaffold — persistent sheet layout component.
*
* Mirrors Android Jetpack Compose `BottomSheetScaffold`:
* - Sheet is always visible at minimum `sheetPeekHeight` (no hidden/dismiss state)
* - Body content lives above the sheet peek via `paddingBottom`
* - Optional `topBar` slot
* - Drag to expand (full container height) / collapse (peek height only)
* - No scrim (standard sheet, not modal)
* - Drag handle keyboard accessible: click/Space/Enter toggles state
*
* API (Option A — matches Kotlin):
* ```tsx
* }>
* {(paddingBottom) => }
*
* ```
*
* @see https://m3.material.io/components/sheets-bottom/overview#standard
*/
interface BottomSheetScaffoldProps {
/**
* Content rendered inside the bottom sheet panel.
* Equivalent to Kotlin's `sheetContent: @Composable ColumnScope.() -> Unit`.
*/
sheetContent: React$1.ReactNode;
/**
* Body content of the page. Receives `paddingBottom` string to push
* content above the visible sheet peek area.
*
* @example
* ```tsx
* {(paddingBottom) => {page}}
* ```
*/
children: (paddingBottom: string) => React$1.ReactNode;
/**
* Visible height of the sheet when collapsed.
* Default: `"var(--m3-bottom-sheet-peek-height, 56px)"`
*/
sheetPeekHeight?: number;
/**
* Maximum width of the sheet.
* Default: `"var(--m3-bottom-sheet-max-width, 640px)"`
*/
sheetMaxWidth?: string | number;
/**
* Custom drag handle. Pass `null` to hide the handle entirely.
* Default: MD3 drag handle indicator bar.
*/
sheetDragHandle?: React$1.ReactNode | null;
/**
* Enable/disable swipe gestures on the sheet.
* @default true
*/
sheetSwipeEnabled?: boolean;
/**
* Optional top app bar slot rendered above the page body.
*/
topBar?: React$1.ReactNode;
/**
* Background color of the sheet panel.
* Defaults to `surfaceContainerLow` token.
*/
sheetContainerColor?: string;
/**
* Called when the sheet transitions between states.
*/
onSheetStateChange?: (state: Extract) => void;
/** Initial state of the sheet. @default "partiallyExpanded" */
initialSheetState?: Extract;
/** Additional CSS class for the outer scaffold container. */
className?: string;
}
/**
* Standard Bottom Sheet Scaffold.
*
* Renders a persistent bottom sheet that stays on screen (never fully hidden).
* The body content is offset by `sheetPeekHeight` so it is never obscured.
*
* @example
* ```tsx
* Player controls
}
* topBar={}
* >
* {(paddingBottom) => (
*
* )}
*
* ```
*/
declare const BottomSheetScaffold: React$1.ForwardRefExoticComponent>;
/**
* @file sheets/bottom-sheet/use-bottom-sheet-scaffold.ts
*
* Core logic for `BottomSheetScaffold` — the standard (non-modal, persistent)
* bottom sheet layout component.
*
* Mirrors Android's `BottomSheetScaffoldState` / `BottomSheetState`:
* - 2-state machine: `partiallyExpanded` ↔ `expanded` (no `hidden` state)
* - Sheet is ALWAYS visible at minimum `peekHeight`
* - Velocity-based fling + nearest-snap logic on drag-end
* - BoundaryDampeningZone prevents over-flinging
*
* @see https://m3.material.io/components/sheets-bottom/overview#standard
*/
interface UseBottomSheetScaffoldOptions {
/** Visible height when partially collapsed. Default: 56px. */
peekHeight?: number;
/** Whether swipe gestures are enabled. Default: true. */
swipeEnabled?: boolean;
/** Called when the sheet state changes. */
onStateChange?: (state: Extract) => void;
/** Initial state. Default: "partiallyExpanded". */
initialState?: Extract;
}
interface UseBottomSheetScaffoldReturn {
/** Current discrete sheet state. */
sheetState: Extract;
/** Y MotionValue of the sheet panel (absolute from top of scaffold container). */
y: ReturnType>;
/** Expand to full height. */
expand: () => void;
/** Collapse to peek height. */
partialExpand: () => void;
/** Toggle between partiallyExpanded and expanded. */
toggle: () => void;
/** Whether drag is allowed. */
isDragEnabled: boolean;
/** Drag constraints for m.div. */
dragConstraints: {
top: number;
bottom: number;
};
/** Drag-end handler — snaps to closest anchor. */
handleDragEnd: (e: MouseEvent | TouchEvent | PointerEvent, info: PanInfo) => void;
/** Scroll handler for nested content. */
handleContentScroll: (e: React.UIEvent) => void;
/** Height of the content area above the sheet peek. */
contentPaddingBottom: string;
/** Callback ref for the scaffold's container element. */
containerRef: React.RefCallback;
}
declare function useBottomSheetScaffold({ peekHeight, swipeEnabled, onStateChange, initialState, }?: UseBottomSheetScaffoldOptions): UseBottomSheetScaffoldReturn;
export { BottomSheetScaffold, type BottomSheetScaffoldProps, SheetValue, type UseBottomSheetScaffoldOptions, type UseBottomSheetScaffoldReturn, useBottomSheetScaffold };