@weppy/roblox-mcp 2.3.1 → 2.4.1

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 (53) hide show
  1. package/.claude-plugin/marketplace.json +2 -2
  2. package/CHANGELOG.md +26 -0
  3. package/README.md +4 -4
  4. package/docs/en/installation/README.md +2 -2
  5. package/docs/en/sync/overview.md +1 -1
  6. package/docs/es/README.md +4 -4
  7. package/docs/es/installation/README.md +2 -2
  8. package/docs/es/sync/overview.md +1 -1
  9. package/docs/id/README.md +4 -4
  10. package/docs/id/installation/README.md +2 -2
  11. package/docs/id/sync/overview.md +1 -1
  12. package/docs/ja/README.md +4 -4
  13. package/docs/ja/installation/README.md +2 -2
  14. package/docs/ja/sync/overview.md +1 -1
  15. package/docs/ko/README.md +4 -4
  16. package/docs/ko/installation/README.md +2 -2
  17. package/docs/ko/sync/overview.md +1 -1
  18. package/docs/pt-br/README.md +4 -4
  19. package/docs/pt-br/installation/README.md +2 -2
  20. package/docs/pt-br/sync/overview.md +1 -1
  21. package/docs/troubleshooting.md +1 -1
  22. package/llms.txt +1 -1
  23. package/package.json +1 -1
  24. package/plugins/weppy-roblox-mcp/.claude-plugin/plugin.json +1 -1
  25. package/plugins/weppy-roblox-mcp/dashboard/dist/assets/{ChangelogDetailPage-ITTDURna.js → ChangelogDetailPage-J4ikmBDz.js} +1 -1
  26. package/plugins/weppy-roblox-mcp/dashboard/dist/assets/{ChangelogPage-DjVot-60.js → ChangelogPage-CRyiyz5Q.js} +1 -1
  27. package/plugins/weppy-roblox-mcp/dashboard/dist/assets/{ConfirmModal-B1q8BGeA.js → ConfirmModal-BqqXDrdf.js} +1 -1
  28. package/plugins/weppy-roblox-mcp/dashboard/dist/assets/{ConnectionPage-D4y36l03.js → ConnectionPage-BFjleYaN.js} +1 -1
  29. package/plugins/weppy-roblox-mcp/dashboard/dist/assets/{InfoLabel-COMRAIq0.js → InfoLabel-DG5Q_c5f.js} +1 -1
  30. package/plugins/weppy-roblox-mcp/dashboard/dist/assets/{OverviewPage-DojgIxVT.js → OverviewPage-skOVAGFT.js} +1 -1
  31. package/plugins/weppy-roblox-mcp/dashboard/dist/assets/{PlaytestPage-CkEvf6XW.js → PlaytestPage-jdZTJ1qE.js} +1 -1
  32. package/plugins/weppy-roblox-mcp/dashboard/dist/assets/{PropertyDiff-r9iLxfi8.js → PropertyDiff-DGvziVFn.js} +1 -1
  33. package/plugins/weppy-roblox-mcp/dashboard/dist/assets/{SettingsPage-CEs6Ob3d.js → SettingsPage-DNmdsQlc.js} +1 -1
  34. package/plugins/weppy-roblox-mcp/dashboard/dist/assets/{StatusBadge-DHhSWmAT.js → StatusBadge-D-Jxp4ai.js} +1 -1
  35. package/plugins/weppy-roblox-mcp/dashboard/dist/assets/{SyncPage-ifjnfsNg.js → SyncPage-BTX8aTCf.js} +4 -4
  36. package/plugins/weppy-roblox-mcp/dashboard/dist/assets/TierComparison-Ct-fbCs5.js +1 -0
  37. package/plugins/weppy-roblox-mcp/dashboard/dist/assets/TierPromoProgress-CoEpWzRl.js +1 -0
  38. package/plugins/weppy-roblox-mcp/dashboard/dist/assets/ToolsPage-54vIMfZg.css +1 -0
  39. package/plugins/weppy-roblox-mcp/dashboard/dist/assets/ToolsPage-Ov5mDGFU.js +1 -0
  40. package/plugins/weppy-roblox-mcp/dashboard/dist/assets/WhatsNewPage-DZ-tJeoq.js +1 -0
  41. package/plugins/weppy-roblox-mcp/dashboard/dist/assets/WhatsNewPage-Lxgj0StO.css +1 -0
  42. package/plugins/weppy-roblox-mcp/dashboard/dist/assets/index-YfUJSF5s.css +1 -0
  43. package/plugins/weppy-roblox-mcp/dashboard/dist/assets/index-aMbdHsW4.js +147 -0
  44. package/plugins/weppy-roblox-mcp/dashboard/dist/assets/{useLiveUptime-Dco8Aiiz.js → useLiveUptime-BpIv_H68.js} +1 -1
  45. package/plugins/weppy-roblox-mcp/dashboard/dist/index.html +2 -2
  46. package/plugins/weppy-roblox-mcp/dist/index.js +80 -73
  47. package/plugins/weppy-roblox-mcp/roblox-plugin/WeppyRobloxMCP.rbxm +0 -0
  48. package/plugins/weppy-roblox-mcp/dashboard/dist/assets/TierComparison-C29caZ6C.js +0 -1
  49. package/plugins/weppy-roblox-mcp/dashboard/dist/assets/TierPromoProgress-BdEtTxkK.js +0 -1
  50. package/plugins/weppy-roblox-mcp/dashboard/dist/assets/ToolsPage-BOIC0ngW.js +0 -1
  51. package/plugins/weppy-roblox-mcp/dashboard/dist/assets/ToolsPage-BZZZ3FXe.css +0 -1
  52. package/plugins/weppy-roblox-mcp/dashboard/dist/assets/index-CQYn3Wfp.js +0 -129
  53. package/plugins/weppy-roblox-mcp/dashboard/dist/assets/index-DYnjsp-e.css +0 -1
