@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,4 +1,5 @@
1
1
  import { type ComponentProps, type ReactNode } from 'react';
2
+ import { type FieldProps } from '../components/Field.js';
2
3
  import { Textarea } from '../components/Input.js';
3
4
  import type { FieldPatch } from '../editing.js';
4
5
  import { type GraphEditorStrings } from './editorStrings.js';
@@ -48,7 +49,9 @@ export declare function flagValue(checked: boolean, fallback: boolean, original:
48
49
  /** Whether each section of a dialog is open, kept while the dialog is up so switching views keeps it. */
49
50
  export declare const SectionMemory: import("react").Context<Map<string, boolean> | null>;
50
51
  export declare function useSectionMemory(): Map<string, boolean>;
51
- export declare function Section({ title, description, open, alert, children, }: {
52
+ /** A titled part of an editor dialog. It opens as it was last left in this
53
+ * dialog, and opens itself when a problem inside would otherwise be hidden. */
54
+ export declare function DialogSection({ title, description, open, alert, children, }: {
52
55
  title: string;
53
56
  description?: string;
54
57
  /** Whether it starts open; read once, when its dialog first shows it. */
@@ -57,9 +60,6 @@ export declare function Section({ title, description, open, alert, children, }:
57
60
  alert?: boolean;
58
61
  children: ReactNode;
59
62
  }): import("react").JSX.Element;
60
- export declare function FieldError({ message }: {
61
- message: string | undefined;
62
- }): import("react").JSX.Element | null;
63
63
  /** The YAML key a field sets, beside its name; left out where the name already says it. */
64
64
  export declare function KeyHint({ label, yamlKey }: {
65
65
  label: string;
@@ -68,20 +68,20 @@ export declare function KeyHint({ label, yamlKey }: {
68
68
  /** Label props for an Input or Textarea that sets `yamlKey`. */
69
69
  export declare function labelled(label: string, yamlKey: string): {
70
70
  label: string;
71
- labelHint: import("react").JSX.Element;
71
+ hint: import("react").JSX.Element;
72
72
  };
73
- /** A field's name and help text, for controls without their own label; `actions` sit at its right. */
74
- export declare function FieldLabel({ label, yamlKey, description, htmlFor, descriptionId, actions, }: {
73
+ /** A Field for a setting the YAML holds, with the key it sets beside its name. With `id`
74
+ * its label names the one control that takes that id; without, it names its controls as a
75
+ * group, as a list of rows or a set of choices wants. */
76
+ export declare function YamlField({ label, yamlKey, description, actions, error, required, id, children, }: {
75
77
  label: string;
76
78
  yamlKey?: string | undefined;
77
- description: string;
78
- htmlFor?: string;
79
- descriptionId?: string;
79
+ description?: ReactNode;
80
80
  actions?: ReactNode;
81
- }): import("react").JSX.Element;
82
- /** A field's label and description above the editor that sets it. */
83
- export declare function LabelledField({ children, ...label }: ComponentProps<typeof FieldLabel> & {
84
- children: ReactNode;
81
+ error?: ReactNode;
82
+ required?: boolean | undefined;
83
+ id?: string | undefined;
84
+ children: FieldProps['children'];
85
85
  }): import("react").JSX.Element;
86
86
  /**
87
87
  * Switches a field between its own control and a typed expression, where the schema takes one. Its
@@ -91,15 +91,18 @@ export declare function ExpressionToggle({ active, onChange, }: {
91
91
  active: boolean;
92
92
  onChange: (active: boolean) => void;
93
93
  }): import("react").JSX.Element;
94
- export declare function ToggleField({ label, yamlKey, description, checked, onChange, disabled, }: {
94
+ export declare function ToggleField({ label, yamlKey, description, checked, onChange, disabled, error, }: {
95
95
  label: string;
96
96
  yamlKey?: string;
97
97
  description: string;
98
98
  checked: boolean;
99
99
  onChange: (checked: boolean) => void;
100
100
  disabled?: boolean;
101
+ error?: string | undefined;
101
102
  }): import("react").JSX.Element;
102
- export declare function ChoiceButtons<T extends string>({ options, value, onChange, }: {
103
+ /** One of a few choices. A YamlField around it names it; standing alone, `label` does. */
104
+ export declare function ChoiceButtons<T extends string>({ label, options, value, onChange, }: {
105
+ label?: string | undefined;
103
106
  options: {
104
107
  value: T;
105
108
  label: string;
@@ -1,22 +1,20 @@
1
- import { FaPlus } from "../icons/fa/FaPlus.js";
2
- import { IoMdClose } from "../icons/io/IoMdClose.js";
3
- import { LuBraces } from "../icons/lu/LuBraces.js";
4
- import { LuChevronRight } from "../icons/lu/LuChevronRight.js";
1
+ import { AddIcon, ExpressionIcon, RemoveIcon } from "../icons.js";
5
2
  import { withPositionKeys } from "../components/keys.js";
6
3
  import { Tooltip } from "../components/Tooltip.js";
7
4
  import { Button } from "../components/Button.js";
8
- import { ghostButtonClasses, primaryButtonClasses } from "../components/ghostButton.js";
5
+ import { Checkbox } from "../components/Checkbox.js";
9
6
  import { Modal, ModalTitle } from "../components/Modal.js";
10
7
  import { Switch } from "../components/Switch.js";
11
- import { FilterPill } from "../components/FilterPill.js";
8
+ import { ErrorText, Field } from "../components/Field.js";
12
9
  import { IconButton } from "../components/IconButton.js";
13
10
  import { Input, Textarea } from "../components/Input.js";
11
+ import { Section } from "../components/Section.js";
12
+ import { SegmentedControl } from "../components/SegmentedControl.js";
14
13
  import { useGraphEditorStrings } from "./editorStrings.js";
15
14
  import { asRecord } from "./records.js";
16
15
  import { useFieldLint } from "./fieldProblems.js";
17
16
  import { SuggestionInput } from "./SuggestionInput.js";
18
- import { clsx } from "clsx";
19
- import { jsx, jsxs } from "react/jsx-runtime";
17
+ import { Fragment, jsx, jsxs } from "react/jsx-runtime";
20
18
  import { createContext, useContext, useEffect, useId, useLayoutEffect, useRef, useState } from "react";
21
19
  //#region src/graph/editorFields.tsx
22
20
  var EXPRESSION = /^\$\{\{.*\}\}$/;
@@ -149,48 +147,40 @@ var SectionMemory = createContext(null);
149
147
  function useSectionMemory() {
150
148
  return useState(() => /* @__PURE__ */ new Map())[0];
151
149
  }
152
- function Section({ title, description, open = false, alert = false, children }) {
150
+ /** A titled part of an editor dialog. It opens as it was last left in this
151
+ * dialog, and opens itself when a problem inside would otherwise be hidden. */
152
+ function DialogSection({ title, description, open = false, alert = false, children }) {
153
153
  const memory = useContext(SectionMemory);
154
- const [initial] = useState(() => {
155
- const decided = memory?.get(title) ?? open;
156
- memory?.set(title, decided);
157
- return decided;
158
- });
159
- const details = useRef(null);
154
+ const [isOpen, setOpen] = useState(() => memory?.get(title) ?? open);
155
+ useEffect(() => {
156
+ memory?.set(title, isOpen);
157
+ }, [
158
+ memory,
159
+ title,
160
+ isOpen
161
+ ]);
160
162
  useEffect(() => {
161
- if (alert && details.current && !details.current.open) details.current.open = true;
163
+ if (alert) setOpen(true);
162
164
  }, [alert]);
163
- return /* @__PURE__ */ jsxs("details", {
164
- ref: details,
165
- open: initial,
166
- onToggle: (e) => memory?.set(title, e.currentTarget.open),
167
- className: "group border-t theme-border",
168
- children: [/* @__PURE__ */ jsxs("summary", {
169
- className: "flex cursor-pointer select-none list-none items-center gap-1.5 py-2.5 text-sm font-semibold [&::-webkit-details-marker]:hidden",
170
- children: [/* @__PURE__ */ jsx(LuChevronRight, {
171
- "aria-hidden": "true",
172
- className: "h-3.5 w-3.5 shrink-0 theme-muted-text transition-transform group-open:rotate-90 motion-reduce:transition-none"
173
- }), title]
174
- }), /* @__PURE__ */ jsxs("div", {
165
+ return /* @__PURE__ */ jsx(Section, {
166
+ title,
167
+ open: isOpen,
168
+ onOpenChange: setOpen,
169
+ headingLevel: 4,
170
+ children: /* @__PURE__ */ jsxs("div", {
175
171
  className: "flex flex-col gap-3 pb-4",
176
172
  children: [description && /* @__PURE__ */ jsx("div", {
177
173
  className: "text-xs theme-muted-text",
178
174
  children: description
179
175
  }), children]
180
- })]
176
+ })
181
177
  });
182
178
  }
183
- function FieldError({ message }) {
184
- return message ? /* @__PURE__ */ jsx("div", {
185
- className: "text-xs text-(--theme-error)",
186
- children: message
187
- }) : null;
188
- }
189
179
  /** The YAML key a field sets, beside its name; left out where the name already says it. */
190
180
  function KeyHint({ label, yamlKey }) {
191
181
  return label.trim().toLowerCase() === yamlKey.toLowerCase() ? null : /* @__PURE__ */ jsx("code", {
192
182
  "aria-hidden": "true",
193
- className: "font-mono text-xs theme-muted-text",
183
+ className: "font-mono text-xs font-normal theme-muted-text",
194
184
  children: yamlKey
195
185
  });
196
186
  }
@@ -198,49 +188,29 @@ function KeyHint({ label, yamlKey }) {
198
188
  function labelled(label, yamlKey) {
199
189
  return {
200
190
  label,
201
- labelHint: /* @__PURE__ */ jsx(KeyHint, {
191
+ hint: /* @__PURE__ */ jsx(KeyHint, {
202
192
  label,
203
193
  yamlKey
204
194
  })
205
195
  };
206
196
  }
207
- /** A field's name and help text, for controls without their own label; `actions` sit at its right. */
208
- function FieldLabel({ label, yamlKey, description, htmlFor, descriptionId, actions }) {
209
- const nameClass = "text-[0.8125rem] font-medium";
210
- const text = /* @__PURE__ */ jsxs("div", {
211
- className: "flex min-w-0 flex-col",
212
- children: [/* @__PURE__ */ jsxs("div", {
213
- className: "flex flex-wrap items-baseline gap-x-1.5",
214
- children: [htmlFor ? /* @__PURE__ */ jsx("label", {
215
- htmlFor,
216
- className: nameClass,
217
- children: label
218
- }) : /* @__PURE__ */ jsx("span", {
219
- className: nameClass,
220
- children: label
221
- }), yamlKey && /* @__PURE__ */ jsx(KeyHint, {
222
- label,
223
- yamlKey
224
- })]
225
- }), /* @__PURE__ */ jsx("span", {
226
- id: descriptionId,
227
- className: "text-xs theme-muted-text",
228
- children: description
229
- })]
230
- });
231
- return actions ? /* @__PURE__ */ jsxs("div", {
232
- className: "flex items-start justify-between gap-3",
233
- children: [text, /* @__PURE__ */ jsx("div", {
234
- className: "flex shrink-0 items-center gap-1",
235
- children: actions
236
- })]
237
- }) : text;
238
- }
239
- /** A field's label and description above the editor that sets it. */
240
- function LabelledField({ children, ...label }) {
241
- return /* @__PURE__ */ jsxs("div", {
242
- className: "flex flex-col gap-1.5",
243
- children: [/* @__PURE__ */ jsx(FieldLabel, { ...label }), children]
197
+ /** A Field for a setting the YAML holds, with the key it sets beside its name. With `id`
198
+ * its label names the one control that takes that id; without, it names its controls as a
199
+ * group, as a list of rows or a set of choices wants. */
200
+ function YamlField({ label, yamlKey, description, actions, error, required, id, children }) {
201
+ return /* @__PURE__ */ jsx(Field, {
202
+ label,
203
+ hint: yamlKey && /* @__PURE__ */ jsx(KeyHint, {
204
+ label,
205
+ yamlKey
206
+ }),
207
+ description: description || void 0,
208
+ actions,
209
+ error: error || void 0,
210
+ required,
211
+ id,
212
+ group: id === void 0,
213
+ children
244
214
  });
245
215
  }
246
216
  /**
@@ -250,47 +220,46 @@ function LabelledField({ children, ...label }) {
250
220
  function ExpressionToggle({ active, onChange }) {
251
221
  const t = useGraphEditorStrings();
252
222
  return /* @__PURE__ */ jsx(IconButton, {
253
- icon: /* @__PURE__ */ jsx(LuBraces, { className: "h-4 w-4" }),
223
+ icon: /* @__PURE__ */ jsx(ExpressionIcon, {}),
254
224
  label: active ? t.stopExpression : t.useExpression,
255
225
  size: "sm",
256
226
  variant: "ghost",
257
- active,
227
+ "data-selected": active || void 0,
258
228
  onClick: () => onChange(!active)
259
229
  });
260
230
  }
261
- function ToggleField({ label, yamlKey, description, checked, onChange, disabled }) {
262
- return /* @__PURE__ */ jsxs("div", {
263
- className: "flex items-center justify-between gap-3",
264
- children: [/* @__PURE__ */ jsx(FieldLabel, {
265
- label,
266
- yamlKey,
267
- description
268
- }), /* @__PURE__ */ jsx(Switch, {
231
+ function ToggleField({ label, yamlKey, description, checked, onChange, disabled, error }) {
232
+ const id = useId();
233
+ return /* @__PURE__ */ jsx(YamlField, {
234
+ label,
235
+ yamlKey,
236
+ description,
237
+ error,
238
+ id,
239
+ children: (control) => /* @__PURE__ */ jsx(Switch, {
240
+ ...control,
241
+ nativeButton: true,
242
+ render: /* @__PURE__ */ jsx("button", { type: "button" }),
269
243
  checked,
270
244
  onCheckedChange: onChange,
271
- "aria-label": label,
272
245
  ...disabled ? { disabled } : {}
273
- })]
246
+ })
274
247
  });
275
248
  }
276
- function ChoiceButtons({ options, value, onChange }) {
277
- return /* @__PURE__ */ jsx("div", {
278
- className: "flex flex-wrap gap-1",
279
- children: options.map((option) => /* @__PURE__ */ jsx(FilterPill, {
280
- active: value === option.value,
281
- onClick: () => onChange(option.value),
282
- children: option.label
283
- }, option.value))
249
+ /** One of a few choices. A YamlField around it names it; standing alone, `label` does. */
250
+ function ChoiceButtons({ label, options, value, onChange }) {
251
+ return /* @__PURE__ */ jsx(SegmentedControl, {
252
+ label,
253
+ options,
254
+ value,
255
+ onValueChange: onChange
284
256
  });
285
257
  }
286
258
  function AddRowButton({ label, onClick }) {
287
259
  return /* @__PURE__ */ jsx("div", { children: /* @__PURE__ */ jsx(Button, {
288
- type: "button",
289
260
  variant: "ghost",
290
261
  size: "sm",
291
- fullWidth: false,
292
- icon: /* @__PURE__ */ jsx(FaPlus, { className: "h-3 w-3" }),
293
- iconPosition: "left",
262
+ icon: /* @__PURE__ */ jsx(AddIcon, {}),
294
263
  onClick,
295
264
  children: label
296
265
  }) });
@@ -309,9 +278,9 @@ function KeyValueEditor({ rows, onChange, error, valuePlaceholder, keyPlaceholde
309
278
  valueSuggestions,
310
279
  lint
311
280
  }, key)),
312
- /* @__PURE__ */ jsx(FieldError, { message: error }),
281
+ /* @__PURE__ */ jsx(ErrorText, { children: error }),
313
282
  /* @__PURE__ */ jsx(AddRowButton, {
314
- label: addLabel ?? t.addRow,
283
+ label: addLabel ?? t.common.add,
315
284
  onClick: () => onChange([...rows, {
316
285
  key: "",
317
286
  value: ""
@@ -362,15 +331,15 @@ function KeyValueRow({ row, onChange, onRemove, keyPlaceholder, valuePlaceholder
362
331
  })
363
332
  }),
364
333
  /* @__PURE__ */ jsx(IconButton, {
365
- icon: /* @__PURE__ */ jsx(IoMdClose, { className: "h-4 w-4" }),
366
- label: t.removeRow,
334
+ icon: /* @__PURE__ */ jsx(RemoveIcon, {}),
335
+ label: t.common.remove,
367
336
  variant: "ghost",
368
337
  size: "sm",
369
338
  onClick: onRemove
370
339
  })
371
340
  ]
372
341
  }),
373
- /* @__PURE__ */ jsx(FieldError, { message: lint.message }),
342
+ /* @__PURE__ */ jsx(ErrorText, { children: lint.message }),
374
343
  lint.fixes
375
344
  ]
376
345
  });
@@ -399,14 +368,14 @@ function StringListEditor({ label, values, onChange, addLabel, placeholder, erro
399
368
  onValueChange: (next) => onChange(updateAt(values, i, next))
400
369
  })
401
370
  }), /* @__PURE__ */ jsx(IconButton, {
402
- icon: /* @__PURE__ */ jsx(IoMdClose, { className: "h-4 w-4" }),
403
- label: t.removeRow,
371
+ icon: /* @__PURE__ */ jsx(RemoveIcon, {}),
372
+ label: t.common.remove,
404
373
  variant: "ghost",
405
374
  size: "sm",
406
375
  onClick: () => onChange(removeAt(values, i))
407
376
  })]
408
377
  }, key)),
409
- /* @__PURE__ */ jsx(FieldError, { message: error }),
378
+ /* @__PURE__ */ jsx(ErrorText, { children: error }),
410
379
  /* @__PURE__ */ jsx(AddRowButton, {
411
380
  label: addLabel,
412
381
  onClick: () => onChange([...values, ""])
@@ -417,24 +386,19 @@ function StringListEditor({ label, values, onChange, addLabel, placeholder, erro
417
386
  function SuggestedInput({ label, yamlKey, description, value, onChange, suggestions, error, placeholder }) {
418
387
  const id = useId();
419
388
  const lint = useFieldLint(yamlKey, id, value, onChange);
420
- return /* @__PURE__ */ jsxs(LabelledField, {
389
+ return /* @__PURE__ */ jsx(YamlField, {
421
390
  label,
422
391
  yamlKey,
423
- description: description ?? "",
424
- htmlFor: id,
425
- ...description ? { descriptionId: `${id}-help` } : {},
426
- children: [
427
- /* @__PURE__ */ jsx(SuggestionInput, {
428
- id,
429
- "aria-describedby": description ? `${id}-help` : void 0,
430
- value,
431
- placeholder,
432
- suggestions: suggestions.map((option) => ({ value: option })),
433
- onValueChange: onChange
434
- }),
435
- /* @__PURE__ */ jsx(FieldError, { message: error ?? lint.message }),
436
- lint.fixes
437
- ]
392
+ description,
393
+ error: error ?? lint.message,
394
+ id,
395
+ children: (control) => /* @__PURE__ */ jsxs(Fragment, { children: [/* @__PURE__ */ jsx(SuggestionInput, {
396
+ ...control,
397
+ value,
398
+ placeholder,
399
+ suggestions: suggestions.map((option) => ({ value: option })),
400
+ onValueChange: onChange
401
+ }), lint.fixes] })
438
402
  });
439
403
  }
440
404
  /** A text area that starts one line tall and grows with its text. */
@@ -472,11 +436,9 @@ function OpenOnAddSwitch({ open, onChange }) {
472
436
  content: t.openOnAddHelp,
473
437
  children: /* @__PURE__ */ jsxs("label", {
474
438
  className: "flex cursor-pointer items-center gap-2 text-xs theme-muted-text",
475
- children: [/* @__PURE__ */ jsx("input", {
476
- type: "checkbox",
477
- className: "h-4 w-4 cursor-pointer accent-(--theme-element)",
439
+ children: [/* @__PURE__ */ jsx(Checkbox, {
478
440
  checked: open,
479
- onChange: (e) => onChange(e.target.checked)
441
+ onCheckedChange: (next) => onChange(next)
480
442
  }), t.openOnAdd]
481
443
  })
482
444
  });
@@ -512,18 +474,18 @@ function DialogShell({ title, onClose, onSubmit, saveDisabled, dirty, locked = f
512
474
  footerStart,
513
475
  openOnAdd && /* @__PURE__ */ jsx(OpenOnAddSwitch, { ...openOnAdd }),
514
476
  /* @__PURE__ */ jsx("div", { className: "flex-1" }),
515
- /* @__PURE__ */ jsx("button", {
516
- type: "button",
517
- className: ghostButtonClasses,
477
+ /* @__PURE__ */ jsx(Button, {
478
+ variant: "ghost",
479
+ size: "sm",
518
480
  onClick: onClose,
519
- children: t.cancel
481
+ children: t.common.cancel
520
482
  }),
521
- /* @__PURE__ */ jsx("button", {
522
- type: "button",
483
+ /* @__PURE__ */ jsx(Button, {
484
+ variant: "primary",
485
+ size: "sm",
523
486
  disabled: saveDisabled,
524
487
  onClick: submit,
525
- className: clsx(primaryButtonClasses, "disabled:cursor-not-allowed disabled:opacity-50"),
526
- children: t.save
488
+ children: t.common.save
527
489
  })
528
490
  ]
529
491
  })
@@ -532,4 +494,4 @@ function DialogShell({ title, onClose, onSubmit, saveDisabled, dirty, locked = f
532
494
  });
533
495
  }
534
496
  //#endregion
535
- export { AddRowButton, ChoiceButtons, DURATION, DialogShell, ENV_KEY, EXPRESSION, ExpressionToggle, FieldError, FieldLabel, GROWING_AREA, GrowingTextarea, KeyHint, KeyValueEditor, LabelledField, Section, SectionMemory, StringListEditor, SuggestedInput, ToggleField, asRecord, conditionText, countError, diffPatch, durationError, expressionError, flagError, flagOf, flagValue, isEmptyPatch, isScalar, labelled, openOnAddOf, orUndefined, parseCondition, parseCount, parseJson, parseScalar, removeAt, rowsError, rowsFrom, rowsTo, sameValue, text, unchangedValue, updateAt, useGrowingArea, useSectionMemory, withoutUndefined };
497
+ export { AddRowButton, ChoiceButtons, DURATION, DialogSection, DialogShell, ENV_KEY, EXPRESSION, ExpressionToggle, GROWING_AREA, GrowingTextarea, KeyHint, KeyValueEditor, SectionMemory, StringListEditor, SuggestedInput, ToggleField, YamlField, asRecord, conditionText, countError, diffPatch, durationError, expressionError, flagError, flagOf, flagValue, isEmptyPatch, isScalar, labelled, openOnAddOf, orUndefined, parseCondition, parseCount, parseJson, parseScalar, removeAt, rowsError, rowsFrom, rowsTo, sameValue, text, unchangedValue, updateAt, useGrowingArea, useSectionMemory, withoutUndefined };
@@ -1,4 +1,4 @@
1
- import { clsx } from "clsx";
1
+ import { cx } from "../cx.js";
2
2
  import { jsx } from "react/jsx-runtime";
3
3
  import { useEffect, useRef, useSyncExternalStore } from "react";
4
4
  //#region src/graph/editorPrimitives.tsx
@@ -123,7 +123,7 @@ function place(box) {
123
123
  /** The box a shift + drag draws, in its layer's coordinates. */
124
124
  function MarqueeBox({ box, className }) {
125
125
  return /* @__PURE__ */ jsx("div", {
126
- className: clsx("absolute rounded-md border-2 border-dashed border-(--theme-element) bg-(--theme-element)/10", className),
126
+ className: cx("absolute rounded-md border-2 border-dashed border-(--theme-accent) bg-(--theme-accent)/10", className),
127
127
  style: place(box)
128
128
  });
129
129
  }
@@ -1,11 +1,8 @@
1
- import { BsThreeDots } from "../icons/bs/BsThreeDots.js";
2
- import { FaPlus } from "../icons/fa/FaPlus.js";
3
- import { MdDragHandle } from "../icons/md/MdDragHandle.js";
4
- import { TbAlertTriangle } from "../icons/tb/TbAlertTriangle.js";
1
+ import { cx } from "../cx.js";
2
+ import { AddIcon, DragHandleIcon, MoreIcon, WarningIcon } from "../icons.js";
5
3
  import { Tooltip } from "../components/Tooltip.js";
6
4
  import { MarqueeBox, place } from "./editorPrimitives.js";
7
5
  import { EDITOR_HANDLE_CLASS, NO_SELECTION, labelsOf, problemsIn, sameEdge, sameStep, selectionBounds, useGraphEditor, useSelectedEdges, useUi } from "./graphEditorState.js";
8
- import { clsx } from "clsx";
9
6
  import { Fragment, jsx, jsxs } from "react/jsx-runtime";
10
7
  import { useEffect, useRef } from "react";
11
8
  //#region src/graph/editorRows.tsx
@@ -27,11 +24,11 @@ function GraphEditorCanvas() {
27
24
  marquee && /* @__PURE__ */ jsx(MarqueeBox, { box: marquee }),
28
25
  !marquee && drag?.payload.kind !== "jobs" && /* @__PURE__ */ jsx(SelectionBox, { api }),
29
26
  indicator && /* @__PURE__ */ jsx("div", {
30
- className: clsx("absolute rounded-full", refused ? "bg-(--theme-error)" : "bg-(--theme-element)"),
27
+ className: cx("absolute rounded-full", refused ? "bg-(--theme-error)" : "bg-(--theme-accent)"),
31
28
  style: place(indicator)
32
29
  }),
33
30
  outline && /* @__PURE__ */ jsx("div", {
34
- className: clsx("absolute rounded-md border-4", refused ? "border-(--theme-error)" : "border-(--theme-element)"),
31
+ className: cx("absolute rounded-md border-4", refused ? "border-(--theme-error)" : "border-(--theme-accent)"),
35
32
  style: {
36
33
  left: outline.left - 8,
37
34
  top: outline.top - 4,
@@ -40,7 +37,7 @@ function GraphEditorCanvas() {
40
37
  }
41
38
  }),
42
39
  (target?.kind === "connect" || target?.kind === "merge") && /* @__PURE__ */ jsx("div", {
43
- className: clsx("absolute rounded-md border-4", (target.kind === "connect" ? target.edits : target.valid) ? "border-(--theme-element)" : "border-(--theme-error)"),
40
+ className: cx("absolute rounded-md border-4", (target.kind === "connect" ? target.edits : target.valid) ? "border-(--theme-accent)" : "border-(--theme-error)"),
44
41
  style: {
45
42
  left: target.box.left - 8,
46
43
  top: target.box.top - 4,
@@ -57,7 +54,7 @@ function GraphEditorCanvas() {
57
54
  y1: drag.origin.y,
58
55
  x2: drag.content.x,
59
56
  y2: drag.content.y,
60
- stroke: target?.kind === "connect" && !target.edits ? "var(--theme-error)" : "var(--theme-element)",
57
+ stroke: target?.kind === "connect" && !target.edits ? "var(--theme-error)" : "var(--theme-accent)",
61
58
  strokeWidth: 6,
62
59
  strokeDasharray: "16 10"
63
60
  })
@@ -76,7 +73,7 @@ function SelectionBox({ api }) {
76
73
  const y = bounds.connectorY;
77
74
  return /* @__PURE__ */ jsxs(Fragment, { children: [
78
75
  /* @__PURE__ */ jsx("div", {
79
- className: "absolute rounded-xl border-2 border-dashed border-(--theme-element)",
76
+ className: "absolute rounded-xl border-2 border-dashed border-(--theme-accent)",
80
77
  style: place(bounds)
81
78
  }),
82
79
  /* @__PURE__ */ jsx(PortCircle, {
@@ -106,7 +103,7 @@ function SelectionBox({ api }) {
106
103
  children: /* @__PURE__ */ jsx("button", {
107
104
  type: "button",
108
105
  "aria-label": t.moveSelectionHint,
109
- className: clsx(EDITOR_HANDLE_CLASS, "pointer-events-auto absolute flex h-8 w-8 cursor-grab items-center justify-center rounded-full border-4 border-(--theme-element) bg-(--theme-panel-bg)"),
106
+ className: cx(EDITOR_HANDLE_CLASS, "pointer-events-auto absolute flex h-8 w-8 cursor-grab items-center justify-center rounded-full border-4 border-(--theme-accent) bg-(--theme-panel-bg)"),
110
107
  style: {
111
108
  left: bounds.left - 16,
112
109
  top: bounds.top - 16
@@ -117,7 +114,7 @@ function SelectionBox({ api }) {
117
114
  label: labelsOf(jobs),
118
115
  ...anchor ? { anchor } : {}
119
116
  }),
120
- children: /* @__PURE__ */ jsx(MdDragHandle, { className: "h-5 w-5" })
117
+ children: /* @__PURE__ */ jsx(DragHandleIcon, { className: "h-5 w-5" })
121
118
  })
122
119
  })
123
120
  ] });
@@ -132,13 +129,13 @@ function BoxGrip({ jobs }) {
132
129
  children: /* @__PURE__ */ jsx("button", {
133
130
  type: "button",
134
131
  "aria-label": t.moveBoxHint,
135
- className: clsx(EDITOR_HANDLE_CLASS, "absolute -left-[18px] -top-[18px] flex h-8 w-8 cursor-grab items-center justify-center rounded-full border-4 theme-border bg-(--theme-panel-bg)"),
132
+ className: cx(EDITOR_HANDLE_CLASS, "absolute -left-[18px] -top-[18px] flex h-8 w-8 cursor-grab items-center justify-center rounded-full border-4 theme-border bg-(--theme-panel-bg)"),
136
133
  onPointerDown: (e) => api.startDrag(e, {
137
134
  kind: "jobs",
138
135
  jobs,
139
136
  label: labelsOf(jobs)
140
137
  }),
141
- children: /* @__PURE__ */ jsx(MdDragHandle, { className: "h-5 w-5" })
138
+ children: /* @__PURE__ */ jsx(DragHandleIcon, { className: "h-5 w-5" })
142
139
  })
143
140
  });
144
141
  }
@@ -162,7 +159,7 @@ function ProblemBadge({ api, job, step }) {
162
159
  e.stopPropagation();
163
160
  api.reveal({ line });
164
161
  },
165
- children: /* @__PURE__ */ jsx(TbAlertTriangle, { className: "h-[0.9em] w-[0.9em]" })
162
+ children: /* @__PURE__ */ jsx(WarningIcon, { className: "h-[0.9em] w-[0.9em]" })
166
163
  })
167
164
  });
168
165
  }
@@ -172,7 +169,7 @@ function EditableRow({ api, selected, flagged, data, className, drag, toggle, re
172
169
  role: "none",
173
170
  ...data,
174
171
  ...selected ? { "data-selected": "" } : {},
175
- className: clsx(EDITOR_HANDLE_CLASS, "-mx-0.5 px-0.5", className, selected && "bg-(--theme-element)/15", flagged ? "ring-2 ring-(--theme-error)" : selected && "ring-2 ring-(--theme-element)"),
172
+ className: cx(EDITOR_HANDLE_CLASS, "-mx-0.5 px-0.5", className, selected && "bg-(--theme-accent)/15", flagged ? "ring-2 ring-(--theme-error)" : selected && "ring-2 ring-(--theme-accent)"),
176
173
  onPointerDown: (e) => {
177
174
  if (e.shiftKey) e.preventDefault();
178
175
  api.startDrag(e, drag());
@@ -197,13 +194,13 @@ function EditableRow({ api, selected, flagged, data, className, drag, toggle, re
197
194
  /* @__PURE__ */ jsx("button", {
198
195
  type: "button",
199
196
  "aria-label": menuLabel,
200
- className: clsx("cursor-pointer rounded theme-muted-text opacity-0 transition-opacity hover:bg-(--theme-muted-panel-bg) focus-visible:opacity-100", menuClassName),
197
+ className: cx("cursor-pointer rounded theme-muted-text opacity-0 transition-opacity hover:bg-(--theme-muted-panel-bg) focus-visible:opacity-100", menuClassName),
201
198
  onPointerDown: (e) => e.stopPropagation(),
202
199
  onClick: (e) => {
203
200
  e.stopPropagation();
204
201
  openMenu(e.currentTarget);
205
202
  },
206
- children: /* @__PURE__ */ jsx(BsThreeDots, { className: iconClassName })
203
+ children: /* @__PURE__ */ jsx(MoreIcon, { className: iconClassName })
207
204
  })
208
205
  ]
209
206
  });
@@ -266,7 +263,7 @@ function PortCircle({ side, at, draw, jobs, port, hint, zIndex }) {
266
263
  role: "none",
267
264
  "data-dag-port": side,
268
265
  ...port === "selection" ? { "data-dag-selection": "" } : { "data-dag-node": jobs[0] },
269
- className: clsx(EDITOR_HANDLE_CLASS, "group/port pointer-events-auto absolute flex h-8 w-8 cursor-crosshair items-center justify-center"),
266
+ className: cx(EDITOR_HANDLE_CLASS, "group/port pointer-events-auto absolute flex h-8 w-8 cursor-crosshair items-center justify-center"),
270
267
  style: {
271
268
  left: at.x - 16,
272
269
  top: at.y - 16,
@@ -279,7 +276,7 @@ function PortCircle({ side, at, draw, jobs, port, hint, zIndex }) {
279
276
  label: labelsOf(jobs),
280
277
  port
281
278
  }),
282
- children: [draw && /* @__PURE__ */ jsx("span", { className: "absolute inset-0 bg-(--theme-panel-bg)" }), /* @__PURE__ */ jsx("span", { className: clsx("relative h-4 w-4 rounded-full group-hover/port:bg-(--theme-element)", dragging ? "bg-(--theme-element)" : draw && "bg-(--theme-border)") })]
279
+ children: [draw && /* @__PURE__ */ jsx("span", { className: "absolute inset-0 bg-(--theme-panel-bg)" }), /* @__PURE__ */ jsx("span", { className: cx("relative h-4 w-4 rounded-full group-hover/port:bg-(--theme-accent)", dragging ? "bg-(--theme-accent)" : draw && "bg-(--theme-border)") })]
283
280
  })
284
281
  });
285
282
  }
@@ -379,7 +376,7 @@ function AddStepButton({ job }) {
379
376
  e.stopPropagation();
380
377
  api.addStep(job);
381
378
  },
382
- children: [/* @__PURE__ */ jsx(FaPlus, { className: "h-[0.8em] w-[0.8em]" }), t.addStep]
379
+ children: [/* @__PURE__ */ jsx(AddIcon, { className: "h-[0.8em] w-[0.8em]" }), t.addStep]
383
380
  });
384
381
  }
385
382
  /** Connector hit area: a click selects the dependency, shift adds it, a right-click opens its menu. */
@@ -399,7 +396,7 @@ function EdgeHitPath({ d, edge }) {
399
396
  stroke: "transparent",
400
397
  strokeWidth: 28,
401
398
  fill: "none",
402
- className: clsx(EDITOR_HANDLE_CLASS, "outline-none focus-visible:[stroke:color-mix(in_srgb,var(--theme-element)_35%,transparent)]"),
399
+ className: cx(EDITOR_HANDLE_CLASS, "outline-none focus-visible:[stroke:color-mix(in_srgb,var(--theme-accent)_35%,transparent)]"),
403
400
  style: {
404
401
  pointerEvents: "stroke",
405
402
  cursor: "pointer"
@@ -430,7 +427,7 @@ function EdgeEnds({ edge, start, end, zIndex }) {
430
427
  children: /* @__PURE__ */ jsx("span", {
431
428
  role: "none",
432
429
  "data-dag-edge-end": side,
433
- className: clsx(EDITOR_HANDLE_CLASS, "pointer-events-auto absolute flex h-8 w-8 items-center justify-center", inUse ? "cursor-not-allowed" : "cursor-grab"),
430
+ className: cx(EDITOR_HANDLE_CLASS, "pointer-events-auto absolute flex h-8 w-8 items-center justify-center", inUse ? "cursor-not-allowed" : "cursor-grab"),
434
431
  style: {
435
432
  left: at.x - 16,
436
433
  top: at.y - 16,
@@ -439,7 +436,7 @@ function EdgeEnds({ edge, start, end, zIndex }) {
439
436
  onPointerDown: (e) => {
440
437
  if (!inUse) api.startEdgeEnd(e, edge, side, fixed);
441
438
  },
442
- children: /* @__PURE__ */ jsx("span", { className: "h-5 w-5 rounded-full border-4 border-(--theme-element) bg-(--theme-panel-bg)" })
439
+ children: /* @__PURE__ */ jsx("span", { className: "h-5 w-5 rounded-full border-4 border-(--theme-accent) bg-(--theme-panel-bg)" })
443
440
  })
444
441
  }, side);
445
442
  return /* @__PURE__ */ jsxs(Fragment, { children: [handle("from", start, end), handle("to", end, start)] });
@@ -457,7 +454,7 @@ function EmptyGraphEditor({ containerRef, overlays, height, removeBorder }) {
457
454
  containerRef(el);
458
455
  },
459
456
  tabIndex: -1,
460
- className: clsx("panel relative w-full overflow-hidden outline-none", removeBorder ? "border-none" : "border"),
457
+ className: cx("panel relative w-full overflow-hidden outline-none", removeBorder ? "border-none" : "border"),
461
458
  style: { height },
462
459
  children: overlays
463
460
  });