@parallelworks/ui 0.44.0 → 0.46.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 (637) 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/permissions.d.ts +1 -1
  8. package/dist/ai/agent/permissions.js +1 -1
  9. package/dist/ai/agent/toolStrings.d.ts +37 -0
  10. package/dist/ai/agent/toolStrings.js +35 -0
  11. package/dist/ai/agent/toolfmt.d.ts +8 -3
  12. package/dist/ai/agent/toolfmt.js +50 -65
  13. package/dist/ai/ai.css +22 -35
  14. package/dist/ai/components/AllocationSelector.js +2 -2
  15. package/dist/ai/components/AttachmentManager.js +28 -29
  16. package/dist/ai/components/AttachmentUpload.js +25 -30
  17. package/dist/ai/components/BlockedGroupBanner.js +2 -2
  18. package/dist/ai/components/BranchNavigator.js +3 -4
  19. package/dist/ai/components/ChatEmptyState.js +8 -7
  20. package/dist/ai/components/ChatInput.js +10 -12
  21. package/dist/ai/components/ChatLayout.js +3 -3
  22. package/dist/ai/components/ChatMessage.js +49 -61
  23. package/dist/ai/components/ChatMessageList.js +46 -42
  24. package/dist/ai/components/ChatSidebar.js +26 -34
  25. package/dist/ai/components/ChatStage.d.ts +1 -1
  26. package/dist/ai/components/ChatStage.js +2 -2
  27. package/dist/ai/components/ComposerChrome.js +3 -4
  28. package/dist/ai/components/DragOverlay.js +6 -4
  29. package/dist/ai/components/ModelSelector.js +14 -15
  30. package/dist/ai/components/PastedText.js +18 -14
  31. package/dist/ai/components/ProviderIssueBanner.js +3 -4
  32. package/dist/ai/components/Reasoning.d.ts +12 -6
  33. package/dist/ai/components/Reasoning.js +31 -18
  34. package/dist/ai/components/ShareDialog.js +25 -28
  35. package/dist/ai/components/SlashMenu.js +3 -3
  36. package/dist/ai/components/agent/ActivityLine.d.ts +0 -5
  37. package/dist/ai/components/agent/ActivityLine.js +17 -54
  38. package/dist/ai/components/agent/AgentMessageParts.js +139 -149
  39. package/dist/ai/components/conversationActions.js +16 -16
  40. package/dist/ai/core/ChatProvider.d.ts +2 -4
  41. package/dist/ai/core/ChatProvider.js +25 -38
  42. package/dist/ai/core/exportConversation.js +4 -4
  43. package/dist/ai/core/pasteLanguage.d.ts +1 -1
  44. package/dist/ai/core/pasteLanguage.js +1 -1
  45. package/dist/ai/core/sidebarState.d.ts +8 -6
  46. package/dist/ai/core/sidebarState.js +21 -28
  47. package/dist/ai/core/useKeyboardShortcuts.js +14 -5
  48. package/dist/ai/index.d.ts +4 -5
  49. package/dist/ai/index.js +7 -7
  50. package/dist/ai/strings.d.ts +14 -31
  51. package/dist/ai/strings.js +19 -39
  52. package/dist/ai/types.d.ts +0 -5
  53. package/dist/ai/ui/ConversationSidebar.d.ts +12 -9
  54. package/dist/ai/ui/ConversationSidebar.js +43 -87
  55. package/dist/ai/ui/Markdown.d.ts +3 -6
  56. package/dist/ai/ui/Markdown.js +6 -73
  57. package/dist/ai/ui/Notice.js +10 -12
  58. package/dist/ai/ui/chip.d.ts +2 -2
  59. package/dist/ai/ui/chip.js +1 -1
  60. package/dist/ai/ui/sidebar.d.ts +4 -20
  61. package/dist/ai/ui/sidebar.js +30 -67
  62. package/dist/ai/utils.d.ts +0 -1
  63. package/dist/ai/utils.js +1 -14
  64. package/dist/brandIcons.d.ts +51 -0
  65. package/dist/brandIcons.js +75 -0
  66. package/dist/components/Avatar.d.ts +3 -1
  67. package/dist/components/Avatar.js +34 -28
  68. package/dist/components/Button.d.ts +12 -7
  69. package/dist/components/Button.js +39 -44
  70. package/dist/components/Callout.js +18 -12
  71. package/dist/components/Card.d.ts +18 -8
  72. package/dist/components/Card.js +17 -6
  73. package/dist/components/Checkbox.d.ts +9 -0
  74. package/dist/components/Checkbox.js +30 -0
  75. package/dist/components/Combobox.d.ts +9 -1
  76. package/dist/components/Combobox.js +71 -44
  77. package/dist/components/ConfirmModal.js +11 -11
  78. package/dist/components/ContextMenu.d.ts +2 -8
  79. package/dist/components/ContextMenu.js +2 -29
  80. package/dist/components/CopyToClipboard.js +17 -36
  81. package/dist/components/CreateModal.d.ts +3 -24
  82. package/dist/components/CreateModal.js +46 -113
  83. package/dist/components/DatePicker.d.ts +31 -0
  84. package/dist/components/DatePicker.js +191 -0
  85. package/dist/components/DescriptionList.js +4 -4
  86. package/dist/components/Disclosure.d.ts +34 -0
  87. package/dist/components/Disclosure.js +46 -0
  88. package/dist/components/Drawer.d.ts +47 -0
  89. package/dist/components/Drawer.js +120 -0
  90. package/dist/components/EmptyState.d.ts +15 -10
  91. package/dist/components/EmptyState.js +13 -8
  92. package/dist/components/ExternalLink.d.ts +8 -0
  93. package/dist/components/ExternalLink.js +29 -0
  94. package/dist/components/Field.d.ts +70 -0
  95. package/dist/components/Field.js +159 -0
  96. package/dist/components/HoverCard.js +11 -14
  97. package/dist/components/IconButton.d.ts +16 -13
  98. package/dist/components/IconButton.js +27 -18
  99. package/dist/components/InfoTip.js +16 -23
  100. package/dist/components/Input.d.ts +10 -9
  101. package/dist/components/Input.js +54 -96
  102. package/dist/components/LetterBadge.js +2 -2
  103. package/dist/components/Loader.d.ts +15 -8
  104. package/dist/components/Loader.js +29 -19
  105. package/dist/components/Markdown.d.ts +7 -1
  106. package/dist/components/Markdown.js +2 -0
  107. package/dist/components/MarkdownImpl.d.ts +1 -1
  108. package/dist/components/MarkdownImpl.js +55 -14
  109. package/dist/components/Menu.js +13 -15
  110. package/dist/components/MenuEntries.js +11 -16
  111. package/dist/components/Meter.d.ts +48 -0
  112. package/dist/components/Meter.js +94 -0
  113. package/dist/components/Modal.js +11 -14
  114. package/dist/components/NumberInput.d.ts +25 -0
  115. package/dist/components/NumberInput.js +55 -0
  116. package/dist/components/Overview.js +12 -10
  117. package/dist/components/PageHeader.d.ts +2 -3
  118. package/dist/components/PageHeader.js +30 -21
  119. package/dist/components/Pagination.d.ts +27 -14
  120. package/dist/components/Pagination.js +86 -25
  121. package/dist/components/Popover.d.ts +47 -0
  122. package/dist/components/Popover.js +63 -0
  123. package/dist/components/Provider.d.ts +200 -83
  124. package/dist/components/Provider.js +203 -121
  125. package/dist/components/Radio.d.ts +1 -1
  126. package/dist/components/Radio.js +4 -4
  127. package/dist/components/RefreshButton.d.ts +15 -0
  128. package/dist/components/RefreshButton.js +53 -0
  129. package/dist/components/RunStatusIcon.d.ts +12 -0
  130. package/dist/components/RunStatusIcon.js +84 -0
  131. package/dist/components/SearchInput.d.ts +16 -0
  132. package/dist/components/SearchInput.js +52 -0
  133. package/dist/components/Section.d.ts +28 -0
  134. package/dist/components/Section.js +76 -0
  135. package/dist/components/SegmentedControl.d.ts +7 -11
  136. package/dist/components/SegmentedControl.js +25 -56
  137. package/dist/components/Select.d.ts +5 -1
  138. package/dist/components/Select.js +43 -44
  139. package/dist/components/SettingModeOption.d.ts +3 -5
  140. package/dist/components/SettingModeOption.js +5 -6
  141. package/dist/components/SettingsCard.d.ts +32 -19
  142. package/dist/components/SettingsCard.js +40 -13
  143. package/dist/components/Skeleton.d.ts +22 -0
  144. package/dist/components/Skeleton.js +34 -0
  145. package/dist/components/Slider.d.ts +16 -0
  146. package/dist/components/Slider.js +30 -0
  147. package/dist/components/Sort.js +4 -6
  148. package/dist/components/StatusBadge.d.ts +5 -3
  149. package/dist/components/StatusBadge.js +10 -33
  150. package/dist/components/StatusIcons.d.ts +0 -4
  151. package/dist/components/StatusIcons.js +5 -13
  152. package/dist/components/Switch.d.ts +5 -1
  153. package/dist/components/Switch.js +23 -6
  154. package/dist/components/Table.js +13 -20
  155. package/dist/components/Tabs.d.ts +52 -0
  156. package/dist/components/Tabs.js +75 -0
  157. package/dist/components/ThemeEditor.d.ts +29 -0
  158. package/dist/components/ThemeEditor.js +397 -0
  159. package/dist/components/Toast.d.ts +57 -0
  160. package/dist/components/Toast.js +203 -0
  161. package/dist/components/Tooltip.js +12 -15
  162. package/dist/components/buttonClasses.d.ts +18 -0
  163. package/dist/components/buttonClasses.js +31 -0
  164. package/dist/components/codeTheme.d.ts +5 -0
  165. package/dist/components/codeTheme.js +93 -0
  166. package/dist/components/comboboxItems.d.ts +1 -1
  167. package/dist/components/fieldBox.d.ts +14 -0
  168. package/dist/components/fieldBox.js +29 -0
  169. package/dist/components/floating.d.ts +26 -5
  170. package/dist/components/floating.js +31 -9
  171. package/dist/{ai/ui/codeBreaks.js → components/markdownCodeBreaks.js} +1 -1
  172. package/dist/components/persistedState.d.ts +2 -0
  173. package/dist/components/persistedState.js +63 -0
  174. package/dist/components/relativeTime.d.ts +36 -8
  175. package/dist/components/relativeTime.js +106 -23
  176. package/dist/components/segmented.d.ts +17 -0
  177. package/dist/components/segmented.js +27 -0
  178. package/dist/components/shortcutKey.d.ts +4 -0
  179. package/dist/components/shortcutKey.js +27 -0
  180. package/dist/components/splitter.d.ts +26 -0
  181. package/dist/components/splitter.js +69 -0
  182. package/dist/components/tone.d.ts +9 -0
  183. package/dist/components/tone.js +30 -0
  184. package/dist/components/useCopy.d.ts +14 -0
  185. package/dist/components/useCopy.js +31 -0
  186. package/dist/components/useCssIsDark.d.ts +2 -0
  187. package/dist/components/useCssIsDark.js +2 -1
  188. package/dist/components/useTheme.d.ts +10 -0
  189. package/dist/components/useTheme.js +40 -0
  190. package/dist/cx.d.ts +5 -0
  191. package/dist/cx.js +11 -0
  192. package/dist/editing.d.ts +1 -1
  193. package/dist/editor/Editor.js +2 -2
  194. package/dist/editor/EditorField.js +7 -10
  195. package/dist/editor/FormCodePanel.js +10 -23
  196. package/dist/editor/Monaco.js +7 -4
  197. package/dist/editor/index.d.ts +1 -1
  198. package/dist/editor/index.js +2 -2
  199. package/dist/editor/themes.d.ts +4 -0
  200. package/dist/editor/themes.js +75 -76
  201. package/dist/file-explorer/FileExplorer.js +180 -187
  202. package/dist/file-explorer/FileExplorerContext.js +45 -67
  203. package/dist/file-explorer/FilePreview/CodePreviewEditor.js +2 -1
  204. package/dist/file-explorer/FilePreview/Inline.js +9 -7
  205. package/dist/file-explorer/FilePreview/StreamedBadge.js +2 -2
  206. package/dist/file-explorer/FilePreview/Viewer.js +32 -34
  207. package/dist/file-explorer/FilePreview/index.js +60 -92
  208. package/dist/file-explorer/FilePreview/useObjectBlobUrl.js +4 -4
  209. package/dist/file-explorer/FilePreview/useObjectText.js +4 -4
  210. package/dist/file-explorer/FilePreview/usePresignedUrl.js +4 -4
  211. package/dist/file-explorer/FileRow.js +10 -15
  212. package/dist/file-explorer/FileRowsWindow.js +2 -6
  213. package/dist/file-explorer/FileTable.js +2 -2
  214. package/dist/file-explorer/FileTableHeaders.js +8 -11
  215. package/dist/file-explorer/LoadMoreRow.js +8 -9
  216. package/dist/file-explorer/TreeView.js +16 -16
  217. package/dist/file-explorer/helpers.d.ts +1 -4
  218. package/dist/file-explorer/helpers.js +101 -114
  219. package/dist/file-explorer/lib/types.d.ts +2 -2
  220. package/dist/file-explorer/lib/utils.d.ts +0 -2
  221. package/dist/file-explorer/lib/utils.js +1 -25
  222. package/dist/file-explorer/toasts.js +109 -190
  223. package/dist/form/Fields/BooleanField.js +12 -14
  224. package/dist/form/Fields/CheckboxGroupField.d.ts +1 -1
  225. package/dist/form/Fields/CheckboxGroupField.js +16 -18
  226. package/dist/form/Fields/ColorField.js +11 -11
  227. package/dist/form/Fields/DropdownField.d.ts +1 -1
  228. package/dist/form/Fields/DropdownField.js +20 -36
  229. package/dist/form/Fields/DurationField.d.ts +1 -1
  230. package/dist/form/Fields/DurationField.js +36 -50
  231. package/dist/form/Fields/LabelField.js +2 -2
  232. package/dist/form/Fields/MultiDropdownField.d.ts +1 -1
  233. package/dist/form/Fields/MultiDropdownField.js +9 -14
  234. package/dist/form/Fields/NumberField.d.ts +1 -1
  235. package/dist/form/Fields/NumberField.js +13 -48
  236. package/dist/form/Fields/ObjectField.js +3 -3
  237. package/dist/form/Fields/RadioField.d.ts +1 -1
  238. package/dist/form/Fields/RadioField.js +15 -18
  239. package/dist/form/Fields/RangeField.js +34 -35
  240. package/dist/form/Fields/StringField.d.ts +1 -1
  241. package/dist/form/Fields/StringField.js +15 -25
  242. package/dist/form/Fields/TextAreaField.js +10 -15
  243. package/dist/form/Form.d.ts +7 -2
  244. package/dist/form/Form.js +144 -49
  245. package/dist/form/FormLayout.js +18 -12
  246. package/dist/form/Wizard/WizardContainer.js +44 -18
  247. package/dist/form/Wizard/WizardNavigation.d.ts +1 -1
  248. package/dist/form/Wizard/WizardNavigation.js +31 -56
  249. package/dist/form/Wizard/WizardStepIndicator.d.ts +3 -0
  250. package/dist/form/Wizard/WizardStepIndicator.js +98 -114
  251. package/dist/form/Wizard/types.d.ts +2 -2
  252. package/dist/form/fieldFrame.d.ts +7 -0
  253. package/dist/form/fieldFrame.js +19 -0
  254. package/dist/form/index.d.ts +5 -5
  255. package/dist/form/index.js +4 -6
  256. package/dist/form/layoutCSS.js +5 -4
  257. package/dist/form/types/fieldComponentTypes.d.ts +5 -3
  258. package/dist/form/useChoiceField.js +2 -3
  259. package/dist/form/useFieldValue.d.ts +3 -0
  260. package/dist/form/useFieldValue.js +24 -7
  261. package/dist/form/utils/duration.d.ts +2 -2
  262. package/dist/form/utils/duration.js +3 -3
  263. package/dist/form/utils/fieldItems.d.ts +1 -1
  264. package/dist/form/utils/fieldPath.d.ts +5 -3
  265. package/dist/form/utils/fieldPath.js +18 -3
  266. package/dist/form/utils/secondaryField.d.ts +0 -7
  267. package/dist/form/utils/secondaryField.js +1 -12
  268. package/dist/form/validation.d.ts +29 -0
  269. package/dist/form/validation.js +14 -0
  270. package/dist/format.d.ts +28 -0
  271. package/dist/format.js +64 -0
  272. package/dist/graph/AnnotationBanner.js +20 -31
  273. package/dist/graph/Connectors.js +1 -1
  274. package/dist/graph/DependencyGraph.js +51 -65
  275. package/dist/graph/GraphEditor.js +24 -28
  276. package/dist/graph/GraphEditorDialogs.js +239 -245
  277. package/dist/graph/InputDialog.js +93 -112
  278. package/dist/graph/InputsEditor.js +83 -84
  279. package/dist/graph/JobSummary.js +10 -11
  280. package/dist/graph/MatrixGroup.js +3 -3
  281. package/dist/graph/ProblemsButton.js +9 -10
  282. package/dist/graph/ShortcutsButton.js +12 -17
  283. package/dist/graph/SuggestionInput.d.ts +2 -3
  284. package/dist/graph/SuggestionInput.js +2 -4
  285. package/dist/graph/TreeView.js +47 -45
  286. package/dist/graph/WorkflowSettingsDialog.js +97 -102
  287. package/dist/graph/editorChrome.js +10 -12
  288. package/dist/graph/editorFields.d.ts +19 -16
  289. package/dist/graph/editorFields.js +97 -135
  290. package/dist/graph/editorPrimitives.d.ts +2 -2
  291. package/dist/graph/editorPrimitives.js +3 -3
  292. package/dist/graph/editorRows.js +22 -25
  293. package/dist/graph/editorStrings.d.ts +18 -21
  294. package/dist/graph/editorStrings.js +15 -27
  295. package/dist/graph/fieldProblems.js +2 -2
  296. package/dist/graph/graphEditorState.d.ts +4 -4
  297. package/dist/graph/inputRefs.d.ts +0 -13
  298. package/dist/graph/inputRefs.js +122 -160
  299. package/dist/graph/settingsViews.js +5 -3
  300. package/dist/graph/stepWith.js +100 -100
  301. package/dist/graph/toolbarPanel.d.ts +8 -0
  302. package/dist/graph/toolbarPanel.js +11 -0
  303. package/dist/icons.d.ts +234 -23
  304. package/dist/icons.js +249 -264
  305. package/dist/index.d.ts +38 -21
  306. package/dist/index.js +42 -21
  307. package/dist/list/ActionToolbar.d.ts +1 -5
  308. package/dist/list/ActionToolbar.js +21 -20
  309. package/dist/list/ListPage.js +7 -7
  310. package/dist/list/ListTable.d.ts +3 -2
  311. package/dist/list/ListTable.js +33 -29
  312. package/dist/list/ListViewControls.d.ts +0 -17
  313. package/dist/list/ListViewControls.js +50 -118
  314. package/dist/list/UserHoverCard.js +24 -32
  315. package/dist/list/index.d.ts +2 -4
  316. package/dist/list/index.js +3 -5
  317. package/dist/list/listSearch.d.ts +1 -1
  318. package/dist/list/listSearch.js +19 -14
  319. package/dist/list/rowMenu.js +20 -26
  320. package/dist/logviewer/LogViewer.js +268 -382
  321. package/dist/logviewer/logviewer.css +53 -41
  322. package/dist/logviewer/segments.d.ts +1 -1
  323. package/dist/logviewer/segments.js +1 -1
  324. package/dist/styles/base.css +16 -40
  325. package/dist/styles/theme.css +75 -106
  326. package/dist/styles.css +1 -1
  327. package/dist/theme/color.d.ts +40 -0
  328. package/dist/theme/color.js +228 -0
  329. package/dist/theme/contrast.d.ts +42 -0
  330. package/dist/theme/contrast.js +145 -0
  331. package/dist/theme/derive.d.ts +25 -0
  332. package/dist/theme/derive.js +475 -0
  333. package/dist/theme/fit.d.ts +35 -0
  334. package/dist/theme/fit.js +185 -0
  335. package/dist/theme/index.d.ts +14 -29
  336. package/dist/theme/index.js +20 -279
  337. package/dist/theme/model.d.ts +64 -0
  338. package/dist/theme/model.js +219 -0
  339. package/package.json +9 -5
  340. package/dist/ai/ui/Avatar.d.ts +0 -7
  341. package/dist/ai/ui/Avatar.js +0 -24
  342. package/dist/components/Filter.d.ts +0 -15
  343. package/dist/components/Filter.js +0 -32
  344. package/dist/components/FilterPill.d.ts +0 -7
  345. package/dist/components/FilterPill.js +0 -14
  346. package/dist/components/Indicator.d.ts +0 -4
  347. package/dist/components/Indicator.js +0 -44
  348. package/dist/components/SectionHeader.d.ts +0 -8
  349. package/dist/components/SectionHeader.js +0 -11
  350. package/dist/components/SettingRow.d.ts +0 -18
  351. package/dist/components/SettingRow.js +0 -35
  352. package/dist/components/SettingsGroup.d.ts +0 -8
  353. package/dist/components/SettingsGroup.js +0 -17
  354. package/dist/components/ghostButton.d.ts +0 -4
  355. package/dist/components/ghostButton.js +0 -7
  356. package/dist/components/inputClasses.d.ts +0 -1
  357. package/dist/components/inputClasses.js +0 -4
  358. package/dist/duration.d.ts +0 -3
  359. package/dist/duration.js +0 -17
  360. package/dist/form/FieldGroup.d.ts +0 -11
  361. package/dist/form/FieldGroup.js +0 -36
  362. package/dist/form/FieldWrapper.d.ts +0 -16
  363. package/dist/form/FieldWrapper.js +0 -55
  364. package/dist/form/fieldContext.d.ts +0 -19
  365. package/dist/form/fieldContext.js +0 -26
  366. package/dist/graph/Collapse.d.ts +0 -7
  367. package/dist/graph/Collapse.js +0 -15
  368. package/dist/graph/ToolbarPopover.d.ts +0 -13
  369. package/dist/graph/ToolbarPopover.js +0 -39
  370. package/dist/icons/ai/AiOutlineRollback.js +0 -16
  371. package/dist/icons/bi/BiBell.js +0 -16
  372. package/dist/icons/bi/BiBellOff.js +0 -16
  373. package/dist/icons/bi/BiBuildings.js +0 -20
  374. package/dist/icons/bi/BiError.js +0 -20
  375. package/dist/icons/bi/BiExpandVertical.js +0 -16
  376. package/dist/icons/bi/BiPause.js +0 -16
  377. package/dist/icons/bi/BiPlay.js +0 -16
  378. package/dist/icons/bi/BiRedo.js +0 -16
  379. package/dist/icons/bi/BiSolidCheckShield.js +0 -16
  380. package/dist/icons/bi/BiSolidTrashAlt.js +0 -16
  381. package/dist/icons/bi/BiStop.js +0 -16
  382. package/dist/icons/bi/BiUndo.js +0 -16
  383. package/dist/icons/bs/BsArrowsCollapse.js +0 -22
  384. package/dist/icons/bs/BsBank2.js +0 -19
  385. package/dist/icons/bs/BsBriefcase.js +0 -19
  386. package/dist/icons/bs/BsBucket.js +0 -19
  387. package/dist/icons/bs/BsCalendarX.js +0 -23
  388. package/dist/icons/bs/BsChatLeft.js +0 -19
  389. package/dist/icons/bs/BsChevronDoubleDown.js +0 -29
  390. package/dist/icons/bs/BsChevronDoubleUp.js +0 -29
  391. package/dist/icons/bs/BsClipboardCheck.js +0 -34
  392. package/dist/icons/bs/BsCurrencyDollar.js +0 -19
  393. package/dist/icons/bs/BsDash.js +0 -19
  394. package/dist/icons/bs/BsFileEarmarkZip.js +0 -23
  395. package/dist/icons/bs/BsFiles.js +0 -19
  396. package/dist/icons/bs/BsGeoAlt.js +0 -23
  397. package/dist/icons/bs/BsGrid.js +0 -19
  398. package/dist/icons/bs/BsLayers.js +0 -19
  399. package/dist/icons/bs/BsLayoutThreeColumns.js +0 -19
  400. package/dist/icons/bs/BsListUl.js +0 -22
  401. package/dist/icons/bs/BsMortarboard.js +0 -23
  402. package/dist/icons/bs/BsMusicNoteBeamed.js +0 -34
  403. package/dist/icons/bs/BsOpenai.js +0 -19
  404. package/dist/icons/bs/BsPersonPlus.js +0 -26
  405. package/dist/icons/bs/BsSearch.js +0 -19
  406. package/dist/icons/bs/BsSend.js +0 -19
  407. package/dist/icons/bs/BsShieldSlash.js +0 -22
  408. package/dist/icons/bs/BsStar.js +0 -19
  409. package/dist/icons/bs/BsStarFill.js +0 -19
  410. package/dist/icons/bs/BsStopCircle.js +0 -23
  411. package/dist/icons/bs/BsTag.js +0 -23
  412. package/dist/icons/bs/BsTelephone.js +0 -19
  413. package/dist/icons/bs/BsTerminal.js +0 -23
  414. package/dist/icons/bs/BsTerminalFill.js +0 -19
  415. package/dist/icons/bs/BsThreeDots.js +0 -19
  416. package/dist/icons/bs/BsThreeDotsVertical.js +0 -19
  417. package/dist/icons/bs/BsZoomIn.js +0 -37
  418. package/dist/icons/fa/FaAmazon.js +0 -16
  419. package/dist/icons/fa/FaAngleDown.js +0 -16
  420. package/dist/icons/fa/FaAngleLeft.js +0 -16
  421. package/dist/icons/fa/FaAngleRight.js +0 -16
  422. package/dist/icons/fa/FaAngleUp.js +0 -16
  423. package/dist/icons/fa/FaArrowDown.js +0 -16
  424. package/dist/icons/fa/FaArrowLeft.js +0 -16
  425. package/dist/icons/fa/FaArrowRight.js +0 -16
  426. package/dist/icons/fa/FaArrowUp.js +0 -16
  427. package/dist/icons/fa/FaBalanceScale.js +0 -16
  428. package/dist/icons/fa/FaCaretDown.js +0 -16
  429. package/dist/icons/fa/FaCentos.js +0 -16
  430. package/dist/icons/fa/FaChartLine.js +0 -16
  431. package/dist/icons/fa/FaChartPie.js +0 -16
  432. package/dist/icons/fa/FaCheck.js +0 -16
  433. package/dist/icons/fa/FaChevronDown.js +0 -16
  434. package/dist/icons/fa/FaChevronUp.js +0 -16
  435. package/dist/icons/fa/FaChrome.js +0 -16
  436. package/dist/icons/fa/FaCircleNotch.js +0 -16
  437. package/dist/icons/fa/FaCloud.js +0 -16
  438. package/dist/icons/fa/FaCloudDownloadAlt.js +0 -16
  439. package/dist/icons/fa/FaCog.js +0 -16
  440. package/dist/icons/fa/FaCogs.js +0 -16
  441. package/dist/icons/fa/FaComments.js +0 -16
  442. package/dist/icons/fa/FaCompress.js +0 -16
  443. package/dist/icons/fa/FaDesktop.js +0 -16
  444. package/dist/icons/fa/FaDocker.js +0 -16
  445. package/dist/icons/fa/FaDollarSign.js +0 -16
  446. package/dist/icons/fa/FaEdge.js +0 -16
  447. package/dist/icons/fa/FaEdit.js +0 -16
  448. package/dist/icons/fa/FaExclamationTriangle.js +0 -16
  449. package/dist/icons/fa/FaExpand.js +0 -16
  450. package/dist/icons/fa/FaEye.js +0 -16
  451. package/dist/icons/fa/FaEyeSlash.js +0 -16
  452. package/dist/icons/fa/FaFile.js +0 -16
  453. package/dist/icons/fa/FaFilePdf.js +0 -16
  454. package/dist/icons/fa/FaFilter.js +0 -16
  455. package/dist/icons/fa/FaFirefoxBrowser.js +0 -16
  456. package/dist/icons/fa/FaFlask.js +0 -16
  457. package/dist/icons/fa/FaFolder.js +0 -16
  458. package/dist/icons/fa/FaGithub.js +0 -16
  459. package/dist/icons/fa/FaGitlab.js +0 -16
  460. package/dist/icons/fa/FaGlobe.js +0 -16
  461. package/dist/icons/fa/FaGlobeAmericas.js +0 -16
  462. package/dist/icons/fa/FaImage.js +0 -16
  463. package/dist/icons/fa/FaInfoCircle.js +0 -16
  464. package/dist/icons/fa/FaKey.js +0 -16
  465. package/dist/icons/fa/FaLayerGroup.js +0 -16
  466. package/dist/icons/fa/FaLink.js +0 -16
  467. package/dist/icons/fa/FaLinkedin.js +0 -16
  468. package/dist/icons/fa/FaLinux.js +0 -16
  469. package/dist/icons/fa/FaList.js +0 -16
  470. package/dist/icons/fa/FaLock.js +0 -16
  471. package/dist/icons/fa/FaOpenid.js +0 -16
  472. package/dist/icons/fa/FaOpera.js +0 -16
  473. package/dist/icons/fa/FaPaperclip.js +0 -16
  474. package/dist/icons/fa/FaPlus.js +0 -16
  475. package/dist/icons/fa/FaPowerOff.js +0 -16
  476. package/dist/icons/fa/FaPrint.js +0 -16
  477. package/dist/icons/fa/FaQrcode.js +0 -16
  478. package/dist/icons/fa/FaQuestionCircle.js +0 -16
  479. package/dist/icons/fa/FaRedhat.js +0 -16
  480. package/dist/icons/fa/FaRegCircle.js +0 -16
  481. package/dist/icons/fa/FaRegFileImage.js +0 -16
  482. package/dist/icons/fa/FaRegFolder.js +0 -16
  483. package/dist/icons/fa/FaRobot.js +0 -16
  484. package/dist/icons/fa/FaRocket.js +0 -16
  485. package/dist/icons/fa/FaRunning.js +0 -16
  486. package/dist/icons/fa/FaSafari.js +0 -16
  487. package/dist/icons/fa/FaSave.js +0 -16
  488. package/dist/icons/fa/FaSearch.js +0 -16
  489. package/dist/icons/fa/FaShieldAlt.js +0 -16
  490. package/dist/icons/fa/FaSlack.js +0 -16
  491. package/dist/icons/fa/FaStar.js +0 -16
  492. package/dist/icons/fa/FaStop.js +0 -16
  493. package/dist/icons/fa/FaSuse.js +0 -16
  494. package/dist/icons/fa/FaTerminal.js +0 -16
  495. package/dist/icons/fa/FaTimes.js +0 -16
  496. package/dist/icons/fa/FaUbuntu.js +0 -16
  497. package/dist/icons/fa/FaUndoAlt.js +0 -16
  498. package/dist/icons/fa/FaUnlink.js +0 -16
  499. package/dist/icons/fa/FaUser.js +0 -16
  500. package/dist/icons/fa/FaUsers.js +0 -16
  501. package/dist/icons/fa/FaWindows.js +0 -16
  502. package/dist/icons/fa6/FaApple.js +0 -16
  503. package/dist/icons/fa6/FaArrowsRotate.js +0 -16
  504. package/dist/icons/fa6/FaDebian.js +0 -16
  505. package/dist/icons/fa6/FaFilterCircleXmark.js +0 -16
  506. package/dist/icons/fa6/FaInbox.js +0 -16
  507. package/dist/icons/fa6/FaLocationDot.js +0 -16
  508. package/dist/icons/fa6/FaRegFilePdf.js +0 -16
  509. package/dist/icons/fa6/FaRegFolderOpen.js +0 -16
  510. package/dist/icons/fa6/FaUpRightFromSquare.js +0 -16
  511. package/dist/icons/fa6/FaWandMagicSparkles.js +0 -16
  512. package/dist/icons/fa6/FaXTwitter.js +0 -16
  513. package/dist/icons/fi/FiActivity.js +0 -23
  514. package/dist/icons/fi/FiAlertCircle.js +0 -49
  515. package/dist/icons/fi/FiChevronDown.js +0 -23
  516. package/dist/icons/fi/FiClock.js +0 -31
  517. package/dist/icons/fi/FiCopy.js +0 -34
  518. package/dist/icons/fi/FiDownload.js +0 -40
  519. package/dist/icons/fi/FiFile.js +0 -27
  520. package/dist/icons/fi/FiFileText.js +0 -55
  521. package/dist/icons/fi/FiHardDrive.js +0 -55
  522. package/dist/icons/fi/FiRotateCcw.js +0 -27
  523. package/dist/icons/fi/FiUpload.js +0 -40
  524. package/dist/icons/fi/FiX.js +0 -37
  525. package/dist/icons/fi/FiZap.js +0 -23
  526. package/dist/icons/gi/GiSpy.js +0 -16
  527. package/dist/icons/go/GoGitCommit.js +0 -16
  528. package/dist/icons/go/GoGitPullRequest.js +0 -20
  529. package/dist/icons/go/GoIssueOpened.js +0 -16
  530. package/dist/icons/go/GoPlus.js +0 -16
  531. package/dist/icons/go/GoRepoForked.js +0 -28
  532. package/dist/icons/go/GoSignOut.js +0 -16
  533. package/dist/icons/go/GoSkip.js +0 -20
  534. package/dist/icons/go/GoVideo.js +0 -20
  535. package/dist/icons/gr/GrCloudComputer.js +0 -20
  536. package/dist/icons/gr/GrInbox.js +0 -20
  537. package/dist/icons/gr/GrServerCluster.js +0 -20
  538. package/dist/icons/gr/GrStorage.js +0 -20
  539. package/dist/icons/gr/GrTasks.js +0 -20
  540. package/dist/icons/hi/HiCog.js +0 -24
  541. package/dist/icons/hi/HiDuplicate.js +0 -24
  542. package/dist/icons/hi/HiOutlineArchive.js +0 -26
  543. package/dist/icons/hi/HiOutlineClipboardCopy.js +0 -26
  544. package/dist/icons/hi/HiOutlineHome.js +0 -26
  545. package/dist/icons/hi/HiQuestionMarkCircle.js +0 -24
  546. package/dist/icons/hi/HiServer.js +0 -24
  547. package/dist/icons/hi2/HiMiniCheckCircle.js +0 -24
  548. package/dist/icons/hi2/HiMiniLanguage.js +0 -28
  549. package/dist/icons/hi2/HiMiniMinusCircle.js +0 -24
  550. package/dist/icons/hi2/HiMiniXCircle.js +0 -24
  551. package/dist/icons/hi2/HiSparkles.js +0 -24
  552. package/dist/icons/im/ImSpinner5.js +0 -19
  553. package/dist/icons/io/IoIosNotifications.js +0 -16
  554. package/dist/icons/io/IoMdBuild.js +0 -16
  555. package/dist/icons/io/IoMdClose.js +0 -16
  556. package/dist/icons/io5/IoCloudUploadOutline.js +0 -32
  557. package/dist/icons/io5/IoDocumentTextOutline.js +0 -31
  558. package/dist/icons/io5/IoFileTrayFullOutline.js +0 -31
  559. package/dist/icons/io5/IoHeart.js +0 -16
  560. package/dist/icons/io5/IoHeartDislike.js +0 -16
  561. package/dist/icons/io5/IoHeartOutline.js +0 -22
  562. package/dist/icons/io5/IoInformationCircleOutline.js +0 -50
  563. package/dist/icons/io5/IoSettingsOutline.js +0 -22
  564. package/dist/icons/io5/IoWarningOutline.js +0 -40
  565. package/dist/icons/lu/LuArrowRight.js +0 -27
  566. package/dist/icons/lu/LuBadgeCheck.js +0 -27
  567. package/dist/icons/lu/LuBraces.js +0 -27
  568. package/dist/icons/lu/LuBrainCircuit.js +0 -101
  569. package/dist/icons/lu/LuCalendar.js +0 -46
  570. package/dist/icons/lu/LuCheck.js +0 -23
  571. package/dist/icons/lu/LuChevronLeft.js +0 -23
  572. package/dist/icons/lu/LuChevronRight.js +0 -23
  573. package/dist/icons/lu/LuCode.js +0 -27
  574. package/dist/icons/lu/LuExternalLink.js +0 -35
  575. package/dist/icons/lu/LuEye.js +0 -31
  576. package/dist/icons/lu/LuEyeOff.js +0 -40
  577. package/dist/icons/lu/LuFolderTree.js +0 -40
  578. package/dist/icons/lu/LuIdCard.js +0 -55
  579. package/dist/icons/lu/LuKeyboard.js +0 -71
  580. package/dist/icons/lu/LuLogs.js +0 -65
  581. package/dist/icons/lu/LuMail.js +0 -33
  582. package/dist/icons/lu/LuMegaphone.js +0 -27
  583. package/dist/icons/lu/LuMoon.js +0 -23
  584. package/dist/icons/lu/LuNetwork.js +0 -63
  585. package/dist/icons/lu/LuPartyPopper.js +0 -65
  586. package/dist/icons/lu/LuSettings2.js +0 -48
  587. package/dist/icons/lu/LuSheet.js +0 -72
  588. package/dist/icons/lu/LuShield.js +0 -23
  589. package/dist/icons/lu/LuSun.js +0 -69
  590. package/dist/icons/lu/LuTextCursorInput.js +0 -45
  591. package/dist/icons/lu/LuX.js +0 -27
  592. package/dist/icons/lu/LuZoomIn.js +0 -59
  593. package/dist/icons/lu/LuZoomOut.js +0 -49
  594. package/dist/icons/md/MdClear.js +0 -23
  595. package/dist/icons/md/MdDragHandle.js +0 -23
  596. package/dist/icons/md/MdInstallDesktop.js +0 -31
  597. package/dist/icons/md/MdOutlineAttachMoney.js +0 -23
  598. package/dist/icons/md/MdOutlineMoneyOff.js +0 -23
  599. package/dist/icons/md/MdPieChart.js +0 -23
  600. package/dist/icons/md/MdRefresh.js +0 -23
  601. package/dist/icons/md/MdReplay.js +0 -23
  602. package/dist/icons/md/MdSmartphone.js +0 -23
  603. package/dist/icons/pi/PiArrowBendUpRightBold.js +0 -19
  604. package/dist/icons/pi/PiPlugsConnectedFill.js +0 -19
  605. package/dist/icons/pi/PiRectangleDashed.js +0 -19
  606. package/dist/icons/pi/PiShareBold.js +0 -19
  607. package/dist/icons/si/SiAnthropic.js +0 -19
  608. package/dist/icons/si/SiHelm.js +0 -19
  609. package/dist/icons/si/SiKubernetes.js +0 -19
  610. package/dist/icons/tb/TbAlertTriangle.js +0 -35
  611. package/dist/icons/tb/TbAlertTriangleFilled.js +0 -19
  612. package/dist/icons/tb/TbApi.js +0 -40
  613. package/dist/icons/tb/TbBrain.js +0 -50
  614. package/dist/icons/tb/TbBuildingTunnel.js +0 -65
  615. package/dist/icons/tb/TbEdit.js +0 -35
  616. package/dist/icons/tb/TbLayoutSidebar.js +0 -27
  617. package/dist/icons/tb/TbLayoutSidebarLeftCollapse.js +0 -35
  618. package/dist/icons/tb/TbLayoutSidebarRightCollapse.js +0 -35
  619. package/dist/icons/tb/TbUser.js +0 -27
  620. package/dist/icons/tb/TbUserOff.js +0 -35
  621. package/dist/icons/tb/TbWorldShare.js +0 -55
  622. package/dist/icons/tb/TbWorldWww.js +0 -65
  623. package/dist/icons/ti/TiArrowSortedDown.js +0 -20
  624. package/dist/icons/ti/TiArrowSortedUp.js +0 -20
  625. package/dist/icons/ti/TiArrowUnsorted.js +0 -20
  626. package/dist/icons/ti/TiCancel.js +0 -20
  627. package/dist/icons/vsc/VscChromeMinimize.js +0 -19
  628. package/dist/icons/vsc/VscJson.js +0 -19
  629. package/dist/icons/vsc/VscLayoutSidebarLeft.js +0 -19
  630. package/dist/icons/vsc/VscPass.js +0 -27
  631. package/dist/icons/vsc/VscSplitHorizontal.js +0 -19
  632. package/dist/icons/vsc/VscTerminalPowershell.js +0 -19
  633. package/dist/list/ListPager.d.ts +0 -14
  634. package/dist/list/ListPager.js +0 -62
  635. package/dist/list/textEntry.d.ts +0 -2
  636. package/dist/list/textEntry.js +0 -10
  637. /package/dist/{ai/ui/codeBreaks.d.ts → components/markdownCodeBreaks.d.ts} +0 -0
