import { define } from '@because/forge'
import { theme } from '../themes'
import { openModal, closeModal } from './modal'
import { update } from '../update'

type Category = 'People' | 'Gestures' | 'Animals' | 'Food' | 'Activities' | 'Travel' | 'Objects' | 'Symbols' | 'Nature'

const CATEGORY_ICONS: Record<Category, string> = {
  'People': '😀',
  'Gestures': '👋',
  'Animals': '🐶',
  'Food': '🍎',
  'Activities': '⚽',
  'Travel': '🚗',
  'Objects': '💡',
  'Symbols': '❤️',
  'Nature': '🌸',
}

// Keywords for searching emojis
const EMOJI_KEYWORDS: Record<string, string[]> = {
  // People
  '😀': ['smile', 'happy', 'grin', 'face'],
  '😃': ['smile', 'happy', 'grin', 'face', 'open'],
  '😄': ['smile', 'happy', 'grin', 'face', 'eyes'],
  '😁': ['smile', 'happy', 'grin', 'teeth'],
  '😆': ['laugh', 'happy', 'haha', 'xd'],
  '😅': ['sweat', 'nervous', 'laugh', 'awkward'],
  '🤣': ['rofl', 'laugh', 'lol', 'rolling'],
  '😂': ['laugh', 'cry', 'tears', 'joy', 'lol', 'funny'],
  '🙂': ['smile', 'slight', 'okay'],
  '🙃': ['upside', 'sarcasm', 'irony'],
  '😉': ['wink', 'flirt'],
  '😊': ['blush', 'smile', 'happy', 'shy'],
  '😇': ['angel', 'innocent', 'halo'],
  '🥰': ['love', 'hearts', 'adore', 'crush'],
  '😍': ['love', 'heart', 'eyes', 'crush', 'adore'],
  '🤩': ['star', 'eyes', 'excited', 'wow', 'amazing'],
  '😘': ['kiss', 'love', 'blow'],
  '😗': ['kiss', 'whistle'],
  '😚': ['kiss', 'blush'],
  '😙': ['kiss', 'smile'],
  '🥲': ['tear', 'smile', 'sad', 'bittersweet'],
  '😋': ['yum', 'delicious', 'tongue', 'tasty'],
  '😛': ['tongue', 'playful', 'silly'],
  '😜': ['wink', 'tongue', 'crazy', 'silly'],
  '🤪': ['crazy', 'wild', 'zany', 'silly'],
  '😝': ['tongue', 'squint', 'playful'],
  '🤑': ['money', 'rich', 'dollar', 'greed'],
  '🤗': ['hug', 'hands', 'embrace'],
  '🤭': ['oops', 'giggle', 'hand', 'mouth'],
  '🤫': ['shush', 'quiet', 'secret', 'ssh'],
  '🤔': ['think', 'hmm', 'wonder', 'curious'],
  '🤐': ['zip', 'mouth', 'quiet', 'secret'],
  '🤨': ['eyebrow', 'skeptical', 'doubt'],
  '😐': ['neutral', 'meh', 'blank'],
  '😑': ['expressionless', 'annoyed', 'meh'],
  '😶': ['silent', 'speechless', 'no mouth'],
  '😏': ['smirk', 'smug', 'flirt'],
  '😒': ['unamused', 'bored', 'meh'],
  '🙄': ['eyeroll', 'annoyed', 'whatever'],
  '😬': ['grimace', 'awkward', 'nervous', 'teeth'],
  '🤥': ['lie', 'pinocchio', 'nose'],
  '😌': ['relieved', 'peaceful', 'calm'],
  '😔': ['sad', 'down', 'pensive'],
  '😪': ['sleepy', 'tired', 'snot'],
  '🤤': ['drool', 'hungry', 'want'],
  '😴': ['sleep', 'zzz', 'tired', 'snore'],
  '😷': ['sick', 'mask', 'covid', 'ill'],
  '🤒': ['sick', 'fever', 'thermometer', 'ill'],
  '🤕': ['hurt', 'injured', 'bandage', 'head'],
  '🤢': ['nausea', 'sick', 'gross', 'green'],
  '🤮': ['vomit', 'puke', 'sick', 'throw up'],
  '🤧': ['sneeze', 'sick', 'tissue', 'achoo'],
  '🥵': ['hot', 'heat', 'sweat', 'fever'],
  '🥶': ['cold', 'freeze', 'ice', 'frozen'],
  '🥴': ['woozy', 'drunk', 'dizzy', 'tipsy'],
  '😵': ['dizzy', 'dead', 'knocked out'],
  '🤯': ['mind blown', 'explode', 'shocked', 'wow'],
  '🤠': ['cowboy', 'yeehaw', 'western', 'hat'],
  '🥳': ['party', 'celebrate', 'birthday', 'hat'],
  '🥸': ['disguise', 'glasses', 'nose', 'incognito'],
  '😎': ['cool', 'sunglasses', 'awesome'],
  '🤓': ['nerd', 'geek', 'glasses', 'smart'],
  '🧐': ['monocle', 'fancy', 'inspect', 'curious'],
  '😕': ['confused', 'unsure', 'worried'],
  '😟': ['worried', 'concerned', 'anxious'],
  '🙁': ['sad', 'frown', 'unhappy'],
  '😮': ['wow', 'surprised', 'open mouth'],
  '😯': ['surprised', 'hushed', 'wow'],
  '😲': ['astonished', 'shocked', 'wow'],
  '😳': ['flushed', 'embarrassed', 'blush'],
  '🥺': ['pleading', 'puppy eyes', 'please', 'uwu'],
  '😦': ['frown', 'open mouth', 'worried'],
  '😧': ['anguished', 'worried', 'shocked'],
  '😨': ['fearful', 'scared', 'afraid'],
  '😰': ['anxious', 'sweat', 'worried', 'nervous'],
  '😥': ['sad', 'disappointed', 'relieved'],
  '😢': ['cry', 'sad', 'tear'],
  '😭': ['sob', 'cry', 'tears', 'sad', 'bawling'],
  '😱': ['scream', 'scared', 'horror', 'fear'],
  '😖': ['confounded', 'frustrated'],
  '😣': ['persevere', 'struggle', 'frustrated'],
  '😞': ['disappointed', 'sad', 'let down'],
  '😓': ['sweat', 'tired', 'stressed'],
  '😩': ['weary', 'tired', 'frustrated'],
  '😫': ['tired', 'exhausted', 'frustrated'],
  '🥱': ['yawn', 'tired', 'bored', 'sleepy'],
  '😤': ['angry', 'huff', 'frustrated', 'steam'],
  '😡': ['angry', 'mad', 'rage', 'red'],
  '😠': ['angry', 'mad', 'annoyed'],
  '🤬': ['swear', 'curse', 'angry', 'symbols'],
  '😈': ['devil', 'evil', 'mischief', 'purple'],
  '👿': ['devil', 'angry', 'evil', 'imp'],
  '💀': ['skull', 'dead', 'death', 'skeleton'],
  '☠️': ['skull', 'crossbones', 'death', 'danger', 'poison'],
  '💩': ['poop', 'poo', 'shit', 'crap'],
  '🤡': ['clown', 'circus', 'fool'],
  '👹': ['ogre', 'monster', 'demon', 'japanese'],
  '👺': ['goblin', 'tengu', 'monster', 'japanese'],
  '👻': ['ghost', 'boo', 'spooky', 'halloween'],
  '👽': ['alien', 'ufo', 'extraterrestrial', 'space'],
  '👾': ['alien', 'monster', 'game', 'space invader'],
  '🤖': ['robot', 'bot', 'android', 'machine'],

  // Gestures
  '👋': ['wave', 'hello', 'bye', 'hand'],
  '🤚': ['raised', 'hand', 'stop', 'back'],
  '🖐️': ['hand', 'five', 'fingers', 'spread'],
  '✋': ['hand', 'stop', 'high five'],
  '🖖': ['vulcan', 'spock', 'star trek', 'hand'],
  '👌': ['ok', 'okay', 'perfect', 'hand'],
  '🤌': ['pinched', 'italian', 'chef', 'fingers'],
  '🤏': ['pinch', 'small', 'tiny', 'little'],
  '✌️': ['peace', 'victory', 'two', 'fingers'],
  '🤞': ['crossed', 'fingers', 'luck', 'hope'],
  '🤟': ['love', 'rock', 'hand', 'ily'],
  '🤘': ['rock', 'metal', 'horns', 'hand'],
  '🤙': ['call', 'shaka', 'hang loose', 'phone'],
  '👈': ['left', 'point', 'finger'],
  '👉': ['right', 'point', 'finger'],
  '👆': ['up', 'point', 'finger'],
  '🖕': ['middle finger', 'fuck', 'flip off'],
  '👇': ['down', 'point', 'finger'],
  '☝️': ['up', 'point', 'finger', 'one'],
  '👍': ['thumbs up', 'like', 'yes', 'good', 'ok'],
  '👎': ['thumbs down', 'dislike', 'no', 'bad'],
  '✊': ['fist', 'power', 'punch', 'solidarity'],
  '👊': ['fist bump', 'punch', 'bro'],
  '🤛': ['fist', 'left', 'bump'],
  '🤜': ['fist', 'right', 'bump'],
  '👏': ['clap', 'applause', 'hands', 'bravo'],
  '🙌': ['hands', 'raise', 'celebrate', 'praise'],
  '👐': ['hands', 'open', 'hug'],
  '🤲': ['palms', 'up', 'hands', 'prayer'],
  '🤝': ['handshake', 'deal', 'agree', 'meet'],
  '🙏': ['pray', 'please', 'thanks', 'namaste', 'hands'],
  '✍️': ['write', 'hand', 'pen', 'sign'],
  '💅': ['nails', 'polish', 'manicure', 'sassy'],
  '🤳': ['selfie', 'phone', 'camera'],
  '💪': ['muscle', 'strong', 'flex', 'arm', 'bicep'],
  '🦾': ['robot', 'arm', 'prosthetic', 'mechanical'],
  '🦿': ['leg', 'prosthetic', 'mechanical'],
  '🦵': ['leg', 'kick', 'limb'],
  '🦶': ['foot', 'kick', 'stomp'],
  '👂': ['ear', 'listen', 'hear'],
  '🦻': ['ear', 'hearing aid', 'deaf'],
  '👃': ['nose', 'smell', 'sniff'],
  '🧠': ['brain', 'smart', 'think', 'mind'],
  '🫀': ['heart', 'organ', 'anatomical'],
  '🫁': ['lungs', 'breathe', 'organ'],
  '🦷': ['tooth', 'teeth', 'dental'],
  '🦴': ['bone', 'skeleton', 'dog'],
  '👀': ['eyes', 'look', 'see', 'watch'],
  '👁️': ['eye', 'see', 'look', 'watch'],
  '👅': ['tongue', 'lick', 'taste'],
  '👄': ['lips', 'mouth', 'kiss'],

  // Animals
  '🐶': ['dog', 'puppy', 'pet', 'woof'],
  '🐱': ['cat', 'kitty', 'pet', 'meow'],
  '🐭': ['mouse', 'rat', 'rodent'],
  '🐹': ['hamster', 'pet', 'rodent'],
  '🐰': ['rabbit', 'bunny', 'pet'],
  '🦊': ['fox', 'animal', 'cute'],
  '🐻': ['bear', 'teddy', 'animal'],
  '🐼': ['panda', 'bear', 'china'],
  '🐻‍❄️': ['polar bear', 'arctic', 'white'],
  '🐨': ['koala', 'australia', 'bear'],
  '🐯': ['tiger', 'cat', 'stripes'],
  '🦁': ['lion', 'king', 'cat', 'mane'],
  '🐮': ['cow', 'moo', 'farm'],
  '🐷': ['pig', 'oink', 'farm'],
  '🐸': ['frog', 'toad', 'ribbit', 'kermit'],
  '🐵': ['monkey', 'ape', 'chimp'],
  '🙈': ['monkey', 'see no evil', 'hide'],
  '🙉': ['monkey', 'hear no evil'],
  '🙊': ['monkey', 'speak no evil'],
  '🐒': ['monkey', 'ape', 'primate'],
  '🐔': ['chicken', 'hen', 'bird', 'farm'],
  '🐧': ['penguin', 'bird', 'cold', 'arctic'],
  '🐦': ['bird', 'tweet', 'fly'],
  '🐤': ['chick', 'bird', 'baby', 'chicken'],
  '🐣': ['chick', 'hatching', 'egg', 'bird'],
  '🐥': ['chick', 'bird', 'baby'],
  '🦆': ['duck', 'bird', 'quack'],
  '🦅': ['eagle', 'bird', 'america', 'fly'],
  '🦉': ['owl', 'bird', 'night', 'wise'],
  '🦇': ['bat', 'vampire', 'night', 'fly'],
  '🐺': ['wolf', 'howl', 'dog'],
  '🐗': ['boar', 'pig', 'wild'],
  '🐴': ['horse', 'pony', 'neigh'],
  '🦄': ['unicorn', 'horse', 'magic', 'rainbow'],
  '🐝': ['bee', 'honey', 'buzz', 'insect'],
  '🪱': ['worm', 'bug', 'insect'],
  '🐛': ['bug', 'caterpillar', 'insect'],
  '🦋': ['butterfly', 'insect', 'pretty'],
  '🐌': ['snail', 'slow', 'slug'],
  '🐞': ['ladybug', 'insect', 'bug'],
  '🐜': ['ant', 'insect', 'bug'],
  '🪰': ['fly', 'insect', 'bug'],
  '🪲': ['beetle', 'bug', 'insect'],
  '🪳': ['cockroach', 'bug', 'insect', 'roach'],
  '🦟': ['mosquito', 'bug', 'insect', 'bite'],
  '🦗': ['cricket', 'bug', 'insect'],
  '🕷️': ['spider', 'bug', 'web', 'creepy'],
  '🦂': ['scorpion', 'bug', 'sting'],
  '🐢': ['turtle', 'slow', 'shell', 'tortoise'],
  '🐍': ['snake', 'reptile', 'hiss'],
  '🦎': ['lizard', 'reptile', 'gecko'],
  '🦖': ['dinosaur', 't-rex', 'tyrannosaurus'],
  '🦕': ['dinosaur', 'brontosaurus', 'sauropod'],
  '🐙': ['octopus', 'sea', 'tentacles'],
  '🦑': ['squid', 'sea', 'tentacles'],
  '🦐': ['shrimp', 'seafood', 'prawn'],
  '🦞': ['lobster', 'seafood', 'crab'],
  '🦀': ['crab', 'seafood', 'beach'],
  '🐡': ['blowfish', 'puffer', 'fish'],
  '🐠': ['fish', 'tropical', 'sea'],
  '🐟': ['fish', 'sea', 'swim'],
  '🐬': ['dolphin', 'sea', 'swim', 'flipper'],
  '🐳': ['whale', 'sea', 'spout'],
  '🐋': ['whale', 'sea', 'humpback'],
  '🦈': ['shark', 'fish', 'sea', 'jaws'],
  '🐊': ['crocodile', 'alligator', 'reptile'],
  '🐅': ['tiger', 'cat', 'stripes'],
  '🐆': ['leopard', 'cat', 'spots'],
  '🦓': ['zebra', 'stripes', 'horse'],
  '🦍': ['gorilla', 'ape', 'monkey'],
  '🦧': ['orangutan', 'ape', 'monkey'],
  '🦣': ['mammoth', 'elephant', 'ice age'],
  '🐘': ['elephant', 'trunk', 'big'],
  '🦛': ['hippo', 'hippopotamus'],
  '🦏': ['rhino', 'rhinoceros', 'horn'],
  '🐪': ['camel', 'desert', 'hump'],
  '🐫': ['camel', 'desert', 'humps', 'bactrian'],
  '🦒': ['giraffe', 'tall', 'spots'],
  '🦘': ['kangaroo', 'australia', 'hop'],
  '🦬': ['bison', 'buffalo'],
  '🐃': ['water buffalo', 'ox'],
  '🐂': ['ox', 'bull'],
  '🐄': ['cow', 'farm', 'moo'],
  '🐎': ['horse', 'race', 'gallop'],
  '🐖': ['pig', 'farm', 'oink'],
  '🐏': ['ram', 'sheep'],
  '🐑': ['sheep', 'lamb', 'wool', 'baa'],
  '🦙': ['llama', 'alpaca'],
  '🐐': ['goat', 'farm'],
  '🦌': ['deer', 'buck', 'antlers'],
  '🐕': ['dog', 'pet', 'woof'],
  '🐩': ['poodle', 'dog', 'fancy'],
  '🦮': ['guide dog', 'service', 'blind'],
  '🐕‍🦺': ['service dog', 'vest'],
  '🐈': ['cat', 'pet', 'meow'],
  '🐈‍⬛': ['black cat', 'pet', 'halloween'],
  '🪶': ['feather', 'bird', 'light'],
  '🐓': ['rooster', 'chicken', 'cock', 'farm'],
  '🦃': ['turkey', 'bird', 'thanksgiving'],
  '🦤': ['dodo', 'bird', 'extinct'],
  '🦚': ['peacock', 'bird', 'feathers'],
  '🦜': ['parrot', 'bird', 'tropical'],
  '🦢': ['swan', 'bird', 'elegant'],
  '🦩': ['flamingo', 'bird', 'pink'],
  '🕊️': ['dove', 'peace', 'bird'],
  '🐇': ['rabbit', 'bunny', 'hop'],
  '🦝': ['raccoon', 'animal', 'trash panda'],
  '🦨': ['skunk', 'animal', 'smell'],
  '🦡': ['badger', 'animal'],
  '🦫': ['beaver', 'animal', 'dam'],
  '🦦': ['otter', 'animal', 'cute'],
  '🦥': ['sloth', 'animal', 'slow', 'lazy'],
  '🐁': ['mouse', 'rodent'],
  '🐀': ['rat', 'rodent'],
  '🐿️': ['squirrel', 'chipmunk', 'nut'],
  '🦔': ['hedgehog', 'spiky', 'sonic'],

  // Food
  '🍎': ['apple', 'red', 'fruit'],
  '🍐': ['pear', 'fruit', 'green'],
  '🍊': ['orange', 'fruit', 'citrus'],
  '🍋': ['lemon', 'fruit', 'citrus', 'sour'],
  '🍌': ['banana', 'fruit', 'yellow'],
  '🍉': ['watermelon', 'fruit', 'summer'],
  '🍇': ['grapes', 'fruit', 'wine'],
  '🍓': ['strawberry', 'fruit', 'berry'],
  '🫐': ['blueberry', 'fruit', 'berry'],
  '🍈': ['melon', 'fruit'],
  '🍒': ['cherry', 'fruit', 'red'],
  '🍑': ['peach', 'fruit', 'butt'],
  '🥭': ['mango', 'fruit', 'tropical'],
  '🍍': ['pineapple', 'fruit', 'tropical'],
  '🥥': ['coconut', 'fruit', 'tropical'],
  '🥝': ['kiwi', 'fruit'],
  '🍅': ['tomato', 'vegetable', 'red'],
  '🍆': ['eggplant', 'aubergine', 'vegetable'],
  '🥑': ['avocado', 'vegetable', 'guac'],
  '🥦': ['broccoli', 'vegetable', 'green'],
  '🥬': ['lettuce', 'vegetable', 'leafy'],
  '🥒': ['cucumber', 'vegetable', 'pickle'],
  '🌶️': ['pepper', 'hot', 'spicy', 'chili'],
  '🫑': ['pepper', 'bell', 'vegetable'],
  '🌽': ['corn', 'vegetable', 'maize'],
  '🥕': ['carrot', 'vegetable', 'orange'],
  '🫒': ['olive', 'vegetable'],
  '🧄': ['garlic', 'vegetable', 'vampire'],
  '🧅': ['onion', 'vegetable', 'cry'],
  '🥔': ['potato', 'vegetable'],
  '🍠': ['sweet potato', 'vegetable'],
  '🥐': ['croissant', 'bread', 'french', 'pastry'],
  '🥯': ['bagel', 'bread', 'breakfast'],
  '🍞': ['bread', 'loaf', 'toast'],
  '🥖': ['baguette', 'bread', 'french'],
  '🥨': ['pretzel', 'bread', 'snack'],
  '🧀': ['cheese', 'dairy'],
  '🥚': ['egg', 'breakfast'],
  '🍳': ['egg', 'frying', 'breakfast', 'cooking'],
  '🧈': ['butter', 'dairy'],
  '🥞': ['pancakes', 'breakfast', 'stack'],
  '🧇': ['waffle', 'breakfast'],
  '🥓': ['bacon', 'breakfast', 'meat'],
  '🥩': ['steak', 'meat', 'beef'],
  '🍗': ['chicken', 'leg', 'drumstick', 'meat'],
  '🍖': ['meat', 'bone', 'rib'],
  '🌭': ['hot dog', 'sausage', 'fast food'],
  '🍔': ['burger', 'hamburger', 'fast food'],
  '🍟': ['fries', 'french fries', 'chips', 'fast food'],
  '🍕': ['pizza', 'slice', 'fast food'],
  '🫓': ['flatbread', 'pita', 'bread'],
  '🥪': ['sandwich', 'sub', 'lunch'],
  '🥙': ['pita', 'falafel', 'wrap'],
  '🧆': ['falafel', 'food'],
  '🌮': ['taco', 'mexican', 'food'],
  '🌯': ['burrito', 'mexican', 'wrap'],
  '🫔': ['tamale', 'mexican', 'food'],
  '🥗': ['salad', 'healthy', 'greens'],
  '🥘': ['paella', 'pan', 'food'],
  '🫕': ['fondue', 'cheese', 'food'],
  '🥫': ['can', 'canned', 'food'],
  '🍝': ['spaghetti', 'pasta', 'italian'],
  '🍜': ['noodles', 'ramen', 'soup', 'asian'],
  '🍲': ['stew', 'pot', 'soup'],
  '🍛': ['curry', 'rice', 'indian'],
  '🍣': ['sushi', 'japanese', 'fish'],
  '🍱': ['bento', 'box', 'japanese', 'lunch'],
  '🥟': ['dumpling', 'asian', 'food'],
  '🦪': ['oyster', 'seafood', 'shell'],
  '🍤': ['shrimp', 'prawn', 'tempura', 'seafood'],
  '🍙': ['rice ball', 'onigiri', 'japanese'],
  '🍚': ['rice', 'bowl', 'asian'],
  '🍘': ['rice cracker', 'japanese', 'snack'],
  '🍥': ['fish cake', 'narutomaki', 'japanese'],
  '🥠': ['fortune cookie', 'chinese'],
  '🥮': ['mooncake', 'chinese', 'festival'],
  '🍢': ['oden', 'skewer', 'japanese'],
  '🍡': ['dango', 'japanese', 'dessert'],
  '🍧': ['shaved ice', 'dessert', 'cold'],
  '🍨': ['ice cream', 'dessert', 'cold'],
  '🍦': ['ice cream', 'cone', 'dessert', 'soft serve'],
  '🥧': ['pie', 'dessert', 'thanksgiving'],
  '🧁': ['cupcake', 'dessert', 'cake'],
  '🍰': ['cake', 'slice', 'dessert'],
  '🎂': ['birthday', 'cake', 'candles', 'party'],
  '🍮': ['pudding', 'flan', 'dessert'],
  '🍭': ['lollipop', 'candy', 'sweet'],
  '🍬': ['candy', 'sweet', 'wrapper'],
  '🍫': ['chocolate', 'bar', 'candy', 'sweet'],
  '🍿': ['popcorn', 'movies', 'snack'],
  '🍩': ['donut', 'doughnut', 'dessert'],
  '🍪': ['cookie', 'biscuit', 'dessert'],
  '🌰': ['chestnut', 'nut'],
  '🥜': ['peanut', 'nut'],
  '🍯': ['honey', 'jar', 'bee'],
  '🥛': ['milk', 'glass', 'dairy'],
  '🍼': ['bottle', 'baby', 'milk'],
  '🫖': ['teapot', 'tea', 'drink'],
  '☕': ['coffee', 'tea', 'hot', 'drink', 'cafe'],
  '🍵': ['tea', 'green', 'cup', 'matcha'],
  '🧃': ['juice', 'box', 'drink'],
  '🥤': ['cup', 'soda', 'drink', 'straw'],
  '🧋': ['boba', 'bubble tea', 'drink', 'tapioca'],
  '🍶': ['sake', 'japanese', 'alcohol'],
  '🍺': ['beer', 'mug', 'drink', 'alcohol'],
  '🍻': ['beers', 'cheers', 'drink', 'alcohol'],
  '🥂': ['champagne', 'cheers', 'toast', 'celebrate'],
  '🍷': ['wine', 'red', 'glass', 'alcohol'],
  '🥃': ['whiskey', 'tumbler', 'drink', 'alcohol'],
  '🍸': ['cocktail', 'martini', 'drink', 'alcohol'],
  '🍹': ['tropical', 'cocktail', 'drink', 'alcohol'],
  '🧉': ['mate', 'drink'],
  '🍾': ['champagne', 'bottle', 'celebrate', 'pop'],
  '🧊': ['ice', 'cube', 'cold'],

  // Activities
  '⚽': ['soccer', 'football', 'ball', 'sport'],
  '🏀': ['basketball', 'ball', 'sport', 'nba'],
  '🏈': ['football', 'american', 'ball', 'sport', 'nfl'],
  '⚾': ['baseball', 'ball', 'sport', 'mlb'],
  '🥎': ['softball', 'ball', 'sport'],
  '🎾': ['tennis', 'ball', 'sport', 'racket'],
  '🏐': ['volleyball', 'ball', 'sport'],
  '🏉': ['rugby', 'ball', 'sport'],
  '🥏': ['frisbee', 'disc', 'ultimate'],
  '🎱': ['pool', 'billiards', '8ball', 'ball'],
  '🪀': ['yoyo', 'toy', 'play'],
  '🏓': ['ping pong', 'table tennis', 'paddle'],
  '🏸': ['badminton', 'shuttlecock', 'racket'],
  '🏒': ['hockey', 'ice', 'stick', 'puck'],
  '🏑': ['field hockey', 'stick'],
  '🥍': ['lacrosse', 'stick'],
  '🏏': ['cricket', 'bat', 'sport'],
  '🪃': ['boomerang', 'throw'],
  '🥅': ['goal', 'net', 'sport'],
  '⛳': ['golf', 'flag', 'hole'],
  '🪁': ['kite', 'fly', 'wind'],
  '🏹': ['archery', 'bow', 'arrow'],
  '🎣': ['fishing', 'rod', 'fish'],
  '🤿': ['diving', 'snorkel', 'mask'],
  '🥊': ['boxing', 'glove', 'fight'],
  '🥋': ['martial arts', 'karate', 'judo'],
  '🎽': ['running', 'shirt', 'jersey'],
  '🛹': ['skateboard', 'skate'],
  '🛼': ['roller skate', 'skating'],
  '🛷': ['sled', 'snow', 'winter'],
  '⛸️': ['ice skate', 'skating', 'winter'],
  '🥌': ['curling', 'stone', 'winter'],
  '🎿': ['ski', 'skiing', 'winter', 'snow'],
  '⛷️': ['skiing', 'skier', 'winter', 'snow'],
  '🏂': ['snowboard', 'winter', 'snow'],
  '🪂': ['parachute', 'skydiving'],
  '🏋️': ['weightlifting', 'gym', 'workout'],
  '🤼': ['wrestling', 'fight', 'sport'],
  '🤸': ['gymnastics', 'cartwheel', 'flip'],
  '⛹️': ['basketball', 'dribble', 'sport'],
  '🤺': ['fencing', 'sword', 'sport'],
  '🤾': ['handball', 'sport'],
  '🏌️': ['golf', 'swing', 'sport'],
  '🏇': ['horse racing', 'jockey'],
  '🧘': ['yoga', 'meditation', 'zen'],
  '🏄': ['surfing', 'surf', 'wave', 'beach'],
  '🏊': ['swimming', 'swim', 'pool'],
  '🤽': ['water polo', 'swim', 'sport'],
  '🚣': ['rowing', 'boat', 'canoe'],
  '🧗': ['climbing', 'rock', 'mountain'],
  '🚵': ['mountain biking', 'bike', 'cycling'],
  '🚴': ['cycling', 'bike', 'bicycle'],
  '🏆': ['trophy', 'winner', 'award', 'champion'],
  '🥇': ['gold', 'medal', 'first', 'winner'],
  '🥈': ['silver', 'medal', 'second'],
  '🥉': ['bronze', 'medal', 'third'],
  '🏅': ['medal', 'sports', 'award'],
  '🎖️': ['medal', 'military', 'award'],
  '🏵️': ['rosette', 'award', 'flower'],
  '🎗️': ['ribbon', 'awareness'],
  '🎫': ['ticket', 'admission', 'event'],
  '🎟️': ['ticket', 'admission', 'event'],
  '🎪': ['circus', 'tent', 'carnival'],
  '🎭': ['theater', 'drama', 'masks', 'performing arts'],
  '🎨': ['art', 'paint', 'palette', 'artist'],
  '🎬': ['movie', 'film', 'clapperboard', 'cinema', 'action'],
  '🎤': ['microphone', 'sing', 'karaoke', 'music'],
  '🎧': ['headphones', 'music', 'listen', 'audio'],
  '🎼': ['music', 'notes', 'score', 'sheet'],
  '🎹': ['piano', 'keyboard', 'music', 'keys'],
  '🥁': ['drum', 'music', 'percussion', 'beat'],
  '🪘': ['drum', 'djembe', 'music'],
  '🎷': ['saxophone', 'sax', 'music', 'jazz'],
  '🎺': ['trumpet', 'music', 'brass', 'horn'],
  '🪗': ['accordion', 'music'],
  '🎸': ['guitar', 'music', 'rock'],
  '🪕': ['banjo', 'music', 'country'],
  '🎻': ['violin', 'music', 'fiddle', 'classical'],
  '🎲': ['dice', 'game', 'roll', 'gambling', 'random', 'chance'],
  '♟️': ['chess', 'pawn', 'game', 'strategy'],
  '🎯': ['target', 'dart', 'bullseye', 'goal'],
  '🎳': ['bowling', 'pins', 'ball', 'strike'],
  '🎮': ['video game', 'controller', 'gaming', 'play'],
  '🎰': ['slot machine', 'casino', 'gambling', 'jackpot'],
  '🧩': ['puzzle', 'piece', 'jigsaw', 'game'],

  // Travel
  '🚗': ['car', 'vehicle', 'drive', 'automobile'],
  '🚕': ['taxi', 'cab', 'car', 'yellow'],
  '🚙': ['suv', 'car', 'vehicle'],
  '🚌': ['bus', 'vehicle', 'transit'],
  '🚎': ['trolleybus', 'bus', 'transit'],
  '🏎️': ['race car', 'fast', 'racing', 'f1'],
  '🚓': ['police', 'car', 'cop'],
  '🚑': ['ambulance', 'emergency', 'medical'],
  '🚒': ['fire truck', 'emergency', 'firefighter'],
  '🚐': ['minibus', 'van', 'vehicle'],
  '🛻': ['pickup', 'truck', 'vehicle'],
  '🚚': ['truck', 'delivery', 'moving'],
  '🚛': ['truck', 'semi', 'trailer'],
  '🚜': ['tractor', 'farm', 'vehicle'],
  '🦯': ['cane', 'blind', 'walking'],
  '🦽': ['wheelchair', 'manual', 'accessibility'],
  '🦼': ['wheelchair', 'motorized', 'accessibility'],
  '🛴': ['scooter', 'kick', 'vehicle'],
  '🚲': ['bike', 'bicycle', 'cycling'],
  '🛵': ['scooter', 'motor', 'vespa'],
  '🏍️': ['motorcycle', 'bike', 'vehicle'],
  '🛺': ['rickshaw', 'auto', 'tuk tuk'],
  '🚨': ['siren', 'police', 'emergency', 'light'],
  '🚔': ['police', 'car', 'oncoming'],
  '🚍': ['bus', 'oncoming', 'transit'],
  '🚘': ['car', 'oncoming', 'vehicle'],
  '🚖': ['taxi', 'oncoming', 'cab'],
  '🚡': ['cable car', 'gondola', 'aerial'],
  '🚠': ['cable car', 'mountain'],
  '🚟': ['suspension railway', 'monorail'],
  '🚃': ['train', 'railway', 'car'],
  '🚋': ['tram', 'streetcar', 'trolley'],
  '🚞': ['train', 'mountain', 'railway'],
  '🚝': ['monorail', 'train'],
  '🚄': ['train', 'bullet', 'high speed', 'shinkansen'],
  '🚅': ['train', 'bullet', 'shinkansen'],
  '🚈': ['train', 'light rail'],
  '🚂': ['train', 'locomotive', 'steam', 'engine'],
  '🚆': ['train', 'railway'],
  '🚇': ['metro', 'subway', 'underground'],
  '🚊': ['tram', 'streetcar'],
  '🚉': ['station', 'train', 'platform'],
  '✈️': ['airplane', 'plane', 'flight', 'travel'],
  '🛫': ['airplane', 'departure', 'takeoff', 'flight'],
  '🛬': ['airplane', 'arrival', 'landing', 'flight'],
  '🛩️': ['airplane', 'small', 'plane'],
  '💺': ['seat', 'airplane', 'chair'],
  '🛰️': ['satellite', 'space', 'orbit'],
  '🚀': ['rocket', 'space', 'launch', 'ship'],
  '🛸': ['ufo', 'flying saucer', 'alien', 'space'],
  '🚁': ['helicopter', 'chopper', 'fly'],
  '🛶': ['canoe', 'boat', 'paddle', 'kayak'],
  '⛵': ['sailboat', 'boat', 'sailing'],
  '🚤': ['speedboat', 'boat', 'fast'],
  '🛥️': ['boat', 'motor', 'yacht'],
  '🛳️': ['cruise', 'ship', 'boat'],
  '⛴️': ['ferry', 'boat', 'ship'],
  '🚢': ['ship', 'boat', 'cruise'],
  '⚓': ['anchor', 'boat', 'ship', 'nautical'],
  '🪝': ['hook', 'fishing'],
  '⛽': ['gas', 'fuel', 'pump', 'station'],
  '🚧': ['construction', 'barrier', 'road'],
  '🚦': ['traffic light', 'signal', 'road'],
  '🚥': ['traffic light', 'horizontal', 'signal'],
  '🚏': ['bus stop', 'station'],
  '🗺️': ['map', 'world', 'travel'],
  '🗿': ['moai', 'easter island', 'statue'],
  '🗽': ['statue of liberty', 'new york', 'usa'],
  '🗼': ['tokyo tower', 'japan', 'landmark'],
  '🏰': ['castle', 'european', 'fairy tale'],
  '🏯': ['castle', 'japanese', 'palace'],
  '🏟️': ['stadium', 'sports', 'arena'],
  '🎡': ['ferris wheel', 'carnival', 'amusement'],
  '🎢': ['roller coaster', 'amusement', 'theme park'],
  '🎠': ['carousel', 'merry-go-round', 'horse'],
  '⛲': ['fountain', 'water', 'park'],
  '⛱️': ['umbrella', 'beach', 'sun'],
  '🏖️': ['beach', 'sand', 'vacation'],
  '🏝️': ['island', 'tropical', 'desert'],
  '🏜️': ['desert', 'sand', 'dry'],
  '🌋': ['volcano', 'mountain', 'eruption'],
  '⛰️': ['mountain', 'rock'],
  '🏔️': ['mountain', 'snow', 'peak'],
  '🗻': ['mount fuji', 'japan', 'mountain'],
  '🏕️': ['camping', 'tent', 'outdoor'],
  '⛺': ['tent', 'camping', 'outdoor'],
  '🛖': ['hut', 'house'],
  '🏠': ['house', 'home', 'building'],
  '🏡': ['house', 'garden', 'home'],
  '🏘️': ['houses', 'neighborhood'],
  '🏚️': ['house', 'abandoned', 'derelict'],
  '🏗️': ['construction', 'building', 'crane'],
  '🏭': ['factory', 'industry', 'building'],
  '🏢': ['office', 'building', 'business'],
  '🏬': ['department store', 'mall', 'shopping'],
  '🏣': ['post office', 'japanese', 'building'],
  '🏤': ['post office', 'european', 'building'],
  '🏥': ['hospital', 'medical', 'building'],
  '🏦': ['bank', 'money', 'building'],
  '🏨': ['hotel', 'building', 'lodging'],
  '🏪': ['store', 'convenience', 'shop'],
  '🏫': ['school', 'education', 'building'],
  '🏩': ['love hotel', 'building'],
  '💒': ['wedding', 'chapel', 'church'],
  '🏛️': ['classical', 'building', 'museum'],
  '⛪': ['church', 'christian', 'religion'],
  '🕌': ['mosque', 'islam', 'religion'],
  '🕍': ['synagogue', 'jewish', 'religion'],
  '🛕': ['temple', 'hindu', 'religion'],
  '🕋': ['kaaba', 'mecca', 'islam'],
  '⛩️': ['shrine', 'shinto', 'japanese', 'torii'],

  // Objects
  '⌚': ['watch', 'time', 'wrist'],
  '📱': ['phone', 'mobile', 'smartphone', 'iphone', 'cell'],
  '📲': ['phone', 'mobile', 'arrow', 'call'],
  '💻': ['laptop', 'computer', 'mac', 'macbook'],
  '⌨️': ['keyboard', 'type', 'computer'],
  '🖥️': ['computer', 'desktop', 'monitor', 'screen'],
  '🖨️': ['printer', 'print', 'paper'],
  '🖱️': ['mouse', 'computer', 'click'],
  '🖲️': ['trackball', 'computer'],
  '🕹️': ['joystick', 'game', 'arcade'],
  '🗜️': ['clamp', 'compress', 'tool'],
  '💽': ['minidisc', 'disk', 'computer'],
  '💾': ['floppy', 'disk', 'save', 'computer'],
  '💿': ['cd', 'disc', 'dvd'],
  '📀': ['dvd', 'disc', 'movie'],
  '📼': ['vhs', 'tape', 'video', 'cassette'],
  '📷': ['camera', 'photo', 'picture'],
  '📸': ['camera', 'flash', 'photo'],
  '📹': ['video camera', 'camcorder', 'record'],
  '🎥': ['movie camera', 'film', 'cinema'],
  '📽️': ['projector', 'film', 'movie'],
  '🎞️': ['film', 'frames', 'movie'],
  '📞': ['phone', 'telephone', 'receiver'],
  '☎️': ['phone', 'telephone', 'landline'],
  '📟': ['pager', 'beeper'],
  '📠': ['fax', 'machine', 'document'],
  '📺': ['tv', 'television', 'screen'],
  '📻': ['radio', 'music', 'broadcast'],
  '🎙️': ['microphone', 'studio', 'podcast', 'record'],
  '🎚️': ['slider', 'level', 'audio'],
  '🎛️': ['knobs', 'dials', 'control'],
  '🧭': ['compass', 'navigation', 'direction'],
  '⏱️': ['stopwatch', 'timer', 'time'],
  '⏲️': ['timer', 'clock', 'kitchen'],
  '⏰': ['alarm', 'clock', 'wake'],
  '🕰️': ['clock', 'mantelpiece', 'time'],
  '⌛': ['hourglass', 'time', 'sand'],
  '⏳': ['hourglass', 'time', 'sand', 'flowing'],
  '📡': ['satellite', 'dish', 'antenna', 'signal'],
  '🔋': ['battery', 'power', 'charge'],
  '🔌': ['plug', 'electric', 'power', 'outlet'],
  '💡': ['light bulb', 'idea', 'bright'],
  '🔦': ['flashlight', 'torch', 'light'],
  '🕯️': ['candle', 'light', 'flame'],
  '🪔': ['lamp', 'diya', 'oil'],
  '🧯': ['fire extinguisher', 'safety'],
  '🛢️': ['oil', 'drum', 'barrel'],
  '💸': ['money', 'flying', 'cash', 'dollar'],
  '💵': ['money', 'dollar', 'cash', 'bill'],
  '💴': ['money', 'yen', 'japanese'],
  '💶': ['money', 'euro', 'european'],
  '💷': ['money', 'pound', 'british'],
  '🪙': ['coin', 'money', 'gold'],
  '💰': ['money', 'bag', 'rich', 'cash'],
  '💳': ['credit card', 'payment', 'bank'],
  '💎': ['diamond', 'gem', 'jewel', 'precious'],
  '⚖️': ['scale', 'balance', 'justice', 'law'],
  '🪜': ['ladder', 'climb', 'steps'],
  '🧰': ['toolbox', 'tools', 'repair'],
  '🪛': ['screwdriver', 'tool', 'repair'],
  '🔧': ['wrench', 'tool', 'repair', 'spanner'],
  '🔨': ['hammer', 'tool', 'build'],
  '⚒️': ['hammer', 'pick', 'tools'],
  '🛠️': ['tools', 'hammer', 'wrench', 'repair'],
  '⛏️': ['pick', 'mining', 'tool'],
  '🪚': ['saw', 'tool', 'carpentry'],
  '🔩': ['nut', 'bolt', 'screw', 'hardware'],
  '⚙️': ['gear', 'cog', 'settings', 'mechanical'],
  '🪤': ['trap', 'mouse', 'catch'],
  '🧱': ['brick', 'wall', 'build'],
  '⛓️': ['chain', 'link', 'metal'],
  '🧲': ['magnet', 'attract', 'magnetic'],
  '🔫': ['gun', 'pistol', 'water', 'weapon'],
  '💣': ['bomb', 'explosive', 'danger'],
  '🧨': ['firecracker', 'dynamite', 'explosive'],
  '🪓': ['axe', 'chop', 'tool'],
  '🔪': ['knife', 'cut', 'kitchen', 'blade'],
  '🗡️': ['dagger', 'sword', 'knife', 'blade'],
  '⚔️': ['swords', 'crossed', 'battle', 'fight'],
  '🛡️': ['shield', 'defense', 'protection'],
  '🚬': ['cigarette', 'smoke', 'smoking'],
  '⚰️': ['coffin', 'death', 'funeral'],
  '🪦': ['headstone', 'grave', 'rip'],
  '⚱️': ['urn', 'funeral', 'ashes'],
  '🏺': ['amphora', 'vase', 'jar'],
  '🔮': ['crystal ball', 'fortune', 'magic', 'predict'],
  '📿': ['beads', 'prayer', 'rosary'],
  '🧿': ['evil eye', 'nazar', 'protection'],
  '💈': ['barber', 'pole', 'haircut'],
  '⚗️': ['alembic', 'chemistry', 'science'],
  '🔭': ['telescope', 'astronomy', 'space', 'stars'],
  '🔬': ['microscope', 'science', 'biology'],
  '🕳️': ['hole', 'black', 'pit'],
  '🩹': ['bandage', 'adhesive', 'medical'],
  '🩺': ['stethoscope', 'doctor', 'medical'],
  '💊': ['pill', 'medicine', 'drug', 'capsule'],
  '💉': ['syringe', 'needle', 'injection', 'vaccine'],
  '🩸': ['blood', 'drop', 'donate'],
  '🧬': ['dna', 'gene', 'biology', 'science'],
  '🦠': ['microbe', 'germ', 'bacteria', 'virus'],
  '🧫': ['petri dish', 'bacteria', 'science'],
  '🧪': ['test tube', 'science', 'chemistry', 'experiment'],

  // Symbols
  '❤️': ['heart', 'love', 'red'],
  '🧡': ['heart', 'orange', 'love'],
  '💛': ['heart', 'yellow', 'love'],
  '💚': ['heart', 'green', 'love'],
  '💙': ['heart', 'blue', 'love'],
  '💜': ['heart', 'purple', 'love'],
  '🖤': ['heart', 'black', 'love'],
  '🤍': ['heart', 'white', 'love'],
  '🤎': ['heart', 'brown', 'love'],
  '💔': ['heart', 'broken', 'sad'],
  '❣️': ['heart', 'exclamation', 'love'],
  '💕': ['hearts', 'two', 'love'],
  '💞': ['hearts', 'revolving', 'love'],
  '💓': ['heart', 'beating', 'love'],
  '💗': ['heart', 'growing', 'love'],
  '💖': ['heart', 'sparkle', 'love'],
  '💘': ['heart', 'arrow', 'cupid', 'love'],
  '💝': ['heart', 'ribbon', 'gift', 'love'],
  '💟': ['heart', 'decoration', 'love'],
  '☮️': ['peace', 'symbol', 'sign'],
  '✝️': ['cross', 'christian', 'religion'],
  '☪️': ['islam', 'crescent', 'moon', 'star'],
  '🕉️': ['om', 'hindu', 'religion'],
  '☸️': ['dharma', 'wheel', 'buddhist'],
  '✡️': ['star of david', 'jewish', 'religion'],
  '🔯': ['star of david', 'hexagram'],
  '🕎': ['menorah', 'jewish', 'hanukkah'],
  '☯️': ['yin yang', 'balance', 'taoism'],
  '☦️': ['orthodox cross', 'christian'],
  '🛐': ['place of worship', 'pray', 'religion'],
  '⛎': ['ophiuchus', 'zodiac'],
  '♈': ['aries', 'zodiac', 'astrology'],
  '♉': ['taurus', 'zodiac', 'astrology'],
  '♊': ['gemini', 'zodiac', 'astrology'],
  '♋': ['cancer', 'zodiac', 'astrology'],
  '♌': ['leo', 'zodiac', 'astrology'],
  '♍': ['virgo', 'zodiac', 'astrology'],
  '♎': ['libra', 'zodiac', 'astrology'],
  '♏': ['scorpio', 'zodiac', 'astrology'],
  '♐': ['sagittarius', 'zodiac', 'astrology'],
  '♑': ['capricorn', 'zodiac', 'astrology'],
  '♒': ['aquarius', 'zodiac', 'astrology'],
  '♓': ['pisces', 'zodiac', 'astrology'],
  '🆔': ['id', 'identity', 'badge'],
  '⚛️': ['atom', 'science', 'nuclear'],
  '🉑': ['accept', 'chinese', 'kanji'],
  '☢️': ['radioactive', 'nuclear', 'hazard'],
  '☣️': ['biohazard', 'danger', 'toxic'],
  '📴': ['phone off', 'mobile', 'silent'],
  '📳': ['vibration', 'phone', 'mobile'],
  '🈶': ['have', 'japanese', 'kanji'],
  '🈚': ['free', 'japanese', 'kanji'],
  '🈸': ['apply', 'japanese', 'kanji'],
  '🈺': ['open', 'japanese', 'kanji'],
  '🈷️': ['monthly', 'japanese', 'kanji'],
  '✴️': ['star', 'eight pointed'],
  '🆚': ['vs', 'versus', 'against'],
  '💮': ['flower', 'white', 'japanese'],
  '🉐': ['bargain', 'japanese', 'kanji'],
  '㊙️': ['secret', 'japanese', 'kanji'],
  '㊗️': ['congratulations', 'japanese', 'kanji'],
  '🈴': ['passing', 'japanese', 'kanji'],
  '🈵': ['full', 'japanese', 'kanji'],
  '🈹': ['discount', 'japanese', 'kanji'],
  '🈲': ['prohibited', 'japanese', 'kanji'],
  '🅰️': ['a', 'blood type', 'letter'],
  '🅱️': ['b', 'blood type', 'letter'],
  '🆎': ['ab', 'blood type'],
  '🆑': ['cl', 'clear'],
  '🅾️': ['o', 'blood type', 'letter'],
  '🆘': ['sos', 'help', 'emergency'],
  '❌': ['x', 'cross', 'no', 'wrong', 'delete'],
  '⭕': ['circle', 'o', 'ring'],
  '🛑': ['stop', 'sign', 'octagon'],
  '⛔': ['no entry', 'prohibited', 'forbidden'],
  '📛': ['name badge', 'tag'],
  '🚫': ['prohibited', 'no', 'forbidden'],
  '💯': ['100', 'hundred', 'perfect', 'score'],
  '💢': ['anger', 'symbol', 'mad'],
  '♨️': ['hot springs', 'steam', 'onsen'],
  '🚷': ['no pedestrians', 'prohibited'],
  '🚯': ['no littering', 'prohibited'],
  '🚳': ['no bicycles', 'prohibited'],
  '🚱': ['no drinking water', 'prohibited'],
  '🔞': ['18', 'adult', 'underage', 'nsfw'],
  '📵': ['no phones', 'mobile', 'prohibited'],
  '🚭': ['no smoking', 'prohibited'],
  '❗': ['exclamation', 'important', 'alert'],
  '❕': ['exclamation', 'white', 'important'],
  '❓': ['question', 'what', 'help'],
  '❔': ['question', 'white', 'what'],
  '‼️': ['double exclamation', 'important'],
  '⁉️': ['exclamation question', 'interrobang'],
  '🔅': ['dim', 'brightness', 'low'],
  '🔆': ['bright', 'brightness', 'high'],
  '〽️': ['part alternation', 'mark'],
  '⚠️': ['warning', 'caution', 'alert'],
  '🚸': ['children crossing', 'school', 'caution'],
  '🔱': ['trident', 'emblem'],
  '⚜️': ['fleur de lis', 'scout'],
  '🔰': ['beginner', 'japanese', 'symbol'],
  '♻️': ['recycle', 'environment', 'green'],
  '✅': ['check', 'yes', 'done', 'correct'],
  '🈯': ['reserved', 'japanese', 'kanji'],
  '💹': ['chart', 'upward', 'yen', 'stock'],
  '❇️': ['sparkle', 'star'],
  '✳️': ['star', 'eight spoked'],
  '❎': ['x', 'cross', 'mark', 'no'],
  '🌐': ['globe', 'world', 'internet', 'web'],
  '💠': ['diamond', 'cute', 'flower'],
  'Ⓜ️': ['m', 'metro', 'circle'],
  '🌀': ['cyclone', 'spiral', 'dizzy', 'typhoon'],
  '💤': ['sleep', 'zzz', 'tired', 'snore'],
  '🏧': ['atm', 'bank', 'money'],
  '🚾': ['wc', 'restroom', 'toilet', 'bathroom'],
  '♿': ['wheelchair', 'accessible', 'disability'],
  '🅿️': ['parking', 'sign', 'p'],
  '🛗': ['elevator', 'lift'],
  '🈳': ['vacant', 'japanese', 'kanji'],
  '🈂️': ['service charge', 'japanese', 'kanji'],
  '🛂': ['passport control', 'customs'],
  '🛃': ['customs', 'border'],
  '🛄': ['baggage claim', 'luggage'],
  '🛅': ['left luggage', 'locker'],
  '🚹': ['mens', 'restroom', 'male'],
  '🚺': ['womens', 'restroom', 'female'],
  '🚼': ['baby', 'symbol', 'child'],
  '⚧️': ['transgender', 'symbol', 'gender'],
  '🚻': ['restroom', 'toilet', 'wc'],
  '🚮': ['litter', 'trash', 'bin'],
  '🎦': ['cinema', 'film', 'movie'],
  '📶': ['signal', 'bars', 'antenna', 'wifi'],
  '🈁': ['here', 'japanese', 'katakana'],
  '🔣': ['symbols', 'input'],
  'ℹ️': ['information', 'info', 'i'],
  '🔤': ['abc', 'letters', 'alphabet'],
  '🔡': ['abcd', 'lowercase', 'letters'],
  '🔠': ['abcd', 'uppercase', 'letters'],
  '🆖': ['ng', 'no good'],
  '🆗': ['ok', 'button', 'good'],
  '🆙': ['up', 'button', 'cool'],
  '🆒': ['cool', 'button'],
  '🆕': ['new', 'button'],
  '🆓': ['free', 'button'],
  '0️⃣': ['zero', '0', 'number'],
  '1️⃣': ['one', '1', 'number'],
  '2️⃣': ['two', '2', 'number'],
  '3️⃣': ['three', '3', 'number'],
  '4️⃣': ['four', '4', 'number'],
  '5️⃣': ['five', '5', 'number'],
  '6️⃣': ['six', '6', 'number'],
  '7️⃣': ['seven', '7', 'number'],
  '8️⃣': ['eight', '8', 'number'],
  '9️⃣': ['nine', '9', 'number'],
  '🔟': ['ten', '10', 'number'],
  '🔢': ['1234', 'numbers', 'input'],
  '#️⃣': ['hash', 'hashtag', 'number'],
  '*️⃣': ['asterisk', 'star', 'keycap'],
  '⏏️': ['eject', 'button'],
  '▶️': ['play', 'button', 'forward'],
  '⏸️': ['pause', 'button'],
  '⏯️': ['play pause', 'button'],
  '⏹️': ['stop', 'button'],
  '⏺️': ['record', 'button'],
  '⏭️': ['next', 'track', 'skip'],
  '⏮️': ['previous', 'track', 'skip'],
  '⏩': ['fast forward', 'button'],
  '⏪': ['rewind', 'button', 'fast'],
  '⏫': ['up', 'fast', 'button'],
  '⏬': ['down', 'fast', 'button'],
  '◀️': ['back', 'reverse', 'button'],
  '🔼': ['up', 'button', 'triangle'],
  '🔽': ['down', 'button', 'triangle'],
  '➡️': ['right', 'arrow', 'direction'],
  '⬅️': ['left', 'arrow', 'direction'],
  '⬆️': ['up', 'arrow', 'direction'],
  '⬇️': ['down', 'arrow', 'direction'],
  '↗️': ['up right', 'arrow', 'diagonal'],
  '↘️': ['down right', 'arrow', 'diagonal'],
  '↙️': ['down left', 'arrow', 'diagonal'],
  '↖️': ['up left', 'arrow', 'diagonal'],
  '↕️': ['up down', 'arrow', 'vertical'],
  '↔️': ['left right', 'arrow', 'horizontal'],
  '↪️': ['right curved', 'arrow', 'turn'],
  '↩️': ['left curved', 'arrow', 'return'],
  '⤴️': ['up curved', 'arrow'],
  '⤵️': ['down curved', 'arrow'],
  '🔀': ['shuffle', 'random', 'music'],
  '🔁': ['repeat', 'loop', 'music'],
  '🔂': ['repeat one', 'loop', 'music'],
  '🔄': ['arrows', 'counterclockwise', 'refresh', 'sync'],
  '🔃': ['arrows', 'clockwise', 'refresh'],
  '🎵': ['music', 'note', 'sound'],
  '🎶': ['music', 'notes', 'sound', 'singing'],
  '➕': ['plus', 'add', 'math'],
  '➖': ['minus', 'subtract', 'math'],
  '➗': ['divide', 'division', 'math'],
  '✖️': ['multiply', 'x', 'math'],
  '♾️': ['infinity', 'forever', 'endless'],
  '💲': ['dollar', 'money', 'sign'],
  '💱': ['exchange', 'currency', 'money'],
  '™️': ['trademark', 'tm', 'brand'],
  '©️': ['copyright', 'c', 'legal'],
  '®️': ['registered', 'r', 'brand'],
  '〰️': ['wavy dash', 'line'],
  '➰': ['curly loop', 'line'],
  '➿': ['double curly loop', 'line'],
  '🔚': ['end', 'arrow'],
  '🔙': ['back', 'arrow', 'return'],
  '🔛': ['on', 'arrow', 'mark'],
  '🔝': ['top', 'arrow', 'up'],
  '🔜': ['soon', 'arrow'],
  '✔️': ['check', 'mark', 'done', 'correct'],
  '☑️': ['check box', 'done', 'ballot'],
  '🔘': ['radio button', 'option'],
  '🔴': ['red', 'circle', 'dot'],
  '🟠': ['orange', 'circle', 'dot'],
  '🟡': ['yellow', 'circle', 'dot'],
  '🟢': ['green', 'circle', 'dot'],
  '🔵': ['blue', 'circle', 'dot'],
  '🟣': ['purple', 'circle', 'dot'],
  '⚫': ['black', 'circle', 'dot'],
  '⚪': ['white', 'circle', 'dot'],
  '🟤': ['brown', 'circle', 'dot'],
  '🔺': ['red triangle', 'up'],
  '🔻': ['red triangle', 'down'],
  '🔸': ['orange diamond', 'small'],
  '🔹': ['blue diamond', 'small'],
  '🔶': ['orange diamond', 'large'],
  '🔷': ['blue diamond', 'large'],
  '🔳': ['white square', 'button'],
  '🔲': ['black square', 'button'],
  '▪️': ['black square', 'small'],
  '▫️': ['white square', 'small'],
  '◾': ['black square', 'medium small'],
  '◽': ['white square', 'medium small'],
  '◼️': ['black square', 'medium'],
  '◻️': ['white square', 'medium'],
  '🟥': ['red square'],
  '🟧': ['orange square'],
  '🟨': ['yellow square'],
  '🟩': ['green square'],
  '🟦': ['blue square'],
  '🟪': ['purple square'],
  '⬛': ['black square', 'large'],
  '⬜': ['white square', 'large'],
  '🟫': ['brown square'],
  '🔈': ['speaker', 'low', 'sound'],
  '🔇': ['mute', 'speaker', 'silent'],
  '🔉': ['speaker', 'medium', 'sound'],
  '🔊': ['speaker', 'loud', 'sound', 'volume'],
  '🔔': ['bell', 'notification', 'alert'],
  '🔕': ['bell', 'mute', 'silent', 'no'],
  '📣': ['megaphone', 'announcement', 'cheer'],
  '📢': ['loudspeaker', 'announcement', 'public'],
  '👁️‍🗨️': ['eye speech', 'witness'],
  '💬': ['speech bubble', 'chat', 'talk', 'comment'],
  '💭': ['thought bubble', 'thinking', 'cloud'],
  '🗯️': ['anger bubble', 'mad', 'right'],
  '♠️': ['spade', 'card', 'suit'],
  '♣️': ['club', 'card', 'suit'],
  '♥️': ['heart', 'card', 'suit'],
  '♦️': ['diamond', 'card', 'suit'],
  '🃏': ['joker', 'card', 'wild'],
  '🎴': ['flower card', 'hanafuda', 'japanese'],
  '🀄': ['mahjong', 'red dragon', 'game'],
  '🕐': ['clock', '1', 'one', 'time'],
  '🕑': ['clock', '2', 'two', 'time'],
  '🕒': ['clock', '3', 'three', 'time'],
  '🕓': ['clock', '4', 'four', 'time'],
  '🕔': ['clock', '5', 'five', 'time'],
  '🕕': ['clock', '6', 'six', 'time'],
  '🕖': ['clock', '7', 'seven', 'time'],
  '🕗': ['clock', '8', 'eight', 'time'],
  '🕘': ['clock', '9', 'nine', 'time'],
  '🕙': ['clock', '10', 'ten', 'time'],
  '🕚': ['clock', '11', 'eleven', 'time'],
  '🕛': ['clock', '12', 'twelve', 'time'],
  '🕜': ['clock', '1:30', 'time'],
  '🕝': ['clock', '2:30', 'time'],
  '🕞': ['clock', '3:30', 'time'],
  '🕟': ['clock', '4:30', 'time'],
  '🕠': ['clock', '5:30', 'time'],
  '🕡': ['clock', '6:30', 'time'],
  '🕢': ['clock', '7:30', 'time'],
  '🕣': ['clock', '8:30', 'time'],
  '🕤': ['clock', '9:30', 'time'],
  '🕥': ['clock', '10:30', 'time'],
  '🕦': ['clock', '11:30', 'time'],
  '🕧': ['clock', '12:30', 'time'],

  // Nature (excluding duplicates that exist in other categories)
  '🌸': ['cherry blossom', 'flower', 'spring', 'sakura'],
  '🌹': ['rose', 'flower', 'red', 'love'],
  '🥀': ['wilted', 'flower', 'dead', 'sad'],
  '🌺': ['hibiscus', 'flower', 'tropical'],
  '🌻': ['sunflower', 'flower', 'yellow', 'summer'],
  '🌼': ['blossom', 'flower', 'yellow'],
  '🌷': ['tulip', 'flower', 'spring'],
  '🌱': ['seedling', 'plant', 'grow', 'sprout'],
  '🪴': ['potted plant', 'houseplant', 'green'],
  '🌲': ['evergreen', 'tree', 'pine', 'christmas'],
  '🌳': ['tree', 'deciduous', 'nature'],
  '🌴': ['palm tree', 'tropical', 'beach'],
  '🌵': ['cactus', 'desert', 'plant'],
  '🌾': ['rice', 'plant', 'grain', 'ear'],
  '🌿': ['herb', 'plant', 'green', 'leaf'],
  '☘️': ['shamrock', 'clover', 'irish', 'luck'],
  '🍀': ['four leaf clover', 'luck', 'irish'],
  '🍁': ['maple leaf', 'fall', 'autumn', 'canada'],
  '🍂': ['fallen leaf', 'autumn', 'fall'],
  '🍃': ['leaf', 'wind', 'blow', 'flutter'],
  '🍄': ['mushroom', 'fungus', 'toadstool'],
  '🌍': ['earth', 'globe', 'europe', 'africa', 'world'],
  '🌎': ['earth', 'globe', 'americas', 'world'],
  '🌏': ['earth', 'globe', 'asia', 'australia', 'world'],
  '🪨': ['rock', 'stone', 'boulder'],
  '🌑': ['new moon', 'dark', 'night'],
  '🌒': ['waxing crescent', 'moon', 'night'],
  '🌓': ['first quarter', 'moon', 'night'],
  '🌔': ['waxing gibbous', 'moon', 'night'],
  '🌕': ['full moon', 'night', 'bright'],
  '🌖': ['waning gibbous', 'moon', 'night'],
  '🌗': ['last quarter', 'moon', 'night'],
  '🌘': ['waning crescent', 'moon', 'night'],
  '🌙': ['crescent moon', 'night', 'sleep'],
  '🌚': ['new moon face', 'night', 'creepy'],
  '🌛': ['first quarter face', 'moon', 'night'],
  '🌜': ['last quarter face', 'moon', 'night'],
  '☀️': ['sun', 'sunny', 'bright', 'weather', 'hot'],
  '🌝': ['full moon face', 'night'],
  '🌞': ['sun face', 'sunny', 'bright'],
  '🪐': ['planet', 'saturn', 'ring', 'space'],
  '⭐': ['star', 'night', 'favorite'],
  '🌟': ['star', 'glowing', 'sparkle', 'shine'],
  '🌠': ['shooting star', 'night', 'wish'],
  '🌌': ['milky way', 'galaxy', 'space', 'stars'],
  '☁️': ['cloud', 'weather', 'sky'],
  '⛅': ['partly cloudy', 'sun', 'weather'],
  '⛈️': ['cloud', 'lightning', 'rain', 'storm', 'thunder'],
  '🌤️': ['sun', 'cloud', 'small', 'weather'],
  '🌥️': ['sun', 'cloud', 'large', 'weather'],
  '🌦️': ['sun', 'cloud', 'rain', 'weather'],
  '🌧️': ['cloud', 'rain', 'weather'],
  '🌨️': ['cloud', 'snow', 'weather', 'winter'],
  '🌩️': ['cloud', 'lightning', 'weather', 'storm'],
  '🌪️': ['tornado', 'cloud', 'weather', 'twister'],
  '🌫️': ['fog', 'cloud', 'weather', 'mist'],
  '🌬️': ['wind', 'blow', 'face', 'weather'],
  '🌈': ['rainbow', 'sky', 'weather', 'pride'],
  '🌂': ['umbrella', 'closed', 'rain'],
  '☂️': ['umbrella', 'open', 'rain'],
  '☔': ['umbrella', 'rain', 'drops', 'weather'],
  '⚡': ['lightning', 'bolt', 'electric', 'zap', 'thunder'],
  '❄️': ['snowflake', 'snow', 'winter', 'cold'],
  '☃️': ['snowman', 'winter', 'snow', 'cold'],
  '⛄': ['snowman', 'without snow', 'winter'],
  '☄️': ['comet', 'space', 'meteor'],
  '🔥': ['fire', 'flame', 'hot', 'lit', 'burn'],
  '💧': ['droplet', 'water', 'tear', 'sweat'],
  '🌊': ['wave', 'ocean', 'sea', 'water', 'surf'],
}

