import React, { useState, useRef, useEffect, useMemo } from "react";
import { FontAwesomeIcon } from "@fortawesome/react-fontawesome";
import {
    faFolder, faBriefcase, faBullseye, faRocket, faStar, faLightbulb,
    faFire, faPalette, faMusic, faMobileScreen, faLaptop, faGlobe,
    faHouse, faBuilding, faChartBar, faChartLine, faWrench, faBolt,
    faGamepad, faPen, faBook, faGraduationCap, faFlask, faMicroscope,
    faDumbbell, faUtensils, faPlane, faLeaf, faHeart, faCartShopping,
    faCoins, faGift, faCamera, faFilm, faBroom, faPaw, faEarthAmericas,
    faLock, faCheck, faCode, faCube, faUsers, faCar, faMountain,
    faUmbrella, faClock, faTag, faPhone, faEnvelope, faPrint,
    faDatabase, faServer, faCloud, faWifi, faBug, faShield,
    faBell, faBookmark, faCalendar, faCircleCheck, faCircleXmark,
    faComment, faCompass, faCreditCard, faCrown, faDiamond,
    faDisplay, faDownload, faDroplet, faEye, faFaceSmile,
    faFile, faFileCode, faFilter, faFingerprint, faFlag,
    faGear, faGlasses, faHandshake, faHashtag, faHeadphones,
    faHospital, faImage, faInbox, faInfinity, faKey,
    faLanguage, faLayerGroup, faLink, faListCheck, faMagnet,
    faMap, faMapPin, faMedal, faMessage, faMicrophone,
    faMoon, faNewspaper, faPaperPlane, faPaperclip, faPaste,
    faPeace, faPercent, faPersonRunning, faPiggyBank, faPills,
    faPuzzlePiece, faQrcode, faQuoteLeft, faRobot, faRotate,
    faRoute, faRuler, faScissors, faScrewdriverWrench, faSeedling,
    faShare, faShirt, faShop, faSignal, faSitemap,
    faSliders, faSnowflake, faSpa, faSquareCheck, faStethoscope,
    faSun, faTableCells, faTerminal, faThumbsUp, faToolbox,
    faTrashCan, faTrophy, faTruck, faTv, faUpload,
    faUserGear, faVault, faVideo, faVolumeHigh, faWallet,
    faWandMagicSparkles, faWarehouse, faWeight, faWindowMaximize,
    IconDefinition,
} from "@fortawesome/free-solid-svg-icons";
import Icon from "@mdi/react";
import {
    mdiHomeAssistant, mdiDocker, mdiGithub, mdiGitlab, mdiLinux, mdiApple,
    mdiMicrosoftWindows, mdiAndroid, mdiReact, mdiNodejs, mdiLanguagePython,
    mdiLanguageJavascript, mdiLanguageTypescript, mdiLanguageHtml5, mdiLanguageCss3,
    mdiAws, mdiGoogleCloud, mdiMicrosoftAzure, mdiKubernetes, mdiTerraform,
    mdiRaspberryPi, mdiNas, mdiRouter, mdiIpNetwork, mdiServerNetwork,
    mdiBabyCarriage, mdiDog, mdiCat, mdiFish, mdiBird,
    mdiFlower, mdiTree, mdiForest, mdiWeatherSunny, mdiWeatherRainy,
    mdiBicycle, mdiMotorbike, mdiTrain, mdiBus, mdiAirplane,
    mdiSailBoat, mdiSwim, mdiSki, mdiSoccer, mdiBasketball,
    mdiTennis, mdiGolf, mdiYoga, mdiMeditation, mdiRunFast,
    mdiFood, mdiFoodApple, mdiCoffee, mdiBeer, mdiGlassCocktail,
    mdiPizza, mdiCupcake, mdiIceCream, mdiGrill, mdiFridge,
    mdiWashingMachine, mdiVacuum, mdiSofa, mdiBed, mdiBathtub,
    mdiToilet, mdiLamp, mdiCeilingFan, mdiThermometer, mdiFireplace,
    mdiBriefcase, mdiCash, mdiCurrencyEur, mdiCurrencyUsd, mdiCurrencyBtc,
    mdiChartLine, mdiChartPie, mdiChartBar, mdiTrendingUp, mdiBank,
    mdiSchool, mdiBookOpenVariant, mdiNotebook, mdiPencil, mdiPaletteOutline,
    mdiMusic, mdiMovieOpen, mdiTelevision, mdiGamepadVariant, mdiPuzzle,
    mdiCamera, mdiMicrophone, mdiHeadphones, mdiSpeaker, mdiPrinter3d,
    mdiHeart, mdiHandHeart, mdiHumanMaleFemaleChild, mdiAccountGroup, mdiPartyPopper,
    mdiGift, mdiBalloon, mdiCake, mdiRing, mdiEmoticonHappy,
    mdiMedicalBag, mdiHospitalBox, mdiPill, mdiStethoscope, mdiTooth,
    mdiSecurity, mdiShieldCheck, mdiLock, mdiEyeOff, mdiVpn,
    mdiTools, mdiHammer, mdiScrewdriver, mdiWrench,
    mdiRecycle, mdiLeaf, mdiSprout, mdiEarth, mdiWaterOutline,
    mdiRocket, mdiBrain, mdiAtom, mdiDna, mdiMagnet,
    mdiCellphone, mdiTablet, mdiLaptop, mdiDesktopClassic, mdiWatch,
    // Additional icons
    mdiCampfire,
    mdiAnchor, mdiAnvil, mdiArchive, mdiAxe, mdiBadminton, mdiBaguette,
    mdiBalcony, mdiBandage, mdiBarcode, mdiBarn, mdiBarrel, mdiBaseball,
    mdiBat, mdiBeach, mdiBeaker, mdiBee, mdiBench, mdiBinoculars,
    mdiBillboard, mdiBilliards, mdiBlender, mdiBolt, mdiBomb,
    mdiBone, mdiBookshelf, mdiBoomerang, mdiBowling, mdiBridge,
    mdiBroom, mdiBrush, mdiBucket, mdiBulldozer, mdiBullhorn,
    mdiBusStop, mdiCactus, mdiCalculator, mdiCandle, mdiCandycane,
    mdiCaravan, mdiCarrot, mdiCastle, mdiCharity, mdiChessKnight,
    mdiChessRook, mdiChurch, mdiClipboard, mdiClover,
    mdiCoatRack, mdiCog, mdiCompass, mdiCone, mdiContentCut,
    mdiCookie, mdiCorn, mdiCow, mdiCricket,
    mdiCrosshairs, mdiCrystalBall, mdiCup, mdiCurling, mdiDiceMultiple,
    mdiDolly, mdiDoorOpen, mdiDrone, mdiDuck, mdiDumpTruck,
    mdiEgg, mdiElevator, mdiEmoticon, mdiEngine, mdiFan,
    mdiFeather, mdiFerry, mdiFire, mdiFireExtinguisher, mdiFireHydrant,
    mdiFireTruck, mdiFirework, mdiFlagCheckered, mdiFlash, mdiFlashlight,
    mdiGlassFlute, mdiFoodDrumstick, mdiFoodSteak, mdiFootball,
    mdiFountain, mdiFruitCherries, mdiFruitCitrus, mdiFruitGrapes, mdiFruitWatermelon,
    mdiGarage, mdiGasStation, mdiGavel, mdiGlassMug, mdiGlassWine,
    mdiGlasses, mdiGlobeModel, mdiGrass, mdiGreenhouse, mdiGuitarAcoustic,
    mdiPistol, mdiHandSaw, mdiHanger, mdiHardHat, mdiHarddisk,
    mdiHelicopter, mdiHighway, mdiHockeyPuck, mdiHook,
    mdiHorseshoe, mdiHotTub, mdiWeatherHurricane, mdiIsland,
    mdiKettle, mdiKite, mdiKnife, mdiLadder,
    mdiLeafMaple, mdiLibrary, mdiLifebuoy, mdiLighthouse, mdiLipstick,
    mdiMagicStaff, mdiMailbox, mdiMapMarker, mdiDominoMask,
    mdiMetronome, mdiMicrowave, mdiMirror, mdiMolecule,
    mdiMoped, mdiMortarPestle, mdiMosque, mdiMuffin, mdiMushroom,
    mdiMustache, mdiNail, mdiNoodles, mdiOctagon,
    mdiOrbit, mdiToasterOven, mdiPalmTree,
    mdiPanda, mdiPaperRoll, mdiParachute, mdiParking, mdiPassport,
    mdiPasta, mdiPeace, mdiPeanut, mdiPenguin,
    mdiPiano, mdiPillar, mdiPinwheel, mdiPipe, mdiPirate,
    mdiPoliceBadge, mdiPool, mdiPopcorn, mdiPost,
    mdiPot, mdiPropaneTank, mdiPumpkin, mdiRabbit,
    mdiRadiator, mdiRice, mdiRobot, mdiRollerSkate,
    mdiSafe, mdiSatellite, mdiScale,
    mdiScoreboard, mdiSeal, mdiShark, mdiSheep,
    mdiShoeSneaker, mdiShovel, mdiShredder, mdiSignRealEstate, mdiSilverware,
    mdiSkateboard, mdiSkull, mdiSnake, mdiSnowboard,
    mdiSnowman, mdiSolarPanel, mdiSpider, mdiSpray,
    mdiStadium, mdiStairs, mdiStarShooting, mdiSteering, mdiStove,
    mdiSubmarine, mdiSunglasses, mdiSword, mdiNeedle, mdiTaco,
    mdiTarget, mdiTeddyBear, mdiTelescope, mdiTent,
    mdiTie, mdiTimer, mdiWeatherTornado, mdiTractor, mdiTrafficCone,
    mdiTrafficLight, mdiTreasureChest, mdiTriangle, mdiTrophy,
    mdiFlowerTulip, mdiTurtle, mdiTypewriter, mdiUfo, mdiUnicorn,
    mdiViolin, mdiVolcano, mdiVolleyball, mdiWall,
    mdiWardrobe, mdiWaterfall, mdiWaterPolo, mdiWave, mdiWebcam,
    mdiWheelBarrow, mdiWhistle, mdiWindTurbine,
} from "@mdi/js";

// --- Icon Registry ---

interface IconEntry {
    name: string;
    keywords: string[];
    type: "fa" | "mdi";
    icon: IconDefinition | string; // FA IconDefinition or MDI path string
}

