/// <cts-enable />
/**
 * Emoji Picker Pattern - Reusable pattern for emoji selection
 *
 * Uses ct-autocomplete for efficient searching through ~250 emojis.
 * Each emoji has comprehensive search aliases including slang terms.
 */
import {
  type Cell,
  computed,
  type Default,
  handler,
  NAME,
  recipe,
  UI,
} from "commontools";
import type { ModuleMetadata } from "./container-protocol.ts";

// ===== Self-Describing Metadata =====
export const MODULE_METADATA: ModuleMetadata = {
  type: "emoji-picker",
  label: "Emoji Picker",
  icon: "\u{1F600}", // 😀
  internal: true,
  schema: {
    selectedEmoji: { type: "string", description: "Selected emoji character" },
  },
  fieldMapping: ["selectedEmoji"],
};

// ===== Types =====
export interface EmojiPickerInput {
  selectedEmoji: Default<string, "">;
}

interface AutocompleteItem {
  value: string;
  label: string;
  group?: string;
  searchAliases?: string[];
}

// Comprehensive emoji list with short labels and extensive search aliases
const EMOJI_ITEMS: AutocompleteItem[] = [
  // ===== SMILEYS & EMOTION =====
  {
    value: "😀",
    label: "😀 Grin",
    group: "Faces",
    searchAliases: ["grin", "happy", "smile", "cheerful"],
  },
  {
    value: "😃",
    label: "😃 Smile",
    group: "Faces",
    searchAliases: ["smile", "happy", "joy", "excited"],
  },
  {
    value: "😄",
    label: "😄 Laugh",
    group: "Faces",
    searchAliases: ["laugh", "happy", "haha", "lol"],
  },
  {
    value: "😁",
    label: "😁 Beam",
    group: "Faces",
    searchAliases: ["beam", "grin", "teeth", "happy"],
  },
  {
    value: "😅",
    label: "😅 Sweat Smile",
    group: "Faces",
    searchAliases: ["sweat", "nervous", "relief", "phew", "awkward"],
  },
  {
    value: "😂",
    label: "😂 Tears of Joy",
    group: "Faces",
    searchAliases: [
      "lol",
      "lmao",
      "crying",
      "laughing",
      "funny",
      "hilarious",
      "haha",
    ],
  },
  {
    value: "🤣",
    label: "🤣 ROFL",
    group: "Faces",
    searchAliases: [
      "rofl",
      "lmao",
      "lol",
      "rolling",
      "floor",
      "laughing",
      "hilarious",
      "dying",
    ],
  },
  {
    value: "😊",
    label: "😊 Blush",
    group: "Faces",
    searchAliases: ["blush", "shy", "happy", "cute", "aww"],
  },
  {
    value: "😇",
    label: "😇 Angel",
    group: "Faces",
    searchAliases: ["angel", "innocent", "halo", "good", "blessed"],
  },
  {
    value: "🙂",
    label: "🙂 Slight Smile",
    group: "Faces",
    searchAliases: ["smile", "okay", "fine", "neutral", "polite"],
  },
  {
    value: "🙃",
    label: "🙃 Upside Down",
    group: "Faces",
    searchAliases: ["upside", "sarcasm", "silly", "goofy", "ironic"],
  },
  {
    value: "😉",
    label: "😉 Wink",
    group: "Faces",
    searchAliases: ["wink", "flirt", "playful", "joke", "hint"],
  },
  {
    value: "😌",
    label: "😌 Relieved",
    group: "Faces",
    searchAliases: ["relieved", "peaceful", "calm", "content", "zen"],
  },
  {
    value: "😍",
    label: "😍 Heart Eyes",
    group: "Faces",
    searchAliases: ["love", "heart", "eyes", "crush", "adore", "obsessed"],
  },
  {
    value: "🥰",
    label: "🥰 Love Face",
    group: "Faces",
    searchAliases: ["love", "hearts", "adore", "affection", "smitten"],
  },
  {
    value: "😘",
    label: "😘 Kiss",
    group: "Faces",
    searchAliases: ["kiss", "love", "mwah", "xoxo", "smooch"],
  },
  {
    value: "😗",
    label: "😗 Kissing",
    group: "Faces",
    searchAliases: ["kiss", "whistle", "smooch"],
  },
  {
    value: "😙",
    label: "😙 Kiss Smile",
    group: "Faces",
    searchAliases: ["kiss", "smile", "happy"],
  },
  {
    value: "😚",
    label: "😚 Kiss Blush",
    group: "Faces",
    searchAliases: ["kiss", "blush", "shy", "love"],
  },
  {
    value: "😋",
    label: "😋 Yummy",
    group: "Faces",
    searchAliases: ["yummy", "delicious", "tasty", "tongue", "food"],
  },
  {
    value: "😛",
    label: "😛 Tongue",
    group: "Faces",
    searchAliases: ["tongue", "playful", "silly", "blep"],
  },
  {
    value: "😜",
    label: "😜 Wink Tongue",
    group: "Faces",
    searchAliases: ["wink", "tongue", "crazy", "silly", "goofy"],
  },
  {
    value: "🤪",
    label: "🤪 Zany",
    group: "Faces",
    searchAliases: ["zany", "crazy", "wild", "silly", "goofy", "weird"],
  },
  {
    value: "😝",
    label: "😝 Squint Tongue",
    group: "Faces",
    searchAliases: ["tongue", "squint", "silly", "gross"],
  },
  {
    value: "🤑",
    label: "🤑 Money Face",
    group: "Faces",
    searchAliases: ["money", "rich", "dollar", "cash", "cha-ching", "greedy"],
  },
  {
    value: "🤗",
    label: "🤗 Hug",
    group: "Faces",
    searchAliases: ["hug", "embrace", "warm", "welcome", "jazz hands"],
  },
  {
    value: "🤭",
    label: "🤭 Oops",
    group: "Faces",
    searchAliases: ["oops", "giggle", "tee-hee", "shy", "cover"],
  },
  {
    value: "🤫",
    label: "🤫 Shush",
    group: "Faces",
    searchAliases: ["shush", "quiet", "secret", "hush", "shhh"],
  },
  {
    value: "🤔",
    label: "🤔 Think",
    group: "Faces",
    searchAliases: ["think", "hmm", "consider", "wonder", "ponder", "curious"],
  },
  {
    value: "🤐",
    label: "🤐 Zipper",
    group: "Faces",
    searchAliases: ["zipper", "quiet", "secret", "lips sealed", "mum"],
  },
  {
    value: "🤨",
    label: "🤨 Raised Brow",
    group: "Faces",
    searchAliases: ["eyebrow", "skeptical", "doubt", "suspicious", "really"],
  },
  {
    value: "😐",
    label: "😐 Neutral",
    group: "Faces",
    searchAliases: ["neutral", "meh", "blank", "poker face", "indifferent"],
  },
  {
    value: "😑",
    label: "😑 Expressionless",
    group: "Faces",
    searchAliases: ["expressionless", "blank", "annoyed", "done", "over it"],
  },
  {
    value: "😶",
    label: "😶 No Mouth",
    group: "Faces",
    searchAliases: ["silent", "speechless", "no words", "quiet"],
  },
  {
    value: "😏",
    label: "😏 Smirk",
    group: "Faces",
    searchAliases: ["smirk", "smug", "flirt", "sly", "suggestive"],
  },
  {
    value: "😒",
    label: "😒 Unamused",
    group: "Faces",
    searchAliases: ["unamused", "meh", "bored", "annoyed", "side eye"],
  },
  {
    value: "🙄",
    label: "🙄 Eye Roll",
    group: "Faces",
    searchAliases: [
      "eye roll",
      "whatever",
      "annoyed",
      "ugh",
      "sarcasm",
      "really",
    ],
  },
  {
    value: "😬",
    label: "😬 Grimace",
    group: "Faces",
    searchAliases: ["grimace", "awkward", "yikes", "cringe", "nervous", "eek"],
  },
  {
    value: "🤥",
    label: "🤥 Lying",
    group: "Faces",
    searchAliases: ["lying", "pinocchio", "liar", "dishonest"],
  },
  {
    value: "😔",
    label: "😔 Pensive",
    group: "Faces",
    searchAliases: ["sad", "pensive", "disappointed", "sorry", "regret"],
  },
  {
    value: "😪",
    label: "😪 Sleepy",
    group: "Faces",
    searchAliases: ["sleepy", "tired", "bored", "snore"],
  },
  {
    value: "🤤",
    label: "🤤 Drool",
    group: "Faces",
    searchAliases: ["drool", "hungry", "want", "delicious", "yum"],
  },
  {
    value: "😴",
    label: "😴 Sleep",
    group: "Faces",
    searchAliases: ["sleep", "zzz", "tired", "nap", "bed", "snore"],
  },
  {
    value: "😷",
    label: "😷 Mask",
    group: "Faces",
    searchAliases: ["mask", "sick", "covid", "doctor", "ill", "health"],
  },
  {
    value: "🤒",
    label: "🤒 Sick",
    group: "Faces",
    searchAliases: ["sick", "fever", "ill", "thermometer", "unwell"],
  },
  {
    value: "🤕",
    label: "🤕 Hurt",
    group: "Faces",
    searchAliases: ["hurt", "injury", "bandage", "ouch", "pain"],
  },
  {
    value: "🤢",
    label: "🤢 Nauseous",
    group: "Faces",
    searchAliases: ["nauseous", "sick", "gross", "disgusted", "green"],
  },
  {
    value: "🤮",
    label: "🤮 Vomit",
    group: "Faces",
    searchAliases: ["vomit", "puke", "sick", "gross", "barf"],
  },
  {
    value: "🥵",
    label: "🥵 Hot",
    group: "Faces",
    searchAliases: ["hot", "heat", "sweating", "summer", "fever"],
  },
  {
    value: "🥶",
    label: "🥶 Cold",
    group: "Faces",
    searchAliases: ["cold", "freezing", "ice", "winter", "brr"],
  },
  {
    value: "🥴",
    label: "🥴 Woozy",
    group: "Faces",
    searchAliases: ["woozy", "drunk", "dizzy", "tipsy", "confused"],
  },
  {
    value: "😵",
    label: "😵 Dizzy",
    group: "Faces",
    searchAliases: ["dizzy", "dead", "knocked out", "shocked", "overwhelmed"],
  },
  {
    value: "🤯",
    label: "🤯 Mind Blown",
    group: "Faces",
    searchAliases: [
      "mind blown",
      "explode",
      "shocked",
      "amazed",
      "wow",
      "whoa",
    ],
  },
  {
    value: "🤠",
    label: "🤠 Cowboy",
    group: "Faces",
    searchAliases: ["cowboy", "yeehaw", "western", "hat", "country"],
  },
  {
    value: "🥳",
    label: "🥳 Party",
    group: "Faces",
    searchAliases: [
      "party",
      "celebrate",
      "birthday",
      "woohoo",
      "congrats",
      "yay",
    ],
  },
  {
    value: "🥸",
    label: "🥸 Disguise",
    group: "Faces",
    searchAliases: ["disguise", "incognito", "glasses", "mustache", "spy"],
  },
  {
    value: "😎",
    label: "😎 Cool",
    group: "Faces",
    searchAliases: ["cool", "sunglasses", "awesome", "chill", "boss", "swag"],
  },
  {
    value: "🤓",
    label: "🤓 Nerd",
    group: "Faces",
    searchAliases: ["nerd", "geek", "glasses", "smart", "study"],
  },
  {
    value: "🧐",
    label: "🧐 Monocle",
    group: "Faces",
    searchAliases: ["monocle", "inspect", "hmm", "curious", "detective"],
  },
  {
    value: "😕",
    label: "😕 Confused",
    group: "Faces",
    searchAliases: ["confused", "unsure", "puzzled", "huh"],
  },
  {
    value: "😟",
    label: "😟 Worried",
    group: "Faces",
    searchAliases: ["worried", "concerned", "anxious", "nervous"],
  },
  {
    value: "🙁",
    label: "🙁 Frown",
    group: "Faces",
    searchAliases: ["frown", "sad", "unhappy", "disappointed"],
  },
  {
    value: "☹️",
    label: "☹️ Sad",
    group: "Faces",
    searchAliases: ["sad", "frown", "unhappy", "upset"],
  },
  {
    value: "😮",
    label: "😮 Open Mouth",
    group: "Faces",
    searchAliases: ["surprised", "wow", "oh", "gasp"],
  },
  {
    value: "😯",
    label: "😯 Hushed",
    group: "Faces",
    searchAliases: ["hushed", "surprised", "stunned", "speechless"],
  },
  {
    value: "😲",
    label: "😲 Astonished",
    group: "Faces",
    searchAliases: ["astonished", "shocked", "wow", "omg"],
  },
  {
    value: "😳",
    label: "😳 Flushed",
    group: "Faces",
    searchAliases: ["flushed", "embarrassed", "shy", "blush", "awkward"],
  },
  {
    value: "🥺",
    label: "🥺 Pleading",
    group: "Faces",
    searchAliases: ["pleading", "puppy eyes", "please", "beg", "cute", "uwu"],
  },
  {
    value: "😦",
    label: "😦 Frowning",
    group: "Faces",
    searchAliases: ["frown", "surprised", "oh no"],
  },
  {
    value: "😧",
    label: "😧 Anguished",
    group: "Faces",
    searchAliases: ["anguished", "worried", "shocked"],
  },
  {
    value: "😨",
    label: "😨 Fearful",
    group: "Faces",
    searchAliases: ["fear", "scared", "worried", "anxious"],
  },
  {
    value: "😰",
    label: "😰 Anxious",
    group: "Faces",
    searchAliases: ["anxious", "nervous", "sweat", "worried", "stressed"],
  },
  {
    value: "😥",
    label: "😥 Sad Sweat",
    group: "Faces",
    searchAliases: ["sad", "disappointed", "relieved", "sweat"],
  },
  {
    value: "😢",
    label: "😢 Cry",
    group: "Faces",
    searchAliases: ["cry", "sad", "tear", "upset", "emotional"],
  },
  {
    value: "😭",
    label: "😭 Sob",
    group: "Faces",
    searchAliases: ["sob", "crying", "tears", "sad", "bawling", "emotional"],
  },
  {
    value: "😱",
    label: "😱 Scream",
    group: "Faces",
    searchAliases: ["scream", "scared", "horror", "omg", "shock", "fear"],
  },
  {
    value: "😖",
    label: "😖 Confounded",
    group: "Faces",
    searchAliases: ["confounded", "frustrated", "upset"],
  },
  {
    value: "😣",
    label: "😣 Persevere",
    group: "Faces",
    searchAliases: ["persevere", "struggle", "frustrated", "determined"],
  },
  {
    value: "😞",
    label: "😞 Disappointed",
    group: "Faces",
    searchAliases: ["disappointed", "sad", "let down", "bummed"],
  },
  {
    value: "😓",
    label: "😓 Downcast",
    group: "Faces",
    searchAliases: ["downcast", "sad", "sweat", "hard work"],
  },
  {
    value: "😩",
    label: "😩 Weary",
    group: "Faces",
    searchAliases: ["weary", "tired", "exhausted", "done", "over it"],
  },
  {
    value: "😫",
    label: "😫 Tired",
    group: "Faces",
    searchAliases: ["tired", "exhausted", "frustrated", "ugh"],
  },
  {
    value: "🥱",
    label: "🥱 Yawn",
    group: "Faces",
    searchAliases: ["yawn", "tired", "sleepy", "bored", "boring"],
  },
  {
    value: "😤",
    label: "😤 Huff",
    group: "Faces",
    searchAliases: ["huff", "angry", "frustrated", "triumph", "proud", "steam"],
  },
  {
    value: "😡",
    label: "😡 Angry",
    group: "Faces",
    searchAliases: ["angry", "mad", "rage", "furious", "upset", "pissed"],
  },
  {
    value: "😠",
    label: "😠 Mad",
    group: "Faces",
    searchAliases: ["mad", "angry", "grumpy", "annoyed"],
  },
  {
    value: "🤬",
    label: "🤬 Cursing",
    group: "Faces",
    searchAliases: ["cursing", "swear", "angry", "censored", "wtf", "damn"],
  },
  {
    value: "😈",
    label: "😈 Devil",
    group: "Faces",
    searchAliases: ["devil", "evil", "mischief", "naughty", "horns"],
  },
  {
    value: "👿",
    label: "👿 Angry Devil",
    group: "Faces",
    searchAliases: ["devil", "angry", "evil", "demon"],
  },
  {
    value: "💀",
    label: "💀 Skull",
    group: "Faces",
    searchAliases: ["skull", "dead", "death", "dying", "i'm dead", "lol"],
  },
  {
    value: "☠️",
    label: "☠️ Crossbones",
    group: "Faces",
    searchAliases: ["skull", "death", "danger", "poison", "pirate"],
  },
  {
    value: "💩",
    label: "💩 Poop",
    group: "Faces",
    searchAliases: ["poop", "poo", "crap", "shit", "turd", "silly"],
  },
  {
    value: "🤡",
    label: "🤡 Clown",
    group: "Faces",
    searchAliases: ["clown", "joker", "circus", "fool", "silly"],
  },
  {
    value: "👹",
    label: "👹 Ogre",
    group: "Faces",
    searchAliases: ["ogre", "monster", "demon", "scary", "japanese"],
  },
  {
    value: "👺",
    label: "👺 Goblin",
    group: "Faces",
    searchAliases: ["goblin", "monster", "tengu", "japanese", "mask"],
  },
  {
    value: "👻",
    label: "👻 Ghost",
    group: "Faces",
    searchAliases: ["ghost", "boo", "spooky", "halloween", "scary"],
  },
  {
    value: "👽",
    label: "👽 Alien",
    group: "Faces",
    searchAliases: ["alien", "ufo", "extraterrestrial", "space", "et"],
  },
  {
    value: "👾",
    label: "👾 Space Invader",
    group: "Faces",
    searchAliases: ["alien", "game", "arcade", "pixel", "invader"],
  },
  {
    value: "🤖",
    label: "🤖 Robot",
    group: "Faces",
    searchAliases: ["robot", "bot", "ai", "machine", "android", "tech"],
  },
  {
    value: "😺",
    label: "😺 Happy Cat",
    group: "Faces",
    searchAliases: ["cat", "happy", "smile", "kitty"],
  },
  {
    value: "😸",
    label: "😸 Grin Cat",
    group: "Faces",
    searchAliases: ["cat", "grin", "happy", "kitty"],
  },
  {
    value: "😹",
    label: "😹 Joy Cat",
    group: "Faces",
    searchAliases: ["cat", "laugh", "tears", "lol"],
  },
  {
    value: "😻",
    label: "😻 Heart Cat",
    group: "Faces",
    searchAliases: ["cat", "love", "heart eyes", "adore"],
  },
  {
    value: "🙈",
    label: "🙈 See No Evil",
    group: "Faces",
    searchAliases: ["monkey", "see no evil", "shy", "hide", "oops"],
  },
  {
    value: "🙉",
    label: "🙉 Hear No Evil",
    group: "Faces",
    searchAliases: ["monkey", "hear no evil", "ignore"],
  },
  {
    value: "🙊",
    label: "🙊 Speak No Evil",
    group: "Faces",
    searchAliases: ["monkey", "speak no evil", "oops", "secret"],
  },

  // ===== GESTURES & BODY =====
  {
    value: "👋",
    label: "👋 Wave",
    group: "Gestures",
    searchAliases: ["wave", "hi", "hello", "bye", "goodbye", "hand"],
  },
  {
    value: "🤚",
    label: "🤚 Raised Back",
    group: "Gestures",
    searchAliases: ["hand", "stop", "raised", "back"],
  },
  {
    value: "🖐️",
    label: "🖐️ Hand",
    group: "Gestures",
    searchAliases: ["hand", "five", "stop", "hi"],
  },
  {
    value: "✋",
    label: "✋ High Five",
    group: "Gestures",
    searchAliases: ["hand", "stop", "high five", "halt"],
  },
  {
    value: "🖖",
    label: "🖖 Vulcan",
    group: "Gestures",
    searchAliases: ["vulcan", "spock", "star trek", "live long"],
  },
  {
    value: "👌",
    label: "👌 OK",
    group: "Gestures",
    searchAliases: ["ok", "okay", "perfect", "good", "nice", "chef kiss"],
  },
  {
    value: "🤌",
    label: "🤌 Pinched",
    group: "Gestures",
    searchAliases: ["pinched", "italian", "what", "chef", "perfection"],
  },
  {
    value: "🤏",
    label: "🤏 Pinch",
    group: "Gestures",
    searchAliases: ["pinch", "small", "tiny", "little bit"],
  },
  {
    value: "✌️",
    label: "✌️ Peace",
    group: "Gestures",
    searchAliases: ["peace", "victory", "two", "v sign"],
  },
  {
    value: "🤞",
    label: "🤞 Fingers Crossed",
    group: "Gestures",
    searchAliases: ["crossed", "luck", "hope", "wish", "fingers"],
  },
  {
    value: "🤟",
    label: "🤟 Love You",
    group: "Gestures",
    searchAliases: ["love you", "ily", "rock", "sign language"],
  },
  {
    value: "🤘",
    label: "🤘 Rock On",
    group: "Gestures",
    searchAliases: ["rock", "metal", "horns", "devil", "party"],
  },
  {
    value: "🤙",
    label: "🤙 Call Me",
    group: "Gestures",
    searchAliases: ["call me", "shaka", "hang loose", "phone", "surf"],
  },
  {
    value: "👈",
    label: "👈 Point Left",
    group: "Gestures",
    searchAliases: ["point", "left", "direction", "this"],
  },
  {
    value: "👉",
    label: "👉 Point Right",
    group: "Gestures",
    searchAliases: ["point", "right", "direction", "that"],
  },
  {
    value: "👆",
    label: "👆 Point Up",
    group: "Gestures",
    searchAliases: ["point", "up", "above", "direction"],
  },
  {
    value: "🖕",
    label: "🖕 Middle Finger",
    group: "Gestures",
    searchAliases: ["middle finger", "fuck", "f you", "rude", "flip off"],
  },
  {
    value: "👇",
    label: "👇 Point Down",
    group: "Gestures",
    searchAliases: ["point", "down", "below", "direction"],
  },
  {
    value: "☝️",
    label: "☝️ Index Up",
    group: "Gestures",
    searchAliases: ["point", "up", "one", "wait", "idea"],
  },
  {
    value: "👍",
    label: "👍 Thumbs Up",
    group: "Gestures",
    searchAliases: [
      "thumbs up",
      "like",
      "good",
      "yes",
      "approve",
      "ok",
      "nice",
    ],
  },
  {
    value: "👎",
    label: "👎 Thumbs Down",
    group: "Gestures",
    searchAliases: ["thumbs down", "dislike", "bad", "no", "disapprove", "boo"],
  },
  {
    value: "✊",
    label: "✊ Fist",
    group: "Gestures",
    searchAliases: ["fist", "power", "solidarity", "punch", "resist"],
  },
  {
    value: "👊",
    label: "👊 Fist Bump",
    group: "Gestures",
    searchAliases: ["fist bump", "punch", "bro", "pound it"],
  },
  {
    value: "🤛",
    label: "🤛 Left Fist",
    group: "Gestures",
    searchAliases: ["fist", "bump", "left", "punch"],
  },
  {
    value: "🤜",
    label: "🤜 Right Fist",
    group: "Gestures",
    searchAliases: ["fist", "bump", "right", "punch"],
  },
  {
    value: "👏",
    label: "👏 Clap",
    group: "Gestures",
    searchAliases: [
      "clap",
      "applause",
      "bravo",
      "congrats",
      "yay",
      "slow clap",
    ],
  },
  {
    value: "🙌",
    label: "🙌 Raise Hands",
    group: "Gestures",
    searchAliases: [
      "raise",
      "hands",
      "celebrate",
      "yay",
      "praise",
      "hallelujah",
    ],
  },
  {
    value: "👐",
    label: "👐 Open Hands",
    group: "Gestures",
    searchAliases: ["open hands", "hug", "jazz hands"],
  },
  {
    value: "🤲",
    label: "🤲 Palms Up",
    group: "Gestures",
    searchAliases: ["palms", "prayer", "please", "give"],
  },
  {
    value: "🤝",
    label: "🤝 Handshake",
    group: "Gestures",
    searchAliases: ["handshake", "deal", "agreement", "partnership", "hello"],
  },
  {
    value: "🙏",
    label: "🙏 Pray",
    group: "Gestures",
    searchAliases: [
      "pray",
      "please",
      "thanks",
      "namaste",
      "hope",
      "bless",
      "grateful",
    ],
  },
  {
    value: "✍️",
    label: "✍️ Writing",
    group: "Gestures",
    searchAliases: ["writing", "write", "sign", "pen", "note"],
  },
  {
    value: "💅",
    label: "💅 Nail Polish",
    group: "Gestures",
    searchAliases: [
      "nail polish",
      "fabulous",
      "sassy",
      "slay",
      "queen",
      "fancy",
    ],
  },
  {
    value: "🤳",
    label: "🤳 Selfie",
    group: "Gestures",
    searchAliases: ["selfie", "phone", "photo", "camera"],
  },
  {
    value: "💪",
    label: "💪 Muscle",
    group: "Gestures",
    searchAliases: [
      "muscle",
      "strong",
      "flex",
      "gym",
      "workout",
      "power",
      "bicep",
    ],
  },
  {
    value: "🦾",
    label: "🦾 Robot Arm",
    group: "Gestures",
    searchAliases: ["robot", "arm", "prosthetic", "strong", "cyborg"],
  },
  {
    value: "🦵",
    label: "🦵 Leg",
    group: "Gestures",
    searchAliases: ["leg", "kick", "limb"],
  },
  {
    value: "🦶",
    label: "🦶 Foot",
    group: "Gestures",
    searchAliases: ["foot", "kick", "step"],
  },
  {
    value: "👂",
    label: "👂 Ear",
    group: "Gestures",
    searchAliases: ["ear", "listen", "hear", "sound"],
  },
  {
    value: "👃",
    label: "👃 Nose",
    group: "Gestures",
    searchAliases: ["nose", "smell", "sniff"],
  },
  {
    value: "🧠",
    label: "🧠 Brain",
    group: "Gestures",
    searchAliases: ["brain", "smart", "think", "intelligent", "mind", "genius"],
  },
  {
    value: "👀",
    label: "👀 Eyes",
    group: "Gestures",
    searchAliases: ["eyes", "look", "see", "watch", "stare", "peep", "lurk"],
  },
  {
    value: "👁️",
    label: "👁️ Eye",
    group: "Gestures",
    searchAliases: ["eye", "look", "see", "watch"],
  },
  {
    value: "👅",
    label: "👅 Tongue",
    group: "Gestures",
    searchAliases: ["tongue", "lick", "taste", "blep"],
  },
  {
    value: "👄",
    label: "👄 Lips",
    group: "Gestures",
    searchAliases: ["lips", "mouth", "kiss", "talk"],
  },
  {
    value: "🫦",
    label: "🫦 Biting Lip",
    group: "Gestures",
    searchAliases: ["biting", "lip", "nervous", "flirt", "anxious"],
  },
  {
    value: "🤷",
    label: "🤷 Shrug",
    group: "Gestures",
    searchAliases: ["shrug", "idk", "dunno", "whatever", "who knows", "meh"],
  },
  {
    value: "🤦",
    label: "🤦 Facepalm",
    group: "Gestures",
    searchAliases: ["facepalm", "smh", "duh", "stupid", "disappointed", "omg"],
  },
  {
    value: "🙅",
    label: "🙅 No Good",
    group: "Gestures",
    searchAliases: ["no", "stop", "not okay", "x", "deny"],
  },
  {
    value: "🙆",
    label: "🙆 OK Person",
    group: "Gestures",
    searchAliases: ["ok", "yes", "good", "approve"],
  },
  {
    value: "🙋",
    label: "🙋 Raise Hand",
    group: "Gestures",
    searchAliases: ["raise hand", "me", "question", "volunteer", "hi"],
  },
  {
    value: "🙇",
    label: "🙇 Bow",
    group: "Gestures",
    searchAliases: ["bow", "sorry", "respect", "apology", "thanks"],
  },
  {
    value: "💁",
    label: "💁 Info",
    group: "Gestures",
    searchAliases: ["info", "help", "sassy", "here you go"],
  },

  // ===== PEOPLE =====
  {
    value: "👤",
    label: "👤 Person",
    group: "People",
    searchAliases: ["person", "user", "profile", "account", "avatar"],
  },
  {
    value: "👥",
    label: "👥 People",
    group: "People",
    searchAliases: ["people", "users", "group", "team", "community"],
  },
  {
    value: "👶",
    label: "👶 Baby",
    group: "People",
    searchAliases: ["baby", "child", "infant", "newborn"],
  },
  {
    value: "👧",
    label: "👧 Girl",
    group: "People",
    searchAliases: ["girl", "child", "kid", "daughter"],
  },
  {
    value: "🧒",
    label: "🧒 Child",
    group: "People",
    searchAliases: ["child", "kid", "young"],
  },
  {
    value: "👦",
    label: "👦 Boy",
    group: "People",
    searchAliases: ["boy", "child", "kid", "son"],
  },
  {
    value: "👩",
    label: "👩 Woman",
    group: "People",
    searchAliases: ["woman", "female", "lady", "girl"],
  },
  {
    value: "👨",
    label: "👨 Man",
    group: "People",
    searchAliases: ["man", "male", "guy", "dude"],
  },
  {
    value: "👴",
    label: "👴 Old Man",
    group: "People",
    searchAliases: ["old man", "grandpa", "elderly", "senior"],
  },
  {
    value: "👵",
    label: "👵 Old Woman",
    group: "People",
    searchAliases: ["old woman", "grandma", "elderly", "senior"],
  },
  {
    value: "👨‍👩‍👧‍👦",
    label: "👨‍👩‍👧‍👦 Family",
    group: "People",
    searchAliases: ["family", "parents", "children", "home"],
  },
  {
    value: "👫",
    label: "👫 Couple",
    group: "People",
    searchAliases: ["couple", "holding hands", "dating", "love"],
  },

  // ===== ANIMALS =====
  {
    value: "🐶",
    label: "🐶 Dog",
    group: "Animals",
    searchAliases: ["dog", "puppy", "pet", "woof", "doggo", "pupper"],
  },
  {
    value: "🐱",
    label: "🐱 Cat",
    group: "Animals",
    searchAliases: ["cat", "kitty", "kitten", "meow", "pet"],
  },
  {
    value: "🐭",
    label: "🐭 Mouse",
    group: "Animals",
    searchAliases: ["mouse", "rat", "rodent", "squeak"],
  },
  {
    value: "🐹",
    label: "🐹 Hamster",
    group: "Animals",
    searchAliases: ["hamster", "pet", "cute", "rodent"],
  },
  {
    value: "🐰",
    label: "🐰 Rabbit",
    group: "Animals",
    searchAliases: ["rabbit", "bunny", "easter", "hop"],
  },
  {
    value: "🦊",
    label: "🦊 Fox",
    group: "Animals",
    searchAliases: ["fox", "clever", "sly", "orange"],
  },
  {
    value: "🐻",
    label: "🐻 Bear",
    group: "Animals",
    searchAliases: ["bear", "teddy", "grizzly", "animal"],
  },
  {
    value: "🐼",
    label: "🐼 Panda",
    group: "Animals",
    searchAliases: ["panda", "bear", "cute", "china"],
  },
  {
    value: "🐨",
    label: "🐨 Koala",
    group: "Animals",
    searchAliases: ["koala", "australia", "bear", "cute"],
  },
  {
    value: "🐯",
    label: "🐯 Tiger",
    group: "Animals",
    searchAliases: ["tiger", "cat", "wild", "stripes"],
  },
  {
    value: "🦁",
    label: "🦁 Lion",
    group: "Animals",
    searchAliases: ["lion", "king", "jungle", "mane", "roar"],
  },
  {
    value: "🐮",
    label: "🐮 Cow",
    group: "Animals",
    searchAliases: ["cow", "moo", "farm", "milk"],
  },
  {
    value: "🐷",
    label: "🐷 Pig",
    group: "Animals",
    searchAliases: ["pig", "oink", "farm", "piggy"],
  },
  {
    value: "🐸",
    label: "🐸 Frog",
    group: "Animals",
    searchAliases: ["frog", "toad", "ribbit", "kermit", "pepe"],
  },
  {
    value: "🐵",
    label: "🐵 Monkey",
    group: "Animals",
    searchAliases: ["monkey", "ape", "chimp", "banana"],
  },
  {
    value: "🐔",
    label: "🐔 Chicken",
    group: "Animals",
    searchAliases: ["chicken", "hen", "rooster", "cluck"],
  },
  {
    value: "🐧",
    label: "🐧 Penguin",
    group: "Animals",
    searchAliases: ["penguin", "cold", "ice", "tux", "linux"],
  },
  {
    value: "🐦",
    label: "🐦 Bird",
    group: "Animals",
    searchAliases: ["bird", "tweet", "fly", "chirp"],
  },
  {
    value: "🦆",
    label: "🦆 Duck",
    group: "Animals",
    searchAliases: ["duck", "quack", "bird", "water"],
  },
  {
    value: "🦅",
    label: "🦅 Eagle",
    group: "Animals",
    searchAliases: ["eagle", "bird", "america", "freedom", "fly"],
  },
  {
    value: "🦉",
    label: "🦉 Owl",
    group: "Animals",
    searchAliases: ["owl", "hoot", "night", "wise", "bird"],
  },
  {
    value: "🦇",
    label: "🦇 Bat",
    group: "Animals",
    searchAliases: ["bat", "vampire", "halloween", "night"],
  },
  {
    value: "🐺",
    label: "🐺 Wolf",
    group: "Animals",
    searchAliases: ["wolf", "howl", "wild", "dog"],
  },
  {
    value: "🐗",
    label: "🐗 Boar",
    group: "Animals",
    searchAliases: ["boar", "pig", "wild"],
  },
  {
    value: "🐴",
    label: "🐴 Horse",
    group: "Animals",
    searchAliases: ["horse", "pony", "neigh", "ride"],
  },
  {
    value: "🦄",
    label: "🦄 Unicorn",
    group: "Animals",
    searchAliases: ["unicorn", "magic", "fantasy", "rainbow", "mythical"],
  },
  {
    value: "🐝",
    label: "🐝 Bee",
    group: "Animals",
    searchAliases: ["bee", "honey", "buzz", "insect"],
  },
  {
    value: "🐛",
    label: "🐛 Bug",
    group: "Animals",
    searchAliases: ["bug", "caterpillar", "insect", "worm"],
  },
  {
    value: "🦋",
    label: "🦋 Butterfly",
    group: "Animals",
    searchAliases: ["butterfly", "pretty", "insect", "nature"],
  },
  {
    value: "🐌",
    label: "🐌 Snail",
    group: "Animals",
    searchAliases: ["snail", "slow", "shell", "slug"],
  },
  {
    value: "🐙",
    label: "🐙 Octopus",
    group: "Animals",
    searchAliases: ["octopus", "ocean", "tentacles", "sea"],
  },
  {
    value: "🐠",
    label: "🐠 Fish",
    group: "Animals",
    searchAliases: ["fish", "tropical", "nemo", "ocean", "sea"],
  },
  {
    value: "🐟",
    label: "🐟 Fish",
    group: "Animals",
    searchAliases: ["fish", "ocean", "sea", "swim"],
  },
  {
    value: "🐬",
    label: "🐬 Dolphin",
    group: "Animals",
    searchAliases: ["dolphin", "ocean", "smart", "swim"],
  },
  {
    value: "🐳",
    label: "🐳 Whale",
    group: "Animals",
    searchAliases: ["whale", "ocean", "big", "sea", "spout"],
  },
  {
    value: "🦈",
    label: "🦈 Shark",
    group: "Animals",
    searchAliases: ["shark", "ocean", "jaws", "dangerous"],
  },
  {
    value: "🐊",
    label: "🐊 Crocodile",
    group: "Animals",
    searchAliases: ["crocodile", "alligator", "reptile", "gator"],
  },
  {
    value: "🐢",
    label: "🐢 Turtle",
    group: "Animals",
    searchAliases: ["turtle", "slow", "shell", "tortoise"],
  },
  {
    value: "🦎",
    label: "🦎 Lizard",
    group: "Animals",
    searchAliases: ["lizard", "gecko", "reptile"],
  },
  {
    value: "🐍",
    label: "🐍 Snake",
    group: "Animals",
    searchAliases: ["snake", "hiss", "reptile", "danger"],
  },
  {
    value: "🦕",
    label: "🦕 Dinosaur",
    group: "Animals",
    searchAliases: ["dinosaur", "dino", "prehistoric", "brontosaurus"],
  },
  {
    value: "🦖",
    label: "🦖 T-Rex",
    group: "Animals",
    searchAliases: ["trex", "dinosaur", "dino", "prehistoric", "rawr"],
  },

  // ===== NATURE =====
  {
    value: "🌸",
    label: "🌸 Blossom",
    group: "Nature",
    searchAliases: ["blossom", "flower", "cherry", "spring", "sakura", "pink"],
  },
  {
    value: "🌷",
    label: "🌷 Tulip",
    group: "Nature",
    searchAliases: ["tulip", "flower", "spring", "pink"],
  },
  {
    value: "🌹",
    label: "🌹 Rose",
    group: "Nature",
    searchAliases: ["rose", "flower", "love", "romance", "red"],
  },
  {
    value: "🌺",
    label: "🌺 Hibiscus",
    group: "Nature",
    searchAliases: ["hibiscus", "flower", "tropical", "hawaii"],
  },
  {
    value: "🌻",
    label: "🌻 Sunflower",
    group: "Nature",
    searchAliases: ["sunflower", "flower", "sun", "yellow", "happy"],
  },
  {
    value: "🌼",
    label: "🌼 Daisy",
    group: "Nature",
    searchAliases: ["daisy", "flower", "blossom", "spring"],
  },
  {
    value: "🌵",
    label: "🌵 Cactus",
    group: "Nature",
    searchAliases: ["cactus", "desert", "plant", "prickly"],
  },
  {
    value: "🌲",
    label: "🌲 Tree",
    group: "Nature",
    searchAliases: ["tree", "evergreen", "pine", "forest", "christmas"],
  },
  {
    value: "🌴",
    label: "🌴 Palm",
    group: "Nature",
    searchAliases: ["palm", "tree", "tropical", "beach", "vacation"],
  },
  {
    value: "🍀",
    label: "🍀 Clover",
    group: "Nature",
    searchAliases: ["clover", "luck", "lucky", "irish", "four leaf"],
  },
  {
    value: "🍁",
    label: "🍁 Maple Leaf",
    group: "Nature",
    searchAliases: ["maple", "leaf", "fall", "autumn", "canada"],
  },
  {
    value: "🍂",
    label: "🍂 Fallen Leaf",
    group: "Nature",
    searchAliases: ["leaf", "fall", "autumn", "nature"],
  },
  {
    value: "🌈",
    label: "🌈 Rainbow",
    group: "Nature",
    searchAliases: ["rainbow", "colors", "pride", "lgbtq", "gay", "happy"],
  },
  {
    value: "☀️",
    label: "☀️ Sun",
    group: "Nature",
    searchAliases: ["sun", "sunny", "bright", "summer", "hot", "weather"],
  },
  {
    value: "🌙",
    label: "🌙 Moon",
    group: "Nature",
    searchAliases: ["moon", "night", "crescent", "sleep", "dark"],
  },
  {
    value: "⭐",
    label: "⭐ Star",
    group: "Nature",
    searchAliases: ["star", "favorite", "rating", "best", "gold"],
  },
  {
    value: "🌟",
    label: "🌟 Glow Star",
    group: "Nature",
    searchAliases: ["star", "glow", "sparkle", "shine", "special"],
  },
  {
    value: "✨",
    label: "✨ Sparkles",
    group: "Nature",
    searchAliases: ["sparkles", "magic", "new", "clean", "special", "fancy"],
  },
  {
    value: "⚡",
    label: "⚡ Lightning",
    group: "Nature",
    searchAliases: ["lightning", "bolt", "electric", "power", "zap", "flash"],
  },
  {
    value: "🔥",
    label: "🔥 Fire",
    group: "Nature",
    searchAliases: ["fire", "hot", "flame", "lit", "trending", "awesome"],
  },
  {
    value: "💧",
    label: "💧 Water",
    group: "Nature",
    searchAliases: ["water", "drop", "sweat", "tear", "wet"],
  },
  {
    value: "🌊",
    label: "🌊 Wave",
    group: "Nature",
    searchAliases: ["wave", "ocean", "sea", "surf", "water"],
  },
  {
    value: "❄️",
    label: "❄️ Snowflake",
    group: "Nature",
    searchAliases: ["snowflake", "snow", "winter", "cold", "ice", "frozen"],
  },
  {
    value: "☁️",
    label: "☁️ Cloud",
    group: "Nature",
    searchAliases: ["cloud", "weather", "sky"],
  },
  {
    value: "🌍",
    label: "🌍 Earth",
    group: "Nature",
    searchAliases: ["earth", "globe", "world", "planet", "europe", "africa"],
  },
  {
    value: "🌎",
    label: "🌎 Americas",
    group: "Nature",
    searchAliases: ["earth", "globe", "world", "americas", "planet"],
  },
  {
    value: "🌏",
    label: "🌏 Asia",
    group: "Nature",
    searchAliases: ["earth", "globe", "world", "asia", "australia", "planet"],
  },

  // ===== FOOD =====
  {
    value: "🍎",
    label: "🍎 Apple",
    group: "Food",
    searchAliases: ["apple", "fruit", "red", "healthy"],
  },
  {
    value: "🍊",
    label: "🍊 Orange",
    group: "Food",
    searchAliases: ["orange", "fruit", "citrus"],
  },
  {
    value: "🍋",
    label: "🍋 Lemon",
    group: "Food",
    searchAliases: ["lemon", "fruit", "sour", "citrus", "yellow"],
  },
  {
    value: "🍌",
    label: "🍌 Banana",
    group: "Food",
    searchAliases: ["banana", "fruit", "yellow", "potassium"],
  },
  {
    value: "🍉",
    label: "🍉 Watermelon",
    group: "Food",
    searchAliases: ["watermelon", "fruit", "summer", "red"],
  },
  {
    value: "🍇",
    label: "🍇 Grapes",
    group: "Food",
    searchAliases: ["grapes", "fruit", "wine", "purple"],
  },
  {
    value: "🍓",
    label: "🍓 Strawberry",
    group: "Food",
    searchAliases: ["strawberry", "fruit", "berry", "red"],
  },
  {
    value: "🍑",
    label: "🍑 Peach",
    group: "Food",
    searchAliases: ["peach", "fruit", "butt", "booty"],
  },
  {
    value: "🥑",
    label: "🥑 Avocado",
    group: "Food",
    searchAliases: ["avocado", "guac", "healthy", "millennial"],
  },
  {
    value: "🍕",
    label: "🍕 Pizza",
    group: "Food",
    searchAliases: ["pizza", "food", "italian", "slice", "yum"],
  },
  {
    value: "🍔",
    label: "🍔 Burger",
    group: "Food",
    searchAliases: ["burger", "hamburger", "food", "fast food"],
  },
  {
    value: "🍟",
    label: "🍟 Fries",
    group: "Food",
    searchAliases: ["fries", "french fries", "food", "fast food"],
  },
  {
    value: "🌭",
    label: "🌭 Hot Dog",
    group: "Food",
    searchAliases: ["hot dog", "food", "sausage"],
  },
  {
    value: "🍿",
    label: "🍿 Popcorn",
    group: "Food",
    searchAliases: ["popcorn", "movie", "snack", "cinema"],
  },
  {
    value: "🍩",
    label: "🍩 Donut",
    group: "Food",
    searchAliases: ["donut", "doughnut", "sweet", "dessert"],
  },
  {
    value: "🍪",
    label: "🍪 Cookie",
    group: "Food",
    searchAliases: ["cookie", "biscuit", "sweet", "dessert"],
  },
  {
    value: "🎂",
    label: "🎂 Cake",
    group: "Food",
    searchAliases: ["cake", "birthday", "celebration", "dessert"],
  },
  {
    value: "🍰",
    label: "🍰 Shortcake",
    group: "Food",
    searchAliases: ["cake", "slice", "dessert", "sweet"],
  },
  {
    value: "🍦",
    label: "🍦 Ice Cream",
    group: "Food",
    searchAliases: ["ice cream", "dessert", "summer", "cone"],
  },
  {
    value: "🍫",
    label: "🍫 Chocolate",
    group: "Food",
    searchAliases: ["chocolate", "candy", "sweet", "bar"],
  },
  {
    value: "🍬",
    label: "🍬 Candy",
    group: "Food",
    searchAliases: ["candy", "sweet", "sugar", "treat"],
  },
  {
    value: "☕",
    label: "☕ Coffee",
    group: "Food",
    searchAliases: ["coffee", "cafe", "morning", "caffeine", "espresso"],
  },
  {
    value: "🍵",
    label: "🍵 Tea",
    group: "Food",
    searchAliases: ["tea", "green tea", "drink", "hot"],
  },
  {
    value: "🍺",
    label: "🍺 Beer",
    group: "Food",
    searchAliases: ["beer", "drink", "alcohol", "cheers"],
  },
  {
    value: "🍻",
    label: "🍻 Cheers",
    group: "Food",
    searchAliases: ["cheers", "beer", "toast", "celebration"],
  },
  {
    value: "🥂",
    label: "🥂 Champagne",
    group: "Food",
    searchAliases: ["champagne", "toast", "celebration", "cheers", "wine"],
  },
  {
    value: "🍷",
    label: "🍷 Wine",
    group: "Food",
    searchAliases: ["wine", "drink", "alcohol", "red wine"],
  },
  {
    value: "🥤",
    label: "🥤 Soda",
    group: "Food",
    searchAliases: ["soda", "drink", "cup", "beverage"],
  },
  {
    value: "🧃",
    label: "🧃 Juice Box",
    group: "Food",
    searchAliases: ["juice", "box", "drink", "kid"],
  },

  // ===== ACTIVITIES =====
  {
    value: "⚽",
    label: "⚽ Soccer",
    group: "Activities",
    searchAliases: ["soccer", "football", "ball", "sport", "goal"],
  },
  {
    value: "🏀",
    label: "🏀 Basketball",
    group: "Activities",
    searchAliases: ["basketball", "ball", "sport", "nba", "hoop"],
  },
  {
    value: "🏈",
    label: "🏈 Football",
    group: "Activities",
    searchAliases: ["football", "american", "nfl", "sport"],
  },
  {
    value: "⚾",
    label: "⚾ Baseball",
    group: "Activities",
    searchAliases: ["baseball", "mlb", "sport", "ball"],
  },
  {
    value: "🎾",
    label: "🎾 Tennis",
    group: "Activities",
    searchAliases: ["tennis", "sport", "ball", "racket"],
  },
  {
    value: "🏐",
    label: "🏐 Volleyball",
    group: "Activities",
    searchAliases: ["volleyball", "sport", "beach", "ball"],
  },
  {
    value: "🏓",
    label: "🏓 Ping Pong",
    group: "Activities",
    searchAliases: ["ping pong", "table tennis", "paddle"],
  },
  {
    value: "🎱",
    label: "🎱 Pool",
    group: "Activities",
    searchAliases: ["pool", "billiards", "8 ball", "game"],
  },
  {
    value: "🏆",
    label: "🏆 Trophy",
    group: "Activities",
    searchAliases: ["trophy", "winner", "champion", "first", "award", "prize"],
  },
  {
    value: "🥇",
    label: "🥇 Gold Medal",
    group: "Activities",
    searchAliases: ["gold", "medal", "first", "winner", "champion"],
  },
  {
    value: "🥈",
    label: "🥈 Silver Medal",
    group: "Activities",
    searchAliases: ["silver", "medal", "second", "runner up"],
  },
  {
    value: "🥉",
    label: "🥉 Bronze Medal",
    group: "Activities",
    searchAliases: ["bronze", "medal", "third"],
  },
  {
    value: "🎮",
    label: "🎮 Game",
    group: "Activities",
    searchAliases: ["game", "video game", "controller", "gaming", "play"],
  },
  {
    value: "🎲",
    label: "🎲 Dice",
    group: "Activities",
    searchAliases: ["dice", "game", "gambling", "random", "chance"],
  },
  {
    value: "🎯",
    label: "🎯 Target",
    group: "Activities",
    searchAliases: ["target", "dart", "bullseye", "goal", "aim", "direct hit"],
  },
  {
    value: "🎳",
    label: "🎳 Bowling",
    group: "Activities",
    searchAliases: ["bowling", "pins", "strike", "game"],
  },
  {
    value: "🎨",
    label: "🎨 Art",
    group: "Activities",
    searchAliases: ["art", "paint", "palette", "creative", "design"],
  },
  {
    value: "🎬",
    label: "🎬 Movie",
    group: "Activities",
    searchAliases: ["movie", "film", "cinema", "clapboard", "action"],
  },
  {
    value: "🎤",
    label: "🎤 Mic",
    group: "Activities",
    searchAliases: ["microphone", "mic", "sing", "karaoke", "speech"],
  },
  {
    value: "🎧",
    label: "🎧 Headphones",
    group: "Activities",
    searchAliases: ["headphones", "music", "listen", "audio"],
  },
  {
    value: "🎵",
    label: "🎵 Music",
    group: "Activities",
    searchAliases: ["music", "note", "song", "melody", "tune"],
  },
  {
    value: "🎶",
    label: "🎶 Notes",
    group: "Activities",
    searchAliases: ["music", "notes", "melody", "song", "singing"],
  },
  {
    value: "🎸",
    label: "🎸 Guitar",
    group: "Activities",
    searchAliases: ["guitar", "music", "rock", "instrument"],
  },
  {
    value: "🎹",
    label: "🎹 Piano",
    group: "Activities",
    searchAliases: ["piano", "keys", "music", "instrument"],
  },
  {
    value: "🥁",
    label: "🥁 Drum",
    group: "Activities",
    searchAliases: ["drum", "music", "beat", "instrument"],
  },
  {
    value: "🎪",
    label: "🎪 Circus",
    group: "Activities",
    searchAliases: ["circus", "tent", "carnival", "show"],
  },
  {
    value: "🎭",
    label: "🎭 Theater",
    group: "Activities",
    searchAliases: ["theater", "drama", "masks", "acting", "play"],
  },
  {
    value: "🎉",
    label: "🎉 Party",
    group: "Activities",
    searchAliases: [
      "party",
      "celebrate",
      "tada",
      "congrats",
      "yay",
      "birthday",
    ],
  },
  {
    value: "🎊",
    label: "🎊 Confetti",
    group: "Activities",
    searchAliases: ["confetti", "party", "celebrate", "festive"],
  },
  {
    value: "🎁",
    label: "🎁 Gift",
    group: "Activities",
    searchAliases: ["gift", "present", "birthday", "surprise", "wrapped"],
  },
  {
    value: "🎀",
    label: "🎀 Ribbon",
    group: "Activities",
    searchAliases: ["ribbon", "bow", "gift", "cute", "pink"],
  },
  {
    value: "🎄",
    label: "🎄 Christmas Tree",
    group: "Activities",
    searchAliases: ["christmas", "tree", "holiday", "xmas", "festive"],
  },
  {
    value: "🎃",
    label: "🎃 Pumpkin",
    group: "Activities",
    searchAliases: [
      "pumpkin",
      "halloween",
      "jack o lantern",
      "spooky",
      "october",
    ],
  },
  {
    value: "🎅",
    label: "🎅 Santa",
    group: "Activities",
    searchAliases: ["santa", "christmas", "claus", "holiday", "xmas"],
  },

  // ===== OBJECTS & TECH =====
  {
    value: "📱",
    label: "📱 Phone",
    group: "Objects",
    searchAliases: ["phone", "mobile", "cell", "iphone", "smartphone"],
  },
  {
    value: "💻",
    label: "💻 Laptop",
    group: "Objects",
    searchAliases: ["laptop", "computer", "macbook", "pc", "work"],
  },
  {
    value: "🖥️",
    label: "🖥️ Desktop",
    group: "Objects",
    searchAliases: ["desktop", "computer", "monitor", "pc"],
  },
  {
    value: "⌨️",
    label: "⌨️ Keyboard",
    group: "Objects",
    searchAliases: ["keyboard", "type", "computer"],
  },
  {
    value: "🖱️",
    label: "🖱️ Mouse",
    group: "Objects",
    searchAliases: ["mouse", "click", "computer"],
  },
  {
    value: "📷",
    label: "📷 Camera",
    group: "Objects",
    searchAliases: ["camera", "photo", "picture", "photography"],
  },
  {
    value: "📹",
    label: "📹 Video",
    group: "Objects",
    searchAliases: ["video", "camera", "record", "film"],
  },
  {
    value: "📺",
    label: "📺 TV",
    group: "Objects",
    searchAliases: ["tv", "television", "watch", "screen"],
  },
  {
    value: "📻",
    label: "📻 Radio",
    group: "Objects",
    searchAliases: ["radio", "music", "broadcast"],
  },
  {
    value: "🎙️",
    label: "🎙️ Studio Mic",
    group: "Objects",
    searchAliases: ["microphone", "podcast", "studio", "record"],
  },
  {
    value: "⏰",
    label: "⏰ Alarm",
    group: "Objects",
    searchAliases: ["alarm", "clock", "time", "wake up"],
  },
  {
    value: "⏱️",
    label: "⏱️ Stopwatch",
    group: "Objects",
    searchAliases: ["stopwatch", "timer", "time", "speed"],
  },
  {
    value: "💡",
    label: "💡 Light Bulb",
    group: "Objects",
    searchAliases: ["lightbulb", "idea", "bright", "think", "innovation"],
  },
  {
    value: "🔦",
    label: "🔦 Flashlight",
    group: "Objects",
    searchAliases: ["flashlight", "light", "torch", "search"],
  },
  {
    value: "🔋",
    label: "🔋 Battery",
    group: "Objects",
    searchAliases: ["battery", "power", "charge", "energy"],
  },
  {
    value: "🔌",
    label: "🔌 Plug",
    group: "Objects",
    searchAliases: ["plug", "electric", "power", "charge"],
  },
  {
    value: "💰",
    label: "💰 Money Bag",
    group: "Objects",
    searchAliases: ["money", "bag", "rich", "cash", "bank", "wealth"],
  },
  {
    value: "💵",
    label: "💵 Dollar",
    group: "Objects",
    searchAliases: ["dollar", "money", "cash", "bill", "usd"],
  },
  {
    value: "💳",
    label: "💳 Credit Card",
    group: "Objects",
    searchAliases: ["credit card", "payment", "money", "buy"],
  },
  {
    value: "💎",
    label: "💎 Gem",
    group: "Objects",
    searchAliases: ["gem", "diamond", "jewel", "precious", "bling", "rich"],
  },
  {
    value: "👑",
    label: "👑 Crown",
    group: "Objects",
    searchAliases: ["crown", "king", "queen", "royal", "winner", "best"],
  },
  {
    value: "📦",
    label: "📦 Package",
    group: "Objects",
    searchAliases: ["package", "box", "delivery", "shipping"],
  },
  {
    value: "📫",
    label: "📫 Mailbox",
    group: "Objects",
    searchAliases: ["mailbox", "mail", "letter", "post"],
  },
  {
    value: "📝",
    label: "📝 Memo",
    group: "Objects",
    searchAliases: ["memo", "note", "write", "document", "paper"],
  },
  {
    value: "📚",
    label: "📚 Books",
    group: "Objects",
    searchAliases: ["books", "read", "study", "library", "learn"],
  },
  {
    value: "📖",
    label: "📖 Book",
    group: "Objects",
    searchAliases: ["book", "read", "open", "study"],
  },
  {
    value: "📰",
    label: "📰 Newspaper",
    group: "Objects",
    searchAliases: ["newspaper", "news", "press", "media"],
  },
  {
    value: "📎",
    label: "📎 Paperclip",
    group: "Objects",
    searchAliases: ["paperclip", "attach", "clippy"],
  },
  {
    value: "📌",
    label: "📌 Pin",
    group: "Objects",
    searchAliases: ["pin", "pushpin", "location", "marker", "important"],
  },
  {
    value: "📍",
    label: "📍 Location",
    group: "Objects",
    searchAliases: ["location", "pin", "map", "place", "here"],
  },
  {
    value: "🔑",
    label: "🔑 Key",
    group: "Objects",
    searchAliases: ["key", "unlock", "password", "access", "security"],
  },
  {
    value: "🔒",
    label: "🔒 Lock",
    group: "Objects",
    searchAliases: ["lock", "secure", "private", "closed", "security"],
  },
  {
    value: "🔓",
    label: "🔓 Unlocked",
    group: "Objects",
    searchAliases: ["unlock", "open", "access"],
  },
  {
    value: "🔧",
    label: "🔧 Wrench",
    group: "Objects",
    searchAliases: ["wrench", "tool", "fix", "repair", "settings"],
  },
  {
    value: "🔨",
    label: "🔨 Hammer",
    group: "Objects",
    searchAliases: ["hammer", "tool", "build", "construction"],
  },
  {
    value: "⚙️",
    label: "⚙️ Gear",
    group: "Objects",
    searchAliases: ["gear", "settings", "cog", "config", "options"],
  },
  {
    value: "🧲",
    label: "🧲 Magnet",
    group: "Objects",
    searchAliases: ["magnet", "attract", "metal"],
  },
  {
    value: "💊",
    label: "💊 Pill",
    group: "Objects",
    searchAliases: ["pill", "medicine", "drug", "health"],
  },
  {
    value: "🩹",
    label: "🩹 Bandage",
    group: "Objects",
    searchAliases: ["bandage", "band-aid", "hurt", "heal"],
  },

  // ===== SYMBOLS =====
  {
    value: "❤️",
    label: "❤️ Red Heart",
    group: "Symbols",
    searchAliases: ["heart", "love", "red", "like", "favorite"],
  },
  {
    value: "🧡",
    label: "🧡 Orange Heart",
    group: "Symbols",
    searchAliases: ["heart", "orange", "love"],
  },
  {
    value: "💛",
    label: "💛 Yellow Heart",
    group: "Symbols",
    searchAliases: ["heart", "yellow", "love", "friendship"],
  },
  {
    value: "💚",
    label: "💚 Green Heart",
    group: "Symbols",
    searchAliases: ["heart", "green", "love", "nature", "eco"],
  },
  {
    value: "💙",
    label: "💙 Blue Heart",
    group: "Symbols",
    searchAliases: ["heart", "blue", "love", "trust"],
  },
  {
    value: "💜",
    label: "💜 Purple Heart",
    group: "Symbols",
    searchAliases: ["heart", "purple", "love"],
  },
  {
    value: "🖤",
    label: "🖤 Black Heart",
    group: "Symbols",
    searchAliases: ["heart", "black", "dark", "goth"],
  },
  {
    value: "🤍",
    label: "🤍 White Heart",
    group: "Symbols",
    searchAliases: ["heart", "white", "pure", "love"],
  },
  {
    value: "💔",
    label: "💔 Broken Heart",
    group: "Symbols",
    searchAliases: ["broken", "heart", "sad", "heartbreak"],
  },
  {
    value: "💕",
    label: "💕 Two Hearts",
    group: "Symbols",
    searchAliases: ["hearts", "love", "couple", "romance"],
  },
  {
    value: "💖",
    label: "💖 Sparkling Heart",
    group: "Symbols",
    searchAliases: ["heart", "sparkle", "love", "special"],
  },
  {
    value: "💗",
    label: "💗 Growing Heart",
    group: "Symbols",
    searchAliases: ["heart", "growing", "love", "excited"],
  },
  {
    value: "💘",
    label: "💘 Cupid Heart",
    group: "Symbols",
    searchAliases: ["heart", "cupid", "arrow", "love", "valentine"],
  },
  {
    value: "💝",
    label: "💝 Gift Heart",
    group: "Symbols",
    searchAliases: ["heart", "gift", "ribbon", "love"],
  },
  {
    value: "💞",
    label: "💞 Revolving Hearts",
    group: "Symbols",
    searchAliases: ["hearts", "love", "romance", "spinning"],
  },
  {
    value: "💯",
    label: "💯 100",
    group: "Symbols",
    searchAliases: [
      "100",
      "hundred",
      "perfect",
      "score",
      "keep it real",
      "facts",
    ],
  },
  {
    value: "💢",
    label: "💢 Anger",
    group: "Symbols",
    searchAliases: ["anger", "mad", "annoyed", "symbol"],
  },
  {
    value: "💥",
    label: "💥 Boom",
    group: "Symbols",
    searchAliases: ["boom", "explosion", "collision", "pow", "impact"],
  },
  {
    value: "💫",
    label: "💫 Dizzy",
    group: "Symbols",
    searchAliases: ["dizzy", "star", "sparkle", "magic"],
  },
  {
    value: "💬",
    label: "💬 Speech",
    group: "Symbols",
    searchAliases: ["speech", "bubble", "talk", "comment", "message"],
  },
  {
    value: "💭",
    label: "💭 Thought",
    group: "Symbols",
    searchAliases: ["thought", "bubble", "think", "dream"],
  },
  {
    value: "🗯️",
    label: "🗯️ Angry Bubble",
    group: "Symbols",
    searchAliases: ["angry", "speech", "yell", "shout"],
  },
  {
    value: "💤",
    label: "💤 Zzz",
    group: "Symbols",
    searchAliases: ["zzz", "sleep", "tired", "snore"],
  },
  {
    value: "✅",
    label: "✅ Check",
    group: "Symbols",
    searchAliases: ["check", "done", "yes", "complete", "correct", "approved"],
  },
  {
    value: "❌",
    label: "❌ X",
    group: "Symbols",
    searchAliases: ["x", "no", "wrong", "delete", "cancel", "error"],
  },
  {
    value: "❓",
    label: "❓ Question",
    group: "Symbols",
    searchAliases: ["question", "help", "what", "huh"],
  },
  {
    value: "❗",
    label: "❗ Exclamation",
    group: "Symbols",
    searchAliases: ["exclamation", "important", "alert", "warning"],
  },
  {
    value: "‼️",
    label: "‼️ Double Exclamation",
    group: "Symbols",
    searchAliases: ["exclamation", "urgent", "important", "alert"],
  },
  {
    value: "⁉️",
    label: "⁉️ Exclamation Question",
    group: "Symbols",
    searchAliases: ["exclamation", "question", "what", "confused"],
  },
  {
    value: "➕",
    label: "➕ Plus",
    group: "Symbols",
    searchAliases: ["plus", "add", "positive", "more"],
  },
  {
    value: "➖",
    label: "➖ Minus",
    group: "Symbols",
    searchAliases: ["minus", "subtract", "negative", "less"],
  },
  {
    value: "➡️",
    label: "➡️ Right Arrow",
    group: "Symbols",
    searchAliases: ["arrow", "right", "direction", "next"],
  },
  {
    value: "⬅️",
    label: "⬅️ Left Arrow",
    group: "Symbols",
    searchAliases: ["arrow", "left", "direction", "back"],
  },
  {
    value: "⬆️",
    label: "⬆️ Up Arrow",
    group: "Symbols",
    searchAliases: ["arrow", "up", "direction", "increase"],
  },
  {
    value: "⬇️",
    label: "⬇️ Down Arrow",
    group: "Symbols",
    searchAliases: ["arrow", "down", "direction", "decrease"],
  },
  {
    value: "🔄",
    label: "🔄 Refresh",
    group: "Symbols",
    searchAliases: ["refresh", "reload", "sync", "repeat"],
  },
  {
    value: "🔃",
    label: "🔃 Rotate",
    group: "Symbols",
    searchAliases: ["rotate", "clockwise", "repeat"],
  },
  {
    value: "ℹ️",
    label: "ℹ️ Info",
    group: "Symbols",
    searchAliases: ["info", "information", "help", "about"],
  },

  // ===== TRAVEL =====
  {
    value: "🚗",
    label: "🚗 Car",
    group: "Travel",
    searchAliases: ["car", "drive", "vehicle", "auto", "road trip"],
  },
  {
    value: "🚕",
    label: "🚕 Taxi",
    group: "Travel",
    searchAliases: ["taxi", "cab", "uber", "lyft", "ride"],
  },
  {
    value: "🚌",
    label: "🚌 Bus",
    group: "Travel",
    searchAliases: ["bus", "transit", "public", "transport"],
  },
  {
    value: "🚎",
    label: "🚎 Trolley",
    group: "Travel",
    searchAliases: ["trolley", "bus", "transit"],
  },
  {
    value: "🏎️",
    label: "🏎️ Race Car",
    group: "Travel",
    searchAliases: ["race", "car", "fast", "speed", "f1"],
  },
  {
    value: "🚓",
    label: "🚓 Police Car",
    group: "Travel",
    searchAliases: ["police", "car", "cop", "emergency"],
  },
  {
    value: "🚑",
    label: "🚑 Ambulance",
    group: "Travel",
    searchAliases: ["ambulance", "emergency", "hospital", "medical"],
  },
  {
    value: "🚒",
    label: "🚒 Fire Truck",
    group: "Travel",
    searchAliases: ["fire", "truck", "emergency", "firefighter"],
  },
  {
    value: "🚲",
    label: "🚲 Bike",
    group: "Travel",
    searchAliases: ["bike", "bicycle", "cycle", "ride"],
  },
  {
    value: "🛵",
    label: "🛵 Scooter",
    group: "Travel",
    searchAliases: ["scooter", "moped", "vespa", "ride"],
  },
  {
    value: "🏍️",
    label: "🏍️ Motorcycle",
    group: "Travel",
    searchAliases: ["motorcycle", "motorbike", "ride", "harley"],
  },
  {
    value: "✈️",
    label: "✈️ Plane",
    group: "Travel",
    searchAliases: ["plane", "airplane", "fly", "travel", "flight"],
  },
  {
    value: "🚀",
    label: "🚀 Rocket",
    group: "Travel",
    searchAliases: ["rocket", "space", "launch", "fast", "startup", "moon"],
  },
  {
    value: "🛸",
    label: "🛸 UFO",
    group: "Travel",
    searchAliases: ["ufo", "alien", "spaceship", "flying saucer"],
  },
  {
    value: "🚁",
    label: "🚁 Helicopter",
    group: "Travel",
    searchAliases: ["helicopter", "chopper", "fly"],
  },
  {
    value: "⛵",
    label: "⛵ Boat",
    group: "Travel",
    searchAliases: ["boat", "sail", "ship", "ocean"],
  },
  {
    value: "🚢",
    label: "🚢 Ship",
    group: "Travel",
    searchAliases: ["ship", "cruise", "boat", "ocean", "titanic"],
  },
  {
    value: "🚂",
    label: "🚂 Train",
    group: "Travel",
    searchAliases: ["train", "locomotive", "steam", "railway"],
  },
  {
    value: "🚇",
    label: "🚇 Metro",
    group: "Travel",
    searchAliases: ["metro", "subway", "train", "underground"],
  },
  {
    value: "🏠",
    label: "🏠 House",
    group: "Travel",
    searchAliases: ["house", "home", "building", "residence"],
  },
  {
    value: "🏡",
    label: "🏡 Garden House",
    group: "Travel",
    searchAliases: ["house", "home", "garden", "yard"],
  },
  {
    value: "🏢",
    label: "🏢 Office",
    group: "Travel",
    searchAliases: ["office", "building", "work", "corporate"],
  },
  {
    value: "🏥",
    label: "🏥 Hospital",
    group: "Travel",
    searchAliases: ["hospital", "medical", "health", "doctor"],
  },
  {
    value: "🏫",
    label: "🏫 School",
    group: "Travel",
    searchAliases: ["school", "education", "learn", "study"],
  },
  {
    value: "🏪",
    label: "🏪 Store",
    group: "Travel",
    searchAliases: ["store", "shop", "convenience", "7-11"],
  },
  {
    value: "🏨",
    label: "🏨 Hotel",
    group: "Travel",
    searchAliases: ["hotel", "sleep", "travel", "vacation"],
  },
  {
    value: "🏰",
    label: "🏰 Castle",
    group: "Travel",
    searchAliases: ["castle", "palace", "disney", "princess"],
  },
  {
    value: "🗽",
    label: "🗽 Statue of Liberty",
    group: "Travel",
    searchAliases: ["statue", "liberty", "nyc", "america", "usa"],
  },
  {
    value: "🗼",
    label: "🗼 Tokyo Tower",
    group: "Travel",
    searchAliases: ["tower", "tokyo", "japan"],
  },
  {
    value: "🗿",
    label: "🗿 Moai",
    group: "Travel",
    searchAliases: ["moai", "easter island", "stone", "bruh", "dum"],
  },
  {
    value: "⛱️",
    label: "⛱️ Beach Umbrella",
    group: "Travel",
    searchAliases: ["umbrella", "beach", "sun", "vacation"],
  },
  {
    value: "🏖️",
    label: "🏖️ Beach",
    group: "Travel",
    searchAliases: ["beach", "vacation", "summer", "sand", "ocean"],
  },
  {
    value: "🏝️",
    label: "🏝️ Island",
    group: "Travel",
    searchAliases: ["island", "tropical", "vacation", "paradise"],
  },
  {
    value: "⛰️",
    label: "⛰️ Mountain",
    group: "Travel",
    searchAliases: ["mountain", "nature", "hike", "climb"],
  },
  {
    value: "🏔️",
    label: "🏔️ Snow Mountain",
    group: "Travel",
    searchAliases: ["mountain", "snow", "peak", "alps"],
  },
  {
    value: "🌋",
    label: "🌋 Volcano",
    group: "Travel",
    searchAliases: ["volcano", "lava", "eruption", "hot"],
  },
  {
    value: "🗺️",
    label: "🗺️ World Map",
    group: "Travel",
    searchAliases: ["map", "world", "travel", "geography"],
  },
];