const EMOJI_CATEGORIES: Record<Category, string[]> = {
  'People': ['😀', '😃', '😄', '😁', '😆', '😅', '🤣', '😂', '🙂', '🙃', '😉', '😊', '😇', '🥰', '😍', '🤩', '😘', '😗', '😚', '😙', '🥲', '😋', '😛', '😜', '🤪', '😝', '🤑', '🤗', '🤭', '🤫', '🤔', '🤐', '🤨', '😐', '😑', '😶', '😏', '😒', '🙄', '😬', '🤥', '😌', '😔', '😪', '🤤', '😴', '😷', '🤒', '🤕', '🤢', '🤮', '🤧', '🥵', '🥶', '🥴', '😵', '🤯', '🤠', '🥳', '🥸', '😎', '🤓', '🧐', '😕', '😟', '🙁', '😮', '😯', '😲', '😳', '🥺', '😦', '😧', '😨', '😰', '😥', '😢', '😭', '😱', '😖', '😣', '😞', '😓', '😩', '😫', '🥱', '😤', '😡', '😠', '🤬', '😈', '👿', '💀', '☠️', '💩', '🤡', '👹', '👺', '👻', '👽', '👾', '🤖'],
  'Gestures': ['👋', '🤚', '🖐️', '✋', '🖖', '👌', '🤌', '🤏', '✌️', '🤞', '🤟', '🤘', '🤙', '👈', '👉', '👆', '🖕', '👇', '☝️', '👍', '👎', '✊', '👊', '🤛', '🤜', '👏', '🙌', '👐', '🤲', '🤝', '🙏', '✍️', '💅', '🤳', '💪', '🦾', '🦿', '🦵', '🦶', '👂', '🦻', '👃', '🧠', '🫀', '🫁', '🦷', '🦴', '👀', '👁️', '👅', '👄'],
  'Animals': ['🐶', '🐱', '🐭', '🐹', '🐰', '🦊', '🐻', '🐼', '🐻‍❄️', '🐨', '🐯', '🦁', '🐮', '🐷', '🐸', '🐵', '🙈', '🙉', '🙊', '🐒', '🐔', '🐧', '🐦', '🐤', '🐣', '🐥', '🦆', '🦅', '🦉', '🦇', '🐺', '🐗', '🐴', '🦄', '🐝', '🪱', '🐛', '🦋', '🐌', '🐞', '🐜', '🪰', '🪲', '🪳', '🦟', '🦗', '🕷️', '🦂', '🐢', '🐍', '🦎', '🦖', '🦕', '🐙', '🦑', '🦐', '🦞', '🦀', '🐡', '🐠', '🐟', '🐬', '🐳', '🐋', '🦈', '🐊', '🐅', '🐆', '🦓', '🦍', '🦧', '🦣', '🐘', '🦛', '🦏', '🐪', '🐫', '🦒', '🦘', '🦬', '🐃', '🐂', '🐄', '🐎', '🐖', '🐏', '🐑', '🦙', '🐐', '🦌', '🐕', '🐩', '🦮', '🐕‍🦺', '🐈', '🐈‍⬛', '🪶', '🐓', '🦃', '🦤', '🦚', '🦜', '🦢', '🦩', '🕊️', '🐇', '🦝', '🦨', '🦡', '🦫', '🦦', '🦥', '🐁', '🐀', '🐿️', '🦔'],
  'Food': ['🍎', '🍐', '🍊', '🍋', '🍌', '🍉', '🍇', '🍓', '🫐', '🍈', '🍒', '🍑', '🥭', '🍍', '🥥', '🥝', '🍅', '🍆', '🥑', '🥦', '🥬', '🥒', '🌶️', '🫑', '🌽', '🥕', '🫒', '🧄', '🧅', '🥔', '🍠', '🥐', '🥯', '🍞', '🥖', '🥨', '🧀', '🥚', '🍳', '🧈', '🥞', '🧇', '🥓', '🥩', '🍗', '🍖', '🦴', '🌭', '🍔', '🍟', '🍕', '🫓', '🥪', '🥙', '🧆', '🌮', '🌯', '🫔', '🥗', '🥘', '🫕', '🥫', '🍝', '🍜', '🍲', '🍛', '🍣', '🍱', '🥟', '🦪', '🍤', '🍙', '🍚', '🍘', '🍥', '🥠', '🥮', '🍢', '🍡', '🍧', '🍨', '🍦', '🥧', '🧁', '🍰', '🎂', '🍮', '🍭', '🍬', '🍫', '🍿', '🍩', '🍪', '🌰', '🥜', '🍯', '🥛', '🍼', '🫖', '☕', '🍵', '🧃', '🥤', '🧋', '🍶', '🍺', '🍻', '🥂', '🍷', '🥃', '🍸', '🍹', '🧉', '🍾', '🧊'],
  'Activities': ['⚽', '🏀', '🏈', '⚾', '🥎', '🎾', '🏐', '🏉', '🥏', '🎱', '🪀', '🏓', '🏸', '🏒', '🏑', '🥍', '🏏', '🪃', '🥅', '⛳', '🪁', '🏹', '🎣', '🤿', '🥊', '🥋', '🎽', '🛹', '🛼', '🛷', '⛸️', '🥌', '🎿', '⛷️', '🏂', '🪂', '🏋️', '🤼', '🤸', '⛹️', '🤺', '🤾', '🏌️', '🏇', '🧘', '🏄', '🏊', '🤽', '🚣', '🧗', '🚵', '🚴', '🏆', '🥇', '🥈', '🥉', '🏅', '🎖️', '🏵️', '🎗️', '🎫', '🎟️', '🎪', '🎭', '🎨', '🎬', '🎤', '🎧', '🎼', '🎹', '🥁', '🪘', '🎷', '🎺', '🪗', '🎸', '🪕', '🎻', '🎲', '♟️', '🎯', '🎳', '🎮', '🎰', '🧩'],
  'Travel': ['🚗', '🚕', '🚙', '🚌', '🚎', '🏎️', '🚓', '🚑', '🚒', '🚐', '🛻', '🚚', '🚛', '🚜', '🦯', '🦽', '🦼', '🛴', '🚲', '🛵', '🏍️', '🛺', '🚨', '🚔', '🚍', '🚘', '🚖', '🚡', '🚠', '🚟', '🚃', '🚋', '🚞', '🚝', '🚄', '🚅', '🚈', '🚂', '🚆', '🚇', '🚊', '🚉', '✈️', '🛫', '🛬', '🛩️', '💺', '🛰️', '🚀', '🛸', '🚁', '🛶', '⛵', '🚤', '🛥️', '🛳️', '⛴️', '🚢', '⚓', '🪝', '⛽', '🚧', '🚦', '🚥', '🚏', '🗺️', '🗿', '🗽', '🗼', '🏰', '🏯', '🏟️', '🎡', '🎢', '🎠', '⛲', '⛱️', '🏖️', '🏝️', '🏜️', '🌋', '⛰️', '🏔️', '🗻', '🏕️', '⛺', '🛖', '🏠', '🏡', '🏘️', '🏚️', '🏗️', '🏭', '🏢', '🏬', '🏣', '🏤', '🏥', '🏦', '🏨', '🏪', '🏫', '🏩', '💒', '🏛️', '⛪', '🕌', '🕍', '🛕', '🕋', '⛩️'],
  'Objects': ['⌚', '📱', '📲', '💻', '⌨️', '🖥️', '🖨️', '🖱️', '🖲️', '🕹️', '🗜️', '💽', '💾', '💿', '📀', '📼', '📷', '📸', '📹', '🎥', '📽️', '🎞️', '📞', '☎️', '📟', '📠', '📺', '📻', '🎙️', '🎚️', '🎛️', '🧭', '⏱️', '⏲️', '⏰', '🕰️', '⌛', '⏳', '📡', '🔋', '🔌', '💡', '🔦', '🕯️', '🪔', '🧯', '🛢️', '💸', '💵', '💴', '💶', '💷', '🪙', '💰', '💳', '💎', '⚖️', '🪜', '🧰', '🪛', '🔧', '🔨', '⚒️', '🛠️', '⛏️', '🪚', '🔩', '⚙️', '🪤', '🧱', '⛓️', '🧲', '🔫', '💣', '🧨', '🪓', '🔪', '🗡️', '⚔️', '🛡️', '🚬', '⚰️', '🪦', '⚱️', '🏺', '🔮', '📿', '🧿', '💈', '⚗️', '🔭', '🔬', '🕳️', '🩹', '🩺', '💊', '💉', '🩸', '🧬', '🦠', '🧫', '🧪'],
  'Symbols': ['❤️', '🧡', '💛', '💚', '💙', '💜', '🖤', '🤍', '🤎', '💔', '❣️', '💕', '💞', '💓', '💗', '💖', '💘', '💝', '💟', '☮️', '✝️', '☪️', '🕉️', '☸️', '✡️', '🔯', '🕎', '☯️', '☦️', '🛐', '⛎', '♈', '♉', '♊', '♋', '♌', '♍', '♎', '♏', '♐', '♑', '♒', '♓', '🆔', '⚛️', '🉑', '☢️', '☣️', '📴', '📳', '🈶', '🈚', '🈸', '🈺', '🈷️', '✴️', '🆚', '💮', '🉐', '㊙️', '㊗️', '🈴', '🈵', '🈹', '🈲', '🅰️', '🅱️', '🆎', '🆑', '🅾️', '🆘', '❌', '⭕', '🛑', '⛔', '📛', '🚫', '💯', '💢', '♨️', '🚷', '🚯', '🚳', '🚱', '🔞', '📵', '🚭', '❗', '❕', '❓', '❔', '‼️', '⁉️', '🔅', '🔆', '〽️', '⚠️', '🚸', '🔱', '⚜️', '🔰', '♻️', '✅', '🈯', '💹', '❇️', '✳️', '❎', '🌐', '💠', 'Ⓜ️', '🌀', '💤', '🏧', '🚾', '♿', '🅿️', '🛗', '🈳', '🈂️', '🛂', '🛃', '🛄', '🛅', '🚹', '🚺', '🚼', '⚧️', '🚻', '🚮', '🎦', '📶', '🈁', '🔣', 'ℹ️', '🔤', '🔡', '🔠', '🆖', '🆗', '🆙', '🆒', '🆕', '🆓', '0️⃣', '1️⃣', '2️⃣', '3️⃣', '4️⃣', '5️⃣', '6️⃣', '7️⃣', '8️⃣', '9️⃣', '🔟', '🔢', '#️⃣', '*️⃣', '⏏️', '▶️', '⏸️', '⏯️', '⏹️', '⏺️', '⏭️', '⏮️', '⏩', '⏪', '⏫', '⏬', '◀️', '🔼', '🔽', '➡️', '⬅️', '⬆️', '⬇️', '↗️', '↘️', '↙️', '↖️', '↕️', '↔️', '↪️', '↩️', '⤴️', '⤵️', '🔀', '🔁', '🔂', '🔄', '🔃', '🎵', '🎶', '➕', '➖', '➗', '✖️', '♾️', '💲', '💱', '™️', '©️', '®️', '〰️', '➰', '➿', '🔚', '🔙', '🔛', '🔝', '🔜', '✔️', '☑️', '🔘', '🔴', '🟠', '🟡', '🟢', '🔵', '🟣', '⚫', '⚪', '🟤', '🔺', '🔻', '🔸', '🔹', '🔶', '🔷', '🔳', '🔲', '▪️', '▫️', '◾', '◽', '◼️', '◻️', '🟥', '🟧', '🟨', '🟩', '🟦', '🟪', '⬛', '⬜', '🟫', '🔈', '🔇', '🔉', '🔊', '🔔', '🔕', '📣', '📢', '👁️‍🗨️', '💬', '💭', '🗯️', '♠️', '♣️', '♥️', '♦️', '🃏', '🎴', '🀄', '🕐', '🕑', '🕒', '🕓', '🕔', '🕕', '🕖', '🕗', '🕘', '🕙', '🕚', '🕛', '🕜', '🕝', '🕞', '🕟', '🕠', '🕡', '🕢', '🕣', '🕤', '🕥', '🕦', '🕧'],
  'Nature': ['🌸', '💮', '🏵️', '🌹', '🥀', '🌺', '🌻', '🌼', '🌷', '🌱', '🪴', '🌲', '🌳', '🌴', '🌵', '🌾', '🌿', '☘️', '🍀', '🍁', '🍂', '🍃', '🍄', '🌰', '🦀', '🦞', '🦐', '🦑', '🌍', '🌎', '🌏', '🌐', '🪨', '🌑', '🌒', '🌓', '🌔', '🌕', '🌖', '🌗', '🌘', '🌙', '🌚', '🌛', '🌜', '☀️', '🌝', '🌞', '🪐', '⭐', '🌟', '🌠', '🌌', '☁️', '⛅', '⛈️', '🌤️', '🌥️', '🌦️', '🌧️', '🌨️', '🌩️', '🌪️', '🌫️', '🌬️', '🌀', '🌈', '🌂', '☂️', '☔', '⛱️', '⚡', '❄️', '☃️', '⛄', '☄️', '🔥', '💧', '🌊'],
}

