@nextclaw/ui 0.15.1 → 0.15.3

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 (192) hide show
  1. package/CHANGELOG.md +51 -0
  2. package/dist/assets/{api-b1R9VdeH.js → api-iNBpppzj.js} +3 -3
  3. package/dist/assets/{appearance-settings-page-D2O9pch9.js → appearance-settings-page-DMffQFR3.js} +1 -1
  4. package/dist/assets/{book-open-B77lQ2Tg.js → book-open-C3mJGwiy.js} +1 -1
  5. package/dist/assets/channels-list-page-CCtp0BRS.js +8 -0
  6. package/dist/assets/chat-page-H5a0dWvO.js +1 -0
  7. package/dist/assets/config-split-page-CrOJgB-Y.js +1 -0
  8. package/dist/assets/{confirm-dialog-C-NXSioX.js → confirm-dialog-Chv50USy.js} +2 -2
  9. package/dist/assets/{desktop-update-config-usHpXugP.js → desktop-update-config-KzTuXRf_.js} +1 -1
  10. package/dist/assets/{dist-jdGmbb6w.js → dist-BunzmC4B.js} +1 -1
  11. package/dist/assets/{dist-YtoqU-AT.js → dist-ChmGwvtK.js} +1 -1
  12. package/dist/assets/doc-browser-DNRL4Zvd.js +1 -0
  13. package/dist/assets/doc-browser-Dg0pmkOg.js +1 -0
  14. package/dist/assets/doc-browser-context-BHY-0FSD.js +1 -0
  15. package/dist/assets/{es2015-bNpL2LKy.js → es2015-DQZ5JWwK.js} +1 -1
  16. package/dist/assets/{external-link-BM6fk8q-.js → external-link-CU0kzzIP.js} +1 -1
  17. package/dist/assets/form-actions-BvCp_0lS.js +1 -0
  18. package/dist/assets/{i18n-provider-CntWolRA.js → i18n-provider-Cu8XyZb_.js} +1 -1
  19. package/dist/assets/index-CzfBdvK1.css +1 -0
  20. package/dist/assets/index-DGqHne1Q.js +104 -0
  21. package/dist/assets/loader-circle-CDSFuzmk.js +1 -0
  22. package/dist/assets/mcp-marketplace-page-BeEQK0DL.js +9 -0
  23. package/dist/assets/mcp-marketplace-page-D6idOTLp.js +1 -0
  24. package/dist/assets/model-config-page-bNNo-XyG.js +1 -0
  25. package/dist/assets/plus-D4DsdLN-.js +1 -0
  26. package/dist/assets/{provider-scoped-model-input-Cm_a4GHf.js → provider-scoped-model-input-IlgQCsoT.js} +1 -1
  27. package/dist/assets/providers-config-page-wLo6CAJw.js +1 -0
  28. package/dist/assets/{react-BN8uzPnp.js → react-BPIsQIlO.js} +1 -1
  29. package/dist/assets/{refresh-cw-BpVcFPmJ.js → refresh-cw-CILd1vAP.js} +1 -1
  30. package/dist/assets/remote-uKEYp7AR.js +1 -0
  31. package/dist/assets/rotate-cw-wPFPg1kH.js +1 -0
  32. package/dist/assets/runtime-config-page-DDn1sP4G.js +1 -0
  33. package/dist/assets/{save-BpFW5fpk.js → save-ByJqcPTP.js} +1 -1
  34. package/dist/assets/{search-D0uO7enf.js → search-DVIV6pfD.js} +1 -1
  35. package/dist/assets/search-config-page-B-Cf4iiB.js +1 -0
  36. package/dist/assets/secrets-config-page-DPKsY8Iw.js +3 -0
  37. package/dist/assets/security-config-e9SSBlKr.js +1 -0
  38. package/dist/assets/{select-Bh-CrA4p.js → select-BdgczSNw.js} +1 -1
  39. package/dist/assets/{setting-row-BJfCHRcb.js → setting-row-BkTVUTKx.js} +1 -1
  40. package/dist/assets/{settings-2-Blzi1vr6.js → settings-2-CH5shGg_.js} +1 -1
  41. package/dist/assets/{side-dock-ZdaSrQVB.js → side-dock-BsBvcJ9i.js} +2 -2
  42. package/dist/assets/{skeleton-BLlEzebZ.js → skeleton-DeX1FKw7.js} +1 -1
  43. package/dist/assets/switch-Cv8Ekb3x.js +1 -0
  44. package/dist/assets/{tag-chip-CzGihiQx.js → tag-chip-RB9uKcoC.js} +1 -1
  45. package/dist/assets/{tooltip-CdcrBjrC.js → tooltip-oQlEN-l6.js} +1 -1
  46. package/dist/assets/{use-config-CVPgsBmU.js → use-config-l3W7y8Qz.js} +1 -1
  47. package/dist/assets/{use-confirm-dialog-CSeBk9SF.js → use-confirm-dialog-BAxaVOJI.js} +1 -1
  48. package/dist/assets/x-BBMffEN0.js +1 -0
  49. package/dist/index.html +38 -30
  50. package/index.html +12 -4
  51. package/package.json +9 -9
  52. package/src/app/components/layout/__tests__/sidebar.layout.test.tsx +29 -1
  53. package/src/app/components/layout/sidebar-items.tsx +46 -7
  54. package/src/app/components/layout/sidebar-rail.styles.ts +2 -2
  55. package/src/app/components/layout/sidebar.tsx +84 -62
  56. package/src/app/configs/app-navigation.config.ts +49 -0
  57. package/src/app/styles/design-system.css +99 -4
  58. package/src/features/channels/components/config/channel-form.tsx +14 -11
  59. package/src/features/chat/components/conversation/__tests__/chat-conversation-header-section.test.tsx +40 -0
  60. package/src/features/chat/components/conversation/chat-conversation-header-section.tsx +3 -1
  61. package/src/features/chat/components/conversation/chat-conversation-panel.tsx +1 -1
  62. package/src/features/chat/components/layout/__tests__/chat-sidebar-toolbar.test.tsx +48 -0
  63. package/src/features/chat/components/layout/__tests__/chat-sidebar-utility-menu.test.tsx +55 -0
  64. package/src/features/chat/components/layout/chat-sidebar-desktop-layout.tsx +0 -3
  65. package/src/features/chat/components/layout/chat-sidebar-toolbar.tsx +3 -4
  66. package/src/features/chat/components/layout/chat-sidebar-utility-menu.tsx +30 -31
  67. package/src/features/chat/components/layout/chat-sidebar.tsx +21 -7
  68. package/src/features/chat/features/conversation/components/session-conversation-input.tsx +2 -1
  69. package/src/features/chat/features/conversation/components/session-queued-input-rows.tsx +1 -1
  70. package/src/features/chat/features/message/components/__tests__/chat-inline-panel-app-card.test.tsx +22 -1
  71. package/src/features/chat/features/message/components/__tests__/chat-message-list.container.test.tsx +62 -1
  72. package/src/features/chat/features/message/components/chat-inline-panel-app-card.tsx +10 -5
  73. package/src/features/chat/features/message/components/chat-message-list.container.tsx +47 -1
  74. package/src/features/chat/features/message/utils/__tests__/chat-message-process-summary.utils.test.ts +11 -1
  75. package/src/features/chat/features/message/utils/__tests__/chat-message-texts.utils.test.ts +23 -0
  76. package/src/features/chat/features/message/utils/chat-inline-panel-app-card.utils.ts +0 -11
  77. package/src/features/chat/features/message/utils/chat-message-process-summary.utils.ts +5 -0
  78. package/src/features/chat/features/message/utils/chat-message-texts.utils.ts +138 -0
  79. package/src/features/chat/features/session/components/__tests__/chat-sidebar-project-groups.test.tsx +116 -0
  80. package/src/features/chat/features/session/components/chat-sidebar-project-groups.tsx +108 -46
  81. package/src/features/chat/features/session/components/chat-sidebar-session-entry.tsx +6 -0
  82. package/src/features/chat/features/session/components/chat-sidebar-session-item.tsx +48 -24
  83. package/src/features/chat/features/session/components/chat-sidebar-session-list.tsx +0 -3
  84. package/src/features/chat/features/session/components/session-header/chat-session-header-actions.tsx +0 -4
  85. package/src/features/chat/features/session/components/session-header/chat-session-title-switcher.tsx +2 -2
  86. package/src/features/chat/features/session/utils/chat-sidebar-session-groups.utils.ts +25 -3
  87. package/src/features/chat/features/welcome/components/chat-welcome-capability-grid.tsx +9 -4
  88. package/src/features/chat/features/welcome/components/chat-welcome-project-picker.tsx +1 -1
  89. package/src/features/chat/features/welcome/components/chat-welcome-session-type-picker.tsx +1 -1
  90. package/src/features/chat/features/welcome/components/chat-welcome.tsx +0 -5
  91. package/src/features/chat/features/workspace/components/__tests__/chat-session-workspace-file-preview.test.tsx +226 -56
  92. package/src/features/chat/features/workspace/components/__tests__/chat-session-workspace-panel-content.test.tsx +1 -0
  93. package/src/features/chat/features/workspace/components/__tests__/chat-session-workspace-panel.test.tsx +144 -0
  94. package/src/features/chat/features/workspace/components/chat-session-workspace-directory-browser.tsx +99 -0
  95. package/src/features/chat/features/workspace/components/chat-session-workspace-file-breadcrumb-browser.tsx +2 -2
  96. package/src/features/chat/features/workspace/components/chat-session-workspace-file-breadcrumbs.tsx +4 -2
  97. package/src/features/chat/features/workspace/components/chat-session-workspace-file-preview.tsx +232 -21
  98. package/src/features/chat/features/workspace/components/chat-session-workspace-panel-content.tsx +3 -0
  99. package/src/features/chat/features/workspace/components/chat-session-workspace-panel-nav.tsx +44 -1
  100. package/src/features/chat/features/workspace/components/chat-session-workspace-panel.tsx +45 -3
  101. package/src/features/chat/features/workspace/utils/chat-workspace-file-tab-persistence.utils.ts +4 -0
  102. package/src/features/chat/managers/__tests__/chat-session-list.manager.test.ts +33 -2
  103. package/src/features/chat/managers/chat-session-list.manager.ts +32 -0
  104. package/src/features/chat/managers/chat-thread.manager.ts +2 -0
  105. package/src/features/chat/stores/chat-session-list.store.ts +28 -5
  106. package/src/features/chat/stores/chat-thread.store.ts +3 -0
  107. package/src/features/cron/components/cron-config.tsx +63 -80
  108. package/src/features/marketplace/components/detail-doc/__tests__/marketplace-detail-doc.test.tsx +44 -6
  109. package/src/features/marketplace/components/marketplace-detail-doc.tsx +8 -4
  110. package/src/features/marketplace/components/marketplace-page-parts.tsx +1 -1
  111. package/src/features/marketplace/components/mcp/mcp-marketplace-page.tsx +5 -12
  112. package/src/features/marketplace/hooks/use-marketplace-detail-doc-entry.ts +84 -0
  113. package/src/features/panel-apps/components/panel-app-list-item.tsx +6 -6
  114. package/src/features/panel-apps/components/panel-apps-list.tsx +2 -2
  115. package/src/features/panel-apps/index.ts +1 -0
  116. package/src/features/panel-apps/utils/panel-app-doc-browser.utils.tsx +2 -10
  117. package/src/features/panel-apps/utils/panel-app-iframe.utils.ts +6 -0
  118. package/src/features/pwa/managers/__tests__/pwa-shell-theme.manager.test.ts +11 -3
  119. package/src/features/pwa/managers/pwa-shell-theme.manager.ts +3 -1
  120. package/src/features/right-panel-resources/components/right-panel-resource-home-page.tsx +1 -1
  121. package/src/features/service-apps/components/service-apps-panel.tsx +145 -35
  122. package/src/features/settings/components/config/provider-auth-section.tsx +1 -1
  123. package/src/features/settings/components/config/provider-form.tsx +11 -8
  124. package/src/features/settings/components/config/provider-models-section.tsx +7 -7
  125. package/src/features/settings/components/config/provider-pill-selector.tsx +1 -1
  126. package/src/features/settings/components/config/secrets-config-form.tsx +5 -4
  127. package/src/features/settings/pages/model-config-page.tsx +26 -25
  128. package/src/features/settings/pages/providers-config-page.tsx +10 -13
  129. package/src/features/settings/pages/search-config-page.tsx +8 -5
  130. package/src/features/side-dock/components/side-dock.tsx +3 -3
  131. package/src/features/system-status/components/config/runtime-config-editor.tsx +5 -4
  132. package/src/index.css +257 -13
  133. package/src/shared/components/actions/action-link.tsx +1 -1
  134. package/src/shared/components/config-split-page.tsx +6 -6
  135. package/src/shared/components/doc-browser/__tests__/doc-browser-url.utils.test.ts +73 -0
  136. package/src/shared/components/doc-browser/__tests__/doc-browser.test.tsx +48 -0
  137. package/src/shared/components/doc-browser/doc-browser-context.tsx +4 -0
  138. package/src/shared/components/doc-browser/doc-browser-panel-parts.tsx +6 -2
  139. package/src/shared/components/doc-browser/doc-browser-renderer.types.ts +2 -1
  140. package/src/shared/components/doc-browser/doc-browser-tab-strip.tsx +10 -10
  141. package/src/shared/components/doc-browser/doc-browser.tsx +6 -4
  142. package/src/shared/components/doc-browser/utils/doc-browser-url.utils.ts +62 -4
  143. package/src/shared/components/resizable-right-panel/__tests__/resizable-right-panel.test.tsx +18 -0
  144. package/src/shared/components/resizable-right-panel/resizable-right-panel.tsx +28 -3
  145. package/src/shared/components/ui/actions/__tests__/icon-action-button.test.tsx +36 -0
  146. package/src/shared/components/ui/actions/form-actions.tsx +25 -0
  147. package/src/shared/components/ui/actions/icon-action-button.tsx +25 -2
  148. package/src/shared/components/ui/button.tsx +1 -1
  149. package/src/shared/components/ui/card.tsx +12 -4
  150. package/src/shared/components/ui/dialog.tsx +1 -1
  151. package/src/shared/components/ui/input.tsx +1 -1
  152. package/src/shared/components/ui/select.tsx +1 -1
  153. package/src/shared/components/ui/switch.tsx +1 -1
  154. package/src/shared/components/ui/tab-strip/compact-tab-strip.tsx +2 -1
  155. package/src/shared/components/ui/tabs.tsx +1 -1
  156. package/src/shared/components/ui/textarea.tsx +1 -1
  157. package/src/shared/hooks/use-server-path-browse.ts +26 -4
  158. package/src/shared/hooks/use-server-path-read.ts +11 -1
  159. package/src/shared/lib/api/utils/server-path.utils.ts +1 -0
  160. package/src/shared/lib/i18n/locales/en-US/chat.json +99 -0
  161. package/src/shared/lib/i18n/locales/en-US/core.json +3 -0
  162. package/src/shared/lib/i18n/locales/en-US/doc-browser.json +5 -0
  163. package/src/shared/lib/i18n/locales/zh-CN/chat.json +99 -0
  164. package/src/shared/lib/i18n/locales/zh-CN/core.json +3 -0
  165. package/src/shared/lib/i18n/locales/zh-CN/doc-browser.json +5 -0
  166. package/src/shared/lib/session-project/workspace-file-breadcrumb.utils.ts +9 -5
  167. package/src/shared/lib/theme/index.test.ts +21 -0
  168. package/src/shared/lib/theme/index.ts +6 -4
  169. package/src/vite-env.d.ts +2 -0
  170. package/dist/assets/channels-list-page-DcsIQc6A.js +0 -8
  171. package/dist/assets/chat-page-CZ7WxPir.js +0 -1
  172. package/dist/assets/config-split-page-BWQ6_Raq.js +0 -1
  173. package/dist/assets/doc-browser-B_Tf9n70.js +0 -1
  174. package/dist/assets/doc-browser-BdZPFOVa.js +0 -1
  175. package/dist/assets/doc-browser-context-DwokemUn.js +0 -1
  176. package/dist/assets/index-BIcEw90u.js +0 -104
  177. package/dist/assets/index-BiNSTKTU.css +0 -1
  178. package/dist/assets/loader-circle-MBgNSVIH.js +0 -1
  179. package/dist/assets/mcp-marketplace-page-CLmUstLN.js +0 -9
  180. package/dist/assets/mcp-marketplace-page-rZkmWPMy.js +0 -1
  181. package/dist/assets/model-config-page-Di0ySJD2.js +0 -1
  182. package/dist/assets/plus-vDqW5Kxp.js +0 -1
  183. package/dist/assets/providers-config-page-BAf2W0MV.js +0 -1
  184. package/dist/assets/remote-CLQ0IBM8.js +0 -1
  185. package/dist/assets/rotate-cw-CvNBv7_w.js +0 -1
  186. package/dist/assets/runtime-config-page-CflvvoDc.js +0 -1
  187. package/dist/assets/search-config-page-D0klFUXd.js +0 -1
  188. package/dist/assets/secrets-config-page-dVZ631Wp.js +0 -3
  189. package/dist/assets/security-config-C5gnlkuj.js +0 -1
  190. package/dist/assets/switch-CFLJFNSd.js +0 -1
  191. package/dist/assets/x-BF2KQ--V.js +0 -1
  192. /package/dist/assets/{config-hints-fGnUjDe9.js → config-hints-C_iP1zl_.js} +0 -0
