@nextclaw/ui 0.12.10 → 0.12.11

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 (169) hide show
  1. package/CHANGELOG.md +51 -10
  2. package/dist/assets/ChannelsList-SQ7Oxotv.js +8 -0
  3. package/dist/assets/DocBrowser-BCO2k6XD.js +1 -0
  4. package/dist/assets/{DocBrowser-DMfr0Oow.js → DocBrowser-rDOjI3ga.js} +1 -1
  5. package/dist/assets/{DocBrowserContext-BXydqby-.js → DocBrowserContext-BUq3Wo8O.js} +1 -1
  6. package/dist/assets/{LogoBadge-hO7tY7hE.js → LogoBadge-DP8Ye7wJ.js} +1 -1
  7. package/dist/assets/ModelConfig-C77Ae9ru.js +1 -0
  8. package/dist/assets/ProviderScopedModelInput-CEnK61uo.js +1 -0
  9. package/dist/assets/ProvidersList-BCupBayq.js +1 -0
  10. package/dist/assets/RuntimeConfig-Ad-CAcmy.js +1 -0
  11. package/dist/assets/SearchConfig-BfCz4wJ4.js +1 -0
  12. package/dist/assets/SecretsConfig-DjmBIhyy.js +3 -0
  13. package/dist/assets/SessionsConfig-CvjxU40H.js +2 -0
  14. package/dist/assets/{book-open-DzdUViDm.js → book-open-BE8M56IM.js} +1 -1
  15. package/dist/assets/chat-page-JKC6ln-y.js +58 -0
  16. package/dist/assets/chat-session-display-YcRMrAMa.js +1 -0
  17. package/dist/assets/{chunk-JZWAC4HX-C5dEc8hV.js → chunk-JZWAC4HX-erTUn3b8.js} +1 -1
  18. package/dist/assets/client-CszWMVKi.js +7 -0
  19. package/dist/assets/{config-split-page-BUout_Ak.js → config-split-page-BAGSzUR3.js} +1 -1
  20. package/dist/assets/{createLucideIcon-dy5ie7Ox.js → createLucideIcon-CCiTGX8L.js} +1 -1
  21. package/dist/assets/desktop-DfkLlkG2.js +1 -0
  22. package/dist/assets/desktop-update-config-BXeGlqHD.js +1 -0
  23. package/dist/assets/dialog-BghZFPch.js +5 -0
  24. package/dist/assets/{dist-Cy7_j6hA.js → dist-Dd9cr-kz.js} +1 -1
  25. package/dist/assets/dist-ZwoAXs46.js +9 -0
  26. package/dist/assets/{download-BD0ETkB-.js → download-D7LOizcW.js} +1 -1
  27. package/dist/assets/es2015-CEAreese.js +41 -0
  28. package/dist/assets/{external-link-kZSAO8nT.js → external-link-qsnCMhw1.js} +1 -1
  29. package/dist/assets/{hash-BHJC2Ovu.js → hash-0zjWsNl-.js} +1 -1
  30. package/dist/assets/{i18n-CpTZLchQ.js → i18n-DvzXOGQX.js} +1 -1
  31. package/dist/assets/index-DvVTC9FF.css +1 -0
  32. package/dist/assets/index-lr6rQUSd.js +2 -0
  33. package/dist/assets/key-round-BLe9D8ND.js +1 -0
  34. package/dist/assets/loader-circle-wj7kARHv.js +1 -0
  35. package/dist/assets/{logos-B7gRObP8.js → logos-_v5b2SdG.js} +1 -1
  36. package/dist/assets/marketplace-page-CAAk1Khc.js +1 -0
  37. package/dist/assets/marketplace-page-CfCiq90S.js +49 -0
  38. package/dist/assets/mcp-marketplace-page-D0Pp9Hs-.js +40 -0
  39. package/dist/assets/play-o6NmwGTi.js +1 -0
  40. package/dist/assets/plus-I9pBS4Fl.js +1 -0
  41. package/dist/assets/{refresh-cw-Bcv40SXy.js → refresh-cw-MNqgR3LZ.js} +1 -1
  42. package/dist/assets/remote-C9fXm4V5.js +1 -0
  43. package/dist/assets/{save-EqJPOF0G.js → save-D4bObrmH.js} +1 -1
  44. package/dist/assets/search-DxmL3IWE.js +1 -0
  45. package/dist/assets/security-config-BUm6FFfl.js +1 -0
  46. package/dist/assets/select-BILPf7zs.js +1 -0
  47. package/dist/assets/setting-row-BATDgg4r.js +1 -0
  48. package/dist/assets/skeleton-COKMAnJy.js +1 -0
  49. package/dist/assets/{switch-CM29eCAR.js → switch-CBOzecWS.js} +1 -1
  50. package/dist/assets/{tabs-custom-YcZUWn3o.js → tabs-custom-Bx3cNhD-.js} +1 -1
  51. package/dist/assets/tag-chip-zUaDE2-H.js +1 -0
  52. package/dist/assets/{trash-2-mJT6oWa2.js → trash-2-CQUgYyRn.js} +1 -1
  53. package/dist/assets/use-infinite-scroll-loader-B5V2Klve.js +1 -0
  54. package/dist/assets/useConfirmDialog-patAnl1g.js +1 -0
  55. package/dist/assets/{useMutation-CNcz2fgt.js → useMutation-__AYv-Pz.js} +1 -1
  56. package/dist/assets/x-BHUGQIUv.js +1 -0
  57. package/dist/index.html +22 -22
  58. package/module-structure.config.json +7 -0
  59. package/package.json +5 -5
  60. package/src/api/config.ts +10 -0
  61. package/src/api/raw-client.test.ts +1 -1
  62. package/src/api/{raw-client.ts → raw-client.utils.ts} +2 -0
  63. package/src/api/types.ts +40 -0
  64. package/src/app/components/app-manager-provider.tsx +20 -0
  65. package/src/app/managers/app.manager.ts +12 -0
  66. package/src/app.tsx +8 -8
  67. package/src/components/chat/chat-conversation-panel.test.tsx +10 -0
  68. package/src/components/chat/chat-input/ncp-chat-input-availability.utils.test.ts +92 -0
  69. package/src/components/chat/chat-input/ncp-chat-input-availability.utils.ts +45 -0
  70. package/src/components/chat/chat-page-shell.tsx +1 -1
  71. package/src/components/chat/containers/chat-input-bar.container.tsx +24 -12
  72. package/src/components/chat/{ChatSidebar.test.tsx → containers/chat-sidebar.test.tsx} +5 -4
  73. package/src/components/chat/{ChatSidebar.tsx → containers/chat-sidebar.tsx} +13 -37
  74. package/src/components/chat/hooks/use-chat-sidebar-session-label-editor.ts +49 -0
  75. package/src/components/chat/ncp/ncp-app-client-fetch.ts +3 -0
  76. package/src/components/chat/ncp/ncp-chat-input.manager.ts +13 -5
  77. package/src/components/chat/ncp/ncp-chat-page.tsx +21 -2
  78. package/src/components/chat/ncp/session-conversation/use-ncp-session-conversation.test.tsx +48 -4
  79. package/src/components/chat/ncp/session-conversation/use-ncp-session-conversation.ts +43 -5
  80. package/src/components/chat/ncp/tests/ncp-chat-input.manager.test.ts +51 -1
  81. package/src/components/config/desktop-update-config.test.tsx +10 -4
  82. package/src/components/config/desktop-update-config.tsx +5 -3
  83. package/src/components/config/runtime-control-card.test.tsx +119 -197
  84. package/src/components/config/runtime-control-card.tsx +20 -70
  85. package/src/components/config/runtime-presence-card.test.tsx +10 -14
  86. package/src/components/config/runtime-presence-card.tsx +7 -5
  87. package/src/components/layout/Sidebar.tsx +4 -4
  88. package/src/components/layout/runtime-status-entry.test.tsx +45 -101
  89. package/src/components/layout/runtime-status-entry.tsx +15 -63
  90. package/src/components/layout/sidebar.layout.test.tsx +11 -5
  91. package/src/{account → features/account}/components/account-panel.tsx +13 -13
  92. package/src/features/account/index.ts +6 -0
  93. package/src/{account → features/account}/managers/account.manager.ts +3 -3
  94. package/src/{components/remote → features/remote/components}/remote-access-page.test.tsx +4 -5
  95. package/src/{components/remote → features/remote/components}/remote-access-page.tsx +15 -13
  96. package/src/{hooks/useRemoteAccess.ts → features/remote/hooks/use-remote-access.ts} +1 -1
  97. package/src/features/remote/index.ts +27 -0
  98. package/src/{remote → features/remote}/managers/remote-access.manager.ts +3 -4
  99. package/src/{remote → features/remote/services}/remote-access-feedback.service.test.ts +1 -1
  100. package/src/features/system-status/hooks/use-system-status.ts +104 -0
  101. package/src/features/system-status/index.ts +12 -0
  102. package/src/features/system-status/managers/system-status.manager.bootstrap-polling.test.ts +126 -0
  103. package/src/features/system-status/managers/system-status.manager.test.ts +142 -0
  104. package/src/features/system-status/managers/system-status.manager.ts +511 -0
  105. package/src/features/system-status/stores/system-status.store.ts +32 -0
  106. package/src/features/system-status/types/system-status.types.ts +73 -0
  107. package/src/features/system-status/utils/system-status.utils.test.ts +132 -0
  108. package/src/features/system-status/utils/system-status.utils.ts +202 -0
  109. package/src/hooks/use-realtime-query-bridge.ts +34 -18
  110. package/src/lib/i18n.chat.ts +8 -0
  111. package/src/platforms/desktop/index.ts +20 -0
  112. package/src/{desktop → platforms/desktop}/managers/desktop-presence.manager.ts +2 -2
  113. package/src/{desktop → platforms/desktop}/managers/desktop-update.manager.ts +2 -2
  114. package/src/{desktop → platforms/desktop}/stores/desktop-presence.store.ts +1 -1
  115. package/src/{desktop → platforms/desktop}/stores/desktop-update.store.ts +1 -1
  116. package/src/stores/ui.store.ts +0 -9
  117. package/src/transport/{app-client.ts → app-client.service.ts} +9 -9
  118. package/src/transport/app-client.test.ts +9 -5
  119. package/src/transport/index.ts +1 -1
  120. package/src/transport/{local.transport.ts → local-transport.service.ts} +14 -12
  121. package/dist/assets/ChannelsList-M9FTK1Ak.js +0 -8
  122. package/dist/assets/DocBrowser-CH7-GxlL.js +0 -1
  123. package/dist/assets/ModelConfig-CNIgLf0e.js +0 -1
  124. package/dist/assets/ProviderScopedModelInput-B3HWP4oz.js +0 -1
  125. package/dist/assets/ProvidersList-CHjMnRhX.js +0 -1
  126. package/dist/assets/RuntimeConfig-psp8nMSG.js +0 -1
  127. package/dist/assets/SearchConfig-CSoKip1f.js +0 -1
  128. package/dist/assets/SecretsConfig-MEt6MjuD.js +0 -3
  129. package/dist/assets/SessionsConfig-DifCiXwR.js +0 -2
  130. package/dist/assets/app-query-client-9jNewezV.js +0 -1
  131. package/dist/assets/chat-page-CLp0UV0Y.js +0 -58
  132. package/dist/assets/chat-session-display-DsYHx0RZ.js +0 -1
  133. package/dist/assets/client-C-8fH7-c.js +0 -7
  134. package/dist/assets/config-CBScxsdV.js +0 -1
  135. package/dist/assets/desktop-update-config-2BS6BMkW.js +0 -1
  136. package/dist/assets/dist-BruyLa92.js +0 -9
  137. package/dist/assets/index-mW8W2FUu.css +0 -1
  138. package/dist/assets/index-zDZfXoI4.js +0 -6
  139. package/dist/assets/infiniteQueryBehavior-CyER9hv0.js +0 -1
  140. package/dist/assets/loader-circle-Bc2gCU33.js +0 -1
  141. package/dist/assets/marketplace-page-3qVMnF3d.js +0 -1
  142. package/dist/assets/marketplace-page-BhFIeQzI.js +0 -49
  143. package/dist/assets/mcp-marketplace-page-DYfteJ1D.js +0 -40
  144. package/dist/assets/page-layout-0UcO9H9Z.js +0 -1
  145. package/dist/assets/play-CKDjSQFL.js +0 -1
  146. package/dist/assets/plus-CG0QrVY_.js +0 -1
  147. package/dist/assets/refresh-ccw-COVhNHtN.js +0 -1
  148. package/dist/assets/remote-access-page-CWHG-sug.js +0 -1
  149. package/dist/assets/rotate-cw-oHMKJMC8.js +0 -1
  150. package/dist/assets/search-BCAlB8nz.js +0 -1
  151. package/dist/assets/security-config-Slh0Mayz.js +0 -1
  152. package/dist/assets/select-CVz0t7MF.js +0 -41
  153. package/dist/assets/setting-row-CbVHAuQt.js +0 -1
  154. package/dist/assets/skeleton-D5rdKvzy.js +0 -1
  155. package/dist/assets/status-dot-DpPtVzQT.js +0 -1
  156. package/dist/assets/tag-chip-DMXdnLcj.js +0 -1
  157. package/dist/assets/use-infinite-scroll-loader-DJ1L81Dz.js +0 -1
  158. package/dist/assets/useConfirmDialog-BsVuqu1x.js +0 -1
  159. package/dist/assets/x-Czwxm82I.js +0 -1
  160. package/src/hooks/use-runtime-control.ts +0 -24
  161. package/src/presenter/app-presenter-context.tsx +0 -20
  162. package/src/presenter/app.presenter.ts +0 -12
  163. package/src/runtime-control/runtime-control.manager.ts +0 -118
  164. /package/dist/assets/{config-hints-BhTmc9P1.js → config-hints-DSQQbeOA.js} +0 -0
  165. /package/src/{account → features/account}/stores/account.store.ts +0 -0
  166. /package/src/{remote → features/remote/services}/remote-access-feedback.service.ts +0 -0
  167. /package/src/{remote/remote-access.query.ts → features/remote/services/remote-access-query.service.ts} +0 -0
  168. /package/src/{remote → features/remote}/stores/remote-access.store.ts +0 -0
  169. /package/src/{desktop → platforms/desktop/types}/desktop-update.types.ts +0 -0
