import { CSSProperties, ReactNode } from 'react'; import { SlotClassNames, SlotStyles, HtmlProps } from '../types/slots.types.js'; export type RevealLensShape = 'circle' | 'custom'; export type RevealLensSlots = 'root' | 'background' | 'overlay'; export interface RevealLensProps extends HtmlProps { /** Bottom layer, revealed in an area around the pointer. */ background: ReactNode; /** Top layer, covers `background` by default. */ overlay: ReactNode; /** Reveal radius in px (used when `shape` is `'circle'`). @default 120 */ radius?: number; /** Soft edge width in px; `0` gives a hard edge. @default 24 */ feather?: number; /** @default 'circle' */ shape?: RevealLensShape; /** Raw CSS `mask-image` value, used verbatim instead of the built-in circle gradient. */ maskImage?: string; /** Disables pointer tracking, `overlay` stays fully opaque. @default false */ disabled?: boolean; className?: string; style?: CSSProperties; classNames?: SlotClassNames; styles?: SlotStyles; }