let selectedCategory: Category = 'People'
let onSelectCallback: ((emoji: string) => void) | null = null
let searchQuery = ''

const Container = define('EmojiPickerContainer', {
  display: 'flex',
  flexDirection: 'column',
  gap: 12,
})

const SearchInput = define('EmojiSearchInput', {
  base: 'input',
  width: '100%',
  padding: '8px 12px',
  fontSize: 14,
  border: `1px solid ${theme('colors-border')}`,
  borderRadius: theme('radius-md'),
  background: theme('colors-bg'),
  color: theme('colors-text'),
  outline: 'none',
  selectors: {
    '&:focus': { borderColor: theme('colors-primary') },
    '&::placeholder': { color: theme('colors-textMuted') },
  },
})

const EmojiGrid = define('EmojiGrid', {
  display: 'grid',
  gridTemplateColumns: 'repeat(10, 1fr)',
  gap: 4,
  overflow: 'auto',
  alignContent: 'start',
  height: 280,
})

const TabBar = define('EmojiTabBar', {
  display: 'flex',
  justifyContent: 'center',
  gap: 4,
  paddingTop: 12,
  borderTop: `1px solid ${theme('colors-border')}`,
  marginTop: 'auto',
})

const TabButton = define('EmojiTabButton', {
  base: 'button',
  padding: '8px 10px',
  background: 'none',
  border: 'none',
  borderRadius: theme('radius-md'),
  cursor: 'pointer',
  fontSize: 18,
  lineHeight: 1,
  opacity: 0.5,
  selectors: {
    '&:hover': { opacity: 0.8, background: theme('colors-bgHover') },
  },
  variants: {
    active: { opacity: 1, background: theme('colors-bgSelected') },
  },
})

