tide-commander 1.35.0 → 1.36.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 (54) hide show
  1. package/dist/assets/{BossLogsModal-B_dgVF7L.js → BossLogsModal-B6meUM1T.js} +1 -1
  2. package/dist/assets/BossSpawnModal-DzWs1NNZ.js +1 -0
  3. package/dist/assets/{ControlsModal-WMTTqbca.js → ControlsModal-D2QDZ20h.js} +1 -1
  4. package/dist/assets/{DockerLogsModal-THzhLHch.js → DockerLogsModal-Bh1ghgFV.js} +1 -1
  5. package/dist/assets/{EmbeddedEditor-DWLKJYav.js → EmbeddedEditor-C4rKc9Ys.js} +1 -1
  6. package/dist/assets/{GmailOAuthSetup-DN9ceaS6.js → GmailOAuthSetup-E5_WFtyX.js} +1 -1
  7. package/dist/assets/{GoogleOAuthSetup-bVST2EOB.js → GoogleOAuthSetup-B7NLxSSp.js} +1 -1
  8. package/dist/assets/{IframeModal-BELsjvgi.js → IframeModal-CGbINL-o.js} +1 -1
  9. package/dist/assets/{IntegrationsPanel-DwDr4BRt.js → IntegrationsPanel-DZmbjiXV.js} +2 -2
  10. package/dist/assets/{LogViewerModal-CMe04PO5.js → LogViewerModal-KI2L074n.js} +1 -1
  11. package/dist/assets/{MonitoringModal-CqSalNeY.js → MonitoringModal-CWqjvTra.js} +1 -1
  12. package/dist/assets/{PM2LogsModal-CCmCDxVt.js → PM2LogsModal-DRHybuUO.js} +1 -1
  13. package/dist/assets/{RestoreArchivedAreaModal-IfzPidIv.js → RestoreArchivedAreaModal-DjpKSz7P.js} +1 -1
  14. package/dist/assets/{SaveSnapshotModal-DUhrVD5l.js → SaveSnapshotModal-CWtf3rgg.js} +1 -1
  15. package/dist/assets/Scene2DCanvas-CSfRDtXw.js +1 -0
  16. package/dist/assets/SceneManager-Do4NpOsy.js +104 -0
  17. package/dist/assets/{SkillsPanel-CPFOI4Tl.js → SkillsPanel-BqZSNfNW.js} +3 -3
  18. package/dist/assets/{SnapshotManager-Cbu0tJBz.js → SnapshotManager-DyqyIhWz.js} +1 -1
  19. package/dist/assets/SpawnModal-CGFj_b9I.js +1 -0
  20. package/dist/assets/SubordinateAssignmentModal-DGFoupVt.js +1 -0
  21. package/dist/assets/{SupervisorPanel-BvX-dlk_.js → SupervisorPanel-B1PVopnm.js} +1 -1
  22. package/dist/assets/{TriggerManagerPanel-RUVFmKmf.js → TriggerManagerPanel-CFez7_vm.js} +2 -2
  23. package/dist/assets/{WorkflowEditorPanel-CwZpEqzM.js → WorkflowEditorPanel-ClMl5U8g.js} +1 -1
  24. package/dist/assets/{index-DDPUtz8-.js → index-B4SUGrVB.js} +1 -1
  25. package/dist/assets/{index-CiD1Rwaq.js → index-BK3kI8Cb.js} +1 -1
  26. package/dist/assets/{index-BFguOWBW.js → index-Bf3KKyiV.js} +2 -2
  27. package/dist/assets/{index-D4nfDvz4.js → index-Bmu_CPsU.js} +3 -3
  28. package/dist/assets/index-CbzHGOPP.js +1 -0
  29. package/dist/assets/index-CpZt7iSV.js +1 -0
  30. package/dist/assets/{index-B-wV06cR.js → index-CxtzptPF.js} +5 -5
  31. package/dist/assets/{index-EH8IBvSU.js → index-D2_-BBP8.js} +3 -3
  32. package/dist/assets/main-C6uuUPJ0.css +1 -0
  33. package/dist/assets/main-CtGyoZXd.js +152 -0
  34. package/dist/assets/{web-D1vWYL8u.js → web-C2JUUvGB.js} +1 -1
  35. package/dist/assets/{web-DUq3Undh.js → web-D4EcUHSn.js} +1 -1
  36. package/dist/index.html +2 -2
  37. package/dist/src/packages/server/routes/agents.js +209 -1
  38. package/dist/src/packages/server/routes/areas.js +25 -0
  39. package/dist/src/packages/server/routes/index.js +2 -0
  40. package/dist/src/packages/server/routes/workspaces.js +123 -0
  41. package/dist/src/packages/server/services/agent-service.js +87 -1
  42. package/dist/src/packages/server/services/area-layout-service.js +260 -0
  43. package/dist/src/packages/server/services/workspace-service.js +104 -0
  44. package/package.json +1 -1
  45. package/dist/assets/BossSpawnModal-CSO1bYxA.js +0 -1
  46. package/dist/assets/Scene2DCanvas-Bl5DUC7w.js +0 -1
  47. package/dist/assets/SceneManager-BGO9tiaI.js +0 -104
  48. package/dist/assets/SpawnModal-BqDbsYLY.js +0 -1
  49. package/dist/assets/SubordinateAssignmentModal-DOqkhL_L.js +0 -1
  50. package/dist/assets/camera-D_KeL_pz.js +0 -1
  51. package/dist/assets/index-C7gqY2AA.js +0 -1
  52. package/dist/assets/index-H0PzHVFw.js +0 -1
  53. package/dist/assets/main-Cjm0d8dZ.js +0 -152
  54. package/dist/assets/main-DqC9_fF4.css +0 -1
@@ -1,4 +1,4 @@
1
- import{u as Te,b8 as Ke,b9 as Ue,r as i,h as Ce,j as e,s as z,ba as $e,bb as _e,bc as Ye,E as Ve,y as Je,G as Qe,bd as O,M as ve,p as me,L as Se}from"./main-Cjm0d8dZ.js";import"./modulepreload-polyfill-B5Qt9EMX.js";import"./vendor-react--Eh9ivFN.js";import"./vendor-three-Chj50gSY.js";const Xe=[{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"}],Ze=[{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"}],eo=`## Instructions
1
+ import{u as Te,be as Ke,bf as Ue,r as i,h as Ce,j as e,s as z,bg as $e,bh as _e,bi as Ye,L as Ve,H as Je,M as Qe,bj as O,W as ve,w as me,V as Se}from"./main-CtGyoZXd.js";import"./modulepreload-polyfill-B5Qt9EMX.js";import"./vendor-react--Eh9ivFN.js";import"./vendor-three-Chj50gSY.js";const Xe=[{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"}],Ze=[{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"}],eo=`## Instructions
2
2
 
3
3
  Describe step-by-step instructions for this skill here.
4
4
 
@@ -19,10 +19,10 @@ Show concrete examples of using this skill.
19
19
 
20
20
  - List important safety considerations
21
21
  - Warn about destructive operations