@@ -41,6 +41,9 @@
41
41
  "chatChildSessionEmpty": "No child session messages yet.",
42
42
  "chatWorkspaceBack": "Back in workspace",
43
43
  "chatWorkspaceForward": "Forward in workspace",
44
+ "chatWorkspaceRefreshFile": "Refresh preview",
45
+ "chatWorkspaceMaximizePanel": "Maximize workspace panel",
46
+ "chatWorkspaceRestorePanel": "Restore workspace panel",
44
47
  "chatWorkspaceClosePanel": "Close workspace panel",
45
48
  "chatWorkspaceSideChatDraftTitle": "Side chat",
46
49
  "chatWorkspaceSideChatDraftSubtitle": "This draft will inherit the parent session context when you send the first message.",
@@ -49,8 +52,17 @@
49
52
  "chatWorkspacePreview": "Preview",
50
53
  "chatWorkspaceDiff": "Diff",
51
54
  "chatWorkspaceCloseFile": "Close file",
55
+ "chatWorkspaceLoadingPreview": "Loading preview…",
52
56
  "chatWorkspaceLoadingFile": "Loading file…",
57
+ "chatWorkspaceLoadingDirectory": "Loading directory…",
58
+ "chatWorkspaceOpenDirectory": "Open directory",
59
+ "chatWorkspaceOpenFile": "Open file",
60
+ "chatWorkspaceDirectoryEmpty": "This directory is empty.",
61
+ "chatWorkspaceDirectoryLoadFailed": "Failed to load directory",
53
62
  "chatWorkspacePreviewUnsupported": "This file is not supported in the sidebar preview yet.",
63
+ "chatWorkspacePreviewUnsupportedHint": "Formats like Word, Excel, and archives can’t be rendered in the sidebar. Download and open them with a local app.",
64
+ "chatWorkspacePreviewDownload": "Download file",
65
+ "chatWorkspacePreviewOpenExternally": "Open with system app",
54
66
  "chatWorkspacePreviewEmpty": "No file content is available for preview.",
55
67
  "chatWorkspaceDiffEmpty": "No diff content is available.",
56
68
  "chatWorkspaceHtmlPreviewTitle": "Rendered HTML preview",
@@ -59,8 +71,86 @@
59
71
  "chatWorkspaceCronJobEmpty": "This session has no cron jobs.",
60
72
  "chatSessionUnread": "Session has unread updates",
61
73
  "chatTyping": "Agent is thinking...",
74
+ "chatReasoningInProgressCharacterCount": "Thinking · {count} characters so far",
75
+ "chatReasoningCompletedCharacterCount": "Thought through {count} characters",
76
+ "chatToolTerminalRunning": "Running command",
77
+ "chatToolTerminalSuccess": "Ran command",
78
+ "chatToolTerminalError": "Command failed",
79
+ "chatToolTerminalCancelled": "Command cancelled",
80
+ "chatToolFileReadRunning": "Reading file",
81
+ "chatToolFileReadSuccess": "Read file",
82
+ "chatToolFileReadError": "File read failed",
83
+ "chatToolFileReadCancelled": "File read cancelled",
84
+ "chatToolFileEditRunning": "Editing file",
85
+ "chatToolFileEditSuccess": "Edited file",
86
+ "chatToolFileEditError": "File edit failed",
87
+ "chatToolFileEditCancelled": "File edit cancelled",
88
+ "chatToolSearchRunning": "Searching",
89
+ "chatToolSearchSuccess": "Searched",
90
+ "chatToolSearchError": "Search failed",
91
+ "chatToolSearchCancelled": "Search cancelled",
92
+ "chatToolDirectoryRunning": "Listing directory",
93
+ "chatToolDirectorySuccess": "Listed directory",
94
+ "chatToolDirectoryError": "Directory listing failed",
95
+ "chatToolDirectoryCancelled": "Directory listing cancelled",
96
+ "chatToolWebRunning": "Fetching page",
97
+ "chatToolWebSuccess": "Fetched page",
98
+ "chatToolWebError": "Page fetch failed",
99
+ "chatToolWebCancelled": "Page fetch cancelled",
100
+ "chatToolMessageRunning": "Sending message",
101
+ "chatToolMessageSuccess": "Sent message",
102
+ "chatToolMessageError": "Message failed",
103
+ "chatToolMessageCancelled": "Message cancelled",
104
+ "chatToolSessionRunning": "Reading sessions",
105
+ "chatToolSessionSuccess": "Read sessions",
106
+ "chatToolSessionError": "Session read failed",
107
+ "chatToolSessionCancelled": "Session read cancelled",
108
+ "chatToolAgentRunning": "Managing subtask",
109
+ "chatToolAgentSuccess": "Managed subtask",
110
+ "chatToolAgentError": "Subtask failed",
111
+ "chatToolAgentCancelled": "Subtask cancelled",
112
+ "chatToolMemoryRunning": "Accessing memory",
113
+ "chatToolMemorySuccess": "Accessed memory",
114
+ "chatToolMemoryError": "Memory access failed",
115
+ "chatToolMemoryCancelled": "Memory access cancelled",
116
+ "chatToolScheduleRunning": "Managing schedule",
117
+ "chatToolScheduleSuccess": "Managed schedule",
118
+ "chatToolScheduleError": "Schedule action failed",
119
+ "chatToolScheduleCancelled": "Schedule action cancelled",
120
+ "chatToolSystemRunning": "Managing service",
121
+ "chatToolSystemSuccess": "Managed service",
122
+ "chatToolSystemError": "Service action failed",
123
+ "chatToolSystemCancelled": "Service action cancelled",
124
+ "chatToolImageRunning": "Viewing image",
125
+ "chatToolImageSuccess": "Viewed image",
126
+ "chatToolImageError": "Image view failed",
127
+ "chatToolImageCancelled": "Image view cancelled",
128
+ "chatToolDisplayRunning": "Showing result",
129
+ "chatToolDisplaySuccess": "Showed result",
130
+ "chatToolDisplayError": "Display failed",
131
+ "chatToolDisplayCancelled": "Display cancelled",
62
132
  "chatScrollToBottom": "Scroll to bottom",
63
133
  "chatProcessSummaryProcessed": "Processed",
134
+ "chatToolActivityReadOne": "Read 1 file",
135
+ "chatToolActivityReadOther": "Read {count} files",
136
+ "chatToolActivityEditOne": "Edit 1 file",
137
+ "chatToolActivityEditOther": "Edit {count} files",
138
+ "chatToolActivityDirectoryOne": "View 1 directory",
139
+ "chatToolActivityDirectoryOther": "View {count} directories",
140
+ "chatToolActivitySearchOne": "Search 1 time",
141
+ "chatToolActivitySearchOther": "Search {count} times",
142
+ "chatToolActivityBashOne": "Run 1 command",
143
+ "chatToolActivityBashOther": "Run {count} commands",
144
+ "chatToolActivityWebOne": "Open 1 page",
145
+ "chatToolActivityWebOther": "Open {count} pages",
146
+ "chatToolActivityAgentOne": "Start 1 subtask",
147
+ "chatToolActivityAgentOther": "Start {count} subtasks",
148
+ "chatToolActivityPanelOne": "Show 1 result",
149
+ "chatToolActivityPanelOther": "Show {count} results",
150
+ "chatToolActivityOtherOne": "Use 1 tool",
151
+ "chatToolActivityOtherOther": "Use {count} tools",
152
+ "chatProcessSummaryFailed": "failed",
153
+ "chatProcessSummaryCancelled": "cancelled",
64
154
  "chatRuntimeInitializing": "Chat is still initializing. You can keep typing and send once startup finishes.",
65
155
  "chatRuntimeInitializationFailed": "Chat startup failed. Please retry in a moment or inspect the service logs.",
66
156
  "chatInputPlaceholder": "Type a message, / for commands, apps or skills, @ for panel app references, Enter to send, Shift + Enter for newline",
@@ -173,6 +263,8 @@
173
263
  "chatFileAttachment": "File attachment",
174
264
  "chatAttachmentOpen": "Open",
175
265
  "chatAttachmentAttached": "Attached",
266
+ "chatAttachmentExpand": "Expand image",
267
+ "chatAttachmentClosePreview": "Close preview",
176
268
  "chatAttachmentCategoryArchive": "Archive",
177
269
  "chatAttachmentCategoryAudio": "Audio",
178
270
  "chatAttachmentCategoryCode": "Code file",
@@ -199,6 +291,13 @@
199
291
  "chatSidebarYesterday": "Yesterday",
200
292
  "chatSidebarPrevious7Days": "Previous 7 Days",
201
293
  "chatSidebarOlder": "Older",
294
+ "chatSidebarPinned": "Pinned",
295
+ "chatSidebarPinSession": "Pin session",
296
+ "chatSidebarUnpinSession": "Unpin session",
297
+ "chatSidebarPinProject": "Pin project",
298
+ "chatSidebarUnpinProject": "Unpin project",
299
+ "chatSidebarExpandProject": "Expand project",
300
+ "chatSidebarCollapseProject": "Collapse project",
202
301
  "chatSidebarProjectViewEmpty": "No project conversations yet",
203
302
  "chatWelcomeTitle": "Hello, how can I help you?",
204
303
  "chatWelcomeSubtitle": "Describe the goal, choose the project context, and let NextClaw take it from there.",
@@ -11,6 +11,8 @@
11
11
  "marketplace": "Marketplace",
12
12
  "advanced": "Advanced",
13
13
  "settings": "Settings",
14
+ "settingsGroupBasic": "Basic Configuration",
15
+ "settingsGroupAdvanced": "Advanced Configuration",
14
16
  "appearance": "Appearance",
15
17
  "settingsMenu": "Settings menu",
16
18
  "sidebarCollapse": "Collapse sidebar",
@@ -41,6 +43,7 @@
41
43
  "language": "Language",
42
44
  "theme": "Theme",
43
45
  "themeNatural": "Natural",
46
+ "themeWork": "Default",
44
47
  "themeMinimal": "Minimal",
45
48
  "themeWarm": "Paper",
46
49
  "themeCool": "Mist",
@@ -65,6 +65,8 @@
65
65
  "serviceAppsLoading": "Loading service apps...",
66
66
  "serviceAppsLoadFailed": "Failed to load service apps",
67
67
  "serviceAppsEmpty": "No service apps yet",
68
+ "serviceAppsEmptyTitle": "No service apps",
69
+ "serviceAppsEmptyDescription": "Service apps expose local runtimes and actions that panel apps can call.",
68
70
  "serviceAppsRefresh": "Refresh service apps",
69
71
  "serviceAppsDiscoverActions": "Connect and discover actions",
70
72
  "serviceAppsDiscoverActionsHint": "Connect to the service app runtime and discover its available actions.",
@@ -84,6 +86,9 @@
84
86
  "serviceAppsStatusHint_running": "The service app runtime is connected and ready for action discovery or invocation.",
85
87
  "serviceAppsStatusHint_failed": "The runtime connection failed; check the error or disconnect and try again.",
86
88
  "serviceAppsStatusHint_stopped": "The service app is stopped.",
89
+ "serviceAppsActionsSection": "Actions",
90
+ "serviceAppsActionsEmpty": "No actions discovered yet",
91
+ "serviceAppsDetails": "Runtime details",
87
92
  "serviceAppsGrantedTo": "Granted to",
88
93
  "serviceAppsRevokeGrant": "Revoke grant",
89
94
  "serviceAppsRuntimeState_matched": "Matched",
@@ -41,6 +41,9 @@
41
41
  "chatChildSessionEmpty": "子会话还没有消息。",
42
42
  "chatWorkspaceBack": "工作区后退",
43
43
  "chatWorkspaceForward": "工作区前进",
44
+ "chatWorkspaceRefreshFile": "刷新预览",
45
+ "chatWorkspaceMaximizePanel": "最大化工作区侧栏",
46
+ "chatWorkspaceRestorePanel": "还原工作区侧栏",
44
47
  "chatWorkspaceClosePanel": "关闭工作区侧栏",
45
48
  "chatWorkspaceSideChatDraftTitle": "Side chat",
46
49
  "chatWorkspaceSideChatDraftSubtitle": "发送第一条消息后,会继承父会话上下文并创建真实 child 会话。",
@@ -49,8 +52,17 @@
49
52
  "chatWorkspacePreview": "预览",
50
53
  "chatWorkspaceDiff": "Diff",
51
54
  "chatWorkspaceCloseFile": "关闭文件",
55
+ "chatWorkspaceLoadingPreview": "正在加载预览…",
52
56
  "chatWorkspaceLoadingFile": "正在加载文件…",
57
+ "chatWorkspaceLoadingDirectory": "正在加载目录…",
58
+ "chatWorkspaceOpenDirectory": "打开目录",
59
+ "chatWorkspaceOpenFile": "打开文件",
60
+ "chatWorkspaceDirectoryEmpty": "这个目录为空。",
61
+ "chatWorkspaceDirectoryLoadFailed": "读取目录失败",
53
62
  "chatWorkspacePreviewUnsupported": "该文件暂不支持在侧栏预览。",
63
+ "chatWorkspacePreviewUnsupportedHint": "Word、Excel、压缩包等格式无法在侧栏内直接渲染版式。你可以下载后用本机应用打开。",
64
+ "chatWorkspacePreviewDownload": "下载文件",
65
+ "chatWorkspacePreviewOpenExternally": "用系统应用打开",
54
66
  "chatWorkspacePreviewEmpty": "当前没有可显示的文件内容。",
55
67
  "chatWorkspaceDiffEmpty": "当前没有可显示的 diff 内容。",
56
68
  "chatWorkspaceHtmlPreviewTitle": "HTML 渲染预览",
@@ -59,8 +71,86 @@
59
71
  "chatWorkspaceCronJobEmpty": "这个会话暂无定时任务。",
60
72
  "chatSessionUnread": "会话有未读更新",
61
73
  "chatTyping": "Agent 正在思考...",
