export type EmojiCategoryId = 'spicy' | 'smileys' | 'gestures' | 'hearts' | 'animals' | 'food' | 'objects' | 'symbols'; export type EmojiCategory = { id: EmojiCategoryId; label: string; tab: string; emojis: readonly string[]; }; /** Pilula padrao quando ainda nao ha historico de uso. */ export const DEFAULT_QUICK_REACTIONS = ['๐Ÿ‘', '๐Ÿ”ฅ', '๐Ÿ†', '๐Ÿ’ฆ', 'โค๏ธ', '๐Ÿ˜‚'] as const; export const QUICK_REACTION_SLOTS = 6; export const CHAT_EMOJI_CATEGORIES: EmojiCategory[] = [ { id: 'spicy', label: 'Safadinhos', tab: '๐Ÿ˜ˆ', emojis: [ '๐Ÿ‘', '๐Ÿ”ฅ', '๐Ÿ†', '๐Ÿ’ฆ', '๐Ÿ‘…', '๐Ÿคค', '๐Ÿ‘', '๐Ÿ˜ˆ', '๐Ÿ’‹', '๐Ÿซฆ', '๐Ÿฅต', '๐Ÿ˜', '๐Ÿ›๏ธ', '๐Ÿซฃ', '๐Ÿ‘€', '๐Ÿ’ช', '๐Ÿคญ', '๐Ÿ˜˜', '๐Ÿฅฐ', '๐Ÿ˜', '๐Ÿซ ', '๐Ÿ˜ฎโ€๐Ÿ’จ', '๐Ÿ’', '๐ŸŒถ๏ธ', '๐Ÿฅ’', '๐ŸŒ', '๐Ÿงด', '๐Ÿ›', '๐Ÿšฟ', '๐Ÿ”ž', '๐Ÿซฆ', '๐Ÿ˜œ', '๐Ÿ˜', '๐Ÿคซ', '๐Ÿ˜ณ', ], }, { id: 'smileys', label: 'Rostos', tab: '๐Ÿ˜€', emojis: [ '๐Ÿ˜€', '๐Ÿ˜ƒ', '๐Ÿ˜„', '๐Ÿ˜', '๐Ÿ˜†', '๐Ÿ˜…', '๐Ÿคฃ', '๐Ÿ˜‚', '๐Ÿ™‚', '๐Ÿ™ƒ', '๐Ÿ˜‰', '๐Ÿ˜Š', '๐Ÿ˜‡', '๐Ÿฅฐ', '๐Ÿ˜', '๐Ÿคฉ', '๐Ÿ˜˜', '๐Ÿ˜—', '๐Ÿ˜š', '๐Ÿ˜™', '๐Ÿฅฒ', '๐Ÿ˜‹', '๐Ÿ˜›', '๐Ÿ˜œ', '๐Ÿคช', '๐Ÿ˜', '๐Ÿค‘', '๐Ÿค—', '๐Ÿคญ', '๐Ÿคซ', '๐Ÿค”', '๐Ÿค', '๐Ÿคจ', '๐Ÿ˜', '๐Ÿ˜‘', '๐Ÿ˜ถ', '๐Ÿ˜', '๐Ÿ˜’', '๐Ÿ™„', '๐Ÿ˜ฌ', '๐Ÿคฅ', '๐Ÿ˜Œ', '๐Ÿ˜”', '๐Ÿ˜ช', '๐Ÿคค', '๐Ÿ˜ด', '๐Ÿ˜ท', '๐Ÿค’', '๐Ÿค•', '๐Ÿคข', '๐Ÿคฎ', '๐Ÿคง', '๐Ÿฅต', '๐Ÿฅถ', '๐Ÿฅด', '๐Ÿ˜ต', '๐Ÿคฏ', '๐Ÿค ', '๐Ÿฅณ', '๐Ÿฅธ', '๐Ÿ˜Ž', '๐Ÿค“', '๐Ÿง', '๐Ÿ˜•', '๐Ÿ˜Ÿ', '๐Ÿ™', 'โ˜น๏ธ', '๐Ÿ˜ฎ', '๐Ÿ˜ฏ', '๐Ÿ˜ฒ', '๐Ÿ˜ณ', '๐Ÿฅบ', '๐Ÿ˜ฆ', '๐Ÿ˜ง', '๐Ÿ˜จ', '๐Ÿ˜ฐ', '๐Ÿ˜ฅ', '๐Ÿ˜ข', '๐Ÿ˜ญ', '๐Ÿ˜ฑ', '๐Ÿ˜–', '๐Ÿ˜ฃ', '๐Ÿ˜ž', '๐Ÿ˜“', '๐Ÿ˜ฉ', '๐Ÿ˜ซ', '๐Ÿฅฑ', '๐Ÿ˜ค', '๐Ÿ˜ก', '๐Ÿ˜ ', '๐Ÿคฌ', ], }, { id: 'gestures', label: 'Gestos', tab: '๐Ÿ‘‹', emojis: [ '๐Ÿ‘', '๐Ÿ‘Ž', '๐Ÿ‘', '๐Ÿ™Œ', '๐Ÿ‘', '๐Ÿคฒ', '๐Ÿค', '๐Ÿ™', 'โœŒ๏ธ', '๐Ÿคž', '๐ŸคŸ', '๐Ÿค˜', '๐Ÿค™', '๐Ÿ‘ˆ', '๐Ÿ‘‰', '๐Ÿ‘†', '๐Ÿ‘‡', 'โ˜๏ธ', 'โœ‹', '๐Ÿคš', '๐Ÿ–', '๐Ÿ––', '๐Ÿ‘‹', '๐Ÿค', 'โœŠ', '๐Ÿ‘Š', '๐Ÿค›', '๐Ÿคœ', '๐Ÿ’ช', '๐Ÿฆพ', '๐Ÿ–•', 'โœ๏ธ', '๐Ÿคณ', '๐Ÿ’…', ], }, { id: 'hearts', label: 'Amor', tab: 'โค๏ธ', emojis: [ 'โค๏ธ', '๐Ÿงก', '๐Ÿ’›', '๐Ÿ’š', '๐Ÿ’™', '๐Ÿ’œ', '๐Ÿ–ค', '๐Ÿค', '๐ŸคŽ', '๐Ÿ’”', 'โค๏ธโ€๐Ÿ”ฅ', 'โค๏ธโ€๐Ÿฉน', '๐Ÿ’•', '๐Ÿ’ž', '๐Ÿ’“', '๐Ÿ’—', '๐Ÿ’–', '๐Ÿ’˜', '๐Ÿ’', '๐Ÿ’Ÿ', '๐Ÿ’Œ', '๐Ÿ’‘', '๐Ÿ’', '๐ŸŒน', ], }, { id: 'animals', label: 'Animais', tab: '๐Ÿถ', emojis: [ '๐Ÿถ', '๐Ÿฑ', '๐Ÿญ', '๐Ÿน', '๐Ÿฐ', '๐ŸฆŠ', '๐Ÿป', '๐Ÿผ', '๐Ÿจ', '๐Ÿฏ', '๐Ÿฆ', '๐Ÿฎ', '๐Ÿท', '๐Ÿธ', '๐Ÿต', '๐Ÿ”', '๐Ÿง', '๐Ÿฆ', '๐Ÿค', '๐Ÿฆ„', '๐Ÿ', '๐Ÿฆ‹', '๐Ÿข', '๐Ÿ', ], }, { id: 'food', label: 'Comida', tab: '๐Ÿ•', emojis: [ '๐Ÿ•', '๐Ÿ”', '๐ŸŸ', '๐ŸŒญ', '๐Ÿฟ', '๐Ÿง', '๐Ÿฐ', '๐ŸŽ‚', '๐Ÿฉ', '๐Ÿช', '๐Ÿซ', '๐Ÿฌ', '๐Ÿญ', '๐Ÿฆ', '๐Ÿง', '๐Ÿจ', '๐ŸŽ', '๐ŸŠ', '๐Ÿ‹', '๐Ÿ‰', '๐Ÿ‡', '๐Ÿ“', '๐Ÿ‘', '๐Ÿ’', '๐Ÿฅ‘', '๐ŸŒฎ', '๐Ÿฃ', '๐Ÿบ', '๐Ÿท', '๐Ÿฅ‚', '๐Ÿพ', 'โ˜•', '๐Ÿงƒ', ], }, { id: 'objects', label: 'Coisas', tab: '๐Ÿ’ก', emojis: [ 'โŒš', '๐Ÿ“ฑ', '๐Ÿ’ป', '๐Ÿ“ท', '๐ŸŽฎ', '๐ŸŽง', '๐ŸŽฌ', '๐ŸŽค', '๐ŸŽต', '๐ŸŽถ', '๐ŸŽ', '๐ŸŽˆ', '๐ŸŽ‰', '๐ŸŽŠ', '๐Ÿ†', '๐Ÿฅ‡', '๐Ÿฅˆ', '๐Ÿฅ‰', 'โšฝ', '๐Ÿ€', '๐ŸŽพ', '๐Ÿš—', 'โœˆ๏ธ', '๐Ÿš€', ], }, { id: 'symbols', label: 'Sรญmbolos', tab: 'โœจ', emojis: [ '๐Ÿ”ฅ', 'โœจ', '๐Ÿ’ซ', 'โญ', '๐ŸŒŸ', '๐Ÿ’ฅ', '๐Ÿ’ฏ', '๐Ÿ’ข', '๐Ÿ’ฆ', '๐Ÿ’จ', '๐Ÿ•ณ๏ธ', '๐Ÿ’ฃ', 'โœ…', 'โŒ', 'โ“', 'โ—', 'โ€ผ๏ธ', 'โ‰๏ธ', '๐Ÿ”ด', '๐ŸŸ ', '๐ŸŸก', '๐ŸŸข', '๐Ÿ”ต', '๐ŸŸฃ', 'โšซ', 'โšช', '๐ŸŸค', '๐Ÿ”ถ', '๐Ÿ”ท', '๐Ÿ”ธ', '๐Ÿ”น', ], }, ]; export function getEmojiCategory(id: EmojiCategoryId): EmojiCategory { return CHAT_EMOJI_CATEGORIES.find((category) => category.id === id) ?? CHAT_EMOJI_CATEGORIES[0]; } export function allCatalogEmojis(): string[] { const seen = new Set(); const result: string[] = []; for (const category of CHAT_EMOJI_CATEGORIES) { for (const emoji of category.emojis) { if (seen.has(emoji)) continue; seen.add(emoji); result.push(emoji); } } return result; }