
import { Styles } from "../../../tasty/styles/types.js";
import { BaseProps, ContainerStyleProps } from "../../../tasty/types.js";
import "../../../tasty/index.js";
import { CubeDialogContainerProps } from "../../overlays/Dialog/DialogContainer.js";
import { Side } from "./LayoutContext.js";
import * as react from "react";
import { ReactNode } from "react";

//#region src/components/content/Layout/LayoutPanel.d.ts
/** Panel rendering mode */
type LayoutPanelMode = 'default' | 'sticky' | 'overlay' | 'dialog';
interface CubeLayoutPanelProps extends BaseProps, ContainerStyleProps {
  /** Side of the layout where panel is positioned */
  side: Side;
  /**
   * Panel rendering mode:
   * - `default`: Standard panel that pushes content aside
   * - `sticky`: Panel floats over content without pushing it
   * - `overlay`: Panel with dismissable backdrop overlay
   * - `dialog`: Panel renders as a modal dialog
   */
  mode?: LayoutPanelMode;
  /** Panel size (width for left/right, height for top/bottom) - controlled */
  size?: number | string;
  /** Default panel size for uncontrolled state */
  defaultSize?: number | string;
  /** Minimum panel size */
  minSize?: number | string;
  /** Maximum panel size */
  maxSize?: number | string;
  /** Enable resize functionality */
  isResizable?: boolean;
  /** Size change callback */
  onSizeChange?: (size: number) => void;
  /** Controlled open state */
  isOpen?: boolean;
  /** Default open state */
  defaultIsOpen?: boolean;
  /** Open state change callback */
  onOpenChange?: (isOpen: boolean) => void;
  /** Enable slide transition on open/close */
  hasTransition?: boolean;
  /**
   * Whether the panel can be dismissed by clicking the overlay (overlay mode) or pressing Escape.
   * Only applies to `overlay` and `dialog` modes. Default: true
   */
  isDismissable?: boolean;
  /** Styles for the overlay backdrop in overlay mode */
  overlayStyles?: Styles;
  /**
   * @deprecated Use `mode="dialog"` instead. Switch to dialog mode (renders panel inside Dialog)
   */
  isDialog?: boolean;
  /** Controlled dialog open state (used with mode="dialog") */
  isDialogOpen?: boolean;
  /** Default dialog open state */
  defaultIsDialogOpen?: boolean;
  /** Dialog open state change callback */
  onDialogOpenChange?: (isOpen: boolean) => void;
  /** Props passed to Dialog component when in dialog mode */
  dialogProps?: Omit<CubeDialogContainerProps, 'isDismissable' | 'onDismiss' | 'isOpen'>;
  /** Padding for content areas inside the panel. Default: '1x' */
  contentPadding?: Styles['padding'];
  /** localStorage key for persisting panel size. When provided, size is stored and restored across instances. */
  sizeStorageKey?: string;
  /** Styles for the panel */
  styles?: Styles;
  children?: ReactNode;
}
declare const _LayoutPanel: react.ForwardRefExoticComponent<CubeLayoutPanelProps & react.RefAttributes<HTMLDivElement>>;
//#endregion
export { CubeLayoutPanelProps, LayoutPanelMode, _LayoutPanel };
//# sourceMappingURL=LayoutPanel.d.ts.map