@loke/ui
Version:
48 lines (47 loc) • 2.73 kB
text/typescript
import { Arrow as ArrowPrimitive } from "@loke/ui/arrow";
import { Primitive } from "@loke/ui/primitive";
import type { Measurable } from "@loke/ui/rect";
import { type ComponentPropsWithoutRef, type FC, type ReactNode, type RefObject } from "react";
declare const SIDE_OPTIONS: readonly ["top", "right", "bottom", "left"];
declare const ALIGN_OPTIONS: readonly ["start", "center", "end"];
type Side = (typeof SIDE_OPTIONS)[number];
type Align = (typeof ALIGN_OPTIONS)[number];
declare const createPopperScope: import("@loke/ui/context").CreateScope;
interface PopperProps {
children?: ReactNode;
}
declare const Popper: FC<PopperProps>;
type PrimitiveDivProps = ComponentPropsWithoutRef<typeof Primitive.div>;
interface PopperAnchorProps extends PrimitiveDivProps {
virtualRef?: RefObject<Measurable>;
}
declare const PopperAnchor: import("react").ForwardRefExoticComponent<PopperAnchorProps & import("react").RefAttributes<HTMLDivElement>>;
type Boundary = Element | null;
interface PopperContentProps extends PrimitiveDivProps {
align?: Align;
alignOffset?: number;
arrowPadding?: number;
avoidCollisions?: boolean;
collisionBoundary?: Boundary | Boundary[];
collisionPadding?: number | Partial<Record<Side, number>>;
hideWhenDetached?: boolean;
onPlaced?: () => void;
side?: Side;
sideOffset?: number;
sticky?: "partial" | "always";
updatePositionStrategy?: "optimized" | "always";
}
declare const PopperContent: import("react").ForwardRefExoticComponent<PopperContentProps & import("react").RefAttributes<HTMLDivElement>>;
type ArrowProps = ComponentPropsWithoutRef<typeof ArrowPrimitive>;
type PopperArrowProps = ArrowProps;
declare const PopperArrow: import("react").ForwardRefExoticComponent<Omit<Omit<import("react").SVGProps<SVGSVGElement> & {
asChild?: boolean;
}, "ref"> & import("react").RefAttributes<SVGSVGElement>, "ref"> & import("react").RefAttributes<SVGSVGElement>>;
declare const Root: FC<PopperProps>;
declare const Anchor: import("react").ForwardRefExoticComponent<PopperAnchorProps & import("react").RefAttributes<HTMLDivElement>>;
declare const Content: import("react").ForwardRefExoticComponent<PopperContentProps & import("react").RefAttributes<HTMLDivElement>>;
declare const Arrow: import("react").ForwardRefExoticComponent<Omit<Omit<import("react").SVGProps<SVGSVGElement> & {
asChild?: boolean;
}, "ref"> & import("react").RefAttributes<SVGSVGElement>, "ref"> & import("react").RefAttributes<SVGSVGElement>>;
export { createPopperScope, Popper, PopperAnchor, PopperContent, PopperArrow, Root, Anchor, Content, Arrow, SIDE_OPTIONS, ALIGN_OPTIONS, };
export type { PopperProps, PopperAnchorProps, PopperContentProps, PopperArrowProps, };