@parallelworks/ui 0.43.0 → 0.45.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 (622) hide show
  1. package/README.md +348 -25
  2. package/dist/ai/agent/diff.d.ts +2 -1
  3. package/dist/ai/agent/diff.js +4 -12
  4. package/dist/ai/agent/diffHighlight.d.ts +1 -1
  5. package/dist/ai/agent/diffHighlight.js +4 -3
  6. package/dist/ai/agent/index.d.ts +2 -1
  7. package/dist/ai/agent/toolStrings.d.ts +37 -0
  8. package/dist/ai/agent/toolStrings.js +35 -0
  9. package/dist/ai/agent/toolfmt.d.ts +8 -3
  10. package/dist/ai/agent/toolfmt.js +50 -65
  11. package/dist/ai/ai.css +18 -31
  12. package/dist/ai/components/AllocationSelector.js +2 -2
  13. package/dist/ai/components/AttachmentManager.js +28 -29
  14. package/dist/ai/components/AttachmentUpload.js +25 -30
  15. package/dist/ai/components/BlockedGroupBanner.js +2 -2
  16. package/dist/ai/components/BranchNavigator.js +3 -4
  17. package/dist/ai/components/ChatEmptyState.js +8 -7
  18. package/dist/ai/components/ChatInput.js +10 -12
  19. package/dist/ai/components/ChatLayout.js +3 -3
  20. package/dist/ai/components/ChatMessage.js +49 -61
  21. package/dist/ai/components/ChatMessageList.js +46 -42
  22. package/dist/ai/components/ChatSidebar.js +26 -34
  23. package/dist/ai/components/ChatStage.js +1 -1
  24. package/dist/ai/components/ComposerChrome.js +3 -4
  25. package/dist/ai/components/DragOverlay.js +6 -4
  26. package/dist/ai/components/ModelSelector.js +14 -15
  27. package/dist/ai/components/PastedText.js +18 -14
  28. package/dist/ai/components/ProviderIssueBanner.js +3 -4
  29. package/dist/ai/components/Reasoning.d.ts +12 -6
  30. package/dist/ai/components/Reasoning.js +31 -18
  31. package/dist/ai/components/ShareDialog.js +25 -28
  32. package/dist/ai/components/SlashMenu.js +3 -3
  33. package/dist/ai/components/agent/ActivityLine.d.ts +0 -5
  34. package/dist/ai/components/agent/ActivityLine.js +17 -54
  35. package/dist/ai/components/agent/AgentMessageParts.js +139 -149
  36. package/dist/ai/components/conversationActions.js +16 -16
  37. package/dist/ai/core/ChatProvider.d.ts +2 -4
  38. package/dist/ai/core/ChatProvider.js +25 -38
  39. package/dist/ai/core/exportConversation.js +4 -4
  40. package/dist/ai/core/sidebarState.d.ts +8 -6
  41. package/dist/ai/core/sidebarState.js +21 -28
  42. package/dist/ai/core/useKeyboardShortcuts.js +14 -5
  43. package/dist/ai/index.d.ts +4 -5
  44. package/dist/ai/index.js +7 -7
  45. package/dist/ai/strings.d.ts +14 -31
  46. package/dist/ai/strings.js +19 -39
  47. package/dist/ai/types.d.ts +0 -5
  48. package/dist/ai/ui/ConversationSidebar.d.ts +12 -9
  49. package/dist/ai/ui/ConversationSidebar.js +43 -87
  50. package/dist/ai/ui/Markdown.d.ts +3 -6
  51. package/dist/ai/ui/Markdown.js +6 -73
  52. package/dist/ai/ui/Notice.js +10 -12
  53. package/dist/ai/ui/chip.d.ts +2 -2
  54. package/dist/ai/ui/chip.js +1 -1
  55. package/dist/ai/ui/sidebar.d.ts +4 -20
  56. package/dist/ai/ui/sidebar.js +30 -67
  57. package/dist/ai/utils.d.ts +0 -1
  58. package/dist/ai/utils.js +1 -14
  59. package/dist/brandIcons.d.ts +51 -0
  60. package/dist/brandIcons.js +75 -0
  61. package/dist/components/Avatar.d.ts +3 -1
  62. package/dist/components/Avatar.js +34 -28
  63. package/dist/components/Button.d.ts +12 -7
  64. package/dist/components/Button.js +39 -44
  65. package/dist/components/Callout.js +18 -12
  66. package/dist/components/Card.d.ts +18 -8
  67. package/dist/components/Card.js +17 -6
  68. package/dist/components/Checkbox.d.ts +9 -0
  69. package/dist/components/Checkbox.js +30 -0
  70. package/dist/components/Combobox.d.ts +9 -1
  71. package/dist/components/Combobox.js +71 -44
  72. package/dist/components/ConfirmModal.js +11 -11
  73. package/dist/components/ContextMenu.d.ts +2 -8
  74. package/dist/components/ContextMenu.js +2 -29
  75. package/dist/components/CopyToClipboard.js +17 -36
  76. package/dist/components/CreateModal.d.ts +3 -24
  77. package/dist/components/CreateModal.js +46 -113
  78. package/dist/components/DatePicker.d.ts +31 -0
  79. package/dist/components/DatePicker.js +191 -0
  80. package/dist/components/DescriptionList.js +4 -4
  81. package/dist/components/Disclosure.d.ts +34 -0
  82. package/dist/components/Disclosure.js +46 -0
  83. package/dist/components/Drawer.d.ts +47 -0
  84. package/dist/components/Drawer.js +120 -0
  85. package/dist/components/EmptyState.d.ts +15 -10
  86. package/dist/components/EmptyState.js +13 -8
  87. package/dist/components/ExternalLink.d.ts +8 -0
  88. package/dist/components/ExternalLink.js +29 -0
  89. package/dist/components/Field.d.ts +70 -0
  90. package/dist/components/Field.js +159 -0
  91. package/dist/components/HoverCard.js +11 -14
  92. package/dist/components/IconButton.d.ts +16 -13
  93. package/dist/components/IconButton.js +27 -18
  94. package/dist/components/InfoTip.js +16 -23
  95. package/dist/components/Input.d.ts +10 -9
  96. package/dist/components/Input.js +54 -96
  97. package/dist/components/LetterBadge.js +2 -2
  98. package/dist/components/Loader.d.ts +15 -8
  99. package/dist/components/Loader.js +29 -19
  100. package/dist/components/Markdown.d.ts +7 -1
  101. package/dist/components/Markdown.js +2 -0
  102. package/dist/components/MarkdownImpl.d.ts +1 -1
  103. package/dist/components/MarkdownImpl.js +55 -14
  104. package/dist/components/Menu.js +13 -15
  105. package/dist/components/MenuEntries.js +11 -16
  106. package/dist/components/Meter.d.ts +48 -0
  107. package/dist/components/Meter.js +94 -0
  108. package/dist/components/Modal.js +11 -14
  109. package/dist/components/NumberInput.d.ts +25 -0
  110. package/dist/components/NumberInput.js +55 -0
  111. package/dist/components/Overview.js +12 -10
  112. package/dist/components/PageHeader.d.ts +2 -3
  113. package/dist/components/PageHeader.js +30 -21
  114. package/dist/components/Pagination.d.ts +27 -14
  115. package/dist/components/Pagination.js +86 -25
  116. package/dist/components/Popover.d.ts +47 -0
  117. package/dist/components/Popover.js +63 -0
  118. package/dist/components/Provider.d.ts +197 -80
  119. package/dist/components/Provider.js +200 -118
  120. package/dist/components/Radio.d.ts +1 -1
  121. package/dist/components/Radio.js +4 -4
  122. package/dist/components/RefreshButton.d.ts +15 -0
  123. package/dist/components/RefreshButton.js +53 -0
  124. package/dist/components/RunStatusIcon.d.ts +12 -0
  125. package/dist/components/RunStatusIcon.js +84 -0
  126. package/dist/components/SearchInput.d.ts +16 -0
  127. package/dist/components/SearchInput.js +52 -0
  128. package/dist/components/Section.d.ts +28 -0
  129. package/dist/components/Section.js +76 -0
  130. package/dist/components/SegmentedControl.d.ts +7 -11
  131. package/dist/components/SegmentedControl.js +25 -56
  132. package/dist/components/Select.d.ts +8 -1
  133. package/dist/components/Select.js +47 -43
  134. package/dist/components/SettingModeOption.d.ts +3 -5
  135. package/dist/components/SettingModeOption.js +5 -6
  136. package/dist/components/SettingsCard.d.ts +32 -19
  137. package/dist/components/SettingsCard.js +40 -13
  138. package/dist/components/Skeleton.d.ts +22 -0
  139. package/dist/components/Skeleton.js +34 -0
  140. package/dist/components/Slider.d.ts +16 -0
  141. package/dist/components/Slider.js +30 -0
  142. package/dist/components/Sort.js +4 -6
  143. package/dist/components/StatusBadge.d.ts +3 -1
  144. package/dist/components/StatusBadge.js +9 -32
  145. package/dist/components/StatusIcons.d.ts +0 -4
  146. package/dist/components/StatusIcons.js +5 -13
  147. package/dist/components/Switch.d.ts +5 -1
  148. package/dist/components/Switch.js +23 -6
  149. package/dist/components/Table.js +13 -20
  150. package/dist/components/Tabs.d.ts +52 -0
  151. package/dist/components/Tabs.js +75 -0
  152. package/dist/components/ThemeEditor.d.ts +29 -0
  153. package/dist/components/ThemeEditor.js +397 -0
  154. package/dist/components/Toast.d.ts +57 -0
  155. package/dist/components/Toast.js +203 -0
  156. package/dist/components/Tooltip.js +12 -15
  157. package/dist/components/buttonClasses.d.ts +18 -0
  158. package/dist/components/buttonClasses.js +31 -0
  159. package/dist/components/codeTheme.d.ts +5 -0
  160. package/dist/components/codeTheme.js +93 -0
  161. package/dist/components/fieldBox.d.ts +14 -0
  162. package/dist/components/fieldBox.js +29 -0
  163. package/dist/components/floating.d.ts +26 -5
  164. package/dist/components/floating.js +31 -9
  165. package/dist/{ai/ui/codeBreaks.js → components/markdownCodeBreaks.js} +1 -1
  166. package/dist/components/persistedState.d.ts +2 -0
  167. package/dist/components/persistedState.js +63 -0
  168. package/dist/components/relativeTime.d.ts +36 -8
  169. package/dist/components/relativeTime.js +106 -23
  170. package/dist/components/segmented.d.ts +17 -0
  171. package/dist/components/segmented.js +27 -0
  172. package/dist/components/shortcutKey.d.ts +4 -0
  173. package/dist/components/shortcutKey.js +27 -0
  174. package/dist/components/splitter.d.ts +26 -0
  175. package/dist/components/splitter.js +69 -0
  176. package/dist/components/tone.d.ts +9 -0
  177. package/dist/components/tone.js +30 -0
  178. package/dist/components/useCopy.d.ts +14 -0
  179. package/dist/components/useCopy.js +31 -0
  180. package/dist/components/useCssIsDark.d.ts +2 -0
  181. package/dist/components/useCssIsDark.js +2 -1
  182. package/dist/components/useTheme.d.ts +10 -0
  183. package/dist/components/useTheme.js +40 -0
  184. package/dist/cx.d.ts +5 -0
  185. package/dist/cx.js +11 -0
  186. package/dist/editor/Editor.js +2 -2
  187. package/dist/editor/EditorField.js +7 -10
  188. package/dist/editor/FormCodePanel.js +10 -23
  189. package/dist/editor/Monaco.js +7 -4
  190. package/dist/editor/index.d.ts +1 -1
  191. package/dist/editor/index.js +2 -2
  192. package/dist/editor/themes.d.ts +4 -0
  193. package/dist/editor/themes.js +75 -76
  194. package/dist/file-explorer/FileExplorer.js +180 -187
  195. package/dist/file-explorer/FileExplorerContext.js +36 -58
  196. package/dist/file-explorer/FilePreview/CodePreviewEditor.js +2 -1
  197. package/dist/file-explorer/FilePreview/Inline.js +9 -7
  198. package/dist/file-explorer/FilePreview/StreamedBadge.js +2 -2
  199. package/dist/file-explorer/FilePreview/Viewer.js +32 -34
  200. package/dist/file-explorer/FilePreview/index.js +60 -92
  201. package/dist/file-explorer/FileRow.js +10 -15
  202. package/dist/file-explorer/FileRowsWindow.js +2 -6
  203. package/dist/file-explorer/FileTable.js +2 -2
  204. package/dist/file-explorer/FileTableHeaders.js +8 -11
  205. package/dist/file-explorer/LoadMoreRow.js +8 -9
  206. package/dist/file-explorer/TreeView.js +16 -16
  207. package/dist/file-explorer/helpers.d.ts +1 -4
  208. package/dist/file-explorer/helpers.js +101 -114
  209. package/dist/file-explorer/lib/utils.d.ts +0 -2
  210. package/dist/file-explorer/lib/utils.js +1 -25
  211. package/dist/file-explorer/toasts.js +104 -185
  212. package/dist/form/Fields/BooleanField.js +12 -14
  213. package/dist/form/Fields/CheckboxGroupField.d.ts +1 -1
  214. package/dist/form/Fields/CheckboxGroupField.js +16 -18
  215. package/dist/form/Fields/ColorField.js +11 -11
  216. package/dist/form/Fields/DropdownField.d.ts +1 -1
  217. package/dist/form/Fields/DropdownField.js +20 -36
  218. package/dist/form/Fields/DurationField.d.ts +1 -1
  219. package/dist/form/Fields/DurationField.js +36 -50
  220. package/dist/form/Fields/LabelField.js +2 -2
  221. package/dist/form/Fields/MultiDropdownField.d.ts +1 -1
  222. package/dist/form/Fields/MultiDropdownField.js +9 -14
  223. package/dist/form/Fields/NumberField.d.ts +1 -1
  224. package/dist/form/Fields/NumberField.js +13 -48
  225. package/dist/form/Fields/ObjectField.js +3 -3
  226. package/dist/form/Fields/RadioField.d.ts +1 -1
  227. package/dist/form/Fields/RadioField.js +15 -18
  228. package/dist/form/Fields/RangeField.js +34 -35
  229. package/dist/form/Fields/StringField.d.ts +1 -1
  230. package/dist/form/Fields/StringField.js +15 -25
  231. package/dist/form/Fields/TextAreaField.js +10 -15
  232. package/dist/form/Form.d.ts +7 -2
  233. package/dist/form/Form.js +144 -49
  234. package/dist/form/FormLayout.js +18 -12
  235. package/dist/form/Wizard/WizardContainer.js +44 -18
  236. package/dist/form/Wizard/WizardNavigation.d.ts +1 -1
  237. package/dist/form/Wizard/WizardNavigation.js +31 -56
  238. package/dist/form/Wizard/WizardStepIndicator.d.ts +3 -0
  239. package/dist/form/Wizard/WizardStepIndicator.js +98 -114
  240. package/dist/form/Wizard/types.d.ts +2 -2
  241. package/dist/form/fieldFrame.d.ts +7 -0
  242. package/dist/form/fieldFrame.js +19 -0
  243. package/dist/form/index.d.ts +5 -5
  244. package/dist/form/index.js +4 -6
  245. package/dist/form/layoutCSS.js +5 -4
  246. package/dist/form/types/fieldComponentTypes.d.ts +5 -3
  247. package/dist/form/useChoiceField.js +2 -3
  248. package/dist/form/useFieldValue.d.ts +3 -0
  249. package/dist/form/useFieldValue.js +24 -7
  250. package/dist/form/utils/duration.d.ts +2 -2
  251. package/dist/form/utils/duration.js +3 -3
  252. package/dist/form/utils/fieldPath.d.ts +5 -3
  253. package/dist/form/utils/fieldPath.js +18 -3
  254. package/dist/form/utils/secondaryField.d.ts +0 -7
  255. package/dist/form/utils/secondaryField.js +1 -12
  256. package/dist/form/validation.d.ts +29 -0
  257. package/dist/form/validation.js +14 -0
  258. package/dist/format.d.ts +28 -0
  259. package/dist/format.js +64 -0
  260. package/dist/graph/AnnotationBanner.js +20 -31
  261. package/dist/graph/Connectors.js +1 -1
  262. package/dist/graph/DependencyGraph.js +51 -65
  263. package/dist/graph/GraphEditor.js +24 -28
  264. package/dist/graph/GraphEditorDialogs.js +239 -245
  265. package/dist/graph/InputDialog.js +93 -112
  266. package/dist/graph/InputsEditor.js +83 -84
  267. package/dist/graph/JobSummary.js +10 -11
  268. package/dist/graph/MatrixGroup.js +3 -3
  269. package/dist/graph/ProblemsButton.js +9 -10
  270. package/dist/graph/ShortcutsButton.js +12 -17
  271. package/dist/graph/SuggestionInput.d.ts +1 -2
  272. package/dist/graph/SuggestionInput.js +1 -3
  273. package/dist/graph/TreeView.js +47 -45
  274. package/dist/graph/WorkflowSettingsDialog.js +97 -102
  275. package/dist/graph/editorChrome.js +10 -12
  276. package/dist/graph/editorFields.d.ts +19 -16
  277. package/dist/graph/editorFields.js +97 -135
  278. package/dist/graph/editorPrimitives.js +2 -2
  279. package/dist/graph/editorRows.js +22 -25
  280. package/dist/graph/editorStrings.d.ts +16 -19
  281. package/dist/graph/editorStrings.js +11 -23
  282. package/dist/graph/fieldProblems.js +2 -2
  283. package/dist/graph/graphEditorState.d.ts +4 -4
  284. package/dist/graph/inputRefs.d.ts +0 -13
  285. package/dist/graph/inputRefs.js +121 -159
  286. package/dist/graph/settingsViews.js +5 -3
  287. package/dist/graph/stepWith.js +100 -100
  288. package/dist/graph/toolbarPanel.d.ts +8 -0
  289. package/dist/graph/toolbarPanel.js +11 -0
  290. package/dist/icons.d.ts +234 -23
  291. package/dist/icons.js +249 -264
  292. package/dist/index.d.ts +38 -21
  293. package/dist/index.js +42 -21
  294. package/dist/list/ActionToolbar.d.ts +1 -5
  295. package/dist/list/ActionToolbar.js +21 -20
  296. package/dist/list/ListPage.js +7 -7
  297. package/dist/list/ListTable.d.ts +3 -2
  298. package/dist/list/ListTable.js +33 -29
  299. package/dist/list/ListViewControls.d.ts +0 -17
  300. package/dist/list/ListViewControls.js +50 -118
  301. package/dist/list/UserHoverCard.js +24 -32
  302. package/dist/list/index.d.ts +2 -4
  303. package/dist/list/index.js +3 -5
  304. package/dist/list/listSearch.d.ts +1 -1
  305. package/dist/list/listSearch.js +19 -14
  306. package/dist/list/rowMenu.js +20 -26
  307. package/dist/logviewer/LogViewer.js +268 -382
  308. package/dist/logviewer/logviewer.css +53 -41
  309. package/dist/styles/base.css +16 -40
  310. package/dist/styles/theme.css +75 -106
  311. package/dist/styles.css +1 -1
  312. package/dist/theme/color.d.ts +40 -0
  313. package/dist/theme/color.js +228 -0
  314. package/dist/theme/contrast.d.ts +42 -0
  315. package/dist/theme/contrast.js +145 -0
  316. package/dist/theme/derive.d.ts +25 -0
  317. package/dist/theme/derive.js +475 -0
  318. package/dist/theme/fit.d.ts +35 -0
  319. package/dist/theme/fit.js +185 -0
  320. package/dist/theme/index.d.ts +14 -29
  321. package/dist/theme/index.js +20 -279
  322. package/dist/theme/model.d.ts +64 -0
  323. package/dist/theme/model.js +219 -0
  324. package/package.json +9 -5
  325. package/dist/ai/ui/Avatar.d.ts +0 -7
  326. package/dist/ai/ui/Avatar.js +0 -24
  327. package/dist/components/Filter.d.ts +0 -15
  328. package/dist/components/Filter.js +0 -32
  329. package/dist/components/FilterPill.d.ts +0 -7
  330. package/dist/components/FilterPill.js +0 -14
  331. package/dist/components/Indicator.d.ts +0 -4
  332. package/dist/components/Indicator.js +0 -44
  333. package/dist/components/SectionHeader.d.ts +0 -8
  334. package/dist/components/SectionHeader.js +0 -11
  335. package/dist/components/SettingRow.d.ts +0 -18
  336. package/dist/components/SettingRow.js +0 -35
  337. package/dist/components/SettingsGroup.d.ts +0 -8
  338. package/dist/components/SettingsGroup.js +0 -17
  339. package/dist/components/ghostButton.d.ts +0 -4
  340. package/dist/components/ghostButton.js +0 -7
  341. package/dist/components/inputClasses.d.ts +0 -1
  342. package/dist/components/inputClasses.js +0 -4
  343. package/dist/duration.d.ts +0 -3
  344. package/dist/duration.js +0 -17
  345. package/dist/form/FieldGroup.d.ts +0 -11
  346. package/dist/form/FieldGroup.js +0 -36
  347. package/dist/form/FieldWrapper.d.ts +0 -16
  348. package/dist/form/FieldWrapper.js +0 -55
  349. package/dist/form/fieldContext.d.ts +0 -19
  350. package/dist/form/fieldContext.js +0 -26
  351. package/dist/graph/Collapse.d.ts +0 -7
  352. package/dist/graph/Collapse.js +0 -15
  353. package/dist/graph/ToolbarPopover.d.ts +0 -13
  354. package/dist/graph/ToolbarPopover.js +0 -39
  355. package/dist/icons/ai/AiOutlineRollback.js +0 -16
  356. package/dist/icons/bi/BiBell.js +0 -16
  357. package/dist/icons/bi/BiBellOff.js +0 -16
  358. package/dist/icons/bi/BiBuildings.js +0 -20
  359. package/dist/icons/bi/BiError.js +0 -20
  360. package/dist/icons/bi/BiExpandVertical.js +0 -16
  361. package/dist/icons/bi/BiPause.js +0 -16
  362. package/dist/icons/bi/BiPlay.js +0 -16
  363. package/dist/icons/bi/BiRedo.js +0 -16
  364. package/dist/icons/bi/BiSolidCheckShield.js +0 -16
  365. package/dist/icons/bi/BiSolidTrashAlt.js +0 -16
  366. package/dist/icons/bi/BiStop.js +0 -16
  367. package/dist/icons/bi/BiUndo.js +0 -16
  368. package/dist/icons/bs/BsArrowsCollapse.js +0 -22
  369. package/dist/icons/bs/BsBank2.js +0 -19
  370. package/dist/icons/bs/BsBriefcase.js +0 -19
  371. package/dist/icons/bs/BsBucket.js +0 -19
  372. package/dist/icons/bs/BsCalendarX.js +0 -23
  373. package/dist/icons/bs/BsChatLeft.js +0 -19
  374. package/dist/icons/bs/BsChevronDoubleDown.js +0 -29
  375. package/dist/icons/bs/BsChevronDoubleUp.js +0 -29
  376. package/dist/icons/bs/BsClipboardCheck.js +0 -34
  377. package/dist/icons/bs/BsCurrencyDollar.js +0 -19
  378. package/dist/icons/bs/BsDash.js +0 -19
  379. package/dist/icons/bs/BsFileEarmarkZip.js +0 -23
  380. package/dist/icons/bs/BsFiles.js +0 -19
  381. package/dist/icons/bs/BsGeoAlt.js +0 -23
  382. package/dist/icons/bs/BsGrid.js +0 -19
  383. package/dist/icons/bs/BsLayers.js +0 -19
  384. package/dist/icons/bs/BsLayoutThreeColumns.js +0 -19
  385. package/dist/icons/bs/BsListUl.js +0 -22
  386. package/dist/icons/bs/BsMortarboard.js +0 -23
  387. package/dist/icons/bs/BsMusicNoteBeamed.js +0 -34
  388. package/dist/icons/bs/BsOpenai.js +0 -19
  389. package/dist/icons/bs/BsPersonPlus.js +0 -26
  390. package/dist/icons/bs/BsSearch.js +0 -19
  391. package/dist/icons/bs/BsSend.js +0 -19
  392. package/dist/icons/bs/BsShieldSlash.js +0 -22
  393. package/dist/icons/bs/BsStar.js +0 -19
  394. package/dist/icons/bs/BsStarFill.js +0 -19
  395. package/dist/icons/bs/BsStopCircle.js +0 -23
  396. package/dist/icons/bs/BsTag.js +0 -23
  397. package/dist/icons/bs/BsTelephone.js +0 -19
  398. package/dist/icons/bs/BsTerminal.js +0 -23
  399. package/dist/icons/bs/BsTerminalFill.js +0 -19
  400. package/dist/icons/bs/BsThreeDots.js +0 -19
  401. package/dist/icons/bs/BsThreeDotsVertical.js +0 -19
  402. package/dist/icons/bs/BsZoomIn.js +0 -37
  403. package/dist/icons/fa/FaAmazon.js +0 -16
  404. package/dist/icons/fa/FaAngleDown.js +0 -16
  405. package/dist/icons/fa/FaAngleLeft.js +0 -16
  406. package/dist/icons/fa/FaAngleRight.js +0 -16
  407. package/dist/icons/fa/FaAngleUp.js +0 -16
  408. package/dist/icons/fa/FaArrowDown.js +0 -16
  409. package/dist/icons/fa/FaArrowLeft.js +0 -16
  410. package/dist/icons/fa/FaArrowRight.js +0 -16
  411. package/dist/icons/fa/FaArrowUp.js +0 -16
  412. package/dist/icons/fa/FaBalanceScale.js +0 -16
  413. package/dist/icons/fa/FaCaretDown.js +0 -16
  414. package/dist/icons/fa/FaCentos.js +0 -16
  415. package/dist/icons/fa/FaChartLine.js +0 -16
  416. package/dist/icons/fa/FaChartPie.js +0 -16
  417. package/dist/icons/fa/FaCheck.js +0 -16
  418. package/dist/icons/fa/FaChevronDown.js +0 -16
  419. package/dist/icons/fa/FaChevronUp.js +0 -16
  420. package/dist/icons/fa/FaChrome.js +0 -16
  421. package/dist/icons/fa/FaCircleNotch.js +0 -16
  422. package/dist/icons/fa/FaCloud.js +0 -16
  423. package/dist/icons/fa/FaCloudDownloadAlt.js +0 -16
  424. package/dist/icons/fa/FaCog.js +0 -16
  425. package/dist/icons/fa/FaCogs.js +0 -16
  426. package/dist/icons/fa/FaComments.js +0 -16
  427. package/dist/icons/fa/FaCompress.js +0 -16
  428. package/dist/icons/fa/FaDesktop.js +0 -16
  429. package/dist/icons/fa/FaDocker.js +0 -16
  430. package/dist/icons/fa/FaDollarSign.js +0 -16
  431. package/dist/icons/fa/FaEdge.js +0 -16
  432. package/dist/icons/fa/FaEdit.js +0 -16
  433. package/dist/icons/fa/FaExclamationTriangle.js +0 -16
  434. package/dist/icons/fa/FaExpand.js +0 -16
  435. package/dist/icons/fa/FaEye.js +0 -16
  436. package/dist/icons/fa/FaEyeSlash.js +0 -16
  437. package/dist/icons/fa/FaFile.js +0 -16
  438. package/dist/icons/fa/FaFilePdf.js +0 -16
  439. package/dist/icons/fa/FaFilter.js +0 -16
  440. package/dist/icons/fa/FaFirefoxBrowser.js +0 -16
  441. package/dist/icons/fa/FaFlask.js +0 -16
  442. package/dist/icons/fa/FaFolder.js +0 -16
  443. package/dist/icons/fa/FaGithub.js +0 -16
  444. package/dist/icons/fa/FaGitlab.js +0 -16
  445. package/dist/icons/fa/FaGlobe.js +0 -16
  446. package/dist/icons/fa/FaGlobeAmericas.js +0 -16
  447. package/dist/icons/fa/FaImage.js +0 -16
  448. package/dist/icons/fa/FaInfoCircle.js +0 -16
  449. package/dist/icons/fa/FaKey.js +0 -16
  450. package/dist/icons/fa/FaLayerGroup.js +0 -16
  451. package/dist/icons/fa/FaLink.js +0 -16
  452. package/dist/icons/fa/FaLinkedin.js +0 -16
  453. package/dist/icons/fa/FaLinux.js +0 -16
  454. package/dist/icons/fa/FaList.js +0 -16
  455. package/dist/icons/fa/FaLock.js +0 -16
  456. package/dist/icons/fa/FaOpenid.js +0 -16
  457. package/dist/icons/fa/FaOpera.js +0 -16
  458. package/dist/icons/fa/FaPaperclip.js +0 -16
  459. package/dist/icons/fa/FaPlus.js +0 -16
  460. package/dist/icons/fa/FaPowerOff.js +0 -16
  461. package/dist/icons/fa/FaPrint.js +0 -16
  462. package/dist/icons/fa/FaQrcode.js +0 -16
  463. package/dist/icons/fa/FaQuestionCircle.js +0 -16
  464. package/dist/icons/fa/FaRedhat.js +0 -16
  465. package/dist/icons/fa/FaRegCircle.js +0 -16
  466. package/dist/icons/fa/FaRegFileImage.js +0 -16
  467. package/dist/icons/fa/FaRegFolder.js +0 -16
  468. package/dist/icons/fa/FaRobot.js +0 -16
  469. package/dist/icons/fa/FaRocket.js +0 -16
  470. package/dist/icons/fa/FaRunning.js +0 -16
  471. package/dist/icons/fa/FaSafari.js +0 -16
  472. package/dist/icons/fa/FaSave.js +0 -16
  473. package/dist/icons/fa/FaSearch.js +0 -16
  474. package/dist/icons/fa/FaShieldAlt.js +0 -16
  475. package/dist/icons/fa/FaSlack.js +0 -16
  476. package/dist/icons/fa/FaStar.js +0 -16
  477. package/dist/icons/fa/FaStop.js +0 -16
  478. package/dist/icons/fa/FaSuse.js +0 -16
  479. package/dist/icons/fa/FaTerminal.js +0 -16
  480. package/dist/icons/fa/FaTimes.js +0 -16
  481. package/dist/icons/fa/FaUbuntu.js +0 -16
  482. package/dist/icons/fa/FaUndoAlt.js +0 -16
  483. package/dist/icons/fa/FaUnlink.js +0 -16
  484. package/dist/icons/fa/FaUser.js +0 -16
  485. package/dist/icons/fa/FaUsers.js +0 -16
  486. package/dist/icons/fa/FaWindows.js +0 -16
  487. package/dist/icons/fa6/FaApple.js +0 -16
  488. package/dist/icons/fa6/FaArrowsRotate.js +0 -16
  489. package/dist/icons/fa6/FaDebian.js +0 -16
  490. package/dist/icons/fa6/FaFilterCircleXmark.js +0 -16
  491. package/dist/icons/fa6/FaInbox.js +0 -16
  492. package/dist/icons/fa6/FaLocationDot.js +0 -16
  493. package/dist/icons/fa6/FaRegFilePdf.js +0 -16
  494. package/dist/icons/fa6/FaRegFolderOpen.js +0 -16
  495. package/dist/icons/fa6/FaUpRightFromSquare.js +0 -16
  496. package/dist/icons/fa6/FaWandMagicSparkles.js +0 -16
  497. package/dist/icons/fa6/FaXTwitter.js +0 -16
  498. package/dist/icons/fi/FiActivity.js +0 -23
  499. package/dist/icons/fi/FiAlertCircle.js +0 -49
  500. package/dist/icons/fi/FiChevronDown.js +0 -23
  501. package/dist/icons/fi/FiClock.js +0 -31
  502. package/dist/icons/fi/FiCopy.js +0 -34
  503. package/dist/icons/fi/FiDownload.js +0 -40
  504. package/dist/icons/fi/FiFile.js +0 -27
  505. package/dist/icons/fi/FiFileText.js +0 -55
  506. package/dist/icons/fi/FiHardDrive.js +0 -55
  507. package/dist/icons/fi/FiRotateCcw.js +0 -27
  508. package/dist/icons/fi/FiUpload.js +0 -40
  509. package/dist/icons/fi/FiX.js +0 -37
  510. package/dist/icons/fi/FiZap.js +0 -23
  511. package/dist/icons/gi/GiSpy.js +0 -16
  512. package/dist/icons/go/GoGitCommit.js +0 -16
  513. package/dist/icons/go/GoGitPullRequest.js +0 -20
  514. package/dist/icons/go/GoIssueOpened.js +0 -16
  515. package/dist/icons/go/GoPlus.js +0 -16
  516. package/dist/icons/go/GoRepoForked.js +0 -28
  517. package/dist/icons/go/GoSignOut.js +0 -16
  518. package/dist/icons/go/GoSkip.js +0 -20
  519. package/dist/icons/go/GoVideo.js +0 -20
  520. package/dist/icons/gr/GrCloudComputer.js +0 -20
  521. package/dist/icons/gr/GrInbox.js +0 -20
  522. package/dist/icons/gr/GrServerCluster.js +0 -20
  523. package/dist/icons/gr/GrStorage.js +0 -20
  524. package/dist/icons/gr/GrTasks.js +0 -20
  525. package/dist/icons/hi/HiCog.js +0 -24
  526. package/dist/icons/hi/HiDuplicate.js +0 -24
  527. package/dist/icons/hi/HiOutlineArchive.js +0 -26
  528. package/dist/icons/hi/HiOutlineClipboardCopy.js +0 -26
  529. package/dist/icons/hi/HiOutlineHome.js +0 -26
  530. package/dist/icons/hi/HiQuestionMarkCircle.js +0 -24
  531. package/dist/icons/hi/HiServer.js +0 -24
  532. package/dist/icons/hi2/HiMiniCheckCircle.js +0 -24
  533. package/dist/icons/hi2/HiMiniLanguage.js +0 -28
  534. package/dist/icons/hi2/HiMiniMinusCircle.js +0 -24
  535. package/dist/icons/hi2/HiMiniXCircle.js +0 -24
  536. package/dist/icons/hi2/HiSparkles.js +0 -24
  537. package/dist/icons/im/ImSpinner5.js +0 -19
  538. package/dist/icons/io/IoIosNotifications.js +0 -16
  539. package/dist/icons/io/IoMdBuild.js +0 -16
  540. package/dist/icons/io/IoMdClose.js +0 -16
  541. package/dist/icons/io5/IoCloudUploadOutline.js +0 -32
  542. package/dist/icons/io5/IoDocumentTextOutline.js +0 -31
  543. package/dist/icons/io5/IoFileTrayFullOutline.js +0 -31
  544. package/dist/icons/io5/IoHeart.js +0 -16
  545. package/dist/icons/io5/IoHeartDislike.js +0 -16
  546. package/dist/icons/io5/IoHeartOutline.js +0 -22
  547. package/dist/icons/io5/IoInformationCircleOutline.js +0 -50
  548. package/dist/icons/io5/IoSettingsOutline.js +0 -22
  549. package/dist/icons/io5/IoWarningOutline.js +0 -40
  550. package/dist/icons/lu/LuArrowRight.js +0 -27
  551. package/dist/icons/lu/LuBadgeCheck.js +0 -27
  552. package/dist/icons/lu/LuBraces.js +0 -27
  553. package/dist/icons/lu/LuBrainCircuit.js +0 -101
  554. package/dist/icons/lu/LuCalendar.js +0 -46
  555. package/dist/icons/lu/LuCheck.js +0 -23
  556. package/dist/icons/lu/LuChevronLeft.js +0 -23
  557. package/dist/icons/lu/LuChevronRight.js +0 -23
  558. package/dist/icons/lu/LuCode.js +0 -27
  559. package/dist/icons/lu/LuExternalLink.js +0 -35
  560. package/dist/icons/lu/LuEye.js +0 -31
  561. package/dist/icons/lu/LuEyeOff.js +0 -40
  562. package/dist/icons/lu/LuFolderTree.js +0 -40
  563. package/dist/icons/lu/LuIdCard.js +0 -55
  564. package/dist/icons/lu/LuKeyboard.js +0 -71
  565. package/dist/icons/lu/LuLogs.js +0 -65
  566. package/dist/icons/lu/LuMail.js +0 -33
  567. package/dist/icons/lu/LuMegaphone.js +0 -27
  568. package/dist/icons/lu/LuMoon.js +0 -23
  569. package/dist/icons/lu/LuNetwork.js +0 -63
  570. package/dist/icons/lu/LuPartyPopper.js +0 -65
  571. package/dist/icons/lu/LuSettings2.js +0 -48
  572. package/dist/icons/lu/LuSheet.js +0 -72
  573. package/dist/icons/lu/LuShield.js +0 -23
  574. package/dist/icons/lu/LuSun.js +0 -69
  575. package/dist/icons/lu/LuTextCursorInput.js +0 -45
  576. package/dist/icons/lu/LuX.js +0 -27
  577. package/dist/icons/lu/LuZoomIn.js +0 -59
  578. package/dist/icons/lu/LuZoomOut.js +0 -49
  579. package/dist/icons/md/MdClear.js +0 -23
  580. package/dist/icons/md/MdDragHandle.js +0 -23
  581. package/dist/icons/md/MdInstallDesktop.js +0 -31
  582. package/dist/icons/md/MdOutlineAttachMoney.js +0 -23
  583. package/dist/icons/md/MdOutlineMoneyOff.js +0 -23
  584. package/dist/icons/md/MdPieChart.js +0 -23
  585. package/dist/icons/md/MdRefresh.js +0 -23
  586. package/dist/icons/md/MdReplay.js +0 -23
  587. package/dist/icons/md/MdSmartphone.js +0 -23
  588. package/dist/icons/pi/PiArrowBendUpRightBold.js +0 -19
  589. package/dist/icons/pi/PiPlugsConnectedFill.js +0 -19
  590. package/dist/icons/pi/PiRectangleDashed.js +0 -19
  591. package/dist/icons/pi/PiShareBold.js +0 -19
  592. package/dist/icons/si/SiAnthropic.js +0 -19
  593. package/dist/icons/si/SiHelm.js +0 -19
  594. package/dist/icons/si/SiKubernetes.js +0 -19
  595. package/dist/icons/tb/TbAlertTriangle.js +0 -35
  596. package/dist/icons/tb/TbAlertTriangleFilled.js +0 -19
  597. package/dist/icons/tb/TbApi.js +0 -40
  598. package/dist/icons/tb/TbBrain.js +0 -50
  599. package/dist/icons/tb/TbBuildingTunnel.js +0 -65
  600. package/dist/icons/tb/TbEdit.js +0 -35
  601. package/dist/icons/tb/TbLayoutSidebar.js +0 -27
  602. package/dist/icons/tb/TbLayoutSidebarLeftCollapse.js +0 -35
  603. package/dist/icons/tb/TbLayoutSidebarRightCollapse.js +0 -35
  604. package/dist/icons/tb/TbUser.js +0 -27
  605. package/dist/icons/tb/TbUserOff.js +0 -35
  606. package/dist/icons/tb/TbWorldShare.js +0 -55
  607. package/dist/icons/tb/TbWorldWww.js +0 -65
  608. package/dist/icons/ti/TiArrowSortedDown.js +0 -20
  609. package/dist/icons/ti/TiArrowSortedUp.js +0 -20
  610. package/dist/icons/ti/TiArrowUnsorted.js +0 -20
  611. package/dist/icons/ti/TiCancel.js +0 -20
  612. package/dist/icons/vsc/VscChromeMinimize.js +0 -19
  613. package/dist/icons/vsc/VscJson.js +0 -19
  614. package/dist/icons/vsc/VscLayoutSidebarLeft.js +0 -19
  615. package/dist/icons/vsc/VscPass.js +0 -27
  616. package/dist/icons/vsc/VscSplitHorizontal.js +0 -19
  617. package/dist/icons/vsc/VscTerminalPowershell.js +0 -19
  618. package/dist/list/ListPager.d.ts +0 -14
  619. package/dist/list/ListPager.js +0 -62
  620. package/dist/list/textEntry.d.ts +0 -2
  621. package/dist/list/textEntry.js +0 -10
  622. /package/dist/{ai/ui/codeBreaks.d.ts → components/markdownCodeBreaks.d.ts} +0 -0