74
+ "chatReasoningInProgressCharacterCount": "思考中 · 已思考 {count} 个字符",
75
+ "chatReasoningCompletedCharacterCount": "已思考 {count} 个字符",
76
+ "chatToolTerminalRunning": "执行中",
77
+ "chatToolTerminalSuccess": "已执行",
78
+ "chatToolTerminalError": "执行失败",
79
+ "chatToolTerminalCancelled": "已取消执行",
80
+ "chatToolFileReadRunning": "读取中",
81
+ "chatToolFileReadSuccess": "已读取",
82
+ "chatToolFileReadError": "读取失败",
83
+ "chatToolFileReadCancelled": "已取消读取",
84
+ "chatToolFileEditRunning": "编辑中",
85
+ "chatToolFileEditSuccess": "已编辑",
86
+ "chatToolFileEditError": "编辑失败",
87
+ "chatToolFileEditCancelled": "已取消编辑",
88
+ "chatToolSearchRunning": "搜索中",
89
+ "chatToolSearchSuccess": "已搜索",
90
+ "chatToolSearchError": "搜索失败",
91
+ "chatToolSearchCancelled": "已取消搜索",
92
+ "chatToolDirectoryRunning": "正在查看目录",
93
+ "chatToolDirectorySuccess": "已查看目录",
94
+ "chatToolDirectoryError": "查看目录失败",
95
+ "chatToolDirectoryCancelled": "已取消查看目录",
96
+ "chatToolWebRunning": "正在读取网页",
97
+ "chatToolWebSuccess": "已读取网页",
98
+ "chatToolWebError": "读取网页失败",
99
+ "chatToolWebCancelled": "已取消读取网页",
100
+ "chatToolMessageRunning": "正在发送消息",
101
+ "chatToolMessageSuccess": "已发送消息",
102
+ "chatToolMessageError": "发送消息失败",
103
+ "chatToolMessageCancelled": "已取消发送消息",
104
+ "chatToolSessionRunning": "正在读取会话",
105
+ "chatToolSessionSuccess": "已读取会话",
106
+ "chatToolSessionError": "读取会话失败",
107
+ "chatToolSessionCancelled": "已取消读取会话",
108
+ "chatToolAgentRunning": "正在处理子任务",
109
+ "chatToolAgentSuccess": "已处理子任务",
110
+ "chatToolAgentError": "处理子任务失败",
111
+ "chatToolAgentCancelled": "已取消处理子任务",
112
+ "chatToolMemoryRunning": "正在访问记忆",
113
+ "chatToolMemorySuccess": "已访问记忆",
114
+ "chatToolMemoryError": "访问记忆失败",
115
+ "chatToolMemoryCancelled": "已取消访问记忆",
116
+ "chatToolScheduleRunning": "正在管理定时任务",
117
+ "chatToolScheduleSuccess": "已管理定时任务",
118
+ "chatToolScheduleError": "管理定时任务失败",
119
+ "chatToolScheduleCancelled": "已取消管理定时任务",
120
+ "chatToolSystemRunning": "正在管理服务",
121
+ "chatToolSystemSuccess": "已管理服务",
122
+ "chatToolSystemError": "管理服务失败",
123
+ "chatToolSystemCancelled": "已取消管理服务",
124
+ "chatToolImageRunning": "正在查看图片",
125
+ "chatToolImageSuccess": "已查看图片",
126
+ "chatToolImageError": "查看图片失败",
127
+ "chatToolImageCancelled": "已取消查看图片",
128
+ "chatToolDisplayRunning": "正在展示结果",
129
+ "chatToolDisplaySuccess": "已展示结果",
130
+ "chatToolDisplayError": "展示结果失败",
131
+ "chatToolDisplayCancelled": "已取消展示结果",
62
132
  "chatScrollToBottom": "滚动到底部",
63
133
  "chatProcessSummaryProcessed": "已处理",
134
+ "chatToolActivityReadOne": "读取 1 个文件",
135
+ "chatToolActivityReadOther": "读取 {count} 个文件",
136
+ "chatToolActivityEditOne": "编辑 1 个文件",
137
+ "chatToolActivityEditOther": "编辑 {count} 个文件",
138
+ "chatToolActivityDirectoryOne": "查看 1 个目录",
139
+ "chatToolActivityDirectoryOther": "查看 {count} 个目录",
140
+ "chatToolActivitySearchOne": "搜索 1 次",
141
+ "chatToolActivitySearchOther": "搜索 {count} 次",
142
+ "chatToolActivityBashOne": "运行 1 条命令",
143
+ "chatToolActivityBashOther": "运行 {count} 条命令",
144
+ "chatToolActivityWebOne": "访问 1 个网页",
145
+ "chatToolActivityWebOther": "访问 {count} 个网页",
146
+ "chatToolActivityAgentOne": "启动 1 个子任务",
147
+ "chatToolActivityAgentOther": "启动 {count} 个子任务",
148
+ "chatToolActivityPanelOne": "展示 1 个结果",
149
+ "chatToolActivityPanelOther": "展示 {count} 个结果",
150
+ "chatToolActivityOtherOne": "调用 1 个工具",
151
+ "chatToolActivityOtherOther": "调用 {count} 个工具",
152
+ "chatProcessSummaryFailed": "失败",
153
+ "chatProcessSummaryCancelled": "已取消",
64
154
  "chatRuntimeInitializing": "聊天能力正在初始化。你可以先输入内容,完成后即可发送。",
65
155
  "chatRuntimeInitializationFailed": "聊天能力启动失败,请稍后重试或检查服务日志。",
66
156
  "chatInputPlaceholder": "输入消息,/ 选命令、应用或技能,@ 引用面板应用,Enter 发送,Shift + Enter 换行",
@@ -173,6 +263,8 @@
173
263
  "chatFileAttachment": "文件附件",
174
264
  "chatAttachmentOpen": "打开",
175
265
  "chatAttachmentAttached": "已附加",
266
+ "chatAttachmentExpand": "放大查看",
267
+ "chatAttachmentClosePreview": "关闭预览",
176
268
  "chatAttachmentCategoryArchive": "压缩包",
177
269
  "chatAttachmentCategoryAudio": "音频",
178
270
  "chatAttachmentCategoryCode": "代码文件",
@@ -199,6 +291,13 @@
199
291
  "chatSidebarYesterday": "昨天",
200
292
  "chatSidebarPrevious7Days": "近 7 天",
201
293
  "chatSidebarOlder": "更早",
294
+ "chatSidebarPinned": "已置顶",
295
+ "chatSidebarPinSession": "置顶会话",
296
+ "chatSidebarUnpinSession": "取消置顶会话",
297
+ "chatSidebarPinProject": "置顶项目",
298
+ "chatSidebarUnpinProject": "取消置顶项目",
299
+ "chatSidebarExpandProject": "展开项目",
300
+ "chatSidebarCollapseProject": "收起项目",
202
301
  "chatSidebarProjectViewEmpty": "还没有绑定项目的会话",
203
302
  "chatWelcomeTitle": "你好,有什么可以帮你的吗?",
204
303
  "chatWelcomeSubtitle": "描述目标,选择项目上下文,让 NextClaw 接住这次任务。",
@@ -11,6 +11,8 @@
11
11
  "marketplace": "市场",
12
12
  "advanced": "高级",
13
13
  "settings": "设置",
14
+ "settingsGroupBasic": "基础配置",
15
+ "settingsGroupAdvanced": "高级配置",
14
16
  "appearance": "外观",
15
17
  "settingsMenu": "设置菜单",
16
18
  "sidebarCollapse": "收起侧边栏",
@@ -41,6 +43,7 @@
41
43
  "language": "语言",
42
44
  "theme": "主题",
43
45
  "themeNatural": "自然",
46
+ "themeWork": "默认",
44
47
  "themeMinimal": "简白",
45
48
  "themeWarm": "纸暖",
46
49
  "themeCool": "雾蓝",
@@ -65,6 +65,8 @@
65
65
  "serviceAppsLoading": "加载服务应用中...",
66
66
  "serviceAppsLoadFailed": "服务应用加载失败",
67
67
  "serviceAppsEmpty": "暂无服务应用",
68
+ "serviceAppsEmptyTitle": "暂无服务应用",
69
+ "serviceAppsEmptyDescription": "服务应用提供本地运行时与动作,供面板应用调用。",
68
70
  "serviceAppsRefresh": "刷新服务应用",
69
71
  "serviceAppsDiscoverActions": "连接并发现动作",
70
72
  "serviceAppsDiscoverActionsHint": "连接服务应用运行时,并发现它当前可用的动作。",
@@ -84,6 +86,9 @@
84
86
  "serviceAppsStatusHint_running": "服务应用运行时已连接,可用于发现或调用动作。",
85
87
  "serviceAppsStatusHint_failed": "运行时连接失败,请查看错误信息或断开连接后重试。",
86
88
  "serviceAppsStatusHint_stopped": "服务应用已停止。",
89
+ "serviceAppsActionsSection": "动作",
90
+ "serviceAppsActionsEmpty": "尚未发现动作",
91
+ "serviceAppsDetails": "运行时详情",
87
92
  "serviceAppsGrantedTo": "已授权给",
88
93
  "serviceAppsRevokeGrant": "撤销授权",
89
94
  "serviceAppsRuntimeState_matched": "已匹配",
