import { type CSSProperties, type ReactNode, type RefObject } from 'react'; export type SPortalPlacement = 'top' | 'bottom' | 'left' | 'right'; export type SPortalAlign = 'start' | 'center' | 'end'; export interface SPortalProps { /** 표시 여부 (제어). onClose 와 함께 사용한다. */ open: boolean; /** 외부 클릭 · ESC 등으로 닫힘이 요청될 때 (sd-portal `sdClose` 대응). */ onClose?: () => void; /** 열림/닫힘 변경 전체 콜백 (선택). */ onOpenChange?: (open: boolean) => void; /** * 위치 기준이 되는 앵커 엘리먼트 ref (sd-portal `parentRef` 대응). * 트리거 버튼 등에 그대로 걸면 그 엘리먼트에 붙어서 뜬다. */ anchorRef: RefObject; /** 표시 방향 (공간이 부족하면 자동으로 반대 방향으로 전환). */ placement?: SPortalPlacement; /** 교차축 정렬 (start·center·end). */ align?: SPortalAlign; /** 앵커로부터의 간격 px (sd-portal offset[1]). */ offset?: number; /** 정렬축 오프셋 px (sd-portal offset[0]). */ alignOffset?: number; /** 앵커 너비에 맞춰 최소 너비를 잡는다. */ fit?: boolean; /** 콘텐츠 최대 높이 px. 넘치면 세로 스크롤. */ maxHeight?: number; /** 콘텐츠 내부를 클릭하면 자동으로 닫는다. */ autoClose?: boolean; /** 외부 클릭 · ESC 로 닫히지 않게 한다. */ persistent?: boolean; /** 뷰포트 경계 여백 px (충돌 회피 패딩). */ viewportPadding?: number; /** 열릴 때 포커스 이동 처리 (기본은 Radix가 콘텐츠로 포커스를 옮김). e.preventDefault()로 막을 수 있다. */ onOpenAutoFocus?: (event: Event) => void; /** 닫힐 때 포커스 복귀 처리 (기본은 Radix가 앵커로 포커스를 되돌림). e.preventDefault()로 막을 수 있다. */ onCloseAutoFocus?: (event: Event) => void; /** 바깥 영역 pointerdown 으로 닫힘이 시작될 때 (앵커 위 클릭·persistent 는 제외). */ onPointerDownOutside?: (event: Event) => void; /** 본문 내용 (콘텐츠 자유). */ children?: ReactNode; className?: string; style?: CSSProperties; ariaLabel?: string; } /** * SPortal — sd-portal/sd-floating-portal 의 사용성을 Radix Popover 로 옮긴 범용 앵커드 플로팅 컨테이너. * * 트리거를 감싸지 않고 `anchorRef` 로 임의의 엘리먼트에 붙는다(=sd-portal `parentRef`). * open/onClose 로 외부에서 제어하며, flip·collision·스크롤 재배치·외부클릭·ESC·모달 포털은 * Radix 가 처리한다. 콘텐츠는 children 으로 완전히 자유롭다. */ export declare function SPortal({ open, onClose, onOpenChange, anchorRef, placement, align, offset, alignOffset, fit, maxHeight, autoClose, persistent, viewportPadding, onOpenAutoFocus, onCloseAutoFocus, onPointerDownOutside, children, className, style, ariaLabel, }: SPortalProps): import("react").JSX.Element;