Accessibility
Keyboard, ARIA and motion preferences across every primitive
Accessibility is a first-class concern in Emoteer. Every primitive ships with keyboard support, ARIA semantics and motion preferences out of the box.
Keyboard
| Component | Key | Action |
|---|---|---|
| EmoteList | ↑ ↓ ← → | Move focus between emojis |
| EmoteList | Tab | Switch between slots (search, tabs, grid) |
| EmoteList | Enter | Select the focused emoji |
| EmoteList | Esc | Clear search / close popover |
| EmoteAutocomplete | ↑ ↓ | Move through suggestions |
| EmoteAutocomplete | Tab / Enter | Insert the highlighted emoji |
| EmoteAutocomplete | Esc | Dismiss suggestions |
| ReactionSlider | ← → | Step by step |
| ReactionSlider | Home / End | Jump to min / max |
| ReactionSlider | PageUp / PageDown | Move by 10× step |
| ReactionButton | Space / Enter | Tap the active sticker |
ARIA
EmoteList.Gridusesrole="listbox"witharia-activedescendantso screen readers announce the focused emoji.EmoteList.Searchuses a properrole="searchbox"and is linked to the grid viaaria-controls.EmoteAutocomplete.Listexposesrole="listbox"witharia-selectedon each option; the trigger input hasaria-expandedandaria-controls.ReactionSlider.Rootrenders asrole="slider"witharia-valuemin,aria-valuemaxandaria-valuenow.ReactionCounterchips are buttons witharia-pressedreflecting active state.
Focus management
- Opening a popover moves focus into it; closing returns focus to the trigger.
- Focus is visible on every interactive element. Do not override
:focus-visibleoutlines in your overrides.
Reduced motion
All animations — burst effects, thumb scaling, list fades — short-circuit to instant when prefers-reduced-motion: reduce is set. No configuration required.
Color contrast
The default theme ships with WCAG AA contrast on all text and interactive elements in both light and dark modes. If you override the theme variables, run the result through a contrast checker.
Internationalization
Shortcode dictionaries ship for 8 locales and can be extended. See Custom emojis.