@@ -0,0 +1,12 @@
1
+ import type { RunStatus } from '../engine.js';
2
+ import { type Tone } from './tone.js';
3
+ /** The tone a run status reads in, so a badge that says the status in words matches the
4
+ * icon: `<StatusBadge variant={runStatusTone(status)}>`. */
5
+ export declare function runStatusTone(status: RunStatus): Tone;
6
+ /** A run's, job's or step's status as an icon in its tone, beside the name of what ran. It
7
+ * is named by `strings.dag.statusLabel`. To say the status in words, use `StatusBadge` with
8
+ * `runStatusTone`. */
9
+ export declare function RunStatusIcon({ status, className, }: {
10
+ status: RunStatus;
11
+ className?: string | undefined;
12
+ }): import("react").JSX.Element;
@@ -0,0 +1,84 @@
1
+ import { cx } from "../cx.js";
2
+ import { CancelIcon, FailIcon, NotRunningIcon, RunningIcon, SkipIcon, SuccessIcon } from "../icons.js";
3
+ import { toneText } from "./tone.js";
4
+ import { useStrings } from "./Provider.js";
5
+ import { jsx } from "react/jsx-runtime";
6
+ //#region src/components/RunStatusIcon.tsx
7
+ var looks = {
8
+ started: {
9
+ tone: "warning",
10
+ icon: RunningIcon,
11
+ spin: true
12
+ },
13
+ running: {
14
+ tone: "warning",
15
+ icon: RunningIcon,
16
+ spin: true
17
+ },
18
+ completed: {
19
+ tone: "success",
20
+ icon: SuccessIcon
21
+ },
22
+ failed: {
23
+ tone: "error",
24
+ icon: FailIcon
25
+ },
26
+ error: {
27
+ tone: "error",
28
+ icon: FailIcon
29
+ },
30
+ skipped: {
31
+ tone: "muted",
32
+ icon: SkipIcon
33
+ },
34
+ "skipped-failed": {
35
+ tone: "muted",
36
+ icon: SkipIcon
37
+ },
38
+ canceled: {
39
+ tone: "info",
40
+ icon: CancelIcon
41
+ },
42
+ faulted: {
43
+ tone: "error",
44
+ icon: RunningIcon,
45
+ spin: true
46
+ },
47
+ canceling: {
48
+ tone: "info",
49
+ icon: RunningIcon,
50
+ spin: true
51
+ },
52
+ "": {
53
+ tone: "muted",
54
+ icon: NotRunningIcon
55
+ }
56
+ };
57
+ /** The tone a run status reads in, so a badge that says the status in words matches the
58
+ * icon: `<StatusBadge variant={runStatusTone(status)}>`. */
59
+ function runStatusTone(status) {
60
+ return looks[status ?? ""].tone;
61
+ }
62
+ /** A run's, job's or step's status as an icon in its tone, beside the name of what ran. It
63
+ * is named by `strings.dag.statusLabel`. To say the status in words, use `StatusBadge` with
64
+ * `runStatusTone`. */
65
+ function RunStatusIcon({ status, className }) {
66
+ const { dag } = useStrings();
67
+ const look = looks[status ?? ""];
68
+ const Icon = look.icon;
69
+ const label = dag.statusLabel(status ?? "");
70
+ return /* @__PURE__ */ jsx("span", {
71
+ ...label ? {
72
+ role: "img",
73
+ "aria-label": label
74
+ } : { "aria-hidden": true },
75
+ "data-status": status || "not-run",
76
+ className: cx("flex h-2 items-center", toneText[look.tone], className),
77
+ children: /* @__PURE__ */ jsx(Icon, {
78
+ "aria-hidden": "true",
79
+ className: cx(look.spin && "animate-spin rounded-full")
80
+ })
81
+ });
82
+ }
83
+ //#endregion
84
+ export { RunStatusIcon, runStatusTone };
@@ -0,0 +1,16 @@
1
+ import type { InputHTMLAttributes, Ref } from 'react';
2
+ import { type FieldBoxSize } from './fieldBox.js';
3
+ export interface SearchInputProps extends Omit<InputHTMLAttributes<HTMLInputElement>, 'value' | 'defaultValue' | 'onChange' | 'size' | 'type' | 'className'> {
4
+ value: string;
5
+ onValueChange: (value: string) => void;
6
+ /** Names the box, and is its placeholder unless `placeholder` says otherwise. */
7
+ label?: string | undefined;
8
+ size?: FieldBoxSize | undefined;
9
+ /** On the wrapper: its width or margin. */
10
+ className?: string | undefined;
11
+ ref?: Ref<HTMLInputElement> | undefined;
12
+ }
13
+ /** A box that narrows what is shown as you type, such as a panel's rows or a log's lines.
14
+ * A clear button empties it, and so does Escape, without closing the dialog it sits in. For
15
+ * a list page's toolbar, which keeps search terms and opens on ⌘F, use `ListSearchControl`. */
16
+ export declare function SearchInput({ value, onValueChange, label, placeholder, size, className, onKeyDown, ref, ...props }: SearchInputProps): import("react").JSX.Element;
@@ -0,0 +1,52 @@
1
+ import { cx } from "../cx.js";
2
+ import { CloseIcon, SearchIcon } from "../icons.js";
3
+ import { useStrings } from "./Provider.js";
4
+ import { fieldBox } from "./fieldBox.js";
5
+ import { jsx, jsxs } from "react/jsx-runtime";
6
+ //#region src/components/SearchInput.tsx
7
+ /** A box that narrows what is shown as you type, such as a panel's rows or a log's lines.
8
+ * A clear button empties it, and so does Escape, without closing the dialog it sits in. For
9
+ * a list page's toolbar, which keeps search terms and opens on ⌘F, use `ListSearchControl`. */
10
+ function SearchInput({ value, onValueChange, label, placeholder, size = "md", className, onKeyDown, ref, ...props }) {
11
+ const { common } = useStrings();
12
+ const name = label ?? common.search;
13
+ const small = size === "sm";
14
+ return /* @__PURE__ */ jsxs("div", {
15
+ className: cx("relative flex items-center", className),
16
+ children: [
17
+ /* @__PURE__ */ jsx(SearchIcon, {
18
+ "aria-hidden": "true",
19
+ className: cx("pointer-events-none absolute text-(--theme-muted-text-color)", small ? "left-2 size-3" : "left-2.5 size-3.5")
20
+ }),
21
+ /* @__PURE__ */ jsx("input", {
22
+ ...props,
23
+ ref,
24
+ type: "search",
25
+ "aria-label": name,
26
+ placeholder: placeholder ?? name,
27
+ value,
28
+ onChange: (e) => onValueChange(e.target.value),
29
+ onKeyDown: (e) => {
30
+ onKeyDown?.(e);
31
+ if (e.key === "Escape" && value && !e.defaultPrevented) {
32
+ e.stopPropagation();
33
+ onValueChange("");
34
+ }
35
+ },
36
+ className: cx(fieldBox({ size }), "[&::-webkit-search-cancel-button]:appearance-none", small ? "pl-6 pr-6" : "pl-8 pr-8")
37
+ }),
38
+ value && /* @__PURE__ */ jsx("button", {
39
+ type: "button",
40
+ "aria-label": common.clearSearch,
41
+ onClick: () => onValueChange(""),
42
+ className: "absolute right-1 flex size-6 cursor-pointer items-center justify-center rounded text-(--theme-muted-text-color) hover:text-(--theme-app)",
43
+ children: /* @__PURE__ */ jsx(CloseIcon, {
44
+ "aria-hidden": "true",
45
+ className: "size-3"
46
+ })
47
+ })
48
+ ]
49
+ });
50
+ }
51
+ //#endregion
52
+ export { SearchInput };
@@ -0,0 +1,28 @@
1
+ import type { ReactNode } from 'react';
2
+ export type SectionVariant = 'plain' | 'card';
3
+ export interface SectionProps {
4
+ title: ReactNode;
5
+ /** Beside the title, outside the toggle, such as an info tip or a count. */
6
+ beside?: ReactNode;
7
+ /** At the header's far end, such as an add button or a range picker. */
8
+ actions?: ReactNode;
9
+ /** `plain` rules the title off from the content under it; `card` frames the
10
+ * section as a panel. */
11
+ variant?: SectionVariant | undefined;
12
+ /** False shows the content always, under a title that doesn't fold. */
13
+ collapsible?: boolean | undefined;
14
+ /** Hold the state, such as a remembered preference, with `open` and
15
+ * `onOpenChange`; or leave it to the section with `defaultOpen`. */
16
+ open?: boolean | undefined;
17
+ onOpenChange?: ((open: boolean) => void) | undefined;
18
+ defaultOpen?: boolean | undefined;
19
+ /** The heading level the title sits at in the page's outline. */
20
+ headingLevel?: 2 | 3 | 4 | undefined;
21
+ className?: string | undefined;
22
+ children: ReactNode;
23
+ }
24
+ /** A titled part of a page or form, its title a heading in the page's outline,
25
+ * that can fold away. Folding keeps the content mounted, so fields hold their
26
+ * values and validation while closed. For a line inside content that reveals
27
+ * more detail, use Disclosure. */
28
+ export declare function Section({ title, beside, actions, variant, collapsible, open, onOpenChange, defaultOpen, headingLevel, className, children, }: SectionProps): import("react").JSX.Element;
@@ -0,0 +1,76 @@
1
+ import { cx } from "../cx.js";
2
+ import { ChevronRightIcon } from "../icons.js";
3
+ import { collapsePanelClassName } from "./Disclosure.js";
4
+ import { jsx, jsxs } from "react/jsx-runtime";
5
+ import { Collapsible } from "@base-ui/react/collapsible";
6
+ //#region src/components/Section.tsx
7
+ var rootClasses = {
8
+ plain: "flex w-full flex-col",
9
+ card: "group/section panel mb-1 flex w-full flex-col"
10
+ };
11
+ var headerClasses = {
12
+ plain: "mb-2 flex w-full items-center gap-2 border-b border-(--theme-border) pb-1",
13
+ card: "flex w-full items-center gap-2 px-2 py-3"
14
+ };
15
+ var titleClasses = {
16
+ plain: "text-lg font-semibold",
17
+ card: "text-sm font-bold text-(--theme-muted-text-color) group-data-open/section:text-inherit"
18
+ };
19
+ /** A titled part of a page or form, its title a heading in the page's outline,
20
+ * that can fold away. Folding keeps the content mounted, so fields hold their
21
+ * values and validation while closed. For a line inside content that reveals
22
+ * more detail, use Disclosure. */
23
+ function Section({ title, beside, actions, variant = "plain", collapsible = true, open, onOpenChange, defaultOpen = true, headingLevel = 3, className, children }) {
24
+ const Heading = `h${headingLevel}`;
25
+ const end = actions && /* @__PURE__ */ jsx("div", {
26
+ className: "ml-auto flex items-center gap-2",
27
+ children: actions
28
+ });
29
+ const titleProps = { "data-section-title": "" };
30
+ const fill = !beside && !actions;
31
+ if (!collapsible) return /* @__PURE__ */ jsxs("section", {
32
+ className: cx(rootClasses[variant], className),
33
+ children: [/* @__PURE__ */ jsxs("div", {
34
+ className: headerClasses[variant],
35
+ children: [
36
+ /* @__PURE__ */ jsx(Heading, {
37
+ ...titleProps,
38
+ className: cx("flex items-center", titleClasses[variant]),
39
+ children: title
40
+ }),
41
+ beside,
42
+ end
43
+ ]
44
+ }), children]
45
+ });
46
+ return /* @__PURE__ */ jsxs(Collapsible.Root, {
47
+ open,
48
+ onOpenChange: (next) => onOpenChange?.(next),
49
+ defaultOpen,
50
+ className: cx(rootClasses[variant], className),
51
+ children: [/* @__PURE__ */ jsxs("div", {
52
+ className: headerClasses[variant],
53
+ children: [
54
+ /* @__PURE__ */ jsx(Heading, {
55
+ className: cx("flex min-w-0", fill && "flex-1"),
56
+ children: /* @__PURE__ */ jsxs(Collapsible.Trigger, {
57
+ ...titleProps,
58
+ className: cx("group flex min-w-0 cursor-pointer items-center gap-1 text-left", fill && "w-full", titleClasses[variant]),
59
+ children: [/* @__PURE__ */ jsx(ChevronRightIcon, {
60
+ "aria-hidden": "true",
61
+ className: cx("shrink-0 transition-transform group-data-panel-open:rotate-90 motion-reduce:transition-none", "px-1 text-[1.25rem]")
62
+ }), title]
63
+ })
64
+ }),
65
+ beside,
66
+ end
67
+ ]
68
+ }), /* @__PURE__ */ jsx(Collapsible.Panel, {
69
+ keepMounted: true,
70
+ className: collapsePanelClassName,
71
+ children
72
+ })]
73
+ });
74
+ }
75
+ //#endregion
76
+ export { Section };
@@ -1,25 +1,21 @@
1
1
  import type { ReactNode } from 'react';
