
Emoji Reactions
Badges
Search by name, tag, category or type
Source and install need .
pnpm dlx shadcn@latest add @assembli/emoji-pickerAn emoji picker that feels native: about 540 emoji inline, search by name, keyword or :shortcode:, a category bar that follows your scroll, sticky headers, recents remembered across visits, six skin tones (π§βπ» β π§π½βπ») and a preview footer. Arrow keys move row by row across sections, Enter picks. Inline, or as EmojiPickerPopover on any button.
Other props pass through to the root element.
onSelect
(selection: EmojiSelection) => void
columns
number
Default 9
Columns in the grid. Defaults to 9.
height
number
Default 288
Height of the scrolling grid in px. Defaults to 288.
recentLimit
number
Default 18
How many recents to keep. 0 hides the Recent section. Defaults to 18 (two rows).
skinTone
SkinTone
Controlled skin tone. Uncontrolled, the reader's last pick is remembered across pickers and visits.
defaultSkinTone
SkinTone
Default 0
onSkinToneChange
(tone: SkinTone) => void
autoFocus
boolean
Focuses the search field on mount, as when opened from a button.
searchPlaceholder
string
Default "Search emoji"
| Prop | Type | Default | Description |
|---|---|---|---|
| onSelect | (selection: EmojiSelection) => void | β | |
| columns | number | 9 | Columns in the grid. Defaults to 9. |
| height | number | 288 | Height of the scrolling grid in px. Defaults to 288. |
| recentLimit | number | 18 | How many recents to keep. 0 hides the Recent section. Defaults to 18 (two rows). |
| skinTone | SkinTone | β | Controlled skin tone. Uncontrolled, the reader's last pick is remembered across pickers and visits. |
| defaultSkinTone | SkinTone | 0 | |
| onSkinToneChange | (tone: SkinTone) => void | β | |
| autoFocus | boolean | β | Focuses the search field on mount, as when opened from a button. |
| searchPlaceholder | string | "Search emoji" |