import { type DialogProps } from "../dialog";
import * as styles from "./drawer.css";
/**
* Props for the {@link Drawer} component.
*
* @remarks
* Extends {@link DialogProps} and adds drawer-specific configuration for orientation and sizing.
*/
export type DrawerProps = DialogProps & {
/**
* The size of the drawer.
*
* @remarks
* - For `inlineStart` and `inlineEnd` variants, this sets the **width**.
* - For `blockStart` and `blockEnd` variants, this sets the **height**.
*
* Expects a CSS length value (e.g., `"300px"`, `"50%"`).
*
* @defaultValue `"250px"` (defined in CSS)
*/
size?: string | number;
/**
* The orientation and placement of the drawer.
*
* @remarks
* Uses logical placement names to adapt to different writing modes:
* - `inlineStart`: The start edge of the inline axis (e.g., Left in LTR).
* - `inlineEnd`: The end edge of the inline axis (e.g., Right in LTR).
* - `blockStart`: The start edge of the block axis (e.g., Top in horizontal).
* - `blockEnd`: The end edge of the block axis (e.g., Bottom in horizontal).
*
* @defaultValue `"inlineStart"`
*/
variant?: keyof typeof styles.drawerVariants;
};
/**
* A sliding panel component that appears from the edge of the screen.
*
* @remarks
* The `Drawer` component is built on top of the {@link Dialog} component. It automatically
* calculates its entrance and exit animations based on its `variant` and the current
* document writing mode provided by {@link useWritingMode}.
*
* @param props - The properties for the drawer.
* @returns A React component representing the drawer.
*
* @example
* ### Basic Usage
* ```tsx
* setIsOpen(false)}>
*