@nextclaw/ui 0.12.10 → 0.12.12

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 (543) hide show
  1. package/CHANGELOG.md +103 -10
  2. package/dist/assets/api-DnPN4SyA.js +15 -0
  3. package/dist/assets/app-manager-provider-M7TngYxx.js +1 -0
  4. package/dist/assets/app-navigation.config-B5YIdRju.js +1 -0
  5. package/dist/assets/{book-open-DzdUViDm.js → book-open-B4mOKdz8.js} +1 -1
  6. package/dist/assets/channels-list-page-Cm-Bbu6u.js +8 -0
  7. package/dist/assets/chat-C0ZNZtS3.js +58 -0
  8. package/dist/assets/chat-page-CGHNhXaw.js +1 -0
  9. package/dist/assets/chunk-JZWAC4HX-BJer-fqD.js +3 -0
  10. package/dist/assets/config-split-page-B3PRA_AV.js +1 -0
  11. package/dist/assets/{createLucideIcon-dy5ie7Ox.js → createLucideIcon-C_GFKVuW.js} +1 -1
  12. package/dist/assets/desktop-update-config-Dfh-3uma.js +1 -0
  13. package/dist/assets/dialog-D-I7ONHQ.js +5 -0
  14. package/dist/assets/{dist-Cy7_j6hA.js → dist-DreLBS93.js} +1 -1
  15. package/dist/assets/doc-browser-CoKIUCJj.js +1 -0
  16. package/dist/assets/doc-browser-CwgI7ipB.js +1 -0
  17. package/dist/assets/doc-browser-DYKpRqe-.js +1 -0
  18. package/dist/assets/doc-browser-context-Dib9sS83.js +1 -0
  19. package/dist/assets/es2015-DMSUl3fm.js +41 -0
  20. package/dist/assets/{external-link-kZSAO8nT.js → external-link-DP2IJ7AM.js} +1 -1
  21. package/dist/assets/folder-BPwc278w.js +1 -0
  22. package/dist/assets/{hash-BHJC2Ovu.js → hash-CvcvtMBq.js} +1 -1
  23. package/dist/assets/i18n-BnNAQpVM.js +1 -0
  24. package/dist/assets/index-Bc6c1kIx.js +2 -0
  25. package/dist/assets/index-mRmSAB-e.css +1 -0
  26. package/dist/assets/key-round-BQXmPSxD.js +1 -0
  27. package/dist/assets/loader-circle-C6gg2m2a.js +1 -0
  28. package/dist/assets/{LogoBadge-hO7tY7hE.js → logo-badge-uB4SwANR.js} +1 -1
  29. package/dist/assets/{logos-B7gRObP8.js → logos-BcELLmYh.js} +1 -1
  30. package/dist/assets/marketplace-page-BCrS-jH6.js +49 -0
  31. package/dist/assets/marketplace-page-DVrlpB68.js +1 -0
  32. package/dist/assets/mcp-marketplace-page-CjrxT6wI.js +40 -0
  33. package/dist/assets/mcp-marketplace-page-pQ_A38fH.js +1 -0
  34. package/dist/assets/message-square-CLVODA23.js +1 -0
  35. package/dist/assets/model-config-D4myteLK.js +1 -0
  36. package/dist/assets/notice-card-DX_NEZTQ.js +1 -0
  37. package/dist/assets/play-DeNVUA5C.js +1 -0
  38. package/dist/assets/plus-BptLViq1.js +1 -0
  39. package/dist/assets/popover-Dm_NQ3Cs.js +1 -0
  40. package/dist/assets/provider-scoped-model-input-BLHImwI5.js +1 -0
  41. package/dist/assets/providers-list-DsBFslNi.js +1 -0
  42. package/dist/assets/{refresh-ccw-COVhNHtN.js → refresh-ccw-CeG203yU.js} +1 -1
  43. package/dist/assets/remote-CQQykOYe.js +1 -0
  44. package/dist/assets/{rotate-cw-oHMKJMC8.js → rotate-cw-F7aThvYj.js} +1 -1
  45. package/dist/assets/runtime-config-page-Bz9r68Rf.js +1 -0
  46. package/dist/assets/{save-EqJPOF0G.js → save-7ztImRj7.js} +1 -1
  47. package/dist/assets/search-DZSNKEGp.js +1 -0
  48. package/dist/assets/search-config-C-6KpgRQ.js +1 -0
  49. package/dist/assets/secrets-config-MiMElvpm.js +3 -0
  50. package/dist/assets/select-RgeHgn_-.js +1 -0
  51. package/dist/assets/sessions-config-page-0KNW9QC_.js +2 -0
  52. package/dist/assets/setting-row-vwm4XKv2.js +1 -0
  53. package/dist/assets/settings-DjvNMJde.js +1 -0
  54. package/dist/assets/skeleton-5Mg6vZHN.js +1 -0
  55. package/dist/assets/sparkles-CyDTgTM4.js +1 -0
  56. package/dist/assets/{status-dot-DpPtVzQT.js → status-dot-aQU9Mia4.js} +1 -1
  57. package/dist/assets/{tabs-custom-YcZUWn3o.js → tabs-custom-C4P7g4vR.js} +1 -1
  58. package/dist/assets/tag-chip-DGqz3TON.js +1 -0
  59. package/dist/assets/theme-provider-CUppbOyN.js +1 -0
  60. package/dist/assets/tooltip-DQlSKhZ_.js +1 -0
  61. package/dist/assets/{trash-2-mJT6oWa2.js → trash-2-C1cdqL6V.js} +1 -1
  62. package/dist/assets/use-config-CrsavfWZ.js +1 -0
  63. package/dist/assets/use-confirm-dialog-D1AnLFlc.js +1 -0
  64. package/dist/assets/use-infinite-scroll-loader-DZhv-rmv.js +1 -0
  65. package/dist/assets/use-viewport-layout-CytJAPWM.js +1 -0
  66. package/dist/assets/x-BjMO7v8q.js +1 -0
  67. package/dist/index.html +39 -22
  68. package/module-structure.config.json +7 -0
  69. package/package.json +5 -5
  70. package/src/app/components/app-manager-provider.tsx +20 -0
  71. package/src/{components/providers/I18nProvider.tsx → app/components/i18n-provider.tsx} +1 -1
  72. package/src/{components → app/components}/layout/app-layout.test.tsx +50 -3
  73. package/src/app/components/layout/app-layout.tsx +54 -0
  74. package/src/{components → app/components}/layout/page-layout.tsx +1 -1
  75. package/src/app/components/layout/runtime-status-entry.test.tsx +101 -0
  76. package/src/app/components/layout/runtime-status-entry.tsx +95 -0
  77. package/src/app/components/layout/settings-entry-page.test.tsx +65 -0
  78. package/src/app/components/layout/settings-entry-page.tsx +13 -0
  79. package/src/{components → app/components}/layout/sidebar-items.tsx +2 -2
  80. package/src/{components → app/components}/layout/sidebar.layout.test.tsx +19 -12
  81. package/src/{components/layout/Sidebar.tsx → app/components/layout/sidebar.tsx} +25 -89
  82. package/src/{components/providers/ThemeProvider.tsx → app/components/theme-provider.tsx} +2 -2
  83. package/src/app/configs/app-navigation.config.ts +246 -0
  84. package/src/{hooks → app/hooks}/use-realtime-query-bridge.ts +36 -20
  85. package/src/app/hooks/use-viewport-layout.ts +15 -0
  86. package/src/app/index.tsx +261 -0
  87. package/src/app/managers/app.manager.ts +12 -0
  88. package/src/app/managers/viewport-layout.manager.ts +73 -0
  89. package/src/app/stores/viewport-layout.store.ts +32 -0
  90. package/src/{test/setup.ts → app/test/vitest-setup.ts} +3 -3
  91. package/src/{account → features/account}/components/account-panel.tsx +19 -19
  92. package/src/{components/auth → features/account/components}/login-page.tsx +4 -4
  93. package/src/{hooks → features/account/hooks}/use-auth.test.ts +1 -1
  94. package/src/{hooks → features/account/hooks}/use-auth.ts +3 -3
  95. package/src/features/account/index.ts +7 -0
  96. package/src/{account → features/account}/managers/account.manager.ts +6 -6
  97. package/src/{components/agents → features/agents/components}/agent-dialogs.tsx +11 -11
  98. package/src/{components/agents → features/agents/components}/agents-page.test.tsx +12 -9
  99. package/src/{components/agents → features/agents/components}/agents-page.tsx +17 -17
  100. package/src/features/agents/index.ts +1 -0
  101. package/src/{components/config → features/channels/components}/channel-form-fields-section.tsx +11 -32
  102. package/src/{components/config/ChannelForm.test.tsx → features/channels/components/config/channel-form.test.tsx} +4 -4
  103. package/src/features/channels/components/config/channel-form.tsx +382 -0
  104. package/src/{components → features/channels/components}/config/weixin-channel-auth-section.test.tsx +6 -3
  105. package/src/features/channels/components/config/weixin-channel-auth-section.tsx +245 -0
  106. package/src/{hooks → features/channels/hooks}/use-channel-auth.ts +1 -1
  107. package/src/features/channels/index.ts +5 -0
  108. package/src/features/channels/pages/channels-list-page.test.tsx +288 -0
  109. package/src/{components/config/ChannelsList.tsx → features/channels/pages/channels-list-page.tsx} +57 -83
  110. package/src/{components/config/channel-form-fields.test.ts → features/channels/utils/channel-form-fields.utils.test.ts} +1 -1
  111. package/src/{components/config/channel-form-fields.ts → features/channels/utils/channel-form-fields.utils.ts} +1 -1
  112. package/src/{lib/channel-tutorials.ts → features/channels/utils/channel-tutorials.utils.ts} +2 -2
  113. package/src/{components/chat → features/chat/components}/chat-session-type-option-item.test.tsx +1 -1
  114. package/src/{components/chat → features/chat/components}/chat-session-type-option-item.tsx +4 -4
  115. package/src/{components/chat → features/chat/components}/chat-session-workspace-file-preview.test.tsx +4 -4
  116. package/src/{components/chat → features/chat/components}/chat-session-workspace-file-preview.tsx +12 -32
  117. package/src/{components/chat → features/chat/components}/chat-session-workspace-panel-nav.tsx +8 -20
  118. package/src/{components/chat → features/chat/components}/chat-session-workspace-panel.tsx +105 -65
  119. package/src/features/chat/components/chat-sidebar-list-mode-switch.tsx +28 -0
  120. package/src/{components/chat → features/chat/components}/chat-sidebar-project-groups.tsx +6 -6
  121. package/src/{components/chat → features/chat/components}/chat-sidebar-session-item.tsx +10 -10
  122. package/src/{components/chat/ChatWelcome.test.tsx → features/chat/components/chat-welcome.test.tsx} +1 -1
  123. package/src/{components/chat/ChatWelcome.tsx → features/chat/components/chat-welcome.tsx} +5 -10
  124. package/src/features/chat/components/config/sessions-config-detail-pane.tsx +244 -0
  125. package/src/{components/chat → features/chat/components/conversation}/chat-attachment-upload-limit.test.ts +1 -4
  126. package/src/features/chat/components/conversation/chat-conversation-header.tsx +146 -0
  127. package/src/{components/chat → features/chat/components/conversation}/chat-conversation-panel.test.tsx +41 -19
  128. package/src/{components/chat → features/chat/components/conversation}/chat-conversation-panel.tsx +28 -140
  129. package/src/{components/chat/containers → features/chat/components/conversation}/chat-input-bar.container.tsx +137 -128
  130. package/src/{components/chat/containers → features/chat/components/conversation}/chat-message-list.container.test.tsx +2 -2
  131. package/src/{components/chat/containers → features/chat/components/conversation}/chat-message-list.container.tsx +6 -6
  132. package/src/{components/chat → features/chat/components/conversation}/session-header/chat-session-header-actions.test.tsx +3 -3
  133. package/src/{components/chat → features/chat/components/conversation}/session-header/chat-session-header-actions.tsx +6 -6
  134. package/src/{components/chat → features/chat/components/conversation}/session-header/chat-session-header-menu-item.tsx +1 -1
  135. package/src/{components/chat → features/chat/components/conversation}/session-header/chat-session-project-badge.test.tsx +3 -3
  136. package/src/{components/chat → features/chat/components/conversation}/session-header/chat-session-project-badge.tsx +5 -5
  137. package/src/{components/chat → features/chat/components/conversation}/session-header/chat-session-project-dialog.tsx +2 -2
  138. package/src/features/chat/components/layout/chat-page-shell.test.tsx +61 -0
  139. package/src/{components/chat → features/chat/components/layout}/chat-page-shell.tsx +14 -17
  140. package/src/features/chat/components/layout/chat-sidebar-session-entry.tsx +82 -0
  141. package/src/features/chat/components/layout/chat-sidebar-toolbar.tsx +205 -0
  142. package/src/{components/chat/ChatSidebar.test.tsx → features/chat/components/layout/chat-sidebar.test.tsx} +59 -16
  143. package/src/features/chat/components/layout/chat-sidebar.tsx +415 -0
  144. package/src/{components/chat/presenter/chat-presenter-context.tsx → features/chat/components/providers/chat-presenter.provider.tsx} +10 -31
  145. package/src/{components/common → features/chat/components/session}/session-context-icon.tsx +5 -5
  146. package/src/{components/common/SessionRunBadge.tsx → features/chat/components/session/session-run-badge.tsx} +3 -3
  147. package/src/{components/chat → features/chat/components}/workspace/chat-session-workspace-file-breadcrumbs.tsx +5 -15
  148. package/src/{components/chat/chat-input/chat-input-bar.controller.test.tsx → features/chat/hooks/use-chat-input-bar-controller.test.tsx} +1 -1
  149. package/src/{components → features}/chat/hooks/use-chat-session-label.ts +3 -4
  150. package/src/{components → features}/chat/hooks/use-chat-session-project.test.tsx +19 -19
  151. package/src/features/chat/hooks/use-chat-session-project.ts +34 -0
  152. package/src/{components/chat/useChatSessionTypeState.test.tsx → features/chat/hooks/use-chat-session-type-state.test.tsx} +2 -2
  153. package/src/{components/chat/useChatSessionTypeState.ts → features/chat/hooks/use-chat-session-type-state.ts} +3 -16
  154. package/src/{components → features}/chat/hooks/use-chat-session-update.test.tsx +19 -21
  155. package/src/{components → features}/chat/hooks/use-chat-session-update.ts +5 -7
  156. package/src/features/chat/hooks/use-chat-sidebar-session-label-editor.ts +49 -0
  157. package/src/{components/chat/useHydratedNcpAgent.test.tsx → features/chat/hooks/use-hydrated-ncp-agent.test.tsx} +2 -2
  158. package/src/{components/chat/useNcpAgentRuntime.test.tsx → features/chat/hooks/use-ncp-agent-runtime.test.tsx} +1 -1
  159. package/src/{components/chat/ncp/page/ncp-chat-derived-state.ts → features/chat/hooks/use-ncp-chat-derived-state.ts} +8 -8
  160. package/src/{components/chat/ncp/ncp-chat-page-data.ts → features/chat/hooks/use-ncp-chat-page-data.ts} +137 -80
  161. package/src/{hooks → features/chat/hooks}/use-ncp-chat-session-types.ts +1 -1
  162. package/src/{components/chat/ncp/session-conversation → features/chat/hooks}/use-ncp-child-session-tabs-view.ts +7 -7
  163. package/src/{components/chat/ncp/session-conversation → features/chat/hooks}/use-ncp-session-conversation.test.tsx +55 -7
  164. package/src/features/chat/hooks/use-ncp-session-conversation.ts +121 -0
  165. package/src/{components/chat/ncp → features/chat/hooks}/use-ncp-session-list-view.ts +6 -6
  166. package/src/features/chat/index.ts +6 -0
  167. package/src/{components/chat → features/chat/managers}/chat-recent-models.manager.ts +1 -1
  168. package/src/{components/chat → features/chat/managers}/chat-recent-skills.manager.ts +1 -1
  169. package/src/{components → features}/chat/managers/chat-session-list.manager.test.ts +11 -7
  170. package/src/{components → features}/chat/managers/chat-session-list.manager.ts +8 -10
  171. package/src/{components/chat/chat-session-preference-sync.test.ts → features/chat/managers/chat-session-preference-sync.manager.test.ts} +18 -14
  172. package/src/{components/chat/chat-session-preference-sync.ts → features/chat/managers/chat-session-preference-sync.manager.ts} +7 -14
  173. package/src/{components → features}/chat/managers/chat-stream-actions.manager.ts +3 -2
  174. package/src/{components → features}/chat/managers/chat-ui.manager.ts +11 -3
  175. package/src/{components/chat/ncp/tests → features/chat/managers}/ncp-chat-input.manager.test.ts +55 -5
  176. package/src/{components/chat/ncp → features/chat/managers}/ncp-chat-input.manager.ts +28 -20
  177. package/src/{components/chat/ncp/ncp-chat.presenter.ts → features/chat/managers/ncp-chat-presenter.manager.ts} +5 -5
  178. package/src/{components/chat/ncp/tests → features/chat/managers}/ncp-chat-thread.manager.test.ts +11 -10
  179. package/src/{components/chat/ncp → features/chat/managers}/ncp-chat-thread.manager.ts +11 -13
  180. package/src/{lib → features/chat/managers}/recent-selection.manager.test.ts +1 -1
  181. package/src/{lib → features/chat/managers}/recent-selection.manager.ts +14 -14
  182. package/src/features/chat/pages/chat-page.tsx +6 -0
  183. package/src/{components/chat/chat-page-runtime.test.ts → features/chat/pages/ncp-chat-page.test.ts} +69 -4
  184. package/src/{components/chat/ncp → features/chat/pages}/ncp-chat-page.tsx +180 -109
  185. package/src/features/chat/pages/sessions-config-page.test.tsx +152 -0
  186. package/src/features/chat/pages/sessions-config-page.tsx +192 -0
  187. package/src/{components → features}/chat/stores/chat-input.store.ts +3 -3
  188. package/src/{components → features}/chat/stores/chat-session-list.store.ts +2 -4
  189. package/src/{components → features}/chat/stores/chat-thread.store.ts +3 -3
  190. package/src/features/chat/types/chat-input-bar.types.ts +44 -0
  191. package/src/{components/chat → features/chat/types}/chat-input.types.ts +1 -1
  192. package/src/features/chat/types/chat-message.types.ts +58 -0
  193. package/src/{components/chat/chat-stream/types.ts → features/chat/types/chat-stream.types.ts} +1 -1
  194. package/src/{components/chat/chat-composer-state.test.ts → features/chat/utils/chat-composer-state.utils.test.ts} +1 -1
  195. package/src/{components/chat/chat-composer-state.ts → features/chat/utils/chat-composer-state.utils.ts} +17 -19
  196. package/src/features/chat/utils/chat-inline-token.utils.test.ts +87 -0
  197. package/src/{components/chat → features/chat/utils}/chat-inline-token.utils.ts +22 -39
  198. package/src/{components/chat/adapters/chat-input-bar.adapter.test.ts → features/chat/utils/chat-input-bar.utils.test.ts} +2 -2
  199. package/src/{components/chat/adapters/chat-input-bar.adapter.ts → features/chat/utils/chat-input-bar.utils.ts} +18 -196
  200. package/src/features/chat/utils/chat-input-toolbar.utils.ts +191 -0
  201. package/src/{lib/chat-message.ts → features/chat/utils/chat-message-core.utils.ts} +1 -1
  202. package/src/{components/chat/adapters/chat-message-inline-content.adapter.ts → features/chat/utils/chat-message-inline-content.utils.ts} +2 -2
  203. package/src/features/chat/utils/chat-message-part.utils.ts +233 -0
  204. package/src/{components/chat/adapters/chat-message.session-request-tool-card.ts → features/chat/utils/chat-message-session-request-tool-card.utils.ts} +2 -2
  205. package/src/{components/chat/adapters/chat-message.session-spawn-tool-card.test.ts → features/chat/utils/chat-message-session-spawn-tool-card.utils.test.ts} +2 -2
  206. package/src/{components/chat/adapters/chat-message.summary-truncation.test.ts → features/chat/utils/chat-message-summary-truncation.utils.test.ts} +2 -2
  207. package/src/{components/chat/adapters/chat-message-tool-agent-id.test.ts → features/chat/utils/chat-message-tool-agent-id.utils.test.ts} +1 -1
  208. package/src/features/chat/utils/chat-message-tool-card.utils.ts +216 -0
  209. package/src/{components/chat/adapters/chat-message.adapter.test.ts → features/chat/utils/chat-message.utils.test.ts} +2 -2
  210. package/src/{components/chat/adapters/chat-message.adapter.ts → features/chat/utils/chat-message.utils.ts} +4 -4
  211. package/src/features/chat/utils/chat-runtime.utils.ts +235 -0
  212. package/src/{components/chat/chat-session-display.test.ts → features/chat/utils/chat-session-display.utils.test.ts} +2 -2
  213. package/src/{components/chat/chat-session-display.ts → features/chat/utils/chat-session-display.utils.ts} +5 -9
  214. package/src/{components/chat/chat-session-preference-governance.ts → features/chat/utils/chat-session-preference-governance.utils.ts} +51 -64
  215. package/src/{components/chat/chat-session-route.ts → features/chat/utils/chat-session-route.utils.ts} +1 -1
  216. package/src/{components/chat/adapters/file-operation/card.ts → features/chat/utils/file-operation/card.utils.ts} +3 -3
  217. package/src/{components/chat/adapters/file-operation/diff.ts → features/chat/utils/file-operation/diff.utils.ts} +9 -99
  218. package/src/features/chat/utils/file-operation/parsed-block.utils.ts +98 -0
  219. package/src/{components/chat/adapters/file-operation/record-readers.ts → features/chat/utils/file-operation/record-readers.utils.ts} +1 -1
  220. package/src/{components/chat/ncp/ncp-app-client-fetch.test.ts → features/chat/utils/ncp-app-client-fetch.utils.test.ts} +1 -1
  221. package/src/{components/chat/ncp/ncp-app-client-fetch.ts → features/chat/utils/ncp-app-client-fetch.utils.ts} +3 -0
  222. package/src/features/chat/utils/ncp-chat-input-availability.utils.test.ts +92 -0
  223. package/src/features/chat/utils/ncp-chat-input-availability.utils.ts +45 -0
  224. package/src/{components/chat/ncp/__tests__/ncp-session-adapter.cancelled-tool.test.ts → features/chat/utils/ncp-session-adapter.utils.cancelled-tool.test.ts} +2 -2
  225. package/src/{components/chat/ncp/ncp-session-adapter.test.ts → features/chat/utils/ncp-session-adapter.utils.test.ts} +3 -3
  226. package/src/{components/chat/ncp/ncp-session-adapter.ts → features/chat/utils/ncp-session-adapter.utils.ts} +3 -3
  227. package/src/{lib → features/chat/utils}/session-context.utils.test.ts +3 -3
  228. package/src/{lib → features/chat/utils}/session-context.utils.ts +3 -3
  229. package/src/{components/marketplace → features/marketplace/components}/marketplace-list-card.tsx +69 -124
  230. package/src/{components/marketplace → features/marketplace/components}/marketplace-localization.ts +1 -1
  231. package/src/{components/marketplace → features/marketplace/components}/marketplace-page-data.ts +2 -2
  232. package/src/features/marketplace/components/marketplace-page-detail.test.tsx +336 -0
  233. package/src/features/marketplace/components/marketplace-page-parts.tsx +121 -0
  234. package/src/{components/marketplace → features/marketplace/components}/marketplace-page.test.tsx +6 -6
  235. package/src/{components/marketplace → features/marketplace/components}/marketplace-page.tsx +92 -91
  236. package/src/{components/marketplace → features/marketplace/components}/mcp/mcp-marketplace-card.tsx +4 -4
  237. package/src/{components/marketplace → features/marketplace/components}/mcp/mcp-marketplace-dialogs.tsx +7 -7
  238. package/src/{components/marketplace → features/marketplace/components}/mcp/mcp-marketplace-doc.ts +3 -3
  239. package/src/{components/marketplace → features/marketplace/components}/mcp/mcp-marketplace-page.test.tsx +13 -9
  240. package/src/features/marketplace/components/mcp/mcp-marketplace-page.tsx +446 -0
  241. package/src/{hooks/useMarketplace.ts → features/marketplace/hooks/use-marketplace.ts} +5 -5
  242. package/src/{hooks/useMcpMarketplace.ts → features/marketplace/hooks/use-mcp-marketplace.ts} +3 -3
  243. package/src/features/marketplace/index.ts +26 -0
  244. package/src/{components/marketplace/marketplace-installed-cache.test.ts → features/marketplace/utils/marketplace-installed-cache.utils.test.ts} +2 -2
  245. package/src/{components/marketplace/marketplace-installed-cache.ts → features/marketplace/utils/marketplace-installed-cache.utils.ts} +1 -1
  246. package/src/{hooks/marketplace-list-pages.ts → features/marketplace/utils/marketplace-list-pages.utils.ts} +1 -1
  247. package/src/{pwa → features/pwa}/components/pwa-install-entry.test.tsx +2 -2
  248. package/src/{pwa → features/pwa}/components/pwa-install-entry.tsx +7 -7
  249. package/src/features/pwa/index.ts +4 -0
  250. package/src/{pwa/register-pwa.ts → features/pwa/managers/pwa-bootstrap.manager.ts} +2 -2
  251. package/src/{pwa → features/pwa}/managers/pwa-install.manager.test.ts +3 -3
  252. package/src/{pwa → features/pwa}/managers/pwa-install.manager.ts +5 -5
  253. package/src/{pwa → features/pwa}/managers/pwa-runtime.manager.ts +1 -1
  254. package/src/{pwa → features/pwa}/managers/pwa-shell-theme.manager.test.ts +1 -1
  255. package/src/{pwa → features/pwa}/managers/pwa-shell-theme.manager.ts +1 -1
  256. package/src/{pwa → features/pwa}/stores/pwa.store.ts +2 -2
  257. package/src/{components/remote → features/remote/components}/remote-access-page.test.tsx +5 -6
  258. package/src/{components/remote → features/remote/components}/remote-access-page.tsx +21 -19
  259. package/src/{hooks/useRemoteAccess.ts → features/remote/hooks/use-remote-access.ts} +3 -3
  260. package/src/features/remote/index.ts +27 -0
  261. package/src/{remote → features/remote}/managers/remote-access.manager.ts +6 -7
  262. package/src/{remote → features/remote/services}/remote-access-feedback.service.test.ts +3 -3
  263. package/src/{remote → features/remote/services}/remote-access-feedback.service.ts +2 -2
  264. package/src/{remote/remote-access.query.ts → features/remote/services/remote-access-query.service.ts} +2 -2
  265. package/src/{remote → features/remote}/stores/remote-access.store.ts +1 -1
  266. package/src/features/settings/hooks/use-language-preference.ts +30 -0
  267. package/src/features/settings/index.ts +2 -0
  268. package/src/features/settings/pages/language-settings-page.test.tsx +36 -0
  269. package/src/features/settings/pages/language-settings-page.tsx +56 -0
  270. package/src/features/system-status/components/config/runtime-agent-list-card.tsx +72 -0
  271. package/src/features/system-status/components/config/runtime-binding-list-card.tsx +85 -0
  272. package/src/features/system-status/components/config/runtime-config-editor.tsx +131 -0
  273. package/src/features/system-status/components/config/runtime-config-overview.tsx +16 -0
  274. package/src/features/system-status/components/config/runtime-entry-list-card.tsx +58 -0
  275. package/src/features/system-status/components/config/runtime-settings-card.tsx +73 -0
  276. package/src/{components/config → features/system-status/components}/desktop-update-config.test.tsx +12 -6
  277. package/src/features/system-status/components/desktop-update-config.tsx +219 -0
  278. package/src/features/system-status/components/runtime-control-card.test.tsx +213 -0
  279. package/src/features/system-status/components/runtime-control-card.tsx +260 -0
  280. package/src/{components/config → features/system-status/components}/runtime-presence-card.test.tsx +12 -16
  281. package/src/{components/config → features/system-status/components}/runtime-presence-card.tsx +38 -51
  282. package/src/features/system-status/components/runtime-security-card.tsx +263 -0
  283. package/src/{components/config → features/system-status/components}/security-config.tsx +3 -3
  284. package/src/features/system-status/hooks/use-system-status.ts +104 -0
  285. package/src/features/system-status/index.ts +4 -0
  286. package/src/features/system-status/managers/system-status.manager.bootstrap-polling.test.ts +126 -0
  287. package/src/features/system-status/managers/system-status.manager.test.ts +142 -0
  288. package/src/features/system-status/managers/system-status.manager.ts +511 -0
  289. package/src/features/system-status/pages/runtime-config-page.test.tsx +140 -0
  290. package/src/features/system-status/pages/runtime-config-page.tsx +15 -0
  291. package/src/features/system-status/stores/system-status.store.ts +32 -0
  292. package/src/features/system-status/types/system-status.types.ts +73 -0
  293. package/src/features/system-status/utils/runtime-config-agent.utils.ts +152 -0
  294. package/src/features/system-status/utils/system-status.utils.test.ts +132 -0
  295. package/src/features/system-status/utils/system-status.utils.ts +202 -0
  296. package/src/index.css +1 -1
  297. package/src/platforms/desktop/components/desktop-app-shell.tsx +52 -0
  298. package/src/platforms/desktop/index.ts +21 -0
  299. package/src/{desktop → platforms/desktop}/managers/desktop-presence.manager.ts +3 -3
  300. package/src/{desktop → platforms/desktop}/managers/desktop-update.manager.ts +3 -3
  301. package/src/{desktop → platforms/desktop}/stores/desktop-presence.store.ts +1 -1
  302. package/src/{desktop → platforms/desktop}/stores/desktop-update.store.ts +1 -1
  303. package/src/{desktop → platforms/desktop/types}/desktop-update.types.ts +4 -0
  304. package/src/platforms/mobile/components/chat-mobile-shell.tsx +20 -0
  305. package/src/platforms/mobile/components/mobile-app-shell.test.tsx +42 -0
  306. package/src/platforms/mobile/components/mobile-app-shell.tsx +48 -0
  307. package/src/platforms/mobile/components/mobile-bottom-nav.test.tsx +45 -0
  308. package/src/platforms/mobile/components/mobile-bottom-nav.tsx +71 -0
  309. package/src/platforms/mobile/components/mobile-settings-shell.tsx +39 -0
  310. package/src/platforms/mobile/components/mobile-topbar.tsx +41 -0
  311. package/src/platforms/mobile/index.ts +3 -0
  312. package/src/shared/components/__tests__/config-split-page.test.tsx +47 -0
  313. package/src/{components/common/AgentAvatar.tsx → shared/components/common/agent-avatar.tsx} +1 -1
  314. package/src/{components → shared/components}/common/agent-identity/agent-identity-avatar.tsx +2 -2
  315. package/src/shared/components/common/agent-identity/index.ts +3 -0
  316. package/src/{components → shared/components}/common/agent-identity/use-agent-identity.ts +3 -3
  317. package/src/{components/common/BrandHeader.tsx → shared/components/common/brand-header.tsx} +2 -2
  318. package/src/{components/common/KeyValueEditor.tsx → shared/components/common/key-value-editor.tsx} +4 -4
  319. package/src/{components/common/LogoBadge.tsx → shared/components/common/logo-badge.tsx} +1 -1
  320. package/src/{components/common/MaskedInput.tsx → shared/components/common/masked-input.tsx} +3 -3
  321. package/src/{components/common/ProviderScopedModelInput.tsx → shared/components/common/provider-scoped-model-input.tsx} +6 -6
  322. package/src/{components/common/SearchableModelInput.tsx → shared/components/common/searchable-model-input.tsx} +2 -2
  323. package/src/{components/common/StatusBadge.tsx → shared/components/common/status-badge.tsx} +3 -3
  324. package/src/{components → shared/components}/common/tag-input.tsx +3 -3
  325. package/src/{components → shared/components}/config/provider-form-support.ts +3 -3
  326. package/src/{components/config/ProviderForm.tsx → shared/components/config/provider-form.tsx} +14 -14
  327. package/src/{components → shared/components}/config/provider-models-section.tsx +7 -7
  328. package/src/{components → shared/components}/config/providers-list.test.tsx +19 -19
  329. package/src/{components/config/ProvidersList.tsx → shared/components/config/providers-list.tsx} +56 -54
  330. package/src/shared/components/config/secrets-config-form.tsx +407 -0
  331. package/src/shared/components/config/secrets-config.test.tsx +90 -0
  332. package/src/shared/components/config/secrets-config.tsx +25 -0
  333. package/src/{components/config → shared/components}/config-split-page.tsx +55 -9
  334. package/src/{components/config/CronConfig.tsx → shared/components/cron-config.tsx} +63 -96
  335. package/src/shared/components/doc-browser/doc-browser-context.test.tsx +102 -0
  336. package/src/{components/doc-browser/DocBrowserContext.tsx → shared/components/doc-browser/doc-browser-context.tsx} +98 -45
  337. package/src/shared/components/doc-browser/doc-browser.test.tsx +72 -0
  338. package/src/{components/doc-browser/DocBrowser.tsx → shared/components/doc-browser/doc-browser.tsx} +60 -34
  339. package/src/shared/components/doc-browser/index.ts +3 -0
  340. package/src/{components/doc-browser/useDocLinkInterceptor.ts → shared/components/doc-browser/use-doc-link-interceptor.ts} +1 -1
  341. package/src/{components/config/ModelConfig.test.tsx → shared/components/model-config.test.tsx} +4 -4
  342. package/src/shared/components/model-config.tsx +151 -0
  343. package/src/{components → shared/components}/path-picker/server-path-picker-dialog.test.tsx +3 -3
  344. package/src/{components → shared/components}/path-picker/server-path-picker-dialog.tsx +7 -7
  345. package/src/{components/config → shared/components}/provider-advanced-settings-section.tsx +5 -18
  346. package/src/{components/config → shared/components}/provider-auth-section.tsx +7 -24
  347. package/src/{components/config → shared/components}/provider-enabled-field.tsx +4 -8
  348. package/src/{components/config → shared/components}/provider-pill-selector.tsx +3 -15
  349. package/src/{components/config → shared/components}/provider-status-badge.tsx +3 -9
  350. package/src/{components/config/SearchConfig.test.tsx → shared/components/search-config.test.tsx} +3 -3
  351. package/src/shared/components/search-config.tsx +496 -0
  352. package/src/{components → shared/components}/ui/action-link.tsx +1 -1
  353. package/src/{components → shared/components}/ui/button.tsx +1 -1
  354. package/src/{components → shared/components}/ui/card.tsx +1 -1
  355. package/src/{components → shared/components}/ui/config-card.tsx +1 -1
  356. package/src/{components → shared/components}/ui/confirm-dialog.tsx +3 -3
  357. package/src/{components → shared/components}/ui/dialog.tsx +1 -1
  358. package/src/{components/ui/HighlightCard.tsx → shared/components/ui/highlight-card.tsx} +1 -1
  359. package/src/{components → shared/components}/ui/input.tsx +1 -1
  360. package/src/{components → shared/components}/ui/label.tsx +1 -1
  361. package/src/{components → shared/components}/ui/notice-card.tsx +1 -1
  362. package/src/{components → shared/components}/ui/popover.tsx +1 -1
  363. package/src/{components → shared/components}/ui/scroll-area.tsx +1 -1
  364. package/src/{components → shared/components}/ui/select.tsx +1 -1
  365. package/src/{components → shared/components}/ui/setting-row.tsx +1 -1
  366. package/src/{components → shared/components}/ui/skeleton.tsx +1 -1
  367. package/src/{components → shared/components}/ui/status-dot.tsx +1 -1
  368. package/src/{components → shared/components}/ui/switch.tsx +1 -1
  369. package/src/{components → shared/components}/ui/tabs-custom.tsx +2 -2
  370. package/src/{components → shared/components}/ui/tabs.tsx +1 -1
  371. package/src/{components → shared/components}/ui/tag-chip.tsx +1 -1
  372. package/src/{components → shared/components}/ui/textarea.tsx +1 -1
  373. package/src/{components → shared/components}/ui/tooltip.tsx +1 -1
  374. package/src/{hooks/agents/useAgents.ts → shared/hooks/use-agents.ts} +2 -2
  375. package/src/{hooks/useConfig.ts → shared/hooks/use-config.ts} +4 -4
  376. package/src/{hooks/useConfirmDialog.tsx → shared/hooks/use-confirm-dialog.tsx} +2 -2
  377. package/src/{hooks/server-path → shared/hooks}/use-server-path-browse.ts +1 -1
  378. package/src/{hooks/server-path → shared/hooks}/use-server-path-read.ts +1 -1
  379. package/src/{api → shared/lib/api}/api-base.test.ts +2 -2
  380. package/src/{api → shared/lib/api}/client.test.ts +2 -2
  381. package/src/{api → shared/lib/api}/client.ts +1 -1
  382. package/src/{api → shared/lib/api}/config.ts +10 -0
  383. package/src/shared/lib/api/index.ts +20 -0
  384. package/src/{api → shared/lib/api}/ncp-session-query-cache.test.ts +2 -2
  385. package/src/{api → shared/lib/api}/ncp-session-query-cache.ts +1 -1
  386. package/src/{api → shared/lib/api}/ncp-session.test.ts +3 -3
  387. package/src/{api → shared/lib/api}/raw-client.test.ts +1 -1
  388. package/src/{api/raw-client.ts → shared/lib/api/raw-client.utils.ts} +2 -0
  389. package/src/{api → shared/lib/api}/types.ts +40 -0
  390. package/src/{lib → shared/lib/app-resource-uri}/app-resource-uri.test.ts +1 -1
  391. package/src/{lib/config-hints.ts → shared/lib/config-hints/index.ts} +1 -1
  392. package/src/{lib/i18n.chat.ts → shared/lib/i18n/chat.ts} +8 -0
  393. package/src/{lib/i18n.ts → shared/lib/i18n/index.ts} +11 -11
  394. package/src/shared/lib/i18n/runtime/i18n-language-owner.test.ts +94 -0
  395. package/src/{lib/i18n-runtime → shared/lib/i18n/runtime}/i18n-language-owner.ts +15 -1
  396. package/src/{lib/provider-models.ts → shared/lib/provider-models/index.ts} +1 -1
  397. package/src/shared/lib/session-project/index.ts +2 -0
  398. package/src/{lib → shared/lib}/session-project/workspace-file-breadcrumb.test.ts +1 -1
  399. package/src/{lib → shared/lib}/session-project/workspace-file-breadcrumb.ts +1 -1
  400. package/src/{transport/app-client.ts → shared/lib/transport/app-client.service.ts} +11 -12
  401. package/src/{transport → shared/lib/transport}/app-client.test.ts +15 -5
  402. package/src/{transport → shared/lib/transport}/index.ts +1 -1
  403. package/src/{transport/local.transport.ts → shared/lib/transport/local-transport.service.ts} +19 -19
  404. package/src/{transport/remote.transport.ts → shared/lib/transport/remote-transport.service.ts} +14 -15
  405. package/src/{transport → shared/lib/transport}/remote.transport.test.ts +5 -5
  406. package/src/{transport → shared/lib/transport}/sse-stream.test.ts +2 -2
  407. package/src/{transport/sse-stream.ts → shared/lib/transport/sse-stream.utils.ts} +13 -11
  408. package/src/{transport → shared/lib/transport}/transport.types.ts +1 -1
  409. package/src/{lib/ui-document-title.ts → shared/lib/ui-document-title/index.ts} +1 -1
  410. package/tsconfig.json +20 -0
  411. package/vite.config.ts +62 -2
  412. package/vitest.config.ts +21 -1
  413. package/dist/assets/ChannelsList-M9FTK1Ak.js +0 -8
  414. package/dist/assets/DocBrowser-CH7-GxlL.js +0 -1
  415. package/dist/assets/DocBrowser-DMfr0Oow.js +0 -1
  416. package/dist/assets/DocBrowserContext-BXydqby-.js +0 -1
  417. package/dist/assets/ModelConfig-CNIgLf0e.js +0 -1
  418. package/dist/assets/ProviderScopedModelInput-B3HWP4oz.js +0 -1
  419. package/dist/assets/ProvidersList-CHjMnRhX.js +0 -1
  420. package/dist/assets/RuntimeConfig-psp8nMSG.js +0 -1
  421. package/dist/assets/SearchConfig-CSoKip1f.js +0 -1
  422. package/dist/assets/SecretsConfig-MEt6MjuD.js +0 -3
  423. package/dist/assets/SessionsConfig-DifCiXwR.js +0 -2
  424. package/dist/assets/app-query-client-9jNewezV.js +0 -1
  425. package/dist/assets/chat-page-CLp0UV0Y.js +0 -58
  426. package/dist/assets/chat-session-display-DsYHx0RZ.js +0 -1
  427. package/dist/assets/chunk-JZWAC4HX-C5dEc8hV.js +0 -3
  428. package/dist/assets/client-C-8fH7-c.js +0 -7
  429. package/dist/assets/config-CBScxsdV.js +0 -1
  430. package/dist/assets/config-split-page-BUout_Ak.js +0 -1
  431. package/dist/assets/desktop-update-config-2BS6BMkW.js +0 -1
  432. package/dist/assets/dist-BruyLa92.js +0 -9
  433. package/dist/assets/download-BD0ETkB-.js +0 -1
  434. package/dist/assets/i18n-CpTZLchQ.js +0 -1
  435. package/dist/assets/index-mW8W2FUu.css +0 -1
  436. package/dist/assets/index-zDZfXoI4.js +0 -6
  437. package/dist/assets/infiniteQueryBehavior-CyER9hv0.js +0 -1
  438. package/dist/assets/loader-circle-Bc2gCU33.js +0 -1
  439. package/dist/assets/marketplace-page-3qVMnF3d.js +0 -1
  440. package/dist/assets/marketplace-page-BhFIeQzI.js +0 -49
  441. package/dist/assets/mcp-marketplace-page-DYfteJ1D.js +0 -40
  442. package/dist/assets/page-layout-0UcO9H9Z.js +0 -1
  443. package/dist/assets/play-CKDjSQFL.js +0 -1
  444. package/dist/assets/plus-CG0QrVY_.js +0 -1
  445. package/dist/assets/refresh-cw-Bcv40SXy.js +0 -1
  446. package/dist/assets/remote-access-page-CWHG-sug.js +0 -1
  447. package/dist/assets/search-BCAlB8nz.js +0 -1
  448. package/dist/assets/security-config-Slh0Mayz.js +0 -1
  449. package/dist/assets/select-CVz0t7MF.js +0 -41
  450. package/dist/assets/setting-row-CbVHAuQt.js +0 -1
  451. package/dist/assets/skeleton-D5rdKvzy.js +0 -1
  452. package/dist/assets/switch-CM29eCAR.js +0 -1
  453. package/dist/assets/tag-chip-DMXdnLcj.js +0 -1
  454. package/dist/assets/use-infinite-scroll-loader-DJ1L81Dz.js +0 -1
  455. package/dist/assets/useConfirmDialog-BsVuqu1x.js +0 -1
  456. package/dist/assets/useMutation-CNcz2fgt.js +0 -1
  457. package/dist/assets/x-Czwxm82I.js +0 -1
  458. package/src/app.tsx +0 -271
  459. package/src/components/chat/ChatSidebar.tsx +0 -486
  460. package/src/components/chat/README.md +0 -2
  461. package/src/components/chat/adapters/chat-message-part.adapter.ts +0 -472
  462. package/src/components/chat/chat-inline-token.utils.test.ts +0 -87
  463. package/src/components/chat/chat-page.tsx +0 -6
  464. package/src/components/chat/chat-sidebar-list-mode-switch.tsx +0 -43
  465. package/src/components/chat/hooks/use-chat-session-project.ts +0 -35
  466. package/src/components/chat/index.ts +0 -1
  467. package/src/components/chat/ncp/README.md +0 -3
  468. package/src/components/chat/ncp/ncp-chat-page-data.test.ts +0 -79
  469. package/src/components/chat/ncp/session-conversation/use-ncp-session-conversation.ts +0 -72
  470. package/src/components/chat/nextclaw/index.ts +0 -23
  471. package/src/components/common/agent-identity/index.ts +0 -3
  472. package/src/components/config/ChannelForm.tsx +0 -338
  473. package/src/components/config/ChannelsList.test.tsx +0 -309
  474. package/src/components/config/ModelConfig.tsx +0 -156
  475. package/src/components/config/README.md +0 -2
  476. package/src/components/config/RuntimeConfig.tsx +0 -588
  477. package/src/components/config/SearchConfig.tsx +0 -513
  478. package/src/components/config/SecretsConfig.tsx +0 -469
  479. package/src/components/config/SessionsConfig.tsx +0 -437
  480. package/src/components/config/desktop-update-config.tsx +0 -271
  481. package/src/components/config/runtime-config-agent.utils.ts +0 -96
  482. package/src/components/config/runtime-control-card.test.tsx +0 -311
  483. package/src/components/config/runtime-control-card.tsx +0 -326
  484. package/src/components/config/runtime-security-card.tsx +0 -276
  485. package/src/components/config/weixin-channel-auth-section.tsx +0 -305
  486. package/src/components/doc-browser/index.ts +0 -3
  487. package/src/components/layout/AppLayout.tsx +0 -82
  488. package/src/components/layout/runtime-status-entry.test.tsx +0 -157
  489. package/src/components/layout/runtime-status-entry.tsx +0 -143
  490. package/src/components/marketplace/marketplace-page-parts.tsx +0 -94
  491. package/src/components/marketplace/mcp/mcp-marketplace-page.tsx +0 -414
  492. package/src/hooks/README.md +0 -3
  493. package/src/hooks/use-runtime-control.ts +0 -24
  494. package/src/hooks/useObservable.ts +0 -20
  495. package/src/lib/chat-runtime-utils.ts +0 -250
  496. package/src/presenter/app-presenter-context.tsx +0 -20
  497. package/src/presenter/app.presenter.ts +0 -12
  498. package/src/runtime-control/runtime-control.manager.ts +0 -118
  499. package/src/stores/ui.store.ts +0 -23
  500. /package/dist/assets/{config-hints-BhTmc9P1.js → config-hints-CPNzbMEp.js} +0 -0
  501. /package/src/{components/layout/Header.tsx → app/components/layout/header.tsx} +0 -0
  502. /package/src/{styles → app/styles}/design-system.css +0 -0
  503. /package/src/{account → features/account}/stores/account.store.ts +0 -0
  504. /package/src/{components/chat/chat-input/chat-input-bar.controller.ts → features/chat/hooks/use-chat-input-bar-controller.ts} +0 -0
  505. /package/src/{lib/session-run-status.ts → features/chat/types/session-run-status.types.ts} +0 -0
  506. /package/src/{components/chat/adapters/chat-message.partial-json.ts → features/chat/utils/chat-message-partial-json.utils.ts} +0 -0
  507. /package/src/{components/chat/adapters/chat-message-tool-agent-id.ts → features/chat/utils/chat-message-tool-agent-id.utils.ts} +0 -0
  508. /package/src/{components/chat/adapters/file-operation/line-builder.ts → features/chat/utils/file-operation/line-builder.utils.ts} +0 -0
  509. /package/src/{components/marketplace → features/marketplace/components}/marketplace-detail-doc.ts +0 -0
  510. /package/src/{pwa → features/pwa/types}/pwa.types.ts +0 -0
  511. /package/src/{pwa/pwa-install-banner.storage.ts → features/pwa/utils/pwa-install-banner.utils.ts} +0 -0
  512. /package/src/{hooks → shared/hooks}/use-infinite-scroll-loader.ts +0 -0
  513. /package/src/{api → shared/lib/api}/agents.ts +0 -0
  514. /package/src/{api → shared/lib/api}/api-base.ts +0 -0
  515. /package/src/{api → shared/lib/api}/auth.types.ts +0 -0
  516. /package/src/{api → shared/lib/api}/channel-auth.ts +0 -0
  517. /package/src/{api → shared/lib/api}/channel-auth.types.ts +0 -0
  518. /package/src/{api → shared/lib/api}/chat-session-type.types.ts +0 -0
  519. /package/src/{api → shared/lib/api}/marketplace.ts +0 -0
  520. /package/src/{api → shared/lib/api}/mcp-marketplace.ts +0 -0
  521. /package/src/{api → shared/lib/api}/ncp-attachments.ts +0 -0
  522. /package/src/{api → shared/lib/api}/ncp-session.ts +0 -0
  523. /package/src/{api → shared/lib/api}/remote.ts +0 -0
  524. /package/src/{api → shared/lib/api}/remote.types.ts +0 -0
  525. /package/src/{api → shared/lib/api}/runtime-control.ts +0 -0
  526. /package/src/{api → shared/lib/api}/runtime-control.types.ts +0 -0
  527. /package/src/{api → shared/lib/api}/server-path.ts +0 -0
  528. /package/src/{lib/app-resource-uri.ts → shared/lib/app-resource-uri/index.ts} +0 -0
  529. /package/src/{lib/i18n.agents.ts → shared/lib/i18n/agents.ts} +0 -0
  530. /package/src/{lib/i18n.channel-auth.ts → shared/lib/i18n/channel-auth.ts} +0 -0
  531. /package/src/{lib/i18n.channels.ts → shared/lib/i18n/channels.ts} +0 -0
  532. /package/src/{lib → shared/lib/i18n}/desktop-update-labels.utils.ts +0 -0
  533. /package/src/{lib/i18n.marketplace.ts → shared/lib/i18n/marketplace.ts} +0 -0
  534. /package/src/{lib/i18n.pwa.ts → shared/lib/i18n/pwa.ts} +0 -0
  535. /package/src/{lib/i18n.remote.ts → shared/lib/i18n/remote.ts} +0 -0
  536. /package/src/{lib/i18n-runtime → shared/lib/i18n/runtime}/i18n.path-picker.ts +0 -0
  537. /package/src/{lib/i18n.runtime-control.ts → shared/lib/i18n/runtime-control.ts} +0 -0
  538. /package/src/{lib/i18n.search.ts → shared/lib/i18n/search.ts} +0 -0
  539. /package/src/{lib/logos.ts → shared/lib/logos/index.ts} +0 -0
  540. /package/src/{lib → shared/lib}/session-project/session-project.utils.ts +0 -0
  541. /package/src/{lib/theme.ts → shared/lib/theme/index.ts} +0 -0
  542. /package/src/{transport/transport-websocket-url.ts → shared/lib/transport/transport-websocket-url.utils.ts} +0 -0
  543. /package/src/{lib/utils.ts → shared/lib/utils/index.ts} +0 -0
