import * as React from "react"; import { type VariantProps } from "class-variance-authority"; import type { SheetResponsiveProp } from "../../props/components/feedback.prop.js"; import type { ToneProp, WidthProp } from "../../props/vocabulary/index.js"; export type { SheetResponsiveProp } from "../../props/components/feedback.prop.js"; /** Resolved presentation of a responsive sheet: the named side panel, or the mobile bottom sheet. */ export type SheetPresentation = "side" | "bottom"; /** * The canonical responsive-overlay decision, shared by `SheetContent` and by any composite that * swaps a desktop surface for a mobile sheet (see `OrgSwitcher`). Returns `"bottom"` when the * viewport is at or below `--sheet-responsive-breakpoint-width`. */ export declare function useSheetResponsiveMode(responsive?: SheetResponsiveProp): SheetPresentation; export interface SheetProps { /** Trạng thái mở, có kiểm soát. */ open?: boolean; /** Trạng thái mở ban đầu khi không kiểm soát. */ defaultOpen?: boolean; /** Gọi khi trạng thái mở đổi. */ onOpenChange?: (open: boolean) => void; /** * `false` renders a NON-MODAL sheet (WAI-ARIA APG allows non-modal dialogs): the page behind * stays interactive and in the accessibility tree, no scroll lock, no scrim, an outside press * does not close it, no `aria-modal`. Focus moves in on open, Tab can leave, Escape closes while * focus is inside, focus returns to the trigger. Side, size and tokens are unchanged. Default * `true`. gh#701. */ modal?: boolean; children?: React.ReactNode; } export declare function Sheet({ open, defaultOpen, onOpenChange, modal, children, }: SheetProps): React.JSX.Element; export interface SheetTriggerProps extends React.ComponentPropsWithRef<"button"> { /** Mượn thẻ của con thay vì dựng `