/**
 * Side of the screen where the sheet slides in from.
 */
export type UiSheetSide = 'top' | 'right' | 'bottom' | 'left';

/**
 * A panel that slides in from the edge of the screen to display
 * supplementary content. Use for forms, filters, detail views, or
 * any content that complements the main screen.
 * @category Overlays
 * @useCases side panel, filter panel, detail view, settings panel, form drawer
 * @keywords sheet, drawer, panel, slide, overlay, side panel
 * @related UiDrawer, UiAlertDialog
 */
export interface UiSheetProps {
  /**
   * The controlled open state of the sheet.
   * - Omit for uncontrolled mode (component manages state internally)
   * - Use `v-model:open` for controlled mode
   */
  open?: boolean;

  /**
   * The open state of the sheet when it is initially rendered.
   * Use when you do not need to control its open state.
   * @default false
   */
  defaultOpen?: boolean;

  /**
   * The modality of the sheet.
   * When set to `true`, interaction with outside elements will be disabled
   * and only sheet content will be visible to screen readers.
   * @default true
   */
  modal?: boolean;
}

/**
 * Props for the UiSheetTrigger component.
 * The element that opens the sheet when clicked.
 */
export interface UiSheetTriggerProps {
  /**
   * Render as child element (merges props into slotted element instead of wrapping).
   * Set to `true` when using custom button components like `UiButton`.
   * @default false
   */
  asChild?: boolean;
}

/**
 * Props for the UiSheetContent component.
 * The main content container for the sheet.
 */
export interface UiSheetContentProps {
  /**
   * The side of the screen from which the sheet slides in.
   * @default 'right'
   */
  side?: UiSheetSide;

  /**
   * Accessible label for the built-in close button (sr-only text).
   * Override for i18n or to provide a more descriptive label.
   * @default 'Close'
   */
  closeLabel?: string;
}

/**
 * Props for the UiSheetClose component.
 * A button that closes the sheet when clicked.
 */
export interface UiSheetCloseProps {
  /**
   * Render as child element (merges props into slotted element instead of wrapping).
   * Set to `true` when using a custom button for the close action.
   * @default false
   */
  asChild?: boolean;
}
