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(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 (
{/* Search */} 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 */}
{(["all", "fa", "mdi"] as const).map(tab => ( ))}
{/* Grid */}
{filtered.map(entry => ( ))} {filtered.length === 0 && (
No icons found
)}
); } // Re-export for use in ProjectIcon renderer export { allIcons, type IconEntry };