@peers-app/peers-ui 0.14.0 → 0.15.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (438) hide show
  1. package/.github/workflows/publish.yml +8 -5
  2. package/babel.config.js +4 -4
  3. package/biome.json +191 -0
  4. package/dist/command-palette/command-palette-ui.d.ts +1 -2
  5. package/dist/command-palette/command-palette-ui.js +175 -244
  6. package/dist/command-palette/command-palette.js +65 -64
  7. package/dist/components/chat-overlay.d.ts +2 -2
  8. package/dist/components/chat-overlay.js +160 -217
  9. package/dist/components/checkbox.d.ts +5 -4
  10. package/dist/components/checkbox.js +4 -7
  11. package/dist/components/group-switcher.d.ts +1 -2
  12. package/dist/components/group-switcher.js +119 -159
  13. package/dist/components/input-date.d.ts +3 -3
  14. package/dist/components/input-date.js +6 -6
  15. package/dist/components/input-number.d.ts +7 -6
  16. package/dist/components/input-number.js +25 -20
  17. package/dist/components/input.d.ts +5 -4
  18. package/dist/components/input.js +4 -7
  19. package/dist/components/inverse-lazy-list.d.ts +3 -3
  20. package/dist/components/inverse-lazy-list.js +13 -47
  21. package/dist/components/io-schema-values.d.ts +5 -6
  22. package/dist/components/io-schema-values.js +28 -65
  23. package/dist/components/io-schema.d.ts +4 -5
  24. package/dist/components/io-schema.js +42 -79
  25. package/dist/components/lazy-list.d.ts +3 -3
  26. package/dist/components/lazy-list.js +38 -58
  27. package/dist/components/list-screen.d.ts +3 -8
  28. package/dist/components/list-screen.js +28 -23
  29. package/dist/components/loading-indicator.d.ts +1 -2
  30. package/dist/components/loading-indicator.js +2 -6
  31. package/dist/components/markdown-editor/autolink-plugin.js +5 -8
  32. package/dist/components/markdown-editor/editor-inline.d.ts +2 -3
  33. package/dist/components/markdown-editor/editor-inline.js +2 -6
  34. package/dist/components/markdown-editor/editor.d.ts +6 -6
  35. package/dist/components/markdown-editor/editor.js +9 -19
  36. package/dist/components/markdown-editor/markdown-plugin.d.ts +1 -1
  37. package/dist/components/markdown-editor/markdown-plugin.js +20 -21
  38. package/dist/components/markdown-editor/mention-node.d.ts +2 -2
  39. package/dist/components/markdown-editor/mention-node.js +24 -24
  40. package/dist/components/markdown-editor/mentions-plugin.d.ts +2 -2
  41. package/dist/components/markdown-editor/mentions-plugin.js +61 -62
  42. package/dist/components/markdown-editor/theme.js +28 -28
  43. package/dist/components/markdown-editor/toolbar.d.ts +2 -3
  44. package/dist/components/markdown-editor/toolbar.js +32 -49
  45. package/dist/components/markdown-with-mentions.d.ts +1 -1
  46. package/dist/components/markdown-with-mentions.js +43 -43
  47. package/dist/components/message-logs/message-logs.d.ts +1 -2
  48. package/dist/components/message-logs/message-logs.js +91 -116
  49. package/dist/components/messages/avatar.d.ts +3 -4
  50. package/dist/components/messages/avatar.js +37 -46
  51. package/dist/components/messages/channel-message-list.d.ts +5 -6
  52. package/dist/components/messages/channel-message-list.js +34 -34
  53. package/dist/components/messages/channel-view.d.ts +1 -2
  54. package/dist/components/messages/channel-view.js +23 -57
  55. package/dist/components/messages/message-compose.d.ts +3 -4
  56. package/dist/components/messages/message-compose.js +27 -38
  57. package/dist/components/messages/message-display.d.ts +2 -3
  58. package/dist/components/messages/message-display.js +42 -95
  59. package/dist/components/messages/thread-message-list.d.ts +4 -5
  60. package/dist/components/messages/thread-message-list.js +29 -29
  61. package/dist/components/router.d.ts +1 -2
  62. package/dist/components/router.js +58 -66
  63. package/dist/components/save-button.d.ts +3 -3
  64. package/dist/components/save-button.js +23 -33
  65. package/dist/components/sortable-list.d.ts +11 -12
  66. package/dist/components/sortable-list.js +42 -22
  67. package/dist/components/tabs.d.ts +3 -3
  68. package/dist/components/tabs.js +16 -47
  69. package/dist/components/tooltip.d.ts +4 -4
  70. package/dist/components/tooltip.js +4 -9
  71. package/dist/components/trust-level-badge.d.ts +2 -3
  72. package/dist/components/trust-level-badge.js +16 -16
  73. package/dist/components/trust-level-dropdown.d.ts +3 -4
  74. package/dist/components/trust-level-dropdown.js +32 -55
  75. package/dist/components/typeahead.d.ts +3 -3
  76. package/dist/components/typeahead.js +48 -89
  77. package/dist/components/voice-indicator.d.ts +2 -2
  78. package/dist/components/voice-indicator.js +93 -106
  79. package/dist/components/voice-subscribe-events.d.ts +32 -0
  80. package/dist/components/voice-subscribe-events.js +2 -0
  81. package/dist/globals.d.ts +3 -5
  82. package/dist/globals.js +22 -33
  83. package/dist/hooks.d.ts +5 -5
  84. package/dist/hooks.js +22 -12
  85. package/dist/hooks.test.js +129 -145
  86. package/dist/index.d.ts +9 -8
  87. package/dist/index.js +13 -12
  88. package/dist/mention-configs.d.ts +2 -2
  89. package/dist/mention-configs.js +55 -42
  90. package/dist/screens/assistants/assistant-config.d.ts +2 -3
  91. package/dist/screens/assistants/assistant-config.js +9 -22
  92. package/dist/screens/assistants/assistant-details.d.ts +1 -2
  93. package/dist/screens/assistants/assistant-details.js +13 -28
  94. package/dist/screens/assistants/assistant-info.d.ts +2 -3
  95. package/dist/screens/assistants/assistant-info.js +3 -17
  96. package/dist/screens/assistants/assistant-list.d.ts +1 -2
  97. package/dist/screens/assistants/assistant-list.js +15 -56
  98. package/dist/screens/assistants/assistant-tools.d.ts +2 -3
  99. package/dist/screens/assistants/assistant-tools.js +10 -24
  100. package/dist/screens/console-logs/console-logs-list.d.ts +1 -2
  101. package/dist/screens/console-logs/console-logs-list.js +130 -134
  102. package/dist/screens/console-logs/log-display.d.ts +2 -3
  103. package/dist/screens/console-logs/log-display.js +40 -42
  104. package/dist/screens/console-logs/log-filters.d.ts +1 -2
  105. package/dist/screens/console-logs/log-filters.js +2 -24
  106. package/dist/screens/console-logs/mobile-log-card.d.ts +2 -3
  107. package/dist/screens/console-logs/mobile-log-card.js +64 -67
  108. package/dist/screens/console-logs/resizable-table-header.d.ts +1 -2
  109. package/dist/screens/console-logs/resizable-table-header.js +31 -67
  110. package/dist/screens/contacts/contact-details.d.ts +1 -2
  111. package/dist/screens/contacts/contact-details.js +16 -46
  112. package/dist/screens/contacts/contact-list.d.ts +1 -2
  113. package/dist/screens/contacts/contact-list.js +44 -103
  114. package/dist/screens/contacts/index.d.ts +4 -4
  115. package/dist/screens/contacts/index.js +1 -1
  116. package/dist/screens/contacts/user-connect.d.ts +1 -2
  117. package/dist/screens/contacts/user-connect.js +85 -186
  118. package/dist/screens/data-explorer/data-explorer.d.ts +1 -2
  119. package/dist/screens/data-explorer/data-explorer.js +61 -181
  120. package/dist/screens/data-explorer/index.d.ts +2 -2
  121. package/dist/screens/data-explorer/query-executor.d.ts +1 -2
  122. package/dist/screens/data-explorer/query-executor.js +56 -166
  123. package/dist/screens/groups/group-details.d.ts +1 -2
  124. package/dist/screens/groups/group-details.js +27 -122
  125. package/dist/screens/groups/group-invite-listener.d.ts +2 -3
  126. package/dist/screens/groups/group-invite-listener.js +8 -104
  127. package/dist/screens/groups/group-list.d.ts +1 -2
  128. package/dist/screens/groups/group-list.js +56 -133
  129. package/dist/screens/groups/group-members.d.ts +2 -3
  130. package/dist/screens/groups/group-members.js +62 -132
  131. package/dist/screens/groups/index.d.ts +4 -4
  132. package/dist/screens/groups/index.js +1 -1
  133. package/dist/screens/join-group/index.d.ts +2 -2
  134. package/dist/screens/join-group/join-group.d.ts +1 -2
  135. package/dist/screens/join-group/join-group.js +9 -109
  136. package/dist/screens/network-viewer/connection-troubleshooter.d.ts +2 -3
  137. package/dist/screens/network-viewer/connection-troubleshooter.js +89 -193
  138. package/dist/screens/network-viewer/cpu-usage-graph.d.ts +1 -2
  139. package/dist/screens/network-viewer/cpu-usage-graph.js +60 -99
  140. package/dist/screens/network-viewer/device-details-modal.d.ts +1 -2
  141. package/dist/screens/network-viewer/device-details-modal.js +25 -177
  142. package/dist/screens/network-viewer/group-details-modal.d.ts +1 -2
  143. package/dist/screens/network-viewer/group-details-modal.js +31 -142
  144. package/dist/screens/network-viewer/index.d.ts +4 -4
  145. package/dist/screens/network-viewer/index.js +3 -3
  146. package/dist/screens/network-viewer/network-viewer-ipc.d.ts +22 -0
  147. package/dist/screens/network-viewer/network-viewer-ipc.js +6 -0
  148. package/dist/screens/network-viewer/network-viewer.d.ts +1 -2
  149. package/dist/screens/network-viewer/network-viewer.js +91 -296
  150. package/dist/screens/network-viewer/usage-graph.d.ts +1 -2
  151. package/dist/screens/network-viewer/usage-graph.js +78 -110
  152. package/dist/screens/packages/package-details.d.ts +1 -2
  153. package/dist/screens/packages/package-details.js +35 -41
  154. package/dist/screens/packages/package-info.d.ts +2 -2
  155. package/dist/screens/packages/package-info.js +33 -86
  156. package/dist/screens/packages/package-list.d.ts +1 -2
  157. package/dist/screens/packages/package-list.js +42 -106
  158. package/dist/screens/packages/package-new-local.d.ts +1 -2
  159. package/dist/screens/packages/package-new-local.js +13 -19
  160. package/dist/screens/packages/package-versions.d.ts +2 -3
  161. package/dist/screens/packages/package-versions.js +29 -96
  162. package/dist/screens/peer-types/peer-type-details.d.ts +3 -4
  163. package/dist/screens/peer-types/peer-type-details.js +26 -78
  164. package/dist/screens/peer-types/peer-type-list.d.ts +1 -2
  165. package/dist/screens/peer-types/peer-type-list.js +13 -24
  166. package/dist/screens/search/global-search.d.ts +1 -2
  167. package/dist/screens/search/global-search.js +104 -182
  168. package/dist/screens/settings/color-mode-dropdown.d.ts +3 -4
  169. package/dist/screens/settings/color-mode-dropdown.js +18 -37
  170. package/dist/screens/settings/settings-page.d.ts +1 -1
  171. package/dist/screens/settings/settings-page.js +86 -213
  172. package/dist/screens/settings/voice-settings-agent.d.ts +1 -1
  173. package/dist/screens/settings/voice-settings-agent.js +7 -44
  174. package/dist/screens/settings/voice-settings-api-keys.d.ts +2 -2
  175. package/dist/screens/settings/voice-settings-api-keys.js +2 -29
  176. package/dist/screens/settings/voice-settings-output.d.ts +2 -2
  177. package/dist/screens/settings/voice-settings-output.js +2 -40
  178. package/dist/screens/settings/voice-settings-providers.d.ts +2 -2
  179. package/dist/screens/settings/voice-settings-providers.js +2 -19
  180. package/dist/screens/settings/voice-settings-types.d.ts +4 -4
  181. package/dist/screens/settings/voice-settings-types.js +31 -31
  182. package/dist/screens/settings/voice-settings-wake-word.d.ts +2 -2
  183. package/dist/screens/settings/voice-settings-wake-word.js +2 -33
  184. package/dist/screens/settings/voice-settings.d.ts +1 -1
  185. package/dist/screens/settings/voice-settings.js +35 -112
  186. package/dist/screens/setup-user.d.ts +1 -2
  187. package/dist/screens/setup-user.js +38 -116
  188. package/dist/screens/tools/tool-code.d.ts +2 -3
  189. package/dist/screens/tools/tool-code.js +9 -13
  190. package/dist/screens/tools/tool-details.d.ts +1 -2
  191. package/dist/screens/tools/tool-details.js +26 -39
  192. package/dist/screens/tools/tool-info.d.ts +2 -3
  193. package/dist/screens/tools/tool-info.js +9 -48
  194. package/dist/screens/tools/tool-list.d.ts +1 -2
  195. package/dist/screens/tools/tool-list.js +33 -65
  196. package/dist/screens/tools/tool-schema.d.ts +2 -3
  197. package/dist/screens/tools/tool-schema.js +2 -13
  198. package/dist/screens/tools/tool-test-details.d.ts +1 -2
  199. package/dist/screens/tools/tool-test-details.js +12 -28
  200. package/dist/screens/tools/tool-test-list.d.ts +1 -2
  201. package/dist/screens/tools/tool-test-list.js +17 -56
  202. package/dist/screens/variables/variable-details.d.ts +1 -2
  203. package/dist/screens/variables/variable-details.js +19 -86
  204. package/dist/screens/variables/variable-list.d.ts +1 -2
  205. package/dist/screens/variables/variable-list.js +16 -27
  206. package/dist/screens/welcome-modal.d.ts +1 -2
  207. package/dist/screens/welcome-modal.js +44 -111
  208. package/dist/screens/workflows/workflow-details.d.ts +1 -2
  209. package/dist/screens/workflows/workflow-details.js +17 -31
  210. package/dist/screens/workflows/workflow-info.d.ts +2 -3
  211. package/dist/screens/workflows/workflow-info.js +2 -9
  212. package/dist/screens/workflows/workflow-instructions.d.ts +2 -3
  213. package/dist/screens/workflows/workflow-instructions.js +23 -55
  214. package/dist/screens/workflows/workflow-list.d.ts +1 -2
  215. package/dist/screens/workflows/workflow-list.js +23 -62
  216. package/dist/setupTests.d.ts +1 -1
  217. package/dist/setupTests.js +10 -11
  218. package/dist/system-apps/assistants.app.d.ts +1 -1
  219. package/dist/system-apps/assistants.app.js +3 -3
  220. package/dist/system-apps/console-logs.app.d.ts +1 -1
  221. package/dist/system-apps/console-logs.app.js +3 -3
  222. package/dist/system-apps/contacts.app.d.ts +1 -1
  223. package/dist/system-apps/contacts.app.js +4 -4
  224. package/dist/system-apps/data-explorer.app.d.ts +1 -1
  225. package/dist/system-apps/data-explorer.app.js +4 -4
  226. package/dist/system-apps/groups.app.d.ts +1 -1
  227. package/dist/system-apps/groups.app.js +4 -4
  228. package/dist/system-apps/index.d.ts +17 -17
  229. package/dist/system-apps/index.js +52 -52
  230. package/dist/system-apps/join-group.app.d.ts +1 -1
  231. package/dist/system-apps/join-group.app.js +4 -4
  232. package/dist/system-apps/mobile-settings.app.d.ts +1 -1
  233. package/dist/system-apps/mobile-settings.app.js +3 -3
  234. package/dist/system-apps/network-viewer.app.d.ts +1 -1
  235. package/dist/system-apps/network-viewer.app.js +4 -4
  236. package/dist/system-apps/packages.app.d.ts +1 -1
  237. package/dist/system-apps/packages.app.js +3 -3
  238. package/dist/system-apps/search.app.d.ts +1 -1
  239. package/dist/system-apps/search.app.js +4 -4
  240. package/dist/system-apps/settings.app.d.ts +1 -1
  241. package/dist/system-apps/settings.app.js +3 -3
  242. package/dist/system-apps/threads.app.d.ts +1 -1
  243. package/dist/system-apps/threads.app.js +3 -3
  244. package/dist/system-apps/tools.app.d.ts +1 -1
  245. package/dist/system-apps/tools.app.js +3 -3
  246. package/dist/system-apps/types.app.d.ts +1 -1
  247. package/dist/system-apps/types.app.js +3 -3
  248. package/dist/system-apps/variables.app.d.ts +1 -1
  249. package/dist/system-apps/variables.app.js +3 -3
  250. package/dist/system-apps/workflows.app.d.ts +1 -1
  251. package/dist/system-apps/workflows.app.js +3 -3
  252. package/dist/tabs-layout/tabs-layout.d.ts +2 -3
  253. package/dist/tabs-layout/tabs-layout.js +215 -246
  254. package/dist/tabs-layout/tabs-state.d.ts +2 -2
  255. package/dist/tabs-layout/tabs-state.js +73 -61
  256. package/dist/ui-defaults/index.d.ts +2 -2
  257. package/dist/ui-defaults/list-screen.d.ts +2 -3
  258. package/dist/ui-defaults/list-screen.js +33 -37
  259. package/dist/ui-defaults/markdown-field.js +24 -56
  260. package/dist/ui-router/routes-loader.d.ts +1 -1
  261. package/dist/ui-router/routes-loader.js +17 -13
  262. package/dist/ui-router/ui-loader.d.ts +6 -6
  263. package/dist/ui-router/ui-loader.js +172 -268
  264. package/dist/utils.js +49 -39
  265. package/jest.config.js +16 -16
  266. package/package.json +16 -14
  267. package/src/command-palette/command-palette-ui.tsx +261 -237
  268. package/src/command-palette/command-palette.ts +81 -78
  269. package/src/components/chat-overlay.tsx +366 -261
  270. package/src/components/checkbox.tsx +15 -12
  271. package/src/components/group-switcher.tsx +150 -105
  272. package/src/components/input-date.tsx +17 -16
  273. package/src/components/input-number.tsx +47 -31
  274. package/src/components/input.tsx +15 -12
  275. package/src/components/inverse-lazy-list.tsx +14 -13
  276. package/src/components/io-schema-values.tsx +51 -69
  277. package/src/components/io-schema.tsx +94 -69
  278. package/src/components/lazy-list.tsx +51 -34
  279. package/src/components/list-screen.tsx +51 -35
  280. package/src/components/loading-indicator.tsx +2 -4
  281. package/src/components/markdown-editor/autolink-plugin.tsx +4 -11
  282. package/src/components/markdown-editor/editor-inline.tsx +3 -4
  283. package/src/components/markdown-editor/editor.tsx +53 -51
  284. package/src/components/markdown-editor/markdown-plugin.tsx +48 -40
  285. package/src/components/markdown-editor/mention-node.ts +39 -38
  286. package/src/components/markdown-editor/mentions-plugin.tsx +99 -101
  287. package/src/components/markdown-editor/theme.ts +28 -29
  288. package/src/components/markdown-editor/toolbar.tsx +53 -47
  289. package/src/components/markdown-with-mentions.tsx +56 -46
  290. package/src/components/message-logs/message-logs.tsx +225 -165
  291. package/src/components/messages/avatar.tsx +70 -52
  292. package/src/components/messages/channel-message-list.tsx +80 -68
  293. package/src/components/messages/channel-view.tsx +34 -33
  294. package/src/components/messages/message-compose.tsx +84 -67
  295. package/src/components/messages/message-display.tsx +103 -89
  296. package/src/components/messages/thread-message-list.tsx +53 -44
  297. package/src/components/router.tsx +42 -43
  298. package/src/components/save-button.tsx +43 -39
  299. package/src/components/sortable-list.tsx +77 -49
  300. package/src/components/tabs.tsx +31 -31
  301. package/src/components/tooltip.tsx +21 -28
  302. package/src/components/trust-level-badge.tsx +15 -11
  303. package/src/components/trust-level-dropdown.tsx +49 -19
  304. package/src/components/typeahead.tsx +57 -59
  305. package/src/components/voice-indicator.tsx +158 -141
  306. package/src/components/voice-subscribe-events.ts +20 -0
  307. package/src/globals.tsx +42 -40
  308. package/src/hooks.test.tsx +141 -134
  309. package/src/hooks.ts +80 -48
  310. package/src/index.tsx +17 -10
  311. package/src/mention-configs.ts +122 -68
  312. package/src/screens/assistants/assistant-config.tsx +28 -18
  313. package/src/screens/assistants/assistant-details.tsx +35 -36
  314. package/src/screens/assistants/assistant-info.tsx +16 -11
  315. package/src/screens/assistants/assistant-list.tsx +37 -34
  316. package/src/screens/assistants/assistant-tools.tsx +41 -20
  317. package/src/screens/console-logs/console-logs-list.tsx +173 -140
  318. package/src/screens/console-logs/log-display.tsx +65 -38
  319. package/src/screens/console-logs/log-filters.tsx +4 -3
  320. package/src/screens/console-logs/mobile-log-card.tsx +78 -71
  321. package/src/screens/console-logs/resizable-table-header.tsx +29 -21
  322. package/src/screens/contacts/contact-details.tsx +29 -30
  323. package/src/screens/contacts/contact-list.tsx +71 -60
  324. package/src/screens/contacts/index.ts +5 -5
  325. package/src/screens/contacts/user-connect.tsx +177 -171
  326. package/src/screens/data-explorer/data-explorer.tsx +134 -98
  327. package/src/screens/data-explorer/index.ts +2 -3
  328. package/src/screens/data-explorer/query-executor.tsx +90 -80
  329. package/src/screens/groups/group-details.tsx +120 -101
  330. package/src/screens/groups/group-invite-listener.tsx +34 -37
  331. package/src/screens/groups/group-list.tsx +119 -103
  332. package/src/screens/groups/group-members.tsx +225 -164
  333. package/src/screens/groups/index.ts +5 -6
  334. package/src/screens/join-group/index.ts +2 -2
  335. package/src/screens/join-group/join-group.tsx +41 -39
  336. package/src/screens/network-viewer/connection-troubleshooter.tsx +145 -104
  337. package/src/screens/network-viewer/cpu-usage-graph.tsx +39 -43
  338. package/src/screens/network-viewer/device-details-modal.tsx +46 -59
  339. package/src/screens/network-viewer/group-details-modal.tsx +68 -49
  340. package/src/screens/network-viewer/index.ts +4 -5
  341. package/src/screens/network-viewer/network-viewer-ipc.ts +23 -0
  342. package/src/screens/network-viewer/network-viewer.tsx +261 -236
  343. package/src/screens/network-viewer/usage-graph.tsx +57 -49
  344. package/src/screens/packages/package-details.tsx +43 -35
  345. package/src/screens/packages/package-info.tsx +107 -66
  346. package/src/screens/packages/package-list.tsx +175 -98
  347. package/src/screens/packages/package-new-local.tsx +28 -26
  348. package/src/screens/packages/package-versions.tsx +102 -77
  349. package/src/screens/peer-types/peer-type-details.tsx +60 -50
  350. package/src/screens/peer-types/peer-type-list.tsx +20 -30
  351. package/src/screens/search/global-search.tsx +153 -137
  352. package/src/screens/settings/color-mode-dropdown.tsx +52 -35
  353. package/src/screens/settings/settings-page.tsx +215 -141
  354. package/src/screens/settings/voice-settings-agent.tsx +13 -12
  355. package/src/screens/settings/voice-settings-api-keys.tsx +14 -12
  356. package/src/screens/settings/voice-settings-output.tsx +12 -11
  357. package/src/screens/settings/voice-settings-providers.tsx +7 -3
  358. package/src/screens/settings/voice-settings-types.ts +52 -49
  359. package/src/screens/settings/voice-settings-wake-word.tsx +25 -9
  360. package/src/screens/settings/voice-settings.tsx +66 -43
  361. package/src/screens/setup-user.tsx +88 -41
  362. package/src/screens/tools/tool-code.tsx +12 -17
  363. package/src/screens/tools/tool-details.tsx +28 -28
  364. package/src/screens/tools/tool-info.tsx +14 -19
  365. package/src/screens/tools/tool-list.tsx +58 -40
  366. package/src/screens/tools/tool-schema.tsx +16 -9
  367. package/src/screens/tools/tool-test-details.tsx +11 -22
  368. package/src/screens/tools/tool-test-list.tsx +29 -30
  369. package/src/screens/variables/variable-details.tsx +63 -51
  370. package/src/screens/variables/variable-list.tsx +29 -30
  371. package/src/screens/welcome-modal.tsx +68 -48
  372. package/src/screens/workflows/workflow-details.tsx +40 -30
  373. package/src/screens/workflows/workflow-info.tsx +4 -11
  374. package/src/screens/workflows/workflow-instructions.tsx +35 -28
  375. package/src/screens/workflows/workflow-list.tsx +50 -40
  376. package/src/setupTests.ts +14 -13
  377. package/src/system-apps/assistants.app.ts +5 -5
  378. package/src/system-apps/console-logs.app.ts +4 -4
  379. package/src/system-apps/contacts.app.ts +6 -6
  380. package/src/system-apps/data-explorer.app.ts +5 -5
  381. package/src/system-apps/groups.app.ts +6 -6
  382. package/src/system-apps/index.ts +49 -49
  383. package/src/system-apps/join-group.app.ts +5 -5
  384. package/src/system-apps/mobile-settings.app.ts +4 -5
  385. package/src/system-apps/network-viewer.app.ts +5 -5
  386. package/src/system-apps/packages.app.ts +5 -5
  387. package/src/system-apps/search.app.ts +6 -6
  388. package/src/system-apps/settings.app.ts +5 -5
  389. package/src/system-apps/threads.app.ts +5 -5
  390. package/src/system-apps/tools.app.ts +5 -5
  391. package/src/system-apps/types.app.ts +5 -5
  392. package/src/system-apps/variables.app.ts +5 -5
  393. package/src/system-apps/workflows.app.ts +5 -5
  394. package/src/tabs-layout/tabs-layout.tsx +345 -254
  395. package/src/tabs-layout/tabs-state.ts +100 -81
  396. package/src/ui-defaults/index.ts +2 -3
  397. package/src/ui-defaults/list-screen.tsx +45 -40
  398. package/src/ui-defaults/markdown-field.tsx +22 -26
  399. package/src/ui-router/routes-loader.ts +40 -24
  400. package/src/ui-router/ui-loader.tsx +312 -214
  401. package/src/utils.ts +68 -81
  402. package/tsconfig.json +5 -10
  403. package/dist/components/input-datetime.d.ts +0 -7
  404. package/dist/components/input-datetime.js +0 -35
  405. package/dist/components/lazy-sortable-list.d.ts +0 -29
  406. package/dist/components/lazy-sortable-list.js +0 -12
  407. package/dist/components/left-bar.d.ts +0 -5
  408. package/dist/components/left-bar.js +0 -207
  409. package/dist/components/main-content-container.d.ts +0 -2
  410. package/dist/components/main-content-container.js +0 -92
  411. package/dist/components/messages/thread-view.d.ts +0 -6
  412. package/dist/components/messages/thread-view.js +0 -174
  413. package/dist/components/off-canvas.d.ts +0 -13
  414. package/dist/components/off-canvas.js +0 -89
  415. package/dist/components/text-list-editor.tsx/text-list-editor.d.ts +0 -6
  416. package/dist/components/text-list-editor.tsx/text-list-editor.js +0 -13
  417. package/dist/components/top-bar.d.ts +0 -2
  418. package/dist/components/top-bar.js +0 -51
  419. package/dist/components/typeahead/mentions-plugin.d.ts +0 -7
  420. package/dist/components/typeahead/mentions-plugin.js +0 -203
  421. package/dist/components/typeahead/typeahead-editor.d.ts +0 -15
  422. package/dist/components/typeahead/typeahead-editor.js +0 -134
  423. package/dist/components/typeahead/typeahead.d.ts +0 -12
  424. package/dist/components/typeahead/typeahead.js +0 -94
  425. package/dist/screens/profile.d.ts +0 -2
  426. package/dist/screens/profile.js +0 -76
  427. package/src/components/input-datetime.tsx +0 -41
  428. package/src/components/lazy-sortable-list.tsx +0 -51
  429. package/src/components/left-bar.tsx +0 -322
  430. package/src/components/main-content-container.tsx +0 -79
  431. package/src/components/messages/thread-view.tsx +0 -214
  432. package/src/components/off-canvas.tsx +0 -83
  433. package/src/components/text-list-editor.tsx/text-list-editor.tsx +0 -13
  434. package/src/components/top-bar.tsx +0 -119
  435. package/src/components/typeahead/mentions-plugin.tsx +0 -265
  436. package/src/components/typeahead/typeahead-editor.tsx +0 -140
  437. package/src/components/typeahead/typeahead.tsx +0 -77
  438. package/src/screens/profile.tsx +0 -75
