import {
Badge,
Box,
+ Chip,
Icon,
IconButton,
Icons,
onEmojiSelect,
onCustomEmojiSelect,
onStickerSelect,
+ allowTextCustomEmoji,
}: {
tab?: EmojiBoardTab;
onTabChange?: (tab: EmojiBoardTab) => void;
onEmojiSelect?: (unicode: string, shortcode: string) => void;
onCustomEmojiSelect?: (mxc: string, shortcode: string) => void;
onStickerSelect?: (mxc: string, shortcode: string) => void;
+ allowTextCustomEmoji?: boolean;
}) {
const emojiTab = tab === EmojiBoardTab.Emoji;
const stickerTab = tab === EmojiBoardTab.Sticker;
<Box direction="Column" gap="200">
{onTabChange && <EmojiBoardTabs tab={tab} onTabChange={onTabChange} />}
<Input
+ data-emoji-board-search
variant="SurfaceVariant"
size="400"
placeholder="Search"
maxLength={50}
- after={<Icon src={Icons.Search} size="50" />}
+ after={
+ allowTextCustomEmoji && result?.query ? (
+ <Chip
+ variant="Primary"
+ radii="Pill"
+ after={<Icon src={Icons.ArrowRight} size="50" />}
+ onClick={() => {
+ const searchInput = document.querySelector<HTMLInputElement>(
+ '[data-emoji-board-search="true"]'
+ );
+ const textReaction = searchInput?.value.trim();
+ if (!textReaction) return;
+ onCustomEmojiSelect?.(textReaction, textReaction);
+ requestClose();
+ }}
+ >
+ <Text size="L400">React</Text>
+ </Chip>
+ ) : (
+ <Icon src={Icons.Search} size="50" />
+ )
+ }
onChange={handleOnChange}
autoFocus={!mobileOrTablet()}
/>