const EmojiButton = define('EmojiButton', {
  base: 'button',
  padding: 6,
  background: 'none',
  border: 'none',
  borderRadius: theme('radius-md'),
  cursor: 'pointer',
  fontSize: 22,
  lineHeight: 1,
  selectors: {
    '&:hover': { background: theme('colors-bgHover') },
  },
})

const getEmojis = (): string[] => {
  if (searchQuery.trim()) {
    const query = searchQuery.toLowerCase()
    const allEmojis = Object.values(EMOJI_CATEGORIES).flat()
    return [...new Set(allEmojis)].filter(emoji => {
      const keywords = EMOJI_KEYWORDS[emoji] || []
      return keywords.some(keyword => keyword.includes(query)) || emoji.includes(query)
    })
  }
  return EMOJI_CATEGORIES[selectedCategory]
}

const EmojiResults = () => {
  const emojis = getEmojis()
  return (
    <>
      {emojis.map((emoji, i) => (
        <EmojiButton key={i} onClick={() => handleSelect(emoji)}>
          {emoji}
        </EmojiButton>
      ))}
    </>
  )
}

const updateSearch = (query: string) => {
  searchQuery = query
  update('#emoji-results', <EmojiResults />)
}

const selectCategory = (category: Category) => {
  selectedCategory = category
  searchQuery = ''
  // Clear the search input
  const input = document.getElementById('emoji-search') as HTMLInputElement
  if (input) input.value = ''
  update()
}