@@ -1,48 +1,17 @@
1
1
  "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
- Object.defineProperty(o, "default", { enumerable: true, value: v });
15
- }) : function(o, v) {
16
- o["default"] = v;
17
- });
18
- var __importStar = (this && this.__importStar) || (function () {
19
- var ownKeys = function(o) {
20
- ownKeys = Object.getOwnPropertyNames || function (o) {
21
- var ar = [];
22
- for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
- return ar;
24
- };
25
- return ownKeys(o);
26
- };
27
- return function (mod) {
28
- if (mod && mod.__esModule) return mod;
29
- var result = {};
30
- if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
- __setModuleDefault(result, mod);
32
- return result;
33
- };
34
- })();
35
2
  Object.defineProperty(exports, "__esModule", { value: true });
36
3
  exports.CommandPaletteOverlay = CommandPaletteOverlay;
37
- const react_1 = __importStar(require("react"));
4
+ const jsx_runtime_1 = require("react/jsx-runtime");
5
+ const peers_sdk_1 = require("@peers-app/peers-sdk");
6
+ // biome-ignore lint/correctness/noUnusedImports: classic JSX (`jsx: react`) needs React in scope for emit
7
+ const react_1 = require("react");
8
+ const globals_1 = require("../globals");
38
9
  const hooks_1 = require("../hooks");