2
+ import { type SegmentLayout } from './segmented.js';
2
3
  export interface SegmentedOption<T extends string> {
3
4
  value: T;
4
5
  label: string;
5
6
  icon?: ReactNode;
6
7
  /** Beside the label, or in the corner when only the icon shows. */
7
8
  badge?: ReactNode;
8
- /** Navigates instead of choosing, for segments that are pages. */
9
- href?: string;
10
9
  testId?: string;
11
10
  }
12
- /** A few mutually exclusive choices side by side, one always current. With
13
- * `iconOnly` the segments stack as icons with their labels in tooltips, for
14
- * a collapsed rail. Segments with `href` are pages, so the control becomes
15
- * navigation. */
16
- export declare function SegmentedControl<T extends string>({ label, options, value, onValueChange, fill, iconOnly, testId, }: {
17
- label: string;
11
+ /** A few mutually exclusive choices side by side, one always current, such as
12
+ * a time range or what to group by. To move between views or pages, use
13
+ * `Tabs` with `variant="segmented"`, which looks the same. Name it with
14
+ * `label`, or leave that out inside a `Field group`, whose legend names it. */
15
+ export declare function SegmentedControl<T extends string>({ label, options, value, onValueChange, fill, iconOnly, testId, }: SegmentLayout & {
16
+ label?: string | undefined;
18
17
  options: SegmentedOption<T>[];
19
18
  value: T;
20
19
  onValueChange?: (value: T) => void;
21
- /** Segments share the container's width equally. */
22
- fill?: boolean;
23
- iconOnly?: boolean;
24
20
  testId?: string;
25
21
  }): import("react").JSX.Element;
@@ -1,72 +1,41 @@
1
1
  import { Tooltip } from "./Tooltip.js";
2
- import { useLink } from "./Provider.js";
3
- import { clsx } from "clsx";
4
- import { Fragment, jsx, jsxs } from "react/jsx-runtime";
2
+ import { SegmentContent, segmentClassName, segmentGroupClassName } from "./segmented.js";
3
+ import { jsx } from "react/jsx-runtime";
5
4
  import { Toggle } from "@base-ui/react/toggle";
6
5
  import { ToggleGroup } from "@base-ui/react/toggle-group";
7
6
  //#region src/components/SegmentedControl.tsx
8
- var itemBase = "relative flex min-w-0 items-center justify-center rounded-md font-medium transition-colors duration-150 focus-visible:outline-2 focus-visible:outline-offset-1 focus-visible:outline-(--theme-link)";
9
- var itemCurrent = "bg-(--theme-panel-bg) theme-text shadow-sm ring-1 ring-(--theme-border)";
10
- var itemIdle = "theme-muted-text hover:theme-text hover:bg-(--theme-hover)";
11
- /** A few mutually exclusive choices side by side, one always current. With
12
- * `iconOnly` the segments stack as icons with their labels in tooltips, for
13
- * a collapsed rail. Segments with `href` are pages, so the control becomes
14
- * navigation. */
7
+ /** A few mutually exclusive choices side by side, one always current, such as
8
+ * a time range or what to group by. To move between views or pages, use
9
+ * `Tabs` with `variant="segmented"`, which looks the same. Name it with
10
+ * `label`, or leave that out inside a `Field group`, whose legend names it. */
15
11
  function SegmentedControl({ label, options, value, onValueChange, fill = false, iconOnly = false, testId }) {
16
- const Link = useLink();
17
- const links = options.some((o) => o.href);
18
- const items = options.map((option) => {
19
- const current = option.value === value;
20
- const className = clsx(itemBase, current ? itemCurrent : itemIdle, iconOnly ? "h-8 w-8" : clsx("h-7 gap-1.5 text-[13px]", fill ? "px-1.5" : "px-2.5"));
21
- const content = /* @__PURE__ */ jsxs(Fragment, { children: [
22
- option.icon,
23
- iconOnly ? /* @__PURE__ */ jsx("span", {
24
- className: "sr-only",
25
- children: option.label
26
- }) : /* @__PURE__ */ jsx("span", {
27
- className: "truncate",
28
- children: option.label
29
- }),
30
- option.badge && (iconOnly ? /* @__PURE__ */ jsx("span", {
31
- className: "absolute top-1 right-1 inline-flex",
32
- children: option.badge
33
- }) : option.badge)
34
- ] });
35
- return /* @__PURE__ */ jsx(Tooltip, {
36
- content: option.label,
37
- side: "right",
38
- disabled: !iconOnly,
39
- children: option.href ? /* @__PURE__ */ jsx(Link, {
40
- href: option.href,
41
- "aria-current": current ? "page" : void 0,
42
- "data-testid": option.testId,
43
- className,
44
- children: content
45
- }) : /* @__PURE__ */ jsx(Toggle, {
46
- value: option.value,
47
- "data-testid": option.testId,
48
- className,
49
- children: content
50
- })
51
- }, option.value);
52
- });
53
- const groupClassName = clsx("gap-0.5", iconOnly ? "flex flex-col items-center" : clsx("rounded-lg theme-muted-panel p-0.5", fill ? "grid auto-cols-fr grid-flow-col" : "inline-flex"));
54
- if (links) return /* @__PURE__ */ jsx("nav", {
55
- "aria-label": label,
56
- "data-testid": testId,
57
- className: groupClassName,
58
- children: items
59
- });
12
+ const layout = {
13
+ fill,
14
+ iconOnly
15
+ };
60
16
  return /* @__PURE__ */ jsx(ToggleGroup, {
61
17
  "aria-label": label,
62
18
  "data-testid": testId,
63
- className: groupClassName,
19
+ className: segmentGroupClassName(layout),
64
20
  orientation: iconOnly ? "vertical" : "horizontal",
65
21
  value: [value],
66
22
  onValueChange: ([next]) => {
67
23
  if (next !== void 0) onValueChange?.(next);
68
24
  },
69
- children: items
25
+ children: options.map((option) => /* @__PURE__ */ jsx(Tooltip, {
26
+ content: option.label,
27
+ side: "right",
28
+ disabled: !iconOnly,
29
+ children: /* @__PURE__ */ jsx(Toggle, {
30
+ value: option.value,
31
+ "data-testid": option.testId,
32
+ className: segmentClassName(option.value === value, layout),
33
+ children: /* @__PURE__ */ jsx(SegmentContent, {
34
+ ...option,
35
+ iconOnly
36
+ })
37
+ })
38
+ }, option.value))
70
39
  });
71
40
  }
72
41
  //#endregion
@@ -14,17 +14,21 @@ export type SelectProps<Value, Multiple extends boolean | undefined = false> = O
14
14
  /** Applied to the trigger. */
15
15
  className?: string | undefined;
16
16
  'aria-label'?: string | undefined;
17
+ 'aria-labelledby'?: string | undefined;
17
18
  'aria-describedby'?: string | undefined;
18
19
  'aria-invalid'?: boolean | undefined;
20
+ 'aria-required'?: boolean | undefined;
19
21
  /** Renders the field as this button, for compact pickers such as a toolbar pill. The
20
22
  * button shows the selection itself; `placeholder` and `className` then go unused. */
21
23
  trigger?: ReactElement | undefined;
22
24
  /** A hint on the trigger button. */
23
25
  triggerTooltip?: ReactNode;
26
+ /** `sm` for dense places such as toolbars and table cells. */
27
+ size?: 'sm' | 'md' | undefined;
24
28
  /** The item a person is on as they move through the open list, then undefined once it
25
29
  * closes, such as to preview a theme before it is chosen. */
26
30
  onItemHighlighted?: ((value: Value | undefined) => void) | undefined;
27
31
  };
28
32
  /** Picks one value, or several with `multiple`, from a short list. Use
29
33
  * Combobox when the list is long enough to need filtering. */
30
- export declare function Select<Value, Multiple extends boolean | undefined = false>({ items, placeholder, className, 'aria-label': ariaLabel, 'aria-describedby': describedBy, 'aria-invalid': invalid, trigger, triggerTooltip, onItemHighlighted, ...rootProps }: SelectProps<Value, Multiple>): import("react").JSX.Element;
34
+ export declare function Select<Value, Multiple extends boolean | undefined = false>({ items, placeholder, className, 'aria-label': ariaLabel, 'aria-labelledby': labelledBy, 'aria-describedby': describedBy, 'aria-invalid': invalid, 'aria-required': required, trigger, triggerTooltip, size, onItemHighlighted, ...rootProps }: SelectProps<Value, Multiple>): import("react").JSX.Element;
@@ -1,20 +1,22 @@
1
- import { FaAngleDown } from "../icons/fa/FaAngleDown.js";
2
- import { FaCheck } from "../icons/fa/FaCheck.js";
3
- import { panelClassName, panelItemClassName, portalContainer, positionerClassName } from "./floating.js";
1
+ import { cx } from "../cx.js";
2
+ import { CheckIcon, ChevronDownIcon } from "../icons.js";
3
+ import { panelClassName, panelItemClassName, positionerClassName } from "./floating.js";
4
4
  import { Tooltip } from "./Tooltip.js";
5
- import { clsx } from "clsx";
5
+ import { fieldBox } from "./fieldBox.js";
6
6
  import { jsx, jsxs } from "react/jsx-runtime";
7
7
  import { Select } from "@base-ui/react/select";
8
8
  //#region src/components/Select.tsx
9
- var triggerClassName = clsx("flex w-full items-center justify-between gap-2 rounded-md border border-(--theme-border) bg-(--theme-input-bg) py-2 pl-3 pr-2 text-left text-sm text-(--theme-app) cursor-pointer outline-none", "focus-visible:border-(--theme-element) focus-visible:ring-1 focus-visible:ring-(--theme-element)", "aria-invalid:border-(--theme-error) data-disabled:cursor-not-allowed data-disabled:bg-(--theme-input-disabled-bg) data-disabled:text-(--theme-input-disabled-text)");
9
+ var triggerClassName = "flex cursor-pointer items-center justify-between gap-2 pr-1.5 text-left";
10
10
  /** Picks one value, or several with `multiple`, from a short list. Use
11
11
  * Combobox when the list is long enough to need filtering. */
12
- function Select$1({ items, placeholder, className, "aria-label": ariaLabel, "aria-describedby": describedBy, "aria-invalid": invalid, trigger, triggerTooltip, onItemHighlighted, ...rootProps }) {
12
+ function Select$1({ items, placeholder, className, "aria-label": ariaLabel, "aria-labelledby": labelledBy, "aria-describedby": describedBy, "aria-invalid": invalid, "aria-required": required, trigger, triggerTooltip, size = "md", onItemHighlighted, ...rootProps }) {
13
13
  const labelOf = (value) => items.find((item) => Object.is(item.value, value))?.label;
14
14
  const triggerProps = {
15
15
  "aria-label": ariaLabel,
16
+ "aria-labelledby": labelledBy,
16
17
  "aria-describedby": describedBy,
17
- "aria-invalid": invalid || void 0
18
+ "aria-invalid": invalid || void 0,
19
+ "aria-required": required || void 0
18
20
  };
19
21
  return /* @__PURE__ */ jsxs(Select.Root, {
20
22
  items,
@@ -31,52 +33,49 @@ function Select$1({ items, placeholder, className, "aria-label": ariaLabel, "ari
31
33
  })
32
34
  }) : /* @__PURE__ */ jsxs(Select.Trigger, {
33
35
  ...triggerProps,
34
- className: clsx(triggerClassName, className),
36
+ className: cx(fieldBox({ size }), triggerClassName, className),
35
37
  children: [/* @__PURE__ */ jsx(Select.Value, {
36
38
  placeholder,
37
39
  className: "truncate data-placeholder:text-(--theme-muted-text-color)",
38
40
  children: rootProps.multiple ? (values) => values.length > 0 ? values.map(labelOf).join(", ") : placeholder : void 0
39
41
  }), /* @__PURE__ */ jsx(Select.Icon, {
40
42
  className: "shrink-0 text-(--theme-muted-text-color)",
41
- children: /* @__PURE__ */ jsx(FaAngleDown, { "aria-hidden": "true" })
43
+ children: /* @__PURE__ */ jsx(ChevronDownIcon, { "aria-hidden": "true" })
42
44
  })]
43
- }), /* @__PURE__ */ jsx(Select.Portal, {
44
- container: portalContainer(),
45
- children: /* @__PURE__ */ jsx(Select.Positioner, {
46
- alignItemWithTrigger: false,
47
- sideOffset: 4,
48
- className: positionerClassName,
49
- children: /* @__PURE__ */ jsx(Select.Popup, {
50
- className: clsx("min-w-(--anchor-width) max-w-[min(20rem,var(--available-width))]", panelClassName),
51
- children: /* @__PURE__ */ jsx(Select.List, {
52
- className: "max-h-[min(15rem,var(--available-height))] overflow-y-auto py-1",
53
- children: items.map((item) => /* @__PURE__ */ jsxs(Select.Item, {
54
- value: item.value,
55
- disabled: item.disabled,
56
- className: clsx("grid grid-cols-[1rem_1fr]", panelItemClassName),
57
- onFocus: onItemHighlighted && (() => onItemHighlighted(item.value)),
58
- children: [
59
- /* @__PURE__ */ jsx(Select.ItemIndicator, {
60
- className: "col-start-1",
61
- children: /* @__PURE__ */ jsx(FaCheck, { className: "size-3.5" })
62
- }),
63
- /* @__PURE__ */ jsxs("span", {
64
- className: "col-start-2 flex min-w-0 items-center gap-2",
65
- children: [item.icon, /* @__PURE__ */ jsx(Select.ItemText, {
66
- className: "truncate",
67
- children: item.label
68
- })]
69
- }),
70
- item.description && /* @__PURE__ */ jsx("span", {
71
- className: "col-start-2 text-xs text-(--theme-muted-text-color)",
72
- children: item.description
73
- })
74
- ]
75
- }, String(item.value)))
76
- })
45
+ }), /* @__PURE__ */ jsx(Select.Portal, { children: /* @__PURE__ */ jsx(Select.Positioner, {
46
+ alignItemWithTrigger: false,
47
+ sideOffset: 4,
48
+ className: positionerClassName,
49
+ children: /* @__PURE__ */ jsx(Select.Popup, {
50
+ className: cx("min-w-(--anchor-width) max-w-[min(20rem,var(--available-width))]", panelClassName),
51
+ children: /* @__PURE__ */ jsx(Select.List, {
52
+ className: "max-h-[min(15rem,var(--available-height))] overflow-y-auto py-1",
53
+ children: items.map((item) => /* @__PURE__ */ jsxs(Select.Item, {
54
+ value: item.value,
55
+ disabled: item.disabled,
56
+ onFocus: onItemHighlighted && (() => onItemHighlighted(item.value)),
57
+ className: cx("grid grid-cols-[1rem_1fr]", panelItemClassName),
58
+ children: [
59
+ /* @__PURE__ */ jsx(Select.ItemIndicator, {
60
+ className: "col-start-1",
61
+ children: /* @__PURE__ */ jsx(CheckIcon, { className: "size-3.5" })
62
+ }),
63
+ /* @__PURE__ */ jsxs("span", {
64
+ className: "col-start-2 flex min-w-0 items-center gap-2",
65
+ children: [item.icon, /* @__PURE__ */ jsx(Select.ItemText, {
66
+ className: "truncate",
67
+ children: item.label
68
+ })]
69
+ }),
70
+ item.description && /* @__PURE__ */ jsx("span", {
71
+ className: "col-start-2 text-xs text-(--theme-muted-text-color)",
72
+ children: item.description
73
+ })
74
+ ]
75
+ }, String(item.value)))
77
76
  })
78
77
  })
79
- })]
78
+ }) })]
80
79
  });
81
80
  }
