import { type ComponentPropsWithoutRef, type HTMLAttributes, type ReactNode } from 'react'; import * as RadixPopover from '@radix-ui/react-popover'; import { type VariantProps } from 'class-variance-authority'; export type HoverCardSide = 'top' | 'end' | 'bottom' | 'start'; declare const contentVariants: (props?: ({ size?: "sm" | "md" | "lg" | null | undefined; padding?: "default" | "flush" | null | undefined; } & import("class-variance-authority/types").ClassProp) | undefined) => string; export interface HoverCardHandle { getIsOpen: () => boolean; open: () => void; close: () => void; } export interface HoverCardProps { children: ReactNode; /** * How the card opens. `hover-or-click` (the default) opens on pointer hover * without taking focus, and on click, tap or Enter with focus moved into the * card so the footer actions are reachable. `click` disables hover entirely. */ openOn?: 'hover-or-click' | 'click'; /** Controlled open state. */ open?: boolean; /** Uncontrolled initial open state. */ defaultOpen?: boolean; onOpenChange?: (open: boolean) => void; /** Delay before a hover opens the card, in ms. Default 300. */ openDelay?: number; /** Grace period before a pointer leaving closes the card, in ms. Default 300. */ closeDelay?: number; /** Opaque instance id — emitted on Content as `data-component-id`. */ id?: string; } declare function HoverCardRoot({ children, openOn, open: controlledOpen, defaultOpen, onOpenChange, openDelay, closeDelay, id, }: HoverCardProps): import("react/jsx-runtime").JSX.Element; declare namespace HoverCardRoot { var displayName: string; } export type HoverCardTriggerProps = ComponentPropsWithoutRef; export type HoverCardAnchorProps = ComponentPropsWithoutRef; export interface HoverCardContentProps extends Omit, 'side' | 'align'>, VariantProps { /** Logical side, resolved against the reading direction. Default `'top'`. */ side?: HoverCardSide; align?: 'start' | 'center' | 'end'; size?: 'sm' | 'md' | 'lg'; padding?: 'default' | 'flush'; /** Render the arrow. Default `true`. */ showArrow?: boolean; /** Render a close button, for touch users on a card with actions. */ showClose?: boolean; /** * An action pinned to the top-end corner — the same slot `showClose` uses. * For a card whose ANCHOR has a real open action, so the card mirrors it * instead of describing it in prose ("Click to open …"). Only give a card * one when the trigger genuinely opens something; a card that merely points * somewhere else should say so in a hint line, because an icon button there * promises a click the anchor does not have. * * A card carrying one must be interactive — the pointer has to be able to * travel into it — so do not combine it with a pointer-events-none peek. */ headerAction?: ReactNode; className?: string; children: ReactNode; } export interface HoverCardHeadingProps extends HTMLAttributes { as?: 'h2' | 'h3' | 'h4' | 'h5' | 'h6'; } export declare function useHoverCardTiming(): { cancelClose: () => void; closeWithDelay: () => void; }; export declare const HoverCard: typeof HoverCardRoot & { Root: typeof HoverCardRoot; Trigger: import("react").ForwardRefExoticComponent, "ref"> & import("react").RefAttributes>; Anchor: import("react").ForwardRefExoticComponent, "ref"> & import("react").RefAttributes>; Content: import("react").ForwardRefExoticComponent>; Media: import("react").ForwardRefExoticComponent & import("react").RefAttributes>; Eyebrow: import("react").ForwardRefExoticComponent & import("react").RefAttributes>; Heading: import("react").ForwardRefExoticComponent>; Body: import("react").ForwardRefExoticComponent & import("react").RefAttributes>; Footer: import("react").ForwardRefExoticComponent & import("react").RefAttributes>; }; export {}; //# sourceMappingURL=hover-card.d.ts.map