@@ -0,0 +1 @@
1
+ import{t as e}from"./createLucideIcon-CCiTGX8L.js";var t=e(`Plus`,[[`path`,{d:`M5 12h14`,key:`1ays0h`}],[`path`,{d:`M12 5v14`,key:`s699le`}]]);export{t};
@@ -1 +1 @@
1
- import{t as e}from"./createLucideIcon-dy5ie7Ox.js";var t=e(`RefreshCw`,[[`path`,{d:`M3 12a9 9 0 0 1 9-9 9.75 9.75 0 0 1 6.74 2.74L21 8`,key:`v9h5vc`}],[`path`,{d:`M21 3v5h-5`,key:`1q7to0`}],[`path`,{d:`M21 12a9 9 0 0 1-9 9 9.75 9.75 0 0 1-6.74-2.74L3 16`,key:`3uifl3`}],[`path`,{d:`M8 16H3v5`,key:`1cv678`}]]);export{t};
1
+ import{t as e}from"./createLucideIcon-CCiTGX8L.js";var t=e(`RefreshCw`,[[`path`,{d:`M3 12a9 9 0 0 1 9-9 9.75 9.75 0 0 1 6.74 2.74L21 8`,key:`v9h5vc`}],[`path`,{d:`M21 3v5h-5`,key:`1q7to0`}],[`path`,{d:`M21 12a9 9 0 0 1-9 9 9.75 9.75 0 0 1-6.74-2.74L3 16`,key:`3uifl3`}],[`path`,{d:`M8 16H3v5`,key:`1cv678`}]]);export{t};
@@ -0,0 +1 @@
1
+ import{st as e}from"./index-lr6rQUSd.js";export{e as RemoteAccessPage};
@@ -1 +1 @@
1
- import{t as e}from"./createLucideIcon-dy5ie7Ox.js";var t=e(`Save`,[[`path`,{d:`M15.2 3a2 2 0 0 1 1.4.6l3.8 3.8a2 2 0 0 1 .6 1.4V19a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2z`,key:`1c8476`}],[`path`,{d:`M17 21v-7a1 1 0 0 0-1-1H8a1 1 0 0 0-1 1v7`,key:`1ydtos`}],[`path`,{d:`M7 3v4a1 1 0 0 0 1 1h7`,key:`t51u73`}]]);export{t};
1
+ import{t as e}from"./createLucideIcon-CCiTGX8L.js";var t=e(`Save`,[[`path`,{d:`M15.2 3a2 2 0 0 1 1.4.6l3.8 3.8a2 2 0 0 1 .6 1.4V19a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2z`,key:`1c8476`}],[`path`,{d:`M17 21v-7a1 1 0 0 0-1-1H8a1 1 0 0 0-1 1v7`,key:`1ydtos`}],[`path`,{d:`M7 3v4a1 1 0 0 0 1 1h7`,key:`t51u73`}]]);export{t};
@@ -0,0 +1 @@
1
+ import{t as e}from"./createLucideIcon-CCiTGX8L.js";var t=e(`Search`,[[`circle`,{cx:`11`,cy:`11`,r:`8`,key:`4ej97u`}],[`path`,{d:`m21 21-4.3-4.3`,key:`1qie3q`}]]);export{t};
@@ -0,0 +1 @@
1
+ import{_ as e,i as t,m as n,p as r}from"./i18n-DvzXOGQX.js";import{a as i,i as a,n as o,o as s}from"./dist-ZwoAXs46.js";import{J as c,X as l,Y as u,Z as d,_t as f,dt as p,ft as m,gt as h,mt as g,pt as _,q as v,ut as y}from"./index-lr6rQUSd.js";import{t as b}from"./switch-CBOzecWS.js";var x=e(n(),1),S=r(),C=8;function w(e){return e.trim().length>=C}function T(e,n){return e===n?!0:(o.error(t(`authPasswordMismatch`)),!1)}function E(){let e=v(),n=u(),r=l(),i=d(),a=c(),[o,C]=(0,x.useState)(``),[E,D]=(0,x.useState)(``),[O,k]=(0,x.useState)(``),[A,j]=(0,x.useState)(``),[M,N]=(0,x.useState)(``),P=e.data,F=o.trim().length>0&&w(E)&&E===O&&!n.isPending,I=w(A)&&A===M&&!i.isPending,L=async()=>{if(T(E,O))try{await n.mutateAsync({username:o.trim(),password:E}),D(``),k(``)}catch{}},R=async()=>{if(T(A,M))try{await i.mutateAsync({password:A}),j(``),N(``)}catch{}},z=async e=>{try{await r.mutateAsync({enabled:e})}catch{}},B=async()=>{try{await a.mutateAsync()}catch{}};return e.isLoading&&!P?(0,S.jsxs)(y,{children:[(0,S.jsxs)(_,{children:[(0,S.jsx)(g,{children:t(`authSecurityTitle`)}),(0,S.jsx)(m,{children:t(`authSecurityDescription`)})]}),(0,S.jsx)(p,{className:`text-sm text-gray-500`,children:t(`loading`)})]}):e.isError||!P?(0,S.jsxs)(y,{children:[(0,S.jsxs)(_,{children:[(0,S.jsx)(g,{children:t(`authSecurityTitle`)}),(0,S.jsx)(m,{children:t(`authSecurityDescription`)})]}),(0,S.jsxs)(p,{className:`space-y-4`,children:[(0,S.jsx)(`p`,{className:`text-sm text-gray-500`,children:t(`authStatusLoadFailed`)}),(0,S.jsx)(s,{variant:`outline`,onClick:()=>{e.refetch()},children:t(`authRetryStatus`)})]})]}):P.configured?(0,S.jsxs)(y,{children:[(0,S.jsxs)(_,{children:[(0,S.jsx)(g,{children:t(`authSecurityTitle`)}),(0,S.jsx)(m,{children:t(`authSecurityDescription`)})]}),(0,S.jsxs)(p,{className:`space-y-6`,children:[(0,S.jsxs)(`div`,{className:`rounded-xl border border-gray-200 p-4`,children:[(0,S.jsxs)(`div`,{className:`flex flex-col gap-4 md:flex-row md:items-start md:justify-between`,children:[(0,S.jsxs)(`div`,{className:`space-y-1`,children:[(0,S.jsx)(`p`,{className:`text-sm font-medium text-gray-900`,children:t(`authStatusLabel`)}),(0,S.jsx)(`p`,{className:`text-sm text-gray-600`,children:t(`authStatusConfiguredUser`).replace(`{username}`,P.username??``)}),(0,S.jsx)(`p`,{className:`text-xs text-gray-500`,children:t(`authUsernameFixedHelp`)})]}),(0,S.jsx)(`span`,{className:`inline-flex items-center rounded-full bg-gray-100 px-3 py-1 text-xs font-medium text-gray-700`,children:P.enabled?t(`enabled`):t(`disabled`)})]}),(0,S.jsxs)(`div`,{className:`mt-4 flex flex-col gap-4 border-t border-gray-200 pt-4 md:flex-row md:items-center md:justify-between`,children:[(0,S.jsxs)(`div`,{className:`space-y-1`,children:[(0,S.jsx)(`p`,{className:`text-sm font-medium text-gray-900`,children:t(`authEnableLabel`)}),(0,S.jsx)(`p`,{className:`text-xs text-gray-500`,children:P.enabled?t(`authEnableOnHelp`):t(`authEnableOffHelp`)})]}),(0,S.jsx)(b,{checked:P.enabled,disabled:r.isPending,onCheckedChange:e=>{z(e)}})]})]}),(0,S.jsxs)(`div`,{className:`rounded-xl border border-gray-200 p-4 space-y-4`,children:[(0,S.jsxs)(`div`,{className:`space-y-1`,children:[(0,S.jsx)(`p`,{className:`text-sm font-medium text-gray-900`,children:t(`authPasswordSectionTitle`)}),(0,S.jsx)(`p`,{className:`text-xs text-gray-500`,children:t(`authPasswordSectionDescription`)})]}),(0,S.jsxs)(`div`,{className:`grid gap-4 md:grid-cols-2`,children:[(0,S.jsxs)(`div`,{className:`space-y-2`,children:[(0,S.jsx)(h,{htmlFor:`auth-password-next`,children:t(`authPassword`)}),(0,S.jsx)(f,{id:`auth-password-next`,type:`password`,value:A,onChange:e=>j(e.target.value),placeholder:t(`authPasswordPlaceholder`)})]}),(0,S.jsxs)(`div`,{className:`space-y-2`,children:[(0,S.jsx)(h,{htmlFor:`auth-password-confirm`,children:t(`authConfirmPassword`)}),(0,S.jsx)(f,{id:`auth-password-confirm`,type:`password`,value:M,onChange:e=>N(e.target.value),placeholder:t(`authConfirmPasswordPlaceholder`)})]})]}),(0,S.jsxs)(`div`,{className:`flex flex-wrap items-center gap-3`,children:[(0,S.jsx)(s,{type:`button`,disabled:!I,onClick:()=>void R(),children:i.isPending?t(`authPasswordUpdating`):t(`authPasswordAction`)}),P.enabled&&P.authenticated?(0,S.jsx)(s,{type:`button`,variant:`outline`,disabled:a.isPending,onClick:()=>void B(),children:a.isPending?t(`authLoggingOut`):t(`authLogoutAction`)}):null]}),(0,S.jsx)(`p`,{className:`text-xs text-gray-500`,children:t(`authSessionMemoryNotice`)})]})]})]}):(0,S.jsxs)(y,{children:[(0,S.jsxs)(_,{children:[(0,S.jsx)(g,{children:t(`authSecurityTitle`)}),(0,S.jsx)(m,{children:t(`authSecurityDescription`)})]}),(0,S.jsxs)(p,{className:`space-y-5`,children:[(0,S.jsxs)(`div`,{className:`rounded-xl border border-dashed border-gray-200 bg-gray-50/70 p-4`,children:[(0,S.jsx)(`p`,{className:`text-sm font-medium text-gray-900`,children:t(`authSetupTitle`)}),(0,S.jsx)(`p`,{className:`mt-1 text-sm text-gray-500`,children:t(`authSetupDescription`)})]}),(0,S.jsxs)(`div`,{className:`grid gap-4 md:grid-cols-2`,children:[(0,S.jsxs)(`div`,{className:`space-y-2`,children:[(0,S.jsx)(h,{htmlFor:`auth-setup-username`,children:t(`authUsername`)}),(0,S.jsx)(f,{id:`auth-setup-username`,value:o,onChange:e=>C(e.target.value),placeholder:t(`authUsernamePlaceholder`)})]}),(0,S.jsxs)(`div`,{className:`space-y-2`,children:[(0,S.jsx)(h,{htmlFor:`auth-setup-password`,children:t(`authPassword`)}),(0,S.jsx)(f,{id:`auth-setup-password`,type:`password`,value:E,onChange:e=>D(e.target.value),placeholder:t(`authPasswordPlaceholder`)})]})]}),(0,S.jsxs)(`div`,{className:`space-y-2`,children:[(0,S.jsx)(h,{htmlFor:`auth-setup-confirm`,children:t(`authConfirmPassword`)}),(0,S.jsx)(f,{id:`auth-setup-confirm`,type:`password`,value:O,onChange:e=>k(e.target.value),placeholder:t(`authConfirmPasswordPlaceholder`)}),(0,S.jsx)(`p`,{className:`text-xs text-gray-500`,children:t(`authPasswordMinLengthHint`)})]}),(0,S.jsx)(s,{type:`button`,disabled:!F,onClick:()=>void L(),children:n.isPending?t(`authSettingUp`):t(`authSetupAction`)})]})]})}function D(){return(0,S.jsxs)(i,{className:`space-y-6`,children:[(0,S.jsx)(a,{title:t(`authSecurityTitle`),description:t(`authSecurityDescription`)}),(0,S.jsx)(E,{})]})}export{D as SecurityConfig};
@@ -0,0 +1 @@
1
+ import{_ as e,m as t,p as n,u as r}from"./i18n-DvzXOGQX.js";import{c as i}from"./dist-ZwoAXs46.js";import{_ as a,a as o,c as s,d as c,f as l,g as u,h as d,i as f,l as p,n as m,o as h,p as g,r as _,s as v,t as y}from"./es2015-CEAreese.js";import{t as b}from"./createLucideIcon-CCiTGX8L.js";var x=b(`Check`,[[`path`,{d:`M20 6 9 17l-5-5`,key:`1gmf2c`}]]),S=b(`ChevronDown`,[[`path`,{d:`m6 9 6 6 6-6`,key:`qrunsl`}]]),C=b(`ChevronUp`,[[`path`,{d:`m18 15-6-6-6 6`,key:`153udz`}]]),w=[`top`,`right`,`bottom`,`left`],T=Math.min,E=Math.max,D=Math.round,O=Math.floor,k=e=>({x:e,y:e}),A={left:`right`,right:`left`,bottom:`top`,top:`bottom`},j={start:`end`,end:`start`};function M(e,t,n){return E(e,T(t,n))}function N(e,t){return typeof e==`function`?e(t):e}function P(e){return e.split(`-`)[0]}function F(e){return e.split(`-`)[1]}function I(e){return e===`x`?`y`:`x`}function L(e){return e===`y`?`height`:`width`}var R=new Set([`top`,`bottom`]);function z(e){return R.has(P(e))?`y`:`x`}function ee(e){return I(z(e))}function te(e,t,n){n===void 0&&(n=!1);let r=F(e),i=ee(e),a=L(i),o=i===`x`?r===(n?`end`:`start`)?`right`:`left`:r===`start`?`bottom`:`top`;return t.reference[a]>t.floating[a]&&(o=ue(o)),[o,ue(o)]}function ne(e){let t=ue(e);return[re(e),t,re(t)]}function re(e){return e.replace(/start|end/g,e=>j[e])}var ie=[`left`,`right`],ae=[`right`,`left`],oe=[`top`,`bottom`],se=[`bottom`,`top`];function ce(e,t,n){switch(e){case`top`:case`bottom`:return n?t?ae:ie:t?ie:ae;case`left`:case`right`:return t?oe:se;default:return[]}}function le(e,t,n,r){let i=F(e),a=ce(P(e),n===`start`,r);return i&&(a=a.map(e=>e+`-`+i),t&&(a=a.concat(a.map(re)))),a}function ue(e){return e.replace(/left|right|bottom|top/g,e=>A[e])}function de(e){return{top:0,right:0,bottom:0,left:0,...e}}function fe(e){return typeof e==`number`?{top:e,right:e,bottom:e,left:e}:de(e)}function pe(e){let{x:t,y:n,width:r,height:i}=e;return{width:r,height:i,top:n,left:t,right:t+r,bottom:n+i,x:t,y:n}}function me(e,t,n){let{reference:r,floating:i}=e,a=z(t),o=ee(t),s=L(o),c=P(t),l=a===`y`,u=r.x+r.width/2-i.width/2,d=r.y+r.height/2-i.height/2,f=r[s]/2-i[s]/2,p;switch(c){case`top`:p={x:u,y:r.y-i.height};break;case`bottom`:p={x:u,y:r.y+r.height};break;case`right`:p={x:r.x+r.width,y:d};break;case`left`:p={x:r.x-i.width,y:d};break;default:p={x:r.x,y:r.y}}switch(F(t)){case`start`:p[o]-=f*(n&&l?-1:1);break;case`end`:p[o]+=f*(n&&l?-1:1);break}return p}async function he(e,t){t===void 0&&(t={});let{x:n,y:r,platform:i,rects:a,elements:o,strategy:s}=e,{boundary:c=`clippingAncestors`,rootBoundary:l=`viewport`,elementContext:u=`floating`,altBoundary:d=!1,padding:f=0}=N(t,e),p=fe(f),m=o[d?u===`floating`?`reference`:`floating`:u],h=pe(await i.getClippingRect({element:await(i.isElement==null?void 0:i.isElement(m))??!0?m:m.contextElement||await(i.getDocumentElement==null?void 0:i.getDocumentElement(o.floating)),boundary:c,rootBoundary:l,strategy:s})),g=u===`floating`?{x:n,y:r,width:a.floating.width,height:a.floating.height}:a.reference,_=await(i.getOffsetParent==null?void 0:i.getOffsetParent(o.floating)),v=await(i.isElement==null?void 0:i.isElement(_))&&await(i.getScale==null?void 0:i.getScale(_))||{x:1,y:1},y=pe(i.convertOffsetParentRelativeRectToViewportRelativeRect?await i.convertOffsetParentRelativeRectToViewportRelativeRect({elements:o,rect:g,offsetParent:_,strategy:s}):g);return{top:(h.top-y.top+p.top)/v.y,bottom:(y.bottom-h.bottom+p.bottom)/v.y,left:(h.left-y.left+p.left)/v.x,right:(y.right-h.right+p.right)/v.x}}var ge=async(e,t,n)=>{let{placement:r=`bottom`,strategy:i=`absolute`,middleware:a=[],platform:o}=n,s=a.filter(Boolean),c=await(o.isRTL==null?void 0:o.isRTL(t)),l=await o.getElementRects({reference:e,floating:t,strategy:i}),{x:u,y:d}=me(l,r,c),f=r,p={},m=0;for(let n=0;n<s.length;n++){let{name:a,fn:h}=s[n],{x:g,y:_,data:v,reset:y}=await h({x:u,y:d,initialPlacement:r,placement:f,strategy:i,middlewareData:p,rects:l,platform:{...o,detectOverflow:o.detectOverflow??he},elements:{reference:e,floating:t}});u=g??u,d=_??d,p={...p,[a]:{...p[a],...v}},y&&m<=50&&(m++,typeof y==`object`&&(y.placement&&(f=y.placement),y.rects&&(l=y.rects===!0?await o.getElementRects({reference:e,floating:t,strategy:i}):y.rects),{x:u,y:d}=me(l,f,c)),n=-1)}return{x:u,y:d,placement:f,strategy:i,middlewareData:p}},_e=e=>({name:`arrow`,options:e,async fn(t){let{x:n,y:r,placement:i,rects:a,platform:o,elements:s,middlewareData:c}=t,{element:l,padding:u=0}=N(e,t)||{};if(l==null)return{};let d=fe(u),f={x:n,y:r},p=ee(i),m=L(p),h=await o.getDimensions(l),g=p===`y`,_=g?`top`:`left`,v=g?`bottom`:`right`,y=g?`clientHeight`:`clientWidth`,b=a.reference[m]+a.reference[p]-f[p]-a.floating[m],x=f[p]-a.reference[p],S=await(o.getOffsetParent==null?void 0:o.getOffsetParent(l)),C=S?S[y]:0;(!C||!await(o.isElement==null?void 0:o.isElement(S)))&&(C=s.floating[y]||a.floating[m]);let w=b/2-x/2,E=C/2-h[m]/2-1,D=T(d[_],E),O=T(d[v],E),k=D,A=C-h[m]-O,j=C/2-h[m]/2+w,P=M(k,j,A),I=!c.arrow&&F(i)!=null&&j!==P&&a.reference[m]/2-(j<k?D:O)-h[m]/2<0,R=I?j<k?j-k:j-A:0;return{[p]:f[p]+R,data:{[p]:P,centerOffset:j-P-R,...I&&{alignmentOffset:R}},reset:I}}}),ve=function(e){return e===void 0&&(e={}),{name:`flip`,options:e,async fn(t){var n;let{placement:r,middlewareData:i,rects:a,initialPlacement:o,platform:s,elements:c}=t,{mainAxis:l=!0,crossAxis:u=!0,fallbackPlacements:d,fallbackStrategy:f=`bestFit`,fallbackAxisSideDirection:p=`none`,flipAlignment:m=!0,...h}=N(e,t);if((n=i.arrow)!=null&&n.alignmentOffset)return{};let g=P(r),_=z(o),v=P(o)===o,y=await(s.isRTL==null?void 0:s.isRTL(c.floating)),b=d||(v||!m?[ue(o)]:ne(o)),x=p!==`none`;!d&&x&&b.push(...le(o,m,p,y));let S=[o,...b],C=await s.detectOverflow(t,h),w=[],T=i.flip?.overflows||[];if(l&&w.push(C[g]),u){let e=te(r,a,y);w.push(C[e[0]],C[e[1]])}if(T=[...T,{placement:r,overflows:w}],!w.every(e=>e<=0)){let e=(i.flip?.index||0)+1,t=S[e];if(t&&(!(u===`alignment`&&_!==z(t))||T.every(e=>z(e.placement)===_?e.overflows[0]>0:!0)))return{data:{index:e,overflows:T},reset:{placement:t}};let n=T.filter(e=>e.overflows[0]<=0).sort((e,t)=>e.overflows[1]-t.overflows[1])[0]?.placement;if(!n)switch(f){case`bestFit`:{let e=T.filter(e=>{if(x){let t=z(e.placement);return t===_||t===`y`}return!0}).map(e=>[e.placement,e.overflows.filter(e=>e>0).reduce((e,t)=>e+t,0)]).sort((e,t)=>e[1]-t[1])[0]?.[0];e&&(n=e);break}case`initialPlacement`:n=o;break}if(r!==n)return{reset:{placement:n}}}return{}}}};function ye(e,t){return{top:e.top-t.height,right:e.right-t.width,bottom:e.bottom-t.height,left:e.left-t.width}}function be(e){return w.some(t=>e[t]>=0)}var xe=function(e){return e===void 0&&(e={}),{name:`hide`,options:e,async fn(t){let{rects:n,platform:r}=t,{strategy:i=`referenceHidden`,...a}=N(e,t);switch(i){case`referenceHidden`:{let e=ye(await r.detectOverflow(t,{...a,elementContext:`reference`}),n.reference);return{data:{referenceHiddenOffsets:e,referenceHidden:be(e)}}}case`escaped`:{let e=ye(await r.detectOverflow(t,{...a,altBoundary:!0}),n.floating);return{data:{escapedOffsets:e,escaped:be(e)}}}default:return{}}}}},Se=new Set([`left`,`top`]);async function Ce(e,t){let{placement:n,platform:r,elements:i}=e,a=await(r.isRTL==null?void 0:r.isRTL(i.floating)),o=P(n),s=F(n),c=z(n)===`y`,l=Se.has(o)?-1:1,u=a&&c?-1:1,d=N(t,e),{mainAxis:f,crossAxis:p,alignmentAxis:m}=typeof d==`number`?{mainAxis:d,crossAxis:0,alignmentAxis:null}:{mainAxis:d.mainAxis||0,crossAxis:d.crossAxis||0,alignmentAxis:d.alignmentAxis};return s&&typeof m==`number`&&(p=s===`end`?m*-1:m),c?{x:p*u,y:f*l}:{x:f*l,y:p*u}}var we=function(e){return e===void 0&&(e=0),{name:`offset`,options:e,async fn(t){var n;let{x:r,y:i,placement:a,middlewareData:o}=t,s=await Ce(t,e);return a===o.offset?.placement&&(n=o.arrow)!=null&&n.alignmentOffset?{}:{x:r+s.x,y:i+s.y,data:{...s,placement:a}}}}},Te=function(e){return e===void 0&&(e={}),{name:`shift`,options:e,async fn(t){let{x:n,y:r,placement:i,platform:a}=t,{mainAxis:o=!0,crossAxis:s=!1,limiter:c={fn:e=>{let{x:t,y:n}=e;return{x:t,y:n}}},...l}=N(e,t),u={x:n,y:r},d=await a.detectOverflow(t,l),f=z(P(i)),p=I(f),m=u[p],h=u[f];if(o){let e=p===`y`?`top`:`left`,t=p===`y`?`bottom`:`right`,n=m+d[e],r=m-d[t];m=M(n,m,r)}if(s){let e=f===`y`?`top`:`left`,t=f===`y`?`bottom`:`right`,n=h+d[e],r=h-d[t];h=M(n,h,r)}let g=c.fn({...t,[p]:m,[f]:h});return{...g,data:{x:g.x-n,y:g.y-r,enabled:{[p]:o,[f]:s}}}}}},Ee=function(e){return e===void 0&&(e={}),{options:e,fn(t){let{x:n,y:r,placement:i,rects:a,middlewareData:o}=t,{offset:s=0,mainAxis:c=!0,crossAxis:l=!0}=N(e,t),u={x:n,y:r},d=z(i),f=I(d),p=u[f],m=u[d],h=N(s,t),g=typeof h==`number`?{mainAxis:h,crossAxis:0}:{mainAxis:0,crossAxis:0,...h};if(c){let e=f===`y`?`height`:`width`,t=a.reference[f]-a.floating[e]+g.mainAxis,n=a.reference[f]+a.reference[e]-g.mainAxis;p<t?p=t:p>n&&(p=n)}if(l){let e=f===`y`?`width`:`height`,t=Se.has(P(i)),n=a.reference[d]-a.floating[e]+(t&&o.offset?.[d]||0)+(t?0:g.crossAxis),r=a.reference[d]+a.reference[e]+(t?0:o.offset?.[d]||0)-(t?g.crossAxis:0);m<n?m=n:m>r&&(m=r)}return{[f]:p,[d]:m}}}},De=function(e){return e===void 0&&(e={}),{name:`size`,options:e,async fn(t){var n,r;let{placement:i,rects:a,platform:o,elements:s}=t,{apply:c=()=>{},...l}=N(e,t),u=await o.detectOverflow(t,l),d=P(i),f=F(i),p=z(i)===`y`,{width:m,height:h}=a.floating,g,_;d===`top`||d===`bottom`?(g=d,_=f===(await(o.isRTL==null?void 0:o.isRTL(s.floating))?`start`:`end`)?`left`:`right`):(_=d,g=f===`end`?`top`:`bottom`);let v=h-u.top-u.bottom,y=m-u.left-u.right,b=T(h-u[g],v),x=T(m-u[_],y),S=!t.middlewareData.shift,C=b,w=x;if((n=t.middlewareData.shift)!=null&&n.enabled.x&&(w=y),(r=t.middlewareData.shift)!=null&&r.enabled.y&&(C=v),S&&!f){let e=E(u.left,0),t=E(u.right,0),n=E(u.top,0),r=E(u.bottom,0);p?w=m-2*(e!==0||t!==0?e+t:E(u.left,u.right)):C=h-2*(n!==0||r!==0?n+r:E(u.top,u.bottom))}await c({...t,availableWidth:w,availableHeight:C});let D=await o.getDimensions(s.floating);return m!==D.width||h!==D.height?{reset:{rects:!0}}:{}}}};function Oe(){return typeof window<`u`}function ke(e){return Ae(e)?(e.nodeName||``).toLowerCase():`#document`}function B(e){var t;return(e==null||(t=e.ownerDocument)==null?void 0:t.defaultView)||window}function V(e){return((Ae(e)?e.ownerDocument:e.document)||window.document)?.documentElement}function Ae(e){return Oe()?e instanceof Node||e instanceof B(e).Node:!1}function H(e){return Oe()?e instanceof Element||e instanceof B(e).Element:!1}function U(e){return Oe()?e instanceof HTMLElement||e instanceof B(e).HTMLElement:!1}function je(e){return!Oe()||typeof ShadowRoot>`u`?!1:e instanceof ShadowRoot||e instanceof B(e).ShadowRoot}var Me=new Set([`inline`,`contents`]);function Ne(e){let{overflow:t,overflowX:n,overflowY:r,display:i}=W(e);return/auto|scroll|overlay|hidden|clip/.test(t+r+n)&&!Me.has(i)}var Pe=new Set([`table`,`td`,`th`]);function Fe(e){return Pe.has(ke(e))}var Ie=[`:popover-open`,`:modal`];function Le(e){return Ie.some(t=>{try{return e.matches(t)}catch{return!1}})}var Re=[`transform`,`translate`,`scale`,`rotate`,`perspective`],ze=[`transform`,`translate`,`scale`,`rotate`,`perspective`,`filter`],Be=[`paint`,`layout`,`strict`,`content`];function Ve(e){let t=Ue(),n=H(e)?W(e):e;return Re.some(e=>n[e]?n[e]!==`none`:!1)||(n.containerType?n.containerType!==`normal`:!1)||!t&&(n.backdropFilter?n.backdropFilter!==`none`:!1)||!t&&(n.filter?n.filter!==`none`:!1)||ze.some(e=>(n.willChange||``).includes(e))||Be.some(e=>(n.contain||``).includes(e))}function He(e){let t=G(e);for(;U(t)&&!Ge(t);){if(Ve(t))return t;if(Le(t))return null;t=G(t)}return null}function Ue(){return typeof CSS>`u`||!CSS.supports?!1:CSS.supports(`-webkit-backdrop-filter`,`none`)}var We=new Set([`html`,`body`,`#document`]);function Ge(e){return We.has(ke(e))}function W(e){return B(e).getComputedStyle(e)}function Ke(e){return H(e)?{scrollLeft:e.scrollLeft,scrollTop:e.scrollTop}:{scrollLeft:e.scrollX,scrollTop:e.scrollY}}function G(e){if(ke(e)===`html`)return e;let t=e.assignedSlot||e.parentNode||je(e)&&e.host||V(e);return je(t)?t.host:t}function qe(e){let t=G(e);return Ge(t)?e.ownerDocument?e.ownerDocument.body:e.body:U(t)&&Ne(t)?t:qe(t)}function Je(e,t,n){t===void 0&&(t=[]),n===void 0&&(n=!0);let r=qe(e),i=r===e.ownerDocument?.body,a=B(r);if(i){let e=Ye(a);return t.concat(a,a.visualViewport||[],Ne(r)?r:[],e&&n?Je(e):[])}return t.concat(r,Je(r,[],n))}function Ye(e){return e.parent&&Object.getPrototypeOf(e.parent)?e.frameElement:null}function Xe(e){let t=W(e),n=parseFloat(t.width)||0,r=parseFloat(t.height)||0,i=U(e),a=i?e.offsetWidth:n,o=i?e.offsetHeight:r,s=D(n)!==a||D(r)!==o;return s&&(n=a,r=o),{width:n,height:r,$:s}}function Ze(e){return H(e)?e:e.contextElement}function Qe(e){let t=Ze(e);if(!U(t))return k(1);let n=t.getBoundingClientRect(),{width:r,height:i,$:a}=Xe(t),o=(a?D(n.width):n.width)/r,s=(a?D(n.height):n.height)/i;return(!o||!Number.isFinite(o))&&(o=1),(!s||!Number.isFinite(s))&&(s=1),{x:o,y:s}}var $e=k(0);function et(e){let t=B(e);return!Ue()||!t.visualViewport?$e:{x:t.visualViewport.offsetLeft,y:t.visualViewport.offsetTop}}function tt(e,t,n){return t===void 0&&(t=!1),!n||t&&n!==B(e)?!1:t}function K(e,t,n,r){t===void 0&&(t=!1),n===void 0&&(n=!1);let i=e.getBoundingClientRect(),a=Ze(e),o=k(1);t&&(r?H(r)&&(o=Qe(r)):o=Qe(e));let s=tt(a,n,r)?et(a):k(0),c=(i.left+s.x)/o.x,l=(i.top+s.y)/o.y,u=i.width/o.x,d=i.height/o.y;if(a){let e=B(a),t=r&&H(r)?B(r):r,n=e,i=Ye(n);for(;i&&r&&t!==n;){let e=Qe(i),t=i.getBoundingClientRect(),r=W(i),a=t.left+(i.clientLeft+parseFloat(r.paddingLeft))*e.x,o=t.top+(i.clientTop+parseFloat(r.paddingTop))*e.y;c*=e.x,l*=e.y,u*=e.x,d*=e.y,c+=a,l+=o,n=B(i),i=Ye(n)}}return pe({width:u,height:d,x:c,y:l})}function nt(e,t){let n=Ke(e).scrollLeft;return t?t.left+n:K(V(e)).left+n}function rt(e,t){let n=e.getBoundingClientRect();return{x:n.left+t.scrollLeft-nt(e,n),y:n.top+t.scrollTop}}function it(e){let{elements:t,rect:n,offsetParent:r,strategy:i}=e,a=i===`fixed`,o=V(r),s=t?Le(t.floating):!1;if(r===o||s&&a)return n;let c={scrollLeft:0,scrollTop:0},l=k(1),u=k(0),d=U(r);if((d||!d&&!a)&&((ke(r)!==`body`||Ne(o))&&(c=Ke(r)),U(r))){let e=K(r);l=Qe(r),u.x=e.x+r.clientLeft,u.y=e.y+r.clientTop}let f=o&&!d&&!a?rt(o,c):k(0);return{width:n.width*l.x,height:n.height*l.y,x:n.x*l.x-c.scrollLeft*l.x+u.x+f.x,y:n.y*l.y-c.scrollTop*l.y+u.y+f.y}}function at(e){return Array.from(e.getClientRects())}function ot(e){let t=V(e),n=Ke(e),r=e.ownerDocument.body,i=E(t.scrollWidth,t.clientWidth,r.scrollWidth,r.clientWidth),a=E(t.scrollHeight,t.clientHeight,r.scrollHeight,r.clientHeight),o=-n.scrollLeft+nt(e),s=-n.scrollTop;return W(r).direction===`rtl`&&(o+=E(t.clientWidth,r.clientWidth)-i),{width:i,height:a,x:o,y:s}}var st=25;function ct(e,t){let n=B(e),r=V(e),i=n.visualViewport,a=r.clientWidth,o=r.clientHeight,s=0,c=0;if(i){a=i.width,o=i.height;let e=Ue();(!e||e&&t===`fixed`)&&(s=i.offsetLeft,c=i.offsetTop)}let l=nt(r);if(l<=0){let e=r.ownerDocument,t=e.body,n=getComputedStyle(t),i=e.compatMode===`CSS1Compat`&&parseFloat(n.marginLeft)+parseFloat(n.marginRight)||0,o=Math.abs(r.clientWidth-t.clientWidth-i);o<=st&&(a-=o)}else l<=st&&(a+=l);return{width:a,height:o,x:s,y:c}}var lt=new Set([`absolute`,`fixed`]);function ut(e,t){let n=K(e,!0,t===`fixed`),r=n.top+e.clientTop,i=n.left+e.clientLeft,a=U(e)?Qe(e):k(1);return{width:e.clientWidth*a.x,height:e.clientHeight*a.y,x:i*a.x,y:r*a.y}}function dt(e,t,n){let r;if(t===`viewport`)r=ct(e,n);else if(t===`document`)r=ot(V(e));else if(H(t))r=ut(t,n);else{let n=et(e);r={x:t.x-n.x,y:t.y-n.y,width:t.width,height:t.height}}return pe(r)}function ft(e,t){let n=G(e);return n===t||!H(n)||Ge(n)?!1:W(n).position===`fixed`||ft(n,t)}function pt(e,t){let n=t.get(e);if(n)return n;let r=Je(e,[],!1).filter(e=>H(e)&&ke(e)!==`body`),i=null,a=W(e).position===`fixed`,o=a?G(e):e;for(;H(o)&&!Ge(o);){let t=W(o),n=Ve(o);!n&&t.position===`fixed`&&(i=null),(a?!n&&!i:!n&&t.position===`static`&&i&&lt.has(i.position)||Ne(o)&&!n&&ft(e,o))?r=r.filter(e=>e!==o):i=t,o=G(o)}return t.set(e,r),r}function mt(e){let{element:t,boundary:n,rootBoundary:r,strategy:i}=e,a=[...n===`clippingAncestors`?Le(t)?[]:pt(t,this._c):[].concat(n),r],o=a[0],s=a.reduce((e,n)=>{let r=dt(t,n,i);return e.top=E(r.top,e.top),e.right=T(r.right,e.right),e.bottom=T(r.bottom,e.bottom),e.left=E(r.left,e.left),e},dt(t,o,i));return{width:s.right-s.left,height:s.bottom-s.top,x:s.left,y:s.top}}function ht(e){let{width:t,height:n}=Xe(e);return{width:t,height:n}}function gt(e,t,n){let r=U(t),i=V(t),a=n===`fixed`,o=K(e,!0,a,t),s={scrollLeft:0,scrollTop:0},c=k(0);function l(){c.x=nt(i)}if(r||!r&&!a)if((ke(t)!==`body`||Ne(i))&&(s=Ke(t)),r){let e=K(t,!0,a,t);c.x=e.x+t.clientLeft,c.y=e.y+t.clientTop}else i&&l();a&&!r&&i&&l();let u=i&&!r&&!a?rt(i,s):k(0);return{x:o.left+s.scrollLeft-c.x-u.x,y:o.top+s.scrollTop-c.y-u.y,width:o.width,height:o.height}}function _t(e){return W(e).position===`static`}function vt(e,t){if(!U(e)||W(e).position===`fixed`)return null;if(t)return t(e);let n=e.offsetParent;return V(e)===n&&(n=n.ownerDocument.body),n}function yt(e,t){let n=B(e);if(Le(e))return n;if(!U(e)){let t=G(e);for(;t&&!Ge(t);){if(H(t)&&!_t(t))return t;t=G(t)}return n}let r=vt(e,t);for(;r&&Fe(r)&&_t(r);)r=vt(r,t);return r&&Ge(r)&&_t(r)&&!Ve(r)?n:r||He(e)||n}var bt=async function(e){let t=this.getOffsetParent||yt,n=this.getDimensions,r=await n(e.floating);return{reference:gt(e.reference,await t(e.floating),e.strategy),floating:{x:0,y:0,width:r.width,height:r.height}}};function xt(e){return W(e).direction===`rtl`}var St={convertOffsetParentRelativeRectToViewportRelativeRect:it,getDocumentElement:V,getClippingRect:mt,getOffsetParent:yt,getElementRects:bt,getClientRects:at,getDimensions:ht,getScale:Qe,isElement:H,isRTL:xt};function Ct(e,t){return e.x===t.x&&e.y===t.y&&e.width===t.width&&e.height===t.height}function wt(e,t){let n=null,r,i=V(e);function a(){var e;clearTimeout(r),(e=n)==null||e.disconnect(),n=null}function o(s,c){s===void 0&&(s=!1),c===void 0&&(c=1),a();let l=e.getBoundingClientRect(),{left:u,top:d,width:f,height:p}=l;if(s||t(),!f||!p)return;let m=O(d),h=O(i.clientWidth-(u+f)),g=O(i.clientHeight-(d+p)),_=O(u),v={rootMargin:-m+`px `+-h+`px `+-g+`px `+-_+`px`,threshold:E(0,T(1,c))||1},y=!0;function b(t){let n=t[0].intersectionRatio;if(n!==c){if(!y)return o();n?o(!1,n):r=setTimeout(()=>{o(!1,1e-7)},1e3)}n===1&&!Ct(l,e.getBoundingClientRect())&&o(),y=!1}try{n=new IntersectionObserver(b,{...v,root:i.ownerDocument})}catch{n=new IntersectionObserver(b,v)}n.observe(e)}return o(!0),a}function Tt(e,t,n,r){r===void 0&&(r={});let{ancestorScroll:i=!0,ancestorResize:a=!0,elementResize:o=typeof ResizeObserver==`function`,layoutShift:s=typeof IntersectionObserver==`function`,animationFrame:c=!1}=r,l=Ze(e),u=i||a?[...l?Je(l):[],...Je(t)]:[];u.forEach(e=>{i&&e.addEventListener(`scroll`,n,{passive:!0}),a&&e.addEventListener(`resize`,n)});let d=l&&s?wt(l,n):null,f=-1,p=null;o&&(p=new ResizeObserver(e=>{let[r]=e;r&&r.target===l&&p&&(p.unobserve(t),cancelAnimationFrame(f),f=requestAnimationFrame(()=>{var e;(e=p)==null||e.observe(t)})),n()}),l&&!c&&p.observe(l),p.observe(t));let m,h=c?K(e):null;c&&g();function g(){let t=K(e);h&&!Ct(h,t)&&n(),h=t,m=requestAnimationFrame(g)}return n(),()=>{var e;u.forEach(e=>{i&&e.removeEventListener(`scroll`,n),a&&e.removeEventListener(`resize`,n)}),d?.(),(e=p)==null||e.disconnect(),p=null,c&&cancelAnimationFrame(m)}}var Et=we,Dt=Te,Ot=ve,kt=De,At=xe,jt=_e,Mt=Ee,Nt=(e,t,n)=>{let r=new Map,i={platform:St,...n},a={...i.platform,_c:r};return ge(e,t,{...i,platform:a})},q=e(t(),1),Pt=e(i(),1),Ft=typeof document<`u`?q.useLayoutEffect:function(){};function It(e,t){if(e===t)return!0;if(typeof e!=typeof t)return!1;if(typeof e==`function`&&e.toString()===t.toString())return!0;let n,r,i;if(e&&t&&typeof e==`object`){if(Array.isArray(e)){if(n=e.length,n!==t.length)return!1;for(r=n;r--!==0;)if(!It(e[r],t[r]))return!1;return!0}if(i=Object.keys(e),n=i.length,n!==Object.keys(t).length)return!1;for(r=n;r--!==0;)if(!{}.hasOwnProperty.call(t,i[r]))return!1;for(r=n;r--!==0;){let n=i[r];if(!(n===`_owner`&&e.$$typeof)&&!It(e[n],t[n]))return!1}return!0}return e!==e&&t!==t}function Lt(e){return typeof window>`u`?1:(e.ownerDocument.defaultView||window).devicePixelRatio||1}function Rt(e,t){let n=Lt(e);return Math.round(t*n)/n}function zt(e){let t=q.useRef(e);return Ft(()=>{t.current=e}),t}function Bt(e){e===void 0&&(e={});let{placement:t=`bottom`,strategy:n=`absolute`,middleware:r=[],platform:i,elements:{reference:a,floating:o}={},transform:s=!0,whileElementsMounted:c,open:l}=e,[u,d]=q.useState({x:0,y:0,strategy:n,placement:t,middlewareData:{},isPositioned:!1}),[f,p]=q.useState(r);It(f,r)||p(r);let[m,h]=q.useState(null),[g,_]=q.useState(null),v=q.useCallback(e=>{e!==S.current&&(S.current=e,h(e))},[]),y=q.useCallback(e=>{e!==C.current&&(C.current=e,_(e))},[]),b=a||m,x=o||g,S=q.useRef(null),C=q.useRef(null),w=q.useRef(u),T=c!=null,E=zt(c),D=zt(i),O=zt(l),k=q.useCallback(()=>{if(!S.current||!C.current)return;let e={placement:t,strategy:n,middleware:f};D.current&&(e.platform=D.current),Nt(S.current,C.current,e).then(e=>{let t={...e,isPositioned:O.current!==!1};A.current&&!It(w.current,t)&&(w.current=t,Pt.flushSync(()=>{d(t)}))})},[f,t,n,D,O]);Ft(()=>{l===!1&&w.current.isPositioned&&(w.current.isPositioned=!1,d(e=>({...e,isPositioned:!1})))},[l]);let A=q.useRef(!1);Ft(()=>(A.current=!0,()=>{A.current=!1}),[]),Ft(()=>{if(b&&(S.current=b),x&&(C.current=x),b&&x){if(E.current)return E.current(b,x,k);k()}},[b,x,k,E,T]);let j=q.useMemo(()=>({reference:S,floating:C,setReference:v,setFloating:y}),[v,y]),M=q.useMemo(()=>({reference:b,floating:x}),[b,x]),N=q.useMemo(()=>{let e={position:n,left:0,top:0};if(!M.floating)return e;let t=Rt(M.floating,u.x),r=Rt(M.floating,u.y);return s?{...e,transform:`translate(`+t+`px, `+r+`px)`,...Lt(M.floating)>=1.5&&{willChange:`transform`}}:{position:n,left:t,top:r}},[n,s,M.floating,u.x,u.y]);return q.useMemo(()=>({...u,update:k,refs:j,elements:M,floatingStyles:N}),[u,k,j,M,N])}var Vt=e=>{function t(e){return{}.hasOwnProperty.call(e,`current`)}return{name:`arrow`,options:e,fn(n){let{element:r,padding:i}=typeof e==`function`?e(n):e;return r&&t(r)?r.current==null?{}:jt({element:r.current,padding:i}).fn(n):r?jt({element:r,padding:i}).fn(n):{}}}},Ht=(e,t)=>({...Et(e),options:[e,t]}),Ut=(e,t)=>({...Dt(e),options:[e,t]}),Wt=(e,t)=>({...Mt(e),options:[e,t]}),Gt=(e,t)=>({...Ot(e),options:[e,t]}),Kt=(e,t)=>({...kt(e),options:[e,t]}),qt=(e,t)=>({...At(e),options:[e,t]}),Jt=(e,t)=>({...Vt(e),options:[e,t]}),J=n(),Yt=`Arrow`,Xt=q.forwardRef((e,t)=>{let{children:n,width:r=10,height:i=5,...a}=e;return(0,J.jsx)(s.svg,{...a,ref:t,width:r,height:i,viewBox:`0 0 30 10`,preserveAspectRatio:`none`,children:e.asChild?n:(0,J.jsx)(`polygon`,{points:`0,0 30,0 15,10`})})});Xt.displayName=Yt;var Zt=Xt;function Qt(e){let[t,n]=q.useState(void 0);return g(()=>{if(e){n({width:e.offsetWidth,height:e.offsetHeight});let t=new ResizeObserver(t=>{if(!Array.isArray(t)||!t.length)return;let r=t[0],i,a;if(`borderBoxSize`in r){let e=r.borderBoxSize,t=Array.isArray(e)?e[0]:e;i=t.inlineSize,a=t.blockSize}else i=e.offsetWidth,a=e.offsetHeight;n({width:i,height:a})});return t.observe(e,{box:`border-box`}),()=>t.unobserve(e)}else n(void 0)},[e]),t}var $t=`Popper`,[en,tn]=d($t),[nn,rn]=en($t),an=e=>{let{__scopePopper:t,children:n}=e,[r,i]=q.useState(null);return(0,J.jsx)(nn,{scope:t,anchor:r,onAnchorChange:i,children:n})};an.displayName=$t;var on=`PopperAnchor`,sn=q.forwardRef((e,t)=>{let{__scopePopper:n,virtualRef:r,...i}=e,a=rn(on,n),o=q.useRef(null),c=u(t,o),l=q.useRef(null);return q.useEffect(()=>{let e=l.current;l.current=r?.current||o.current,e!==l.current&&a.onAnchorChange(l.current)}),r?null:(0,J.jsx)(s.div,{...i,ref:c})});sn.displayName=on;var cn=`PopperContent`,[ln,un]=en(cn),dn=q.forwardRef((e,t)=>{let{__scopePopper:n,side:r=`bottom`,sideOffset:i=0,align:a=`center`,alignOffset:o=0,arrowPadding:c=0,avoidCollisions:l=!0,collisionBoundary:d=[],collisionPadding:f=0,sticky:p=`partial`,hideWhenDetached:m=!1,updatePositionStrategy:h=`optimized`,onPlaced:_,...y}=e,b=rn(cn,n),[x,S]=q.useState(null),C=u(t,e=>S(e)),[w,T]=q.useState(null),E=Qt(w),D=E?.width??0,O=E?.height??0,k=r+(a===`center`?``:`-`+a),A=typeof f==`number`?f:{top:0,right:0,bottom:0,left:0,...f},j=Array.isArray(d)?d:[d],M=j.length>0,N={padding:A,boundary:j.filter(hn),altBoundary:M},{refs:P,floatingStyles:F,placement:I,isPositioned:L,middlewareData:R}=Bt({strategy:`fixed`,placement:k,whileElementsMounted:(...e)=>Tt(...e,{animationFrame:h===`always`}),elements:{reference:b.anchor},middleware:[Ht({mainAxis:i+O,alignmentAxis:o}),l&&Ut({mainAxis:!0,crossAxis:!1,limiter:p===`partial`?Wt():void 0,...N}),l&&Gt({...N}),Kt({...N,apply:({elements:e,rects:t,availableWidth:n,availableHeight:r})=>{let{width:i,height:a}=t.reference,o=e.floating.style;o.setProperty(`--radix-popper-available-width`,`${n}px`),o.setProperty(`--radix-popper-available-height`,`${r}px`),o.setProperty(`--radix-popper-anchor-width`,`${i}px`),o.setProperty(`--radix-popper-anchor-height`,`${a}px`)}}),w&&Jt({element:w,padding:c}),gn({arrowWidth:D,arrowHeight:O}),m&&qt({strategy:`referenceHidden`,...N})]}),[z,ee]=_n(I),te=v(_);g(()=>{L&&te?.()},[L,te]);let ne=R.arrow?.x,re=R.arrow?.y,ie=R.arrow?.centerOffset!==0,[ae,oe]=q.useState();return g(()=>{x&&oe(window.getComputedStyle(x).zIndex)},[x]),(0,J.jsx)(`div`,{ref:P.setFloating,"data-radix-popper-content-wrapper":``,style:{...F,transform:L?F.transform:`translate(0, -200%)`,minWidth:`max-content`,zIndex:ae,"--radix-popper-transform-origin":[R.transformOrigin?.x,R.transformOrigin?.y].join(` `),...R.hide?.referenceHidden&&{visibility:`hidden`,pointerEvents:`none`}},dir:e.dir,children:(0,J.jsx)(ln,{scope:n,placedSide:z,onArrowChange:T,arrowX:ne,arrowY:re,shouldHideArrow:ie,children:(0,J.jsx)(s.div,{"data-side":z,"data-align":ee,...y,ref:C,style:{...y.style,animation:L?void 0:`none`}})})})});dn.displayName=cn;var fn=`PopperArrow`,pn={top:`bottom`,right:`left`,bottom:`top`,left:`right`},mn=q.forwardRef(function(e,t){let{__scopePopper:n,...r}=e,i=un(fn,n),a=pn[i.placedSide];return(0,J.jsx)(`span`,{ref:i.onArrowChange,style:{position:`absolute`,left:i.arrowX,top:i.arrowY,[a]:0,transformOrigin:{top:``,right:`0 0`,bottom:`center 0`,left:`100% 0`}[i.placedSide],transform:{top:`translateY(100%)`,right:`translateY(50%) rotate(90deg) translateX(-50%)`,bottom:`rotate(180deg)`,left:`translateY(50%) rotate(-90deg) translateX(50%)`}[i.placedSide],visibility:i.shouldHideArrow?`hidden`:void 0},children:(0,J.jsx)(Zt,{...r,ref:t,style:{...r.style,display:`block`}})})});mn.displayName=fn;function hn(e){return e!==null}var gn=e=>({name:`transformOrigin`,options:e,fn(t){let{placement:n,rects:r,middlewareData:i}=t,a=i.arrow?.centerOffset!==0,o=a?0:e.arrowWidth,s=a?0:e.arrowHeight,[c,l]=_n(n),u={start:`0%`,center:`50%`,end:`100%`}[l],d=(i.arrow?.x??0)+o/2,f=(i.arrow?.y??0)+s/2,p=``,m=``;return c===`bottom`?(p=a?u:`${d}px`,m=`${-s}px`):c===`top`?(p=a?u:`${d}px`,m=`${r.floating.height+s}px`):c===`right`?(p=`${-s}px`,m=a?u:`${f}px`):c===`left`&&(p=`${r.floating.width+s}px`,m=a?u:`${f}px`),{data:{x:p,y:m}}}});function _n(e){let[t,n=`center`]=e.split(`-`);return[t,n]}var vn=an,yn=sn,bn=dn,xn=mn;function Sn(e,[t,n]){return Math.min(n,Math.max(t,e))}function Cn(e){let t=e+`CollectionProvider`,[n,r]=d(t),[i,a]=n(t,{collectionRef:{current:null},itemMap:new Map}),o=e=>{let{scope:t,children:n}=e,r=q.useRef(null),a=q.useRef(new Map).current;return(0,J.jsx)(i,{scope:t,itemMap:a,collectionRef:r,children:n})};o.displayName=t;let s=e+`CollectionSlot`,c=p(s),l=q.forwardRef((e,t)=>{let{scope:n,children:r}=e;return(0,J.jsx)(c,{ref:u(t,a(s,n).collectionRef),children:r})});l.displayName=s;let f=e+`CollectionItemSlot`,m=`data-radix-collection-item`,h=p(f),g=q.forwardRef((e,t)=>{let{scope:n,children:r,...i}=e,o=q.useRef(null),s=u(t,o),c=a(f,n);return q.useEffect(()=>(c.itemMap.set(o,{ref:o,...i}),()=>void c.itemMap.delete(o))),(0,J.jsx)(h,{[m]:``,ref:s,children:r})});g.displayName=f;function _(t){let n=a(e+`CollectionConsumer`,t);return q.useCallback(()=>{let e=n.collectionRef.current;if(!e)return[];let t=Array.from(e.querySelectorAll(`[${m}]`));return Array.from(n.itemMap.values()).sort((e,n)=>t.indexOf(e.ref.current)-t.indexOf(n.ref.current))},[n.collectionRef,n.itemMap])}return[{Provider:o,Slot:l,ItemSlot:g},_,r]}var wn=q.createContext(void 0);function Tn(e){let t=q.useContext(wn);return e||t||`ltr`}function En(e){let t=q.useRef({value:e,previous:e});return q.useMemo(()=>(t.current.value!==e&&(t.current.previous=t.current.value,t.current.value=e),t.current.previous),[e])}var Dn=Object.freeze({position:`absolute`,border:0,width:1,height:1,padding:0,margin:-1,overflow:`hidden`,clip:`rect(0, 0, 0, 0)`,whiteSpace:`nowrap`,wordWrap:`normal`}),On=`VisuallyHidden`,kn=q.forwardRef((e,t)=>(0,J.jsx)(s.span,{...e,ref:t,style:{...Dn,...e.style}}));kn.displayName=On;var An=kn,jn=[` `,`Enter`,`ArrowUp`,`ArrowDown`],Mn=[` `,`Enter`],Y=`Select`,[Nn,Pn,Fn]=Cn(Y),[In,Ln]=d(Y,[Fn,tn]),Rn=tn(),[zn,X]=In(Y),[Bn,Vn]=In(Y),Hn=e=>{let{__scopeSelect:t,children:n,open:r,defaultOpen:i,onOpenChange:a,value:o,defaultValue:s,onValueChange:u,dir:d,name:f,autoComplete:p,disabled:m,required:h,form:g}=e,_=Rn(t),[v,y]=q.useState(null),[b,x]=q.useState(null),[S,C]=q.useState(!1),w=Tn(d),[T,E]=c({prop:r,defaultProp:i??!1,onChange:a,caller:Y}),[D,O]=c({prop:o,defaultProp:s,onChange:u,caller:Y}),k=q.useRef(null),A=v?g||!!v.closest(`form`):!0,[j,M]=q.useState(new Set),N=Array.from(j).map(e=>e.props.value).join(`;`);return(0,J.jsx)(vn,{..._,children:(0,J.jsxs)(zn,{required:h,scope:t,trigger:v,onTriggerChange:y,valueNode:b,onValueNodeChange:x,valueNodeHasChildren:S,onValueNodeHasChildrenChange:C,contentId:l(),value:D,onValueChange:O,open:T,onOpenChange:E,dir:w,triggerPointerDownPosRef:k,disabled:m,children:[(0,J.jsx)(Nn.Provider,{scope:t,children:(0,J.jsx)(Bn,{scope:e.__scopeSelect,onNativeOptionAdd:q.useCallback(e=>{M(t=>new Set(t).add(e))},[]),onNativeOptionRemove:q.useCallback(e=>{M(t=>{let n=new Set(t);return n.delete(e),n})},[]),children:n})}),A?(0,J.jsxs)(Pr,{"aria-hidden":!0,required:h,tabIndex:-1,name:f,autoComplete:p,value:D,onChange:e=>O(e.target.value),disabled:m,form:g,children:[D===void 0?(0,J.jsx)(`option`,{value:``}):null,Array.from(j)]},N):null]})})};Hn.displayName=Y;var Un=`SelectTrigger`,Wn=q.forwardRef((e,t)=>{let{__scopeSelect:n,disabled:r=!1,...i}=e,o=Rn(n),c=X(Un,n),l=c.disabled||r,d=u(t,c.onTriggerChange),f=Pn(n),p=q.useRef(`touch`),[m,h,g]=Ir(e=>{let t=f().filter(e=>!e.disabled),n=Lr(t,e,t.find(e=>e.value===c.value));n!==void 0&&c.onValueChange(n.value)}),_=e=>{l||(c.onOpenChange(!0),g()),e&&(c.triggerPointerDownPosRef.current={x:Math.round(e.pageX),y:Math.round(e.pageY)})};return(0,J.jsx)(yn,{asChild:!0,...o,children:(0,J.jsx)(s.button,{type:`button`,role:`combobox`,"aria-controls":c.contentId,"aria-expanded":c.open,"aria-required":c.required,"aria-autocomplete":`none`,dir:c.dir,"data-state":c.open?`open`:`closed`,disabled:l,"data-disabled":l?``:void 0,"data-placeholder":Fr(c.value)?``:void 0,...i,ref:d,onClick:a(i.onClick,e=>{e.currentTarget.focus(),p.current!==`mouse`&&_(e)}),onPointerDown:a(i.onPointerDown,e=>{p.current=e.pointerType;let t=e.target;t.hasPointerCapture(e.pointerId)&&t.releasePointerCapture(e.pointerId),e.button===0&&e.ctrlKey===!1&&e.pointerType===`mouse`&&(_(e),e.preventDefault())}),onKeyDown:a(i.onKeyDown,e=>{let t=m.current!==``;!(e.ctrlKey||e.altKey||e.metaKey)&&e.key.length===1&&h(e.key),!(t&&e.key===` `)&&jn.includes(e.key)&&(_(),e.preventDefault())})})})});Wn.displayName=Un;var Gn=`SelectValue`,Kn=q.forwardRef((e,t)=>{let{__scopeSelect:n,className:r,style:i,children:a,placeholder:o=``,...c}=e,l=X(Gn,n),{onValueNodeHasChildrenChange:d}=l,f=a!==void 0,p=u(t,l.onValueNodeChange);return g(()=>{d(f)},[d,f]),(0,J.jsx)(s.span,{...c,ref:p,style:{pointerEvents:`none`},children:Fr(l.value)?(0,J.jsx)(J.Fragment,{children:o}):a})});Kn.displayName=Gn;var qn=`SelectIcon`,Jn=q.forwardRef((e,t)=>{let{__scopeSelect:n,children:r,...i}=e;return(0,J.jsx)(s.span,{"aria-hidden":!0,...i,ref:t,children:r||`▼`})});Jn.displayName=qn;var Yn=`SelectPortal`,Xn=e=>(0,J.jsx)(f,{asChild:!0,...e});Xn.displayName=Yn;var Z=`SelectContent`,Zn=q.forwardRef((e,t)=>{let n=X(Z,e.__scopeSelect),[r,i]=q.useState();if(g(()=>{i(new DocumentFragment)},[]),!n.open){let t=r;return t?Pt.createPortal((0,J.jsx)(Qn,{scope:e.__scopeSelect,children:(0,J.jsx)(Nn.Slot,{scope:e.__scopeSelect,children:(0,J.jsx)(`div`,{children:e.children})})}),t):null}return(0,J.jsx)(tr,{...e,ref:t})});Zn.displayName=Z;var Q=10,[Qn,$]=In(Z),$n=`SelectContentImpl`,er=p(`SelectContent.RemoveScroll`),tr=q.forwardRef((e,t)=>{let{__scopeSelect:n,position:r=`item-aligned`,onCloseAutoFocus:i,onEscapeKeyDown:s,onPointerDownOutside:c,side:l,sideOffset:d,align:f,alignOffset:p,arrowPadding:g,collisionBoundary:v,collisionPadding:b,sticky:x,hideWhenDetached:S,avoidCollisions:C,...w}=e,T=X(Z,n),[E,D]=q.useState(null),[O,k]=q.useState(null),A=u(t,e=>D(e)),[j,M]=q.useState(null),[N,P]=q.useState(null),F=Pn(n),[I,L]=q.useState(!1),R=q.useRef(!1);q.useEffect(()=>{if(E)return y(E)},[E]),_();let z=q.useCallback(e=>{let[t,...n]=F().map(e=>e.ref.current),[r]=n.slice(-1),i=document.activeElement;for(let n of e)if(n===i||(n?.scrollIntoView({block:`nearest`}),n===t&&O&&(O.scrollTop=0),n===r&&O&&(O.scrollTop=O.scrollHeight),n?.focus(),document.activeElement!==i))return},[F,O]),ee=q.useCallback(()=>z([j,E]),[z,j,E]);q.useEffect(()=>{I&&ee()},[I,ee]);let{onOpenChange:te,triggerPointerDownPosRef:ne}=T;q.useEffect(()=>{if(E){let e={x:0,y:0},t=t=>{e={x:Math.abs(Math.round(t.pageX)-(ne.current?.x??0)),y:Math.abs(Math.round(t.pageY)-(ne.current?.y??0))}},n=n=>{e.x<=10&&e.y<=10?n.preventDefault():E.contains(n.target)||te(!1),document.removeEventListener(`pointermove`,t),ne.current=null};return ne.current!==null&&(document.addEventListener(`pointermove`,t),document.addEventListener(`pointerup`,n,{capture:!0,once:!0})),()=>{document.removeEventListener(`pointermove`,t),document.removeEventListener(`pointerup`,n,{capture:!0})}}},[E,te,ne]),q.useEffect(()=>{let e=()=>te(!1);return window.addEventListener(`blur`,e),window.addEventListener(`resize`,e),()=>{window.removeEventListener(`blur`,e),window.removeEventListener(`resize`,e)}},[te]);let[re,ie]=Ir(e=>{let t=F().filter(e=>!e.disabled),n=Lr(t,e,t.find(e=>e.ref.current===document.activeElement));n&&setTimeout(()=>n.ref.current.focus())}),ae=q.useCallback((e,t,n)=>{let r=!R.current&&!n;(T.value!==void 0&&T.value===t||r)&&(M(e),r&&(R.current=!0))},[T.value]),oe=q.useCallback(()=>E?.focus(),[E]),se=q.useCallback((e,t,n)=>{let r=!R.current&&!n;(T.value!==void 0&&T.value===t||r)&&P(e)},[T.value]),ce=r===`popper`?ar:rr,le=ce===ar?{side:l,sideOffset:d,align:f,alignOffset:p,arrowPadding:g,collisionBoundary:v,collisionPadding:b,sticky:x,hideWhenDetached:S,avoidCollisions:C}:{};return(0,J.jsx)(Qn,{scope:n,content:E,viewport:O,onViewportChange:k,itemRefCallback:ae,selectedItem:j,onItemLeave:oe,itemTextRefCallback:se,focusSelectedItem:ee,selectedItemText:N,position:r,isPositioned:I,searchRef:re,children:(0,J.jsx)(m,{as:er,allowPinchZoom:!0,children:(0,J.jsx)(o,{asChild:!0,trapped:T.open,onMountAutoFocus:e=>{e.preventDefault()},onUnmountAutoFocus:a(i,e=>{T.trigger?.focus({preventScroll:!0}),e.preventDefault()}),children:(0,J.jsx)(h,{asChild:!0,disableOutsidePointerEvents:!0,onEscapeKeyDown:s,onPointerDownOutside:c,onFocusOutside:e=>e.preventDefault(),onDismiss:()=>T.onOpenChange(!1),children:(0,J.jsx)(ce,{role:`listbox`,id:T.contentId,"data-state":T.open?`open`:`closed`,dir:T.dir,onContextMenu:e=>e.preventDefault(),...w,...le,onPlaced:()=>L(!0),ref:A,style:{display:`flex`,flexDirection:`column`,outline:`none`,...w.style},onKeyDown:a(w.onKeyDown,e=>{let t=e.ctrlKey||e.altKey||e.metaKey;if(e.key===`Tab`&&e.preventDefault(),!t&&e.key.length===1&&ie(e.key),[`ArrowUp`,`ArrowDown`,`Home`,`End`].includes(e.key)){let t=F().filter(e=>!e.disabled).map(e=>e.ref.current);if([`ArrowUp`,`End`].includes(e.key)&&(t=t.slice().reverse()),[`ArrowUp`,`ArrowDown`].includes(e.key)){let n=e.target,r=t.indexOf(n);t=t.slice(r+1)}setTimeout(()=>z(t)),e.preventDefault()}})})})})})})});tr.displayName=$n;var nr=`SelectItemAlignedPosition`,rr=q.forwardRef((e,t)=>{let{__scopeSelect:n,onPlaced:r,...i}=e,a=X(Z,n),o=$(Z,n),[c,l]=q.useState(null),[d,f]=q.useState(null),p=u(t,e=>f(e)),m=Pn(n),h=q.useRef(!1),_=q.useRef(!0),{viewport:v,selectedItem:y,selectedItemText:b,focusSelectedItem:x}=o,S=q.useCallback(()=>{if(a.trigger&&a.valueNode&&c&&d&&v&&y&&b){let e=a.trigger.getBoundingClientRect(),t=d.getBoundingClientRect(),n=a.valueNode.getBoundingClientRect(),i=b.getBoundingClientRect();if(a.dir!==`rtl`){let r=i.left-t.left,a=n.left-r,o=e.left-a,s=e.width+o,l=Math.max(s,t.width),u=window.innerWidth-Q,d=Sn(a,[Q,Math.max(Q,u-l)]);c.style.minWidth=s+`px`,c.style.left=d+`px`}else{let r=t.right-i.right,a=window.innerWidth-n.right-r,o=window.innerWidth-e.right-a,s=e.width+o,l=Math.max(s,t.width),u=window.innerWidth-Q,d=Sn(a,[Q,Math.max(Q,u-l)]);c.style.minWidth=s+`px`,c.style.right=d+`px`}let o=m(),s=window.innerHeight-Q*2,l=v.scrollHeight,u=window.getComputedStyle(d),f=parseInt(u.borderTopWidth,10),p=parseInt(u.paddingTop,10),g=parseInt(u.borderBottomWidth,10),_=parseInt(u.paddingBottom,10),x=f+p+l+_+g,S=Math.min(y.offsetHeight*5,x),C=window.getComputedStyle(v),w=parseInt(C.paddingTop,10),T=parseInt(C.paddingBottom,10),E=e.top+e.height/2-Q,D=s-E,O=y.offsetHeight/2,k=y.offsetTop+O,A=f+p+k,j=x-A;if(A<=E){let e=o.length>0&&y===o[o.length-1].ref.current;c.style.bottom=`0px`;let t=d.clientHeight-v.offsetTop-v.offsetHeight,n=A+Math.max(D,O+(e?T:0)+t+g);c.style.height=n+`px`}else{let e=o.length>0&&y===o[0].ref.current;c.style.top=`0px`;let t=Math.max(E,f+v.offsetTop+(e?w:0)+O)+j;c.style.height=t+`px`,v.scrollTop=A-E+v.offsetTop}c.style.margin=`${Q}px 0`,c.style.minHeight=S+`px`,c.style.maxHeight=s+`px`,r?.(),requestAnimationFrame(()=>h.current=!0)}},[m,a.trigger,a.valueNode,c,d,v,y,b,a.dir,r]);g(()=>S(),[S]);let[C,w]=q.useState();return g(()=>{d&&w(window.getComputedStyle(d).zIndex)},[d]),(0,J.jsx)(or,{scope:n,contentWrapper:c,shouldExpandOnScrollRef:h,onScrollButtonChange:q.useCallback(e=>{e&&_.current===!0&&(S(),x?.(),_.current=!1)},[S,x]),children:(0,J.jsx)(`div`,{ref:l,style:{display:`flex`,flexDirection:`column`,position:`fixed`,zIndex:C},children:(0,J.jsx)(s.div,{...i,ref:p,style:{boxSizing:`border-box`,maxHeight:`100%`,...i.style}})})})});rr.displayName=nr;var ir=`SelectPopperPosition`,ar=q.forwardRef((e,t)=>{let{__scopeSelect:n,align:r=`start`,collisionPadding:i=Q,...a}=e,o=Rn(n);return(0,J.jsx)(bn,{...o,...a,ref:t,align:r,collisionPadding:i,style:{boxSizing:`border-box`,...a.style,"--radix-select-content-transform-origin":`var(--radix-popper-transform-origin)`,"--radix-select-content-available-width":`var(--radix-popper-available-width)`,"--radix-select-content-available-height":`var(--radix-popper-available-height)`,"--radix-select-trigger-width":`var(--radix-popper-anchor-width)`,"--radix-select-trigger-height":`var(--radix-popper-anchor-height)`}})});ar.displayName=ir;var[or,sr]=In(Z,{}),cr=`SelectViewport`,lr=q.forwardRef((e,t)=>{let{__scopeSelect:n,nonce:r,...i}=e,o=$(cr,n),c=sr(cr,n),l=u(t,o.onViewportChange),d=q.useRef(0);return(0,J.jsxs)(J.Fragment,{children:[(0,J.jsx)(`style`,{dangerouslySetInnerHTML:{__html:`[data-radix-select-viewport]{scrollbar-width:none;-ms-overflow-style:none;-webkit-overflow-scrolling:touch;}[data-radix-select-viewport]::-webkit-scrollbar{display:none}`},nonce:r}),(0,J.jsx)(Nn.Slot,{scope:n,children:(0,J.jsx)(s.div,{"data-radix-select-viewport":``,role:`presentation`,...i,ref:l,style:{position:`relative`,flex:1,overflow:`hidden auto`,...i.style},onScroll:a(i.onScroll,e=>{let t=e.currentTarget,{contentWrapper:n,shouldExpandOnScrollRef:r}=c;if(r?.current&&n){let e=Math.abs(d.current-t.scrollTop);if(e>0){let r=window.innerHeight-Q*2,i=parseFloat(n.style.minHeight),a=parseFloat(n.style.height),o=Math.max(i,a);if(o<r){let i=o+e,a=Math.min(r,i),s=i-a;n.style.height=a+`px`,n.style.bottom===`0px`&&(t.scrollTop=s>0?s:0,n.style.justifyContent=`flex-end`)}}}d.current=t.scrollTop})})})]})});lr.displayName=cr;var ur=`SelectGroup`,[dr,fr]=In(ur),pr=q.forwardRef((e,t)=>{let{__scopeSelect:n,...r}=e,i=l();return(0,J.jsx)(dr,{scope:n,id:i,children:(0,J.jsx)(s.div,{role:`group`,"aria-labelledby":i,...r,ref:t})})});pr.displayName=ur;var mr=`SelectLabel`,hr=q.forwardRef((e,t)=>{let{__scopeSelect:n,...r}=e,i=fr(mr,n);return(0,J.jsx)(s.div,{id:i.id,...r,ref:t})});hr.displayName=mr;var gr=`SelectItem`,[_r,vr]=In(gr),yr=q.forwardRef((e,t)=>{let{__scopeSelect:n,value:r,disabled:i=!1,textValue:o,...c}=e,d=X(gr,n),f=$(gr,n),p=d.value===r,[m,h]=q.useState(o??``),[g,_]=q.useState(!1),v=u(t,e=>f.itemRefCallback?.(e,r,i)),y=l(),b=q.useRef(`touch`),x=()=>{i||(d.onValueChange(r),d.onOpenChange(!1))};if(r===``)throw Error(`A <Select.Item /> must have a value prop that is not an empty string. This is because the Select value can be set to an empty string to clear the selection and show the placeholder.`);return(0,J.jsx)(_r,{scope:n,value:r,disabled:i,textId:y,isSelected:p,onItemTextChange:q.useCallback(e=>{h(t=>t||(e?.textContent??``).trim())},[]),children:(0,J.jsx)(Nn.ItemSlot,{scope:n,value:r,disabled:i,textValue:m,children:(0,J.jsx)(s.div,{role:`option`,"aria-labelledby":y,"data-highlighted":g?``:void 0,"aria-selected":p&&g,"data-state":p?`checked`:`unchecked`,"aria-disabled":i||void 0,"data-disabled":i?``:void 0,tabIndex:i?void 0:-1,...c,ref:v,onFocus:a(c.onFocus,()=>_(!0)),onBlur:a(c.onBlur,()=>_(!1)),onClick:a(c.onClick,()=>{b.current!==`mouse`&&x()}),onPointerUp:a(c.onPointerUp,()=>{b.current===`mouse`&&x()}),onPointerDown:a(c.onPointerDown,e=>{b.current=e.pointerType}),onPointerMove:a(c.onPointerMove,e=>{b.current=e.pointerType,i?f.onItemLeave?.():b.current===`mouse`&&e.currentTarget.focus({preventScroll:!0})}),onPointerLeave:a(c.onPointerLeave,e=>{e.currentTarget===document.activeElement&&f.onItemLeave?.()}),onKeyDown:a(c.onKeyDown,e=>{f.searchRef?.current!==``&&e.key===` `||(Mn.includes(e.key)&&x(),e.key===` `&&e.preventDefault())})})})})});yr.displayName=gr;var br=`SelectItemText`,xr=q.forwardRef((e,t)=>{let{__scopeSelect:n,className:r,style:i,...a}=e,o=X(br,n),c=$(br,n),l=vr(br,n),d=Vn(br,n),[f,p]=q.useState(null),m=u(t,e=>p(e),l.onItemTextChange,e=>c.itemTextRefCallback?.(e,l.value,l.disabled)),h=f?.textContent,_=q.useMemo(()=>(0,J.jsx)(`option`,{value:l.value,disabled:l.disabled,children:h},l.value),[l.disabled,l.value,h]),{onNativeOptionAdd:v,onNativeOptionRemove:y}=d;return g(()=>(v(_),()=>y(_)),[v,y,_]),(0,J.jsxs)(J.Fragment,{children:[(0,J.jsx)(s.span,{id:l.textId,...a,ref:m}),l.isSelected&&o.valueNode&&!o.valueNodeHasChildren?Pt.createPortal(a.children,o.valueNode):null]})});xr.displayName=br;var Sr=`SelectItemIndicator`,Cr=q.forwardRef((e,t)=>{let{__scopeSelect:n,...r}=e;return vr(Sr,n).isSelected?(0,J.jsx)(s.span,{"aria-hidden":!0,...r,ref:t}):null});Cr.displayName=Sr;var wr=`SelectScrollUpButton`,Tr=q.forwardRef((e,t)=>{let n=$(wr,e.__scopeSelect),r=sr(wr,e.__scopeSelect),[i,a]=q.useState(!1),o=u(t,r.onScrollButtonChange);return g(()=>{if(n.viewport&&n.isPositioned){let e=function(){a(t.scrollTop>0)},t=n.viewport;return e(),t.addEventListener(`scroll`,e),()=>t.removeEventListener(`scroll`,e)}},[n.viewport,n.isPositioned]),i?(0,J.jsx)(Or,{...e,ref:o,onAutoScroll:()=>{let{viewport:e,selectedItem:t}=n;e&&t&&(e.scrollTop-=t.offsetHeight)}}):null});Tr.displayName=wr;var Er=`SelectScrollDownButton`,Dr=q.forwardRef((e,t)=>{let n=$(Er,e.__scopeSelect),r=sr(Er,e.__scopeSelect),[i,a]=q.useState(!1),o=u(t,r.onScrollButtonChange);return g(()=>{if(n.viewport&&n.isPositioned){let e=function(){let e=t.scrollHeight-t.clientHeight;a(Math.ceil(t.scrollTop)<e)},t=n.viewport;return e(),t.addEventListener(`scroll`,e),()=>t.removeEventListener(`scroll`,e)}},[n.viewport,n.isPositioned]),i?(0,J.jsx)(Or,{...e,ref:o,onAutoScroll:()=>{let{viewport:e,selectedItem:t}=n;e&&t&&(e.scrollTop+=t.offsetHeight)}}):null});Dr.displayName=Er;var Or=q.forwardRef((e,t)=>{let{__scopeSelect:n,onAutoScroll:r,...i}=e,o=$(`SelectScrollButton`,n),c=q.useRef(null),l=Pn(n),u=q.useCallback(()=>{c.current!==null&&(window.clearInterval(c.current),c.current=null)},[]);return q.useEffect(()=>()=>u(),[u]),g(()=>{l().find(e=>e.ref.current===document.activeElement)?.ref.current?.scrollIntoView({block:`nearest`})},[l]),(0,J.jsx)(s.div,{"aria-hidden":!0,...i,ref:t,style:{flexShrink:0,...i.style},onPointerDown:a(i.onPointerDown,()=>{c.current===null&&(c.current=window.setInterval(r,50))}),onPointerMove:a(i.onPointerMove,()=>{o.onItemLeave?.(),c.current===null&&(c.current=window.setInterval(r,50))}),onPointerLeave:a(i.onPointerLeave,()=>{u()})})}),kr=`SelectSeparator`,Ar=q.forwardRef((e,t)=>{let{__scopeSelect:n,...r}=e;return(0,J.jsx)(s.div,{"aria-hidden":!0,...r,ref:t})});Ar.displayName=kr;var jr=`SelectArrow`,Mr=q.forwardRef((e,t)=>{let{__scopeSelect:n,...r}=e,i=Rn(n),a=X(jr,n),o=$(jr,n);return a.open&&o.position===`popper`?(0,J.jsx)(xn,{...i,...r,ref:t}):null});Mr.displayName=jr;var Nr=`SelectBubbleInput`,Pr=q.forwardRef(({__scopeSelect:e,value:t,...n},r)=>{let i=q.useRef(null),a=u(r,i),o=En(t);return q.useEffect(()=>{let e=i.current;if(!e)return;let n=window.HTMLSelectElement.prototype,r=Object.getOwnPropertyDescriptor(n,`value`).set;if(o!==t&&r){let n=new Event(`change`,{bubbles:!0});r.call(e,t),e.dispatchEvent(n)}},[o,t]),(0,J.jsx)(s.select,{...n,style:{...Dn,...n.style},ref:a,defaultValue:t})});Pr.displayName=Nr;function Fr(e){return e===``||e===void 0}function Ir(e){let t=v(e),n=q.useRef(``),r=q.useRef(0),i=q.useCallback(e=>{let i=n.current+e;t(i),(function e(t){n.current=t,window.clearTimeout(r.current),t!==``&&(r.current=window.setTimeout(()=>e(``),1e3))})(i)},[t]),a=q.useCallback(()=>{n.current=``,window.clearTimeout(r.current)},[]);return q.useEffect(()=>()=>window.clearTimeout(r.current),[]),[n,i,a]}function Lr(e,t,n){let r=t.length>1&&Array.from(t).every(e=>e===t[0])?t[0]:t,i=n?e.indexOf(n):-1,a=Rr(e,Math.max(i,0));r.length===1&&(a=a.filter(e=>e!==n));let o=a.find(e=>e.textValue.toLowerCase().startsWith(r.toLowerCase()));return o===n?void 0:o}function Rr(e,t){return e.map((n,r)=>e[(t+r)%e.length])}var zr=Hn,Br=Wn,Vr=Kn,Hr=Jn,Ur=Xn,Wr=Zn,Gr=lr,Kr=pr,qr=hr,Jr=yr,Yr=xr,Xr=Cr,Zr=Tr,Qr=Dr,$r=Ar,ei=zr,ti=Vr,ni=q.forwardRef(({className:e,children:t,...n},i)=>(0,J.jsxs)(Br,{ref:i,className:r(`flex h-9 w-full items-center justify-between whitespace-nowrap rounded-xl border border-gray-200/80 bg-transparent px-3 py-2 text-sm shadow-sm ring-offset-background placeholder:text-muted-foreground focus:outline-none focus:ring-1 focus:ring-primary/40 disabled:cursor-not-allowed disabled:opacity-50 [&>span]:line-clamp-1 bg-white`,e),...n,children:[t,(0,J.jsx)(Hr,{asChild:!0,children:(0,J.jsx)(S,{className:`h-4 w-4 opacity-50`})})]}));ni.displayName=Br.displayName;var ri=q.forwardRef(({className:e,...t},n)=>(0,J.jsx)(Zr,{ref:n,className:r(`flex cursor-default items-center justify-center py-1`,e),...t,children:(0,J.jsx)(C,{className:`h-4 w-4`})}));ri.displayName=Zr.displayName;var ii=q.forwardRef(({className:e,...t},n)=>(0,J.jsx)(Qr,{ref:n,className:r(`flex cursor-default items-center justify-center py-1`,e),...t,children:(0,J.jsx)(S,{className:`h-4 w-4`})}));ii.displayName=Qr.displayName;var ai=q.forwardRef(({className:e,children:t,position:n=`popper`,...i},a)=>(0,J.jsx)(Ur,{children:(0,J.jsxs)(Wr,{ref:a,className:r(`relative z-50 max-h-96 min-w-[8rem] overflow-hidden rounded-md border bg-popover text-popover-foreground shadow-md data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 bg-white`,n===`popper`&&`data-[side=bottom]:translate-y-1 data-[side=left]:-translate-x-1 data-[side=right]:translate-x-1 data-[side=top]:-translate-y-1`,e),position:n,...i,children:[(0,J.jsx)(ri,{}),(0,J.jsx)(Gr,{className:r(`p-1`,n===`popper`&&`h-[var(--radix-select-trigger-height)] w-full min-w-[var(--radix-select-trigger-width)]`),children:t}),(0,J.jsx)(ii,{})]})}));ai.displayName=Wr.displayName;var oi=q.forwardRef(({className:e,...t},n)=>(0,J.jsx)(qr,{ref:n,className:r(`px-2 py-1.5 text-sm font-semibold`,e),...t}));oi.displayName=qr.displayName;var si=q.forwardRef(({className:e,children:t,...n},i)=>(0,J.jsxs)(Jr,{ref:i,className:r(`relative flex w-full cursor-default select-none items-center rounded-sm py-1.5 pl-2 pr-8 text-sm outline-none focus:bg-gray-100 focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50 hover:bg-gray-100`,e),...n,children:[(0,J.jsx)(`span`,{className:`absolute right-2 flex h-3.5 w-3.5 items-center justify-center`,children:(0,J.jsx)(Xr,{children:(0,J.jsx)(x,{className:`h-4 w-4`})})}),(0,J.jsx)(Yr,{children:t})]}));si.displayName=Jr.displayName;var ci=q.forwardRef(({className:e,...t},n)=>(0,J.jsx)($r,{ref:n,className:r(`-mx-1 my-1 h-px bg-muted`,e),...t}));ci.displayName=$r.displayName;export{xn as C,C as D,tn as E,S as O,yn as S,vn as T,$r as _,ti as a,Gr as b,Hr as c,Yr as d,qr as f,Zr as g,Qr as h,ni as i,x as k,Jr as l,zr as m,ai as n,Wr as o,Ur as p,si as r,Kr as s,ei as t,Xr as u,Br as v,bn as w,An as x,Vr as y};
@@ -0,0 +1 @@
1
+ import{_ as e,m as t,p as n,u as r}from"./i18n-DvzXOGQX.js";import{s as i}from"./dist-ZwoAXs46.js";var a=e(t(),1),o=n(),s=i(`flex items-start justify-between gap-4 rounded-xl border p-4`,{variants:{tone:{default:`border-gray-200 bg-white`,muted:`border-gray-200 bg-gray-50`}},defaultVariants:{tone:`default`}}),c=a.forwardRef(({className:e,tone:t,title:n,description:i,control:a,children:c,...l},u)=>(0,o.jsxs)(`div`,{ref:u,className:r(s({tone:t}),e),...l,children:[(0,o.jsxs)(`div`,{className:`min-w-0 flex-1 space-y-2`,children:[(0,o.jsx)(`div`,{className:`text-sm font-medium text-gray-900`,children:n}),i?(0,o.jsx)(`p`,{className:`text-sm leading-6 text-gray-500`,children:i}):null,c]}),a?(0,o.jsx)(`div`,{className:`shrink-0`,children:a}):null]}));c.displayName=`SettingRow`;export{c as t};
@@ -0,0 +1 @@
1
+ import{p as e,u as t}from"./i18n-DvzXOGQX.js";var n=e();function r({className:e,...r}){return(0,n.jsx)(`div`,{className:t(`animate-pulse rounded-md bg-slate-200`,e),...r})}export{r as t};
@@ -1 +1 @@
1
- import{_ as e,m as t,p as n,u as r}from"./i18n-CpTZLchQ.js";var i=e(t(),1),a=n(),o=i.forwardRef(({className:e,checked:t=!1,onCheckedChange:n,...i},o)=>(0,a.jsx)(`button`,{type:`button`,role:`switch`,"aria-checked":t,ref:o,className:r(`peer inline-flex h-[22px] w-10 shrink-0 cursor-pointer items-center rounded-full border-2 border-transparent transition-colors duration-fast focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary focus-visible:ring-offset-2 focus-visible:ring-offset-white disabled:cursor-not-allowed disabled:opacity-50`,t?`bg-primary`:`bg-gray-200/80 hover:bg-gray-300/80`,e),onClick:()=>n?.(!t),...i,children:(0,a.jsx)(`span`,{className:r(`pointer-events-none block h-5 w-5 rounded-full bg-white shadow-md ring-0 transition-transform duration-fast`,t?`translate-x-5`:`translate-x-0`)})}));o.displayName=`Switch`;export{o as t};
1
+ import{_ as e,m as t,p as n,u as r}from"./i18n-DvzXOGQX.js";var i=e(t(),1),a=n(),o=i.forwardRef(({className:e,checked:t=!1,onCheckedChange:n,...i},o)=>(0,a.jsx)(`button`,{type:`button`,role:`switch`,"aria-checked":t,ref:o,className:r(`peer inline-flex h-[22px] w-10 shrink-0 cursor-pointer items-center rounded-full border-2 border-transparent transition-colors duration-fast focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary focus-visible:ring-offset-2 focus-visible:ring-offset-white disabled:cursor-not-allowed disabled:opacity-50`,t?`bg-primary`:`bg-gray-200/80 hover:bg-gray-300/80`,e),onClick:()=>n?.(!t),...i,children:(0,a.jsx)(`span`,{className:r(`pointer-events-none block h-5 w-5 rounded-full bg-white shadow-md ring-0 transition-transform duration-fast`,t?`translate-x-5`:`translate-x-0`)})}));o.displayName=`Switch`;export{o as t};
@@ -1 +1 @@
1
- import{m as e,p as t,r as n,u as r}from"./i18n-CpTZLchQ.js";e();var i=t();function a({tabs:e,activeTab:t,onChange:a,className:o}){return(0,i.jsx)(`div`,{className:r(`flex items-center gap-6 border-b border-gray-200/60 mb-6`,o),children:e.map(e=>{let o=t===e.id;return(0,i.jsxs)(`button`,{onClick:()=>a(e.id),className:r(`relative pb-3 text-[14px] font-medium transition-all duration-fast flex items-center gap-1.5`,o?`text-gray-900`:`text-gray-600 hover:text-gray-900`),children:[e.label,e.count!==void 0&&(0,i.jsx)(`span`,{className:r(`text-[11px] font-medium`,`text-gray-500`),children:n(e.count)}),o&&(0,i.jsx)(`div`,{className:`absolute bottom-0 left-0 right-0 h-[2px] bg-primary rounded-full`})]},e.id)})})}export{a as t};
1
+ import{m as e,p as t,r as n,u as r}from"./i18n-DvzXOGQX.js";e();var i=t();function a({tabs:e,activeTab:t,onChange:a,className:o}){return(0,i.jsx)(`div`,{className:r(`flex items-center gap-6 border-b border-gray-200/60 mb-6`,o),children:e.map(e=>{let o=t===e.id;return(0,i.jsxs)(`button`,{onClick:()=>a(e.id),className:r(`relative pb-3 text-[14px] font-medium transition-all duration-fast flex items-center gap-1.5`,o?`text-gray-900`:`text-gray-600 hover:text-gray-900`),children:[e.label,e.count!==void 0&&(0,i.jsx)(`span`,{className:r(`text-[11px] font-medium`,`text-gray-500`),children:n(e.count)}),o&&(0,i.jsx)(`div`,{className:`absolute bottom-0 left-0 right-0 h-[2px] bg-primary rounded-full`})]},e.id)})})}export{a as t};
@@ -0,0 +1 @@
1
+ import{_ as e,m as t,p as n,u as r}from"./i18n-DvzXOGQX.js";import{s as i}from"./dist-ZwoAXs46.js";var a=e(t(),1),o=n(),s=i(`inline-flex items-center gap-1 rounded-full border px-2 py-0.5 text-[11px] font-medium`,{variants:{tone:{subtle:`border-gray-200 bg-gray-50 text-gray-600`,neutral:`border-gray-200 bg-white text-gray-600`,success:`border-emerald-200 bg-emerald-50 text-emerald-700`,warning:`border-amber-200 bg-amber-50 text-amber-800`,danger:`border-rose-200 bg-rose-50 text-rose-600`,info:`border-primary/20 bg-primary/10 text-primary`}},defaultVariants:{tone:`subtle`}}),c=a.forwardRef(({className:e,tone:t,...n},i)=>(0,o.jsx)(`span`,{ref:i,className:r(s({tone:t}),e),...n}));c.displayName=`TagChip`;export{c as t};
@@ -1 +1 @@
1
- import{t as e}from"./createLucideIcon-dy5ie7Ox.js";var t=e(`Trash2`,[[`path`,{d:`M3 6h18`,key:`d0wm0j`}],[`path`,{d:`M19 6v14c0 1-1 2-2 2H7c-1 0-2-1-2-2V6`,key:`4alrt4`}],[`path`,{d:`M8 6V4c0-1 1-2 2-2h4c1 0 2 1 2 2v2`,key:`v07s0e`}],[`line`,{x1:`10`,x2:`10`,y1:`11`,y2:`17`,key:`1uufr5`}],[`line`,{x1:`14`,x2:`14`,y1:`11`,y2:`17`,key:`xtxkd`}]]);export{t};
1
+ import{t as e}from"./createLucideIcon-CCiTGX8L.js";var t=e(`Trash2`,[[`path`,{d:`M3 6h18`,key:`d0wm0j`}],[`path`,{d:`M19 6v14c0 1-1 2-2 2H7c-1 0-2-1-2-2V6`,key:`4alrt4`}],[`path`,{d:`M8 6V4c0-1 1-2 2-2h4c1 0 2 1 2 2v2`,key:`v07s0e`}],[`line`,{x1:`10`,x2:`10`,y1:`11`,y2:`17`,key:`1uufr5`}],[`line`,{x1:`14`,x2:`14`,y1:`11`,y2:`17`,key:`xtxkd`}]]);export{t};
@@ -0,0 +1 @@
1
+ import{_ as e,i as t,m as n,p as r}from"./i18n-DvzXOGQX.js";import{B as i,G as a,K as o,W as s,q as c}from"./client-CszWMVKi.js";import{t as l}from"./createLucideIcon-CCiTGX8L.js";import{a as u,i as d,n as f,r as p,t as m}from"./select-BILPf7zs.js";import{t as h}from"./skeleton-COKMAnJy.js";var g=class extends c{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:o()})}getOptimisticResult(e){return e.behavior=o(),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:o,isError:c,isRefetchError:l}=r,u=n.fetchMeta?.fetchMore?.direction,d=c&&u===`forward`,f=i&&u===`forward`,p=c&&u===`backward`,m=i&&u===`backward`;return{...r,fetchNextPage:this.fetchNextPage,fetchPreviousPage:this.fetchPreviousPage,hasNextPage:s(t,n.data),hasPreviousPage:a(t,n.data),isFetchNextPageError:d,isFetchingNextPage:f,isFetchPreviousPageError:p,isFetchingPreviousPage:m,isRefetchError:l&&!d&&!p,isRefetching:o&&!f&&!m}}};function _(e,t){return i(e,g,t)}var v=l(`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`}]]);function y(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}}var b=r();function x(e){return(0,b.jsx)(`div`,{className:`mb-4`,children:(0,b.jsxs)(`div`,{className:`flex gap-3 items-center`,children:[(0,b.jsxs)(`div`,{className:`flex-1 min-w-0 relative`,children:[(0,b.jsx)(v,{className:`h-4 w-4 text-gray-400 absolute left-3 top-1/2 -translate-y-1/2`}),(0,b.jsx)(`input`,{value:e.searchText,onChange:t=>e.onSearchTextChange(t.target.value),placeholder:e.searchPlaceholder,className:`w-full h-9 border border-gray-200/80 rounded-xl pl-9 pr-3 text-sm focus:outline-none focus:ring-1 focus:ring-primary/40`})]}),e.scope===`all`&&(0,b.jsxs)(m,{value:e.sort,onValueChange:t=>e.onSortChange(t),children:[(0,b.jsx)(d,{className:`h-9 w-[150px] shrink-0 rounded-lg`,children:(0,b.jsx)(u,{})}),(0,b.jsxs)(f,{children:[(0,b.jsx)(p,{value:`relevance`,children:t(`marketplaceSortRelevance`)}),(0,b.jsx)(p,{value:`updated`,children:t(`marketplaceSortUpdated`)})]})]})]})})}function S(e){return(0,b.jsx)(b.Fragment,{children:Array.from({length:e.count},(e,t)=>(0,b.jsx)(`article`,{className:`rounded-2xl border border-gray-200/40 bg-white px-5 py-4 shadow-sm`,children:(0,b.jsxs)(`div`,{className:`flex items-start gap-3.5 justify-between`,children:[(0,b.jsxs)(`div`,{className:`flex min-w-0 flex-1 gap-3`,children:[(0,b.jsx)(h,{className:`h-10 w-10 shrink-0 rounded-xl`}),(0,b.jsxs)(`div`,{className:`min-w-0 flex-1 space-y-2 pt-0.5`,children:[(0,b.jsx)(h,{className:`h-4 w-32 max-w-[70%]`}),(0,b.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,b.jsx)(h,{className:`h-3 w-12`}),(0,b.jsx)(h,{className:`h-3 w-24`})]}),(0,b.jsx)(h,{className:`h-3 w-full`})]})]}),(0,b.jsx)(h,{className:`h-8 w-20 shrink-0 rounded-xl`})]})},`marketplace-skeleton-${t}`))})}function C(e){return!e.hasMore&&!e.loading?null:(0,b.jsxs)(`div`,{className:`py-4`,children:[e.hasMore&&(0,b.jsx)(`div`,{ref:e.sentinelRef,className:`h-1 w-full`,"aria-hidden":`true`}),e.loading&&(0,b.jsx)(`div`,{"data-testid":`marketplace-loading-more`,className:`pt-3 text-center text-xs text-gray-500`,children:t(`loading`)})]})}function w(e){let t=e.trim().toLowerCase().replace(/_/g,`-`),n=[t,t.split(`-`)[0],`en`];return Array.from(new Set(n.filter(Boolean)))}function T(e){return e.trim().toLowerCase().replace(/_/g,`-`)}function E(e,t,n){if(e){let t=Object.entries(e).map(([e,t])=>({locale:T(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=T(t),r=e.get(n);if(r)return r}for(let e of n){let n=T(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 D(e,t){if(!e)return``;for(let n of t)if(T(n).split(`-`)[0]===`zh`&&e.descriptionZh?.trim())return e.descriptionZh.trim();return e.description?.trim()?e.description.trim():e.descriptionZh?.trim()?e.descriptionZh.trim():``}var O=e(n(),1),k=160;function A(e){let t=(0,O.useRef)(null),n=(0,O.useRef)(null),r=(0,O.useRef)(e.onLoadMore),i=(0,O.useRef)(!1);return(0,O.useEffect)(()=>{r.current=e.onLoadMore},[e.onLoadMore]),(0,O.useEffect)(()=>{e.disabled&&(i.current=!1)},[e.disabled]),(0,O.useEffect)(()=>{let a=t.current,o=n.current,s=e.thresholdPx??k;if(e.disabled||!a||!o)return;let c=()=>{i.current||e.disabled||(i.current=!0,Promise.resolve(r.current()).finally(()=>{i.current=!1}))},l=()=>{o.getBoundingClientRect().top-a.getBoundingClientRect().bottom<=s&&c()};if(typeof IntersectionObserver==`function`){let e=new IntersectionObserver(e=>{e.some(e=>e.isIntersecting)&&c()},{root:a,rootMargin:`0px 0px ${s}px 0px`});return e.observe(o),l(),()=>{e.disconnect()}}return a.addEventListener(`scroll`,l,{passive:!0}),l(),()=>{a.removeEventListener(`scroll`,l)}},[e.disabled,e.thresholdPx,e.watchValue]),{containerRef:t,sentinelRef:n}}export{x as a,y as c,E as i,_ as l,w as n,C as o,D as r,S as s,A as t};
@@ -0,0 +1 @@
1
+ import{_ as e,i as t,m as n,p as r}from"./i18n-DvzXOGQX.js";import{o as i}from"./dist-ZwoAXs46.js";import{a,i as o,n as s,o as c,r as l,t as u}from"./dialog-BghZFPch.js";var d=e(n(),1),f=r(),p=({open:e,onOpenChange:n,title:r,description:d,confirmLabel:p=t(`confirm`),cancelLabel:m=t(`cancel`),variant:h=`default`,onConfirm:g,onCancel:_})=>(0,f.jsx)(u,{open:e,onOpenChange:n,children:(0,f.jsxs)(s,{className:`[&>:last-child]:hidden`,onCloseAutoFocus:e=>e.preventDefault(),children:[(0,f.jsxs)(a,{children:[(0,f.jsx)(c,{children:r}),d?(0,f.jsx)(l,{children:d}):null]}),(0,f.jsxs)(o,{className:`gap-2 sm:gap-0`,children:[(0,f.jsx)(i,{type:`button`,variant:`outline`,onClick:()=>{_(),n(!1)},children:m}),(0,f.jsx)(i,{type:`button`,variant:h===`destructive`?`destructive`:`default`,onClick:()=>{g(),n(!1)},children:p})]})]})}),m={open:!1,title:``,description:``,confirmLabel:t(`confirm`),cancelLabel:t(`cancel`),variant:`default`,resolve:null};function h(){let[e,n]=(0,d.useState)(m),r=(0,d.useCallback)(e=>new Promise(r=>{n({open:!0,title:e.title,description:e.description??``,confirmLabel:e.confirmLabel??t(`confirm`),cancelLabel:e.cancelLabel??t(`cancel`),variant:e.variant??`default`,resolve:e=>{r(e),n(e=>({...e,open:!1,resolve:null}))}})}),[]),i=(0,d.useCallback)(e=>{n(t=>(!e&&t.resolve&&t.resolve(!1),{...t,open:e,resolve:e?t.resolve:null}))},[]);return{confirm:r,ConfirmDialog:(0,d.useCallback)(()=>(0,f.jsx)(p,{open:e.open,onOpenChange:i,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,i])}}export{h as t};
@@ -1 +1 @@
1
- import{_ as e,m as t}from"./i18n-CpTZLchQ.js";import{A as n,D as r,O as i,b as a,l as o,p as s,s as c,w as l}from"./client-C-8fH7-c.js";var u=class extends n{#e;#t=void 0;#n;#r;constructor(e,t){super(),this.#e=e,this.setOptions(t),this.bindMethods(),this.#i()}bindMethods(){this.mutate=this.mutate.bind(this),this.reset=this.reset.bind(this)}setOptions(e){let t=this.options;this.options=this.#e.defaultMutationOptions(e),r(this.options,t)||this.#e.getMutationCache().notify({type:`observerOptionsUpdated`,mutation:this.#n,observer:this}),t?.mutationKey&&this.options.mutationKey&&a(t.mutationKey)!==a(this.options.mutationKey)?this.reset():this.#n?.state.status===`pending`&&this.#n.setOptions(this.options)}onUnsubscribe(){this.hasListeners()||this.#n?.removeObserver(this)}onMutationUpdate(e){this.#i(),this.#a(e)}getCurrentResult(){return this.#t}reset(){this.#n?.removeObserver(this),this.#n=void 0,this.#i(),this.#a()}mutate(e,t){return this.#r=t,this.#n?.removeObserver(this),this.#n=this.#e.getMutationCache().build(this.#e,this.options),this.#n.addObserver(this),this.#n.execute(e)}#i(){let e=this.#n?.state??o();this.#t={...e,isPending:e.status===`pending`,isSuccess:e.status===`success`,isError:e.status===`error`,isIdle:e.status===`idle`,mutate:this.mutate,reset:this.reset}}#a(e){s.batch(()=>{if(this.#r&&this.hasListeners()){let t=this.#t.variables,n=this.#t.context,r={client:this.#e,meta:this.options.meta,mutationKey:this.options.mutationKey};if(e?.type===`success`){try{this.#r.onSuccess?.(e.data,t,n,r)}catch(e){Promise.reject(e)}try{this.#r.onSettled?.(e.data,null,t,n,r)}catch(e){Promise.reject(e)}}else if(e?.type===`error`){try{this.#r.onError?.(e.error,t,n,r)}catch(e){Promise.reject(e)}try{this.#r.onSettled?.(void 0,e.error,t,n,r)}catch(e){Promise.reject(e)}}}this.listeners.forEach(e=>{e(this.#t)})})}},d=e(t(),1);function f(e,t){let n=c(t),[r]=d.useState(()=>new u(n,e));d.useEffect(()=>{r.setOptions(e)},[r,e]);let a=d.useSyncExternalStore(d.useCallback(e=>r.subscribe(s.batchCalls(e)),[r]),()=>r.getCurrentResult(),()=>r.getCurrentResult()),o=d.useCallback((e,t)=>{r.mutate(e,t).catch(l)},[r]);if(a.error&&i(r.options.throwOnError,[a.error]))throw a.error;return{...a,mutate:o,mutateAsync:a.mutate}}export{f as t};
1
+ import{_ as e,m as t}from"./i18n-DvzXOGQX.js";import{$ as n,H as r,J as i,Q as a,U as o,X as s,Y as c,Z as l}from"./client-CszWMVKi.js";var u=class extends n{#e;#t=void 0;#n;#r;constructor(e,t){super(),this.#e=e,this.setOptions(t),this.bindMethods(),this.#i()}bindMethods(){this.mutate=this.mutate.bind(this),this.reset=this.reset.bind(this)}setOptions(e){let t=this.options;this.options=this.#e.defaultMutationOptions(e),l(this.options,t)||this.#e.getMutationCache().notify({type:`observerOptionsUpdated`,mutation:this.#n,observer:this}),t?.mutationKey&&this.options.mutationKey&&c(t.mutationKey)!==c(this.options.mutationKey)?this.reset():this.#n?.state.status===`pending`&&this.#n.setOptions(this.options)}onUnsubscribe(){this.hasListeners()||this.#n?.removeObserver(this)}onMutationUpdate(e){this.#i(),this.#a(e)}getCurrentResult(){return this.#t}reset(){this.#n?.removeObserver(this),this.#n=void 0,this.#i(),this.#a()}mutate(e,t){return this.#r=t,this.#n?.removeObserver(this),this.#n=this.#e.getMutationCache().build(this.#e,this.options),this.#n.addObserver(this),this.#n.execute(e)}#i(){let e=this.#n?.state??o();this.#t={...e,isPending:e.status===`pending`,isSuccess:e.status===`success`,isError:e.status===`error`,isIdle:e.status===`idle`,mutate:this.mutate,reset:this.reset}}#a(e){i.batch(()=>{if(this.#r&&this.hasListeners()){let t=this.#t.variables,n=this.#t.context,r={client:this.#e,meta:this.options.meta,mutationKey:this.options.mutationKey};if(e?.type===`success`){try{this.#r.onSuccess?.(e.data,t,n,r)}catch(e){Promise.reject(e)}try{this.#r.onSettled?.(e.data,null,t,n,r)}catch(e){Promise.reject(e)}}else if(e?.type===`error`){try{this.#r.onError?.(e.error,t,n,r)}catch(e){Promise.reject(e)}try{this.#r.onSettled?.(void 0,e.error,t,n,r)}catch(e){Promise.reject(e)}}}this.listeners.forEach(e=>{e(this.#t)})})}},d=e(t(),1);function f(e,t){let n=r(t),[o]=d.useState(()=>new u(n,e));d.useEffect(()=>{o.setOptions(e)},[o,e]);let c=d.useSyncExternalStore(d.useCallback(e=>o.subscribe(i.batchCalls(e)),[o]),()=>o.getCurrentResult(),()=>o.getCurrentResult()),l=d.useCallback((e,t)=>{o.mutate(e,t).catch(s)},[o]);if(c.error&&a(o.options.throwOnError,[c.error]))throw c.error;return{...c,mutate:l,mutateAsync:c.mutate}}export{f as t};
@@ -0,0 +1 @@
1
+ import{t as e}from"./createLucideIcon-CCiTGX8L.js";var t=e(`X`,[[`path`,{d:`M18 6 6 18`,key:`1bl5f8`}],[`path`,{d:`m6 6 12 12`,key:`d8bk6v`}]]);export{t};
package/dist/index.html CHANGED
@@ -78,28 +78,28 @@
78
78
  })();
79
79
  </script>
80
80
  <title>NextClaw</title>
81
- <script type="module" crossorigin src="/assets/index-zDZfXoI4.js"></script>
82
- <link rel="modulepreload" crossorigin href="/assets/i18n-CpTZLchQ.js">
83
- <link rel="modulepreload" crossorigin href="/assets/chunk-JZWAC4HX-C5dEc8hV.js">
84
- <link rel="modulepreload" crossorigin href="/assets/dist-BruyLa92.js">
85
- <link rel="modulepreload" crossorigin href="/assets/createLucideIcon-dy5ie7Ox.js">
86
- <link rel="modulepreload" crossorigin href="/assets/select-CVz0t7MF.js">
87
- <link rel="modulepreload" crossorigin href="/assets/dist-Cy7_j6hA.js">
88
- <link rel="modulepreload" crossorigin href="/assets/client-C-8fH7-c.js">
89
- <link rel="modulepreload" crossorigin href="/assets/infiniteQueryBehavior-CyER9hv0.js">
90
- <link rel="modulepreload" crossorigin href="/assets/app-query-client-9jNewezV.js">
91
- <link rel="modulepreload" crossorigin href="/assets/useMutation-CNcz2fgt.js">
92
- <link rel="modulepreload" crossorigin href="/assets/book-open-DzdUViDm.js">
93
- <link rel="modulepreload" crossorigin href="/assets/external-link-kZSAO8nT.js">
94
- <link rel="modulepreload" crossorigin href="/assets/plus-CG0QrVY_.js">
95
- <link rel="modulepreload" crossorigin href="/assets/search-BCAlB8nz.js">
96
- <link rel="modulepreload" crossorigin href="/assets/x-Czwxm82I.js">
97
- <link rel="modulepreload" crossorigin href="/assets/DocBrowserContext-BXydqby-.js">
98
- <link rel="modulepreload" crossorigin href="/assets/DocBrowser-DMfr0Oow.js">
99
- <link rel="modulepreload" crossorigin href="/assets/download-BD0ETkB-.js">
100
- <link rel="modulepreload" crossorigin href="/assets/refresh-cw-Bcv40SXy.js">
101
- <link rel="modulepreload" crossorigin href="/assets/config-CBScxsdV.js">
102
- <link rel="stylesheet" crossorigin href="/assets/index-mW8W2FUu.css">
81
+ <script type="module" crossorigin src="/assets/index-lr6rQUSd.js"></script>
82
+ <link rel="modulepreload" crossorigin href="/assets/i18n-DvzXOGQX.js">
83
+ <link rel="modulepreload" crossorigin href="/assets/chunk-JZWAC4HX-erTUn3b8.js">
84
+ <link rel="modulepreload" crossorigin href="/assets/dist-ZwoAXs46.js">
85
+ <link rel="modulepreload" crossorigin href="/assets/es2015-CEAreese.js">
86
+ <link rel="modulepreload" crossorigin href="/assets/createLucideIcon-CCiTGX8L.js">
87
+ <link rel="modulepreload" crossorigin href="/assets/select-BILPf7zs.js">
88
+ <link rel="modulepreload" crossorigin href="/assets/dist-Dd9cr-kz.js">
89
+ <link rel="modulepreload" crossorigin href="/assets/x-BHUGQIUv.js">
90
+ <link rel="modulepreload" crossorigin href="/assets/dialog-BghZFPch.js">
91
+ <link rel="modulepreload" crossorigin href="/assets/client-CszWMVKi.js">
92
+ <link rel="modulepreload" crossorigin href="/assets/useMutation-__AYv-Pz.js">
93
+ <link rel="modulepreload" crossorigin href="/assets/book-open-BE8M56IM.js">
94
+ <link rel="modulepreload" crossorigin href="/assets/external-link-qsnCMhw1.js">
95
+ <link rel="modulepreload" crossorigin href="/assets/plus-I9pBS4Fl.js">
96
+ <link rel="modulepreload" crossorigin href="/assets/search-DxmL3IWE.js">
97
+ <link rel="modulepreload" crossorigin href="/assets/DocBrowserContext-BUq3Wo8O.js">
98
+ <link rel="modulepreload" crossorigin href="/assets/DocBrowser-rDOjI3ga.js">
99
+ <link rel="modulepreload" crossorigin href="/assets/download-D7LOizcW.js">
100
+ <link rel="modulepreload" crossorigin href="/assets/key-round-BLe9D8ND.js">
101
+ <link rel="modulepreload" crossorigin href="/assets/refresh-cw-MNqgR3LZ.js">
102
+ <link rel="stylesheet" crossorigin href="/assets/index-DvVTC9FF.css">
103
103
  </head>
104
104
 
105
105
  <body>
@@ -0,0 +1,7 @@
1
+ {
2
+ "contractKind": "protocol",
3
+ "protocol": "frontend-l3",
4
+ "rootPolicy": "legacy-frozen",
5
+ "enforcement": "error",
6
+ "importAliasPrefixes": ["@/"]
7
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@nextclaw/ui",
3
- "version": "0.12.10",
3
+ "version": "0.12.11",
4
4
  "private": false,
5
5
  "type": "module",
6
6
  "license": "MIT",
@@ -28,10 +28,10 @@
28
28
  "tailwind-merge": "^2.5.4",
29
29
  "zod": "^3.23.8",
30
30
  "zustand": "^5.0.2",
31
- "@nextclaw/ncp": "0.5.3",
32
- "@nextclaw/ncp-http-agent-client": "0.3.15",
33
- "@nextclaw/ncp-react": "0.4.23",
34
- "@nextclaw/agent-chat-ui": "0.3.7",
31
+ "@nextclaw/agent-chat-ui": "0.3.8",
32
+ "@nextclaw/ncp": "0.5.4",
33
+ "@nextclaw/ncp-react": "0.4.24",
34
+ "@nextclaw/ncp-http-agent-client": "0.3.16",
35
35
  "@nextclaw/agent-chat": "0.1.10"
36
36
  },
37
37
  "devDependencies": {
package/src/api/config.ts CHANGED
@@ -6,6 +6,7 @@ import type {
6
6
  AuthSetupRequest,
7
7
  AuthStatusView,
8
8
  AppMetaView,
9
+ BootstrapStatusView,
9
10
  ConfigView,
10
11
  ConfigMetaView,
11
12
  ConfigSchemaResponse,
@@ -99,6 +100,15 @@ export async function fetchAppMeta(): Promise<AppMetaView> {
99
100
  return response.data;
100
101
  }
101
102
 
103
+ // GET /api/runtime/bootstrap-status
104
+ export async function fetchBootstrapStatus(): Promise<BootstrapStatusView> {
105
+ const response = await api.get<BootstrapStatusView>('/api/runtime/bootstrap-status');
106
+ if (!response.ok) {
107
+ throw new Error(response.error.message);
108
+ }
109
+ return response.data;
110
+ }
111
+
102
112
  // GET /api/config
103
113
  export async function fetchConfig(): Promise<ConfigView> {
104
114
  const response = await api.get<ConfigView>('/api/config');
@@ -1,5 +1,5 @@
1
1
  import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest';
2
- import { requestRawApiResponse } from './raw-client';
2
+ import { requestRawApiResponse } from './raw-client.utils';
3
3
 
4
4
  const fetchMock = vi.fn<typeof fetch>();
5
5
 
@@ -1,5 +1,6 @@
1
1
  import { API_BASE } from './api-base';
2
2
  import type { ApiResponse } from './types';
3
+ import { systemStatusManager } from '@/features/system-status';
3
4
 
4
5
  function compactSnippet(text: string) {
5
6
  return text.replace(/\s+/g, ' ').trim().slice(0, 200);
@@ -69,6 +70,7 @@ export async function requestRawApiResponse<T>(
69
70
  });
70
71
  } catch (error) {
71
72
  const formatted = formatUnknownFetchError(error);
73
+ systemStatusManager.reportTransportFailure(formatted.summary);
72
74
  return {
73
75
  ok: false,
74
76
  error: {
package/src/api/types.ts CHANGED
@@ -13,6 +13,46 @@ export type ApiResponse<T> =
13
13
 
14
14
  export type AppMetaView = { name: string; productVersion: string };
15
15
 
16
+ export type BootstrapPhase =
17
+ | 'kernel-starting'
18
+ | 'shell-ready'
19
+ | 'hydrating-capabilities'
20
+ | 'ready'
21
+ | 'error';
22
+
23
+ export type BootstrapStageState = 'pending' | 'running' | 'ready' | 'error';
24
+
25
+ export type BootstrapRemoteState = 'pending' | 'ready' | 'conflict' | 'disabled' | 'error';
26
+
27
+ export type BootstrapStatusView = {
28
+ phase: BootstrapPhase;
29
+ shellReadyAt?: string;
30
+ ncpAgent: {
31
+ state: BootstrapStageState;
32
+ startedAt?: string;
33
+ completedAt?: string;
34
+ error?: string;
35
+ };
36
+ pluginHydration: {
37
+ state: BootstrapStageState;
38
+ loadedPluginCount: number;
39
+ totalPluginCount: number;
40
+ startedAt?: string;
41
+ completedAt?: string;
42
+ error?: string;
43
+ };
44
+ channels: {
45
+ state: BootstrapStageState;
46
+ enabled: string[];
47
+ error?: string;
48
+ };
49
+ remote: {
50
+ state: BootstrapRemoteState;
51
+ message?: string;
52
+ };
53
+ lastError?: string;
54
+ };
55
+
16
56
  export type ThinkingLevel = "off" | "minimal" | "low" | "medium" | "high" | "adaptive" | "xhigh";
17
57
 
18
58
  export type ProviderConfigView = {
@@ -0,0 +1,20 @@
1
+ import { createContext, useContext, type ReactNode } from 'react';
2
+ import { appManager, type AppManager } from '@/app/managers/app.manager';
3
+
4
+ const AppManagerContext = createContext<AppManager | null>(null);
5
+
6
+ type AppManagerProviderProps = {
7
+ children: ReactNode;
8
+ };
9
+
10
+ export function AppManagerProvider({ children }: AppManagerProviderProps) {
11
+ return <AppManagerContext.Provider value={appManager}>{children}</AppManagerContext.Provider>;
12
+ }
13
+
14
+ export function useAppManager() {
15
+ const manager = useContext(AppManagerContext);
16
+ if (!manager) {
17
+ throw new Error('useAppManager must be used inside AppManagerProvider');
18
+ }
19
+ return manager;
20
+ }
@@ -0,0 +1,12 @@
1
+ import { AccountManager } from '@/features/account';
2
+ import { RemoteAccessManager } from '@/features/remote';
3
+
4
+ export class AppManager {
5
+ accountManager = new AccountManager();
6
+ remoteAccessManager = new RemoteAccessManager();
7
+ }
8
+
9
+ export const appManager = new AppManager();
10
+
11
+ appManager.accountManager.bindSignedInContinuation(appManager.remoteAccessManager.resumePendingActionAfterSignIn);
12
+ appManager.remoteAccessManager.bindAccountManager(appManager.accountManager);
package/src/app.tsx CHANGED
@@ -1,15 +1,16 @@
1
- import { lazy, Suspense } from "react";
1
+ import { lazy, Suspense, useEffect } from "react";
2
2
  import { QueryClientProvider } from "@tanstack/react-query";
3
- import { AccountPanel } from "@/account/components/account-panel";
4
3
  import { appQueryClient } from "@/app-query-client";
4
+ import { AppManagerProvider } from "@/app/components/app-manager-provider";
5
5
  import { LoginPage } from "@/components/auth/login-page";
6
6
  import { AppLayout } from "@/components/layout/AppLayout";
7
+ import { AccountPanel } from "@/features/account";
8
+ import { useSystemStatusSources } from "@/features/system-status";
7
9
  import {
8
10
  isTransientAuthStatusBootstrapError,
9
11
  useAuthStatus,
10
12
  } from "@/hooks/use-auth";
11
13
  import { useRealtimeQueryBridge } from "@/hooks/use-realtime-query-bridge";
12
- import { AppPresenterProvider } from "@/presenter/app-presenter-context";
13
14
  import {
14
15
  PwaInstallBanner,
15
16
  PwaUpdateBanner,
@@ -17,7 +18,6 @@ import {
17
18
  import { startNextClawPwa } from "@/pwa/register-pwa";
18
19
  import { Toaster } from "sonner";
19
20
  import { Routes, Route, Navigate } from "react-router-dom";
20
- import { useEffect } from "react";
21
21
 
22
22
  const ModelConfigPage = lazy(async () => ({
23
23
  default: (await import("@/components/config/ModelConfig")).ModelConfig,
@@ -51,8 +51,7 @@ const SecretsConfigPage = lazy(async () => ({
51
51
  default: (await import("@/components/config/SecretsConfig")).SecretsConfig,
52
52
  }));
53
53
  const RemoteAccessPage = lazy(async () => ({
54
- default: (await import("@/components/remote/remote-access-page"))
55
- .RemoteAccessPage,
54
+ default: (await import("@/features/remote")).RemoteAccessPage,
56
55
  }));
57
56
  const MarketplacePage = lazy(async () => ({
58
57
  default: (await import("@/components/marketplace/marketplace-page"))
@@ -224,14 +223,15 @@ function ProtectedRoutes() {
224
223
 
225
224
  function ProtectedApp() {
226
225
  useRealtimeQueryBridge(appQueryClient);
226
+ useSystemStatusSources();
227
227
 
228
228
  return (
229
- <AppPresenterProvider>
229
+ <AppManagerProvider>
230
230
  <AppLayout>
231
231
  <ProtectedRoutes />
232
232
  </AppLayout>
233
233
  <AccountPanel />
234
- </AppPresenterProvider>
234
+ </AppManagerProvider>
235
235
  );
236
236
  }
237
237
 
@@ -305,6 +305,16 @@ describe("ChatConversationPanel", () => {
305
305
  expect(screen.queryByText("No messages yet. Send one to start.")).toBeNull();
306
306
  });
307
307
 
308
+ it("does not render runtime lifecycle copy in the conversation alert strip", () => {
309
+ render(<ChatConversationPanel />);
310
+
311
+ expect(
312
+ screen.queryByText(
313
+ "聊天能力正在初始化。你可以先输入内容,完成后即可发送。",
314
+ ),
315
+ ).toBeNull();
316
+ });
317
+
308
318
  it("does not auto-open the child-session panel until the panel is explicitly opened", () => {
309
319
  useChatThreadStore.setState({
310
320
  snapshot: {
@@ -0,0 +1,92 @@
1
+ import { describe, expect, it } from 'vitest';
2
+ import {
3
+ hasNcpChatModelOptions,
4
+ isNcpChatComposerDisabled,
5
+ isNcpChatModelOptionsEmpty,
6
+ isNcpChatModelOptionsLoading,
7
+ isNcpChatSendDisabled,
8
+ } from '@/components/chat/chat-input/ncp-chat-input-availability.utils';
9
+ import type { ChatInputSnapshot } from '@/components/chat/stores/chat-input.store';
10
+
11
+ function createSnapshot(
12
+ overrides: Partial<ChatInputSnapshot> = {}
13
+ ): ChatInputSnapshot {
14
+ return {
15
+ isProviderStateResolved: false,
16
+ composerNodes: [],
17
+ attachments: [],
18
+ draft: '',
19
+ pendingSessionType: 'native',
20
+ pendingProjectRoot: null,
21
+ pendingProjectRootSessionKey: null,
22
+ defaultSessionType: 'native',
23
+ canStopGeneration: false,
24
+ stopDisabledReason: null,
25
+ sendError: null,
26
+ isSending: false,
27
+ modelOptions: [],
28
+ selectedModel: '',
29
+ selectedThinkingLevel: null,
30
+ sessionTypeOptions: [],
31
+ selectedSessionType: 'native',
32
+ stopSupported: false,
33
+ stopReason: undefined,
34
+ canEditSessionType: true,
35
+ sessionTypeUnavailable: false,
36
+ skillRecords: [],
37
+ isSkillsLoading: false,
38
+ selectedSkills: [],
39
+ ...overrides,
40
+ };
41
+ }
42
+
43
+ describe('ncp-chat-input-availability.utils', () => {
44
+ it('keeps the composer editable during cold start while send remains blocked', () => {
45
+ const snapshot = createSnapshot({
46
+ isProviderStateResolved: false,
47
+ modelOptions: [],
48
+ sessionTypeUnavailable: false,
49
+ });
50
+
51
+ expect(hasNcpChatModelOptions(snapshot)).toBe(false);
52
+ expect(isNcpChatModelOptionsLoading(snapshot)).toBe(true);
53
+ expect(isNcpChatComposerDisabled(snapshot)).toBe(false);
54
+ expect(
55
+ isNcpChatSendDisabled({
56
+ snapshot,
57
+ hasSendableDraft: true,
58
+ isRuntimeBlocked: true,
59
+ })
60
+ ).toBe(true);
61
+ });
62
+
63
+ it('marks model options as empty only after provider state resolves', () => {
64
+ const loadingSnapshot = createSnapshot({
65
+ isProviderStateResolved: false,
66
+ modelOptions: [],
67
+ });
68
+ const emptySnapshot = createSnapshot({
69
+ isProviderStateResolved: true,
70
+ modelOptions: [],
71
+ });
72
+
73
+ expect(isNcpChatModelOptionsEmpty(loadingSnapshot)).toBe(false);
74
+ expect(isNcpChatModelOptionsEmpty(emptySnapshot)).toBe(true);
75
+ });
76
+
77
+ it('disables both editing and sending when the session type is unavailable', () => {
78
+ const snapshot = createSnapshot({
79
+ isProviderStateResolved: true,
80
+ sessionTypeUnavailable: true,
81
+ });
82
+
83
+ expect(isNcpChatComposerDisabled(snapshot)).toBe(true);
84
+ expect(
85
+ isNcpChatSendDisabled({
86
+ snapshot,
87
+ hasSendableDraft: true,
88
+ isRuntimeBlocked: false,
89
+ })
90
+ ).toBe(true);
91
+ });
92
+ });