export type EmojiItem = { char: string; keywords?: string[] };

export type EmojiCategory = {
  id: string;
  label: string;
  tab: string;
  emojis: EmojiItem[];
};

export const EMOJI_CATEGORIES: EmojiCategory[] = [
  {
    id: "smileys",
    label: "اموجی و افراد",
    tab: "😀",
    emojis: [
      { char: "😀", keywords: ["خند", "smile"] },
      { char: "😃", keywords: ["خند"] },
      { char: "😄", keywords: ["خند"] },
      { char: "😁", keywords: ["خند"] },
      { char: "😆", keywords: ["خند"] },
      { char: "😅", keywords: ["عرق"] },
      { char: "🤣", keywords: ["خند", "اشک"] },
      { char: "😂", keywords: ["خند", "اشک"] },
      { char: "🙂", keywords: ["لبخند"] },
      { char: "😉", keywords: ["چشمک"] },
      { char: "😊", keywords: ["خجالت"] },
      { char: "😇", keywords: ["فرشته"] },
      { char: "🥰", keywords: ["عشق"] },
      { char: "😍", keywords: ["عشق", "قلب"] },
      { char: "🤩", keywords: ["ستاره"] },
      { char: "😘", keywords: ["بوس"] },
      { char: "😗", keywords: ["بوس"] },
      { char: "😋", keywords: ["خوشمزه"] },
      { char: "😛", keywords: ["زبان"] },
      { char: "😜", keywords: ["چشمک"] },
      { char: "🤪", keywords: ["دیوانه"] },
      { char: "😝", keywords: ["زبان"] },
      { char: "🤑", keywords: ["پول"] },
      { char: "🤗", keywords: ["بغل"] },
      { char: "🤭", keywords: ["خجالت"] },
      { char: "🤫", keywords: ["سکوت"] },
      { char: "🤔", keywords: ["فکر"] },
      { char: "😐", keywords: ["خنثی"] },
      { char: "😑", keywords: ["بیحال"] },
      { char: "😶", keywords: ["سکوت"] },
      { char: "😏", keywords: ["لبخند"] },
      { char: "😒", keywords: ["ناراحت"] },
      { char: "🙄", keywords: ["چشم"] },
      { char: "😬", keywords: ["گرینگ"] },
      { char: "😌", keywords: ["آرام"] },
      { char: "😔", keywords: ["غمگین"] },
      { char: "😪", keywords: ["خواب"] },
      { char: "🤤", keywords: ["بزاق"] },
      { char: "😴", keywords: ["خواب"] },
      { char: "😷", keywords: ["ماسک"] },
      { char: "🤒", keywords: ["مریض"] },
      { char: "🤕", keywords: ["زخمی"] },
      { char: "🤢", keywords: ["حالت"] },
      { char: "🤮", keywords: ["استفراغ"] },
      { char: "🥵", keywords: ["گرم"] },
      { char: "🥶", keywords: ["سرد"] },
      { char: "🥴", keywords: ["گیج"] },
      { char: "😵", keywords: ["گیج"] },
      { char: "🤯", keywords: ["شگفت"] },
      { char: "🤠", keywords: ["کابوی"] },
      { char: "🥳", keywords: ["جشن"] },
      { char: "😎", keywords: ["عینک"] },
      { char: "🤓", keywords: ["عینک"] },
      { char: "🧐", keywords: ["ذره"] },
      { char: "😕", keywords: ["گیج"] },
      { char: "😟", keywords: ["نگران"] },
      { char: "🙁", keywords: ["ناراحت"] },
      { char: "☹️", keywords: ["ناراحت"] },
      { char: "😮", keywords: ["تعجب"] },
      { char: "😯", keywords: ["تعجب"] },
      { char: "😲", keywords: ["تعجب"] },
      { char: "😳", keywords: ["خجالت"] },
      { char: "🥺", keywords: ["لطف"] },
      { char: "😦", keywords: ["تعجب"] },
      { char: "😧", keywords: ["نگران"] },
      { char: "😨", keywords: ["ترس"] },
      { char: "😰", keywords: ["عرق"] },
      { char: "😥", keywords: ["غم"] },
      { char: "😢", keywords: ["گریه"] },
      { char: "😭", keywords: ["گریه"] },
      { char: "😱", keywords: ["ترس"] },
      { char: "😖", keywords: ["ناراحت"] },
      { char: "😣", keywords: ["تحمل"] },
      { char: "😞", keywords: ["ناامید"] },
      { char: "😓", keywords: ["عرق"] },
      { char: "😩", keywords: ["خسته"] },
      { char: "😫", keywords: ["خسته"] },
      { char: "🥱", keywords: ["خمیازه"] },
      { char: "😤", keywords: ["عصبانی"] },
      { char: "😡", keywords: ["عصبانی"] },
      { char: "😠", keywords: ["عصبانی"] },
      { char: "🤬", keywords: ["فحش"] },
      { char: "👋", keywords: ["دست", "سلام"] },
      { char: "🤚", keywords: ["دست"] },
      { char: "🖐️", keywords: ["دست"] },
      { char: "✋", keywords: ["دست", "توقف"] },
      { char: "🖖", keywords: ["دست"] },
      { char: "👌", keywords: ["اوکی"] },
      { char: "🤌", keywords: ["دست"] },
      { char: "🤏", keywords: ["کم"] },
      { char: "✌️", keywords: ["پیروز"] },
      { char: "🤞", keywords: ["انگشت"] },
      { char: "🤟", keywords: ["دست"] },
      { char: "🤘", keywords: ["راک"] },
      { char: "🤙", keywords: ["تماس"] },
      { char: "👈", keywords: ["چپ"] },
      { char: "👉", keywords: ["راست"] },
      { char: "👆", keywords: ["بالا"] },
      { char: "👇", keywords: ["پایین"] },
      { char: "☝️", keywords: ["یک"] },
      { char: "👍", keywords: ["عالی", "اوکی"] },
      { char: "👎", keywords: ["بد"] },
      { char: "✊", keywords: ["مشت"] },
      { char: "👊", keywords: ["مشت"] },
      { char: "🤛", keywords: ["مشت"] },
      { char: "🤜", keywords: ["مشت"] },
      { char: "👏", keywords: ["کف", "تشویق"] },
      { char: "🙌", keywords: ["دست"] },
      { char: "👐", keywords: ["دست"] },
      { char: "🤲", keywords: ["دعا"] },
      { char: "🙏", keywords: ["دعا", "ممنون"] },
      { char: "💪", keywords: ["قدرت"] },
    ],
  },
  {
    id: "hearts",
    label: "قلب و احساس",
    tab: "❤️",
    emojis: [
      { char: "❤️", keywords: ["عشق", "قلب"] },
      { char: "🧡", keywords: ["قلب"] },
      { char: "💛", keywords: ["قلب"] },
      { char: "💚", keywords: ["قلب"] },
      { char: "💙", keywords: ["قلب"] },
      { char: "💜", keywords: ["قلب"] },
      { char: "🖤", keywords: ["قلب"] },
      { char: "🤍", keywords: ["قلب"] },
      { char: "🤎", keywords: ["قلب"] },
      { char: "💔", keywords: ["شکسته"] },
      { char: "❣️", keywords: ["قلب"] },
      { char: "💕", keywords: ["عشق"] },
      { char: "💞", keywords: ["عشق"] },
      { char: "💓", keywords: ["تپش"] },
      { char: "💗", keywords: ["عشق"] },
      { char: "💖", keywords: ["درخشان"] },
      { char: "💘", keywords: ["عشق"] },
      { char: "💝", keywords: ["هدیه"] },
      { char: "💟", keywords: ["قلب"] },
      { char: "✨", keywords: ["درخشش"] },
      { char: "⭐", keywords: ["ستاره"] },
      { char: "🌟", keywords: ["ستاره"] },
      { char: "💫", keywords: ["ستاره"] },
      { char: "🔥", keywords: ["آتش"] },
      { char: "💯", keywords: ["صد"] },
      { char: "✅", keywords: ["تایید"] },
      { char: "❌", keywords: ["رد"] },
      { char: "❗", keywords: ["علامت"] },
      { char: "❓", keywords: ["سوال"] },
      { char: "‼️", keywords: ["علامت"] },
      { char: "💢", keywords: ["عصبانی"] },
    ],
  },
  {
    id: "animals",
    label: "حیوانات",
    tab: "🐱",
    emojis: [
      { char: "🐶", keywords: ["سگ"] },
      { char: "🐱", keywords: ["گربه"] },
      { char: "🐭", keywords: ["موش"] },
      { char: "🐹", keywords: ["همستر"] },
      { char: "🐰", keywords: ["خرگوش"] },
      { char: "🦊", keywords: ["روباه"] },
      { char: "🐻", keywords: ["خرس"] },
      { char: "🐼", keywords: ["پanda"] },
      { char: "🐨", keywords: ["کوالا"] },
      { char: "🐯", keywords: ["ببر"] },
      { char: "🦁", keywords: ["شیر"] },
      { char: "🐮", keywords: ["گاو"] },
      { char: "🐷", keywords: ["خوک"] },
      { char: "🐸", keywords: ["قورباغه"] },
      { char: "🐵", keywords: ["میمون"] },
      { char: "🐔", keywords: ["مرغ"] },
      { char: "🐧", keywords: ["پنگوئن"] },
      { char: "🐦", keywords: ["پرنده"] },
      { char: "🦆", keywords: ["اردک"] },
      { char: "🦅", keywords: ["عقاب"] },
      { char: "🦉", keywords: ["جغد"] },
      { char: "🐴", keywords: ["اسب"] },
      { char: "🦄", keywords: ["تک‌شاخ"] },
      { char: "🐝", keywords: ["زنبور"] },
      { char: "🦋", keywords: ["پروانه"] },
      { char: "🐌", keywords: ["حلزون"] },
      { char: "🐢", keywords: ["لاک‌پشت"] },
      { char: "🐍", keywords: ["مار"] },
      { char: "🐬", keywords: ["دلفین"] },
      { char: "🐳", keywords: ["نهنگ"] },
      { char: "🦈", keywords: ["کوسه"] },
    ],
  },
  {
    id: "food",
    label: "غذا",
    tab: "🍎",
    emojis: [
      { char: "🍎", keywords: ["سیب"] },
      { char: "🍐", keywords: ["گلابی"] },
      { char: "🍊", keywords: ["پرتقال"] },
      { char: "🍋", keywords: ["لیمو"] },
      { char: "🍌", keywords: ["موز"] },
      { char: "🍉", keywords: ["هندوانه"] },
      { char: "🍇", keywords: ["انگور"] },
      { char: "🍓", keywords: ["توت"] },
      { char: "🫐", keywords: ["بلوبری"] },
      { char: "🍒", keywords: ["گیلاس"] },
      { char: "🍑", keywords: ["هلو"] },
      { char: "🥭", keywords: ["انبه"] },
      { char: "🍍", keywords: ["آناناس"] },
      { char: "🥥", keywords: ["نارگیل"] },
      { char: "🥝", keywords: ["کیوی"] },
      { char: "🍅", keywords: ["گوجه"] },
      { char: "🥑", keywords: ["آووکادو"] },
      { char: "🍆", keywords: ["بادمجان"] },
      { char: "🥦", keywords: ["بروکلی"] },
      { char: "🥕", keywords: ["هویج"] },
      { char: "🌽", keywords: ["ذرت"] },
      { char: "🍞", keywords: ["نان"] },
      { char: "🥐", keywords: ["کروسان"] },
      { char: "🥖", keywords: ["نان"] },
      { char: "🧀", keywords: ["پنیر"] },
      { char: "🥚", keywords: ["تخم"] },
      { char: "🍳", keywords: ["تخم"] },
      { char: "🥞", keywords: ["پنکیک"] },
      { char: "🧇", keywords: ["وافل"] },
      { char: "🍕", keywords: ["پیتزا"] },
      { char: "🍔", keywords: ["همبرگر"] },
      { char: "🍟", keywords: ["سیب"] },
      { char: "🌭", keywords: ["هات"] },
      { char: "🥪", keywords: ["ساندwich"] },
      { char: "🌮", keywords: ["تاکو"] },
      { char: "🍝", keywords: ["ماکارونی"] },
      { char: "🍜", keywords: ["نودل"] },
      { char: "🍣", keywords: ["سوشی"] },
      { char: "🍰", keywords: ["کیک"] },
      { char: "🎂", keywords: ["تولد"] },
      { char: "🍩", keywords: ["دونات"] },
      { char: "🍪", keywords: ["کوکی"] },
      { char: "🍫", keywords: ["شکلات"] },
      { char: "🍬", keywords: ["آبنبات"] },
      { char: "☕", keywords: ["قهوه"] },
      { char: "🍵", keywords: ["چای"] },
      { char: "🧃", keywords: ["آبمیوه"] },
      { char: "🥤", keywords: ["نوشیدنی"] },
    ],
  },
  {
    id: "activities",
    label: "فعالیت",
    tab: "⚽",
    emojis: [
      { char: "⚽", keywords: ["فوتبال"] },
      { char: "🏀", keywords: ["بسکتبال"] },
      { char: "🏈", keywords: ["فوتبال"] },
      { char: "⚾", keywords: ["بیسبال"] },
      { char: "🎾", keywords: ["تنیس"] },
      { char: "🏐", keywords: ["والیبال"] },
      { char: "🏓", keywords: ["پینگ"] },
      { char: "🏸", keywords: ["بدمinton"] },
      { char: "🥊", keywords: ["بوکس"] },
      { char: "🎯", keywords: ["هدف"] },
      { char: "🎳", keywords: ["بولینگ"] },
      { char: "🎮", keywords: ["بازی"] },
      { char: "🎲", keywords: ["تاس"] },
      { char: "🧩", keywords: ["پازل"] },
      { char: "🎨", keywords: ["هنر"] },
      { char: "🎭", keywords: ["تئاتر"] },
      { char: "🎬", keywords: ["فیلم"] },
      { char: "🎤", keywords: ["میکروفون"] },
      { char: "🎧", keywords: ["هدفون"] },
      { char: "🎼", keywords: ["موسیقی"] },
      { char: "🎹", keywords: ["پیانو"] },
      { char: "🎸", keywords: ["گیتار"] },
      { char: "🎺", keywords: ["ترومپت"] },
      { char: "🎻", keywords: ["ویولن"] },
      { char: "🏆", keywords: ["جام"] },
      { char: "🥇", keywords: ["طلا"] },
      { char: "🥈", keywords: ["نقره"] },
      { char: "🥉", keywords: ["برنز"] },
      { char: "🏅", keywords: ["مدال"] },
      { char: "🎁", keywords: ["هدیه"] },
      { char: "🎉", keywords: ["جشن"] },
      { char: "🎊", keywords: ["جشن"] },
      { char: "🎈", keywords: ["بادکنک"] },
      { char: "🎀", keywords: ["پاپیون"] },
    ],
  },
  {
    id: "school",
    label: "مدرسه",
    tab: "📚",
    emojis: [
      { char: "📚", keywords: ["کتاب", "درس"] },
      { char: "📖", keywords: ["کتاب"] },
      { char: "📝", keywords: ["یادداشت", "تکلیف"] },
      { char: "✏️", keywords: ["مداد"] },
      { char: "🖊️", keywords: ["خودکار"] },
      { char: "🖍️", keywords: ["مداد"] },
      { char: "📐", keywords: ["خط", "ریاضی"] },
      { char: "📏", keywords: ["خط"] },
      { char: "📌", keywords: ["سنجاق"] },
      { char: "📎", keywords: ["گیره"] },
      { char: "🖇️", keywords: ["گیره"] },
      { char: "📁", keywords: ["پوشه"] },
      { char: "📂", keywords: ["پوشه"] },
      { char: "🗂️", keywords: ["پوشه"] },
      { char: "📅", keywords: ["تقویم"] },
      { char: "📆", keywords: ["تقویم"] },
      { char: "🗓️", keywords: ["تقویم"] },
      { char: "⏰", keywords: ["ساعت"] },
      { char: "⏳", keywords: ["زمان"] },
      { char: "⌛", keywords: ["زمان"] },
      { char: "🔔", keywords: ["زنگ"] },
      { char: "🎓", keywords: ["فارغ", "مدرسه"] },
      { char: "🏫", keywords: ["مدرسه"] },
      { char: "👨‍🏫", keywords: ["معلم"] },
      { char: "👩‍🏫", keywords: ["معلم"] },
      { char: "🧑‍🎓", keywords: ["دانشجو"] },
      { char: "👨‍🎓", keywords: ["دانشجو"] },
      { char: "👩‍🎓", keywords: ["دانشجو"] },
      { char: "💡", keywords: ["ایده", "لامپ"] },
      { char: "🔬", keywords: ["علوم"] },
      { char: "🔭", keywords: ["نجوم"] },
      { char: "🧮", keywords: ["ماشین", "حساب"] },
      { char: "🧪", keywords: ["آزمایش"] },
      { char: "📊", keywords: ["نمودار"] },
      { char: "📈", keywords: ["نمودار"] },
      { char: "✅", keywords: ["درست"] },
      { char: "❌", keywords: ["غلط"] },
      { char: "⭐", keywords: ["ستاره", "نمره"] },
    ],
  },
  {
    id: "objects",
    label: "اشیا",
    tab: "💡",
    emojis: [
      { char: "📱", keywords: ["موبایل"] },
      { char: "💻", keywords: ["لپتاپ"] },
      { char: "🖥️", keywords: ["کامپیوتر"] },
      { char: "⌨️", keywords: ["کیبورد"] },
      { char: "🖱️", keywords: ["ماوس"] },
      { char: "📷", keywords: ["دوربین"] },
      { char: "📸", keywords: ["عکس"] },
      { char: "📹", keywords: ["ویدیو"] },
      { char: "🎥", keywords: ["فیلم"] },
      { char: "📺", keywords: ["تلویزیون"] },
      { char: "🔦", keywords: ["چراغ"] },
      { char: "💡", keywords: ["لامپ"] },
      { char: "🔋", keywords: ["باتری"] },
      { char: "🔌", keywords: ["برق"] },
      { char: "🔑", keywords: ["کلید"] },
      { char: "🗝️", keywords: ["کلید"] },
      { char: "🔒", keywords: ["قفل"] },
      { char: "🔓", keywords: ["باز"] },
      { char: "📦", keywords: ["جعبه"] },
      { char: "✉️", keywords: ["نامه"] },
      { char: "📧", keywords: ["ایمیل"] },
      { char: "📩", keywords: ["پیام"] },
      { char: "📨", keywords: ["نامه"] },
      { char: "📬", keywords: ["پست"] },
      { char: "🗑️", keywords: ["سطل"] },
      { char: "🛒", keywords: ["خرید"] },
      { char: "💰", keywords: ["پول"] },
      { char: "💳", keywords: ["کارت"] },
      { char: "🎒", keywords: ["کوله"] },
      { char: "👜", keywords: ["کیف"] },
      { char: "👓", keywords: ["عینک"] },
      { char: "🕶️", keywords: ["عینک"] },
      { char: "☂️", keywords: ["چتر"] },
      { char: "🌂", keywords: ["چتر"] },
    ],
  },
  {
    id: "nature",
    label: "طبیعت",
    tab: "🌸",
    emojis: [
      { char: "🌸", keywords: ["گل"] },
      { char: "🌺", keywords: ["گل"] },
      { char: "🌻", keywords: ["آفتابگردان"] },
      { char: "🌹", keywords: ["رز"] },
      { char: "🌷", keywords: ["لاله"] },
      { char: "🌱", keywords: ["جوانه"] },
      { char: "🌿", keywords: ["برگ"] },
      { char: "🍀", keywords: ["شبدر"] },
      { char: "🍁", keywords: ["برگ"] },
      { char: "🍂", keywords: ["پاییز"] },
      { char: "🍃", keywords: ["باد"] },
      { char: "🌍", keywords: ["زمین"] },
      { char: "🌎", keywords: ["زمین"] },
      { char: "🌏", keywords: ["زمین"] },
      { char: "🌕", keywords: ["ماه"] },
      { char: "🌙", keywords: ["ماه"] },
      { char: "⭐", keywords: ["ستاره"] },
      { char: "🌟", keywords: ["ستاره"] },
      { char: "✨", keywords: ["درخشش"] },
      { char: "⚡", keywords: ["برق"] },
      { char: "🔥", keywords: ["آتش"] },
      { char: "🌈", keywords: ["رنگین"] },
      { char: "☀️", keywords: ["خورشید"] },
      { char: "🌤️", keywords: ["ابر"] },
      { char: "⛅", keywords: ["ابر"] },
      { char: "🌧️", keywords: ["باران"] },
      { char: "⛄", keywords: ["برف"] },
      { char: "❄️", keywords: ["برف"] },
      { char: "🌊", keywords: ["موج"] },
    ],
  },
];

export function searchEmojis(query: string): EmojiItem[] {
  const q = query.trim().toLowerCase();
  if (!q) return [];
  const seen = new Set<string>();
  const out: EmojiItem[] = [];
  for (const cat of EMOJI_CATEGORIES) {
    for (const item of cat.emojis) {
      if (seen.has(item.char)) continue;
      const hit =
        item.char.includes(q) ||
        item.keywords?.some((k) => k.toLowerCase().includes(q));
      if (hit) {
        seen.add(item.char);
        out.push(item);
      }
    }
  }
  return out;
}

export function allEmojisFlat(): EmojiItem[] {
  const seen = new Set<string>();
  const out: EmojiItem[] = [];
  for (const cat of EMOJI_CATEGORIES) {
    for (const item of cat.emojis) {
      if (!seen.has(item.char)) {
        seen.add(item.char);
        out.push(item);
      }
    }
  }
  return out;
}