@@ -1,20 +1,19 @@
1
- import { FaRegFileImage } from "../../icons/fa/FaRegFileImage.js";
2
- import { FaSearch } from "../../icons/fa/FaSearch.js";
3
- import { FaUsers } from "../../icons/fa/FaUsers.js";
4
- import { TbEdit } from "../../icons/tb/TbEdit.js";
5
- import { useRelativeTime } from "../../components/relativeTime.js";
1
+ import { cx } from "../../cx.js";
2
+ import { ImageIcon, NewChatIcon, UsersIcon } from "../../icons.js";
3
+ import { EmptyState } from "../../components/EmptyState.js";
4
+ import { RelativeTime } from "../../components/relativeTime.js";
5
+ import { SearchInput } from "../../components/SearchInput.js";
6
6
  import { useChatConfig } from "../core/config.js";
7
7
  import { useChat } from "../core/ChatProvider.js";
8
8
  import { ManageProvidersLink } from "./ComposerChrome.js";
9
9
  import { FOCUS_SIDEBAR_SEARCH_EVENT } from "../core/events.js";
10
- import { SidebarPlaceholder, SidebarRow, SidebarRowTitle } from "../ui/sidebar.js";
10
+ import { SidebarRow, SidebarRowTitle } from "../ui/sidebar.js";
11
11
  import { ConversationSidebar } from "../ui/ConversationSidebar.js";