const handleSelect = (emoji: string) => {
  onSelectCallback?.(emoji)
  closeModal()
}

const CATEGORIES: Category[] = ['People', 'Gestures', 'Animals', 'Food', 'Activities', 'Travel', 'Objects', 'Symbols', 'Nature']

const EmojiPickerContent = define('EmojiPickerContent', {
  render() {
    const isSearching = searchQuery.trim().length > 0

    return (
      <Container>
        <SearchInput
          id="emoji-search"
          type="text"
          placeholder="Search emojis... (e.g. dice, heart, cat)"
          value={searchQuery}
          onInput={(e: Event) => updateSearch((e.target as HTMLInputElement).value)}
          autofocus
        />

        <EmojiGrid id="emoji-results">
          <EmojiResults />
        </EmojiGrid>

        {!isSearching && (
          <TabBar>
            {CATEGORIES.map(cat => (
              <TabButton
                key={cat}
                active={cat === selectedCategory ? true : undefined}
                onClick={() => selectCategory(cat)}
                title={cat}
              >
                {CATEGORY_ICONS[cat]}
              </TabButton>
            ))}
          </TabBar>
        )}
      </Container>
    )
  }
})

export const openEmojiPicker = (onSelect: (emoji: string) => void) => {
  selectedCategory = 'People'
  searchQuery = ''
  onSelectCallback = onSelect
  openModal('Choose Emoji', () => <EmojiPickerContent />)
}