const faIcons: IconEntry[] = [
    { name: "folder", keywords: ["folder", "file", "directory", "project"], type: "fa", icon: faFolder },
    { name: "briefcase", keywords: ["briefcase", "work", "business", "job", "office"], type: "fa", icon: faBriefcase },
    { name: "bullseye", keywords: ["bullseye", "target", "goal", "aim"], type: "fa", icon: faBullseye },
    { name: "rocket", keywords: ["rocket", "launch", "startup", "space", "fast"], type: "fa", icon: faRocket },
    { name: "star", keywords: ["star", "favorite", "rating", "important"], type: "fa", icon: faStar },
    { name: "lightbulb", keywords: ["lightbulb", "idea", "innovation", "think"], type: "fa", icon: faLightbulb },
    { name: "fire", keywords: ["fire", "hot", "trending", "flame", "urgent"], type: "fa", icon: faFire },
    { name: "palette", keywords: ["palette", "art", "design", "color", "paint", "creative"], type: "fa", icon: faPalette },
    { name: "music", keywords: ["music", "audio", "song", "sound", "note"], type: "fa", icon: faMusic },
    { name: "mobile", keywords: ["mobile", "phone", "smartphone", "cell"], type: "fa", icon: faMobileScreen },
    { name: "laptop", keywords: ["laptop", "computer", "pc", "notebook"], type: "fa", icon: faLaptop },
    { name: "globe", keywords: ["globe", "world", "web", "internet", "global"], type: "fa", icon: faGlobe },
    { name: "house", keywords: ["house", "home", "residence", "living"], type: "fa", icon: faHouse },
    { name: "building", keywords: ["building", "office", "company", "corporate", "city"], type: "fa", icon: faBuilding },
    { name: "chart-bar", keywords: ["chart", "bar", "statistics", "analytics", "graph", "data"], type: "fa", icon: faChartBar },
    { name: "chart-line", keywords: ["chart", "line", "statistics", "analytics", "trend", "growth"], type: "fa", icon: faChartLine },
    { name: "wrench", keywords: ["wrench", "tool", "repair", "fix", "maintenance"], type: "fa", icon: faWrench },
    { name: "bolt", keywords: ["bolt", "lightning", "power", "energy", "electric", "fast"], type: "fa", icon: faBolt },
    { name: "gamepad", keywords: ["gamepad", "game", "gaming", "play", "controller"], type: "fa", icon: faGamepad },
    { name: "pen", keywords: ["pen", "write", "edit", "draw"], type: "fa", icon: faPen },
    { name: "book", keywords: ["book", "read", "library", "study", "education"], type: "fa", icon: faBook },
    { name: "graduation-cap", keywords: ["graduation", "education", "school", "university", "degree", "study"], type: "fa", icon: faGraduationCap },
    { name: "flask", keywords: ["flask", "science", "chemistry", "lab", "experiment"], type: "fa", icon: faFlask },
    { name: "microscope", keywords: ["microscope", "science", "research", "biology", "lab"], type: "fa", icon: faMicroscope },
    { name: "dumbbell", keywords: ["dumbbell", "gym", "fitness", "exercise", "workout", "sport"], type: "fa", icon: faDumbbell },
    { name: "utensils", keywords: ["utensils", "food", "restaurant", "eat", "dining", "cook"], type: "fa", icon: faUtensils },
    { name: "plane", keywords: ["plane", "flight", "travel", "airport", "vacation"], type: "fa", icon: faPlane },
    { name: "leaf", keywords: ["leaf", "nature", "plant", "eco", "green", "organic"], type: "fa", icon: faLeaf },
    { name: "heart", keywords: ["heart", "love", "health", "favorite", "like"], type: "fa", icon: faHeart },
    { name: "cart-shopping", keywords: ["cart", "shopping", "buy", "store", "ecommerce"], type: "fa", icon: faCartShopping },
    { name: "coins", keywords: ["coins", "money", "finance", "currency", "savings"], type: "fa", icon: faCoins },
    { name: "gift", keywords: ["gift", "present", "birthday", "surprise"], type: "fa", icon: faGift },
    { name: "camera", keywords: ["camera", "photo", "photography", "picture", "image"], type: "fa", icon: faCamera },
    { name: "film", keywords: ["film", "movie", "cinema", "video"], type: "fa", icon: faFilm },
    { name: "broom", keywords: ["broom", "clean", "sweep", "housework", "tidy"], type: "fa", icon: faBroom },
    { name: "paw", keywords: ["paw", "pet", "animal", "dog", "cat"], type: "fa", icon: faPaw },
    { name: "earth", keywords: ["earth", "world", "planet", "global", "environment"], type: "fa", icon: faEarthAmericas },
    { name: "lock", keywords: ["lock", "security", "password", "private", "safe"], type: "fa", icon: faLock },
    { name: "check", keywords: ["check", "done", "complete", "tick", "approve"], type: "fa", icon: faCheck },
    { name: "code", keywords: ["code", "programming", "developer", "software", "coding"], type: "fa", icon: faCode },
    { name: "cube", keywords: ["cube", "3d", "block", "box", "package"], type: "fa", icon: faCube },
    { name: "users", keywords: ["users", "team", "group", "people", "community"], type: "fa", icon: faUsers },
    { name: "car", keywords: ["car", "vehicle", "drive", "auto", "transport"], type: "fa", icon: faCar },
    { name: "mountain", keywords: ["mountain", "hiking", "outdoor", "adventure", "nature"], type: "fa", icon: faMountain },
    { name: "umbrella", keywords: ["umbrella", "rain", "weather", "protection"], type: "fa", icon: faUmbrella },
    { name: "clock", keywords: ["clock", "time", "schedule", "timer", "watch"], type: "fa", icon: faClock },
    { name: "tag", keywords: ["tag", "label", "category", "price"], type: "fa", icon: faTag },
    { name: "phone", keywords: ["phone", "call", "telephone", "contact"], type: "fa", icon: faPhone },
    { name: "envelope", keywords: ["envelope", "email", "mail", "message", "letter"], type: "fa", icon: faEnvelope },
    { name: "print", keywords: ["print", "printer", "paper", "document"], type: "fa", icon: faPrint },
    { name: "database", keywords: ["database", "data", "storage", "sql", "server"], type: "fa", icon: faDatabase },
    { name: "server", keywords: ["server", "hosting", "backend", "infrastructure"], type: "fa", icon: faServer },
    { name: "cloud", keywords: ["cloud", "storage", "upload", "saas", "hosting"], type: "fa", icon: faCloud },
    { name: "wifi", keywords: ["wifi", "wireless", "internet", "network", "connection"], type: "fa", icon: faWifi },
    { name: "bug", keywords: ["bug", "debug", "error", "issue", "testing"], type: "fa", icon: faBug },
    { name: "shield", keywords: ["shield", "security", "protection", "defense", "safe"], type: "fa", icon: faShield },
    { name: "bell", keywords: ["bell", "notification", "alert", "alarm", "reminder"], type: "fa", icon: faBell },
    { name: "bookmark", keywords: ["bookmark", "save", "favorite", "mark"], type: "fa", icon: faBookmark },
    { name: "calendar", keywords: ["calendar", "date", "schedule", "event", "planner"], type: "fa", icon: faCalendar },
    { name: "circle-check", keywords: ["circle", "check", "done", "approve", "success"], type: "fa", icon: faCircleCheck },
    { name: "circle-xmark", keywords: ["circle", "close", "cancel", "delete", "remove"], type: "fa", icon: faCircleXmark },
    { name: "comment", keywords: ["comment", "chat", "message", "discussion", "talk"], type: "fa", icon: faComment },
    { name: "compass", keywords: ["compass", "navigation", "direction", "explore"], type: "fa", icon: faCompass },
    { name: "credit-card", keywords: ["credit", "card", "payment", "bank", "finance"], type: "fa", icon: faCreditCard },
    { name: "crown", keywords: ["crown", "king", "premium", "vip", "royal"], type: "fa", icon: faCrown },
    { name: "diamond", keywords: ["diamond", "gem", "luxury", "premium", "jewel"], type: "fa", icon: faDiamond },
    { name: "display", keywords: ["display", "monitor", "screen", "desktop"], type: "fa", icon: faDisplay },
    { name: "download", keywords: ["download", "save", "get", "arrow"], type: "fa", icon: faDownload },
    { name: "droplet", keywords: ["droplet", "water", "liquid", "rain", "tear"], type: "fa", icon: faDroplet },
    { name: "eye", keywords: ["eye", "view", "see", "watch", "visible"], type: "fa", icon: faEye },
    { name: "face-smile", keywords: ["face", "smile", "happy", "emoji", "smiley"], type: "fa", icon: faFaceSmile },
    { name: "file", keywords: ["file", "document", "paper", "page"], type: "fa", icon: faFile },
    { name: "file-code", keywords: ["file", "code", "programming", "source", "script"], type: "fa", icon: faFileCode },
    { name: "filter", keywords: ["filter", "sort", "funnel", "search"], type: "fa", icon: faFilter },
    { name: "fingerprint", keywords: ["fingerprint", "identity", "biometric", "security"], type: "fa", icon: faFingerprint },
    { name: "flag", keywords: ["flag", "mark", "country", "report", "milestone"], type: "fa", icon: faFlag },
    { name: "gear", keywords: ["gear", "settings", "config", "options", "preferences"], type: "fa", icon: faGear },
    { name: "glasses", keywords: ["glasses", "read", "vision", "spectacles"], type: "fa", icon: faGlasses },
    { name: "handshake", keywords: ["handshake", "deal", "agreement", "partnership", "meeting"], type: "fa", icon: faHandshake },
    { name: "hashtag", keywords: ["hashtag", "number", "tag", "social", "trending"], type: "fa", icon: faHashtag },
    { name: "headphones", keywords: ["headphones", "audio", "music", "listen", "podcast"], type: "fa", icon: faHeadphones },
    { name: "hospital", keywords: ["hospital", "medical", "health", "doctor", "clinic"], type: "fa", icon: faHospital },
    { name: "image", keywords: ["image", "photo", "picture", "gallery"], type: "fa", icon: faImage },
    { name: "inbox", keywords: ["inbox", "mail", "email", "messages"], type: "fa", icon: faInbox },
    { name: "infinity", keywords: ["infinity", "loop", "endless", "unlimited"], type: "fa", icon: faInfinity },
    { name: "key", keywords: ["key", "access", "password", "unlock", "authentication"], type: "fa", icon: faKey },
    { name: "language", keywords: ["language", "translate", "i18n", "multilingual"], type: "fa", icon: faLanguage },
    { name: "layer-group", keywords: ["layer", "stack", "design", "photoshop"], type: "fa", icon: faLayerGroup },
    { name: "link", keywords: ["link", "chain", "url", "connection", "hyperlink"], type: "fa", icon: faLink },
    { name: "list-check", keywords: ["list", "check", "todo", "tasks", "checklist"], type: "fa", icon: faListCheck },
    { name: "magnet", keywords: ["magnet", "attract", "magnetic"], type: "fa", icon: faMagnet },
    { name: "map", keywords: ["map", "location", "geography", "navigation"], type: "fa", icon: faMap },
    { name: "map-pin", keywords: ["map", "pin", "location", "marker", "place"], type: "fa", icon: faMapPin },
    { name: "medal", keywords: ["medal", "award", "achievement", "winner", "prize"], type: "fa", icon: faMedal },
    { name: "message", keywords: ["message", "chat", "sms", "text", "conversation"], type: "fa", icon: faMessage },
    { name: "microphone", keywords: ["microphone", "audio", "record", "voice", "podcast"], type: "fa", icon: faMicrophone },
    { name: "moon", keywords: ["moon", "night", "dark", "sleep"], type: "fa", icon: faMoon },
    { name: "newspaper", keywords: ["newspaper", "news", "article", "press", "media"], type: "fa", icon: faNewspaper },
    { name: "paper-plane", keywords: ["paper", "plane", "send", "message", "email"], type: "fa", icon: faPaperPlane },
    { name: "paperclip", keywords: ["paperclip", "attach", "attachment", "file"], type: "fa", icon: faPaperclip },
    { name: "paste", keywords: ["paste", "clipboard", "copy"], type: "fa", icon: faPaste },
    { name: "peace", keywords: ["peace", "harmony", "symbol"], type: "fa", icon: faPeace },
    { name: "percent", keywords: ["percent", "discount", "sale", "percentage"], type: "fa", icon: faPercent },
    { name: "person-running", keywords: ["person", "running", "exercise", "sport", "fitness", "jogging"], type: "fa", icon: faPersonRunning },
    { name: "piggy-bank", keywords: ["piggy", "bank", "savings", "money", "finance"], type: "fa", icon: faPiggyBank },
    { name: "pills", keywords: ["pills", "medicine", "health", "pharmacy", "drug"], type: "fa", icon: faPills },
    { name: "puzzle-piece", keywords: ["puzzle", "piece", "plugin", "extension", "addon"], type: "fa", icon: faPuzzlePiece },
    { name: "qrcode", keywords: ["qr", "code", "scan", "barcode"], type: "fa", icon: faQrcode },
    { name: "quote-left", keywords: ["quote", "text", "citation", "blockquote"], type: "fa", icon: faQuoteLeft },
    { name: "robot", keywords: ["robot", "ai", "automation", "bot", "machine"], type: "fa", icon: faRobot },
    { name: "rotate", keywords: ["rotate", "refresh", "reload", "sync", "update"], type: "fa", icon: faRotate },
    { name: "route", keywords: ["route", "path", "direction", "way", "navigation"], type: "fa", icon: faRoute },
    { name: "ruler", keywords: ["ruler", "measure", "size", "length"], type: "fa", icon: faRuler },
    { name: "scissors", keywords: ["scissors", "cut", "trim", "clip"], type: "fa", icon: faScissors },
    { name: "screwdriver-wrench", keywords: ["screwdriver", "wrench", "tools", "repair", "fix", "maintenance"], type: "fa", icon: faScrewdriverWrench },
    { name: "seedling", keywords: ["seedling", "plant", "grow", "garden", "nature", "eco"], type: "fa", icon: faSeedling },
    { name: "share", keywords: ["share", "social", "send", "forward"], type: "fa", icon: faShare },
    { name: "shirt", keywords: ["shirt", "clothing", "fashion", "apparel"], type: "fa", icon: faShirt },
    { name: "shop", keywords: ["shop", "store", "retail", "market", "commerce"], type: "fa", icon: faShop },
    { name: "signal", keywords: ["signal", "reception", "antenna", "strength"], type: "fa", icon: faSignal },
    { name: "sitemap", keywords: ["sitemap", "structure", "hierarchy", "organization"], type: "fa", icon: faSitemap },
    { name: "sliders", keywords: ["sliders", "settings", "adjust", "control", "equalizer"], type: "fa", icon: faSliders },
    { name: "snowflake", keywords: ["snowflake", "winter", "cold", "freeze", "ice"], type: "fa", icon: faSnowflake },
    { name: "spa", keywords: ["spa", "wellness", "relax", "massage", "health"], type: "fa", icon: faSpa },
    { name: "square-check", keywords: ["square", "check", "checkbox", "done", "complete"], type: "fa", icon: faSquareCheck },
    { name: "stethoscope", keywords: ["stethoscope", "doctor", "medical", "health", "hospital"], type: "fa", icon: faStethoscope },
    { name: "sun", keywords: ["sun", "day", "light", "bright", "weather", "summer"], type: "fa", icon: faSun },
    { name: "table-cells", keywords: ["table", "grid", "spreadsheet", "data", "cells"], type: "fa", icon: faTableCells },
    { name: "terminal", keywords: ["terminal", "console", "command", "cli", "shell"], type: "fa", icon: faTerminal },
    { name: "thumbs-up", keywords: ["thumbs", "up", "like", "approve", "good"], type: "fa", icon: faThumbsUp },
    { name: "toolbox", keywords: ["toolbox", "tools", "repair", "kit", "equipment"], type: "fa", icon: faToolbox },
    { name: "trash-can", keywords: ["trash", "delete", "remove", "bin", "garbage"], type: "fa", icon: faTrashCan },
    { name: "trophy", keywords: ["trophy", "award", "winner", "champion", "prize", "achievement"], type: "fa", icon: faTrophy },
    { name: "truck", keywords: ["truck", "delivery", "shipping", "transport", "logistics"], type: "fa", icon: faTruck },
    { name: "tv", keywords: ["tv", "television", "screen", "monitor", "watch"], type: "fa", icon: faTv },
    { name: "upload", keywords: ["upload", "send", "cloud", "arrow"], type: "fa", icon: faUpload },
    { name: "user-gear", keywords: ["user", "gear", "admin", "settings", "account"], type: "fa", icon: faUserGear },
    { name: "vault", keywords: ["vault", "safe", "secure", "bank", "storage"], type: "fa", icon: faVault },
    { name: "video", keywords: ["video", "camera", "record", "film", "stream"], type: "fa", icon: faVideo },
    { name: "volume-high", keywords: ["volume", "sound", "audio", "speaker", "loud"], type: "fa", icon: faVolumeHigh },
    { name: "wallet", keywords: ["wallet", "money", "payment", "finance", "cash"], type: "fa", icon: faWallet },
    { name: "wand-magic", keywords: ["wand", "magic", "sparkle", "wizard", "auto"], type: "fa", icon: faWandMagicSparkles },
    { name: "warehouse", keywords: ["warehouse", "storage", "inventory", "logistics"], type: "fa", icon: faWarehouse },
    { name: "weight", keywords: ["weight", "scale", "heavy", "mass", "gym"], type: "fa", icon: faWeight },
    { name: "window", keywords: ["window", "browser", "app", "application"], type: "fa", icon: faWindowMaximize },
];