// ===== Handlers =====

const onSelectEmoji = handler<
  CustomEvent<{ value: string; label: string }>,
  { selectedEmoji: Cell<string> }
>((event, { selectedEmoji }) => {
  const { value } = event.detail;
  selectedEmoji.set(value);
});

const clearSelection = handler<unknown, { selectedEmoji: Cell<string> }>(
  (_event, { selectedEmoji }) => {
    selectedEmoji.set("");
  },
);

// ===== The Pattern =====
export const EmojiPicker = recipe<EmojiPickerInput, EmojiPickerInput>(
  "EmojiPicker",
  ({ selectedEmoji }) => {
    const displayText = computed(() =>
      selectedEmoji ? `Selected: ${selectedEmoji}` : "None"
    );

    return {
      [NAME]: computed(() => `${MODULE_METADATA.icon} Emoji: ${displayText}`),
      [UI]: (
        <ct-hstack style={{ gap: "8px", alignItems: "center" }}>
          <div
            style={{
              fontSize: "32px",
              lineHeight: "1",
              minWidth: "40px",
              textAlign: "center",
            }}
          >
            {selectedEmoji || "\u{2754}"}
          </div>
          <ct-autocomplete
            items={EMOJI_ITEMS}
            placeholder="Search emojis..."
            onct-select={onSelectEmoji({ selectedEmoji })}
            style={{ flex: "1" }}
          />
          <ct-button onClick={clearSelection({ selectedEmoji })}>
            Clear
          </ct-button>
        </ct-hstack>
      ),
      selectedEmoji,
    };
  },
);

export default EmojiPicker;
