UNPKG

@furystack/shades-common-components

Version:

Common UI components for FuryStack Shades

56 lines 2.01 kB
import { type ScreenSize } from '@furystack/shades'; export { DrawerToggleButton, type DrawerToggleButtonProps } from './drawer-toggle-button.js'; /** * Props for the Drawer component. */ export type DrawerProps = { /** Position of the drawer */ position: 'left' | 'right'; /** Drawer behavior variant */ variant: 'permanent' | 'collapsible' | 'temporary'; /** Width of the drawer (CSS value). Default: '240px' */ width?: string; /** Initial open state for collapsible/temporary drawers. Default: true for collapsible, false for temporary */ defaultOpen?: boolean; /** Auto-collapse the drawer below this breakpoint (uses ScreenService) */ collapseOnBreakpoint?: ScreenSize; }; /** * Standalone Drawer component for sidebars and navigation panels. * * Works with LayoutService for state management and supports three variants: * - **permanent**: Always visible, cannot be closed * - **collapsible**: Can be toggled open/closed, pushes content * - **temporary**: Overlays content with backdrop, closes on backdrop click * * Supports responsive behavior via `collapseOnBreakpoint` prop which * auto-collapses the drawer below a specified screen size. * * @example * ```tsx * // Simple collapsible drawer * <Drawer position="left" variant="collapsible"> * <nav>Navigation items...</nav> * </Drawer> * * // Responsive drawer that collapses on mobile * <Drawer * position="left" * variant="collapsible" * collapseOnBreakpoint="md" * > * <nav>Navigation items...</nav> * </Drawer> * * // Temporary drawer (mobile navigation) * <Drawer position="left" variant="temporary"> * <nav>Mobile navigation...</nav> * </Drawer> * ``` */ export declare const Drawer: (props: DrawerProps & Omit<Partial<HTMLElement>, "style"> & { style?: Partial<CSSStyleDeclaration>; } & { ref?: import("@furystack/shades").RefObject<Element>; }, children?: import("@furystack/shades").ChildrenList) => JSX.Element; //# sourceMappingURL=index.d.ts.map