@nextclaw/ui 0.18.3 → 0.19.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 (125) hide show
  1. package/CHANGELOG.md +26 -0
  2. package/dist/assets/api-Cyxp93Fn.js +13 -0
  3. package/dist/assets/appearance-settings-page-DsMl931U.js +1 -0
  4. package/dist/assets/{book-open-BOJLGVsx.js → book-open-Cl5CzL0g.js} +1 -1
  5. package/dist/assets/{channels-list-page-BPy2mXoD.js → channels-list-page-D_B7JGoZ.js} +2 -2
  6. package/dist/assets/chat-page-D3ZeULTv.js +1 -0
  7. package/dist/assets/config-split-page-C-YVl2mf.js +1 -0
  8. package/dist/assets/{confirm-dialog-Bsg9A62_.js → confirm-dialog-Bz3ieDQ5.js} +2 -2
  9. package/dist/assets/desktop-update-config-DO051-QG.js +1 -0
  10. package/dist/assets/{dist-IBUY9_9h.js → dist-CDPl8mm7.js} +1 -1
  11. package/dist/assets/{dist-DyUY9uQ0.js → dist-HFDWY6-K.js} +1 -1
  12. package/dist/assets/doc-browser-CWhs0JQN.js +1 -0
  13. package/dist/assets/doc-browser-D6H_nPzO.js +1 -0
  14. package/dist/assets/{doc-browser-context-BM6Af8gN.js → doc-browser-context-BKwz_j44.js} +1 -1
  15. package/dist/assets/form-actions-BUZOCfPR.js +1 -0
  16. package/dist/assets/index-DR3GLGme.css +1 -0
  17. package/dist/assets/index-j6DBnvlr.js +109 -0
  18. package/dist/assets/loader-circle-s65a4ZzL.js +1 -0
  19. package/dist/assets/mcp-marketplace-page-BJvzGt7h.js +9 -0
  20. package/dist/assets/mcp-marketplace-page-EpFHeJzw.js +1 -0
  21. package/dist/assets/model-config-page-CBoh0DVh.js +1 -0
  22. package/dist/assets/{navigation-link-DtPZZ_Q_.js → navigation-link-CDMYpkVv.js} +2 -2
  23. package/dist/assets/plus-XDIkqpkt.js +1 -0
  24. package/dist/assets/{provider-scoped-model-input-RWZz36z7.js → provider-scoped-model-input-C2iUtZi7.js} +1 -1
  25. package/dist/assets/providers-config-page-DX1pISTo.js +1 -0
  26. package/dist/assets/react-B7Paq2b3.js +8 -0
  27. package/dist/assets/{refresh-cw-BQHORcAs.js → refresh-cw-XrnNVwuQ.js} +1 -1
  28. package/dist/assets/remote-D_7_OGoj.js +1 -0
  29. package/dist/assets/rotate-cw-BhIWpLaU.js +1 -0
  30. package/dist/assets/runtime-config-page-BVO9B8Ns.js +1 -0
  31. package/dist/assets/{save-BgiS2u-T.js → save-_nSNAYQu.js} +1 -1
  32. package/dist/assets/{search-B6mO7mmo.js → search-0OTHFRMx.js} +1 -1
  33. package/dist/assets/{search-config-page-QS-kqNDZ.js → search-config-page-BwyeUjKt.js} +1 -1
  34. package/dist/assets/secrets-config-page-2O-TzroJ.js +3 -0
  35. package/dist/assets/security-config-BgIIrg1s.js +1 -0
  36. package/dist/assets/{select-DToos7Rq.js → select-BZHvnwQB.js} +2 -2
  37. package/dist/assets/{settings-2-ZAWXrq81.js → settings-2-CM_PvDNk.js} +1 -1
  38. package/dist/assets/skeleton-Bv4MMbH7.js +1 -0
  39. package/dist/assets/{tag-chip-urB3N-kk.js → tag-chip-Ce53PMTL.js} +1 -1
  40. package/dist/assets/x-CCjWN5ys.js +1 -0
  41. package/dist/index.html +20 -20
  42. package/package.json +6 -6
  43. package/src/app/components/layout/sidebar-items.tsx +49 -15
  44. package/src/app/configs/__tests__/app-navigation.config.test.ts +21 -0
  45. package/src/app/configs/app-navigation.config.ts +10 -1
  46. package/src/app/index.tsx +4 -0
  47. package/src/features/chat/components/conversation/chat-conversation-content.tsx +7 -0
  48. package/src/features/chat/components/layout/chat-page-shell.tsx +4 -1
  49. package/src/features/chat/components/layout/chat-sidebar-desktop-layout.tsx +26 -22
  50. package/src/features/chat/features/conversation/components/session-conversation-area.tsx +2 -0
  51. package/src/features/chat/features/input/input-surface-plugins/__tests__/context-reference-plugin.test.ts +1 -0
  52. package/src/features/chat/features/input/input-surface-plugins/__tests__/slash-command-plugin.test.ts +1 -0
  53. package/src/features/chat/features/message/components/chat-inline-panel-app-card.tsx +1 -3
  54. package/src/features/chat/features/message/components/chat-message-list.container.tsx +15 -1
  55. package/src/features/chat/features/message/components/chat-tool-call-stress-harness.tsx +178 -0
  56. package/src/features/chat/features/message/utils/__tests__/chat-message-process-summary.utils.test.ts +21 -0
  57. package/src/features/chat/features/message/utils/__tests__/chat-tool-call-stress-fixture.utils.test.ts +56 -0
  58. package/src/features/chat/features/message/utils/chat-message-core.utils.ts +1 -1
  59. package/src/features/chat/features/message/utils/chat-message-part.utils.ts +3 -10
  60. package/src/features/chat/features/message/utils/chat-message-process-summary.utils.ts +29 -1
  61. package/src/features/chat/features/message/utils/chat-message-texts.utils.ts +3 -0
  62. package/src/features/chat/features/message/utils/chat-message-tool-card.utils.ts +3 -28
  63. package/src/features/chat/features/message/utils/chat-tool-call-stress-fixture.utils.ts +122 -0
  64. package/src/features/chat/features/ncp/hooks/__tests__/use-ncp-session-conversation.test.tsx +69 -0
  65. package/src/features/chat/features/ncp/hooks/use-ncp-session-conversation.ts +29 -0
  66. package/src/features/chat/features/ncp/hooks/use-ncp-session-message-history.ts +106 -1
  67. package/src/features/chat/features/session/utils/ncp-session-adapter.utils.ts +2 -12
  68. package/src/features/chat/managers/__tests__/chat-ui.manager.test.ts +4 -2
  69. package/src/features/panel-apps/components/__tests__/panel-app-list-item.test.tsx +44 -1
  70. package/src/features/panel-apps/components/__tests__/panel-app-main-sidebar-nav.test.tsx +82 -0
  71. package/src/features/panel-apps/components/__tests__/panel-app-toolbar.test.tsx +13 -6
  72. package/src/features/panel-apps/components/__tests__/panel-apps-list.test.tsx +7 -1
  73. package/src/features/panel-apps/components/panel-app-icon.tsx +48 -0
  74. package/src/features/panel-apps/components/panel-app-list-item.tsx +19 -28
  75. package/src/features/panel-apps/components/panel-app-main-sidebar-nav.tsx +72 -0
  76. package/src/features/panel-apps/components/panel-app-toolbar.tsx +81 -20
  77. package/src/features/panel-apps/components/panel-apps-list.tsx +13 -26
  78. package/src/features/panel-apps/hooks/__tests__/use-panel-apps.test.tsx +105 -0
  79. package/src/features/panel-apps/hooks/use-panel-app-client-grant.ts +50 -0
  80. package/src/features/panel-apps/hooks/use-panel-app-main-runtime.ts +66 -0
  81. package/src/features/panel-apps/hooks/use-panel-apps.ts +102 -13
  82. package/src/features/panel-apps/index.ts +2 -0
  83. package/src/features/panel-apps/managers/__tests__/panel-app-bridge.manager.test.ts +1 -14
  84. package/src/features/panel-apps/managers/panel-app-bridge.manager.ts +9 -5
  85. package/src/features/panel-apps/pages/__tests__/panel-app-main-page.test.tsx +183 -0
  86. package/src/features/panel-apps/pages/panel-app-main-page.tsx +125 -0
  87. package/src/features/panel-apps/utils/__tests__/panel-app-view.utils.test.ts +2 -1
  88. package/src/features/panel-apps/utils/panel-app-doc-browser.utils.tsx +5 -4
  89. package/src/features/right-panel-resources/configs/right-panel-resource-routes.config.ts +12 -25
  90. package/src/features/right-panel-resources/index.ts +1 -0
  91. package/src/features/right-panel-resources/utils/__tests__/right-panel-resource-uri.utils.test.ts +22 -0
  92. package/src/features/right-panel-resources/utils/right-panel-resource-uri.utils.ts +31 -2
  93. package/src/main.tsx +24 -11
  94. package/src/shared/components/doc-browser/__tests__/doc-browser.test.tsx +76 -0
  95. package/src/shared/lib/api/ncp-session.types.ts +1 -0
  96. package/src/shared/lib/api/types.ts +3 -0
  97. package/src/shared/lib/api/utils/ncp-session.utils.ts +24 -1
  98. package/src/shared/lib/i18n/locales/en-US/chat.json +4 -0
  99. package/src/shared/lib/i18n/locales/en-US/doc-browser.json +10 -0
  100. package/src/shared/lib/i18n/locales/zh-CN/chat.json +4 -0
  101. package/src/shared/lib/i18n/locales/zh-CN/doc-browser.json +10 -0
  102. package/dist/assets/api-BSsQ0I4l.js +0 -13
  103. package/dist/assets/appearance-settings-page-2ilQwMl0.js +0 -1
  104. package/dist/assets/chat-page-DDR-Q4Kf.js +0 -1
  105. package/dist/assets/config-split-page-aUTKtWJu.js +0 -1
  106. package/dist/assets/desktop-update-config-Ds4pN7kz.js +0 -1
  107. package/dist/assets/doc-browser-D0arfzHY.js +0 -1
  108. package/dist/assets/doc-browser-D73yN8ts.js +0 -1
  109. package/dist/assets/form-actions-Cpd7glh8.js +0 -1
  110. package/dist/assets/index-Bsoscjk7.css +0 -1
  111. package/dist/assets/index-C2N1bYyb.js +0 -109
  112. package/dist/assets/loader-circle-C1fL3kBZ.js +0 -1
  113. package/dist/assets/mcp-marketplace-page-D8V0GU4Y.js +0 -9
  114. package/dist/assets/mcp-marketplace-page-q6T-vKoH.js +0 -1
  115. package/dist/assets/model-config-page-B7QR33ED.js +0 -1
  116. package/dist/assets/plus-B9V7Z_Eu.js +0 -1
  117. package/dist/assets/providers-config-page-B5yakiZe.js +0 -1
  118. package/dist/assets/react-D-jOo51s.js +0 -8
  119. package/dist/assets/remote-BfRYDhkz.js +0 -1
  120. package/dist/assets/rotate-cw-DuCF-3PX.js +0 -1
  121. package/dist/assets/runtime-config-page-Big45YWb.js +0 -1
  122. package/dist/assets/secrets-config-page-DE3kmDHk.js +0 -3
  123. package/dist/assets/security-config-Ds_2SXBh.js +0 -1
  124. package/dist/assets/skeleton-Bs2eO2CA.js +0 -1
  125. package/dist/assets/x-BkjTUiww.js +0 -1