22
- `;function oo({isOpen:d,onClose:g,skillId:s}){const{t:a}=Te(["tools","common"]),c=Ke(s??null),p=Ue(),l=!!c,n=(c==null?void 0:c.builtin)===!0,[h,y]=i.useState(""),[j,m]=i.useState(""),[v,F]=i.useState(""),[f,L]=i.useState(""),[u,W]=i.useState([]),[A,J]=i.useState(""),[S,M]=i.useState([]),[N,P]=i.useState([]),[D,G]=i.useState(!0),[q,H]=i.useState(!1),I=i.useRef(null),K=i.useRef(null);i.useEffect(()=>{d&&(c?(y(c.name),m(c.slug),F(c.description),L(c.content||""),W(c.allowedTools||[]),M(c.assignedAgentIds||[]),P(c.assignedAgentClasses||[]),G(c.enabled)):(y(a("tools:skills.newSkillDefault")),m(""),F(""),L(eo),W([]),M([]),P([]),G(!0)),J(""),H(!1),setTimeout(()=>{var t;return(t=I.current)==null?void 0:t.focus()},100))},[d,c]),i.useEffect(()=>{if(!l&&h){const t=h.toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-|-$/g,"").substring(0,64);m(t)}},[h,l]);const Q=t=>{if(t.preventDefault(),n&&s){z.updateSkill(s,{assignedAgentIds:S,assignedAgentClasses:N,enabled:D}),g();return}if(!h.trim()||!v.trim())return;const k={name:h.trim(),slug:j.trim()||h.toLowerCase().replace(/[^a-z0-9]+/g,"-"),description:v.trim(),content:f.trim(),allowedTools:u,assignedAgentIds:S,assignedAgentClasses:N,enabled:D};if(l&&s){if(c&&(c.name!==k.name||c.description!==k.description||c.content!==k.content||c.enabled!==k.enabled||JSON.stringify(c.allowedTools)!==JSON.stringify(k.allowedTools))&&!confirm(a("tools:skills.updateSkillConfirm")))return;z.updateSkill(s,k)}else z.createSkill(k);g()},X=()=>{s&&confirm(a("tools:skills.deleteSkillConfirm"))&&(z.deleteSkill(s),g())},Z=t=>{u.includes(t)?W(u.filter(k=>k!==t)):W([...u,t])},U=()=>{A.trim()&&!u.includes(A.trim())&&(W([...u,A.trim()]),J(""))},ae=t=>{N.includes(t)?P(N.filter(k=>k!==t)):P([...N,t])},$=t=>{S.includes(t)?M(S.filter(k=>k!==t)):M([...S,t])},b=p.filter(t=>t.class!=="boss"),{handleMouseDown:_,handleClick:T}=Ce(g);return d?e.jsx("div",{className:"modal-overlay visible",onMouseDown:_,onClick:T,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:[a(l?n?"tools:skills.viewBuiltInSkill":"tools:skills.editSkill":"tools:skills.createSkill"),n&&e.jsx("span",{style:{fontSize:"10px",background:"var(--accent-cyan)",color:"var(--bg-primary)",padding:"2px 6px",borderRadius:"3px",fontWeight:600,marginLeft:"8px"},children:a("tools:skills.builtIn")})]}),l&&!n&&e.jsx("button",{type:"button",className:"btn btn-danger btn-sm",onClick:X,style:{marginLeft:"auto",marginRight:"12px"},children:a("common:buttons.delete")})]}),e.jsxs("form",{onSubmit:Q,children:[e.jsxs("div",{className:"modal-body",style:{maxHeight:"70vh",overflowY:"auto"},children:[n&&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:a("tools:skills.builtInNotice")}),e.jsxs("div",{className:"form-section",children:[e.jsx("label",{className:"form-label",children:a("tools:skills.nameRequired")}),e.jsx("input",{ref:I,type:"text",className:"form-input",value:h,onChange:t=>y(t.target.value),placeholder:a("tools:skills.skillNamePlaceholder"),required:!0,disabled:n,style:n?{opacity:.7,cursor:"not-allowed"}:void 0})]}),e.jsxs("div",{className:"form-section",children:[e.jsx("label",{className:"form-label",children:a("tools:skills.slugLabel")}),e.jsx("input",{type:"text",className:"form-input",value:j,onChange:t=>m(t.target.value),placeholder:a("tools:skills.slugPlaceholder"),style:{fontFamily:"monospace",fontSize:"12px",...n?{opacity:.7,cursor:"not-allowed"}:{}},disabled:n}),e.jsx("small",{className:"form-hint",children:a("tools:skills.slugHint")})]}),e.jsxs("div",{className:"form-section",children:[e.jsx("label",{className:"form-label",children:a("tools:skills.descriptionRequired")}),e.jsx("textarea",{className:"form-input",value:v,onChange:t=>F(t.target.value),placeholder:a("tools:skills.skillDescPlaceholder"),rows:3,required:!0,style:{resize:"vertical",...n?{opacity:.7,cursor:"not-allowed"}:{}},disabled:n}),e.jsx("small",{className:"form-hint",children:a("tools:skills.descriptionHint")})]}),e.jsxs("div",{className:"form-section",children:[e.jsx("label",{className:"form-label",children:a("tools:skills.instructionsMarkdown")}),e.jsx("textarea",{ref:K,className:"form-input",value:f,onChange:t=>L(t.target.value),placeholder:a("tools:skills.skillContentPlaceholder"),rows:12,style:{fontFamily:"monospace",fontSize:"12px",resize:"vertical",minHeight:"200px",...n?{opacity:.7,cursor:"not-allowed"}:{}},disabled:n})]}),e.jsxs("div",{className:"form-section",children:[e.jsx("label",{className:"form-label",children:a("tools:skills.allowedTools")}),n?e.jsx("div",{style:{display:"flex",flexWrap:"wrap",gap:"4px",opacity:.7},children:u.length>0?u.map(t=>e.jsx("span",{style:{background:"var(--bg-tertiary)",padding:"2px 8px",borderRadius:"4px",fontSize:"11px"},children:t},t)):e.jsx("span",{style:{fontSize:"12px",color:"var(--text-muted)"},children:a("tools:skills.noSpecificTools")})}):e.jsxs(e.Fragment,{children:[e.jsx("div",{className:"tool-presets",style:{display:"flex",flexWrap:"wrap",gap:"6px",marginBottom:"8px"},children:Ze.map(t=>e.jsx("button",{type:"button",className:`btn btn-sm ${u.includes(t.value)?"btn-primary":"btn-secondary"}`,onClick:()=>Z(t.value),style:{fontSize:"11px",padding:"4px 8px"},children:a(t.labelKey)},t.value))}),e.jsxs("div",{style:{display:"flex",gap:"8px"},children:[e.jsx("input",{type:"text",className:"form-input",value:A,onChange:t=>J(t.target.value),placeholder:a("tools:skills.customToolPlaceholder"),style:{flex:1,fontSize:"12px"},onKeyDown:t=>{t.key==="Enter"&&(t.preventDefault(),U())}}),e.jsx("button",{type:"button",className:"btn btn-secondary btn-sm",onClick:U,children:a("common:buttons.add")})]}),u.length>0&&e.jsx("div",{style:{marginTop:"8px",display:"flex",flexWrap:"wrap",gap:"4px"},children:u.map(t=>e.jsxs("span",{className:"tag",style:{background:"var(--bg-tertiary)",padding:"2px 8px",borderRadius:"4px",fontSize:"11px",cursor:"pointer"},onClick:()=>Z(t),title:a("tools:skills.clickToRemove"),children:[t," ×"]},t))})]})]}),e.jsxs("div",{className:"form-section",children:[e.jsx("label",{className:"form-label",children:a("tools:skills.assignToClasses")}),e.jsx("small",{className:"form-hint",style:{display:"block",marginBottom:"8px"},children:a("tools:skills.allAgentsOfClasses")}),e.jsx("div",{style:{display:"grid",gridTemplateColumns:"repeat(2, 1fr)",gap:"6px"},children:Xe.map(t=>e.jsxs("button",{type:"button",className:`btn btn-sm ${N.includes(t.value)?"btn-primary":"btn-secondary"}`,onClick:()=>ae(t.value),style:{fontSize:"11px",padding:"6px 8px",textAlign:"left"},children:[e.jsx("strong",{children:a(t.labelKey)}),e.jsxs("span",{style:{opacity:.7,marginLeft:"4px"},children:["- ",a(t.descriptionKey)]})]},t.value))})]}),b.length>0&&e.jsxs("div",{className:"form-section",children:[e.jsx("label",{className:"form-label",children:a("tools:skills.assignToAgents")}),e.jsx("div",{style:{display:"flex",flexWrap:"wrap",gap:"6px"},children:b.map(t=>e.jsxs("button",{type:"button",className:`btn btn-sm ${S.includes(t.id)?"btn-primary":"btn-secondary"}`,onClick:()=>$(t.id),style:{fontSize:"11px",padding:"4px 8px"},children:[t.name,e.jsxs("span",{style:{opacity:.6,marginLeft:"4px"},children:["(",t.class,")"]})]},t.id))})]}),e.jsxs("div",{className:"form-section",children:[e.jsxs("button",{type:"button",className:"btn btn-secondary btn-sm",onClick:()=>H(!q),style:{marginBottom:"8px"},children:[a(q?"common:buttons2.hide":"common:buttons2.show")," ",a("tools:skills.advancedOptions")]}),q&&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:D,onChange:t=>G(t.target.checked)}),a("tools:skills.skillEnabled")]}),e.jsx("small",{className:"form-hint",children:a("tools:skills.disabledSkillsHint")})]})]})]}),e.jsxs("div",{className:"modal-footer",children:[e.jsx("button",{type:"button",className:"btn btn-secondary",onClick:g,children:a(n?"common:buttons.close":"common:buttons.cancel")}),!n&&e.jsx("button",{type:"submit",className:"btn btn-primary",children:a(l?"common:buttons2.saveChanges":"tools:skills.createSkill")}),n&&e.jsx("button",{type:"submit",className:"btn btn-primary",children:a("tools:skills.saveAssignments")})]})]})]})}):null}const Fe=[{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"}],so=Fe.reduce((d,g)=>(d[g.category]||(d[g.category]=[]),d[g.category].push(g),d),{}),ro=["Smileys","People","Gestures","Hearts","Animals","Nature","Weather","Food","Tools","Tech","Transport","Objects","Symbols","Flags"];function ao({value:d,onChange:g}){const[s,a]=i.useState(!1),[c,p]=i.useState(""),l=i.useRef(null);i.useEffect(()=>{function y(j){l.current&&!l.current.contains(j.target)&&a(!1)}return document.addEventListener("mousedown",y),()=>document.removeEventListener("mousedown",y)},[]);const n=i.useMemo(()=>{const y=c.trim().toLowerCase();if(!y)return ro.map(m=>({category:m,emojis:so[m]||[]})).filter(m=>m.emojis.length>0);const j=Fe.filter(m=>m.keywords.some(v=>v.includes(y))||m.emoji===y);return j.length?[{category:"Results",emojis:j}]:[]},[c]),h=y=>{g(y),a(!1),p("")};return e.jsxs("div",{ref:l,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:d,onChange:y=>g(y.target.value),placeholder:"🚀",onClick:()=>a(!0),style:{textAlign:"center",fontSize:"18px",paddingRight:"32px"}}),e.jsx("button",{type:"button",className:"emoji-picker-toggle",onClick:()=>a(!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:y=>p(y.target.value),autoFocus:!0})}),e.jsx("div",{className:"emoji-picker-grid-container",children:n.length===0?e.jsx("div",{className:"emoji-picker-empty",children:"No emojis found"}):n.map(({category:y,emojis:j})=>e.jsxs("div",{className:"emoji-picker-category",children:[e.jsx("div",{className:"emoji-picker-category-label",children:y}),e.jsx("div",{className:"emoji-picker-grid",children:j.map((m,v)=>e.jsx("button",{type:"button",className:`emoji-picker-item ${d===m.emoji?"selected":""}`,onClick:()=>h(m.emoji),title:m.keywords.slice(0,3).join(", "),children:m.emoji},`${m.emoji}-${v}`))})]},y))})]})]})}async function to(d){return new Promise((g,s)=>{const a=new FileReader;a.onload=async c=>{var l;const p=(l=c.target)==null?void 0:l.result;if(!p){s(new Error("Failed to read file"));return}try{const n=await io(p);g(n)}catch(n){s(n)}},a.onerror=()=>{s(new Error("Failed to read file"))},a.readAsArrayBuffer(d)})}async function io(d){return new Promise((g,s)=>{const a=new DataView(d);if(String.fromCharCode(a.getUint8(0),a.getUint8(1),a.getUint8(2),a.getUint8(3))!=="glTF"){s(new Error("Invalid GLB file: missing glTF magic number"));return}const p=new $e,l=new _e;l.setDecoderPath("https://www.gstatic.com/draco/versioned/decoders/1.5.7/"),p.setDRACOLoader(l),p.setMeshoptDecoder(Ye);const n=new Blob([d],{type:"model/gltf-binary"}),h=URL.createObjectURL(n);p.load(h,y=>{URL.revokeObjectURL(h),l.dispose();const j=y.animations.map(m=>m.name);j.sort((m,v)=>m.localeCompare(v)),g(j)},void 0,y=>{URL.revokeObjectURL(h),l.dispose();const j=y instanceof Error?y.message:"Unknown error";s(new Error(`Failed to parse GLB: ${j}`))})})}async function lo(d){return new Promise(g=>{if(!d.name.toLowerCase().endsWith(".glb")){g(!1);return}const s=new FileReader;s.onload=a=>{var n;const c=(n=a.target)==null?void 0:n.result;if(!c||c.byteLength<4){g(!1);return}const p=new DataView(c),l=String.fromCharCode(p.getUint8(0),p.getUint8(1),p.getUint8(2),p.getUint8(3));g(l==="glTF")},s.onerror=()=>{g(!1)},s.readAsArrayBuffer(d.slice(0,4))})}function co(d){return d<1024?`${d} B`:d<1024*1024?`${(d/1024).toFixed(1)} KB`:`${(d/(1024*1024)).toFixed(1)} MB`}function no(d){return d.toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-|-$/g,"").substring(0,64)}function wo({isOpen:d,onClose:g}){const{t:s}=Te(["tools","common"]),a=Ve(),c=Je(),p=Qe(),[l,n]=i.useState("skills"),[h,y]=i.useState(null),[j,m]=i.useState(!1),[v,F]=i.useState(!1),[f,L]=i.useState(null),[u,W]=i.useState(""),[A,J]=i.useState(""),[S,M]=i.useState(""),[N,P]=i.useState(""),[D,G]=i.useState("#4a9eff"),[q,H]=i.useState(""),[I,K]=i.useState("character-male-a.glb"),[Q,X]=i.useState([]),[Z,U]=i.useState(""),[ae,$]=i.useState(!1),[b,_]=i.useState(null),[T,t]=i.useState([]),[k,R]=i.useState({}),[B,te]=i.useState(1),[ee,ie]=i.useState(0),[oe,le]=i.useState(0),[se,ce]=i.useState(0),[ne,ge]=i.useState(!1),[pe,E]=i.useState(null),de=i.useRef(null),Ae=i.useCallback(()=>F(!1),[]),{handleMouseDown:Ne,handleClick:Oe}=Ce(Ae),Y=i.useMemo(()=>{const o=O.findIndex(r=>r.file===I);return o>=0?o:0},[I]),ze=i.useMemo(()=>O[Y]||O[0],[Y]),ke=i.useCallback(o=>{const r=o==="prev"?(Y-1+O.length)%O.length:(Y+1)%O.length;K(O[r].file)},[Y]),we=[...a.filter(o=>{if(!u)return!0;const r=u.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)),ue=p.filter(o=>{if(!A)return!0;const r=A.toLowerCase();return o.name.toLowerCase().includes(r)||o.description.toLowerCase().includes(r)||o.id.toLowerCase().includes(r)}),Me=()=>{y(null),m(!0)},Pe=o=>{y(o),m(!0)},Re=o=>{z.updateSkill(o.id,{enabled:!o.enabled})},Be=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(", ")},je=o=>{if(!o.enabled)return 0;const r=new Set;for(const w of c.values())o.assignedAgentClasses.includes(w.class)&&r.add(w.id);for(const w of o.assignedAgentIds)r.add(w);return r.size},Ee=()=>{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)]},We=()=>{L(null),M(""),P(""),G(Ee()),H(""),K("character-male-a.glb"),X([]),U(""),$(!1),_(null),t([]),R({}),te(1),ie(0),le(0),ce(0),E(null),F(!0)},Ge=o=>{var w,re,C;const r=p.find(V=>V.id===o);r&&(L(o),M(r.name),P(r.icon),G(r.color),H(r.description),K(r.model||"character-male-a.glb"),X(r.defaultSkillIds||[]),U(r.instructions||""),$(!!r.customModelPath),_(null),t(r.availableAnimations||[]),R(r.animationMapping||{}),te(r.modelScale||1),ie(((w=r.modelOffset)==null?void 0:w.x)||0),le(((re=r.modelOffset)==null?void 0:re.y)||0),ce(((C=r.modelOffset)==null?void 0:C.z)||0),E(null),F(!0))},Ie=async()=>{const o={name:S,icon:N||"🔷",color:D,description:q,defaultSkillIds:Q,instructions:Z||void 0,modelScale:B!==1?B:void 0,modelOffset:ee!==0||oe!==0||se!==0?{x:ee,y:oe,z:se}:void 0,animationMapping:Object.keys(k).length>0?k:void 0,availableAnimations:T.length>0?T:void 0};if(ae||(o.model=I,o.customModelPath=void 0),f)z.updateCustomAgentClass(f,o),b&&await he(f);else if(z.createCustomAgentClass(o),b){const r=no(S);await new Promise(w=>setTimeout(w,100)),await he(r)}F(!1)},he=async o=>{if(b){ge(!0),E(null);try{const r=await Se(me(`/api/custom-models/upload/${o}`),{method:"POST",headers:{"Content-Type":"application/octet-stream","X-Filename":b.name},body:b});if(!r.ok){const w=await r.json();throw new Error(w.error||s("tools:skills.uploadFailed"))}z.updateCustomAgentClass(o,{availableAnimations:T,animationMapping:k,modelScale:B!==1?B:void 0})}catch(r){E(r.message||s("tools:skills.failedToUploadModel")),console.error("Model upload error:",r)}finally{ge(!1)}}},Le=async o=>{var re;const r=(re=o.target.files)==null?void 0:re[0];if(!r)return;if(E(null),!await lo(r)){E(s("tools:skills.invalidGlbFile"));return}if(r.size>50*1024*1024){E(s("tools:skills.fileTooLarge"));return}try{const C=await to(r);_(r),t(C),$(!0);const V={},ye=C.map(x=>x.toLowerCase()),be=ye.findIndex(x=>x.includes("idle")||x==="static");be>=0&&(V.idle=C[be]);const fe=ye.findIndex(x=>x.includes("walk")||x.includes("run"));fe>=0&&(V.walk=C[fe]);const xe=ye.findIndex(x=>x.includes("work")||x.includes("action")||x.includes("attack")||x.includes("jump"));xe>=0&&(V.working=C[xe]),R(V)}catch(C){E(C.message||s("tools:skills.failedToParseModel")),console.error("Model parse error:",C)}o.target.value=""},De=async()=>{if(f)try{await Se(me(`/api/custom-models/${f}`),{method:"DELETE"})}catch(o){console.error("Failed to delete model:",o)}$(!1),_(null),t([]),R({}),te(1),K("character-male-a.glb")},qe=o=>{window.confirm(s("tools:skills.deleteClassConfirm"))&&z.deleteCustomAgentClass(o)},He=o=>{X(r=>r.includes(o)?r.filter(w=>w!==o):[...r,o])};return d?e.jsxs(e.Fragment,{children:[e.jsx("div",{className:"panel-overlay",onClick:g}),e.jsxs("div",{className:"skills-panel side-panel",children:[e.jsxs("div",{className:"panel-header",children:[e.jsx("h3",{children:s(l==="skills"?"tools:skills.title":"tools:skills.agentClasses")}),l==="skills"?e.jsx("button",{className:"btn btn-sm btn-primary",onClick:Me,children:s("tools:skills.newSkill")}):e.jsx("button",{className:"btn btn-sm btn-primary",onClick:We,children:s("tools:skills.newClass")}),e.jsx("button",{className:"panel-close",onClick:g,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 ${l==="skills"?"active":""}`,onClick:()=>n("skills"),style:{padding:"8px 16px",background:"transparent",border:"none",borderBottom:l==="skills"?"2px solid var(--accent-blue)":"2px solid transparent",color:l==="skills"?"var(--text-primary)":"var(--text-secondary)",cursor:"pointer",fontWeight:l==="skills"?600:400},children:[s("tools:skills.title")," (",a.length,")"]}),e.jsxs("button",{className:`panel-tab ${l==="classes"?"active":""}`,onClick:()=>n("classes"),style:{padding:"8px 16px",background:"transparent",border:"none",borderBottom:l==="classes"?"2px solid var(--accent-blue)":"2px solid transparent",color:l==="classes"?"var(--text-primary)":"var(--text-secondary)",cursor:"pointer",fontWeight:l==="classes"?600:400},children:[s("tools:skills.agentClasses")," (",p.length,")"]})]}),l==="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:u,onChange:o=>W(o.target.value),style:{width:"100%"}})}),l==="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:A,onChange:o=>J(o.target.value),style:{width:"100%"}})}),e.jsx("div",{className:"panel-content",style:{flex:1,overflowY:"auto",padding:"0 16px"},children:l==="skills"?we.length===0?e.jsx("div",{className:"empty-state",style:{textAlign:"center",padding:"40px 20px",opacity:.6},children:u?e.jsx("p",{children:s("tools:skills.noClassesMatch",{query:u})}):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:we.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:()=>Pe(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(),Re(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:Be(o)}),o.allowedTools.length>0&&e.jsx("span",{title:s("tools:skills.allowedToolsTitle"),children:s("tools:skills.toolCount",{count:o.allowedTools.length})}),o.enabled&&je(o)>0&&e.jsx("span",{style:{color:"var(--accent-green)"},children:s("tools:skills.activeOnAgents",{count:je(o)})})]})]},o.id))}):p.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")})]}):ue.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:A})})}):e.jsx("div",{className:"classes-list",style:{display:"flex",flexDirection:"column",gap:"8px",paddingTop:"12px"},children:ue.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:()=>Ge(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:o.icon}),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=O.find(w=>w.file===o.model))==null?void 0:r.name)||o.model||"Male A"]})]})]}),e.jsx("button",{className:"btn btn-sm btn-secondary",onClick:w=>{w.stopPropagation(),qe(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:l==="skills"?e.jsxs(e.Fragment,{children:[s("tools:skills.total",{count:a.length}),a.filter(o=>o.enabled).length!==a.length&&e.jsxs("span",{children:[" (",s("tools:skills.enabled",{enabledCount:a.filter(o=>o.enabled).length}),")"]})]}):e.jsx(e.Fragment,{children:s("tools:skills.customClassesCount",{count:p.length})})})})]}),e.jsx(oo,{isOpen:j,onClose:()=>m(!1),skillId:h}),v&&e.jsx("div",{className:"modal-overlay visible",onMouseDown:Ne,onClick:Oe,children:e.jsxs("div",{className:"modal skill-editor-modal",children:[e.jsx("div",{className:"modal-header",children:s(f?"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:S,onChange:o=>M(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:de,type:"file",accept:".glb",onChange:Le,style:{display:"none"}}),ae?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(ve,{customModelFile:b||void 0,customModelUrl:!b&&f?me(`/api/custom-models/${f}`):void 0,modelScale:B,modelOffset:{x:ee,y:oe,z:se},idleAnimation:k.idle!==void 0?k.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:b?`${b.name} (${co(b.size)})`:s("tools:skills.uploaded")})]}),e.jsx("button",{type:"button",onClick:De,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"),": ",B.toFixed(3),"x"]}),e.jsx("input",{type:"range",min:"0",max:"100",step:"1",value:Math.log(B/.01)/Math.log(1e4)*100,onChange:o=>{const r=parseFloat(o.target.value),w=.01*Math.pow(1e4,r/100);te(Math.round(w*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"),": ",ee.toFixed(2)]}),e.jsx("input",{type:"range",min:"-1",max:"1",step:"0.01",value:ee,onChange:o=>ie(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"),": ",oe.toFixed(2)]}),e.jsx("input",{type:"range",min:"-1",max:"1",step:"0.01",value:oe,onChange:o=>le(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"),": ",se.toFixed(2)]}),e.jsx("input",{type:"range",min:"-3",max:"3",step:"0.01",value:se,onChange:o=>ce(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:k.idle||"",onChange:o=>R(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:k.walk||"",onChange:o=>R(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:k.working||"",onChange:o=>R(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=de.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:()=>ke("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(ve,{modelFile:I,width:120,height:150}),e.jsx("div",{style:{marginTop:"8px",fontSize:"12px",fontWeight:500,color:"var(--text-primary)"},children:ze.name}),e.jsxs("div",{style:{fontSize:"10px",color:"var(--text-secondary)",marginTop:"2px"},children:[Y+1," / ",O.length]})]}),e.jsx("button",{type:"button",onClick:()=>ke("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=de.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")})]}),pe&&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:pe})]}),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")}),e.jsx(ao,{value:N,onChange:P})]}),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:D,onChange:o=>G(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:q,onChange:o=>H(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:a.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")}):a.filter(o=>o.enabled).map(o=>e.jsxs("div",{onClick:()=>He(o.id),style:{display:"flex",alignItems:"center",gap:"8px",padding:"6px 8px",borderRadius:"4px",cursor:"pointer",background:Q.includes(o.id)?"rgba(80, 250, 123, 0.15)":"transparent"},children:[e.jsx("span",{style:{width:"16px",color:"var(--dracula-green)"},children:Q.includes(o.id)?"✓":""}),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:Z,onChange:o=>U(o.target.value),placeholder:`# Agent Instructions
22
+ `;function oo({isOpen:d,onClose:g,skillId:s}){const{t:a}=Te(["tools","common"]),c=Ke(s??null),p=Ue(),l=!!c,n=(c==null?void 0:c.builtin)===!0,[h,y]=i.useState(""),[j,m]=i.useState(""),[v,F]=i.useState(""),[f,G]=i.useState(""),[u,E]=i.useState([]),[A,J]=i.useState(""),[S,M]=i.useState([]),[N,P]=i.useState([]),[D,I]=i.useState(!0),[q,H]=i.useState(!1),L=i.useRef(null),K=i.useRef(null);i.useEffect(()=>{d&&(c?(y(c.name),m(c.slug),F(c.description),G(c.content||""),E(c.allowedTools||[]),M(c.assignedAgentIds||[]),P(c.assignedAgentClasses||[]),I(c.enabled)):(y(a("tools:skills.newSkillDefault")),m(""),F(""),G(eo),E([]),M([]),P([]),I(!0)),J(""),H(!1),setTimeout(()=>{var t;return(t=L.current)==null?void 0:t.focus()},100))},[d,c]),i.useEffect(()=>{if(!l&&h){const t=h.toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-|-$/g,"").substring(0,64);m(t)}},[h,l]);const Q=t=>{if(t.preventDefault(),n&&s){z.updateSkill(s,{assignedAgentIds:S,assignedAgentClasses:N,enabled:D}),g();return}if(!h.trim()||!v.trim())return;const k={name:h.trim(),slug:j.trim()||h.toLowerCase().replace(/[^a-z0-9]+/g,"-"),description:v.trim(),content:f.trim(),allowedTools:u,assignedAgentIds:S,assignedAgentClasses:N,enabled:D};if(l&&s){if(c&&(c.name!==k.name||c.description!==k.description||c.content!==k.content||c.enabled!==k.enabled||JSON.stringify(c.allowedTools)!==JSON.stringify(k.allowedTools))&&!confirm(a("tools:skills.updateSkillConfirm")))return;z.updateSkill(s,k)}else z.createSkill(k);g()},X=()=>{s&&confirm(a("tools:skills.deleteSkillConfirm"))&&(z.deleteSkill(s),g())},Z=t=>{u.includes(t)?E(u.filter(k=>k!==t)):E([...u,t])},U=()=>{A.trim()&&!u.includes(A.trim())&&(E([...u,A.trim()]),J(""))},ae=t=>{N.includes(t)?P(N.filter(k=>k!==t)):P([...N,t])},$=t=>{S.includes(t)?M(S.filter(k=>k!==t)):M([...S,t])},b=p.filter(t=>t.class!=="boss"),{handleMouseDown:_,handleClick:T}=Ce(g);return d?e.jsx("div",{className:"modal-overlay visible",onMouseDown:_,onClick:T,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:[a(l?n?"tools:skills.viewBuiltInSkill":"tools:skills.editSkill":"tools:skills.createSkill"),n&&e.jsx("span",{style:{fontSize:"10px",background:"var(--accent-cyan)",color:"var(--bg-primary)",padding:"2px 6px",borderRadius:"3px",fontWeight:600,marginLeft:"8px"},children:a("tools:skills.builtIn")})]}),l&&!n&&e.jsx("button",{type:"button",className:"btn btn-danger btn-sm",onClick:X,style:{marginLeft:"auto",marginRight:"12px"},children:a("common:buttons.delete")})]}),e.jsxs("form",{onSubmit:Q,children:[e.jsxs("div",{className:"modal-body",style:{maxHeight:"70vh",overflowY:"auto"},children:[n&&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:a("tools:skills.builtInNotice")}),e.jsxs("div",{className:"form-section",children:[e.jsx("label",{className:"form-label",children:a("tools:skills.nameRequired")}),e.jsx("input",{ref:L,type:"text",className:"form-input",value:h,onChange:t=>y(t.target.value),placeholder:a("tools:skills.skillNamePlaceholder"),required:!0,disabled:n,style:n?{opacity:.7,cursor:"not-allowed"}:void 0})]}),e.jsxs("div",{className:"form-section",children:[e.jsx("label",{className:"form-label",children:a("tools:skills.slugLabel")}),e.jsx("input",{type:"text",className:"form-input",value:j,onChange:t=>m(t.target.value),placeholder:a("tools:skills.slugPlaceholder"),style:{fontFamily:"monospace",fontSize:"12px",...n?{opacity:.7,cursor:"not-allowed"}:{}},disabled:n}),e.jsx("small",{className:"form-hint",children:a("tools:skills.slugHint")})]}),e.jsxs("div",{className:"form-section",children:[e.jsx("label",{className:"form-label",children:a("tools:skills.descriptionRequired")}),e.jsx("textarea",{className:"form-input",value:v,onChange:t=>F(t.target.value),placeholder:a("tools:skills.skillDescPlaceholder"),rows:3,required:!0,style:{resize:"vertical",...n?{opacity:.7,cursor:"not-allowed"}:{}},disabled:n}),e.jsx("small",{className:"form-hint",children:a("tools:skills.descriptionHint")})]}),e.jsxs("div",{className:"form-section",children:[e.jsx("label",{className:"form-label",children:a("tools:skills.instructionsMarkdown")}),e.jsx("textarea",{ref:K,className:"form-input",value:f,onChange:t=>G(t.target.value),placeholder:a("tools:skills.skillContentPlaceholder"),rows:12,style:{fontFamily:"monospace",fontSize:"12px",resize:"vertical",minHeight:"200px",...n?{opacity:.7,cursor:"not-allowed"}:{}},disabled:n})]}),e.jsxs("div",{className:"form-section",children:[e.jsx("label",{className:"form-label",children:a("tools:skills.allowedTools")}),n?e.jsx("div",{style:{display:"flex",flexWrap:"wrap",gap:"4px",opacity:.7},children:u.length>0?u.map(t=>e.jsx("span",{style:{background:"var(--bg-tertiary)",padding:"2px 8px",borderRadius:"4px",fontSize:"11px"},children:t},t)):e.jsx("span",{style:{fontSize:"12px",color:"var(--text-muted)"},children:a("tools:skills.noSpecificTools")})}):e.jsxs(e.Fragment,{children:[e.jsx("div",{className:"tool-presets",style:{display:"flex",flexWrap:"wrap",gap:"6px",marginBottom:"8px"},children:Ze.map(t=>e.jsx("button",{type:"button",className:`btn btn-sm ${u.includes(t.value)?"btn-primary":"btn-secondary"}`,onClick:()=>Z(t.value),style:{fontSize:"11px",padding:"4px 8px"},children:a(t.labelKey)},t.value))}),e.jsxs("div",{style:{display:"flex",gap:"8px"},children:[e.jsx("input",{type:"text",className:"form-input",value:A,onChange:t=>J(t.target.value),placeholder:a("tools:skills.customToolPlaceholder"),style:{flex:1,fontSize:"12px"},onKeyDown:t=>{t.key==="Enter"&&(t.preventDefault(),U())}}),e.jsx("button",{type:"button",className:"btn btn-secondary btn-sm",onClick:U,children:a("common:buttons.add")})]}),u.length>0&&e.jsx("div",{style:{marginTop:"8px",display:"flex",flexWrap:"wrap",gap:"4px"},children:u.map(t=>e.jsxs("span",{className:"tag",style:{background:"var(--bg-tertiary)",padding:"2px 8px",borderRadius:"4px",fontSize:"11px",cursor:"pointer"},onClick:()=>Z(t),title:a("tools:skills.clickToRemove"),children:[t," ×"]},t))})]})]}),e.jsxs("div",{className:"form-section",children:[e.jsx("label",{className:"form-label",children:a("tools:skills.assignToClasses")}),e.jsx("small",{className:"form-hint",style:{display:"block",marginBottom:"8px"},children:a("tools:skills.allAgentsOfClasses")}),e.jsx("div",{style:{display:"grid",gridTemplateColumns:"repeat(2, 1fr)",gap:"6px"},children:Xe.map(t=>e.jsxs("button",{type:"button",className:`btn btn-sm ${N.includes(t.value)?"btn-primary":"btn-secondary"}`,onClick:()=>ae(t.value),style:{fontSize:"11px",padding:"6px 8px",textAlign:"left"},children:[e.jsx("strong",{children:a(t.labelKey)}),e.jsxs("span",{style:{opacity:.7,marginLeft:"4px"},children:["- ",a(t.descriptionKey)]})]},t.value))})]}),b.length>0&&e.jsxs("div",{className:"form-section",children:[e.jsx("label",{className:"form-label",children:a("tools:skills.assignToAgents")}),e.jsx("div",{style:{display:"flex",flexWrap:"wrap",gap:"6px"},children:b.map(t=>e.jsxs("button",{type:"button",className:`btn btn-sm ${S.includes(t.id)?"btn-primary":"btn-secondary"}`,onClick:()=>$(t.id),style:{fontSize:"11px",padding:"4px 8px"},children:[t.name,e.jsxs("span",{style:{opacity:.6,marginLeft:"4px"},children:["(",t.class,")"]})]},t.id))})]}),e.jsxs("div",{className:"form-section",children:[e.jsxs("button",{type:"button",className:"btn btn-secondary btn-sm",onClick:()=>H(!q),style:{marginBottom:"8px"},children:[a(q?"common:buttons2.hide":"common:buttons2.show")," ",a("tools:skills.advancedOptions")]}),q&&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:D,onChange:t=>I(t.target.checked)}),a("tools:skills.skillEnabled")]}),e.jsx("small",{className:"form-hint",children:a("tools:skills.disabledSkillsHint")})]})]})]}),e.jsxs("div",{className:"modal-footer",children:[e.jsx("button",{type:"button",className:"btn btn-secondary",onClick:g,children:a(n?"common:buttons.close":"common:buttons.cancel")}),!n&&e.jsx("button",{type:"submit",className:"btn btn-primary",children:a(l?"common:buttons2.saveChanges":"tools:skills.createSkill")}),n&&e.jsx("button",{type:"submit",className:"btn btn-primary",children:a("tools:skills.saveAssignments")})]})]})]})}):null}const Fe=[{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"}],so=Fe.reduce((d,g)=>(d[g.category]||(d[g.category]=[]),d[g.category].push(g),d),{}),ro=["Smileys","People","Gestures","Hearts","Animals","Nature","Weather","Food","Tools","Tech","Transport","Objects","Symbols","Flags"];function ao({value:d,onChange:g}){const[s,a]=i.useState(!1),[c,p]=i.useState(""),l=i.useRef(null);i.useEffect(()=>{function y(j){l.current&&!l.current.contains(j.target)&&a(!1)}return document.addEventListener("mousedown",y),()=>document.removeEventListener("mousedown",y)},[]);const n=i.useMemo(()=>{const y=c.trim().toLowerCase();if(!y)return ro.map(m=>({category:m,emojis:so[m]||[]})).filter(m=>m.emojis.length>0);const j=Fe.filter(m=>m.keywords.some(v=>v.includes(y))||m.emoji===y);return j.length?[{category:"Results",emojis:j}]:[]},[c]),h=y=>{g(y),a(!1),p("")};return e.jsxs("div",{ref:l,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:d,onChange:y=>g(y.target.value),placeholder:"🚀",onClick:()=>a(!0),style:{textAlign:"center",fontSize:"18px",paddingRight:"32px"}}),e.jsx("button",{type:"button",className:"emoji-picker-toggle",onClick:()=>a(!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:y=>p(y.target.value),autoFocus:!0})}),e.jsx("div",{className:"emoji-picker-grid-container",children:n.length===0?e.jsx("div",{className:"emoji-picker-empty",children:"No emojis found"}):n.map(({category:y,emojis:j})=>e.jsxs("div",{className:"emoji-picker-category",children:[e.jsx("div",{className:"emoji-picker-category-label",children:y}),e.jsx("div",{className:"emoji-picker-grid",children:j.map((m,v)=>e.jsx("button",{type:"button",className:`emoji-picker-item ${d===m.emoji?"selected":""}`,onClick:()=>h(m.emoji),title:m.keywords.slice(0,3).join(", "),children:m.emoji},`${m.emoji}-${v}`))})]},y))})]})]})}async function to(d){return new Promise((g,s)=>{const a=new FileReader;a.onload=async c=>{var l;const p=(l=c.target)==null?void 0:l.result;if(!p){s(new Error("Failed to read file"));return}try{const n=await io(p);g(n)}catch(n){s(n)}},a.onerror=()=>{s(new Error("Failed to read file"))},a.readAsArrayBuffer(d)})}async function io(d){return new Promise((g,s)=>{const a=new DataView(d);if(String.fromCharCode(a.getUint8(0),a.getUint8(1),a.getUint8(2),a.getUint8(3))!=="glTF"){s(new Error("Invalid GLB file: missing glTF magic number"));return}const p=new $e,l=new _e;l.setDecoderPath("https://www.gstatic.com/draco/versioned/decoders/1.5.7/"),p.setDRACOLoader(l),p.setMeshoptDecoder(Ye);const n=new Blob([d],{type:"model/gltf-binary"}),h=URL.createObjectURL(n);p.load(h,y=>{URL.revokeObjectURL(h),l.dispose();const j=y.animations.map(m=>m.name);j.sort((m,v)=>m.localeCompare(v)),g(j)},void 0,y=>{URL.revokeObjectURL(h),l.dispose();const j=y instanceof Error?y.message:"Unknown error";s(new Error(`Failed to parse GLB: ${j}`))})})}async function lo(d){return new Promise(g=>{if(!d.name.toLowerCase().endsWith(".glb")){g(!1);return}const s=new FileReader;s.onload=a=>{var n;const c=(n=a.target)==null?void 0:n.result;if(!c||c.byteLength<4){g(!1);return}const p=new DataView(c),l=String.fromCharCode(p.getUint8(0),p.getUint8(1),p.getUint8(2),p.getUint8(3));g(l==="glTF")},s.onerror=()=>{g(!1)},s.readAsArrayBuffer(d.slice(0,4))})}function co(d){return d<1024?`${d} B`:d<1024*1024?`${(d/1024).toFixed(1)} KB`:`${(d/(1024*1024)).toFixed(1)} MB`}function no(d){return d.toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/^-|-$/g,"").substring(0,64)}function wo({isOpen:d,onClose:g}){const{t:s}=Te(["tools","common"]),a=Ve(),c=Je(),p=Qe(),[l,n]=i.useState("skills"),[h,y]=i.useState(null),[j,m]=i.useState(!1),[v,F]=i.useState(!1),[f,G]=i.useState(null),[u,E]=i.useState(""),[A,J]=i.useState(""),[S,M]=i.useState(""),[N,P]=i.useState(""),[D,I]=i.useState("#4a9eff"),[q,H]=i.useState(""),[L,K]=i.useState("character-male-a.glb"),[Q,X]=i.useState([]),[Z,U]=i.useState(""),[ae,$]=i.useState(!1),[b,_]=i.useState(null),[T,t]=i.useState([]),[k,R]=i.useState({}),[B,te]=i.useState(1),[ee,ie]=i.useState(0),[oe,le]=i.useState(0),[se,ce]=i.useState(0),[ne,ge]=i.useState(!1),[pe,W]=i.useState(null),de=i.useRef(null),Ae=i.useCallback(()=>F(!1),[]),{handleMouseDown:Ne,handleClick:Oe}=Ce(Ae),Y=i.useMemo(()=>{const o=O.findIndex(r=>r.file===L);return o>=0?o:0},[L]),ze=i.useMemo(()=>O[Y]||O[0],[Y]),ke=i.useCallback(o=>{const r=o==="prev"?(Y-1+O.length)%O.length:(Y+1)%O.length;K(O[r].file)},[Y]),we=[...a.filter(o=>{if(!u)return!0;const r=u.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)),ue=p.filter(o=>{if(!A)return!0;const r=A.toLowerCase();return o.name.toLowerCase().includes(r)||o.description.toLowerCase().includes(r)||o.id.toLowerCase().includes(r)}),Me=()=>{y(null),m(!0)},Pe=o=>{y(o),m(!0)},Re=o=>{z.updateSkill(o.id,{enabled:!o.enabled})},Be=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(", ")},je=o=>{if(!o.enabled)return 0;const r=new Set;for(const w of c.values())o.assignedAgentClasses.includes(w.class)&&r.add(w.id);for(const w of o.assignedAgentIds)r.add(w);return r.size},We=()=>{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)]},Ee=()=>{G(null),M(""),P(""),I(We()),H(""),K("character-male-a.glb"),X([]),U(""),$(!1),_(null),t([]),R({}),te(1),ie(0),le(0),ce(0),W(null),F(!0)},Ie=o=>{var w,re,C;const r=p.find(V=>V.id===o);r&&(G(o),M(r.name),P(r.icon),I(r.color),H(r.description),K(r.model||"character-male-a.glb"),X(r.defaultSkillIds||[]),U(r.instructions||""),$(!!r.customModelPath),_(null),t(r.availableAnimations||[]),R(r.animationMapping||{}),te(r.modelScale||1),ie(((w=r.modelOffset)==null?void 0:w.x)||0),le(((re=r.modelOffset)==null?void 0:re.y)||0),ce(((C=r.modelOffset)==null?void 0:C.z)||0),W(null),F(!0))},Le=async()=>{const o={name:S,icon:N||"🔷",color:D,description:q,defaultSkillIds:Q,instructions:Z||void 0,modelScale:B!==1?B:void 0,modelOffset:ee!==0||oe!==0||se!==0?{x:ee,y:oe,z:se}:void 0,animationMapping:Object.keys(k).length>0?k:void 0,availableAnimations:T.length>0?T:void 0};if(ae||(o.model=L,o.customModelPath=void 0),f)z.updateCustomAgentClass(f,o),b&&await he(f);else if(z.createCustomAgentClass(o),b){const r=no(S);await new Promise(w=>setTimeout(w,100)),await he(r)}F(!1)},he=async o=>{if(b){ge(!0),W(null);try{const r=await Se(me(`/api/custom-models/upload/${o}`),{method:"POST",headers:{"Content-Type":"application/octet-stream","X-Filename":b.name},body:b});if(!r.ok){const w=await r.json();throw new Error(w.error||s("tools:skills.uploadFailed"))}z.updateCustomAgentClass(o,{availableAnimations:T,animationMapping:k,modelScale:B!==1?B:void 0})}catch(r){W(r.message||s("tools:skills.failedToUploadModel")),console.error("Model upload error:",r)}finally{ge(!1)}}},Ge=async o=>{var re;const r=(re=o.target.files)==null?void 0:re[0];if(!r)return;if(W(null),!await lo(r)){W(s("tools:skills.invalidGlbFile"));return}if(r.size>50*1024*1024){W(s("tools:skills.fileTooLarge"));return}try{const C=await to(r);_(r),t(C),$(!0);const V={},ye=C.map(x=>x.toLowerCase()),be=ye.findIndex(x=>x.includes("idle")||x==="static");be>=0&&(V.idle=C[be]);const fe=ye.findIndex(x=>x.includes("walk")||x.includes("run"));fe>=0&&(V.walk=C[fe]);const xe=ye.findIndex(x=>x.includes("work")||x.includes("action")||x.includes("attack")||x.includes("jump"));xe>=0&&(V.working=C[xe]),R(V)}catch(C){W(C.message||s("tools:skills.failedToParseModel")),console.error("Model parse error:",C)}o.target.value=""},De=async()=>{if(f)try{await Se(me(`/api/custom-models/${f}`),{method:"DELETE"})}catch(o){console.error("Failed to delete model:",o)}$(!1),_(null),t([]),R({}),te(1),K("character-male-a.glb")},qe=o=>{window.confirm(s("tools:skills.deleteClassConfirm"))&&z.deleteCustomAgentClass(o)},He=o=>{X(r=>r.includes(o)?r.filter(w=>w!==o):[...r,o])};return d?e.jsxs(e.Fragment,{children:[e.jsx("div",{className:"panel-overlay",onClick:g}),e.jsxs("div",{className:"skills-panel side-panel",children:[e.jsxs("div",{className:"panel-header",children:[e.jsx("h3",{children:s(l==="skills"?"tools:skills.title":"tools:skills.agentClasses")}),l==="skills"?e.jsx("button",{className:"btn btn-sm btn-primary",onClick:Me,children:s("tools:skills.newSkill")}):e.jsx("button",{className:"btn btn-sm btn-primary",onClick:Ee,children:s("tools:skills.newClass")}),e.jsx("button",{className:"panel-close",onClick:g,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 ${l==="skills"?"active":""}`,onClick:()=>n("skills"),style:{padding:"8px 16px",background:"transparent",border:"none",borderBottom:l==="skills"?"2px solid var(--accent-blue)":"2px solid transparent",color:l==="skills"?"var(--text-primary)":"var(--text-secondary)",cursor:"pointer",fontWeight:l==="skills"?600:400},children:[s("tools:skills.title")," (",a.length,")"]}),e.jsxs("button",{className:`panel-tab ${l==="classes"?"active":""}`,onClick:()=>n("classes"),style:{padding:"8px 16px",background:"transparent",border:"none",borderBottom:l==="classes"?"2px solid var(--accent-blue)":"2px solid transparent",color:l==="classes"?"var(--text-primary)":"var(--text-secondary)",cursor:"pointer",fontWeight:l==="classes"?600:400},children:[s("tools:skills.agentClasses")," (",p.length,")"]})]}),l==="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:u,onChange:o=>E(o.target.value),style:{width:"100%"}})}),l==="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:A,onChange:o=>J(o.target.value),style:{width:"100%"}})}),e.jsx("div",{className:"panel-content",style:{flex:1,overflowY:"auto",padding:"0 16px"},children:l==="skills"?we.length===0?e.jsx("div",{className:"empty-state",style:{textAlign:"center",padding:"40px 20px",opacity:.6},children:u?e.jsx("p",{children:s("tools:skills.noClassesMatch",{query:u})}):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:we.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:()=>Pe(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(),Re(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:Be(o)}),o.allowedTools.length>0&&e.jsx("span",{title:s("tools:skills.allowedToolsTitle"),children:s("tools:skills.toolCount",{count:o.allowedTools.length})}),o.enabled&&je(o)>0&&e.jsx("span",{style:{color:"var(--accent-green)"},children:s("tools:skills.activeOnAgents",{count:je(o)})})]})]},o.id))}):p.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")})]}):ue.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:A})})}):e.jsx("div",{className:"classes-list",style:{display:"flex",flexDirection:"column",gap:"8px",paddingTop:"12px"},children:ue.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:()=>Ie(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:o.icon}),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=O.find(w=>w.file===o.model))==null?void 0:r.name)||o.model||"Male A"]})]})]}),e.jsx("button",{className:"btn btn-sm btn-secondary",onClick:w=>{w.stopPropagation(),qe(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:l==="skills"?e.jsxs(e.Fragment,{children:[s("tools:skills.total",{count:a.length}),a.filter(o=>o.enabled).length!==a.length&&e.jsxs("span",{children:[" (",s("tools:skills.enabled",{enabledCount:a.filter(o=>o.enabled).length}),")"]})]}):e.jsx(e.Fragment,{children:s("tools:skills.customClassesCount",{count:p.length})})})})]}),e.jsx(oo,{isOpen:j,onClose:()=>m(!1),skillId:h}),v&&e.jsx("div",{className:"modal-overlay visible",onMouseDown:Ne,onClick:Oe,children:e.jsxs("div",{className:"modal skill-editor-modal",children:[e.jsx("div",{className:"modal-header",children:s(f?"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:S,onChange:o=>M(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:de,type:"file",accept:".glb",onChange:Ge,style:{display:"none"}}),ae?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(ve,{customModelFile:b||void 0,customModelUrl:!b&&f?me(`/api/custom-models/${f}`):void 0,modelScale:B,modelOffset:{x:ee,y:oe,z:se},idleAnimation:k.idle!==void 0?k.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:b?`${b.name} (${co(b.size)})`:s("tools:skills.uploaded")})]}),e.jsx("button",{type:"button",onClick:De,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"),": ",B.toFixed(3),"x"]}),e.jsx("input",{type:"range",min:"0",max:"100",step:"1",value:Math.log(B/.01)/Math.log(1e4)*100,onChange:o=>{const r=parseFloat(o.target.value),w=.01*Math.pow(1e4,r/100);te(Math.round(w*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"),": ",ee.toFixed(2)]}),e.jsx("input",{type:"range",min:"-1",max:"1",step:"0.01",value:ee,onChange:o=>ie(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"),": ",oe.toFixed(2)]}),e.jsx("input",{type:"range",min:"-1",max:"1",step:"0.01",value:oe,onChange:o=>le(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"),": ",se.toFixed(2)]}),e.jsx("input",{type:"range",min:"-3",max:"3",step:"0.01",value:se,onChange:o=>ce(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:k.idle||"",onChange:o=>R(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:k.walk||"",onChange:o=>R(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:k.working||"",onChange:o=>R(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=de.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:()=>ke("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(ve,{modelFile:L,width:120,height:150}),e.jsx("div",{style:{marginTop:"8px",fontSize:"12px",fontWeight:500,color:"var(--text-primary)"},children:ze.name}),e.jsxs("div",{style:{fontSize:"10px",color:"var(--text-secondary)",marginTop:"2px"},children:[Y+1," / ",O.length]})]}),e.jsx("button",{type:"button",onClick:()=>ke("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=de.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")})]}),pe&&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:pe})]}),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")}),e.jsx(ao,{value:N,onChange:P})]}),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:D,onChange:o=>I(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:q,onChange:o=>H(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:a.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")}):a.filter(o=>o.enabled).map(o=>e.jsxs("div",{onClick:()=>He(o.id),style:{display:"flex",alignItems:"center",gap:"8px",padding:"6px 8px",borderRadius:"4px",cursor:"pointer",background:Q.includes(o.id)?"rgba(80, 250, 123, 0.15)":"transparent"},children:[e.jsx("span",{style:{width:"16px",color:"var(--dracula-green)"},children:Q.includes(o.id)?"✓":""}),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:Z,onChange:o=>U(o.target.value),placeholder:`# Agent Instructions
23
23
 
24
24
  You are a specialized agent...
25
25
 
26
26
  ## Guidelines
27
27
  - Follow these rules...
28
- - Use best practices...`,style:{minHeight:"150px",resize:"vertical",fontFamily:"monospace",fontSize:"12px",lineHeight:"1.5"}})]})]}),e.jsxs("div",{className:"modal-footer",style:{display:"flex",gap:"8px",justifyContent:"flex-end",padding:"12px 16px",borderTop:"1px solid var(--border-color)"},children:[e.jsx("button",{className:"btn btn-secondary",onClick:()=>F(!1),disabled:ne,children:s("common:buttons.cancel")}),e.jsx("button",{className:"btn btn-primary",onClick:Ie,disabled:!S.trim()||ne,children:s(ne?"tools:skills.uploading":f?"common:buttons2.saveChanges":"tools:skills.createClass")})]})]})})]}):null}export{wo as SkillsPanel};
28
+ - Use best practices...`,style:{minHeight:"150px",resize:"vertical",fontFamily:"monospace",fontSize:"12px",lineHeight:"1.5"}})]})]}),e.jsxs("div",{className:"modal-footer",style:{display:"flex",gap:"8px",justifyContent:"flex-end",padding:"12px 16px",borderTop:"1px solid var(--border-color)"},children:[e.jsx("button",{className:"btn btn-secondary",onClick:()=>F(!1),disabled:ne,children:s("common:buttons.cancel")}),e.jsx("button",{className:"btn btn-primary",onClick:Le,disabled:!S.trim()||ne,children:s(ne?"tools:skills.uploading":f?"common:buttons2.saveChanges":"tools:skills.createClass")})]})]})})]}):null}export{wo as SkillsPanel};