tide-commander 1.75.0 → 1.76.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (38) hide show
  1. package/dist/assets/{BossLogsModal-zgU4bJCC.js → BossLogsModal-BSAIyY5Q.js} +1 -1
  2. package/dist/assets/{BossSpawnModal-CpIKJJg-.js → BossSpawnModal-DWG3vywZ.js} +1 -1
  3. package/dist/assets/{ControlsModal-DtgIcdVS.js → ControlsModal-D7sQMy9U.js} +1 -1
  4. package/dist/assets/{DockerLogsModal-D_L7V-4J.js → DockerLogsModal-BxebN9cf.js} +1 -1
  5. package/dist/assets/{EmbeddedEditor-Dp-ni_0-.js → EmbeddedEditor-BJ7l5Zuf.js} +1 -1
  6. package/dist/assets/{GmailOAuthSetup-ChNYMY0L.js → GmailOAuthSetup-CzdqIXK3.js} +1 -1
  7. package/dist/assets/{GoogleOAuthSetup-D8Svmp1q.js → GoogleOAuthSetup-DKjU--mc.js} +1 -1
  8. package/dist/assets/{IframeModal-DZKuQ8yg.js → IframeModal-DkK8asfI.js} +1 -1
  9. package/dist/assets/{IntegrationsPanel-D6n9toD7.js → IntegrationsPanel--yZ_3y5S.js} +2 -2
  10. package/dist/assets/{LogViewerModal-D39zaEBu.js → LogViewerModal-CxAnXG6j.js} +1 -1
  11. package/dist/assets/{MonitoringModal--xeaRySJ.js → MonitoringModal-B2AaGtlF.js} +1 -1
  12. package/dist/assets/{PM2LogsModal-DCMfD-1P.js → PM2LogsModal-auR8lVnW.js} +1 -1
  13. package/dist/assets/{RestoreArchivedAreaModal-PXDQ5bgM.js → RestoreArchivedAreaModal-BJn-apo4.js} +1 -1
  14. package/dist/assets/{Scene2DCanvas-DI6ma9Bq.js → Scene2DCanvas-Q-FykJjz.js} +1 -1
  15. package/dist/assets/{SceneManager-BC5pQh74.js → SceneManager-JpuslnCc.js} +1 -1
  16. package/dist/assets/{SkillsPanel-DW0Hg7aS.js → SkillsPanel-BYfp0jLH.js} +2 -2
  17. package/dist/assets/{SpawnModal-qTu1uEr_.js → SpawnModal-_wxlHhYk.js} +1 -1
  18. package/dist/assets/{SubordinateAssignmentModal--nlGf-YQ.js → SubordinateAssignmentModal-tvfKFyRh.js} +1 -1
  19. package/dist/assets/{TriggerManagerPanel-CxC7fKWg.js → TriggerManagerPanel-DRKDuQAM.js} +1 -1
  20. package/dist/assets/{WorkflowEditorPanel-BZdJ-r-o.js → WorkflowEditorPanel-BPBBCTem.js} +1 -1
  21. package/dist/assets/{index-CmgyNPZ8.js → index-B87wqtN7.js} +1 -1
  22. package/dist/assets/{index-Cj5PMAWN.js → index-C8wnSaGW.js} +1 -1
  23. package/dist/assets/{index-B2lMVBaQ.js → index-CNo8F4Hv.js} +1 -1
  24. package/dist/assets/index-CPEajh-P.js +2 -0
  25. package/dist/assets/{index-z_X_5i8B.js → index-DIDFZjvm.js} +5 -5
  26. package/dist/assets/{index-CApTVPt4.js → index-DybFI3Yz.js} +3 -3
  27. package/dist/assets/{index-CKChsLUr.js → index-W693QVuI.js} +1 -1
  28. package/dist/assets/index-bu2bf20Y.js +2 -0
  29. package/dist/assets/{index-DvodeLUF.js → index-snzCcqn6.js} +3 -3
  30. package/dist/assets/{main-BjcLCHKw.js → main-CjPuuFGh.js} +88 -88
  31. package/dist/assets/main-Co2mNETL.css +1 -0
  32. package/dist/assets/{web-iMMHHHFW.js → web-Bd3T_lvT.js} +1 -1
  33. package/dist/assets/{web-C7yID6Q0.js → web-CY6mLlQ5.js} +1 -1
  34. package/dist/index.html +2 -2
  35. package/package.json +1 -1
  36. package/dist/assets/index-BJGkjKD9.js +0 -2
  37. package/dist/assets/index-DTmsNGgH.js +0 -2
  38. package/dist/assets/main-CVksVK2O.css +0 -1
@@ -1,4 +1,4 @@
1
- import{u as Ie,bO as oo,z as so,r as i,h as Ee,j as e,C as we,s as x,bP as ro,bQ as to,bR as ao,aP as Le,l as K,k as ze,aw as io,a8 as lo,ax as co,bS as I,U as no,aC as Pe,I as yo,aB as Me}from"./main-BjcLCHKw.js";import"./vendor-react--Eh9ivFN.js";import"./vendor-three-Chj50gSY.js";const mo=[{value:"scout",labelKey:"tools:skills.classScout",descriptionKey:"tools:skills.classScoutDesc"},{value:"builder",labelKey:"tools:skills.classBuilder",descriptionKey:"tools:skills.classBuilderDesc"},{value:"debugger",labelKey:"tools:skills.classDebugger",descriptionKey:"tools:skills.classDebuggerDesc"},{value:"architect",labelKey:"tools:skills.classArchitect",descriptionKey:"tools:skills.classArchitectDesc"},{value:"warrior",labelKey:"tools:skills.classWarrior",descriptionKey:"tools:skills.classWarriorDesc"},{value:"support",labelKey:"tools:skills.classSupport",descriptionKey:"tools:skills.classSupportDesc"},{value:"boss",labelKey:"tools:skills.classBoss",descriptionKey:"tools:skills.classBossDesc"}],go=[{labelKey:"tools:skills.toolReadFiles",value:"Read"},{labelKey:"tools:skills.toolWriteFiles",value:"Write"},{labelKey:"tools:skills.toolEditFiles",value:"Edit"},{labelKey:"tools:skills.toolRunBash",value:"Bash"},{labelKey:"tools:skills.toolGitCommands",value:"Bash(git:*)"},{labelKey:"tools:skills.toolNpmCommands",value:"Bash(npm:*)"},{labelKey:"tools:skills.toolDockerCommands",value:"Bash(docker:*)"},{labelKey:"tools:skills.toolKubectlCommands",value:"Bash(kubectl:*)"},{labelKey:"tools:skills.toolSearchFiles",value:"Grep"},{labelKey:"tools:skills.toolGlobFiles",value:"Glob"},{labelKey:"tools:skills.toolWebFetch",value:"WebFetch"},{labelKey:"tools:skills.toolWebSearch",value:"WebSearch"}],po=`## Instructions
1
+ import{u as Ie,bR as oo,z as so,r as i,h as Ee,j as e,C as we,s as x,bS as ro,bT as to,bU as ao,aS as Le,l as K,k as ze,az as io,ab as lo,aA as co,bV as I,V as no,aF as Pe,I as yo,aE as Me}from"./main-CjPuuFGh.js";import"./vendor-react--Eh9ivFN.js";import"./vendor-three-Chj50gSY.js";const mo=[{value:"scout",labelKey:"tools:skills.classScout",descriptionKey:"tools:skills.classScoutDesc"},{value:"builder",labelKey:"tools:skills.classBuilder",descriptionKey:"tools:skills.classBuilderDesc"},{value:"debugger",labelKey:"tools:skills.classDebugger",descriptionKey:"tools:skills.classDebuggerDesc"},{value:"architect",labelKey:"tools:skills.classArchitect",descriptionKey:"tools:skills.classArchitectDesc"},{value:"warrior",labelKey:"tools:skills.classWarrior",descriptionKey:"tools:skills.classWarriorDesc"},{value:"support",labelKey:"tools:skills.classSupport",descriptionKey:"tools:skills.classSupportDesc"},{value:"boss",labelKey:"tools:skills.classBoss",descriptionKey:"tools:skills.classBossDesc"}],go=[{labelKey:"tools:skills.toolReadFiles",value:"Read"},{labelKey:"tools:skills.toolWriteFiles",value:"Write"},{labelKey:"tools:skills.toolEditFiles",value:"Edit"},{labelKey:"tools:skills.toolRunBash",value:"Bash"},{labelKey:"tools:skills.toolGitCommands",value:"Bash(git:*)"},{labelKey:"tools:skills.toolNpmCommands",value:"Bash(npm:*)"},{labelKey:"tools:skills.toolDockerCommands",value:"Bash(docker:*)"},{labelKey:"tools:skills.toolKubectlCommands",value:"Bash(kubectl:*)"},{labelKey:"tools:skills.toolSearchFiles",value:"Grep"},{labelKey:"tools:skills.toolGlobFiles",value:"Glob"},{labelKey:"tools:skills.toolWebFetch",value:"WebFetch"},{labelKey:"tools:skills.toolWebSearch",value:"WebSearch"}],po=`## Instructions
2
2
 
3
3
  Describe step-by-step instructions for this skill here.
4
4
 
@@ -19,7 +19,7 @@ Show concrete examples of using this skill.
19
19
 
20
20
  - List important safety considerations
21
21
  - Warn about destructive operations