const mdiIcons: IconEntry[] = [
    // Smart Home & Tech
    { name: "mdi-home-assistant", keywords: ["home", "assistant", "smart", "automation", "iot", "homeassistant"], type: "mdi", icon: mdiHomeAssistant },
    { name: "mdi-docker", keywords: ["docker", "container", "devops", "deploy"], type: "mdi", icon: mdiDocker },
    { name: "mdi-github", keywords: ["github", "git", "repository", "code", "open source"], type: "mdi", icon: mdiGithub },
    { name: "mdi-gitlab", keywords: ["gitlab", "git", "repository", "code", "ci"], type: "mdi", icon: mdiGitlab },
    { name: "mdi-linux", keywords: ["linux", "os", "ubuntu", "debian", "penguin"], type: "mdi", icon: mdiLinux },
    { name: "mdi-apple", keywords: ["apple", "mac", "ios", "macos", "iphone"], type: "mdi", icon: mdiApple },
    { name: "mdi-windows", keywords: ["windows", "microsoft", "pc", "os"], type: "mdi", icon: mdiMicrosoftWindows },
    { name: "mdi-android", keywords: ["android", "google", "mobile", "phone"], type: "mdi", icon: mdiAndroid },
    { name: "mdi-react", keywords: ["react", "javascript", "frontend", "web", "component"], type: "mdi", icon: mdiReact },
    { name: "mdi-nodejs", keywords: ["node", "nodejs", "javascript", "backend", "server"], type: "mdi", icon: mdiNodejs },
    { name: "mdi-python", keywords: ["python", "programming", "language", "script"], type: "mdi", icon: mdiLanguagePython },
    { name: "mdi-javascript", keywords: ["javascript", "js", "programming", "web", "frontend"], type: "mdi", icon: mdiLanguageJavascript },
    { name: "mdi-typescript", keywords: ["typescript", "ts", "programming", "type", "web"], type: "mdi", icon: mdiLanguageTypescript },
    { name: "mdi-html5", keywords: ["html", "html5", "web", "markup", "frontend"], type: "mdi", icon: mdiLanguageHtml5 },
    { name: "mdi-css3", keywords: ["css", "css3", "style", "web", "frontend", "design"], type: "mdi", icon: mdiLanguageCss3 },
    { name: "mdi-aws", keywords: ["aws", "amazon", "cloud", "hosting"], type: "mdi", icon: mdiAws },
    { name: "mdi-gcloud", keywords: ["google", "cloud", "gcp", "hosting"], type: "mdi", icon: mdiGoogleCloud },
    { name: "mdi-azure", keywords: ["azure", "microsoft", "cloud", "hosting"], type: "mdi", icon: mdiMicrosoftAzure },
    { name: "mdi-kubernetes", keywords: ["kubernetes", "k8s", "container", "orchestration", "devops"], type: "mdi", icon: mdiKubernetes },
    { name: "mdi-terraform", keywords: ["terraform", "infrastructure", "iac", "devops", "cloud"], type: "mdi", icon: mdiTerraform },
    { name: "mdi-raspberry-pi", keywords: ["raspberry", "pi", "hardware", "iot", "maker"], type: "mdi", icon: mdiRaspberryPi },
    { name: "mdi-nas", keywords: ["nas", "storage", "network", "synology", "backup"], type: "mdi", icon: mdiNas },
    { name: "mdi-router", keywords: ["router", "network", "wifi", "internet"], type: "mdi", icon: mdiRouter },
    { name: "mdi-ip-network", keywords: ["ip", "network", "internet", "lan", "subnet"], type: "mdi", icon: mdiIpNetwork },
    { name: "mdi-server-network", keywords: ["server", "network", "hosting", "infrastructure", "datacenter"], type: "mdi", icon: mdiServerNetwork },
    // Devices
    { name: "mdi-cellphone", keywords: ["cellphone", "mobile", "phone", "smartphone"], type: "mdi", icon: mdiCellphone },
    { name: "mdi-tablet", keywords: ["tablet", "ipad", "device", "screen"], type: "mdi", icon: mdiTablet },
    { name: "mdi-laptop", keywords: ["laptop", "computer", "notebook", "macbook"], type: "mdi", icon: mdiLaptop },
    { name: "mdi-desktop", keywords: ["desktop", "computer", "pc", "monitor", "imac"], type: "mdi", icon: mdiDesktopClassic },
    { name: "mdi-watch", keywords: ["watch", "smartwatch", "wearable", "time"], type: "mdi", icon: mdiWatch },
    // Family & Pets
    { name: "mdi-baby", keywords: ["baby", "child", "infant", "family", "stroller", "kids"], type: "mdi", icon: mdiBabyCarriage },
    { name: "mdi-dog", keywords: ["dog", "pet", "animal", "puppy"], type: "mdi", icon: mdiDog },
    { name: "mdi-cat", keywords: ["cat", "pet", "animal", "kitten"], type: "mdi", icon: mdiCat },
    { name: "mdi-fish", keywords: ["fish", "aquarium", "pet", "sea", "ocean"], type: "mdi", icon: mdiFish },
    { name: "mdi-bird", keywords: ["bird", "pet", "animal", "fly", "parrot"], type: "mdi", icon: mdiBird },
    // Nature
    { name: "mdi-flower", keywords: ["flower", "garden", "plant", "nature", "bloom"], type: "mdi", icon: mdiFlower },
    { name: "mdi-tree", keywords: ["tree", "nature", "forest", "plant", "wood"], type: "mdi", icon: mdiTree },
    { name: "mdi-forest", keywords: ["forest", "trees", "nature", "woods", "park"], type: "mdi", icon: mdiForest },
    { name: "mdi-sunny", keywords: ["sun", "sunny", "weather", "bright", "summer", "warm"], type: "mdi", icon: mdiWeatherSunny },
    { name: "mdi-rainy", keywords: ["rain", "rainy", "weather", "storm", "wet"], type: "mdi", icon: mdiWeatherRainy },
    // Transport
    { name: "mdi-bicycle", keywords: ["bicycle", "bike", "cycling", "sport", "transport"], type: "mdi", icon: mdiBicycle },
    { name: "mdi-motorbike", keywords: ["motorbike", "motorcycle", "ride", "vehicle"], type: "mdi", icon: mdiMotorbike },
    { name: "mdi-train", keywords: ["train", "rail", "transport", "travel", "commute"], type: "mdi", icon: mdiTrain },
    { name: "mdi-bus", keywords: ["bus", "transport", "public", "commute", "travel"], type: "mdi", icon: mdiBus },
    { name: "mdi-airplane", keywords: ["airplane", "flight", "travel", "vacation", "airport"], type: "mdi", icon: mdiAirplane },
    { name: "mdi-sail", keywords: ["sail", "boat", "ship", "sea", "ocean", "sailing"], type: "mdi", icon: mdiSailBoat },
    // Sports & Fitness
    { name: "mdi-swim", keywords: ["swim", "pool", "water", "sport", "exercise"], type: "mdi", icon: mdiSwim },
    { name: "mdi-ski", keywords: ["ski", "skiing", "winter", "snow", "sport"], type: "mdi", icon: mdiSki },
    { name: "mdi-soccer", keywords: ["soccer", "football", "sport", "ball", "game"], type: "mdi", icon: mdiSoccer },
    { name: "mdi-basketball", keywords: ["basketball", "sport", "ball", "game", "nba"], type: "mdi", icon: mdiBasketball },
    { name: "mdi-tennis", keywords: ["tennis", "sport", "racket", "ball", "game"], type: "mdi", icon: mdiTennis },
    { name: "mdi-golf", keywords: ["golf", "sport", "club", "ball", "green"], type: "mdi", icon: mdiGolf },
    { name: "mdi-yoga", keywords: ["yoga", "meditation", "fitness", "relax", "stretch", "wellness"], type: "mdi", icon: mdiYoga },
    { name: "mdi-meditation", keywords: ["meditation", "mindfulness", "zen", "calm", "relax"], type: "mdi", icon: mdiMeditation },
    { name: "mdi-run", keywords: ["run", "running", "jogging", "sport", "fitness", "exercise"], type: "mdi", icon: mdiRunFast },
    // Food & Drink
    { name: "mdi-food", keywords: ["food", "meal", "eat", "dinner", "lunch", "restaurant"], type: "mdi", icon: mdiFood },
    { name: "mdi-apple-fruit", keywords: ["apple", "fruit", "food", "healthy", "snack"], type: "mdi", icon: mdiFoodApple },
    { name: "mdi-coffee", keywords: ["coffee", "cafe", "drink", "morning", "espresso", "latte"], type: "mdi", icon: mdiCoffee },
    { name: "mdi-beer", keywords: ["beer", "drink", "alcohol", "pub", "bar", "brewery"], type: "mdi", icon: mdiBeer },
    { name: "mdi-cocktail", keywords: ["cocktail", "drink", "alcohol", "bar", "party", "wine"], type: "mdi", icon: mdiGlassCocktail },
    { name: "mdi-pizza", keywords: ["pizza", "food", "italian", "fast food", "eat"], type: "mdi", icon: mdiPizza },
    { name: "mdi-cupcake", keywords: ["cupcake", "cake", "bake", "dessert", "sweet"], type: "mdi", icon: mdiCupcake },
    { name: "mdi-ice-cream", keywords: ["ice cream", "dessert", "sweet", "summer", "gelato"], type: "mdi", icon: mdiIceCream },
    { name: "mdi-grill", keywords: ["grill", "bbq", "barbecue", "cook", "outdoor", "food"], type: "mdi", icon: mdiGrill },
    // Home & Appliances
    { name: "mdi-fridge", keywords: ["fridge", "refrigerator", "kitchen", "appliance", "food"], type: "mdi", icon: mdiFridge },
    { name: "mdi-washing-machine", keywords: ["washing", "machine", "laundry", "clothes", "clean"], type: "mdi", icon: mdiWashingMachine },
    { name: "mdi-vacuum", keywords: ["vacuum", "clean", "floor", "housework", "appliance"], type: "mdi", icon: mdiVacuum },
    { name: "mdi-sofa", keywords: ["sofa", "couch", "living room", "furniture", "relax"], type: "mdi", icon: mdiSofa },
    { name: "mdi-bed", keywords: ["bed", "sleep", "bedroom", "rest", "furniture"], type: "mdi", icon: mdiBed },
    { name: "mdi-bathtub", keywords: ["bathtub", "bath", "bathroom", "shower", "wash"], type: "mdi", icon: mdiBathtub },
    { name: "mdi-toilet", keywords: ["toilet", "bathroom", "wc", "restroom"], type: "mdi", icon: mdiToilet },
    { name: "mdi-lamp", keywords: ["lamp", "light", "desk", "reading", "illumination"], type: "mdi", icon: mdiLamp },
    { name: "mdi-ceiling-fan", keywords: ["ceiling", "fan", "cool", "air", "ventilation"], type: "mdi", icon: mdiCeilingFan },
    { name: "mdi-thermometer", keywords: ["thermometer", "temperature", "heat", "cold", "weather"], type: "mdi", icon: mdiThermometer },
    { name: "mdi-fireplace", keywords: ["fireplace", "fire", "warm", "cozy", "chimney"], type: "mdi", icon: mdiFireplace },
    // Finance
    { name: "mdi-briefcase", keywords: ["briefcase", "work", "business", "job", "career"], type: "mdi", icon: mdiBriefcase },
    { name: "mdi-cash", keywords: ["cash", "money", "payment", "bills", "finance"], type: "mdi", icon: mdiCash },
    { name: "mdi-euro", keywords: ["euro", "currency", "money", "finance", "europe"], type: "mdi", icon: mdiCurrencyEur },
    { name: "mdi-dollar", keywords: ["dollar", "usd", "currency", "money", "finance", "us"], type: "mdi", icon: mdiCurrencyUsd },
    { name: "mdi-bitcoin", keywords: ["bitcoin", "btc", "crypto", "cryptocurrency", "blockchain"], type: "mdi", icon: mdiCurrencyBtc },
    { name: "mdi-chart-line", keywords: ["chart", "line", "trend", "analytics", "statistics"], type: "mdi", icon: mdiChartLine },
    { name: "mdi-chart-pie", keywords: ["chart", "pie", "analytics", "statistics", "data"], type: "mdi", icon: mdiChartPie },
    { name: "mdi-chart-bar", keywords: ["chart", "bar", "analytics", "statistics", "data", "graph"], type: "mdi", icon: mdiChartBar },
    { name: "mdi-trending-up", keywords: ["trending", "up", "growth", "increase", "profit"], type: "mdi", icon: mdiTrendingUp },
    { name: "mdi-bank", keywords: ["bank", "finance", "money", "institution", "savings"], type: "mdi", icon: mdiBank },
    // Education & Creative
    { name: "mdi-school", keywords: ["school", "education", "study", "learn", "university"], type: "mdi", icon: mdiSchool },
    { name: "mdi-book-open", keywords: ["book", "open", "read", "study", "library", "education"], type: "mdi", icon: mdiBookOpenVariant },
    { name: "mdi-notebook", keywords: ["notebook", "journal", "notes", "write", "diary"], type: "mdi", icon: mdiNotebook },
    { name: "mdi-pencil", keywords: ["pencil", "write", "draw", "edit", "sketch"], type: "mdi", icon: mdiPencil },
    { name: "mdi-palette", keywords: ["palette", "art", "paint", "design", "creative", "color"], type: "mdi", icon: mdiPaletteOutline },
    { name: "mdi-music", keywords: ["music", "note", "song", "audio", "melody"], type: "mdi", icon: mdiMusic },
    { name: "mdi-movie", keywords: ["movie", "film", "cinema", "video", "entertainment"], type: "mdi", icon: mdiMovieOpen },
    { name: "mdi-television", keywords: ["television", "tv", "screen", "watch", "show", "series"], type: "mdi", icon: mdiTelevision },
    { name: "mdi-gamepad", keywords: ["gamepad", "game", "gaming", "play", "controller", "console"], type: "mdi", icon: mdiGamepadVariant },
    { name: "mdi-puzzle", keywords: ["puzzle", "piece", "game", "solve", "jigsaw"], type: "mdi", icon: mdiPuzzle },
    { name: "mdi-camera", keywords: ["camera", "photo", "picture", "photography"], type: "mdi", icon: mdiCamera },
    { name: "mdi-microphone", keywords: ["microphone", "audio", "record", "voice", "podcast", "sing"], type: "mdi", icon: mdiMicrophone },
    { name: "mdi-headphones", keywords: ["headphones", "audio", "music", "listen"], type: "mdi", icon: mdiHeadphones },
    { name: "mdi-speaker", keywords: ["speaker", "audio", "sound", "music", "volume"], type: "mdi", icon: mdiSpeaker },
    { name: "mdi-3d-printer", keywords: ["3d", "printer", "print", "maker", "prototype"], type: "mdi", icon: mdiPrinter3d },
    // People & Events
    { name: "mdi-heart", keywords: ["heart", "love", "health", "favorite", "like", "romance"], type: "mdi", icon: mdiHeart },
    { name: "mdi-hand-heart", keywords: ["hand", "heart", "charity", "volunteer", "donate", "care"], type: "mdi", icon: mdiHandHeart },
    { name: "mdi-family", keywords: ["family", "parents", "children", "kids", "household"], type: "mdi", icon: mdiHumanMaleFemaleChild },
    { name: "mdi-group", keywords: ["group", "team", "people", "community", "users"], type: "mdi", icon: mdiAccountGroup },
    { name: "mdi-party", keywords: ["party", "celebration", "confetti", "event", "fun"], type: "mdi", icon: mdiPartyPopper },
    { name: "mdi-gift", keywords: ["gift", "present", "birthday", "surprise", "wrap"], type: "mdi", icon: mdiGift },
    { name: "mdi-balloon", keywords: ["balloon", "party", "celebration", "birthday", "fun"], type: "mdi", icon: mdiBalloon },
    { name: "mdi-cake", keywords: ["cake", "birthday", "celebration", "dessert", "party"], type: "mdi", icon: mdiCake },
    { name: "mdi-ring", keywords: ["ring", "wedding", "engagement", "marriage", "jewelry"], type: "mdi", icon: mdiRing },
    { name: "mdi-happy", keywords: ["happy", "smiley", "face", "emoji", "joy", "mood"], type: "mdi", icon: mdiEmoticonHappy },
    // Health
    { name: "mdi-medical", keywords: ["medical", "bag", "doctor", "health", "first aid"], type: "mdi", icon: mdiMedicalBag },
    { name: "mdi-hospital", keywords: ["hospital", "medical", "health", "clinic", "emergency"], type: "mdi", icon: mdiHospitalBox },
    { name: "mdi-pill", keywords: ["pill", "medicine", "drug", "pharmacy", "health"], type: "mdi", icon: mdiPill },
    { name: "mdi-stethoscope", keywords: ["stethoscope", "doctor", "medical", "health", "checkup"], type: "mdi", icon: mdiStethoscope },
    { name: "mdi-tooth", keywords: ["tooth", "dental", "dentist", "teeth", "health"], type: "mdi", icon: mdiTooth },
    // Security
    { name: "mdi-security", keywords: ["security", "guard", "protect", "safe", "shield"], type: "mdi", icon: mdiSecurity },
    { name: "mdi-shield-check", keywords: ["shield", "check", "verified", "secure", "safe"], type: "mdi", icon: mdiShieldCheck },
    { name: "mdi-lock", keywords: ["lock", "secure", "password", "private", "encrypted"], type: "mdi", icon: mdiLock },
    { name: "mdi-eye-off", keywords: ["eye", "off", "hidden", "privacy", "invisible"], type: "mdi", icon: mdiEyeOff },
    { name: "mdi-vpn", keywords: ["vpn", "network", "private", "secure", "tunnel"], type: "mdi", icon: mdiVpn },
    // Tools & DIY
    { name: "mdi-tools", keywords: ["tools", "repair", "fix", "maintenance", "kit"], type: "mdi", icon: mdiTools },
    { name: "mdi-hammer", keywords: ["hammer", "build", "construction", "nail", "diy"], type: "mdi", icon: mdiHammer },
    { name: "mdi-saw", keywords: ["saw", "cut", "wood", "diy", "construction"], type: "mdi", icon: mdiHandSaw },
    { name: "mdi-screwdriver", keywords: ["screwdriver", "repair", "fix", "tool", "diy"], type: "mdi", icon: mdiScrewdriver },
    { name: "mdi-wrench", keywords: ["wrench", "repair", "fix", "tool", "plumbing"], type: "mdi", icon: mdiWrench },
    // Environment
    { name: "mdi-recycle", keywords: ["recycle", "green", "environment", "eco", "sustainability"], type: "mdi", icon: mdiRecycle },
    { name: "mdi-leaf", keywords: ["leaf", "nature", "plant", "eco", "green", "organic"], type: "mdi", icon: mdiLeaf },
    { name: "mdi-sprout", keywords: ["sprout", "grow", "plant", "garden", "seedling"], type: "mdi", icon: mdiSprout },
    { name: "mdi-earth", keywords: ["earth", "world", "planet", "global", "environment"], type: "mdi", icon: mdiEarth },
    { name: "mdi-water", keywords: ["water", "drop", "liquid", "ocean", "sea", "hydrate"], type: "mdi", icon: mdiWaterOutline },
    // Science
    { name: "mdi-rocket", keywords: ["rocket", "space", "launch", "startup", "fast"], type: "mdi", icon: mdiRocket },
    { name: "mdi-brain", keywords: ["brain", "think", "mind", "intelligence", "ai", "neuro"], type: "mdi", icon: mdiBrain },
    { name: "mdi-atom", keywords: ["atom", "science", "physics", "nuclear", "chemistry"], type: "mdi", icon: mdiAtom },
    { name: "mdi-dna", keywords: ["dna", "genetics", "biology", "science", "genome"], type: "mdi", icon: mdiDna },
    { name: "mdi-magnet", keywords: ["magnet", "attract", "magnetic", "physics"], type: "mdi", icon: mdiMagnet },
    // Outdoor & Adventure
    { name: "mdi-anchor", keywords: ["anchor", "ship", "boat", "harbor", "marine", "sea"], type: "mdi", icon: mdiAnchor },
    { name: "mdi-beach", keywords: ["beach", "sand", "ocean", "vacation", "summer", "holiday"], type: "mdi", icon: mdiBeach },
    { name: "mdi-binoculars", keywords: ["binoculars", "watch", "spy", "observe", "explore"], type: "mdi", icon: mdiBinoculars },
    { name: "mdi-campfire", keywords: ["campfire", "fire", "camping", "outdoor", "bonfire"], type: "mdi", icon: mdiCampfire },
    { name: "mdi-compass", keywords: ["compass", "navigation", "direction", "explore", "north"], type: "mdi", icon: mdiCompass },
    { name: "mdi-island", keywords: ["island", "tropical", "palm", "vacation", "paradise"], type: "mdi", icon: mdiIsland },
    { name: "mdi-kite", keywords: ["kite", "wind", "fly", "outdoor", "fun"], type: "mdi", icon: mdiKite },
    { name: "mdi-lighthouse", keywords: ["lighthouse", "coast", "sea", "beacon", "navigation"], type: "mdi", icon: mdiLighthouse },
    { name: "mdi-palm", keywords: ["palm", "tree", "tropical", "beach", "vacation"], type: "mdi", icon: mdiPalmTree },
    { name: "mdi-parachute", keywords: ["parachute", "skydive", "adventure", "jump", "air"], type: "mdi", icon: mdiParachute },
    { name: "mdi-tent", keywords: ["tent", "camping", "outdoor", "hike", "adventure"], type: "mdi", icon: mdiTent },
    { name: "mdi-volcano", keywords: ["volcano", "lava", "eruption", "mountain", "nature"], type: "mdi", icon: mdiVolcano },
    { name: "mdi-waterfall", keywords: ["waterfall", "water", "nature", "cascade", "river"], type: "mdi", icon: mdiWaterfall },
    { name: "mdi-wave", keywords: ["wave", "ocean", "sea", "surf", "water"], type: "mdi", icon: mdiWave },
    // More Sports
    { name: "mdi-badminton", keywords: ["badminton", "sport", "racket", "shuttlecock"], type: "mdi", icon: mdiBadminton },
    { name: "mdi-baseball", keywords: ["baseball", "sport", "ball", "bat", "game"], type: "mdi", icon: mdiBaseball },
    { name: "mdi-bowling", keywords: ["bowling", "sport", "ball", "pins", "alley"], type: "mdi", icon: mdiBowling },
    { name: "mdi-cricket", keywords: ["cricket", "sport", "bat", "ball", "wicket"], type: "mdi", icon: mdiCricket },
    { name: "mdi-curling", keywords: ["curling", "sport", "ice", "stone", "winter"], type: "mdi", icon: mdiCurling },
    { name: "mdi-football", keywords: ["football", "american", "sport", "nfl", "ball"], type: "mdi", icon: mdiFootball },
    { name: "mdi-hockey", keywords: ["hockey", "ice", "sport", "puck", "stick"], type: "mdi", icon: mdiHockeyPuck },
    { name: "mdi-pool", keywords: ["pool", "billiards", "snooker", "game", "table"], type: "mdi", icon: mdiPool },
    { name: "mdi-skateboard", keywords: ["skateboard", "skate", "sport", "trick", "street"], type: "mdi", icon: mdiSkateboard },
    { name: "mdi-snowboard", keywords: ["snowboard", "snow", "winter", "sport", "mountain"], type: "mdi", icon: mdiSnowboard },
    { name: "mdi-volleyball", keywords: ["volleyball", "sport", "ball", "beach", "game"], type: "mdi", icon: mdiVolleyball },
    { name: "mdi-water-polo", keywords: ["water polo", "sport", "pool", "swim", "ball"], type: "mdi", icon: mdiWaterPolo },
    { name: "mdi-roller-skate", keywords: ["roller", "skate", "sport", "wheels", "inline"], type: "mdi", icon: mdiRollerSkate },
    { name: "mdi-billiards", keywords: ["billiards", "pool", "snooker", "cue", "table"], type: "mdi", icon: mdiBilliards },
    // Music Instruments
    { name: "mdi-guitar", keywords: ["guitar", "music", "instrument", "rock", "acoustic"], type: "mdi", icon: mdiGuitarAcoustic },
    { name: "mdi-piano", keywords: ["piano", "music", "instrument", "keyboard", "keys"], type: "mdi", icon: mdiPiano },
    { name: "mdi-violin", keywords: ["violin", "music", "instrument", "classical", "strings"], type: "mdi", icon: mdiViolin },
    { name: "mdi-metronome", keywords: ["metronome", "music", "tempo", "rhythm", "beat"], type: "mdi", icon: mdiMetronome },
    // More Food & Kitchen
    { name: "mdi-baguette", keywords: ["baguette", "bread", "french", "bakery", "food"], type: "mdi", icon: mdiBaguette },
    { name: "mdi-blender", keywords: ["blender", "mixer", "kitchen", "smoothie", "food"], type: "mdi", icon: mdiBlender },
    { name: "mdi-carrot", keywords: ["carrot", "vegetable", "food", "healthy", "garden"], type: "mdi", icon: mdiCarrot },
    { name: "mdi-cherries", keywords: ["cherry", "cherries", "fruit", "food", "sweet"], type: "mdi", icon: mdiFruitCherries },
    { name: "mdi-citrus", keywords: ["citrus", "orange", "lemon", "fruit", "food", "vitamin"], type: "mdi", icon: mdiFruitCitrus },
    { name: "mdi-cookie", keywords: ["cookie", "biscuit", "sweet", "snack", "bake"], type: "mdi", icon: mdiCookie },
    { name: "mdi-corn", keywords: ["corn", "maize", "vegetable", "food", "farm"], type: "mdi", icon: mdiCorn },
    { name: "mdi-drumstick", keywords: ["drumstick", "chicken", "meat", "food", "poultry"], type: "mdi", icon: mdiFoodDrumstick },
    { name: "mdi-egg", keywords: ["egg", "food", "breakfast", "cooking", "chicken"], type: "mdi", icon: mdiEgg },
    { name: "mdi-grapes", keywords: ["grapes", "fruit", "wine", "vineyard", "food"], type: "mdi", icon: mdiFruitGrapes },
    { name: "mdi-kettle", keywords: ["kettle", "tea", "water", "boil", "kitchen"], type: "mdi", icon: mdiKettle },
    { name: "mdi-microwave", keywords: ["microwave", "kitchen", "heat", "food", "appliance"], type: "mdi", icon: mdiMicrowave },
    { name: "mdi-muffin", keywords: ["muffin", "cake", "bake", "sweet", "dessert"], type: "mdi", icon: mdiMuffin },
    { name: "mdi-mushroom", keywords: ["mushroom", "food", "fungi", "forest", "nature"], type: "mdi", icon: mdiMushroom },
    { name: "mdi-noodles", keywords: ["noodles", "pasta", "ramen", "food", "asian"], type: "mdi", icon: mdiNoodles },
    { name: "mdi-oven", keywords: ["oven", "bake", "cook", "kitchen", "heat"], type: "mdi", icon: mdiToasterOven },
    { name: "mdi-pasta", keywords: ["pasta", "spaghetti", "italian", "food", "noodles"], type: "mdi", icon: mdiPasta },
    { name: "mdi-peanut", keywords: ["peanut", "nut", "snack", "food", "allergy"], type: "mdi", icon: mdiPeanut },
    { name: "mdi-popcorn", keywords: ["popcorn", "snack", "movie", "cinema", "food"], type: "mdi", icon: mdiPopcorn },
    { name: "mdi-pot", keywords: ["pot", "cook", "kitchen", "stew", "soup"], type: "mdi", icon: mdiPot },
    { name: "mdi-rice", keywords: ["rice", "grain", "food", "asian", "bowl"], type: "mdi", icon: mdiRice },
    { name: "mdi-steak", keywords: ["steak", "meat", "beef", "food", "grill", "bbq"], type: "mdi", icon: mdiFoodSteak },
    { name: "mdi-stove", keywords: ["stove", "cook", "kitchen", "burner", "gas"], type: "mdi", icon: mdiStove },
    { name: "mdi-taco", keywords: ["taco", "mexican", "food", "burrito", "wrap"], type: "mdi", icon: mdiTaco },
    { name: "mdi-watermelon", keywords: ["watermelon", "fruit", "summer", "food", "sweet"], type: "mdi", icon: mdiFruitWatermelon },
    { name: "mdi-glass-mug", keywords: ["glass", "mug", "beer", "drink", "pub"], type: "mdi", icon: mdiGlassMug },
    { name: "mdi-glass-wine", keywords: ["glass", "wine", "drink", "alcohol", "dinner"], type: "mdi", icon: mdiGlassWine },
    { name: "mdi-silverware", keywords: ["silverware", "cutlery", "fork", "knife", "dining"], type: "mdi", icon: mdiSilverware },
    { name: "mdi-candy-cane", keywords: ["candy", "cane", "christmas", "sweet", "holiday"], type: "mdi", icon: mdiCandycane },
    { name: "mdi-pumpkin", keywords: ["pumpkin", "halloween", "autumn", "food", "squash"], type: "mdi", icon: mdiPumpkin },
    // Animals
    { name: "mdi-bat", keywords: ["bat", "animal", "halloween", "night", "vampire"], type: "mdi", icon: mdiBat },
    { name: "mdi-bee", keywords: ["bee", "insect", "honey", "buzz", "pollinate"], type: "mdi", icon: mdiBee },
    { name: "mdi-cow", keywords: ["cow", "animal", "farm", "milk", "cattle"], type: "mdi", icon: mdiCow },
    { name: "mdi-duck", keywords: ["duck", "animal", "bird", "pond", "quack"], type: "mdi", icon: mdiDuck },
    { name: "mdi-penguin", keywords: ["penguin", "animal", "arctic", "bird", "ice", "linux"], type: "mdi", icon: mdiPenguin },
    { name: "mdi-panda", keywords: ["panda", "bear", "animal", "bamboo", "china"], type: "mdi", icon: mdiPanda },
    { name: "mdi-rabbit", keywords: ["rabbit", "bunny", "animal", "pet", "easter"], type: "mdi", icon: mdiRabbit },
    { name: "mdi-shark", keywords: ["shark", "fish", "ocean", "sea", "animal"], type: "mdi", icon: mdiShark },
    { name: "mdi-sheep", keywords: ["sheep", "animal", "farm", "wool", "lamb"], type: "mdi", icon: mdiSheep },
    { name: "mdi-snake", keywords: ["snake", "animal", "reptile", "python", "serpent"], type: "mdi", icon: mdiSnake },
    { name: "mdi-spider", keywords: ["spider", "insect", "web", "halloween", "arachnid"], type: "mdi", icon: mdiSpider },
    { name: "mdi-turtle", keywords: ["turtle", "animal", "slow", "shell", "reptile"], type: "mdi", icon: mdiTurtle },
    { name: "mdi-unicorn", keywords: ["unicorn", "fantasy", "magic", "horse", "mythical"], type: "mdi", icon: mdiUnicorn },
    // Home & Garden
    { name: "mdi-balcony", keywords: ["balcony", "terrace", "outdoor", "home", "patio"], type: "mdi", icon: mdiBalcony },
    { name: "mdi-barn", keywords: ["barn", "farm", "rural", "agriculture", "building"], type: "mdi", icon: mdiBarn },
    { name: "mdi-bench", keywords: ["bench", "park", "sit", "outdoor", "garden"], type: "mdi", icon: mdiBench },
    { name: "mdi-bridge", keywords: ["bridge", "crossing", "river", "road", "connect"], type: "mdi", icon: mdiBridge },
    { name: "mdi-cactus", keywords: ["cactus", "plant", "desert", "succulent", "garden"], type: "mdi", icon: mdiCactus },
    { name: "mdi-door-open", keywords: ["door", "open", "entrance", "exit", "room"], type: "mdi", icon: mdiDoorOpen },
    { name: "mdi-fountain", keywords: ["fountain", "water", "park", "garden", "decor"], type: "mdi", icon: mdiFountain },
    { name: "mdi-garage", keywords: ["garage", "car", "parking", "storage", "home"], type: "mdi", icon: mdiGarage },
    { name: "mdi-grass", keywords: ["grass", "lawn", "garden", "green", "yard"], type: "mdi", icon: mdiGrass },
    { name: "mdi-greenhouse", keywords: ["greenhouse", "garden", "plant", "grow", "glass"], type: "mdi", icon: mdiGreenhouse },
    { name: "mdi-hot-tub", keywords: ["hot tub", "jacuzzi", "spa", "relax", "bath"], type: "mdi", icon: mdiHotTub },
    { name: "mdi-leaf-maple", keywords: ["maple", "leaf", "autumn", "fall", "canada"], type: "mdi", icon: mdiLeafMaple },
    { name: "mdi-mailbox", keywords: ["mailbox", "mail", "letter", "post", "delivery"], type: "mdi", icon: mdiMailbox },
    { name: "mdi-solar-panel", keywords: ["solar", "panel", "energy", "sun", "green", "power"], type: "mdi", icon: mdiSolarPanel },
    { name: "mdi-stairs", keywords: ["stairs", "steps", "climb", "floor", "building"], type: "mdi", icon: mdiStairs },
    { name: "mdi-tulip", keywords: ["tulip", "flower", "garden", "spring", "plant"], type: "mdi", icon: mdiFlowerTulip },
    { name: "mdi-wardrobe", keywords: ["wardrobe", "closet", "clothes", "furniture", "bedroom"], type: "mdi", icon: mdiWardrobe },
    { name: "mdi-wheelbarrow", keywords: ["wheelbarrow", "garden", "dirt", "haul", "landscaping"], type: "mdi", icon: mdiWheelBarrow },
    { name: "mdi-wind-turbine", keywords: ["wind", "turbine", "energy", "green", "power", "renewable"], type: "mdi", icon: mdiWindTurbine },
    // Vehicles & Transport
    { name: "mdi-bus-stop", keywords: ["bus", "stop", "station", "public", "transport"], type: "mdi", icon: mdiBusStop },
    { name: "mdi-caravan", keywords: ["caravan", "rv", "camper", "travel", "road trip"], type: "mdi", icon: mdiCaravan },
    { name: "mdi-dump-truck", keywords: ["dump", "truck", "construction", "haul", "heavy"], type: "mdi", icon: mdiDumpTruck },
    { name: "mdi-ferry", keywords: ["ferry", "boat", "ship", "water", "transport"], type: "mdi", icon: mdiFerry },
    { name: "mdi-gas-station", keywords: ["gas", "station", "fuel", "petrol", "diesel"], type: "mdi", icon: mdiGasStation },
    { name: "mdi-helicopter", keywords: ["helicopter", "fly", "air", "chopper", "transport"], type: "mdi", icon: mdiHelicopter },
    { name: "mdi-highway", keywords: ["highway", "road", "drive", "freeway", "motorway"], type: "mdi", icon: mdiHighway },
    { name: "mdi-moped", keywords: ["moped", "scooter", "ride", "vespa", "motorcycle"], type: "mdi", icon: mdiMoped },
    { name: "mdi-parking", keywords: ["parking", "car", "lot", "space", "garage"], type: "mdi", icon: mdiParking },
    { name: "mdi-submarine", keywords: ["submarine", "underwater", "navy", "ocean", "dive"], type: "mdi", icon: mdiSubmarine },
    { name: "mdi-tractor", keywords: ["tractor", "farm", "agriculture", "field", "plow"], type: "mdi", icon: mdiTractor },
    { name: "mdi-traffic-cone", keywords: ["traffic", "cone", "construction", "road", "warning"], type: "mdi", icon: mdiTrafficCone },
    { name: "mdi-traffic-light", keywords: ["traffic", "light", "signal", "road", "stop"], type: "mdi", icon: mdiTrafficLight },
    { name: "mdi-ufo", keywords: ["ufo", "alien", "space", "flying saucer", "extraterrestrial"], type: "mdi", icon: mdiUfo },
    // Tools & Construction
    { name: "mdi-anvil", keywords: ["anvil", "forge", "blacksmith", "metal", "craft"], type: "mdi", icon: mdiAnvil },
    { name: "mdi-axe", keywords: ["axe", "chop", "wood", "lumber", "tool"], type: "mdi", icon: mdiAxe },
    { name: "mdi-barrel", keywords: ["barrel", "container", "storage", "wine", "oil"], type: "mdi", icon: mdiBarrel },
    { name: "mdi-brush", keywords: ["brush", "paint", "art", "clean", "tool"], type: "mdi", icon: mdiBrush },
    { name: "mdi-bucket", keywords: ["bucket", "pail", "water", "clean", "container"], type: "mdi", icon: mdiBucket },
    { name: "mdi-bulldozer", keywords: ["bulldozer", "construction", "heavy", "earth", "dig"], type: "mdi", icon: mdiBulldozer },
    { name: "mdi-dolly", keywords: ["dolly", "cart", "move", "transport", "warehouse"], type: "mdi", icon: mdiDolly },
    { name: "mdi-gavel", keywords: ["gavel", "judge", "court", "law", "justice", "auction"], type: "mdi", icon: mdiGavel },
    { name: "mdi-hard-hat", keywords: ["hard hat", "helmet", "construction", "safety", "work"], type: "mdi", icon: mdiHardHat },
    { name: "mdi-ladder", keywords: ["ladder", "climb", "step", "height", "tool"], type: "mdi", icon: mdiLadder },
    { name: "mdi-nail", keywords: ["nail", "hammer", "construction", "build", "wood"], type: "mdi", icon: mdiNail },
    { name: "mdi-pipe", keywords: ["pipe", "plumbing", "water", "tube", "connect"], type: "mdi", icon: mdiPipe },
    { name: "mdi-shovel", keywords: ["shovel", "dig", "garden", "earth", "tool"], type: "mdi", icon: mdiShovel },
    { name: "mdi-spray", keywords: ["spray", "paint", "can", "aerosol", "graffiti"], type: "mdi", icon: mdiSpray },
    // Fun & Toys
    { name: "mdi-boomerang", keywords: ["boomerang", "throw", "return", "toy", "australia"], type: "mdi", icon: mdiBoomerang },
    { name: "mdi-castle", keywords: ["castle", "fortress", "medieval", "king", "princess"], type: "mdi", icon: mdiCastle },
    { name: "mdi-chess-knight", keywords: ["chess", "knight", "game", "strategy", "board"], type: "mdi", icon: mdiChessKnight },
    { name: "mdi-chess-rook", keywords: ["chess", "rook", "game", "strategy", "board", "tower"], type: "mdi", icon: mdiChessRook },
    { name: "mdi-dice", keywords: ["dice", "game", "random", "roll", "chance", "board"], type: "mdi", icon: mdiDiceMultiple },
    { name: "mdi-drone", keywords: ["drone", "fly", "camera", "aerial", "quadcopter"], type: "mdi", icon: mdiDrone },
    { name: "mdi-firework", keywords: ["firework", "celebration", "party", "new year", "explosion"], type: "mdi", icon: mdiFirework },
    { name: "mdi-pinwheel", keywords: ["pinwheel", "toy", "wind", "spin", "colorful"], type: "mdi", icon: mdiPinwheel },
    { name: "mdi-pirate", keywords: ["pirate", "skull", "ship", "adventure", "treasure"], type: "mdi", icon: mdiPirate },
    { name: "mdi-robot", keywords: ["robot", "ai", "machine", "automation", "bot"], type: "mdi", icon: mdiRobot },
    { name: "mdi-snowman", keywords: ["snowman", "winter", "snow", "christmas", "cold"], type: "mdi", icon: mdiSnowman },
    { name: "mdi-sword", keywords: ["sword", "weapon", "fight", "medieval", "knight"], type: "mdi", icon: mdiSword },
    { name: "mdi-teddy-bear", keywords: ["teddy", "bear", "toy", "stuffed", "child", "kids"], type: "mdi", icon: mdiTeddyBear },
    { name: "mdi-treasure-chest", keywords: ["treasure", "chest", "gold", "pirate", "loot"], type: "mdi", icon: mdiTreasureChest },
    // Lifestyle & Fashion
    { name: "mdi-candle", keywords: ["candle", "light", "flame", "romantic", "relax", "scent"], type: "mdi", icon: mdiCandle },
    { name: "mdi-glasses", keywords: ["glasses", "sunglasses", "vision", "read", "eyewear"], type: "mdi", icon: mdiGlasses },
    { name: "mdi-hanger", keywords: ["hanger", "clothes", "wardrobe", "fashion", "closet"], type: "mdi", icon: mdiHanger },
    { name: "mdi-lipstick", keywords: ["lipstick", "makeup", "beauty", "cosmetics", "fashion"], type: "mdi", icon: mdiLipstick },
    { name: "mdi-mustache", keywords: ["mustache", "face", "gentleman", "barber", "style"], type: "mdi", icon: mdiMustache },
    { name: "mdi-shoe", keywords: ["shoe", "footwear", "sneaker", "fashion", "walk"], type: "mdi", icon: mdiShoeSneaker },
    { name: "mdi-sunglasses", keywords: ["sunglasses", "cool", "sun", "fashion", "summer"], type: "mdi", icon: mdiSunglasses },
    { name: "mdi-tie", keywords: ["tie", "business", "formal", "suit", "office"], type: "mdi", icon: mdiTie },
    // Miscellaneous
    { name: "mdi-archive", keywords: ["archive", "storage", "backup", "old", "box"], type: "mdi", icon: mdiArchive },
    { name: "mdi-bandage", keywords: ["bandage", "first aid", "wound", "medical", "plaster"], type: "mdi", icon: mdiBandage },
    { name: "mdi-barcode", keywords: ["barcode", "scan", "product", "shop", "inventory"], type: "mdi", icon: mdiBarcode },
    { name: "mdi-billboard", keywords: ["billboard", "advertising", "sign", "marketing", "ad"], type: "mdi", icon: mdiBillboard },
    { name: "mdi-bomb", keywords: ["bomb", "explosive", "danger", "warning", "blast"], type: "mdi", icon: mdiBomb },
    { name: "mdi-bone", keywords: ["bone", "skeleton", "dog", "anatomy", "medical"], type: "mdi", icon: mdiBone },
    { name: "mdi-bookshelf", keywords: ["bookshelf", "library", "books", "shelf", "read"], type: "mdi", icon: mdiBookshelf },
    { name: "mdi-bullhorn", keywords: ["bullhorn", "megaphone", "announce", "loud", "marketing"], type: "mdi", icon: mdiBullhorn },
    { name: "mdi-calculator", keywords: ["calculator", "math", "calculate", "numbers", "finance"], type: "mdi", icon: mdiCalculator },
    { name: "mdi-clipboard", keywords: ["clipboard", "paste", "copy", "notes", "list"], type: "mdi", icon: mdiClipboard },
    { name: "mdi-clover", keywords: ["clover", "luck", "irish", "shamrock", "four leaf"], type: "mdi", icon: mdiClover },
    { name: "mdi-cog", keywords: ["cog", "gear", "settings", "config", "mechanical"], type: "mdi", icon: mdiCog },
    { name: "mdi-crystal-ball", keywords: ["crystal", "ball", "magic", "fortune", "predict"], type: "mdi", icon: mdiCrystalBall },
    { name: "mdi-cup", keywords: ["cup", "drink", "tea", "mug", "hot"], type: "mdi", icon: mdiCup },
    { name: "mdi-elevator", keywords: ["elevator", "lift", "floor", "building", "up"], type: "mdi", icon: mdiElevator },
    { name: "mdi-engine", keywords: ["engine", "motor", "car", "power", "mechanical"], type: "mdi", icon: mdiEngine },
    { name: "mdi-fan", keywords: ["fan", "cool", "air", "ventilation", "spin"], type: "mdi", icon: mdiFan },
    { name: "mdi-feather", keywords: ["feather", "write", "quill", "bird", "light"], type: "mdi", icon: mdiFeather },
    { name: "mdi-fire-extinguisher", keywords: ["fire", "extinguisher", "safety", "emergency", "flame"], type: "mdi", icon: mdiFireExtinguisher },
    { name: "mdi-fire-hydrant", keywords: ["fire", "hydrant", "water", "emergency", "firefighter"], type: "mdi", icon: mdiFireHydrant },
    { name: "mdi-fire-truck", keywords: ["fire", "truck", "emergency", "firefighter", "rescue"], type: "mdi", icon: mdiFireTruck },
    { name: "mdi-flag-checkered", keywords: ["flag", "checkered", "race", "finish", "winner"], type: "mdi", icon: mdiFlagCheckered },
    { name: "mdi-flash", keywords: ["flash", "lightning", "bolt", "power", "energy", "fast"], type: "mdi", icon: mdiFlash },
    { name: "mdi-flashlight", keywords: ["flashlight", "torch", "light", "dark", "search"], type: "mdi", icon: mdiFlashlight },
    { name: "mdi-globe-model", keywords: ["globe", "world", "earth", "geography", "model"], type: "mdi", icon: mdiGlobeModel },
    { name: "mdi-harddisk", keywords: ["harddisk", "storage", "drive", "data", "computer"], type: "mdi", icon: mdiHarddisk },
    { name: "mdi-hook", keywords: ["hook", "hang", "catch", "fishing", "crane"], type: "mdi", icon: mdiHook },
    { name: "mdi-horseshoe", keywords: ["horseshoe", "luck", "horse", "equestrian", "ranch"], type: "mdi", icon: mdiHorseshoe },
    { name: "mdi-hurricane", keywords: ["hurricane", "storm", "weather", "tornado", "wind"], type: "mdi", icon: mdiWeatherHurricane },
    { name: "mdi-church", keywords: ["church", "religion", "christian", "worship", "building"], type: "mdi", icon: mdiChurch },
    { name: "mdi-knife", keywords: ["knife", "cut", "kitchen", "blade", "sharp"], type: "mdi", icon: mdiKnife },
    { name: "mdi-library", keywords: ["library", "books", "read", "study", "education"], type: "mdi", icon: mdiLibrary },
    { name: "mdi-lifebuoy", keywords: ["lifebuoy", "rescue", "safety", "swim", "help"], type: "mdi", icon: mdiLifebuoy },
    { name: "mdi-map-marker", keywords: ["map", "marker", "pin", "location", "gps", "place"], type: "mdi", icon: mdiMapMarker },
    { name: "mdi-mirror", keywords: ["mirror", "reflect", "bathroom", "vanity", "glass"], type: "mdi", icon: mdiMirror },
    { name: "mdi-molecule", keywords: ["molecule", "chemistry", "science", "atom", "bond"], type: "mdi", icon: mdiMolecule },
    { name: "mdi-mosque", keywords: ["mosque", "islam", "religion", "worship", "building"], type: "mdi", icon: mdiMosque },
    { name: "mdi-orbit", keywords: ["orbit", "space", "planet", "satellite", "rotate"], type: "mdi", icon: mdiOrbit },
    { name: "mdi-paper-roll", keywords: ["paper", "roll", "toilet", "tissue", "scroll"], type: "mdi", icon: mdiPaperRoll },
    { name: "mdi-passport", keywords: ["passport", "travel", "identity", "document", "border"], type: "mdi", icon: mdiPassport },
    { name: "mdi-pillar", keywords: ["pillar", "column", "architecture", "greek", "building"], type: "mdi", icon: mdiPillar },
    { name: "mdi-police-badge", keywords: ["police", "badge", "law", "officer", "authority"], type: "mdi", icon: mdiPoliceBadge },
    { name: "mdi-radiator", keywords: ["radiator", "heat", "warm", "heating", "home"], type: "mdi", icon: mdiRadiator },
    { name: "mdi-safe", keywords: ["safe", "vault", "secure", "money", "lock"], type: "mdi", icon: mdiSafe },
    { name: "mdi-satellite", keywords: ["satellite", "space", "orbit", "signal", "communication"], type: "mdi", icon: mdiSatellite },
    { name: "mdi-scale", keywords: ["scale", "weight", "balance", "measure", "justice"], type: "mdi", icon: mdiScale },
    { name: "mdi-seal", keywords: ["seal", "stamp", "certificate", "official", "approve"], type: "mdi", icon: mdiSeal },
    { name: "mdi-sign-real-estate", keywords: ["sign", "real estate", "house", "sale", "property"], type: "mdi", icon: mdiSignRealEstate },
    { name: "mdi-skull", keywords: ["skull", "death", "danger", "pirate", "halloween", "skeleton"], type: "mdi", icon: mdiSkull },
    { name: "mdi-stadium", keywords: ["stadium", "arena", "sport", "concert", "event"], type: "mdi", icon: mdiStadium },
    { name: "mdi-star-shooting", keywords: ["star", "shooting", "wish", "meteor", "night"], type: "mdi", icon: mdiStarShooting },
    { name: "mdi-steering", keywords: ["steering", "wheel", "drive", "car", "vehicle"], type: "mdi", icon: mdiSteering },
    { name: "mdi-syringe", keywords: ["syringe", "injection", "vaccine", "medical", "needle"], type: "mdi", icon: mdiNeedle },
    { name: "mdi-target", keywords: ["target", "aim", "goal", "bullseye", "focus"], type: "mdi", icon: mdiTarget },
    { name: "mdi-telescope", keywords: ["telescope", "astronomy", "space", "star", "observe"], type: "mdi", icon: mdiTelescope },
    { name: "mdi-timer", keywords: ["timer", "stopwatch", "countdown", "time", "speed"], type: "mdi", icon: mdiTimer },
    { name: "mdi-tornado", keywords: ["tornado", "storm", "wind", "weather", "twister"], type: "mdi", icon: mdiWeatherTornado },
    { name: "mdi-trophy", keywords: ["trophy", "award", "winner", "champion", "cup", "prize"], type: "mdi", icon: mdiTrophy },
    { name: "mdi-typewriter", keywords: ["typewriter", "write", "vintage", "text", "author"], type: "mdi", icon: mdiTypewriter },
    { name: "mdi-webcam", keywords: ["webcam", "camera", "video", "stream", "call"], type: "mdi", icon: mdiWebcam },
    { name: "mdi-whistle", keywords: ["whistle", "referee", "sport", "blow", "signal"], type: "mdi", icon: mdiWhistle },
    { name: "mdi-beaker", keywords: ["beaker", "lab", "science", "chemistry", "experiment"], type: "mdi", icon: mdiBeaker },
    { name: "mdi-mortar-pestle", keywords: ["mortar", "pestle", "pharmacy", "grind", "spice", "medicine"], type: "mdi", icon: mdiMortarPestle },
    { name: "mdi-charity", keywords: ["charity", "donate", "help", "volunteer", "give"], type: "mdi", icon: mdiCharity },
    { name: "mdi-coat-rack", keywords: ["coat", "rack", "hanger", "hall", "stand"], type: "mdi", icon: mdiCoatRack },
    { name: "mdi-propane-tank", keywords: ["propane", "tank", "gas", "grill", "fuel"], type: "mdi", icon: mdiPropaneTank },
];

