@nextclaw/ui 0.15.26 → 0.15.28

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 (125) hide show
  1. package/CHANGELOG.md +23 -0
  2. package/dist/assets/{api-CK3Fro7z.js → api-a_GaOFc7.js} +4 -4
  3. package/dist/assets/{appearance-settings-page-zqwWO8Dy.js → appearance-settings-page-KEYKkxHu.js} +1 -1
  4. package/dist/assets/{channels-list-page-CVCZBlCL.js → channels-list-page-eXLXPgKT.js} +2 -2
  5. package/dist/assets/{chat-page-D4wehRTz.js → chat-page-jfImLdsq.js} +1 -1
  6. package/dist/assets/{config-split-page-CceNFvlY.js → config-split-page-ps1Aod3g.js} +1 -1
  7. package/dist/assets/{confirm-dialog-CWeNYWZY.js → confirm-dialog-DJSUNG33.js} +2 -2
  8. package/dist/assets/desktop-update-config-C20U71k1.js +1 -0
  9. package/dist/assets/{dist-D9xtGgdL.js → dist-BkTYNzm_.js} +1 -1
  10. package/dist/assets/{dist-AYxkFx2B.js → dist-DkR7_Dpl.js} +1 -1
  11. package/dist/assets/doc-browser-DahzJEWj.js +1 -0
  12. package/dist/assets/doc-browser-Q67TOGVS.js +1 -0
  13. package/dist/assets/{doc-browser-context-Cb7Z0j90.js → doc-browser-context-BQim8SqD.js} +1 -1
  14. package/dist/assets/form-actions-B2-bpFie.js +1 -0
  15. package/dist/assets/index-BP0Hd2jI.js +109 -0
  16. package/dist/assets/index-DSLK7zgR.css +1 -0
  17. package/dist/assets/loader-circle-DyXZU92l.js +1 -0
  18. package/dist/assets/mcp-marketplace-page-B0dBE5CV.js +1 -0
  19. package/dist/assets/mcp-marketplace-page-w8panjZG.js +9 -0
  20. package/dist/assets/{model-config-page-DfOLyQqR.js → model-config-page-CJCnaKOh.js} +1 -1
  21. package/dist/assets/{navigation-link-MiiyoIjH.js → navigation-link-mpHFXwRr.js} +2 -2
  22. package/dist/assets/plus-Dhb4KuMH.js +1 -0
  23. package/dist/assets/{provider-scoped-model-input-DXzjr5l0.js → provider-scoped-model-input-Dqu-ZoWG.js} +1 -1
  24. package/dist/assets/{providers-config-page-CaO8WfZH.js → providers-config-page-C6fRN2rJ.js} +1 -1
  25. package/dist/assets/react-BlXwvOLo.js +8 -0
  26. package/dist/assets/{refresh-cw-a2VVeeAF.js → refresh-cw-JFuyDj_P.js} +1 -1
  27. package/dist/assets/remote-Xyv2c_W9.js +1 -0
  28. package/dist/assets/rotate-cw-DjbbiIW_.js +1 -0
  29. package/dist/assets/{runtime-config-page-BuA4A02z.js → runtime-config-page-CtypMgLd.js} +1 -1
  30. package/dist/assets/{save-CGm23Yww.js → save-BL8P8CLX.js} +1 -1
  31. package/dist/assets/{search-CH2t--sH.js → search-bZL75Pgc.js} +1 -1
  32. package/dist/assets/{search-config-page-BAmYqoAz.js → search-config-page-DhSFjYj4.js} +1 -1
  33. package/dist/assets/{secrets-config-page-BlPOuql_.js → secrets-config-page-BLGcyb1D.js} +2 -2
  34. package/dist/assets/security-config-DmJw9QZA.js +1 -0
  35. package/dist/assets/{select-DnxxDpcV.js → select-rUZ8nIZu.js} +2 -2
  36. package/dist/assets/{settings-2-agnMYc8a.js → settings-2-BI4SCkxQ.js} +1 -1
  37. package/dist/assets/skeleton-CVmEPG43.js +1 -0
  38. package/dist/assets/{tag-chip-CPOc8b2N.js → tag-chip-BdI_yIOA.js} +1 -1
  39. package/dist/assets/x-BcEayhV6.js +1 -0
  40. package/dist/index.html +19 -19
  41. package/package.json +6 -6
  42. package/src/app/components/layout/app-layout.tsx +38 -2
  43. package/src/app/hooks/__tests__/use-app-event-consumers.test.ts +20 -0
  44. package/src/app/hooks/use-app-event-consumers.ts +21 -0
  45. package/src/app/presenters/app.presenter.ts +6 -0
  46. package/src/features/apps/components/__tests__/app-packages-panel.test.tsx +116 -14
  47. package/src/features/apps/components/__tests__/apps-panel.test.tsx +58 -0
  48. package/src/features/apps/components/app-artwork.tsx +49 -0
  49. package/src/features/apps/components/app-marketplace-catalog.tsx +332 -0
  50. package/src/features/apps/components/app-marketplace-cover.tsx +64 -0
  51. package/src/features/apps/components/app-marketplace-detail.tsx +161 -0
  52. package/src/features/apps/components/app-marketplace-dialog.tsx +107 -217
  53. package/src/features/apps/components/app-marketplace-operation.tsx +84 -0
  54. package/src/features/apps/components/app-package-card.tsx +201 -52
  55. package/src/features/apps/components/app-packages-panel.tsx +120 -42
  56. package/src/features/apps/components/apps-panel.tsx +28 -27
  57. package/src/features/apps/hooks/use-app-marketplace.test.ts +144 -0
  58. package/src/features/apps/hooks/use-app-marketplace.ts +55 -85
  59. package/src/features/apps/hooks/use-app-packages.ts +59 -4
  60. package/src/features/apps/index.ts +1 -0
  61. package/src/features/apps/managers/__tests__/app-package-operation-settlement.manager.test.ts +81 -0
  62. package/src/features/apps/managers/app-package-operation-settlement.manager.ts +80 -0
  63. package/src/features/apps/services/app-marketplace.service.ts +223 -0
  64. package/src/features/apps/types/app-marketplace.types.ts +75 -0
  65. package/src/features/chat/features/conversation/components/__tests__/session-conversation-input.streaming.test.tsx +64 -3
  66. package/src/features/chat/features/conversation/components/session-queued-input-rows.tsx +24 -14
  67. package/src/features/chat/features/conversation/hooks/__tests__/use-session-conversation-controller.test.tsx +53 -0
  68. package/src/features/chat/features/conversation/hooks/__tests__/use-session-run-queue.test.tsx +18 -0
  69. package/src/features/chat/features/conversation/hooks/use-chat-composer-reference-intent.ts +4 -1
  70. package/src/features/chat/features/conversation/hooks/use-session-conversation-controller.ts +126 -32
  71. package/src/features/chat/features/conversation/hooks/use-session-run-queue.ts +12 -2
  72. package/src/features/chat/features/input/utils/__tests__/chat-inline-token.utils.test.ts +31 -0
  73. package/src/features/chat/features/input/utils/chat-composer-token-protocol.utils.ts +5 -0
  74. package/src/features/chat/features/input/utils/chat-inline-token-composer.utils.ts +14 -0
  75. package/src/features/chat/features/input/utils/chat-inline-token.utils.ts +25 -0
  76. package/src/features/chat/features/message/hooks/use-chat-inline-token-actions.ts +8 -1
  77. package/src/features/chat/features/workspace/components/__tests__/chat-session-workspace-panel-content.test.tsx +77 -20
  78. package/src/features/chat/features/workspace/components/chat-session-workspace-directory-browser.tsx +56 -50
  79. package/src/features/chat/features/workspace/components/project-files/workspace-directory-tree.tsx +33 -11
  80. package/src/features/chat/features/workspace/components/project-files/workspace-project-tree-view.tsx +93 -0
  81. package/src/features/chat/features/workspace/stores/__tests__/workspace-project-tree.store.test.ts +38 -0
  82. package/src/features/chat/features/workspace/stores/workspace-project-tree.store.ts +160 -0
  83. package/src/features/chat/index.ts +1 -0
  84. package/src/features/chat/managers/__tests__/chat-composer-intent.manager.test.ts +29 -0
  85. package/src/features/chat/managers/chat-composer-intent.manager.ts +29 -2
  86. package/src/features/chat/presenters/chat.presenter.ts +2 -2
  87. package/src/features/panel-apps/components/__tests__/panel-apps-list.test.tsx +1 -1
  88. package/src/features/panel-apps/components/panel-apps-list.tsx +1 -6
  89. package/src/features/right-panel-resources/utils/__tests__/right-panel-resource-uri.utils.test.ts +34 -0
  90. package/src/features/right-panel-resources/utils/right-panel-resource-uri.utils.ts +29 -0
  91. package/src/features/service-apps/components/service-apps-panel.tsx +3 -17
  92. package/src/platforms/desktop/components/desktop-app-shell.tsx +5 -0
  93. package/src/platforms/mobile/components/mobile-app-shell.tsx +9 -1
  94. package/src/shared/components/actions/__tests__/navigation-link.test.tsx +12 -0
  95. package/src/shared/components/actions/navigation-link.tsx +6 -3
  96. package/src/shared/components/doc-browser/__tests__/doc-browser.test.tsx +34 -0
  97. package/src/shared/components/doc-browser/doc-browser-tab-strip.tsx +5 -0
  98. package/src/shared/components/doc-browser/doc-browser.tsx +11 -1
  99. package/src/shared/components/doc-browser/managers/doc-browser.manager.ts +13 -0
  100. package/src/shared/components/ui/tabs.tsx +24 -1
  101. package/src/shared/hooks/use-server-path-watch.ts +42 -0
  102. package/src/shared/lib/api/server-path/server-path.types.ts +10 -0
  103. package/src/shared/lib/api/types.ts +3 -0
  104. package/src/shared/lib/api/utils/server-path.utils.ts +10 -0
  105. package/src/shared/lib/i18n/locales/en-US/chat.json +1 -0
  106. package/src/shared/lib/i18n/locales/en-US/doc-browser.json +49 -7
  107. package/src/shared/lib/i18n/locales/zh-CN/chat.json +1 -0
  108. package/src/shared/lib/i18n/locales/zh-CN/doc-browser.json +49 -7
  109. package/vite.config.ts +32 -1
  110. package/dist/assets/desktop-update-config-Dirc3bpt.js +0 -1
  111. package/dist/assets/doc-browser-4Sud6dWw.js +0 -1
  112. package/dist/assets/doc-browser-D4x_yH5F.js +0 -1
  113. package/dist/assets/form-actions-B2q4jgjE.js +0 -1
  114. package/dist/assets/index-CdyTsSBu.css +0 -1
  115. package/dist/assets/index-Das_bw2h.js +0 -107
  116. package/dist/assets/loader-circle-CpmBdaon.js +0 -1
  117. package/dist/assets/mcp-marketplace-page-CdOY3Sop.js +0 -1
  118. package/dist/assets/mcp-marketplace-page-DvjrfqEt.js +0 -9
  119. package/dist/assets/plus-C8FkjpSZ.js +0 -1
  120. package/dist/assets/react-C8XFFvuz.js +0 -8
  121. package/dist/assets/remote-BJHXa4mB.js +0 -1
  122. package/dist/assets/rotate-cw-DJ7UF3F2.js +0 -1
  123. package/dist/assets/security-config-CbDiY2xr.js +0 -1
  124. package/dist/assets/skeleton-XpqeWL62.js +0 -1
  125. package/dist/assets/x-odTHAtLZ.js +0 -1