@@ -0,0 +1 @@
1
+ import{j as s,r,a as D,D as tt,u as et,i as st,T as M}from"./index-aMbdHsW4.js";import{C as at}from"./ConfirmModal-BqqXDrdf.js";import{u as ot,T as lt}from"./TierComparison-Ct-fbCs5.js";import{T as rt}from"./TierPromoProgress-CoEpWzRl.js";import"./TierPromo.module-CAoUYgIx.js";const it="_wrapper_hzgda_2",nt="_table_hzgda_7",ct="_sortable_hzgda_32",dt="_sortArrow_hzgda_41",ut="_clickable_hzgda_52",pt="_empty_hzgda_57",ht="_expandedRow_hzgda_65",mt="_expandedCell_hzgda_74",S={wrapper:it,table:nt,sortable:ct,sortArrow:dt,clickable:ut,empty:pt,expandedRow:ht,expandedCell:mt};function xt({columns:e,data:a,sortBy:m,sortDir:b="asc",onSort:w,onRowClick:j,rowKey:E,emptyMessage:L,expandedKey:A,renderExpandedRow:v}){return s.jsx("div",{className:S.wrapper,children:s.jsxs("table",{className:S.table,children:[s.jsx("thead",{children:s.jsx("tr",{children:e.map(n=>s.jsxs("th",{style:n.width?{width:n.width}:void 0,className:n.sortable?S.sortable:void 0,onClick:n.sortable&&w?()=>w(n.key):void 0,children:[s.jsx("span",{children:n.label}),n.sortable&&m===n.key&&s.jsx("span",{className:S.sortArrow,children:b==="asc"?"▴":"▾"})]},n.key))})}),s.jsx("tbody",{children:a.length===0?s.jsx("tr",{children:s.jsx("td",{colSpan:e.length,className:S.empty,children:L||"No data"})}):a.map((n,C)=>{const h=E?E(n):String(C),d=A!=null&&h===A&&v?v(n):null;return s.jsxs(r.Fragment,{children:[s.jsx("tr",{className:j?S.clickable:void 0,onClick:j?()=>j(n):void 0,children:e.map(T=>s.jsx("td",{children:T.render?T.render(n):String(n[T.key]??"")},T.key))}),d&&s.jsx("tr",{className:S.expandedRow,children:s.jsx("td",{colSpan:e.length,className:S.expandedCell,children:d})})]},h)})})]})})}function bt(e){return{...e,sequenceNumber:typeof e.sequenceNumber=="number"?e.sequenceNumber:void 0,executionTimeMs:typeof e.executionTimeMs=="number"?e.executionTimeMs:void 0}}const _t=50;function ft(){const[e,a]=r.useState(null),[m,b]=r.useState(!0),[w,j]=r.useState([]),[E,L]=r.useState(0),[A,v]=r.useState(!1),[n,C]=r.useState(!0),[h,H]=r.useState(0),[d,T]=r.useState(""),B=r.useRef(null),_=r.useCallback(async()=>{b(!0);try{const f=await D.get("/api/dashboard/tool-stats");a(f)}catch{}finally{b(!1)}},[]),g=r.useCallback(async(f,P)=>{C(!0);try{const F={limit:String(_t),offset:String(f)};P&&(F.tool=P);const y=await D.get("/api/dashboard/history",F);j(y.entries.map(bt)),L(y.total),v(y.hasMore)}catch{j([]),L(0),v(!1)}finally{C(!1)}},[]),U=r.useCallback(()=>{_(),g(h,d)},[g,_,h,d]),O=r.useCallback(async()=>{await D.post("/api/dashboard/tools/history/clear"),g(h,d)},[g,h,d]),u=r.useCallback(async()=>{await D.post("/api/dashboard/tools/statistics/clear"),_()},[_]);return r.useEffect(()=>{_()},[_]),r.useEffect(()=>{g(h,d)},[g,h,d]),r.useEffect(()=>{const f=new tt;B.current=f,f.connect();const P=f.on("command",()=>{_(),g(h,d)});return()=>{P(),f.disconnect(),B.current=null}},[g,_,h,d]),{statistics:e,statsLoading:m,history:w,historyTotal:E,historyHasMore:A,historyLoading:n,historyOffset:h,historyToolFilter:d,setHistoryOffset:H,setHistoryToolFilter:T,refresh:U,clearHistory:O,clearStatistics:u}}const yt="_page_1wyl0_2",gt="_tabs_1wyl0_10",Ct="_tab_1wyl0_10",wt="_tabActive_1wyl0_34",jt="_card_1wyl0_40",Tt="_cardToolbar_1wyl0_47",kt="_sectionTitle_1wyl0_55",St="_dangerButton_1wyl0_61",Nt="_proBadge_1wyl0_71",vt="_statusOk_1wyl0_85",Bt="_statusFallback_1wyl0_94",Mt="_statusUnsupported_1wyl0_103",Et="_statusError_1wyl0_112",Lt="_tierBasic_1wyl0_122",At="_tierPro_1wyl0_126",Pt="_tierMixed_1wyl0_131",Rt="_filterRow_1wyl0_142",Ht="_filterLabel_1wyl0_149",Ft="_filterSelect_1wyl0_158",Ot="_expandedRow_1wyl0_169",$t="_expandedSection_1wyl0_174",It="_detailList_1wyl0_184",Dt="_detailItem_1wyl0_190",qt="_detailLabel_1wyl0_196",Ut="_detailValue_1wyl0_201",zt="_pre_1wyl0_206",Wt="_pagination_1wyl0_223",Kt="_pageInfo_1wyl0_231",Vt="_btn_1wyl0_237",Gt="_tierDistribution_1wyl0_260",Jt="_tierBarWrap_1wyl0_264",Zt="_tierBarBasic_1wyl0_272",Qt="_tierBarPro_1wyl0_277",Xt="_tierLabels_1wyl0_282",Yt="_statsTableWrap_1wyl0_291",te="_statsTable_1wyl0_291",ee="_sortableHeader_1wyl0_322",se="_sortArrow_1wyl0_327",ae="_statsToolRow_1wyl0_331",oe="_statsActionRow_1wyl0_339",le="_expandButton_1wyl0_343",re="_expandIcon_1wyl0_355",ie="_actionLabel_1wyl0_360",ne="_emptyStats_1wyl0_367",ce="_summaryLine_1wyl0_373",o={page:yt,tabs:gt,tab:Ct,tabActive:wt,card:jt,cardToolbar:Tt,sectionTitle:kt,dangerButton:St,proBadge:Nt,statusOk:vt,statusFallback:Bt,statusUnsupported:Mt,statusError:Et,tierBasic:Lt,tierPro:At,tierMixed:Pt,filterRow:Rt,filterLabel:Ht,filterSelect:Ft,expandedRow:Ot,expandedSection:$t,detailList:It,detailItem:Dt,detailLabel:qt,detailValue:Ut,pre:zt,pagination:Wt,pageInfo:Kt,btn:Vt,tierDistribution:Gt,tierBarWrap:Jt,tierBarBasic:Zt,tierBarPro:Qt,tierLabels:Xt,statsTableWrap:Yt,statsTable:te,sortableHeader:ee,sortArrow:se,statsToolRow:ae,statsActionRow:oe,expandButton:le,expandIcon:re,actionLabel:ie,emptyStats:ne,summaryLine:ce},z=50;function de(e){const a=new Date(e);return`${String(a.getHours()).padStart(2,"0")}:${String(a.getMinutes()).padStart(2,"0")}:${String(a.getSeconds()).padStart(2,"0")}`}function q(e){return typeof e!="number"||!Number.isFinite(e)?"-":e<1e3?`${e}ms`:`${(e/1e3).toFixed(1)}s`}function R(e,a){return a==="pro"?e("tier.pro","Pro"):a==="mixed"?e("tier.mixed","Mixed"):e("tier.basic","Basic")}function J(e,a){return a!==e&&a.startsWith(`${e}_`)?a.slice(e.length+1):""}function ue(e,a){const m=J(e,a);return m?`${e}.${m}`:e}function G(e){return typeof e=="string"&&e.length>0?e:void 0}function pe(e){if(!Array.isArray(e))return;const a=e.filter(m=>typeof m=="string"&&m.length>0);return a.length>0?a:void 0}function he(e){const a=e.result??{};return{requestedCommand:e.requestedCommand??G(a.requestedCommand),executedCommand:e.executedCommand??G(a.executedCommand),alternatives:e.alternatives??pe(a.alternatives)}}function me(e,a){switch(e.status){case"fallback":return{label:a("tools.badge.fallback","FALLBACK"),tooltip:a("tools.badge.fallback.tooltip","The requested Pro action succeeded via a Basic fallback."),className:o.statusFallback};case"unsupported":return{label:a("tools.badge.unsupported","UNSUPPORTED"),tooltip:a("tools.badge.unsupported.tooltip","The requested Pro action was blocked and no fallback ran."),className:o.statusUnsupported};case"error":return{label:a("tools.badge.err","FAILED"),tooltip:a("tools.badge.err.tooltip","The tool run failed."),className:o.statusError};default:return{label:a("tools.status.ok","OK"),tooltip:a("tools.status.ok.tooltip","The tool run completed successfully."),className:o.statusOk}}}function N(e,a){return s.jsxs("div",{className:o.detailItem,children:[s.jsx("span",{className:o.detailLabel,children:e}),s.jsx("span",{className:o.detailValue,children:a})]})}function Ce(){const{t:e}=et(),a=ft(),{show:m}=st(),b=ot(),[w,j]=r.useState("history"),[E,L]=r.useState(null),[A,v]=r.useState(null),[n,C]=r.useState(null),[h,H]=r.useState(!1),[d,T]=r.useState("totalCalls"),[B,_]=r.useState("desc"),g=r.useCallback(t=>{T(l=>l===t?(_(i=>i==="asc"?"desc":"asc"),t):(_("desc"),t))},[]),U=r.useMemo(()=>{var l;const t=new Set;return Object.keys(((l=a.statistics)==null?void 0:l.tools)??{}).forEach(i=>t.add(i)),a.history.forEach(i=>{i.tool&&t.add(i.tool)}),a.historyToolFilter&&t.add(a.historyToolFilter),Array.from(t).sort()},[a.history,a.historyToolFilter,a.statistics]),O=r.useMemo(()=>{var t;return(t=a.statistics)!=null&&t.tools?Object.values(a.statistics.tools).map(l=>{var V;const i=Object.entries(l.commands??{}).map(([p,c])=>({toolName:l.tool,commandName:c.command??p,label:J(l.tool,c.command??p)||(c.command??p),tier:c.tier,totalCalls:c.totalCalls,successCount:c.successCount,fallbackCount:c.fallbackCount,unsupportedCount:c.unsupportedCount,failureCount:c.failureCount,totalExecutionTimeMs:c.totalExecutionTimeMs,avgExecutionTimeMs:c.avgExecutionTimeMs})),x=i.reduce((p,c)=>p+c.totalCalls,0),k=i.reduce((p,c)=>p+c.successCount,0),$=i.reduce((p,c)=>p+c.fallbackCount,0),I=i.reduce((p,c)=>p+c.unsupportedCount,0),X=i.reduce((p,c)=>p+c.failureCount,0),K=i.reduce((p,c)=>p+c.totalExecutionTimeMs,0),Y=new Set(i.map(p=>p.tier)).size>1?"mixed":((V=i[0])==null?void 0:V.tier)??l.tier;return{toolName:l.tool,tier:Y,commands:i,totalCalls:x,successCount:k,fallbackCount:$,unsupportedCount:I,failureCount:X,totalExecutionTimeMs:K,avgExecutionTimeMs:x>0?Math.round(K/x):0}}):[]},[a.statistics]),u=r.useCallback((t,l,i,x)=>s.jsx(M,{text:e(i,x),children:e(t,l)}),[e]),f=r.useMemo(()=>[...O].sort((l,i)=>{const x=l[d],k=i[d];if(typeof x=="number"&&typeof k=="number")return B==="asc"?x-k:k-x;const $=String(x??""),I=String(k??"");return B==="asc"?$.localeCompare(I):I.localeCompare($)}),[O,d,B]),P=r.useMemo(()=>[{key:"timestamp",label:u("tools.col.time","Time","tools.col.time.tooltip","When the tool run was recorded."),width:"80px",render:t=>de(t.timestamp)},{key:"toolName",label:u("tools.col.toolAction","Tool.Action","tools.col.toolAction.tooltip","Tool name and action that were executed."),render:t=>s.jsxs("span",{children:[ue(t.tool,t.command),t.tier==="pro"&&s.jsx(M,{text:e("tools.badge.pro.tooltip","This entry used a Pro-only tool or action."),children:s.jsx("span",{className:o.proBadge,children:e("tools.badge.pro","PRO")})})]})},{key:"executionTimeMs",label:u("tools.col.duration","Duration","tools.col.duration.tooltip","How long the tool took to finish."),width:"80px",render:t=>q(t.executionTimeMs)},{key:"status",label:u("tools.col.status","Status","tools.col.status.tooltip","Outcome of the recorded tool run."),width:"120px",render:t=>{const l=me(t,e);return s.jsx(M,{text:l.tooltip,children:s.jsx("span",{className:l.className,children:l.label})})}},{key:"tier",label:u("tools.col.tier","Tier","tools.col.tier.tooltip","License tier required for the tool or action."),width:"60px",render:t=>s.jsx("span",{className:t.tier==="pro"?o.tierPro:o.tierBasic,children:R(e,t.tier)})}],[e,u]),F=r.useMemo(()=>[{key:"toolName",label:u("tools.col.tool","Tool","tools.col.tool.tooltip","Consolidated tool name in the statistics table."),sortable:!0},{key:"totalCalls",label:u("tools.col.calls","Calls","tools.col.calls.tooltip","Total number of recorded calls for this tool."),sortable:!0,width:"70px"},{key:"successCount",label:u("tools.col.ok","OK","tools.col.ok.tooltip","Number of direct successful runs."),sortable:!0,width:"70px"},{key:"fallbackCount",label:u("tools.col.fallback","FALLBACK","tools.col.fallback.tooltip","Number of runs that succeeded through fallback execution."),sortable:!0,width:"110px"},{key:"unsupportedCount",label:u("tools.col.unsupported","UNSUPPORTED","tools.col.unsupported.tooltip","Number of blocked runs without fallback execution."),sortable:!0,width:"130px"},{key:"failureCount",label:u("tools.col.err","FAILED","tools.col.err.tooltip","Number of runs that failed."),sortable:!0,width:"70px"},{key:"avgExecutionTimeMs",label:u("tools.col.avgTime","Avg Time","tools.col.avgTime.tooltip","Average execution time across recorded calls."),sortable:!0,width:"90px",render:t=>q(t.avgExecutionTimeMs)},{key:"tier",label:u("tools.col.tier","Tier","tools.col.tierStats.tooltip","Basic, Pro, or Mixed summary for the tool statistics row."),sortable:!0,width:"70px",render:t=>s.jsx(M,{text:t.tier==="mixed"?e("tools.tier.mixed.tooltip","This tool includes both Basic and Pro actions."):"",children:s.jsx("span",{className:t.tier==="pro"?o.tierPro:t.tier==="mixed"?o.tierMixed:o.tierBasic,children:R(e,t.tier)})})}],[e,u]),y=r.useMemo(()=>{if(!a.statistics)return null;const t=a.statistics.tierSummary.basic.totalCalls,l=a.statistics.tierSummary.pro.totalCalls,i=t+l;if(i===0)return null;const x=Math.round(t/i*100),k=100-x;return{basic:t,pro:l,basicPct:x,proPct:k}},[a.statistics]),W=r.useCallback(t=>{v(l=>l===t?null:t)},[]),Z=r.useCallback(async()=>{if(n){H(!0);try{n==="history"?await a.clearHistory():await a.clearStatistics(),m(e("toast.clearSuccess","Cleared successfully"),"success"),C(null)}catch{m(e("toast.clearFailed","Failed to clear data"),"error")}finally{H(!1)}}},[n,m,e,a]),Q=r.useCallback(t=>{const l=he(t);return s.jsxs("div",{className:o.expandedRow,children:[s.jsxs("div",{className:o.expandedSection,children:[s.jsxs("strong",{children:[s.jsx(M,{text:e("tools.detail.params.tooltip","Input parameters passed to this tool run."),children:e("tools.detail.params","Parameters")}),":"]}),s.jsx("pre",{className:o.pre,children:JSON.stringify(t.parameters,null,2)})]}),t.result&&s.jsxs("div",{className:o.expandedSection,children:[s.jsxs("strong",{children:[s.jsx(M,{text:e("tools.detail.result.tooltip","Returned result payload for this tool run."),children:e("tools.detail.result","Result")}),":"]}),s.jsx("pre",{className:o.pre,children:JSON.stringify(t.result,null,2)})]}),(t.status==="fallback"||t.status==="unsupported"||t.status==="error")&&s.jsx("div",{className:o.expandedSection,children:s.jsxs("div",{className:o.detailList,children:[t.status==="fallback"&&(l==null?void 0:l.requestedCommand)&&N(e("tools.detail.requestedCommand","Requested Command"),l.requestedCommand),t.status==="fallback"&&(l==null?void 0:l.executedCommand)&&N(e("tools.detail.executedCommand","Executed Command"),l.executedCommand),t.status==="fallback"&&(l==null?void 0:l.alternatives)&&N(e("tools.detail.alternatives","Alternatives"),l.alternatives.join(", ")),t.status==="unsupported"&&t.blockedMessage&&N(e("tools.detail.blockedMessage","Blocked Reason"),t.blockedMessage),t.status==="unsupported"&&N(e("tools.detail.noFallback","No Fallback"),e("tools.detail.noFallback.value","No fallback ran.")),t.status==="error"&&t.errorMessage&&N(e("tools.detail.errorMessage","Error Message"),t.errorMessage),t.status==="error"&&t.blockedMessage&&N(e("tools.detail.blockedMessage","Blocked Reason"),t.blockedMessage),t.status==="error"&&t.fallbackCommand&&N(e("tools.detail.executedCommand","Executed Command"),t.fallbackCommand)]})})]})},[e]);return s.jsxs("div",{className:o.page,children:[s.jsx("div",{className:o.tabs,children:["history","statistics"].map(t=>s.jsx("button",{className:`${o.tab} ${w===t?o.tabActive:""}`,onClick:()=>j(t),children:e(`tools.tab.${t}`,t.charAt(0).toUpperCase()+t.slice(1))},t))}),w==="history"&&s.jsxs("div",{className:o.card,children:[s.jsxs("div",{className:o.cardToolbar,children:[s.jsx("div",{className:o.sectionTitle,children:e("tools.tab.history","History")}),s.jsx("button",{className:o.dangerButton,onClick:()=>C("history"),children:e("common.clear","Clear")})]}),s.jsx("div",{className:o.filterRow,children:s.jsxs("label",{className:o.filterLabel,children:[e("tools.filter.tool","Tool"),":",s.jsxs("select",{className:o.filterSelect,value:a.historyToolFilter,onChange:t=>{a.setHistoryToolFilter(t.target.value),a.setHistoryOffset(0)},children:[s.jsx("option",{value:"",children:e("tools.filter.all","All")}),U.map(t=>s.jsx("option",{value:t,children:t},t))]})]})}),s.jsx(xt,{columns:P,data:a.history,rowKey:t=>t.id,onRowClick:t=>L(l=>l===t.id?null:t.id),emptyMessage:e("tools.empty.history","No history entries"),expandedKey:E,renderExpandedRow:Q}),s.jsxs("div",{className:o.pagination,children:[s.jsx("button",{className:o.btn,disabled:a.historyOffset===0,title:e("tools.page.prev.tooltip","Go to the previous page of tool history results."),onClick:()=>a.setHistoryOffset(Math.max(0,a.historyOffset-z)),children:e("tools.page.prev","Prev")}),s.jsxs("span",{className:o.pageInfo,children:[a.historyOffset+1,"–",Math.min(a.historyOffset+z,a.historyTotal)," / ",a.historyTotal]}),s.jsx("button",{className:o.btn,disabled:!a.historyHasMore,title:e("tools.page.next.tooltip","Go to the next page of tool history results."),onClick:()=>a.setHistoryOffset(a.historyOffset+z),children:e("tools.page.next","Next")})]})]}),w==="statistics"&&s.jsxs("div",{className:o.card,children:[s.jsxs("div",{className:o.cardToolbar,children:[s.jsx("div",{className:o.sectionTitle,children:e("tools.tab.statistics","Statistics")}),s.jsx("button",{className:o.dangerButton,onClick:()=>C("statistics"),children:e("common.clear","Clear")})]}),y&&s.jsxs("div",{className:o.tierDistribution,children:[s.jsxs("div",{className:o.tierBarWrap,children:[s.jsx("div",{className:o.tierBarBasic,style:{width:`${y.basicPct}%`}}),s.jsx("div",{className:o.tierBarPro,style:{width:`${y.proPct}%`}})]}),s.jsxs("div",{className:o.tierLabels,children:[s.jsxs("span",{children:[R(e,"basic")," ",y.basicPct,"% (",y.basic,")"]}),s.jsxs("span",{children:[R(e,"pro")," ",y.proPct,"% (",y.pro,")"]})]})]}),s.jsx("div",{className:o.statsTableWrap,children:s.jsxs("table",{className:o.statsTable,children:[s.jsx("thead",{children:s.jsx("tr",{children:F.map(t=>s.jsxs("th",{style:t.width?{width:t.width}:void 0,className:t.sortable?o.sortableHeader:void 0,onClick:t.sortable?()=>g(t.key):void 0,children:[s.jsx("span",{children:t.label}),t.sortable&&d===t.key&&s.jsx("span",{className:o.sortArrow,children:B==="asc"?"▴":"▾"})]},t.key))})}),s.jsx("tbody",{children:f.length===0?s.jsx("tr",{children:s.jsx("td",{colSpan:F.length,className:o.emptyStats,children:e("tools.empty.stats","No tool statistics")})}):f.map(t=>{const l=A===t.toolName;return s.jsxs(r.Fragment,{children:[s.jsxs("tr",{className:o.statsToolRow,onClick:()=>W(t.toolName),children:[s.jsx("td",{children:s.jsxs("button",{type:"button",className:o.expandButton,"aria-expanded":l,"aria-label":`${t.toolName} ${l?e("common.collapse","Collapse"):e("common.expand","Expand")}`,onClick:i=>{i.stopPropagation(),W(t.toolName)},children:[s.jsx("span",{className:o.expandIcon,"aria-hidden":"true",children:l?"▾":"▸"}),s.jsx("span",{children:t.toolName})]})}),s.jsx("td",{children:t.totalCalls}),s.jsx("td",{children:t.successCount}),s.jsx("td",{children:t.fallbackCount}),s.jsx("td",{children:t.unsupportedCount}),s.jsx("td",{children:t.failureCount}),s.jsx("td",{children:q(t.avgExecutionTimeMs)}),s.jsx("td",{children:s.jsx(M,{text:t.tier==="mixed"?e("tools.tier.mixed.tooltip","This tool includes both Basic and Pro actions."):"",children:s.jsx("span",{className:t.tier==="pro"?o.tierPro:t.tier==="mixed"?o.tierMixed:o.tierBasic,children:R(e,t.tier)})})})]}),l&&t.commands.map(i=>s.jsxs("tr",{className:o.statsActionRow,children:[s.jsx("td",{children:s.jsx("span",{className:o.actionLabel,children:i.label})}),s.jsx("td",{children:i.totalCalls}),s.jsx("td",{children:i.successCount}),s.jsx("td",{children:i.fallbackCount}),s.jsx("td",{children:i.unsupportedCount}),s.jsx("td",{children:i.failureCount}),s.jsx("td",{children:q(i.avgExecutionTimeMs)}),s.jsx("td",{children:s.jsx("span",{className:i.tier==="pro"?o.tierPro:o.tierBasic,children:R(e,i.tier)})})]},`${t.toolName}:${i.commandName}`))]},t.toolName)})})]})}),a.statistics&&s.jsxs("div",{className:o.summaryLine,children:[e("tools.summary.total","Total"),": ",a.statistics.totalCalls," ",e("tools.summary.calls","calls")," | ",e("tools.summary.sessions","Sessions"),": ",a.statistics.totalSessions]})]}),!b.loading&&b.tier==="basic"&&s.jsx(rt,{basicCalls:b.basicCalls,proCalls:b.proCalls,totalCalls:b.totalCalls,proUsagePercent:b.proUsagePercent,upgradeHref:lt.tools}),s.jsx(at,{open:n!==null,title:n==="history"?e("tools.clear.history.title","Clear history?"):e("tools.clear.statistics.title","Clear statistics?"),message:n==="history"?e("tools.clear.history.message","This permanently removes the current place tools history."):e("tools.clear.statistics.message","This permanently resets the current place tool statistics."),cancelLabel:e("common.cancel","Cancel"),confirmLabel:e("common.clear","Clear"),loading:h,onCancel:()=>!h&&C(null),onConfirm:Z})]})}export{Ce as Component};
@@ -0,0 +1 @@
1
+ import{u as x,j as e,n as u,r as p,o as h,m as w,L as m}from"./index-aMbdHsW4.js";const j="_card_1vaoq_2",v="_cardUnread_1vaoq_15",b="_cardRead_1vaoq_20",C="_topRow_1vaoq_25",T="_categoryChip_1vaoq_32",S="_versionChip_1vaoq_45",f="_date_1vaoq_57",k="_title_1vaoq_65",R="_body_1vaoq_74",q="_link_1vaoq_83",H="_newBadge_1vaoq_98",n={card:j,cardUnread:v,cardRead:b,topRow:C,categoryChip:T,versionChip:S,date:f,title:k,body:R,link:q,newBadge:H},E={release:"whatsNew.category.release",notice:"whatsNew.category.notice",deprecation:"whatsNew.category.deprecation",tip:"whatsNew.category.tip"};function y({announcement:s,isNew:d}){const{locale:i,t:c}=x(),o=d?n.cardUnread:n.cardRead,_=s.title[i]??s.title.en,l=s.body[i]??s.body.en,r=s.link?s.link.label[i]??s.link.label.en:null;return e.jsxs("div",{className:`${n.card} ${o}`,children:[e.jsxs("div",{className:n.topRow,children:[e.jsx("span",{className:n.categoryChip,children:c(E[s.category])}),s.version&&e.jsx("span",{className:n.versionChip,children:s.version}),d&&e.jsx("span",{className:n.newBadge,children:c("whatsNew.newBadge","NEW")}),e.jsx("span",{className:n.date,children:s.date})]}),e.jsx("h3",{className:n.title,children:_}),e.jsx("p",{className:n.body,children:l}),s.link&&r&&e.jsxs("a",{className:n.link,href:s.link.url,target:"_blank",rel:"noopener noreferrer",children:["↗"," ",r]})]})}const U="_page_19yl3_2",A="_pageHeader_19yl3_10",B="_pageHeaderText_19yl3_17",I="_pageTitle_19yl3_24",$="_pageSubtitle_19yl3_31",L="_settingsIcon_19yl3_38",M="_section_19yl3_67",W="_sectionTitle_19yl3_73",z="_unreadCount_19yl3_85",O="_empty_19yl3_100",Y="_divider_19yl3_108",t={page:U,pageHeader:A,pageHeaderText:B,pageTitle:I,pageSubtitle:$,settingsIcon:L,section:M,sectionTitle:W,unreadCount:z,empty:O,divider:Y};function K(){const{t:s}=x(),{readSet:d,markRead:i}=u(),c=p.useMemo(()=>{const a=[];for(const N of h)d.has(N.id)||a.push(N.id);return a},[]),o=p.useRef(c);o.current=c,p.useEffect(()=>()=>{o.current.length>0&&i(o.current)},[]);const _=p.useMemo(()=>new Set(c),[c]),l=h.filter(a=>_.has(a.id)),r=l.length>0,g=e.jsxs("div",{className:t.pageHeader,children:[e.jsxs("div",{className:t.pageHeaderText,children:[e.jsx("h1",{className:t.pageTitle,children:s("whatsNew.pageTitle","What's New")}),e.jsx("p",{className:t.pageSubtitle,children:s("whatsNew.pageSubtitle","Stay up to date with MCP changes")})]}),e.jsx(w,{text:s("sidebar.settings","Settings"),children:e.jsx(m,{to:"/settings","aria-label":s("sidebar.settings","Settings"),className:t.settingsIcon,children:"⚙️"})})]});return h.length===0?e.jsxs("div",{className:t.page,children:[g,e.jsx("p",{className:t.empty,children:s("whatsNew.empty","No announcements yet")})]}):e.jsxs("div",{className:t.page,children:[g,r&&e.jsxs("section",{className:t.section,children:[e.jsxs("h2",{className:t.sectionTitle,children:[s("whatsNew.unreadSection","Unread"),e.jsx("span",{className:t.unreadCount,children:l.length})]}),l.map(a=>e.jsx(y,{announcement:a,isNew:!0},`unread-${a.id}`))]}),r&&e.jsx("hr",{className:t.divider}),e.jsxs("section",{className:t.section,children:[e.jsx("h2",{className:t.sectionTitle,children:s("whatsNew.allSection","All Announcements")}),h.map(a=>e.jsx(y,{announcement:a,isNew:_.has(a.id)},`all-${a.id}`))]})]})}export{K as Component};
@@ -0,0 +1 @@
1
+ ._card_1vaoq_2{position:relative;display:flex;flex-direction:column;gap:8px;padding:14px 16px;border:1px solid var(--border);border-radius:var(--radius);border-left-width:3px;background:var(--bg-card)}._cardUnread_1vaoq_15{border-left-color:var(--accent)}._cardRead_1vaoq_20{border-left-color:var(--text-muted)}._topRow_1vaoq_25{display:flex;align-items:center;gap:8px;flex-wrap:wrap}._categoryChip_1vaoq_32{display:inline-flex;align-items:center;padding:2px 8px;border-radius:999px;font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.04em;background:var(--accent-dim);color:var(--accent)}._versionChip_1vaoq_45{display:inline-flex;align-items:center;padding:2px 8px;border-radius:999px;font-size:11px;font-weight:600;background:#7f8daa24;color:var(--text-secondary);font-family:var(--font-code)}._date_1vaoq_57{margin-left:auto;font-size:12px;color:var(--text-muted);white-space:nowrap}._title_1vaoq_65{margin:0;font-size:15px;font-weight:700;color:var(--text-primary);line-height:1.3}._body_1vaoq_74{font-size:13px;color:var(--text-secondary);line-height:1.5;white-space:pre-wrap;word-break:break-word}._link_1vaoq_83{display:inline-flex;align-items:center;gap:4px;font-size:13px;color:var(--accent);text-decoration:none;font-weight:600}._link_1vaoq_83:hover{text-decoration:underline}._newBadge_1vaoq_98{display:inline-flex;align-items:center;padding:1px 6px;border-radius:999px;font-size:10px;font-weight:800;letter-spacing:.06em;background:var(--error);color:#fff}._page_19yl3_2{display:flex;flex-direction:column;gap:24px;max-width:720px}._pageHeader_19yl3_10{display:flex;align-items:flex-start;justify-content:space-between;gap:16px}._pageHeaderText_19yl3_17{display:flex;flex-direction:column;gap:4px;min-width:0}._pageTitle_19yl3_24{margin:0;font-size:22px;font-weight:700;color:var(--text-primary)}._pageSubtitle_19yl3_31{margin:0;font-size:13px;color:var(--text-secondary)}._settingsIcon_19yl3_38{display:inline-flex;align-items:center;justify-content:center;width:40px;height:40px;flex-shrink:0;border:1px solid var(--border);border-radius:12px;background:var(--bg-card);color:var(--text-primary);font-size:18px;text-decoration:none;transition:border-color var(--transition),background var(--transition),color var(--transition),transform var(--transition)}._settingsIcon_19yl3_38:hover{border-color:var(--border-highlight);background:var(--accent-dim);color:var(--accent);text-decoration:none;transform:translateY(-1px)}._section_19yl3_67{display:flex;flex-direction:column;gap:12px}._sectionTitle_19yl3_73{display:flex;align-items:center;gap:8px;margin:0;font-size:14px;font-weight:700;color:var(--text-primary);text-transform:uppercase;letter-spacing:.06em}._unreadCount_19yl3_85{display:inline-flex;align-items:center;justify-content:center;min-width:20px;height:20px;padding:0 6px;border-radius:999px;font-size:11px;font-weight:700;background:var(--error);color:#fff}._empty_19yl3_100{padding:32px 0;text-align:center;font-size:14px;color:var(--text-muted)}._divider_19yl3_108{height:1px;background:var(--border);border:none;margin:0}
@@ -0,0 +1 @@
1
+ @import"https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&family=DM+Sans:wght@400;500;700&family=JetBrains+Mono:wght@400;500;700&display=swap";._container_10isu_2{position:fixed;bottom:16px;right:16px;z-index:2000;display:flex;flex-direction:column-reverse;gap:8px;pointer-events:none}._toast_10isu_14{pointer-events:auto;padding:10px 16px;border-radius:6px;font-family:var(--font-label);font-size:13px;color:#fff;box-shadow:0 4px 12px #0000004d;animation:_slideIn_10isu_1 .25s ease-out;max-width:320px}@keyframes _slideIn_10isu_1{0%{opacity:0;transform:translate(40px)}to{opacity:1;transform:translate(0)}}._success_10isu_39{background:#14532d;border-left:3px solid #22c55e}._info_10isu_44{background:#1e3a5f;border-left:3px solid #3b82f6}._warning_10isu_49{background:#78350f;border-left:3px solid #f59e0b}._error_10isu_54{background:#7f1d1d;border-left:3px solid #ef4444}._wrapper_1uzud_2{position:relative;display:inline-flex}._tooltip_1uzud_8{position:absolute;bottom:calc(100% + 6px);left:50%;transform:translate(-50%);background:var(--bg-card);border:1px solid var(--border);color:var(--text-primary);font-size:12px;padding:4px 8px;border-radius:4px;width:max-content;max-width:min(320px,calc(100vw - 32px));white-space:normal;overflow-wrap:anywhere;text-align:left;pointer-events:none;opacity:0;transition:opacity var(--transition);z-index:1000}._tooltipLeft_1uzud_30{left:0;transform:none}._tooltipRight_1uzud_35{left:auto;right:0;transform:none}._wrapper_1uzud_2:hover ._tooltip_1uzud_8{opacity:1}._sidebar_ap408_2{width:var(--sidebar-width);min-width:var(--sidebar-width);height:100%;display:flex;flex-direction:column;background:var(--bg-sidebar);-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);border-right:1px solid var(--border);padding:0 0 16px;overflow:visible;transition:width var(--transition),min-width var(--transition)}._brand_ap408_17{display:flex;align-items:center;gap:10px;padding:18px 16px 14px;border-bottom:1px solid var(--border);margin-bottom:8px}._brandIcon_ap408_26{font-size:18px;color:var(--accent);flex-shrink:0}._brandText_ap408_32{font-family:var(--font-label);font-size:14px;font-weight:700;color:var(--text-primary);letter-spacing:.02em;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}._brandTextPro_ap408_43{color:var(--pro-text);text-shadow:0 0 18px rgba(212,167,44,.18)}._nav_ap408_49{display:flex;flex-direction:column;gap:2px}._navLink_ap408_56{display:flex;align-items:center;gap:12px;padding:10px 16px;color:var(--text-secondary);text-decoration:none;font-size:14px;font-weight:500;border-left:4px solid transparent;transition:color var(--transition),background var(--transition),border-color var(--transition)}._navLink_ap408_56:hover{color:var(--text-primary);background:var(--accent-dim);text-decoration:none}._navLink_ap408_56._active_ap408_77{color:var(--accent);border-left-color:var(--accent);background:var(--accent-dim)}._navLink_ap408_56._disabled_ap408_84{color:var(--text-muted);pointer-events:none;cursor:default}._navLink_ap408_56._disabled_ap408_84:hover{background:transparent}._icon_ap408_95{width:20px;height:20px;display:flex;align-items:center;justify-content:center;flex-shrink:0;font-size:16px}._label_ap408_106{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}._secondaryDivider_ap408_113{height:1px;margin:4px 16px;background:var(--border)}._secondaryNav_ap408_120{display:flex;flex-direction:column;gap:2px}@media(max-width:768px){._sidebar_ap408_2{width:var(--sidebar-collapsed);min-width:var(--sidebar-collapsed)}._brand_ap408_17{justify-content:center;padding:14px 0 10px}._brandText_ap408_32{display:none}._navLink_ap408_56{justify-content:center;padding:10px 0;gap:0}._label_ap408_106{display:none}}._header_uxip6_2{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;padding:18px 24px 14px;border-bottom:1px solid var(--border);background:linear-gradient(180deg,#0f1525f5,#0b0e1aeb);-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px)}._projectBlock_uxip6_14{min-width:0;display:flex;flex-direction:column;gap:4px}._projectTitleRow_uxip6_21{display:flex;align-items:center;flex-wrap:wrap;gap:14px}._label_uxip6_28{font-family:var(--font-label);font-size:11px;font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:var(--text-secondary)}._projectName_uxip6_37{min-width:0;font-size:20px;font-weight:700;color:var(--text-primary);line-height:1.1}._projectActions_uxip6_45{display:inline-flex;align-items:center;gap:8px;flex-shrink:0}._projectPath_uxip6_52{max-width:min(72vw,720px);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-family:var(--font-code);font-size:12px;color:var(--text-muted)}._projectMetaRow_uxip6_62{display:flex;align-items:baseline;gap:8px;max-width:min(72vw,720px);font-size:12px}._projectMetaLabel_uxip6_70{color:var(--text-secondary);font-family:var(--font-label);font-size:11px;letter-spacing:.06em;text-transform:uppercase}._projectMetaValue_uxip6_78{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--text-muted);font-family:var(--font-code)}._placeBadge_uxip6_87{display:inline-flex;align-items:center;gap:8px;width:fit-content;margin-top:6px;padding:6px 10px;border:1px solid var(--border);border-radius:999px;background:#0f1525e0;color:var(--text-primary);font-size:12px;font-weight:600}._placeBadgeMuted_uxip6_102{color:var(--text-secondary)}._placeIcon_uxip6_106{font-size:13px}._placeSection_uxip6_110{display:grid;gap:8px;margin-top:6px}._placeSectionHeader_uxip6_116{display:flex;align-items:center;gap:10px;flex-wrap:wrap}._placeNotice_uxip6_123,._routeNotice_uxip6_124{display:inline-flex;align-items:center;min-height:26px;padding:0 10px;border:1px solid rgba(232,184,84,.28);border-radius:999px;background:#e8b8541f;color:#f0c76a;font-size:12px;font-weight:600}._placeList_uxip6_137{display:flex;gap:10px;flex-wrap:wrap}._placeCard_uxip6_143{min-width:148px;padding:10px 12px;border:1px solid var(--border);border-radius:14px;background:#0f1525e0}._placeCardCurrent_uxip6_151{border-color:var(--border-highlight);box-shadow:0 0 0 1px #7591ff2e inset}._placeCardTop_uxip6_156{display:flex;align-items:center;justify-content:space-between;gap:10px}._placeCardName_uxip6_163{color:var(--text-primary);font-size:13px;font-weight:600}._placeCardBadge_uxip6_169{display:inline-flex;align-items:center;justify-content:center;padding:2px 8px;border-radius:999px;font-size:11px;font-weight:700}._placeCardBadgeActive_uxip6_179{background:#4bb67029;color:#7ed79d}._placeCardBadgeInactive_uxip6_184{background:#7f8daa24;color:var(--text-secondary)}._placeCardMeta_uxip6_189{margin-top:6px;color:var(--text-muted);font-family:var(--font-code);font-size:11px}._actions_uxip6_196{display:flex;align-items:center;justify-content:flex-end;gap:8px}._iconButton_uxip6_203{display:inline-flex;align-items:center;justify-content:center;width:40px;height:40px;border:1px solid var(--border);border-radius:12px;background:var(--bg-card);color:var(--text-primary);font-size:18px;text-decoration:none;transition:border-color var(--transition),background var(--transition),color var(--transition),transform var(--transition)}._iconButton_uxip6_203:hover{border-color:var(--border-highlight);background:var(--accent-dim);color:var(--accent);text-decoration:none;transform:translateY(-1px)}._iconButton_uxip6_203:disabled{cursor:not-allowed;opacity:.52;transform:none}._changeButton_uxip6_236{display:inline-flex;align-items:center;justify-content:center;min-height:42px;padding:0 16px;border:1px solid var(--border);border-radius:12px;background:#162031e6;color:var(--text-primary);font:inherit;font-size:12px;font-weight:600;line-height:1;white-space:nowrap;cursor:pointer;transition:border-color var(--transition),background var(--transition),color var(--transition),transform var(--transition)}._changeButton_uxip6_236:hover{border-color:var(--border-highlight);background:var(--accent-dim);color:var(--accent);transform:translateY(-1px)}._changeButton_uxip6_236:disabled{cursor:not-allowed;opacity:.52;transform:none}@media(max-width:768px){._header_uxip6_2{padding:14px 16px 12px}._projectTitleRow_uxip6_21{flex-direction:column;gap:10px}._projectActions_uxip6_45{gap:6px}._projectName_uxip6_37{font-size:16px}._projectPath_uxip6_52{max-width:calc(100vw - 120px)}._projectMetaRow_uxip6_62{flex-direction:column;align-items:flex-start;gap:4px;max-width:calc(100vw - 120px)}._projectMetaValue_uxip6_78{max-width:100%}}._bellWrapper_tae21_2{position:relative;display:inline-flex}._unreadDot_tae21_8{position:absolute;top:4px;right:4px;width:8px;height:8px;border-radius:50%;background:var(--error);border:2px solid var(--bg-card);pointer-events:none}._backdrop_1ct9h_1{position:fixed;top:0;right:0;bottom:0;left:0;background:#0c1018b8;display:grid;place-items:center;z-index:1000;padding:24px}._modal_1ct9h_11{width:min(420px,100%);background:#172133;border:1px solid rgba(162,179,207,.28);border-radius:18px;box-shadow:0 24px 48px #0307126b;padding:24px}._title_1ct9h_20{margin:0 0 12px;color:#f4f7fb;font-size:20px}._message_1ct9h_26{margin:0;color:#c8d2e3;line-height:1.6}._actions_1ct9h_32{display:flex;justify-content:flex-end;gap:12px;margin-top:24px}._cancelButton_1ct9h_39,._confirmButton_1ct9h_40{border:0;border-radius:10px;padding:10px 14px;font:inherit;cursor:pointer}._cancelButton_1ct9h_39{background:#8395b32e;color:#d8e0ee}._confirmButton_1ct9h_40{background:#d15454;color:#fff4f4}._cancelButton_1ct9h_39:disabled,._confirmButton_1ct9h_40:disabled{cursor:not-allowed;opacity:.6}._layout_ya8ln_2{display:flex;height:100%;overflow:hidden}._mainShell_ya8ln_8{flex:1;min-width:0;display:flex;flex-direction:column;overflow:visible}._content_ya8ln_17{flex:1 1 auto;min-height:0;overflow-y:auto;padding:24px}._loading_ya8ln_25{display:flex;align-items:center;justify-content:center;height:100%;color:var(--text-muted);font-size:14px}:root{--bg-primary: #0b0e1a;--bg-secondary: #0f1525;--bg-card: #111827;--bg-sidebar: rgba(11, 14, 26, .95);--text-primary: #e2e8f0;--text-secondary: #94a3b8;--text-muted: #475569;--accent: #3b82f6;--accent-dim: rgba(59, 130, 246, .12);--accent-glow: rgba(59, 130, 246, .25);--border: #1e293b;--border-highlight: #2563eb;--error: #ef4444;--warning: #f59e0b;--success: #22c55e;--pro-badge: #d4a72c;--pro-text: #f3d46b;--pro-bg: #3a2d12;--pro-bg-soft: rgba(212, 167, 44, .12);--pro-border: #8f6f1f;--font-code: "JetBrains Mono", "Fira Code", monospace;--font-label: "Inter", "DM Sans", -apple-system, sans-serif;--sidebar-width: 220px;--sidebar-collapsed: 56px;--radius: 10px;--radius-sm: 6px;--transition: .2s ease}@media(prefers-color-scheme:light){:root{--bg-primary: #f1f5f9;--bg-secondary: #ffffff;--bg-card: #ffffff;--bg-sidebar: rgba(255, 255, 255, .95);--text-primary: #0f172a;--text-secondary: #475569;--text-muted: #94a3b8;--accent: #2563eb;--accent-dim: rgba(37, 99, 235, .08);--accent-glow: rgba(37, 99, 235, .15);--border: #e2e8f0;--border-highlight: #3b82f6;--pro-badge: #b07c00;--pro-text: #8a5f00;--pro-bg: #fff4d6;--pro-bg-soft: rgba(176, 124, 0, .12);--pro-border: #d9b14d}}*,*:before,*:after{margin:0;padding:0;box-sizing:border-box}html,body{height:100%;font-family:var(--font-label);background:var(--bg-primary);color:var(--text-primary);line-height:1.5;-webkit-font-smoothing:antialiased}#root{height:100%}code,pre,.mono{font-family:var(--font-code)}a{color:var(--accent);text-decoration:none}a:hover{text-decoration:underline}button{font-family:inherit;cursor:pointer}::-webkit-scrollbar{width:6px;height:6px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:var(--border);border-radius:3px}