You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Expose the built-in emoji picker as compound components so integrators can rearrange or
replace parts, while `StreamEmojiPicker` (called directly) stays the unchanged zero-config
preset built on top of them.
- Add `StreamEmojiPicker.Root` (provider + dialog container owning dataset load, filtering,
search, and container-level a11y — dialog role, Escape-to-close, theme class) and the
slots `StreamEmojiPicker.Nav` / `.Search` / `.Grid` / `.Preview` / `.SkinTone`.
- Expose `useEmojiPickerContext()` with the public contract: read-only data (`categories`,
`searchResults`, `status`, `skinTones`, `resolveNative`) and report-back setters
(`selectEmoji`, `setQuery`, `setSkinTone`, `setActiveCategory`, `requestScrollToCategory`).
Hover-preview state lives in an internal, non-exported context so it doesn't re-render the
grid and a custom grid doesn't implicitly drive the default preview.
- Convert each slot from prop-driven to context-driven; `EmojiPickerPanel` becomes the
default composition. Behavior, a11y, keyboard nav, virtualization, and bundle optionality
are unchanged — all pre-existing tests stay green.
- `autoFocus` moves to the panel's own props (it's a search behavior), so `Root` no longer
advertises a prop it ignores.
0 commit comments