/** * @oxpulse/chat-widget — Emoji picker (#127). * * Searchable, categorized emoji picker. Zero-third-party-dep — bundles a * curated emoji dataset (~180 emojis, 8 categories) in emoji-data.ts. * * Lifecycle: * show(anchorEl) — appends picker to container, positions below anchor * hide() — removes from DOM, restores focus * * A11y: * role="dialog", search input focused on open, Arrow keys navigate, * Escape hides + restores focus, Tab focus trap. * * Used from: * - Composer: emoji button in the toolbar → inserts at cursor position * - ReactionQuickBar: "more" button → opens full picker for any-emoji reaction */ export interface EmojiPickerOptions { /** Container element to render the picker inside. */ container: HTMLElement; /** Called when the user selects an emoji. */ onSelect: (emoji: string) => void; /** Optional abort signal — when aborted, show() becomes a no-op. */ signal?: AbortSignal; /** BCP-47 tag or an already-resolved Locale. */ lang?: string; /** Called when the picker closes itself (Escape, outside click). */ onHide?: () => void; /** Element to append the picker to (default: constructor container). * Pass the ShadowRoot host element to escape overflow:hidden clip contexts * — mirrors ReactionQuickBar's mountTo pattern (MAJOR-5). */ mountTo?: HTMLElement; } export declare class EmojiPicker { #private; constructor(opts: EmojiPickerOptions); /** Show the picker anchored below the given element. */ show(anchorEl: HTMLElement, restoreFocusEl?: HTMLElement): void; /** Hide the picker without firing onSelect. */ hide(): void; get isOpen(): boolean; } //# sourceMappingURL=emoji-picker.d.ts.map