39
10
  const color_mode_dropdown_1 = require("../screens/settings/color-mode-dropdown");
40
- const command_palette_1 = require("./command-palette");
41
- const routes_loader_1 = require("../ui-router/routes-loader");
42
11
  const system_apps_1 = require("../system-apps");
43
12
  const tabs_state_1 = require("../tabs-layout/tabs-state");
44
- const peers_sdk_1 = require("@peers-app/peers-sdk");
45
- const globals_1 = require("../globals");
13
+ const routes_loader_1 = require("../ui-router/routes-loader");
14
+ const command_palette_1 = require("./command-palette");
46
15
  function CommandPaletteOverlay() {
47
16
  const [isOpen] = (0, hooks_1.useObservable)(command_palette_1.isCommandPaletteOpen);
48
17
  const [_persistedQuery] = (0, hooks_1.useObservable)(command_palette_1.commandSearchQuery);
@@ -51,15 +20,15 @@ function CommandPaletteOverlay() {
51
20
  const [selectedIndex, setSelectedIndex] = (0, react_1.useState)(0);
52
21
  const inputRef = (0, react_1.useRef)(null);
53
22
  // Local state for query input to avoid locking up on fast typing
54
- const [localQuery, setLocalQuery] = (0, react_1.useState)('');
23
+ const [localQuery, setLocalQuery] = (0, react_1.useState)("");
55
24
  const debounceTimeoutRef = (0, react_1.useRef)();
56
25
  // Sync local query with persisted query when palette opens
57
26
  (0, react_1.useEffect)(() => {
58
27
  if (isOpen) {
59
- setLocalQuery(_persistedQuery || '');
28
+ setLocalQuery(_persistedQuery || "");
60
29
  }
61
30
  else {
62
- setLocalQuery('');
31
+ setLocalQuery("");
63
32
  }
64
33
  }, [isOpen, _persistedQuery]);
65
34
  // Debounced function to update the persisted query
@@ -85,29 +54,34 @@ function CommandPaletteOverlay() {
85
54
  const getAllApps = () => {
86
55
  const allPackages_ = [...packages, system_apps_1.systemPackage];
87
56
  return allPackages_
88
- .filter(p => !p.disabled && p.appNavs && p.appNavs.length > 0)
89
- .flatMap(pkg => pkg.appNavs.map(navItem => {
90
- // Construct path - use direct path for system apps, package-nav for others
91
- let path;
92
- if (pkg.packageId === 'system-apps') {
93
- path = navItem.navigationPath ?? navItem.name.replace(/\s/g, '-').toLowerCase();
94
- }
95
- else {
96
- path = `package-nav/${pkg.packageId}/${(navItem.navigationPath ?? navItem.name).replace(/[^a-zA-Z0-9]/g, '-').toLowerCase()}`;
97
- while (path.includes('//')) {
98
- path = path.replace('//', '/');
57
+ .filter((p) => !p.disabled && p.appNavs && p.appNavs.length > 0)
58
+ .flatMap((pkg) => {
59
+ const navs = pkg.appNavs;
60
+ if (!navs)
61
+ return [];
62
+ return navs.map((navItem) => {
63
+ // Construct path - use direct path for system apps, package-nav for others
64
+ let path;
65
+ if (pkg.packageId === "system-apps") {
66
+ path = navItem.navigationPath ?? navItem.name.replace(/\s/g, "-").toLowerCase();
99
67
  }
100
- }
101
- return {
102
- packageId: pkg.packageId,
103
- packageName: pkg.name,
104
- navItem,
105
- path,
106
- name: navItem.name,
107
- displayName: navItem.displayName || navItem.name,
108
- iconClassName: navItem.iconClassName || 'bi-box-seam'
109
- };
110
- }));
68
+ else {
69
+ path = `package-nav/${pkg.packageId}/${(navItem.navigationPath ?? navItem.name).replace(/[^a-zA-Z0-9]/g, "-").toLowerCase()}`;
70
+ while (path.includes("//")) {
71
+ path = path.replace("//", "/");
72
+ }
73
+ }
74
+ return {
75
+ packageId: pkg.packageId,
76
+ packageName: pkg.name,
77
+ navItem,
78
+ path,
79
+ name: navItem.name,
80
+ displayName: navItem.displayName || navItem.name,
81
+ iconClassName: navItem.iconClassName || "bi-box-seam",
82
+ };
83
+ });
84
+ });
111
85
  };
112
86
  // Search apps
113
87
  const searchApps = (query) => {
@@ -115,13 +89,13 @@ function CommandPaletteOverlay() {
115
89
  return [];
116
90
  const allApps = getAllApps();
117
91
  const lowerQuery = query.toLowerCase();
118
- return allApps.filter(app => app.name.toLowerCase().includes(lowerQuery) ||
92
+ return allApps.filter((app) => app.name.toLowerCase().includes(lowerQuery) ||
119
93
  app.displayName.toLowerCase().includes(lowerQuery) ||
120
94
  app.packageName.toLowerCase().includes(lowerQuery));
121
95
  };
122
96
  const filteredApps = searchApps(searchQuery);
123
97
  // Function to create a new thread from search query
124
- const createNewThreadFromQuery = async (query) => {
98
+ const createNewThreadFromQuery = (0, react_1.useCallback)(async (query) => {
125
99
  try {
126
100
  const currentUser = await (0, peers_sdk_1.getMe)();
127
101
  const threadMessage = await (0, peers_sdk_1.Messages)().insert({
@@ -134,26 +108,26 @@ function CommandPaletteOverlay() {
134
108
  await (0, globals_1.openThreadInTab)(threadMessage);
135
109
  }
136
110
  catch (error) {
137
- console.error('Failed to create new thread:', error);
111
+ console.error("Failed to create new thread:", error);
138
112
  }
139
- };
113
+ }, []);
140
114
  // Create a flattened list that matches the visual rendering order
141
115
  // Apps first, then commands
142
116
  const allItems = [];
143
117
  // Add apps first
144
118
  filteredApps.forEach((app) => {
145
- allItems.push({ type: 'app', app, id: `app-${app.packageId}-${app.path}` });
119
+ allItems.push({ type: "app", app, id: `app-${app.packageId}-${app.path}` });
146
120
  });
147
121
  // Then add commands
148
122
  const visualOrderCommands = Object.entries(filteredCommands.reduce((acc, cmd) => {
149
- const category = cmd.category || 'Other';
123
+ const category = cmd.category || "Other";
150
124
  if (!acc[category])
151
125
  acc[category] = [];
152
126
  acc[category].push(cmd);
153
127
  return acc;
154
128
  }, {})).flatMap(([, commands]) => commands);
155
129
  visualOrderCommands.forEach((cmd) => {
156
- allItems.push({ type: 'command', command: cmd, id: `command-${cmd.id}` });
130
+ allItems.push({ type: "command", command: cmd, id: `command-${cmd.id}` });
157
131
  });
158
132
  // Focus input when opened
159
133
  (0, react_1.useEffect)(() => {
@@ -164,23 +138,23 @@ function CommandPaletteOverlay() {
164
138
  // Reset selected index when search changes
165
139
  (0, react_1.useEffect)(() => {
166
140
  setSelectedIndex(0);
167
- }, [searchQuery]);
141
+ }, []);
168
142
  // Keyboard navigation
169
143
  (0, react_1.useEffect)(() => {
170
144
  if (!isOpen)
171
145
  return;
172
146
  const handleKeyDown = (e) => {
173
- if (e.key === 'ArrowDown') {
147
+ if (e.key === "ArrowDown") {
174
148
  e.preventDefault();
175
149
  // Allow selection to go one past the end if there's a search query (for new thread option)
176
150
  const maxIndex = searchQuery.trim() ? allItems.length : allItems.length - 1;
177
- setSelectedIndex(prev => Math.min(prev + 1, maxIndex));
151
+ setSelectedIndex((prev) => Math.min(prev + 1, maxIndex));
178
152
  }
179
- else if (e.key === 'ArrowUp') {
153
+ else if (e.key === "ArrowUp") {
180
154
  e.preventDefault();
181
- setSelectedIndex(prev => Math.max(prev - 1, 0));
155
+ setSelectedIndex((prev) => Math.max(prev - 1, 0));
182
156
  }
183
- else if (e.key === 'Enter') {
157
+ else if (e.key === "Enter") {
184
158
  e.preventDefault();
185
159
  // Check if the new thread option is selected (selectedIndex >= allItems.length)
186
160
  if (selectedIndex >= allItems.length && searchQuery.trim()) {
@@ -190,11 +164,11 @@ function CommandPaletteOverlay() {
190
164
  else {
191
165
  const selectedItem = allItems[selectedIndex];
192
166
  if (selectedItem) {
193
- if (selectedItem.type === 'app' && selectedItem.app) {
167
+ if (selectedItem.type === "app" && selectedItem.app) {
194
168
  (0, command_palette_1.closeCommandPalette)();
195
169
  (0, tabs_state_1.goToTabPath)(selectedItem.app.path);
196
170
  }
197
- else if (selectedItem.type === 'command' && selectedItem.command) {
171
+ else if (selectedItem.type === "command" && selectedItem.command) {
198
172
  (0, command_palette_1.executeCommand)(selectedItem.command.id);
199
173
  }
200
174
  }
@@ -207,179 +181,136 @@ function CommandPaletteOverlay() {
207
181
  }
208
182
  }
209
183
  };
210
- document.addEventListener('keydown', handleKeyDown);
211
- return () => document.removeEventListener('keydown', handleKeyDown);
212
- }, [isOpen, allItems, selectedIndex]);
184
+ document.addEventListener("keydown", handleKeyDown);
185
+ return () => document.removeEventListener("keydown", handleKeyDown);
186
+ }, [isOpen, selectedIndex, createNewThreadFromQuery, searchQuery]);
213
187
  if (!isOpen)
214
188
  return null;
215
- const isDark = _colorMode === 'dark';
216
- return (react_1.default.createElement("div", { className: "position-fixed w-100 h-100 d-flex align-items-start justify-content-center", style: {
189
+ const isDark = _colorMode === "dark";
190
+ return ((0, jsx_runtime_1.jsx)("div", { className: "position-fixed w-100 h-100 d-flex align-items-start justify-content-center", style: {
217
191
  top: 0,
218
192
  left: 0,
219
193
  zIndex: 1050,
220
- backgroundColor: 'rgba(0, 0, 0, 0.5)',
221
- backdropFilter: 'blur(4px)',
222
- paddingTop: '10vh'
194
+ backgroundColor: "rgba(0, 0, 0, 0.5)",
195
+ backdropFilter: "blur(4px)",
196
+ paddingTop: "10vh",
223
197
  }, onClick: (e) => {
224
198
  if (e.target === e.currentTarget) {
225
199
  (0, command_palette_1.closeCommandPalette)();
226
200
  }
227
- } },
228
- react_1.default.createElement("div", { className: `${isDark ? 'bg-dark text-light' : 'bg-white text-dark'}`, style: {
229
- width: '90%',
230
- maxWidth: '600px',
231
- borderRadius: '12px',
232
- boxShadow: isDark
233
- ? '0 20px 40px rgba(0, 0, 0, 0.5)'
234
- : '0 20px 40px rgba(0, 0, 0, 0.1)',
235
- border: isDark ? '1px solid #495057' : '1px solid #dee2e6',
236
- overflow: 'hidden'
237
- } },
238
- react_1.default.createElement("div", { className: "p-3 border-bottom", style: {
239
- borderBottomColor: isDark ? '#495057' : '#dee2e6'
240
- } },
241
- react_1.default.createElement("div", { className: "position-relative" },
242
- react_1.default.createElement("i", { className: "bi-search position-absolute", style: {
243
- left: '12px',
244
- top: '50%',
245
- transform: 'translateY(-50%)',
246
- color: '#6c757d',
247
- zIndex: 1
248
- } }),
249
- react_1.default.createElement("input", { ref: inputRef, type: "text", className: `form-control ${isDark ? 'bg-dark text-light border-secondary' : ''}`, placeholder: "Search apps, commands, or navigate...", value: searchQuery, onChange: (e) => {
250
- const newQuery = e.target.value;
251
- setLocalQuery(newQuery);
252
- updatePersistedQuery(newQuery);
253
- }, onBlur: () => {
254
- // Save immediately on blur
255
- if (debounceTimeoutRef.current) {
256
- clearTimeout(debounceTimeoutRef.current);
257
- debounceTimeoutRef.current = undefined;
258
- }
259
- (0, command_palette_1.commandSearchQuery)(localQuery);
260
- }, style: {
261
- paddingLeft: '40px',
262
- fontSize: '16px',
263
- border: 'none',
264
- outline: 'none',
265
- boxShadow: 'none',
266
- backgroundColor: isDark ? '#343a40' : '#f8f9fa'
267
- } }))),
268
- react_1.default.createElement("div", { style: {
269
- maxHeight: '400px',
270
- overflowY: 'auto'
271
- } }, allItems.length === 0 && !searchQuery.trim() ? (react_1.default.createElement("div", { className: "p-4 text-center text-muted" },
272
- react_1.default.createElement("i", { className: "bi-search mb-2 d-block", style: { fontSize: '24px' } }),
273
- "No results found")) : (react_1.default.createElement("div", { className: "py-2" },
274
- allItems.length === 0 && searchQuery.trim() && (react_1.default.createElement("div", { className: "px-3 py-2 text-muted small text-center" }, "No matching results")),
275
- filteredApps.length > 0 && (react_1.default.createElement("div", null,
276
- react_1.default.createElement("div", { className: "px-3 py-1 small text-muted fw-bold text-uppercase", style: { fontSize: '11px', letterSpacing: '0.5px' } }, "Apps"),
277
- filteredApps.map((app) => {
278
- const appId = `app-${app.packageId}-${app.path}`;
279
- const globalIndex = allItems.findIndex(item => item.id === appId);
280
- const isSelected = globalIndex === selectedIndex;
281
- return (react_1.default.createElement("div", { key: `${app.packageId}-${app.path}`, className: `px-3 py-2 d-flex align-items-center justify-content-between ${isSelected
282
- ? (isDark ? 'bg-primary bg-opacity-25' : 'bg-primary bg-opacity-10')
283
- : ''}`, style: {
284
- cursor: 'pointer',
285
- transition: 'background-color 0.1s ease'
286
- }, onClick: () => {
287
- (0, command_palette_1.closeCommandPalette)();
288
- (0, tabs_state_1.goToTabPath)(app.path);
289
- }, onMouseEnter: () => setSelectedIndex(globalIndex) },
290
- react_1.default.createElement("div", { className: "d-flex align-items-center" },
291
- react_1.default.createElement("i", { className: `${app.iconClassName} me-3`, style: {
292
- fontSize: '16px',
293
- color: isSelected ? (isDark ? '#ffffff' : '#0d6efd') : '#6c757d',
294
- minWidth: '16px'
295
- } }),
296
- react_1.default.createElement("div", null,
297
- react_1.default.createElement("div", { className: "fw-medium" }, app.displayName),
298
- react_1.default.createElement("div", { className: "small text-muted", style: { fontSize: '12px' } }, app.packageId === 'system-apps' ? 'System App' : app.packageName)))));
299
- }))),
300
- filteredCommands.length > 0 && Object.entries(filteredCommands.reduce((acc, cmd) => {
301
- const category = cmd.category || 'Other';
302
- if (!acc[category])
303
- acc[category] = [];
304
- acc[category].push(cmd);
305
- return acc;
306
- }, {})).map(([category, commands]) => (react_1.default.createElement("div", { key: category },
307
- react_1.default.createElement("div", { className: "px-3 py-1 small text-muted fw-bold text-uppercase", style: { fontSize: '11px', letterSpacing: '0.5px' } }, category),
308
- commands.map((command) => {
309
- const commandId = `command-${command.id}`;
310
- const globalIndex = allItems.findIndex(item => item.id === commandId);
311
- const isSelected = globalIndex === selectedIndex;
312
- return (react_1.default.createElement("div", { key: command.id, className: `px-3 py-2 d-flex align-items-center justify-content-between ${isSelected
313
- ? (isDark ? 'bg-primary bg-opacity-25' : 'bg-primary bg-opacity-10')
314
- : ''}`, style: {
315
- cursor: 'pointer',
316
- transition: 'background-color 0.1s ease'
317
- }, onClick: () => (0, command_palette_1.executeCommand)(command.id), onMouseEnter: () => setSelectedIndex(globalIndex) },
318
- react_1.default.createElement("div", { className: "d-flex align-items-center" },
319
- command.iconClassName && (react_1.default.createElement("i", { className: `${command.iconClassName} me-3`, style: {
320
- fontSize: '16px',
321
- color: isSelected ? (isDark ? '#ffffff' : '#0d6efd') : '#6c757d',
322
- minWidth: '16px'
323
- } })),
324
- react_1.default.createElement("div", null,
325
- react_1.default.createElement("div", { className: "fw-medium" }, command.label),
326
- command.description && (react_1.default.createElement("div", { className: "small text-muted", style: { fontSize: '12px' } }, command.description)))),
327
- command.shortcut && (react_1.default.createElement("div", { className: `small px-2 py-1 rounded ${isDark ? 'bg-secondary bg-opacity-50' : 'bg-light'}`, style: {
328
- fontSize: '11px',
329
- fontFamily: 'monospace',
330
- color: isDark ? '#adb5bd' : '#6c757d',
331
- border: isDark ? '1px solid #495057' : '1px solid #dee2e6'
332
- } }, command.shortcut))));
333
- })))),
334
- searchQuery.trim() && (react_1.default.createElement("div", null,
335
- react_1.default.createElement("div", { className: "px-3 py-1 small text-muted fw-bold text-uppercase", style: { fontSize: '11px', letterSpacing: '0.5px' } }, "Actions"),
336
- react_1.default.createElement("div", { className: `px-3 py-2 d-flex align-items-center ${(allItems.length === 0 || selectedIndex >= allItems.length) && searchQuery.trim()
337
- ? (isDark ? 'bg-primary bg-opacity-25' : 'bg-primary bg-opacity-10')
338
- : ''}`, style: {
339
- cursor: 'pointer',
340
- transition: 'background-color 0.1s ease',
341
- borderTop: allItems.length > 0 ? `1px solid ${isDark ? '#495057' : '#dee2e6'}` : 'none',
342
- marginTop: allItems.length > 0 ? '8px' : '0',
343
- paddingTop: allItems.length > 0 ? '12px' : '8px'
344
- }, onClick: () => {
345
- (0, command_palette_1.closeCommandPalette)();
346
- createNewThreadFromQuery(searchQuery);
347
- }, onMouseEnter: () => {
348
- // Set selected index beyond the list to indicate this item is selected
349
- setSelectedIndex(allItems.length);
350
- } },
351
- react_1.default.createElement("div", { className: "d-flex align-items-center" },
352
- react_1.default.createElement("i", { className: "bi-chat-dots me-3", style: {
353
- fontSize: '16px',
354
- color: (allItems.length === 0 || selectedIndex >= allItems.length) && searchQuery.trim()
355
- ? (isDark ? '#ffffff' : '#0d6efd')
356
- : '#6c757d',
357
- minWidth: '16px'
358
- } }),
359
- react_1.default.createElement("div", null,
360
- react_1.default.createElement("div", { className: "fw-medium" },
361
- "Start new thread: ",
362
- react_1.default.createElement("span", { className: "text-muted" },
363
- searchQuery.trim().slice(0, 50),
364
- searchQuery.trim().length > 50 ? '...' : '')),
365
- react_1.default.createElement("div", { className: "small text-muted", style: { fontSize: '12px' } }, "Press Enter to create"))))))))),
366
- react_1.default.createElement("div", { className: `px-3 py-2 small text-muted border-top d-flex align-items-center justify-content-between`, style: {
367
- borderTopColor: isDark ? '#495057' : '#dee2e6',
368
- fontSize: '11px'
369
- } },
370
- react_1.default.createElement("div", { className: "d-flex align-items-center gap-3" },
371
- react_1.default.createElement("span", null,
372
- react_1.default.createElement("kbd", { className: "small" }, "\u21B5"),
373
- " to select"),
374
- react_1.default.createElement("span", null,
375
- react_1.default.createElement("kbd", { className: "small" }, "\u2191\u2193"),
376
- " to navigate"),
377
- react_1.default.createElement("span", null,
378
- react_1.default.createElement("kbd", { className: "small" }, "esc"),
379
- " to close")),
380
- react_1.default.createElement("div", null,
381
- allItems.length,
382
- " result",
383
- allItems.length !== 1 ? 's' : '',
384
- searchQuery.trim() && allItems.length === 0 && ' • Start thread')))));
201
+ }, children: (0, jsx_runtime_1.jsxs)("div", { className: `${isDark ? "bg-dark text-light" : "bg-white text-dark"}`, style: {
202
+ width: "90%",
203
+ maxWidth: "600px",
204
+ borderRadius: "12px",
205
+ boxShadow: isDark ? "0 20px 40px rgba(0, 0, 0, 0.5)" : "0 20px 40px rgba(0, 0, 0, 0.1)",
206
+ border: isDark ? "1px solid #495057" : "1px solid #dee2e6",
207
+ overflow: "hidden",
208
+ }, children: [(0, jsx_runtime_1.jsx)("div", { className: "p-3 border-bottom", style: {
209
+ borderBottomColor: isDark ? "#495057" : "#dee2e6",
210
+ }, children: (0, jsx_runtime_1.jsxs)("div", { className: "position-relative", children: [(0, jsx_runtime_1.jsx)("i", { className: "bi-search position-absolute", style: {
211
+ left: "12px",
212
+ top: "50%",
213
+ transform: "translateY(-50%)",
214
+ color: "#6c757d",
215
+ zIndex: 1,
216
+ } }), (0, jsx_runtime_1.jsx)("input", { ref: inputRef, type: "text", className: `form-control ${isDark ? "bg-dark text-light border-secondary" : ""}`, placeholder: "Search apps, commands, or navigate...", value: searchQuery, onChange: (e) => {
217
+ const newQuery = e.target.value;
218
+ setLocalQuery(newQuery);
219
+ updatePersistedQuery(newQuery);
220
+ }, onBlur: () => {
221
+ // Save immediately on blur
222
+ if (debounceTimeoutRef.current) {
223
+ clearTimeout(debounceTimeoutRef.current);
224
+ debounceTimeoutRef.current = undefined;
225
+ }
226
+ (0, command_palette_1.commandSearchQuery)(localQuery);
227
+ }, style: {
228
+ paddingLeft: "40px",
229
+ fontSize: "16px",
230
+ border: "none",
231
+ outline: "none",
232
+ boxShadow: "none",
233
+ backgroundColor: isDark ? "#343a40" : "#f8f9fa",
234
+ } })] }) }), (0, jsx_runtime_1.jsx)("div", { style: {
235
+ maxHeight: "400px",
236
+ overflowY: "auto",
237
+ }, children: allItems.length === 0 && !searchQuery.trim() ? ((0, jsx_runtime_1.jsxs)("div", { className: "p-4 text-center text-muted", children: [(0, jsx_runtime_1.jsx)("i", { className: "bi-search mb-2 d-block", style: { fontSize: "24px" } }), "No results found"] })) : ((0, jsx_runtime_1.jsxs)("div", { className: "py-2", children: [allItems.length === 0 && searchQuery.trim() && ((0, jsx_runtime_1.jsx)("div", { className: "px-3 py-2 text-muted small text-center", children: "No matching results" })), filteredApps.length > 0 && ((0, jsx_runtime_1.jsxs)("div", { children: [(0, jsx_runtime_1.jsx)("div", { className: "px-3 py-1 small text-muted fw-bold text-uppercase", style: { fontSize: "11px", letterSpacing: "0.5px" }, children: "Apps" }), filteredApps.map((app) => {
238
+ const appId = `app-${app.packageId}-${app.path}`;
239
+ const globalIndex = allItems.findIndex((item) => item.id === appId);
240
+ const isSelected = globalIndex === selectedIndex;
241
+ return ((0, jsx_runtime_1.jsx)("div", { className: `px-3 py-2 d-flex align-items-center justify-content-between ${isSelected
242
+ ? isDark
243
+ ? "bg-primary bg-opacity-25"
244
+ : "bg-primary bg-opacity-10"
245
+ : ""}`, style: {
246
+ cursor: "pointer",
247
+ transition: "background-color 0.1s ease",
248
+ }, onClick: () => {
249
+ (0, command_palette_1.closeCommandPalette)();
250
+ (0, tabs_state_1.goToTabPath)(app.path);
251
+ }, onMouseEnter: () => setSelectedIndex(globalIndex), children: (0, jsx_runtime_1.jsxs)("div", { className: "d-flex align-items-center", children: [(0, jsx_runtime_1.jsx)("i", { className: `${app.iconClassName} me-3`, style: {
252
+ fontSize: "16px",
253
+ color: isSelected ? (isDark ? "#ffffff" : "#0d6efd") : "#6c757d",
254
+ minWidth: "16px",
255
+ } }), (0, jsx_runtime_1.jsxs)("div", { children: [(0, jsx_runtime_1.jsx)("div", { className: "fw-medium", children: app.displayName }), (0, jsx_runtime_1.jsx)("div", { className: "small text-muted", style: { fontSize: "12px" }, children: app.packageId === "system-apps" ? "System App" : app.packageName })] })] }) }, `${app.packageId}-${app.path}`));
256
+ })] })), filteredCommands.length > 0 &&
257
+ Object.entries(filteredCommands.reduce((acc, cmd) => {
258
+ const category = cmd.category || "Other";
259
+ if (!acc[category])
260
+ acc[category] = [];
261
+ acc[category].push(cmd);
262
+ return acc;
263
+ }, {})).map(([category, commands]) => ((0, jsx_runtime_1.jsxs)("div", { children: [(0, jsx_runtime_1.jsx)("div", { className: "px-3 py-1 small text-muted fw-bold text-uppercase", style: { fontSize: "11px", letterSpacing: "0.5px" }, children: category }), commands.map((command) => {
264
+ const commandId = `command-${command.id}`;
265
+ const globalIndex = allItems.findIndex((item) => item.id === commandId);
266
+ const isSelected = globalIndex === selectedIndex;
267
+ return ((0, jsx_runtime_1.jsxs)("div", { className: `px-3 py-2 d-flex align-items-center justify-content-between ${isSelected
268
+ ? isDark
269
+ ? "bg-primary bg-opacity-25"
270
+ : "bg-primary bg-opacity-10"
271
+ : ""}`, style: {
272
+ cursor: "pointer",
273
+ transition: "background-color 0.1s ease",
274
+ }, onClick: () => (0, command_palette_1.executeCommand)(command.id), onMouseEnter: () => setSelectedIndex(globalIndex), children: [(0, jsx_runtime_1.jsxs)("div", { className: "d-flex align-items-center", children: [command.iconClassName && ((0, jsx_runtime_1.jsx)("i", { className: `${command.iconClassName} me-3`, style: {
275
+ fontSize: "16px",
276
+ color: isSelected ? (isDark ? "#ffffff" : "#0d6efd") : "#6c757d",
277
+ minWidth: "16px",
278
+ } })), (0, jsx_runtime_1.jsxs)("div", { children: [(0, jsx_runtime_1.jsx)("div", { className: "fw-medium", children: command.label }), command.description && ((0, jsx_runtime_1.jsx)("div", { className: "small text-muted", style: { fontSize: "12px" }, children: command.description }))] })] }), command.shortcut && ((0, jsx_runtime_1.jsx)("div", { className: `small px-2 py-1 rounded ${isDark ? "bg-secondary bg-opacity-50" : "bg-light"}`, style: {
279
+ fontSize: "11px",
280
+ fontFamily: "monospace",
281
+ color: isDark ? "#adb5bd" : "#6c757d",
282
+ border: isDark ? "1px solid #495057" : "1px solid #dee2e6",
283
+ }, children: command.shortcut }))] }, command.id));
284
+ })] }, category))), searchQuery.trim() && ((0, jsx_runtime_1.jsxs)("div", { children: [(0, jsx_runtime_1.jsx)("div", { className: "px-3 py-1 small text-muted fw-bold text-uppercase", style: { fontSize: "11px", letterSpacing: "0.5px" }, children: "Actions" }), (0, jsx_runtime_1.jsx)("div", { className: `px-3 py-2 d-flex align-items-center ${(allItems.length === 0 || selectedIndex >= allItems.length) &&
285
+ searchQuery.trim()
286
+ ? isDark
287
+ ? "bg-primary bg-opacity-25"
288
+ : "bg-primary bg-opacity-10"
289
+ : ""}`, style: {
290
+ cursor: "pointer",
291
+ transition: "background-color 0.1s ease",
292
+ borderTop: allItems.length > 0
293
+ ? `1px solid ${isDark ? "#495057" : "#dee2e6"}`
294
+ : "none",
295
+ marginTop: allItems.length > 0 ? "8px" : "0",
296
+ paddingTop: allItems.length > 0 ? "12px" : "8px",
297
+ }, onClick: () => {
298
+ (0, command_palette_1.closeCommandPalette)();
299
+ createNewThreadFromQuery(searchQuery);
300
+ }, onMouseEnter: () => {
301
+ // Set selected index beyond the list to indicate this item is selected
302
+ setSelectedIndex(allItems.length);
303
+ }, children: (0, jsx_runtime_1.jsxs)("div", { className: "d-flex align-items-center", children: [(0, jsx_runtime_1.jsx)("i", { className: "bi-chat-dots me-3", style: {
304
+ fontSize: "16px",
305
+ color: (allItems.length === 0 || selectedIndex >= allItems.length) &&
306
+ searchQuery.trim()
307
+ ? isDark
308
+ ? "#ffffff"
309
+ : "#0d6efd"
310
+ : "#6c757d",
311
+ minWidth: "16px",
312
+ } }), (0, jsx_runtime_1.jsxs)("div", { children: [(0, jsx_runtime_1.jsxs)("div", { className: "fw-medium", children: ["Start new thread:", " ", (0, jsx_runtime_1.jsxs)("span", { className: "text-muted", children: [searchQuery.trim().slice(0, 50), searchQuery.trim().length > 50 ? "..." : ""] })] }), (0, jsx_runtime_1.jsx)("div", { className: "small text-muted", style: { fontSize: "12px" }, children: "Press Enter to create" })] })] }) })] }))] })) }), (0, jsx_runtime_1.jsxs)("div", { className: `px-3 py-2 small text-muted border-top d-flex align-items-center justify-content-between`, style: {
313
+ borderTopColor: isDark ? "#495057" : "#dee2e6",
314
+ fontSize: "11px",
315
+ }, children: [(0, jsx_runtime_1.jsxs)("div", { className: "d-flex align-items-center gap-3", children: [(0, jsx_runtime_1.jsxs)("span", { children: [(0, jsx_runtime_1.jsx)("kbd", { className: "small", children: "\u21B5" }), " to select"] }), (0, jsx_runtime_1.jsxs)("span", { children: [(0, jsx_runtime_1.jsx)("kbd", { className: "small", children: "\u2191\u2193" }), " to navigate"] }), (0, jsx_runtime_1.jsxs)("span", { children: [(0, jsx_runtime_1.jsx)("kbd", { className: "small", children: "esc" }), " to close"] })] }), (0, jsx_runtime_1.jsxs)("div", { children: [allItems.length, " result", allItems.length !== 1 ? "s" : "", searchQuery.trim() && allItems.length === 0 && " • Start thread"] })] })] }) }));
385
316
  }