82
81
  //#endregion
@@ -1,10 +1,8 @@
1
- /** A labeled + described choice in a SettingsCard, picking between modes (e.g.
2
- * default vs custom). Stack them in a `RadioGroup`, which holds the value;
3
- * stacked rows share the card's dividers via `isFirst`. */
4
- export declare function SettingModeOption({ value, label, description, isFirst, disabled, }: {
1
+ /** A named and described choice in a SettingsCard, picking between modes such
2
+ * as default or custom. Stack them in a `RadioGroup`, which holds the value. */
3
+ export declare function SettingModeOption({ value, label, description, disabled, }: {
5
4
  value: string;
6
5
  label: string;
7
6
  description: string;
8
- isFirst?: boolean;
9
7
  disabled?: boolean;
10
8
  }): import("react").JSX.Element;
@@ -1,13 +1,12 @@
1
+ import { cx } from "../cx.js";
1
2
  import { Radio } from "./Radio.js";
2
- import { clsx } from "clsx";
3
3
  import { jsx, jsxs } from "react/jsx-runtime";
4
4
  //#region src/components/SettingModeOption.tsx
5
- /** A labeled + described choice in a SettingsCard, picking between modes (e.g.
6
- * default vs custom). Stack them in a `RadioGroup`, which holds the value;
7
- * stacked rows share the card's dividers via `isFirst`. */
8
- function SettingModeOption({ value, label, description, isFirst, disabled }) {
5
+ /** A named and described choice in a SettingsCard, picking between modes such
6
+ * as default or custom. Stack them in a `RadioGroup`, which holds the value. */
7
+ function SettingModeOption({ value, label, description, disabled }) {
9
8
  return /* @__PURE__ */ jsxs("label", {
10
- className: clsx("flex items-start gap-3 px-5 py-4", disabled ? "cursor-default opacity-60" : "cursor-pointer", !isFirst && "border-t theme-border"),
9
+ className: cx("flex items-start gap-3 px-5 py-4", disabled ? "cursor-default opacity-60" : "cursor-pointer", "border-t border-(--theme-border) first:border-t-0"),
11
10
  children: [/* @__PURE__ */ jsx(Radio, {
12
11
  value,
13
12
  disabled,
@@ -1,24 +1,37 @@
1
1
  import type { ReactNode } from 'react';
2
- interface SettingsCardProps {
3
- /** Sentence-case section label above the card. Omit on the first card of a
4
- * page, where the page title already names the section. */
5
- title?: string;
2
+ export interface SettingsCardProps {
3
+ /** Names the card above it. Leave it out on a page's first card, where the
4
+ * page title already names it. */
5
+ title?: string | undefined;
6
6
  description?: ReactNode;
7
- /** Control rendered on the right of the section label (e.g. a small action). */
7
+ /** Beside the title, such as an add button; with `actionAlign="end"`, at the
8
+ * header's far edge, such as Save. */
8
9
  action?: ReactNode;
9
- /** 'adjacent' (default) sits the action next to the title (e.g. a `+`);
10
- * 'right' pushes it to the far edge of the header (e.g. a Save button). */
11
- actionAlign?: 'adjacent' | 'right';
12
- /** Let inner content (e.g. a dropdown menu) overflow the panel instead of
13
- * being clipped to its rounded corners. */
14
- overflowVisible?: boolean;
10
+ actionAlign?: 'beside' | 'end' | undefined;
11
+ /** Lets content such as an inline menu reach past the card's rounded edge. */
12
+ overflowVisible?: boolean | undefined;
13
+ className?: string | undefined;
14
+ /** SettingRows, and SettingsHeadings between groups of them. */
15
15
  children: ReactNode;
16
- className?: string;
17
16
  }
18
- /**
19
- * A settings card: an optional sentence-case section label sits above a
20
- * bordered panel of rows. The label carries the breathing-room rhythm between
21
- * cards; the rows inside provide their own dividers via SettingRow's `isFirst`.
22
- */
23
- export default function SettingsCard({ title, description, action, actionAlign, overflowVisible, children, className, }: SettingsCardProps): import("react").JSX.Element;
24
- export {};
17
+ /** A page's settings, grouped: a titled panel of SettingRows, each ruled off from
18
+ * the next. Cards stack with room between them. */
19
+ export declare function SettingsCard({ title, description, action, actionAlign, overflowVisible, className, children, }: SettingsCardProps): import("react").JSX.Element;
20
+ /** A heading between groups of rows inside a SettingsCard. */
21
+ export declare function SettingsHeading({ children }: {
22
+ children: ReactNode;
23
+ }): import("react").JSX.Element;
24
+ /** One setting in a SettingsCard: its name and help on the left, its control on
25
+ * the right, or under the name across the row with `fill`. */
26
+ export declare function SettingRow({ label, htmlFor, helpText, fill, onClick, children, }: {
27
+ label: string;
28
+ /** The control's id, so the name labels it. */
29
+ htmlFor?: string | undefined;
30
+ helpText?: ReactNode;
31
+ /** The control takes the row's width, as a text field does; otherwise it sits compact at the right. */
32
+ fill?: boolean | undefined;
33
+ /** Makes the whole row press its control, such as a switch. The control still
34
+ * handles its own press; stop it propagating there so it doesn't toggle twice. */
35
+ onClick?: (() => void) | undefined;
36
+ children: ReactNode;
37
+ }): import("react").JSX.Element;