@@ -1,41 +0,0 @@
1
- import{_ as e,m as t,p as n,u as r}from"./i18n-CpTZLchQ.js";import{a as i}from"./dist-BruyLa92.js";import{t as a}from"./createLucideIcon-dy5ie7Ox.js";typeof window<`u`&&window.document&&window.document.createElement;function o(e,t,{checkForDefaultPrevented:n=!0}={}){return function(r){if(e?.(r),n===!1||!r.defaultPrevented)return t?.(r)}}var s=e(t(),1);function c(e,t){if(typeof e==`function`)return e(t);e!=null&&(e.current=t)}function l(...e){return t=>{let n=!1,r=e.map(e=>{let r=c(e,t);return!n&&typeof r==`function`&&(n=!0),r});if(n)return()=>{for(let t=0;t<r.length;t++){let n=r[t];typeof n==`function`?n():c(e[t],null)}}}}function u(...e){return s.useCallback(l(...e),e)}var d=n();function f(e,t){let n=s.createContext(t),r=e=>{let{children:t,...r}=e,i=s.useMemo(()=>r,Object.values(r));return(0,d.jsx)(n.Provider,{value:i,children:t})};r.displayName=e+`Provider`;function i(r){let i=s.useContext(n);if(i)return i;if(t!==void 0)return t;throw Error(`\`${r}\` must be used within \`${e}\``)}return[r,i]}function p(e,t=[]){let n=[];function r(t,r){let i=s.createContext(r),a=n.length;n=[...n,r];let o=t=>{let{scope:n,children:r,...o}=t,c=n?.[e]?.[a]||i,l=s.useMemo(()=>o,Object.values(o));return(0,d.jsx)(c.Provider,{value:l,children:r})};o.displayName=t+`Provider`;function c(n,o){let c=o?.[e]?.[a]||i,l=s.useContext(c);if(l)return l;if(r!==void 0)return r;throw Error(`\`${n}\` must be used within \`${t}\``)}return[o,c]}let i=()=>{let t=n.map(e=>s.createContext(e));return function(n){let r=n?.[e]||t;return s.useMemo(()=>({[`__scope${e}`]:{...n,[e]:r}}),[n,r])}};return i.scopeName=e,[r,m(i,...t)]}function m(...e){let t=e[0];if(e.length===1)return t;let n=()=>{let n=e.map(e=>({useScope:e(),scopeName:e.scopeName}));return function(e){let r=n.reduce((t,{useScope:n,scopeName:r})=>{let i=n(e)[`__scope${r}`];return{...t,...i}},{});return s.useMemo(()=>({[`__scope${t.scopeName}`]:r}),[r])}};return n.scopeName=t.scopeName,n}var h=globalThis?.document?s.useLayoutEffect:()=>{},g=s.useId||(()=>void 0),_=0;function v(e){let[t,n]=s.useState(g());return h(()=>{e||n(e=>e??String(_++))},[e]),e||(t?`radix-${t}`:``)}var y=s.useInsertionEffect||h;function b({prop:e,defaultProp:t,onChange:n=()=>{},caller:r}){let[i,a,o]=x({defaultProp:t,onChange:n}),c=e!==void 0,l=c?e:i;{let t=s.useRef(e!==void 0);s.useEffect(()=>{let e=t.current;e!==c&&console.warn(`${r} is changing from ${e?`controlled`:`uncontrolled`} to ${c?`controlled`:`uncontrolled`}. Components should not switch from controlled to uncontrolled (or vice versa). Decide between using a controlled or uncontrolled value for the lifetime of the component.`),t.current=c},[c,r])}return[l,s.useCallback(t=>{if(c){let n=S(t)?t(e):t;n!==e&&o.current?.(n)}else a(t)},[c,e,a,o])]}function x({defaultProp:e,onChange:t}){let[n,r]=s.useState(e),i=s.useRef(n),a=s.useRef(t);return y(()=>{a.current=t},[t]),s.useEffect(()=>{i.current!==n&&(a.current?.(n),i.current=n)},[n,i]),[n,r,a]}function S(e){return typeof e==`function`}function C(e){let t=w(e),n=s.forwardRef((e,n)=>{let{children:r,...i}=e,a=s.Children.toArray(r),o=a.find(D);if(o){let e=o.props.children,r=a.map(t=>t===o?s.Children.count(e)>1?s.Children.only(null):s.isValidElement(e)?e.props.children:null:t);return(0,d.jsx)(t,{...i,ref:n,children:s.isValidElement(e)?s.cloneElement(e,void 0,r):null})}return(0,d.jsx)(t,{...i,ref:n,children:r})});return n.displayName=`${e}.Slot`,n}function w(e){let t=s.forwardRef((e,t)=>{let{children:n,...r}=e;if(s.isValidElement(n)){let e=k(n),i=O(r,n.props);return n.type!==s.Fragment&&(i.ref=t?l(t,e):e),s.cloneElement(n,i)}return s.Children.count(n)>1?s.Children.only(null):null});return t.displayName=`${e}.SlotClone`,t}var T=Symbol(`radix.slottable`);function E(e){let t=({children:e})=>(0,d.jsx)(d.Fragment,{children:e});return t.displayName=`${e}.Slottable`,t.__radixId=T,t}function D(e){return s.isValidElement(e)&&typeof e.type==`function`&&`__radixId`in e.type&&e.type.__radixId===T}function O(e,t){let n={...t};for(let r in t){let i=e[r],a=t[r];/^on[A-Z]/.test(r)?i&&a?n[r]=(...e)=>{let t=a(...e);return i(...e),t}:i&&(n[r]=i):r===`style`?n[r]={...i,...a}:r===`className`&&(n[r]=[i,a].filter(Boolean).join(` `))}return{...e,...n}}function k(e){let t=Object.getOwnPropertyDescriptor(e.props,`ref`)?.get,n=t&&`isReactWarning`in t&&t.isReactWarning;return n?e.ref:(t=Object.getOwnPropertyDescriptor(e,`ref`)?.get,n=t&&`isReactWarning`in t&&t.isReactWarning,n?e.props.ref:e.props.ref||e.ref)}var A=e(i(),1),j=[`a`,`button`,`div`,`form`,`h2`,`h3`,`img`,`input`,`label`,`li`,`nav`,`ol`,`p`,`select`,`span`,`svg`,`ul`].reduce((e,t)=>{let n=C(`Primitive.${t}`),r=s.forwardRef((e,r)=>{let{asChild:i,...a}=e,o=i?n:t;return typeof window<`u`&&(window[Symbol.for(`radix-ui`)]=!0),(0,d.jsx)(o,{...a,ref:r})});return r.displayName=`Primitive.${t}`,{...e,[t]:r}},{});function M(e,t){e&&A.flushSync(()=>e.dispatchEvent(t))}function N(e){let t=s.useRef(e);return s.useEffect(()=>{t.current=e}),s.useMemo(()=>(...e)=>t.current?.(...e),[])}function P(e,t=globalThis?.document){let n=N(e);s.useEffect(()=>{let e=e=>{e.key===`Escape`&&n(e)};return t.addEventListener(`keydown`,e,{capture:!0}),()=>t.removeEventListener(`keydown`,e,{capture:!0})},[n,t])}var F=`DismissableLayer`,ee=`dismissableLayer.update`,te=`dismissableLayer.pointerDownOutside`,ne=`dismissableLayer.focusOutside`,I,L=s.createContext({layers:new Set,layersWithOutsidePointerEventsDisabled:new Set,branches:new Set}),re=s.forwardRef((e,t)=>{let{disableOutsidePointerEvents:n=!1,onEscapeKeyDown:r,onPointerDownOutside:i,onFocusOutside:a,onInteractOutside:c,onDismiss:l,...f}=e,p=s.useContext(L),[m,h]=s.useState(null),g=m?.ownerDocument??globalThis?.document,[,_]=s.useState({}),v=u(t,e=>h(e)),y=Array.from(p.layers),[b]=[...p.layersWithOutsidePointerEventsDisabled].slice(-1),x=y.indexOf(b),S=m?y.indexOf(m):-1,C=p.layersWithOutsidePointerEventsDisabled.size>0,w=S>=x,T=oe(e=>{let t=e.target,n=[...p.branches].some(e=>e.contains(t));!w||n||(i?.(e),c?.(e),e.defaultPrevented||l?.())},g),E=se(e=>{let t=e.target;[...p.branches].some(e=>e.contains(t))||(a?.(e),c?.(e),e.defaultPrevented||l?.())},g);return P(e=>{S===p.layers.size-1&&(r?.(e),!e.defaultPrevented&&l&&(e.preventDefault(),l()))},g),s.useEffect(()=>{if(m)return n&&(p.layersWithOutsidePointerEventsDisabled.size===0&&(I=g.body.style.pointerEvents,g.body.style.pointerEvents=`none`),p.layersWithOutsidePointerEventsDisabled.add(m)),p.layers.add(m),ce(),()=>{n&&p.layersWithOutsidePointerEventsDisabled.size===1&&(g.body.style.pointerEvents=I)}},[m,g,n,p]),s.useEffect(()=>()=>{m&&(p.layers.delete(m),p.layersWithOutsidePointerEventsDisabled.delete(m),ce())},[m,p]),s.useEffect(()=>{let e=()=>_({});return document.addEventListener(ee,e),()=>document.removeEventListener(ee,e)},[]),(0,d.jsx)(j.div,{...f,ref:v,style:{pointerEvents:C?w?`auto`:`none`:void 0,...e.style},onFocusCapture:o(e.onFocusCapture,E.onFocusCapture),onBlurCapture:o(e.onBlurCapture,E.onBlurCapture),onPointerDownCapture:o(e.onPointerDownCapture,T.onPointerDownCapture)})});re.displayName=F;var ie=`DismissableLayerBranch`,ae=s.forwardRef((e,t)=>{let n=s.useContext(L),r=s.useRef(null),i=u(t,r);return s.useEffect(()=>{let e=r.current;if(e)return n.branches.add(e),()=>{n.branches.delete(e)}},[n.branches]),(0,d.jsx)(j.div,{...e,ref:i})});ae.displayName=ie;function oe(e,t=globalThis?.document){let n=N(e),r=s.useRef(!1),i=s.useRef(()=>{});return s.useEffect(()=>{let e=e=>{if(e.target&&!r.current){let r=function(){le(te,n,a,{discrete:!0})},a={originalEvent:e};e.pointerType===`touch`?(t.removeEventListener(`click`,i.current),i.current=r,t.addEventListener(`click`,i.current,{once:!0})):r()}else t.removeEventListener(`click`,i.current);r.current=!1},a=window.setTimeout(()=>{t.addEventListener(`pointerdown`,e)},0);return()=>{window.clearTimeout(a),t.removeEventListener(`pointerdown`,e),t.removeEventListener(`click`,i.current)}},[t,n]),{onPointerDownCapture:()=>r.current=!0}}function se(e,t=globalThis?.document){let n=N(e),r=s.useRef(!1);return s.useEffect(()=>{let e=e=>{e.target&&!r.current&&le(ne,n,{originalEvent:e},{discrete:!1})};return t.addEventListener(`focusin`,e),()=>t.removeEventListener(`focusin`,e)},[t,n]),{onFocusCapture:()=>r.current=!0,onBlurCapture:()=>r.current=!1}}function ce(){let e=new CustomEvent(ee);document.dispatchEvent(e)}function le(e,t,n,{discrete:r}){let i=n.originalEvent.target,a=new CustomEvent(e,{bubbles:!1,cancelable:!0,detail:n});t&&i.addEventListener(e,t,{once:!0}),r?M(i,a):i.dispatchEvent(a)}var ue=`focusScope.autoFocusOnMount`,de=`focusScope.autoFocusOnUnmount`,fe={bubbles:!1,cancelable:!0},pe=`FocusScope`,me=s.forwardRef((e,t)=>{let{loop:n=!1,trapped:r=!1,onMountAutoFocus:i,onUnmountAutoFocus:a,...o}=e,[c,l]=s.useState(null),f=N(i),p=N(a),m=s.useRef(null),h=u(t,e=>l(e)),g=s.useRef({paused:!1,pause(){this.paused=!0},resume(){this.paused=!1}}).current;s.useEffect(()=>{if(r){let e=function(e){if(g.paused||!c)return;let t=e.target;c.contains(t)?m.current=t:R(m.current,{select:!0})},t=function(e){if(g.paused||!c)return;let t=e.relatedTarget;t!==null&&(c.contains(t)||R(m.current,{select:!0}))},n=function(e){if(document.activeElement===document.body)for(let t of e)t.removedNodes.length>0&&R(c)};document.addEventListener(`focusin`,e),document.addEventListener(`focusout`,t);let r=new MutationObserver(n);return c&&r.observe(c,{childList:!0,subtree:!0}),()=>{document.removeEventListener(`focusin`,e),document.removeEventListener(`focusout`,t),r.disconnect()}}},[r,c,g.paused]),s.useEffect(()=>{if(c){xe.add(g);let e=document.activeElement;if(!c.contains(e)){let t=new CustomEvent(ue,fe);c.addEventListener(ue,f),c.dispatchEvent(t),t.defaultPrevented||(he(we(_e(c)),{select:!0}),document.activeElement===e&&R(c))}return()=>{c.removeEventListener(ue,f),setTimeout(()=>{let t=new CustomEvent(de,fe);c.addEventListener(de,p),c.dispatchEvent(t),t.defaultPrevented||R(e??document.body,{select:!0}),c.removeEventListener(de,p),xe.remove(g)},0)}}},[c,f,p,g]);let _=s.useCallback(e=>{if(!n&&!r||g.paused)return;let t=e.key===`Tab`&&!e.altKey&&!e.ctrlKey&&!e.metaKey,i=document.activeElement;if(t&&i){let t=e.currentTarget,[r,a]=ge(t);r&&a?!e.shiftKey&&i===a?(e.preventDefault(),n&&R(r,{select:!0})):e.shiftKey&&i===r&&(e.preventDefault(),n&&R(a,{select:!0})):i===t&&e.preventDefault()}},[n,r,g.paused]);return(0,d.jsx)(j.div,{tabIndex:-1,...o,ref:h,onKeyDown:_})});me.displayName=pe;function he(e,{select:t=!1}={}){let n=document.activeElement;for(let r of e)if(R(r,{select:t}),document.activeElement!==n)return}function ge(e){let t=_e(e);return[ve(t,e),ve(t.reverse(),e)]}function _e(e){let t=[],n=document.createTreeWalker(e,NodeFilter.SHOW_ELEMENT,{acceptNode:e=>{let t=e.tagName===`INPUT`&&e.type===`hidden`;return e.disabled||e.hidden||t?NodeFilter.FILTER_SKIP:e.tabIndex>=0?NodeFilter.FILTER_ACCEPT:NodeFilter.FILTER_SKIP}});for(;n.nextNode();)t.push(n.currentNode);return t}function ve(e,t){for(let n of e)if(!ye(n,{upTo:t}))return n}function ye(e,{upTo:t}){if(getComputedStyle(e).visibility===`hidden`)return!0;for(;e;){if(t!==void 0&&e===t)return!1;if(getComputedStyle(e).display===`none`)return!0;e=e.parentElement}return!1}function be(e){return e instanceof HTMLInputElement&&`select`in e}function R(e,{select:t=!1}={}){if(e&&e.focus){let n=document.activeElement;e.focus({preventScroll:!0}),e!==n&&be(e)&&t&&e.select()}}var xe=Se();function Se(){let e=[];return{add(t){let n=e[0];t!==n&&n?.pause(),e=Ce(e,t),e.unshift(t)},remove(t){e=Ce(e,t),e[0]?.resume()}}}function Ce(e,t){let n=[...e],r=n.indexOf(t);return r!==-1&&n.splice(r,1),n}function we(e){return e.filter(e=>e.tagName!==`A`)}var Te=`Portal`,Ee=s.forwardRef((e,t)=>{let{container:n,...r}=e,[i,a]=s.useState(!1);h(()=>a(!0),[]);let o=n||i&&globalThis?.document?.body;return o?A.createPortal((0,d.jsx)(j.div,{...r,ref:t}),o):null});Ee.displayName=Te;var De=0;function Oe(){s.useEffect(()=>{let e=document.querySelectorAll(`[data-radix-focus-guard]`);return document.body.insertAdjacentElement(`afterbegin`,e[0]??ke()),document.body.insertAdjacentElement(`beforeend`,e[1]??ke()),De++,()=>{De===1&&document.querySelectorAll(`[data-radix-focus-guard]`).forEach(e=>e.remove()),De--}},[])}function ke(){let e=document.createElement(`span`);return e.setAttribute(`data-radix-focus-guard`,``),e.tabIndex=0,e.style.outline=`none`,e.style.opacity=`0`,e.style.position=`fixed`,e.style.pointerEvents=`none`,e}var z=function(){return z=Object.assign||function(e){for(var t,n=1,r=arguments.length;n<r;n++)for(var i in t=arguments[n],t)Object.prototype.hasOwnProperty.call(t,i)&&(e[i]=t[i]);return e},z.apply(this,arguments)};function Ae(e,t){var n={};for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(e!=null&&typeof Object.getOwnPropertySymbols==`function`)for(var i=0,r=Object.getOwnPropertySymbols(e);i<r.length;i++)t.indexOf(r[i])<0&&Object.prototype.propertyIsEnumerable.call(e,r[i])&&(n[r[i]]=e[r[i]]);return n}function je(e,t,n){if(n||arguments.length===2)for(var r=0,i=t.length,a;r<i;r++)(a||!(r in t))&&(a||=Array.prototype.slice.call(t,0,r),a[r]=t[r]);return e.concat(a||Array.prototype.slice.call(t))}var Me=`right-scroll-bar-position`,Ne=`width-before-scroll-bar`,Pe=`with-scroll-bars-hidden`,Fe=`--removed-body-scroll-bar-size`;function Ie(e,t){return typeof e==`function`?e(t):e&&(e.current=t),e}function Le(e,t){var n=(0,s.useState)(function(){return{value:e,callback:t,facade:{get current(){return n.value},set current(e){var t=n.value;t!==e&&(n.value=e,n.callback(e,t))}}}})[0];return n.callback=t,n.facade}var Re=typeof window<`u`?s.useLayoutEffect:s.useEffect,ze=new WeakMap;function Be(e,t){var n=Le(t||null,function(t){return e.forEach(function(e){return Ie(e,t)})});return Re(function(){var t=ze.get(n);if(t){var r=new Set(t),i=new Set(e),a=n.current;r.forEach(function(e){i.has(e)||Ie(e,null)}),i.forEach(function(e){r.has(e)||Ie(e,a)})}ze.set(n,e)},[e]),n}function Ve(e){return e}function He(e,t){t===void 0&&(t=Ve);var n=[],r=!1;return{read:function(){if(r)throw Error("Sidecar: could not `read` from an `assigned` medium. `read` could be used only with `useMedium`.");return n.length?n[n.length-1]:e},useMedium:function(e){var i=t(e,r);return n.push(i),function(){n=n.filter(function(e){return e!==i})}},assignSyncMedium:function(e){for(r=!0;n.length;){var t=n;n=[],t.forEach(e)}n={push:function(t){return e(t)},filter:function(){return n}}},assignMedium:function(e){r=!0;var t=[];if(n.length){var i=n;n=[],i.forEach(e),t=n}var a=function(){var n=t;t=[],n.forEach(e)},o=function(){return Promise.resolve().then(a)};o(),n={push:function(e){t.push(e),o()},filter:function(e){return t=t.filter(e),n}}}}}function Ue(e){e===void 0&&(e={});var t=He(null);return t.options=z({async:!0,ssr:!1},e),t}var We=function(e){var t=e.sideCar,n=Ae(e,[`sideCar`]);if(!t)throw Error("Sidecar: please provide `sideCar` property to import the right car");var r=t.read();if(!r)throw Error(`Sidecar medium not found`);return s.createElement(r,z({},n))};We.isSideCarExport=!0;function Ge(e,t){return e.useMedium(t),We}var Ke=Ue(),qe=function(){},Je=s.forwardRef(function(e,t){var n=s.useRef(null),r=s.useState({onScrollCapture:qe,onWheelCapture:qe,onTouchMoveCapture:qe}),i=r[0],a=r[1],o=e.forwardProps,c=e.children,l=e.className,u=e.removeScrollBar,d=e.enabled,f=e.shards,p=e.sideCar,m=e.noRelative,h=e.noIsolation,g=e.inert,_=e.allowPinchZoom,v=e.as,y=v===void 0?`div`:v,b=e.gapMode,x=Ae(e,[`forwardProps`,`children`,`className`,`removeScrollBar`,`enabled`,`shards`,`sideCar`,`noRelative`,`noIsolation`,`inert`,`allowPinchZoom`,`as`,`gapMode`]),S=p,C=Be([n,t]),w=z(z({},x),i);return s.createElement(s.Fragment,null,d&&s.createElement(S,{sideCar:Ke,removeScrollBar:u,shards:f,noRelative:m,noIsolation:h,inert:g,setCallbacks:a,allowPinchZoom:!!_,lockRef:n,gapMode:b}),o?s.cloneElement(s.Children.only(c),z(z({},w),{ref:C})):s.createElement(y,z({},w,{className:l,ref:C}),c))});Je.defaultProps={enabled:!0,removeScrollBar:!0,inert:!1},Je.classNames={fullWidth:Ne,zeroRight:Me};var Ye,Xe=function(){if(Ye)return Ye;if(typeof __webpack_nonce__<`u`)return __webpack_nonce__};function Ze(){if(!document)return null;var e=document.createElement(`style`);e.type=`text/css`;var t=Xe();return t&&e.setAttribute(`nonce`,t),e}function Qe(e,t){e.styleSheet?e.styleSheet.cssText=t:e.appendChild(document.createTextNode(t))}function $e(e){(document.head||document.getElementsByTagName(`head`)[0]).appendChild(e)}var et=function(){var e=0,t=null;return{add:function(n){e==0&&(t=Ze())&&(Qe(t,n),$e(t)),e++},remove:function(){e--,!e&&t&&(t.parentNode&&t.parentNode.removeChild(t),t=null)}}},tt=function(){var e=et();return function(t,n){s.useEffect(function(){return e.add(t),function(){e.remove()}},[t&&n])}},nt=function(){var e=tt();return function(t){var n=t.styles,r=t.dynamic;return e(n,r),null}},rt={left:0,top:0,right:0,gap:0},it=function(e){return parseInt(e||``,10)||0},at=function(e){var t=window.getComputedStyle(document.body),n=t[e===`padding`?`paddingLeft`:`marginLeft`],r=t[e===`padding`?`paddingTop`:`marginTop`],i=t[e===`padding`?`paddingRight`:`marginRight`];return[it(n),it(r),it(i)]},ot=function(e){if(e===void 0&&(e=`margin`),typeof window>`u`)return rt;var t=at(e),n=document.documentElement.clientWidth,r=window.innerWidth;return{left:t[0],top:t[1],right:t[2],gap:Math.max(0,r-n+t[2]-t[0])}},st=nt(),ct=`data-scroll-locked`,lt=function(e,t,n,r){var i=e.left,a=e.top,o=e.right,s=e.gap;return n===void 0&&(n=`margin`),`
2
- .${Pe} {
3
- overflow: hidden ${r};
4
- padding-right: ${s}px ${r};
5
- }
6
- body[${ct}] {
7
- overflow: hidden ${r};
8
- overscroll-behavior: contain;
9
- ${[t&&`position: relative ${r};`,n===`margin`&&`
10
- padding-left: ${i}px;
11
- padding-top: ${a}px;
12
- padding-right: ${o}px;
13
- margin-left:0;
14
- margin-top:0;
15
- margin-right: ${s}px ${r};
16
- `,n===`padding`&&`padding-right: ${s}px ${r};`].filter(Boolean).join(``)}
17
- }
18
-
19
- .${Me} {
20
- right: ${s}px ${r};
21
- }
22
-
23
- .${Ne} {
24
- margin-right: ${s}px ${r};
25
- }
26
-
27
- .${Me} .${Me} {
28
- right: 0 ${r};
29
- }
30
-
31
- .${Ne} .${Ne} {
32
- margin-right: 0 ${r};
33
- }
34
-
35
- body[${ct}] {
36
- ${Fe}: ${s}px;
37
- }
38
- `},ut=function(){var e=parseInt(document.body.getAttribute(`data-scroll-locked`)||`0`,10);return isFinite(e)?e:0},dt=function(){s.useEffect(function(){return document.body.setAttribute(ct,(ut()+1).toString()),function(){var e=ut()-1;e<=0?document.body.removeAttribute(ct):document.body.setAttribute(ct,e.toString())}},[])},ft=function(e){var t=e.noRelative,n=e.noImportant,r=e.gapMode,i=r===void 0?`margin`:r;dt();var a=s.useMemo(function(){return ot(i)},[i]);return s.createElement(st,{styles:lt(a,!t,i,n?``:`!important`)})},pt=!1;if(typeof window<`u`)try{var mt=Object.defineProperty({},`passive`,{get:function(){return pt=!0,!0}});window.addEventListener(`test`,mt,mt),window.removeEventListener(`test`,mt,mt)}catch{pt=!1}var ht=pt?{passive:!1}:!1,gt=function(e){return e.tagName===`TEXTAREA`},_t=function(e,t){if(!(e instanceof Element))return!1;var n=window.getComputedStyle(e);return n[t]!==`hidden`&&!(n.overflowY===n.overflowX&&!gt(e)&&n[t]===`visible`)},vt=function(e){return _t(e,`overflowY`)},yt=function(e){return _t(e,`overflowX`)},bt=function(e,t){var n=t.ownerDocument,r=t;do{if(typeof ShadowRoot<`u`&&r instanceof ShadowRoot&&(r=r.host),Ct(e,r)){var i=wt(e,r);if(i[1]>i[2])return!0}r=r.parentNode}while(r&&r!==n.body);return!1},xt=function(e){return[e.scrollTop,e.scrollHeight,e.clientHeight]},St=function(e){return[e.scrollLeft,e.scrollWidth,e.clientWidth]},Ct=function(e,t){return e===`v`?vt(t):yt(t)},wt=function(e,t){return e===`v`?xt(t):St(t)},Tt=function(e,t){return e===`h`&&t===`rtl`?-1:1},Et=function(e,t,n,r,i){var a=Tt(e,window.getComputedStyle(t).direction),o=a*r,s=n.target,c=t.contains(s),l=!1,u=o>0,d=0,f=0;do{if(!s)break;var p=wt(e,s),m=p[0],h=p[1]-p[2]-a*m;(m||h)&&Ct(e,s)&&(d+=h,f+=m);var g=s.parentNode;s=g&&g.nodeType===Node.DOCUMENT_FRAGMENT_NODE?g.host:g}while(!c&&s!==document.body||c&&(t.contains(s)||t===s));return(u&&(i&&Math.abs(d)<1||!i&&o>d)||!u&&(i&&Math.abs(f)<1||!i&&-o>f))&&(l=!0),l},Dt=function(e){return`changedTouches`in e?[e.changedTouches[0].clientX,e.changedTouches[0].clientY]:[0,0]},Ot=function(e){return[e.deltaX,e.deltaY]},kt=function(e){return e&&`current`in e?e.current:e},At=function(e,t){return e[0]===t[0]&&e[1]===t[1]},jt=function(e){return`
39
- .block-interactivity-${e} {pointer-events: none;}
40
- .allow-interactivity-${e} {pointer-events: all;}
41
- `},Mt=0,Nt=[];function Pt(e){var t=s.useRef([]),n=s.useRef([0,0]),r=s.useRef(),i=s.useState(Mt++)[0],a=s.useState(nt)[0],o=s.useRef(e);s.useEffect(function(){o.current=e},[e]),s.useEffect(function(){if(e.inert){document.body.classList.add(`block-interactivity-${i}`);var t=je([e.lockRef.current],(e.shards||[]).map(kt),!0).filter(Boolean);return t.forEach(function(e){return e.classList.add(`allow-interactivity-${i}`)}),function(){document.body.classList.remove(`block-interactivity-${i}`),t.forEach(function(e){return e.classList.remove(`allow-interactivity-${i}`)})}}},[e.inert,e.lockRef.current,e.shards]);var c=s.useCallback(function(e,t){if(`touches`in e&&e.touches.length===2||e.type===`wheel`&&e.ctrlKey)return!o.current.allowPinchZoom;var i=Dt(e),a=n.current,s=`deltaX`in e?e.deltaX:a[0]-i[0],c=`deltaY`in e?e.deltaY:a[1]-i[1],l,u=e.target,d=Math.abs(s)>Math.abs(c)?`h`:`v`;if(`touches`in e&&d===`h`&&u.type===`range`)return!1;var f=window.getSelection(),p=f&&f.anchorNode;if(p&&(p===u||p.contains(u)))return!1;var m=bt(d,u);if(!m)return!0;if(m?l=d:(l=d===`v`?`h`:`v`,m=bt(d,u)),!m)return!1;if(!r.current&&`changedTouches`in e&&(s||c)&&(r.current=l),!l)return!0;var h=r.current||l;return Et(h,t,e,h===`h`?s:c,!0)},[]),l=s.useCallback(function(e){var n=e;if(!(!Nt.length||Nt[Nt.length-1]!==a)){var r=`deltaY`in n?Ot(n):Dt(n),i=t.current.filter(function(e){return e.name===n.type&&(e.target===n.target||n.target===e.shadowParent)&&At(e.delta,r)})[0];if(i&&i.should){n.cancelable&&n.preventDefault();return}if(!i){var s=(o.current.shards||[]).map(kt).filter(Boolean).filter(function(e){return e.contains(n.target)});(s.length>0?c(n,s[0]):!o.current.noIsolation)&&n.cancelable&&n.preventDefault()}}},[]),u=s.useCallback(function(e,n,r,i){var a={name:e,delta:n,target:r,should:i,shadowParent:Ft(r)};t.current.push(a),setTimeout(function(){t.current=t.current.filter(function(e){return e!==a})},1)},[]),d=s.useCallback(function(e){n.current=Dt(e),r.current=void 0},[]),f=s.useCallback(function(t){u(t.type,Ot(t),t.target,c(t,e.lockRef.current))},[]),p=s.useCallback(function(t){u(t.type,Dt(t),t.target,c(t,e.lockRef.current))},[]);s.useEffect(function(){return Nt.push(a),e.setCallbacks({onScrollCapture:f,onWheelCapture:f,onTouchMoveCapture:p}),document.addEventListener(`wheel`,l,ht),document.addEventListener(`touchmove`,l,ht),document.addEventListener(`touchstart`,d,ht),function(){Nt=Nt.filter(function(e){return e!==a}),document.removeEventListener(`wheel`,l,ht),document.removeEventListener(`touchmove`,l,ht),document.removeEventListener(`touchstart`,d,ht)}},[]);var m=e.removeScrollBar,h=e.inert;return s.createElement(s.Fragment,null,h?s.createElement(a,{styles:jt(i)}):null,m?s.createElement(ft,{noRelative:e.noRelative,gapMode:e.gapMode}):null)}function Ft(e){for(var t=null;e!==null;)e instanceof ShadowRoot&&(t=e.host,e=e.host),e=e.parentNode;return t}var It=Ge(Ke,Pt),Lt=s.forwardRef(function(e,t){return s.createElement(Je,z({},e,{ref:t,sideCar:It}))});Lt.classNames=Je.classNames;var Rt=function(e){return typeof document>`u`?null:(Array.isArray(e)?e[0]:e).ownerDocument.body},zt=new WeakMap,Bt=new WeakMap,Vt={},Ht=0,Ut=function(e){return e&&(e.host||Ut(e.parentNode))},Wt=function(e,t){return t.map(function(t){if(e.contains(t))return t;var n=Ut(t);return n&&e.contains(n)?n:(console.error(`aria-hidden`,t,`in not contained inside`,e,`. Doing nothing`),null)}).filter(function(e){return!!e})},Gt=function(e,t,n,r){var i=Wt(t,Array.isArray(e)?e:[e]);Vt[n]||(Vt[n]=new WeakMap);var a=Vt[n],o=[],s=new Set,c=new Set(i),l=function(e){!e||s.has(e)||(s.add(e),l(e.parentNode))};i.forEach(l);var u=function(e){!e||c.has(e)||Array.prototype.forEach.call(e.children,function(e){if(s.has(e))u(e);else try{var t=e.getAttribute(r),i=t!==null&&t!==`false`,c=(zt.get(e)||0)+1,l=(a.get(e)||0)+1;zt.set(e,c),a.set(e,l),o.push(e),c===1&&i&&Bt.set(e,!0),l===1&&e.setAttribute(n,`true`),i||e.setAttribute(r,`true`)}catch(t){console.error(`aria-hidden: cannot operate on `,e,t)}})};return u(t),s.clear(),Ht++,function(){o.forEach(function(e){var t=zt.get(e)-1,i=a.get(e)-1;zt.set(e,t),a.set(e,i),t||(Bt.has(e)||e.removeAttribute(r),Bt.delete(e)),i||e.removeAttribute(n)}),Ht--,Ht||(zt=new WeakMap,zt=new WeakMap,Bt=new WeakMap,Vt={})}},Kt=function(e,t,n){n===void 0&&(n=`data-aria-hidden`);var r=Array.from(Array.isArray(e)?e:[e]),i=t||Rt(e);return i?(r.push.apply(r,Array.from(i.querySelectorAll(`[aria-live], script`))),Gt(r,i,n,`aria-hidden`)):function(){return null}},qt=a(`Check`,[[`path`,{d:`M20 6 9 17l-5-5`,key:`1gmf2c`}]]),Jt=a(`ChevronDown`,[[`path`,{d:`m6 9 6 6 6-6`,key:`qrunsl`}]]),Yt=a(`ChevronUp`,[[`path`,{d:`m18 15-6-6-6 6`,key:`153udz`}]]),Xt=[`top`,`right`,`bottom`,`left`],B=Math.min,V=Math.max,Zt=Math.round,Qt=Math.floor,H=e=>({x:e,y:e}),$t={left:`right`,right:`left`,bottom:`top`,top:`bottom`},en={start:`end`,end:`start`};function tn(e,t,n){return V(e,B(t,n))}function U(e,t){return typeof e==`function`?e(t):e}function W(e){return e.split(`-`)[0]}function nn(e){return e.split(`-`)[1]}function rn(e){return e===`x`?`y`:`x`}function an(e){return e===`y`?`height`:`width`}var on=new Set([`top`,`bottom`]);function G(e){return on.has(W(e))?`y`:`x`}function sn(e){return rn(G(e))}function cn(e,t,n){n===void 0&&(n=!1);let r=nn(e),i=sn(e),a=an(i),o=i===`x`?r===(n?`end`:`start`)?`right`:`left`:r===`start`?`bottom`:`top`;return t.reference[a]>t.floating[a]&&(o=_n(o)),[o,_n(o)]}function ln(e){let t=_n(e);return[un(e),t,un(t)]}function un(e){return e.replace(/start|end/g,e=>en[e])}var dn=[`left`,`right`],fn=[`right`,`left`],pn=[`top`,`bottom`],mn=[`bottom`,`top`];function hn(e,t,n){switch(e){case`top`:case`bottom`:return n?t?fn:dn:t?dn:fn;case`left`:case`right`:return t?pn:mn;default:return[]}}function gn(e,t,n,r){let i=nn(e),a=hn(W(e),n===`start`,r);return i&&(a=a.map(e=>e+`-`+i),t&&(a=a.concat(a.map(un)))),a}function _n(e){return e.replace(/left|right|bottom|top/g,e=>$t[e])}function vn(e){return{top:0,right:0,bottom:0,left:0,...e}}function yn(e){return typeof e==`number`?{top:e,right:e,bottom:e,left:e}:vn(e)}function bn(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 xn(e,t,n){let{reference:r,floating:i}=e,a=G(t),o=sn(t),s=an(o),c=W(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(nn(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 Sn(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}=U(t,e),p=yn(f),m=o[d?u===`floating`?`reference`:`floating`:u],h=bn(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=bn(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 Cn=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}=xn(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??Sn},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}=xn(l,f,c)),n=-1)}return{x:u,y:d,placement:f,strategy:i,middlewareData:p}},wn=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}=U(e,t)||{};if(l==null)return{};let d=yn(u),f={x:n,y:r},p=sn(i),m=an(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,T=C/2-h[m]/2-1,E=B(d[_],T),D=B(d[v],T),O=E,k=C-h[m]-D,A=C/2-h[m]/2+w,j=tn(O,A,k),M=!c.arrow&&nn(i)!=null&&A!==j&&a.reference[m]/2-(A<O?E:D)-h[m]/2<0,N=M?A<O?A-O:A-k:0;return{[p]:f[p]+N,data:{[p]:j,centerOffset:A-j-N,...M&&{alignmentOffset:N}},reset:M}}}),Tn=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}=U(e,t);if((n=i.arrow)!=null&&n.alignmentOffset)return{};let g=W(r),_=G(o),v=W(o)===o,y=await(s.isRTL==null?void 0:s.isRTL(c.floating)),b=d||(v||!m?[_n(o)]:ln(o)),x=p!==`none`;!d&&x&&b.push(...gn(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=cn(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`&&_!==G(t))||T.every(e=>G(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=G(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 En(e,t){return{top:e.top-t.height,right:e.right-t.width,bottom:e.bottom-t.height,left:e.left-t.width}}function Dn(e){return Xt.some(t=>e[t]>=0)}var On=function(e){return e===void 0&&(e={}),{name:`hide`,options:e,async fn(t){let{rects:n,platform:r}=t,{strategy:i=`referenceHidden`,...a}=U(e,t);switch(i){case`referenceHidden`:{let e=En(await r.detectOverflow(t,{...a,elementContext:`reference`}),n.reference);return{data:{referenceHiddenOffsets:e,referenceHidden:Dn(e)}}}case`escaped`:{let e=En(await r.detectOverflow(t,{...a,altBoundary:!0}),n.floating);return{data:{escapedOffsets:e,escaped:Dn(e)}}}default:return{}}}}},kn=new Set([`left`,`top`]);async function An(e,t){let{placement:n,platform:r,elements:i}=e,a=await(r.isRTL==null?void 0:r.isRTL(i.floating)),o=W(n),s=nn(n),c=G(n)===`y`,l=kn.has(o)?-1:1,u=a&&c?-1:1,d=U(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 jn=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 An(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}}}}},Mn=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}=U(e,t),u={x:n,y:r},d=await a.detectOverflow(t,l),f=G(W(i)),p=rn(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=tn(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=tn(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}}}}}},Nn=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}=U(e,t),u={x:n,y:r},d=G(i),f=rn(d),p=u[f],m=u[d],h=U(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=kn.has(W(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}}}},Pn=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}=U(e,t),u=await o.detectOverflow(t,l),d=W(i),f=nn(i),p=G(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=B(h-u[g],v),x=B(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=V(u.left,0),t=V(u.right,0),n=V(u.top,0),r=V(u.bottom,0);p?w=m-2*(e!==0||t!==0?e+t:V(u.left,u.right)):C=h-2*(n!==0||r!==0?n+r:V(u.top,u.bottom))}await c({...t,availableWidth:w,availableHeight:C});let T=await o.getDimensions(s.floating);return m!==T.width||h!==T.height?{reset:{rects:!0}}:{}}}};function Fn(){return typeof window<`u`}function In(e){return Ln(e)?(e.nodeName||``).toLowerCase():`#document`}function K(e){var t;return(e==null||(t=e.ownerDocument)==null?void 0:t.defaultView)||window}function q(e){return((Ln(e)?e.ownerDocument:e.document)||window.document)?.documentElement}function Ln(e){return Fn()?e instanceof Node||e instanceof K(e).Node:!1}function J(e){return Fn()?e instanceof Element||e instanceof K(e).Element:!1}function Y(e){return Fn()?e instanceof HTMLElement||e instanceof K(e).HTMLElement:!1}function Rn(e){return!Fn()||typeof ShadowRoot>`u`?!1:e instanceof ShadowRoot||e instanceof K(e).ShadowRoot}var zn=new Set([`inline`,`contents`]);function Bn(e){let{overflow:t,overflowX:n,overflowY:r,display:i}=X(e);return/auto|scroll|overlay|hidden|clip/.test(t+r+n)&&!zn.has(i)}var Vn=new Set([`table`,`td`,`th`]);function Hn(e){return Vn.has(In(e))}var Un=[`:popover-open`,`:modal`];function Wn(e){return Un.some(t=>{try{return e.matches(t)}catch{return!1}})}var Gn=[`transform`,`translate`,`scale`,`rotate`,`perspective`],Kn=[`transform`,`translate`,`scale`,`rotate`,`perspective`,`filter`],qn=[`paint`,`layout`,`strict`,`content`];function Jn(e){let t=Xn(),n=J(e)?X(e):e;return Gn.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)||Kn.some(e=>(n.willChange||``).includes(e))||qn.some(e=>(n.contain||``).includes(e))}function Yn(e){let t=Z(e);for(;Y(t)&&!Qn(t);){if(Jn(t))return t;if(Wn(t))return null;t=Z(t)}return null}function Xn(){return typeof CSS>`u`||!CSS.supports?!1:CSS.supports(`-webkit-backdrop-filter`,`none`)}var Zn=new Set([`html`,`body`,`#document`]);function Qn(e){return Zn.has(In(e))}function X(e){return K(e).getComputedStyle(e)}function $n(e){return J(e)?{scrollLeft:e.scrollLeft,scrollTop:e.scrollTop}:{scrollLeft:e.scrollX,scrollTop:e.scrollY}}function Z(e){if(In(e)===`html`)return e;let t=e.assignedSlot||e.parentNode||Rn(e)&&e.host||q(e);return Rn(t)?t.host:t}function er(e){let t=Z(e);return Qn(t)?e.ownerDocument?e.ownerDocument.body:e.body:Y(t)&&Bn(t)?t:er(t)}function tr(e,t,n){t===void 0&&(t=[]),n===void 0&&(n=!0);let r=er(e),i=r===e.ownerDocument?.body,a=K(r);if(i){let e=nr(a);return t.concat(a,a.visualViewport||[],Bn(r)?r:[],e&&n?tr(e):[])}return t.concat(r,tr(r,[],n))}function nr(e){return e.parent&&Object.getPrototypeOf(e.parent)?e.frameElement:null}function rr(e){let t=X(e),n=parseFloat(t.width)||0,r=parseFloat(t.height)||0,i=Y(e),a=i?e.offsetWidth:n,o=i?e.offsetHeight:r,s=Zt(n)!==a||Zt(r)!==o;return s&&(n=a,r=o),{width:n,height:r,$:s}}function ir(e){return J(e)?e:e.contextElement}function ar(e){let t=ir(e);if(!Y(t))return H(1);let n=t.getBoundingClientRect(),{width:r,height:i,$:a}=rr(t),o=(a?Zt(n.width):n.width)/r,s=(a?Zt(n.height):n.height)/i;return(!o||!Number.isFinite(o))&&(o=1),(!s||!Number.isFinite(s))&&(s=1),{x:o,y:s}}var or=H(0);function sr(e){let t=K(e);return!Xn()||!t.visualViewport?or:{x:t.visualViewport.offsetLeft,y:t.visualViewport.offsetTop}}function cr(e,t,n){return t===void 0&&(t=!1),!n||t&&n!==K(e)?!1:t}function lr(e,t,n,r){t===void 0&&(t=!1),n===void 0&&(n=!1);let i=e.getBoundingClientRect(),a=ir(e),o=H(1);t&&(r?J(r)&&(o=ar(r)):o=ar(e));let s=cr(a,n,r)?sr(a):H(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=K(a),t=r&&J(r)?K(r):r,n=e,i=nr(n);for(;i&&r&&t!==n;){let e=ar(i),t=i.getBoundingClientRect(),r=X(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=K(i),i=nr(n)}}return bn({width:u,height:d,x:c,y:l})}function ur(e,t){let n=$n(e).scrollLeft;return t?t.left+n:lr(q(e)).left+n}function dr(e,t){let n=e.getBoundingClientRect();return{x:n.left+t.scrollLeft-ur(e,n),y:n.top+t.scrollTop}}function fr(e){let{elements:t,rect:n,offsetParent:r,strategy:i}=e,a=i===`fixed`,o=q(r),s=t?Wn(t.floating):!1;if(r===o||s&&a)return n;let c={scrollLeft:0,scrollTop:0},l=H(1),u=H(0),d=Y(r);if((d||!d&&!a)&&((In(r)!==`body`||Bn(o))&&(c=$n(r)),Y(r))){let e=lr(r);l=ar(r),u.x=e.x+r.clientLeft,u.y=e.y+r.clientTop}let f=o&&!d&&!a?dr(o,c):H(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 pr(e){return Array.from(e.getClientRects())}function mr(e){let t=q(e),n=$n(e),r=e.ownerDocument.body,i=V(t.scrollWidth,t.clientWidth,r.scrollWidth,r.clientWidth),a=V(t.scrollHeight,t.clientHeight,r.scrollHeight,r.clientHeight),o=-n.scrollLeft+ur(e),s=-n.scrollTop;return X(r).direction===`rtl`&&(o+=V(t.clientWidth,r.clientWidth)-i),{width:i,height:a,x:o,y:s}}var hr=25;function gr(e,t){let n=K(e),r=q(e),i=n.visualViewport,a=r.clientWidth,o=r.clientHeight,s=0,c=0;if(i){a=i.width,o=i.height;let e=Xn();(!e||e&&t===`fixed`)&&(s=i.offsetLeft,c=i.offsetTop)}let l=ur(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<=hr&&(a-=o)}else l<=hr&&(a+=l);return{width:a,height:o,x:s,y:c}}var _r=new Set([`absolute`,`fixed`]);function vr(e,t){let n=lr(e,!0,t===`fixed`),r=n.top+e.clientTop,i=n.left+e.clientLeft,a=Y(e)?ar(e):H(1);return{width:e.clientWidth*a.x,height:e.clientHeight*a.y,x:i*a.x,y:r*a.y}}function yr(e,t,n){let r;if(t===`viewport`)r=gr(e,n);else if(t===`document`)r=mr(q(e));else if(J(t))r=vr(t,n);else{let n=sr(e);r={x:t.x-n.x,y:t.y-n.y,width:t.width,height:t.height}}return bn(r)}function br(e,t){let n=Z(e);return n===t||!J(n)||Qn(n)?!1:X(n).position===`fixed`||br(n,t)}function xr(e,t){let n=t.get(e);if(n)return n;let r=tr(e,[],!1).filter(e=>J(e)&&In(e)!==`body`),i=null,a=X(e).position===`fixed`,o=a?Z(e):e;for(;J(o)&&!Qn(o);){let t=X(o),n=Jn(o);!n&&t.position===`fixed`&&(i=null),(a?!n&&!i:!n&&t.position===`static`&&i&&_r.has(i.position)||Bn(o)&&!n&&br(e,o))?r=r.filter(e=>e!==o):i=t,o=Z(o)}return t.set(e,r),r}function Sr(e){let{element:t,boundary:n,rootBoundary:r,strategy:i}=e,a=[...n===`clippingAncestors`?Wn(t)?[]:xr(t,this._c):[].concat(n),r],o=a[0],s=a.reduce((e,n)=>{let r=yr(t,n,i);return e.top=V(r.top,e.top),e.right=B(r.right,e.right),e.bottom=B(r.bottom,e.bottom),e.left=V(r.left,e.left),e},yr(t,o,i));return{width:s.right-s.left,height:s.bottom-s.top,x:s.left,y:s.top}}function Cr(e){let{width:t,height:n}=rr(e);return{width:t,height:n}}function wr(e,t,n){let r=Y(t),i=q(t),a=n===`fixed`,o=lr(e,!0,a,t),s={scrollLeft:0,scrollTop:0},c=H(0);function l(){c.x=ur(i)}if(r||!r&&!a)if((In(t)!==`body`||Bn(i))&&(s=$n(t)),r){let e=lr(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?dr(i,s):H(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 Tr(e){return X(e).position===`static`}function Er(e,t){if(!Y(e)||X(e).position===`fixed`)return null;if(t)return t(e);let n=e.offsetParent;return q(e)===n&&(n=n.ownerDocument.body),n}function Dr(e,t){let n=K(e);if(Wn(e))return n;if(!Y(e)){let t=Z(e);for(;t&&!Qn(t);){if(J(t)&&!Tr(t))return t;t=Z(t)}return n}let r=Er(e,t);for(;r&&Hn(r)&&Tr(r);)r=Er(r,t);return r&&Qn(r)&&Tr(r)&&!Jn(r)?n:r||Yn(e)||n}var Or=async function(e){let t=this.getOffsetParent||Dr,n=this.getDimensions,r=await n(e.floating);return{reference:wr(e.reference,await t(e.floating),e.strategy),floating:{x:0,y:0,width:r.width,height:r.height}}};function kr(e){return X(e).direction===`rtl`}var Ar={convertOffsetParentRelativeRectToViewportRelativeRect:fr,getDocumentElement:q,getClippingRect:Sr,getOffsetParent:Dr,getElementRects:Or,getClientRects:pr,getDimensions:Cr,getScale:ar,isElement:J,isRTL:kr};function jr(e,t){return e.x===t.x&&e.y===t.y&&e.width===t.width&&e.height===t.height}function Mr(e,t){let n=null,r,i=q(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=Qt(d),h=Qt(i.clientWidth-(u+f)),g=Qt(i.clientHeight-(d+p)),_=Qt(u),v={rootMargin:-m+`px `+-h+`px `+-g+`px `+-_+`px`,threshold:V(0,B(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&&!jr(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 Nr(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=ir(e),u=i||a?[...l?tr(l):[],...tr(t)]:[];u.forEach(e=>{i&&e.addEventListener(`scroll`,n,{passive:!0}),a&&e.addEventListener(`resize`,n)});let d=l&&s?Mr(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?lr(e):null;c&&g();function g(){let t=lr(e);h&&!jr(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 Pr=jn,Fr=Mn,Ir=Tn,Lr=Pn,Rr=On,zr=wn,Br=Nn,Vr=(e,t,n)=>{let r=new Map,i={platform:Ar,...n},a={...i.platform,_c:r};return Cn(e,t,{...i,platform:a})},Hr=typeof document<`u`?s.useLayoutEffect:function(){};function Ur(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(!Ur(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)&&!Ur(e[n],t[n]))return!1}return!0}return e!==e&&t!==t}function Wr(e){return typeof window>`u`?1:(e.ownerDocument.defaultView||window).devicePixelRatio||1}function Gr(e,t){let n=Wr(e);return Math.round(t*n)/n}function Kr(e){let t=s.useRef(e);return Hr(()=>{t.current=e}),t}function qr(e){e===void 0&&(e={});let{placement:t=`bottom`,strategy:n=`absolute`,middleware:r=[],platform:i,elements:{reference:a,floating:o}={},transform:c=!0,whileElementsMounted:l,open:u}=e,[d,f]=s.useState({x:0,y:0,strategy:n,placement:t,middlewareData:{},isPositioned:!1}),[p,m]=s.useState(r);Ur(p,r)||m(r);let[h,g]=s.useState(null),[_,v]=s.useState(null),y=s.useCallback(e=>{e!==C.current&&(C.current=e,g(e))},[]),b=s.useCallback(e=>{e!==w.current&&(w.current=e,v(e))},[]),x=a||h,S=o||_,C=s.useRef(null),w=s.useRef(null),T=s.useRef(d),E=l!=null,D=Kr(l),O=Kr(i),k=Kr(u),j=s.useCallback(()=>{if(!C.current||!w.current)return;let e={placement:t,strategy:n,middleware:p};O.current&&(e.platform=O.current),Vr(C.current,w.current,e).then(e=>{let t={...e,isPositioned:k.current!==!1};M.current&&!Ur(T.current,t)&&(T.current=t,A.flushSync(()=>{f(t)}))})},[p,t,n,O,k]);Hr(()=>{u===!1&&T.current.isPositioned&&(T.current.isPositioned=!1,f(e=>({...e,isPositioned:!1})))},[u]);let M=s.useRef(!1);Hr(()=>(M.current=!0,()=>{M.current=!1}),[]),Hr(()=>{if(x&&(C.current=x),S&&(w.current=S),x&&S){if(D.current)return D.current(x,S,j);j()}},[x,S,j,D,E]);let N=s.useMemo(()=>({reference:C,floating:w,setReference:y,setFloating:b}),[y,b]),P=s.useMemo(()=>({reference:x,floating:S}),[x,S]),F=s.useMemo(()=>{let e={position:n,left:0,top:0};if(!P.floating)return e;let t=Gr(P.floating,d.x),r=Gr(P.floating,d.y);return c?{...e,transform:`translate(`+t+`px, `+r+`px)`,...Wr(P.floating)>=1.5&&{willChange:`transform`}}:{position:n,left:t,top:r}},[n,c,P.floating,d.x,d.y]);return s.useMemo(()=>({...d,update:j,refs:N,elements:P,floatingStyles:F}),[d,j,N,P,F])}var Jr=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?{}:zr({element:r.current,padding:i}).fn(n):r?zr({element:r,padding:i}).fn(n):{}}}},Yr=(e,t)=>({...Pr(e),options:[e,t]}),Xr=(e,t)=>({...Fr(e),options:[e,t]}),Zr=(e,t)=>({...Br(e),options:[e,t]}),Qr=(e,t)=>({...Ir(e),options:[e,t]}),$r=(e,t)=>({...Lr(e),options:[e,t]}),ei=(e,t)=>({...Rr(e),options:[e,t]}),ti=(e,t)=>({...Jr(e),options:[e,t]}),ni=`Arrow`,ri=s.forwardRef((e,t)=>{let{children:n,width:r=10,height:i=5,...a}=e;return(0,d.jsx)(j.svg,{...a,ref:t,width:r,height:i,viewBox:`0 0 30 10`,preserveAspectRatio:`none`,children:e.asChild?n:(0,d.jsx)(`polygon`,{points:`0,0 30,0 15,10`})})});ri.displayName=ni;var ii=ri;function ai(e){let[t,n]=s.useState(void 0);return h(()=>{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 oi=`Popper`,[si,ci]=p(oi),[li,ui]=si(oi),di=e=>{let{__scopePopper:t,children:n}=e,[r,i]=s.useState(null);return(0,d.jsx)(li,{scope:t,anchor:r,onAnchorChange:i,children:n})};di.displayName=oi;var fi=`PopperAnchor`,pi=s.forwardRef((e,t)=>{let{__scopePopper:n,virtualRef:r,...i}=e,a=ui(fi,n),o=s.useRef(null),c=u(t,o),l=s.useRef(null);return s.useEffect(()=>{let e=l.current;l.current=r?.current||o.current,e!==l.current&&a.onAnchorChange(l.current)}),r?null:(0,d.jsx)(j.div,{...i,ref:c})});pi.displayName=fi;var mi=`PopperContent`,[hi,gi]=si(mi),_i=s.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:f=[],collisionPadding:p=0,sticky:m=`partial`,hideWhenDetached:g=!1,updatePositionStrategy:_=`optimized`,onPlaced:v,...y}=e,b=ui(mi,n),[x,S]=s.useState(null),C=u(t,e=>S(e)),[w,T]=s.useState(null),E=ai(w),D=E?.width??0,O=E?.height??0,k=r+(a===`center`?``:`-`+a),A=typeof p==`number`?p:{top:0,right:0,bottom:0,left:0,...p},M=Array.isArray(f)?f:[f],P=M.length>0,F={padding:A,boundary:M.filter(xi),altBoundary:P},{refs:ee,floatingStyles:te,placement:ne,isPositioned:I,middlewareData:L}=qr({strategy:`fixed`,placement:k,whileElementsMounted:(...e)=>Nr(...e,{animationFrame:_===`always`}),elements:{reference:b.anchor},middleware:[Yr({mainAxis:i+O,alignmentAxis:o}),l&&Xr({mainAxis:!0,crossAxis:!1,limiter:m===`partial`?Zr():void 0,...F}),l&&Qr({...F}),$r({...F,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&&ti({element:w,padding:c}),Si({arrowWidth:D,arrowHeight:O}),g&&ei({strategy:`referenceHidden`,...F})]}),[re,ie]=Ci(ne),ae=N(v);h(()=>{I&&ae?.()},[I,ae]);let oe=L.arrow?.x,se=L.arrow?.y,ce=L.arrow?.centerOffset!==0,[le,ue]=s.useState();return h(()=>{x&&ue(window.getComputedStyle(x).zIndex)},[x]),(0,d.jsx)(`div`,{ref:ee.setFloating,"data-radix-popper-content-wrapper":``,style:{...te,transform:I?te.transform:`translate(0, -200%)`,minWidth:`max-content`,zIndex:le,"--radix-popper-transform-origin":[L.transformOrigin?.x,L.transformOrigin?.y].join(` `),...L.hide?.referenceHidden&&{visibility:`hidden`,pointerEvents:`none`}},dir:e.dir,children:(0,d.jsx)(hi,{scope:n,placedSide:re,onArrowChange:T,arrowX:oe,arrowY:se,shouldHideArrow:ce,children:(0,d.jsx)(j.div,{"data-side":re,"data-align":ie,...y,ref:C,style:{...y.style,animation:I?void 0:`none`}})})})});_i.displayName=mi;var vi=`PopperArrow`,yi={top:`bottom`,right:`left`,bottom:`top`,left:`right`},bi=s.forwardRef(function(e,t){let{__scopePopper:n,...r}=e,i=gi(vi,n),a=yi[i.placedSide];return(0,d.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,d.jsx)(ii,{...r,ref:t,style:{...r.style,display:`block`}})})});bi.displayName=vi;function xi(e){return e!==null}var Si=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]=Ci(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 Ci(e){let[t,n=`center`]=e.split(`-`);return[t,n]}var wi=di,Ti=pi,Ei=_i,Di=bi;function Oi(e,[t,n]){return Math.min(n,Math.max(t,e))}function ki(e){let t=e+`CollectionProvider`,[n,r]=p(t),[i,a]=n(t,{collectionRef:{current:null},itemMap:new Map}),o=e=>{let{scope:t,children:n}=e,r=s.useRef(null),a=s.useRef(new Map).current;return(0,d.jsx)(i,{scope:t,itemMap:a,collectionRef:r,children:n})};o.displayName=t;let c=e+`CollectionSlot`,l=C(c),f=s.forwardRef((e,t)=>{let{scope:n,children:r}=e;return(0,d.jsx)(l,{ref:u(t,a(c,n).collectionRef),children:r})});f.displayName=c;let m=e+`CollectionItemSlot`,h=`data-radix-collection-item`,g=C(m),_=s.forwardRef((e,t)=>{let{scope:n,children:r,...i}=e,o=s.useRef(null),c=u(t,o),l=a(m,n);return s.useEffect(()=>(l.itemMap.set(o,{ref:o,...i}),()=>void l.itemMap.delete(o))),(0,d.jsx)(g,{[h]:``,ref:c,children:r})});_.displayName=m;function v(t){let n=a(e+`CollectionConsumer`,t);return s.useCallback(()=>{let e=n.collectionRef.current;if(!e)return[];let t=Array.from(e.querySelectorAll(`[${h}]`));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:f,ItemSlot:_},v,r]}var Ai=s.createContext(void 0);function ji(e){let t=s.useContext(Ai);return e||t||`ltr`}function Mi(e){let t=s.useRef({value:e,previous:e});return s.useMemo(()=>(t.current.value!==e&&(t.current.previous=t.current.value,t.current.value=e),t.current.previous),[e])}var Ni=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`}),Pi=`VisuallyHidden`,Fi=s.forwardRef((e,t)=>(0,d.jsx)(j.span,{...e,ref:t,style:{...Ni,...e.style}}));Fi.displayName=Pi;var Ii=Fi,Li=[` `,`Enter`,`ArrowUp`,`ArrowDown`],Ri=[` `,`Enter`],zi=`Select`,[Bi,Vi,Hi]=ki(zi),[Ui,Wi]=p(zi,[Hi,ci]),Gi=ci(),[Ki,Q]=Ui(zi),[qi,Ji]=Ui(zi),Yi=e=>{let{__scopeSelect:t,children:n,open:r,defaultOpen:i,onOpenChange:a,value:o,defaultValue:c,onValueChange:l,dir:u,name:f,autoComplete:p,disabled:m,required:h,form:g}=e,_=Gi(t),[y,x]=s.useState(null),[S,C]=s.useState(null),[w,T]=s.useState(!1),E=ji(u),[D,O]=b({prop:r,defaultProp:i??!1,onChange:a,caller:zi}),[k,A]=b({prop:o,defaultProp:c,onChange:l,caller:zi}),j=s.useRef(null),M=y?g||!!y.closest(`form`):!0,[N,P]=s.useState(new Set),F=Array.from(N).map(e=>e.props.value).join(`;`);return(0,d.jsx)(wi,{..._,children:(0,d.jsxs)(Ki,{required:h,scope:t,trigger:y,onTriggerChange:x,valueNode:S,onValueNodeChange:C,valueNodeHasChildren:w,onValueNodeHasChildrenChange:T,contentId:v(),value:k,onValueChange:A,open:D,onOpenChange:O,dir:E,triggerPointerDownPosRef:j,disabled:m,children:[(0,d.jsx)(Bi.Provider,{scope:t,children:(0,d.jsx)(qi,{scope:e.__scopeSelect,onNativeOptionAdd:s.useCallback(e=>{P(t=>new Set(t).add(e))},[]),onNativeOptionRemove:s.useCallback(e=>{P(t=>{let n=new Set(t);return n.delete(e),n})},[]),children:n})}),M?(0,d.jsxs)(Ua,{"aria-hidden":!0,required:h,tabIndex:-1,name:f,autoComplete:p,value:k,onChange:e=>A(e.target.value),disabled:m,form:g,children:[k===void 0?(0,d.jsx)(`option`,{value:``}):null,Array.from(N)]},F):null]})})};Yi.displayName=zi;var Xi=`SelectTrigger`,Zi=s.forwardRef((e,t)=>{let{__scopeSelect:n,disabled:r=!1,...i}=e,a=Gi(n),c=Q(Xi,n),l=c.disabled||r,f=u(t,c.onTriggerChange),p=Vi(n),m=s.useRef(`touch`),[h,g,_]=Ga(e=>{let t=p().filter(e=>!e.disabled),n=Ka(t,e,t.find(e=>e.value===c.value));n!==void 0&&c.onValueChange(n.value)}),v=e=>{l||(c.onOpenChange(!0),_()),e&&(c.triggerPointerDownPosRef.current={x:Math.round(e.pageX),y:Math.round(e.pageY)})};return(0,d.jsx)(Ti,{asChild:!0,...a,children:(0,d.jsx)(j.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":Wa(c.value)?``:void 0,...i,ref:f,onClick:o(i.onClick,e=>{e.currentTarget.focus(),m.current!==`mouse`&&v(e)}),onPointerDown:o(i.onPointerDown,e=>{m.current=e.pointerType;let t=e.target;t.hasPointerCapture(e.pointerId)&&t.releasePointerCapture(e.pointerId),e.button===0&&e.ctrlKey===!1&&e.pointerType===`mouse`&&(v(e),e.preventDefault())}),onKeyDown:o(i.onKeyDown,e=>{let t=h.current!==``;!(e.ctrlKey||e.altKey||e.metaKey)&&e.key.length===1&&g(e.key),!(t&&e.key===` `)&&Li.includes(e.key)&&(v(),e.preventDefault())})})})});Zi.displayName=Xi;var Qi=`SelectValue`,$i=s.forwardRef((e,t)=>{let{__scopeSelect:n,className:r,style:i,children:a,placeholder:o=``,...s}=e,c=Q(Qi,n),{onValueNodeHasChildrenChange:l}=c,f=a!==void 0,p=u(t,c.onValueNodeChange);return h(()=>{l(f)},[l,f]),(0,d.jsx)(j.span,{...s,ref:p,style:{pointerEvents:`none`},children:Wa(c.value)?(0,d.jsx)(d.Fragment,{children:o}):a})});$i.displayName=Qi;var ea=`SelectIcon`,ta=s.forwardRef((e,t)=>{let{__scopeSelect:n,children:r,...i}=e;return(0,d.jsx)(j.span,{"aria-hidden":!0,...i,ref:t,children:r||`▼`})});ta.displayName=ea;var na=`SelectPortal`,ra=e=>(0,d.jsx)(Ee,{asChild:!0,...e});ra.displayName=na;var ia=`SelectContent`,aa=s.forwardRef((e,t)=>{let n=Q(ia,e.__scopeSelect),[r,i]=s.useState();if(h(()=>{i(new DocumentFragment)},[]),!n.open){let t=r;return t?A.createPortal((0,d.jsx)(oa,{scope:e.__scopeSelect,children:(0,d.jsx)(Bi.Slot,{scope:e.__scopeSelect,children:(0,d.jsx)(`div`,{children:e.children})})}),t):null}return(0,d.jsx)(ua,{...e,ref:t})});aa.displayName=ia;var $=10,[oa,sa]=Ui(ia),ca=`SelectContentImpl`,la=C(`SelectContent.RemoveScroll`),ua=s.forwardRef((e,t)=>{let{__scopeSelect:n,position:r=`item-aligned`,onCloseAutoFocus:i,onEscapeKeyDown:a,onPointerDownOutside:c,side:l,sideOffset:f,align:p,alignOffset:m,arrowPadding:h,collisionBoundary:g,collisionPadding:_,sticky:v,hideWhenDetached:y,avoidCollisions:b,...x}=e,S=Q(ia,n),[C,w]=s.useState(null),[T,E]=s.useState(null),D=u(t,e=>w(e)),[O,k]=s.useState(null),[A,j]=s.useState(null),M=Vi(n),[N,P]=s.useState(!1),F=s.useRef(!1);s.useEffect(()=>{if(C)return Kt(C)},[C]),Oe();let ee=s.useCallback(e=>{let[t,...n]=M().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&&T&&(T.scrollTop=0),n===r&&T&&(T.scrollTop=T.scrollHeight),n?.focus(),document.activeElement!==i))return},[M,T]),te=s.useCallback(()=>ee([O,C]),[ee,O,C]);s.useEffect(()=>{N&&te()},[N,te]);let{onOpenChange:ne,triggerPointerDownPosRef:I}=S;s.useEffect(()=>{if(C){let e={x:0,y:0},t=t=>{e={x:Math.abs(Math.round(t.pageX)-(I.current?.x??0)),y:Math.abs(Math.round(t.pageY)-(I.current?.y??0))}},n=n=>{e.x<=10&&e.y<=10?n.preventDefault():C.contains(n.target)||ne(!1),document.removeEventListener(`pointermove`,t),I.current=null};return I.current!==null&&(document.addEventListener(`pointermove`,t),document.addEventListener(`pointerup`,n,{capture:!0,once:!0})),()=>{document.removeEventListener(`pointermove`,t),document.removeEventListener(`pointerup`,n,{capture:!0})}}},[C,ne,I]),s.useEffect(()=>{let e=()=>ne(!1);return window.addEventListener(`blur`,e),window.addEventListener(`resize`,e),()=>{window.removeEventListener(`blur`,e),window.removeEventListener(`resize`,e)}},[ne]);let[L,ie]=Ga(e=>{let t=M().filter(e=>!e.disabled),n=Ka(t,e,t.find(e=>e.ref.current===document.activeElement));n&&setTimeout(()=>n.ref.current.focus())}),ae=s.useCallback((e,t,n)=>{let r=!F.current&&!n;(S.value!==void 0&&S.value===t||r)&&(k(e),r&&(F.current=!0))},[S.value]),oe=s.useCallback(()=>C?.focus(),[C]),se=s.useCallback((e,t,n)=>{let r=!F.current&&!n;(S.value!==void 0&&S.value===t||r)&&j(e)},[S.value]),ce=r===`popper`?ma:fa,le=ce===ma?{side:l,sideOffset:f,align:p,alignOffset:m,arrowPadding:h,collisionBoundary:g,collisionPadding:_,sticky:v,hideWhenDetached:y,avoidCollisions:b}:{};return(0,d.jsx)(oa,{scope:n,content:C,viewport:T,onViewportChange:E,itemRefCallback:ae,selectedItem:O,onItemLeave:oe,itemTextRefCallback:se,focusSelectedItem:te,selectedItemText:A,position:r,isPositioned:N,searchRef:L,children:(0,d.jsx)(Lt,{as:la,allowPinchZoom:!0,children:(0,d.jsx)(me,{asChild:!0,trapped:S.open,onMountAutoFocus:e=>{e.preventDefault()},onUnmountAutoFocus:o(i,e=>{S.trigger?.focus({preventScroll:!0}),e.preventDefault()}),children:(0,d.jsx)(re,{asChild:!0,disableOutsidePointerEvents:!0,onEscapeKeyDown:a,onPointerDownOutside:c,onFocusOutside:e=>e.preventDefault(),onDismiss:()=>S.onOpenChange(!1),children:(0,d.jsx)(ce,{role:`listbox`,id:S.contentId,"data-state":S.open?`open`:`closed`,dir:S.dir,onContextMenu:e=>e.preventDefault(),...x,...le,onPlaced:()=>P(!0),ref:D,style:{display:`flex`,flexDirection:`column`,outline:`none`,...x.style},onKeyDown:o(x.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=M().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(()=>ee(t)),e.preventDefault()}})})})})})})});ua.displayName=ca;var da=`SelectItemAlignedPosition`,fa=s.forwardRef((e,t)=>{let{__scopeSelect:n,onPlaced:r,...i}=e,a=Q(ia,n),o=sa(ia,n),[c,l]=s.useState(null),[f,p]=s.useState(null),m=u(t,e=>p(e)),g=Vi(n),_=s.useRef(!1),v=s.useRef(!0),{viewport:y,selectedItem:b,selectedItemText:x,focusSelectedItem:S}=o,C=s.useCallback(()=>{if(a.trigger&&a.valueNode&&c&&f&&y&&b&&x){let e=a.trigger.getBoundingClientRect(),t=f.getBoundingClientRect(),n=a.valueNode.getBoundingClientRect(),i=x.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-$,d=Oi(a,[$,Math.max($,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-$,d=Oi(a,[$,Math.max($,u-l)]);c.style.minWidth=s+`px`,c.style.right=d+`px`}let o=g(),s=window.innerHeight-$*2,l=y.scrollHeight,u=window.getComputedStyle(f),d=parseInt(u.borderTopWidth,10),p=parseInt(u.paddingTop,10),m=parseInt(u.borderBottomWidth,10),h=parseInt(u.paddingBottom,10),v=d+p+l+h+m,S=Math.min(b.offsetHeight*5,v),C=window.getComputedStyle(y),w=parseInt(C.paddingTop,10),T=parseInt(C.paddingBottom,10),E=e.top+e.height/2-$,D=s-E,O=b.offsetHeight/2,k=b.offsetTop+O,A=d+p+k,j=v-A;if(A<=E){let e=o.length>0&&b===o[o.length-1].ref.current;c.style.bottom=`0px`;let t=f.clientHeight-y.offsetTop-y.offsetHeight,n=A+Math.max(D,O+(e?T:0)+t+m);c.style.height=n+`px`}else{let e=o.length>0&&b===o[0].ref.current;c.style.top=`0px`;let t=Math.max(E,d+y.offsetTop+(e?w:0)+O)+j;c.style.height=t+`px`,y.scrollTop=A-E+y.offsetTop}c.style.margin=`${$}px 0`,c.style.minHeight=S+`px`,c.style.maxHeight=s+`px`,r?.(),requestAnimationFrame(()=>_.current=!0)}},[g,a.trigger,a.valueNode,c,f,y,b,x,a.dir,r]);h(()=>C(),[C]);let[w,T]=s.useState();return h(()=>{f&&T(window.getComputedStyle(f).zIndex)},[f]),(0,d.jsx)(ha,{scope:n,contentWrapper:c,shouldExpandOnScrollRef:_,onScrollButtonChange:s.useCallback(e=>{e&&v.current===!0&&(C(),S?.(),v.current=!1)},[C,S]),children:(0,d.jsx)(`div`,{ref:l,style:{display:`flex`,flexDirection:`column`,position:`fixed`,zIndex:w},children:(0,d.jsx)(j.div,{...i,ref:m,style:{boxSizing:`border-box`,maxHeight:`100%`,...i.style}})})})});fa.displayName=da;var pa=`SelectPopperPosition`,ma=s.forwardRef((e,t)=>{let{__scopeSelect:n,align:r=`start`,collisionPadding:i=$,...a}=e,o=Gi(n);return(0,d.jsx)(Ei,{...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)`}})});ma.displayName=pa;var[ha,ga]=Ui(ia,{}),_a=`SelectViewport`,va=s.forwardRef((e,t)=>{let{__scopeSelect:n,nonce:r,...i}=e,a=sa(_a,n),c=ga(_a,n),l=u(t,a.onViewportChange),f=s.useRef(0);return(0,d.jsxs)(d.Fragment,{children:[(0,d.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,d.jsx)(Bi.Slot,{scope:n,children:(0,d.jsx)(j.div,{"data-radix-select-viewport":``,role:`presentation`,...i,ref:l,style:{position:`relative`,flex:1,overflow:`hidden auto`,...i.style},onScroll:o(i.onScroll,e=>{let t=e.currentTarget,{contentWrapper:n,shouldExpandOnScrollRef:r}=c;if(r?.current&&n){let e=Math.abs(f.current-t.scrollTop);if(e>0){let r=window.innerHeight-$*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`)}}}f.current=t.scrollTop})})})]})});va.displayName=_a;var ya=`SelectGroup`,[ba,xa]=Ui(ya),Sa=s.forwardRef((e,t)=>{let{__scopeSelect:n,...r}=e,i=v();return(0,d.jsx)(ba,{scope:n,id:i,children:(0,d.jsx)(j.div,{role:`group`,"aria-labelledby":i,...r,ref:t})})});Sa.displayName=ya;var Ca=`SelectLabel`,wa=s.forwardRef((e,t)=>{let{__scopeSelect:n,...r}=e,i=xa(Ca,n);return(0,d.jsx)(j.div,{id:i.id,...r,ref:t})});wa.displayName=Ca;var Ta=`SelectItem`,[Ea,Da]=Ui(Ta),Oa=s.forwardRef((e,t)=>{let{__scopeSelect:n,value:r,disabled:i=!1,textValue:a,...c}=e,l=Q(Ta,n),f=sa(Ta,n),p=l.value===r,[m,h]=s.useState(a??``),[g,_]=s.useState(!1),y=u(t,e=>f.itemRefCallback?.(e,r,i)),b=v(),x=s.useRef(`touch`),S=()=>{i||(l.onValueChange(r),l.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,d.jsx)(Ea,{scope:n,value:r,disabled:i,textId:b,isSelected:p,onItemTextChange:s.useCallback(e=>{h(t=>t||(e?.textContent??``).trim())},[]),children:(0,d.jsx)(Bi.ItemSlot,{scope:n,value:r,disabled:i,textValue:m,children:(0,d.jsx)(j.div,{role:`option`,"aria-labelledby":b,"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:y,onFocus:o(c.onFocus,()=>_(!0)),onBlur:o(c.onBlur,()=>_(!1)),onClick:o(c.onClick,()=>{x.current!==`mouse`&&S()}),onPointerUp:o(c.onPointerUp,()=>{x.current===`mouse`&&S()}),onPointerDown:o(c.onPointerDown,e=>{x.current=e.pointerType}),onPointerMove:o(c.onPointerMove,e=>{x.current=e.pointerType,i?f.onItemLeave?.():x.current===`mouse`&&e.currentTarget.focus({preventScroll:!0})}),onPointerLeave:o(c.onPointerLeave,e=>{e.currentTarget===document.activeElement&&f.onItemLeave?.()}),onKeyDown:o(c.onKeyDown,e=>{f.searchRef?.current!==``&&e.key===` `||(Ri.includes(e.key)&&S(),e.key===` `&&e.preventDefault())})})})})});Oa.displayName=Ta;var ka=`SelectItemText`,Aa=s.forwardRef((e,t)=>{let{__scopeSelect:n,className:r,style:i,...a}=e,o=Q(ka,n),c=sa(ka,n),l=Da(ka,n),f=Ji(ka,n),[p,m]=s.useState(null),g=u(t,e=>m(e),l.onItemTextChange,e=>c.itemTextRefCallback?.(e,l.value,l.disabled)),_=p?.textContent,v=s.useMemo(()=>(0,d.jsx)(`option`,{value:l.value,disabled:l.disabled,children:_},l.value),[l.disabled,l.value,_]),{onNativeOptionAdd:y,onNativeOptionRemove:b}=f;return h(()=>(y(v),()=>b(v)),[y,b,v]),(0,d.jsxs)(d.Fragment,{children:[(0,d.jsx)(j.span,{id:l.textId,...a,ref:g}),l.isSelected&&o.valueNode&&!o.valueNodeHasChildren?A.createPortal(a.children,o.valueNode):null]})});Aa.displayName=ka;var ja=`SelectItemIndicator`,Ma=s.forwardRef((e,t)=>{let{__scopeSelect:n,...r}=e;return Da(ja,n).isSelected?(0,d.jsx)(j.span,{"aria-hidden":!0,...r,ref:t}):null});Ma.displayName=ja;var Na=`SelectScrollUpButton`,Pa=s.forwardRef((e,t)=>{let n=sa(Na,e.__scopeSelect),r=ga(Na,e.__scopeSelect),[i,a]=s.useState(!1),o=u(t,r.onScrollButtonChange);return h(()=>{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,d.jsx)(La,{...e,ref:o,onAutoScroll:()=>{let{viewport:e,selectedItem:t}=n;e&&t&&(e.scrollTop-=t.offsetHeight)}}):null});Pa.displayName=Na;var Fa=`SelectScrollDownButton`,Ia=s.forwardRef((e,t)=>{let n=sa(Fa,e.__scopeSelect),r=ga(Fa,e.__scopeSelect),[i,a]=s.useState(!1),o=u(t,r.onScrollButtonChange);return h(()=>{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,d.jsx)(La,{...e,ref:o,onAutoScroll:()=>{let{viewport:e,selectedItem:t}=n;e&&t&&(e.scrollTop+=t.offsetHeight)}}):null});Ia.displayName=Fa;var La=s.forwardRef((e,t)=>{let{__scopeSelect:n,onAutoScroll:r,...i}=e,a=sa(`SelectScrollButton`,n),c=s.useRef(null),l=Vi(n),u=s.useCallback(()=>{c.current!==null&&(window.clearInterval(c.current),c.current=null)},[]);return s.useEffect(()=>()=>u(),[u]),h(()=>{l().find(e=>e.ref.current===document.activeElement)?.ref.current?.scrollIntoView({block:`nearest`})},[l]),(0,d.jsx)(j.div,{"aria-hidden":!0,...i,ref:t,style:{flexShrink:0,...i.style},onPointerDown:o(i.onPointerDown,()=>{c.current===null&&(c.current=window.setInterval(r,50))}),onPointerMove:o(i.onPointerMove,()=>{a.onItemLeave?.(),c.current===null&&(c.current=window.setInterval(r,50))}),onPointerLeave:o(i.onPointerLeave,()=>{u()})})}),Ra=`SelectSeparator`,za=s.forwardRef((e,t)=>{let{__scopeSelect:n,...r}=e;return(0,d.jsx)(j.div,{"aria-hidden":!0,...r,ref:t})});za.displayName=Ra;var Ba=`SelectArrow`,Va=s.forwardRef((e,t)=>{let{__scopeSelect:n,...r}=e,i=Gi(n),a=Q(Ba,n),o=sa(Ba,n);return a.open&&o.position===`popper`?(0,d.jsx)(Di,{...i,...r,ref:t}):null});Va.displayName=Ba;var Ha=`SelectBubbleInput`,Ua=s.forwardRef(({__scopeSelect:e,value:t,...n},r)=>{let i=s.useRef(null),a=u(r,i),o=Mi(t);return s.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,d.jsx)(j.select,{...n,style:{...Ni,...n.style},ref:a,defaultValue:t})});Ua.displayName=Ha;function Wa(e){return e===``||e===void 0}function Ga(e){let t=N(e),n=s.useRef(``),r=s.useRef(0),i=s.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=s.useCallback(()=>{n.current=``,window.clearTimeout(r.current)},[]);return s.useEffect(()=>()=>window.clearTimeout(r.current),[]),[n,i,a]}function Ka(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=qa(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 qa(e,t){return e.map((n,r)=>e[(t+r)%e.length])}var Ja=Yi,Ya=Zi,Xa=$i,Za=ta,Qa=ra,$a=aa,eo=va,to=Sa,no=wa,ro=Oa,io=Aa,ao=Ma,oo=Pa,so=Ia,co=za,lo=Ja,uo=Xa,fo=s.forwardRef(({className:e,children:t,...n},i)=>(0,d.jsxs)(Ya,{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,d.jsx)(Za,{asChild:!0,children:(0,d.jsx)(Jt,{className:`h-4 w-4 opacity-50`})})]}));fo.displayName=Ya.displayName;var po=s.forwardRef(({className:e,...t},n)=>(0,d.jsx)(oo,{ref:n,className:r(`flex cursor-default items-center justify-center py-1`,e),...t,children:(0,d.jsx)(Yt,{className:`h-4 w-4`})}));po.displayName=oo.displayName;var mo=s.forwardRef(({className:e,...t},n)=>(0,d.jsx)(so,{ref:n,className:r(`flex cursor-default items-center justify-center py-1`,e),...t,children:(0,d.jsx)(Jt,{className:`h-4 w-4`})}));mo.displayName=so.displayName;var ho=s.forwardRef(({className:e,children:t,position:n=`popper`,...i},a)=>(0,d.jsx)(Qa,{children:(0,d.jsxs)($a,{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,d.jsx)(po,{}),(0,d.jsx)(eo,{className:r(`p-1`,n===`popper`&&`h-[var(--radix-select-trigger-height)] w-full min-w-[var(--radix-select-trigger-width)]`),children:t}),(0,d.jsx)(mo,{})]})}));ho.displayName=$a.displayName;var go=s.forwardRef(({className:e,...t},n)=>(0,d.jsx)(no,{ref:n,className:r(`px-2 py-1.5 text-sm font-semibold`,e),...t}));go.displayName=no.displayName;var _o=s.forwardRef(({className:e,children:t,...n},i)=>(0,d.jsxs)(ro,{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,d.jsx)(`span`,{className:`absolute right-2 flex h-3.5 w-3.5 items-center justify-center`,children:(0,d.jsx)(ao,{children:(0,d.jsx)(qt,{className:`h-4 w-4`})})}),(0,d.jsx)(io,{children:t})]}));_o.displayName=ro.displayName;var vo=s.forwardRef(({className:e,...t},n)=>(0,d.jsx)(co,{ref:n,className:r(`-mx-1 my-1 h-px bg-muted`,e),...t}));vo.displayName=co.displayName;export{Kt as A,v as B,Di as C,Yt as D,ci as E,re as F,o as G,f as H,j as I,C as L,Oe as M,Ee as N,Jt as O,me as P,E as R,Ti as S,wi as T,p as U,h as V,u as W,co as _,uo as a,eo as b,Za as c,io as d,no as f,oo as g,so as h,fo as i,Lt as j,qt as k,ro as l,Ja as m,ho as n,$a as o,Qa as p,_o as r,to as s,lo as t,ao as u,Ya as v,Ei as w,Ii as x,Xa as y,b as z};
@@ -1 +0,0 @@
1
- import{_ as e,m as t,p as n,u as r}from"./i18n-CpTZLchQ.js";import{i}from"./dist-BruyLa92.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};
@@ -1 +0,0 @@
1
- import{p as e,u as t}from"./i18n-CpTZLchQ.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 +0,0 @@
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 +0,0 @@
1
- import{_ as e,m as t,p as n,u as r}from"./i18n-CpTZLchQ.js";import{i}from"./dist-BruyLa92.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 +0,0 @@
1
- import{_ as e,i as t,m as n,p as r}from"./i18n-CpTZLchQ.js";import{a as i,u as a}from"./client-C-8fH7-c.js";import{n as o,r as s,t as c}from"./infiniteQueryBehavior-CyER9hv0.js";import{a as l,i as u,n as d,r as f,t as p}from"./select-CVz0t7MF.js";import{t as m}from"./createLucideIcon-dy5ie7Ox.js";import{t as h}from"./skeleton-D5rdKvzy.js";var g=class extends a{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:s()})}getOptimisticResult(e){return e.behavior=s(),super.getOptimisticResult(e)}fetchNextPage(e){return this.fetch({...e,meta:{fetchMore:{direction:`forward`}}})}fetchPreviousPage(e){return this.fetch({...e,meta:{fetchMore:{direction:`backward`}}})}createResult(e,t){let{state:n}=e,r=super.createResult(e,t),{isFetching:i,isRefetching:a,isError:s,isRefetchError:l}=r,u=n.fetchMeta?.fetchMore?.direction,d=s&&u===`forward`,f=i&&u===`forward`,p=s&&u===`backward`,m=i&&u===`backward`;return{...r,fetchNextPage:this.fetchNextPage,fetchPreviousPage:this.fetchPreviousPage,hasNextPage:c(t,n.data),hasPreviousPage:o(t,n.data),isFetchNextPageError:d,isFetchingNextPage:f,isFetchPreviousPageError:p,isFetchingPreviousPage:m,isRefetchError:l&&!d&&!p,isRefetching:a&&!f&&!m}}};function _(e,t){return i(e,g,t)}var v=m(`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)(p,{value:e.sort,onValueChange:t=>e.onSortChange(t),children:[(0,b.jsx)(u,{className:`h-9 w-[150px] shrink-0 rounded-lg`,children:(0,b.jsx)(l,{})}),(0,b.jsxs)(d,{children:[(0,b.jsx)(f,{value:`relevance`,children:t(`marketplaceSortRelevance`)}),(0,b.jsx)(f,{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};
@@ -1 +0,0 @@
1
- import{_ as e,i as t,m as n,p as r}from"./i18n-CpTZLchQ.js";import{r as i}from"./dist-BruyLa92.js";import{_t as a,bt as o,gt as s,ht as c,vt as l,yt as u}from"./index-zDZfXoI4.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)(c,{open:e,onOpenChange:n,children:(0,f.jsxs)(s,{className:`[&>:last-child]:hidden`,onCloseAutoFocus:e=>e.preventDefault(),children:[(0,f.jsxs)(u,{children:[(0,f.jsx)(o,{children:r}),d?(0,f.jsx)(a,{children:d}):null]}),(0,f.jsxs)(l,{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 +0,0 @@
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 +0,0 @@
1
- import{t as e}from"./createLucideIcon-dy5ie7Ox.js";var t=e(`X`,[[`path`,{d:`M18 6 6 18`,key:`1bl5f8`}],[`path`,{d:`m6 6 12 12`,key:`d8bk6v`}]]);export{t};
package/src/app.tsx DELETED
@@ -1,271 +0,0 @@
1
- import { lazy, Suspense } from "react";
2
- import { QueryClientProvider } from "@tanstack/react-query";
3
- import { AccountPanel } from "@/account/components/account-panel";
4
- import { appQueryClient } from "@/app-query-client";
5
- import { LoginPage } from "@/components/auth/login-page";
6
- import { AppLayout } from "@/components/layout/AppLayout";
7
- import {
8
- isTransientAuthStatusBootstrapError,
9
- useAuthStatus,
10
- } from "@/hooks/use-auth";
11
- import { useRealtimeQueryBridge } from "@/hooks/use-realtime-query-bridge";
12
- import { AppPresenterProvider } from "@/presenter/app-presenter-context";
13
- import {
14
- PwaInstallBanner,
15
- PwaUpdateBanner,
16
- } from "@/pwa/components/pwa-install-entry";
17
- import { startNextClawPwa } from "@/pwa/register-pwa";
18
- import { Toaster } from "sonner";
19
- import { Routes, Route, Navigate } from "react-router-dom";
20
- import { useEffect } from "react";
21
-
22
- const ModelConfigPage = lazy(async () => ({
23
- default: (await import("@/components/config/ModelConfig")).ModelConfig,
24
- }));
25
- const ChatPage = lazy(async () => ({
26
- default: (await import("@/components/chat/chat-page")).ChatPage,
27
- }));
28
- const SearchConfigPage = lazy(async () => ({
29
- default: (await import("@/components/config/SearchConfig")).SearchConfig,
30
- }));
31
- const ProvidersListPage = lazy(async () => ({
32
- default: (await import("@/components/config/ProvidersList")).ProvidersList,
33
- }));
34
- const ChannelsListPage = lazy(async () => ({
35
- default: (await import("@/components/config/ChannelsList")).ChannelsList,
36
- }));
37
- const RuntimeConfigPage = lazy(async () => ({
38
- default: (await import("@/components/config/RuntimeConfig")).RuntimeConfig,
39
- }));
40
- const DesktopUpdateConfigPage = lazy(async () => ({
41
- default: (await import("@/components/config/desktop-update-config"))
42
- .DesktopUpdateConfig,
43
- }));
44
- const SecurityConfigPage = lazy(async () => ({
45
- default: (await import("@/components/config/security-config")).SecurityConfig,
46
- }));
47
- const SessionsConfigPage = lazy(async () => ({
48
- default: (await import("@/components/config/SessionsConfig")).SessionsConfig,
49
- }));
50
- const SecretsConfigPage = lazy(async () => ({
51
- default: (await import("@/components/config/SecretsConfig")).SecretsConfig,
52
- }));
53
- const RemoteAccessPage = lazy(async () => ({
54
- default: (await import("@/components/remote/remote-access-page"))
55
- .RemoteAccessPage,
56
- }));
57
- const MarketplacePage = lazy(async () => ({
58
- default: (await import("@/components/marketplace/marketplace-page"))
59
- .MarketplacePage,
60
- }));
61
- const McpMarketplacePage = lazy(async () => ({
62
- default: (await import("@/components/marketplace/mcp/mcp-marketplace-page"))
63
- .McpMarketplacePage,
64
- }));
65
-
66
- function RouteFallback() {
67
- return (
68
- <div className="h-full w-full animate-pulse rounded-2xl border border-border/40 bg-card/40" />
69
- );
70
- }
71
-
72
- function LazyRoute({ children }: { children: JSX.Element }) {
73
- return <Suspense fallback={<RouteFallback />}>{children}</Suspense>;
74
- }
75
-
76
- function ProtectedRoutes() {
77
- return (
78
- <Routes>
79
- <Route path="/chat/skills" element={<Navigate to="/skills" replace />} />
80
- <Route path="/chat/cron" element={<Navigate to="/cron" replace />} />
81
- <Route path="/chat/agents" element={<Navigate to="/agents" replace />} />
82
- <Route
83
- path="/chat/:sessionId?"
84
- element={
85
- <LazyRoute>
86
- <ChatPage view="chat" />
87
- </LazyRoute>
88
- }
89
- />
90
- <Route
91
- path="/agents"
92
- element={
93
- <LazyRoute>
94
- <ChatPage view="agents" />
95
- </LazyRoute>
96
- }
97
- />
98
- <Route
99
- path="/skills"
100
- element={
101
- <LazyRoute>
102
- <ChatPage view="skills" />
103
- </LazyRoute>
104
- }
105
- />
106
- <Route
107
- path="/cron"
108
- element={
109
- <LazyRoute>
110
- <ChatPage view="cron" />
111
- </LazyRoute>
112
- }
113
- />
114
- <Route
115
- path="/model"
116
- element={
117
- <LazyRoute>
118
- <ModelConfigPage />
119
- </LazyRoute>
120
- }
121
- />
122
- <Route
123
- path="/search"
124
- element={
125
- <LazyRoute>
126
- <SearchConfigPage />
127
- </LazyRoute>
128
- }
129
- />
130
- <Route
131
- path="/providers"
132
- element={
133
- <LazyRoute>
134
- <ProvidersListPage />
135
- </LazyRoute>
136
- }
137
- />
138
- <Route
139
- path="/channels"
140
- element={
141
- <LazyRoute>
142
- <ChannelsListPage />
143
- </LazyRoute>
144
- }
145
- />
146
- <Route
147
- path="/runtime"
148
- element={
149
- <LazyRoute>
150
- <RuntimeConfigPage />
151
- </LazyRoute>
152
- }
153
- />
154
- <Route
155
- path="/updates"
156
- element={
157
- <LazyRoute>
158
- <DesktopUpdateConfigPage />
159
- </LazyRoute>
160
- }
161
- />
162
- <Route
163
- path="/remote"
164
- element={
165
- <LazyRoute>
166
- <RemoteAccessPage />
167
- </LazyRoute>
168
- }
169
- />
170
- <Route
171
- path="/security"
172
- element={
173
- <LazyRoute>
174
- <SecurityConfigPage />
175
- </LazyRoute>
176
- }
177
- />
178
- <Route
179
- path="/sessions"
180
- element={
181
- <LazyRoute>
182
- <SessionsConfigPage />
183
- </LazyRoute>
184
- }
185
- />
186
- <Route
187
- path="/secrets"
188
- element={
189
- <LazyRoute>
190
- <SecretsConfigPage />
191
- </LazyRoute>
192
- }
193
- />
194
- <Route path="/settings" element={<Navigate to="/model" replace />} />
195
- <Route
196
- path="/marketplace/skills"
197
- element={<Navigate to="/skills" replace />}
198
- />
199
- <Route
200
- path="/marketplace"
201
- element={<Navigate to="/marketplace/plugins" replace />}
202
- />
203
- <Route
204
- path="/marketplace/mcp"
205
- element={
206
- <LazyRoute>
207
- <McpMarketplacePage />
208
- </LazyRoute>
209
- }
210
- />
211
- <Route
212
- path="/marketplace/:type"
213
- element={
214
- <LazyRoute>
215
- <MarketplacePage />
216
- </LazyRoute>
217
- }
218
- />
219
- <Route path="/" element={<Navigate to="/chat" replace />} />
220
- <Route path="*" element={<Navigate to="/chat" replace />} />
221
- </Routes>
222
- );
223
- }
224
-
225
- function ProtectedApp() {
226
- useRealtimeQueryBridge(appQueryClient);
227
-
228
- return (
229
- <AppPresenterProvider>
230
- <AppLayout>
231
- <ProtectedRoutes />
232
- </AppLayout>
233
- <AccountPanel />
234
- </AppPresenterProvider>
235
- );
236
- }
237
-
238
- function AuthGate() {
239
- const authStatus = useAuthStatus();
240
- const isTransientBootstrapFailure =
241
- authStatus.isError && isTransientAuthStatusBootstrapError(authStatus.error);
242
-
243
- if (
244
- (authStatus.isLoading && !authStatus.isError) ||
245
- isTransientBootstrapFailure ||
246
- authStatus.isError
247
- ) {
248
- return <ProtectedApp />;
249
- }
250
-
251
- if (authStatus.data?.enabled && !authStatus.data.authenticated) {
252
- return <LoginPage username={authStatus.data.username} />;
253
- }
254
-
255
- return <ProtectedApp />;
256
- }
257
-
258
- export default function AppContent() {
259
- useEffect(() => {
260
- startNextClawPwa();
261
- }, []);
262
-
263
- return (
264
- <QueryClientProvider client={appQueryClient}>
265
- <AuthGate />
266
- <PwaInstallBanner />
267
- <PwaUpdateBanner />
268
- <Toaster position="top-right" richColors />
269
- </QueryClientProvider>
270
- );
271
- }