@@ -131,12 +131,13 @@ function readRelativeSegments(params: {
131
131
  function buildSegmentsFromLabels(params: {
132
132
  labels: string[];
133
133
  basePath?: string | null;
134
+ currentKind?: "file" | "directory";
134
135
  leading?: WorkspaceFileBreadcrumbSegmentViewModel | null;
135
136
  }): WorkspaceFileBreadcrumbSegmentViewModel[] {
136
- const { basePath = null, labels, leading = null } = params;
137
+ const { basePath = null, currentKind = "file", labels, leading = null } = params;
137
138
  const items = labels.map<WorkspaceFileBreadcrumbSegmentViewModel>(
138
139
  (label, index) => {
139
- const kind = index === labels.length - 1 ? "file" : "directory";
140
+ const kind = index === labels.length - 1 ? currentKind : "directory";
140
141
  const path = joinPathSegments(basePath, labels.slice(0, index + 1));
141
142
  return {
142
143
  key: `${index}:${label}`,
@@ -167,12 +168,13 @@ function buildLocationLabel(params: {
167
168
 
168
169
  export function buildWorkspaceFileBreadcrumb(params: {
169
170
  path: string;
171
+ kind?: "file" | "directory";
170
172
  sessionProjectRoot: string | null;
171
173
  line?: number | null;
172
174
  column?: number | null;
173
175
  truncated: boolean;
174
176
  }): WorkspaceFileBreadcrumbViewModel {
175
- const { column, line, path, sessionProjectRoot, truncated } = params;
177
+ const { column, kind = "file", line, path, sessionProjectRoot, truncated } = params;
176
178
  const fullPath = path.trim();
177
179
  const relativeSegments =
178
180
  sessionProjectRoot?.trim() && fullPath
@@ -192,6 +194,7 @@ export function buildWorkspaceFileBreadcrumb(params: {
192
194
  segments = buildSegmentsFromLabels({
193
195
  labels: relativeSegments,
194
196
  basePath: workspacePath,
197
+ currentKind: kind,
195
198
  leading: {
196
199
  key: `workspace:${workspaceLabel}`,
197
200
  label: workspaceLabel,
@@ -207,6 +210,7 @@ export function buildWorkspaceFileBreadcrumb(params: {
207
210
  segments = buildSegmentsFromLabels({
208
211
  labels,
209
212
  basePath: rootPath,
213
+ currentKind: kind,
210
214
  leading: prefix
211
215
  ? {
212
216
  key: `root:${prefix}`,
@@ -225,9 +229,9 @@ export function buildWorkspaceFileBreadcrumb(params: {
225
229
  {
226
230
  key: "file:unknown",
227
231
  label: fullPath || "file",
228
- kind: "file",
232
+ kind,
229
233
  path: fullPath,
230
- browsePath: readParentPath(fullPath),
234
+ browsePath: kind === "directory" ? fullPath : readParentPath(fullPath),
231
235
  isCurrent: true,
232
236
  },
233
237
  ];
@@ -0,0 +1,21 @@
1
+ import { beforeEach, describe, expect, it } from 'vitest';
2
+ import {
3
+ DEFAULT_UI_THEME,
4
+ resolveInitialTheme,
5
+ THEME_OPTIONS,
6
+ } from './index';
7
+
8
+ describe('ui theme defaults', () => {
9
+ beforeEach(() => {
10
+ window.localStorage.clear();
11
+ });
12
+
13
+ it('uses the default theme when no preference is saved', () => {
14
+ expect(DEFAULT_UI_THEME).toBe('work');
15
+ expect(resolveInitialTheme()).toBe(DEFAULT_UI_THEME);
16
+ });
17
+
18
+ it('lists the default theme first', () => {
19
+ expect(THEME_OPTIONS[0]?.value).toBe(DEFAULT_UI_THEME);
20
+ });
21
+ });
@@ -1,5 +1,6 @@
1
1
  export type UiTheme =
2
2
  | 'natural'
3
+ | 'work'
3
4
  | 'minimal'
4
5
  | 'warm'
5
6
  | 'cool'
@@ -16,9 +17,10 @@ type UiThemeDefinition = {
16
17
  };
17
18
 
18
19
  const THEME_STORAGE_KEY = 'nextclaw.ui.theme';
19
- const DEFAULT_THEME: UiTheme = 'natural';
20
+ export const DEFAULT_UI_THEME: UiTheme = 'work';
20
21
 
21
22
  const THEME_DEFINITIONS: readonly UiThemeDefinition[] = [
23
+ { value: 'work', labelKey: 'themeWork', appearance: 'light' },
22
24
  { value: 'night', labelKey: 'themeNight', appearance: 'dark' },
23
25
  { value: 'natural', labelKey: 'themeNatural', appearance: 'light' },
24
26
  { value: 'minimal', labelKey: 'themeMinimal', appearance: 'light' },
@@ -59,13 +61,13 @@ export function getThemeAppearance(theme: UiTheme): UiThemeAppearance {
59
61
  }
60
62
 
61
63
  class UiThemeOwner {
62
- private activeTheme: UiTheme = DEFAULT_THEME;
64
+ private activeTheme: UiTheme = DEFAULT_UI_THEME;
63
65
  private initialized = false;
64
66
  private readonly listeners = new Set<(theme: UiTheme) => void>();
65
67
 
66
68
  resolveInitialTheme = (): UiTheme => {
67
69
  if (typeof window === 'undefined') {
68
- return DEFAULT_THEME;
70
+ return DEFAULT_UI_THEME;
69
71
  }
70
72
 
71
73
  try {
@@ -78,7 +80,7 @@ class UiThemeOwner {
78
80
  // ignore storage failures
79
81
  }
80
82
 
81
- return DEFAULT_THEME;
83
+ return DEFAULT_UI_THEME;
82
84
  };
83
85
 
84
86
  initializeTheme = (): UiTheme => {
package/src/vite-env.d.ts CHANGED
@@ -7,6 +7,8 @@ export {};
7
7
  interface ImportMetaEnv {
8
8
  readonly VITE_API_BASE?: string;
9
9
  readonly VITE_DEV_PROXY_API_BASE?: string;
10
+ readonly VITE_NEXTCLAW_DOCS_BASE_URL?: string;
11
+ readonly VITE_NEXTCLAW_DOCS_CN_BASE_URL?: string;
10
12
  }
11
13
 
12
14
  interface ImportMeta {
@@ -1,8 +0,0 @@
1
- import{a as e,g as t,h as n,n as r,p as i,r as a,u as o,v as s}from"./react-BN8uzPnp.js";import{It as c,Lt as l,Mt as u,Nt as d,Rt as f,Yt as p,ct as m,ft as h,jt as g,ot as _,st as v}from"./api-b1R9VdeH.js";import{c as y,l as b,s as x,t as S}from"./switch-CFLJFNSd.js";import{c as C}from"./dist-jdGmbb6w.js";import{t as w}from"./search-D0uO7enf.js";import{t as T}from"./book-open-B77lQ2Tg.js";import{C as E,a as D,i as O,n as ee,r as k,t as A}from"./select-Bh-CrA4p.js";import{t as j}from"./external-link-BM6fk8q-.js";import{t as te}from"./loader-circle-MBgNSVIH.js";import{t as ne}from"./x-BF2KQ--V.js";import{t as re}from"./tag-chip-CzGihiQx.js";import{C as ie,F as ae,P as oe,S as se,dt as ce,f as le,lt as ue,nt as M,ot as de,pt as fe,w as N,x as P}from"./index-BIcEw90u.js";import{n as F,o as pe,p as me,r as I,t as L}from"./use-config-CVPgsBmU.js";import{t as R}from"./config-hints-fGnUjDe9.js";import{a as z,c as B,i as he,n as ge,o as V,r as _e,s as ve,t as ye}from"./config-split-page-BWQ6_Raq.js";var be=C(`Hash`,[[`line`,{x1:`4`,x2:`20`,y1:`9`,y2:`9`,key:`4lhtct`}],[`line`,{x1:`4`,x2:`20`,y1:`15`,y2:`15`,key:`vyu0kd`}],[`line`,{x1:`10`,x2:`8`,y1:`3`,y2:`21`,key:`1ggp8o`}],[`line`,{x1:`16`,x2:`14`,y1:`3`,y2:`21`,key:`weycgp`}]]),xe=C(`Mail`,[[`rect`,{width:`20`,height:`16`,x:`2`,y:`4`,rx:`2`,key:`18n3k1`}],[`path`,{d:`m22 7-8.97 5.7a1.94 1.94 0 0 1-2.06 0L2 7`,key:`1ocrg3`}]]),H=C(`MessageCircleMore`,[[`path`,{d:`M7.9 20A9 9 0 1 0 4 16.1L2 22Z`,key:`vv11sd`}],[`path`,{d:`M8 12h.01`,key:`czm47f`}],[`path`,{d:`M12 12h.01`,key:`1mp3jc`}],[`path`,{d:`M16 12h.01`,key:`1l6xoz`}]]),Se=C(`QrCode`,[[`rect`,{width:`5`,height:`5`,x:`3`,y:`3`,rx:`1`,key:`1tu5fj`}],[`rect`,{width:`5`,height:`5`,x:`16`,y:`3`,rx:`1`,key:`1v8r4q`}],[`rect`,{width:`5`,height:`5`,x:`3`,y:`16`,rx:`1`,key:`1x03jg`}],[`path`,{d:`M21 16h-3a2 2 0 0 0-2 2v3`,key:`177gqh`}],[`path`,{d:`M21 21v.01`,key:`ents32`}],[`path`,{d:`M12 7v3a2 2 0 0 1-2 2H7`,key:`8crl2c`}],[`path`,{d:`M3 12h.01`,key:`nlz23k`}],[`path`,{d:`M12 3h.01`,key:`n36tog`}],[`path`,{d:`M12 16v.01`,key:`133mhm`}],[`path`,{d:`M16 12h1`,key:`1slzba`}],[`path`,{d:`M21 12v.01`,key:`1lwtk9`}],[`path`,{d:`M12 21v-1`,key:`1880an`}]]),Ce=C(`ToggleLeft`,[[`rect`,{width:`20`,height:`12`,x:`2`,y:`6`,rx:`6`,ry:`6`,key:`f2vt7d`}],[`circle`,{cx:`8`,cy:`12`,r:`2`,key:`1nvbw3`}]]),U=s(n(),1),W=i();function we({value:e,onChange:t,className:n,placeholder:r=``}){let[i,s]=(0,U.useState)(``),c=n=>{n.key===`Enter`&&i.trim()?(n.preventDefault(),t([...e,i.trim()]),s(``)):n.key===`Backspace`&&!i&&e.length>0&&t(e.slice(0,-1))},l=n=>{t(e.filter((e,t)=>t!==n))};return(0,W.jsxs)(`div`,{className:o(`flex min-h-[42px] flex-wrap gap-2 rounded-xl border border-gray-200/80 bg-white p-2`,n),children:[e.map((e,t)=>(0,W.jsxs)(re,{tone:`info`,className:`gap-1 px-2 py-1 text-sm`,children:[e,(0,W.jsx)(`button`,{type:`button`,onClick:()=>l(t),className:`transition-colors hover:text-rose-200`,children:(0,W.jsx)(ne,{className:`h-3 w-3`})})]},t)),(0,W.jsx)(`input`,{type:`text`,value:i,onChange:e=>s(e.target.value),onKeyDown:c,className:`flex-1 outline-none min-w-[100px] bg-transparent text-sm`,placeholder:r||a(`enterTag`)})]})}function Te(e){return e.includes(`token`)||e.includes(`secret`)||e.includes(`password`)?(0,W.jsx)(ce,{className:`h-3.5 w-3.5 text-gray-500`}):e.includes(`url`)||e.includes(`host`)?(0,W.jsx)(fe,{className:`h-3.5 w-3.5 text-gray-500`}):e.includes(`email`)||e.includes(`mail`)?(0,W.jsx)(xe,{className:`h-3.5 w-3.5 text-gray-500`}):e.includes(`id`)||e.includes(`from`)?(0,W.jsx)(be,{className:`h-3.5 w-3.5 text-gray-500`}):e===`enabled`||e===`consentGranted`?(0,W.jsx)(Ce,{className:`h-3.5 w-3.5 text-gray-500`}):(0,W.jsx)(de,{className:`h-3.5 w-3.5 text-gray-500`})}function Ee({channelName:e,fields:t,formData:n,jsonDrafts:r,setJsonDrafts:i,updateField:o,uiHints:s}){return(0,W.jsx)(W.Fragment,{children:t.map(t=>{let c=R(`channels.${e}.${t.name}`,s),l=c?.label??t.label,f=c?.placeholder;return(0,W.jsxs)(`div`,{className:`space-y-2.5`,children:[(0,W.jsxs)(u,{htmlFor:t.name,className:`flex items-center gap-2 text-sm font-medium text-gray-900`,children:[Te(t.name),l]}),t.type===`boolean`&&(0,W.jsxs)(`div`,{className:`flex items-center justify-between rounded-xl bg-gray-50 p-3`,children:[(0,W.jsx)(`span`,{className:`text-sm text-gray-500`,children:n[t.name]?a(`enabled`):a(`disabled`)}),(0,W.jsx)(S,{id:t.name,checked:n[t.name]||!1,onCheckedChange:e=>o(t.name,e),className:`data-[state=checked]:bg-emerald-500`})]}),(t.type===`text`||t.type===`email`)&&(0,W.jsx)(d,{id:t.name,type:t.type,value:n[t.name]||``,onChange:e=>o(t.name,e.target.value),placeholder:f,className:`rounded-xl`}),t.type===`password`&&(0,W.jsx)(d,{id:t.name,type:`password`,value:n[t.name]||``,onChange:e=>o(t.name,e.target.value),placeholder:f??a(`leaveBlankToKeepUnchanged`),className:`rounded-xl`}),t.type===`number`&&(0,W.jsx)(d,{id:t.name,type:`number`,value:n[t.name]||0,onChange:e=>o(t.name,parseInt(e.target.value,10)||0),placeholder:f,className:`rounded-xl`}),t.type===`tags`&&(0,W.jsx)(we,{value:n[t.name]||[],onChange:e=>o(t.name,e)}),t.type===`select`&&(0,W.jsxs)(A,{value:n[t.name]||``,onValueChange:e=>o(t.name,e),children:[(0,W.jsx)(O,{className:`rounded-xl`,children:(0,W.jsx)(D,{})}),(0,W.jsx)(ee,{children:(t.options??[]).map(e=>(0,W.jsx)(k,{value:e.value,children:e.label},e.value))})]}),t.type===`json`&&(0,W.jsx)(`textarea`,{id:t.name,value:r[t.name]??`{}`,onChange:e=>i(n=>({...n,[t.name]:e.target.value})),className:`min-h-[120px] w-full resize-none rounded-lg border border-gray-200 bg-white px-3 py-2 text-xs font-mono`})]},t.name)})})}var De=t(((e,t)=>{t.exports=function(){return typeof Promise==`function`&&Promise.prototype&&Promise.prototype.then}})),G=t((e=>{var t,n=[0,26,44,70,100,134,172,196,242,292,346,404,466,532,581,655,733,815,901,991,1085,1156,1258,1364,1474,1588,1706,1828,1921,2051,2185,2323,2465,2611,2761,2876,3034,3196,3362,3532,3706];e.getSymbolSize=function(e){if(!e)throw Error(`"version" cannot be null or undefined`);if(e<1||e>40)throw Error(`"version" should be in range from 1 to 40`);return e*4+17},e.getSymbolTotalCodewords=function(e){return n[e]},e.getBCHDigit=function(e){let t=0;for(;e!==0;)t++,e>>>=1;return t},e.setToSJISFunction=function(e){if(typeof e!=`function`)throw Error(`"toSJISFunc" is not a valid function.`);t=e},e.isKanjiModeEnabled=function(){return t!==void 0},e.toSJIS=function(e){return t(e)}})),K=t((e=>{e.L={bit:1},e.M={bit:0},e.Q={bit:3},e.H={bit:2};function t(t){if(typeof t!=`string`)throw Error(`Param is not a string`);switch(t.toLowerCase()){case`l`:case`low`:return e.L;case`m`:case`medium`:return e.M;case`q`:case`quartile`:return e.Q;case`h`:case`high`:return e.H;default:throw Error(`Unknown EC Level: `+t)}}e.isValid=function(e){return e&&e.bit!==void 0&&e.bit>=0&&e.bit<4},e.from=function(n,r){if(e.isValid(n))return n;try{return t(n)}catch{return r}}})),Oe=t(((e,t)=>{function n(){this.buffer=[],this.length=0}n.prototype={get:function(e){let t=Math.floor(e/8);return(this.buffer[t]>>>7-e%8&1)==1},put:function(e,t){for(let n=0;n<t;n++)this.putBit((e>>>t-n-1&1)==1)},getLengthInBits:function(){return this.length},putBit:function(e){let t=Math.floor(this.length/8);this.buffer.length<=t&&this.buffer.push(0),e&&(this.buffer[t]|=128>>>this.length%8),this.length++}},t.exports=n})),ke=t(((e,t)=>{function n(e){if(!e||e<1)throw Error(`BitMatrix size must be defined and greater than 0`);this.size=e,this.data=new Uint8Array(e*e),this.reservedBit=new Uint8Array(e*e)}n.prototype.set=function(e,t,n,r){let i=e*this.size+t;this.data[i]=n,r&&(this.reservedBit[i]=!0)},n.prototype.get=function(e,t){return this.data[e*this.size+t]},n.prototype.xor=function(e,t,n){this.data[e*this.size+t]^=n},n.prototype.isReserved=function(e,t){return this.reservedBit[e*this.size+t]},t.exports=n})),Ae=t((e=>{var t=G().getSymbolSize;e.getRowColCoords=function(e){if(e===1)return[];let n=Math.floor(e/7)+2,r=t(e),i=r===145?26:Math.ceil((r-13)/(2*n-2))*2,a=[r-7];for(let e=1;e<n-1;e++)a[e]=a[e-1]-i;return a.push(6),a.reverse()},e.getPositions=function(t){let n=[],r=e.getRowColCoords(t),i=r.length;for(let e=0;e<i;e++)for(let t=0;t<i;t++)e===0&&t===0||e===0&&t===i-1||e===i-1&&t===0||n.push([r[e],r[t]]);return n}})),je=t((e=>{var t=G().getSymbolSize,n=7;e.getPositions=function(e){let r=t(e);return[[0,0],[r-n,0],[0,r-n]]}})),Me=t((e=>{e.Patterns={PATTERN000:0,PATTERN001:1,PATTERN010:2,PATTERN011:3,PATTERN100:4,PATTERN101:5,PATTERN110:6,PATTERN111:7};var t={N1:3,N2:3,N3:40,N4:10};e.isValid=function(e){return e!=null&&e!==``&&!isNaN(e)&&e>=0&&e<=7},e.from=function(t){return e.isValid(t)?parseInt(t,10):void 0},e.getPenaltyN1=function(e){let n=e.size,r=0,i=0,a=0,o=null,s=null;for(let c=0;c<n;c++){i=a=0,o=s=null;for(let l=0;l<n;l++){let n=e.get(c,l);n===o?i++:(i>=5&&(r+=t.N1+(i-5)),o=n,i=1),n=e.get(l,c),n===s?a++:(a>=5&&(r+=t.N1+(a-5)),s=n,a=1)}i>=5&&(r+=t.N1+(i-5)),a>=5&&(r+=t.N1+(a-5))}return r},e.getPenaltyN2=function(e){let n=e.size,r=0;for(let t=0;t<n-1;t++)for(let i=0;i<n-1;i++){let n=e.get(t,i)+e.get(t,i+1)+e.get(t+1,i)+e.get(t+1,i+1);(n===4||n===0)&&r++}return r*t.N2},e.getPenaltyN3=function(e){let n=e.size,r=0,i=0,a=0;for(let t=0;t<n;t++){i=a=0;for(let o=0;o<n;o++)i=i<<1&2047|e.get(t,o),o>=10&&(i===1488||i===93)&&r++,a=a<<1&2047|e.get(o,t),o>=10&&(a===1488||a===93)&&r++}return r*t.N3},e.getPenaltyN4=function(e){let n=0,r=e.data.length;for(let t=0;t<r;t++)n+=e.data[t];return Math.abs(Math.ceil(n*100/r/5)-10)*t.N4};function n(t,n,r){switch(t){case e.Patterns.PATTERN000:return(n+r)%2==0;case e.Patterns.PATTERN001:return n%2==0;case e.Patterns.PATTERN010:return r%3==0;case e.Patterns.PATTERN011:return(n+r)%3==0;case e.Patterns.PATTERN100:return(Math.floor(n/2)+Math.floor(r/3))%2==0;case e.Patterns.PATTERN101:return n*r%2+n*r%3==0;case e.Patterns.PATTERN110:return(n*r%2+n*r%3)%2==0;case e.Patterns.PATTERN111:return(n*r%3+(n+r)%2)%2==0;default:throw Error(`bad maskPattern:`+t)}}e.applyMask=function(e,t){let r=t.size;for(let i=0;i<r;i++)for(let a=0;a<r;a++)t.isReserved(a,i)||t.xor(a,i,n(e,a,i))},e.getBestMask=function(t,n){let r=Object.keys(e.Patterns).length,i=0,a=1/0;for(let o=0;o<r;o++){n(o),e.applyMask(o,t);let r=e.getPenaltyN1(t)+e.getPenaltyN2(t)+e.getPenaltyN3(t)+e.getPenaltyN4(t);e.applyMask(o,t),r<a&&(a=r,i=o)}return i}})),q=t((e=>{var t=K(),n=[1,1,1,1,1,1,1,1,1,1,2,2,1,2,2,4,1,2,4,4,2,4,4,4,2,4,6,5,2,4,6,6,2,5,8,8,4,5,8,8,4,5,8,11,4,8,10,11,4,9,12,16,4,9,16,16,6,10,12,18,6,10,17,16,6,11,16,19,6,13,18,21,7,14,21,25,8,16,20,25,8,17,23,25,9,17,23,34,9,18,25,30,10,20,27,32,12,21,29,35,12,23,34,37,12,25,34,40,13,26,35,42,14,28,38,45,15,29,40,48,16,31,43,51,17,33,45,54,18,35,48,57,19,37,51,60,19,38,53,63,20,40,56,66,21,43,59,70,22,45,62,74,24,47,65,77,25,49,68,81],r=[7,10,13,17,10,16,22,28,15,26,36,44,20,36,52,64,26,48,72,88,36,64,96,112,40,72,108,130,48,88,132,156,60,110,160,192,72,130,192,224,80,150,224,264,96,176,260,308,104,198,288,352,120,216,320,384,132,240,360,432,144,280,408,480,168,308,448,532,180,338,504,588,196,364,546,650,224,416,600,700,224,442,644,750,252,476,690,816,270,504,750,900,300,560,810,960,312,588,870,1050,336,644,952,1110,360,700,1020,1200,390,728,1050,1260,420,784,1140,1350,450,812,1200,1440,480,868,1290,1530,510,924,1350,1620,540,980,1440,1710,570,1036,1530,1800,570,1064,1590,1890,600,1120,1680,1980,630,1204,1770,2100,660,1260,1860,2220,720,1316,1950,2310,750,1372,2040,2430];e.getBlocksCount=function(e,r){switch(r){case t.L:return n[(e-1)*4+0];case t.M:return n[(e-1)*4+1];case t.Q:return n[(e-1)*4+2];case t.H:return n[(e-1)*4+3];default:return}},e.getTotalCodewordsCount=function(e,n){switch(n){case t.L:return r[(e-1)*4+0];case t.M:return r[(e-1)*4+1];case t.Q:return r[(e-1)*4+2];case t.H:return r[(e-1)*4+3];default:return}}})),Ne=t((e=>{var t=new Uint8Array(512),n=new Uint8Array(256);(function(){let e=1;for(let r=0;r<255;r++)t[r]=e,n[e]=r,e<<=1,e&256&&(e^=285);for(let e=255;e<512;e++)t[e]=t[e-255]})(),e.log=function(e){if(e<1)throw Error(`log(`+e+`)`);return n[e]},e.exp=function(e){return t[e]},e.mul=function(e,r){return e===0||r===0?0:t[n[e]+n[r]]}})),Pe=t((e=>{var t=Ne();e.mul=function(e,n){let r=new Uint8Array(e.length+n.length-1);for(let i=0;i<e.length;i++)for(let a=0;a<n.length;a++)r[i+a]^=t.mul(e[i],n[a]);return r},e.mod=function(e,n){let r=new Uint8Array(e);for(;r.length-n.length>=0;){let e=r[0];for(let i=0;i<n.length;i++)r[i]^=t.mul(n[i],e);let i=0;for(;i<r.length&&r[i]===0;)i++;r=r.slice(i)}return r},e.generateECPolynomial=function(n){let r=new Uint8Array([1]);for(let i=0;i<n;i++)r=e.mul(r,new Uint8Array([1,t.exp(i)]));return r}})),Fe=t(((e,t)=>{var n=Pe();function r(e){this.genPoly=void 0,this.degree=e,this.degree&&this.initialize(this.degree)}r.prototype.initialize=function(e){this.degree=e,this.genPoly=n.generateECPolynomial(this.degree)},r.prototype.encode=function(e){if(!this.genPoly)throw Error(`Encoder not initialized`);let t=new Uint8Array(e.length+this.degree);t.set(e);let r=n.mod(t,this.genPoly),i=this.degree-r.length;if(i>0){let e=new Uint8Array(this.degree);return e.set(r,i),e}return r},t.exports=r})),Ie=t((e=>{e.isValid=function(e){return!isNaN(e)&&e>=1&&e<=40}})),Le=t((e=>{var t=`[0-9]+`,n=`[A-Z $%*+\\-./:]+`,r=`(?:[u3000-u303F]|[u3040-u309F]|[u30A0-u30FF]|[uFF00-uFFEF]|[u4E00-u9FAF]|[u2605-u2606]|[u2190-u2195]|u203B|[u2010u2015u2018u2019u2025u2026u201Cu201Du2225u2260]|[u0391-u0451]|[u00A7u00A8u00B1u00B4u00D7u00F7])+`;r=r.replace(/u/g,`\\u`);var i=`(?:(?![A-Z0-9 $%*+\\-./:]|`+r+`)(?:.|[\r
2
- ]))+`;e.KANJI=new RegExp(r,`g`),e.BYTE_KANJI=RegExp(`[^A-Z0-9 $%*+\\-./:]+`,`g`),e.BYTE=new RegExp(i,`g`),e.NUMERIC=new RegExp(t,`g`),e.ALPHANUMERIC=new RegExp(n,`g`);var a=RegExp(`^`+r+`$`),o=RegExp(`^`+t+`$`),s=RegExp(`^[A-Z0-9 $%*+\\-./:]+$`);e.testKanji=function(e){return a.test(e)},e.testNumeric=function(e){return o.test(e)},e.testAlphanumeric=function(e){return s.test(e)}})),J=t((e=>{var t=Ie(),n=Le();e.NUMERIC={id:`Numeric`,bit:1,ccBits:[10,12,14]},e.ALPHANUMERIC={id:`Alphanumeric`,bit:2,ccBits:[9,11,13]},e.BYTE={id:`Byte`,bit:4,ccBits:[8,16,16]},e.KANJI={id:`Kanji`,bit:8,ccBits:[8,10,12]},e.MIXED={bit:-1},e.getCharCountIndicator=function(e,n){if(!e.ccBits)throw Error(`Invalid mode: `+e);if(!t.isValid(n))throw Error(`Invalid version: `+n);return n>=1&&n<10?e.ccBits[0]:n<27?e.ccBits[1]:e.ccBits[2]},e.getBestModeForData=function(t){return n.testNumeric(t)?e.NUMERIC:n.testAlphanumeric(t)?e.ALPHANUMERIC:n.testKanji(t)?e.KANJI:e.BYTE},e.toString=function(e){if(e&&e.id)return e.id;throw Error(`Invalid mode`)},e.isValid=function(e){return e&&e.bit&&e.ccBits};function r(t){if(typeof t!=`string`)throw Error(`Param is not a string`);switch(t.toLowerCase()){case`numeric`:return e.NUMERIC;case`alphanumeric`:return e.ALPHANUMERIC;case`kanji`:return e.KANJI;case`byte`:return e.BYTE;default:throw Error(`Unknown mode: `+t)}}e.from=function(t,n){if(e.isValid(t))return t;try{return r(t)}catch{return n}}})),Re=t((e=>{var t=G(),n=q(),r=K(),i=J(),a=Ie(),o=7973,s=t.getBCHDigit(o);function c(t,n,r){for(let i=1;i<=40;i++)if(n<=e.getCapacity(i,r,t))return i}function l(e,t){return i.getCharCountIndicator(e,t)+4}function u(e,t){let n=0;return e.forEach(function(e){let r=l(e.mode,t);n+=r+e.getBitsLength()}),n}function d(t,n){for(let r=1;r<=40;r++)if(u(t,r)<=e.getCapacity(r,n,i.MIXED))return r}e.from=function(e,t){return a.isValid(e)?parseInt(e,10):t},e.getCapacity=function(e,r,o){if(!a.isValid(e))throw Error(`Invalid QR Code version`);o===void 0&&(o=i.BYTE);let s=(t.getSymbolTotalCodewords(e)-n.getTotalCodewordsCount(e,r))*8;if(o===i.MIXED)return s;let c=s-l(o,e);switch(o){case i.NUMERIC:return Math.floor(c/10*3);case i.ALPHANUMERIC:return Math.floor(c/11*2);case i.KANJI:return Math.floor(c/13);case i.BYTE:default:return Math.floor(c/8)}},e.getBestVersionForData=function(e,t){let n,i=r.from(t,r.M);if(Array.isArray(e)){if(e.length>1)return d(e,i);if(e.length===0)return 1;n=e[0]}else n=e;return c(n.mode,n.getLength(),i)},e.getEncodedBits=function(e){if(!a.isValid(e)||e<7)throw Error(`Invalid QR Code version`);let n=e<<12;for(;t.getBCHDigit(n)-s>=0;)n^=o<<t.getBCHDigit(n)-s;return e<<12|n}})),ze=t((e=>{var t=G(),n=1335,r=21522,i=t.getBCHDigit(n);e.getEncodedBits=function(e,a){let o=e.bit<<3|a,s=o<<10;for(;t.getBCHDigit(s)-i>=0;)s^=n<<t.getBCHDigit(s)-i;return(o<<10|s)^r}})),Be=t(((e,t)=>{var n=J();function r(e){this.mode=n.NUMERIC,this.data=e.toString()}r.getBitsLength=function(e){return 10*Math.floor(e/3)+(e%3?e%3*3+1:0)},r.prototype.getLength=function(){return this.data.length},r.prototype.getBitsLength=function(){return r.getBitsLength(this.data.length)},r.prototype.write=function(e){let t,n,r;for(t=0;t+3<=this.data.length;t+=3)n=this.data.substr(t,3),r=parseInt(n,10),e.put(r,10);let i=this.data.length-t;i>0&&(n=this.data.substr(t),r=parseInt(n,10),e.put(r,i*3+1))},t.exports=r})),Ve=t(((e,t)=>{var n=J(),r=`0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ $%*+-./:`.split(``);function i(e){this.mode=n.ALPHANUMERIC,this.data=e}i.getBitsLength=function(e){return 11*Math.floor(e/2)+e%2*6},i.prototype.getLength=function(){return this.data.length},i.prototype.getBitsLength=function(){return i.getBitsLength(this.data.length)},i.prototype.write=function(e){let t;for(t=0;t+2<=this.data.length;t+=2){let n=r.indexOf(this.data[t])*45;n+=r.indexOf(this.data[t+1]),e.put(n,11)}this.data.length%2&&e.put(r.indexOf(this.data[t]),6)},t.exports=i})),He=t(((e,t)=>{var n=J();function r(e){this.mode=n.BYTE,typeof e==`string`?this.data=new TextEncoder().encode(e):this.data=new Uint8Array(e)}r.getBitsLength=function(e){return e*8},r.prototype.getLength=function(){return this.data.length},r.prototype.getBitsLength=function(){return r.getBitsLength(this.data.length)},r.prototype.write=function(e){for(let t=0,n=this.data.length;t<n;t++)e.put(this.data[t],8)},t.exports=r})),Ue=t(((e,t)=>{var n=J(),r=G();function i(e){this.mode=n.KANJI,this.data=e}i.getBitsLength=function(e){return e*13},i.prototype.getLength=function(){return this.data.length},i.prototype.getBitsLength=function(){return i.getBitsLength(this.data.length)},i.prototype.write=function(e){let t;for(t=0;t<this.data.length;t++){let n=r.toSJIS(this.data[t]);if(n>=33088&&n<=40956)n-=33088;else if(n>=57408&&n<=60351)n-=49472;else throw Error(`Invalid SJIS character: `+this.data[t]+`
3
- Make sure your charset is UTF-8`);n=(n>>>8&255)*192+(n&255),e.put(n,13)}},t.exports=i})),We=t(((e,t)=>{var n={single_source_shortest_paths:function(e,t,r){var i={},a={};a[t]=0;var o=n.PriorityQueue.make();o.push(t,0);for(var s,c,l,u,d,f,p,m,h;!o.empty();)for(l in s=o.pop(),c=s.value,u=s.cost,d=e[c]||{},d)d.hasOwnProperty(l)&&(f=d[l],p=u+f,m=a[l],h=a[l]===void 0,(h||m>p)&&(a[l]=p,o.push(l,p),i[l]=c));if(r!==void 0&&a[r]===void 0){var g=[`Could not find a path from `,t,` to `,r,`.`].join(``);throw Error(g)}return i},extract_shortest_path_from_predecessor_list:function(e,t){for(var n=[],r=t;r;)n.push(r),e[r],r=e[r];return n.reverse(),n},find_path:function(e,t,r){var i=n.single_source_shortest_paths(e,t,r);return n.extract_shortest_path_from_predecessor_list(i,r)},PriorityQueue:{make:function(e){var t=n.PriorityQueue,r={},i;for(i in e||={},t)t.hasOwnProperty(i)&&(r[i]=t[i]);return r.queue=[],r.sorter=e.sorter||t.default_sorter,r},default_sorter:function(e,t){return e.cost-t.cost},push:function(e,t){var n={value:e,cost:t};this.queue.push(n),this.queue.sort(this.sorter)},pop:function(){return this.queue.shift()},empty:function(){return this.queue.length===0}}};t!==void 0&&(t.exports=n)})),Ge=t((e=>{var t=J(),n=Be(),r=Ve(),i=He(),a=Ue(),o=Le(),s=G(),c=We();function l(e){return unescape(encodeURIComponent(e)).length}function u(e,t,n){let r=[],i;for(;(i=e.exec(n))!==null;)r.push({data:i[0],index:i.index,mode:t,length:i[0].length});return r}function d(e){let n=u(o.NUMERIC,t.NUMERIC,e),r=u(o.ALPHANUMERIC,t.ALPHANUMERIC,e),i,a;return s.isKanjiModeEnabled()?(i=u(o.BYTE,t.BYTE,e),a=u(o.KANJI,t.KANJI,e)):(i=u(o.BYTE_KANJI,t.BYTE,e),a=[]),n.concat(r,i,a).sort(function(e,t){return e.index-t.index}).map(function(e){return{data:e.data,mode:e.mode,length:e.length}})}function f(e,o){switch(o){case t.NUMERIC:return n.getBitsLength(e);case t.ALPHANUMERIC:return r.getBitsLength(e);case t.KANJI:return a.getBitsLength(e);case t.BYTE:return i.getBitsLength(e)}}function p(e){return e.reduce(function(e,t){let n=e.length-1>=0?e[e.length-1]:null;return n&&n.mode===t.mode?(e[e.length-1].data+=t.data,e):(e.push(t),e)},[])}function m(e){let n=[];for(let r=0;r<e.length;r++){let i=e[r];switch(i.mode){case t.NUMERIC:n.push([i,{data:i.data,mode:t.ALPHANUMERIC,length:i.length},{data:i.data,mode:t.BYTE,length:i.length}]);break;case t.ALPHANUMERIC:n.push([i,{data:i.data,mode:t.BYTE,length:i.length}]);break;case t.KANJI:n.push([i,{data:i.data,mode:t.BYTE,length:l(i.data)}]);break;case t.BYTE:n.push([{data:i.data,mode:t.BYTE,length:l(i.data)}])}}return n}function h(e,n){let r={},i={start:{}},a=[`start`];for(let o=0;o<e.length;o++){let s=e[o],c=[];for(let e=0;e<s.length;e++){let l=s[e],u=``+o+e;c.push(u),r[u]={node:l,lastCount:0},i[u]={};for(let e=0;e<a.length;e++){let o=a[e];r[o]&&r[o].node.mode===l.mode?(i[o][u]=f(r[o].lastCount+l.length,l.mode)-f(r[o].lastCount,l.mode),r[o].lastCount+=l.length):(r[o]&&(r[o].lastCount=l.length),i[o][u]=f(l.length,l.mode)+4+t.getCharCountIndicator(l.mode,n))}}a=c}for(let e=0;e<a.length;e++)i[a[e]].end=0;return{map:i,table:r}}function g(e,o){let c,l=t.getBestModeForData(e);if(c=t.from(o,l),c!==t.BYTE&&c.bit<l.bit)throw Error(`"`+e+`" cannot be encoded with mode `+t.toString(c)+`.
4
- Suggested mode is: `+t.toString(l));switch(c===t.KANJI&&!s.isKanjiModeEnabled()&&(c=t.BYTE),c){case t.NUMERIC:return new n(e);case t.ALPHANUMERIC:return new r(e);case t.KANJI:return new a(e);case t.BYTE:return new i(e)}}e.fromArray=function(e){return e.reduce(function(e,t){return typeof t==`string`?e.push(g(t,null)):t.data&&e.push(g(t.data,t.mode)),e},[])},e.fromString=function(t,n){let r=h(m(d(t,s.isKanjiModeEnabled())),n),i=c.find_path(r.map,`start`,`end`),a=[];for(let e=1;e<i.length-1;e++)a.push(r.table[i[e]].node);return e.fromArray(p(a))},e.rawSplit=function(t){return e.fromArray(d(t,s.isKanjiModeEnabled()))}})),Ke=t((e=>{var t=G(),n=K(),r=Oe(),i=ke(),a=Ae(),o=je(),s=Me(),c=q(),l=Fe(),u=Re(),d=ze(),f=J(),p=Ge();function m(e,t){let n=e.size,r=o.getPositions(t);for(let t=0;t<r.length;t++){let i=r[t][0],a=r[t][1];for(let t=-1;t<=7;t++)if(!(i+t<=-1||n<=i+t))for(let r=-1;r<=7;r++)a+r<=-1||n<=a+r||(t>=0&&t<=6&&(r===0||r===6)||r>=0&&r<=6&&(t===0||t===6)||t>=2&&t<=4&&r>=2&&r<=4?e.set(i+t,a+r,!0,!0):e.set(i+t,a+r,!1,!0))}}function h(e){let t=e.size;for(let n=8;n<t-8;n++){let t=n%2==0;e.set(n,6,t,!0),e.set(6,n,t,!0)}}function g(e,t){let n=a.getPositions(t);for(let t=0;t<n.length;t++){let r=n[t][0],i=n[t][1];for(let t=-2;t<=2;t++)for(let n=-2;n<=2;n++)t===-2||t===2||n===-2||n===2||t===0&&n===0?e.set(r+t,i+n,!0,!0):e.set(r+t,i+n,!1,!0)}}function _(e,t){let n=e.size,r=u.getEncodedBits(t),i,a,o;for(let t=0;t<18;t++)i=Math.floor(t/3),a=t%3+n-8-3,o=(r>>t&1)==1,e.set(i,a,o,!0),e.set(a,i,o,!0)}function v(e,t,n){let r=e.size,i=d.getEncodedBits(t,n),a,o;for(a=0;a<15;a++)o=(i>>a&1)==1,a<6?e.set(a,8,o,!0):a<8?e.set(a+1,8,o,!0):e.set(r-15+a,8,o,!0),a<8?e.set(8,r-a-1,o,!0):a<9?e.set(8,15-a-1+1,o,!0):e.set(8,15-a-1,o,!0);e.set(r-8,8,1,!0)}function y(e,t){let n=e.size,r=-1,i=n-1,a=7,o=0;for(let s=n-1;s>0;s-=2)for(s===6&&s--;;){for(let n=0;n<2;n++)if(!e.isReserved(i,s-n)){let r=!1;o<t.length&&(r=(t[o]>>>a&1)==1),e.set(i,s-n,r),a--,a===-1&&(o++,a=7)}if(i+=r,i<0||n<=i){i-=r,r=-r;break}}}function b(e,n,i){let a=new r;i.forEach(function(t){a.put(t.mode.bit,4),a.put(t.getLength(),f.getCharCountIndicator(t.mode,e)),t.write(a)});let o=(t.getSymbolTotalCodewords(e)-c.getTotalCodewordsCount(e,n))*8;for(a.getLengthInBits()+4<=o&&a.put(0,4);a.getLengthInBits()%8!=0;)a.putBit(0);let s=(o-a.getLengthInBits())/8;for(let e=0;e<s;e++)a.put(e%2?17:236,8);return x(a,e,n)}function x(e,n,r){let i=t.getSymbolTotalCodewords(n),a=i-c.getTotalCodewordsCount(n,r),o=c.getBlocksCount(n,r),s=o-i%o,u=Math.floor(i/o),d=Math.floor(a/o),f=d+1,p=u-d,m=new l(p),h=0,g=Array(o),_=Array(o),v=0,y=new Uint8Array(e.buffer);for(let e=0;e<o;e++){let t=e<s?d:f;g[e]=y.slice(h,h+t),_[e]=m.encode(g[e]),h+=t,v=Math.max(v,t)}let b=new Uint8Array(i),x=0,S,C;for(S=0;S<v;S++)for(C=0;C<o;C++)S<g[C].length&&(b[x++]=g[C][S]);for(S=0;S<p;S++)for(C=0;C<o;C++)b[x++]=_[C][S];return b}function S(e,n,r,a){let o;if(Array.isArray(e))o=p.fromArray(e);else if(typeof e==`string`){let t=n;if(!t){let n=p.rawSplit(e);t=u.getBestVersionForData(n,r)}o=p.fromString(e,t||40)}else throw Error(`Invalid data`);let c=u.getBestVersionForData(o,r);if(!c)throw Error(`The amount of data is too big to be stored in a QR Code`);if(!n)n=c;else if(n<c)throw Error(`
5
- The chosen QR Code version cannot contain this amount of data.
6
- Minimum version required to store current data is: `+c+`.
7
- `);let l=b(n,r,o),d=new i(t.getSymbolSize(n));return m(d,n),h(d),g(d,n),v(d,r,0),n>=7&&_(d,n),y(d,l),isNaN(a)&&(a=s.getBestMask(d,v.bind(null,d,r))),s.applyMask(a,d),v(d,r,a),{modules:d,version:n,errorCorrectionLevel:r,maskPattern:a,segments:o}}e.create=function(e,r){if(e===void 0||e===``)throw Error(`No input text`);let i=n.M,a,o;return r!==void 0&&(i=n.from(r.errorCorrectionLevel,n.M),a=u.from(r.version),o=s.from(r.maskPattern),r.toSJISFunc&&t.setToSJISFunction(r.toSJISFunc)),S(e,a,i,o)}})),qe=t((e=>{function t(e){if(typeof e==`number`&&(e=e.toString()),typeof e!=`string`)throw Error(`Color should be defined as hex string`);let t=e.slice().replace(`#`,``).split(``);if(t.length<3||t.length===5||t.length>8)throw Error(`Invalid hex color: `+e);(t.length===3||t.length===4)&&(t=Array.prototype.concat.apply([],t.map(function(e){return[e,e]}))),t.length===6&&t.push(`F`,`F`);let n=parseInt(t.join(``),16);return{r:n>>24&255,g:n>>16&255,b:n>>8&255,a:n&255,hex:`#`+t.slice(0,6).join(``)}}e.getOptions=function(e){e||={},e.color||={};let n=e.margin===void 0||e.margin===null||e.margin<0?4:e.margin,r=e.width&&e.width>=21?e.width:void 0,i=e.scale||4;return{width:r,scale:r?4:i,margin:n,color:{dark:t(e.color.dark||`#000000ff`),light:t(e.color.light||`#ffffffff`)},type:e.type,rendererOpts:e.rendererOpts||{}}},e.getScale=function(e,t){return t.width&&t.width>=e+t.margin*2?t.width/(e+t.margin*2):t.scale},e.getImageWidth=function(t,n){let r=e.getScale(t,n);return Math.floor((t+n.margin*2)*r)},e.qrToImageData=function(t,n,r){let i=n.modules.size,a=n.modules.data,o=e.getScale(i,r),s=Math.floor((i+r.margin*2)*o),c=r.margin*o,l=[r.color.light,r.color.dark];for(let e=0;e<s;e++)for(let n=0;n<s;n++){let u=(e*s+n)*4,d=r.color.light;if(e>=c&&n>=c&&e<s-c&&n<s-c){let t=Math.floor((e-c)/o),r=Math.floor((n-c)/o);d=l[a[t*i+r]?1:0]}t[u++]=d.r,t[u++]=d.g,t[u++]=d.b,t[u]=d.a}}})),Je=t((e=>{var t=qe();function n(e,t,n){e.clearRect(0,0,t.width,t.height),t.style||={},t.height=n,t.width=n,t.style.height=n+`px`,t.style.width=n+`px`}function r(){try{return document.createElement(`canvas`)}catch{throw Error(`You need to specify a canvas element`)}}e.render=function(e,i,a){let o=a,s=i;o===void 0&&(!i||!i.getContext)&&(o=i,i=void 0),i||(s=r()),o=t.getOptions(o);let c=t.getImageWidth(e.modules.size,o),l=s.getContext(`2d`),u=l.createImageData(c,c);return t.qrToImageData(u.data,e,o),n(l,s,c),l.putImageData(u,0,0),s},e.renderToDataURL=function(t,n,r){let i=r;i===void 0&&(!n||!n.getContext)&&(i=n,n=void 0),i||={};let a=e.render(t,n,i),o=i.type||`image/png`,s=i.rendererOpts||{};return a.toDataURL(o,s.quality)}})),Ye=t((e=>{var t=qe();function n(e,t){let n=e.a/255,r=t+`="`+e.hex+`"`;return n<1?r+` `+t+`-opacity="`+n.toFixed(2).slice(1)+`"`:r}function r(e,t,n){let r=e+t;return n!==void 0&&(r+=` `+n),r}function i(e,t,n){let i=``,a=0,o=!1,s=0;for(let c=0;c<e.length;c++){let l=Math.floor(c%t),u=Math.floor(c/t);!l&&!o&&(o=!0),e[c]?(s++,c>0&&l>0&&e[c-1]||(i+=o?r(`M`,l+n,.5+u+n):r(`m`,a,0),a=0,o=!1),l+1<t&&e[c+1]||(i+=r(`h`,s),s=0)):a++}return i}e.render=function(e,r,a){let o=t.getOptions(r),s=e.modules.size,c=e.modules.data,l=s+o.margin*2,u=o.color.light.a?`<path `+n(o.color.light,`fill`)+` d="M0 0h`+l+`v`+l+`H0z"/>`:``,d=`<path `+n(o.color.dark,`stroke`)+` d="`+i(c,s,o.margin)+`"/>`,f=`viewBox="0 0 `+l+` `+l+`"`,p=`<svg xmlns="http://www.w3.org/2000/svg" `+(o.width?`width="`+o.width+`" height="`+o.width+`" `:``)+f+` shape-rendering="crispEdges">`+u+d+`</svg>
8
- `;return typeof a==`function`&&a(null,p),p}})),Xe=t((e=>{var t=De(),n=Ke(),r=Je(),i=Ye();function a(e,r,i,a,o){let s=[].slice.call(arguments,1),c=s.length,l=typeof s[c-1]==`function`;if(!l&&!t())throw Error(`Callback required as last argument`);if(l){if(c<2)throw Error(`Too few arguments provided`);c===2?(o=i,i=r,r=a=void 0):c===3&&(r.getContext&&o===void 0?(o=a,a=void 0):(o=a,a=i,i=r,r=void 0))}else{if(c<1)throw Error(`Too few arguments provided`);return c===1?(i=r,r=a=void 0):c===2&&!r.getContext&&(a=i,i=r,r=void 0),new Promise(function(t,o){try{t(e(n.create(i,a),r,a))}catch(e){o(e)}})}try{let t=n.create(i,a);o(null,e(t,r,a))}catch(e){o(e)}}e.create=n.create,e.toCanvas=a.bind(null,r.render),e.toDataURL=a.bind(null,r.renderToDataURL),e.toString=a.bind(null,function(e,t,n){return i.render(e,n)})}))();function Ze(){return l({mutationFn:({channel:e,data:t})=>m(e,t)})}function Qe(){return l({mutationFn:({channel:e,data:t})=>v(e,t)})}function $e(){return l({mutationFn:({channel:e,data:t})=>_(e,t)})}var et={weixin:{title:`weixinAuthTitle`,description:`weixinAuthDescription`,hint:`weixinAuthHint`,capabilityHint:`weixinAuthCapabilityHint`,disabledHint:`weixinAuthDisabledHint`,connect:`weixinAuthConnect`,qrAlt:`weixinAuthQrAlt`,scanPrompt:`weixinAuthScanPrompt`,readyTitle:`weixinAuthReadyTitle`,readyDescription:`weixinAuthReadyDescription`,advancedTitle:`weixinAuthAdvancedTitle`,advancedDescription:`weixinAuthAdvancedDescription`},feishu:{title:`feishuAuthTitle`,description:`feishuAuthDescription`,hint:`feishuAuthHint`,capabilityHint:`feishuAuthCapabilityHint`,disabledHint:`feishuAuthDisabledHint`,connect:`feishuAuthConnect`,qrAlt:`feishuAuthQrAlt`,scanPrompt:`feishuAuthScanPrompt`,readyTitle:`feishuAuthReadyTitle`,readyDescription:`feishuAuthReadyDescription`,advancedTitle:`feishuAuthAdvancedTitle`,advancedDescription:`feishuAuthAdvancedDescription`,domainLabel:`feishuAuthDomain`}};function tt(e){let{accounts:t}=e,n=new Set;if(typeof e.defaultAccountId==`string`&&e.defaultAccountId.trim()&&n.add(e.defaultAccountId.trim()),t&&typeof t==`object`&&!Array.isArray(t))for(let e of Object.keys(t)){let t=e.trim();t&&n.add(t)}return[...n]}function nt(e,t){if(typeof e.baseUrl==`string`&&e.baseUrl.trim())return e.baseUrl.trim();if(typeof t.baseUrl==`string`&&t.baseUrl.trim())return t.baseUrl.trim()}function rt(e,t){return(typeof e.domain==`string`?e.domain.trim():``)||(typeof t.domain==`string`?t.domain.trim():``)||void 0}function it(e,t){return rt(e,t)===`lark`?`lark`:`feishu`}function at(e){return e===`lark`?`https://open.larksuite.com/app`:`https://open.feishu.cn/app`}function ot(e,t){return f({queryKey:[`channel-qr`,e,t],enabled:!!t,queryFn:()=>(0,Xe.toDataURL)(t,{errorCorrectionLevel:`M`,margin:1,width:480})}).data??null}function st({activeSession:e,baseUrl:t,channelEnabled:n,copy:r,connectButtonLabel:i,connectedAccountIds:s,disabled:c,domain:l,handleStartAuth:u,hasConnectedAccount:d,primaryAccountId:f,statusLabel:p}){return(0,W.jsxs)(`div`,{className:`space-y-3`,children:[(0,W.jsxs)(`div`,{className:`inline-flex items-center gap-2 rounded-full bg-white/90 px-3 py-1 text-xs font-medium text-primary shadow-sm`,children:[(0,W.jsx)(Se,{className:`h-3.5 w-3.5`}),a(r.title)]}),(0,W.jsxs)(`div`,{children:[(0,W.jsx)(`h4`,{className:`text-base font-semibold text-gray-900`,children:a(r.description)}),(0,W.jsx)(`p`,{className:`mt-1 text-sm text-gray-600`,children:a(r.hint)})]}),(0,W.jsxs)(`div`,{className:o(`inline-flex w-fit items-center gap-2 rounded-full px-3 py-1 text-xs font-medium`,e?`bg-amber-50 text-amber-700`:d?`bg-emerald-50 text-emerald-700`:`bg-gray-100 text-gray-600`),children:[e?(0,W.jsx)(te,{className:`h-3.5 w-3.5 animate-spin`}):(0,W.jsx)(H,{className:`h-3.5 w-3.5`}),p]}),(0,W.jsxs)(`div`,{className:`space-y-1 text-sm text-gray-600`,children:[(0,W.jsx)(`p`,{children:a(n||!d?r.capabilityHint:r.disabledHint)}),f?(0,W.jsxs)(`p`,{children:[a(`weixinAuthPrimaryAccount`),`: `,(0,W.jsx)(`span`,{className:`font-mono text-xs text-gray-900`,children:f})]}):null,s.length>1?(0,W.jsxs)(`p`,{children:[a(`weixinAuthConnectedAccounts`),`: `,(0,W.jsx)(`span`,{className:`font-mono text-xs text-gray-900`,children:s.join(`, `)})]}):null,t?(0,W.jsxs)(`p`,{children:[a(`weixinAuthBaseUrl`),`: `,(0,W.jsx)(`span`,{className:`font-mono text-xs text-gray-900`,children:t})]}):null,l&&r.domainLabel?(0,W.jsxs)(`p`,{children:[a(r.domainLabel),`: `,(0,W.jsx)(`span`,{className:`font-mono text-xs text-gray-900`,children:l})]}):null]}),(0,W.jsx)(b,{type:`button`,onClick:()=>void u(),disabled:c,className:`rounded-xl`,children:i})]})}function ct({activeSession:e,authMessage:t,copy:n,qrDataUrl:i}){return(0,W.jsx)(`div`,{className:`w-full max-w-sm rounded-2xl border border-dashed border-primary/25 bg-white/85 p-4 shadow-sm`,children:e?(0,W.jsxs)(`div`,{className:`space-y-3`,children:[(0,W.jsx)(`div`,{className:`overflow-hidden rounded-2xl border border-gray-100 bg-white p-3`,children:i?(0,W.jsx)(`img`,{src:i,alt:a(n.qrAlt),className:`mx-auto aspect-square w-full max-w-[240px] object-contain`}):(0,W.jsx)(`div`,{className:`flex aspect-square w-full items-center justify-center rounded-xl bg-gray-50 text-gray-500`,children:(0,W.jsxs)(`div`,{className:`flex flex-col items-center gap-2 text-center`,children:[(0,W.jsx)(te,{className:`h-5 w-5 animate-spin`}),(0,W.jsx)(`p`,{className:`text-xs`,children:a(`weixinAuthStarting`)})]})})}),(0,W.jsxs)(`div`,{className:`space-y-1 text-xs text-gray-500`,children:[(0,W.jsx)(`p`,{children:t||e.note||a(n.scanPrompt)}),(0,W.jsxs)(`p`,{children:[a(`weixinAuthExpiresAt`),`: `,r(e.expiresAt)]})]}),(0,W.jsxs)(`a`,{href:e.qrCodeUrl,target:`_blank`,rel:`noreferrer`,className:`inline-flex items-center gap-1.5 text-xs text-primary transition-colors hover:text-primary-hover`,children:[(0,W.jsx)(j,{className:`h-3.5 w-3.5`}),a(`weixinAuthOpenQr`)]})]}):(0,W.jsxs)(`div`,{className:`flex min-h-[280px] flex-col items-center justify-center rounded-2xl bg-gray-50/80 px-6 text-center`,children:[(0,W.jsx)(Se,{className:`h-9 w-9 text-gray-300`}),(0,W.jsx)(`p`,{className:`mt-3 text-sm font-medium text-gray-700`,children:a(n.readyTitle)}),(0,W.jsx)(`p`,{className:`mt-1 text-xs leading-5 text-gray-500`,children:a(n.readyDescription)})]})})}function lt({channelConfig:e,channelEnabled:t,channelName:n,disabled:r,formData:i}){let o=p(),s=Ze(),l=Qe(),[u,d]=(0,U.useState)(null),[f,m]=(0,U.useState)(null),[h,g]=(0,U.useState)(!1),_=(0,U.useMemo)(()=>tt(e),[e]),v=_[0],y=nt(i,e),b=n===`feishu`?rt(i,e):void 0,x=_.length>0,S=x&&!h?null:u,C=ot(n,S?.qrCodeUrl),w=et[n];(0,U.useEffect)(()=>{if(!S)return;let e=!1,t=null,r=async()=>{try{let i=await l.mutateAsync({channel:n,data:{sessionId:S.sessionId}});if(e)return;if(m(i),i.status===`authorized`){await o.invalidateQueries({queryKey:[`config`]}),await o.invalidateQueries({queryKey:[`config-meta`]}),c.success(i.message||a(`weixinAuthAuthorized`)),d(null);return}if(i.status===`expired`||i.status===`error`){c.error(i.message||a(`weixinAuthRetryRequired`)),d(null);return}t=setTimeout(r,i.nextPollMs??S.intervalMs)}catch(t){e||(c.error(`${a(`error`)}: ${t instanceof Error?t.message:String(t)}`),d(null))}};return t=setTimeout(r,S.intervalMs),()=>{e=!0,t&&clearTimeout(t)}},[n,S,l,o]);let T=async()=>{try{let e=await s.mutateAsync({channel:n,data:{baseUrl:y,domain:b,accountId:typeof i.defaultAccountId==`string`&&i.defaultAccountId.trim()?i.defaultAccountId.trim():void 0}});g(x),d(e),m({channel:n,status:`pending`,message:e.note,nextPollMs:e.intervalMs})}catch(e){c.error(`${a(`error`)}: ${e instanceof Error?e.message:String(e)}`)}},E=S?f?.status===`scanned`?a(`weixinAuthScanned`):a(`weixinAuthWaiting`):a(x?t?`weixinAuthAuthorized`:`weixinAuthConnectedDisabled`:`weixinAuthNotConnected`),D=s.isPending?a(`weixinAuthStarting`):a(S?`weixinAuthWaiting`:x?`weixinAuthReconnect`:w.connect),O=x?a(`weixinAuthAuthorized`):f?.message;return(0,W.jsx)(`section`,{className:`rounded-2xl border border-primary/20 bg-gradient-to-br from-primary-50/70 via-white to-emerald-50/60 p-5`,children:(0,W.jsxs)(`div`,{className:`flex flex-col gap-4 lg:flex-row lg:items-start lg:justify-between`,children:[(0,W.jsx)(st,{activeSession:S,baseUrl:y,channelEnabled:t,copy:w,connectButtonLabel:D,connectedAccountIds:_,disabled:r||s.isPending||!!S,domain:b,handleStartAuth:T,hasConnectedAccount:x,primaryAccountId:v,statusLabel:E}),(0,W.jsx)(ct,{activeSession:S,authMessage:O,copy:w,qrDataUrl:C})]})})}function ut({channelConfig:e,disabled:t,formData:n}){let r=p(),i=$e(),[o,s]=(0,U.useState)(()=>it(n,e)),[l,f]=(0,U.useState)(``),[m,h]=(0,U.useState)(``),g=at(o),_=!!(l.trim()&&m.trim())&&!t&&!i.isPending,v=async()=>{try{let e=await i.mutateAsync({channel:`feishu`,data:{domain:o,fields:{appId:l.trim(),appSecret:m.trim()}}});await r.invalidateQueries({queryKey:[`config`]}),await r.invalidateQueries({queryKey:[`config-meta`]}),c.success(e.message||a(`feishuExistingAgentConnectSuccess`)),h(``)}catch(e){c.error(`${a(`error`)}: ${e instanceof Error?e.message:String(e)}`)}};return(0,W.jsx)(`section`,{className:`rounded-2xl border border-primary/20 bg-white p-5`,children:(0,W.jsxs)(`div`,{className:`flex flex-col gap-4 lg:flex-row lg:items-start lg:justify-between`,children:[(0,W.jsxs)(`div`,{className:`max-w-xl space-y-3`,children:[(0,W.jsxs)(`div`,{className:`inline-flex items-center gap-2 rounded-full bg-gray-100 px-3 py-1 text-xs font-medium text-gray-700`,children:[(0,W.jsx)(H,{className:`h-3.5 w-3.5`}),a(`feishuExistingAgentTitle`)]}),(0,W.jsxs)(`div`,{children:[(0,W.jsx)(`h4`,{className:`text-base font-semibold text-gray-900`,children:a(`feishuExistingAgentDescription`)}),(0,W.jsx)(`p`,{className:`mt-1 text-sm text-gray-600`,children:a(`feishuExistingAgentHint`)})]}),(0,W.jsxs)(`a`,{href:g,target:`_blank`,rel:`noreferrer`,className:`inline-flex items-center gap-1.5 text-sm text-primary transition-colors hover:text-primary-hover`,children:[(0,W.jsx)(j,{className:`h-4 w-4`}),a(o===`lark`?`feishuExistingAgentOpenLarkList`:`feishuExistingAgentOpenFeishuList`)]})]}),(0,W.jsxs)(`div`,{className:`w-full max-w-sm space-y-4`,children:[(0,W.jsxs)(`div`,{className:`space-y-2`,children:[(0,W.jsx)(u,{htmlFor:`feishu-existing-platform`,children:a(`feishuPlatform`)}),(0,W.jsxs)(A,{value:o,onValueChange:e=>s(e===`lark`?`lark`:`feishu`),children:[(0,W.jsx)(O,{id:`feishu-existing-platform`,className:`rounded-xl`,children:(0,W.jsx)(D,{})}),(0,W.jsxs)(ee,{children:[(0,W.jsx)(k,{value:`feishu`,children:`Feishu`}),(0,W.jsx)(k,{value:`lark`,children:`Lark`})]})]})]}),(0,W.jsxs)(`div`,{className:`space-y-2`,children:[(0,W.jsx)(u,{htmlFor:`feishu-existing-app-id`,children:`App ID`}),(0,W.jsx)(d,{id:`feishu-existing-app-id`,value:l,onChange:e=>f(e.target.value),className:`rounded-xl`})]}),(0,W.jsxs)(`div`,{className:`space-y-2`,children:[(0,W.jsx)(u,{htmlFor:`feishu-existing-app-secret`,children:`App Secret`}),(0,W.jsx)(d,{id:`feishu-existing-app-secret`,type:`password`,value:m,onChange:e=>h(e.target.value),className:`rounded-xl`})]}),(0,W.jsx)(b,{type:`button`,onClick:()=>void v(),disabled:!_,className:`w-full rounded-xl`,children:i.isPending?a(`feishuExistingAgentConnecting`):a(`feishuExistingAgentConnect`)})]})]})})}function dt(e){let[t,n]=(0,U.useState)(`create`);return(0,W.jsxs)(P,{value:t,onValueChange:e=>n(e===`existing`?`existing`:`create`),children:[(0,W.jsxs)(ie,{children:[(0,W.jsx)(N,{value:`create`,children:a(`feishuAuthCreateNew`)}),(0,W.jsx)(N,{value:`existing`,children:a(`feishuAuthConnectExisting`)})]}),(0,W.jsx)(se,{value:`create`,className:`mt-4`,children:(0,W.jsx)(lt,{...e,channelName:`feishu`})}),(0,W.jsx)(se,{value:`existing`,className:`mt-4`,children:(0,W.jsx)(ut,{...e})})]})}var ft=[{value:`pairing`,label:`pairing`},{value:`allowlist`,label:`allowlist`},{value:`open`,label:`open`},{value:`disabled`,label:`disabled`}],Y=[{value:`open`,label:`open`},{value:`allowlist`,label:`allowlist`},{value:`disabled`,label:`disabled`}],pt=[{value:`feishu`,label:`feishu`},{value:`lark`,label:`lark`}],mt=[{value:`off`,label:`off`},{value:`partial`,label:`partial`},{value:`block`,label:`block`},{value:`progress`,label:`progress`}];function ht(){return{fields:[{name:`enabled`,type:`boolean`,label:a(`enabled`),section:`primary`},{name:`defaultAccountId`,type:`text`,label:a(`defaultAccountId`)},{name:`domain`,type:`select`,label:a(`feishuAuthDomain`),options:pt},{name:`allowFrom`,type:`tags`,label:a(`allowFrom`)},{name:`groupPolicy`,type:`select`,label:a(`groupPolicy`),options:Y},{name:`requireMention`,type:`boolean`,label:a(`requireMention`)},{name:`accounts`,type:`json`,label:a(`accountsJson`)}],layout:[{type:`fields`,section:`primary`},{type:`custom`,sectionId:`feishu-auth`},{type:`fields`,section:`advanced`,collapsible:{title:a(`feishuAuthAdvancedTitle`),description:a(`feishuAuthAdvancedDescription`)}}]}}function gt(){return{telegram:{fields:[{name:`enabled`,type:`boolean`,label:a(`enabled`)},{name:`token`,type:`password`,label:a(`botToken`)},{name:`allowFrom`,type:`tags`,label:a(`allowFrom`)},{name:`proxy`,type:`text`,label:a(`proxy`)},{name:`accountId`,type:`text`,label:a(`accountId`)},{name:`dmPolicy`,type:`select`,label:a(`dmPolicy`),options:ft},{name:`groupPolicy`,type:`select`,label:a(`groupPolicy`),options:Y},{name:`groupAllowFrom`,type:`tags`,label:a(`groupAllowFrom`)},{name:`requireMention`,type:`boolean`,label:a(`requireMention`)},{name:`mentionPatterns`,type:`tags`,label:a(`mentionPatterns`)},{name:`groups`,type:`json`,label:a(`groupRulesJson`)}]},discord:{fields:[{name:`enabled`,type:`boolean`,label:a(`enabled`)},{name:`token`,type:`password`,label:a(`botToken`)},{name:`allowBots`,type:`boolean`,label:a(`allowBotMessages`)},{name:`allowFrom`,type:`tags`,label:a(`allowFrom`)},{name:`gatewayUrl`,type:`text`,label:a(`gatewayUrl`)},{name:`intents`,type:`number`,label:a(`intents`)},{name:`proxy`,type:`text`,label:a(`proxy`)},{name:`mediaMaxMb`,type:`number`,label:a(`attachmentMaxSizeMb`)},{name:`streaming`,type:`select`,label:a(`streamingMode`),options:mt},{name:`draftChunk`,type:`json`,label:a(`draftChunkingJson`)},{name:`textChunkLimit`,type:`number`,label:a(`textChunkLimit`)},{name:`accountId`,type:`text`,label:a(`accountId`)},{name:`dmPolicy`,type:`select`,label:a(`dmPolicy`),options:ft},{name:`groupPolicy`,type:`select`,label:a(`groupPolicy`),options:Y},{name:`groupAllowFrom`,type:`tags`,label:a(`groupAllowFrom`)},{name:`requireMention`,type:`boolean`,label:a(`requireMention`)},{name:`mentionPatterns`,type:`tags`,label:a(`mentionPatterns`)},{name:`groups`,type:`json`,label:a(`groupRulesJson`)}]},whatsapp:{fields:[{name:`enabled`,type:`boolean`,label:a(`enabled`)},{name:`bridgeUrl`,type:`text`,label:a(`bridgeUrl`)},{name:`allowFrom`,type:`tags`,label:a(`allowFrom`)}]},feishu:ht(),dingtalk:{fields:[{name:`enabled`,type:`boolean`,label:a(`enabled`)},{name:`clientId`,type:`text`,label:a(`clientId`)},{name:`clientSecret`,type:`password`,label:a(`clientSecret`)},{name:`allowFrom`,type:`tags`,label:a(`allowFrom`)}]},wecom:{fields:[{name:`enabled`,type:`boolean`,label:a(`enabled`)},{name:`corpId`,type:`text`,label:a(`corpId`)},{name:`agentId`,type:`text`,label:a(`agentId`)},{name:`secret`,type:`password`,label:a(`secret`)},{name:`token`,type:`password`,label:a(`token`)},{name:`callbackPort`,type:`number`,label:a(`callbackPort`)},{name:`callbackPath`,type:`text`,label:a(`callbackPath`)},{name:`allowFrom`,type:`tags`,label:a(`allowFrom`)}]},weixin:{fields:[{name:`enabled`,type:`boolean`,label:a(`enabled`),section:`primary`},{name:`defaultAccountId`,type:`text`,label:a(`defaultAccountId`)},{name:`baseUrl`,type:`text`,label:a(`baseUrl`)},{name:`pollTimeoutMs`,type:`number`,label:a(`pollTimeoutMs`)},{name:`allowFrom`,type:`tags`,label:a(`allowFrom`)},{name:`accounts`,type:`json`,label:a(`accountsJson`)}],layout:[{type:`fields`,section:`primary`},{type:`custom`,sectionId:`weixin-auth`},{type:`fields`,section:`advanced`,collapsible:{title:a(`weixinAuthAdvancedTitle`),description:a(`weixinAuthAdvancedDescription`)}}]},slack:{fields:[{name:`enabled`,type:`boolean`,label:a(`enabled`)},{name:`mode`,type:`text`,label:a(`mode`)},{name:`webhookPath`,type:`text`,label:a(`webhookPath`)},{name:`allowBots`,type:`boolean`,label:a(`allowBotMessages`)},{name:`botToken`,type:`password`,label:a(`botToken`)},{name:`appToken`,type:`password`,label:a(`appToken`)}]},email:{fields:[{name:`enabled`,type:`boolean`,label:a(`enabled`)},{name:`consentGranted`,type:`boolean`,label:a(`consentGranted`)},{name:`imapHost`,type:`text`,label:a(`imapHost`)},{name:`imapPort`,type:`number`,label:a(`imapPort`)},{name:`imapUsername`,type:`text`,label:a(`imapUsername`)},{name:`imapPassword`,type:`password`,label:a(`imapPassword`)},{name:`fromAddress`,type:`email`,label:a(`fromAddress`)}]},qq:{fields:[{name:`enabled`,type:`boolean`,label:a(`enabled`)},{name:`appId`,type:`text`,label:a(`appId`)},{name:`secret`,type:`password`,label:a(`appSecret`)},{name:`markdownSupport`,type:`boolean`,label:a(`markdownSupport`)},{name:`allowFrom`,type:`tags`,label:a(`allowFrom`)}]}}}function _t(t){let n=e();return t.tutorialUrls?.[n]||t.tutorialUrls?.default||t.tutorialUrl}var vt=[],yt=[{type:`fields`,section:`all`}],X=new Set,Z=new Map,Q=null;function $(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function bt(e,t){let n={...e};for(let[e,r]of Object.entries(t))n[e]=$(n[e])&&$(r)?bt(n[e],r):r;return n}function xt(e,t){let n={},r=n,i=e.split(`.`);for(let e=0;e<i.length-1;e+=1)r[i[e]]={},r=r[i[e]];return r[i[i.length-1]]=t,n}function St(e,t){return t===`all`?e:e.filter(e=>t===`primary`?e.section===`primary`:e.section!==`primary`)}function Ct(e,t){let n={};return t.filter(e=>e.type===`json`).forEach(t=>{n[t.name]=JSON.stringify(e[t.name]??{},null,2)}),n}function wt(){Q||=h.eventBus.on(g.channelConfigApplyStatus,e=>{Z.set(e.channel,e.status===`started`?{status:`applying`}:e.status===`succeeded`?{status:`applied`}:{status:`failed`,message:e.message}),X.forEach(e=>e())})}function Tt(e){return X.add(e),wt(),()=>{X.delete(e),!X.size&&Q&&(Q(),Q=null,Z.clear())}}function Et(e){return(0,U.useSyncExternalStore)(Tt,()=>e?Z.get(e)??null:null,()=>null)}function Dt(e){return e?e.status===`applying`?{className:`text-amber-600`,label:a(`channelConfigApplying`)}:e.status===`applied`?{className:`text-emerald-600`,label:a(`channelConfigApplied`)}:{className:`text-red-600`,label:`${a(`channelConfigApplyFailed`)}${e.message?`: ${e.message}`:``}`}:null}function Ot({channelApplyStatus:e,channelLabel:t,channelName:n,enabled:r,tutorialUrl:i}){return(0,W.jsx)(B,{className:`px-6 py-5`,children:(0,W.jsxs)(`div`,{className:`flex flex-wrap items-center justify-between gap-3`,children:[(0,W.jsxs)(`div`,{className:`min-w-0`,children:[(0,W.jsxs)(`div`,{className:`flex items-center gap-3`,children:[(0,W.jsx)(oe,{name:n,src:ae(n),className:o(`h-9 w-9 rounded-lg border`,r?`border-primary/30 bg-white`:`border-gray-200/70 bg-white`),imgClassName:`h-5 w-5 object-contain`,fallback:(0,W.jsx)(`span`,{className:`text-sm font-semibold uppercase text-gray-500`,children:n[0]})}),(0,W.jsx)(`h3`,{className:`truncate text-lg font-semibold text-gray-900 capitalize`,children:t})]}),(0,W.jsx)(`p`,{className:`mt-2 text-sm text-gray-500`,children:a(`channelsFormDescription`)}),e?(0,W.jsx)(`p`,{className:o(`mt-2 text-xs font-medium`,e.className),children:e.label}):null,i?(0,W.jsxs)(`a`,{href:i,className:`mt-2 inline-flex items-center gap-1.5 text-xs text-primary transition-colors hover:text-primary-hover`,children:[(0,W.jsx)(T,{className:`h-3.5 w-3.5`}),a(`channelsGuideTitle`)]}):null]}),(0,W.jsx)(M,{status:r?`active`:`inactive`,label:a(r?`statusActive`:`statusInactive`)})]})})}function kt({channelConfig:e,channelName:t,disabled:n,enabled:r,fields:i,formData:a,jsonDrafts:o,layoutBlocks:s,setJsonDrafts:c,uiHints:l,updateField:u}){return(0,W.jsx)(W.Fragment,{children:s.map((s,d)=>{if(s.type===`fields`){let e=St(i,s.section);if(e.length===0)return null;let n=(0,W.jsx)(Ee,{channelName:t,fields:e,formData:a,jsonDrafts:o,setJsonDrafts:c,updateField:u,uiHints:l});return s.collapsible?(0,W.jsxs)(`details`,{className:`group rounded-2xl border border-gray-200/80 bg-white`,children:[(0,W.jsxs)(`summary`,{className:`flex cursor-pointer list-none items-center justify-between gap-3 px-5 py-4 text-sm font-medium text-gray-900`,children:[(0,W.jsxs)(`div`,{children:[(0,W.jsx)(`p`,{children:s.collapsible.title}),s.collapsible.description?(0,W.jsx)(`p`,{className:`mt-1 text-xs font-normal text-gray-500`,children:s.collapsible.description}):null]}),(0,W.jsx)(E,{className:`h-4 w-4 text-gray-400 transition-transform group-open:rotate-180`})]}),(0,W.jsx)(`div`,{className:`space-y-6 border-t border-gray-100 px-5 py-5`,children:n})]},`${s.type}-${s.section}-${d}`):(0,W.jsx)(`div`,{children:n},`${s.type}-${s.section}-${d}`)}return s.sectionId===`feishu-auth`?(0,W.jsx)(dt,{channelConfig:e,formData:a,channelEnabled:r,disabled:n},`${s.type}-${s.sectionId}-${d}`):s.sectionId===`weixin-auth`?(0,W.jsx)(lt,{channelConfig:e,formData:a,channelName:`weixin`,channelEnabled:r,disabled:n},`${s.type}-${s.sectionId}-${d}`):null})})}function At({actions:e,channelConfig:t,channelLabel:n,channelName:r,fields:i,layoutBlocks:o,tutorialUrl:s,uiHints:l}){let u=me(),d=pe(),[f,p]=(0,U.useState)(()=>({...t})),[m,h]=(0,U.useState)(()=>Ct(t,i)),[g,_]=(0,U.useState)(null),v=Dt(Et(r)),y=typeof f.enabled==`boolean`?f.enabled:!!t.enabled,x=u.isPending||!!g,S=(e,t)=>p(n=>({...n,[e]:t})),C=e=>{e.preventDefault();let t={...f};for(let e of i){if(e.type===`password`){let n=t[e.name];(typeof n!=`string`||n.length===0)&&delete t[e.name]}if(e.type===`json`)try{t[e.name]=(m[e.name]??``).trim()?JSON.parse(m[e.name]):{}}catch{c.error(`${a(`invalidJson`)}: ${e.name}`);return}}u.mutate({channel:r,data:t})},w=e=>{if(!$(e?.channels)||!$(e.channels[r]))return;let t=e.channels[r];p(e=>bt(e,t)),h(e=>{let n={...e},r=!1;for(let e of i)e.type!==`json`||!Object.prototype.hasOwnProperty.call(t,e.name)||(n[e.name]=JSON.stringify(t[e.name]??{},null,2),r=!0);return r?n:e})},T=async e=>{_(e.id);try{let t=`channels.${r}`,n={...f};e.saveBeforeRun&&(n={...n,...e.savePatch??{}},p(n),await u.mutateAsync({channel:r,data:n}));let i=await d.mutateAsync({actionId:e.id,data:{scope:t,draftConfig:xt(t,n)}});w(i.patch),i.ok?c.success(i.message||a(`success`)):c.error(i.message||a(`error`))}catch(e){c.error(`${a(`error`)}: ${e instanceof Error?e.message:String(e)}`)}finally{_(null)}};return(0,W.jsxs)(z,{children:[(0,W.jsx)(Ot,{channelName:r,channelLabel:n,enabled:y,tutorialUrl:s,channelApplyStatus:v}),(0,W.jsxs)(`form`,{onSubmit:C,className:`flex min-h-0 flex-1 flex-col`,children:[(0,W.jsx)(V,{className:`space-y-6 px-6 py-5`,children:(0,W.jsx)(kt,{channelConfig:t,channelName:r,enabled:y,fields:i,formData:f,jsonDrafts:m,layoutBlocks:o,setJsonDrafts:h,uiHints:l,updateField:S,disabled:x})}),(0,W.jsxs)(ve,{className:`flex flex-wrap items-center justify-between gap-3 px-6 py-4`,children:[(0,W.jsx)(`div`,{className:`flex flex-wrap items-center gap-2`,children:e.filter(e=>e.trigger===`manual`).map(e=>(0,W.jsx)(b,{type:`button`,onClick:()=>void T(e),disabled:x,variant:`secondary`,children:g===e.id?a(`connecting`):e.title},e.id))}),(0,W.jsx)(b,{type:`submit`,disabled:x,children:u.isPending?a(`saving`):a(`save`)})]})]})]})}function jt({channelName:e}){let{data:t}=L(),{data:n}=F(),{data:r}=I(),i=e?t?.channels[e]??null:null,o=n?.channels.find(t=>t.name===e),s=(0,U.useMemo)(()=>gt()[e||``],[e]);if(!e||!o||!i)return(0,W.jsx)(ge,{children:(0,W.jsxs)(`div`,{children:[(0,W.jsx)(`h3`,{className:`text-base font-semibold text-gray-900`,children:a(`channelsSelectTitle`)}),(0,W.jsx)(`p`,{className:`mt-2 text-sm text-gray-500`,children:a(`channelsSelectDescription`)})]})});let c=s?.fields??vt,l=s?.layout??yt,u=r?.uiHints,d=R(`channels.${e}`,u)?.label??e,f=_t(o),p=JSON.stringify({channelName:e,channelConfig:i,jsonFields:c.filter(e=>e.type===`json`).map(e=>e.name)});return(0,W.jsx)(At,{actions:r?.actions?.filter(t=>t.scope===`channels.${e}`)??[],channelConfig:i,channelLabel:d,channelName:e,fields:c,layoutBlocks:l,tutorialUrl:f,uiHints:u},p)}var Mt={telegram:`channelDescTelegram`,slack:`channelDescSlack`,email:`channelDescEmail`,webhook:`channelDescWebhook`,discord:`channelDescDiscord`,feishu:`channelDescFeishu`,weixin:`channelDescWeixin`},Nt=[`weixin`,`feishu`,`discord`,`qq`];function Pt(e){let t=new Map(Nt.map((e,t)=>[e,t]));return e.map((e,t)=>({channel:e,index:t})).sort((e,n)=>{let r=t.get(e.channel.name)??1/0,i=t.get(n.channel.name)??1/0;return r===i?e.index-n.index:r-i}).map(({channel:e})=>e)}function Ft(){let{isMobile:e}=le(),{data:t}=L(),{data:n}=F(),{data:r}=I(),[i,s]=(0,U.useState)(`enabled`),[c,l]=(0,U.useState)(null),[u,f]=(0,U.useState)(``),p=(0,U.useMemo)(()=>Pt(n?.channels??[]),[n?.channels]),m=t?.channels,h=(0,U.useMemo)(()=>{let e=u.trim().toLowerCase();return p.filter(e=>i!==`enabled`||!!m?.[e.name]?.enabled).filter(t=>e?(t.displayName||t.name).toLowerCase().includes(e)||t.name.toLowerCase().includes(e):!0)},[i,m,p,u]),g=c&&h.some(e=>e.name===c)?c:e?null:h[0]?.name??null;return!t||!n?(0,W.jsx)(`div`,{className:`p-8 text-gray-400`,children:a(`channelsLoading`)}):(0,W.jsxs)(y,{className:`pb-0 xl:flex xl:h-full xl:min-h-0 xl:flex-col`,children:[(0,W.jsx)(x,{title:a(`channelsPageTitle`),description:a(`channelsPageDescription`)}),(0,W.jsxs)(he,{className:`xl:min-h-0`,mobileView:e?g?`detail`:`list`:void 0,onMobileBack:()=>l(null),mobileListLabel:a(`channelsPageTitle`),children:[(0,W.jsxs)(z,{children:[(0,W.jsx)(B,{className:`px-4 pt-4`,children:(0,W.jsx)(P,{value:i,onValueChange:s,children:(0,W.jsxs)(ie,{className:`mb-0 h-auto gap-3 border-b-0 bg-transparent p-0`,children:[(0,W.jsxs)(N,{value:`enabled`,className:`gap-1.5 px-0 pb-3`,children:[a(`channelsTabEnabled`),(0,W.jsx)(`span`,{className:`text-[11px] font-medium text-gray-500`,children:p.filter(e=>m?.[e.name]?.enabled).length})]}),(0,W.jsxs)(N,{value:`all`,className:`gap-1.5 px-0 pb-3`,children:[a(`channelsTabAll`),(0,W.jsx)(`span`,{className:`text-[11px] font-medium text-gray-500`,children:p.length})]})]})})}),(0,W.jsx)(`div`,{className:`border-b border-gray-100 px-4 py-3`,children:(0,W.jsxs)(`div`,{className:`relative`,children:[(0,W.jsx)(w,{className:`pointer-events-none absolute left-3 top-1/2 h-4 w-4 -translate-y-1/2 text-gray-400`}),(0,W.jsx)(d,{value:u,onChange:e=>f(e.target.value),placeholder:a(`channelsFilterPlaceholder`),className:`h-10 rounded-xl pl-9`})]})}),(0,W.jsxs)(V,{className:`space-y-2 p-3`,children:[h.map(e=>{let n=!!t.channels[e.name]?.enabled,i=_t(e),s=R(`channels.${e.name}`,r?.uiHints)?.help||a(Mt[e.name]||`channelDescriptionDefault`);return(0,W.jsx)(ye,{onClick:()=>l(e.name),active:g===e.name,children:(0,W.jsxs)(`div`,{className:`flex items-start justify-between gap-3`,children:[(0,W.jsxs)(`div`,{className:`flex min-w-0 items-center gap-3`,children:[(0,W.jsx)(oe,{name:e.name,src:ae(e.name),className:o(`h-10 w-10 rounded-lg border`,n?`border-primary/30 bg-white`:`border-gray-200/70 bg-white`),imgClassName:`h-5 w-5 object-contain`,fallback:(0,W.jsx)(`span`,{className:`text-sm font-semibold uppercase text-gray-500`,children:e.name[0]})}),(0,W.jsxs)(`div`,{className:`min-w-0`,children:[(0,W.jsx)(`p`,{className:`truncate text-sm font-semibold text-gray-900`,children:e.displayName||e.name}),(0,W.jsx)(`p`,{className:`line-clamp-1 text-[11px] text-gray-500`,children:s})]})]}),(0,W.jsxs)(`div`,{className:`flex items-center gap-2`,children:[i?(0,W.jsx)(`a`,{href:i,onClick:e=>e.stopPropagation(),className:`inline-flex h-7 w-7 items-center justify-center rounded-md text-gray-300 transition-colors hover:bg-gray-100/70 hover:text-gray-500`,title:a(`channelsGuideTitle`),children:(0,W.jsx)(j,{className:`h-3.5 w-3.5`})}):null,(0,W.jsx)(M,{status:n?`active`:`inactive`,label:a(n?`statusActive`:`statusInactive`),className:`min-w-[56px] justify-center`})]})]})},e.name)}),h.length===0?(0,W.jsx)(_e,{icon:ue,title:a(`channelsNoMatch`)}):null]})]}),(0,W.jsx)(jt,{channelName:g??void 0})]})]})}export{Ft as ChannelsList};