const allIcons: IconEntry[] = [...faIcons, ...mdiIcons];

// --- Component ---

interface IconPickerProps {
    selectedIcon: string;
    onSelect: (iconName: string) => void;
    darkMode: boolean;
}

export default function IconPicker({ selectedIcon, onSelect, darkMode }: IconPickerProps) {
    const [search, setSearch] = useState("");
    const [activeTab, setActiveTab] = useState<"all" | "fa" | "mdi">("all");
    const searchRef = useRef<HTMLInputElement>(null);

    useEffect(() => {
        searchRef.current?.focus();
    }, []);

    const filtered = useMemo(() => {
        const source = activeTab === "all" ? allIcons : activeTab === "fa" ? faIcons : mdiIcons;
        if (!search.trim()) return source;
        const terms = search.toLowerCase().split(/\s+/);
        return source.filter(entry =>
            terms.every(term =>
                entry.name.toLowerCase().includes(term) ||
                entry.keywords.some(kw => kw.includes(term))
            )
        );
    }, [search, activeTab]);

    const bg = darkMode ? "#2a2a3a" : "#fff";
    const border = darkMode ? "#555" : "#e5e7eb";
    const textColor = darkMode ? "#d1d5db" : "#555";
    const activeBg = darkMode ? "#374151" : "#e0e7ff";
    const hoverBg = darkMode ? "#333" : "#f3f4f6";
    const tabActiveBg = darkMode ? "#374151" : "#e0e7ff";
    const tabColor = darkMode ? "#9ca3af" : "#888";

    return (
        <div style={{
            background: bg,
            border: `1px solid ${border}`,
            borderRadius: "12px",
            padding: "8px",
            boxShadow: "0 8px 24px rgba(0,0,0,0.2)",
            width: "300px",
        }}>
            {/* Search */}
            <input
                ref={searchRef}
                type="text"
                value={search}
                onChange={e => setSearch(e.target.value)}
                placeholder="Search icons..."
                style={{
                    width: "100%",
                    padding: "6px 10px",
                    border: `1px solid ${border}`,
                    borderRadius: "8px",
                    background: darkMode ? "#1e1e2e" : "#f9fafb",
                    color: darkMode ? "#e5e7eb" : "#333",
                    fontSize: "0.8rem",
                    outline: "none",
                    boxSizing: "border-box",
                    marginBottom: "6px",
                }}
            />
            {/* Tabs */}
            <div style={{ display: "flex", gap: "2px", marginBottom: "6px" }}>
                {(["all", "fa", "mdi"] as const).map(tab => (
                    <button
                        key={tab}
                        onClick={() => setActiveTab(tab)}
                        style={{
                            flex: 1,
                            padding: "3px 6px",
                            fontSize: "0.7rem",
                            fontWeight: activeTab === tab ? 600 : 400,
                            border: "none",
                            borderRadius: "6px",
                            cursor: "pointer",
                            background: activeTab === tab ? tabActiveBg : "transparent",
                            color: activeTab === tab ? (darkMode ? "#e5e7eb" : "#333") : tabColor,
                        }}
                    >
                        {tab === "all" ? `All (${allIcons.length})` : tab === "fa" ? "FontAwesome" : "Material"}
                    </button>
                ))}
            </div>
            {/* Grid */}
            <div style={{
                display: "grid",
                gridTemplateColumns: "repeat(8, 1fr)",
                gap: "2px",
                maxHeight: "240px",
                overflowY: "auto",
            }}>
                {filtered.map(entry => (
                    <button
                        key={entry.name}
                        onClick={() => onSelect(entry.name)}
                        title={entry.name}
                        style={{
                            width: "32px",
                            height: "32px",
                            border: "none",
                            background: selectedIcon === entry.name ? activeBg : "transparent",
                            borderRadius: "6px",
                            cursor: "pointer",
                            display: "flex",
                            alignItems: "center",
                            justifyContent: "center",
                            color: textColor,
                        }}
                        onMouseEnter={e => {
                            if (selectedIcon !== entry.name) (e.currentTarget as HTMLButtonElement).style.background = hoverBg;
                        }}
                        onMouseLeave={e => {
                            if (selectedIcon !== entry.name) (e.currentTarget as HTMLButtonElement).style.background = "transparent";
                        }}
                    >
                        {entry.type === "fa" ? (
                            <FontAwesomeIcon icon={entry.icon as IconDefinition} style={{ fontSize: "14px" }} />
                        ) : (
                            <Icon path={entry.icon as string} size={0.6} />
                        )}
                    </button>
                ))}
                {filtered.length === 0 && (
                    <div style={{ gridColumn: "1 / -1", textAlign: "center", padding: "16px", color: tabColor, fontSize: "0.8rem" }}>
                        No icons found
                    </div>
                )}
            </div>
        </div>
    );
}

// Re-export for use in ProjectIcon renderer
export { allIcons, type IconEntry };