22
- `;function ko({isOpen:l,onClose:d,skillId:s}){const{t}=Ie(["tools","common"]),c=oo(s??null),k=so(),n=!!c,y=(c==null?void 0:c.builtin)===!0,[b,g]=i.useState(""),[h,p]=i.useState(""),[S,N]=i.useState(""),[w,U]=i.useState(""),[j,W]=i.useState([]),[O,ee]=i.useState(""),[C,E]=i.useState([]),[z,P]=i.useState([]),[$,D]=i.useState(!0),[_,Y]=i.useState(!1),[L,G]=i.useState(null),[oe,V]=i.useState(!1),se=i.useRef(null),re=i.useRef(null);i.useEffect(()=>{l&&(c?(g(c.name),p(c.slug),N(c.description),U(c.content||""),W(c.allowedTools||[]),E(c.assignedAgentIds||[]),P(c.assignedAgentClasses||[]),D(c.enabled)):(g(t("tools:skills.newSkillDefault")),p(""),N(""),U(po),W([]),E([]),P([]),D(!0)),ee(""),Y(!1),setTimeout(()=>{var a;return(a=se.current)==null?void 0:a.focus()},100))},[l,c]),i.useEffect(()=>{if(!n&&b){const a=b.toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-|-$/g,"").substring(0,64);p(a)}},[b,n]);const ce=a=>{if(a.preventDefault(),y&&s){x.updateSkill(s,{assignedAgentIds:C,assignedAgentClasses:z,enabled:$}),d();return}if(!b.trim()||!S.trim())return;const u={name:b.trim(),slug:h.trim()||b.toLowerCase().replace(/[^a-z0-9]+/g,"-"),description:S.trim(),content:w.trim(),allowedTools:j,assignedAgentIds:C,assignedAgentClasses:z,enabled:$};if(n&&s){if(c&&(c.name!==u.name||c.description!==u.description||c.content!==u.content||c.enabled!==u.enabled||JSON.stringify(c.allowedTools)!==JSON.stringify(u.allowedTools))){G(u);return}x.updateSkill(s,u)}else x.createSkill(u);d()},X=()=>{s&&V(!0)},f=a=>{j.includes(a)?W(j.filter(u=>u!==a)):W([...j,a])},q=()=>{O.trim()&&!j.includes(O.trim())&&(W([...j,O.trim()]),ee(""))},T=a=>{z.includes(a)?P(z.filter(u=>u!==a)):P([...z,a])},Q=a=>{C.includes(a)?E(C.filter(u=>u!==a)):E([...C,a])},F=k.filter(a=>a.class!=="boss"),{handleMouseDown:M,handleClick:R}=Ee(d);return l?e.jsxs("div",{className:"modal-overlay visible",onMouseDown:M,onClick:R,children:[e.jsxs("div",{className:"modal skill-editor-modal",style:{maxWidth:"700px",maxHeight:"90vh"},children:[e.jsxs("div",{className:"modal-header",children:[e.jsxs("span",{children:[t(n?y?"tools:skills.viewBuiltInSkill":"tools:skills.editSkill":"tools:skills.createSkill"),y&&e.jsx("span",{style:{fontSize:"10px",background:"var(--accent-cyan)",color:"var(--bg-primary)",padding:"2px 6px",borderRadius:"3px",fontWeight:600,marginLeft:"8px"},children:t("tools:skills.builtIn")})]}),n&&!y&&e.jsx("button",{type:"button",className:"btn btn-danger btn-sm",onClick:X,style:{marginLeft:"auto",marginRight:"12px"},children:t("common:buttons.delete")})]}),e.jsxs("form",{onSubmit:ce,children:[e.jsxs("div",{className:"modal-body",style:{maxHeight:"70vh",overflowY:"auto"},children:[y&&e.jsx("div",{style:{background:"rgba(139, 233, 253, 0.1)",border:"1px solid var(--accent-cyan)",borderRadius:"6px",padding:"10px 12px",marginBottom:"16px",fontSize:"12px",color:"var(--accent-cyan)"},children:t("tools:skills.builtInNotice")}),e.jsxs("div",{className:"form-section",children:[e.jsx("label",{className:"form-label",children:t("tools:skills.nameRequired")}),e.jsx("input",{ref:se,type:"text",className:"form-input",value:b,onChange:a=>g(a.target.value),placeholder:t("tools:skills.skillNamePlaceholder"),required:!0,disabled:y,style:y?{opacity:.7,cursor:"not-allowed"}:void 0})]}),e.jsxs("div",{className:"form-section",children:[e.jsx("label",{className:"form-label",children:t("tools:skills.slugLabel")}),e.jsx("input",{type:"text",className:"form-input",value:h,onChange:a=>p(a.target.value),placeholder:t("tools:skills.slugPlaceholder"),style:{fontFamily:"monospace",fontSize:"12px",...y?{opacity:.7,cursor:"not-allowed"}:{}},disabled:y}),e.jsx("small",{className:"form-hint",children:t("tools:skills.slugHint")})]}),e.jsxs("div",{className:"form-section",children:[e.jsx("label",{className:"form-label",children:t("tools:skills.descriptionRequired")}),e.jsx("textarea",{className:"form-input",value:S,onChange:a=>N(a.target.value),placeholder:t("tools:skills.skillDescPlaceholder"),rows:3,required:!0,style:{resize:"vertical",...y?{opacity:.7,cursor:"not-allowed"}:{}},disabled:y}),e.jsx("small",{className:"form-hint",children:t("tools:skills.descriptionHint")})]}),e.jsxs("div",{className:"form-section",children:[e.jsx("label",{className:"form-label",children:t("tools:skills.instructionsMarkdown")}),e.jsx("textarea",{ref:re,className:"form-input",value:w,onChange:a=>U(a.target.value),placeholder:t("tools:skills.skillContentPlaceholder"),rows:12,style:{fontFamily:"monospace",fontSize:"12px",resize:"vertical",minHeight:"200px",...y?{opacity:.7,cursor:"not-allowed"}:{}},disabled:y})]}),e.jsxs("div",{className:"form-section",children:[e.jsx("label",{className:"form-label",children:t("tools:skills.allowedTools")}),y?e.jsx("div",{style:{display:"flex",flexWrap:"wrap",gap:"4px",opacity:.7},children:j.length>0?j.map(a=>e.jsx("span",{style:{background:"var(--bg-tertiary)",padding:"2px 8px",borderRadius:"4px",fontSize:"11px"},children:a},a)):e.jsx("span",{style:{fontSize:"12px",color:"var(--text-muted)"},children:t("tools:skills.noSpecificTools")})}):e.jsxs(e.Fragment,{children:[e.jsx("div",{className:"tool-presets",style:{display:"flex",flexWrap:"wrap",gap:"6px",marginBottom:"8px"},children:go.map(a=>e.jsx("button",{type:"button",className:`btn btn-sm ${j.includes(a.value)?"btn-primary":"btn-secondary"}`,onClick:()=>f(a.value),style:{fontSize:"11px",padding:"4px 8px"},children:t(a.labelKey)},a.value))}),e.jsxs("div",{style:{display:"flex",gap:"8px"},children:[e.jsx("input",{type:"text",className:"form-input",value:O,onChange:a=>ee(a.target.value),placeholder:t("tools:skills.customToolPlaceholder"),style:{flex:1,fontSize:"12px"},onKeyDown:a=>{a.key==="Enter"&&(a.preventDefault(),q())}}),e.jsx("button",{type:"button",className:"btn btn-secondary btn-sm",onClick:q,children:t("common:buttons.add")})]}),j.length>0&&e.jsx("div",{style:{marginTop:"8px",display:"flex",flexWrap:"wrap",gap:"4px"},children:j.map(a=>e.jsxs("span",{className:"tag",style:{background:"var(--bg-tertiary)",padding:"2px 8px",borderRadius:"4px",fontSize:"11px",cursor:"pointer"},onClick:()=>f(a),title:t("tools:skills.clickToRemove"),children:[a," ×"]},a))})]})]}),e.jsxs("div",{className:"form-section",children:[e.jsx("label",{className:"form-label",children:t("tools:skills.assignToClasses")}),e.jsx("small",{className:"form-hint",style:{display:"block",marginBottom:"8px"},children:t("tools:skills.allAgentsOfClasses")}),e.jsx("div",{style:{display:"grid",gridTemplateColumns:"repeat(2, 1fr)",gap:"6px"},children:mo.map(a=>e.jsxs("button",{type:"button",className:`btn btn-sm ${z.includes(a.value)?"btn-primary":"btn-secondary"}`,onClick:()=>T(a.value),style:{fontSize:"11px",padding:"6px 8px",textAlign:"left"},children:[e.jsx("strong",{children:t(a.labelKey)}),e.jsxs("span",{style:{opacity:.7,marginLeft:"4px"},children:["- ",t(a.descriptionKey)]})]},a.value))})]}),F.length>0&&e.jsxs("div",{className:"form-section",children:[e.jsx("label",{className:"form-label",children:t("tools:skills.assignToAgents")}),e.jsx("div",{style:{display:"flex",flexWrap:"wrap",gap:"6px"},children:F.map(a=>e.jsxs("button",{type:"button",className:`btn btn-sm ${C.includes(a.id)?"btn-primary":"btn-secondary"}`,onClick:()=>Q(a.id),style:{fontSize:"11px",padding:"4px 8px"},children:[a.name,e.jsxs("span",{style:{opacity:.6,marginLeft:"4px"},children:["(",a.class,")"]})]},a.id))})]}),e.jsxs("div",{className:"form-section",children:[e.jsxs("button",{type:"button",className:"btn btn-secondary btn-sm",onClick:()=>Y(!_),style:{marginBottom:"8px"},children:[t(_?"common:buttons2.hide":"common:buttons2.show")," ",t("tools:skills.advancedOptions")]}),_&&e.jsxs("div",{style:{marginTop:"8px"},children:[e.jsxs("label",{className:"form-label",style:{display:"flex",alignItems:"center",gap:"8px"},children:[e.jsx("input",{type:"checkbox",checked:$,onChange:a=>D(a.target.checked)}),t("tools:skills.skillEnabled")]}),e.jsx("small",{className:"form-hint",children:t("tools:skills.disabledSkillsHint")})]})]})]}),e.jsxs("div",{className:"modal-footer",children:[e.jsx("button",{type:"button",className:"btn btn-secondary",onClick:d,children:t(y?"common:buttons.close":"common:buttons.cancel")}),!y&&e.jsx("button",{type:"submit",className:"btn btn-primary",children:t(n?"common:buttons2.saveChanges":"tools:skills.createSkill")}),y&&e.jsx("button",{type:"submit",className:"btn btn-primary",children:t("tools:skills.saveAssignments")})]})]})]}),e.jsx(we,{isOpen:L!==null,title:t("tools:skills.saveAssignments",{defaultValue:"Save Changes"}),message:t("tools:skills.updateSkillConfirm"),confirmLabel:t("common:buttons.save"),cancelLabel:t("common:buttons.cancel"),variant:"primary",onConfirm:()=>{s&&L&&(x.updateSkill(s,L),d())},onClose:()=>G(null)}),e.jsx(we,{isOpen:oe,title:t("common:buttons.delete"),message:t("tools:skills.deleteSkillConfirm"),confirmLabel:t("common:buttons.delete"),cancelLabel:t("common:buttons.cancel"),variant:"danger",onConfirm:()=>{s&&(x.deleteSkill(s),d())},onClose:()=>V(!1)})]}):null}const Be=[{emoji:"😀",keywords:["grin","happy","smile","face"],category:"Smileys"},{emoji:"😃",keywords:["happy","smile","joy","face"],category:"Smileys"},{emoji:"😄",keywords:["happy","smile","laugh","face"],category:"Smileys"},{emoji:"😁",keywords:["grin","happy","teeth","face"],category:"Smileys"},{emoji:"😅",keywords:["sweat","nervous","laugh","relief"],category:"Smileys"},{emoji:"😂",keywords:["laugh","cry","joy","tears","lol"],category:"Smileys"},{emoji:"🤣",keywords:["laugh","rolling","lol","rofl"],category:"Smileys"},{emoji:"😊",keywords:["blush","smile","happy","shy"],category:"Smileys"},{emoji:"😇",keywords:["angel","innocent","halo","saint"],category:"Smileys"},{emoji:"🙂",keywords:["smile","slight","face"],category:"Smileys"},{emoji:"😉",keywords:["wink","flirt","face"],category:"Smileys"},{emoji:"😌",keywords:["relieved","calm","peaceful"],category:"Smileys"},{emoji:"😍",keywords:["love","heart","eyes","crush"],category:"Smileys"},{emoji:"🥰",keywords:["love","hearts","adore","affection"],category:"Smileys"},{emoji:"😘",keywords:["kiss","love","heart","blow"],category:"Smileys"},{emoji:"😎",keywords:["cool","sunglasses","awesome"],category:"Smileys"},{emoji:"🤓",keywords:["nerd","geek","glasses","smart"],category:"Smileys"},{emoji:"🧐",keywords:["monocle","thinking","curious","inspect"],category:"Smileys"},{emoji:"🤔",keywords:["think","hmm","wonder","ponder"],category:"Smileys"},{emoji:"🤨",keywords:["raised","eyebrow","skeptic","suspicious"],category:"Smileys"},{emoji:"😐",keywords:["neutral","meh","blank","straight"],category:"Smileys"},{emoji:"😑",keywords:["expressionless","annoyed","unamused"],category:"Smileys"},{emoji:"😶",keywords:["silent","mute","speechless","quiet"],category:"Smileys"},{emoji:"🙄",keywords:["eyeroll","annoyed","whatever","bored"],category:"Smileys"},{emoji:"😏",keywords:["smirk","smug","sly","flirt"],category:"Smileys"},{emoji:"😣",keywords:["persevere","struggle","frustrated"],category:"Smileys"},{emoji:"😥",keywords:["sad","disappointed","relieved"],category:"Smileys"},{emoji:"😮",keywords:["surprised","wow","shock","gasp"],category:"Smileys"},{emoji:"🤯",keywords:["mind","blown","exploding","shock"],category:"Smileys"},{emoji:"😱",keywords:["scream","fear","scared","horror"],category:"Smileys"},{emoji:"😴",keywords:["sleep","tired","zzz","snore"],category:"Smileys"},{emoji:"🤤",keywords:["drool","hungry","yummy","want"],category:"Smileys"},{emoji:"😷",keywords:["mask","sick","ill","covid"],category:"Smileys"},{emoji:"🤒",keywords:["sick","fever","thermometer","ill"],category:"Smileys"},{emoji:"🤢",keywords:["nauseous","sick","green","ill"],category:"Smileys"},{emoji:"🤮",keywords:["vomit","sick","puke","gross"],category:"Smileys"},{emoji:"😈",keywords:["devil","evil","smiling","mischief","horns"],category:"Smileys"},{emoji:"👿",keywords:["devil","angry","evil","imp"],category:"Smileys"},{emoji:"💀",keywords:["skull","death","dead","skeleton"],category:"Smileys"},{emoji:"☠️",keywords:["skull","crossbones","death","pirate","danger"],category:"Smileys"},{emoji:"👻",keywords:["ghost","spirit","spooky","halloween"],category:"Smileys"},{emoji:"👽",keywords:["alien","ufo","extraterrestrial","space"],category:"Smileys"},{emoji:"🤖",keywords:["robot","bot","ai","android","machine"],category:"Smileys"},{emoji:"💩",keywords:["poop","poo","shit","crap"],category:"Smileys"},{emoji:"🎃",keywords:["pumpkin","halloween","jack","lantern"],category:"Smileys"},{emoji:"👑",keywords:["crown","king","queen","royal","boss","leader"],category:"People"},{emoji:"🎖️",keywords:["medal","military","honor","badge","award"],category:"People"},{emoji:"🦸",keywords:["hero","superhero","super","power"],category:"People"},{emoji:"🦸‍♂️",keywords:["hero","superhero","man","male"],category:"People"},{emoji:"🦸‍♀️",keywords:["hero","superhero","woman","female"],category:"People"},{emoji:"🦹",keywords:["villain","super","evil","hero"],category:"People"},{emoji:"🧙",keywords:["wizard","mage","magic","sorcerer"],category:"People"},{emoji:"🧙‍♂️",keywords:["wizard","mage","magic","man"],category:"People"},{emoji:"🧙‍♀️",keywords:["witch","mage","magic","woman"],category:"People"},{emoji:"🥷",keywords:["ninja","stealth","silent","assassin"],category:"People"},{emoji:"👨‍💻",keywords:["developer","programmer","coder","tech","man"],category:"People"},{emoji:"👩‍💻",keywords:["developer","programmer","coder","tech","woman"],category:"People"},{emoji:"🧑‍💻",keywords:["developer","programmer","coder","tech"],category:"People"},{emoji:"👨‍🔬",keywords:["scientist","research","lab","man"],category:"People"},{emoji:"👩‍🔬",keywords:["scientist","research","lab","woman"],category:"People"},{emoji:"👨‍🚀",keywords:["astronaut","space","rocket","man"],category:"People"},{emoji:"👩‍🚀",keywords:["astronaut","space","rocket","woman"],category:"People"},{emoji:"👨‍🎨",keywords:["artist","painter","creative","man"],category:"People"},{emoji:"👩‍🎨",keywords:["artist","painter","creative","woman"],category:"People"},{emoji:"👨‍🏫",keywords:["teacher","professor","instructor","man"],category:"People"},{emoji:"👩‍🏫",keywords:["teacher","professor","instructor","woman"],category:"People"},{emoji:"👨‍⚕️",keywords:["doctor","health","medical","man"],category:"People"},{emoji:"👩‍⚕️",keywords:["doctor","health","medical","woman"],category:"People"},{emoji:"👨‍🍳",keywords:["chef","cook","kitchen","man"],category:"People"},{emoji:"👩‍🍳",keywords:["chef","cook","kitchen","woman"],category:"People"},{emoji:"👨‍🔧",keywords:["mechanic","repair","fix","man"],category:"People"},{emoji:"👩‍🔧",keywords:["mechanic","repair","fix","woman"],category:"People"},{emoji:"👷",keywords:["construction","worker","builder","hard","hat"],category:"People"},{emoji:"💂",keywords:["guard","soldier","protect","security"],category:"People"},{emoji:"🕵️",keywords:["detective","spy","investigate","search","sleuth"],category:"People"},{emoji:"👮",keywords:["police","cop","officer","law"],category:"People"},{emoji:"🧝",keywords:["elf","fantasy","magic"],category:"People"},{emoji:"🧛",keywords:["vampire","dracula","dark","night"],category:"People"},{emoji:"🧟",keywords:["zombie","undead","dead"],category:"People"},{emoji:"🧞",keywords:["genie","magic","wish","lamp"],category:"People"},{emoji:"🧜",keywords:["mermaid","merman","sea","ocean"],category:"People"},{emoji:"🧚",keywords:["fairy","magic","fantasy","wings"],category:"People"},{emoji:"👼",keywords:["angel","baby","cherub","innocent"],category:"People"},{emoji:"🎅",keywords:["santa","christmas","claus","holiday"],category:"People"},{emoji:"🤴",keywords:["prince","royal","king","crown"],category:"People"},{emoji:"👸",keywords:["princess","royal","queen","crown"],category:"People"},{emoji:"🤵",keywords:["groom","tuxedo","suit","formal"],category:"People"},{emoji:"👰",keywords:["bride","wedding","veil","marriage"],category:"People"},{emoji:"🎭",keywords:["theater","mask","drama","acting","perform"],category:"People"},{emoji:"👾",keywords:["alien","monster","game","invader","space"],category:"People"},{emoji:"👤",keywords:["person","user","silhouette","profile"],category:"People"},{emoji:"👥",keywords:["people","users","group","team","silhouettes"],category:"People"},{emoji:"👋",keywords:["wave","hello","hi","bye","hand"],category:"Gestures"},{emoji:"🤚",keywords:["hand","raised","stop","back"],category:"Gestures"},{emoji:"✋",keywords:["hand","stop","high","five"],category:"Gestures"},{emoji:"🖐️",keywords:["hand","fingers","splayed","five"],category:"Gestures"},{emoji:"👌",keywords:["ok","perfect","good","nice"],category:"Gestures"},{emoji:"🤌",keywords:["pinched","italian","hand","chef"],category:"Gestures"},{emoji:"✌️",keywords:["peace","victory","two","fingers"],category:"Gestures"},{emoji:"🤞",keywords:["crossed","fingers","luck","hope"],category:"Gestures"},{emoji:"🤟",keywords:["love","you","rock","hand"],category:"Gestures"},{emoji:"🤘",keywords:["rock","metal","horns","hand"],category:"Gestures"},{emoji:"👍",keywords:["thumbs","up","good","like","yes","approve"],category:"Gestures"},{emoji:"👎",keywords:["thumbs","down","bad","dislike","no"],category:"Gestures"},{emoji:"👊",keywords:["fist","punch","bump","power"],category:"Gestures"},{emoji:"✊",keywords:["fist","raised","power","solidarity"],category:"Gestures"},{emoji:"🤛",keywords:["fist","left","bump"],category:"Gestures"},{emoji:"🤜",keywords:["fist","right","bump"],category:"Gestures"},{emoji:"👏",keywords:["clap","applause","bravo","hands"],category:"Gestures"},{emoji:"🙌",keywords:["hands","raised","celebration","hooray"],category:"Gestures"},{emoji:"🤝",keywords:["handshake","deal","agreement","shake"],category:"Gestures"},{emoji:"🙏",keywords:["pray","please","thanks","hope","namaste"],category:"Gestures"},{emoji:"💪",keywords:["muscle","strong","flex","bicep","arm"],category:"Gestures"},{emoji:"🦾",keywords:["robot","arm","prosthetic","mechanical"],category:"Gestures"},{emoji:"🖕",keywords:["middle","finger","rude","angry"],category:"Gestures"},{emoji:"☝️",keywords:["point","up","finger","one"],category:"Gestures"},{emoji:"👆",keywords:["point","up","finger","backhand"],category:"Gestures"},{emoji:"👇",keywords:["point","down","finger","backhand"],category:"Gestures"},{emoji:"👈",keywords:["point","left","finger","backhand"],category:"Gestures"},{emoji:"👉",keywords:["point","right","finger","backhand"],category:"Gestures"},{emoji:"👁️",keywords:["eye","see","look","watch","vision"],category:"Gestures"},{emoji:"👀",keywords:["eyes","look","see","watch","stare"],category:"Gestures"},{emoji:"👅",keywords:["tongue","taste","lick"],category:"Gestures"},{emoji:"👄",keywords:["lips","mouth","kiss"],category:"Gestures"},{emoji:"🧠",keywords:["brain","mind","think","smart","intelligence"],category:"Gestures"},{emoji:"🗣️",keywords:["speak","talk","head","voice","speech"],category:"Gestures"},{emoji:"❤️",keywords:["red","heart","love","like"],category:"Hearts"},{emoji:"🧡",keywords:["orange","heart","love","warm"],category:"Hearts"},{emoji:"💛",keywords:["yellow","heart","love","friendship"],category:"Hearts"},{emoji:"💚",keywords:["green","heart","love","support","health"],category:"Hearts"},{emoji:"💙",keywords:["blue","heart","love","trust"],category:"Hearts"},{emoji:"💜",keywords:["purple","heart","love"],category:"Hearts"},{emoji:"🖤",keywords:["black","heart","dark","love"],category:"Hearts"},{emoji:"🤍",keywords:["white","heart","pure","love"],category:"Hearts"},{emoji:"🤎",keywords:["brown","heart","love"],category:"Hearts"},{emoji:"💔",keywords:["broken","heart","sad","love"],category:"Hearts"},{emoji:"❤️‍🔥",keywords:["heart","fire","passion","love"],category:"Hearts"},{emoji:"❤️‍🩹",keywords:["heart","mending","healing","love"],category:"Hearts"},{emoji:"💕",keywords:["hearts","two","love","couple"],category:"Hearts"},{emoji:"💞",keywords:["hearts","revolving","love"],category:"Hearts"},{emoji:"💓",keywords:["heart","beating","love","alive"],category:"Hearts"},{emoji:"💗",keywords:["heart","growing","love","pink"],category:"Hearts"},{emoji:"💖",keywords:["heart","sparkle","love","pink"],category:"Hearts"},{emoji:"💝",keywords:["heart","ribbon","gift","love","valentine"],category:"Hearts"},{emoji:"💘",keywords:["heart","arrow","cupid","love"],category:"Hearts"},{emoji:"💌",keywords:["letter","love","envelope","mail"],category:"Hearts"},{emoji:"💋",keywords:["kiss","lips","love","lipstick"],category:"Hearts"},{emoji:"🫶",keywords:["heart","hands","love","care"],category:"Hearts"},{emoji:"🐶",keywords:["dog","puppy","pet","cute"],category:"Animals"},{emoji:"🐱",keywords:["cat","kitten","pet","cute"],category:"Animals"},{emoji:"🐭",keywords:["mouse","rat","rodent","cute"],category:"Animals"},{emoji:"🐹",keywords:["hamster","pet","rodent","cute"],category:"Animals"},{emoji:"🐰",keywords:["rabbit","bunny","pet","cute"],category:"Animals"},{emoji:"🦊",keywords:["fox","clever","cunning","red"],category:"Animals"},{emoji:"🐻",keywords:["bear","grizzly","brown","strong"],category:"Animals"},{emoji:"🐼",keywords:["panda","bear","bamboo","cute","china"],category:"Animals"},{emoji:"🐨",keywords:["koala","australia","cute","bear"],category:"Animals"},{emoji:"🐯",keywords:["tiger","cat","stripe","fierce"],category:"Animals"},{emoji:"🦁",keywords:["lion","king","roar","cat","pride"],category:"Animals"},{emoji:"🐮",keywords:["cow","moo","farm","milk"],category:"Animals"},{emoji:"🐷",keywords:["pig","oink","farm","pork"],category:"Animals"},{emoji:"🐸",keywords:["frog","toad","ribbit","green"],category:"Animals"},{emoji:"🐵",keywords:["monkey","ape","banana","primate"],category:"Animals"},{emoji:"🙈",keywords:["monkey","see","no","evil","cover"],category:"Animals"},{emoji:"🙉",keywords:["monkey","hear","no","evil","cover"],category:"Animals"},{emoji:"🙊",keywords:["monkey","speak","no","evil","cover"],category:"Animals"},{emoji:"🐔",keywords:["chicken","hen","bird","farm"],category:"Animals"},{emoji:"🐧",keywords:["penguin","bird","ice","cold","linux"],category:"Animals"},{emoji:"🐦",keywords:["bird","fly","tweet","chirp"],category:"Animals"},{emoji:"🐤",keywords:["chick","baby","bird","chicken"],category:"Animals"},{emoji:"🦆",keywords:["duck","bird","quack","water"],category:"Animals"},{emoji:"🦅",keywords:["eagle","bird","fly","america","soar"],category:"Animals"},{emoji:"🦉",keywords:["owl","bird","night","wise","hoot"],category:"Animals"},{emoji:"🦇",keywords:["bat","vampire","night","fly"],category:"Animals"},{emoji:"🐺",keywords:["wolf","howl","wild","pack"],category:"Animals"},{emoji:"🐗",keywords:["boar","pig","wild","tusk"],category:"Animals"},{emoji:"🐴",keywords:["horse","pony","ride","stable"],category:"Animals"},{emoji:"🦄",keywords:["unicorn","horse","magic","fantasy","rainbow"],category:"Animals"},{emoji:"🐝",keywords:["bee","honey","buzz","insect","busy"],category:"Animals"},{emoji:"🐛",keywords:["bug","caterpillar","insect","debug","worm"],category:"Animals"},{emoji:"🦋",keywords:["butterfly","insect","transform","beautiful"],category:"Animals"},{emoji:"🐌",keywords:["snail","slow","shell","slug"],category:"Animals"},{emoji:"🐞",keywords:["ladybug","beetle","insect","luck"],category:"Animals"},{emoji:"🐜",keywords:["ant","insect","small","work","colony"],category:"Animals"},{emoji:"🦗",keywords:["cricket","grasshopper","insect","jump"],category:"Animals"},{emoji:"🕷️",keywords:["spider","web","insect","creepy"],category:"Animals"},{emoji:"🦂",keywords:["scorpion","sting","desert","danger"],category:"Animals"},{emoji:"🐢",keywords:["turtle","tortoise","slow","shell"],category:"Animals"},{emoji:"🐍",keywords:["snake","serpent","slither","python"],category:"Animals"},{emoji:"🦎",keywords:["lizard","reptile","gecko"],category:"Animals"},{emoji:"🐉",keywords:["dragon","fire","fantasy","chinese"],category:"Animals"},{emoji:"🐲",keywords:["dragon","face","fantasy","chinese"],category:"Animals"},{emoji:"🦖",keywords:["trex","dinosaur","rex","prehistoric"],category:"Animals"},{emoji:"🦕",keywords:["dinosaur","sauropod","prehistoric","long"],category:"Animals"},{emoji:"🐙",keywords:["octopus","sea","tentacle","squid"],category:"Animals"},{emoji:"🦑",keywords:["squid","sea","tentacle","calamari"],category:"Animals"},{emoji:"🦐",keywords:["shrimp","sea","prawn","seafood"],category:"Animals"},{emoji:"🦀",keywords:["crab","sea","pinch","seafood"],category:"Animals"},{emoji:"🐡",keywords:["blowfish","puffer","fish","sea"],category:"Animals"},{emoji:"🐠",keywords:["fish","tropical","sea","aquarium"],category:"Animals"},{emoji:"🐟",keywords:["fish","sea","swimming","aquatic"],category:"Animals"},{emoji:"🐬",keywords:["dolphin","sea","smart","flipper"],category:"Animals"},{emoji:"🐳",keywords:["whale","sea","spout","ocean"],category:"Animals"},{emoji:"🦈",keywords:["shark","sea","jaws","danger"],category:"Animals"},{emoji:"🦭",keywords:["seal","sea","cute","ocean"],category:"Animals"},{emoji:"🐊",keywords:["crocodile","alligator","reptile","swamp"],category:"Animals"},{emoji:"🦧",keywords:["orangutan","ape","primate","monkey"],category:"Animals"},{emoji:"🦍",keywords:["gorilla","ape","primate","strong"],category:"Animals"},{emoji:"🐘",keywords:["elephant","big","trunk","africa"],category:"Animals"},{emoji:"🦏",keywords:["rhino","rhinoceros","horn","africa"],category:"Animals"},{emoji:"🦛",keywords:["hippo","hippopotamus","water","africa"],category:"Animals"},{emoji:"🐪",keywords:["camel","desert","hump","dromedary"],category:"Animals"},{emoji:"🦒",keywords:["giraffe","tall","neck","spots"],category:"Animals"},{emoji:"🦓",keywords:["zebra","stripes","horse","africa"],category:"Animals"},{emoji:"🦘",keywords:["kangaroo","australia","jump","pouch"],category:"Animals"},{emoji:"🦬",keywords:["bison","buffalo","america","wild"],category:"Animals"},{emoji:"🐃",keywords:["buffalo","water","ox","farm"],category:"Animals"},{emoji:"🦌",keywords:["deer","stag","antler","forest"],category:"Animals"},{emoji:"🦙",keywords:["llama","alpaca","wool","peru"],category:"Animals"},{emoji:"🦥",keywords:["sloth","slow","lazy","sleep"],category:"Animals"},{emoji:"🦦",keywords:["otter","sea","cute","swim"],category:"Animals"},{emoji:"🦨",keywords:["skunk","stink","smell","stripe"],category:"Animals"},{emoji:"🦡",keywords:["badger","honey","dig","stripe"],category:"Animals"},{emoji:"🐾",keywords:["paw","prints","pet","animal","dog","cat"],category:"Animals"},{emoji:"🦠",keywords:["microbe","virus","bacteria","bug","germ"],category:"Animals"},{emoji:"🌲",keywords:["tree","evergreen","pine","forest","christmas"],category:"Nature"},{emoji:"🌳",keywords:["tree","deciduous","forest","nature"],category:"Nature"},{emoji:"🌴",keywords:["palm","tree","beach","tropical"],category:"Nature"},{emoji:"🌵",keywords:["cactus","desert","plant","prickly"],category:"Nature"},{emoji:"🌱",keywords:["seedling","plant","grow","sprout"],category:"Nature"},{emoji:"🌿",keywords:["herb","plant","green","leaf"],category:"Nature"},{emoji:"☘️",keywords:["shamrock","clover","irish","luck"],category:"Nature"},{emoji:"🍀",keywords:["clover","four","leaf","luck"],category:"Nature"},{emoji:"🍁",keywords:["maple","leaf","fall","autumn","canada"],category:"Nature"},{emoji:"🍂",keywords:["fallen","leaf","fall","autumn"],category:"Nature"},{emoji:"🍃",keywords:["leaf","fluttering","wind","blow"],category:"Nature"},{emoji:"🌸",keywords:["cherry","blossom","flower","spring","japan"],category:"Nature"},{emoji:"💐",keywords:["bouquet","flowers","gift","arrangement"],category:"Nature"},{emoji:"🌷",keywords:["tulip","flower","spring","netherlands"],category:"Nature"},{emoji:"🌹",keywords:["rose","flower","love","romantic"],category:"Nature"},{emoji:"🥀",keywords:["wilted","flower","dead","sad"],category:"Nature"},{emoji:"🌺",keywords:["hibiscus","flower","tropical","hawaii"],category:"Nature"},{emoji:"🌻",keywords:["sunflower","flower","sun","yellow"],category:"Nature"},{emoji:"🌼",keywords:["blossom","flower","yellow","daisy"],category:"Nature"},{emoji:"☀️",keywords:["sun","sunny","bright","day","light"],category:"Weather"},{emoji:"🌤️",keywords:["sun","cloud","partly","cloudy"],category:"Weather"},{emoji:"⛅",keywords:["sun","cloud","partly","cloudy"],category:"Weather"},{emoji:"🌥️",keywords:["cloud","sun","behind","mostly"],category:"Weather"},{emoji:"☁️",keywords:["cloud","cloudy","weather","sky"],category:"Weather"},{emoji:"🌦️",keywords:["rain","sun","cloud","shower"],category:"Weather"},{emoji:"🌧️",keywords:["rain","cloud","rainy","weather"],category:"Weather"},{emoji:"⛈️",keywords:["thunder","storm","rain","lightning"],category:"Weather"},{emoji:"🌩️",keywords:["lightning","cloud","storm","thunder"],category:"Weather"},{emoji:"🌨️",keywords:["snow","cloud","snowy","winter"],category:"Weather"},{emoji:"❄️",keywords:["snow","ice","cold","freeze","winter","flake"],category:"Weather"},{emoji:"💨",keywords:["wind","blow","dash","fast","air"],category:"Weather"},{emoji:"🌪️",keywords:["tornado","cyclone","twister","storm"],category:"Weather"},{emoji:"🌫️",keywords:["fog","foggy","mist","hazy"],category:"Weather"},{emoji:"🌈",keywords:["rainbow","color","pride","spectrum"],category:"Weather"},{emoji:"⚡",keywords:["lightning","electric","power","energy","fast","bolt","thunder"],category:"Weather"},{emoji:"🔥",keywords:["fire","flame","hot","burn","lit"],category:"Weather"},{emoji:"💧",keywords:["water","drop","liquid","wet"],category:"Weather"},{emoji:"🌊",keywords:["wave","ocean","sea","water","surf"],category:"Weather"},{emoji:"🌙",keywords:["moon","night","crescent","dark","sleep"],category:"Weather"},{emoji:"🌛",keywords:["moon","first","quarter","face"],category:"Weather"},{emoji:"🌜",keywords:["moon","last","quarter","face"],category:"Weather"},{emoji:"🌝",keywords:["moon","full","face","bright"],category:"Weather"},{emoji:"🌞",keywords:["sun","face","bright","happy"],category:"Weather"},{emoji:"⭐",keywords:["star","yellow","favorite","best"],category:"Weather"},{emoji:"🌟",keywords:["star","glow","bright","shiny"],category:"Weather"},{emoji:"✨",keywords:["sparkle","star","shine","magic","new"],category:"Weather"},{emoji:"💫",keywords:["dizzy","star","circle","shooting"],category:"Weather"},{emoji:"☄️",keywords:["comet","meteor","space","shooting","star"],category:"Weather"},{emoji:"🍎",keywords:["apple","red","fruit","healthy"],category:"Food"},{emoji:"🍏",keywords:["apple","green","fruit","healthy"],category:"Food"},{emoji:"🍐",keywords:["pear","fruit","green"],category:"Food"},{emoji:"🍊",keywords:["orange","fruit","citrus","tangerine"],category:"Food"},{emoji:"🍋",keywords:["lemon","citrus","sour","yellow"],category:"Food"},{emoji:"🍌",keywords:["banana","fruit","yellow","monkey"],category:"Food"},{emoji:"🍉",keywords:["watermelon","fruit","summer","red"],category:"Food"},{emoji:"🍇",keywords:["grapes","fruit","wine","purple"],category:"Food"},{emoji:"🍓",keywords:["strawberry","fruit","berry","red"],category:"Food"},{emoji:"🫐",keywords:["blueberry","fruit","berry","blue"],category:"Food"},{emoji:"🍒",keywords:["cherry","cherries","fruit","red"],category:"Food"},{emoji:"🍑",keywords:["peach","fruit","butt","emoji"],category:"Food"},{emoji:"🥭",keywords:["mango","fruit","tropical","yellow"],category:"Food"},{emoji:"🍍",keywords:["pineapple","fruit","tropical"],category:"Food"},{emoji:"🥥",keywords:["coconut","tropical","brown"],category:"Food"},{emoji:"🥝",keywords:["kiwi","fruit","green"],category:"Food"},{emoji:"🍅",keywords:["tomato","vegetable","red"],category:"Food"},{emoji:"🥑",keywords:["avocado","green","guacamole"],category:"Food"},{emoji:"🥕",keywords:["carrot","vegetable","orange"],category:"Food"},{emoji:"🌽",keywords:["corn","maize","vegetable","yellow"],category:"Food"},{emoji:"🌶️",keywords:["pepper","hot","spicy","chili"],category:"Food"},{emoji:"🥒",keywords:["cucumber","pickle","vegetable"],category:"Food"},{emoji:"🥬",keywords:["lettuce","leafy","green","salad"],category:"Food"},{emoji:"🥦",keywords:["broccoli","vegetable","green"],category:"Food"},{emoji:"🧄",keywords:["garlic","spice","cooking"],category:"Food"},{emoji:"🧅",keywords:["onion","vegetable","cry"],category:"Food"},{emoji:"🥔",keywords:["potato","vegetable","fries"],category:"Food"},{emoji:"🍞",keywords:["bread","loaf","toast","carb"],category:"Food"},{emoji:"🥐",keywords:["croissant","bread","french","pastry"],category:"Food"},{emoji:"🥖",keywords:["baguette","bread","french"],category:"Food"},{emoji:"🥨",keywords:["pretzel","snack","twisted"],category:"Food"},{emoji:"🧀",keywords:["cheese","dairy","yellow"],category:"Food"},{emoji:"🥚",keywords:["egg","breakfast","chicken"],category:"Food"},{emoji:"🍳",keywords:["cooking","egg","frying","pan"],category:"Food"},{emoji:"🥞",keywords:["pancakes","breakfast","stack"],category:"Food"},{emoji:"🧇",keywords:["waffle","breakfast","belgian"],category:"Food"},{emoji:"🥓",keywords:["bacon","meat","breakfast","pork"],category:"Food"},{emoji:"🍔",keywords:["burger","hamburger","food","fast"],category:"Food"},{emoji:"🍟",keywords:["fries","french","food","fast"],category:"Food"},{emoji:"🍕",keywords:["pizza","food","italian","slice"],category:"Food"},{emoji:"🌭",keywords:["hotdog","food","fast","sausage"],category:"Food"},{emoji:"🥪",keywords:["sandwich","food","bread","lunch"],category:"Food"},{emoji:"🌮",keywords:["taco","mexican","food"],category:"Food"},{emoji:"🌯",keywords:["burrito","mexican","food","wrap"],category:"Food"},{emoji:"🥗",keywords:["salad","healthy","green","vegetable"],category:"Food"},{emoji:"🍜",keywords:["noodle","ramen","soup","bowl"],category:"Food"},{emoji:"🍝",keywords:["spaghetti","pasta","italian","noodle"],category:"Food"},{emoji:"🍣",keywords:["sushi","japanese","fish","rice"],category:"Food"},{emoji:"🍱",keywords:["bento","box","japanese","lunch"],category:"Food"},{emoji:"🍛",keywords:["curry","rice","indian","food"],category:"Food"},{emoji:"🍲",keywords:["pot","food","stew","soup"],category:"Food"},{emoji:"🥘",keywords:["paella","food","pan","spanish"],category:"Food"},{emoji:"🍿",keywords:["popcorn","movie","snack","cinema"],category:"Food"},{emoji:"🧂",keywords:["salt","spice","seasoning"],category:"Food"},{emoji:"🍦",keywords:["ice","cream","cone","dessert","cold"],category:"Food"},{emoji:"🍧",keywords:["shaved","ice","dessert","cold"],category:"Food"},{emoji:"🍨",keywords:["ice","cream","dessert","cold"],category:"Food"},{emoji:"🍩",keywords:["donut","doughnut","dessert","sweet"],category:"Food"},{emoji:"🍪",keywords:["cookie","dessert","sweet","chocolate"],category:"Food"},{emoji:"🎂",keywords:["cake","birthday","dessert","celebration"],category:"Food"},{emoji:"🍰",keywords:["cake","slice","shortcake","dessert"],category:"Food"},{emoji:"🧁",keywords:["cupcake","dessert","sweet","muffin"],category:"Food"},{emoji:"🥧",keywords:["pie","dessert","apple","thanksgiving"],category:"Food"},{emoji:"🍫",keywords:["chocolate","bar","sweet","candy"],category:"Food"},{emoji:"🍬",keywords:["candy","sweet","sugar"],category:"Food"},{emoji:"🍭",keywords:["lollipop","candy","sweet"],category:"Food"},{emoji:"☕",keywords:["coffee","hot","drink","cafe","java"],category:"Food"},{emoji:"🍵",keywords:["tea","hot","drink","green"],category:"Food"},{emoji:"🥤",keywords:["cup","straw","drink","soda"],category:"Food"},{emoji:"🧃",keywords:["juice","box","drink","kid"],category:"Food"},{emoji:"🧊",keywords:["ice","cube","cold","freeze"],category:"Food"},{emoji:"🍺",keywords:["beer","mug","drink","alcohol"],category:"Food"},{emoji:"🍻",keywords:["beer","cheers","drink","alcohol","mugs"],category:"Food"},{emoji:"🥂",keywords:["champagne","cheers","celebration","wine"],category:"Food"},{emoji:"🍷",keywords:["wine","glass","drink","alcohol","red"],category:"Food"},{emoji:"🥃",keywords:["whiskey","glass","drink","alcohol","tumbler"],category:"Food"},{emoji:"🍸",keywords:["cocktail","drink","martini","alcohol"],category:"Food"},{emoji:"🍹",keywords:["tropical","drink","cocktail","alcohol"],category:"Food"},{emoji:"🔍",keywords:["search","magnify","find","look","scout","explore","investigate"],category:"Tools"},{emoji:"🔎",keywords:["search","magnify","find","look","right"],category:"Tools"},{emoji:"🔨",keywords:["hammer","build","tool","construct","builder"],category:"Tools"},{emoji:"🪓",keywords:["axe","chop","wood","lumberjack"],category:"Tools"},{emoji:"⛏️",keywords:["pick","mining","dig","tool"],category:"Tools"},{emoji:"⚒️",keywords:["hammer","pick","mining","build"],category:"Tools"},{emoji:"🛠️",keywords:["tools","build","repair","fix","hammer","wrench"],category:"Tools"},{emoji:"🔧",keywords:["wrench","fix","repair","tool","mechanic"],category:"Tools"},{emoji:"🪛",keywords:["screwdriver","tool","fix","repair"],category:"Tools"},{emoji:"🔩",keywords:["bolt","nut","screw","hardware"],category:"Tools"},{emoji:"⚙️",keywords:["gear","settings","config","cog","machine"],category:"Tools"},{emoji:"🗜️",keywords:["clamp","compress","tool","vise"],category:"Tools"},{emoji:"⚖️",keywords:["scale","balance","justice","law","weigh"],category:"Tools"},{emoji:"🔗",keywords:["link","chain","connect","url"],category:"Tools"},{emoji:"⛓️",keywords:["chain","link","connect","locked"],category:"Tools"},{emoji:"🧰",keywords:["toolbox","tools","repair","box"],category:"Tools"},{emoji:"🧲",keywords:["magnet","attract","magnetic"],category:"Tools"},{emoji:"⚔️",keywords:["sword","battle","fight","warrior","combat","crossed"],category:"Tools"},{emoji:"🗡️",keywords:["dagger","knife","sword","blade","weapon"],category:"Tools"},{emoji:"🛡️",keywords:["shield","protect","defense","guard","security"],category:"Tools"},{emoji:"🏹",keywords:["bow","arrow","archer","hunt"],category:"Tools"},{emoji:"🔪",keywords:["knife","cut","blade","kitchen"],category:"Tools"},{emoji:"💣",keywords:["bomb","explode","danger","boom"],category:"Tools"},{emoji:"🧨",keywords:["dynamite","explosive","firecracker","boom"],category:"Tools"},{emoji:"🪃",keywords:["boomerang","throw","return","australia"],category:"Tools"},{emoji:"🔫",keywords:["gun","pistol","water","toy"],category:"Tools"},{emoji:"✂️",keywords:["scissors","cut","trim","snip"],category:"Tools"},{emoji:"📌",keywords:["pin","push","tack","mark","location"],category:"Tools"},{emoji:"📍",keywords:["pin","location","map","place"],category:"Tools"},{emoji:"📎",keywords:["paperclip","clip","attach","office"],category:"Tools"},{emoji:"🖊️",keywords:["pen","write","ink","sign"],category:"Tools"},{emoji:"✏️",keywords:["pencil","write","draw","edit"],category:"Tools"},{emoji:"✒️",keywords:["pen","nib","write","black"],category:"Tools"},{emoji:"🖍️",keywords:["crayon","draw","color","art"],category:"Tools"},{emoji:"📝",keywords:["memo","note","write","document","edit"],category:"Tools"},{emoji:"📋",keywords:["clipboard","list","task","checklist"],category:"Tools"},{emoji:"🔐",keywords:["lock","key","secure","closed"],category:"Tools"},{emoji:"🔒",keywords:["lock","closed","secure","padlock"],category:"Tools"},{emoji:"🔓",keywords:["unlock","open","padlock"],category:"Tools"},{emoji:"🔑",keywords:["key","lock","password","access"],category:"Tools"},{emoji:"🗝️",keywords:["key","old","vintage","lock"],category:"Tools"},{emoji:"💻",keywords:["laptop","computer","pc","mac","code","work"],category:"Tech"},{emoji:"🖥️",keywords:["desktop","computer","monitor","screen","pc"],category:"Tech"},{emoji:"🖨️",keywords:["printer","print","paper","office"],category:"Tech"},{emoji:"⌨️",keywords:["keyboard","type","input","computer"],category:"Tech"},{emoji:"🖱️",keywords:["mouse","click","computer","cursor"],category:"Tech"},{emoji:"🖲️",keywords:["trackball","mouse","computer","input"],category:"Tech"},{emoji:"💽",keywords:["disk","minidisk","computer","storage"],category:"Tech"},{emoji:"💾",keywords:["floppy","disk","save","storage","data"],category:"Tech"},{emoji:"💿",keywords:["cd","disk","music","data"],category:"Tech"},{emoji:"📀",keywords:["dvd","disk","movie","data"],category:"Tech"},{emoji:"📱",keywords:["phone","mobile","smartphone","cell","iphone"],category:"Tech"},{emoji:"📲",keywords:["phone","call","incoming","mobile"],category:"Tech"},{emoji:"☎️",keywords:["phone","telephone","call","old"],category:"Tech"},{emoji:"📞",keywords:["phone","receiver","call","talk"],category:"Tech"},{emoji:"📟",keywords:["pager","beeper","old","retro"],category:"Tech"},{emoji:"📠",keywords:["fax","machine","office","old"],category:"Tech"},{emoji:"🔋",keywords:["battery","power","charge","energy"],category:"Tech"},{emoji:"🔌",keywords:["plug","electric","power","connect"],category:"Tech"},{emoji:"💡",keywords:["bulb","light","idea","bright","lamp"],category:"Tech"},{emoji:"🔦",keywords:["flashlight","light","torch","bright"],category:"Tech"},{emoji:"🕯️",keywords:["candle","light","flame","wax"],category:"Tech"},{emoji:"📡",keywords:["satellite","antenna","signal","dish"],category:"Tech"},{emoji:"🛰️",keywords:["satellite","space","orbit","signal"],category:"Tech"},{emoji:"🧭",keywords:["compass","navigate","direction","north"],category:"Tech"},{emoji:"🗺️",keywords:["map","world","travel","navigate","explore"],category:"Tech"},{emoji:"🧪",keywords:["test","tube","science","lab","experiment","chemistry"],category:"Tech"},{emoji:"🔬",keywords:["microscope","science","lab","research","biology"],category:"Tech"},{emoji:"🔭",keywords:["telescope","space","astronomy","star","observe"],category:"Tech"},{emoji:"📐",keywords:["ruler","triangle","architect","design","measure","math"],category:"Tech"},{emoji:"📏",keywords:["ruler","measure","straight","length"],category:"Tech"},{emoji:"🧬",keywords:["dna","gene","biology","science","helix"],category:"Tech"},{emoji:"💉",keywords:["syringe","needle","medicine","vaccine","inject"],category:"Tech"},{emoji:"💊",keywords:["pill","medicine","drug","pharmacy","health"],category:"Tech"},{emoji:"🩹",keywords:["bandage","heal","fix","patch","medical"],category:"Tech"},{emoji:"🩺",keywords:["stethoscope","doctor","medical","health"],category:"Tech"},{emoji:"⚗️",keywords:["alembic","chemistry","science","distill"],category:"Tech"},{emoji:"🚗",keywords:["car","auto","vehicle","drive"],category:"Transport"},{emoji:"🚕",keywords:["taxi","cab","car","ride"],category:"Transport"},{emoji:"🚙",keywords:["suv","car","vehicle","sport"],category:"Transport"},{emoji:"🚌",keywords:["bus","vehicle","public","transit"],category:"Transport"},{emoji:"🚎",keywords:["trolley","bus","electric","transit"],category:"Transport"},{emoji:"🏎️",keywords:["racing","car","fast","formula"],category:"Transport"},{emoji:"🚓",keywords:["police","car","cop","patrol"],category:"Transport"},{emoji:"🚑",keywords:["ambulance","emergency","medical","hospital"],category:"Transport"},{emoji:"🚒",keywords:["fire","truck","engine","emergency"],category:"Transport"},{emoji:"🚐",keywords:["minibus","van","vehicle","transit"],category:"Transport"},{emoji:"🛻",keywords:["pickup","truck","vehicle"],category:"Transport"},{emoji:"🚚",keywords:["truck","delivery","vehicle","moving"],category:"Transport"},{emoji:"🚛",keywords:["truck","semi","trailer","haul"],category:"Transport"},{emoji:"🚜",keywords:["tractor","farm","vehicle","agriculture"],category:"Transport"},{emoji:"🏍️",keywords:["motorcycle","racing","bike","sport"],category:"Transport"},{emoji:"🛵",keywords:["scooter","motor","vespa","moped"],category:"Transport"},{emoji:"🚲",keywords:["bicycle","bike","cycle","pedal"],category:"Transport"},{emoji:"🛴",keywords:["scooter","kick","ride"],category:"Transport"},{emoji:"🚂",keywords:["train","locomotive","steam","rail"],category:"Transport"},{emoji:"🚃",keywords:["train","railway","car","wagon"],category:"Transport"},{emoji:"🚄",keywords:["train","high","speed","bullet","shinkansen"],category:"Transport"},{emoji:"🚅",keywords:["train","bullet","high","speed"],category:"Transport"},{emoji:"🚆",keywords:["train","railway","transit"],category:"Transport"},{emoji:"🚇",keywords:["metro","subway","underground","train"],category:"Transport"},{emoji:"🚈",keywords:["train","light","rail","transit"],category:"Transport"},{emoji:"✈️",keywords:["airplane","plane","fly","travel","flight"],category:"Transport"},{emoji:"🛫",keywords:["airplane","departure","takeoff","fly"],category:"Transport"},{emoji:"🛬",keywords:["airplane","arrival","landing","fly"],category:"Transport"},{emoji:"🛩️",keywords:["plane","small","airplane","fly"],category:"Transport"},{emoji:"🚁",keywords:["helicopter","chopper","fly","hover"],category:"Transport"},{emoji:"🛸",keywords:["ufo","alien","spaceship","flying","saucer"],category:"Transport"},{emoji:"🚀",keywords:["rocket","launch","space","fast","ship","startup"],category:"Transport"},{emoji:"🛶",keywords:["canoe","boat","paddle","kayak"],category:"Transport"},{emoji:"⛵",keywords:["sailboat","boat","sail","wind"],category:"Transport"},{emoji:"🚤",keywords:["speedboat","boat","fast","water"],category:"Transport"},{emoji:"🛥️",keywords:["motorboat","boat","yacht"],category:"Transport"},{emoji:"🛳️",keywords:["ship","cruise","passenger","boat"],category:"Transport"},{emoji:"⛴️",keywords:["ferry","boat","ship","transport"],category:"Transport"},{emoji:"🚢",keywords:["ship","boat","cruise","ocean"],category:"Transport"},{emoji:"⚓",keywords:["anchor","ship","boat","dock"],category:"Transport"},{emoji:"🚧",keywords:["construction","barrier","road","block"],category:"Transport"},{emoji:"🚦",keywords:["traffic","light","signal","stop","go"],category:"Transport"},{emoji:"🚥",keywords:["traffic","light","horizontal","signal"],category:"Transport"},{emoji:"🗼",keywords:["tower","tokyo","japan","landmark"],category:"Transport"},{emoji:"🗽",keywords:["statue","liberty","usa","new","york"],category:"Transport"},{emoji:"🗿",keywords:["moai","statue","easter","island"],category:"Transport"},{emoji:"📦",keywords:["box","package","delivery","ship","container"],category:"Objects"},{emoji:"🎁",keywords:["gift","present","wrap","birthday"],category:"Objects"},{emoji:"💎",keywords:["diamond","gem","jewel","precious","crystal"],category:"Objects"},{emoji:"🔮",keywords:["crystal","ball","magic","fortune","predict"],category:"Objects"},{emoji:"🏆",keywords:["trophy","win","champion","prize","gold","first"],category:"Objects"},{emoji:"🥇",keywords:["gold","medal","first","winner","best"],category:"Objects"},{emoji:"🥈",keywords:["silver","medal","second","winner"],category:"Objects"},{emoji:"🥉",keywords:["bronze","medal","third","winner"],category:"Objects"},{emoji:"🏅",keywords:["medal","sports","award","winner"],category:"Objects"},{emoji:"🎖️",keywords:["medal","military","honor","badge"],category:"Objects"},{emoji:"🎯",keywords:["target","bullseye","aim","goal","dart"],category:"Objects"},{emoji:"🎰",keywords:["slot","machine","casino","gamble","lucky"],category:"Objects"},{emoji:"🎲",keywords:["dice","game","roll","random","chance"],category:"Objects"},{emoji:"🎮",keywords:["game","controller","video","play","console"],category:"Objects"},{emoji:"🕹️",keywords:["joystick","game","arcade","control"],category:"Objects"},{emoji:"🎨",keywords:["art","palette","paint","color","creative"],category:"Objects"},{emoji:"🖼️",keywords:["picture","frame","art","painting"],category:"Objects"},{emoji:"🎬",keywords:["clapper","movie","film","action","cinema"],category:"Objects"},{emoji:"📷",keywords:["camera","photo","picture","photograph"],category:"Objects"},{emoji:"📸",keywords:["camera","flash","photo","selfie"],category:"Objects"},{emoji:"📹",keywords:["video","camera","record","film"],category:"Objects"},{emoji:"🎥",keywords:["movie","camera","film","cinema"],category:"Objects"},{emoji:"📺",keywords:["tv","television","screen","watch"],category:"Objects"},{emoji:"📻",keywords:["radio","music","broadcast","listen"],category:"Objects"},{emoji:"🎤",keywords:["microphone","mic","sing","karaoke","voice"],category:"Objects"},{emoji:"🎧",keywords:["headphones","music","listen","audio"],category:"Objects"},{emoji:"🎵",keywords:["music","note","song","melody"],category:"Objects"},{emoji:"🎶",keywords:["music","notes","song","melody"],category:"Objects"},{emoji:"🎹",keywords:["piano","keys","music","instrument"],category:"Objects"},{emoji:"🎸",keywords:["guitar","music","rock","instrument"],category:"Objects"},{emoji:"🎺",keywords:["trumpet","music","brass","instrument"],category:"Objects"},{emoji:"🥁",keywords:["drum","music","beat","percussion"],category:"Objects"},{emoji:"🎻",keywords:["violin","music","string","instrument"],category:"Objects"},{emoji:"📚",keywords:["books","library","read","study"],category:"Objects"},{emoji:"📖",keywords:["book","open","read","study"],category:"Objects"},{emoji:"📕",keywords:["book","closed","red","read"],category:"Objects"},{emoji:"📗",keywords:["book","green","read"],category:"Objects"},{emoji:"📘",keywords:["book","blue","read"],category:"Objects"},{emoji:"📙",keywords:["book","orange","read"],category:"Objects"},{emoji:"📓",keywords:["notebook","write","journal"],category:"Objects"},{emoji:"📒",keywords:["ledger","notebook","write"],category:"Objects"},{emoji:"📃",keywords:["page","document","curl","paper"],category:"Objects"},{emoji:"📄",keywords:["document","page","paper","file"],category:"Objects"},{emoji:"📰",keywords:["newspaper","news","press","paper"],category:"Objects"},{emoji:"🗞️",keywords:["newspaper","rolled","news","paper"],category:"Objects"},{emoji:"📑",keywords:["bookmark","tabs","page","marker"],category:"Objects"},{emoji:"🔖",keywords:["bookmark","mark","page","save"],category:"Objects"},{emoji:"🏷️",keywords:["label","tag","price","sale"],category:"Objects"},{emoji:"✉️",keywords:["envelope","letter","mail","email"],category:"Objects"},{emoji:"📧",keywords:["email","e-mail","mail","message"],category:"Objects"},{emoji:"📨",keywords:["envelope","incoming","mail","receive"],category:"Objects"},{emoji:"📩",keywords:["envelope","arrow","mail","outgoing"],category:"Objects"},{emoji:"📤",keywords:["outbox","sent","mail","tray"],category:"Objects"},{emoji:"📥",keywords:["inbox","receive","mail","tray"],category:"Objects"},{emoji:"📪",keywords:["mailbox","closed","mail","post"],category:"Objects"},{emoji:"📫",keywords:["mailbox","raised","mail","post"],category:"Objects"},{emoji:"📬",keywords:["mailbox","open","mail","post"],category:"Objects"},{emoji:"📭",keywords:["mailbox","lowered","mail","post"],category:"Objects"},{emoji:"📮",keywords:["postbox","mail","post","letter"],category:"Objects"},{emoji:"🗳️",keywords:["ballot","box","vote","election"],category:"Objects"},{emoji:"🛒",keywords:["cart","shopping","trolley","buy"],category:"Objects"},{emoji:"⏰",keywords:["alarm","clock","time","wake"],category:"Objects"},{emoji:"⏱️",keywords:["stopwatch","timer","time","race"],category:"Objects"},{emoji:"⏲️",keywords:["timer","clock","time","countdown"],category:"Objects"},{emoji:"🕰️",keywords:["clock","mantelpiece","time","antique"],category:"Objects"},{emoji:"⌛",keywords:["hourglass","done","time","sand"],category:"Objects"},{emoji:"⏳",keywords:["hourglass","flowing","time","sand"],category:"Objects"},{emoji:"🔔",keywords:["bell","notification","alert","ring"],category:"Objects"},{emoji:"🔕",keywords:["bell","mute","silent","notification"],category:"Objects"},{emoji:"📣",keywords:["megaphone","cheering","announcement"],category:"Objects"},{emoji:"📢",keywords:["loudspeaker","announcement","public"],category:"Objects"},{emoji:"🔊",keywords:["speaker","volume","loud","sound"],category:"Objects"},{emoji:"🔉",keywords:["speaker","volume","medium","sound"],category:"Objects"},{emoji:"🔈",keywords:["speaker","volume","low","sound"],category:"Objects"},{emoji:"🔇",keywords:["mute","speaker","silent","sound"],category:"Objects"},{emoji:"🗑️",keywords:["trash","bin","garbage","delete","waste"],category:"Objects"},{emoji:"❤️",keywords:["heart","red","love"],category:"Symbols"},{emoji:"✅",keywords:["check","yes","done","complete","success","green"],category:"Symbols"},{emoji:"❌",keywords:["cross","no","wrong","delete","red","x"],category:"Symbols"},{emoji:"❎",keywords:["cross","mark","no","square"],category:"Symbols"},{emoji:"➕",keywords:["plus","add","more","positive"],category:"Symbols"},{emoji:"➖",keywords:["minus","subtract","less","negative"],category:"Symbols"},{emoji:"➗",keywords:["divide","division","math"],category:"Symbols"},{emoji:"✖️",keywords:["multiply","x","cross","math"],category:"Symbols"},{emoji:"💯",keywords:["hundred","perfect","score","full"],category:"Symbols"},{emoji:"💢",keywords:["anger","angry","symbol","mad"],category:"Symbols"},{emoji:"💥",keywords:["boom","collision","explosion","crash"],category:"Symbols"},{emoji:"💫",keywords:["dizzy","star","circle","shooting"],category:"Symbols"},{emoji:"💦",keywords:["sweat","droplets","water","splash"],category:"Symbols"},{emoji:"💨",keywords:["dash","running","wind","fast"],category:"Symbols"},{emoji:"🕳️",keywords:["hole","black","empty","void"],category:"Symbols"},{emoji:"💬",keywords:["speech","bubble","talk","comment","chat"],category:"Symbols"},{emoji:"👁️‍🗨️",keywords:["eye","speech","witness","see"],category:"Symbols"},{emoji:"🗨️",keywords:["speech","bubble","left","talk"],category:"Symbols"},{emoji:"🗯️",keywords:["anger","bubble","right","mad"],category:"Symbols"},{emoji:"💭",keywords:["thought","bubble","think","idea"],category:"Symbols"},{emoji:"💤",keywords:["zzz","sleep","tired","snore"],category:"Symbols"},{emoji:"🔷",keywords:["diamond","blue","shape","rhombus"],category:"Symbols"},{emoji:"🔶",keywords:["diamond","orange","shape","rhombus"],category:"Symbols"},{emoji:"🔹",keywords:["diamond","blue","small","shape"],category:"Symbols"},{emoji:"🔸",keywords:["diamond","orange","small","shape"],category:"Symbols"},{emoji:"🔺",keywords:["triangle","red","up","shape"],category:"Symbols"},{emoji:"🔻",keywords:["triangle","red","down","shape"],category:"Symbols"},{emoji:"◾",keywords:["square","black","medium","shape"],category:"Symbols"},{emoji:"◽",keywords:["square","white","medium","shape"],category:"Symbols"},{emoji:"▪️",keywords:["square","black","small","shape"],category:"Symbols"},{emoji:"▫️",keywords:["square","white","small","shape"],category:"Symbols"},{emoji:"⬛",keywords:["square","black","large","shape"],category:"Symbols"},{emoji:"⬜",keywords:["square","white","large","shape"],category:"Symbols"},{emoji:"🟥",keywords:["square","red","shape","color"],category:"Symbols"},{emoji:"🟧",keywords:["square","orange","shape","color"],category:"Symbols"},{emoji:"🟨",keywords:["square","yellow","shape","color"],category:"Symbols"},{emoji:"🟩",keywords:["square","green","shape","color"],category:"Symbols"},{emoji:"🟦",keywords:["square","blue","shape","color"],category:"Symbols"},{emoji:"🟪",keywords:["square","purple","shape","color"],category:"Symbols"},{emoji:"🟫",keywords:["square","brown","shape","color"],category:"Symbols"},{emoji:"⭕",keywords:["circle","red","hollow","ring"],category:"Symbols"},{emoji:"🔘",keywords:["radio","button","circle","select"],category:"Symbols"},{emoji:"🔴",keywords:["circle","red","dot","round"],category:"Symbols"},{emoji:"🟠",keywords:["circle","orange","dot","round"],category:"Symbols"},{emoji:"🟡",keywords:["circle","yellow","dot","round"],category:"Symbols"},{emoji:"🟢",keywords:["circle","green","dot","round"],category:"Symbols"},{emoji:"🔵",keywords:["circle","blue","dot","round"],category:"Symbols"},{emoji:"🟣",keywords:["circle","purple","dot","round"],category:"Symbols"},{emoji:"🟤",keywords:["circle","brown","dot","round"],category:"Symbols"},{emoji:"⚫",keywords:["circle","black","dot","round"],category:"Symbols"},{emoji:"⚪",keywords:["circle","white","dot","round"],category:"Symbols"},{emoji:"💠",keywords:["diamond","dot","cute","flower","shape"],category:"Symbols"},{emoji:"🔳",keywords:["square","button","white","outline"],category:"Symbols"},{emoji:"🔲",keywords:["square","button","black","outline"],category:"Symbols"},{emoji:"⭐",keywords:["star","yellow","favorite","best"],category:"Symbols"},{emoji:"🌟",keywords:["star","glow","bright","shiny"],category:"Symbols"},{emoji:"✨",keywords:["sparkle","star","shine","magic","new"],category:"Symbols"},{emoji:"⁉️",keywords:["question","exclamation","interrobang","what"],category:"Symbols"},{emoji:"❓",keywords:["question","mark","red","what"],category:"Symbols"},{emoji:"❔",keywords:["question","mark","white","what"],category:"Symbols"},{emoji:"❗",keywords:["exclamation","mark","red","important"],category:"Symbols"},{emoji:"❕",keywords:["exclamation","mark","white","important"],category:"Symbols"},{emoji:"‼️",keywords:["exclamation","double","bang","important"],category:"Symbols"},{emoji:"⚠️",keywords:["warning","caution","alert","danger"],category:"Symbols"},{emoji:"🚫",keywords:["prohibited","no","forbidden","ban","stop"],category:"Symbols"},{emoji:"🔞",keywords:["eighteen","adult","nsfw","age"],category:"Symbols"},{emoji:"📵",keywords:["phone","no","prohibited","mobile"],category:"Symbols"},{emoji:"🔃",keywords:["arrows","clockwise","cycle","rotate"],category:"Symbols"},{emoji:"🔄",keywords:["arrows","counterclockwise","cycle","refresh","reload"],category:"Symbols"},{emoji:"🔙",keywords:["back","arrow","return","previous"],category:"Symbols"},{emoji:"🔚",keywords:["end","arrow","finish","last"],category:"Symbols"},{emoji:"🔛",keywords:["on","arrow","mark","top"],category:"Symbols"},{emoji:"🔜",keywords:["soon","arrow","coming","next"],category:"Symbols"},{emoji:"🔝",keywords:["top","arrow","up","first"],category:"Symbols"},{emoji:"⬆️",keywords:["arrow","up","north","direction"],category:"Symbols"},{emoji:"⬇️",keywords:["arrow","down","south","direction"],category:"Symbols"},{emoji:"⬅️",keywords:["arrow","left","west","direction"],category:"Symbols"},{emoji:"➡️",keywords:["arrow","right","east","direction"],category:"Symbols"},{emoji:"↗️",keywords:["arrow","northeast","up","right"],category:"Symbols"},{emoji:"↘️",keywords:["arrow","southeast","down","right"],category:"Symbols"},{emoji:"↙️",keywords:["arrow","southwest","down","left"],category:"Symbols"},{emoji:"↖️",keywords:["arrow","northwest","up","left"],category:"Symbols"},{emoji:"↕️",keywords:["arrow","up","down","vertical"],category:"Symbols"},{emoji:"↔️",keywords:["arrow","left","right","horizontal"],category:"Symbols"},{emoji:"🔀",keywords:["shuffle","random","crossed","arrows"],category:"Symbols"},{emoji:"🔁",keywords:["repeat","loop","arrows","cycle"],category:"Symbols"},{emoji:"🔂",keywords:["repeat","one","single","loop"],category:"Symbols"},{emoji:"▶️",keywords:["play","arrow","forward","start"],category:"Symbols"},{emoji:"⏩",keywords:["fast","forward","skip","double"],category:"Symbols"},{emoji:"⏭️",keywords:["next","track","skip","forward"],category:"Symbols"},{emoji:"⏯️",keywords:["play","pause","toggle"],category:"Symbols"},{emoji:"◀️",keywords:["reverse","back","left","arrow"],category:"Symbols"},{emoji:"⏪",keywords:["rewind","back","fast","double"],category:"Symbols"},{emoji:"⏮️",keywords:["previous","track","skip","back"],category:"Symbols"},{emoji:"⏸️",keywords:["pause","stop","hold","double"],category:"Symbols"},{emoji:"⏹️",keywords:["stop","square","end"],category:"Symbols"},{emoji:"⏺️",keywords:["record","circle","red","dot"],category:"Symbols"},{emoji:"🎦",keywords:["cinema","movie","film","camera"],category:"Symbols"},{emoji:"🔅",keywords:["dim","low","brightness","sun"],category:"Symbols"},{emoji:"🔆",keywords:["bright","high","brightness","sun"],category:"Symbols"},{emoji:"📶",keywords:["signal","strength","antenna","bars"],category:"Symbols"},{emoji:"📳",keywords:["vibration","mode","phone","silent"],category:"Symbols"},{emoji:"📴",keywords:["off","phone","mobile","silent"],category:"Symbols"},{emoji:"♀️",keywords:["female","woman","venus","gender"],category:"Symbols"},{emoji:"♂️",keywords:["male","man","mars","gender"],category:"Symbols"},{emoji:"⚧️",keywords:["transgender","symbol","gender"],category:"Symbols"},{emoji:"♻️",keywords:["recycle","environment","green","eco"],category:"Symbols"},{emoji:"⚜️",keywords:["fleur","de","lis","scout","french"],category:"Symbols"},{emoji:"🔱",keywords:["trident","emblem","poseidon","anchor"],category:"Symbols"},{emoji:"📛",keywords:["name","badge","tag","id"],category:"Symbols"},{emoji:"🔰",keywords:["beginner","japanese","symbol","new"],category:"Symbols"},{emoji:"⭕",keywords:["circle","o","round","ring"],category:"Symbols"},{emoji:"✅",keywords:["check","mark","button","yes"],category:"Symbols"},{emoji:"☑️",keywords:["check","box","vote","ballot"],category:"Symbols"},{emoji:"✔️",keywords:["check","mark","heavy","done"],category:"Symbols"},{emoji:"©️",keywords:["copyright","c","ip","legal"],category:"Symbols"},{emoji:"®️",keywords:["registered","r","trademark","legal"],category:"Symbols"},{emoji:"™️",keywords:["trademark","tm","brand","legal"],category:"Symbols"},{emoji:"#️⃣",keywords:["hashtag","number","pound","key"],category:"Symbols"},{emoji:"*️⃣",keywords:["asterisk","star","key"],category:"Symbols"},{emoji:"0️⃣",keywords:["zero","number","0","keycap"],category:"Symbols"},{emoji:"1️⃣",keywords:["one","number","1","keycap"],category:"Symbols"},{emoji:"2️⃣",keywords:["two","number","2","keycap"],category:"Symbols"},{emoji:"3️⃣",keywords:["three","number","3","keycap"],category:"Symbols"},{emoji:"4️⃣",keywords:["four","number","4","keycap"],category:"Symbols"},{emoji:"5️⃣",keywords:["five","number","5","keycap"],category:"Symbols"},{emoji:"6️⃣",keywords:["six","number","6","keycap"],category:"Symbols"},{emoji:"7️⃣",keywords:["seven","number","7","keycap"],category:"Symbols"},{emoji:"8️⃣",keywords:["eight","number","8","keycap"],category:"Symbols"},{emoji:"9️⃣",keywords:["nine","number","9","keycap"],category:"Symbols"},{emoji:"🔟",keywords:["ten","number","10","keycap"],category:"Symbols"},{emoji:"🅰️",keywords:["a","letter","blood","type"],category:"Symbols"},{emoji:"🆎",keywords:["ab","blood","type","letter"],category:"Symbols"},{emoji:"🅱️",keywords:["b","letter","blood","type"],category:"Symbols"},{emoji:"🆑",keywords:["cl","clear","button"],category:"Symbols"},{emoji:"🆒",keywords:["cool","word","button"],category:"Symbols"},{emoji:"🆓",keywords:["free","word","button"],category:"Symbols"},{emoji:"ℹ️",keywords:["info","information","help"],category:"Symbols"},{emoji:"🆔",keywords:["id","identity","button"],category:"Symbols"},{emoji:"Ⓜ️",keywords:["m","circle","metro","letter"],category:"Symbols"},{emoji:"🆕",keywords:["new","word","button"],category:"Symbols"},{emoji:"🆖",keywords:["ng","no","good","button"],category:"Symbols"},{emoji:"🅾️",keywords:["o","letter","blood","type"],category:"Symbols"},{emoji:"🆗",keywords:["ok","word","button","yes"],category:"Symbols"},{emoji:"🅿️",keywords:["p","parking","letter","button"],category:"Symbols"},{emoji:"🆘",keywords:["sos","help","emergency","button"],category:"Symbols"},{emoji:"🆙",keywords:["up","word","button","exclamation"],category:"Symbols"},{emoji:"🆚",keywords:["vs","versus","against","button"],category:"Symbols"},{emoji:"🏁",keywords:["checkered","flag","race","finish"],category:"Flags"},{emoji:"🚩",keywords:["flag","triangular","red","post"],category:"Flags"},{emoji:"🎌",keywords:["flags","crossed","japanese","celebration"],category:"Flags"},{emoji:"🏴",keywords:["flag","black","waving"],category:"Flags"},{emoji:"🏳️",keywords:["flag","white","surrender","peace"],category:"Flags"},{emoji:"🏳️‍🌈",keywords:["rainbow","flag","pride","lgbtq","gay"],category:"Flags"},{emoji:"🏳️‍⚧️",keywords:["transgender","flag","pride","trans"],category:"Flags"},{emoji:"🏴‍☠️",keywords:["pirate","flag","jolly","roger","skull"],category:"Flags"},{emoji:"🇺🇸",keywords:["usa","america","flag","united","states"],category:"Flags"},{emoji:"🇬🇧",keywords:["uk","britain","england","flag","united","kingdom"],category:"Flags"},{emoji:"🇨🇦",keywords:["canada","flag","maple"],category:"Flags"},{emoji:"🇦🇺",keywords:["australia","flag","aussie"],category:"Flags"},{emoji:"🇯🇵",keywords:["japan","flag","japanese"],category:"Flags"},{emoji:"🇰🇷",keywords:["korea","south","flag","korean"],category:"Flags"},{emoji:"🇨🇳",keywords:["china","flag","chinese"],category:"Flags"},{emoji:"🇮🇳",keywords:["india","flag","indian"],category:"Flags"},{emoji:"🇩🇪",keywords:["germany","flag","german"],category:"Flags"},{emoji:"🇫🇷",keywords:["france","flag","french"],category:"Flags"},{emoji:"🇮🇹",keywords:["italy","flag","italian"],category:"Flags"},{emoji:"🇪🇸",keywords:["spain","flag","spanish"],category:"Flags"},{emoji:"🇧🇷",keywords:["brazil","flag","brazilian"],category:"Flags"},{emoji:"🇲🇽",keywords:["mexico","flag","mexican"],category:"Flags"},{emoji:"🇷🇺",keywords:["russia","flag","russian"],category:"Flags"},{emoji:"🇳🇱",keywords:["netherlands","flag","dutch","holland"],category:"Flags"},{emoji:"🇸🇪",keywords:["sweden","flag","swedish"],category:"Flags"},{emoji:"🇳🇴",keywords:["norway","flag","norwegian"],category:"Flags"},{emoji:"🇵🇱",keywords:["poland","flag","polish"],category:"Flags"},{emoji:"🇺🇦",keywords:["ukraine","flag","ukrainian"],category:"Flags"}],uo=Be.reduce((l,d)=>(l[d.category]||(l[d.category]=[]),l[d.category].push(d),l),{}),wo=["Smileys","People","Gestures","Hearts","Animals","Nature","Weather","Food","Tools","Tech","Transport","Objects","Symbols","Flags"];function jo({value:l,onChange:d}){const[s,t]=i.useState(!1),[c,k]=i.useState(""),n=i.useRef(null);i.useEffect(()=>{function g(h){n.current&&!n.current.contains(h.target)&&t(!1)}return document.addEventListener("mousedown",g),()=>document.removeEventListener("mousedown",g)},[]);const y=i.useMemo(()=>{const g=c.trim().toLowerCase();if(!g)return wo.map(p=>({category:p,emojis:uo[p]||[]})).filter(p=>p.emojis.length>0);const h=Be.filter(p=>p.keywords.some(S=>S.includes(g))||p.emoji===g);return h.length?[{category:"Results",emojis:h}]:[]},[c]),b=g=>{d(g),t(!1),k("")};return e.jsxs("div",{ref:n,className:"emoji-picker-container",children:[e.jsxs("div",{className:"emoji-picker-input-wrapper",children:[e.jsx("input",{type:"text",className:"form-input emoji-picker-input",value:l,onChange:g=>d(g.target.value),placeholder:"🚀",onClick:()=>t(!0),style:{textAlign:"center",fontSize:"18px",paddingRight:"32px"}}),e.jsx("button",{type:"button",className:"emoji-picker-toggle",onClick:()=>t(!s),title:"Browse emojis",children:"▼"})]}),s&&e.jsxs("div",{className:"emoji-picker-dropdown",children:[e.jsx("div",{className:"emoji-picker-search",children:e.jsx("input",{type:"text",className:"form-input",placeholder:"Search emojis...",value:c,onChange:g=>k(g.target.value),autoFocus:!0})}),e.jsx("div",{className:"emoji-picker-grid-container",children:y.length===0?e.jsx("div",{className:"emoji-picker-empty",children:"No emojis found"}):y.map(({category:g,emojis:h})=>e.jsxs("div",{className:"emoji-picker-category",children:[e.jsx("div",{className:"emoji-picker-category-label",children:g}),e.jsx("div",{className:"emoji-picker-grid",children:h.map((p,S)=>e.jsx("button",{type:"button",className:`emoji-picker-item ${l===p.emoji?"selected":""}`,onClick:()=>b(p.emoji),title:p.keywords.slice(0,3).join(", "),children:p.emoji},`${p.emoji}-${S}`))})]},g))})]})]})}async function ho(l){return new Promise((d,s)=>{const t=new FileReader;t.onload=async c=>{var n;const k=(n=c.target)==null?void 0:n.result;if(!k){s(new Error("Failed to read file"));return}try{const y=await bo(k);d(y)}catch(y){s(y)}},t.onerror=()=>{s(new Error("Failed to read file"))},t.readAsArrayBuffer(l)})}async function bo(l){return new Promise((d,s)=>{const t=new DataView(l);if(String.fromCharCode(t.getUint8(0),t.getUint8(1),t.getUint8(2),t.getUint8(3))!=="glTF"){s(new Error("Invalid GLB file: missing glTF magic number"));return}const k=new ro,n=new to;n.setDecoderPath("https://www.gstatic.com/draco/versioned/decoders/1.5.7/"),k.setDRACOLoader(n),k.setMeshoptDecoder(ao);const y=new Blob([l],{type:"model/gltf-binary"}),b=URL.createObjectURL(y);k.load(b,g=>{URL.revokeObjectURL(b),n.dispose();const h=g.animations.map(p=>p.name);h.sort((p,S)=>p.localeCompare(S)),d(h)},void 0,g=>{URL.revokeObjectURL(b),n.dispose();const h=g instanceof Error?g.message:"Unknown error";s(new Error(`Failed to parse GLB: ${h}`))})})}async function fo(l){return new Promise(d=>{if(!l.name.toLowerCase().endsWith(".glb")){d(!1);return}const s=new FileReader;s.onload=t=>{var y;const c=(y=t.target)==null?void 0:y.result;if(!c||c.byteLength<4){d(!1);return}const k=new DataView(c),n=String.fromCharCode(k.getUint8(0),k.getUint8(1),k.getUint8(2),k.getUint8(3));d(n==="glTF")},s.onerror=()=>{d(!1)},s.readAsArrayBuffer(l.slice(0,4))})}function xo(l){return l<1024?`${l} B`:l<1024*1024?`${(l/1024).toFixed(1)} KB`:`${(l/(1024*1024)).toFixed(1)} MB`}async function Re(l,d){const s=Le(),t=await fetch(K(`/api/custom-class-icons/${l}`),{method:"POST",headers:{"Content-Type":d.type||"image/png","X-Filename":encodeURIComponent(d.name),...s?{"X-Auth-Token":s}:{}},body:d});if(!t.ok){const c=await t.json().catch(()=>({error:t.statusText}));throw new Error(c.error||`Upload failed: ${t.statusText}`)}return t.json()}async function vo(l){const d=Le(),s=await fetch(K(`/api/custom-class-icons/${l}`),{method:"DELETE",headers:{...d?{"X-Auth-Token":d}:{}}});if(!s.ok)throw new Error(`Failed to delete class icon: ${s.statusText}`)}function So(l){return l.startsWith("/api/")?ze(K(l)):ze(K(`/api/custom-class-icons/${l}`))}function Co(l){return l.toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-|-$/g,"").substring(0,64)}function Oo({isOpen:l,onClose:d}){const{t:s}=Ie(["tools","common"]),t=io(),c=lo(),k=co(),[n,y]=i.useState("skills"),[b,g]=i.useState(null),[h,p]=i.useState(!1),[S,N]=i.useState(!1),[w,U]=i.useState(null),[j,W]=i.useState(""),[O,ee]=i.useState(""),[C,E]=i.useState(""),[z,P]=i.useState(""),[$,D]=i.useState("#4a9eff"),[_,Y]=i.useState(""),[L,G]=i.useState("character-male-a.glb"),[oe,V]=i.useState([]),[se,re]=i.useState(""),[ce,X]=i.useState(!1),[f,q]=i.useState(null),[T,Q]=i.useState([]),[F,M]=i.useState({}),[R,a]=i.useState(1),[u,ne]=i.useState(0),[te,ye]=i.useState(0),[ae,me]=i.useState(0),[ge,je]=i.useState(!1),[he,B]=i.useState(null),pe=i.useRef(null),[de,ie]=i.useState(null),[be,le]=i.useState(null),fe=i.useRef(null),We=i.useCallback(()=>N(!1),[]),{handleMouseDown:De,handleClick:Ge}=Ee(We),J=i.useMemo(()=>{const o=I.findIndex(r=>r.file===L);return o>=0?o:0},[L]),qe=i.useMemo(()=>I[J]||I[0],[J]),xe=i.useCallback(o=>{const r=o==="prev"?(J-1+I.length)%I.length:(J+1)%I.length;G(I[r].file)},[J]),ve=[...t.filter(o=>{if(!j)return!0;const r=j.toLowerCase();return o.name.toLowerCase().includes(r)||o.description.toLowerCase().includes(r)||o.slug.toLowerCase().includes(r)})].sort((o,r)=>o.enabled!==r.enabled?o.enabled?-1:1:o.name.localeCompare(r.name)),Se=k.filter(o=>{if(!O)return!0;const r=O.toLowerCase();return o.name.toLowerCase().includes(r)||o.description.toLowerCase().includes(r)||o.id.toLowerCase().includes(r)}),He=()=>{g(null),p(!0)},Ke=o=>{g(o),p(!0)},Ue=o=>{x.updateSkill(o.id,{enabled:!o.enabled})},$e=o=>{const r=[];return o.assignedAgentClasses.length>0&&r.push(s("tools:skills.classCount",{count:o.assignedAgentClasses.length})),o.assignedAgentIds.length>0&&r.push(s("tools:skills.agentCount",{count:o.assignedAgentIds.length})),r.length===0?s("tools:skills.notAssigned"):r.join(", ")},Ce=o=>{if(!o.enabled)return 0;const r=new Set;for(const m of c.values())o.assignedAgentClasses.includes(m.class)&&r.add(m.id);for(const m of o.assignedAgentIds)r.add(m);return r.size},_e=()=>{const o=["#4a9eff","#50fa7b","#ff79c6","#bd93f9","#ffb86c","#8be9fd","#f1fa8c","#ff5555","#6272a4","#44475a","#00d4aa","#ff6b6b","#4ecdc4","#45b7d1","#96ceb4","#ffeaa7","#dfe6e9","#a29bfe","#fd79a8","#00b894"];return o[Math.floor(Math.random()*o.length)]},Ye=()=>{U(null),E(""),P(""),D(_e()),Y(""),G("character-male-a.glb"),V([]),re(""),X(!1),q(null),Q([]),M({}),a(1),ne(0),ye(0),me(0),B(null),ie(null),le(null),N(!0)},Ve=o=>{var m,H,A;const r=k.find(Z=>Z.id===o);r&&(U(o),E(r.name),P(r.icon),D(r.color),Y(r.description),G(r.model||"character-male-a.glb"),V(r.defaultSkillIds||[]),re(r.instructions||""),X(!!r.customModelPath),q(null),Q(r.availableAnimations||[]),M(r.animationMapping||{}),a(r.modelScale||1),ne(((m=r.modelOffset)==null?void 0:m.x)||0),ye(((H=r.modelOffset)==null?void 0:H.y)||0),me(((A=r.modelOffset)==null?void 0:A.z)||0),B(null),ie(null),le(r.iconPath?So(r.iconPath):null),N(!0))},Xe=async()=>{const o={name:C,icon:z||"🔷",color:$,description:_,defaultSkillIds:oe,instructions:se||void 0,modelScale:R!==1?R:void 0,modelOffset:u!==0||te!==0||ae!==0?{x:u,y:te,z:ae}:void 0,animationMapping:Object.keys(F).length>0?F:void 0,availableAnimations:T.length>0?T:void 0};if(ce||(o.model=L,o.customModelPath=void 0),w){if(x.updateCustomAgentClass(w,o),f&&await Te(w),de)try{const r=await Re(w,de);x.updateCustomAgentClass(w,{iconPath:r.iconPath})}catch(r){console.error("Failed to upload class icon:",r)}}else{x.createCustomAgentClass(o);const r=Co(C);if(f&&(await new Promise(m=>setTimeout(m,100)),await Te(r)),de){await new Promise(m=>setTimeout(m,f?0:100));try{const m=await Re(r,de);x.updateCustomAgentClass(r,{iconPath:m.iconPath})}catch(m){console.error("Failed to upload class icon:",m)}}}N(!1)},Te=async o=>{if(f){je(!0),B(null);try{const r=await Me(K(`/api/custom-models/upload/${o}`),{method:"POST",headers:{"Content-Type":"application/octet-stream","X-Filename":f.name},body:f});if(!r.ok){const m=await r.json();throw new Error(m.error||s("tools:skills.uploadFailed"))}x.updateCustomAgentClass(o,{availableAnimations:T,animationMapping:F,modelScale:R!==1?R:void 0})}catch(r){B(r.message||s("tools:skills.failedToUploadModel")),console.error("Model upload error:",r)}finally{je(!1)}}},Qe=async o=>{var H;const r=(H=o.target.files)==null?void 0:H[0];if(!r)return;if(B(null),!await fo(r)){B(s("tools:skills.invalidGlbFile"));return}if(r.size>50*1024*1024){B(s("tools:skills.fileTooLarge"));return}try{const A=await ho(r);q(r),Q(A),X(!0);const Z={},ue=A.map(v=>v.toLowerCase()),Ae=ue.findIndex(v=>v.includes("idle")||v==="static");Ae>=0&&(Z.idle=A[Ae]);const Ne=ue.findIndex(v=>v.includes("walk")||v.includes("run"));Ne>=0&&(Z.walk=A[Ne]);const Oe=ue.findIndex(v=>v.includes("work")||v.includes("action")||v.includes("attack")||v.includes("jump"));Oe>=0&&(Z.working=A[Oe]),M(Z)}catch(A){B(A.message||s("tools:skills.failedToParseModel")),console.error("Model parse error:",A)}o.target.value=""},Je=async()=>{if(w)try{await Me(K(`/api/custom-models/${w}`),{method:"DELETE"})}catch(o){console.error("Failed to delete model:",o)}X(!1),q(null),Q([]),M({}),a(1),G("character-male-a.glb")},[ke,Fe]=i.useState(null),Ze=o=>{Fe(o)},eo=o=>{V(r=>r.includes(o)?r.filter(m=>m!==o):[...r,o])};return l?e.jsxs(e.Fragment,{children:[e.jsx("div",{className:"panel-overlay",onClick:d}),e.jsxs("div",{className:"skills-panel side-panel",children:[e.jsxs("div",{className:"panel-header",children:[e.jsx("h3",{children:s(n==="skills"?"tools:skills.title":"tools:skills.agentClasses")}),n==="skills"?e.jsx("button",{className:"btn btn-sm btn-primary",onClick:He,children:s("tools:skills.newSkill")}):e.jsx("button",{className:"btn btn-sm btn-primary",onClick:Ye,children:s("tools:skills.newClass")}),e.jsx("button",{className:"panel-close",onClick:d,children:"×"})]}),e.jsxs("div",{className:"panel-tabs",style:{display:"flex",borderBottom:"1px solid var(--border-color)",padding:"0 16px"},children:[e.jsxs("button",{className:`panel-tab ${n==="skills"?"active":""}`,onClick:()=>y("skills"),style:{padding:"8px 16px",background:"transparent",border:"none",borderBottom:n==="skills"?"2px solid var(--accent-blue)":"2px solid transparent",color:n==="skills"?"var(--text-primary)":"var(--text-secondary)",cursor:"pointer",fontWeight:n==="skills"?600:400},children:[s("tools:skills.title")," (",t.length,")"]}),e.jsxs("button",{className:`panel-tab ${n==="classes"?"active":""}`,onClick:()=>y("classes"),style:{padding:"8px 16px",background:"transparent",border:"none",borderBottom:n==="classes"?"2px solid var(--accent-blue)":"2px solid transparent",color:n==="classes"?"var(--text-primary)":"var(--text-secondary)",cursor:"pointer",fontWeight:n==="classes"?600:400},children:[s("tools:skills.agentClasses")," (",k.length,")"]})]}),n==="skills"&&e.jsx("div",{className:"panel-search",style:{padding:"12px 16px 12px"},children:e.jsx("input",{type:"text",className:"form-input",placeholder:s("tools:skills.searchSkills"),value:j,onChange:o=>W(o.target.value),style:{width:"100%"}})}),n==="classes"&&e.jsx("div",{className:"panel-search",style:{padding:"12px 16px 12px"},children:e.jsx("input",{type:"text",className:"form-input",placeholder:s("tools:skills.searchClasses"),value:O,onChange:o=>ee(o.target.value),style:{width:"100%"}})}),e.jsx("div",{className:"panel-content",style:{flex:1,overflowY:"auto",padding:"0 16px"},children:n==="skills"?ve.length===0?e.jsx("div",{className:"empty-state",style:{textAlign:"center",padding:"40px 20px",opacity:.6},children:j?e.jsx("p",{children:s("tools:skills.noClassesMatch",{query:j})}):e.jsxs(e.Fragment,{children:[e.jsx("p",{children:s("tools:skills.noSkillsDefined")}),e.jsx("p",{style:{fontSize:"12px",marginTop:"8px"},children:s("tools:skills.createSkillsHint")})]})}):e.jsx("div",{className:"skills-list",style:{display:"flex",flexDirection:"column",gap:"8px"},children:ve.map(o=>e.jsxs("div",{className:`skill-card ${o.enabled?"":"disabled"}`,style:{background:"var(--bg-secondary)",borderRadius:"8px",padding:"12px",border:"1px solid var(--border-color)",opacity:o.enabled?1:.6,cursor:"pointer"},onClick:()=>Ke(o.id),children:[e.jsxs("div",{style:{display:"flex",justifyContent:"space-between",alignItems:"flex-start"},children:[e.jsxs("div",{style:{flex:1},children:[e.jsxs("div",{style:{display:"flex",alignItems:"center",gap:"8px"},children:[e.jsx("span",{style:{fontWeight:600,fontSize:"14px"},children:o.name}),o.builtin&&e.jsx("span",{style:{fontSize:"10px",background:"linear-gradient(135deg, var(--accent-cyan), var(--accent-purple))",color:"#fff",padding:"3px 8px",borderRadius:"10px",fontWeight:700,textTransform:"uppercase",letterSpacing:"0.5px",boxShadow:"0 2px 4px rgba(139, 233, 253, 0.3)"},children:s("tools:skills.builtIn")}),!o.enabled&&e.jsx("span",{style:{fontSize:"10px",background:"var(--bg-tertiary)",padding:"2px 6px",borderRadius:"3px"},children:s("tools:skills.disabled")})]}),e.jsxs("div",{style:{fontSize:"11px",color:"var(--text-secondary)",fontFamily:"monospace"},children:["/",o.slug]})]}),e.jsx("button",{className:"btn btn-sm btn-secondary",onClick:r=>{r.stopPropagation(),Ue(o)},style:{fontSize:"10px",padding:"4px 8px"},children:o.enabled?s("tools:skills.disable"):s("tools:skills.enable")})]}),e.jsx("p",{style:{fontSize:"12px",color:"var(--text-secondary)",margin:"8px 0",lineHeight:1.4,display:"-webkit-box",WebkitLineClamp:2,WebkitBoxOrient:"vertical",overflow:"hidden"},children:o.description}),e.jsxs("div",{style:{display:"flex",gap:"12px",fontSize:"11px",color:"var(--text-secondary)"},children:[o.builtin&&e.jsx("span",{style:{color:"var(--accent-cyan)"},title:s("tools:skills.builtInTideCommander"),children:"Tide Commander"}),e.jsx("span",{title:s("tools:skills.assignedTo"),children:$e(o)}),o.allowedTools.length>0&&e.jsx("span",{title:s("tools:skills.allowedToolsTitle"),children:s("tools:skills.toolCount",{count:o.allowedTools.length})}),o.enabled&&Ce(o)>0&&e.jsx("span",{style:{color:"var(--accent-green)"},children:s("tools:skills.activeOnAgents",{count:Ce(o)})})]})]},o.id))}):k.length===0?e.jsxs("div",{className:"empty-state",style:{textAlign:"center",padding:"40px 20px",opacity:.6},children:[e.jsx("p",{children:s("tools:skills.noCustomClasses")}),e.jsx("p",{style:{fontSize:"12px",marginTop:"8px"},children:s("tools:skills.createClassesHint")})]}):Se.length===0?e.jsx("div",{className:"empty-state",style:{textAlign:"center",padding:"40px 20px",opacity:.6},children:e.jsx("p",{children:s("tools:skills.noClassesMatch",{query:O})})}):e.jsx("div",{className:"classes-list",style:{display:"flex",flexDirection:"column",gap:"8px",paddingTop:"12px"},children:Se.map(o=>{var r;return e.jsxs("div",{className:"class-card",style:{background:"var(--bg-secondary)",borderRadius:"8px",padding:"12px",border:`1px solid ${o.color}40`,cursor:"pointer"},onClick:()=>Ve(o.id),children:[e.jsxs("div",{style:{display:"flex",justifyContent:"space-between",alignItems:"flex-start"},children:[e.jsxs("div",{style:{display:"flex",alignItems:"center",gap:"10px"},children:[e.jsx("div",{style:{width:"36px",height:"36px",borderRadius:"8px",background:`${o.color}20`,display:"flex",alignItems:"center",justifyContent:"center",fontSize:"18px"},children:e.jsx(no,{classId:o.id,size:18})}),e.jsxs("div",{children:[e.jsx("div",{style:{fontWeight:600,fontSize:"14px"},children:o.name}),e.jsxs("div",{style:{fontSize:"11px",color:"var(--text-secondary)"},children:[s("tools:skills.model"),": ",((r=I.find(m=>m.file===o.model))==null?void 0:r.name)||o.model||"Male A"]})]})]}),e.jsx("button",{className:"btn btn-sm btn-secondary",onClick:m=>{m.stopPropagation(),Ze(o.id)},style:{fontSize:"10px",padding:"4px 8px",color:"var(--accent-red)"},children:s("common:buttons.delete")})]}),e.jsx("p",{style:{fontSize:"12px",color:"var(--text-secondary)",margin:"8px 0 0",lineHeight:1.4},children:o.description||s("tools:skills.noDescription")}),e.jsxs("div",{style:{marginTop:"8px",fontSize:"11px",color:"var(--text-secondary)",display:"flex",gap:"12px"},children:[o.defaultSkillIds.length>0&&e.jsx("span",{children:s("tools:skills.defaultSkillCount",{count:o.defaultSkillIds.length})}),o.instructions&&e.jsx("span",{style:{color:"var(--accent-cyan)"},children:s("tools:skills.hasInstructions")})]})]},o.id)})})}),e.jsx("div",{className:"panel-footer",style:{padding:"12px 16px",borderTop:"1px solid var(--border-color)"},children:e.jsx("div",{style:{fontSize:"11px",color:"var(--text-secondary)"},children:n==="skills"?e.jsxs(e.Fragment,{children:[s("tools:skills.total",{count:t.length}),t.filter(o=>o.enabled).length!==t.length&&e.jsxs("span",{children:[" (",s("tools:skills.enabled",{enabledCount:t.filter(o=>o.enabled).length}),")"]})]}):e.jsx(e.Fragment,{children:s("tools:skills.customClassesCount",{count:k.length})})})})]}),e.jsx(ko,{isOpen:h,onClose:()=>p(!1),skillId:b}),S&&e.jsx("div",{className:"modal-overlay visible",onMouseDown:De,onClick:Ge,children:e.jsxs("div",{className:"modal skill-editor-modal",children:[e.jsx("div",{className:"modal-header",children:s(w?"tools:skills.editAgentClass":"tools:skills.createAgentClass")}),e.jsxs("div",{className:"modal-body",style:{padding:"16px"},children:[e.jsxs("div",{className:"form-section",style:{marginBottom:"12px"},children:[e.jsx("label",{className:"form-label",children:s("common:labels.name")}),e.jsx("input",{type:"text",className:"form-input",value:C,onChange:o=>E(o.target.value),placeholder:s("tools:skills.classNamePlaceholder")})]}),e.jsxs("div",{className:"form-section",style:{marginBottom:"16px"},children:[e.jsx("label",{className:"form-label",children:s("tools:skills.characterModel")}),e.jsx("input",{ref:pe,type:"file",accept:".glb",onChange:Qe,style:{display:"none"}}),ce?e.jsxs(e.Fragment,{children:[e.jsxs("div",{style:{padding:"12px",background:"var(--bg-tertiary)",borderRadius:"8px",border:"1px solid var(--accent-cyan)"},children:[e.jsx("div",{style:{display:"flex",justifyContent:"center",marginBottom:"12px"},children:e.jsx(Pe,{customModelFile:f||void 0,customModelUrl:!f&&w?K(`/api/custom-models/${w}`):void 0,modelScale:R,modelOffset:{x:u,y:te,z:ae},idleAnimation:F.idle!==void 0?F.idle:"",width:120,height:150})}),e.jsxs("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between",marginBottom:"12px"},children:[e.jsxs("div",{children:[e.jsx("div",{style:{fontSize:"12px",fontWeight:500,color:"var(--accent-cyan)"},children:s("tools:skills.customModel")}),e.jsx("div",{style:{fontSize:"11px",color:"var(--text-secondary)",marginTop:"2px"},children:f?`${f.name} (${xo(f.size)})`:s("tools:skills.uploaded")})]}),e.jsx("button",{type:"button",onClick:Je,style:{padding:"4px 8px",background:"transparent",border:"1px solid var(--accent-red)",borderRadius:"4px",color:"var(--accent-red)",cursor:"pointer",fontSize:"10px"},children:s("tools:skills.removeModel")})]}),e.jsxs("div",{style:{marginBottom:"12px"},children:[e.jsxs("label",{style:{fontSize:"11px",color:"var(--text-secondary)",display:"block",marginBottom:"4px"},children:[s("tools:skills.modelScale"),": ",R.toFixed(3),"x"]}),e.jsx("input",{type:"range",min:"0",max:"100",step:"1",value:Math.log(R/.01)/Math.log(1e4)*100,onChange:o=>{const r=parseFloat(o.target.value),m=.01*Math.pow(1e4,r/100);a(Math.round(m*1e3)/1e3)},style:{width:"100%"}}),e.jsxs("div",{style:{display:"flex",justifyContent:"space-between",fontSize:"9px",color:"var(--text-muted)",marginTop:"2px"},children:[e.jsx("span",{children:"0.01x"}),e.jsx("span",{children:"1x"}),e.jsx("span",{children:"100x"})]})]}),e.jsxs("div",{style:{marginBottom:"12px"},children:[e.jsxs("label",{style:{fontSize:"11px",color:"var(--text-secondary)",display:"block",marginBottom:"4px"},children:[s("tools:skills.positionOffsetX"),": ",u.toFixed(2)]}),e.jsx("input",{type:"range",min:"-1",max:"1",step:"0.01",value:u,onChange:o=>ne(parseFloat(o.target.value)),style:{width:"100%"}})]}),e.jsxs("div",{style:{marginBottom:"12px"},children:[e.jsxs("label",{style:{fontSize:"11px",color:"var(--text-secondary)",display:"block",marginBottom:"4px"},children:[s("tools:skills.positionOffsetY"),": ",te.toFixed(2)]}),e.jsx("input",{type:"range",min:"-1",max:"1",step:"0.01",value:te,onChange:o=>ye(parseFloat(o.target.value)),style:{width:"100%"}})]}),e.jsxs("div",{style:{marginBottom:"12px"},children:[e.jsxs("label",{style:{fontSize:"11px",color:"var(--text-secondary)",display:"block",marginBottom:"4px"},children:[s("tools:skills.positionOffsetZ"),": ",ae.toFixed(2)]}),e.jsx("input",{type:"range",min:"-3",max:"3",step:"0.01",value:ae,onChange:o=>me(parseFloat(o.target.value)),style:{width:"100%"}})]}),T.length>0&&e.jsxs("div",{children:[e.jsxs("div",{style:{fontSize:"11px",color:"var(--text-secondary)",marginBottom:"8px"},children:[s("tools:skills.animationMapping")," (",s("tools:skills.detected",{count:T.length}),")"]}),e.jsxs("div",{style:{display:"flex",alignItems:"center",gap:"8px",marginBottom:"6px"},children:[e.jsxs("span",{style:{fontSize:"11px",color:"var(--text-primary)",width:"60px"},children:[s("tools:skills.idle"),":"]}),e.jsxs("select",{value:F.idle||"",onChange:o=>M(r=>({...r,idle:o.target.value||void 0})),style:{flex:1,padding:"4px 8px",background:"var(--bg-secondary)",border:"1px solid var(--border-color)",borderRadius:"4px",color:"var(--text-primary)",fontSize:"11px"},children:[e.jsx("option",{value:"",children:s("tools:skills.none")}),T.map(o=>e.jsx("option",{value:o,children:o},o))]})]}),e.jsxs("div",{style:{display:"flex",alignItems:"center",gap:"8px",marginBottom:"6px"},children:[e.jsxs("span",{style:{fontSize:"11px",color:"var(--text-primary)",width:"60px"},children:[s("tools:skills.walk"),":"]}),e.jsxs("select",{value:F.walk||"",onChange:o=>M(r=>({...r,walk:o.target.value||void 0})),style:{flex:1,padding:"4px 8px",background:"var(--bg-secondary)",border:"1px solid var(--border-color)",borderRadius:"4px",color:"var(--text-primary)",fontSize:"11px"},children:[e.jsx("option",{value:"",children:s("tools:skills.none")}),T.map(o=>e.jsx("option",{value:o,children:o},o))]})]}),e.jsxs("div",{style:{display:"flex",alignItems:"center",gap:"8px"},children:[e.jsxs("span",{style:{fontSize:"11px",color:"var(--text-primary)",width:"60px"},children:[s("tools:skills.working"),":"]}),e.jsxs("select",{value:F.working||"",onChange:o=>M(r=>({...r,working:o.target.value||void 0})),style:{flex:1,padding:"4px 8px",background:"var(--bg-secondary)",border:"1px solid var(--border-color)",borderRadius:"4px",color:"var(--text-primary)",fontSize:"11px"},children:[e.jsx("option",{value:"",children:s("tools:skills.noneBounce")}),T.map(o=>e.jsx("option",{value:o,children:o},o))]})]})]}),T.length===0&&e.jsx("div",{style:{fontSize:"11px",color:"var(--text-muted)",fontStyle:"italic"},children:s("tools:skills.noAnimations")})]}),e.jsx("button",{type:"button",onClick:()=>{var o;return(o=pe.current)==null?void 0:o.click()},style:{width:"100%",marginTop:"8px",padding:"6px 12px",background:"var(--bg-secondary)",border:"1px solid var(--border-color)",borderRadius:"6px",color:"var(--text-secondary)",cursor:"pointer",fontSize:"11px"},children:s("tools:skills.replaceModel")})]}):e.jsxs(e.Fragment,{children:[e.jsxs("div",{style:{display:"flex",alignItems:"center",justifyContent:"center",gap:"12px",padding:"12px",background:"var(--bg-tertiary)",borderRadius:"8px",border:"1px solid var(--border-color)"},children:[e.jsx("button",{type:"button",onClick:()=>xe("prev"),style:{width:"36px",height:"36px",borderRadius:"50%",border:"1px solid var(--border-color)",background:"var(--bg-secondary)",color:"var(--text-primary)",cursor:"pointer",display:"flex",alignItems:"center",justifyContent:"center",fontSize:"18px"},children:"‹"}),e.jsxs("div",{style:{textAlign:"center"},children:[e.jsx(Pe,{modelFile:L,width:120,height:150}),e.jsx("div",{style:{marginTop:"8px",fontSize:"12px",fontWeight:500,color:"var(--text-primary)"},children:qe.name}),e.jsxs("div",{style:{fontSize:"10px",color:"var(--text-secondary)",marginTop:"2px"},children:[J+1," / ",I.length]})]}),e.jsx("button",{type:"button",onClick:()=>xe("next"),style:{width:"36px",height:"36px",borderRadius:"50%",border:"1px solid var(--border-color)",background:"var(--bg-secondary)",color:"var(--text-primary)",cursor:"pointer",display:"flex",alignItems:"center",justifyContent:"center",fontSize:"18px"},children:"›"})]}),e.jsx("button",{type:"button",onClick:()=>{var o;return(o=pe.current)==null?void 0:o.click()},style:{width:"100%",marginTop:"8px",padding:"8px 12px",background:"var(--bg-secondary)",border:"1px dashed var(--border-color)",borderRadius:"6px",color:"var(--text-secondary)",cursor:"pointer",fontSize:"12px"},children:s("tools:skills.uploadCustomModel")})]}),he&&e.jsx("div",{style:{marginTop:"8px",padding:"8px",background:"rgba(255, 85, 85, 0.1)",border:"1px solid var(--accent-red)",borderRadius:"4px",fontSize:"11px",color:"var(--accent-red)"},children:he})]}),e.jsxs("div",{style:{display:"flex",gap:"12px",marginBottom:"12px"},children:[e.jsxs("div",{className:"form-section",style:{flex:"0 0 80px"},children:[e.jsx("label",{className:"form-label",children:s("tools:skills.icon")}),be?e.jsxs("div",{className:"class-icon-preview-container",children:[e.jsx("img",{src:be,alt:"Class icon",className:"class-icon-preview-img"}),e.jsx("button",{className:"class-icon-preview-remove",onClick:()=>{if(ie(null),le(null),w){const o=k.find(r=>r.id===w);o!=null&&o.iconPath&&vo(w).then(()=>{x.updateCustomAgentClass(w,{iconPath:void 0})}).catch(r=>console.error("Failed to delete class icon:",r))}},title:"Remove icon",children:"×"})]}):e.jsx(jo,{value:z,onChange:o=>{P(o),ie(null),le(null)}})]}),e.jsxs("div",{className:"form-section",style:{flex:"0 0 auto",display:"flex",flexDirection:"column",justifyContent:"flex-end"},children:[e.jsx("input",{ref:fe,type:"file",accept:"image/png,image/jpeg,image/gif,image/webp,image/svg+xml",style:{display:"none"},onChange:o=>{var m;const r=(m=o.target.files)==null?void 0:m[0];if(r){ie(r),P("");const H=URL.createObjectURL(r);le(H)}o.target.value=""}}),e.jsxs("button",{className:"class-icon-upload-btn",onClick:()=>{var o;return(o=fe.current)==null?void 0:o.click()},title:"Upload custom icon",children:[e.jsx("span",{className:"class-icon-upload-icon",children:"+"}),e.jsx("span",{className:"class-icon-upload-label",children:"IMG"})]})]}),e.jsxs("div",{className:"form-section",style:{flex:1},children:[e.jsx("label",{className:"form-label",children:s("tools:skills.color")}),e.jsx("input",{type:"color",value:$,onChange:o=>D(o.target.value),style:{width:"100%",height:"36px",padding:"2px",cursor:"pointer"}})]})]}),e.jsxs("div",{className:"form-section",style:{marginBottom:"12px"},children:[e.jsx("label",{className:"form-label",children:s("common:labels.description")}),e.jsx("input",{type:"text",className:"form-input",value:_,onChange:o=>Y(o.target.value),placeholder:s("tools:skills.classDescriptionPlaceholder")})]}),e.jsxs("div",{className:"form-section",style:{marginBottom:"12px"},children:[e.jsx("label",{className:"form-label",children:s("tools:skills.defaultSkillsLabel")}),e.jsx("p",{className:"form-hint",style:{fontSize:"11px",color:"var(--text-secondary)",marginBottom:"8px"},children:s("tools:skills.defaultSkillsHint")}),e.jsx("div",{style:{maxHeight:"120px",overflowY:"auto",border:"1px solid var(--border-color)",borderRadius:"6px",padding:"8px"},children:t.filter(o=>o.enabled).length===0?e.jsx("div",{style:{color:"var(--text-muted)",fontSize:"12px",textAlign:"center",padding:"12px"},children:s("tools:skills.noEnabledSkills")}):t.filter(o=>o.enabled).map(o=>e.jsxs("div",{onClick:()=>eo(o.id),style:{display:"flex",alignItems:"center",gap:"8px",padding:"6px 8px",borderRadius:"4px",cursor:"pointer",background:oe.includes(o.id)?"rgba(80, 250, 123, 0.15)":"transparent"},children:[e.jsx("span",{style:{width:"16px",color:"var(--dracula-green)"},children:oe.includes(o.id)?e.jsx(yo,{name:"check",size:12}):null}),e.jsx("span",{style:{fontSize:"13px"},children:o.name})]},o.id))})]}),e.jsxs("div",{className:"form-section",children:[e.jsx("label",{className:"form-label",children:s("tools:skills.instructionsLabel")}),e.jsx("p",{className:"form-hint",style:{fontSize:"11px",color:"var(--text-secondary)",marginBottom:"8px"},children:s("tools:skills.instructionsHint")}),e.jsx("textarea",{className:"form-input",value:se,onChange:o=>re(o.target.value),placeholder:`# Agent Instructions
22
+ `;function ko({isOpen:l,onClose:d,skillId:s}){const{t}=Ie(["tools","common"]),c=oo(s??null),k=so(),n=!!c,y=(c==null?void 0:c.builtin)===!0,[b,g]=i.useState(""),[h,p]=i.useState(""),[S,N]=i.useState(""),[w,U]=i.useState(""),[j,W]=i.useState([]),[O,ee]=i.useState(""),[C,E]=i.useState([]),[z,P]=i.useState([]),[$,D]=i.useState(!0),[_,V]=i.useState(!1),[L,G]=i.useState(null),[oe,Y]=i.useState(!1),se=i.useRef(null),re=i.useRef(null);i.useEffect(()=>{l&&(c?(g(c.name),p(c.slug),N(c.description),U(c.content||""),W(c.allowedTools||[]),E(c.assignedAgentIds||[]),P(c.assignedAgentClasses||[]),D(c.enabled)):(g(t("tools:skills.newSkillDefault")),p(""),N(""),U(po),W([]),E([]),P([]),D(!0)),ee(""),V(!1),setTimeout(()=>{var a;return(a=se.current)==null?void 0:a.focus()},100))},[l,c]),i.useEffect(()=>{if(!n&&b){const a=b.toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-|-$/g,"").substring(0,64);p(a)}},[b,n]);const ce=a=>{if(a.preventDefault(),y&&s){x.updateSkill(s,{assignedAgentIds:C,assignedAgentClasses:z,enabled:$}),d();return}if(!b.trim()||!S.trim())return;const u={name:b.trim(),slug:h.trim()||b.toLowerCase().replace(/[^a-z0-9]+/g,"-"),description:S.trim(),content:w.trim(),allowedTools:j,assignedAgentIds:C,assignedAgentClasses:z,enabled:$};if(n&&s){if(c&&(c.name!==u.name||c.description!==u.description||c.content!==u.content||c.enabled!==u.enabled||JSON.stringify(c.allowedTools)!==JSON.stringify(u.allowedTools))){G(u);return}x.updateSkill(s,u)}else x.createSkill(u);d()},X=()=>{s&&Y(!0)},f=a=>{j.includes(a)?W(j.filter(u=>u!==a)):W([...j,a])},q=()=>{O.trim()&&!j.includes(O.trim())&&(W([...j,O.trim()]),ee(""))},T=a=>{z.includes(a)?P(z.filter(u=>u!==a)):P([...z,a])},J=a=>{C.includes(a)?E(C.filter(u=>u!==a)):E([...C,a])},F=k.filter(a=>a.class!=="boss"),{handleMouseDown:M,handleClick:R}=Ee(d);return l?e.jsxs("div",{className:"modal-overlay visible",onMouseDown:M,onClick:R,children:[e.jsxs("div",{className:"modal skill-editor-modal",style:{maxWidth:"700px",maxHeight:"90vh"},children:[e.jsxs("div",{className:"modal-header",children:[e.jsxs("span",{children:[t(n?y?"tools:skills.viewBuiltInSkill":"tools:skills.editSkill":"tools:skills.createSkill"),y&&e.jsx("span",{style:{fontSize:"10px",background:"var(--accent-cyan)",color:"var(--bg-primary)",padding:"2px 6px",borderRadius:"3px",fontWeight:600,marginLeft:"8px"},children:t("tools:skills.builtIn")})]}),n&&!y&&e.jsx("button",{type:"button",className:"btn btn-danger btn-sm",onClick:X,style:{marginLeft:"auto",marginRight:"12px"},children:t("common:buttons.delete")})]}),e.jsxs("form",{onSubmit:ce,children:[e.jsxs("div",{className:"modal-body",style:{maxHeight:"70vh",overflowY:"auto"},children:[y&&e.jsx("div",{style:{background:"rgba(139, 233, 253, 0.1)",border:"1px solid var(--accent-cyan)",borderRadius:"6px",padding:"10px 12px",marginBottom:"16px",fontSize:"12px",color:"var(--accent-cyan)"},children:t("tools:skills.builtInNotice")}),e.jsxs("div",{className:"form-section",children:[e.jsx("label",{className:"form-label",children:t("tools:skills.nameRequired")}),e.jsx("input",{ref:se,type:"text",className:"form-input",value:b,onChange:a=>g(a.target.value),placeholder:t("tools:skills.skillNamePlaceholder"),required:!0,disabled:y,style:y?{opacity:.7,cursor:"not-allowed"}:void 0})]}),e.jsxs("div",{className:"form-section",children:[e.jsx("label",{className:"form-label",children:t("tools:skills.slugLabel")}),e.jsx("input",{type:"text",className:"form-input",value:h,onChange:a=>p(a.target.value),placeholder:t("tools:skills.slugPlaceholder"),style:{fontFamily:"monospace",fontSize:"12px",...y?{opacity:.7,cursor:"not-allowed"}:{}},disabled:y}),e.jsx("small",{className:"form-hint",children:t("tools:skills.slugHint")})]}),e.jsxs("div",{className:"form-section",children:[e.jsx("label",{className:"form-label",children:t("tools:skills.descriptionRequired")}),e.jsx("textarea",{className:"form-input",value:S,onChange:a=>N(a.target.value),placeholder:t("tools:skills.skillDescPlaceholder"),rows:3,required:!0,style:{resize:"vertical",...y?{opacity:.7,cursor:"not-allowed"}:{}},disabled:y}),e.jsx("small",{className:"form-hint",children:t("tools:skills.descriptionHint")})]}),e.jsxs("div",{className:"form-section",children:[e.jsx("label",{className:"form-label",children:t("tools:skills.instructionsMarkdown")}),e.jsx("textarea",{ref:re,className:"form-input",value:w,onChange:a=>U(a.target.value),placeholder:t("tools:skills.skillContentPlaceholder"),rows:12,style:{fontFamily:"monospace",fontSize:"12px",resize:"vertical",minHeight:"200px",...y?{opacity:.7,cursor:"not-allowed"}:{}},disabled:y})]}),e.jsxs("div",{className:"form-section",children:[e.jsx("label",{className:"form-label",children:t("tools:skills.allowedTools")}),y?e.jsx("div",{style:{display:"flex",flexWrap:"wrap",gap:"4px",opacity:.7},children:j.length>0?j.map(a=>e.jsx("span",{style:{background:"var(--bg-tertiary)",padding:"2px 8px",borderRadius:"4px",fontSize:"11px"},children:a},a)):e.jsx("span",{style:{fontSize:"12px",color:"var(--text-muted)"},children:t("tools:skills.noSpecificTools")})}):e.jsxs(e.Fragment,{children:[e.jsx("div",{className:"tool-presets",style:{display:"flex",flexWrap:"wrap",gap:"6px",marginBottom:"8px"},children:go.map(a=>e.jsx("button",{type:"button",className:`btn btn-sm ${j.includes(a.value)?"btn-primary":"btn-secondary"}`,onClick:()=>f(a.value),style:{fontSize:"11px",padding:"4px 8px"},children:t(a.labelKey)},a.value))}),e.jsxs("div",{style:{display:"flex",gap:"8px"},children:[e.jsx("input",{type:"text",className:"form-input",value:O,onChange:a=>ee(a.target.value),placeholder:t("tools:skills.customToolPlaceholder"),style:{flex:1,fontSize:"12px"},onKeyDown:a=>{a.key==="Enter"&&(a.preventDefault(),q())}}),e.jsx("button",{type:"button",className:"btn btn-secondary btn-sm",onClick:q,children:t("common:buttons.add")})]}),j.length>0&&e.jsx("div",{style:{marginTop:"8px",display:"flex",flexWrap:"wrap",gap:"4px"},children:j.map(a=>e.jsxs("span",{className:"tag",style:{background:"var(--bg-tertiary)",padding:"2px 8px",borderRadius:"4px",fontSize:"11px",cursor:"pointer"},onClick:()=>f(a),title:t("tools:skills.clickToRemove"),children:[a," ×"]},a))})]})]}),e.jsxs("div",{className:"form-section",children:[e.jsx("label",{className:"form-label",children:t("tools:skills.assignToClasses")}),e.jsx("small",{className:"form-hint",style:{display:"block",marginBottom:"8px"},children:t("tools:skills.allAgentsOfClasses")}),e.jsx("div",{style:{display:"grid",gridTemplateColumns:"repeat(2, 1fr)",gap:"6px"},children:mo.map(a=>e.jsxs("button",{type:"button",className:`btn btn-sm ${z.includes(a.value)?"btn-primary":"btn-secondary"}`,onClick:()=>T(a.value),style:{fontSize:"11px",padding:"6px 8px",textAlign:"left"},children:[e.jsx("strong",{children:t(a.labelKey)}),e.jsxs("span",{style:{opacity:.7,marginLeft:"4px"},children:["- ",t(a.descriptionKey)]})]},a.value))})]}),F.length>0&&e.jsxs("div",{className:"form-section",children:[e.jsx("label",{className:"form-label",children:t("tools:skills.assignToAgents")}),e.jsx("div",{style:{display:"flex",flexWrap:"wrap",gap:"6px"},children:F.map(a=>e.jsxs("button",{type:"button",className:`btn btn-sm ${C.includes(a.id)?"btn-primary":"btn-secondary"}`,onClick:()=>J(a.id),style:{fontSize:"11px",padding:"4px 8px"},children:[a.name,e.jsxs("span",{style:{opacity:.6,marginLeft:"4px"},children:["(",a.class,")"]})]},a.id))})]}),e.jsxs("div",{className:"form-section",children:[e.jsxs("button",{type:"button",className:"btn btn-secondary btn-sm",onClick:()=>V(!_),style:{marginBottom:"8px"},children:[t(_?"common:buttons2.hide":"common:buttons2.show")," ",t("tools:skills.advancedOptions")]}),_&&e.jsxs("div",{style:{marginTop:"8px"},children:[e.jsxs("label",{className:"form-label",style:{display:"flex",alignItems:"center",gap:"8px"},children:[e.jsx("input",{type:"checkbox",checked:$,onChange:a=>D(a.target.checked)}),t("tools:skills.skillEnabled")]}),e.jsx("small",{className:"form-hint",children:t("tools:skills.disabledSkillsHint")})]})]})]}),e.jsxs("div",{className:"modal-footer",children:[e.jsx("button",{type:"button",className:"btn btn-secondary",onClick:d,children:t(y?"common:buttons.close":"common:buttons.cancel")}),!y&&e.jsx("button",{type:"submit",className:"btn btn-primary",children:t(n?"common:buttons2.saveChanges":"tools:skills.createSkill")}),y&&e.jsx("button",{type:"submit",className:"btn btn-primary",children:t("tools:skills.saveAssignments")})]})]})]}),e.jsx(we,{isOpen:L!==null,title:t("tools:skills.saveAssignments",{defaultValue:"Save Changes"}),message:t("tools:skills.updateSkillConfirm"),confirmLabel:t("common:buttons.save"),cancelLabel:t("common:buttons.cancel"),variant:"primary",onConfirm:()=>{s&&L&&(x.updateSkill(s,L),d())},onClose:()=>G(null)}),e.jsx(we,{isOpen:oe,title:t("common:buttons.delete"),message:t("tools:skills.deleteSkillConfirm"),confirmLabel:t("common:buttons.delete"),cancelLabel:t("common:buttons.cancel"),variant:"danger",onConfirm:()=>{s&&(x.deleteSkill(s),d())},onClose:()=>Y(!1)})]}):null}const Be=[{emoji:"😀",keywords:["grin","happy","smile","face"],category:"Smileys"},{emoji:"😃",keywords:["happy","smile","joy","face"],category:"Smileys"},{emoji:"😄",keywords:["happy","smile","laugh","face"],category:"Smileys"},{emoji:"😁",keywords:["grin","happy","teeth","face"],category:"Smileys"},{emoji:"😅",keywords:["sweat","nervous","laugh","relief"],category:"Smileys"},{emoji:"😂",keywords:["laugh","cry","joy","tears","lol"],category:"Smileys"},{emoji:"🤣",keywords:["laugh","rolling","lol","rofl"],category:"Smileys"},{emoji:"😊",keywords:["blush","smile","happy","shy"],category:"Smileys"},{emoji:"😇",keywords:["angel","innocent","halo","saint"],category:"Smileys"},{emoji:"🙂",keywords:["smile","slight","face"],category:"Smileys"},{emoji:"😉",keywords:["wink","flirt","face"],category:"Smileys"},{emoji:"😌",keywords:["relieved","calm","peaceful"],category:"Smileys"},{emoji:"😍",keywords:["love","heart","eyes","crush"],category:"Smileys"},{emoji:"🥰",keywords:["love","hearts","adore","affection"],category:"Smileys"},{emoji:"😘",keywords:["kiss","love","heart","blow"],category:"Smileys"},{emoji:"😎",keywords:["cool","sunglasses","awesome"],category:"Smileys"},{emoji:"🤓",keywords:["nerd","geek","glasses","smart"],category:"Smileys"},{emoji:"🧐",keywords:["monocle","thinking","curious","inspect"],category:"Smileys"},{emoji:"🤔",keywords:["think","hmm","wonder","ponder"],category:"Smileys"},{emoji:"🤨",keywords:["raised","eyebrow","skeptic","suspicious"],category:"Smileys"},{emoji:"😐",keywords:["neutral","meh","blank","straight"],category:"Smileys"},{emoji:"😑",keywords:["expressionless","annoyed","unamused"],category:"Smileys"},{emoji:"😶",keywords:["silent","mute","speechless","quiet"],category:"Smileys"},{emoji:"🙄",keywords:["eyeroll","annoyed","whatever","bored"],category:"Smileys"},{emoji:"😏",keywords:["smirk","smug","sly","flirt"],category:"Smileys"},{emoji:"😣",keywords:["persevere","struggle","frustrated"],category:"Smileys"},{emoji:"😥",keywords:["sad","disappointed","relieved"],category:"Smileys"},{emoji:"😮",keywords:["surprised","wow","shock","gasp"],category:"Smileys"},{emoji:"🤯",keywords:["mind","blown","exploding","shock"],category:"Smileys"},{emoji:"😱",keywords:["scream","fear","scared","horror"],category:"Smileys"},{emoji:"😴",keywords:["sleep","tired","zzz","snore"],category:"Smileys"},{emoji:"🤤",keywords:["drool","hungry","yummy","want"],category:"Smileys"},{emoji:"😷",keywords:["mask","sick","ill","covid"],category:"Smileys"},{emoji:"🤒",keywords:["sick","fever","thermometer","ill"],category:"Smileys"},{emoji:"🤢",keywords:["nauseous","sick","green","ill"],category:"Smileys"},{emoji:"🤮",keywords:["vomit","sick","puke","gross"],category:"Smileys"},{emoji:"😈",keywords:["devil","evil","smiling","mischief","horns"],category:"Smileys"},{emoji:"👿",keywords:["devil","angry","evil","imp"],category:"Smileys"},{emoji:"💀",keywords:["skull","death","dead","skeleton"],category:"Smileys"},{emoji:"☠️",keywords:["skull","crossbones","death","pirate","danger"],category:"Smileys"},{emoji:"👻",keywords:["ghost","spirit","spooky","halloween"],category:"Smileys"},{emoji:"👽",keywords:["alien","ufo","extraterrestrial","space"],category:"Smileys"},{emoji:"🤖",keywords:["robot","bot","ai","android","machine"],category:"Smileys"},{emoji:"💩",keywords:["poop","poo","shit","crap"],category:"Smileys"},{emoji:"🎃",keywords:["pumpkin","halloween","jack","lantern"],category:"Smileys"},{emoji:"👑",keywords:["crown","king","queen","royal","boss","leader"],category:"People"},{emoji:"🎖️",keywords:["medal","military","honor","badge","award"],category:"People"},{emoji:"🦸",keywords:["hero","superhero","super","power"],category:"People"},{emoji:"🦸‍♂️",keywords:["hero","superhero","man","male"],category:"People"},{emoji:"🦸‍♀️",keywords:["hero","superhero","woman","female"],category:"People"},{emoji:"🦹",keywords:["villain","super","evil","hero"],category:"People"},{emoji:"🧙",keywords:["wizard","mage","magic","sorcerer"],category:"People"},{emoji:"🧙‍♂️",keywords:["wizard","mage","magic","man"],category:"People"},{emoji:"🧙‍♀️",keywords:["witch","mage","magic","woman"],category:"People"},{emoji:"🥷",keywords:["ninja","stealth","silent","assassin"],category:"People"},{emoji:"👨‍💻",keywords:["developer","programmer","coder","tech","man"],category:"People"},{emoji:"👩‍💻",keywords:["developer","programmer","coder","tech","woman"],category:"People"},{emoji:"🧑‍💻",keywords:["developer","programmer","coder","tech"],category:"People"},{emoji:"👨‍🔬",keywords:["scientist","research","lab","man"],category:"People"},{emoji:"👩‍🔬",keywords:["scientist","research","lab","woman"],category:"People"},{emoji:"👨‍🚀",keywords:["astronaut","space","rocket","man"],category:"People"},{emoji:"👩‍🚀",keywords:["astronaut","space","rocket","woman"],category:"People"},{emoji:"👨‍🎨",keywords:["artist","painter","creative","man"],category:"People"},{emoji:"👩‍🎨",keywords:["artist","painter","creative","woman"],category:"People"},{emoji:"👨‍🏫",keywords:["teacher","professor","instructor","man"],category:"People"},{emoji:"👩‍🏫",keywords:["teacher","professor","instructor","woman"],category:"People"},{emoji:"👨‍⚕️",keywords:["doctor","health","medical","man"],category:"People"},{emoji:"👩‍⚕️",keywords:["doctor","health","medical","woman"],category:"People"},{emoji:"👨‍🍳",keywords:["chef","cook","kitchen","man"],category:"People"},{emoji:"👩‍🍳",keywords:["chef","cook","kitchen","woman"],category:"People"},{emoji:"👨‍🔧",keywords:["mechanic","repair","fix","man"],category:"People"},{emoji:"👩‍🔧",keywords:["mechanic","repair","fix","woman"],category:"People"},{emoji:"👷",keywords:["construction","worker","builder","hard","hat"],category:"People"},{emoji:"💂",keywords:["guard","soldier","protect","security"],category:"People"},{emoji:"🕵️",keywords:["detective","spy","investigate","search","sleuth"],category:"People"},{emoji:"👮",keywords:["police","cop","officer","law"],category:"People"},{emoji:"🧝",keywords:["elf","fantasy","magic"],category:"People"},{emoji:"🧛",keywords:["vampire","dracula","dark","night"],category:"People"},{emoji:"🧟",keywords:["zombie","undead","dead"],category:"People"},{emoji:"🧞",keywords:["genie","magic","wish","lamp"],category:"People"},{emoji:"🧜",keywords:["mermaid","merman","sea","ocean"],category:"People"},{emoji:"🧚",keywords:["fairy","magic","fantasy","wings"],category:"People"},{emoji:"👼",keywords:["angel","baby","cherub","innocent"],category:"People"},{emoji:"🎅",keywords:["santa","christmas","claus","holiday"],category:"People"},{emoji:"🤴",keywords:["prince","royal","king","crown"],category:"People"},{emoji:"👸",keywords:["princess","royal","queen","crown"],category:"People"},{emoji:"🤵",keywords:["groom","tuxedo","suit","formal"],category:"People"},{emoji:"👰",keywords:["bride","wedding","veil","marriage"],category:"People"},{emoji:"🎭",keywords:["theater","mask","drama","acting","perform"],category:"People"},{emoji:"👾",keywords:["alien","monster","game","invader","space"],category:"People"},{emoji:"👤",keywords:["person","user","silhouette","profile"],category:"People"},{emoji:"👥",keywords:["people","users","group","team","silhouettes"],category:"People"},{emoji:"👋",keywords:["wave","hello","hi","bye","hand"],category:"Gestures"},{emoji:"🤚",keywords:["hand","raised","stop","back"],category:"Gestures"},{emoji:"✋",keywords:["hand","stop","high","five"],category:"Gestures"},{emoji:"🖐️",keywords:["hand","fingers","splayed","five"],category:"Gestures"},{emoji:"👌",keywords:["ok","perfect","good","nice"],category:"Gestures"},{emoji:"🤌",keywords:["pinched","italian","hand","chef"],category:"Gestures"},{emoji:"✌️",keywords:["peace","victory","two","fingers"],category:"Gestures"},{emoji:"🤞",keywords:["crossed","fingers","luck","hope"],category:"Gestures"},{emoji:"🤟",keywords:["love","you","rock","hand"],category:"Gestures"},{emoji:"🤘",keywords:["rock","metal","horns","hand"],category:"Gestures"},{emoji:"👍",keywords:["thumbs","up","good","like","yes","approve"],category:"Gestures"},{emoji:"👎",keywords:["thumbs","down","bad","dislike","no"],category:"Gestures"},{emoji:"👊",keywords:["fist","punch","bump","power"],category:"Gestures"},{emoji:"✊",keywords:["fist","raised","power","solidarity"],category:"Gestures"},{emoji:"🤛",keywords:["fist","left","bump"],category:"Gestures"},{emoji:"🤜",keywords:["fist","right","bump"],category:"Gestures"},{emoji:"👏",keywords:["clap","applause","bravo","hands"],category:"Gestures"},{emoji:"🙌",keywords:["hands","raised","celebration","hooray"],category:"Gestures"},{emoji:"🤝",keywords:["handshake","deal","agreement","shake"],category:"Gestures"},{emoji:"🙏",keywords:["pray","please","thanks","hope","namaste"],category:"Gestures"},{emoji:"💪",keywords:["muscle","strong","flex","bicep","arm"],category:"Gestures"},{emoji:"🦾",keywords:["robot","arm","prosthetic","mechanical"],category:"Gestures"},{emoji:"🖕",keywords:["middle","finger","rude","angry"],category:"Gestures"},{emoji:"☝️",keywords:["point","up","finger","one"],category:"Gestures"},{emoji:"👆",keywords:["point","up","finger","backhand"],category:"Gestures"},{emoji:"👇",keywords:["point","down","finger","backhand"],category:"Gestures"},{emoji:"👈",keywords:["point","left","finger","backhand"],category:"Gestures"},{emoji:"👉",keywords:["point","right","finger","backhand"],category:"Gestures"},{emoji:"👁️",keywords:["eye","see","look","watch","vision"],category:"Gestures"},{emoji:"👀",keywords:["eyes","look","see","watch","stare"],category:"Gestures"},{emoji:"👅",keywords:["tongue","taste","lick"],category:"Gestures"},{emoji:"👄",keywords:["lips","mouth","kiss"],category:"Gestures"},{emoji:"🧠",keywords:["brain","mind","think","smart","intelligence"],category:"Gestures"},{emoji:"🗣️",keywords:["speak","talk","head","voice","speech"],category:"Gestures"},{emoji:"❤️",keywords:["red","heart","love","like"],category:"Hearts"},{emoji:"🧡",keywords:["orange","heart","love","warm"],category:"Hearts"},{emoji:"💛",keywords:["yellow","heart","love","friendship"],category:"Hearts"},{emoji:"💚",keywords:["green","heart","love","support","health"],category:"Hearts"},{emoji:"💙",keywords:["blue","heart","love","trust"],category:"Hearts"},{emoji:"💜",keywords:["purple","heart","love"],category:"Hearts"},{emoji:"🖤",keywords:["black","heart","dark","love"],category:"Hearts"},{emoji:"🤍",keywords:["white","heart","pure","love"],category:"Hearts"},{emoji:"🤎",keywords:["brown","heart","love"],category:"Hearts"},{emoji:"💔",keywords:["broken","heart","sad","love"],category:"Hearts"},{emoji:"❤️‍🔥",keywords:["heart","fire","passion","love"],category:"Hearts"},{emoji:"❤️‍🩹",keywords:["heart","mending","healing","love"],category:"Hearts"},{emoji:"💕",keywords:["hearts","two","love","couple"],category:"Hearts"},{emoji:"💞",keywords:["hearts","revolving","love"],category:"Hearts"},{emoji:"💓",keywords:["heart","beating","love","alive"],category:"Hearts"},{emoji:"💗",keywords:["heart","growing","love","pink"],category:"Hearts"},{emoji:"💖",keywords:["heart","sparkle","love","pink"],category:"Hearts"},{emoji:"💝",keywords:["heart","ribbon","gift","love","valentine"],category:"Hearts"},{emoji:"💘",keywords:["heart","arrow","cupid","love"],category:"Hearts"},{emoji:"💌",keywords:["letter","love","envelope","mail"],category:"Hearts"},{emoji:"💋",keywords:["kiss","lips","love","lipstick"],category:"Hearts"},{emoji:"🫶",keywords:["heart","hands","love","care"],category:"Hearts"},{emoji:"🐶",keywords:["dog","puppy","pet","cute"],category:"Animals"},{emoji:"🐱",keywords:["cat","kitten","pet","cute"],category:"Animals"},{emoji:"🐭",keywords:["mouse","rat","rodent","cute"],category:"Animals"},{emoji:"🐹",keywords:["hamster","pet","rodent","cute"],category:"Animals"},{emoji:"🐰",keywords:["rabbit","bunny","pet","cute"],category:"Animals"},{emoji:"🦊",keywords:["fox","clever","cunning","red"],category:"Animals"},{emoji:"🐻",keywords:["bear","grizzly","brown","strong"],category:"Animals"},{emoji:"🐼",keywords:["panda","bear","bamboo","cute","china"],category:"Animals"},{emoji:"🐨",keywords:["koala","australia","cute","bear"],category:"Animals"},{emoji:"🐯",keywords:["tiger","cat","stripe","fierce"],category:"Animals"},{emoji:"🦁",keywords:["lion","king","roar","cat","pride"],category:"Animals"},{emoji:"🐮",keywords:["cow","moo","farm","milk"],category:"Animals"},{emoji:"🐷",keywords:["pig","oink","farm","pork"],category:"Animals"},{emoji:"🐸",keywords:["frog","toad","ribbit","green"],category:"Animals"},{emoji:"🐵",keywords:["monkey","ape","banana","primate"],category:"Animals"},{emoji:"🙈",keywords:["monkey","see","no","evil","cover"],category:"Animals"},{emoji:"🙉",keywords:["monkey","hear","no","evil","cover"],category:"Animals"},{emoji:"🙊",keywords:["monkey","speak","no","evil","cover"],category:"Animals"},{emoji:"🐔",keywords:["chicken","hen","bird","farm"],category:"Animals"},{emoji:"🐧",keywords:["penguin","bird","ice","cold","linux"],category:"Animals"},{emoji:"🐦",keywords:["bird","fly","tweet","chirp"],category:"Animals"},{emoji:"🐤",keywords:["chick","baby","bird","chicken"],category:"Animals"},{emoji:"🦆",keywords:["duck","bird","quack","water"],category:"Animals"},{emoji:"🦅",keywords:["eagle","bird","fly","america","soar"],category:"Animals"},{emoji:"🦉",keywords:["owl","bird","night","wise","hoot"],category:"Animals"},{emoji:"🦇",keywords:["bat","vampire","night","fly"],category:"Animals"},{emoji:"🐺",keywords:["wolf","howl","wild","pack"],category:"Animals"},{emoji:"🐗",keywords:["boar","pig","wild","tusk"],category:"Animals"},{emoji:"🐴",keywords:["horse","pony","ride","stable"],category:"Animals"},{emoji:"🦄",keywords:["unicorn","horse","magic","fantasy","rainbow"],category:"Animals"},{emoji:"🐝",keywords:["bee","honey","buzz","insect","busy"],category:"Animals"},{emoji:"🐛",keywords:["bug","caterpillar","insect","debug","worm"],category:"Animals"},{emoji:"🦋",keywords:["butterfly","insect","transform","beautiful"],category:"Animals"},{emoji:"🐌",keywords:["snail","slow","shell","slug"],category:"Animals"},{emoji:"🐞",keywords:["ladybug","beetle","insect","luck"],category:"Animals"},{emoji:"🐜",keywords:["ant","insect","small","work","colony"],category:"Animals"},{emoji:"🦗",keywords:["cricket","grasshopper","insect","jump"],category:"Animals"},{emoji:"🕷️",keywords:["spider","web","insect","creepy"],category:"Animals"},{emoji:"🦂",keywords:["scorpion","sting","desert","danger"],category:"Animals"},{emoji:"🐢",keywords:["turtle","tortoise","slow","shell"],category:"Animals"},{emoji:"🐍",keywords:["snake","serpent","slither","python"],category:"Animals"},{emoji:"🦎",keywords:["lizard","reptile","gecko"],category:"Animals"},{emoji:"🐉",keywords:["dragon","fire","fantasy","chinese"],category:"Animals"},{emoji:"🐲",keywords:["dragon","face","fantasy","chinese"],category:"Animals"},{emoji:"🦖",keywords:["trex","dinosaur","rex","prehistoric"],category:"Animals"},{emoji:"🦕",keywords:["dinosaur","sauropod","prehistoric","long"],category:"Animals"},{emoji:"🐙",keywords:["octopus","sea","tentacle","squid"],category:"Animals"},{emoji:"🦑",keywords:["squid","sea","tentacle","calamari"],category:"Animals"},{emoji:"🦐",keywords:["shrimp","sea","prawn","seafood"],category:"Animals"},{emoji:"🦀",keywords:["crab","sea","pinch","seafood"],category:"Animals"},{emoji:"🐡",keywords:["blowfish","puffer","fish","sea"],category:"Animals"},{emoji:"🐠",keywords:["fish","tropical","sea","aquarium"],category:"Animals"},{emoji:"🐟",keywords:["fish","sea","swimming","aquatic"],category:"Animals"},{emoji:"🐬",keywords:["dolphin","sea","smart","flipper"],category:"Animals"},{emoji:"🐳",keywords:["whale","sea","spout","ocean"],category:"Animals"},{emoji:"🦈",keywords:["shark","sea","jaws","danger"],category:"Animals"},{emoji:"🦭",keywords:["seal","sea","cute","ocean"],category:"Animals"},{emoji:"🐊",keywords:["crocodile","alligator","reptile","swamp"],category:"Animals"},{emoji:"🦧",keywords:["orangutan","ape","primate","monkey"],category:"Animals"},{emoji:"🦍",keywords:["gorilla","ape","primate","strong"],category:"Animals"},{emoji:"🐘",keywords:["elephant","big","trunk","africa"],category:"Animals"},{emoji:"🦏",keywords:["rhino","rhinoceros","horn","africa"],category:"Animals"},{emoji:"🦛",keywords:["hippo","hippopotamus","water","africa"],category:"Animals"},{emoji:"🐪",keywords:["camel","desert","hump","dromedary"],category:"Animals"},{emoji:"🦒",keywords:["giraffe","tall","neck","spots"],category:"Animals"},{emoji:"🦓",keywords:["zebra","stripes","horse","africa"],category:"Animals"},{emoji:"🦘",keywords:["kangaroo","australia","jump","pouch"],category:"Animals"},{emoji:"🦬",keywords:["bison","buffalo","america","wild"],category:"Animals"},{emoji:"🐃",keywords:["buffalo","water","ox","farm"],category:"Animals"},{emoji:"🦌",keywords:["deer","stag","antler","forest"],category:"Animals"},{emoji:"🦙",keywords:["llama","alpaca","wool","peru"],category:"Animals"},{emoji:"🦥",keywords:["sloth","slow","lazy","sleep"],category:"Animals"},{emoji:"🦦",keywords:["otter","sea","cute","swim"],category:"Animals"},{emoji:"🦨",keywords:["skunk","stink","smell","stripe"],category:"Animals"},{emoji:"🦡",keywords:["badger","honey","dig","stripe"],category:"Animals"},{emoji:"🐾",keywords:["paw","prints","pet","animal","dog","cat"],category:"Animals"},{emoji:"🦠",keywords:["microbe","virus","bacteria","bug","germ"],category:"Animals"},{emoji:"🌲",keywords:["tree","evergreen","pine","forest","christmas"],category:"Nature"},{emoji:"🌳",keywords:["tree","deciduous","forest","nature"],category:"Nature"},{emoji:"🌴",keywords:["palm","tree","beach","tropical"],category:"Nature"},{emoji:"🌵",keywords:["cactus","desert","plant","prickly"],category:"Nature"},{emoji:"🌱",keywords:["seedling","plant","grow","sprout"],category:"Nature"},{emoji:"🌿",keywords:["herb","plant","green","leaf"],category:"Nature"},{emoji:"☘️",keywords:["shamrock","clover","irish","luck"],category:"Nature"},{emoji:"🍀",keywords:["clover","four","leaf","luck"],category:"Nature"},{emoji:"🍁",keywords:["maple","leaf","fall","autumn","canada"],category:"Nature"},{emoji:"🍂",keywords:["fallen","leaf","fall","autumn"],category:"Nature"},{emoji:"🍃",keywords:["leaf","fluttering","wind","blow"],category:"Nature"},{emoji:"🌸",keywords:["cherry","blossom","flower","spring","japan"],category:"Nature"},{emoji:"💐",keywords:["bouquet","flowers","gift","arrangement"],category:"Nature"},{emoji:"🌷",keywords:["tulip","flower","spring","netherlands"],category:"Nature"},{emoji:"🌹",keywords:["rose","flower","love","romantic"],category:"Nature"},{emoji:"🥀",keywords:["wilted","flower","dead","sad"],category:"Nature"},{emoji:"🌺",keywords:["hibiscus","flower","tropical","hawaii"],category:"Nature"},{emoji:"🌻",keywords:["sunflower","flower","sun","yellow"],category:"Nature"},{emoji:"🌼",keywords:["blossom","flower","yellow","daisy"],category:"Nature"},{emoji:"☀️",keywords:["sun","sunny","bright","day","light"],category:"Weather"},{emoji:"🌤️",keywords:["sun","cloud","partly","cloudy"],category:"Weather"},{emoji:"⛅",keywords:["sun","cloud","partly","cloudy"],category:"Weather"},{emoji:"🌥️",keywords:["cloud","sun","behind","mostly"],category:"Weather"},{emoji:"☁️",keywords:["cloud","cloudy","weather","sky"],category:"Weather"},{emoji:"🌦️",keywords:["rain","sun","cloud","shower"],category:"Weather"},{emoji:"🌧️",keywords:["rain","cloud","rainy","weather"],category:"Weather"},{emoji:"⛈️",keywords:["thunder","storm","rain","lightning"],category:"Weather"},{emoji:"🌩️",keywords:["lightning","cloud","storm","thunder"],category:"Weather"},{emoji:"🌨️",keywords:["snow","cloud","snowy","winter"],category:"Weather"},{emoji:"❄️",keywords:["snow","ice","cold","freeze","winter","flake"],category:"Weather"},{emoji:"💨",keywords:["wind","blow","dash","fast","air"],category:"Weather"},{emoji:"🌪️",keywords:["tornado","cyclone","twister","storm"],category:"Weather"},{emoji:"🌫️",keywords:["fog","foggy","mist","hazy"],category:"Weather"},{emoji:"🌈",keywords:["rainbow","color","pride","spectrum"],category:"Weather"},{emoji:"⚡",keywords:["lightning","electric","power","energy","fast","bolt","thunder"],category:"Weather"},{emoji:"🔥",keywords:["fire","flame","hot","burn","lit"],category:"Weather"},{emoji:"💧",keywords:["water","drop","liquid","wet"],category:"Weather"},{emoji:"🌊",keywords:["wave","ocean","sea","water","surf"],category:"Weather"},{emoji:"🌙",keywords:["moon","night","crescent","dark","sleep"],category:"Weather"},{emoji:"🌛",keywords:["moon","first","quarter","face"],category:"Weather"},{emoji:"🌜",keywords:["moon","last","quarter","face"],category:"Weather"},{emoji:"🌝",keywords:["moon","full","face","bright"],category:"Weather"},{emoji:"🌞",keywords:["sun","face","bright","happy"],category:"Weather"},{emoji:"⭐",keywords:["star","yellow","favorite","best"],category:"Weather"},{emoji:"🌟",keywords:["star","glow","bright","shiny"],category:"Weather"},{emoji:"✨",keywords:["sparkle","star","shine","magic","new"],category:"Weather"},{emoji:"💫",keywords:["dizzy","star","circle","shooting"],category:"Weather"},{emoji:"☄️",keywords:["comet","meteor","space","shooting","star"],category:"Weather"},{emoji:"🍎",keywords:["apple","red","fruit","healthy"],category:"Food"},{emoji:"🍏",keywords:["apple","green","fruit","healthy"],category:"Food"},{emoji:"🍐",keywords:["pear","fruit","green"],category:"Food"},{emoji:"🍊",keywords:["orange","fruit","citrus","tangerine"],category:"Food"},{emoji:"🍋",keywords:["lemon","citrus","sour","yellow"],category:"Food"},{emoji:"🍌",keywords:["banana","fruit","yellow","monkey"],category:"Food"},{emoji:"🍉",keywords:["watermelon","fruit","summer","red"],category:"Food"},{emoji:"🍇",keywords:["grapes","fruit","wine","purple"],category:"Food"},{emoji:"🍓",keywords:["strawberry","fruit","berry","red"],category:"Food"},{emoji:"🫐",keywords:["blueberry","fruit","berry","blue"],category:"Food"},{emoji:"🍒",keywords:["cherry","cherries","fruit","red"],category:"Food"},{emoji:"🍑",keywords:["peach","fruit","butt","emoji"],category:"Food"},{emoji:"🥭",keywords:["mango","fruit","tropical","yellow"],category:"Food"},{emoji:"🍍",keywords:["pineapple","fruit","tropical"],category:"Food"},{emoji:"🥥",keywords:["coconut","tropical","brown"],category:"Food"},{emoji:"🥝",keywords:["kiwi","fruit","green"],category:"Food"},{emoji:"🍅",keywords:["tomato","vegetable","red"],category:"Food"},{emoji:"🥑",keywords:["avocado","green","guacamole"],category:"Food"},{emoji:"🥕",keywords:["carrot","vegetable","orange"],category:"Food"},{emoji:"🌽",keywords:["corn","maize","vegetable","yellow"],category:"Food"},{emoji:"🌶️",keywords:["pepper","hot","spicy","chili"],category:"Food"},{emoji:"🥒",keywords:["cucumber","pickle","vegetable"],category:"Food"},{emoji:"🥬",keywords:["lettuce","leafy","green","salad"],category:"Food"},{emoji:"🥦",keywords:["broccoli","vegetable","green"],category:"Food"},{emoji:"🧄",keywords:["garlic","spice","cooking"],category:"Food"},{emoji:"🧅",keywords:["onion","vegetable","cry"],category:"Food"},{emoji:"🥔",keywords:["potato","vegetable","fries"],category:"Food"},{emoji:"🍞",keywords:["bread","loaf","toast","carb"],category:"Food"},{emoji:"🥐",keywords:["croissant","bread","french","pastry"],category:"Food"},{emoji:"🥖",keywords:["baguette","bread","french"],category:"Food"},{emoji:"🥨",keywords:["pretzel","snack","twisted"],category:"Food"},{emoji:"🧀",keywords:["cheese","dairy","yellow"],category:"Food"},{emoji:"🥚",keywords:["egg","breakfast","chicken"],category:"Food"},{emoji:"🍳",keywords:["cooking","egg","frying","pan"],category:"Food"},{emoji:"🥞",keywords:["pancakes","breakfast","stack"],category:"Food"},{emoji:"🧇",keywords:["waffle","breakfast","belgian"],category:"Food"},{emoji:"🥓",keywords:["bacon","meat","breakfast","pork"],category:"Food"},{emoji:"🍔",keywords:["burger","hamburger","food","fast"],category:"Food"},{emoji:"🍟",keywords:["fries","french","food","fast"],category:"Food"},{emoji:"🍕",keywords:["pizza","food","italian","slice"],category:"Food"},{emoji:"🌭",keywords:["hotdog","food","fast","sausage"],category:"Food"},{emoji:"🥪",keywords:["sandwich","food","bread","lunch"],category:"Food"},{emoji:"🌮",keywords:["taco","mexican","food"],category:"Food"},{emoji:"🌯",keywords:["burrito","mexican","food","wrap"],category:"Food"},{emoji:"🥗",keywords:["salad","healthy","green","vegetable"],category:"Food"},{emoji:"🍜",keywords:["noodle","ramen","soup","bowl"],category:"Food"},{emoji:"🍝",keywords:["spaghetti","pasta","italian","noodle"],category:"Food"},{emoji:"🍣",keywords:["sushi","japanese","fish","rice"],category:"Food"},{emoji:"🍱",keywords:["bento","box","japanese","lunch"],category:"Food"},{emoji:"🍛",keywords:["curry","rice","indian","food"],category:"Food"},{emoji:"🍲",keywords:["pot","food","stew","soup"],category:"Food"},{emoji:"🥘",keywords:["paella","food","pan","spanish"],category:"Food"},{emoji:"🍿",keywords:["popcorn","movie","snack","cinema"],category:"Food"},{emoji:"🧂",keywords:["salt","spice","seasoning"],category:"Food"},{emoji:"🍦",keywords:["ice","cream","cone","dessert","cold"],category:"Food"},{emoji:"🍧",keywords:["shaved","ice","dessert","cold"],category:"Food"},{emoji:"🍨",keywords:["ice","cream","dessert","cold"],category:"Food"},{emoji:"🍩",keywords:["donut","doughnut","dessert","sweet"],category:"Food"},{emoji:"🍪",keywords:["cookie","dessert","sweet","chocolate"],category:"Food"},{emoji:"🎂",keywords:["cake","birthday","dessert","celebration"],category:"Food"},{emoji:"🍰",keywords:["cake","slice","shortcake","dessert"],category:"Food"},{emoji:"🧁",keywords:["cupcake","dessert","sweet","muffin"],category:"Food"},{emoji:"🥧",keywords:["pie","dessert","apple","thanksgiving"],category:"Food"},{emoji:"🍫",keywords:["chocolate","bar","sweet","candy"],category:"Food"},{emoji:"🍬",keywords:["candy","sweet","sugar"],category:"Food"},{emoji:"🍭",keywords:["lollipop","candy","sweet"],category:"Food"},{emoji:"☕",keywords:["coffee","hot","drink","cafe","java"],category:"Food"},{emoji:"🍵",keywords:["tea","hot","drink","green"],category:"Food"},{emoji:"🥤",keywords:["cup","straw","drink","soda"],category:"Food"},{emoji:"🧃",keywords:["juice","box","drink","kid"],category:"Food"},{emoji:"🧊",keywords:["ice","cube","cold","freeze"],category:"Food"},{emoji:"🍺",keywords:["beer","mug","drink","alcohol"],category:"Food"},{emoji:"🍻",keywords:["beer","cheers","drink","alcohol","mugs"],category:"Food"},{emoji:"🥂",keywords:["champagne","cheers","celebration","wine"],category:"Food"},{emoji:"🍷",keywords:["wine","glass","drink","alcohol","red"],category:"Food"},{emoji:"🥃",keywords:["whiskey","glass","drink","alcohol","tumbler"],category:"Food"},{emoji:"🍸",keywords:["cocktail","drink","martini","alcohol"],category:"Food"},{emoji:"🍹",keywords:["tropical","drink","cocktail","alcohol"],category:"Food"},{emoji:"🔍",keywords:["search","magnify","find","look","scout","explore","investigate"],category:"Tools"},{emoji:"🔎",keywords:["search","magnify","find","look","right"],category:"Tools"},{emoji:"🔨",keywords:["hammer","build","tool","construct","builder"],category:"Tools"},{emoji:"🪓",keywords:["axe","chop","wood","lumberjack"],category:"Tools"},{emoji:"⛏️",keywords:["pick","mining","dig","tool"],category:"Tools"},{emoji:"⚒️",keywords:["hammer","pick","mining","build"],category:"Tools"},{emoji:"🛠️",keywords:["tools","build","repair","fix","hammer","wrench"],category:"Tools"},{emoji:"🔧",keywords:["wrench","fix","repair","tool","mechanic"],category:"Tools"},{emoji:"🪛",keywords:["screwdriver","tool","fix","repair"],category:"Tools"},{emoji:"🔩",keywords:["bolt","nut","screw","hardware"],category:"Tools"},{emoji:"⚙️",keywords:["gear","settings","config","cog","machine"],category:"Tools"},{emoji:"🗜️",keywords:["clamp","compress","tool","vise"],category:"Tools"},{emoji:"⚖️",keywords:["scale","balance","justice","law","weigh"],category:"Tools"},{emoji:"🔗",keywords:["link","chain","connect","url"],category:"Tools"},{emoji:"⛓️",keywords:["chain","link","connect","locked"],category:"Tools"},{emoji:"🧰",keywords:["toolbox","tools","repair","box"],category:"Tools"},{emoji:"🧲",keywords:["magnet","attract","magnetic"],category:"Tools"},{emoji:"⚔️",keywords:["sword","battle","fight","warrior","combat","crossed"],category:"Tools"},{emoji:"🗡️",keywords:["dagger","knife","sword","blade","weapon"],category:"Tools"},{emoji:"🛡️",keywords:["shield","protect","defense","guard","security"],category:"Tools"},{emoji:"🏹",keywords:["bow","arrow","archer","hunt"],category:"Tools"},{emoji:"🔪",keywords:["knife","cut","blade","kitchen"],category:"Tools"},{emoji:"💣",keywords:["bomb","explode","danger","boom"],category:"Tools"},{emoji:"🧨",keywords:["dynamite","explosive","firecracker","boom"],category:"Tools"},{emoji:"🪃",keywords:["boomerang","throw","return","australia"],category:"Tools"},{emoji:"🔫",keywords:["gun","pistol","water","toy"],category:"Tools"},{emoji:"✂️",keywords:["scissors","cut","trim","snip"],category:"Tools"},{emoji:"📌",keywords:["pin","push","tack","mark","location"],category:"Tools"},{emoji:"📍",keywords:["pin","location","map","place"],category:"Tools"},{emoji:"📎",keywords:["paperclip","clip","attach","office"],category:"Tools"},{emoji:"🖊️",keywords:["pen","write","ink","sign"],category:"Tools"},{emoji:"✏️",keywords:["pencil","write","draw","edit"],category:"Tools"},{emoji:"✒️",keywords:["pen","nib","write","black"],category:"Tools"},{emoji:"🖍️",keywords:["crayon","draw","color","art"],category:"Tools"},{emoji:"📝",keywords:["memo","note","write","document","edit"],category:"Tools"},{emoji:"📋",keywords:["clipboard","list","task","checklist"],category:"Tools"},{emoji:"🔐",keywords:["lock","key","secure","closed"],category:"Tools"},{emoji:"🔒",keywords:["lock","closed","secure","padlock"],category:"Tools"},{emoji:"🔓",keywords:["unlock","open","padlock"],category:"Tools"},{emoji:"🔑",keywords:["key","lock","password","access"],category:"Tools"},{emoji:"🗝️",keywords:["key","old","vintage","lock"],category:"Tools"},{emoji:"💻",keywords:["laptop","computer","pc","mac","code","work"],category:"Tech"},{emoji:"🖥️",keywords:["desktop","computer","monitor","screen","pc"],category:"Tech"},{emoji:"🖨️",keywords:["printer","print","paper","office"],category:"Tech"},{emoji:"⌨️",keywords:["keyboard","type","input","computer"],category:"Tech"},{emoji:"🖱️",keywords:["mouse","click","computer","cursor"],category:"Tech"},{emoji:"🖲️",keywords:["trackball","mouse","computer","input"],category:"Tech"},{emoji:"💽",keywords:["disk","minidisk","computer","storage"],category:"Tech"},{emoji:"💾",keywords:["floppy","disk","save","storage","data"],category:"Tech"},{emoji:"💿",keywords:["cd","disk","music","data"],category:"Tech"},{emoji:"📀",keywords:["dvd","disk","movie","data"],category:"Tech"},{emoji:"📱",keywords:["phone","mobile","smartphone","cell","iphone"],category:"Tech"},{emoji:"📲",keywords:["phone","call","incoming","mobile"],category:"Tech"},{emoji:"☎️",keywords:["phone","telephone","call","old"],category:"Tech"},{emoji:"📞",keywords:["phone","receiver","call","talk"],category:"Tech"},{emoji:"📟",keywords:["pager","beeper","old","retro"],category:"Tech"},{emoji:"📠",keywords:["fax","machine","office","old"],category:"Tech"},{emoji:"🔋",keywords:["battery","power","charge","energy"],category:"Tech"},{emoji:"🔌",keywords:["plug","electric","power","connect"],category:"Tech"},{emoji:"💡",keywords:["bulb","light","idea","bright","lamp"],category:"Tech"},{emoji:"🔦",keywords:["flashlight","light","torch","bright"],category:"Tech"},{emoji:"🕯️",keywords:["candle","light","flame","wax"],category:"Tech"},{emoji:"📡",keywords:["satellite","antenna","signal","dish"],category:"Tech"},{emoji:"🛰️",keywords:["satellite","space","orbit","signal"],category:"Tech"},{emoji:"🧭",keywords:["compass","navigate","direction","north"],category:"Tech"},{emoji:"🗺️",keywords:["map","world","travel","navigate","explore"],category:"Tech"},{emoji:"🧪",keywords:["test","tube","science","lab","experiment","chemistry"],category:"Tech"},{emoji:"🔬",keywords:["microscope","science","lab","research","biology"],category:"Tech"},{emoji:"🔭",keywords:["telescope","space","astronomy","star","observe"],category:"Tech"},{emoji:"📐",keywords:["ruler","triangle","architect","design","measure","math"],category:"Tech"},{emoji:"📏",keywords:["ruler","measure","straight","length"],category:"Tech"},{emoji:"🧬",keywords:["dna","gene","biology","science","helix"],category:"Tech"},{emoji:"💉",keywords:["syringe","needle","medicine","vaccine","inject"],category:"Tech"},{emoji:"💊",keywords:["pill","medicine","drug","pharmacy","health"],category:"Tech"},{emoji:"🩹",keywords:["bandage","heal","fix","patch","medical"],category:"Tech"},{emoji:"🩺",keywords:["stethoscope","doctor","medical","health"],category:"Tech"},{emoji:"⚗️",keywords:["alembic","chemistry","science","distill"],category:"Tech"},{emoji:"🚗",keywords:["car","auto","vehicle","drive"],category:"Transport"},{emoji:"🚕",keywords:["taxi","cab","car","ride"],category:"Transport"},{emoji:"🚙",keywords:["suv","car","vehicle","sport"],category:"Transport"},{emoji:"🚌",keywords:["bus","vehicle","public","transit"],category:"Transport"},{emoji:"🚎",keywords:["trolley","bus","electric","transit"],category:"Transport"},{emoji:"🏎️",keywords:["racing","car","fast","formula"],category:"Transport"},{emoji:"🚓",keywords:["police","car","cop","patrol"],category:"Transport"},{emoji:"🚑",keywords:["ambulance","emergency","medical","hospital"],category:"Transport"},{emoji:"🚒",keywords:["fire","truck","engine","emergency"],category:"Transport"},{emoji:"🚐",keywords:["minibus","van","vehicle","transit"],category:"Transport"},{emoji:"🛻",keywords:["pickup","truck","vehicle"],category:"Transport"},{emoji:"🚚",keywords:["truck","delivery","vehicle","moving"],category:"Transport"},{emoji:"🚛",keywords:["truck","semi","trailer","haul"],category:"Transport"},{emoji:"🚜",keywords:["tractor","farm","vehicle","agriculture"],category:"Transport"},{emoji:"🏍️",keywords:["motorcycle","racing","bike","sport"],category:"Transport"},{emoji:"🛵",keywords:["scooter","motor","vespa","moped"],category:"Transport"},{emoji:"🚲",keywords:["bicycle","bike","cycle","pedal"],category:"Transport"},{emoji:"🛴",keywords:["scooter","kick","ride"],category:"Transport"},{emoji:"🚂",keywords:["train","locomotive","steam","rail"],category:"Transport"},{emoji:"🚃",keywords:["train","railway","car","wagon"],category:"Transport"},{emoji:"🚄",keywords:["train","high","speed","bullet","shinkansen"],category:"Transport"},{emoji:"🚅",keywords:["train","bullet","high","speed"],category:"Transport"},{emoji:"🚆",keywords:["train","railway","transit"],category:"Transport"},{emoji:"🚇",keywords:["metro","subway","underground","train"],category:"Transport"},{emoji:"🚈",keywords:["train","light","rail","transit"],category:"Transport"},{emoji:"✈️",keywords:["airplane","plane","fly","travel","flight"],category:"Transport"},{emoji:"🛫",keywords:["airplane","departure","takeoff","fly"],category:"Transport"},{emoji:"🛬",keywords:["airplane","arrival","landing","fly"],category:"Transport"},{emoji:"🛩️",keywords:["plane","small","airplane","fly"],category:"Transport"},{emoji:"🚁",keywords:["helicopter","chopper","fly","hover"],category:"Transport"},{emoji:"🛸",keywords:["ufo","alien","spaceship","flying","saucer"],category:"Transport"},{emoji:"🚀",keywords:["rocket","launch","space","fast","ship","startup"],category:"Transport"},{emoji:"🛶",keywords:["canoe","boat","paddle","kayak"],category:"Transport"},{emoji:"⛵",keywords:["sailboat","boat","sail","wind"],category:"Transport"},{emoji:"🚤",keywords:["speedboat","boat","fast","water"],category:"Transport"},{emoji:"🛥️",keywords:["motorboat","boat","yacht"],category:"Transport"},{emoji:"🛳️",keywords:["ship","cruise","passenger","boat"],category:"Transport"},{emoji:"⛴️",keywords:["ferry","boat","ship","transport"],category:"Transport"},{emoji:"🚢",keywords:["ship","boat","cruise","ocean"],category:"Transport"},{emoji:"⚓",keywords:["anchor","ship","boat","dock"],category:"Transport"},{emoji:"🚧",keywords:["construction","barrier","road","block"],category:"Transport"},{emoji:"🚦",keywords:["traffic","light","signal","stop","go"],category:"Transport"},{emoji:"🚥",keywords:["traffic","light","horizontal","signal"],category:"Transport"},{emoji:"🗼",keywords:["tower","tokyo","japan","landmark"],category:"Transport"},{emoji:"🗽",keywords:["statue","liberty","usa","new","york"],category:"Transport"},{emoji:"🗿",keywords:["moai","statue","easter","island"],category:"Transport"},{emoji:"📦",keywords:["box","package","delivery","ship","container"],category:"Objects"},{emoji:"🎁",keywords:["gift","present","wrap","birthday"],category:"Objects"},{emoji:"💎",keywords:["diamond","gem","jewel","precious","crystal"],category:"Objects"},{emoji:"🔮",keywords:["crystal","ball","magic","fortune","predict"],category:"Objects"},{emoji:"🏆",keywords:["trophy","win","champion","prize","gold","first"],category:"Objects"},{emoji:"🥇",keywords:["gold","medal","first","winner","best"],category:"Objects"},{emoji:"🥈",keywords:["silver","medal","second","winner"],category:"Objects"},{emoji:"🥉",keywords:["bronze","medal","third","winner"],category:"Objects"},{emoji:"🏅",keywords:["medal","sports","award","winner"],category:"Objects"},{emoji:"🎖️",keywords:["medal","military","honor","badge"],category:"Objects"},{emoji:"🎯",keywords:["target","bullseye","aim","goal","dart"],category:"Objects"},{emoji:"🎰",keywords:["slot","machine","casino","gamble","lucky"],category:"Objects"},{emoji:"🎲",keywords:["dice","game","roll","random","chance"],category:"Objects"},{emoji:"🎮",keywords:["game","controller","video","play","console"],category:"Objects"},{emoji:"🕹️",keywords:["joystick","game","arcade","control"],category:"Objects"},{emoji:"🎨",keywords:["art","palette","paint","color","creative"],category:"Objects"},{emoji:"🖼️",keywords:["picture","frame","art","painting"],category:"Objects"},{emoji:"🎬",keywords:["clapper","movie","film","action","cinema"],category:"Objects"},{emoji:"📷",keywords:["camera","photo","picture","photograph"],category:"Objects"},{emoji:"📸",keywords:["camera","flash","photo","selfie"],category:"Objects"},{emoji:"📹",keywords:["video","camera","record","film"],category:"Objects"},{emoji:"🎥",keywords:["movie","camera","film","cinema"],category:"Objects"},{emoji:"📺",keywords:["tv","television","screen","watch"],category:"Objects"},{emoji:"📻",keywords:["radio","music","broadcast","listen"],category:"Objects"},{emoji:"🎤",keywords:["microphone","mic","sing","karaoke","voice"],category:"Objects"},{emoji:"🎧",keywords:["headphones","music","listen","audio"],category:"Objects"},{emoji:"🎵",keywords:["music","note","song","melody"],category:"Objects"},{emoji:"🎶",keywords:["music","notes","song","melody"],category:"Objects"},{emoji:"🎹",keywords:["piano","keys","music","instrument"],category:"Objects"},{emoji:"🎸",keywords:["guitar","music","rock","instrument"],category:"Objects"},{emoji:"🎺",keywords:["trumpet","music","brass","instrument"],category:"Objects"},{emoji:"🥁",keywords:["drum","music","beat","percussion"],category:"Objects"},{emoji:"🎻",keywords:["violin","music","string","instrument"],category:"Objects"},{emoji:"📚",keywords:["books","library","read","study"],category:"Objects"},{emoji:"📖",keywords:["book","open","read","study"],category:"Objects"},{emoji:"📕",keywords:["book","closed","red","read"],category:"Objects"},{emoji:"📗",keywords:["book","green","read"],category:"Objects"},{emoji:"📘",keywords:["book","blue","read"],category:"Objects"},{emoji:"📙",keywords:["book","orange","read"],category:"Objects"},{emoji:"📓",keywords:["notebook","write","journal"],category:"Objects"},{emoji:"📒",keywords:["ledger","notebook","write"],category:"Objects"},{emoji:"📃",keywords:["page","document","curl","paper"],category:"Objects"},{emoji:"📄",keywords:["document","page","paper","file"],category:"Objects"},{emoji:"📰",keywords:["newspaper","news","press","paper"],category:"Objects"},{emoji:"🗞️",keywords:["newspaper","rolled","news","paper"],category:"Objects"},{emoji:"📑",keywords:["bookmark","tabs","page","marker"],category:"Objects"},{emoji:"🔖",keywords:["bookmark","mark","page","save"],category:"Objects"},{emoji:"🏷️",keywords:["label","tag","price","sale"],category:"Objects"},{emoji:"✉️",keywords:["envelope","letter","mail","email"],category:"Objects"},{emoji:"📧",keywords:["email","e-mail","mail","message"],category:"Objects"},{emoji:"📨",keywords:["envelope","incoming","mail","receive"],category:"Objects"},{emoji:"📩",keywords:["envelope","arrow","mail","outgoing"],category:"Objects"},{emoji:"📤",keywords:["outbox","sent","mail","tray"],category:"Objects"},{emoji:"📥",keywords:["inbox","receive","mail","tray"],category:"Objects"},{emoji:"📪",keywords:["mailbox","closed","mail","post"],category:"Objects"},{emoji:"📫",keywords:["mailbox","raised","mail","post"],category:"Objects"},{emoji:"📬",keywords:["mailbox","open","mail","post"],category:"Objects"},{emoji:"📭",keywords:["mailbox","lowered","mail","post"],category:"Objects"},{emoji:"📮",keywords:["postbox","mail","post","letter"],category:"Objects"},{emoji:"🗳️",keywords:["ballot","box","vote","election"],category:"Objects"},{emoji:"🛒",keywords:["cart","shopping","trolley","buy"],category:"Objects"},{emoji:"⏰",keywords:["alarm","clock","time","wake"],category:"Objects"},{emoji:"⏱️",keywords:["stopwatch","timer","time","race"],category:"Objects"},{emoji:"⏲️",keywords:["timer","clock","time","countdown"],category:"Objects"},{emoji:"🕰️",keywords:["clock","mantelpiece","time","antique"],category:"Objects"},{emoji:"⌛",keywords:["hourglass","done","time","sand"],category:"Objects"},{emoji:"⏳",keywords:["hourglass","flowing","time","sand"],category:"Objects"},{emoji:"🔔",keywords:["bell","notification","alert","ring"],category:"Objects"},{emoji:"🔕",keywords:["bell","mute","silent","notification"],category:"Objects"},{emoji:"📣",keywords:["megaphone","cheering","announcement"],category:"Objects"},{emoji:"📢",keywords:["loudspeaker","announcement","public"],category:"Objects"},{emoji:"🔊",keywords:["speaker","volume","loud","sound"],category:"Objects"},{emoji:"🔉",keywords:["speaker","volume","medium","sound"],category:"Objects"},{emoji:"🔈",keywords:["speaker","volume","low","sound"],category:"Objects"},{emoji:"🔇",keywords:["mute","speaker","silent","sound"],category:"Objects"},{emoji:"🗑️",keywords:["trash","bin","garbage","delete","waste"],category:"Objects"},{emoji:"❤️",keywords:["heart","red","love"],category:"Symbols"},{emoji:"✅",keywords:["check","yes","done","complete","success","green"],category:"Symbols"},{emoji:"❌",keywords:["cross","no","wrong","delete","red","x"],category:"Symbols"},{emoji:"❎",keywords:["cross","mark","no","square"],category:"Symbols"},{emoji:"➕",keywords:["plus","add","more","positive"],category:"Symbols"},{emoji:"➖",keywords:["minus","subtract","less","negative"],category:"Symbols"},{emoji:"➗",keywords:["divide","division","math"],category:"Symbols"},{emoji:"✖️",keywords:["multiply","x","cross","math"],category:"Symbols"},{emoji:"💯",keywords:["hundred","perfect","score","full"],category:"Symbols"},{emoji:"💢",keywords:["anger","angry","symbol","mad"],category:"Symbols"},{emoji:"💥",keywords:["boom","collision","explosion","crash"],category:"Symbols"},{emoji:"💫",keywords:["dizzy","star","circle","shooting"],category:"Symbols"},{emoji:"💦",keywords:["sweat","droplets","water","splash"],category:"Symbols"},{emoji:"💨",keywords:["dash","running","wind","fast"],category:"Symbols"},{emoji:"🕳️",keywords:["hole","black","empty","void"],category:"Symbols"},{emoji:"💬",keywords:["speech","bubble","talk","comment","chat"],category:"Symbols"},{emoji:"👁️‍🗨️",keywords:["eye","speech","witness","see"],category:"Symbols"},{emoji:"🗨️",keywords:["speech","bubble","left","talk"],category:"Symbols"},{emoji:"🗯️",keywords:["anger","bubble","right","mad"],category:"Symbols"},{emoji:"💭",keywords:["thought","bubble","think","idea"],category:"Symbols"},{emoji:"💤",keywords:["zzz","sleep","tired","snore"],category:"Symbols"},{emoji:"🔷",keywords:["diamond","blue","shape","rhombus"],category:"Symbols"},{emoji:"🔶",keywords:["diamond","orange","shape","rhombus"],category:"Symbols"},{emoji:"🔹",keywords:["diamond","blue","small","shape"],category:"Symbols"},{emoji:"🔸",keywords:["diamond","orange","small","shape"],category:"Symbols"},{emoji:"🔺",keywords:["triangle","red","up","shape"],category:"Symbols"},{emoji:"🔻",keywords:["triangle","red","down","shape"],category:"Symbols"},{emoji:"◾",keywords:["square","black","medium","shape"],category:"Symbols"},{emoji:"◽",keywords:["square","white","medium","shape"],category:"Symbols"},{emoji:"▪️",keywords:["square","black","small","shape"],category:"Symbols"},{emoji:"▫️",keywords:["square","white","small","shape"],category:"Symbols"},{emoji:"⬛",keywords:["square","black","large","shape"],category:"Symbols"},{emoji:"⬜",keywords:["square","white","large","shape"],category:"Symbols"},{emoji:"🟥",keywords:["square","red","shape","color"],category:"Symbols"},{emoji:"🟧",keywords:["square","orange","shape","color"],category:"Symbols"},{emoji:"🟨",keywords:["square","yellow","shape","color"],category:"Symbols"},{emoji:"🟩",keywords:["square","green","shape","color"],category:"Symbols"},{emoji:"🟦",keywords:["square","blue","shape","color"],category:"Symbols"},{emoji:"🟪",keywords:["square","purple","shape","color"],category:"Symbols"},{emoji:"🟫",keywords:["square","brown","shape","color"],category:"Symbols"},{emoji:"⭕",keywords:["circle","red","hollow","ring"],category:"Symbols"},{emoji:"🔘",keywords:["radio","button","circle","select"],category:"Symbols"},{emoji:"🔴",keywords:["circle","red","dot","round"],category:"Symbols"},{emoji:"🟠",keywords:["circle","orange","dot","round"],category:"Symbols"},{emoji:"🟡",keywords:["circle","yellow","dot","round"],category:"Symbols"},{emoji:"🟢",keywords:["circle","green","dot","round"],category:"Symbols"},{emoji:"🔵",keywords:["circle","blue","dot","round"],category:"Symbols"},{emoji:"🟣",keywords:["circle","purple","dot","round"],category:"Symbols"},{emoji:"🟤",keywords:["circle","brown","dot","round"],category:"Symbols"},{emoji:"⚫",keywords:["circle","black","dot","round"],category:"Symbols"},{emoji:"⚪",keywords:["circle","white","dot","round"],category:"Symbols"},{emoji:"💠",keywords:["diamond","dot","cute","flower","shape"],category:"Symbols"},{emoji:"🔳",keywords:["square","button","white","outline"],category:"Symbols"},{emoji:"🔲",keywords:["square","button","black","outline"],category:"Symbols"},{emoji:"⭐",keywords:["star","yellow","favorite","best"],category:"Symbols"},{emoji:"🌟",keywords:["star","glow","bright","shiny"],category:"Symbols"},{emoji:"✨",keywords:["sparkle","star","shine","magic","new"],category:"Symbols"},{emoji:"⁉️",keywords:["question","exclamation","interrobang","what"],category:"Symbols"},{emoji:"❓",keywords:["question","mark","red","what"],category:"Symbols"},{emoji:"❔",keywords:["question","mark","white","what"],category:"Symbols"},{emoji:"❗",keywords:["exclamation","mark","red","important"],category:"Symbols"},{emoji:"❕",keywords:["exclamation","mark","white","important"],category:"Symbols"},{emoji:"‼️",keywords:["exclamation","double","bang","important"],category:"Symbols"},{emoji:"⚠️",keywords:["warning","caution","alert","danger"],category:"Symbols"},{emoji:"🚫",keywords:["prohibited","no","forbidden","ban","stop"],category:"Symbols"},{emoji:"🔞",keywords:["eighteen","adult","nsfw","age"],category:"Symbols"},{emoji:"📵",keywords:["phone","no","prohibited","mobile"],category:"Symbols"},{emoji:"🔃",keywords:["arrows","clockwise","cycle","rotate"],category:"Symbols"},{emoji:"🔄",keywords:["arrows","counterclockwise","cycle","refresh","reload"],category:"Symbols"},{emoji:"🔙",keywords:["back","arrow","return","previous"],category:"Symbols"},{emoji:"🔚",keywords:["end","arrow","finish","last"],category:"Symbols"},{emoji:"🔛",keywords:["on","arrow","mark","top"],category:"Symbols"},{emoji:"🔜",keywords:["soon","arrow","coming","next"],category:"Symbols"},{emoji:"🔝",keywords:["top","arrow","up","first"],category:"Symbols"},{emoji:"⬆️",keywords:["arrow","up","north","direction"],category:"Symbols"},{emoji:"⬇️",keywords:["arrow","down","south","direction"],category:"Symbols"},{emoji:"⬅️",keywords:["arrow","left","west","direction"],category:"Symbols"},{emoji:"➡️",keywords:["arrow","right","east","direction"],category:"Symbols"},{emoji:"↗️",keywords:["arrow","northeast","up","right"],category:"Symbols"},{emoji:"↘️",keywords:["arrow","southeast","down","right"],category:"Symbols"},{emoji:"↙️",keywords:["arrow","southwest","down","left"],category:"Symbols"},{emoji:"↖️",keywords:["arrow","northwest","up","left"],category:"Symbols"},{emoji:"↕️",keywords:["arrow","up","down","vertical"],category:"Symbols"},{emoji:"↔️",keywords:["arrow","left","right","horizontal"],category:"Symbols"},{emoji:"🔀",keywords:["shuffle","random","crossed","arrows"],category:"Symbols"},{emoji:"🔁",keywords:["repeat","loop","arrows","cycle"],category:"Symbols"},{emoji:"🔂",keywords:["repeat","one","single","loop"],category:"Symbols"},{emoji:"▶️",keywords:["play","arrow","forward","start"],category:"Symbols"},{emoji:"⏩",keywords:["fast","forward","skip","double"],category:"Symbols"},{emoji:"⏭️",keywords:["next","track","skip","forward"],category:"Symbols"},{emoji:"⏯️",keywords:["play","pause","toggle"],category:"Symbols"},{emoji:"◀️",keywords:["reverse","back","left","arrow"],category:"Symbols"},{emoji:"⏪",keywords:["rewind","back","fast","double"],category:"Symbols"},{emoji:"⏮️",keywords:["previous","track","skip","back"],category:"Symbols"},{emoji:"⏸️",keywords:["pause","stop","hold","double"],category:"Symbols"},{emoji:"⏹️",keywords:["stop","square","end"],category:"Symbols"},{emoji:"⏺️",keywords:["record","circle","red","dot"],category:"Symbols"},{emoji:"🎦",keywords:["cinema","movie","film","camera"],category:"Symbols"},{emoji:"🔅",keywords:["dim","low","brightness","sun"],category:"Symbols"},{emoji:"🔆",keywords:["bright","high","brightness","sun"],category:"Symbols"},{emoji:"📶",keywords:["signal","strength","antenna","bars"],category:"Symbols"},{emoji:"📳",keywords:["vibration","mode","phone","silent"],category:"Symbols"},{emoji:"📴",keywords:["off","phone","mobile","silent"],category:"Symbols"},{emoji:"♀️",keywords:["female","woman","venus","gender"],category:"Symbols"},{emoji:"♂️",keywords:["male","man","mars","gender"],category:"Symbols"},{emoji:"⚧️",keywords:["transgender","symbol","gender"],category:"Symbols"},{emoji:"♻️",keywords:["recycle","environment","green","eco"],category:"Symbols"},{emoji:"⚜️",keywords:["fleur","de","lis","scout","french"],category:"Symbols"},{emoji:"🔱",keywords:["trident","emblem","poseidon","anchor"],category:"Symbols"},{emoji:"📛",keywords:["name","badge","tag","id"],category:"Symbols"},{emoji:"🔰",keywords:["beginner","japanese","symbol","new"],category:"Symbols"},{emoji:"⭕",keywords:["circle","o","round","ring"],category:"Symbols"},{emoji:"✅",keywords:["check","mark","button","yes"],category:"Symbols"},{emoji:"☑️",keywords:["check","box","vote","ballot"],category:"Symbols"},{emoji:"✔️",keywords:["check","mark","heavy","done"],category:"Symbols"},{emoji:"©️",keywords:["copyright","c","ip","legal"],category:"Symbols"},{emoji:"®️",keywords:["registered","r","trademark","legal"],category:"Symbols"},{emoji:"™️",keywords:["trademark","tm","brand","legal"],category:"Symbols"},{emoji:"#️⃣",keywords:["hashtag","number","pound","key"],category:"Symbols"},{emoji:"*️⃣",keywords:["asterisk","star","key"],category:"Symbols"},{emoji:"0️⃣",keywords:["zero","number","0","keycap"],category:"Symbols"},{emoji:"1️⃣",keywords:["one","number","1","keycap"],category:"Symbols"},{emoji:"2️⃣",keywords:["two","number","2","keycap"],category:"Symbols"},{emoji:"3️⃣",keywords:["three","number","3","keycap"],category:"Symbols"},{emoji:"4️⃣",keywords:["four","number","4","keycap"],category:"Symbols"},{emoji:"5️⃣",keywords:["five","number","5","keycap"],category:"Symbols"},{emoji:"6️⃣",keywords:["six","number","6","keycap"],category:"Symbols"},{emoji:"7️⃣",keywords:["seven","number","7","keycap"],category:"Symbols"},{emoji:"8️⃣",keywords:["eight","number","8","keycap"],category:"Symbols"},{emoji:"9️⃣",keywords:["nine","number","9","keycap"],category:"Symbols"},{emoji:"🔟",keywords:["ten","number","10","keycap"],category:"Symbols"},{emoji:"🅰️",keywords:["a","letter","blood","type"],category:"Symbols"},{emoji:"🆎",keywords:["ab","blood","type","letter"],category:"Symbols"},{emoji:"🅱️",keywords:["b","letter","blood","type"],category:"Symbols"},{emoji:"🆑",keywords:["cl","clear","button"],category:"Symbols"},{emoji:"🆒",keywords:["cool","word","button"],category:"Symbols"},{emoji:"🆓",keywords:["free","word","button"],category:"Symbols"},{emoji:"ℹ️",keywords:["info","information","help"],category:"Symbols"},{emoji:"🆔",keywords:["id","identity","button"],category:"Symbols"},{emoji:"Ⓜ️",keywords:["m","circle","metro","letter"],category:"Symbols"},{emoji:"🆕",keywords:["new","word","button"],category:"Symbols"},{emoji:"🆖",keywords:["ng","no","good","button"],category:"Symbols"},{emoji:"🅾️",keywords:["o","letter","blood","type"],category:"Symbols"},{emoji:"🆗",keywords:["ok","word","button","yes"],category:"Symbols"},{emoji:"🅿️",keywords:["p","parking","letter","button"],category:"Symbols"},{emoji:"🆘",keywords:["sos","help","emergency","button"],category:"Symbols"},{emoji:"🆙",keywords:["up","word","button","exclamation"],category:"Symbols"},{emoji:"🆚",keywords:["vs","versus","against","button"],category:"Symbols"},{emoji:"🏁",keywords:["checkered","flag","race","finish"],category:"Flags"},{emoji:"🚩",keywords:["flag","triangular","red","post"],category:"Flags"},{emoji:"🎌",keywords:["flags","crossed","japanese","celebration"],category:"Flags"},{emoji:"🏴",keywords:["flag","black","waving"],category:"Flags"},{emoji:"🏳️",keywords:["flag","white","surrender","peace"],category:"Flags"},{emoji:"🏳️‍🌈",keywords:["rainbow","flag","pride","lgbtq","gay"],category:"Flags"},{emoji:"🏳️‍⚧️",keywords:["transgender","flag","pride","trans"],category:"Flags"},{emoji:"🏴‍☠️",keywords:["pirate","flag","jolly","roger","skull"],category:"Flags"},{emoji:"🇺🇸",keywords:["usa","america","flag","united","states"],category:"Flags"},{emoji:"🇬🇧",keywords:["uk","britain","england","flag","united","kingdom"],category:"Flags"},{emoji:"🇨🇦",keywords:["canada","flag","maple"],category:"Flags"},{emoji:"🇦🇺",keywords:["australia","flag","aussie"],category:"Flags"},{emoji:"🇯🇵",keywords:["japan","flag","japanese"],category:"Flags"},{emoji:"🇰🇷",keywords:["korea","south","flag","korean"],category:"Flags"},{emoji:"🇨🇳",keywords:["china","flag","chinese"],category:"Flags"},{emoji:"🇮🇳",keywords:["india","flag","indian"],category:"Flags"},{emoji:"🇩🇪",keywords:["germany","flag","german"],category:"Flags"},{emoji:"🇫🇷",keywords:["france","flag","french"],category:"Flags"},{emoji:"🇮🇹",keywords:["italy","flag","italian"],category:"Flags"},{emoji:"🇪🇸",keywords:["spain","flag","spanish"],category:"Flags"},{emoji:"🇧🇷",keywords:["brazil","flag","brazilian"],category:"Flags"},{emoji:"🇲🇽",keywords:["mexico","flag","mexican"],category:"Flags"},{emoji:"🇷🇺",keywords:["russia","flag","russian"],category:"Flags"},{emoji:"🇳🇱",keywords:["netherlands","flag","dutch","holland"],category:"Flags"},{emoji:"🇸🇪",keywords:["sweden","flag","swedish"],category:"Flags"},{emoji:"🇳🇴",keywords:["norway","flag","norwegian"],category:"Flags"},{emoji:"🇵🇱",keywords:["poland","flag","polish"],category:"Flags"},{emoji:"🇺🇦",keywords:["ukraine","flag","ukrainian"],category:"Flags"}],uo=Be.reduce((l,d)=>(l[d.category]||(l[d.category]=[]),l[d.category].push(d),l),{}),wo=["Smileys","People","Gestures","Hearts","Animals","Nature","Weather","Food","Tools","Tech","Transport","Objects","Symbols","Flags"];function jo({value:l,onChange:d}){const[s,t]=i.useState(!1),[c,k]=i.useState(""),n=i.useRef(null);i.useEffect(()=>{function g(h){n.current&&!n.current.contains(h.target)&&t(!1)}return document.addEventListener("mousedown",g),()=>document.removeEventListener("mousedown",g)},[]);const y=i.useMemo(()=>{const g=c.trim().toLowerCase();if(!g)return wo.map(p=>({category:p,emojis:uo[p]||[]})).filter(p=>p.emojis.length>0);const h=Be.filter(p=>p.keywords.some(S=>S.includes(g))||p.emoji===g);return h.length?[{category:"Results",emojis:h}]:[]},[c]),b=g=>{d(g),t(!1),k("")};return e.jsxs("div",{ref:n,className:"emoji-picker-container",children:[e.jsxs("div",{className:"emoji-picker-input-wrapper",children:[e.jsx("input",{type:"text",className:"form-input emoji-picker-input",value:l,onChange:g=>d(g.target.value),placeholder:"🚀",onClick:()=>t(!0),style:{textAlign:"center",fontSize:"18px",paddingRight:"32px"}}),e.jsx("button",{type:"button",className:"emoji-picker-toggle",onClick:()=>t(!s),title:"Browse emojis",children:"▼"})]}),s&&e.jsxs("div",{className:"emoji-picker-dropdown",children:[e.jsx("div",{className:"emoji-picker-search",children:e.jsx("input",{type:"text",className:"form-input",placeholder:"Search emojis...",value:c,onChange:g=>k(g.target.value),autoFocus:!0})}),e.jsx("div",{className:"emoji-picker-grid-container",children:y.length===0?e.jsx("div",{className:"emoji-picker-empty",children:"No emojis found"}):y.map(({category:g,emojis:h})=>e.jsxs("div",{className:"emoji-picker-category",children:[e.jsx("div",{className:"emoji-picker-category-label",children:g}),e.jsx("div",{className:"emoji-picker-grid",children:h.map((p,S)=>e.jsx("button",{type:"button",className:`emoji-picker-item ${l===p.emoji?"selected":""}`,onClick:()=>b(p.emoji),title:p.keywords.slice(0,3).join(", "),children:p.emoji},`${p.emoji}-${S}`))})]},g))})]})]})}async function ho(l){return new Promise((d,s)=>{const t=new FileReader;t.onload=async c=>{var n;const k=(n=c.target)==null?void 0:n.result;if(!k){s(new Error("Failed to read file"));return}try{const y=await bo(k);d(y)}catch(y){s(y)}},t.onerror=()=>{s(new Error("Failed to read file"))},t.readAsArrayBuffer(l)})}async function bo(l){return new Promise((d,s)=>{const t=new DataView(l);if(String.fromCharCode(t.getUint8(0),t.getUint8(1),t.getUint8(2),t.getUint8(3))!=="glTF"){s(new Error("Invalid GLB file: missing glTF magic number"));return}const k=new ro,n=new to;n.setDecoderPath("https://www.gstatic.com/draco/versioned/decoders/1.5.7/"),k.setDRACOLoader(n),k.setMeshoptDecoder(ao);const y=new Blob([l],{type:"model/gltf-binary"}),b=URL.createObjectURL(y);k.load(b,g=>{URL.revokeObjectURL(b),n.dispose();const h=g.animations.map(p=>p.name);h.sort((p,S)=>p.localeCompare(S)),d(h)},void 0,g=>{URL.revokeObjectURL(b),n.dispose();const h=g instanceof Error?g.message:"Unknown error";s(new Error(`Failed to parse GLB: ${h}`))})})}async function fo(l){return new Promise(d=>{if(!l.name.toLowerCase().endsWith(".glb")){d(!1);return}const s=new FileReader;s.onload=t=>{var y;const c=(y=t.target)==null?void 0:y.result;if(!c||c.byteLength<4){d(!1);return}const k=new DataView(c),n=String.fromCharCode(k.getUint8(0),k.getUint8(1),k.getUint8(2),k.getUint8(3));d(n==="glTF")},s.onerror=()=>{d(!1)},s.readAsArrayBuffer(l.slice(0,4))})}function xo(l){return l<1024?`${l} B`:l<1024*1024?`${(l/1024).toFixed(1)} KB`:`${(l/(1024*1024)).toFixed(1)} MB`}async function Re(l,d){const s=Le(),t=await fetch(K(`/api/custom-class-icons/${l}`),{method:"POST",headers:{"Content-Type":d.type||"image/png","X-Filename":encodeURIComponent(d.name),...s?{"X-Auth-Token":s}:{}},body:d});if(!t.ok){const c=await t.json().catch(()=>({error:t.statusText}));throw new Error(c.error||`Upload failed: ${t.statusText}`)}return t.json()}async function vo(l){const d=Le(),s=await fetch(K(`/api/custom-class-icons/${l}`),{method:"DELETE",headers:{...d?{"X-Auth-Token":d}:{}}});if(!s.ok)throw new Error(`Failed to delete class icon: ${s.statusText}`)}function So(l){return l.startsWith("/api/")?ze(K(l)):ze(K(`/api/custom-class-icons/${l}`))}function Co(l){return l.toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-|-$/g,"").substring(0,64)}function Oo({isOpen:l,onClose:d}){const{t:s}=Ie(["tools","common"]),t=io(),c=lo(),k=co(),[n,y]=i.useState("skills"),[b,g]=i.useState(null),[h,p]=i.useState(!1),[S,N]=i.useState(!1),[w,U]=i.useState(null),[j,W]=i.useState(""),[O,ee]=i.useState(""),[C,E]=i.useState(""),[z,P]=i.useState(""),[$,D]=i.useState("#4a9eff"),[_,V]=i.useState(""),[L,G]=i.useState("character-male-a.glb"),[oe,Y]=i.useState([]),[se,re]=i.useState(""),[ce,X]=i.useState(!1),[f,q]=i.useState(null),[T,J]=i.useState([]),[F,M]=i.useState({}),[R,a]=i.useState(1),[u,ne]=i.useState(0),[te,ye]=i.useState(0),[ae,me]=i.useState(0),[ge,je]=i.useState(!1),[he,B]=i.useState(null),pe=i.useRef(null),[de,ie]=i.useState(null),[be,le]=i.useState(null),fe=i.useRef(null),We=i.useCallback(()=>N(!1),[]),{handleMouseDown:De,handleClick:Ge}=Ee(We),Q=i.useMemo(()=>{const o=I.findIndex(r=>r.file===L);return o>=0?o:0},[L]),qe=i.useMemo(()=>I[Q]||I[0],[Q]),xe=i.useCallback(o=>{const r=o==="prev"?(Q-1+I.length)%I.length:(Q+1)%I.length;G(I[r].file)},[Q]),ve=[...t.filter(o=>{if(!j)return!0;const r=j.toLowerCase();return o.name.toLowerCase().includes(r)||o.description.toLowerCase().includes(r)||o.slug.toLowerCase().includes(r)})].sort((o,r)=>o.enabled!==r.enabled?o.enabled?-1:1:o.name.localeCompare(r.name)),Se=k.filter(o=>{if(!O)return!0;const r=O.toLowerCase();return o.name.toLowerCase().includes(r)||o.description.toLowerCase().includes(r)||o.id.toLowerCase().includes(r)}),He=()=>{g(null),p(!0)},Ke=o=>{g(o),p(!0)},Ue=o=>{x.updateSkill(o.id,{enabled:!o.enabled})},$e=o=>{const r=[];return o.assignedAgentClasses.length>0&&r.push(s("tools:skills.classCount",{count:o.assignedAgentClasses.length})),o.assignedAgentIds.length>0&&r.push(s("tools:skills.agentCount",{count:o.assignedAgentIds.length})),r.length===0?s("tools:skills.notAssigned"):r.join(", ")},Ce=o=>{if(!o.enabled)return 0;const r=new Set;for(const m of c.values())o.assignedAgentClasses.includes(m.class)&&r.add(m.id);for(const m of o.assignedAgentIds)r.add(m);return r.size},_e=()=>{const o=["#4a9eff","#50fa7b","#ff79c6","#bd93f9","#ffb86c","#8be9fd","#f1fa8c","#ff5555","#6272a4","#44475a","#00d4aa","#ff6b6b","#4ecdc4","#45b7d1","#96ceb4","#ffeaa7","#dfe6e9","#a29bfe","#fd79a8","#00b894"];return o[Math.floor(Math.random()*o.length)]},Ve=()=>{U(null),E(""),P(""),D(_e()),V(""),G("character-male-a.glb"),Y([]),re(""),X(!1),q(null),J([]),M({}),a(1),ne(0),ye(0),me(0),B(null),ie(null),le(null),N(!0)},Ye=o=>{var m,H,A;const r=k.find(Z=>Z.id===o);r&&(U(o),E(r.name),P(r.icon),D(r.color),V(r.description),G(r.model||"character-male-a.glb"),Y(r.defaultSkillIds||[]),re(r.instructions||""),X(!!r.customModelPath),q(null),J(r.availableAnimations||[]),M(r.animationMapping||{}),a(r.modelScale||1),ne(((m=r.modelOffset)==null?void 0:m.x)||0),ye(((H=r.modelOffset)==null?void 0:H.y)||0),me(((A=r.modelOffset)==null?void 0:A.z)||0),B(null),ie(null),le(r.iconPath?So(r.iconPath):null),N(!0))},Xe=async()=>{const o={name:C,icon:z||"🔷",color:$,description:_,defaultSkillIds:oe,instructions:se||void 0,modelScale:R!==1?R:void 0,modelOffset:u!==0||te!==0||ae!==0?{x:u,y:te,z:ae}:void 0,animationMapping:Object.keys(F).length>0?F:void 0,availableAnimations:T.length>0?T:void 0};if(ce||(o.model=L,o.customModelPath=void 0),w){if(x.updateCustomAgentClass(w,o),f&&await Te(w),de)try{const r=await Re(w,de);x.updateCustomAgentClass(w,{iconPath:r.iconPath})}catch(r){console.error("Failed to upload class icon:",r)}}else{x.createCustomAgentClass(o);const r=Co(C);if(f&&(await new Promise(m=>setTimeout(m,100)),await Te(r)),de){await new Promise(m=>setTimeout(m,f?0:100));try{const m=await Re(r,de);x.updateCustomAgentClass(r,{iconPath:m.iconPath})}catch(m){console.error("Failed to upload class icon:",m)}}}N(!1)},Te=async o=>{if(f){je(!0),B(null);try{const r=await Me(K(`/api/custom-models/upload/${o}`),{method:"POST",headers:{"Content-Type":"application/octet-stream","X-Filename":f.name},body:f});if(!r.ok){const m=await r.json();throw new Error(m.error||s("tools:skills.uploadFailed"))}x.updateCustomAgentClass(o,{availableAnimations:T,animationMapping:F,modelScale:R!==1?R:void 0})}catch(r){B(r.message||s("tools:skills.failedToUploadModel")),console.error("Model upload error:",r)}finally{je(!1)}}},Je=async o=>{var H;const r=(H=o.target.files)==null?void 0:H[0];if(!r)return;if(B(null),!await fo(r)){B(s("tools:skills.invalidGlbFile"));return}if(r.size>50*1024*1024){B(s("tools:skills.fileTooLarge"));return}try{const A=await ho(r);q(r),J(A),X(!0);const Z={},ue=A.map(v=>v.toLowerCase()),Ae=ue.findIndex(v=>v.includes("idle")||v==="static");Ae>=0&&(Z.idle=A[Ae]);const Ne=ue.findIndex(v=>v.includes("walk")||v.includes("run"));Ne>=0&&(Z.walk=A[Ne]);const Oe=ue.findIndex(v=>v.includes("work")||v.includes("action")||v.includes("attack")||v.includes("jump"));Oe>=0&&(Z.working=A[Oe]),M(Z)}catch(A){B(A.message||s("tools:skills.failedToParseModel")),console.error("Model parse error:",A)}o.target.value=""},Qe=async()=>{if(w)try{await Me(K(`/api/custom-models/${w}`),{method:"DELETE"})}catch(o){console.error("Failed to delete model:",o)}X(!1),q(null),J([]),M({}),a(1),G("character-male-a.glb")},[ke,Fe]=i.useState(null),Ze=o=>{Fe(o)},eo=o=>{Y(r=>r.includes(o)?r.filter(m=>m!==o):[...r,o])};return l?e.jsxs(e.Fragment,{children:[e.jsx("div",{className:"panel-overlay",onClick:d}),e.jsxs("div",{className:"skills-panel side-panel",children:[e.jsxs("div",{className:"panel-header",children:[e.jsx("h3",{children:s(n==="skills"?"tools:skills.title":"tools:skills.agentClasses")}),n==="skills"?e.jsx("button",{className:"btn btn-sm btn-primary",onClick:He,children:s("tools:skills.newSkill")}):e.jsx("button",{className:"btn btn-sm btn-primary",onClick:Ve,children:s("tools:skills.newClass")}),e.jsx("button",{className:"panel-close",onClick:d,children:"×"})]}),e.jsxs("div",{className:"panel-tabs",style:{display:"flex",borderBottom:"1px solid var(--border-color)",padding:"0 16px"},children:[e.jsxs("button",{className:`panel-tab ${n==="skills"?"active":""}`,onClick:()=>y("skills"),style:{padding:"8px 16px",background:"transparent",border:"none",borderBottom:n==="skills"?"2px solid var(--accent-blue)":"2px solid transparent",color:n==="skills"?"var(--text-primary)":"var(--text-secondary)",cursor:"pointer",fontWeight:n==="skills"?600:400},children:[s("tools:skills.title")," (",t.length,")"]}),e.jsxs("button",{className:`panel-tab ${n==="classes"?"active":""}`,onClick:()=>y("classes"),style:{padding:"8px 16px",background:"transparent",border:"none",borderBottom:n==="classes"?"2px solid var(--accent-blue)":"2px solid transparent",color:n==="classes"?"var(--text-primary)":"var(--text-secondary)",cursor:"pointer",fontWeight:n==="classes"?600:400},children:[s("tools:skills.agentClasses")," (",k.length,")"]})]}),n==="skills"&&e.jsx("div",{className:"panel-search",style:{padding:"12px 16px 12px"},children:e.jsx("input",{type:"text",className:"form-input",placeholder:s("tools:skills.searchSkills"),value:j,onChange:o=>W(o.target.value),style:{width:"100%"}})}),n==="classes"&&e.jsx("div",{className:"panel-search",style:{padding:"12px 16px 12px"},children:e.jsx("input",{type:"text",className:"form-input",placeholder:s("tools:skills.searchClasses"),value:O,onChange:o=>ee(o.target.value),style:{width:"100%"}})}),e.jsx("div",{className:"panel-content",style:{flex:1,overflowY:"auto",padding:"0 16px"},children:n==="skills"?ve.length===0?e.jsx("div",{className:"empty-state",style:{textAlign:"center",padding:"40px 20px",opacity:.6},children:j?e.jsx("p",{children:s("tools:skills.noClassesMatch",{query:j})}):e.jsxs(e.Fragment,{children:[e.jsx("p",{children:s("tools:skills.noSkillsDefined")}),e.jsx("p",{style:{fontSize:"12px",marginTop:"8px"},children:s("tools:skills.createSkillsHint")})]})}):e.jsx("div",{className:"skills-list",style:{display:"flex",flexDirection:"column",gap:"8px"},children:ve.map(o=>e.jsxs("div",{className:`skill-card ${o.enabled?"":"disabled"}`,style:{background:"var(--bg-secondary)",borderRadius:"8px",padding:"12px",border:"1px solid var(--border-color)",opacity:o.enabled?1:.6,cursor:"pointer"},onClick:()=>Ke(o.id),children:[e.jsxs("div",{style:{display:"flex",justifyContent:"space-between",alignItems:"flex-start"},children:[e.jsxs("div",{style:{flex:1},children:[e.jsxs("div",{style:{display:"flex",alignItems:"center",gap:"8px"},children:[e.jsx("span",{style:{fontWeight:600,fontSize:"14px"},children:o.name}),o.builtin&&e.jsx("span",{style:{fontSize:"10px",background:"linear-gradient(135deg, var(--accent-cyan), var(--accent-purple))",color:"#fff",padding:"3px 8px",borderRadius:"10px",fontWeight:700,textTransform:"uppercase",letterSpacing:"0.5px",boxShadow:"0 2px 4px rgba(139, 233, 253, 0.3)"},children:s("tools:skills.builtIn")}),!o.enabled&&e.jsx("span",{style:{fontSize:"10px",background:"var(--bg-tertiary)",padding:"2px 6px",borderRadius:"3px"},children:s("tools:skills.disabled")})]}),e.jsxs("div",{style:{fontSize:"11px",color:"var(--text-secondary)",fontFamily:"monospace"},children:["/",o.slug]})]}),e.jsx("button",{className:"btn btn-sm btn-secondary",onClick:r=>{r.stopPropagation(),Ue(o)},style:{fontSize:"10px",padding:"4px 8px"},children:o.enabled?s("tools:skills.disable"):s("tools:skills.enable")})]}),e.jsx("p",{style:{fontSize:"12px",color:"var(--text-secondary)",margin:"8px 0",lineHeight:1.4,display:"-webkit-box",WebkitLineClamp:2,WebkitBoxOrient:"vertical",overflow:"hidden"},children:o.description}),e.jsxs("div",{style:{display:"flex",gap:"12px",fontSize:"11px",color:"var(--text-secondary)"},children:[o.builtin&&e.jsx("span",{style:{color:"var(--accent-cyan)"},title:s("tools:skills.builtInTideCommander"),children:"Tide Commander"}),e.jsx("span",{title:s("tools:skills.assignedTo"),children:$e(o)}),o.allowedTools.length>0&&e.jsx("span",{title:s("tools:skills.allowedToolsTitle"),children:s("tools:skills.toolCount",{count:o.allowedTools.length})}),o.enabled&&Ce(o)>0&&e.jsx("span",{style:{color:"var(--accent-green)"},children:s("tools:skills.activeOnAgents",{count:Ce(o)})})]})]},o.id))}):k.length===0?e.jsxs("div",{className:"empty-state",style:{textAlign:"center",padding:"40px 20px",opacity:.6},children:[e.jsx("p",{children:s("tools:skills.noCustomClasses")}),e.jsx("p",{style:{fontSize:"12px",marginTop:"8px"},children:s("tools:skills.createClassesHint")})]}):Se.length===0?e.jsx("div",{className:"empty-state",style:{textAlign:"center",padding:"40px 20px",opacity:.6},children:e.jsx("p",{children:s("tools:skills.noClassesMatch",{query:O})})}):e.jsx("div",{className:"classes-list",style:{display:"flex",flexDirection:"column",gap:"8px",paddingTop:"12px"},children:Se.map(o=>{var r;return e.jsxs("div",{className:"class-card",style:{background:"var(--bg-secondary)",borderRadius:"8px",padding:"12px",border:`1px solid ${o.color}40`,cursor:"pointer"},onClick:()=>Ye(o.id),children:[e.jsxs("div",{style:{display:"flex",justifyContent:"space-between",alignItems:"flex-start"},children:[e.jsxs("div",{style:{display:"flex",alignItems:"center",gap:"10px"},children:[e.jsx("div",{style:{width:"36px",height:"36px",borderRadius:"8px",background:`${o.color}20`,display:"flex",alignItems:"center",justifyContent:"center",fontSize:"18px"},children:e.jsx(no,{classId:o.id,size:18})}),e.jsxs("div",{children:[e.jsx("div",{style:{fontWeight:600,fontSize:"14px"},children:o.name}),e.jsxs("div",{style:{fontSize:"11px",color:"var(--text-secondary)"},children:[s("tools:skills.model"),": ",((r=I.find(m=>m.file===o.model))==null?void 0:r.name)||o.model||"Male A"]})]})]}),e.jsx("button",{className:"btn btn-sm btn-secondary",onClick:m=>{m.stopPropagation(),Ze(o.id)},style:{fontSize:"10px",padding:"4px 8px",color:"var(--accent-red)"},children:s("common:buttons.delete")})]}),e.jsx("p",{style:{fontSize:"12px",color:"var(--text-secondary)",margin:"8px 0 0",lineHeight:1.4},children:o.description||s("tools:skills.noDescription")}),e.jsxs("div",{style:{marginTop:"8px",fontSize:"11px",color:"var(--text-secondary)",display:"flex",gap:"12px"},children:[o.defaultSkillIds.length>0&&e.jsx("span",{children:s("tools:skills.defaultSkillCount",{count:o.defaultSkillIds.length})}),o.instructions&&e.jsx("span",{style:{color:"var(--accent-cyan)"},children:s("tools:skills.hasInstructions")})]})]},o.id)})})}),e.jsx("div",{className:"panel-footer",style:{padding:"12px 16px",borderTop:"1px solid var(--border-color)"},children:e.jsx("div",{style:{fontSize:"11px",color:"var(--text-secondary)"},children:n==="skills"?e.jsxs(e.Fragment,{children:[s("tools:skills.total",{count:t.length}),t.filter(o=>o.enabled).length!==t.length&&e.jsxs("span",{children:[" (",s("tools:skills.enabled",{enabledCount:t.filter(o=>o.enabled).length}),")"]})]}):e.jsx(e.Fragment,{children:s("tools:skills.customClassesCount",{count:k.length})})})})]}),e.jsx(ko,{isOpen:h,onClose:()=>p(!1),skillId:b}),S&&e.jsx("div",{className:"modal-overlay visible",onMouseDown:De,onClick:Ge,children:e.jsxs("div",{className:"modal skill-editor-modal",children:[e.jsx("div",{className:"modal-header",children:s(w?"tools:skills.editAgentClass":"tools:skills.createAgentClass")}),e.jsxs("div",{className:"modal-body",style:{padding:"16px"},children:[e.jsxs("div",{className:"form-section",style:{marginBottom:"12px"},children:[e.jsx("label",{className:"form-label",children:s("common:labels.name")}),e.jsx("input",{type:"text",className:"form-input",value:C,onChange:o=>E(o.target.value),placeholder:s("tools:skills.classNamePlaceholder")})]}),e.jsxs("div",{className:"form-section",style:{marginBottom:"16px"},children:[e.jsx("label",{className:"form-label",children:s("tools:skills.characterModel")}),e.jsx("input",{ref:pe,type:"file",accept:".glb",onChange:Je,style:{display:"none"}}),ce?e.jsxs(e.Fragment,{children:[e.jsxs("div",{style:{padding:"12px",background:"var(--bg-tertiary)",borderRadius:"8px",border:"1px solid var(--accent-cyan)"},children:[e.jsx("div",{style:{display:"flex",justifyContent:"center",marginBottom:"12px"},children:e.jsx(Pe,{customModelFile:f||void 0,customModelUrl:!f&&w?K(`/api/custom-models/${w}`):void 0,modelScale:R,modelOffset:{x:u,y:te,z:ae},idleAnimation:F.idle!==void 0?F.idle:"",width:120,height:150})}),e.jsxs("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between",marginBottom:"12px"},children:[e.jsxs("div",{children:[e.jsx("div",{style:{fontSize:"12px",fontWeight:500,color:"var(--accent-cyan)"},children:s("tools:skills.customModel")}),e.jsx("div",{style:{fontSize:"11px",color:"var(--text-secondary)",marginTop:"2px"},children:f?`${f.name} (${xo(f.size)})`:s("tools:skills.uploaded")})]}),e.jsx("button",{type:"button",onClick:Qe,style:{padding:"4px 8px",background:"transparent",border:"1px solid var(--accent-red)",borderRadius:"4px",color:"var(--accent-red)",cursor:"pointer",fontSize:"10px"},children:s("tools:skills.removeModel")})]}),e.jsxs("div",{style:{marginBottom:"12px"},children:[e.jsxs("label",{style:{fontSize:"11px",color:"var(--text-secondary)",display:"block",marginBottom:"4px"},children:[s("tools:skills.modelScale"),": ",R.toFixed(3),"x"]}),e.jsx("input",{type:"range",min:"0",max:"100",step:"1",value:Math.log(R/.01)/Math.log(1e4)*100,onChange:o=>{const r=parseFloat(o.target.value),m=.01*Math.pow(1e4,r/100);a(Math.round(m*1e3)/1e3)},style:{width:"100%"}}),e.jsxs("div",{style:{display:"flex",justifyContent:"space-between",fontSize:"9px",color:"var(--text-muted)",marginTop:"2px"},children:[e.jsx("span",{children:"0.01x"}),e.jsx("span",{children:"1x"}),e.jsx("span",{children:"100x"})]})]}),e.jsxs("div",{style:{marginBottom:"12px"},children:[e.jsxs("label",{style:{fontSize:"11px",color:"var(--text-secondary)",display:"block",marginBottom:"4px"},children:[s("tools:skills.positionOffsetX"),": ",u.toFixed(2)]}),e.jsx("input",{type:"range",min:"-1",max:"1",step:"0.01",value:u,onChange:o=>ne(parseFloat(o.target.value)),style:{width:"100%"}})]}),e.jsxs("div",{style:{marginBottom:"12px"},children:[e.jsxs("label",{style:{fontSize:"11px",color:"var(--text-secondary)",display:"block",marginBottom:"4px"},children:[s("tools:skills.positionOffsetY"),": ",te.toFixed(2)]}),e.jsx("input",{type:"range",min:"-1",max:"1",step:"0.01",value:te,onChange:o=>ye(parseFloat(o.target.value)),style:{width:"100%"}})]}),e.jsxs("div",{style:{marginBottom:"12px"},children:[e.jsxs("label",{style:{fontSize:"11px",color:"var(--text-secondary)",display:"block",marginBottom:"4px"},children:[s("tools:skills.positionOffsetZ"),": ",ae.toFixed(2)]}),e.jsx("input",{type:"range",min:"-3",max:"3",step:"0.01",value:ae,onChange:o=>me(parseFloat(o.target.value)),style:{width:"100%"}})]}),T.length>0&&e.jsxs("div",{children:[e.jsxs("div",{style:{fontSize:"11px",color:"var(--text-secondary)",marginBottom:"8px"},children:[s("tools:skills.animationMapping")," (",s("tools:skills.detected",{count:T.length}),")"]}),e.jsxs("div",{style:{display:"flex",alignItems:"center",gap:"8px",marginBottom:"6px"},children:[e.jsxs("span",{style:{fontSize:"11px",color:"var(--text-primary)",width:"60px"},children:[s("tools:skills.idle"),":"]}),e.jsxs("select",{value:F.idle||"",onChange:o=>M(r=>({...r,idle:o.target.value||void 0})),style:{flex:1,padding:"4px 8px",background:"var(--bg-secondary)",border:"1px solid var(--border-color)",borderRadius:"4px",color:"var(--text-primary)",fontSize:"11px"},children:[e.jsx("option",{value:"",children:s("tools:skills.none")}),T.map(o=>e.jsx("option",{value:o,children:o},o))]})]}),e.jsxs("div",{style:{display:"flex",alignItems:"center",gap:"8px",marginBottom:"6px"},children:[e.jsxs("span",{style:{fontSize:"11px",color:"var(--text-primary)",width:"60px"},children:[s("tools:skills.walk"),":"]}),e.jsxs("select",{value:F.walk||"",onChange:o=>M(r=>({...r,walk:o.target.value||void 0})),style:{flex:1,padding:"4px 8px",background:"var(--bg-secondary)",border:"1px solid var(--border-color)",borderRadius:"4px",color:"var(--text-primary)",fontSize:"11px"},children:[e.jsx("option",{value:"",children:s("tools:skills.none")}),T.map(o=>e.jsx("option",{value:o,children:o},o))]})]}),e.jsxs("div",{style:{display:"flex",alignItems:"center",gap:"8px"},children:[e.jsxs("span",{style:{fontSize:"11px",color:"var(--text-primary)",width:"60px"},children:[s("tools:skills.working"),":"]}),e.jsxs("select",{value:F.working||"",onChange:o=>M(r=>({...r,working:o.target.value||void 0})),style:{flex:1,padding:"4px 8px",background:"var(--bg-secondary)",border:"1px solid var(--border-color)",borderRadius:"4px",color:"var(--text-primary)",fontSize:"11px"},children:[e.jsx("option",{value:"",children:s("tools:skills.noneBounce")}),T.map(o=>e.jsx("option",{value:o,children:o},o))]})]})]}),T.length===0&&e.jsx("div",{style:{fontSize:"11px",color:"var(--text-muted)",fontStyle:"italic"},children:s("tools:skills.noAnimations")})]}),e.jsx("button",{type:"button",onClick:()=>{var o;return(o=pe.current)==null?void 0:o.click()},style:{width:"100%",marginTop:"8px",padding:"6px 12px",background:"var(--bg-secondary)",border:"1px solid var(--border-color)",borderRadius:"6px",color:"var(--text-secondary)",cursor:"pointer",fontSize:"11px"},children:s("tools:skills.replaceModel")})]}):e.jsxs(e.Fragment,{children:[e.jsxs("div",{style:{display:"flex",alignItems:"center",justifyContent:"center",gap:"12px",padding:"12px",background:"var(--bg-tertiary)",borderRadius:"8px",border:"1px solid var(--border-color)"},children:[e.jsx("button",{type:"button",onClick:()=>xe("prev"),style:{width:"36px",height:"36px",borderRadius:"50%",border:"1px solid var(--border-color)",background:"var(--bg-secondary)",color:"var(--text-primary)",cursor:"pointer",display:"flex",alignItems:"center",justifyContent:"center",fontSize:"18px"},children:"‹"}),e.jsxs("div",{style:{textAlign:"center"},children:[e.jsx(Pe,{modelFile:L,width:120,height:150}),e.jsx("div",{style:{marginTop:"8px",fontSize:"12px",fontWeight:500,color:"var(--text-primary)"},children:qe.name}),e.jsxs("div",{style:{fontSize:"10px",color:"var(--text-secondary)",marginTop:"2px"},children:[Q+1," / ",I.length]})]}),e.jsx("button",{type:"button",onClick:()=>xe("next"),style:{width:"36px",height:"36px",borderRadius:"50%",border:"1px solid var(--border-color)",background:"var(--bg-secondary)",color:"var(--text-primary)",cursor:"pointer",display:"flex",alignItems:"center",justifyContent:"center",fontSize:"18px"},children:"›"})]}),e.jsx("button",{type:"button",onClick:()=>{var o;return(o=pe.current)==null?void 0:o.click()},style:{width:"100%",marginTop:"8px",padding:"8px 12px",background:"var(--bg-secondary)",border:"1px dashed var(--border-color)",borderRadius:"6px",color:"var(--text-secondary)",cursor:"pointer",fontSize:"12px"},children:s("tools:skills.uploadCustomModel")})]}),he&&e.jsx("div",{style:{marginTop:"8px",padding:"8px",background:"rgba(255, 85, 85, 0.1)",border:"1px solid var(--accent-red)",borderRadius:"4px",fontSize:"11px",color:"var(--accent-red)"},children:he})]}),e.jsxs("div",{style:{display:"flex",gap:"12px",marginBottom:"12px"},children:[e.jsxs("div",{className:"form-section",style:{flex:"0 0 80px"},children:[e.jsx("label",{className:"form-label",children:s("tools:skills.icon")}),be?e.jsxs("div",{className:"class-icon-preview-container",children:[e.jsx("img",{src:be,alt:"Class icon",className:"class-icon-preview-img"}),e.jsx("button",{className:"class-icon-preview-remove",onClick:()=>{if(ie(null),le(null),w){const o=k.find(r=>r.id===w);o!=null&&o.iconPath&&vo(w).then(()=>{x.updateCustomAgentClass(w,{iconPath:void 0})}).catch(r=>console.error("Failed to delete class icon:",r))}},title:"Remove icon",children:"×"})]}):e.jsx(jo,{value:z,onChange:o=>{P(o),ie(null),le(null)}})]}),e.jsxs("div",{className:"form-section",style:{flex:"0 0 auto",display:"flex",flexDirection:"column",justifyContent:"flex-end"},children:[e.jsx("input",{ref:fe,type:"file",accept:"image/png,image/jpeg,image/gif,image/webp,image/svg+xml",style:{display:"none"},onChange:o=>{var m;const r=(m=o.target.files)==null?void 0:m[0];if(r){ie(r),P("");const H=URL.createObjectURL(r);le(H)}o.target.value=""}}),e.jsxs("button",{className:"class-icon-upload-btn",onClick:()=>{var o;return(o=fe.current)==null?void 0:o.click()},title:"Upload custom icon",children:[e.jsx("span",{className:"class-icon-upload-icon",children:"+"}),e.jsx("span",{className:"class-icon-upload-label",children:"IMG"})]})]}),e.jsxs("div",{className:"form-section",style:{flex:1},children:[e.jsx("label",{className:"form-label",children:s("tools:skills.color")}),e.jsx("input",{type:"color",value:$,onChange:o=>D(o.target.value),style:{width:"100%",height:"36px",padding:"2px",cursor:"pointer"}})]})]}),e.jsxs("div",{className:"form-section",style:{marginBottom:"12px"},children:[e.jsx("label",{className:"form-label",children:s("common:labels.description")}),e.jsx("input",{type:"text",className:"form-input",value:_,onChange:o=>V(o.target.value),placeholder:s("tools:skills.classDescriptionPlaceholder")})]}),e.jsxs("div",{className:"form-section",style:{marginBottom:"12px"},children:[e.jsx("label",{className:"form-label",children:s("tools:skills.defaultSkillsLabel")}),e.jsx("p",{className:"form-hint",style:{fontSize:"11px",color:"var(--text-secondary)",marginBottom:"8px"},children:s("tools:skills.defaultSkillsHint")}),e.jsx("div",{style:{maxHeight:"120px",overflowY:"auto",border:"1px solid var(--border-color)",borderRadius:"6px",padding:"8px"},children:t.filter(o=>o.enabled).length===0?e.jsx("div",{style:{color:"var(--text-muted)",fontSize:"12px",textAlign:"center",padding:"12px"},children:s("tools:skills.noEnabledSkills")}):t.filter(o=>o.enabled).map(o=>e.jsxs("div",{onClick:()=>eo(o.id),style:{display:"flex",alignItems:"center",gap:"8px",padding:"6px 8px",borderRadius:"4px",cursor:"pointer",background:oe.includes(o.id)?"rgba(80, 250, 123, 0.15)":"transparent"},children:[e.jsx("span",{style:{width:"16px",color:"var(--dracula-green)"},children:oe.includes(o.id)?e.jsx(yo,{name:"check",size:12}):null}),e.jsx("span",{style:{fontSize:"13px"},children:o.name})]},o.id))})]}),e.jsxs("div",{className:"form-section",children:[e.jsx("label",{className:"form-label",children:s("tools:skills.instructionsLabel")}),e.jsx("p",{className:"form-hint",style:{fontSize:"11px",color:"var(--text-secondary)",marginBottom:"8px"},children:s("tools:skills.instructionsHint")}),e.jsx("textarea",{className:"form-input",value:se,onChange:o=>re(o.target.value),placeholder:`# Agent Instructions
23
23
 
24
24
  You are a specialized agent...
25
25