@@ -1 +0,0 @@
1
- import{c as e}from"./dist-AYxkFx2B.js";var t=e(`LoaderCircle`,[[`path`,{d:`M21 12a9 9 0 1 1-6.219-8.56`,key:`13zald`}]]);export{t};
@@ -1 +0,0 @@
1
- import{t as e}from"./mcp-marketplace-page-DvjrfqEt.js";export{e as McpMarketplacePage};
@@ -1,9 +0,0 @@
1
- import{i as e}from"./chunk-DseTPa7n.js";import{L as t,P as n,c as r,i,l as a,o,t as s,u as c,z as l}from"./react-C8XFFvuz.js";import{$t as u,At as d,F as f,H as p,I as m,L as h,P as ee,R as g,Sn as _,Yt as te,an as v,bn as y,cn as b,en as x,nn as S,on as C,sn as w,vn as T,xn as E,yn as D,z as O}from"./api-CK3Fro7z.js";import{c as k}from"./dist-AYxkFx2B.js";import{a as A,i as j,n as M,r as N,t as P}from"./select-DnxxDpcV.js";import{a as ne,c as re,i as ie,l as ae,n as oe,o as se,r as F,s as I,t as ce}from"./confirm-dialog-CWeNYWZY.js";import"./doc-browser-4Sud6dWw.js";import{t as le}from"./loader-circle-CpmBdaon.js";import{t as L}from"./skeleton-XpqeWL62.js";import{g as ue,n as R}from"./doc-browser-context-Cb7Z0j90.js";import{t as z}from"./tag-chip-CPOc8b2N.js";var de=class extends _{constructor(e,t){super(e,t)}bindMethods(){super.bindMethods(),this.fetchNextPage=this.fetchNextPage.bind(this),this.fetchPreviousPage=this.fetchPreviousPage.bind(this)}setOptions(e){super.setOptions({...e,behavior:E()})}getOptimisticResult(e){return e.behavior=E(),super.getOptimisticResult(e)}fetchNextPage(e){return this.fetch({...e,meta:{fetchMore:{direction:`forward`}}})}fetchPreviousPage(e){return this.fetch({...e,meta:{fetchMore:{direction:`backward`}}})}createResult(e,t){let{state:n}=e,r=super.createResult(e,t),{isFetching:i,isRefetching:a,isError:o,isRefetchError:s}=r,c=n.fetchMeta?.fetchMore?.direction,l=o&&c===`forward`,u=i&&c===`forward`,d=o&&c===`backward`,f=i&&c===`backward`;return{...r,fetchNextPage:this.fetchNextPage,fetchPreviousPage:this.fetchPreviousPage,hasNextPage:D(t,n.data),hasPreviousPage:y(t,n.data),isFetchNextPageError:l,isFetchingNextPage:u,isFetchPreviousPageError:d,isFetchingPreviousPage:f,isRefetchError:s&&!l&&!d,isRefetching:a&&!u&&!f}}};function B(e,t){return b(e,de,t)}var V=k(`FileText`,[[`path`,{d:`M15 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7Z`,key:`1rqfz7`}],[`path`,{d:`M14 2v4a2 2 0 0 0 2 2h4`,key:`tnqrlb`}],[`path`,{d:`M10 9H8`,key:`b1mrlr`}],[`path`,{d:`M16 13H8`,key:`t4e002`}],[`path`,{d:`M16 17H8`,key:`z1uh3a`}]]),fe=k(`PackageCheck`,[[`path`,{d:`m16 16 2 2 4-4`,key:`gfu2re`}],[`path`,{d:`M21 10V8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73l7 4a2 2 0 0 0 2 0l2-1.14`,key:`e7tb2h`}],[`path`,{d:`m7.5 4.27 9 5.15`,key:`1c824w`}],[`polyline`,{points:`3.29 7 12 12 20.71 7`,key:`ousv84`}],[`line`,{x1:`12`,x2:`12`,y1:`22`,y2:`12`,key:`a4e8g8`}]]),pe=k(`PackageSearch`,[[`path`,{d:`M21 10V8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73l7 4a2 2 0 0 0 2 0l2-1.14`,key:`e7tb2h`}],[`path`,{d:`m7.5 4.27 9 5.15`,key:`1c824w`}],[`polyline`,{points:`3.29 7 12 12 20.71 7`,key:`ousv84`}],[`line`,{x1:`12`,x2:`12`,y1:`22`,y2:`12`,key:`a4e8g8`}],[`circle`,{cx:`18.5`,cy:`15.5`,r:`2.5`,key:`b5zd12`}],[`path`,{d:`M20.27 17.27 22 19`,key:`1l4muz`}]]),H=e(l(),1),U=t(),me=S(`rounded-2xl border px-4 py-3`,{variants:{tone:{neutral:`border-gray-200 bg-gray-50 text-gray-900`,success:`border-emerald-200 bg-emerald-50 text-emerald-900`,warning:`border-amber-200 bg-amber-50 text-amber-900`,danger:`border-rose-200 bg-rose-50 text-rose-700`,info:`border-primary/20 bg-primary/10 text-primary`},borderStyle:{solid:``,dashed:`border-dashed`}},defaultVariants:{tone:`neutral`,borderStyle:`solid`}}),he={neutral:`text-gray-900`,success:`text-emerald-800`,warning:`text-amber-900`,danger:`text-rose-700`,info:`text-primary`},ge={neutral:`text-gray-600`,success:`text-emerald-700`,warning:`text-amber-800`,danger:`text-rose-700`,info:`text-primary/90`},W=H.forwardRef(({className:e,tone:t=`neutral`,borderStyle:r=`solid`,title:i,description:a,icon:o,actions:s,children:c,...l},u)=>{let d=t??`neutral`,f=!!i||!!a||!!o||!!s;return(0,U.jsxs)(`div`,{ref:u,className:n(me({tone:d,borderStyle:r}),e),...l,children:[f?(0,U.jsxs)(`div`,{className:`flex items-start justify-between gap-3`,children:[(0,U.jsx)(`div`,{className:`min-w-0 flex-1`,children:(0,U.jsxs)(`div`,{className:`flex items-start gap-2`,children:[o?(0,U.jsx)(`div`,{className:`mt-0.5 shrink-0`,children:o}):null,(0,U.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[i?(0,U.jsx)(`p`,{className:n(`text-sm font-medium`,he[d]),children:i}):null,a?(0,U.jsx)(`p`,{className:n(i?`mt-1`:``,`text-sm leading-6`,ge[d]),children:a}):null]})]})}),s?(0,U.jsx)(`div`,{className:`shrink-0`,children:s}):null]}):null,c?(0,U.jsx)(`div`,{className:n(f?`mt-3`:``),children:c}):null]})});W.displayName=`NoticeCard`;var _e={open:!1,title:``,description:``,confirmLabel:i(`confirm`),cancelLabel:i(`cancel`),variant:`default`,resolve:null};function G(){let[e,t]=(0,H.useState)(_e),n=(0,H.useCallback)(e=>new Promise(n=>{t({open:!0,title:e.title,description:e.description??``,confirmLabel:e.confirmLabel??i(`confirm`),cancelLabel:e.cancelLabel??i(`cancel`),variant:e.variant??`default`,resolve:e=>{n(e),t(e=>({...e,open:!1,resolve:null}))}})}),[]),r=(0,H.useCallback)(e=>{t(t=>(!e&&t.resolve&&t.resolve(!1),{...t,open:e,resolve:e?t.resolve:null}))},[]);return{confirm:n,ConfirmDialog:(0,H.useCallback)(()=>(0,U.jsx)(ce,{open:e.open,onOpenChange:r,title:e.title,description:e.description||void 0,confirmLabel:e.confirmLabel,cancelLabel:e.cancelLabel,variant:e.variant,onConfirm:()=>e.resolve?.(!0),onCancel:()=>e.resolve?.(!1)}),[e,r])}}var K=(0,H.createContext)(null);function ve({children:e}){let[t,n]=(0,H.useState)(()=>r());(0,H.useEffect)(()=>c(e=>{n(e)}),[]);let i=(0,H.useCallback)(e=>{a(e),n(o())},[]),s=(0,H.useCallback)(()=>{i(t===`en`?`zh`:`en`)},[t,i]),l=(0,H.useMemo)(()=>({language:t,setLanguage:i,toggleLanguage:s}),[t,i,s]);return(0,U.jsx)(K.Provider,{value:l,children:e})}function q(){let e=(0,H.useContext)(K);if(!e)throw Error(`useI18n must be used within I18nProvider`);return{...e,t:i}}function ye(e){if(!e||e.pages.length===0)return;let t=e.pages.flatMap(e=>e.items);return{...e.pages[e.pages.length-1],items:t,pages:e.pages,loadedItems:t.length,loadedPages:e.pages.length}}function be({scope:e,isRefreshing:t,searchText:n,searchPlaceholder:r,sort:a,onSearchTextChange:o,onSortChange:s}){return(0,U.jsx)(`div`,{className:`mb-4`,children:(0,U.jsxs)(`div`,{className:`flex items-center gap-3`,children:[(0,U.jsxs)(`div`,{className:`relative min-w-0 flex-1`,children:[(0,U.jsx)(pe,{className:`absolute left-3 top-1/2 h-4 w-4 -translate-y-1/2 text-gray-400`}),(0,U.jsx)(`input`,{value:n,onChange:e=>o(e.target.value),placeholder:r,className:`h-9 w-full rounded-xl border border-border/75 bg-card pl-9 pr-9 text-sm transition-colors focus:outline-none focus:ring-0`}),t&&(0,U.jsx)(le,{className:`absolute right-3 top-1/2 h-3.5 w-3.5 -translate-y-1/2 animate-spin text-primary`,"aria-label":i(`marketplaceRefreshingResults`)})]}),e===`all`&&(0,U.jsxs)(P,{value:a,onValueChange:e=>s(e),children:[(0,U.jsx)(j,{className:`h-9 w-[150px] shrink-0 rounded-lg`,children:(0,U.jsx)(A,{})}),(0,U.jsxs)(M,{children:[(0,U.jsx)(N,{value:`relevance`,children:i(`marketplaceSortRelevance`)}),(0,U.jsx)(N,{value:`updated`,children:i(`marketplaceSortUpdated`)})]})]})]})})}function xe({count:e}){return(0,U.jsx)(U.Fragment,{children:Array.from({length:e},(e,t)=>(0,U.jsx)(`article`,{className:`h-full rounded-xl border border-gray-200/60 bg-white p-3.5 shadow-sm`,children:(0,U.jsxs)(`div`,{className:`flex items-start justify-between gap-2.5`,children:[(0,U.jsxs)(`div`,{className:`flex min-w-0 flex-1 gap-2.5`,children:[(0,U.jsx)(L,{className:`h-9 w-9 shrink-0 rounded-lg`}),(0,U.jsxs)(`div`,{className:`min-w-0 flex-1 space-y-2`,children:[(0,U.jsx)(L,{className:`h-4 w-32 max-w-[70%]`}),(0,U.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,U.jsx)(L,{className:`h-3 w-12`}),(0,U.jsx)(L,{className:`h-3 w-24`})]}),(0,U.jsx)(L,{className:`h-3 w-full`}),(0,U.jsxs)(`div`,{className:`flex gap-1.5 pt-0.5`,children:[(0,U.jsx)(L,{className:`h-5 w-14 rounded-md`}),(0,U.jsx)(L,{className:`h-5 w-16 rounded-md`}),(0,U.jsx)(L,{className:`h-5 w-12 rounded-md`})]})]})]}),(0,U.jsx)(L,{className:`h-7 w-16 shrink-0 rounded-md`})]})},`marketplace-skeleton-${t}`))})}function Se({hasMore:e,loading:t,sentinelRef:n}){return!e&&!t?null:(0,U.jsxs)(`div`,{className:`py-4`,children:[e&&(0,U.jsx)(`div`,{ref:n,className:`h-1 w-full`,"aria-hidden":`true`}),t&&(0,U.jsx)(`div`,{"data-testid":`marketplace-loading-more`,className:`pt-3 text-center text-xs text-gray-500`,children:i(`loading`)})]})}function Ce(e){let t=e.trim().toLowerCase().replace(/_/g,`-`),n=[t,t.split(`-`)[0],`en`];return Array.from(new Set(n.filter(Boolean)))}function J(e){return e.trim().toLowerCase().replace(/_/g,`-`)}function we(e,t,n){if(e){let t=Object.entries(e).map(([e,t])=>({locale:J(e),text:typeof t==`string`?t.trim():``})).filter(e=>e.text.length>0);if(t.length>0){let e=new Map(t.map(e=>[e.locale,e.text]));for(let t of n){let n=J(t),r=e.get(n);if(r)return r}for(let e of n){let n=J(e).split(`-`)[0];if(!n)continue;let r=t.find(e=>e.locale===n||e.locale.startsWith(`${n}-`));if(r)return r.text}return t[0]?.text??``}}return t?.trim()??``}function Te(e,t){if(!e)return``;for(let n of t)if(J(n).split(`-`)[0]===`zh`&&e.descriptionZh?.trim())return e.descriptionZh.trim();return e.description?.trim()?e.description.trim():e.descriptionZh?.trim()?e.descriptionZh.trim():``}function Ee(){let e=R();(0,H.useEffect)(()=>{let t=t=>{let n=t.target.closest(`a[href]`);if(!n)return;let r=n.getAttribute(`href`)||``;ue(r)&&(n.hasAttribute(`data-doc-external`)||t.ctrlKey||t.metaKey||t.shiftKey||(t.preventDefault(),t.stopPropagation(),e.open(r)))};return document.addEventListener(`click`,t,!0),()=>document.removeEventListener(`click`,t,!0)},[e])}var Y=s(e=>({entries:{},setEntry:t=>e(e=>({entries:{...e.entries,[t.id]:t}}))}));function X(e){Y.getState().setEntry(e)}function De(e){let t=e.indexOf(`:`);return t<=0||t>=e.length-1?null:{scope:e.slice(0,t),key:e.slice(t+1)}}function Oe(e){return e===`skill`||e===`skill-preview`}function ke(e){let t=Y(t=>e?t.entries[e]:void 0);return(0,H.useEffect)(()=>{if(!e||Y.getState().entries[e])return;let t=De(e);if(!t||!Oe(t.scope))return;let n=!1,r=t.key,a=i(`marketplaceTypeSkill`);return p(t.key).then(o=>{n||X({id:e,title:r,typeLabel:a,spec:t.key,status:`ready`,summary:i(`marketplaceInstalledLocalSummary`),metadataRaw:o.metadataRaw,contentRaw:o.bodyRaw||o.raw,sourceUrl:o.sourceUrl,sourceLabel:o.source?`Source (${o.source})`:void 0})}).catch(()=>{n||X({id:e,title:r,typeLabel:a,spec:t.key,status:`error`,summary:i(`marketplaceInstalledLocalSummary`),metadataRaw:JSON.stringify({skill:t.key},null,2),contentRaw:i(`marketplaceDetailUnavailableDescription`)})}),()=>{n=!0}},[e]),t}var Ae=`marketplace-detail`,je=`nextclaw://marketplace-detail`;function Me(e,t){return`${e}:${t}`}function Ne(e){return`${je}/${encodeURIComponent(e)}`}function Pe(e){try{let t=new URL(e);if(t.protocol!==`nextclaw:`||t.hostname!==`marketplace-detail`)return null;let n=t.pathname.replace(/^\//,``);return n?decodeURIComponent(n):null}catch{return null}}function Fe(e){let t=Ne(e.id);return{dedupeKey:`marketplace-detail:${e.id}`,historyPolicy:`managed`,kind:Ae,resourceUri:t,title:e.title,url:t}}function Z(e,t,n){X(t),e.openTarget(Fe(t),{activate:n?.activate,dedupeKey:`marketplace-detail:${t.id}`,title:t.title})}function Ie(e){let t=e.replace(/\r\n/g,`
2
- `).split(`
3
- `);if(t[0]?.trim()!==`---`)return e;let n=t.findIndex((e,t)=>t>0&&e.trim()===`---`);return n>0?t.slice(n+1).join(`
4
- `).trim():e}function Q(e){let t=[],n=/(`[^`]+`|\*\*[^*]+\*\*|\[[^\]]+\]\(https?:\/\/[^)\s]+\))/g,r=0,i=0;for(let a of e.matchAll(n)){if(a.index===void 0)continue;a.index>r&&t.push(e.slice(r,a.index));let n=a[0],o=`${i}-${a.index}`;if(n.startsWith("`"))t.push((0,U.jsx)(`code`,{className:`rounded border border-border bg-muted px-1 py-0.5 font-mono text-[0.88em] text-foreground`,children:n.slice(1,-1)},o));else if(n.startsWith(`**`))t.push((0,U.jsx)(`strong`,{children:n.slice(2,-2)},o));else{let e=n.match(/^\[([^\]]+)\]\((https?:\/\/[^)\s]+)\)$/);t.push(e?(0,U.jsx)(`a`,{href:e[2],target:`_blank`,rel:`noopener noreferrer`,children:e[1]},o):n)}r=a.index+n.length,i+=1}return r<e.length&&t.push(e.slice(r)),t}function Le(e){return/^(#{1,4})\s+/.test(e)||/^([-*])\s+/.test(e)||/^\d+\.\s+/.test(e)||/^>\s?/.test(e)||/^```/.test(e)}function Re(e,t,n){let r=[],i=t+1;for(;i<e.length&&!e[i]?.trim().startsWith("```");)r.push(e[i]??``),i+=1;let a=n[1]??``;return{node:(0,U.jsxs)(`div`,{className:`relative my-3 overflow-hidden rounded-lg border border-border bg-muted/70`,children:[a?(0,U.jsx)(`span`,{className:`absolute right-3 top-2 font-mono text-[10px] text-muted-foreground`,children:a}):null,(0,U.jsx)(`pre`,{className:`m-0 overflow-x-auto p-3 text-xs leading-6 text-foreground`,children:(0,U.jsx)(`code`,{children:r.join(`
5
- `)})})]},t),nextIndex:i+1}}function ze(e,t,r){let i=[],a=t,o=r?/^\d+\.\s+/:/^[-*]\s+/;for(;a<e.length&&o.test(e[a]?.trim()??``);)i.push((e[a]??``).trim().replace(o,``)),a+=1;return{node:(0,U.jsx)(r?`ol`:`ul`,{className:n(`my-2 pl-5`,r?`list-decimal`:`list-disc`),children:i.map((e,n)=>(0,U.jsx)(`li`,{className:`my-1`,children:Q(e)},`${t}-${n}`))},t),nextIndex:a}}function Be(e,t,n){let r=`mb-2 mt-5 font-semibold leading-tight text-foreground`;return e===1?(0,U.jsx)(`h1`,{className:r,children:n},t):e===2?(0,U.jsx)(`h2`,{className:r,children:n},t):e===3?(0,U.jsx)(`h3`,{className:r,children:n},t):(0,U.jsx)(`h4`,{className:r,children:n},t)}function Ve(e,t){let n=e[t]?.trim()??``,r=n.match(/^```(\S*)/);if(r)return Re(e,t,r);let i=n.match(/^(#{1,4})\s+(.+)$/);if(i)return{node:Be(Math.min(4,i[1]?.length??2),t,Q(i[2]??``)),nextIndex:t+1};if(/^[-*]\s+/.test(n))return ze(e,t,!1);if(/^\d+\.\s+/.test(n))return ze(e,t,!0);if(/^>\s?/.test(n)){let n=[],r=t;for(;r<e.length&&/^>\s?/.test(e[r]?.trim()??``);)n.push((e[r]??``).trim().replace(/^>\s?/,``)),r+=1;return{node:(0,U.jsx)(`blockquote`,{className:`my-3 rounded-lg border-l-4 border-primary/50 bg-muted/60 px-3 py-2 text-muted-foreground`,children:Q(n.join(` `))},t),nextIndex:r}}let a=[],o=t;for(;o<e.length;){let t=e[o]?.trim()??``;if(!t||Le(t))break;a.push(t),o+=1}return{node:(0,U.jsx)(`p`,{children:Q(a.join(` `))},t),nextIndex:o}}function He(e){let t=Ie(e).replace(/\r\n/g,`
6
- `).split(`
7
- `),n=[],r=0;for(;r<t.length;){if(!(t[r]??``).trim()){r+=1;continue}let e=Ve(t,r);n.push(e.node),r=e.nextIndex}return n}function Ue(e){return Array.isArray(e)?e.map(e=>Ue(e)).filter(e=>e.trim().length>0).join(`, `):e&&typeof e==`object`?``:String(e??``)}function We(e){try{let t=JSON.parse(e);return!t||typeof t!=`object`||Array.isArray(t)?[]:Object.entries(t).map(([e,t])=>({key:e,value:Ue(t)})).filter(e=>e.value.trim().length>0)}catch{return[]}}function Ge(e){return e.replace(/\r\n/g,`
8
- `).split(`
9
- `).map(e=>e.match(/^([A-Za-z0-9_.-]+):\s*(.+)$/)).filter(e=>!!e).map(e=>({key:e[1]??``,value:e[2]?.replace(/^["']|["']$/g,``)??``})).filter(e=>e.key&&e.value.trim().length>0)}function Ke(e){let t=We(e);return t.length>0?t:Ge(e)}function qe(){return(0,U.jsxs)(`div`,{className:`space-y-4 p-5`,children:[(0,U.jsxs)(`section`,{className:`rounded-xl border border-border bg-card p-5`,children:[(0,U.jsx)(L,{className:`h-7 w-1/2`}),(0,U.jsx)(L,{className:`mt-3 h-4 w-3/4`}),(0,U.jsx)(L,{className:`mt-4 h-4 w-full`}),(0,U.jsx)(L,{className:`mt-3 h-4 w-2/3`})]}),(0,U.jsxs)(`section`,{className:`grid gap-4 lg:grid-cols-[minmax(220px,0.42fr)_minmax(0,1fr)]`,children:[(0,U.jsx)(L,{className:`h-56 rounded-xl`}),(0,U.jsx)(L,{className:`h-56 rounded-xl`})]})]})}function Je({raw:e}){let t=Ke(e);return t.length===0?(0,U.jsx)(`pre`,{className:`m-0 whitespace-pre-wrap break-words font-mono text-xs leading-6`,children:e}):(0,U.jsx)(`dl`,{className:`m-0`,children:t.map(e=>(0,U.jsxs)(`div`,{className:`grid grid-cols-[minmax(104px,0.34fr)_minmax(0,1fr)] gap-3 border-b border-border/70 py-2 last:border-b-0`,children:[(0,U.jsx)(`dt`,{className:`break-words font-semibold text-primary`,children:e.key}),(0,U.jsx)(`dd`,{className:`m-0 break-words text-card-foreground`,children:e.value})]},e.key))})}function Ye({title:e,children:t}){return(0,U.jsxs)(`article`,{className:`overflow-hidden rounded-xl border border-border bg-card shadow-sm`,children:[(0,U.jsx)(`h2`,{className:`border-b border-border bg-muted/40 px-4 py-3 text-sm font-semibold text-card-foreground`,children:e}),(0,U.jsx)(`div`,{className:`p-4 text-sm leading-7 text-card-foreground`,children:t})]})}function Xe(){return(0,U.jsx)(`div`,{className:`flex h-full items-center justify-center bg-background p-6 text-center text-muted-foreground`,children:(0,U.jsxs)(`div`,{className:`max-w-sm`,children:[(0,U.jsx)(ae,{className:`mx-auto mb-3 h-7 w-7 text-muted-foreground`}),(0,U.jsx)(`h2`,{className:`text-base font-semibold text-foreground`,children:i(`marketplaceDetailUnavailableTitle`)}),(0,U.jsx)(`p`,{className:`mt-2 text-sm leading-6`,children:i(`marketplaceDetailUnavailableDescription`)})]})})}function Ze({entry:e}){let t=e.metadataRaw?.trim()||`-`,n=e.contentRaw?.trim()||`-`,r=e.summary?.trim(),a=e.description?.trim(),o=!!a&&a!==r;return(0,U.jsx)(`main`,{className:`h-full overflow-auto bg-background text-foreground custom-scrollbar`,children:(0,U.jsxs)(`div`,{className:`mx-auto max-w-[940px] space-y-4 p-5 pb-9`,children:[(0,U.jsxs)(`section`,{className:`rounded-xl border border-border bg-card p-5 shadow-sm`,children:[(0,U.jsxs)(`div`,{className:`flex items-start gap-3`,children:[(0,U.jsx)(`div`,{className:`mt-0.5 flex h-9 w-9 shrink-0 items-center justify-center rounded-lg border border-border bg-muted text-primary`,children:(0,U.jsx)(V,{className:`h-4 w-4`})}),(0,U.jsxs)(`div`,{className:`min-w-0`,children:[(0,U.jsx)(`h1`,{className:`break-words text-2xl font-semibold leading-tight text-foreground`,children:e.title}),(0,U.jsxs)(`p`,{className:`mt-2 break-words text-xs text-muted-foreground`,children:[e.typeLabel,` · `,e.spec,e.author?` · ${e.author}`:``]})]})]}),r?(0,U.jsx)(`p`,{className:`mt-4 text-sm leading-7 text-card-foreground`,children:r}):null,o?(0,U.jsx)(`p`,{className:`mt-3 text-sm leading-7 text-card-foreground`,children:a}):null,e.tags&&e.tags.length>0?(0,U.jsx)(`div`,{className:`mt-4 flex flex-wrap gap-2`,children:e.tags.map(e=>(0,U.jsx)(`span`,{className:`rounded-full border border-border bg-muted px-3 py-1 text-xs text-muted-foreground`,children:e},e))}):null,e.sourceUrl?(0,U.jsxs)(`p`,{className:`mt-4 break-all text-xs text-muted-foreground`,children:[e.sourceLabel??i(`marketplaceDetailSource`),`: `,` `,(0,U.jsx)(`a`,{href:e.sourceUrl,target:`_blank`,rel:`noopener noreferrer`,className:`font-medium text-primary hover:underline`,children:e.sourceUrl})]}):null]}),(0,U.jsxs)(`section`,{className:`grid grid-cols-[repeat(auto-fit,minmax(min(300px,100%),1fr))] gap-4`,children:[(0,U.jsx)(Ye,{title:i(`marketplaceDetailMetadata`),children:(0,U.jsx)(Je,{raw:t})}),(0,U.jsx)(Ye,{title:i(`marketplaceDetailContent`),children:(0,U.jsx)(`div`,{className:`marketplace-detail-markdown space-y-3 text-sm leading-7 text-card-foreground [&_a]:font-medium [&_a]:text-primary [&_a:hover]:underline`,children:He(n)})})]})]})})}function Qe({currentUrl:e}){let t=Pe(e),n=ke(t);return t?!n||n.status===`loading`?(0,U.jsx)(qe,{}):n.status===`error`&&!n.contentRaw?(0,U.jsx)(Xe,{}):(0,U.jsx)(Ze,{entry:n}):(0,U.jsx)(Xe,{})}var $e={[Ae]:{getTitle:e=>e.title,renderContent:({currentUrl:e})=>(0,U.jsx)(Qe,{currentUrl:e}),renderIcon:()=>(0,U.jsx)(V,{className:`h-4 w-4 text-primary`})}},et=160;function tt({disabled:e,onLoadMore:t,thresholdPx:n=et,watchValue:r}){let i=(0,H.useRef)(null),a=(0,H.useRef)(null),o=(0,H.useRef)(t),s=(0,H.useRef)(!1);return(0,H.useEffect)(()=>{o.current=t},[t]),(0,H.useEffect)(()=>{e&&(s.current=!1)},[e]),(0,H.useEffect)(()=>{let t=i.current,r=a.current;if(e||!t||!r)return;let c=()=>{s.current||e||(s.current=!0,Promise.resolve(o.current()).finally(()=>{s.current=!1}))},l=()=>{r.getBoundingClientRect().top-t.getBoundingClientRect().bottom<=n&&c()};if(typeof IntersectionObserver==`function`){let e=new IntersectionObserver(e=>{e.some(e=>e.isIntersecting)&&c()},{root:t,rootMargin:`0px 0px ${n}px 0px`});return e.observe(r),l(),()=>{e.disconnect()}}return t.addEventListener(`scroll`,l,{passive:!0}),l(),()=>{t.removeEventListener(`scroll`,l)}},[e,n,r]),{containerRef:i,sentinelRef:a}}function $(e){return(e??``).trim().toLowerCase()}function nt(e){let t=new Map;for(let n of e){let e=[n.catalogSlug,n.spec,n.id,n.label];for(let r of e){let e=$(r);!e||t.has(e)||t.set(e,n)}}return t}function rt(e,t){let n=[e.slug,e.install.spec,e.id,e.name];for(let e of n){let n=$(e);if(!n)continue;let r=t.get(n);if(r)return r}}function it(e,t,n){return we(t?.summaryI18n,t?.summary,e)||Te(n,e)||i(`marketplaceInstalledLocalSummary`)}function at(e,t){return t?.transport?t.transport.toUpperCase():(e?.install?.transportTypes??[]).map(e=>e.toUpperCase()).join(` / `)||`MCP`}function ot(e){let{item:t,record:n,localeFallbacks:r,onOpen:a,onInstall:o,onToggle:s,onDoctor:c,onRemove:l}=e,u=n,d=t?.name??n?.label??n?.id??`MCP`,f=it(r,t,n),p=at(t,n),m=u?u.enabled===!1?i(`marketplaceDisable`):i(`statusReady`):null;return(0,U.jsx)(`article`,{onClick:a,className:`cursor-pointer rounded-2xl border border-gray-200/70 bg-white p-4 shadow-sm transition hover:border-blue-300 hover:shadow-md`,children:(0,U.jsxs)(`div`,{className:`flex items-start justify-between gap-3`,children:[(0,U.jsxs)(`div`,{className:`min-w-0`,children:[(0,U.jsx)(`div`,{className:`text-sm font-semibold text-gray-900`,children:d}),(0,U.jsx)(`div`,{className:`mt-1 text-xs text-gray-500`,children:p}),(0,U.jsx)(`div`,{className:`mt-2 line-clamp-2 text-sm text-gray-600`,children:f}),(0,U.jsxs)(`div`,{className:`mt-3 flex flex-wrap gap-2`,children:[(t?.tags??[]).map(e=>(0,U.jsx)(z,{children:e},e)),m?(0,U.jsx)(z,{tone:`success`,children:m}):null]})]}),(0,U.jsxs)(`div`,{className:`flex shrink-0 flex-col gap-2`,children:[!u&&t&&o?(0,U.jsx)(x,{type:`button`,size:`sm`,variant:`primary`,className:`rounded-xl`,onClick:e=>{e.stopPropagation(),o()},children:i(`marketplaceInstall`)}):null,u?(0,U.jsxs)(U.Fragment,{children:[s?(0,U.jsx)(x,{type:`button`,size:`sm`,variant:`outline`,className:`rounded-xl border-gray-200 text-gray-700`,onClick:e=>{e.stopPropagation(),s()},children:u.enabled===!1?i(`marketplaceEnable`):i(`marketplaceDisable`)}):null,c?(0,U.jsx)(x,{type:`button`,size:`sm`,variant:`outline`,className:`rounded-xl border-blue-200 text-blue-700 hover:border-blue-300 hover:bg-blue-50 hover:text-blue-700`,onClick:e=>{e.stopPropagation(),c()},children:i(`marketplaceMcpDoctor`)}):null,l?(0,U.jsx)(x,{type:`button`,size:`sm`,variant:`outline`,className:`rounded-xl border-rose-200 text-rose-600 hover:border-rose-300 hover:bg-rose-50 hover:text-rose-600`,onClick:e=>{e.stopPropagation(),l()},children:i(`marketplaceMcpRemove`)}):null]}):null]})]})})}function st(e){let{item:t,open:n,pending:r,onOpenChange:i,onSubmit:a}=e;return(0,U.jsx)(oe,{open:n,onOpenChange:i,children:t?(0,U.jsx)(ct,{item:t,pending:r,onOpenChange:i,onSubmit:a},`${t.slug}:${n?`open`:`closed`}`):null})}function ct(e){let{item:t,pending:n,onOpenChange:r,onSubmit:a}=e,o=t.install,[s,c]=(0,H.useState)(o?.defaultName??``),[l,f]=(0,H.useState)(!0),[p,m]=(0,H.useState)(Object.fromEntries((o?.inputs??[]).map(e=>[e.id,e.defaultValue??``])));return(0,U.jsxs)(F,{children:[(0,U.jsxs)(se,{children:[(0,U.jsx)(I,{children:i(`marketplaceMcpInstallDialogTitle`)}),(0,U.jsx)(ie,{children:t.name})]}),(0,U.jsxs)(`div`,{className:`space-y-4`,children:[(0,U.jsxs)(`div`,{className:`space-y-2`,children:[(0,U.jsx)(`div`,{className:`text-sm font-medium text-gray-800`,children:i(`marketplaceMcpServerName`)}),(0,U.jsx)(u,{value:s,onChange:e=>c(e.target.value),placeholder:o?.defaultName??`mcp-server`})]}),(0,U.jsxs)(`div`,{className:`flex items-center justify-between rounded-xl border border-gray-200 px-3 py-3`,children:[(0,U.jsxs)(`div`,{children:[(0,U.jsx)(`div`,{className:`text-sm font-medium text-gray-900`,children:i(`marketplaceMcpAllAgents`)}),(0,U.jsx)(`div`,{className:`text-xs text-gray-500`,children:i(`marketplaceMcpAllAgentsDescription`)})]}),(0,U.jsx)(d,{checked:l,onCheckedChange:f})]}),(o?.inputs??[]).map(e=>(0,U.jsxs)(`div`,{className:`space-y-2`,children:[(0,U.jsx)(`div`,{className:`text-sm font-medium text-gray-800`,children:e.label}),e.description?(0,U.jsx)(`div`,{className:`text-xs text-gray-500`,children:e.description}):null,(0,U.jsx)(u,{type:e.secret?`password`:`text`,value:p[e.id]??``,onChange:t=>m(n=>({...n,[e.id]:t.target.value})),placeholder:e.defaultValue??``})]},e.id))]}),(0,U.jsxs)(ne,{children:[(0,U.jsx)(x,{variant:`outline`,onClick:()=>r(!1),disabled:n,children:i(`cancel`)}),(0,U.jsx)(x,{onClick:()=>void a({name:s,allAgents:l,inputs:p}),disabled:n||!s.trim(),children:i(n?`marketplaceInstalling`:`marketplaceInstall`)})]})]})}function lt(e){let{result:t,targetName:n,open:r,pending:a,onOpenChange:o}=e;return(0,U.jsx)(oe,{open:r,onOpenChange:o,children:(0,U.jsxs)(F,{children:[(0,U.jsxs)(se,{children:[(0,U.jsx)(I,{children:i(`marketplaceMcpDoctorTitle`)}),(0,U.jsx)(ie,{children:n??`-`})]}),a?(0,U.jsx)(`div`,{className:`text-sm text-gray-500`,children:i(`loading`)}):null,!a&&t?(0,U.jsxs)(`div`,{className:`space-y-3 text-sm text-gray-700`,children:[(0,U.jsxs)(`div`,{children:[i(`marketplaceMcpDoctorAccessible`),`:`,` `,t.accessible?i(`statusReady`):i(`marketplaceOperationFailed`)]}),(0,U.jsxs)(`div`,{children:[i(`marketplaceMcpDoctorTransport`),`:`,` `,t.transport.toUpperCase()]}),(0,U.jsxs)(`div`,{children:[i(`marketplaceMcpDoctorTools`),`: `,t.toolCount]}),t.error?(0,U.jsx)(W,{tone:`danger`,description:t.error,className:`rounded-lg`}):null]}):null]})})}function ut(e){let t=B({queryKey:[`marketplace-mcp-items`,e],initialPageParam:1,queryFn:({pageParam:t})=>h({...e,page:t}),getNextPageParam:e=>e.page<e.totalPages?e.page+1:void 0,staleTime:15e3}),n=(0,H.useMemo)(()=>ye(t.data),[t.data]);return{...t,data:n}}function dt(){return w({queryKey:[`marketplace-mcp-installed`],queryFn:()=>m(),staleTime:1e4})}function ft(){let e=T();return C({mutationFn:g,onSuccess:t=>{e.invalidateQueries({queryKey:[`marketplace-mcp-installed`]}),e.invalidateQueries({queryKey:[`marketplace-mcp-items`]}),e.invalidateQueries({queryKey:[`marketplace-mcp-doctor`]}),v.success(t.message||i(`marketplaceInstallSuccessMcp`))},onError:e=>{v.error(e.message||i(`marketplaceInstallFailed`))}})}function pt(){let e=T();return C({mutationFn:O,onSuccess:t=>{e.invalidateQueries({queryKey:[`marketplace-mcp-installed`]}),e.invalidateQueries({queryKey:[`marketplace-mcp-items`]}),e.invalidateQueries({queryKey:[`marketplace-mcp-doctor`]}),v.success(t.message||i(`marketplaceMcpManageSuccess`))},onError:e=>{v.error(e.message||i(`marketplaceOperationFailed`))}})}var mt=12;function ht(){let[e,t]=(0,H.useState)(`catalog`),[r,a]=(0,H.useState)(``),[o,s]=(0,H.useState)(``),[c,l]=(0,H.useState)(`relevance`),[u,d]=(0,H.useState)(null),[p,m]=(0,H.useState)(null),[h,g]=(0,H.useState)(null),{language:_}=q(),v=R(),{confirm:y,ConfirmDialog:b}=G(),x=(0,H.useMemo)(()=>Ce(_),[_]);(0,H.useEffect)(()=>{let e=window.setTimeout(()=>{s(r.trim())},250);return()=>window.clearTimeout(e)},[r]);let S=ut({q:o||void 0,sort:c,pageSize:mt}),w=dt(),{containerRef:T,sentinelRef:E}=tt({disabled:e!==`catalog`||S.isError||!S.hasNextPage||S.isFetchingNextPage,onLoadMore:()=>S.fetchNextPage(),watchValue:`${e}:${o}:${c}:${S.data?.loadedItems??0}:${S.data?.loadedPages??0}`});(0,H.useEffect)(()=>{let e=T.current;e&&typeof e.scrollTo==`function`&&e.scrollTo({top:0})},[T,o,e,c]);let D=ft(),O=pt(),k=C({mutationFn:ee,onSuccess:(e,t)=>{m(t),g(e)}}),A=(0,H.useMemo)(()=>nt(w.data?.records??[]),[w.data?.records]),j=(0,H.useMemo)(()=>(w.data?.records??[]).filter(e=>{let t=[e.id??``,e.label??``,e.catalogSlug??``,e.description??``,e.descriptionZh??``].join(` `).toLowerCase();return o?t.includes(o.toLowerCase()):!0}),[w.data?.records,o]),M=async(e,t)=>{let n=e?.name??t?.label??t?.id??`MCP`,r=Me(e?`mcp`:`mcp-local`,e?.slug??t?.id??t?.spec??n),a=it(x,e,t);if(!e){Z(v,{id:r,title:n,typeLabel:i(`marketplaceTypeMcp`),spec:t?.spec??`-`,status:`ready`,summary:a,metadataRaw:JSON.stringify(t??{},null,2),contentRaw:i(`marketplaceInstalledLocalSummary`),sourceUrl:t?.docsUrl,sourceLabel:i(`marketplaceDetailSource`)});return}Z(v,{id:r,title:n,typeLabel:i(`marketplaceTypeMcp`),spec:e.install.spec,status:`loading`,summary:a,tags:e.tags,author:e.author});try{let t=await f(e.slug);Z(v,{id:r,title:n,typeLabel:i(`marketplaceTypeMcp`),spec:e.install.spec,status:`ready`,summary:a,metadataRaw:t.metadataRaw||JSON.stringify(e,null,2),contentRaw:t.bodyRaw||t.raw,sourceUrl:t.sourceUrl,sourceLabel:i(`marketplaceDetailSource`),tags:e.tags,author:e.author},{activate:!1})}catch(t){Z(v,{id:r,title:n,typeLabel:i(`marketplaceTypeMcp`),spec:e.install.spec,status:`error`,summary:a,metadataRaw:JSON.stringify({error:t instanceof Error?t.message:String(t)},null,2),contentRaw:a},{activate:!1})}},N=async e=>{u&&(await D.mutateAsync({spec:u.slug,name:e.name.trim(),allAgents:e.allAgents,inputs:e.inputs}),d(null))},P=async(e,t)=>{let n=t.id||t.spec;n&&(e===`remove`&&!await y({title:`${i(`marketplaceMcpRemoveTitle`)} ${n}?`,description:i(`marketplaceMcpRemoveDescription`),confirmLabel:i(`marketplaceMcpRemove`),variant:`destructive`})||await O.mutateAsync({action:e,id:n,spec:t.spec}))},ne=[{id:`catalog`,label:i(`marketplaceMcpTabCatalog`),icon:re},{id:`installed`,label:i(`marketplaceMcpTabInstalled`),icon:fe,count:w.data?.total??0}];return(0,U.jsxs)(te,{title:i(`marketplaceMcpPageTitle`),description:i(`marketplaceMcpPageDescription`),layout:`split`,children:[(0,U.jsxs)(`div`,{className:`flex flex-col gap-3`,children:[(0,U.jsx)(`div`,{className:`flex w-fit max-w-full items-center gap-1 rounded-xl bg-muted/60 p-1`,children:ne.map(r=>{let i=e===r.id,a=r.icon;return(0,U.jsxs)(`button`,{onClick:()=>t(r.id),className:n(`relative flex min-w-0 items-center gap-2 rounded-lg px-3 py-2 text-sm font-medium transition-colors`,i?`bg-card text-foreground shadow-sm`:`text-muted-foreground hover:bg-card/60 hover:text-foreground`),children:[(0,U.jsx)(a,{className:`h-4 w-4 shrink-0`}),r.label,r.id===`installed`&&typeof r.count==`number`&&(0,U.jsx)(`span`,{className:n(`flex h-5 min-w-5 items-center justify-center rounded-full px-1.5 text-[11px] font-semibold`,i?`bg-primary/10 text-primary`:`bg-muted text-muted-foreground`),children:r.count})]},r.id)})}),(0,U.jsx)(`div`,{className:`w-full max-w-xl`,children:(0,U.jsx)(be,{scope:e===`catalog`?`all`:`installed`,searchText:r,isRefreshing:!1,searchPlaceholder:i(`marketplaceMcpSearchPlaceholder`),sort:c,onSearchTextChange:a,onSortChange:l})})]}),(0,U.jsxs)(`section`,{className:`flex min-h-0 flex-1 flex-col`,children:[(0,U.jsx)(`div`,{className:`mb-3 flex items-center justify-between px-1`,children:(0,U.jsxs)(`h3`,{className:`flex items-center gap-2 text-base font-semibold text-foreground`,children:[i(e===`catalog`?`marketplaceMcpSectionCatalog`:`marketplaceMcpSectionInstalled`),(0,U.jsx)(`span`,{className:`flex h-6 items-center justify-center rounded-lg bg-muted px-2 text-xs font-medium text-muted-foreground`,children:e===`catalog`?S.data?.total??0:w.data?.total??0})]})}),(0,U.jsxs)(`div`,{ref:T,className:`custom-scrollbar min-h-0 flex-1 overflow-y-auto pb-8`,"aria-busy":S.isLoading||S.isFetchingNextPage,children:[(0,U.jsxs)(`div`,{className:`grid grid-cols-[repeat(auto-fill,minmax(min(100%,280px),1fr))] items-stretch gap-4`,children:[e===`catalog`&&S.isLoading&&(0,U.jsx)(xe,{count:mt}),e===`catalog`&&!S.isLoading&&(S.data?.items??[]).map(e=>{let t=rt(e,A);return(0,U.jsx)(ot,{item:e,record:t,localeFallbacks:x,onOpen:()=>void M(e,t),onInstall:()=>d(e),onToggle:t?()=>void P(t.enabled===!1?`enable`:`disable`,t):void 0,onDoctor:t?()=>{m(t.id??null),g(null),k.mutateAsync(t.id??``)}:void 0,onRemove:t?()=>void P(`remove`,t):void 0},e.id)}),e===`installed`&&j.map(e=>(0,U.jsx)(ot,{record:e,localeFallbacks:x,onOpen:()=>void M(void 0,e),onToggle:()=>void P(e.enabled===!1?`enable`:`disable`,e),onDoctor:()=>{m(e.id??null),g(null),k.mutateAsync(e.id??``)},onRemove:()=>void P(`remove`,e)},e.id??e.spec))]}),e===`catalog`&&S.isError&&(0,U.jsx)(W,{tone:`danger`,title:i(`marketplaceMcpSectionCatalog`),description:S.error.message}),e===`installed`&&w.isError&&(0,U.jsx)(W,{tone:`danger`,title:i(`marketplaceMcpSectionInstalled`),description:w.error.message}),e===`catalog`&&!S.isLoading&&!S.isError&&(S.data?.items?.length??0)===0&&(0,U.jsx)(`div`,{className:`mt-4 flex flex-col items-center justify-center rounded-2xl bg-muted/35 py-16`,children:(0,U.jsx)(`p`,{className:`text-sm font-medium text-muted-foreground`,children:i(`marketplaceNoMcp`)})}),e===`installed`&&!w.isError&&j.length===0&&(0,U.jsx)(`div`,{className:`mt-4 flex flex-col items-center justify-center rounded-2xl bg-muted/35 py-16`,children:(0,U.jsx)(`p`,{className:`text-sm font-medium text-muted-foreground`,children:i(`marketplaceNoInstalledMcp`)})}),e===`catalog`&&!S.isError&&(0,U.jsx)(Se,{hasMore:!!S.hasNextPage,loading:S.isFetchingNextPage,sentinelRef:E})]})]}),(0,U.jsx)(st,{item:u,open:!!u,pending:D.isPending,onOpenChange:e=>!e&&d(null),onSubmit:N}),(0,U.jsx)(lt,{open:!!p,targetName:p,result:h,pending:k.isPending,onOpenChange:e=>!e&&m(null)}),(0,U.jsx)(b,{})]})}export{V as _,Z as a,we as c,xe as d,ye as f,W as g,G as h,Me as i,be as l,q as m,tt as n,Ee as o,ve as p,$e as r,Ce as s,ht as t,Se as u,B as v};
@@ -1 +0,0 @@
1
- import{c as e}from"./dist-AYxkFx2B.js";var t=e(`Plus`,[[`path`,{d:`M5 12h14`,key:`1ays0h`}],[`path`,{d:`M12 5v14`,key:`s699le`}]]);export{t};