12
12
  import { groupConversationsByDate, useConversationActions } from "./conversationActions.js";
13
- import { clsx } from "clsx";
14
13
  import { Fragment, jsx, jsxs } from "react/jsx-runtime";
15
14
  import { useEffect, useMemo, useRef, useState } from "react";
16
15
  //#region src/ai/components/ChatSidebar.tsx
17
- function ConversationRow({ conv, isCurrent, updated, menuItems, openMenu, onOpen }) {
16
+ function ConversationRow({ conv, isCurrent, menuItems, openMenu, onOpen }) {
18
17
  const { LinkComponent, strings } = useChatConfig();
19
18
  const t = strings.sidebar;
20
19
  return /* @__PURE__ */ jsx(SidebarRow, {
@@ -28,11 +27,14 @@ function ConversationRow({ conv, isCurrent, updated, menuItems, openMenu, onOpen
28
27
  },
29
28
  className: "flex min-w-0 flex-1 items-center gap-1.5 py-1 text-left",
30
29
  onClick: onOpen,
31
- children: [conv.isOwner === false && /* @__PURE__ */ jsx(FaUsers, {
30
+ children: [conv.isOwner === false && /* @__PURE__ */ jsx(UsersIcon, {
32
31
  className: "h-3 w-3 shrink-0 theme-muted-text",
33
32
  title: t.sharedWithYou
34
33
  }), /* @__PURE__ */ jsx(SidebarRowTitle, {
35
- time: updated,
34
+ time: /* @__PURE__ */ jsx(RelativeTime, {
35
+ value: conv.updatedAt ?? conv.createdAt,
36
+ format: "compact"
37
+ }),
36
38
  children: conv.title || t.untitled
37
39
  })]
38
40
  })
@@ -44,7 +46,6 @@ function ChatSidebar({ actions = true, top }) {
44
46
  const { adapter, navigation, activeConversationId, conversations, sidebar, sidebarPresentation, drawerOpen, setSidebar, setDrawerOpen, toggleSidebar, isLoading, loadConversations, clearCurrentConversation } = useChat();
45
47
  const attachmentsAvailable = !!adapter.attachments;
46
48
  const { menuItems, openMenu, overlays } = useConversationActions();
47
- const { compact } = useRelativeTime();
48
49
  const drawer = sidebarPresentation === "drawer";
49
50
  const sidebarCollapsed = !drawer && sidebar !== "expanded";
50
51
  const closeDrawer = () => setDrawerOpen(false);
@@ -107,13 +108,15 @@ function ChatSidebar({ actions = true, top }) {
107
108
  renderRow: (conv) => /* @__PURE__ */ jsx(ConversationRow, {
108
109
  conv,
109
110
  isCurrent: activeConversationId === conv.id,
110
- updated: compact(conv.updatedAt ?? conv.createdAt),
111
111
  menuItems: menuItems(conv),
112
112
  openMenu,
113
113
  onOpen: closeDrawer
114
114
  }),
115
115
  loading: isLoading,
116
- placeholder: /* @__PURE__ */ jsx(SidebarPlaceholder, { children: conversations.length === 0 ? tSidebar.noConversations : strings.chrome.noMatches }),
116
+ placeholder: /* @__PURE__ */ jsx(EmptyState, {
117
+ variant: "bare",
118
+ title: conversations.length === 0 ? tSidebar.noConversations : strings.chrome.noMatches
119
+ }),
117
120
  cycle: {
118
121
  current: filteredConversations.find((conv) => conv.id === activeConversationId),
119
122
  onSelect: (conv) => navigation.toConversation(conv.id)
@@ -125,8 +128,8 @@ function ChatSidebar({ actions = true, top }) {
125
128
  onClick: handleNewChat,
126
129
  className: "flex items-center h-9 px-2 gap-3 rounded-lg font-medium transition-colors hover:chat-tint",
127
130
  title: tSidebar.newChat,
128
- children: [/* @__PURE__ */ jsx(TbEdit, { className: clsx("flex-shrink-0", "w-4 h-4") }), /* @__PURE__ */ jsx("span", {
129
- className: clsx("text-sm transition-opacity duration-200", sidebarCollapsed ? "opacity-0 w-0 overflow-hidden" : "opacity-100"),
131
+ children: [/* @__PURE__ */ jsx(NewChatIcon, { className: cx("flex-shrink-0", "w-4 h-4") }), /* @__PURE__ */ jsx("span", {
132
+ className: cx("text-sm transition-opacity duration-200", sidebarCollapsed ? "opacity-0 w-0 overflow-hidden" : "opacity-100"),
130
133
  children: tSidebar.newChat
131
134
  })]
132
135
  }), attachmentsAvailable && /* @__PURE__ */ jsxs(LinkComponent, {
@@ -134,30 +137,19 @@ function ChatSidebar({ actions = true, top }) {
134
137
  className: "flex items-center h-9 px-2 gap-3 rounded-lg transition-colors hover:chat-tint",
135
138
  title: tSidebar.attachments,
136
139
  onClick: closeDrawer,
137
- children: [/* @__PURE__ */ jsx(FaRegFileImage, { className: "flex-shrink-0 w-4 h-4" }), /* @__PURE__ */ jsx("span", {
138
- className: clsx("text-sm transition-opacity duration-200", sidebarCollapsed ? "opacity-0 w-0 overflow-hidden" : "opacity-100"),
140
+ children: [/* @__PURE__ */ jsx(ImageIcon, { className: "flex-shrink-0 w-4 h-4" }), /* @__PURE__ */ jsx("span", {
141
+ className: cx("text-sm transition-opacity duration-200", sidebarCollapsed ? "opacity-0 w-0 overflow-hidden" : "opacity-100"),
139
142
  children: tSidebar.attachments
140
143
  })]
141
144
  })]
142
145
  }), !sidebarCollapsed && conversations.length > 0 && /* @__PURE__ */ jsx("div", {
143
146
  className: "px-2 pb-2",
144
- children: /* @__PURE__ */ jsxs("div", {
145
- className: "relative",
146
- children: [/* @__PURE__ */ jsx(FaSearch, { className: "absolute left-2.5 top-1/2 -translate-y-1/2 w-3.5 h-3.5 theme-muted-text pointer-events-none" }), /* @__PURE__ */ jsx("input", {
147
- ref: searchInputRef,
148
- type: "text",
149
- value: search,
150
- onChange: (e) => setSearch(e.target.value),
151
- onKeyDown: (e) => {
152
- if (e.key === "Escape" && search) {
153
- e.stopPropagation();
154
- setSearch("");
155
- }
156
- },
157
- placeholder: strings.chrome.searchPlaceholder,
158
- "aria-label": strings.chrome.searchLabel,
159
- className: "w-full h-9 pl-8 pr-2 text-sm rounded-lg border border-transparent chat-tint theme-text placeholder:theme-muted-text transition-colors focus:outline-none focus:border-(--theme-border) focus:bg-(--theme-panel-bg)"
160
- })]
147
+ children: /* @__PURE__ */ jsx(SearchInput, {
148
+ ref: searchInputRef,
149
+ value: search,
150
+ onValueChange: setSearch,
151
+ label: strings.chrome.searchLabel,
152
+ placeholder: strings.chrome.searchPlaceholder
161
153
  })
162
154
  })] })] }),
163
155
  footer: /* @__PURE__ */ jsx(ManageProvidersLink, {})
@@ -12,7 +12,7 @@ function ChatStage({ heading, subheading, children }) {
12
12
  children: [heading && /* @__PURE__ */ jsxs("div", {
13
13
  className: "mx-auto mb-6 max-w-[var(--chat-column,50rem)] px-8 text-center",
14
14
  children: [/* @__PURE__ */ jsx("h1", {
15
- className: "text-[1.75rem] leading-tight font-medium tracking-[-0.02em] text-balance text-(--theme-panel)",
15
+ className: "text-[1.75rem] leading-tight font-medium tracking-[-0.02em] text-balance text-(--theme-app)",
16
16
  children: heading
17
17
  }), subheading && /* @__PURE__ */ jsx("p", {
18
18
  className: "mt-2 text-sm theme-muted-text",
@@ -1,5 +1,4 @@
1
- import { IoSettingsOutline } from "../../icons/io5/IoSettingsOutline.js";
2
- import { PiPlugsConnectedFill } from "../../icons/pi/PiPlugsConnectedFill.js";
1
+ import { ConnectIcon, SettingsIcon } from "../../icons.js";
3
2
  import { useChatConfig } from "../core/config.js";
4
3
  import AllocationSelector from "./AllocationSelector.js";
5
4
  import ModelSelector from "./ModelSelector.js";
@@ -55,7 +54,7 @@ function ManageProvidersLink() {
55
54
  },
56
55
  className: "flex min-w-0 items-center gap-2 rounded-md px-2 py-1.5 text-xs theme-muted-text transition-colors hover:chat-tint hover:theme-text",
57
56
  title: strings.sidebar.manageProviders,
58
- children: [/* @__PURE__ */ jsx(IoSettingsOutline, { className: "h-3.5 w-3.5 shrink-0" }), /* @__PURE__ */ jsx("span", {
57
+ children: [/* @__PURE__ */ jsx(SettingsIcon, { className: "h-3.5 w-3.5 shrink-0" }), /* @__PURE__ */ jsx("span", {
59
58
  className: "truncate",
60
59
  children: strings.sidebar.manageProviders
61
60
  })]
@@ -70,7 +69,7 @@ function ConnectToolsLink() {
70
69
  href: extraLinks.connectTools
71
70
  },
72
71
  className: "flex items-center gap-1 rounded-md px-1.5 py-0.5 text-[11px] theme-muted-text transition-colors hover:theme-muted-panel hover:theme-text",
73
- children: [/* @__PURE__ */ jsx(PiPlugsConnectedFill, { className: "h-3 w-3" }), strings.sidebar.connectTools]
72
+ children: [/* @__PURE__ */ jsx(ConnectIcon, { className: "h-3 w-3" }), strings.sidebar.connectTools]
74
73
  });
75
74
  }
76
75
  //#endregion
@@ -1,17 +1,19 @@
1
- import { clsx } from "clsx";
1
+ import { cx } from "../../cx.js";
2
+ import { useChatConfig } from "../core/config.js";
2
3
  import { jsx, jsxs } from "react/jsx-runtime";
3
4
  //#region src/ai/components/DragOverlay.tsx
4
5
  function DragOverlay({ className }) {
6
+ const t = useChatConfig().strings.attachmentUpload;
5
7
  return /* @__PURE__ */ jsx("div", {
6
- className: clsx("absolute inset-0 z-50 flex items-center justify-center bg-blue-500/10 border-2 border-dashed border-blue-500 backdrop-blur-sm pointer-events-none", className),
8
+ className: cx("absolute inset-0 z-50 flex items-center justify-center bg-blue-500/10 border-2 border-dashed border-blue-500 backdrop-blur-sm pointer-events-none", className),
7
9
  children: /* @__PURE__ */ jsxs("div", {
8
10
  className: "text-center",
9
11
  children: [/* @__PURE__ */ jsx("p", {
10
12
  className: "text-lg font-medium text-blue-600",
11
- children: "Drop files here"
13
+ children: t.dropFilesHere
12
14
  }), /* @__PURE__ */ jsx("p", {
13
15
  className: "text-sm text-blue-500/80",
14
- children: "Release to upload"
16
+ children: t.releaseToUpload
15
17
  })]
16
18
  })
17
19
  });
@@ -1,13 +1,11 @@
1
- import { FaChevronDown } from "../../icons/fa/FaChevronDown.js";
2
- import { FaCloud } from "../../icons/fa/FaCloud.js";
3
- import { FaExclamationTriangle } from "../../icons/fa/FaExclamationTriangle.js";
4
- import { FaUndoAlt } from "../../icons/fa/FaUndoAlt.js";
1
+ import { cx } from "../../cx.js";
2
+ import { ChevronDownIcon, CloudIcon, RetryIcon, WarningIcon } from "../../icons.js";
3
+ import { useStrings } from "../../components/Provider.js";
5
4
  import { Combobox } from "../../components/Combobox.js";
6
5
  import { useChatConfig } from "../core/config.js";
7
6
  import { issueDetail, issueLabel, providerIssueFor } from "../core/providerIssues.js";
8
7
  import { useChat } from "../core/ChatProvider.js";
9
8
  import { chipClassName } from "../ui/chip.js";
10
- import { clsx } from "clsx";
11
9
  import { Fragment, jsx, jsxs } from "react/jsx-runtime";
12
10
  import { useMemo } from "react";
13
11
  //#region src/ai/components/ModelSelector.tsx
@@ -23,7 +21,7 @@ function CspIcon({ cspKind, className }) {
23
21
  const { slots } = useChatConfig();
24
22
  const custom = slots.providerIcon?.(cspKind, className);
25
23
  if (custom) return /* @__PURE__ */ jsx(Fragment, { children: custom });
26
- return /* @__PURE__ */ jsx(FaCloud, { className: clsx("text-purple-500", className) });
24
+ return /* @__PURE__ */ jsx(CloudIcon, { className: cx("text-purple-500", className) });
27
25
  }
28
26
  function getProviderKeyFromModelId(modelId) {
29
27
  const idx = modelId.indexOf("/");
@@ -55,13 +53,14 @@ function groupModelsByProvider(models) {
55
53
  function ModelSelector({ targetSession }) {
56
54
  const { providers, models, unreachableSessions, providerIssues, selectedProvider, setSelectedProvider, isLoadingModels, hasLoadedModels, modelsError, refreshModels, currentUser } = useChat();
57
55
  const { strings } = useChatConfig();
56
+ const { common } = useStrings();
58
57
  const t = strings.modelPicker;
59
58
  const targetSessionFound = !!targetSession && models.some((m) => m.id.startsWith(`session:${targetSession}/`));
60
59
  const targetSessionStatus = !targetSession ? null : isLoadingModels ? "connecting" : hasLoadedModels && !targetSessionFound ? "offline" : null;
61
60
  const groups = useMemo(() => {
62
61
  const status = (label, description) => ({
63
62
  label,
64
- icon: /* @__PURE__ */ jsx(FaCloud, { className: "h-3 w-3 text-amber-500" }),
63
+ icon: /* @__PURE__ */ jsx(CloudIcon, { className: "h-3 w-3 text-amber-500" }),
65
64
  description,
66
65
  items: []
67
66
  });
@@ -106,20 +105,20 @@ function ModelSelector({ targetSession }) {
106
105
  t
107
106
  ]);
108
107
  if (isLoadingModels && models.length === 0 && !targetSession) return /* @__PURE__ */ jsx("span", {
109
- className: clsx(chipClassName, "cursor-default animate-pulse"),
108
+ className: cx(chipClassName, "cursor-default animate-pulse"),
110
109
  children: t.loading
111
110
  });
112
111
  if (modelsError && models.length === 0) return /* @__PURE__ */ jsxs("span", {
113
- className: clsx(chipClassName, "cursor-default text-(--theme-error)"),
112
+ className: cx(chipClassName, "cursor-default text-(--theme-error)"),
114
113
  children: [t.failed, /* @__PURE__ */ jsxs("button", {
115
114
  type: "button",
116
115
  onClick: () => refreshModels(),
117
- className: "flex items-center gap-1 text-xs text-(--theme-element) hover:underline",
118
- children: [/* @__PURE__ */ jsx(FaUndoAlt, { className: "h-2.5 w-2.5" }), t.retry]
116
+ className: "flex items-center gap-1 text-xs text-(--theme-accent) hover:underline",
117
+ children: [/* @__PURE__ */ jsx(RetryIcon, { className: "h-2.5 w-2.5" }), common.retry]
119
118
  })]
120
119
  });
121
120
  if (groups.length === 0 && hasLoadedModels) return /* @__PURE__ */ jsx("span", {
122
- className: clsx(chipClassName, "cursor-default"),
121
+ className: cx(chipClassName, "cursor-default"),
123
122
  children: t.none
124
123
  });
125
124
  const selected = models.find((m) => m.id === selectedProvider);
@@ -144,11 +143,11 @@ function ModelSelector({ targetSession }) {
144
143
  className: "max-w-[45%] shrink-0 truncate text-xs",
145
144
  children: selected.provider
146
145
  }),
147
- issue && /* @__PURE__ */ jsx(FaExclamationTriangle, { className: "h-3.5 w-3.5 shrink-0 text-amber-500" })
146
+ issue && /* @__PURE__ */ jsx(WarningIcon, { className: "h-3.5 w-3.5 shrink-0 text-amber-500" })
148
147
  ] }) : /* @__PURE__ */ jsx("span", {
149
- className: clsx("truncate", targetSessionStatus === "connecting" && "animate-pulse"),
148
+ className: cx("truncate", targetSessionStatus === "connecting" && "animate-pulse"),
150
149
  children: targetSessionStatus === "connecting" ? t.connecting : t.select
151
- }), /* @__PURE__ */ jsx(FaChevronDown, { className: "h-3 w-3 shrink-0" })]
150
+ }), /* @__PURE__ */ jsx(ChevronDownIcon, { className: "h-3 w-3 shrink-0" })]
152
151
  })
153
152
  });
154
153
  }
@@ -1,42 +1,46 @@
1
- import { FiFile } from "../../icons/fi/FiFile.js";
2
- import { FiX } from "../../icons/fi/FiX.js";
3
- import { ImSpinner5 } from "../../icons/im/ImSpinner5.js";
1
+ import { cx } from "../../cx.js";
2
+ import { FileIcon, RemoveIcon } from "../../icons.js";
3
+ import { Loader } from "../../components/Loader.js";
4
+ import { formatBytes } from "../../format.js";
4
5
  import { useChatConfig } from "../core/config.js";
5
- import { formatFileSize } from "../utils.js";
6
6
  import Markdown from "../ui/Markdown.js";
7
7
  import { fencePaste } from "../core/pasteLanguage.js";
8
8
  import { splitPastes } from "../core/pastes.js";
9
- import { clsx } from "clsx";
10
9
  import { Fragment, jsx, jsxs } from "react/jsx-runtime";
11
10
  import { Fragment as Fragment$1 } from "react";
12
11
  //#region src/ai/components/PastedText.tsx
13
12
  /** A paste sent, or about to be sent, as its saved file. */
14
13
  function PasteFileCard({ id, lines, bytes, saving = false, error, onRemove }) {
15
14
  const t = useChatConfig().strings.paste;
16
- const detail = error ?? (saving ? t.saving : `${t.lines(lines)} · ${formatFileSize(bytes)}`);
15
+ const detail = error ?? (saving ? t.saving : `${t.lines(lines)} · ${formatBytes(bytes)}`);
17
16
  return /* @__PURE__ */ jsxs("div", {
18
17
  "data-testid": "paste-file-card",
19
- className: clsx("inline-flex max-w-full items-center gap-2.5 rounded-xl px-3 py-2 align-top whitespace-normal", "bg-(--theme-panel-bg)", error ? "border border-red-500" : "chat-hairline"),
18
+ className: cx("inline-flex max-w-full items-center gap-2.5 rounded-xl px-3 py-2 align-top whitespace-normal", "bg-(--theme-panel-bg)", error ? "border border-red-500" : "chat-hairline"),
20
19
  children: [
21
- /* @__PURE__ */ jsx(FiFile, { className: "h-5 w-5 flex-shrink-0 theme-muted-text" }),
20
+ /* @__PURE__ */ jsx(FileIcon, { className: "h-5 w-5 flex-shrink-0 theme-muted-text" }),
22
21
  /* @__PURE__ */ jsxs("div", {
23
22
  className: "min-w-0 text-left leading-tight",
24
23
  children: [/* @__PURE__ */ jsx("div", {
25
24
  className: "truncate text-sm font-medium theme-text",
26
25
  children: id ? `paste-${id}.txt` : t.title
27
26
  }), /* @__PURE__ */ jsx("div", {
28
- className: clsx("truncate text-xs", error ? "text-red-500" : "theme-muted-text"),
27
+ className: cx("truncate text-xs", error ? "text-red-500" : "theme-muted-text"),
29
28
  children: detail
30
29
  })]
31
30
  }),
32
- saving && /* @__PURE__ */ jsx(ImSpinner5, { className: "h-3.5 w-3.5 flex-shrink-0 animate-spin theme-muted-text" }),
31
+ saving && /* @__PURE__ */ jsx(Loader, {
32
+ inline: true,
33
+ decorative: true,
34
+ size: 14,
35
+ color: "var(--theme-muted-text-color)"
36
+ }),
33
37
  onRemove && /* @__PURE__ */ jsx("button", {
34
38
  type: "button",
35
39
  onClick: onRemove,
36
40
  "aria-label": t.remove,
37
41
  title: t.remove,
38
42
  className: "flex-shrink-0 rounded p-0.5 theme-muted-text hover:theme-text",
39
- children: /* @__PURE__ */ jsx(FiX, { className: "h-3.5 w-3.5" })
43
+ children: /* @__PURE__ */ jsx(RemoveIcon, { className: "h-3.5 w-3.5" })
40
44
  })
41
45
  ]
42
46
  });
@@ -48,7 +52,7 @@ function UserMessageText({ content, pastes }) {
48
52
  if (!pastes?.length) return /* @__PURE__ */ jsx(Fragment, { children: content });
49
53
  const segments = splitPastes(content, pastes);
50
54
  const shows = (seg) => typeof seg !== "string" || seg.trim() !== "";
51
- const blockSpacing = (i) => clsx(segments.slice(0, i).some(shows) ? "mt-2.5" : "mt-0", segments.slice(i + 1).some(shows) ? "mb-2.5" : "mb-0");
55
+ const blockSpacing = (i) => cx(segments.slice(0, i).some(shows) ? "mt-2.5" : "mt-0", segments.slice(i + 1).some(shows) ? "mb-2.5" : "mb-0");
52
56
  return /* @__PURE__ */ jsx(Fragment, { children: segments.map((segment, i) => {
53
57
  if (typeof segment === "string") {
54
58
  let text = segment;
@@ -57,11 +61,11 @@ function UserMessageText({ content, pastes }) {
57
61
  return text ? /* @__PURE__ */ jsx(Fragment$1, { children: text }, i) : null;
58
62
  }
59
63
  if (segment.inline && segment.text !== void 0) return /* @__PURE__ */ jsx("span", {
60
- className: clsx("chat-paste-code block", blockSpacing(i)),
64
+ className: cx("chat-paste-code block", blockSpacing(i)),
61
65
  children: /* @__PURE__ */ jsx(Markdown, { children: fencePaste(segment.text) })
62
66
  }, i);
63
67
  return /* @__PURE__ */ jsx("span", {
64
- className: clsx("flex [&>*]:flex-1", blockSpacing(i)),
68
+ className: cx("flex [&>*]:flex-1", blockSpacing(i)),
65
69
  children: /* @__PURE__ */ jsx(PasteFileCard, {
66
70
  id: segment.id,
67
71
  lines: segment.lines,
@@ -1,5 +1,4 @@
1
- import { FaExclamationTriangle } from "../../icons/fa/FaExclamationTriangle.js";
2
- import { IoSettingsOutline } from "../../icons/io5/IoSettingsOutline.js";
1
+ import { SettingsIcon, WarningIcon } from "../../icons.js";
3
2
  import { useChatConfig } from "../core/config.js";
4
3
  import { issueDetail, providerIssueFor } from "../core/providerIssues.js";
5
4
  import { useChat } from "../core/ChatProvider.js";
@@ -22,7 +21,7 @@ function ProviderIssueBanner() {
22
21
  return /* @__PURE__ */ jsxs("div", {
23
22
  className: "mx-4 mt-2 flex items-start gap-3 p-3 rounded-lg bg-amber-500/10 border border-amber-500/20",
24
23
  children: [
25
- /* @__PURE__ */ jsx(FaExclamationTriangle, { className: "w-4 h-4 text-amber-500 shrink-0 mt-0.5" }),
24
+ /* @__PURE__ */ jsx(WarningIcon, { className: "w-4 h-4 text-amber-500 shrink-0 mt-0.5" }),
26
25
  /* @__PURE__ */ jsxs("div", {
27
26
  className: "flex-1 min-w-0",
28
27
  children: [/* @__PURE__ */ jsx("p", {
@@ -39,7 +38,7 @@ function ProviderIssueBanner() {
39
38
  href: settingsHref
40
39
  },
41
40
  className: "flex shrink-0 items-center gap-1 rounded-md px-2 py-1 text-xs font-medium text-amber-700 transition-colors hover:bg-amber-500/10",
42
- children: [/* @__PURE__ */ jsx(IoSettingsOutline, { className: "h-3.5 w-3.5" }), strings.modelPicker.manageProvider]
41
+ children: [/* @__PURE__ */ jsx(SettingsIcon, { className: "h-3.5 w-3.5" }), strings.modelPicker.manageProvider]
43
42
  })
44
43
  ]
45
44
  });
@@ -1,12 +1,18 @@
1
1
  import type { ReactNode } from 'react';
2
- /** The line a turn's reasoning folds under. It opens the reasoning in place,
3
- * above the answer it led to, rather than in a panel the eye has to cross
4
- * the page to read. */
5
- export declare function ReasoningToggle({ open, onToggle, shimmer, children, }: {
6
- open: boolean;
7
- onToggle: () => void;
2
+ /** A turn's reasoning, folded under a line such as "Thought for 5s". It opens
3
+ * in place, above the answer it led to, rather than in a panel the eye has to
4
+ * cross the page to read; with `onOpenPanel` the host shows it elsewhere
5
+ * instead. */
6
+ export declare function Reasoning({ label, shimmer, open, onOpenChange, onOpenPanel, preview, children, }: {
7
+ label: ReactNode;
8
8
  /** While the model is still thinking the label shimmers. */
9
9
  shimmer?: boolean;
10
+ open: boolean;
11
+ onOpenChange: (open: boolean) => void;
12
+ /** Shows the reasoning in the host's own panel in place of opening it here. */
13
+ onOpenPanel?: (() => void) | undefined;
14
+ /** Shown under the folded line, such as the latest lines while it streams. */
15
+ preview?: ReactNode;
10
16
  children: ReactNode;
11
17
  }): import("react").JSX.Element;
12
18
  /** The reasoning itself: smaller and quieter than the answer, hung off a
@@ -1,29 +1,42 @@
1
- import { LuChevronRight } from "../../icons/lu/LuChevronRight.js";
2
- import { clsx } from "clsx";
3
- import { jsx, jsxs } from "react/jsx-runtime";
1
+ import { cx } from "../../cx.js";
2
+ import { ChevronRightIcon } from "../../icons.js";
3
+ import { Disclosure } from "../../components/Disclosure.js";
4
+ import { Fragment, jsx, jsxs } from "react/jsx-runtime";
4
5
  //#region src/ai/components/Reasoning.tsx
5
- /** The line a turn's reasoning folds under. It opens the reasoning in place,
6
- * above the answer it led to, rather than in a panel the eye has to cross
7
- * the page to read. */
8
- function ReasoningToggle({ open, onToggle, shimmer = false, children }) {
9
- return /* @__PURE__ */ jsxs("button", {
10
- type: "button",
11
- onClick: onToggle,
12
- "aria-expanded": open,
13
- className: "group/reasoning -ml-1 flex items-center gap-x-1 rounded-md px-1 py-0.5 text-sm theme-muted-text transition-colors hover:theme-text",
14
- children: [/* @__PURE__ */ jsx("span", {
15
- className: clsx(shimmer && "animate-shimmer text-shimmer"),
16
- children
17
- }), /* @__PURE__ */ jsx(LuChevronRight, { className: clsx("h-3.5 w-3.5 transition-transform duration-200 motion-reduce:transition-none", open && "rotate-90") })]
6
+ var toggleClasses = "-ml-1 rounded-md px-1 py-0.5 text-sm theme-muted-text transition-colors hover:theme-text";
7
+ /** A turn's reasoning, folded under a line such as "Thought for 5s". It opens
8
+ * in place, above the answer it led to, rather than in a panel the eye has to
9
+ * cross the page to read; with `onOpenPanel` the host shows it elsewhere
10
+ * instead. */
11
+ function Reasoning({ label, shimmer = false, open, onOpenChange, onOpenPanel, preview, children }) {
12
+ const shown = /* @__PURE__ */ jsx("span", {
13
+ className: cx(shimmer && "animate-shimmer text-shimmer"),
14
+ children: label
18
15
  });
16
+ if (onOpenPanel) return /* @__PURE__ */ jsxs(Fragment, { children: [/* @__PURE__ */ jsxs("button", {
17
+ type: "button",
18
+ onClick: onOpenPanel,
19
+ className: cx("flex items-center gap-1", toggleClasses),
20
+ children: [shown, /* @__PURE__ */ jsx(ChevronRightIcon, {
21
+ "aria-hidden": "true",
22
+ className: "h-3.5 w-3.5"
23
+ })]
24
+ }), preview] });
25
+ return /* @__PURE__ */ jsxs(Fragment, { children: [/* @__PURE__ */ jsx(Disclosure, {
26
+ summary: shown,
27
+ open,
28
+ onOpenChange,
29
+ summaryClassName: toggleClasses,
30
+ children: /* @__PURE__ */ jsx(ReasoningBody, { children })
31
+ }), !open && preview] });
19
32
  }
20
33
  /** The reasoning itself: smaller and quieter than the answer, hung off a
21
34
  * hairline of the accent so it reads as the assistant's aside. */
22
35
  function ReasoningBody({ className, children }) {
23
36
  return /* @__PURE__ */ jsx("div", {
24
- className: clsx("chat-reasoning-body ml-1 mt-1.5 mb-3 pl-4 text-sm leading-relaxed theme-muted-text", className),
37
+ className: cx("chat-reasoning-body ml-1 mt-1.5 mb-3 pl-4 text-sm leading-relaxed theme-muted-text", className),
25
38
  children
26
39
  });
27
40
  }
28
41
  //#endregion
29
- export { ReasoningBody, ReasoningToggle };
42
+ export { Reasoning, ReasoningBody };
@@ -1,9 +1,11 @@
1
- import { BiSolidTrashAlt } from "../../icons/bi/BiSolidTrashAlt.js";
2
- import { PiShareBold } from "../../icons/pi/PiShareBold.js";
1
+ import { ShareIcon, TrashIcon } from "../../icons.js";
2
+ import { Loader } from "../../components/Loader.js";
3
+ import { toast } from "../../components/Toast.js";
3
4
  import { Tooltip } from "../../components/Tooltip.js";
5
+ import { useStrings } from "../../components/Provider.js";
6
+ import { Checkbox } from "../../components/Checkbox.js";
4
7
  import { Combobox } from "../../components/Combobox.js";
5
8
  import { ConfirmModal } from "../../components/ConfirmModal.js";
6
- import Loader from "../../components/Loader.js";
7
9
  import { Select } from "../../components/Select.js";
8
10
  import { useChatConfig } from "../core/config.js";
9
11
  import { useChat } from "../core/ChatProvider.js";
@@ -15,8 +17,9 @@ function isTeamPermission(p) {
15
17
  }
16
18
  function ShareDialog({ conversationId, isOpen, onClose }) {
17
19
  const { strings } = useChatConfig();
20
+ const { common } = useStrings();
18
21
  const t = strings.shareConversation;
19
- const { adapter, notify } = useChat();
22
+ const { adapter } = useChat();
20
23
  const sharing = adapter.sharing;
21
24
  const [permissions, setPermissions] = useState([]);
22
25
  const [teams, setTeams] = useState([]);
@@ -47,7 +50,7 @@ function ShareDialog({ conversationId, isOpen, onClose }) {
47
50
  setTeams(await sharing.listGroups());
48
51
  } catch (error) {
49
52
  console.error("Failed to load sharing data:", error);
50
- notify.error(t.loadError);
53
+ toast.error(t.loadError);
51
54
  } finally {
52
55
  setLoading(false);
53
56
  }
@@ -57,7 +60,6 @@ function ShareDialog({ conversationId, isOpen, onClose }) {
57
60
  isOpen,
58
61
  conversationId,
59
62
  sharing,
60
- notify,
61
63
  t.loadError
62
64
  ]);
63
65
  const handleSave = useCallback(() => {
@@ -85,10 +87,10 @@ function ShareDialog({ conversationId, isOpen, onClose }) {
85
87
  }
86
88
  for (const original of originalTeamPerms) if (!currentTeamPerms.find((p) => p.team === original.team) && original.id) await sharing.removePermission(conversationId, original.id);
87
89
  } catch (error) {
88
- notify.error(error instanceof Error ? error.message : String(error));
90
+ toast.error(error instanceof Error ? error.message : String(error));
89
91
  return;
90
92
  }
91
- notify.success(t.saveSuccess);
93
+ toast.success(t.saveSuccess);
92
94
  onClose();
93
95
  });
94
96
  }, [
@@ -100,7 +102,6 @@ function ShareDialog({ conversationId, isOpen, onClose }) {
100
102
  orgCollaborateAccess,
101
103
  originalOrgCollaborateAccess,
102
104
  onClose,
103
- notify,
104
105
  t.saveSuccess
105
106
  ]);
106
107
  const handleAddTeam = useCallback((teamId) => {
@@ -137,8 +138,8 @@ function ShareDialog({ conversationId, isOpen, onClose }) {
137
138
  onClose,
138
139
  align: "center",
139
140
  title: t.title,
140
- confirmLabel: strings.modal.save,
141
- cancelLabel: strings.modal.cancel,
141
+ confirmLabel: common.save,
142
+ cancelLabel: common.cancel,
142
143
  onConfirm: handleSave,
143
144
  confirmDisabled: saving,
144
145
  children: /* @__PURE__ */ jsx("div", {
@@ -147,7 +148,7 @@ function ShareDialog({ conversationId, isOpen, onClose }) {
147
148
  className: "py-4",
148
149
  children: /* @__PURE__ */ jsx(Loader, {
149
150
  size: 24,
150
- text: strings.modal.loading
151
+ label: common.loading
151
152
  })
152
153
  }) : /* @__PURE__ */ jsxs(Fragment, { children: [
153
154
  /* @__PURE__ */ jsxs("div", {
@@ -159,26 +160,22 @@ function ShareDialog({ conversationId, isOpen, onClose }) {
159
160
  className: "space-y-2",
160
161
  children: [/* @__PURE__ */ jsxs("label", {
161
162
  className: "flex items-center gap-2",
162
- children: [/* @__PURE__ */ jsx("input", {
163
- type: "checkbox",
163
+ children: [/* @__PURE__ */ jsx(Checkbox, {
164
164
  checked: orgViewAccess,
165
- onChange: (e) => {
166
- setOrgViewAccess(e.target.checked);
167
- if (!e.target.checked) setOrgCollaborateAccess(false);
168
- },
169
- className: "rounded"
165
+ onCheckedChange: (on) => {
166
+ setOrgViewAccess(on);
167
+ if (!on) setOrgCollaborateAccess(false);
168
+ }
170
169
  }), /* @__PURE__ */ jsx("span", {
171
170
  className: "text-sm",
172
171
  children: t.orgCanView
173
172
  })]
174
173
  }), /* @__PURE__ */ jsxs("label", {
175
174
  className: "flex items-center gap-2 ml-4",
176
- children: [/* @__PURE__ */ jsx("input", {
177
- type: "checkbox",
175
+ children: [/* @__PURE__ */ jsx(Checkbox, {
178
176
  checked: orgCollaborateAccess,
179
- onChange: (e) => setOrgCollaborateAccess(e.target.checked),
180
- disabled: !orgViewAccess,
181
- className: "rounded"
177
+ onCheckedChange: setOrgCollaborateAccess,
178
+ disabled: !orgViewAccess
182
179
  }), /* @__PURE__ */ jsx("span", {
183
180
  className: "text-sm",
184
181
  children: t.allowCollaboration
@@ -213,13 +210,13 @@ function ShareDialog({ conversationId, isOpen, onClose }) {
213
210
  "aria-label": perm.teamName || perm.team
214
211
  })
215
212
  }), /* @__PURE__ */ jsx(Tooltip, {
216
- content: t.remove,
213
+ content: common.remove,
217
214
  children: /* @__PURE__ */ jsx("button", {
218
215
  type: "button",
219
216
  onClick: () => handleRemoveTeam(perm.team),
220
217
  className: "p-1 rounded hover:bg-red-500/10",
221
- "aria-label": `${t.remove} ${perm.teamName || perm.team}`,
222
- children: /* @__PURE__ */ jsx(BiSolidTrashAlt, { className: "w-3 h-3 text-red-500" })
218
+ "aria-label": `${common.remove} ${perm.teamName || perm.team}`,
219
+ children: /* @__PURE__ */ jsx(TrashIcon, { className: "w-3 h-3 text-red-500" })
223
220
  })
224
221
  })]
225
222
  })]
@@ -261,7 +258,7 @@ function ShareButton({ conversationId, disabled = false }) {
261
258
  disabled,
262
259
  className: "flex items-center gap-1 rounded-md px-1.5 py-0.5 text-[11px] theme-muted-text transition-colors hover:theme-muted-panel hover:theme-text disabled:opacity-50",
263
260
  title: strings.shareConversation.shareButton,
264
- children: [/* @__PURE__ */ jsx(PiShareBold, { className: "h-3 w-3" }), strings.shareConversation.shareButton]
261
+ children: [/* @__PURE__ */ jsx(ShareIcon, { className: "h-3 w-3" }), strings.shareConversation.shareButton]
265
262
  }), /* @__PURE__ */ jsx(ShareDialog, {
266
263
  conversationId,
267
264
  isOpen,
@@ -1,5 +1,5 @@
1
+ import { cx } from "../../cx.js";
1
2
  import { panelClassName, panelItemClassName } from "../../components/floating.js";
2
- import { clsx } from "clsx";
3
3
  import { jsx, jsxs } from "react/jsx-runtime";
4
4
  import { useEffect, useId, useState } from "react";
5
5
  //#region src/ai/components/SlashMenu.tsx
@@ -83,7 +83,7 @@ function SlashMenu({ label, listId, matches, active, onChoose }) {
83
83
  role: "listbox",
84
84
  "aria-label": label,
85
85
  "data-testid": "slash-menu",
86
- className: clsx("absolute bottom-full left-0 right-0 z-20 mb-2 overflow-hidden py-1", panelClassName),
86
+ className: cx("absolute bottom-full left-0 right-0 z-20 mb-2 overflow-hidden py-1", panelClassName),
87
87
  children: matches.map((c, i) => /* @__PURE__ */ jsxs("div", {
88
88
  id: optionId(listId, i),
89
89
  role: "option",
@@ -92,7 +92,7 @@ function SlashMenu({ label, listId, matches, active, onChoose }) {
92
92
  "data-highlighted": i === active || void 0,
93
93
  onMouseDown: (e) => e.preventDefault(),
94
94
  onClick: () => onChoose(c.name),
95
- className: clsx("items-baseline gap-3", panelItemClassName),
95
+ className: cx("items-baseline gap-3", panelItemClassName),
96
96
  children: [/* @__PURE__ */ jsxs("span", {
97
97
  className: "font-mono",
98
98
  children: ["/", c.name]