export interface ColorPickerPopoverProps { x: number; y: number; label: string; initialValue?: string; /** * Continuous live-preview callback, fired on every drag frame of the * saturation/value square or hue slider (and on every valid typed hex) - * distinct from `onApply`, which fires once, when the popover is actually * dismissed with a real change staged. */ onPreview?: (hex: string) => void; /** Up to 4 previously-committed colors for this same picker context, most-recent first. */ recentColors?: readonly string[]; onApply: (hex: string) => void; /** Discard: revert to the color the popover opened with. The only way to *not* commit - every other dismissal (outside click, Escape, the close button) commits whatever is currently staged. */ onCancel: () => void; } /** * Phase 11.5 §2.4 originally shipped a native `` as the * primary picker (see git history) - reverted here in favor of a fully * in-page saturation/value square + hue strip, specifically so the drag * surface is visible on the very first click (a native color input needs a * *second* click to open its own OS-level dialog) and so every drag frame * is a real, page-owned pointer event this component fully controls - * sidestepping the whole "which native event means the user is actually * done" problem a native input can never answer reliably (see * docs/bugs/color-popover-closes-on-first-native-picker-interaction.md and * docs/bugs/color-preview-render-steals-focus-from-popover.md, both about * that exact native-event ambiguity). * * Commit model: there is no separate Apply button. Dragging (or typing a * valid hex, or clicking a recent swatch) stages a live preview via * `onPreview`; closing the popover *any* way other than the explicit * Discard button - outside click, Escape, the × button - commits whatever * is currently staged via `onApply`. Discard is the only way back to the * color the popover opened with. */ export declare function ColorPickerPopover({ x, y, label, initialValue, recentColors, onPreview, onApply, onCancel }: ColorPickerPopoverProps): import("react/jsx-runtime").JSX.Element;