@@ -0,0 +1 @@
1
+ import{c as e}from"./dist-HFDWY6-K.js";var t=e(`LoaderCircle`,[[`path`,{d:`M21 12a9 9 0 1 1-6.219-8.56`,key:`13zald`}]]);export{t};
@@ -0,0 +1,9 @@
1
+ import{i as e}from"./chunk-DseTPa7n.js";import{B as t,H as n,L as r,a as i,d as a,l as o,s,t as c,u as l}from"./react-B7Paq2b3.js";import{$t as u,B as d,Cn as f,En as p,H as m,K as ee,Pt as h,R as te,Sn as g,Tn as _,U as v,V as y,dn as b,fn as x,in as S,ln as C,on as ne,rn as w,un as T,wn as E,z as re}from"./api-Cyxp93Fn.js";import{c as D}from"./dist-HFDWY6-K.js";import{a as O,i as k,n as A,r as j,t as M}from"./select-BZHvnwQB.js";import{a as ie,c as ae,i as oe,l as se,n as ce,o as N,r as P,s as F,t as le}from"./confirm-dialog-Bz3ieDQ5.js";import"./doc-browser-D6H_nPzO.js";import{t as ue}from"./loader-circle-s65a4ZzL.js";import{t as I}from"./skeleton-Bv4MMbH7.js";import{g as de,n as L}from"./doc-browser-context-BKwz_j44.js";import{t as R}from"./tag-chip-Ce53PMTL.js";var fe=class extends p{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:_()})}getOptimisticResult(e){return e.behavior=_(),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`,p=i&&c===`backward`;return{...r,fetchNextPage:this.fetchNextPage,fetchPreviousPage:this.fetchPreviousPage,hasNextPage:f(t,n.data),hasPreviousPage:E(t,n.data),isFetchNextPageError:l,isFetchingNextPage:u,isFetchPreviousPageError:d,isFetchingPreviousPage:p,isRefetchError:s&&!l&&!d,isRefetching:a&&!u&&!p}}};function z(e,t){return x(e,fe,t)}var B=D(`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`}]]),pe=D(`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`}]]),me=D(`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`}]]),V=e(n(),1),H=t(),he=ne(`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`}}),ge={neutral:`text-gray-900`,success:`text-emerald-800`,warning:`text-amber-900`,danger:`text-rose-700`,info:`text-primary`},_e={neutral:`text-gray-600`,success:`text-emerald-700`,warning:`text-amber-800`,danger:`text-rose-700`,info:`text-primary/90`},U=V.forwardRef(({className:e,tone:t=`neutral`,borderStyle:n=`solid`,title:i,description:a,icon:o,actions:s,children:c,...l},u)=>{let d=t??`neutral`,f=!!i||!!a||!!o||!!s;return(0,H.jsxs)(`div`,{ref:u,className:r(he({tone:d,borderStyle:n}),e),...l,children:[f?(0,H.jsxs)(`div`,{className:`flex items-start justify-between gap-3`,children:[(0,H.jsx)(`div`,{className:`min-w-0 flex-1`,children:(0,H.jsxs)(`div`,{className:`flex items-start gap-2`,children:[o?(0,H.jsx)(`div`,{className:`mt-0.5 shrink-0`,children:o}):null,(0,H.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[i?(0,H.jsx)(`p`,{className:r(`text-sm font-medium`,ge[d]),children:i}):null,a?(0,H.jsx)(`p`,{className:r(i?`mt-1`:``,`text-sm leading-6`,_e[d]),children:a}):null]})]})}),s?(0,H.jsx)(`div`,{className:`shrink-0`,children:s}):null]}):null,c?(0,H.jsx)(`div`,{className:r(f?`mt-3`:``),children:c}):null]})});U.displayName=`NoticeCard`;var ve={open:!1,title:``,description:``,confirmLabel:i(`confirm`),cancelLabel:i(`cancel`),variant:`default`,resolve:null};function W(){let[e,t]=(0,V.useState)(ve),n=(0,V.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,V.useCallback)(e=>{t(t=>(!e&&t.resolve&&t.resolve(!1),{...t,open:e,resolve:e?t.resolve:null}))},[]);return{confirm:n,ConfirmDialog:(0,V.useCallback)(()=>(0,H.jsx)(le,{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 G=(0,V.createContext)(null);function ye({children:e}){let[t,n]=(0,V.useState)(()=>o());(0,V.useEffect)(()=>a(e=>{n(e)}),[]);let r=(0,V.useCallback)(e=>{l(e),n(s())},[]),i=(0,V.useCallback)(()=>{r(t===`en`?`zh`:`en`)},[t,r]),c=(0,V.useMemo)(()=>({language:t,setLanguage:r,toggleLanguage:i}),[t,r,i]);return(0,H.jsx)(G.Provider,{value:c,children:e})}function K(){let e=(0,V.useContext)(G);if(!e)throw Error(`useI18n must be used within I18nProvider`);return{...e,t:i}}function q(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,H.jsx)(`div`,{className:`mb-4`,children:(0,H.jsxs)(`div`,{className:`flex items-center gap-3`,children:[(0,H.jsxs)(`div`,{className:`relative min-w-0 flex-1`,children:[(0,H.jsx)(me,{className:`absolute left-3 top-1/2 h-4 w-4 -translate-y-1/2 text-gray-400`}),(0,H.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,H.jsx)(ue,{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,H.jsxs)(M,{value:a,onValueChange:e=>s(e),children:[(0,H.jsx)(k,{className:`h-9 w-[150px] shrink-0 rounded-lg`,children:(0,H.jsx)(O,{})}),(0,H.jsxs)(A,{children:[(0,H.jsx)(j,{value:`relevance`,children:i(`marketplaceSortRelevance`)}),(0,H.jsx)(j,{value:`updated`,children:i(`marketplaceSortUpdated`)})]})]})]})})}function xe({count:e}){return(0,H.jsx)(H.Fragment,{children:Array.from({length:e},(e,t)=>(0,H.jsx)(`article`,{className:`h-full rounded-xl border border-gray-200/60 bg-white p-3.5 shadow-sm`,children:(0,H.jsxs)(`div`,{className:`flex items-start justify-between gap-2.5`,children:[(0,H.jsxs)(`div`,{className:`flex min-w-0 flex-1 gap-2.5`,children:[(0,H.jsx)(I,{className:`h-9 w-9 shrink-0 rounded-lg`}),(0,H.jsxs)(`div`,{className:`min-w-0 flex-1 space-y-2`,children:[(0,H.jsx)(I,{className:`h-4 w-32 max-w-[70%]`}),(0,H.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,H.jsx)(I,{className:`h-3 w-12`}),(0,H.jsx)(I,{className:`h-3 w-24`})]}),(0,H.jsx)(I,{className:`h-3 w-full`}),(0,H.jsxs)(`div`,{className:`flex gap-1.5 pt-0.5`,children:[(0,H.jsx)(I,{className:`h-5 w-14 rounded-md`}),(0,H.jsx)(I,{className:`h-5 w-16 rounded-md`}),(0,H.jsx)(I,{className:`h-5 w-12 rounded-md`})]})]})]}),(0,H.jsx)(I,{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,H.jsxs)(`div`,{className:`py-4`,children:[e&&(0,H.jsx)(`div`,{ref:n,className:`h-1 w-full`,"aria-hidden":`true`}),t&&(0,H.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=L();(0,V.useEffect)(()=>{let t=t=>{let n=t.target.closest(`a[href]`);if(!n)return;let r=n.getAttribute(`href`)||``;de(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=c(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,V.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 ee(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,H.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,H.jsx)(`strong`,{children:n.slice(2,-2)},o));else{let e=n.match(/^\[([^\]]+)\]\((https?:\/\/[^)\s]+)\)$/);t.push(e?(0,H.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,H.jsxs)(`div`,{className:`relative my-3 overflow-hidden rounded-lg border border-border bg-muted/70`,children:[a?(0,H.jsx)(`span`,{className:`absolute right-3 top-2 font-mono text-[10px] text-muted-foreground`,children:a}):null,(0,H.jsx)(`pre`,{className:`m-0 overflow-x-auto p-3 text-xs leading-6 text-foreground`,children:(0,H.jsx)(`code`,{children:r.join(`
5
+ `)})})]},t),nextIndex:i+1}}function ze(e,t,n){let i=[],a=t,o=n?/^\d+\.\s+/:/^[-*]\s+/;for(;a<e.length&&o.test(e[a]?.trim()??``);)i.push((e[a]??``).trim().replace(o,``)),a+=1;return{node:(0,H.jsx)(n?`ol`:`ul`,{className:r(`my-2 pl-5`,n?`list-decimal`:`list-disc`),children:i.map((e,n)=>(0,H.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,H.jsx)(`h1`,{className:r,children:n},t):e===2?(0,H.jsx)(`h2`,{className:r,children:n},t):e===3?(0,H.jsx)(`h3`,{className:r,children:n},t):(0,H.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,H.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,H.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,H.jsxs)(`div`,{className:`space-y-4 p-5`,children:[(0,H.jsxs)(`section`,{className:`rounded-xl border border-border bg-card p-5`,children:[(0,H.jsx)(I,{className:`h-7 w-1/2`}),(0,H.jsx)(I,{className:`mt-3 h-4 w-3/4`}),(0,H.jsx)(I,{className:`mt-4 h-4 w-full`}),(0,H.jsx)(I,{className:`mt-3 h-4 w-2/3`})]}),(0,H.jsxs)(`section`,{className:`grid gap-4 lg:grid-cols-[minmax(220px,0.42fr)_minmax(0,1fr)]`,children:[(0,H.jsx)(I,{className:`h-56 rounded-xl`}),(0,H.jsx)(I,{className:`h-56 rounded-xl`})]})]})}function Je({raw:e}){let t=Ke(e);return t.length===0?(0,H.jsx)(`pre`,{className:`m-0 whitespace-pre-wrap break-words font-mono text-xs leading-6`,children:e}):(0,H.jsx)(`dl`,{className:`m-0`,children:t.map(e=>(0,H.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,H.jsx)(`dt`,{className:`break-words font-semibold text-primary`,children:e.key}),(0,H.jsx)(`dd`,{className:`m-0 break-words text-card-foreground`,children:e.value})]},e.key))})}function Ye({title:e,children:t}){return(0,H.jsxs)(`article`,{className:`overflow-hidden rounded-xl border border-border bg-card shadow-sm`,children:[(0,H.jsx)(`h2`,{className:`border-b border-border bg-muted/40 px-4 py-3 text-sm font-semibold text-card-foreground`,children:e}),(0,H.jsx)(`div`,{className:`p-4 text-sm leading-7 text-card-foreground`,children:t})]})}function Xe(){return(0,H.jsx)(`div`,{className:`flex h-full items-center justify-center bg-background p-6 text-center text-muted-foreground`,children:(0,H.jsxs)(`div`,{className:`max-w-sm`,children:[(0,H.jsx)(se,{className:`mx-auto mb-3 h-7 w-7 text-muted-foreground`}),(0,H.jsx)(`h2`,{className:`text-base font-semibold text-foreground`,children:i(`marketplaceDetailUnavailableTitle`)}),(0,H.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,H.jsx)(`main`,{className:`h-full overflow-auto bg-background text-foreground custom-scrollbar`,children:(0,H.jsxs)(`div`,{className:`mx-auto max-w-[940px] space-y-4 p-5 pb-9`,children:[(0,H.jsxs)(`section`,{className:`rounded-xl border border-border bg-card p-5 shadow-sm`,children:[(0,H.jsxs)(`div`,{className:`flex items-start gap-3`,children:[(0,H.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,H.jsx)(B,{className:`h-4 w-4`})}),(0,H.jsxs)(`div`,{className:`min-w-0`,children:[(0,H.jsx)(`h1`,{className:`break-words text-2xl font-semibold leading-tight text-foreground`,children:e.title}),(0,H.jsxs)(`p`,{className:`mt-2 break-words text-xs text-muted-foreground`,children:[e.typeLabel,` · `,e.spec,e.author?` · ${e.author}`:``]})]})]}),r?(0,H.jsx)(`p`,{className:`mt-4 text-sm leading-7 text-card-foreground`,children:r}):null,o?(0,H.jsx)(`p`,{className:`mt-3 text-sm leading-7 text-card-foreground`,children:a}):null,e.tags&&e.tags.length>0?(0,H.jsx)(`div`,{className:`mt-4 flex flex-wrap gap-2`,children:e.tags.map(e=>(0,H.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,H.jsxs)(`p`,{className:`mt-4 break-all text-xs text-muted-foreground`,children:[e.sourceLabel??i(`marketplaceDetailSource`),`: `,` `,(0,H.jsx)(`a`,{href:e.sourceUrl,target:`_blank`,rel:`noopener noreferrer`,className:`font-medium text-primary hover:underline`,children:e.sourceUrl})]}):null]}),(0,H.jsxs)(`section`,{className:`grid grid-cols-[repeat(auto-fit,minmax(min(300px,100%),1fr))] gap-4`,children:[(0,H.jsx)(Ye,{title:i(`marketplaceDetailMetadata`),children:(0,H.jsx)(Je,{raw:t})}),(0,H.jsx)(Ye,{title:i(`marketplaceDetailContent`),children:(0,H.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,H.jsx)(qe,{}):n.status===`error`&&!n.contentRaw?(0,H.jsx)(Xe,{}):(0,H.jsx)(Ze,{entry:n}):(0,H.jsx)(Xe,{})}var $e={[Ae]:{getTitle:e=>e.title,renderContent:({currentUrl:e})=>(0,H.jsx)(Qe,{currentUrl:e}),renderIcon:()=>(0,H.jsx)(B,{className:`h-4 w-4 text-primary`})}},et=160;function tt({disabled:e,onLoadMore:t,thresholdPx:n=et,watchValue:r}){let i=(0,V.useRef)(null),a=(0,V.useRef)(null),o=(0,V.useRef)(t),s=(0,V.useRef)(!1);return(0,V.useEffect)(()=>{o.current=t},[t]),(0,V.useEffect)(()=>{e&&(s.current=!1)},[e]),(0,V.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,H.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,H.jsxs)(`div`,{className:`flex items-start justify-between gap-3`,children:[(0,H.jsxs)(`div`,{className:`min-w-0`,children:[(0,H.jsx)(`div`,{className:`text-sm font-semibold text-gray-900`,children:d}),(0,H.jsx)(`div`,{className:`mt-1 text-xs text-gray-500`,children:p}),(0,H.jsx)(`div`,{className:`mt-2 line-clamp-2 text-sm text-gray-600`,children:f}),(0,H.jsxs)(`div`,{className:`mt-3 flex flex-wrap gap-2`,children:[(t?.tags??[]).map(e=>(0,H.jsx)(R,{children:e},e)),m?(0,H.jsx)(R,{tone:`success`,children:m}):null]})]}),(0,H.jsxs)(`div`,{className:`flex shrink-0 flex-col gap-2`,children:[!u&&t&&o?(0,H.jsx)(S,{type:`button`,size:`sm`,variant:`primary`,className:`rounded-xl`,onClick:e=>{e.stopPropagation(),o()},children:i(`marketplaceInstall`)}):null,u?(0,H.jsxs)(H.Fragment,{children:[s?(0,H.jsx)(S,{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,H.jsx)(S,{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,H.jsx)(S,{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,H.jsx)(ce,{open:n,onOpenChange:i,children:t?(0,H.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,V.useState)(o?.defaultName??``),[l,u]=(0,V.useState)(!0),[d,f]=(0,V.useState)(Object.fromEntries((o?.inputs??[]).map(e=>[e.id,e.defaultValue??``])));return(0,H.jsxs)(P,{children:[(0,H.jsxs)(N,{children:[(0,H.jsx)(F,{children:i(`marketplaceMcpInstallDialogTitle`)}),(0,H.jsx)(oe,{children:t.name})]}),(0,H.jsxs)(`div`,{className:`space-y-4`,children:[(0,H.jsxs)(`div`,{className:`space-y-2`,children:[(0,H.jsx)(`div`,{className:`text-sm font-medium text-gray-800`,children:i(`marketplaceMcpServerName`)}),(0,H.jsx)(w,{value:s,onChange:e=>c(e.target.value),placeholder:o?.defaultName??`mcp-server`})]}),(0,H.jsxs)(`div`,{className:`flex items-center justify-between rounded-xl border border-gray-200 px-3 py-3`,children:[(0,H.jsxs)(`div`,{children:[(0,H.jsx)(`div`,{className:`text-sm font-medium text-gray-900`,children:i(`marketplaceMcpAllAgents`)}),(0,H.jsx)(`div`,{className:`text-xs text-gray-500`,children:i(`marketplaceMcpAllAgentsDescription`)})]}),(0,H.jsx)(h,{checked:l,onCheckedChange:u})]}),(o?.inputs??[]).map(e=>(0,H.jsxs)(`div`,{className:`space-y-2`,children:[(0,H.jsx)(`div`,{className:`text-sm font-medium text-gray-800`,children:e.label}),e.description?(0,H.jsx)(`div`,{className:`text-xs text-gray-500`,children:e.description}):null,(0,H.jsx)(w,{type:e.secret?`password`:`text`,value:d[e.id]??``,onChange:t=>f(n=>({...n,[e.id]:t.target.value})),placeholder:e.defaultValue??``})]},e.id))]}),(0,H.jsxs)(ie,{children:[(0,H.jsx)(S,{variant:`outline`,onClick:()=>r(!1),disabled:n,children:i(`cancel`)}),(0,H.jsx)(S,{onClick:()=>void a({name:s,allAgents:l,inputs:d}),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,H.jsx)(ce,{open:r,onOpenChange:o,children:(0,H.jsxs)(P,{children:[(0,H.jsxs)(N,{children:[(0,H.jsx)(F,{children:i(`marketplaceMcpDoctorTitle`)}),(0,H.jsx)(oe,{children:n??`-`})]}),a?(0,H.jsx)(`div`,{className:`text-sm text-gray-500`,children:i(`loading`)}):null,!a&&t?(0,H.jsxs)(`div`,{className:`space-y-3 text-sm text-gray-700`,children:[(0,H.jsxs)(`div`,{children:[i(`marketplaceMcpDoctorAccessible`),`:`,` `,t.accessible?i(`statusReady`):i(`marketplaceOperationFailed`)]}),(0,H.jsxs)(`div`,{children:[i(`marketplaceMcpDoctorTransport`),`:`,` `,t.transport.toUpperCase()]}),(0,H.jsxs)(`div`,{children:[i(`marketplaceMcpDoctorTools`),`: `,t.toolCount]}),t.error?(0,H.jsx)(U,{tone:`danger`,description:t.error,className:`rounded-lg`}):null]}):null]})})}function ut(e){let t=z({queryKey:[`marketplace-mcp-items`,e],initialPageParam:1,queryFn:({pageParam:t})=>y({...e,page:t}),getNextPageParam:e=>e.page<e.totalPages?e.page+1:void 0,staleTime:15e3}),n=(0,V.useMemo)(()=>q(t.data),[t.data]);return{...t,data:n}}function dt(){return b({queryKey:[`marketplace-mcp-installed`],queryFn:()=>d(),staleTime:1e4})}function ft(){let e=g();return T({mutationFn:m,onSuccess:t=>{e.invalidateQueries({queryKey:[`marketplace-mcp-installed`]}),e.invalidateQueries({queryKey:[`marketplace-mcp-items`]}),e.invalidateQueries({queryKey:[`marketplace-mcp-doctor`]}),C.success(t.message||i(`marketplaceInstallSuccessMcp`))},onError:e=>{C.error(e.message||i(`marketplaceInstallFailed`))}})}function pt(){let e=g();return T({mutationFn:v,onSuccess:t=>{e.invalidateQueries({queryKey:[`marketplace-mcp-installed`]}),e.invalidateQueries({queryKey:[`marketplace-mcp-items`]}),e.invalidateQueries({queryKey:[`marketplace-mcp-doctor`]}),C.success(t.message||i(`marketplaceMcpManageSuccess`))},onError:e=>{C.error(e.message||i(`marketplaceOperationFailed`))}})}var mt=12;function ht(){let[e,t]=(0,V.useState)(`catalog`),[n,a]=(0,V.useState)(``),[o,s]=(0,V.useState)(``),[c,l]=(0,V.useState)(`relevance`),[d,f]=(0,V.useState)(null),[p,m]=(0,V.useState)(null),[ee,h]=(0,V.useState)(null),{language:g}=K(),_=L(),{confirm:v,ConfirmDialog:y}=W(),b=(0,V.useMemo)(()=>Ce(g),[g]);(0,V.useEffect)(()=>{let e=window.setTimeout(()=>{s(n.trim())},250);return()=>window.clearTimeout(e)},[n]);let x=ut({q:o||void 0,sort:c,pageSize:mt}),S=dt(),{containerRef:C,sentinelRef:ne}=tt({disabled:e!==`catalog`||x.isError||!x.hasNextPage||x.isFetchingNextPage,onLoadMore:()=>x.fetchNextPage(),watchValue:`${e}:${o}:${c}:${x.data?.loadedItems??0}:${x.data?.loadedPages??0}`});(0,V.useEffect)(()=>{let e=C.current;e&&typeof e.scrollTo==`function`&&e.scrollTo({top:0})},[C,o,e,c]);let w=ft(),E=pt(),D=T({mutationFn:te,onSuccess:(e,t)=>{m(t),h(e)}}),O=(0,V.useMemo)(()=>nt(S.data?.records??[]),[S.data?.records]),k=(0,V.useMemo)(()=>(S.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}),[S.data?.records,o]),A=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(b,e,t);if(!e){Z(_,{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(_,{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 re(e.slug);Z(_,{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(_,{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})}},j=async e=>{d&&(await w.mutateAsync({spec:d.slug,name:e.name.trim(),allAgents:e.allAgents,inputs:e.inputs}),f(null))},M=async(e,t)=>{let n=t.id||t.spec;n&&(e===`remove`&&!await v({title:`${i(`marketplaceMcpRemoveTitle`)} ${n}?`,description:i(`marketplaceMcpRemoveDescription`),confirmLabel:i(`marketplaceMcpRemove`),variant:`destructive`})||await E.mutateAsync({action:e,id:n,spec:t.spec}))},ie=[{id:`catalog`,label:i(`marketplaceMcpTabCatalog`),icon:ae},{id:`installed`,label:i(`marketplaceMcpTabInstalled`),icon:pe,count:S.data?.total??0}];return(0,H.jsxs)(u,{title:i(`marketplaceMcpPageTitle`),description:i(`marketplaceMcpPageDescription`),layout:`split`,children:[(0,H.jsxs)(`div`,{className:`flex flex-col gap-3`,children:[(0,H.jsx)(`div`,{className:`flex w-fit max-w-full items-center gap-1 rounded-xl bg-muted/60 p-1`,children:ie.map(n=>{let i=e===n.id,a=n.icon;return(0,H.jsxs)(`button`,{onClick:()=>t(n.id),className:r(`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,H.jsx)(a,{className:`h-4 w-4 shrink-0`}),n.label,n.id===`installed`&&typeof n.count==`number`&&(0,H.jsx)(`span`,{className:r(`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:n.count})]},n.id)})}),(0,H.jsx)(`div`,{className:`w-full max-w-xl`,children:(0,H.jsx)(be,{scope:e===`catalog`?`all`:`installed`,searchText:n,isRefreshing:!1,searchPlaceholder:i(`marketplaceMcpSearchPlaceholder`),sort:c,onSearchTextChange:a,onSortChange:l})})]}),(0,H.jsxs)(`section`,{className:`flex min-h-0 flex-1 flex-col`,children:[(0,H.jsx)(`div`,{className:`mb-3 flex items-center justify-between px-1`,children:(0,H.jsxs)(`h3`,{className:`flex items-center gap-2 text-base font-semibold text-foreground`,children:[i(e===`catalog`?`marketplaceMcpSectionCatalog`:`marketplaceMcpSectionInstalled`),(0,H.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`?x.data?.total??0:S.data?.total??0})]})}),(0,H.jsxs)(`div`,{ref:C,className:`custom-scrollbar min-h-0 flex-1 overflow-y-auto pb-8`,"aria-busy":x.isLoading||x.isFetchingNextPage,children:[(0,H.jsxs)(`div`,{className:`grid grid-cols-[repeat(auto-fill,minmax(min(100%,280px),1fr))] items-stretch gap-4`,children:[e===`catalog`&&x.isLoading&&(0,H.jsx)(xe,{count:mt}),e===`catalog`&&!x.isLoading&&(x.data?.items??[]).map(e=>{let t=rt(e,O);return(0,H.jsx)(ot,{item:e,record:t,localeFallbacks:b,onOpen:()=>void A(e,t),onInstall:()=>f(e),onToggle:t?()=>void M(t.enabled===!1?`enable`:`disable`,t):void 0,onDoctor:t?()=>{m(t.id??null),h(null),D.mutateAsync(t.id??``)}:void 0,onRemove:t?()=>void M(`remove`,t):void 0},e.id)}),e===`installed`&&k.map(e=>(0,H.jsx)(ot,{record:e,localeFallbacks:b,onOpen:()=>void A(void 0,e),onToggle:()=>void M(e.enabled===!1?`enable`:`disable`,e),onDoctor:()=>{m(e.id??null),h(null),D.mutateAsync(e.id??``)},onRemove:()=>void M(`remove`,e)},e.id??e.spec))]}),e===`catalog`&&x.isError&&(0,H.jsx)(U,{tone:`danger`,title:i(`marketplaceMcpSectionCatalog`),description:x.error.message}),e===`installed`&&S.isError&&(0,H.jsx)(U,{tone:`danger`,title:i(`marketplaceMcpSectionInstalled`),description:S.error.message}),e===`catalog`&&!x.isLoading&&!x.isError&&(x.data?.items?.length??0)===0&&(0,H.jsx)(`div`,{className:`mt-4 flex flex-col items-center justify-center rounded-2xl bg-muted/35 py-16`,children:(0,H.jsx)(`p`,{className:`text-sm font-medium text-muted-foreground`,children:i(`marketplaceNoMcp`)})}),e===`installed`&&!S.isError&&k.length===0&&(0,H.jsx)(`div`,{className:`mt-4 flex flex-col items-center justify-center rounded-2xl bg-muted/35 py-16`,children:(0,H.jsx)(`p`,{className:`text-sm font-medium text-muted-foreground`,children:i(`marketplaceNoInstalledMcp`)})}),e===`catalog`&&!x.isError&&(0,H.jsx)(Se,{hasMore:!!x.hasNextPage,loading:x.isFetchingNextPage,sentinelRef:ne})]})]}),(0,H.jsx)(st,{item:d,open:!!d,pending:w.isPending,onOpenChange:e=>!e&&f(null),onSubmit:j}),(0,H.jsx)(lt,{open:!!p,targetName:p,result:ee,pending:D.isPending,onOpenChange:e=>!e&&m(null)}),(0,H.jsx)(y,{})]})}export{B as _,Z as a,we as c,xe as d,q as f,U as g,W as h,Me as i,be as l,K as m,tt as n,Ee as o,ye as p,$e as r,Ce as s,ht as t,Se as u,z as v};
@@ -0,0 +1 @@
1
+ import{t as e}from"./mcp-marketplace-page-BJvzGt7h.js";export{e as McpMarketplacePage};
@@ -0,0 +1 @@
1
+ import{i as e}from"./chunk-DseTPa7n.js";import{B as t,H as n,a as r}from"./react-B7Paq2b3.js";import{t as i}from"./navigation-link-CDMYpkVv.js";import{$t as a,Qt as o,Xt as s,Zt as c,in as l,nn as u,rn as d}from"./api-Cyxp93Fn.js";import{t as f}from"./book-open-Cl5CzL0g.js";import{t as p}from"./provider-scoped-model-input-C2iUtZi7.js";import{t as m}from"./loader-circle-s65a4ZzL.js";import{t as h}from"./skeleton-Bv4MMbH7.js";import{m as g}from"./doc-browser-context-BKwz_j44.js";import{D as _,M as v,O as y,R as b,_ as x,y as S}from"./index-j6DBnvlr.js";import{t as C}from"./form-actions-BUZOCfPR.js";import{t as w}from"./config-hints-BcfVUMij.js";var T=e(n(),1),E=t(),D=`provider/model`;function O(e){let{initialModel:t,initialWorkspace:n,isPending:a,modelHelpText:h,modelPlaceholder:_,onSubmit:v,providerCatalog:y,workspacePlaceholder:b}=e,[x,S]=(0,T.useState)(t),[w,D]=(0,T.useState)(n);return(0,E.jsxs)(`form`,{onSubmit:e=>{e.preventDefault(),v({model:x,workspace:w})},className:`space-y-5`,children:[(0,E.jsx)(o,{children:(0,E.jsxs)(c,{children:[(0,E.jsx)(s,{title:r(`defaultModel`),description:h,layout:`stacked`,children:(0,E.jsxs)(`div`,{className:`space-y-2`,children:[(0,E.jsx)(u,{htmlFor:`model`,className:`sr-only`,children:r(`defaultModel`)}),(0,E.jsx)(p,{id:`model`,value:x,onChange:S,providerCatalog:y,modelPlaceholder:_}),(0,E.jsx)(i,{href:g(`/guide/model-selection`),external:!0,icon:f,size:`xs`,children:r(`channelsGuideTitle`)})]})}),(0,E.jsx)(s,{title:r(`workspace`),layout:`stacked`,children:(0,E.jsxs)(`div`,{className:`space-y-2`,children:[(0,E.jsx)(u,{htmlFor:`workspace`,className:`sr-only`,children:r(`workspace`)}),(0,E.jsx)(d,{id:`workspace`,value:w,onChange:e=>D(e.target.value),placeholder:b,className:`rounded-xl`})]})})]})}),(0,E.jsx)(C,{children:(0,E.jsx)(l,{type:`submit`,disabled:a,size:`sm`,children:a?(0,E.jsx)(m,{className:`h-3.5 w-3.5 animate-spin`}):r(`saveChanges`)})})]})}function k(){let{data:e,isLoading:t}=x(),{data:n}=y(),{data:i}=_(),{data:o}=S(),s=v(),c=o?.uiHints,l=w(`agents.defaults.model`,c),u=w(`agents.defaults.workspace`,c),d=(0,T.useMemo)(()=>b({providersView:n,templatesView:i,config:e,onlyConfigured:!0}),[e,n,i]),f=r(`modelIdentifierHelp`)||l?.help||``,p=(e?.agents?.defaults?.model||``).trim(),m=e?.agents?.defaults?.workspace||``;return t?(0,E.jsx)(a,{title:r(`modelPageTitle`),description:r(`modelPageDescription`),children:(0,E.jsxs)(`div`,{className:`divide-y divide-border/55 overflow-hidden rounded-2xl bg-muted/45`,children:[(0,E.jsxs)(`div`,{className:`space-y-3 p-4`,children:[(0,E.jsx)(h,{className:`h-5 w-24`}),(0,E.jsx)(h,{className:`h-10 w-full rounded-xl`})]}),(0,E.jsxs)(`div`,{className:`space-y-3 p-4`,children:[(0,E.jsx)(h,{className:`h-5 w-24`}),(0,E.jsx)(h,{className:`h-10 w-full rounded-xl`})]})]})}):(0,E.jsx)(a,{title:r(`modelPageTitle`),description:r(`modelPageDescription`),children:(0,E.jsx)(O,{initialModel:p,initialWorkspace:m,isPending:s.isPending,modelHelpText:f,modelPlaceholder:l?.placeholder??D,onSubmit:({model:e,workspace:t})=>s.mutate({model:e,workspace:t}),providerCatalog:d,workspacePlaceholder:u?.placeholder??`/path/to/workspace`},`${p}::${m}`)})}export{k as ModelConfigPage};
@@ -1,3 +1,3 @@
1
- import{i as e}from"./chunk-DseTPa7n.js";import{I as t,V as n,z as r}from"./react-D-jOo51s.js";import{t as i}from"./preload-helper-D4M6sveU.js";import{c as a}from"./dist-DyUY9uQ0.js";import{t as o}from"./host-capabilities-D9C4CBK5.js";var s=e(n(),1),c=`popstate`;function l(e={}){let{initialEntries:t=[`/`],initialIndex:n,v5Compat:r=!1}=e,i;i=t.map((e,t)=>u(e,typeof e==`string`?null:e.state,t===0?`default`:void 0));let a=c(n??i.length-1),o=`POP`,s=null;function c(e){return Math.min(Math.max(e,0),i.length-1)}function l(){return i[a]}function u(e,t=null,n){let r=h(i?l().pathname:`/`,e,t,n);return f(r.pathname.charAt(0)===`/`,`relative pathnames are not supported in memory history: ${JSON.stringify(e)}`),r}function d(e){return typeof e==`string`?e:g(e)}return{get index(){return a},get action(){return o},get location(){return l()},createHref:d,createURL(e){return new URL(d(e),`http://localhost`)},encodeLocation(e){let t=typeof e==`string`?_(e):e;return{pathname:t.pathname||``,search:t.search||``,hash:t.hash||``}},push(e,t){o=`PUSH`;let n=u(e,t);a+=1,i.splice(a,i.length,n),r&&s&&s({action:o,location:n,delta:1})},replace(e,t){o=`REPLACE`;let n=u(e,t);i[a]=n,r&&s&&s({action:o,location:n,delta:0})},go(e){o=`POP`;let t=c(a+e),n=i[t];a=t,s&&s({action:o,location:n,delta:e})},listen(e){return s=e,()=>{s=null}}}}function u(e={}){function t(e,t){let{pathname:n,search:r,hash:i}=e.location;return h(``,{pathname:n,search:r,hash:i},t.state&&t.state.usr||null,t.state&&t.state.key||`default`)}function n(e,t){return typeof t==`string`?t:g(t)}return v(t,n,null,e)}function d(e,t){if(e===!1||e==null)throw Error(t)}function f(e,t){if(!e){typeof console<`u`&&console.warn(t);try{throw Error(t)}catch{}}}function p(){return Math.random().toString(36).substring(2,10)}function m(e,t){return{usr:e.state,key:e.key,idx:t}}function h(e,t,n=null,r){return{pathname:typeof e==`string`?e:e.pathname,search:``,hash:``,...typeof t==`string`?_(t):t,state:n,key:t&&t.key||r||p()}}function g({pathname:e=`/`,search:t=``,hash:n=``}){return t&&t!==`?`&&(e+=t.charAt(0)===`?`?t:`?`+t),n&&n!==`#`&&(e+=n.charAt(0)===`#`?n:`#`+n),e}function _(e){let t={};if(e){let n=e.indexOf(`#`);n>=0&&(t.hash=e.substring(n),e=e.substring(0,n));let r=e.indexOf(`?`);r>=0&&(t.search=e.substring(r),e=e.substring(0,r)),e&&(t.pathname=e)}return t}function v(e,t,n,r={}){let{window:i=document.defaultView,v5Compat:a=!1}=r,o=i.history,s=`POP`,l=null,u=d();u??(u=0,o.replaceState({...o.state,idx:u},``));function d(){return(o.state||{idx:null}).idx}function f(){s=`POP`;let e=d(),t=e==null?null:e-u;u=e,l&&l({action:s,location:v.location,delta:t})}function p(e,t){s=`PUSH`;let r=h(v.location,e,t);n&&n(r,e),u=d()+1;let c=m(r,u),f=v.createHref(r);try{o.pushState(c,``,f)}catch(e){if(e instanceof DOMException&&e.name===`DataCloneError`)throw e;i.location.assign(f)}a&&l&&l({action:s,location:v.location,delta:1})}function g(e,t){s=`REPLACE`;let r=h(v.location,e,t);n&&n(r,e),u=d();let i=m(r,u),c=v.createHref(r);o.replaceState(i,``,c),a&&l&&l({action:s,location:v.location,delta:0})}function _(e){return y(e)}let v={get action(){return s},get location(){return e(i,o)},listen(e){if(l)throw Error(`A history only accepts one active listener`);return i.addEventListener(c,f),l=e,()=>{i.removeEventListener(c,f),l=null}},createHref(e){return t(i,e)},createURL:_,encodeLocation(e){let t=_(e);return{pathname:t.pathname,search:t.search,hash:t.hash}},push:p,replace:g,go(e){return o.go(e)}};return v}function y(e,t=!1){let n=`http://localhost`;typeof window<`u`&&(n=window.location.origin===`null`?window.location.href:window.location.origin),d(n,`No window.location.(origin|href) available to create URL`);let r=typeof e==`string`?e:g(e);return r=r.replace(/ $/,`%20`),!t&&r.startsWith(`//`)&&(r=n+r),new URL(r,n)}function b(e,t,n=`/`){return x(e,t,n,!1)}function x(e,t,n,r){let i=D((typeof t==`string`?_(t):t).pathname||`/`,n);if(i==null)return null;let a=C(e);T(a);let o=null;for(let e=0;o==null&&e<a.length;++e){let t=de(i);o=le(a[e],t,r)}return o}function S(e,t){let{route:n,pathname:r,params:i}=e;return{id:n.id,pathname:r,params:i,data:t[n.id],loaderData:t[n.id],handle:n.handle}}function C(e,t=[],n=[],r=``,i=!1){let a=(e,a,o=i,s)=>{let c={relativePath:s===void 0?e.path||``:s,caseSensitive:e.caseSensitive===!0,childrenIndex:a,route:e};if(c.relativePath.startsWith(`/`)){if(!c.relativePath.startsWith(r)&&o)return;d(c.relativePath.startsWith(r),`Absolute route path "${c.relativePath}" nested under path "${r}" is not valid. An absolute child route path must start with the combined path of all its parent routes.`),c.relativePath=c.relativePath.slice(r.length)}let l=k([r,c.relativePath]),u=n.concat(c);e.children&&e.children.length>0&&(d(e.index!==!0,`Index routes must not have child routes. Please remove all child routes from route path "${l}".`),C(e.children,t,u,l,o)),!(e.path==null&&!e.index)&&t.push({path:l,score:se(l,e.index),routesMeta:u})};return e.forEach((e,t)=>{if(e.path===``||!e.path?.includes(`?`))a(e,t);else for(let n of w(e.path))a(e,t,!0,n)}),t}function w(e){let t=e.split(`/`);if(t.length===0)return[];let[n,...r]=t,i=n.endsWith(`?`),a=n.replace(/\?$/,``);if(r.length===0)return i?[a,``]:[a];let o=w(r.join(`/`)),s=[];return s.push(...o.map(e=>e===``?a:[a,e].join(`/`))),i&&s.push(...o),s.map(t=>e.startsWith(`/`)&&t===``?`/`:t)}function T(e){e.sort((e,t)=>e.score===t.score?ce(e.routesMeta.map(e=>e.childrenIndex),t.routesMeta.map(e=>e.childrenIndex)):t.score-e.score)}var ee=/^:[\w-]+$/,te=3,ne=2,re=1,ie=10,ae=-2,oe=e=>e===`*`;function se(e,t){let n=e.split(`/`),r=n.length;return n.some(oe)&&(r+=ae),t&&(r+=ne),n.filter(e=>!oe(e)).reduce((e,t)=>e+(ee.test(t)?te:t===``?re:ie),r)}function ce(e,t){return e.length===t.length&&e.slice(0,-1).every((e,n)=>e===t[n])?e[e.length-1]-t[t.length-1]:0}function le(e,t,n=!1){let{routesMeta:r}=e,i={},a=`/`,o=[];for(let e=0;e<r.length;++e){let s=r[e],c=e===r.length-1,l=a===`/`?t:t.slice(a.length)||`/`,u=E({path:s.relativePath,caseSensitive:s.caseSensitive,end:c},l),d=s.route;if(!u&&c&&n&&!r[r.length-1].route.index&&(u=E({path:s.relativePath,caseSensitive:s.caseSensitive,end:!1},l)),!u)return null;Object.assign(i,u.params),o.push({params:i,pathname:k([a,u.pathname]),pathnameBase:ve(k([a,u.pathnameBase])),route:d}),u.pathnameBase!==`/`&&(a=k([a,u.pathnameBase]))}return o}function E(e,t){typeof e==`string`&&(e={path:e,caseSensitive:!1,end:!0});let[n,r]=ue(e.path,e.caseSensitive,e.end),i=t.match(n);if(!i)return null;let a=i[0],o=a.replace(/(.)\/+$/,`$1`),s=i.slice(1);return{params:r.reduce((e,{paramName:t,isOptional:n},r)=>{if(t===`*`){let e=s[r]||``;o=a.slice(0,a.length-e.length).replace(/(.)\/+$/,`$1`)}let i=s[r];return n&&!i?e[t]=void 0:e[t]=(i||``).replace(/%2F/g,`/`),e},{}),pathname:a,pathnameBase:o,pattern:e}}function ue(e,t=!1,n=!0){f(e===`*`||!e.endsWith(`*`)||e.endsWith(`/*`),`Route path "${e}" will be treated as if it were "${e.replace(/\*$/,`/*`)}" because the \`*\` character must always follow a \`/\` in the pattern. To get rid of this warning, please change the route path to "${e.replace(/\*$/,`/*`)}".`);let r=[],i=`^`+e.replace(/\/*\*?$/,``).replace(/^\/*/,`/`).replace(/[\\.*+^${}|()[\]]/g,`\\$&`).replace(/\/:([\w-]+)(\?)?/g,(e,t,n)=>(r.push({paramName:t,isOptional:n!=null}),n?`/?([^\\/]+)?`:`/([^\\/]+)`)).replace(/\/([\w-]+)\?(\/|$)/g,`(/$1)?$2`);return e.endsWith(`*`)?(r.push({paramName:`*`}),i+=e===`*`||e===`/*`?`(.*)$`:`(?:\\/(.+)|\\/*)$`):n?i+=`\\/*$`:e!==``&&e!==`/`&&(i+=`(?:(?=\\/|$))`),[new RegExp(i,t?void 0:`i`),r]}function de(e){try{return e.split(`/`).map(e=>decodeURIComponent(e).replace(/\//g,`%2F`)).join(`/`)}catch(t){return f(!1,`The URL path "${e}" could not be decoded because it is a malformed URL segment. This is probably due to a bad percent encoding (${t}).`),e}}function D(e,t){if(t===`/`)return e;if(!e.toLowerCase().startsWith(t.toLowerCase()))return null;let n=t.endsWith(`/`)?t.length-1:t.length,r=e.charAt(n);return r&&r!==`/`?null:e.slice(n)||`/`}var fe=/^(?:[a-z][a-z0-9+.-]*:|\/\/)/i;function pe(e,t=`/`){let{pathname:n,search:r=``,hash:i=``}=typeof e==`string`?_(e):e,a;return n?(n=n.replace(/\/\/+/g,`/`),a=n.startsWith(`/`)?me(n.substring(1),`/`):me(n,t)):a=t,{pathname:a,search:ye(r),hash:be(i)}}function me(e,t){let n=t.replace(/\/+$/,``).split(`/`);return e.split(`/`).forEach(e=>{e===`..`?n.length>1&&n.pop():e!==`.`&&n.push(e)}),n.length>1?n.join(`/`):`/`}function he(e,t,n,r){return`Cannot include a '${e}' character in a manually specified \`to.${t}\` field [${JSON.stringify(r)}]. Please separate it out to the \`to.${n}\` field. Alternatively you may provide the full path as a string in <Link to="..."> and the router will parse it for you.`}function ge(e){return e.filter((e,t)=>t===0||e.route.path&&e.route.path.length>0)}function O(e){let t=ge(e);return t.map((e,n)=>n===t.length-1?e.pathname:e.pathnameBase)}function _e(e,t,n,r=!1){let i;typeof e==`string`?i=_(e):(i={...e},d(!i.pathname||!i.pathname.includes(`?`),he(`?`,`pathname`,`search`,i)),d(!i.pathname||!i.pathname.includes(`#`),he(`#`,`pathname`,`hash`,i)),d(!i.search||!i.search.includes(`#`),he(`#`,`search`,`hash`,i)));let a=e===``||i.pathname===``,o=a?`/`:i.pathname,s;if(o==null)s=n;else{let e=t.length-1;if(!r&&o.startsWith(`..`)){let t=o.split(`/`);for(;t[0]===`..`;)t.shift(),--e;i.pathname=t.join(`/`)}s=e>=0?t[e]:`/`}let c=pe(i,s),l=o&&o!==`/`&&o.endsWith(`/`),u=(a||o===`.`)&&n.endsWith(`/`);return!c.pathname.endsWith(`/`)&&(l||u)&&(c.pathname+=`/`),c}var k=e=>e.join(`/`).replace(/\/\/+/g,`/`),ve=e=>e.replace(/\/+$/,``).replace(/^\/*/,`/`),ye=e=>!e||e===`?`?``:e.startsWith(`?`)?e:`?`+e,be=e=>!e||e===`#`?``:e.startsWith(`#`)?e:`#`+e,xe=class{constructor(e,t,n,r=!1){this.status=e,this.statusText=t||``,this.internal=r,n instanceof Error?(this.data=n.toString(),this.error=n):this.data=n}};function Se(e){return e!=null&&typeof e.status==`number`&&typeof e.statusText==`string`&&typeof e.internal==`boolean`&&`data`in e}function Ce(e){return e.map(e=>e.route.path).filter(Boolean).join(`/`).replace(/\/\/*/g,`/`)||`/`}var we=typeof window<`u`&&window.document!==void 0&&window.document.createElement!==void 0;function Te(e,t){let n=e;if(typeof n!=`string`||!fe.test(n))return{absoluteURL:void 0,isExternal:!1,to:n};let r=n,i=!1;if(we)try{let e=new URL(window.location.href),r=n.startsWith(`//`)?new URL(e.protocol+n):new URL(n),a=D(r.pathname,t);r.origin===e.origin&&a!=null?n=a+r.search+r.hash:i=!0}catch{f(!1,`<Link to="${n}"> contains an invalid URL which will probably break when clicked - please update to a valid URL path.`)}return{absoluteURL:r,isExternal:i,to:n}}Object.getOwnPropertyNames(Object.prototype).sort().join(`\0`);var Ee=[`POST`,`PUT`,`PATCH`,`DELETE`];new Set(Ee);var De=[`GET`,...Ee];new Set(De);var A=s.createContext(null);A.displayName=`DataRouter`;var j=s.createContext(null);j.displayName=`DataRouterState`;var Oe=s.createContext(!1),ke=s.createContext({isTransitioning:!1});ke.displayName=`ViewTransition`;var Ae=s.createContext(new Map);Ae.displayName=`Fetchers`;var je=s.createContext(null);je.displayName=`Await`;var M=s.createContext(null);M.displayName=`Navigation`;var N=s.createContext(null);N.displayName=`Location`;var P=s.createContext({outlet:null,matches:[],isDataRoute:!1});P.displayName=`Route`;var Me=s.createContext(null);Me.displayName=`RouteError`;var Ne=`REACT_ROUTER_ERROR`,Pe=`REDIRECT`,Fe=`ROUTE_ERROR_RESPONSE`;function Ie(e){if(e.startsWith(`${Ne}:${Pe}:{`))try{let t=JSON.parse(e.slice(28));if(typeof t==`object`&&t&&typeof t.status==`number`&&typeof t.statusText==`string`&&typeof t.location==`string`&&typeof t.reloadDocument==`boolean`&&typeof t.replace==`boolean`)return t}catch{}}function Le(e){if(e.startsWith(`${Ne}:${Fe}:{`))try{let t=JSON.parse(e.slice(40));if(typeof t==`object`&&t&&typeof t.status==`number`&&typeof t.statusText==`string`)return new xe(t.status,t.statusText,t.data)}catch{}}function Re(e,{relative:t}={}){d(F(),`useHref() may be used only in the context of a <Router> component.`);let{basename:n,navigator:r}=s.useContext(M),{hash:i,pathname:a,search:o}=R(e,{relative:t}),c=a;return n!==`/`&&(c=a===`/`?n:k([n,a])),r.createHref({pathname:c,search:o,hash:i})}function F(){return s.useContext(N)!=null}function I(){return d(F(),`useLocation() may be used only in the context of a <Router> component.`),s.useContext(N).location}var ze=`You should call navigate() in a React.useEffect(), not when your component is first rendered.`;function Be(e){s.useContext(M).static||s.useLayoutEffect(e)}function L(){let{isDataRoute:e}=s.useContext(P);return e?rt():Ve()}function Ve(){d(F(),`useNavigate() may be used only in the context of a <Router> component.`);let e=s.useContext(A),{basename:t,navigator:n}=s.useContext(M),{matches:r}=s.useContext(P),{pathname:i}=I(),a=JSON.stringify(O(r)),o=s.useRef(!1);return Be(()=>{o.current=!0}),s.useCallback((r,s={})=>{if(f(o.current,ze),!o.current)return;if(typeof r==`number`){n.go(r);return}let c=_e(r,JSON.parse(a),i,s.relative===`path`);e==null&&t!==`/`&&(c.pathname=c.pathname===`/`?t:k([t,c.pathname])),(s.replace?n.replace:n.push)(c,s.state,s)},[t,n,a,i,e])}s.createContext(null);function He(){let{matches:e}=s.useContext(P),t=e[e.length-1];return t?t.params:{}}function R(e,{relative:t}={}){let{matches:n}=s.useContext(P),{pathname:r}=I(),i=JSON.stringify(O(n));return s.useMemo(()=>_e(e,JSON.parse(i),r,t===`path`),[e,i,r,t])}function Ue(e,t){return We(e,t)}function We(e,t,n,r,i){d(F(),`useRoutes() may be used only in the context of a <Router> component.`);let{navigator:a}=s.useContext(M),{matches:o}=s.useContext(P),c=o[o.length-1],l=c?c.params:{},u=c?c.pathname:`/`,p=c?c.pathnameBase:`/`,m=c&&c.route;{let e=m&&m.path||``;at(u,!m||e.endsWith(`*`)||e.endsWith(`*?`),`You rendered descendant <Routes> (or called \`useRoutes()\`) at "${u}" (under <Route path="${e}">) but the parent route path has no trailing "*". This means if you navigate deeper, the parent won't match anymore and therefore the child routes will never render.
1
+ import{i as e}from"./chunk-DseTPa7n.js";import{B as t,H as n,L as r}from"./react-B7Paq2b3.js";import{t as i}from"./preload-helper-D4M6sveU.js";import{c as a}from"./dist-HFDWY6-K.js";import{t as o}from"./host-capabilities-D9C4CBK5.js";var s=e(n(),1),c=`popstate`;function l(e={}){let{initialEntries:t=[`/`],initialIndex:n,v5Compat:r=!1}=e,i;i=t.map((e,t)=>u(e,typeof e==`string`?null:e.state,t===0?`default`:void 0));let a=c(n??i.length-1),o=`POP`,s=null;function c(e){return Math.min(Math.max(e,0),i.length-1)}function l(){return i[a]}function u(e,t=null,n){let r=h(i?l().pathname:`/`,e,t,n);return f(r.pathname.charAt(0)===`/`,`relative pathnames are not supported in memory history: ${JSON.stringify(e)}`),r}function d(e){return typeof e==`string`?e:g(e)}return{get index(){return a},get action(){return o},get location(){return l()},createHref:d,createURL(e){return new URL(d(e),`http://localhost`)},encodeLocation(e){let t=typeof e==`string`?_(e):e;return{pathname:t.pathname||``,search:t.search||``,hash:t.hash||``}},push(e,t){o=`PUSH`;let n=u(e,t);a+=1,i.splice(a,i.length,n),r&&s&&s({action:o,location:n,delta:1})},replace(e,t){o=`REPLACE`;let n=u(e,t);i[a]=n,r&&s&&s({action:o,location:n,delta:0})},go(e){o=`POP`;let t=c(a+e),n=i[t];a=t,s&&s({action:o,location:n,delta:e})},listen(e){return s=e,()=>{s=null}}}}function u(e={}){function t(e,t){let{pathname:n,search:r,hash:i}=e.location;return h(``,{pathname:n,search:r,hash:i},t.state&&t.state.usr||null,t.state&&t.state.key||`default`)}function n(e,t){return typeof t==`string`?t:g(t)}return v(t,n,null,e)}function d(e,t){if(e===!1||e==null)throw Error(t)}function f(e,t){if(!e){typeof console<`u`&&console.warn(t);try{throw Error(t)}catch{}}}function p(){return Math.random().toString(36).substring(2,10)}function m(e,t){return{usr:e.state,key:e.key,idx:t}}function h(e,t,n=null,r){return{pathname:typeof e==`string`?e:e.pathname,search:``,hash:``,...typeof t==`string`?_(t):t,state:n,key:t&&t.key||r||p()}}function g({pathname:e=`/`,search:t=``,hash:n=``}){return t&&t!==`?`&&(e+=t.charAt(0)===`?`?t:`?`+t),n&&n!==`#`&&(e+=n.charAt(0)===`#`?n:`#`+n),e}function _(e){let t={};if(e){let n=e.indexOf(`#`);n>=0&&(t.hash=e.substring(n),e=e.substring(0,n));let r=e.indexOf(`?`);r>=0&&(t.search=e.substring(r),e=e.substring(0,r)),e&&(t.pathname=e)}return t}function v(e,t,n,r={}){let{window:i=document.defaultView,v5Compat:a=!1}=r,o=i.history,s=`POP`,l=null,u=d();u??(u=0,o.replaceState({...o.state,idx:u},``));function d(){return(o.state||{idx:null}).idx}function f(){s=`POP`;let e=d(),t=e==null?null:e-u;u=e,l&&l({action:s,location:v.location,delta:t})}function p(e,t){s=`PUSH`;let r=h(v.location,e,t);n&&n(r,e),u=d()+1;let c=m(r,u),f=v.createHref(r);try{o.pushState(c,``,f)}catch(e){if(e instanceof DOMException&&e.name===`DataCloneError`)throw e;i.location.assign(f)}a&&l&&l({action:s,location:v.location,delta:1})}function g(e,t){s=`REPLACE`;let r=h(v.location,e,t);n&&n(r,e),u=d();let i=m(r,u),c=v.createHref(r);o.replaceState(i,``,c),a&&l&&l({action:s,location:v.location,delta:0})}function _(e){return y(e)}let v={get action(){return s},get location(){return e(i,o)},listen(e){if(l)throw Error(`A history only accepts one active listener`);return i.addEventListener(c,f),l=e,()=>{i.removeEventListener(c,f),l=null}},createHref(e){return t(i,e)},createURL:_,encodeLocation(e){let t=_(e);return{pathname:t.pathname,search:t.search,hash:t.hash}},push:p,replace:g,go(e){return o.go(e)}};return v}function y(e,t=!1){let n=`http://localhost`;typeof window<`u`&&(n=window.location.origin===`null`?window.location.href:window.location.origin),d(n,`No window.location.(origin|href) available to create URL`);let r=typeof e==`string`?e:g(e);return r=r.replace(/ $/,`%20`),!t&&r.startsWith(`//`)&&(r=n+r),new URL(r,n)}function b(e,t,n=`/`){return x(e,t,n,!1)}function x(e,t,n,r){let i=D((typeof t==`string`?_(t):t).pathname||`/`,n);if(i==null)return null;let a=C(e);T(a);let o=null;for(let e=0;o==null&&e<a.length;++e){let t=de(i);o=le(a[e],t,r)}return o}function S(e,t){let{route:n,pathname:r,params:i}=e;return{id:n.id,pathname:r,params:i,data:t[n.id],loaderData:t[n.id],handle:n.handle}}function C(e,t=[],n=[],r=``,i=!1){let a=(e,a,o=i,s)=>{let c={relativePath:s===void 0?e.path||``:s,caseSensitive:e.caseSensitive===!0,childrenIndex:a,route:e};if(c.relativePath.startsWith(`/`)){if(!c.relativePath.startsWith(r)&&o)return;d(c.relativePath.startsWith(r),`Absolute route path "${c.relativePath}" nested under path "${r}" is not valid. An absolute child route path must start with the combined path of all its parent routes.`),c.relativePath=c.relativePath.slice(r.length)}let l=k([r,c.relativePath]),u=n.concat(c);e.children&&e.children.length>0&&(d(e.index!==!0,`Index routes must not have child routes. Please remove all child routes from route path "${l}".`),C(e.children,t,u,l,o)),!(e.path==null&&!e.index)&&t.push({path:l,score:se(l,e.index),routesMeta:u})};return e.forEach((e,t)=>{if(e.path===``||!e.path?.includes(`?`))a(e,t);else for(let n of w(e.path))a(e,t,!0,n)}),t}function w(e){let t=e.split(`/`);if(t.length===0)return[];let[n,...r]=t,i=n.endsWith(`?`),a=n.replace(/\?$/,``);if(r.length===0)return i?[a,``]:[a];let o=w(r.join(`/`)),s=[];return s.push(...o.map(e=>e===``?a:[a,e].join(`/`))),i&&s.push(...o),s.map(t=>e.startsWith(`/`)&&t===``?`/`:t)}function T(e){e.sort((e,t)=>e.score===t.score?ce(e.routesMeta.map(e=>e.childrenIndex),t.routesMeta.map(e=>e.childrenIndex)):t.score-e.score)}var ee=/^:[\w-]+$/,te=3,ne=2,re=1,ie=10,ae=-2,oe=e=>e===`*`;function se(e,t){let n=e.split(`/`),r=n.length;return n.some(oe)&&(r+=ae),t&&(r+=ne),n.filter(e=>!oe(e)).reduce((e,t)=>e+(ee.test(t)?te:t===``?re:ie),r)}function ce(e,t){return e.length===t.length&&e.slice(0,-1).every((e,n)=>e===t[n])?e[e.length-1]-t[t.length-1]:0}function le(e,t,n=!1){let{routesMeta:r}=e,i={},a=`/`,o=[];for(let e=0;e<r.length;++e){let s=r[e],c=e===r.length-1,l=a===`/`?t:t.slice(a.length)||`/`,u=E({path:s.relativePath,caseSensitive:s.caseSensitive,end:c},l),d=s.route;if(!u&&c&&n&&!r[r.length-1].route.index&&(u=E({path:s.relativePath,caseSensitive:s.caseSensitive,end:!1},l)),!u)return null;Object.assign(i,u.params),o.push({params:i,pathname:k([a,u.pathname]),pathnameBase:ve(k([a,u.pathnameBase])),route:d}),u.pathnameBase!==`/`&&(a=k([a,u.pathnameBase]))}return o}function E(e,t){typeof e==`string`&&(e={path:e,caseSensitive:!1,end:!0});let[n,r]=ue(e.path,e.caseSensitive,e.end),i=t.match(n);if(!i)return null;let a=i[0],o=a.replace(/(.)\/+$/,`$1`),s=i.slice(1);return{params:r.reduce((e,{paramName:t,isOptional:n},r)=>{if(t===`*`){let e=s[r]||``;o=a.slice(0,a.length-e.length).replace(/(.)\/+$/,`$1`)}let i=s[r];return n&&!i?e[t]=void 0:e[t]=(i||``).replace(/%2F/g,`/`),e},{}),pathname:a,pathnameBase:o,pattern:e}}function ue(e,t=!1,n=!0){f(e===`*`||!e.endsWith(`*`)||e.endsWith(`/*`),`Route path "${e}" will be treated as if it were "${e.replace(/\*$/,`/*`)}" because the \`*\` character must always follow a \`/\` in the pattern. To get rid of this warning, please change the route path to "${e.replace(/\*$/,`/*`)}".`);let r=[],i=`^`+e.replace(/\/*\*?$/,``).replace(/^\/*/,`/`).replace(/[\\.*+^${}|()[\]]/g,`\\$&`).replace(/\/:([\w-]+)(\?)?/g,(e,t,n)=>(r.push({paramName:t,isOptional:n!=null}),n?`/?([^\\/]+)?`:`/([^\\/]+)`)).replace(/\/([\w-]+)\?(\/|$)/g,`(/$1)?$2`);return e.endsWith(`*`)?(r.push({paramName:`*`}),i+=e===`*`||e===`/*`?`(.*)$`:`(?:\\/(.+)|\\/*)$`):n?i+=`\\/*$`:e!==``&&e!==`/`&&(i+=`(?:(?=\\/|$))`),[new RegExp(i,t?void 0:`i`),r]}function de(e){try{return e.split(`/`).map(e=>decodeURIComponent(e).replace(/\//g,`%2F`)).join(`/`)}catch(t){return f(!1,`The URL path "${e}" could not be decoded because it is a malformed URL segment. This is probably due to a bad percent encoding (${t}).`),e}}function D(e,t){if(t===`/`)return e;if(!e.toLowerCase().startsWith(t.toLowerCase()))return null;let n=t.endsWith(`/`)?t.length-1:t.length,r=e.charAt(n);return r&&r!==`/`?null:e.slice(n)||`/`}var fe=/^(?:[a-z][a-z0-9+.-]*:|\/\/)/i;function pe(e,t=`/`){let{pathname:n,search:r=``,hash:i=``}=typeof e==`string`?_(e):e,a;return n?(n=n.replace(/\/\/+/g,`/`),a=n.startsWith(`/`)?me(n.substring(1),`/`):me(n,t)):a=t,{pathname:a,search:ye(r),hash:be(i)}}function me(e,t){let n=t.replace(/\/+$/,``).split(`/`);return e.split(`/`).forEach(e=>{e===`..`?n.length>1&&n.pop():e!==`.`&&n.push(e)}),n.length>1?n.join(`/`):`/`}function he(e,t,n,r){return`Cannot include a '${e}' character in a manually specified \`to.${t}\` field [${JSON.stringify(r)}]. Please separate it out to the \`to.${n}\` field. Alternatively you may provide the full path as a string in <Link to="..."> and the router will parse it for you.`}function ge(e){return e.filter((e,t)=>t===0||e.route.path&&e.route.path.length>0)}function O(e){let t=ge(e);return t.map((e,n)=>n===t.length-1?e.pathname:e.pathnameBase)}function _e(e,t,n,r=!1){let i;typeof e==`string`?i=_(e):(i={...e},d(!i.pathname||!i.pathname.includes(`?`),he(`?`,`pathname`,`search`,i)),d(!i.pathname||!i.pathname.includes(`#`),he(`#`,`pathname`,`hash`,i)),d(!i.search||!i.search.includes(`#`),he(`#`,`search`,`hash`,i)));let a=e===``||i.pathname===``,o=a?`/`:i.pathname,s;if(o==null)s=n;else{let e=t.length-1;if(!r&&o.startsWith(`..`)){let t=o.split(`/`);for(;t[0]===`..`;)t.shift(),--e;i.pathname=t.join(`/`)}s=e>=0?t[e]:`/`}let c=pe(i,s),l=o&&o!==`/`&&o.endsWith(`/`),u=(a||o===`.`)&&n.endsWith(`/`);return!c.pathname.endsWith(`/`)&&(l||u)&&(c.pathname+=`/`),c}var k=e=>e.join(`/`).replace(/\/\/+/g,`/`),ve=e=>e.replace(/\/+$/,``).replace(/^\/*/,`/`),ye=e=>!e||e===`?`?``:e.startsWith(`?`)?e:`?`+e,be=e=>!e||e===`#`?``:e.startsWith(`#`)?e:`#`+e,xe=class{constructor(e,t,n,r=!1){this.status=e,this.statusText=t||``,this.internal=r,n instanceof Error?(this.data=n.toString(),this.error=n):this.data=n}};function Se(e){return e!=null&&typeof e.status==`number`&&typeof e.statusText==`string`&&typeof e.internal==`boolean`&&`data`in e}function Ce(e){return e.map(e=>e.route.path).filter(Boolean).join(`/`).replace(/\/\/*/g,`/`)||`/`}var we=typeof window<`u`&&window.document!==void 0&&window.document.createElement!==void 0;function Te(e,t){let n=e;if(typeof n!=`string`||!fe.test(n))return{absoluteURL:void 0,isExternal:!1,to:n};let r=n,i=!1;if(we)try{let e=new URL(window.location.href),r=n.startsWith(`//`)?new URL(e.protocol+n):new URL(n),a=D(r.pathname,t);r.origin===e.origin&&a!=null?n=a+r.search+r.hash:i=!0}catch{f(!1,`<Link to="${n}"> contains an invalid URL which will probably break when clicked - please update to a valid URL path.`)}return{absoluteURL:r,isExternal:i,to:n}}Object.getOwnPropertyNames(Object.prototype).sort().join(`\0`);var Ee=[`POST`,`PUT`,`PATCH`,`DELETE`];new Set(Ee);var De=[`GET`,...Ee];new Set(De);var A=s.createContext(null);A.displayName=`DataRouter`;var j=s.createContext(null);j.displayName=`DataRouterState`;var Oe=s.createContext(!1),ke=s.createContext({isTransitioning:!1});ke.displayName=`ViewTransition`;var Ae=s.createContext(new Map);Ae.displayName=`Fetchers`;var je=s.createContext(null);je.displayName=`Await`;var M=s.createContext(null);M.displayName=`Navigation`;var N=s.createContext(null);N.displayName=`Location`;var P=s.createContext({outlet:null,matches:[],isDataRoute:!1});P.displayName=`Route`;var Me=s.createContext(null);Me.displayName=`RouteError`;var Ne=`REACT_ROUTER_ERROR`,Pe=`REDIRECT`,Fe=`ROUTE_ERROR_RESPONSE`;function Ie(e){if(e.startsWith(`${Ne}:${Pe}:{`))try{let t=JSON.parse(e.slice(28));if(typeof t==`object`&&t&&typeof t.status==`number`&&typeof t.statusText==`string`&&typeof t.location==`string`&&typeof t.reloadDocument==`boolean`&&typeof t.replace==`boolean`)return t}catch{}}function Le(e){if(e.startsWith(`${Ne}:${Fe}:{`))try{let t=JSON.parse(e.slice(40));if(typeof t==`object`&&t&&typeof t.status==`number`&&typeof t.statusText==`string`)return new xe(t.status,t.statusText,t.data)}catch{}}function Re(e,{relative:t}={}){d(F(),`useHref() may be used only in the context of a <Router> component.`);let{basename:n,navigator:r}=s.useContext(M),{hash:i,pathname:a,search:o}=R(e,{relative:t}),c=a;return n!==`/`&&(c=a===`/`?n:k([n,a])),r.createHref({pathname:c,search:o,hash:i})}function F(){return s.useContext(N)!=null}function I(){return d(F(),`useLocation() may be used only in the context of a <Router> component.`),s.useContext(N).location}var ze=`You should call navigate() in a React.useEffect(), not when your component is first rendered.`;function Be(e){s.useContext(M).static||s.useLayoutEffect(e)}function L(){let{isDataRoute:e}=s.useContext(P);return e?rt():Ve()}function Ve(){d(F(),`useNavigate() may be used only in the context of a <Router> component.`);let e=s.useContext(A),{basename:t,navigator:n}=s.useContext(M),{matches:r}=s.useContext(P),{pathname:i}=I(),a=JSON.stringify(O(r)),o=s.useRef(!1);return Be(()=>{o.current=!0}),s.useCallback((r,s={})=>{if(f(o.current,ze),!o.current)return;if(typeof r==`number`){n.go(r);return}let c=_e(r,JSON.parse(a),i,s.relative===`path`);e==null&&t!==`/`&&(c.pathname=c.pathname===`/`?t:k([t,c.pathname])),(s.replace?n.replace:n.push)(c,s.state,s)},[t,n,a,i,e])}s.createContext(null);function He(){let{matches:e}=s.useContext(P),t=e[e.length-1];return t?t.params:{}}function R(e,{relative:t}={}){let{matches:n}=s.useContext(P),{pathname:r}=I(),i=JSON.stringify(O(n));return s.useMemo(()=>_e(e,JSON.parse(i),r,t===`path`),[e,i,r,t])}function Ue(e,t){return We(e,t)}function We(e,t,n,r,i){d(F(),`useRoutes() may be used only in the context of a <Router> component.`);let{navigator:a}=s.useContext(M),{matches:o}=s.useContext(P),c=o[o.length-1],l=c?c.params:{},u=c?c.pathname:`/`,p=c?c.pathnameBase:`/`,m=c&&c.route;{let e=m&&m.path||``;at(u,!m||e.endsWith(`*`)||e.endsWith(`*?`),`You rendered descendant <Routes> (or called \`useRoutes()\`) at "${u}" (under <Route path="${e}">) but the parent route path has no trailing "*". This means if you navigate deeper, the parent won't match anymore and therefore the child routes will never render.
2
2
 
3
- Please change the parent <Route path="${e}"> to <Route path="${e===`/`?`*`:`${e}/*`}">.`)}let h=I(),g;if(t){let e=typeof t==`string`?_(t):t;d(p===`/`||e.pathname?.startsWith(p),`When overriding the location using \`<Routes location>\` or \`useRoutes(routes, location)\`, the location pathname must begin with the portion of the URL pathname that was matched by all parent routes. The current pathname base is "${p}" but pathname "${e.pathname}" was given in the \`location\` prop.`),g=e}else g=h;let v=g.pathname||`/`,y=v;if(p!==`/`){let e=p.replace(/^\//,``).split(`/`);y=`/`+v.replace(/^\//,``).split(`/`).slice(e.length).join(`/`)}let x=b(e,{pathname:y});f(m||x!=null,`No routes matched location "${g.pathname}${g.search}${g.hash}" `),f(x==null||x[x.length-1].route.element!==void 0||x[x.length-1].route.Component!==void 0||x[x.length-1].route.lazy!==void 0,`Matched leaf route at location "${g.pathname}${g.search}${g.hash}" does not have an element or Component. This means it will render an <Outlet /> with a null value by default resulting in an "empty" page.`);let S=Xe(x&&x.map(e=>Object.assign({},e,{params:Object.assign({},l,e.params),pathname:k([p,a.encodeLocation?a.encodeLocation(e.pathname.replace(/\?/g,`%3F`).replace(/#/g,`%23`)).pathname:e.pathname]),pathnameBase:e.pathnameBase===`/`?p:k([p,a.encodeLocation?a.encodeLocation(e.pathnameBase.replace(/\?/g,`%3F`).replace(/#/g,`%23`)).pathname:e.pathnameBase])})),o,n,r,i);return t&&S?s.createElement(N.Provider,{value:{location:{pathname:`/`,search:``,hash:``,state:null,key:`default`,...g},navigationType:`POP`}},S):S}function Ge(){let e=nt(),t=Se(e)?`${e.status} ${e.statusText}`:e instanceof Error?e.message:JSON.stringify(e),n=e instanceof Error?e.stack:null,r=`rgba(200,200,200, 0.5)`,i={padding:`0.5rem`,backgroundColor:r},a={padding:`2px 4px`,backgroundColor:r},o=null;return console.error(`Error handled by React Router default ErrorBoundary:`,e),o=s.createElement(s.Fragment,null,s.createElement(`p`,null,`💿 Hey developer 👋`),s.createElement(`p`,null,`You can provide a way better UX than this when your app throws errors by providing your own `,s.createElement(`code`,{style:a},`ErrorBoundary`),` or`,` `,s.createElement(`code`,{style:a},`errorElement`),` prop on your route.`)),s.createElement(s.Fragment,null,s.createElement(`h2`,null,`Unexpected Application Error!`),s.createElement(`h3`,{style:{fontStyle:`italic`}},t),n?s.createElement(`pre`,{style:i},n):null,o)}var Ke=s.createElement(Ge,null),qe=class extends s.Component{constructor(e){super(e),this.state={location:e.location,revalidation:e.revalidation,error:e.error}}static getDerivedStateFromError(e){return{error:e}}static getDerivedStateFromProps(e,t){return t.location!==e.location||t.revalidation!==`idle`&&e.revalidation===`idle`?{error:e.error,location:e.location,revalidation:e.revalidation}:{error:e.error===void 0?t.error:e.error,location:t.location,revalidation:e.revalidation||t.revalidation}}componentDidCatch(e,t){this.props.onError?this.props.onError(e,t):console.error(`React Router caught the following error during render`,e)}render(){let e=this.state.error;if(this.context&&typeof e==`object`&&e&&`digest`in e&&typeof e.digest==`string`){let t=Le(e.digest);t&&(e=t)}let t=e===void 0?this.props.children:s.createElement(P.Provider,{value:this.props.routeContext},s.createElement(Me.Provider,{value:e,children:this.props.component}));return this.context?s.createElement(Je,{error:e},t):t}};qe.contextType=Oe;var z=new WeakMap;function Je({children:e,error:t}){let{basename:n}=s.useContext(M);if(typeof t==`object`&&t&&`digest`in t&&typeof t.digest==`string`){let e=Ie(t.digest);if(e){let r=z.get(t);if(r)throw r;let i=Te(e.location,n);if(we&&!z.get(t))if(i.isExternal||e.reloadDocument)window.location.href=i.absoluteURL||i.to;else{let n=Promise.resolve().then(()=>window.__reactRouterDataRouter.navigate(i.to,{replace:e.replace}));throw z.set(t,n),n}return s.createElement(`meta`,{httpEquiv:`refresh`,content:`0;url=${i.absoluteURL||i.to}`})}}return e}function Ye({routeContext:e,match:t,children:n}){let r=s.useContext(A);return r&&r.static&&r.staticContext&&(t.route.errorElement||t.route.ErrorBoundary)&&(r.staticContext._deepestRenderedBoundaryId=t.route.id),s.createElement(P.Provider,{value:e},n)}function Xe(e,t=[],n=null,r=null,i=null){if(e==null){if(!n)return null;if(n.errors)e=n.matches;else if(t.length===0&&!n.initialized&&n.matches.length>0)e=n.matches;else return null}let a=e,o=n?.errors;if(o!=null){let e=a.findIndex(e=>e.route.id&&o?.[e.route.id]!==void 0);d(e>=0,`Could not find a matching route for errors on route IDs: ${Object.keys(o).join(`,`)}`),a=a.slice(0,Math.min(a.length,e+1))}let c=!1,l=-1;if(n)for(let e=0;e<a.length;e++){let t=a[e];if((t.route.HydrateFallback||t.route.hydrateFallbackElement)&&(l=e),t.route.id){let{loaderData:e,errors:r}=n,i=t.route.loader&&!e.hasOwnProperty(t.route.id)&&(!r||r[t.route.id]===void 0);if(t.route.lazy||i){c=!0,a=l>=0?a.slice(0,l+1):[a[0]];break}}}let u=n&&r?(e,t)=>{r(e,{location:n.location,params:n.matches?.[0]?.params??{},unstable_pattern:Ce(n.matches),errorInfo:t})}:void 0;return a.reduceRight((e,r,i)=>{let d,f=!1,p=null,m=null;n&&(d=o&&r.route.id?o[r.route.id]:void 0,p=r.route.errorElement||Ke,c&&(l<0&&i===0?(at(`route-fallback`,!1,"No `HydrateFallback` element provided to render during initial hydration"),f=!0,m=null):l===i&&(f=!0,m=r.route.hydrateFallbackElement||null)));let h=t.concat(a.slice(0,i+1)),g=()=>{let t;return t=d?p:f?m:r.route.Component?s.createElement(r.route.Component,null):r.route.element?r.route.element:e,s.createElement(Ye,{match:r,routeContext:{outlet:e,matches:h,isDataRoute:n!=null},children:t})};return n&&(r.route.ErrorBoundary||r.route.errorElement||i===0)?s.createElement(qe,{location:n.location,revalidation:n.revalidation,component:p,error:d,children:g(),routeContext:{outlet:null,matches:h,isDataRoute:!0},onError:u}):g()},null)}function B(e){return`${e} must be used within a data router. See https://reactrouter.com/en/main/routers/picking-a-router.`}function Ze(e){let t=s.useContext(A);return d(t,B(e)),t}function V(e){let t=s.useContext(j);return d(t,B(e)),t}function Qe(e){let t=s.useContext(P);return d(t,B(e)),t}function H(e){let t=Qe(e),n=t.matches[t.matches.length-1];return d(n.route.id,`${e} can only be used on routes that contain a unique "id"`),n.route.id}function $e(){return H(`useRouteId`)}function et(){return V(`useNavigation`).navigation}function tt(){let{matches:e,loaderData:t}=V(`useMatches`);return s.useMemo(()=>e.map(e=>S(e,t)),[e,t])}function nt(){let e=s.useContext(Me),t=V(`useRouteError`),n=H(`useRouteError`);return e===void 0?t.errors?.[n]:e}function rt(){let{router:e}=Ze(`useNavigate`),t=H(`useNavigate`),n=s.useRef(!1);return Be(()=>{n.current=!0}),s.useCallback(async(r,i={})=>{f(n.current,ze),n.current&&(typeof r==`number`?await e.navigate(r):await e.navigate(r,{fromRouteId:t,...i}))},[e,t])}var it={};function at(e,t,n){!t&&!it[e]&&(it[e]=!0,f(!1,n))}s.useOptimistic,s.memo(ot);function ot({routes:e,future:t,state:n,onError:r}){return We(e,void 0,n,r,t)}function st({basename:e,children:t,initialEntries:n,initialIndex:r,unstable_useTransitions:i}){let a=s.useRef();a.current??=l({initialEntries:n,initialIndex:r,v5Compat:!0});let o=a.current,[c,u]=s.useState({action:o.action,location:o.location}),d=s.useCallback(e=>{i===!1?u(e):s.startTransition(()=>u(e))},[i]);return s.useLayoutEffect(()=>o.listen(d),[o,d]),s.createElement(U,{basename:e,children:t,location:c.location,navigationType:c.action,navigator:o,unstable_useTransitions:i})}function ct({to:e,replace:t,state:n,relative:r}){d(F(),`<Navigate> may be used only in the context of a <Router> component.`);let{static:i}=s.useContext(M);f(!i,`<Navigate> must not be used on the initial render in a <StaticRouter>. This is a no-op, but you should modify your code so the <Navigate> is only ever rendered in response to some user interaction or state change.`);let{matches:a}=s.useContext(P),{pathname:o}=I(),c=L(),l=_e(e,O(a),o,r===`path`),u=JSON.stringify(l);return s.useEffect(()=>{c(JSON.parse(u),{replace:t,state:n,relative:r})},[c,u,r,t,n]),null}function lt(e){d(!1,`A <Route> is only ever to be used as the child of <Routes> element, never rendered directly. Please wrap your <Route> in a <Routes>.`)}function U({basename:e=`/`,children:t=null,location:n,navigationType:r=`POP`,navigator:i,static:a=!1,unstable_useTransitions:o}){d(!F(),`You cannot render a <Router> inside another <Router>. You should never have more than one in your app.`);let c=e.replace(/^\/*/,`/`),l=s.useMemo(()=>({basename:c,navigator:i,static:a,unstable_useTransitions:o,future:{}}),[c,i,a,o]);typeof n==`string`&&(n=_(n));let{pathname:u=`/`,search:p=``,hash:m=``,state:h=null,key:g=`default`}=n,v=s.useMemo(()=>{let e=D(u,c);return e==null?null:{location:{pathname:e,search:p,hash:m,state:h,key:g},navigationType:r}},[c,u,p,m,h,g,r]);return f(v!=null,`<Router basename="${c}"> is not able to match the URL "${u}${p}${m}" because it does not start with the basename, so the <Router> won't render anything.`),v==null?null:s.createElement(M.Provider,{value:l},s.createElement(N.Provider,{children:t,value:v}))}function ut({children:e,location:t}){return Ue(W(e),t)}s.Component;function W(e,t=[]){let n=[];return s.Children.forEach(e,(e,r)=>{if(!s.isValidElement(e))return;let i=[...t,r];if(e.type===s.Fragment){n.push.apply(n,W(e.props.children,i));return}d(e.type===lt,`[${typeof e.type==`string`?e.type:e.type.name}] is not a <Route> component. All component children of <Routes> must be a <Route> or <React.Fragment>`),d(!e.props.index||!e.props.children,`An index route cannot have child routes.`);let a={id:e.props.id||i.join(`-`),caseSensitive:e.props.caseSensitive,element:e.props.element,Component:e.props.Component,index:e.props.index,path:e.props.path,middleware:e.props.middleware,loader:e.props.loader,action:e.props.action,hydrateFallbackElement:e.props.hydrateFallbackElement,HydrateFallback:e.props.HydrateFallback,errorElement:e.props.errorElement,ErrorBoundary:e.props.ErrorBoundary,hasErrorBoundary:e.props.hasErrorBoundary===!0||e.props.ErrorBoundary!=null||e.props.errorElement!=null,shouldRevalidate:e.props.shouldRevalidate,handle:e.props.handle,lazy:e.props.lazy};e.props.children&&(a.children=W(e.props.children,i)),n.push(a)}),n}var G=`get`,K=`application/x-www-form-urlencoded`;function q(e){return typeof HTMLElement<`u`&&e instanceof HTMLElement}function dt(e){return q(e)&&e.tagName.toLowerCase()===`button`}function ft(e){return q(e)&&e.tagName.toLowerCase()===`form`}function pt(e){return q(e)&&e.tagName.toLowerCase()===`input`}function mt(e){return!!(e.metaKey||e.altKey||e.ctrlKey||e.shiftKey)}function ht(e,t){return e.button===0&&(!t||t===`_self`)&&!mt(e)}var J=null;function gt(){if(J===null)try{new FormData(document.createElement(`form`),0),J=!1}catch{J=!0}return J}var _t=new Set([`application/x-www-form-urlencoded`,`multipart/form-data`,`text/plain`]);function vt(e){return e!=null&&!_t.has(e)?(f(!1,`"${e}" is not a valid \`encType\` for \`<Form>\`/\`<fetcher.Form>\` and will default to "${K}"`),null):e}function yt(e,t){let n,r,i,a,o;if(ft(e)){let o=e.getAttribute(`action`);r=o?D(o,t):null,n=e.getAttribute(`method`)||G,i=vt(e.getAttribute(`enctype`))||K,a=new FormData(e)}else if(dt(e)||pt(e)&&(e.type===`submit`||e.type===`image`)){let o=e.form;if(o==null)throw Error(`Cannot submit a <button> or <input type="submit"> without a <form>`);let s=e.getAttribute(`formaction`)||o.getAttribute(`action`);if(r=s?D(s,t):null,n=e.getAttribute(`formmethod`)||o.getAttribute(`method`)||G,i=vt(e.getAttribute(`formenctype`))||vt(o.getAttribute(`enctype`))||K,a=new FormData(o,e),!gt()){let{name:t,type:n,value:r}=e;if(n===`image`){let e=t?`${t}.`:``;a.append(`${e}x`,`0`),a.append(`${e}y`,`0`)}else t&&a.append(t,r)}}else if(q(e))throw Error(`Cannot submit element that is not <form>, <button>, or <input type="submit|image">`);else n=G,r=null,i=K,o=e;return a&&i===`text/plain`&&(o=a,a=void 0),{action:r,method:n.toLowerCase(),encType:i,formData:a,body:o}}Object.getOwnPropertyNames(Object.prototype).sort().join(`\0`);var bt={"&":`\\u0026`,">":`\\u003e`,"<":`\\u003c`,"\u2028":`\\u2028`,"\u2029":`\\u2029`},xt=/[&><\u2028\u2029]/g;function St(e){return e.replace(xt,e=>bt[e])}function Ct(e,t){if(e===!1||e==null)throw Error(t)}function wt(e,t,n,r){let i=typeof e==`string`?new URL(e,typeof window>`u`?`server://singlefetch/`:window.location.origin):e;return n?i.pathname.endsWith(`/`)?i.pathname=`${i.pathname}_.${r}`:i.pathname=`${i.pathname}.${r}`:i.pathname===`/`?i.pathname=`_root.${r}`:t&&D(i.pathname,t)===`/`?i.pathname=`${t.replace(/\/$/,``)}/_root.${r}`:i.pathname=`${i.pathname.replace(/\/$/,``)}.${r}`,i}async function Tt(e,t){if(e.id in t)return t[e.id];try{let n=await i(()=>import(e.module),[]);return t[e.id]=n,n}catch(t){return console.error(`Error loading route module \`${e.module}\`, reloading page...`),console.error(t),window.__reactRouterContext&&window.__reactRouterContext.isSpaMode,window.location.reload(),new Promise(()=>{})}}function Et(e){return e!=null&&typeof e.page==`string`}function Dt(e){return e==null?!1:e.href==null?e.rel===`preload`&&typeof e.imageSrcSet==`string`&&typeof e.imageSizes==`string`:typeof e.rel==`string`&&typeof e.href==`string`}async function Ot(e,t,n){return Nt((await Promise.all(e.map(async e=>{let r=t.routes[e.route.id];if(r){let e=await Tt(r,n);return e.links?e.links():[]}return[]}))).flat(1).filter(Dt).filter(e=>e.rel===`stylesheet`||e.rel===`preload`).map(e=>e.rel===`stylesheet`?{...e,rel:`prefetch`,as:`style`}:{...e,rel:`prefetch`}))}function kt(e,t,n,r,i,a){let o=(e,t)=>n[t]?e.route.id!==n[t].route.id:!0,s=(e,t)=>n[t].pathname!==e.pathname||n[t].route.path?.endsWith(`*`)&&n[t].params[`*`]!==e.params[`*`];return a===`assets`?t.filter((e,t)=>o(e,t)||s(e,t)):a===`data`?t.filter((t,a)=>{let c=r.routes[t.route.id];if(!c||!c.hasLoader)return!1;if(o(t,a)||s(t,a))return!0;if(t.route.shouldRevalidate){let r=t.route.shouldRevalidate({currentUrl:new URL(i.pathname+i.search+i.hash,window.origin),currentParams:n[0]?.params||{},nextUrl:new URL(e,window.origin),nextParams:t.params,defaultShouldRevalidate:!0});if(typeof r==`boolean`)return r}return!0}):[]}function At(e,t,{includeHydrateFallback:n}={}){return jt(e.map(e=>{let r=t.routes[e.route.id];if(!r)return[];let i=[r.module];return r.clientActionModule&&(i=i.concat(r.clientActionModule)),r.clientLoaderModule&&(i=i.concat(r.clientLoaderModule)),n&&r.hydrateFallbackModule&&(i=i.concat(r.hydrateFallbackModule)),r.imports&&(i=i.concat(r.imports)),i}).flat(1))}function jt(e){return[...new Set(e)]}function Mt(e){let t={},n=Object.keys(e).sort();for(let r of n)t[r]=e[r];return t}function Nt(e,t){let n=new Set,r=new Set(t);return e.reduce((e,i)=>{if(t&&!Et(i)&&i.as===`script`&&i.href&&r.has(i.href))return e;let a=JSON.stringify(Mt(i));return n.has(a)||(n.add(a),e.push({key:a,link:i})),e},[])}function Pt(){let e=s.useContext(A);return Ct(e,`You must render this element inside a <DataRouterContext.Provider> element`),e}function Ft(){let e=s.useContext(j);return Ct(e,`You must render this element inside a <DataRouterStateContext.Provider> element`),e}var Y=s.createContext(void 0);Y.displayName=`FrameworkContext`;function It(){let e=s.useContext(Y);return Ct(e,`You must render this element inside a <HydratedRouter> element`),e}function Lt(e,t){let n=s.useContext(Y),[r,i]=s.useState(!1),[a,o]=s.useState(!1),{onFocus:c,onBlur:l,onMouseEnter:u,onMouseLeave:d,onTouchStart:f}=t,p=s.useRef(null);s.useEffect(()=>{if(e===`render`&&o(!0),e===`viewport`){let e=new IntersectionObserver(e=>{e.forEach(e=>{o(e.isIntersecting)})},{threshold:.5});return p.current&&e.observe(p.current),()=>{e.disconnect()}}},[e]),s.useEffect(()=>{if(r){let e=setTimeout(()=>{o(!0)},100);return()=>{clearTimeout(e)}}},[r]);let m=()=>{i(!0)},h=()=>{i(!1),o(!1)};return n?e===`intent`?[a,p,{onFocus:X(c,m),onBlur:X(l,h),onMouseEnter:X(u,m),onMouseLeave:X(d,h),onTouchStart:X(f,m)}]:[a,p,{}]:[!1,p,{}]}function X(e,t){return n=>{e&&e(n),n.defaultPrevented||t(n)}}function Rt({page:e,...t}){let{router:n}=Pt(),r=s.useMemo(()=>b(n.routes,e,n.basename),[n.routes,e,n.basename]);return r?s.createElement(Bt,{page:e,matches:r,...t}):null}function zt(e){let{manifest:t,routeModules:n}=It(),[r,i]=s.useState([]);return s.useEffect(()=>{let r=!1;return Ot(e,t,n).then(e=>{r||i(e)}),()=>{r=!0}},[e,t,n]),r}function Bt({page:e,matches:t,...n}){let r=I(),{future:i,manifest:a,routeModules:o}=It(),{basename:c}=Pt(),{loaderData:l,matches:u}=Ft(),d=s.useMemo(()=>kt(e,t,u,a,r,`data`),[e,t,u,a,r]),f=s.useMemo(()=>kt(e,t,u,a,r,`assets`),[e,t,u,a,r]),p=s.useMemo(()=>{if(e===r.pathname+r.search+r.hash)return[];let n=new Set,s=!1;if(t.forEach(e=>{let t=a.routes[e.route.id];!t||!t.hasLoader||(!d.some(t=>t.route.id===e.route.id)&&e.route.id in l&&o[e.route.id]?.shouldRevalidate||t.hasClientLoader?s=!0:n.add(e.route.id))}),n.size===0)return[];let u=wt(e,c,i.unstable_trailingSlashAwareDataRequests,`data`);return s&&n.size>0&&u.searchParams.set(`_routes`,t.filter(e=>n.has(e.route.id)).map(e=>e.route.id).join(`,`)),[u.pathname+u.search]},[c,i.unstable_trailingSlashAwareDataRequests,l,r,a,d,t,e,o]),m=s.useMemo(()=>At(f,a),[f,a]),h=zt(f);return s.createElement(s.Fragment,null,p.map(e=>s.createElement(`link`,{key:e,rel:`prefetch`,as:`fetch`,href:e,...n})),m.map(e=>s.createElement(`link`,{key:e,rel:`modulepreload`,href:e,...n})),h.map(({key:e,link:t})=>s.createElement(`link`,{key:e,nonce:n.nonce,...t,crossOrigin:t.crossOrigin??n.crossOrigin})))}function Vt(...e){return t=>{e.forEach(e=>{typeof e==`function`?e(t):e!=null&&(e.current=t)})}}s.Component;var Ht=typeof window<`u`&&window.document!==void 0&&window.document.createElement!==void 0;try{Ht&&(window.__reactRouterVersion=`7.13.0`)}catch{}function Ut({basename:e,children:t,unstable_useTransitions:n,window:r}){let i=s.useRef();i.current??=u({window:r,v5Compat:!0});let a=i.current,[o,c]=s.useState({action:a.action,location:a.location}),l=s.useCallback(e=>{n===!1?c(e):s.startTransition(()=>c(e))},[n]);return s.useLayoutEffect(()=>a.listen(l),[a,l]),s.createElement(U,{basename:e,children:t,location:o.location,navigationType:o.action,navigator:a,unstable_useTransitions:n})}function Wt({basename:e,children:t,history:n,unstable_useTransitions:r}){let[i,a]=s.useState({action:n.action,location:n.location}),o=s.useCallback(e=>{r===!1?a(e):s.startTransition(()=>a(e))},[r]);return s.useLayoutEffect(()=>n.listen(o),[n,o]),s.createElement(U,{basename:e,children:t,location:i.location,navigationType:i.action,navigator:n,unstable_useTransitions:r})}Wt.displayName=`unstable_HistoryRouter`;var Gt=/^(?:[a-z][a-z0-9+.-]*:|\/\/)/i,Z=s.forwardRef(function({onClick:e,discover:t=`render`,prefetch:n=`none`,relative:r,reloadDocument:i,replace:a,state:o,target:c,to:l,preventScrollReset:u,viewTransition:d,unstable_defaultShouldRevalidate:f,...p},m){let{basename:h,unstable_useTransitions:g}=s.useContext(M),_=typeof l==`string`&&Gt.test(l),v=Te(l,h);l=v.to;let y=Re(l,{relative:r}),[b,x,S]=Lt(n,p),C=Qt(l,{replace:a,state:o,target:c,preventScrollReset:u,relative:r,viewTransition:d,unstable_defaultShouldRevalidate:f,unstable_useTransitions:g});function w(t){e&&e(t),t.defaultPrevented||C(t)}let T=s.createElement(`a`,{...p,...S,href:v.absoluteURL||y,onClick:v.isExternal||i?e:w,ref:Vt(m,x),target:c,"data-discover":!_&&t===`render`?`true`:void 0});return b&&!_?s.createElement(s.Fragment,null,T,s.createElement(Rt,{page:y})):T});Z.displayName=`Link`;var Kt=s.forwardRef(function({"aria-current":e=`page`,caseSensitive:t=!1,className:n=``,end:r=!1,style:i,to:a,viewTransition:o,children:c,...l},u){let d=R(a,{relative:l.relative}),f=I(),p=s.useContext(j),{navigator:m,basename:h}=s.useContext(M),g=p!=null&&cn(d)&&o===!0,_=m.encodeLocation?m.encodeLocation(d).pathname:d.pathname,v=f.pathname,y=p&&p.navigation&&p.navigation.location?p.navigation.location.pathname:null;t||(v=v.toLowerCase(),y=y?y.toLowerCase():null,_=_.toLowerCase()),y&&h&&(y=D(y,h)||y);let b=_!==`/`&&_.endsWith(`/`)?_.length-1:_.length,x=v===_||!r&&v.startsWith(_)&&v.charAt(b)===`/`,S=y!=null&&(y===_||!r&&y.startsWith(_)&&y.charAt(_.length)===`/`),C={isActive:x,isPending:S,isTransitioning:g},w=x?e:void 0,T;T=typeof n==`function`?n(C):[n,x?`active`:null,S?`pending`:null,g?`transitioning`:null].filter(Boolean).join(` `);let ee=typeof i==`function`?i(C):i;return s.createElement(Z,{...l,"aria-current":w,className:T,ref:u,style:ee,to:a,viewTransition:o},typeof c==`function`?c(C):c)});Kt.displayName=`NavLink`;var qt=s.forwardRef(({discover:e=`render`,fetcherKey:t,navigate:n,reloadDocument:r,replace:i,state:a,method:o=G,action:c,onSubmit:l,relative:u,preventScrollReset:d,viewTransition:f,unstable_defaultShouldRevalidate:p,...m},h)=>{let{unstable_useTransitions:g}=s.useContext(M),_=tn(),v=nn(c,{relative:u}),y=o.toLowerCase()===`get`?`get`:`post`,b=typeof c==`string`&&Gt.test(c);return s.createElement(`form`,{ref:h,method:y,action:v,onSubmit:r?l:e=>{if(l&&l(e),e.defaultPrevented)return;e.preventDefault();let r=e.nativeEvent.submitter,c=r?.getAttribute(`formmethod`)||o,m=()=>_(r||e.currentTarget,{fetcherKey:t,method:c,navigate:n,replace:i,state:a,relative:u,preventScrollReset:d,viewTransition:f,unstable_defaultShouldRevalidate:p});g&&n!==!1?s.startTransition(()=>m()):m()},...m,"data-discover":!b&&e===`render`?`true`:void 0})});qt.displayName=`Form`;function Jt({getKey:e,storageKey:t,...n}){let r=s.useContext(Y),{basename:i}=s.useContext(M),a=I(),o=tt();on({getKey:e,storageKey:t});let c=s.useMemo(()=>{if(!r||!e)return null;let t=an(a,o,i,e);return t===a.key?null:t},[]);if(!r||r.isSpaMode)return null;let l=((e,t)=>{if(!window.history.state||!window.history.state.key){let e=Math.random().toString(32).slice(2);window.history.replaceState({key:e},``)}try{let n=JSON.parse(sessionStorage.getItem(e)||`{}`)[t||window.history.state.key];typeof n==`number`&&window.scrollTo(0,n)}catch(t){console.error(t),sessionStorage.removeItem(e)}}).toString();return s.createElement(`script`,{...n,suppressHydrationWarning:!0,dangerouslySetInnerHTML:{__html:`(${l})(${St(JSON.stringify(t||rn))}, ${St(JSON.stringify(c))})`}})}Jt.displayName=`ScrollRestoration`;function Yt(e){return`${e} must be used within a data router. See https://reactrouter.com/en/main/routers/picking-a-router.`}function Xt(e){let t=s.useContext(A);return d(t,Yt(e)),t}function Zt(e){let t=s.useContext(j);return d(t,Yt(e)),t}function Qt(e,{target:t,replace:n,state:r,preventScrollReset:i,relative:a,viewTransition:o,unstable_defaultShouldRevalidate:c,unstable_useTransitions:l}={}){let u=L(),d=I(),f=R(e,{relative:a});return s.useCallback(p=>{if(ht(p,t)){p.preventDefault();let t=n===void 0?g(d)===g(f):n,m=()=>u(e,{replace:t,state:r,preventScrollReset:i,relative:a,viewTransition:o,unstable_defaultShouldRevalidate:c});l?s.startTransition(()=>m()):m()}},[d,u,f,n,r,t,e,i,a,o,c,l])}var $t=0,en=()=>`__${String(++$t)}__`;function tn(){let{router:e}=Xt(`useSubmit`),{basename:t}=s.useContext(M),n=$e(),r=e.fetch,i=e.navigate;return s.useCallback(async(e,a={})=>{let{action:o,method:s,encType:c,formData:l,body:u}=yt(e,t);a.navigate===!1?await r(a.fetcherKey||en(),n,a.action||o,{unstable_defaultShouldRevalidate:a.unstable_defaultShouldRevalidate,preventScrollReset:a.preventScrollReset,formData:l,body:u,formMethod:a.method||s,formEncType:a.encType||c,flushSync:a.flushSync}):await i(a.action||o,{unstable_defaultShouldRevalidate:a.unstable_defaultShouldRevalidate,preventScrollReset:a.preventScrollReset,formData:l,body:u,formMethod:a.method||s,formEncType:a.encType||c,replace:a.replace,state:a.state,fromRouteId:n,flushSync:a.flushSync,viewTransition:a.viewTransition})},[r,i,t,n])}function nn(e,{relative:t}={}){let{basename:n}=s.useContext(M),r=s.useContext(P);d(r,`useFormAction must be used inside a RouteContext`);let[i]=r.matches.slice(-1),a={...R(e||`.`,{relative:t})},o=I();if(e==null){a.search=o.search;let e=new URLSearchParams(a.search),t=e.getAll(`index`);if(t.some(e=>e===``)){e.delete(`index`),t.filter(e=>e).forEach(t=>e.append(`index`,t));let n=e.toString();a.search=n?`?${n}`:``}}return(!e||e===`.`)&&i.route.index&&(a.search=a.search?a.search.replace(/^\?/,`?index&`):`?index`),n!==`/`&&(a.pathname=a.pathname===`/`?n:k([n,a.pathname])),g(a)}var rn=`react-router-scroll-positions`,Q={};function an(e,t,n,r){let i=null;return r&&(i=r(n===`/`?e:{...e,pathname:D(e.pathname,n)||e.pathname},t)),i??=e.key,i}function on({getKey:e,storageKey:t}={}){let{router:n}=Xt(`useScrollRestoration`),{restoreScrollPosition:r,preventScrollReset:i}=Zt(`useScrollRestoration`),{basename:a}=s.useContext(M),o=I(),c=tt(),l=et();s.useEffect(()=>(window.history.scrollRestoration=`manual`,()=>{window.history.scrollRestoration=`auto`}),[]),sn(s.useCallback(()=>{if(l.state===`idle`){let t=an(o,c,a,e);Q[t]=window.scrollY}try{sessionStorage.setItem(t||rn,JSON.stringify(Q))}catch(e){f(!1,`Failed to save scroll positions in sessionStorage, <ScrollRestoration /> will not work properly (${e}).`)}window.history.scrollRestoration=`auto`},[l.state,e,a,o,c,t])),typeof document<`u`&&(s.useLayoutEffect(()=>{try{let e=sessionStorage.getItem(t||rn);e&&(Q=JSON.parse(e))}catch{}},[t]),s.useLayoutEffect(()=>{let t=n?.enableScrollRestoration(Q,()=>window.scrollY,e?(t,n)=>an(t,n,a,e):void 0);return()=>t&&t()},[n,a,e]),s.useLayoutEffect(()=>{if(r!==!1){if(typeof r==`number`){window.scrollTo(0,r);return}try{if(o.hash){let e=document.getElementById(decodeURIComponent(o.hash.slice(1)));if(e){e.scrollIntoView();return}}}catch{f(!1,`"${o.hash.slice(1)}" is not a decodable element ID. The view will not scroll to it.`)}i!==!0&&window.scrollTo(0,0)}},[o,r,i]))}function sn(e,t){let{capture:n}=t||{};s.useEffect(()=>{let t=n==null?void 0:{capture:n};return window.addEventListener(`pagehide`,e,t),()=>{window.removeEventListener(`pagehide`,e,t)}},[e,n])}function cn(e,{relative:t}={}){let n=s.useContext(ke);d(n!=null,"`useViewTransitionState` must be used within `react-router-dom`'s `RouterProvider`. Did you accidentally import `RouterProvider` from `react-router`?");let{basename:r}=Xt(`useViewTransitionState`),i=R(e,{relative:t});if(!n.isTransitioning)return!1;let a=D(n.currentLocation.pathname,r)||n.currentLocation.pathname,o=D(n.nextLocation.pathname,r)||n.nextLocation.pathname;return E(i.pathname,o)!=null||E(i.pathname,a)!=null}var ln=a(`ExternalLink`,[[`path`,{d:`M15 3h6v6`,key:`1q9fwt`}],[`path`,{d:`M10 14 21 3`,key:`gplh6r`}],[`path`,{d:`M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6`,key:`a6xqqp`}]]),$=r(),un={xs:`gap-1.5 text-xs`,sm:`gap-1.5 text-sm`},dn={xs:`h-3.5 w-3.5`,sm:`h-4 w-4`};function fn(e){return e.button===0&&!e.altKey&&!e.ctrlKey&&!e.metaKey&&!e.shiftKey}function pn(e){return Array.from(new Set(`${e??``} noopener noreferrer`.trim().split(/\s+/))).join(` `)}function mn(e){try{let t=new URL(e,window.location.href);return t.protocol===`http:`||t.protocol===`https:`?t.toString():null}catch{return null}}var hn=(0,s.forwardRef)(function({children:e,className:n,external:r=!1,href:i,icon:a,iconPosition:s=`leading`,onClick:c,rel:l,size:u=`sm`,target:d,...f},p){let m=a===void 0&&r?ln:a,h=t(`inline-flex items-center rounded-sm font-medium text-primary underline-offset-4 transition-colors hover:text-primary-hover hover:underline focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary/25`,un[u],n),g=m?(0,$.jsx)(m,{"aria-hidden":`true`,className:t(`shrink-0`,dn[u])}):null,_=(0,$.jsxs)($.Fragment,{children:[s===`leading`?g:null,e,s===`trailing`?g:null]});return r?(0,$.jsx)(`a`,{ref:p,...f,href:i,target:d??`_blank`,rel:pn(l),className:h,onClick:e=>{c?.(e);let t=mn(i);t&&!e.defaultPrevented&&fn(e)&&(e.preventDefault(),o.openExternalUrl(t))},children:_}):(0,$.jsx)(Z,{ref:p,...f,to:i,target:d,rel:l,className:h,onClick:c,children:_})});export{st as a,lt as c,L as d,He as f,Z as i,ut as l,ln as n,Kt as o,Ut as r,ct as s,hn as t,I as u};
3
+ Please change the parent <Route path="${e}"> to <Route path="${e===`/`?`*`:`${e}/*`}">.`)}let h=I(),g;if(t){let e=typeof t==`string`?_(t):t;d(p===`/`||e.pathname?.startsWith(p),`When overriding the location using \`<Routes location>\` or \`useRoutes(routes, location)\`, the location pathname must begin with the portion of the URL pathname that was matched by all parent routes. The current pathname base is "${p}" but pathname "${e.pathname}" was given in the \`location\` prop.`),g=e}else g=h;let v=g.pathname||`/`,y=v;if(p!==`/`){let e=p.replace(/^\//,``).split(`/`);y=`/`+v.replace(/^\//,``).split(`/`).slice(e.length).join(`/`)}let x=b(e,{pathname:y});f(m||x!=null,`No routes matched location "${g.pathname}${g.search}${g.hash}" `),f(x==null||x[x.length-1].route.element!==void 0||x[x.length-1].route.Component!==void 0||x[x.length-1].route.lazy!==void 0,`Matched leaf route at location "${g.pathname}${g.search}${g.hash}" does not have an element or Component. This means it will render an <Outlet /> with a null value by default resulting in an "empty" page.`);let S=Xe(x&&x.map(e=>Object.assign({},e,{params:Object.assign({},l,e.params),pathname:k([p,a.encodeLocation?a.encodeLocation(e.pathname.replace(/\?/g,`%3F`).replace(/#/g,`%23`)).pathname:e.pathname]),pathnameBase:e.pathnameBase===`/`?p:k([p,a.encodeLocation?a.encodeLocation(e.pathnameBase.replace(/\?/g,`%3F`).replace(/#/g,`%23`)).pathname:e.pathnameBase])})),o,n,r,i);return t&&S?s.createElement(N.Provider,{value:{location:{pathname:`/`,search:``,hash:``,state:null,key:`default`,...g},navigationType:`POP`}},S):S}function Ge(){let e=nt(),t=Se(e)?`${e.status} ${e.statusText}`:e instanceof Error?e.message:JSON.stringify(e),n=e instanceof Error?e.stack:null,r=`rgba(200,200,200, 0.5)`,i={padding:`0.5rem`,backgroundColor:r},a={padding:`2px 4px`,backgroundColor:r},o=null;return console.error(`Error handled by React Router default ErrorBoundary:`,e),o=s.createElement(s.Fragment,null,s.createElement(`p`,null,`💿 Hey developer 👋`),s.createElement(`p`,null,`You can provide a way better UX than this when your app throws errors by providing your own `,s.createElement(`code`,{style:a},`ErrorBoundary`),` or`,` `,s.createElement(`code`,{style:a},`errorElement`),` prop on your route.`)),s.createElement(s.Fragment,null,s.createElement(`h2`,null,`Unexpected Application Error!`),s.createElement(`h3`,{style:{fontStyle:`italic`}},t),n?s.createElement(`pre`,{style:i},n):null,o)}var Ke=s.createElement(Ge,null),qe=class extends s.Component{constructor(e){super(e),this.state={location:e.location,revalidation:e.revalidation,error:e.error}}static getDerivedStateFromError(e){return{error:e}}static getDerivedStateFromProps(e,t){return t.location!==e.location||t.revalidation!==`idle`&&e.revalidation===`idle`?{error:e.error,location:e.location,revalidation:e.revalidation}:{error:e.error===void 0?t.error:e.error,location:t.location,revalidation:e.revalidation||t.revalidation}}componentDidCatch(e,t){this.props.onError?this.props.onError(e,t):console.error(`React Router caught the following error during render`,e)}render(){let e=this.state.error;if(this.context&&typeof e==`object`&&e&&`digest`in e&&typeof e.digest==`string`){let t=Le(e.digest);t&&(e=t)}let t=e===void 0?this.props.children:s.createElement(P.Provider,{value:this.props.routeContext},s.createElement(Me.Provider,{value:e,children:this.props.component}));return this.context?s.createElement(Je,{error:e},t):t}};qe.contextType=Oe;var z=new WeakMap;function Je({children:e,error:t}){let{basename:n}=s.useContext(M);if(typeof t==`object`&&t&&`digest`in t&&typeof t.digest==`string`){let e=Ie(t.digest);if(e){let r=z.get(t);if(r)throw r;let i=Te(e.location,n);if(we&&!z.get(t))if(i.isExternal||e.reloadDocument)window.location.href=i.absoluteURL||i.to;else{let n=Promise.resolve().then(()=>window.__reactRouterDataRouter.navigate(i.to,{replace:e.replace}));throw z.set(t,n),n}return s.createElement(`meta`,{httpEquiv:`refresh`,content:`0;url=${i.absoluteURL||i.to}`})}}return e}function Ye({routeContext:e,match:t,children:n}){let r=s.useContext(A);return r&&r.static&&r.staticContext&&(t.route.errorElement||t.route.ErrorBoundary)&&(r.staticContext._deepestRenderedBoundaryId=t.route.id),s.createElement(P.Provider,{value:e},n)}function Xe(e,t=[],n=null,r=null,i=null){if(e==null){if(!n)return null;if(n.errors)e=n.matches;else if(t.length===0&&!n.initialized&&n.matches.length>0)e=n.matches;else return null}let a=e,o=n?.errors;if(o!=null){let e=a.findIndex(e=>e.route.id&&o?.[e.route.id]!==void 0);d(e>=0,`Could not find a matching route for errors on route IDs: ${Object.keys(o).join(`,`)}`),a=a.slice(0,Math.min(a.length,e+1))}let c=!1,l=-1;if(n)for(let e=0;e<a.length;e++){let t=a[e];if((t.route.HydrateFallback||t.route.hydrateFallbackElement)&&(l=e),t.route.id){let{loaderData:e,errors:r}=n,i=t.route.loader&&!e.hasOwnProperty(t.route.id)&&(!r||r[t.route.id]===void 0);if(t.route.lazy||i){c=!0,a=l>=0?a.slice(0,l+1):[a[0]];break}}}let u=n&&r?(e,t)=>{r(e,{location:n.location,params:n.matches?.[0]?.params??{},unstable_pattern:Ce(n.matches),errorInfo:t})}:void 0;return a.reduceRight((e,r,i)=>{let d,f=!1,p=null,m=null;n&&(d=o&&r.route.id?o[r.route.id]:void 0,p=r.route.errorElement||Ke,c&&(l<0&&i===0?(at(`route-fallback`,!1,"No `HydrateFallback` element provided to render during initial hydration"),f=!0,m=null):l===i&&(f=!0,m=r.route.hydrateFallbackElement||null)));let h=t.concat(a.slice(0,i+1)),g=()=>{let t;return t=d?p:f?m:r.route.Component?s.createElement(r.route.Component,null):r.route.element?r.route.element:e,s.createElement(Ye,{match:r,routeContext:{outlet:e,matches:h,isDataRoute:n!=null},children:t})};return n&&(r.route.ErrorBoundary||r.route.errorElement||i===0)?s.createElement(qe,{location:n.location,revalidation:n.revalidation,component:p,error:d,children:g(),routeContext:{outlet:null,matches:h,isDataRoute:!0},onError:u}):g()},null)}function B(e){return`${e} must be used within a data router. See https://reactrouter.com/en/main/routers/picking-a-router.`}function Ze(e){let t=s.useContext(A);return d(t,B(e)),t}function V(e){let t=s.useContext(j);return d(t,B(e)),t}function Qe(e){let t=s.useContext(P);return d(t,B(e)),t}function H(e){let t=Qe(e),n=t.matches[t.matches.length-1];return d(n.route.id,`${e} can only be used on routes that contain a unique "id"`),n.route.id}function $e(){return H(`useRouteId`)}function et(){return V(`useNavigation`).navigation}function tt(){let{matches:e,loaderData:t}=V(`useMatches`);return s.useMemo(()=>e.map(e=>S(e,t)),[e,t])}function nt(){let e=s.useContext(Me),t=V(`useRouteError`),n=H(`useRouteError`);return e===void 0?t.errors?.[n]:e}function rt(){let{router:e}=Ze(`useNavigate`),t=H(`useNavigate`),n=s.useRef(!1);return Be(()=>{n.current=!0}),s.useCallback(async(r,i={})=>{f(n.current,ze),n.current&&(typeof r==`number`?await e.navigate(r):await e.navigate(r,{fromRouteId:t,...i}))},[e,t])}var it={};function at(e,t,n){!t&&!it[e]&&(it[e]=!0,f(!1,n))}s.useOptimistic,s.memo(ot);function ot({routes:e,future:t,state:n,onError:r}){return We(e,void 0,n,r,t)}function st({basename:e,children:t,initialEntries:n,initialIndex:r,unstable_useTransitions:i}){let a=s.useRef();a.current??=l({initialEntries:n,initialIndex:r,v5Compat:!0});let o=a.current,[c,u]=s.useState({action:o.action,location:o.location}),d=s.useCallback(e=>{i===!1?u(e):s.startTransition(()=>u(e))},[i]);return s.useLayoutEffect(()=>o.listen(d),[o,d]),s.createElement(U,{basename:e,children:t,location:c.location,navigationType:c.action,navigator:o,unstable_useTransitions:i})}function ct({to:e,replace:t,state:n,relative:r}){d(F(),`<Navigate> may be used only in the context of a <Router> component.`);let{static:i}=s.useContext(M);f(!i,`<Navigate> must not be used on the initial render in a <StaticRouter>. This is a no-op, but you should modify your code so the <Navigate> is only ever rendered in response to some user interaction or state change.`);let{matches:a}=s.useContext(P),{pathname:o}=I(),c=L(),l=_e(e,O(a),o,r===`path`),u=JSON.stringify(l);return s.useEffect(()=>{c(JSON.parse(u),{replace:t,state:n,relative:r})},[c,u,r,t,n]),null}function lt(e){d(!1,`A <Route> is only ever to be used as the child of <Routes> element, never rendered directly. Please wrap your <Route> in a <Routes>.`)}function U({basename:e=`/`,children:t=null,location:n,navigationType:r=`POP`,navigator:i,static:a=!1,unstable_useTransitions:o}){d(!F(),`You cannot render a <Router> inside another <Router>. You should never have more than one in your app.`);let c=e.replace(/^\/*/,`/`),l=s.useMemo(()=>({basename:c,navigator:i,static:a,unstable_useTransitions:o,future:{}}),[c,i,a,o]);typeof n==`string`&&(n=_(n));let{pathname:u=`/`,search:p=``,hash:m=``,state:h=null,key:g=`default`}=n,v=s.useMemo(()=>{let e=D(u,c);return e==null?null:{location:{pathname:e,search:p,hash:m,state:h,key:g},navigationType:r}},[c,u,p,m,h,g,r]);return f(v!=null,`<Router basename="${c}"> is not able to match the URL "${u}${p}${m}" because it does not start with the basename, so the <Router> won't render anything.`),v==null?null:s.createElement(M.Provider,{value:l},s.createElement(N.Provider,{children:t,value:v}))}function ut({children:e,location:t}){return Ue(W(e),t)}s.Component;function W(e,t=[]){let n=[];return s.Children.forEach(e,(e,r)=>{if(!s.isValidElement(e))return;let i=[...t,r];if(e.type===s.Fragment){n.push.apply(n,W(e.props.children,i));return}d(e.type===lt,`[${typeof e.type==`string`?e.type:e.type.name}] is not a <Route> component. All component children of <Routes> must be a <Route> or <React.Fragment>`),d(!e.props.index||!e.props.children,`An index route cannot have child routes.`);let a={id:e.props.id||i.join(`-`),caseSensitive:e.props.caseSensitive,element:e.props.element,Component:e.props.Component,index:e.props.index,path:e.props.path,middleware:e.props.middleware,loader:e.props.loader,action:e.props.action,hydrateFallbackElement:e.props.hydrateFallbackElement,HydrateFallback:e.props.HydrateFallback,errorElement:e.props.errorElement,ErrorBoundary:e.props.ErrorBoundary,hasErrorBoundary:e.props.hasErrorBoundary===!0||e.props.ErrorBoundary!=null||e.props.errorElement!=null,shouldRevalidate:e.props.shouldRevalidate,handle:e.props.handle,lazy:e.props.lazy};e.props.children&&(a.children=W(e.props.children,i)),n.push(a)}),n}var G=`get`,K=`application/x-www-form-urlencoded`;function q(e){return typeof HTMLElement<`u`&&e instanceof HTMLElement}function dt(e){return q(e)&&e.tagName.toLowerCase()===`button`}function ft(e){return q(e)&&e.tagName.toLowerCase()===`form`}function pt(e){return q(e)&&e.tagName.toLowerCase()===`input`}function mt(e){return!!(e.metaKey||e.altKey||e.ctrlKey||e.shiftKey)}function ht(e,t){return e.button===0&&(!t||t===`_self`)&&!mt(e)}var J=null;function gt(){if(J===null)try{new FormData(document.createElement(`form`),0),J=!1}catch{J=!0}return J}var _t=new Set([`application/x-www-form-urlencoded`,`multipart/form-data`,`text/plain`]);function vt(e){return e!=null&&!_t.has(e)?(f(!1,`"${e}" is not a valid \`encType\` for \`<Form>\`/\`<fetcher.Form>\` and will default to "${K}"`),null):e}function yt(e,t){let n,r,i,a,o;if(ft(e)){let o=e.getAttribute(`action`);r=o?D(o,t):null,n=e.getAttribute(`method`)||G,i=vt(e.getAttribute(`enctype`))||K,a=new FormData(e)}else if(dt(e)||pt(e)&&(e.type===`submit`||e.type===`image`)){let o=e.form;if(o==null)throw Error(`Cannot submit a <button> or <input type="submit"> without a <form>`);let s=e.getAttribute(`formaction`)||o.getAttribute(`action`);if(r=s?D(s,t):null,n=e.getAttribute(`formmethod`)||o.getAttribute(`method`)||G,i=vt(e.getAttribute(`formenctype`))||vt(o.getAttribute(`enctype`))||K,a=new FormData(o,e),!gt()){let{name:t,type:n,value:r}=e;if(n===`image`){let e=t?`${t}.`:``;a.append(`${e}x`,`0`),a.append(`${e}y`,`0`)}else t&&a.append(t,r)}}else if(q(e))throw Error(`Cannot submit element that is not <form>, <button>, or <input type="submit|image">`);else n=G,r=null,i=K,o=e;return a&&i===`text/plain`&&(o=a,a=void 0),{action:r,method:n.toLowerCase(),encType:i,formData:a,body:o}}Object.getOwnPropertyNames(Object.prototype).sort().join(`\0`);var bt={"&":`\\u0026`,">":`\\u003e`,"<":`\\u003c`,"\u2028":`\\u2028`,"\u2029":`\\u2029`},xt=/[&><\u2028\u2029]/g;function St(e){return e.replace(xt,e=>bt[e])}function Ct(e,t){if(e===!1||e==null)throw Error(t)}function wt(e,t,n,r){let i=typeof e==`string`?new URL(e,typeof window>`u`?`server://singlefetch/`:window.location.origin):e;return n?i.pathname.endsWith(`/`)?i.pathname=`${i.pathname}_.${r}`:i.pathname=`${i.pathname}.${r}`:i.pathname===`/`?i.pathname=`_root.${r}`:t&&D(i.pathname,t)===`/`?i.pathname=`${t.replace(/\/$/,``)}/_root.${r}`:i.pathname=`${i.pathname.replace(/\/$/,``)}.${r}`,i}async function Tt(e,t){if(e.id in t)return t[e.id];try{let n=await i(()=>import(e.module),[]);return t[e.id]=n,n}catch(t){return console.error(`Error loading route module \`${e.module}\`, reloading page...`),console.error(t),window.__reactRouterContext&&window.__reactRouterContext.isSpaMode,window.location.reload(),new Promise(()=>{})}}function Et(e){return e!=null&&typeof e.page==`string`}function Dt(e){return e==null?!1:e.href==null?e.rel===`preload`&&typeof e.imageSrcSet==`string`&&typeof e.imageSizes==`string`:typeof e.rel==`string`&&typeof e.href==`string`}async function Ot(e,t,n){return Nt((await Promise.all(e.map(async e=>{let r=t.routes[e.route.id];if(r){let e=await Tt(r,n);return e.links?e.links():[]}return[]}))).flat(1).filter(Dt).filter(e=>e.rel===`stylesheet`||e.rel===`preload`).map(e=>e.rel===`stylesheet`?{...e,rel:`prefetch`,as:`style`}:{...e,rel:`prefetch`}))}function kt(e,t,n,r,i,a){let o=(e,t)=>n[t]?e.route.id!==n[t].route.id:!0,s=(e,t)=>n[t].pathname!==e.pathname||n[t].route.path?.endsWith(`*`)&&n[t].params[`*`]!==e.params[`*`];return a===`assets`?t.filter((e,t)=>o(e,t)||s(e,t)):a===`data`?t.filter((t,a)=>{let c=r.routes[t.route.id];if(!c||!c.hasLoader)return!1;if(o(t,a)||s(t,a))return!0;if(t.route.shouldRevalidate){let r=t.route.shouldRevalidate({currentUrl:new URL(i.pathname+i.search+i.hash,window.origin),currentParams:n[0]?.params||{},nextUrl:new URL(e,window.origin),nextParams:t.params,defaultShouldRevalidate:!0});if(typeof r==`boolean`)return r}return!0}):[]}function At(e,t,{includeHydrateFallback:n}={}){return jt(e.map(e=>{let r=t.routes[e.route.id];if(!r)return[];let i=[r.module];return r.clientActionModule&&(i=i.concat(r.clientActionModule)),r.clientLoaderModule&&(i=i.concat(r.clientLoaderModule)),n&&r.hydrateFallbackModule&&(i=i.concat(r.hydrateFallbackModule)),r.imports&&(i=i.concat(r.imports)),i}).flat(1))}function jt(e){return[...new Set(e)]}function Mt(e){let t={},n=Object.keys(e).sort();for(let r of n)t[r]=e[r];return t}function Nt(e,t){let n=new Set,r=new Set(t);return e.reduce((e,i)=>{if(t&&!Et(i)&&i.as===`script`&&i.href&&r.has(i.href))return e;let a=JSON.stringify(Mt(i));return n.has(a)||(n.add(a),e.push({key:a,link:i})),e},[])}function Pt(){let e=s.useContext(A);return Ct(e,`You must render this element inside a <DataRouterContext.Provider> element`),e}function Ft(){let e=s.useContext(j);return Ct(e,`You must render this element inside a <DataRouterStateContext.Provider> element`),e}var Y=s.createContext(void 0);Y.displayName=`FrameworkContext`;function It(){let e=s.useContext(Y);return Ct(e,`You must render this element inside a <HydratedRouter> element`),e}function Lt(e,t){let n=s.useContext(Y),[r,i]=s.useState(!1),[a,o]=s.useState(!1),{onFocus:c,onBlur:l,onMouseEnter:u,onMouseLeave:d,onTouchStart:f}=t,p=s.useRef(null);s.useEffect(()=>{if(e===`render`&&o(!0),e===`viewport`){let e=new IntersectionObserver(e=>{e.forEach(e=>{o(e.isIntersecting)})},{threshold:.5});return p.current&&e.observe(p.current),()=>{e.disconnect()}}},[e]),s.useEffect(()=>{if(r){let e=setTimeout(()=>{o(!0)},100);return()=>{clearTimeout(e)}}},[r]);let m=()=>{i(!0)},h=()=>{i(!1),o(!1)};return n?e===`intent`?[a,p,{onFocus:X(c,m),onBlur:X(l,h),onMouseEnter:X(u,m),onMouseLeave:X(d,h),onTouchStart:X(f,m)}]:[a,p,{}]:[!1,p,{}]}function X(e,t){return n=>{e&&e(n),n.defaultPrevented||t(n)}}function Rt({page:e,...t}){let{router:n}=Pt(),r=s.useMemo(()=>b(n.routes,e,n.basename),[n.routes,e,n.basename]);return r?s.createElement(Bt,{page:e,matches:r,...t}):null}function zt(e){let{manifest:t,routeModules:n}=It(),[r,i]=s.useState([]);return s.useEffect(()=>{let r=!1;return Ot(e,t,n).then(e=>{r||i(e)}),()=>{r=!0}},[e,t,n]),r}function Bt({page:e,matches:t,...n}){let r=I(),{future:i,manifest:a,routeModules:o}=It(),{basename:c}=Pt(),{loaderData:l,matches:u}=Ft(),d=s.useMemo(()=>kt(e,t,u,a,r,`data`),[e,t,u,a,r]),f=s.useMemo(()=>kt(e,t,u,a,r,`assets`),[e,t,u,a,r]),p=s.useMemo(()=>{if(e===r.pathname+r.search+r.hash)return[];let n=new Set,s=!1;if(t.forEach(e=>{let t=a.routes[e.route.id];!t||!t.hasLoader||(!d.some(t=>t.route.id===e.route.id)&&e.route.id in l&&o[e.route.id]?.shouldRevalidate||t.hasClientLoader?s=!0:n.add(e.route.id))}),n.size===0)return[];let u=wt(e,c,i.unstable_trailingSlashAwareDataRequests,`data`);return s&&n.size>0&&u.searchParams.set(`_routes`,t.filter(e=>n.has(e.route.id)).map(e=>e.route.id).join(`,`)),[u.pathname+u.search]},[c,i.unstable_trailingSlashAwareDataRequests,l,r,a,d,t,e,o]),m=s.useMemo(()=>At(f,a),[f,a]),h=zt(f);return s.createElement(s.Fragment,null,p.map(e=>s.createElement(`link`,{key:e,rel:`prefetch`,as:`fetch`,href:e,...n})),m.map(e=>s.createElement(`link`,{key:e,rel:`modulepreload`,href:e,...n})),h.map(({key:e,link:t})=>s.createElement(`link`,{key:e,nonce:n.nonce,...t,crossOrigin:t.crossOrigin??n.crossOrigin})))}function Vt(...e){return t=>{e.forEach(e=>{typeof e==`function`?e(t):e!=null&&(e.current=t)})}}s.Component;var Ht=typeof window<`u`&&window.document!==void 0&&window.document.createElement!==void 0;try{Ht&&(window.__reactRouterVersion=`7.13.0`)}catch{}function Ut({basename:e,children:t,unstable_useTransitions:n,window:r}){let i=s.useRef();i.current??=u({window:r,v5Compat:!0});let a=i.current,[o,c]=s.useState({action:a.action,location:a.location}),l=s.useCallback(e=>{n===!1?c(e):s.startTransition(()=>c(e))},[n]);return s.useLayoutEffect(()=>a.listen(l),[a,l]),s.createElement(U,{basename:e,children:t,location:o.location,navigationType:o.action,navigator:a,unstable_useTransitions:n})}function Wt({basename:e,children:t,history:n,unstable_useTransitions:r}){let[i,a]=s.useState({action:n.action,location:n.location}),o=s.useCallback(e=>{r===!1?a(e):s.startTransition(()=>a(e))},[r]);return s.useLayoutEffect(()=>n.listen(o),[n,o]),s.createElement(U,{basename:e,children:t,location:i.location,navigationType:i.action,navigator:n,unstable_useTransitions:r})}Wt.displayName=`unstable_HistoryRouter`;var Gt=/^(?:[a-z][a-z0-9+.-]*:|\/\/)/i,Z=s.forwardRef(function({onClick:e,discover:t=`render`,prefetch:n=`none`,relative:r,reloadDocument:i,replace:a,state:o,target:c,to:l,preventScrollReset:u,viewTransition:d,unstable_defaultShouldRevalidate:f,...p},m){let{basename:h,unstable_useTransitions:g}=s.useContext(M),_=typeof l==`string`&&Gt.test(l),v=Te(l,h);l=v.to;let y=Re(l,{relative:r}),[b,x,S]=Lt(n,p),C=Qt(l,{replace:a,state:o,target:c,preventScrollReset:u,relative:r,viewTransition:d,unstable_defaultShouldRevalidate:f,unstable_useTransitions:g});function w(t){e&&e(t),t.defaultPrevented||C(t)}let T=s.createElement(`a`,{...p,...S,href:v.absoluteURL||y,onClick:v.isExternal||i?e:w,ref:Vt(m,x),target:c,"data-discover":!_&&t===`render`?`true`:void 0});return b&&!_?s.createElement(s.Fragment,null,T,s.createElement(Rt,{page:y})):T});Z.displayName=`Link`;var Kt=s.forwardRef(function({"aria-current":e=`page`,caseSensitive:t=!1,className:n=``,end:r=!1,style:i,to:a,viewTransition:o,children:c,...l},u){let d=R(a,{relative:l.relative}),f=I(),p=s.useContext(j),{navigator:m,basename:h}=s.useContext(M),g=p!=null&&cn(d)&&o===!0,_=m.encodeLocation?m.encodeLocation(d).pathname:d.pathname,v=f.pathname,y=p&&p.navigation&&p.navigation.location?p.navigation.location.pathname:null;t||(v=v.toLowerCase(),y=y?y.toLowerCase():null,_=_.toLowerCase()),y&&h&&(y=D(y,h)||y);let b=_!==`/`&&_.endsWith(`/`)?_.length-1:_.length,x=v===_||!r&&v.startsWith(_)&&v.charAt(b)===`/`,S=y!=null&&(y===_||!r&&y.startsWith(_)&&y.charAt(_.length)===`/`),C={isActive:x,isPending:S,isTransitioning:g},w=x?e:void 0,T;T=typeof n==`function`?n(C):[n,x?`active`:null,S?`pending`:null,g?`transitioning`:null].filter(Boolean).join(` `);let ee=typeof i==`function`?i(C):i;return s.createElement(Z,{...l,"aria-current":w,className:T,ref:u,style:ee,to:a,viewTransition:o},typeof c==`function`?c(C):c)});Kt.displayName=`NavLink`;var qt=s.forwardRef(({discover:e=`render`,fetcherKey:t,navigate:n,reloadDocument:r,replace:i,state:a,method:o=G,action:c,onSubmit:l,relative:u,preventScrollReset:d,viewTransition:f,unstable_defaultShouldRevalidate:p,...m},h)=>{let{unstable_useTransitions:g}=s.useContext(M),_=tn(),v=nn(c,{relative:u}),y=o.toLowerCase()===`get`?`get`:`post`,b=typeof c==`string`&&Gt.test(c);return s.createElement(`form`,{ref:h,method:y,action:v,onSubmit:r?l:e=>{if(l&&l(e),e.defaultPrevented)return;e.preventDefault();let r=e.nativeEvent.submitter,c=r?.getAttribute(`formmethod`)||o,m=()=>_(r||e.currentTarget,{fetcherKey:t,method:c,navigate:n,replace:i,state:a,relative:u,preventScrollReset:d,viewTransition:f,unstable_defaultShouldRevalidate:p});g&&n!==!1?s.startTransition(()=>m()):m()},...m,"data-discover":!b&&e===`render`?`true`:void 0})});qt.displayName=`Form`;function Jt({getKey:e,storageKey:t,...n}){let r=s.useContext(Y),{basename:i}=s.useContext(M),a=I(),o=tt();on({getKey:e,storageKey:t});let c=s.useMemo(()=>{if(!r||!e)return null;let t=an(a,o,i,e);return t===a.key?null:t},[]);if(!r||r.isSpaMode)return null;let l=((e,t)=>{if(!window.history.state||!window.history.state.key){let e=Math.random().toString(32).slice(2);window.history.replaceState({key:e},``)}try{let n=JSON.parse(sessionStorage.getItem(e)||`{}`)[t||window.history.state.key];typeof n==`number`&&window.scrollTo(0,n)}catch(t){console.error(t),sessionStorage.removeItem(e)}}).toString();return s.createElement(`script`,{...n,suppressHydrationWarning:!0,dangerouslySetInnerHTML:{__html:`(${l})(${St(JSON.stringify(t||rn))}, ${St(JSON.stringify(c))})`}})}Jt.displayName=`ScrollRestoration`;function Yt(e){return`${e} must be used within a data router. See https://reactrouter.com/en/main/routers/picking-a-router.`}function Xt(e){let t=s.useContext(A);return d(t,Yt(e)),t}function Zt(e){let t=s.useContext(j);return d(t,Yt(e)),t}function Qt(e,{target:t,replace:n,state:r,preventScrollReset:i,relative:a,viewTransition:o,unstable_defaultShouldRevalidate:c,unstable_useTransitions:l}={}){let u=L(),d=I(),f=R(e,{relative:a});return s.useCallback(p=>{if(ht(p,t)){p.preventDefault();let t=n===void 0?g(d)===g(f):n,m=()=>u(e,{replace:t,state:r,preventScrollReset:i,relative:a,viewTransition:o,unstable_defaultShouldRevalidate:c});l?s.startTransition(()=>m()):m()}},[d,u,f,n,r,t,e,i,a,o,c,l])}var $t=0,en=()=>`__${String(++$t)}__`;function tn(){let{router:e}=Xt(`useSubmit`),{basename:t}=s.useContext(M),n=$e(),r=e.fetch,i=e.navigate;return s.useCallback(async(e,a={})=>{let{action:o,method:s,encType:c,formData:l,body:u}=yt(e,t);a.navigate===!1?await r(a.fetcherKey||en(),n,a.action||o,{unstable_defaultShouldRevalidate:a.unstable_defaultShouldRevalidate,preventScrollReset:a.preventScrollReset,formData:l,body:u,formMethod:a.method||s,formEncType:a.encType||c,flushSync:a.flushSync}):await i(a.action||o,{unstable_defaultShouldRevalidate:a.unstable_defaultShouldRevalidate,preventScrollReset:a.preventScrollReset,formData:l,body:u,formMethod:a.method||s,formEncType:a.encType||c,replace:a.replace,state:a.state,fromRouteId:n,flushSync:a.flushSync,viewTransition:a.viewTransition})},[r,i,t,n])}function nn(e,{relative:t}={}){let{basename:n}=s.useContext(M),r=s.useContext(P);d(r,`useFormAction must be used inside a RouteContext`);let[i]=r.matches.slice(-1),a={...R(e||`.`,{relative:t})},o=I();if(e==null){a.search=o.search;let e=new URLSearchParams(a.search),t=e.getAll(`index`);if(t.some(e=>e===``)){e.delete(`index`),t.filter(e=>e).forEach(t=>e.append(`index`,t));let n=e.toString();a.search=n?`?${n}`:``}}return(!e||e===`.`)&&i.route.index&&(a.search=a.search?a.search.replace(/^\?/,`?index&`):`?index`),n!==`/`&&(a.pathname=a.pathname===`/`?n:k([n,a.pathname])),g(a)}var rn=`react-router-scroll-positions`,Q={};function an(e,t,n,r){let i=null;return r&&(i=r(n===`/`?e:{...e,pathname:D(e.pathname,n)||e.pathname},t)),i??=e.key,i}function on({getKey:e,storageKey:t}={}){let{router:n}=Xt(`useScrollRestoration`),{restoreScrollPosition:r,preventScrollReset:i}=Zt(`useScrollRestoration`),{basename:a}=s.useContext(M),o=I(),c=tt(),l=et();s.useEffect(()=>(window.history.scrollRestoration=`manual`,()=>{window.history.scrollRestoration=`auto`}),[]),sn(s.useCallback(()=>{if(l.state===`idle`){let t=an(o,c,a,e);Q[t]=window.scrollY}try{sessionStorage.setItem(t||rn,JSON.stringify(Q))}catch(e){f(!1,`Failed to save scroll positions in sessionStorage, <ScrollRestoration /> will not work properly (${e}).`)}window.history.scrollRestoration=`auto`},[l.state,e,a,o,c,t])),typeof document<`u`&&(s.useLayoutEffect(()=>{try{let e=sessionStorage.getItem(t||rn);e&&(Q=JSON.parse(e))}catch{}},[t]),s.useLayoutEffect(()=>{let t=n?.enableScrollRestoration(Q,()=>window.scrollY,e?(t,n)=>an(t,n,a,e):void 0);return()=>t&&t()},[n,a,e]),s.useLayoutEffect(()=>{if(r!==!1){if(typeof r==`number`){window.scrollTo(0,r);return}try{if(o.hash){let e=document.getElementById(decodeURIComponent(o.hash.slice(1)));if(e){e.scrollIntoView();return}}}catch{f(!1,`"${o.hash.slice(1)}" is not a decodable element ID. The view will not scroll to it.`)}i!==!0&&window.scrollTo(0,0)}},[o,r,i]))}function sn(e,t){let{capture:n}=t||{};s.useEffect(()=>{let t=n==null?void 0:{capture:n};return window.addEventListener(`pagehide`,e,t),()=>{window.removeEventListener(`pagehide`,e,t)}},[e,n])}function cn(e,{relative:t}={}){let n=s.useContext(ke);d(n!=null,"`useViewTransitionState` must be used within `react-router-dom`'s `RouterProvider`. Did you accidentally import `RouterProvider` from `react-router`?");let{basename:r}=Xt(`useViewTransitionState`),i=R(e,{relative:t});if(!n.isTransitioning)return!1;let a=D(n.currentLocation.pathname,r)||n.currentLocation.pathname,o=D(n.nextLocation.pathname,r)||n.nextLocation.pathname;return E(i.pathname,o)!=null||E(i.pathname,a)!=null}var ln=a(`ExternalLink`,[[`path`,{d:`M15 3h6v6`,key:`1q9fwt`}],[`path`,{d:`M10 14 21 3`,key:`gplh6r`}],[`path`,{d:`M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6`,key:`a6xqqp`}]]),$=t(),un={xs:`gap-1.5 text-xs`,sm:`gap-1.5 text-sm`},dn={xs:`h-3.5 w-3.5`,sm:`h-4 w-4`};function fn(e){return e.button===0&&!e.altKey&&!e.ctrlKey&&!e.metaKey&&!e.shiftKey}function pn(e){return Array.from(new Set(`${e??``} noopener noreferrer`.trim().split(/\s+/))).join(` `)}function mn(e){try{let t=new URL(e,window.location.href);return t.protocol===`http:`||t.protocol===`https:`?t.toString():null}catch{return null}}var hn=(0,s.forwardRef)(function({children:e,className:t,external:n=!1,href:i,icon:a,iconPosition:s=`leading`,onClick:c,rel:l,size:u=`sm`,target:d,...f},p){let m=a===void 0&&n?ln:a,h=r(`inline-flex items-center rounded-sm font-medium text-primary underline-offset-4 transition-colors hover:text-primary-hover hover:underline focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary/25`,un[u],t),g=m?(0,$.jsx)(m,{"aria-hidden":`true`,className:r(`shrink-0`,dn[u])}):null,_=(0,$.jsxs)($.Fragment,{children:[s===`leading`?g:null,e,s===`trailing`?g:null]});return n?(0,$.jsx)(`a`,{ref:p,...f,href:i,target:d??`_blank`,rel:pn(l),className:h,onClick:e=>{c?.(e);let t=mn(i);t&&!e.defaultPrevented&&fn(e)&&(e.preventDefault(),o.openExternalUrl(t))},children:_}):(0,$.jsx)(Z,{ref:p,...f,to:i,target:d,rel:l,className:h,onClick:c,children:_})});export{st as a,lt as c,L as d,He as f,Z as i,ut as l,ln as n,Kt as o,Ut as r,ct as s,hn as t,I as u};
@@ -0,0 +1 @@
1
+ import{c as e}from"./dist-HFDWY6-K.js";var t=e(`Plus`,[[`path`,{d:`M5 12h14`,key:`1ays0h`}],[`path`,{d:`M12 5v14`,key:`s699le`}]]);export{t};
@@ -1 +1 @@
1
- import{i as e}from"./chunk-DseTPa7n.js";import{I as t,V as n,i as r,z as i}from"./react-D-jOo51s.js";import{nn as a}from"./api-BSsQ0I4l.js";import{c as o}from"./dist-DyUY9uQ0.js";import{a as s,i as c,n as l,r as u,t as d,w as f}from"./select-DToos7Rq.js";import{B as p,G as m,_t as h,ht as g,mt as _,pt as v,z as y}from"./index-C2N1bYyb.js";var b=o(`ChevronsUpDown`,[[`path`,{d:`m7 15 5 5 5-5`,key:`1hf1tw`}],[`path`,{d:`m7 9 5-5 5 5`,key:`sgt6xg`}]]),x=e(n(),1),S=i(),C=h(`15rem`);function w(e){return[...new Set(e.map(e=>e.trim()).filter(Boolean))]}function T({id:e,value:n,onChange:r,options:i,disabled:o=!1,placeholder:s,className:c,inputClassName:l,emptyText:u,createText:d,toggleLabel:p,maxItems:m=1/0,onEnter:h}){let[y,T]=(0,x.useState)(!1),E=(0,x.useRef)(null);(0,x.useEffect)(()=>{o&&y&&T(!1)},[o,y]);let D=(0,x.useMemo)(()=>w(i),[i]),O=n.trim().toLowerCase(),k=(0,x.useMemo)(()=>{let e=D.map((e,t)=>({option:e,index:t}));O.length>0&&e.sort((e,t)=>{let n=e.option.toLowerCase(),r=t.option.toLowerCase(),i=n===O?0:n.startsWith(O)?1:n.includes(O)?2:3,a=r===O?0:r.startsWith(O)?1:r.includes(O)?2:3;return i===a?e.index-t.index:i-a});let t=e.map(e=>e.option);return Number.isFinite(m)?t.slice(0,Math.max(1,m)):t},[D,O,m]),A=n.trim().length>0&&D.some(e=>e===n.trim()),j=()=>T(!1);return(0,S.jsxs)(v,{open:y&&!o,onOpenChange:e=>T(!o&&e),children:[(0,S.jsx)(_,{asChild:!0,children:(0,S.jsxs)(`div`,{ref:E,className:t(`relative`,c),children:[(0,S.jsx)(a,{id:e,value:n,disabled:o,onFocus:()=>{o||T(!0)},onChange:e=>{r(e.target.value),!y&&!o&&T(!0)},onKeyDown:e=>{e.key===`Enter`&&(h&&(e.preventDefault(),h()),j())},placeholder:s,className:t(`pr-10`,l)}),(0,S.jsx)(`button`,{type:`button`,onMouseDown:e=>e.preventDefault(),onClick:()=>T(e=>!e),disabled:o,className:t(`absolute inset-y-0 right-0 inline-flex w-10 items-center justify-center`,o?`cursor-not-allowed text-gray-300`:`text-gray-400 hover:text-gray-600`),"aria-label":p,children:(0,S.jsx)(b,{className:`h-4 w-4`})})]})}),(0,S.jsx)(g,{align:`start`,className:`flex w-[var(--radix-popover-trigger-width)] min-w-[12rem] flex-col overflow-hidden rounded-xl border border-gray-200 p-0 shadow-lg`,onInteractOutside:e=>{e.target instanceof Node&&E.current?.contains(e.target)&&e.preventDefault()},onOpenAutoFocus:e=>e.preventDefault(),style:{maxHeight:C},children:(0,S.jsxs)(`div`,{className:`custom-scrollbar min-h-0 flex-1 overflow-y-auto py-1`,children:[!A&&n.trim().length>0&&(0,S.jsxs)(`button`,{type:`button`,onMouseDown:e=>e.preventDefault(),onClick:()=>{r(n.trim()),j()},className:`flex w-full items-center gap-2 px-3 py-2 text-left text-sm hover:bg-gray-50`,children:[(0,S.jsx)(f,{className:`h-4 w-4 text-transparent`}),(0,S.jsx)(`span`,{className:`truncate text-gray-700`,children:d.replace(`{value}`,n.trim())})]}),k.map(e=>(0,S.jsxs)(`button`,{type:`button`,onMouseDown:e=>e.preventDefault(),onClick:()=>{r(e),j()},className:`flex w-full items-center gap-2 px-3 py-2 text-left text-sm hover:bg-gray-50`,children:[(0,S.jsx)(f,{className:t(`h-4 w-4`,e===n.trim()?`text-primary`:`text-transparent`)}),(0,S.jsx)(`span`,{className:`truncate text-gray-700`,children:e})]},e)),k.length===0&&n.trim().length===0&&(0,S.jsx)(`div`,{className:`px-3 py-2 text-sm text-gray-500`,children:u})]})})]})}var E=`provider/model`;function D(e){let t=new Set;for(let n of e){let e=n.trim();e&&t.add(e)}return[...t]}function O({id:e,value:t,onChange:n,providerCatalog:i,disabled:o=!1,providerPlaceholder:f,modelPlaceholder:h,className:g}){let[_,v]=(0,x.useState)(``),[b,C]=(0,x.useState)(``),w=i.length>0,O=h??E,k=(0,x.useMemo)(()=>new Map(i.map(e=>[e.name,e])),[i]),A=k.get(_),j=(0,x.useMemo)(()=>A?.aliases??[],[A]),M=(0,x.useMemo)(()=>D(A?.models??[]),[A]);return(0,x.useEffect)(()=>{let e=t.trim();if(!w){v(``),C(e);return}if(!e){C(``),v(e=>k.has(e)?e:``);return}let n=p(e,i)??``,r=k.get(n)?.aliases??[];v(n),C(n?m(e,r):e)},[w,i,k,t]),w?(0,S.jsxs)(`div`,{className:g,children:[(0,S.jsxs)(`div`,{className:`flex flex-col gap-2 sm:flex-row sm:items-center`,children:[(0,S.jsx)(`div`,{className:`sm:w-[38%] sm:min-w-[170px]`,children:(0,S.jsxs)(d,{value:_,onValueChange:e=>{let t=D(k.get(e)?.models??[])[0]??``;if(v(e),C(t),!t){n(``);return}n(y(k.get(e)?.prefix??e,t))},disabled:o,children:[(0,S.jsx)(c,{className:`h-10 w-full rounded-xl`,children:(0,S.jsx)(s,{placeholder:f??r(`providersSelectPlaceholder`)})}),(0,S.jsx)(l,{children:i.map(e=>(0,S.jsx)(u,{value:e.name,children:e.displayName},e.name))})]})}),(0,S.jsx)(`span`,{className:`hidden h-10 items-center justify-center leading-none text-lg font-semibold text-gray-300 sm:inline-flex`,children:`/`}),(0,S.jsx)(T,{id:e,value:b,onChange:e=>{if(!A){let t=e.trim();C(t),n(t);return}let t=m(e,j);C(t),n(t?y(A.prefix,t):``)},options:M,disabled:o||!_,placeholder:O,className:`sm:flex-1`,inputClassName:`h-10 rounded-xl`,emptyText:r(`modelPickerNoOptions`),createText:r(`modelPickerUseCustom`),toggleLabel:r(`modelPickerToggleOptions`)},_)]}),(0,S.jsx)(`p`,{className:`mt-2 text-xs text-gray-500`,children:r(`modelInputCustomHint`)})]}):(0,S.jsxs)(`div`,{className:g,children:[(0,S.jsxs)(`div`,{className:`rounded-2xl border border-amber-200 bg-amber-50/70 px-4 py-3`,children:[(0,S.jsx)(`p`,{className:`text-sm font-semibold text-amber-950`,children:r(`providersEmptyTitle`)}),(0,S.jsx)(`p`,{className:`mt-1 text-xs leading-5 text-amber-900`,children:r(`providersEmptyDescription`)})]}),(0,S.jsx)(a,{id:e,value:t,disabled:o,onChange:e=>n(e.target.value),placeholder:O,className:`mt-3 h-10 rounded-xl`}),(0,S.jsx)(`p`,{className:`mt-2 text-xs text-gray-500`,children:r(`modelInputCustomHint`)})]})}export{O as t};
1
+ import{i as e}from"./chunk-DseTPa7n.js";import{B as t,H as n,L as r,a as i}from"./react-B7Paq2b3.js";import{rn as a}from"./api-Cyxp93Fn.js";import{c as o}from"./dist-HFDWY6-K.js";import{a as s,i as c,n as l,r as u,t as d,w as f}from"./select-BZHvnwQB.js";import{B as p,G as m,gt as h,ht as g,mt as _,vt as v,z as y}from"./index-j6DBnvlr.js";var b=o(`ChevronsUpDown`,[[`path`,{d:`m7 15 5 5 5-5`,key:`1hf1tw`}],[`path`,{d:`m7 9 5-5 5 5`,key:`sgt6xg`}]]),x=e(n(),1),S=t(),C=v(`15rem`);function w(e){return[...new Set(e.map(e=>e.trim()).filter(Boolean))]}function T({id:e,value:t,onChange:n,options:i,disabled:o=!1,placeholder:s,className:c,inputClassName:l,emptyText:u,createText:d,toggleLabel:p,maxItems:m=1/0,onEnter:v}){let[y,T]=(0,x.useState)(!1),E=(0,x.useRef)(null);(0,x.useEffect)(()=>{o&&y&&T(!1)},[o,y]);let D=(0,x.useMemo)(()=>w(i),[i]),O=t.trim().toLowerCase(),k=(0,x.useMemo)(()=>{let e=D.map((e,t)=>({option:e,index:t}));O.length>0&&e.sort((e,t)=>{let n=e.option.toLowerCase(),r=t.option.toLowerCase(),i=n===O?0:n.startsWith(O)?1:n.includes(O)?2:3,a=r===O?0:r.startsWith(O)?1:r.includes(O)?2:3;return i===a?e.index-t.index:i-a});let t=e.map(e=>e.option);return Number.isFinite(m)?t.slice(0,Math.max(1,m)):t},[D,O,m]),A=t.trim().length>0&&D.some(e=>e===t.trim()),j=()=>T(!1);return(0,S.jsxs)(_,{open:y&&!o,onOpenChange:e=>T(!o&&e),children:[(0,S.jsx)(g,{asChild:!0,children:(0,S.jsxs)(`div`,{ref:E,className:r(`relative`,c),children:[(0,S.jsx)(a,{id:e,value:t,disabled:o,onFocus:()=>{o||T(!0)},onChange:e=>{n(e.target.value),!y&&!o&&T(!0)},onKeyDown:e=>{e.key===`Enter`&&(v&&(e.preventDefault(),v()),j())},placeholder:s,className:r(`pr-10`,l)}),(0,S.jsx)(`button`,{type:`button`,onMouseDown:e=>e.preventDefault(),onClick:()=>T(e=>!e),disabled:o,className:r(`absolute inset-y-0 right-0 inline-flex w-10 items-center justify-center`,o?`cursor-not-allowed text-gray-300`:`text-gray-400 hover:text-gray-600`),"aria-label":p,children:(0,S.jsx)(b,{className:`h-4 w-4`})})]})}),(0,S.jsx)(h,{align:`start`,className:`flex w-[var(--radix-popover-trigger-width)] min-w-[12rem] flex-col overflow-hidden rounded-xl border border-gray-200 p-0 shadow-lg`,onInteractOutside:e=>{e.target instanceof Node&&E.current?.contains(e.target)&&e.preventDefault()},onOpenAutoFocus:e=>e.preventDefault(),style:{maxHeight:C},children:(0,S.jsxs)(`div`,{className:`custom-scrollbar min-h-0 flex-1 overflow-y-auto py-1`,children:[!A&&t.trim().length>0&&(0,S.jsxs)(`button`,{type:`button`,onMouseDown:e=>e.preventDefault(),onClick:()=>{n(t.trim()),j()},className:`flex w-full items-center gap-2 px-3 py-2 text-left text-sm hover:bg-gray-50`,children:[(0,S.jsx)(f,{className:`h-4 w-4 text-transparent`}),(0,S.jsx)(`span`,{className:`truncate text-gray-700`,children:d.replace(`{value}`,t.trim())})]}),k.map(e=>(0,S.jsxs)(`button`,{type:`button`,onMouseDown:e=>e.preventDefault(),onClick:()=>{n(e),j()},className:`flex w-full items-center gap-2 px-3 py-2 text-left text-sm hover:bg-gray-50`,children:[(0,S.jsx)(f,{className:r(`h-4 w-4`,e===t.trim()?`text-primary`:`text-transparent`)}),(0,S.jsx)(`span`,{className:`truncate text-gray-700`,children:e})]},e)),k.length===0&&t.trim().length===0&&(0,S.jsx)(`div`,{className:`px-3 py-2 text-sm text-gray-500`,children:u})]})})]})}var E=`provider/model`;function D(e){let t=new Set;for(let n of e){let e=n.trim();e&&t.add(e)}return[...t]}function O({id:e,value:t,onChange:n,providerCatalog:r,disabled:o=!1,providerPlaceholder:f,modelPlaceholder:h,className:g}){let[_,v]=(0,x.useState)(``),[b,C]=(0,x.useState)(``),w=r.length>0,O=h??E,k=(0,x.useMemo)(()=>new Map(r.map(e=>[e.name,e])),[r]),A=k.get(_),j=(0,x.useMemo)(()=>A?.aliases??[],[A]),M=(0,x.useMemo)(()=>D(A?.models??[]),[A]);return(0,x.useEffect)(()=>{let e=t.trim();if(!w){v(``),C(e);return}if(!e){C(``),v(e=>k.has(e)?e:``);return}let n=p(e,r)??``,i=k.get(n)?.aliases??[];v(n),C(n?m(e,i):e)},[w,r,k,t]),w?(0,S.jsxs)(`div`,{className:g,children:[(0,S.jsxs)(`div`,{className:`flex flex-col gap-2 sm:flex-row sm:items-center`,children:[(0,S.jsx)(`div`,{className:`sm:w-[38%] sm:min-w-[170px]`,children:(0,S.jsxs)(d,{value:_,onValueChange:e=>{let t=D(k.get(e)?.models??[])[0]??``;if(v(e),C(t),!t){n(``);return}n(y(k.get(e)?.prefix??e,t))},disabled:o,children:[(0,S.jsx)(c,{className:`h-10 w-full rounded-xl`,children:(0,S.jsx)(s,{placeholder:f??i(`providersSelectPlaceholder`)})}),(0,S.jsx)(l,{children:r.map(e=>(0,S.jsx)(u,{value:e.name,children:e.displayName},e.name))})]})}),(0,S.jsx)(`span`,{className:`hidden h-10 items-center justify-center leading-none text-lg font-semibold text-gray-300 sm:inline-flex`,children:`/`}),(0,S.jsx)(T,{id:e,value:b,onChange:e=>{if(!A){let t=e.trim();C(t),n(t);return}let t=m(e,j);C(t),n(t?y(A.prefix,t):``)},options:M,disabled:o||!_,placeholder:O,className:`sm:flex-1`,inputClassName:`h-10 rounded-xl`,emptyText:i(`modelPickerNoOptions`),createText:i(`modelPickerUseCustom`),toggleLabel:i(`modelPickerToggleOptions`)},_)]}),(0,S.jsx)(`p`,{className:`mt-2 text-xs text-gray-500`,children:i(`modelInputCustomHint`)})]}):(0,S.jsxs)(`div`,{className:g,children:[(0,S.jsxs)(`div`,{className:`rounded-2xl border border-amber-200 bg-amber-50/70 px-4 py-3`,children:[(0,S.jsx)(`p`,{className:`text-sm font-semibold text-amber-950`,children:i(`providersEmptyTitle`)}),(0,S.jsx)(`p`,{className:`mt-1 text-xs leading-5 text-amber-900`,children:i(`providersEmptyDescription`)})]}),(0,S.jsx)(a,{id:e,value:t,disabled:o,onChange:e=>n(e.target.value),placeholder:O,className:`mt-3 h-10 rounded-xl`}),(0,S.jsx)(`p`,{className:`mt-2 text-xs text-gray-500`,children:i(`modelInputCustomHint`)})]})}export{O as t};
@@ -0,0 +1 @@
1
+ import{i as e}from"./chunk-DseTPa7n.js";import{B as t,H as n,L as r,a as i,s as a}from"./react-B7Paq2b3.js";import{$t as o,Pt as s,Sn as c,Yt as l,in as u,ln as d,nn as f,rn as p}from"./api-Cyxp93Fn.js";import{c as m}from"./dist-HFDWY6-K.js";import{C as h,a as g,i as _,n as v,r as y,t as b}from"./select-BZHvnwQB.js";import{c as x,l as S,t as C}from"./confirm-dialog-Bz3ieDQ5.js";import{t as w}from"./search-0OTHFRMx.js";import{t as T}from"./loader-circle-s65a4ZzL.js";import{t as E}from"./plus-XDIkqpkt.js";import{t as D}from"./refresh-cw-XrnNVwuQ.js";import{t as O}from"./settings-2-CM_PvDNk.js";import{t as k}from"./x-CCjWN5ys.js";import{t as A}from"./host-capabilities-D9C4CBK5.js";import{A as j,D as M,E as N,Ft as P,H as F,It as I,Jt as L,L as R,N as ee,O as z,S as B,T as te,U as V,V as ne,W as H,Wt as U,Yt as re,_t as W,b as G,g as ie,gt as K,it as q,k as ae,mt as oe,qt as se,w as ce,x as le,y as ue}from"./index-j6DBnvlr.js";import{t as de}from"./form-actions-BUZOCfPR.js";import{t as J}from"./config-hints-BcfVUMij.js";import{a as fe,c as pe,i as me,l as he,n as ge,o as _e,r as ve,s as ye}from"./config-split-page-C-YVl2mf.js";var be=m(`CircleDotDashed`,[[`path`,{d:`M10.1 2.18a9.93 9.93 0 0 1 3.8 0`,key:`1qdqn0`}],[`path`,{d:`M17.6 3.71a9.95 9.95 0 0 1 2.69 2.7`,key:`1bq7p6`}],[`path`,{d:`M21.82 10.1a9.93 9.93 0 0 1 0 3.8`,key:`1rlaqf`}],[`path`,{d:`M20.29 17.6a9.95 9.95 0 0 1-2.7 2.69`,key:`1xk03u`}],[`path`,{d:`M13.9 21.82a9.94 9.94 0 0 1-3.8 0`,key:`l7re25`}],[`path`,{d:`M6.4 20.29a9.95 9.95 0 0 1-2.69-2.7`,key:`1v18p6`}],[`path`,{d:`M2.18 13.9a9.93 9.93 0 0 1 0-3.8`,key:`xdo6bj`}],[`path`,{d:`M3.71 6.4a9.95 9.95 0 0 1 2.7-2.69`,key:`1jjmaz`}],[`circle`,{cx:`12`,cy:`12`,r:`1`,key:`41hilf`}]]),xe=m(`EyeOff`,[[`path`,{d:`M10.733 5.076a10.744 10.744 0 0 1 11.205 6.575 1 1 0 0 1 0 .696 10.747 10.747 0 0 1-1.444 2.49`,key:`ct8e1f`}],[`path`,{d:`M14.084 14.158a3 3 0 0 1-4.242-4.242`,key:`151rxh`}],[`path`,{d:`M17.479 17.499a10.75 10.75 0 0 1-15.417-5.151 1 1 0 0 1 0-.696 10.75 10.75 0 0 1 4.446-5.143`,key:`13bj9a`}],[`path`,{d:`m2 2 20 20`,key:`1ooewy`}]]),Y=e(n(),1),Se={providerId:``,providerType:null,isBuiltInType:!1,isCustom:!0,enabled:!0,displayName:``,apiKeySet:!1,apiKeyMasked:void 0,apiBase:null,extraHeaders:null,wireApi:null,models:[],modelConfig:{}};function X(e){if(!e)return null;let t=Object.entries(e).map(([e,t])=>[e.trim(),t]).filter(([e])=>e.length>0);return t.length===0?null:Object.fromEntries(t)}function Ce(e,t){let n=X(e),r=X(t);if(n===null&&r===null)return!0;if(!n||!r)return!1;let i=Object.entries(n).sort(([e],[t])=>e.localeCompare(t)),a=Object.entries(r).sort(([e],[t])=>e.localeCompare(t));return i.length===a.length?i.every(([e,t],n)=>e===a[n][0]&&t===a[n][1]):!1}function Z(e){if(!e||e.length===0)return[];let t=new Set;for(let n of e){let e=n.trim();e&&t.add(e)}return[...t]}function we(e,t){let n=e.trim();if(!n||!t.trim())return n;let r=`${t.trim()}/`;return n.startsWith(r)?n.slice(r.length):n}function Q(e,t){let n=e.trim();if(!n)return``;for(let e of t){let t=e.trim();t&&(n=we(n,t))}return n.trim()}function Te(e,t){return e.length===t.length?e.every((e,n)=>e===t[n]):!1}function Ee(e,t){return Z(t)}function De(e,t){return Z(e).map(e=>{let n=e.trim();return!n||n.startsWith(`${t}/`)?n:`${t}/${n}`})}function Oe(e,t){let n=new Set(t.map(e=>e.trim()).filter(Boolean)),r={};for(let[t,i]of Object.entries(e)){if(!n.has(t))continue;let e={},a=V(i.thinking?.supported);if(a.length>0){let t=H(i.thinking?.default);e.thinking=t&&a.includes(t)?{supported:a,default:t}:{supported:a}}i.vision===!0&&(e.vision=!0),(e.thinking||e.vision===!0)&&(r[t]=e)}return r}function ke(e,t,n){return{...F(e,n),...F(t,n)}}function Ae(e,t){let n=Object.keys(e).sort(),r=Object.keys(t).sort();if(n.length!==r.length)return!1;for(let i=0;i<n.length;i+=1){let a=n[i];if(a!==r[i])return!1;let o=e[a],s=t[a];if(!o||!s||!Te([...o.thinking?.supported??[]].sort(),[...s.thinking?.supported??[]].sort())||(o.thinking?.default??null)!==(s.thinking?.default??null)||(o.vision??!1)!==(s.vision??!1))return!1}return!0}function je(e){return e.providerName?e.apiKey.trim().length>0||e.apiBase.trim()!==e.currentApiBase.trim()||!Ce(e.extraHeaders,e.currentHeaders)||e.supportsWireApi&&e.wireApi!==e.currentWireApi||!Te(e.models,e.currentEditableModels)||!Ae(e.modelConfig,e.currentModelConfig)||e.providerDisplayName.trim()!==e.effectiveDisplayName:!1}function Me(e){let t={},n=e.apiKey.trim(),r=e.apiBase.trim(),i=X(e.extraHeaders),a=e.providerDisplayName.trim();return a!==e.effectiveDisplayName&&(t.displayName=a.length>0?a:null),n.length>0&&(t.apiKey=n),r!==e.currentApiBase.trim()&&(t.apiBase=r.length>0&&r!==e.defaultApiBase?r:null),Ce(i,e.currentHeaders)||(t.extraHeaders=i),e.supportsWireApi&&e.wireApi!==e.currentWireApi&&(t.wireApi=e.wireApi),Te(e.models,e.currentEditableModels)||(t.models=De(e.models,e.providerName??``)),Ae(e.modelConfig,e.currentModelConfig)||(t.modelConfig=Oe(e.modelConfig,e.models)),t}function Ne(e){let t=Q(e.models.find(e=>e.trim().length>0)??``,e.providerModelAliases),n={...Pe(e),model:t||null};return e.supportsWireApi&&(n.wireApi=e.wireApi),n}function Pe(e){let t={apiBase:e.apiBase.trim(),extraHeaders:X(e.extraHeaders)};return e.apiKey.trim().length>0&&(t.apiKey=e.apiKey.trim()),t}function Fe(e){return i(e===`off`?`chatThinkingLevelOff`:e===`minimal`?`chatThinkingLevelMinimal`:e===`low`?`chatThinkingLevelLow`:e===`medium`?`chatThinkingLevelMedium`:e===`high`?`chatThinkingLevelHigh`:e===`adaptive`?`chatThinkingLevelAdaptive`:`chatThinkingLevelXhigh`)}function Ie(e){let{providerName:t,methods:n,defaultMethodId:r,language:i}=e;if(n.length===0)return``;let a=new Map;for(let e of n){let t=e.id.trim();t&&a.set(t.toLowerCase(),t)}let o=(...e)=>{for(let t of e){let e=a.get(t.toLowerCase());if(e)return e}},s=r?.trim();if(t===`minimax-portal`){if(i===`zh`)return o(`cn`,`china-mainland`)??o(s??``)??n[0]?.id??``;if(i===`en`)return o(`global`,`intl`,`international`)??o(s??``)??n[0]?.id??``}if(s){let e=o(s);if(e)return e}return i===`zh`?o(`cn`)??n[0]?.id??``:i===`en`?o(`global`)??n[0]?.id??``:n[0]?.id??``}function Le(e){let{required:t,hasDefault:n,optionCount:r}=e;return t&&n&&r>1&&r<=3}function Re(e,t,n){let r=Q(t,n);return r?e.includes(r)?{models:e,draft:``}:{models:[...e,r],draft:``}:{models:e,draft:t}}function ze(e,t,n){let r=[...e],i=new Set(e);for(let e of t){let t=Q(e,n);t&&!i.has(t)&&(i.add(t),r.push(t))}return{models:r,addedCount:r.length-e.length}}function Be(e,t,n){return ze(e,t,n).models.slice(e.length)}function Ve(e,t,n){let r={...t};return delete r[n],{models:e.filter(e=>e!==n),modelConfig:r}}function He(e,t,n){let r=e[t],i=r?.thinking?.supported??[],a=i.includes(n)?i.filter(e=>e!==n):R.filter(e=>e===n||i.includes(e)),o=r?.thinking?.default&&a.includes(r.thinking.default)?r.thinking.default:void 0,s={...r,thinking:a.length>0?o?{supported:a,default:o}:{supported:a}:void 0},c={...e};return s.thinking||s.vision===!0?c[t]=s:delete c[t],c}function Ue(e,t,n){let r=e[t],i=r?.thinking;return!i||i.supported.length===0||n&&!i.supported.includes(n)?e:{...e,[t]:{...r,thinking:n?{supported:i.supported,default:n}:{supported:i.supported}}}}function We(e,t,n){let r={...e[t],vision:n?!0:void 0},i={...e};return r.thinking||r.vision===!0?i[t]=r:delete i[t],i}function Ge(e){let{providerName:t,providerSpec:n,language:r}=e,i=n?.auth,a=i?.methods??[];return{providerAuth:i,providerAuthMethodOptions:a.map(e=>({value:e.id,label:e.label?.[r]||e.label?.en||e.id})),providerAuthMethods:a,preferredAuthMethodId:Ie({providerName:n?.providerType??t,methods:a,defaultMethodId:i?.defaultMethodId,language:r}),shouldUseAuthMethodPills:Le({required:i?.kind===`device_code`,hasDefault:!!i?.defaultMethodId?.trim(),optionCount:a.length})}}function Ke(e,t){let n=!!e?.supportsWireApi||t,r=(e?.wireApiOptions||[`auto`,`chat`,`responses`]).map(e=>({value:e,label:i(e===`chat`?`wireApiChat`:e===`responses`?`wireApiResponses`:`wireApiAuto`)}));return{shouldUseWireApiPills:Le({required:n,hasDefault:typeof e?.defaultWireApi==`string`&&e.defaultWireApi.length>0,optionCount:r.length}),supportsWireApi:n,wireApiSelectOptions:r}}function qe(e){let{providerName:t,providersView:n,templatesView:r,schema:a,language:o}=e,s=t?n?.providers[t]:null,c=r?.providerTemplates.find(e=>e.providerType===s?.providerType),l=s??Se,u=a?.uiHints,d=!!s?.isCustom,f=t?J(`providers.${t}.apiKey`,u):void 0,p=t?J(`providers.${t}.apiBase`,u):void 0,m=t?J(`providers.${t}.extraHeaders`,u):void 0,h=t?J(`providers.${t}.wireApi`,u):void 0,g=c?.displayName||s?.displayName||t||``,_=(l.displayName||``).trim()||g,v=l.enabled!==!1,y=d||c?.supportsModelDiscovery===!0,b=Z([c?.modelPrefix||c?.providerType||``,t||``]),x=c?.defaultApiBase||``,S=l.apiBase||x,C=X(l.extraHeaders||null),w=l.wireApi||c?.defaultWireApi||`auto`,T=Ee(Z((c?.defaultModels??[]).map(e=>Q(e,b))),Z((l.models??[]).map(e=>Q(e,b)))),E=Oe(ke(c?.modelConfig,l.modelConfig,b),T),D=c?.apiBaseHelp?.[o]||c?.apiBaseHelp?.en||p?.help||i(`providerApiBaseHelp`),O=Ge({providerName:t,providerSpec:c,language:o}),k=Ke(c,d);return{apiBaseHelpText:D,apiBaseHint:p,apiKeyHint:f,currentApiBase:S,currentEditableModels:T,currentEnabled:v,currentHeaders:C,currentModelConfig:E,currentWireApi:w,defaultApiBase:x,defaultDisplayName:g,effectiveDisplayName:_,extraHeadersHint:m,...O,providerConfig:s,providerModelAliases:b,resolvedProviderConfig:l,supportsModelDiscovery:y,wireApiHint:h,...k}}function Je(e){let{providerName:t,providerAuth:n,resolvedAuthMethodId:r}=e,a=c(),o=ae(),s=te(),l=ce(),[u,f]=(0,Y.useState)(``),[p,m]=(0,Y.useState)(null),[h,g]=(0,Y.useState)(``),_=(0,Y.useRef)(null),v=(0,Y.useCallback)(()=>{_.current!==null&&(window.clearTimeout(_.current),_.current=null)},[]),y=(0,Y.useCallback)((e,n)=>{v(),_.current=window.setTimeout(()=>{(async()=>{if(t)try{let r=await s.mutateAsync({provider:t,data:{sessionId:e}});if(r.status===`pending`){g(i(`providerAuthWaitingBrowser`)),y(e,r.nextPollMs??n);return}if(r.status===`authorized`){m(null),v(),g(i(`providerAuthCompleted`)),d.success(i(`providerAuthCompleted`)),a.invalidateQueries({queryKey:[`config`]}),a.invalidateQueries({queryKey:[`providers`]});return}m(null),v(),g(r.message||`Authorization ${r.status}.`),d.error(r.message||`Authorization ${r.status}.`)}catch(e){m(null),v();let t=e instanceof Error?e.message:String(e);g(t),d.error(`Authorization failed: ${t}`)}})()},Math.max(1e3,n))},[v,s,t,a]),b=(0,Y.useCallback)(async()=>{if(!(!t||n?.kind!==`device_code`))try{f(t),g(``);let e=await o.mutateAsync({provider:t,data:r?{methodId:r}:{}});if(!e.sessionId||!e.verificationUri)throw Error(i(`providerAuthStartFailed`));m(e.sessionId),g(`${i(`providerAuthOpenPrompt`)}${e.userCode}${i(`providerAuthOpenPromptSuffix`)}`),await A.openExternalUrl(e.verificationUri),y(e.sessionId,e.intervalMs)}catch(e){let t=e instanceof Error?e.message:String(e);m(null),v(),g(t),d.error(`${i(`providerAuthStartFailed`)}: ${t}`)}},[v,n?.kind,t,r,y,o]),x=(0,Y.useCallback)(async()=>{if(!(!t||n?.kind!==`device_code`))try{f(t),v(),m(null);let e=await l.mutateAsync({provider:t});g(`${i(`providerAuthImportStatusPrefix`)}${e.expiresAt?` (expires: ${e.expiresAt})`:``}`),d.success(i(`providerAuthImportSuccess`)),a.invalidateQueries({queryKey:[`config`]}),a.invalidateQueries({queryKey:[`providers`]})}catch(e){let t=e instanceof Error?e.message:String(e);g(t),d.error(`${i(`providerAuthImportFailed`)}: ${t}`)}},[v,l,n?.kind,t,a]);return(0,Y.useEffect)(()=>{v()},[v,t]),(0,Y.useEffect)(()=>()=>v(),[v]),{authSessionId:u===t?p:null,authStatusMessage:u===t?h:``,importAuthFromCli:x,importPending:l.isPending,startAuth:b,startPending:o.isPending}}function Ye(e){let{providerName:t,apiKey:n,apiKeyRequired:r,apiKeySet:a,apiBase:o,extraHeaders:s,supportsWireApi:c,wireApi:u,models:f,providerModelAliases:p}=e,m=j(),h=B(),g=(0,Y.useMemo)(()=>JSON.stringify({providerName:t,apiKey:n,apiBase:o,extraHeaders:s}),[o,n,s,t]),[_,v]=(0,Y.useState)(null),y=(0,Y.useCallback)(async()=>{if(t)try{let e=await m.mutateAsync({provider:t,data:Ne({apiKey:n,apiBase:o,extraHeaders:s,supportsWireApi:c,wireApi:u,models:f,providerModelAliases:p})});if(e.success){d.success(`${i(`providerTestConnectionSuccess`)} (${e.latencyMs}ms)`);return}let r=[`provider=${e.provider}`,`latency=${e.latencyMs}ms`];e.model&&r.push(`model=${e.model}`),d.error(`${i(`providerTestConnectionFailed`)}: ${e.message} | ${r.join(` | `)}`)}catch(e){let t=e instanceof Error?e.message:String(e);d.error(`${i(`providerTestConnectionFailed`)}: ${t}`)}},[o,n,s,f,p,t,c,m,u]);return{discoverModels:(0,Y.useCallback)(async()=>{if(!t)return null;if(r&&!n.trim()&&!a)return d.error(i(`providerModelsApiKeyRequired`)),null;try{let e=await h.mutateAsync({provider:t,data:Pe({apiKey:n,apiBase:o,extraHeaders:s})});return v({key:g,models:e.models}),d.success(i(`providerModelsFetchSuccess`)),e.models}catch(e){if(e instanceof l&&(e.details?.upstreamStatus===401||e.details?.upstreamStatus===403))return d.error(i(`providerModelsAuthorizationFailed`)),null;let t=e instanceof Error?e.message:String(e);return d.error(`${i(`providerModelsFetchFailed`)}: ${t}`),null}},[o,n,r,a,h,g,s,t]),fetchedModels:_?.key===g?_.models:[],isDiscoveringModels:h.isPending,isTestPending:m.isPending,testConnection:y}}var $=t();function Xe({value:e,onChange:t,className:n}){let a=e?Object.entries(e):[],o=(e,n,r)=>{let i=[...a];i[e]=[n,r],t(Object.fromEntries(i))},s=()=>{t({...e,"":``})},c=e=>{let n=a.filter((t,n)=>n!==e);t(Object.fromEntries(n))};return(0,$.jsxs)(`div`,{className:r(`space-y-2`,n),children:[a.map(([e,t],n)=>(0,$.jsxs)(`div`,{className:`flex gap-2`,children:[(0,$.jsx)(p,{type:`text`,value:e,onChange:e=>o(n,e.target.value,t),placeholder:i(`headerName`),className:`flex-1`}),(0,$.jsx)(p,{type:`text`,value:t,onChange:t=>o(n,e,t.target.value),placeholder:i(`headerValue`),className:`flex-1`}),(0,$.jsx)(u,{type:`button`,variant:`ghost`,size:`icon`,onClick:()=>c(n),children:(0,$.jsx)(I,{className:`h-4 w-4 text-red-500`})})]},n)),(0,$.jsxs)(u,{type:`button`,variant:`outline`,size:`sm`,onClick:s,children:[(0,$.jsx)(E,{className:`h-4 w-4 mr-2`}),i(`add`)]})]})}function Ze(e){let{value:t,onChange:n,options:r}=e;return(0,$.jsx)(`div`,{className:`flex flex-wrap gap-2`,children:r.map(e=>{let r=e.value===t;return(0,$.jsx)(`button`,{type:`button`,onClick:()=>n(e.value),"aria-pressed":r,className:`rounded-full border px-3 py-1.5 text-xs font-medium transition-colors ${r?`border-foreground/15 bg-foreground text-background`:`border-border/55 bg-muted/50 text-muted-foreground hover:border-border hover:bg-muted hover:text-foreground`}`,children:e.label},e.value)})})}function Qe(e){let{showAdvanced:t,onShowAdvancedChange:n,supportsWireApi:r,wireApiLabel:a,wireApi:o,onWireApiChange:s,shouldUseWireApiPills:c,wireApiSelectOptions:l,extraHeadersLabel:u,extraHeaders:d,onExtraHeadersChange:p}=e;return(0,$.jsxs)(`div`,{className:`border-t border-border/70 pt-4`,children:[(0,$.jsxs)(`button`,{type:`button`,onClick:()=>n(!t),className:`flex w-full items-center justify-between text-sm text-muted-foreground transition-colors hover:text-foreground`,children:[(0,$.jsxs)(`span`,{className:`flex items-center gap-1.5`,children:[(0,$.jsx)(O,{className:`h-3.5 w-3.5`}),i(`providerAdvancedSettings`)]}),(0,$.jsx)(h,{className:`h-4 w-4 transition-transform ${t?`rotate-180`:``}`})]}),t?(0,$.jsxs)(`div`,{className:`mt-4 space-y-5`,children:[r?(0,$.jsxs)(`div`,{className:`space-y-2`,children:[(0,$.jsx)(f,{htmlFor:`wireApi`,className:`text-sm font-medium text-foreground`,children:a}),c?(0,$.jsx)(Ze,{value:o,onChange:e=>s(e),options:l}):(0,$.jsxs)(b,{value:o,onValueChange:e=>s(e),children:[(0,$.jsx)(_,{className:`rounded-xl`,children:(0,$.jsx)(g,{})}),(0,$.jsx)(v,{children:l.map(e=>(0,$.jsx)(y,{value:e.value,children:e.label},e.value))})]})]}):null,(0,$.jsxs)(`div`,{className:`space-y-2`,children:[(0,$.jsx)(f,{className:`text-sm font-medium text-foreground`,children:u}),(0,$.jsx)(Xe,{value:d,onChange:p}),(0,$.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:i(`providerExtraHeadersHelpShort`)})]})]}):null]})}function $e({isSet:e,className:t,value:n,onChange:i,placeholder:a,...o}){let[s,c]=(0,Y.useState)(!1),[l,d]=(0,Y.useState)(!1),f=typeof n==`string`&&n.length>0;return(0,$.jsxs)(`div`,{className:`relative`,children:[e&&!f&&!l?(0,$.jsx)(`div`,{onClick:()=>d(!0),className:r(`flex h-9 w-full rounded-xl border border-gray-200/80 bg-white px-3.5 py-2 text-sm text-gray-500 cursor-text items-center pr-12`,t),children:`••••••••••••`}):(0,$.jsx)(p,{type:s?`text`:`password`,className:r(`pr-12`,t),value:n,onChange:i,onBlur:()=>{f||d(!1)},placeholder:a,autoFocus:l,...o}),(0,$.jsx)(`div`,{className:`absolute right-2 top-1/2 -translate-y-1/2 flex gap-1`,children:(e||f)&&(0,$.jsx)(u,{type:`button`,variant:`ghost`,size:`icon`,className:`h-7 w-7`,onClick:()=>c(!s),children:s?(0,$.jsx)(xe,{className:`h-4 w-4`}):(0,$.jsx)(se,{className:`h-4 w-4`})})})]})}function et(e){let{apiKey:t,apiKeyRequired:n,apiKeySet:r,apiKeyPlaceholder:a,providerAuth:o,providerAuthNote:s,providerAuthMethodOptions:c,providerAuthMethodsCount:l,selectedAuthMethodHint:d,shouldUseAuthMethodPills:p,resolvedAuthMethodId:m,onAuthMethodChange:h,onStartProviderAuth:x,onImportProviderAuthFromCli:S,startPending:C,importPending:w,authSessionId:T,authStatusMessage:E,onApiKeyChange:D}=e,O=n?(0,$.jsxs)(`div`,{className:`space-y-2`,children:[(0,$.jsx)(f,{htmlFor:`apiKey`,className:`text-sm font-medium text-foreground`,children:i(`apiKey`)}),(0,$.jsx)($e,{id:`apiKey`,value:t,isSet:r,onChange:e=>D(e.target.value),placeholder:a,className:`rounded-xl`}),(0,$.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:i(`leaveBlankToKeepUnchanged`)})]}):null;return o?.kind===`device_code`?(0,$.jsxs)($.Fragment,{children:[O,(0,$.jsxs)(`div`,{className:`space-y-2 rounded-xl bg-muted/45 p-3`,children:[(0,$.jsx)(f,{className:`text-sm font-medium text-foreground`,children:o.displayName||i(`providerAuthSectionTitle`)}),s?(0,$.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:s}):null,l>1?(0,$.jsxs)(`div`,{className:`space-y-2`,children:[(0,$.jsx)(f,{className:`text-xs font-medium text-foreground`,children:i(`providerAuthMethodLabel`)}),p?(0,$.jsx)(Ze,{value:m,onChange:h,options:c}):(0,$.jsxs)(b,{value:m,onValueChange:h,children:[(0,$.jsx)(_,{className:`h-8 rounded-lg`,children:(0,$.jsx)(g,{placeholder:i(`providerAuthMethodPlaceholder`)})}),(0,$.jsx)(v,{children:c.map(e=>(0,$.jsx)(y,{value:e.value,children:e.label},e.value))})]}),d?(0,$.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:d}):null]}):null,(0,$.jsxs)(`div`,{className:`flex flex-wrap items-center gap-2`,children:[(0,$.jsx)(u,{type:`button`,variant:`outline`,size:`sm`,onClick:x,disabled:C||!!T,children:i(C?`providerAuthStarting`:T?`providerAuthAuthorizing`:`providerAuthAuthorizeInBrowser`)}),o.supportsCliImport?(0,$.jsx)(u,{type:`button`,variant:`outline`,size:`sm`,onClick:S,disabled:w,children:i(w?`providerAuthImporting`:`providerAuthImportFromCli`)}):null,T?(0,$.jsxs)(`span`,{className:`text-xs text-muted-foreground`,children:[i(`providerAuthSessionLabel`),`: `,T.slice(0,8),`…`]}):null]}),E?(0,$.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:E}):null]})]}):O}function tt(e){let{providerName:t,models:n,aliases:r,fetchedModels:i=[],onModelsChange:a}=e,o=N({pollWhileRefreshing:!0,refreshOnMount:!0}),s=t?o.data?.providers[t]:void 0,c=i.length>0?`fetched`:`background`,l=(0,Y.useMemo)(()=>Be(n,c===`fetched`?i:s?.models??[],r),[r,s?.models,i,n,c]);return{addSuggestedModels:(0,Y.useCallback)(e=>{let t=ze(n,e,r);t.addedCount>0&&a(t.models)},[r,n,a]),hasSuggestionError:!!(s?.lastError&&!s.fetchedAt),isCheckingSuggestions:!!(t&&(o.isLoading||o.data?.refreshing&&!s)),suggestedModels:l,suggestionSource:c}}function nt(e){let{models:t,modelConfig:n,onModelsChange:r,onRemoveModel:a,onToggleModelThinkingLevel:o,onSetModelThinkingDefault:c,onSetModelVision:l,thinkingLevels:u,formatThinkingLevelLabel:d}=e,[p,m]=(0,Y.useState)(!1),[h,x]=(0,Y.useState)(()=>new Set),S=(0,Y.useMemo)(()=>t.filter(e=>h.has(e)),[t,h]),C=e=>{x(t=>{let n=new Set(t);return n.has(e)?n.delete(e):n.add(e),n})},w=()=>{m(!1),x(new Set)};return(0,$.jsxs)(`div`,{className:`space-y-2`,children:[(0,$.jsx)(`div`,{className:`flex min-h-7 flex-wrap items-center justify-end gap-2`,children:p?(0,$.jsxs)($.Fragment,{children:[(0,$.jsx)(`span`,{className:`mr-auto text-xs text-muted-foreground`,children:i(`providerModelsSuggestionsSelected`).replace(`{count}`,String(S.length))}),(0,$.jsx)(`button`,{type:`button`,className:`text-xs font-medium text-primary hover:text-primary/80`,onClick:()=>x(S.length===t.length?new Set:new Set(t)),children:i(S.length===t.length?`providerModelsClearSelection`:`providerModelsSelectAll`)}),(0,$.jsx)(`button`,{type:`button`,className:`text-xs font-medium text-muted-foreground hover:text-foreground`,onClick:w,children:i(`cancel`)}),(0,$.jsxs)(`button`,{type:`button`,disabled:S.length===0,className:`inline-flex items-center gap-1 rounded-md bg-destructive/10 px-2 py-1 text-xs font-medium text-destructive transition-colors hover:bg-destructive/15 disabled:cursor-not-allowed disabled:opacity-45`,onClick:()=>{S.length!==0&&(r(t.filter(e=>!h.has(e))),w())},children:[(0,$.jsx)(I,{className:`h-3 w-3`}),i(`providerModelsRemoveSelected`)]})]}):(0,$.jsxs)(`button`,{type:`button`,className:`inline-flex items-center gap-1 text-xs font-medium text-muted-foreground hover:text-foreground`,onClick:()=>m(!0),children:[(0,$.jsx)(I,{className:`h-3 w-3`}),i(`providerModelsBulkRemove`)]})}),(0,$.jsx)(`div`,{className:`flex flex-wrap gap-2`,children:t.map(e=>{if(p)return(0,$.jsxs)(`label`,{className:`inline-flex max-w-full cursor-pointer items-center gap-2 rounded-full border border-border/55 bg-muted/45 px-3 py-1.5 hover:bg-muted/70`,children:[(0,$.jsx)(`input`,{type:`checkbox`,checked:h.has(e),onChange:()=>C(e),"aria-label":i(`providerModelsSuggestionSelect`).replace(`{model}`,e),className:`h-3.5 w-3.5 shrink-0 accent-primary`}),(0,$.jsx)(`span`,{className:`max-w-[140px] truncate text-sm text-foreground sm:max-w-[220px]`,children:e})]},e);let t=n[e],r=t?.thinking,m=r?.supported??[],x=r?.default??null,S=t?.vision===!0;return(0,$.jsxs)(`div`,{className:`group inline-flex max-w-full items-center gap-1 rounded-full border border-border/55 bg-muted/45 px-3 py-1.5`,children:[(0,$.jsx)(`span`,{className:`max-w-[140px] truncate text-sm text-foreground sm:max-w-[220px]`,children:e}),(0,$.jsxs)(oe,{children:[(0,$.jsx)(W,{asChild:!0,children:(0,$.jsx)(`button`,{type:`button`,className:`inline-flex h-5 w-5 items-center justify-center rounded-full text-muted-foreground/70 opacity-100 transition-opacity hover:bg-muted hover:text-foreground md:opacity-0 md:group-hover:opacity-100 md:group-focus-within:opacity-100`,"aria-label":i(`providerModelThinkingTitle`),title:i(`providerModelThinkingTitle`),children:(0,$.jsx)(O,{className:`h-3 w-3`})})}),(0,$.jsxs)(K,{className:`w-80 space-y-3`,children:[(0,$.jsxs)(`div`,{className:`flex items-center justify-between gap-3 rounded-lg bg-muted/50 px-3 py-2`,children:[(0,$.jsxs)(`div`,{className:`min-w-0`,children:[(0,$.jsx)(`p`,{className:`text-xs font-semibold text-foreground`,children:i(`providerModelVisionTitle`)}),(0,$.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:i(`providerModelVisionHint`)})]}),(0,$.jsx)(s,{checked:S,onCheckedChange:t=>l(e,t)})]}),(0,$.jsxs)(`div`,{className:`space-y-1`,children:[(0,$.jsx)(`p`,{className:`text-xs font-semibold text-foreground`,children:i(`providerModelThinkingTitle`)}),(0,$.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:i(`providerModelThinkingHint`)})]}),(0,$.jsx)(`div`,{className:`flex flex-wrap gap-1.5`,children:u.map(t=>(0,$.jsx)(`button`,{type:`button`,onClick:()=>o(e,t),className:`rounded-full border px-2.5 py-1 text-xs font-medium transition-colors ${m.includes(t)?`border-foreground/15 bg-foreground text-background`:`border-border/55 bg-muted/50 text-muted-foreground hover:border-border hover:bg-muted hover:text-foreground`}`,children:d(t)},t))}),(0,$.jsxs)(`div`,{className:`space-y-1.5`,children:[(0,$.jsx)(f,{className:`text-xs font-medium text-foreground`,children:i(`providerModelThinkingDefault`)}),(0,$.jsxs)(b,{value:x??`__none__`,onValueChange:t=>c(e,t===`__none__`?null:t),disabled:m.length===0,children:[(0,$.jsx)(_,{className:`h-8 rounded-lg text-xs`,children:(0,$.jsx)(g,{})}),(0,$.jsxs)(v,{children:[(0,$.jsx)(y,{value:`__none__`,children:i(`providerModelThinkingDefaultNone`)}),m.map(e=>(0,$.jsx)(y,{value:e,children:d(e)},e))]})]}),m.length===0?(0,$.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:i(`providerModelThinkingNoSupported`)}):null]})]})]}),(0,$.jsx)(`button`,{type:`button`,onClick:()=>a(e),className:`inline-flex h-5 w-5 items-center justify-center rounded-full text-muted-foreground/70 opacity-100 transition-opacity hover:bg-muted hover:text-foreground md:opacity-0 md:group-hover:opacity-100 md:group-focus-within:opacity-100`,"aria-label":i(`remove`),children:(0,$.jsx)(k,{className:`h-3 w-3`})})]},e)})}),p?(0,$.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:i(`providerModelsRemoveSaveHint`)}):null]})}var rt=20,it=50,at=50;function ot(e){let{expanded:t,fetchedTotal:n,models:r,source:a,onExpandedChange:o,onAddModels:s}=e,[c,l]=(0,Y.useState)(``),[u,d]=(0,Y.useState)(()=>new Set),f=(0,Y.useMemo)(()=>{let e=c.trim().toLowerCase();return e?r.filter(t=>t.toLowerCase().includes(e)):r},[r,c]),m=f.slice(0,at),h=(0,Y.useMemo)(()=>r.filter(e=>u.has(e)),[r,u]),g=e=>{d(t=>{let n=new Set(t);return n.has(e)?n.delete(e):n.add(e),n})},_=e=>{e.length!==0&&(s(e),l(``),d(new Set))},v=a===`fetched`?`providerModelsFetchedSuggestionsSummary`:`providerModelsSuggestionsSummary`;return a===`fetched`&&r.length===0?(0,$.jsxs)(`div`,{className:`flex items-center gap-2 rounded-xl bg-muted/35 px-3 py-2 text-xs text-muted-foreground`,role:`status`,children:[(0,$.jsx)(x,{className:`h-3.5 w-3.5 shrink-0 text-primary`}),(0,$.jsx)(`span`,{children:i(`providerModelsFetchedAllConfigured`).replace(`{count}`,String(n))})]}):(0,$.jsxs)(`div`,{className:`rounded-xl bg-muted/35 p-2`,children:[(0,$.jsxs)(`div`,{className:`flex min-w-0 flex-wrap items-center gap-1.5`,children:[(0,$.jsxs)(`button`,{type:`button`,"aria-expanded":t,className:`flex min-w-0 flex-1 items-center gap-1.5 rounded-lg px-2 py-1.5 text-left text-xs text-muted-foreground transition-colors hover:bg-muted/70 hover:text-foreground`,onClick:()=>o(!t),children:[(0,$.jsx)(x,{className:`h-3.5 w-3.5 shrink-0 text-primary`}),(0,$.jsx)(`span`,{className:`min-w-0 flex-1 truncate`,children:i(v).replace(`{count}`,String(r.length))}),(0,$.jsx)(re,{className:`h-3.5 w-3.5 shrink-0 transition-transform ${t?`rotate-90`:``}`})]}),r.length<=it?(0,$.jsx)(`button`,{type:`button`,className:`shrink-0 rounded-lg px-2 py-1.5 text-xs font-medium text-primary transition-colors hover:bg-primary/10`,onClick:()=>_(r),children:i(`providerModelsSuggestionsAddAll`)}):null]}),t?(0,$.jsxs)(`div`,{className:`px-1 pb-1`,children:[r.length>rt?(0,$.jsxs)(`div`,{className:`relative px-2 pb-1 pt-1.5`,children:[(0,$.jsx)(w,{className:`pointer-events-none absolute left-4 top-1/2 h-3.5 w-3.5 -translate-y-1/2 text-muted-foreground`}),(0,$.jsx)(p,{value:c,onChange:e=>l(e.target.value),placeholder:i(`providerModelsSuggestionsSearchPlaceholder`),className:`h-8 rounded-lg pl-8 text-xs`})]}):null,(0,$.jsxs)(`div`,{className:`custom-scrollbar max-h-44 overflow-y-auto overscroll-contain`,children:[m.map(e=>(0,$.jsxs)(`label`,{className:`grid min-w-0 cursor-pointer grid-cols-[auto_minmax(0,1fr)] items-center gap-2 rounded-lg px-2 py-1.5 hover:bg-muted/70`,children:[(0,$.jsx)(`input`,{type:`checkbox`,checked:u.has(e),onChange:()=>g(e),"aria-label":i(`providerModelsSuggestionSelect`).replace(`{model}`,e),className:`h-3.5 w-3.5 shrink-0 accent-primary`}),(0,$.jsx)(`span`,{className:`block min-w-0 truncate text-xs text-foreground`,title:e,children:e})]},e)),f.length===0?(0,$.jsx)(`p`,{className:`px-2 py-4 text-center text-xs text-muted-foreground`,children:i(`providerModelsSuggestionsSearchEmpty`)}):null]}),f.length>m.length?(0,$.jsx)(`p`,{className:`px-2 pt-1 text-[11px] text-muted-foreground`,children:i(`providerModelsSuggestionsShowing`).replace(`{visible}`,String(m.length)).replace(`{count}`,String(f.length))}):null,(0,$.jsxs)(`div`,{className:`flex items-center justify-between gap-2 px-2 pt-1.5`,children:[(0,$.jsx)(`span`,{className:`text-[11px] text-muted-foreground`,children:i(`providerModelsSuggestionsSelected`).replace(`{count}`,String(h.length))}),(0,$.jsx)(`button`,{type:`button`,disabled:h.length===0,className:`shrink-0 rounded-md bg-primary/10 px-2 py-1 text-[11px] font-medium text-primary transition-colors hover:bg-primary/15 disabled:cursor-not-allowed disabled:opacity-45`,onClick:()=>_(h),children:i(`providerModelsSuggestionsAddSelected`)})]}),(0,$.jsx)(`p`,{className:`px-2 pb-1 pt-1 text-[11px] text-muted-foreground`,children:i(`providerModelsSuggestionsSaveHint`)})]}):null]})}function st({hasFetchedCatalog:e,hasSuggestionError:t,supportsModelDiscovery:n}){return!n||!t||e?null:(0,$.jsxs)(`div`,{className:`flex items-start gap-2 rounded-xl bg-destructive/10 px-3 py-2 text-xs text-destructive`,children:[(0,$.jsx)(S,{className:`mt-0.5 h-3.5 w-3.5 shrink-0`}),i(`providerModelsSuggestionsFailed`)]})}function ct(e){let{providerName:t,providerModelAliases:n,models:r,modelConfig:a,modelDraft:o,showModelInput:s,onModelDraftChange:c,onShowModelInputChange:l,onAddModel:d,onModelsChange:m,supportsModelDiscovery:h,onDiscoverModels:g,isDiscoveringModels:_,fetchedModels:v,onRemoveModel:y,onToggleModelThinkingLevel:b,onSetModelThinkingDefault:x,onSetModelVision:S,thinkingLevels:C,formatThinkingLevelLabel:w}=e,[O,A]=(0,Y.useState)(!1),j=(0,Y.useRef)(null),{addSuggestedModels:M,hasSuggestionError:N,isCheckingSuggestions:P,suggestedModels:F,suggestionSource:I}=tt({providerName:t,models:r,aliases:n,fetchedModels:v,onModelsChange:m}),L=async()=>{await g()&&(A(!0),window.requestAnimationFrame(()=>{let e=j.current;e?.scrollIntoView?.({behavior:`smooth`,block:`center`}),e?.focus({preventScroll:!0})}))},R=v.length>0;return(0,$.jsxs)(`div`,{className:`space-y-2`,children:[(0,$.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,$.jsx)(f,{className:`text-sm font-medium text-foreground`,children:i(`providerModelsTitle`)}),(0,$.jsxs)(`div`,{className:`flex items-center gap-3`,children:[h?(0,$.jsxs)(`button`,{type:`button`,onClick:L,disabled:_,className:`flex items-center gap-1 text-xs font-medium text-primary transition-colors hover:text-primary/80 disabled:cursor-wait disabled:opacity-60`,children:[(0,$.jsx)(D,{className:`h-3 w-3 ${_?`animate-spin`:``}`}),i(_?`providerModelsFetching`:`providerModelsFetch`)]}):null,s?null:(0,$.jsxs)(`button`,{type:`button`,onClick:()=>l(!0),className:`flex items-center gap-1 text-xs font-medium text-primary hover:text-primary/80`,children:[(0,$.jsx)(E,{className:`h-3 w-3`}),i(`providerAddModel`)]})]})]}),s?(0,$.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,$.jsx)(p,{value:o,onChange:e=>c(e.target.value),onKeyDown:e=>{e.key===`Enter`&&(e.preventDefault(),d()),e.key===`Escape`&&(l(!1),c(``))},placeholder:i(`providerModelInputPlaceholder`),className:`flex-1 rounded-xl`,autoFocus:!0}),(0,$.jsx)(u,{type:`button`,size:`sm`,onClick:d,disabled:o.trim().length===0,children:i(`add`)}),(0,$.jsx)(u,{type:`button`,size:`sm`,variant:`ghost`,onClick:()=>{l(!1),c(``)},children:(0,$.jsx)(k,{className:`h-4 w-4`})})]}):null,(0,$.jsx)(st,{hasFetchedCatalog:R,hasSuggestionError:N,supportsModelDiscovery:h}),h&&P&&!R?(0,$.jsxs)(`div`,{className:`flex items-center gap-2 rounded-xl bg-muted/35 px-3 py-2 text-xs text-muted-foreground`,children:[(0,$.jsx)(T,{className:`h-3.5 w-3.5 animate-spin`}),i(`providerModelsSuggestionsChecking`)]}):h&&(F.length>0||R)?(0,$.jsx)(`div`,{ref:j,tabIndex:-1,"aria-live":`polite`,className:`scroll-m-4 outline-none`,children:(0,$.jsx)(ot,{expanded:O,fetchedTotal:v.length,models:F,source:I,onExpandedChange:A,onAddModels:M})}):null,r.length===0?(0,$.jsxs)(`div`,{className:`rounded-xl bg-muted/35 px-4 py-6 text-center`,children:[(0,$.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:i(`providerModelsEmptyShort`)}),s?null:(0,$.jsx)(`button`,{type:`button`,onClick:()=>l(!0),className:`mt-2 text-sm font-medium text-primary hover:text-primary/80`,children:i(`providerAddFirstModel`)})]}):(0,$.jsx)(nt,{models:r,modelConfig:a,onModelsChange:m,onRemoveModel:y,onToggleModelThinkingLevel:b,onSetModelThinkingDefault:x,onSetModelVision:S,thinkingLevels:C,formatThinkingLevelLabel:w})]})}function lt({apiKeyRequired:e=!0,apiKeySet:t,className:n,enabled:r}){if(!r)return(0,$.jsx)(P,{status:`inactive`,label:i(`disabled`),className:n});let a=!e||t;return(0,$.jsx)(P,{status:a?`ready`:`setup`,label:i(a?`statusReady`:`statusSetup`),className:n})}function ut(e){let{context:t,language:n,providerTitle:r,providerDisplayName:a,apiKey:o,apiBase:s,extraHeaders:c,wireApi:l,models:d,modelConfig:m,modelDraft:h,showAdvanced:g,showModelInput:_,resolvedAuthMethodId:v,authSessionId:y,authStatusMessage:b,hasChanges:x,isDeletePending:S,isUpdatePending:C,connectivity:w,startPending:T,importPending:E,onProviderDisplayNameChange:D,onApiKeyChange:O,onApiBaseChange:k,onAuthMethodChange:A,onStartProviderAuth:j,onImportProviderAuthFromCli:M,onModelDraftChange:N,onShowModelInputChange:P,onAddModel:F,onModelsChange:L,onRemoveModel:ee,onToggleModelThinkingLevel:z,onSetModelThinkingDefault:B,onSetModelVision:te,onShowAdvancedChange:V,onWireApiChange:ne,onExtraHeadersChange:H,onDeleteProvider:U,onSubmit:re,onTestConnection:W}=e,G=t.providerAuthMethods.find(e=>e.id===v);return(0,$.jsxs)(ge,{children:[(0,$.jsx)(pe,{className:`px-5 py-4`,children:(0,$.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,$.jsx)(`h3`,{className:`truncate text-lg font-semibold text-foreground`,children:r}),(0,$.jsxs)(`div`,{className:`flex items-center gap-3`,children:[(0,$.jsx)(`button`,{type:`button`,onClick:U,disabled:S,className:`text-muted-foreground/70 transition-colors hover:text-red-500`,title:i(`providerDelete`),children:(0,$.jsx)(I,{className:`h-4 w-4`})}),(0,$.jsx)(lt,{enabled:t.currentEnabled,apiKeyRequired:t.resolvedProviderConfig.apiKeyRequired,apiKeySet:t.resolvedProviderConfig.apiKeySet})]})]})}),(0,$.jsxs)(`form`,{onSubmit:re,className:`flex min-h-0 flex-1 flex-col`,children:[(0,$.jsxs)(_e,{className:`space-y-4 px-5 py-4`,children:[(0,$.jsxs)(`div`,{className:`space-y-2`,children:[(0,$.jsx)(f,{htmlFor:`providerDisplayName`,className:`text-sm font-medium text-foreground`,children:i(`providerDisplayName`)}),(0,$.jsx)(p,{id:`providerDisplayName`,type:`text`,value:a,onChange:e=>D(e.target.value),placeholder:t.defaultDisplayName||i(`providerDisplayNamePlaceholder`),className:`rounded-xl`}),(0,$.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:i(`providerDisplayNameHelpShort`)})]}),(0,$.jsx)(et,{apiKey:o,apiKeyRequired:t.resolvedProviderConfig.apiKeyRequired!==!1,apiKeySet:t.resolvedProviderConfig.apiKeySet,apiKeyPlaceholder:t.apiKeyHint?.placeholder??i(`enterApiKey`),providerAuth:t.providerAuth,providerAuthNote:t.providerAuth?.note?.[n]||t.providerAuth?.note?.en||t.providerAuth?.displayName||``,providerAuthMethodOptions:t.providerAuthMethodOptions,providerAuthMethodsCount:t.providerAuthMethods.length,selectedAuthMethodHint:G?.hint?.[n]||G?.hint?.en||``,shouldUseAuthMethodPills:t.shouldUseAuthMethodPills,resolvedAuthMethodId:v,onAuthMethodChange:A,onStartProviderAuth:j,onImportProviderAuthFromCli:M,startPending:T,importPending:E,authSessionId:y,authStatusMessage:b,onApiKeyChange:O}),(0,$.jsxs)(`div`,{className:`space-y-2`,children:[(0,$.jsx)(f,{htmlFor:`apiBase`,className:`text-sm font-medium text-foreground`,children:i(`apiBase`)}),(0,$.jsx)(p,{id:`apiBase`,type:`text`,value:s,onChange:e=>k(e.target.value),placeholder:t.defaultApiBase||t.apiBaseHint?.placeholder||`https://api.example.com`,className:`rounded-xl`}),(0,$.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:t.apiBaseHelpText})]}),(0,$.jsx)(ct,{providerName:t.providerConfig?.providerId??``,providerModelAliases:t.providerModelAliases,models:d,modelConfig:m,modelDraft:h,showModelInput:_,onModelDraftChange:N,onShowModelInputChange:P,onAddModel:F,onModelsChange:L,supportsModelDiscovery:t.supportsModelDiscovery,onDiscoverModels:w.discoverModels,isDiscoveringModels:w.isDiscoveringModels,fetchedModels:w.fetchedModels,onRemoveModel:ee,onToggleModelThinkingLevel:z,onSetModelThinkingDefault:B,onSetModelVision:te,thinkingLevels:R,formatThinkingLevelLabel:Fe},t.providerConfig?.providerId),(0,$.jsx)(Qe,{showAdvanced:g,onShowAdvancedChange:V,supportsWireApi:t.supportsWireApi,wireApiLabel:i(`wireApi`),wireApi:l,onWireApiChange:ne,shouldUseWireApiPills:t.shouldUseWireApiPills,wireApiSelectOptions:t.wireApiSelectOptions,extraHeadersLabel:i(`extraHeaders`),extraHeaders:c,onExtraHeadersChange:H})]}),(0,$.jsx)(ye,{children:(0,$.jsxs)(de,{align:`between`,children:[(0,$.jsxs)(u,{type:`button`,variant:`outline`,size:`sm`,onClick:W,disabled:w.isTestPending,children:[(0,$.jsx)(be,{className:`mr-1.5 h-3.5 w-3.5`}),w.isTestPending?i(`providerTestingConnection`):i(`providerTestConnection`)]}),(0,$.jsx)(u,{type:`submit`,size:`sm`,disabled:C||!x,children:i(C?`saving`:x?`save`:`unchanged`)})]})})]})]})}function dt({providerName:e,onProviderDeleted:t}){let{data:n}=z(),{data:r}=M(),{data:o}=ue(),s=a(),c=(0,Y.useMemo)(()=>qe({providerName:e,providersView:n,templatesView:r,schema:o,language:s}),[s,e,n,o,r]);if(!e||!c.providerConfig)return(0,$.jsx)(ve,{children:(0,$.jsxs)(`div`,{children:[(0,$.jsx)(`h3`,{className:`text-base font-semibold text-foreground`,children:i(`providersSelectTitle`)}),(0,$.jsx)(`p`,{className:`mt-2 text-sm text-muted-foreground`,children:i(`providersSelectDescription`)})]})});let l=JSON.stringify({providerConfig:c.providerConfig,currentApiBase:c.currentApiBase,currentEditableModels:c.currentEditableModels,currentModelConfig:c.currentModelConfig,currentWireApi:c.currentWireApi,effectiveDisplayName:c.effectiveDisplayName,preferredAuthMethodId:c.preferredAuthMethodId});return(0,$.jsx)(ft,{providerName:e,onProviderDeleted:t,context:c,language:s},l)}function ft({providerName:e,onProviderDeleted:t,context:n,language:r}){let a=ee(),o=le(),{currentApiBase:s,currentEditableModels:c,currentHeaders:l,currentModelConfig:u,currentWireApi:d,defaultApiBase:f,effectiveDisplayName:p,providerAuth:m,providerAuthMethods:h,providerModelAliases:g,resolvedProviderConfig:_,preferredAuthMethodId:v,supportsWireApi:y}=n,[b,x]=(0,Y.useState)(``),[S,C]=(0,Y.useState)(s),[w,T]=(0,Y.useState)(_.extraHeaders||null),[E,D]=(0,Y.useState)(d),[O,k]=(0,Y.useState)(c),[A,j]=(0,Y.useState)(u),[M,N]=(0,Y.useState)(``),[P,F]=(0,Y.useState)(p),[I,L]=(0,Y.useState)(!1),[R,z]=(0,Y.useState)(!1),[B,te]=(0,Y.useState)(v),V=Ye({providerName:e,apiKey:b,apiKeyRequired:_.apiKeyRequired!==!1,apiKeySet:_.apiKeySet,apiBase:S,extraHeaders:w,supportsWireApi:y,wireApi:E,models:O,providerModelAliases:g}),ne=P.trim()||p||e||i(`providersSelectPlaceholder`),H=(0,Y.useMemo)(()=>{if(!h.length)return``;let e=B.trim();return e&&h.some(t=>t.id===e)?e:v||h[0]?.id||``},[B,v,h]),{authSessionId:U,authStatusMessage:re,importAuthFromCli:W,importPending:G,startAuth:ie,startPending:K}=Je({providerName:e,providerAuth:m,resolvedAuthMethodId:H}),q=(0,Y.useMemo)(()=>je({providerName:e,apiKey:b,apiBase:S,currentApiBase:s,extraHeaders:w,currentHeaders:l,supportsWireApi:y,wireApi:E,currentWireApi:d,models:O,currentEditableModels:c,modelConfig:A,currentModelConfig:u,providerDisplayName:P,effectiveDisplayName:p}),[e,b,S,s,w,l,y,E,d,O,c,A,u,P,p]),ae=e=>{k(e),j(t=>Oe(t,e))};return(0,$.jsx)(ut,{context:n,language:r,providerTitle:ne,providerDisplayName:P,apiKey:b,apiBase:S,extraHeaders:w,wireApi:E,models:O,modelConfig:A,modelDraft:M,showAdvanced:I,showModelInput:R,resolvedAuthMethodId:H,authSessionId:U,authStatusMessage:re,hasChanges:q,isDeletePending:o.isPending,isUpdatePending:a.isPending,connectivity:V,startPending:K,importPending:G,onProviderDisplayNameChange:F,onApiKeyChange:x,onApiBaseChange:C,onAuthMethodChange:te,onStartProviderAuth:ie,onImportProviderAuthFromCli:W,onModelDraftChange:N,onShowModelInputChange:z,onAddModel:()=>{let e=Re(O,M,g);ae(e.models),N(e.draft)},onModelsChange:ae,onRemoveModel:e=>{let t=Ve(O,A,e);k(t.models),j(t.modelConfig)},onToggleModelThinkingLevel:(e,t)=>{j(n=>He(n,e,t))},onSetModelThinkingDefault:(e,t)=>{j(n=>Ue(n,e,t))},onSetModelVision:(e,t)=>{j(n=>We(n,e,t))},onShowAdvancedChange:L,onWireApiChange:D,onExtraHeadersChange:T,onDeleteProvider:async()=>{if(e&&window.confirm(i(`providerDeleteConfirm`)))try{await o.mutateAsync({provider:e}),t?.(e)}catch{}},onSubmit:t=>{t.preventDefault(),e&&a.mutate({provider:e,data:Me({providerName:e,apiKey:b,apiBase:S,currentApiBase:s,defaultApiBase:f,extraHeaders:w,currentHeaders:l,supportsWireApi:y,wireApi:E,currentWireApi:d,models:O,currentEditableModels:c,modelConfig:A,currentModelConfig:u,providerDisplayName:P,effectiveDisplayName:p})})},onTestConnection:V.testConnection})}function pt(e){if(!e)return null;try{let t=new URL(e);return`${t.host}${t.pathname&&t.pathname!==`/`?t.pathname:``}`}catch{return e.replace(/^https?:\/\//,``)}}function mt(e,t=[]){let n=new Map(t.map((e,t)=>[e,t]));return e.map((e,t)=>({provider:e,index:t})).sort((e,t)=>{let r=n.get(e.provider.providerId),i=n.get(t.provider.providerId);if(r!==void 0||i!==void 0)return(r??2**53-1)-(i??2**53-1);let a=e.provider.providerType===`nextclaw`?1:0,o=t.provider.providerType===`nextclaw`?1:0;return a===o?e.index-t.index:a-o}).map(({provider:e})=>e)}function ht(e){let t=e.findIndex(e=>e.providerType===`zhipu`),n=e.findIndex(e=>e.providerType===`dashscope-coding-plan`);return e.map((e,t)=>({template:e,index:t})).sort((e,r)=>{let i=({template:e,index:r})=>e.providerType===`nextclaw`?2**53-1:e.providerType===`deepseek`&&n>=0?n-.5:e.providerType===`mimo`&&t>=0?t+.5:r;return i(e)-i(r)}).map(({template:e})=>e)}function gt(){let{isMobile:e}=ie(),{data:t}=z(),{data:n}=M(),a=G(),c=le(),l=ee(),[d,f]=(0,Y.useState)(null),[m,h]=(0,Y.useState)(null),[g,_]=(0,Y.useState)(!1),[v,y]=(0,Y.useState)([]),[b,x]=(0,Y.useState)(``),S=(0,Y.useMemo)(()=>mt(Object.values(t?.providers??{}),v),[t?.providers,v]),T=(0,Y.useMemo)(()=>n?.providerTemplates??[],[n?.providerTemplates]),D=(0,Y.useMemo)(()=>ht(T),[T]),O=(0,Y.useMemo)(()=>new Map(T.map(e=>[e.providerType,e])),[T]),k=(0,Y.useMemo)(()=>{let e=b.trim().toLowerCase();return S.filter(t=>{if(!e)return!0;let n=t.providerType?O.get(t.providerType):null;return(t.displayName?.trim()||n?.displayName||t.providerId).toLowerCase().includes(e)||t.providerId.toLowerCase().includes(e)})},[S,b,O]),A=(0,Y.useMemo)(()=>d&&k.some(e=>e.providerId===d)?d:e?null:k[0]?.providerId??null,[k,e,d]);return!t||!n?(0,$.jsx)(o,{title:i(`providersPageTitle`),description:i(`providersPageDescription`),layout:`split`,children:(0,$.jsx)(`div`,{className:`text-sm text-muted-foreground`,children:i(`providersLoading`)})}):(0,$.jsxs)(o,{title:i(`providersPageTitle`),description:i(`providersPageDescription`),layout:`split`,children:[(0,$.jsxs)(fe,{className:`md:min-h-0`,compactView:d?`detail`:`list`,onMobileBack:()=>f(null),mobileListLabel:i(`providersPageTitle`),children:[(0,$.jsxs)(he,{children:[(0,$.jsx)(pe,{className:`space-y-3 px-4 pb-3 pt-4`,children:(0,$.jsxs)(oe,{open:g,onOpenChange:_,children:[(0,$.jsx)(W,{asChild:!0,children:(0,$.jsxs)(u,{type:`button`,variant:`outline`,className:`w-full justify-center`,disabled:a.isPending,children:[(0,$.jsx)(E,{className:`mr-2 h-4 w-4`}),a.isPending?i(`saving`):i(`providerAdd`)]})}),(0,$.jsxs)(K,{className:`w-[42rem] max-w-[calc(100vw-2rem)] p-3`,align:`start`,children:[(0,$.jsx)(`div`,{className:`mb-2 px-1 text-xs font-semibold text-muted-foreground`,children:i(`providerTemplatePickerTitle`)}),(0,$.jsxs)(`div`,{className:`grid max-h-[24rem] grid-cols-2 gap-2 overflow-y-auto sm:grid-cols-3`,children:[(0,$.jsxs)(`button`,{type:`button`,className:`flex min-h-20 w-full flex-col items-start gap-2 rounded-lg border border-dashed border-border/70 bg-muted/20 px-3 py-2 text-left transition-colors hover:border-border hover:bg-muted/45`,onClick:async()=>{try{let e=await a.mutateAsync({data:{providerType:null}});x(``),f(e.providerId),y(t=>[e.providerId,...t.filter(t=>t!==e.providerId)]),_(!1)}catch{}},children:[(0,$.jsx)(q,{name:`custom`,className:`h-8 w-8 rounded-lg border border-border/60 bg-muted/50`}),(0,$.jsx)(`span`,{className:`line-clamp-2 min-w-0 text-xs font-semibold leading-4 text-foreground`,children:i(`providerAddCustom`)})]}),D.map(e=>(0,$.jsxs)(`button`,{type:`button`,className:`flex min-h-20 w-full flex-col items-start gap-2 rounded-lg border border-border/55 bg-muted/15 px-3 py-2 text-left transition-colors hover:border-border/80 hover:bg-muted/40`,onClick:async()=>{try{let t=await a.mutateAsync({data:{providerType:e.providerType}});x(``),f(t.providerId),y(e=>[t.providerId,...e.filter(e=>e!==t.providerId)]),_(!1)}catch{}},children:[(0,$.jsx)(q,{name:e.providerType,src:e.logo?`/logos/${e.logo}`:null,className:`h-8 w-8 rounded-lg border border-border/55 bg-background`,imgClassName:`h-4 w-4 object-contain`}),(0,$.jsx)(`span`,{className:`line-clamp-2 min-w-0 text-xs font-semibold leading-4 text-foreground`,children:e.displayName||e.providerType})]},e.providerType))]})]})]})}),(0,$.jsx)(`div`,{className:`border-b border-border/70 px-4 py-3`,children:(0,$.jsxs)(`div`,{className:`relative`,children:[(0,$.jsx)(w,{className:`pointer-events-none absolute left-3 top-1/2 h-4 w-4 -translate-y-1/2 text-muted-foreground/70`}),(0,$.jsx)(p,{value:b,onChange:e=>x(e.target.value),placeholder:i(`providersFilterPlaceholder`),className:`h-10 rounded-xl pl-9`})]})}),(0,$.jsxs)(_e,{className:`space-y-2 p-3`,children:[k.map(e=>{let t=e.providerType?O.get(e.providerType):null,n=e.enabled!==!1,a=ne(e),o=e.displayName?.trim()||t?.displayName||e.providerId,c=pt(e.apiBase||t?.defaultApiBase||``)||i(`providersDefaultDescription`);return(0,$.jsx)(`div`,{onClick:()=>f(e.providerId),onKeyDown:t=>{(t.key===`Enter`||t.key===` `)&&(t.preventDefault(),f(e.providerId))},role:`button`,tabIndex:0,className:r(`group w-full rounded-xl p-2.5 text-left transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring/40`,A===e.providerId?`bg-background/95 text-foreground shadow-sm`:`bg-transparent text-muted-foreground hover:bg-background/65 hover:text-foreground`),children:(0,$.jsxs)(`div`,{className:`relative min-h-10`,children:[(0,$.jsxs)(`div`,{className:`flex min-w-0 items-center gap-3 pr-20`,children:[(0,$.jsx)(q,{name:e.providerType??e.providerId,src:t?.logo?`/logos/${t.logo}`:null,className:`h-10 w-10 rounded-lg bg-background/80`,imgClassName:`h-5 w-5 object-contain`,fallback:(0,$.jsx)(`span`,{className:`text-sm font-semibold uppercase text-muted-foreground`,children:e.providerId[0]})}),(0,$.jsxs)(`div`,{className:`min-w-0`,children:[(0,$.jsx)(`p`,{className:`truncate text-sm font-semibold text-foreground`,children:o}),(0,$.jsx)(`p`,{className:`truncate font-mono text-[10px] text-muted-foreground/65`,children:e.providerId}),(0,$.jsxs)(`p`,{className:`line-clamp-1 text-[11px] text-muted-foreground`,children:[c,` · `,e.models?.length??0]})]})]}),(0,$.jsxs)(`div`,{className:`absolute right-0 top-0 flex items-center gap-1.5 opacity-70 transition-opacity group-hover:opacity-100`,children:[(0,$.jsx)(`div`,{onClick:e=>e.stopPropagation(),children:(0,$.jsx)(s,{checked:n,disabled:l.isPending,title:i(n?`disabled`:`enabled`),className:`h-[18px] w-8`,thumbClassName:`h-4 w-4 data-[state=checked]:translate-x-4`,onCheckedChange:t=>{l.mutateAsync({provider:e.providerId,data:{enabled:t},silentSuccess:!0})}})}),(0,$.jsxs)(oe,{children:[(0,$.jsx)(W,{asChild:!0,children:(0,$.jsx)(`button`,{type:`button`,className:`inline-flex h-7 w-7 items-center justify-center rounded-lg text-muted-foreground/70 hover:bg-muted hover:text-foreground`,onClick:e=>e.stopPropagation(),title:i(`more`),children:(0,$.jsx)(L,{className:`h-4 w-4`})})}),(0,$.jsx)(K,{className:`w-40 p-1`,align:`end`,onClick:e=>e.stopPropagation(),children:(0,$.jsxs)(`button`,{type:`button`,className:`flex w-full items-center gap-2 rounded-md px-2 py-2 text-sm text-red-600 hover:bg-red-50`,onClick:()=>h(e.providerId),children:[(0,$.jsx)(I,{className:`h-4 w-4`}),i(`providerDelete`)]})})]})]}),(0,$.jsx)(P,{status:n?a?`ready`:`setup`:`inactive`,label:i(n?a?`statusReady`:`statusSetup`:`disabled`),className:`absolute bottom-0 right-0 justify-end`})]})},e.providerId)}),k.length===0?(0,$.jsx)(me,{icon:U,title:i(`providersNoMatch`)}):null]})]}),(0,$.jsx)(dt,{providerName:A??void 0,onProviderDeleted:e=>{y(t=>t.filter(t=>t!==e)),e===A&&f(null)}})]}),(0,$.jsx)(C,{open:!!m,onOpenChange:e=>{e||h(null)},title:i(`providerDelete`),description:m??void 0,confirmLabel:i(`delete`),variant:`destructive`,onCancel:()=>h(null),onConfirm:()=>{m&&c.mutateAsync({provider:m}).then(()=>{y(e=>e.filter(e=>e!==m)),m===A&&f(null),h(null)})}})]})}export{gt as ProvidersConfigPage};