export declare const DEFAULT_PALETTE: string[]; /** Normalize a hex string (#abc / #aabbcc / abc) to lower-case #aabbcc (pure). */ export declare function normalizeHex(h: string): string | null; /** Reactive inputs are passed as getters so the core tracks live prop changes. */ export type ColorInputConfig = { value: () => string; onChange?: (hex: string) => void; disabled?: () => boolean; readonly?: () => boolean; palette?: () => string[]; id?: () => string | undefined; invalid?: () => boolean; required?: () => boolean; error?: () => string | undefined; hint?: () => string | undefined; ariaLabel?: () => string | undefined; }; export declare function createColorInput(config: ColorInputConfig): { /** The normalized current color (#aabbcc). */ readonly normalized: string; /** Preset swatches. */ readonly palette: string[]; /** Draft hex text for the panel field (settable for `bind:value`). */ hexDraft: string; /** Whether interaction is allowed. */ readonly isInteractive: boolean; /** Popover open state + open/close/toggle controls. */ popover: { readonly open: boolean; show: () => void; close: () => void; toggle: () => void; }; pick: (hex: string) => void; commitHex: () => void; isActive: (c: string) => boolean; /** Spread onto the swatch trigger button. */ swatchProps: () => { 'aria-label': string; disabled: boolean; onclick: () => void; 'aria-invalid': "true" | undefined; 'aria-required': "true" | undefined; 'aria-describedby': string | undefined; id: string | undefined; type: "button"; 'aria-haspopup': "dialog"; 'aria-expanded': boolean; }; /** Spread onto a palette chip button for color `c`. */ chipProps: (c: string) => { type: "button"; 'aria-label': string; onclick: () => void; }; }; export type ColorInputCore = ReturnType;