@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,159 @@
1
+ import { cx } from "../cx.js";
2
+ import { EyeIcon, EyeOffIcon, WarningIcon } from "../icons.js";
3
+ import { useStrings } from "./Provider.js";
4
+ import { RequiredMark } from "./RequiredMark.js";
5
+ import { Fragment, jsx, jsxs } from "react/jsx-runtime";
6
+ import { createContext, use, useId } from "react";
7
+ import { Field } from "@base-ui/react/field";
8
+ import { Fieldset } from "@base-ui/react/fieldset";
9
+ //#region src/components/Field.tsx
10
+ var ControlContext = createContext(null);
11
+ /** Set by a layout that lines up the fields in a row, as a form's grid does: a stacked field's
12
+ * label and control take the row's label and control tracks, so controls under labels of
13
+ * different lengths line up. The layout makes the field's box a subgrid of two rows. */
14
+ var FieldRowContext = createContext(false);
15
+ /** The surrounding Field's control props, for a control drawn further down than the Field's
16
+ * own children. Null outside a Field. */
17
+ function useFieldControl() {
18
+ return use(ControlContext);
19
+ }
20
+ var labelClassName = "flex items-center gap-1 text-sm font-medium text-(--theme-app)";
21
+ var actionsClassName = "ml-auto flex shrink-0 items-center gap-1";
22
+ var errorTextClassName = "flex items-center gap-1.5 text-xs text-(--theme-error)";
23
+ /** An error in the look a Field gives its own, for one under a part of a control rather than
24
+ * the whole of it, such as a row of a list editor. */
25
+ function ErrorText({ children }) {
26
+ return children ? /* @__PURE__ */ jsxs("div", {
27
+ role: "alert",
28
+ className: errorTextClassName,
29
+ children: [/* @__PURE__ */ jsx(WarningIcon, {
30
+ "aria-hidden": "true",
31
+ className: "size-3.5 shrink-0"
32
+ }), children]
33
+ }) : null;
34
+ }
35
+ /** A control with its label, help and error, tied to it for assistive technology. One frame
36
+ * for every field, in a form or standing alone. */
37
+ function Field$1({ label, hint, actions, description, error, invalid, required = false, disabled = false, layout = "stacked", compact = false, group = false, id: ownId, className, children }) {
38
+ const uid = useId();
39
+ const id = ownId ?? `${uid}control`;
40
+ const labelId = `${uid}label`;
41
+ const descriptionId = description ? `${uid}description` : void 0;
42
+ const errorId = error ? `${uid}error` : void 0;
43
+ const isInvalid = Boolean(error) || Boolean(invalid);
44
+ const describedBy = [descriptionId, errorId].filter(Boolean).join(" ");
45
+ const control = {
46
+ id,
47
+ ...group && { "aria-labelledby": labelId },
48
+ ...describedBy && { "aria-describedby": describedBy },
49
+ ...isInvalid && { "aria-invalid": true },
50
+ ...required && { "aria-required": true }
51
+ };
52
+ const inline = layout === "inline";
53
+ const inRow = use(FieldRowContext) && !inline && !group;
54
+ const labelBox = cx(labelClassName, inline && cx("min-h-9 shrink-0", compact ? "mr-2 w-fit" : "w-52 pr-3"), inRow && "row-start-1 self-end");
55
+ const labelContent = /* @__PURE__ */ jsxs(Fragment, { children: [
56
+ /* @__PURE__ */ jsxs("span", { children: [label, required && /* @__PURE__ */ jsx(RequiredMark, {})] }),
57
+ hint,
58
+ actions && /* @__PURE__ */ jsx("span", {
59
+ className: actionsClassName,
60
+ children: actions
61
+ })
62
+ ] });
63
+ const body = /* @__PURE__ */ jsxs("div", {
64
+ className: cx("flex w-full min-w-0 flex-col gap-1", inRow && "row-start-2"),
65
+ children: [
66
+ /* @__PURE__ */ jsx(FieldRowContext, {
67
+ value: false,
68
+ children: /* @__PURE__ */ jsx(ControlContext, {
69
+ value: control,
70
+ children: typeof children === "function" ? children(control) : children
71
+ })
72
+ }),
73
+ description && /* @__PURE__ */ jsx(Field.Description, {
74
+ id: descriptionId,
75
+ className: "text-xs leading-relaxed text-(--theme-muted-text-color)",
76
+ children: description
77
+ }),
78
+ error && /* @__PURE__ */ jsxs(Field.Error, {
79
+ id: errorId,
80
+ match: true,
81
+ role: "alert",
82
+ className: errorTextClassName,
83
+ children: [/* @__PURE__ */ jsx(WarningIcon, {
84
+ "aria-hidden": "true",
85
+ className: "size-3.5 shrink-0"
86
+ }), error]
87
+ })
88
+ ]
89
+ });
90
+ const frame = inRow ? cx("contents", className) : cx("flex w-full", inline ? "items-start" : "flex-col gap-1.5", className);
91
+ if (group) return /* @__PURE__ */ jsx(Field.Root, {
92
+ invalid: isInvalid,
93
+ disabled,
94
+ render: /* @__PURE__ */ jsx(Fieldset.Root, {
95
+ "aria-describedby": control["aria-describedby"],
96
+ "aria-invalid": control["aria-invalid"]
97
+ }),
98
+ children: /* @__PURE__ */ jsxs("div", {
99
+ className: frame,
100
+ children: [/* @__PURE__ */ jsx(Fieldset.Legend, {
101
+ id: labelId,
102
+ className: labelBox,
103
+ children: labelContent
104
+ }), body]
105
+ })
106
+ });
107
+ return /* @__PURE__ */ jsxs(Field.Root, {
108
+ invalid: isInvalid,
109
+ disabled,
110
+ className: frame,
111
+ "data-field-row": inRow || void 0,
112
+ children: [/* @__PURE__ */ jsxs("div", {
113
+ className: labelBox,
114
+ children: [
115
+ /* @__PURE__ */ jsxs(Field.Label, {
116
+ htmlFor: id,
117
+ id: labelId,
118
+ "data-field-label": true,
119
+ children: [label, required && /* @__PURE__ */ jsx(RequiredMark, {})]
120
+ }),
121
+ hint,
122
+ actions && /* @__PURE__ */ jsx("span", {
123
+ className: actionsClassName,
124
+ children: actions
125
+ })
126
+ ]
127
+ }), body]
128
+ });
129
+ }
130
+ /** One checkbox or radio and its label inside a Field, such as an option of a group. A bare
131
+ * `<label>` there would take the Field's label as its own, so every option read as the field. */
132
+ function FieldOption({ disabled, className, children }) {
133
+ return /* @__PURE__ */ jsx(Field.Item, {
134
+ disabled,
135
+ render: /* @__PURE__ */ jsx("label", {}),
136
+ className: cx(disabled ? "cursor-not-allowed opacity-60" : "cursor-pointer", className),
137
+ children
138
+ });
139
+ }
140
+ /** The eye button inside a secret's box that shows or hides what was typed. Give the box
141
+ * room for it on the right, such as `pr-9`. */
142
+ function RevealToggle({ revealed, onRevealedChange, disabled }) {
143
+ const { common: t } = useStrings();
144
+ const Icon = revealed ? EyeOffIcon : EyeIcon;
145
+ return /* @__PURE__ */ jsx("button", {
146
+ type: "button",
147
+ "aria-label": revealed ? t.hideValue : t.showValue,
148
+ "aria-pressed": revealed,
149
+ disabled,
150
+ onClick: () => onRevealedChange(!revealed),
151
+ className: "absolute inset-y-0 right-0 flex w-9 cursor-pointer items-center justify-center text-(--theme-muted-text-color) hover:text-(--theme-app) disabled:cursor-not-allowed disabled:opacity-50",
152
+ children: /* @__PURE__ */ jsx(Icon, {
153
+ "aria-hidden": "true",
154
+ className: "size-4"
155
+ })
156
+ });
157
+ }
158
+ //#endregion
159
+ export { ErrorText, Field$1 as Field, FieldOption, FieldRowContext, RevealToggle, useFieldControl };
@@ -1,4 +1,4 @@
1
- import { cardClassName, portalContainer, positionerClassName } from "./floating.js";
1
+ import { cardClassName, positionerClassName } from "./floating.js";
2
2
  import { jsx, jsxs } from "react/jsx-runtime";
3
3
  import { PreviewCard } from "@base-ui/react/preview-card";
4
4
  //#region src/components/HoverCard.tsx
@@ -13,20 +13,17 @@ function HoverCard({ card, children, defaultOpen = false }) {
13
13
  delay: 350,
14
14
  closeDelay: 150,
15
15
  render: children
16
- }), /* @__PURE__ */ jsx(PreviewCard.Portal, {
17
- container: portalContainer(),
18
- children: /* @__PURE__ */ jsx(PreviewCard.Positioner, {
19
- side: "bottom",
20
- align: "start",
21
- sideOffset: 8,
22
- collisionPadding: 8,
23
- className: positionerClassName,
24
- children: /* @__PURE__ */ jsx(PreviewCard.Popup, {
25
- className: cardClassName,
26
- children: card
27
- })
16
+ }), /* @__PURE__ */ jsx(PreviewCard.Portal, { children: /* @__PURE__ */ jsx(PreviewCard.Positioner, {
17
+ side: "bottom",
18
+ align: "start",
19
+ sideOffset: 8,
20
+ collisionPadding: 8,
21
+ className: positionerClassName,
22
+ children: /* @__PURE__ */ jsx(PreviewCard.Popup, {
23
+ className: cardClassName,
24
+ children: card
28
25
  })
29
- })]
26
+ }) })]
30
27
  });
31
28
  }
32
29
  //#endregion
@@ -1,17 +1,20 @@
1
- import type { ComponentPropsWithRef, ReactNode } from 'react';
2
- interface IconButtonProps extends ComponentPropsWithRef<'button'> {
3
- /** Icon to display */
1
+ import { type ComponentPropsWithRef, type ReactNode } from 'react';
2
+ import { type ButtonSize, type ButtonVariant } from './buttonClasses.js';
3
+ export interface IconButtonProps extends ComponentPropsWithRef<'button'> {
4
4
  icon: ReactNode;
5
5
  /** The accessible name, also shown as the tooltip. */
6
6
  label: string;
7
- /** Button variant */
8
- variant?: 'default' | 'ghost' | 'primary' | 'success';
9
- /** Size of the button */
10
- size?: 'sm' | 'md' | 'lg';
11
- /** Whether button is in active/selected state */
12
- active?: boolean;
13
- /** False hides the tooltip, such as while the button's own popup is open. */
14
- showTooltip?: boolean;
7
+ variant?: ButtonVariant;
8
+ size?: ButtonSize;
9
+ /** A toggle's state: set, it reads as pressed (`aria-pressed`). */
10
+ pressed?: boolean | undefined;
11
+ /** A dot in the corner, such as for filters narrowing what the page shows. */
12
+ dot?: boolean;
13
+ /** A single key, such as F, that presses the button from anywhere on the page
14
+ * outside a text field. Also shown in the tooltip. */
15
+ shortcut?: string | undefined;
15
16
  }
16
- export declare function IconButton({ icon, label, variant, size, active, showTooltip, className, ...props }: IconButtonProps): import("react").JSX.Element;
17
- export {};
17
+ /** A button that shows only an icon, named by its tooltip. It can be a popup's
18
+ * trigger: it passes the trigger's props and ref on, and hides its tooltip while
19
+ * the popup is open. */
20
+ export declare function IconButton({ icon, label, variant, size, pressed, dot, shortcut, className, ref, ...props }: IconButtonProps): import("react").JSX.Element;
@@ -1,28 +1,37 @@
1
+ import { cx } from "../cx.js";
2
+ import { buttonClasses } from "./buttonClasses.js";
1
3
  import { Tooltip } from "./Tooltip.js";
2
- import { clsx } from "clsx";
3
- import { jsx } from "react/jsx-runtime";
4
+ import { useShortcutKey } from "./shortcutKey.js";
5
+ import { jsx, jsxs } from "react/jsx-runtime";
6
+ import { useCallback, useRef } from "react";
4
7
  //#region src/components/IconButton.tsx
5
- function IconButton({ icon, label, variant = "default", size = "md", active = false, showTooltip = true, className, ...props }) {
6
- const sizeClasses = {
7
- sm: "w-7 h-7 [&_svg]:w-3.5 [&_svg]:h-3.5",
8
- md: "w-9 h-9 [&_svg]:w-4 [&_svg]:h-4",
9
- lg: "w-11 h-11 [&_svg]:w-5 [&_svg]:h-5"
10
- };
11
- const variantClasses = {
12
- default: clsx("bg-[var(--theme-muted-panel-bg)] text-[var(--theme-muted-text-color)]", "hover:bg-[var(--theme-border)] hover:text-[var(--theme-app)]", active && "bg-[var(--theme-element)]/10 text-[var(--theme-element)]"),
13
- ghost: clsx("bg-transparent text-[var(--theme-muted-text-color)]", "hover:bg-[var(--theme-muted-panel-bg)] hover:text-[var(--theme-app)]", active && "text-[var(--theme-element)]"),
14
- primary: clsx("bg-[var(--theme-element)] text-white", "hover:bg-[var(--theme-element)]/90", active && "ring-2 ring-[var(--theme-element)]/50"),
15
- success: clsx("bg-[#22c55e] text-white", "hover:bg-[#22c55e]/90", active && "ring-2 ring-[#22c55e]/50")
16
- };
8
+ /** A button that shows only an icon, named by its tooltip. It can be a popup's
9
+ * trigger: it passes the trigger's props and ref on, and hides its tooltip while
10
+ * the popup is open. */
11
+ function IconButton({ icon, label, variant = "ghost", size = "sm", pressed, dot = false, shortcut, className, ref, ...props }) {
12
+ const button = useRef(null);
13
+ const setButton = useCallback((node) => {
14
+ button.current = node;
15
+ if (typeof ref === "function") ref(node);
16
+ else if (ref) ref.current = node;
17
+ }, [ref]);
18
+ useShortcutKey(shortcut, () => button.current?.click());
17
19
  return /* @__PURE__ */ jsx(Tooltip, {
18
20
  content: label,
19
- disabled: !showTooltip,
20
- children: /* @__PURE__ */ jsx("button", {
21
+ shortcut: shortcut?.toUpperCase(),
22
+ disabled: props["aria-expanded"] === true && !!props["aria-haspopup"],
23
+ children: /* @__PURE__ */ jsxs("button", {
21
24
  type: "button",
22
25
  "aria-label": label,
23
- className: clsx("inline-flex items-center justify-center rounded-lg", "transition-all duration-200 cursor-pointer", "disabled:opacity-50 disabled:cursor-not-allowed", sizeClasses[size], variantClasses[variant], className),
26
+ "aria-pressed": pressed,
27
+ ref: setButton,
28
+ className: cx(buttonClasses({
29
+ variant,
30
+ size,
31
+ iconOnly: true
32
+ }), className),
24
33
  ...props,
25
- children: icon
34
+ children: [icon, dot && /* @__PURE__ */ jsx("span", { className: "absolute right-0 top-0 h-1.5 w-1.5 rounded-full bg-(--theme-link)" })]
26
35
  })
27
36
  });
28
37
  }
@@ -1,11 +1,11 @@
1
- import { HiQuestionMarkCircle } from "../icons/hi/HiQuestionMarkCircle.js";
2
- import { portalContainer, positionerClassName, tipArrowClassName, tipClassName } from "./floating.js";
1
+ import { cx } from "../cx.js";
2
+ import { HelpIcon } from "../icons.js";
3
3
  import { keyedByContent } from "./keys.js";
4
4
  import { useStrings } from "./Provider.js";
5
- import { clsx } from "clsx";
5
+ import { ExternalLink } from "./ExternalLink.js";
6
+ import { Popover } from "./Popover.js";
6
7
  import { jsx, jsxs } from "react/jsx-runtime";
7
8
  import { Fragment as Fragment$1 } from "react";
8
- import { Popover } from "@base-ui/react/popover";
9
9
  //#region src/components/InfoTip.tsx
10
10
  var linkRegex = /\[([^\]]+)\]\((https?:\/\/[^\s)]+)\)/g;
11
11
  function formatLine(line) {
@@ -13,10 +13,8 @@ function formatLine(line) {
13
13
  let last = 0;
14
14
  for (const match of line.matchAll(linkRegex)) {
15
15
  if (match.index > last) nodes.push(line.slice(last, match.index));
16
- nodes.push(/* @__PURE__ */ jsx("a", {
16
+ nodes.push(/* @__PURE__ */ jsx(ExternalLink, {
17
17
  href: match[2],
18
- target: "_blank",
19
- rel: "noopener noreferrer",
20
18
  className: "underline",
21
19
  children: match[1]
22
20
  }, match.index));
@@ -38,23 +36,18 @@ function InfoTip({ text, side = "top", className, children }) {
38
36
  className,
39
37
  children
40
38
  }) : null;
41
- return /* @__PURE__ */ jsxs(Popover.Root, { children: [/* @__PURE__ */ jsx(Popover.Trigger, {
39
+ return /* @__PURE__ */ jsx(Popover, {
40
+ variant: "tip",
42
41
  openOnHover: true,
43
- "aria-label": children ? void 0 : t.moreInfo,
44
- className: clsx("inline-flex items-center cursor-help", !children && "tooltip", className),
45
- children: children ?? /* @__PURE__ */ jsx(HiQuestionMarkCircle, { "aria-hidden": "true" })
46
- }), /* @__PURE__ */ jsx(Popover.Portal, {
47
- container: portalContainer(),
48
- children: /* @__PURE__ */ jsx(Popover.Positioner, {
49
- side,
50
- sideOffset: 8,
51
- className: positionerClassName,
52
- children: /* @__PURE__ */ jsxs(Popover.Popup, {
53
- className: clsx("max-w-sm text-left", tipClassName),
54
- children: [/* @__PURE__ */ jsx(Popover.Arrow, { className: tipArrowClassName }), formatInfoTipContent(text)]
55
- })
56
- })
57
- })] });
42
+ side,
43
+ trigger: /* @__PURE__ */ jsx("button", {
44
+ type: "button",
45
+ "aria-label": children ? void 0 : t.moreInfo,
46
+ className: cx("inline-flex items-center cursor-help", !children && "tooltip", className),
47
+ children: children ?? /* @__PURE__ */ jsx(HelpIcon, { "aria-hidden": "true" })
48
+ }),
49
+ children: formatInfoTipContent(text)
50
+ });
58
51
  }
59
52
  //#endregion
60
53
  export { InfoTip, formatInfoTipContent };
@@ -1,19 +1,20 @@
1
1
  import type { InputHTMLAttributes, ReactNode, TextareaHTMLAttributes } from 'react';
2
- interface FieldProps {
2
+ interface FramedProps {
3
+ /** Without a label the box stands alone; name it with `aria-label`. */
3
4
  label?: ReactNode;
4
- /** Shown beside the label, outside it, so it stays out of the field's name. */
5
- labelHint?: ReactNode;
6
- /** Help text shown under the label. */
5
+ /** Beside the label and outside it, so it stays out of the field's name. */
6
+ hint?: ReactNode;
7
+ /** Help under the field. */
7
8
  description?: ReactNode;
8
- error?: string | undefined;
9
+ error?: ReactNode;
9
10
  mono?: boolean;
10
11
  }
11
- interface InputProps extends InputHTMLAttributes<HTMLInputElement>, FieldProps {
12
+ export interface InputProps extends InputHTMLAttributes<HTMLInputElement>, FramedProps {
12
13
  }
13
- interface TextareaProps extends TextareaHTMLAttributes<HTMLTextAreaElement>, FieldProps {
14
+ export interface TextareaProps extends TextareaHTMLAttributes<HTMLTextAreaElement>, FramedProps {
14
15
  }
15
- /** The box a text field draws, for other controls that should look like one. */
16
- export declare const fieldBoxClasses: string;
16
+ /** A single-line text field. `type="password"` adds a button that shows what was typed. */
17
17
  export declare const Input: import("react").ForwardRefExoticComponent<InputProps & import("react").RefAttributes<HTMLInputElement>>;
18
+ /** A multi-line text field that grows by hand. */
18
19
  export declare const Textarea: import("react").ForwardRefExoticComponent<TextareaProps & import("react").RefAttributes<HTMLTextAreaElement>>;
19
20
  export {};
@@ -1,109 +1,67 @@
1
- import { LuEye } from "../icons/lu/LuEye.js";
2
- import { LuEyeOff } from "../icons/lu/LuEyeOff.js";
3
- import { TbAlertTriangle } from "../icons/tb/TbAlertTriangle.js";
4
- import { RequiredMark } from "./RequiredMark.js";
5
- import { clsx } from "clsx";
1
+ import { cx } from "../cx.js";
2
+ import { fieldBox } from "./fieldBox.js";
3
+ import { Field, RevealToggle } from "./Field.js";
6
4
  import { jsx, jsxs } from "react/jsx-runtime";
7
- import { forwardRef, useId, useState } from "react";
5
+ import { forwardRef, useState } from "react";
8
6
  //#region src/components/Input.tsx
9
- /** The box a text field draws, for other controls that should look like one. */
10
- var fieldBoxClasses = clsx("w-full py-3 px-4 bg-[var(--theme-muted-panel-bg)] border border-[var(--theme-border)] rounded-lg text-[var(--theme-app)] text-sm transition-all duration-200 box-border", "focus:outline-none focus:border-[var(--theme-element)] focus:shadow-[0_0_0_3px_color-mix(in_srgb,var(--theme-element)_25%,transparent)]", "placeholder:text-[var(--theme-muted-text-color)]");
11
- function LabelRow({ id, label, hint, required }) {
12
- const element = /* @__PURE__ */ jsxs("label", {
13
- className: "text-[0.8125rem] font-medium text-[var(--theme-app)]",
14
- htmlFor: id,
15
- children: [label, required && /* @__PURE__ */ jsx(RequiredMark, {})]
16
- });
17
- return hint ? /* @__PURE__ */ jsxs("div", {
18
- className: "flex flex-wrap items-baseline gap-x-1.5",
19
- children: [element, hint]
20
- }) : element;
21
- }
22
- function useFieldFrame({ label, labelHint, description, error }, ownId, describedBy, required) {
23
- const generatedId = useId();
24
- const id = ownId ?? generatedId;
25
- const errorId = `${id}-error`;
26
- const descriptionId = `${id}-description`;
27
- return {
7
+ /** The Field around a control when it has a label; the control alone when it doesn't. */
8
+ function framed({ label, hint, description, error }, { id, required, disabled }, control) {
9
+ if (label === void 0) return control(error ? { "aria-invalid": true } : {});
10
+ return /* @__PURE__ */ jsx(Field, {
11
+ label,
12
+ hint,
13
+ description,
14
+ error,
15
+ required,
16
+ disabled,
28
17
  id,
29
- describedBy: [
30
- describedBy,
31
- description ? descriptionId : void 0,
32
- error ? errorId : void 0
33
- ].filter(Boolean).join(" ") || void 0,
34
- frame: (control) => /* @__PURE__ */ jsxs("div", {
35
- className: "flex flex-col gap-1.5",
36
- children: [
37
- label && /* @__PURE__ */ jsx(LabelRow, {
38
- id,
39
- label,
40
- hint: labelHint,
41
- required
42
- }),
43
- description && /* @__PURE__ */ jsx("span", {
44
- id: descriptionId,
45
- className: "-mt-1 text-xs text-(--theme-muted-text-color)",
46
- children: description
47
- }),
48
- control,
49
- error && /* @__PURE__ */ jsxs("span", {
50
- id: errorId,
51
- role: "alert",
52
- className: "text-[0.8125rem] text-[#ef4444] flex items-center gap-1.5",
53
- children: [/* @__PURE__ */ jsx(TbAlertTriangle, { className: "w-4 h-4" }), error]
54
- })
55
- ]
56
- })
57
- };
18
+ children: control
19
+ });
58
20
  }
59
- var Input = forwardRef(({ label, labelHint, description, error, className = "", mono, type, required, ...props }, ref) => {
60
- const [showPassword, setShowPassword] = useState(false);
61
- const isPassword = type === "password";
62
- const field = useFieldFrame({
21
+ /** A single-line text field. `type="password"` adds a button that shows what was typed. */
22
+ var Input = forwardRef(({ label, hint, description, error, className, mono, type, ...props }, ref) => {
23
+ const [revealed, setRevealed] = useState(false);
24
+ const secret = type === "password";
25
+ return framed({
63
26
  label,
64
- labelHint,
27
+ hint,
65
28
  description,
66
29
  error
67
- }, props.id, props["aria-describedby"], required);
68
- return field.frame(/* @__PURE__ */ jsxs("div", {
69
- className: isPassword ? "relative w-full" : "",
70
- children: [/* @__PURE__ */ jsx("input", {
30
+ }, props, (control) => {
31
+ const input = /* @__PURE__ */ jsx("input", {
71
32
  ref,
72
- type: isPassword && showPassword ? "text" : type,
73
- className: clsx(fieldBoxClasses, "disabled:bg-[var(--theme-muted-panel-bg)] disabled:text-[var(--theme-muted-text-color)] disabled:cursor-not-allowed disabled:opacity-70", mono && "font-mono text-[0.8125rem]", error && "!border-[#ef4444]", isPassword && "pr-11", className),
74
33
  ...props,
75
- id: field.id,
76
- required,
77
- "aria-invalid": error ? true : props["aria-invalid"],
78
- "aria-describedby": field.describedBy
79
- }), isPassword && /* @__PURE__ */ jsx("button", {
80
- type: "button",
81
- className: "absolute right-3 top-1/2 -translate-y-1/2 bg-transparent border-none text-[var(--theme-muted-text-color)] cursor-pointer p-1 transition-colors duration-200 flex items-center justify-center hover:text-[var(--theme-app)]",
82
- onClick: () => setShowPassword(!showPassword),
83
- tabIndex: -1,
84
- "aria-label": showPassword ? "Hide password" : "Show password",
85
- children: showPassword ? /* @__PURE__ */ jsx(LuEyeOff, { className: "w-5 h-5" }) : /* @__PURE__ */ jsx(LuEye, { className: "w-5 h-5" })
86
- })]
87
- }));
34
+ ...control,
35
+ "aria-invalid": control["aria-invalid"] ?? props["aria-invalid"],
36
+ "aria-describedby": [props["aria-describedby"], control["aria-describedby"]].filter(Boolean).join(" ") || void 0,
37
+ type: secret && revealed ? "text" : type,
38
+ className: cx(fieldBox(), mono && "font-mono", secret && "pr-9", className)
39
+ });
40
+ return secret ? /* @__PURE__ */ jsxs("div", {
41
+ className: "relative w-full",
42
+ children: [input, /* @__PURE__ */ jsx(RevealToggle, {
43
+ revealed,
44
+ onRevealedChange: setRevealed,
45
+ disabled: props.disabled
46
+ })]
47
+ }) : input;
48
+ });
88
49
  });
89
50
  Input.displayName = "Input";
90
- var Textarea = forwardRef(({ label, labelHint, description, error, className = "", mono, required, ...props }, ref) => {
91
- const field = useFieldFrame({
92
- label,
93
- labelHint,
94
- description,
95
- error
96
- }, props.id, props["aria-describedby"], required);
97
- return field.frame(/* @__PURE__ */ jsx("textarea", {
98
- ref,
99
- className: clsx(fieldBoxClasses, "min-h-[140px] resize-y", mono && "font-mono text-[0.8125rem]", error && "!border-[#ef4444]", className),
100
- ...props,
101
- id: field.id,
102
- required,
103
- "aria-invalid": error ? true : props["aria-invalid"],
104
- "aria-describedby": field.describedBy
105
- }));
106
- });
51
+ /** A multi-line text field that grows by hand. */
52
+ var Textarea = forwardRef(({ label, hint, description, error, className, mono, ...props }, ref) => framed({
53
+ label,
54
+ hint,
55
+ description,
56
+ error
57
+ }, props, (control) => /* @__PURE__ */ jsx("textarea", {
58
+ ref,
59
+ ...props,
60
+ ...control,
61
+ "aria-invalid": control["aria-invalid"] ?? props["aria-invalid"],
62
+ "aria-describedby": [props["aria-describedby"], control["aria-describedby"]].filter(Boolean).join(" ") || void 0,
63
+ className: cx(fieldBox({ multiline: true }), "min-h-24 resize-y", mono && "font-mono", className)
64
+ })));
107
65
  Textarea.displayName = "Textarea";
108
66
  //#endregion
109
- export { Input, Textarea, fieldBoxClasses };
67
+ export { Input, Textarea };
@@ -1,11 +1,11 @@
1
- import { clsx } from "clsx";
1
+ import { cx } from "../cx.js";
2
2
  import { jsx } from "react/jsx-runtime";
3
3
  //#region src/components/LetterBadge.tsx
4
4
  /** A compact letter badge ("AI", "PUB", "SSH") used as a type mark in place of
5
5
  * an icon. Size the box and text via className (e.g. "h-5 w-5 text-[8px]"). */
6
6
  function LetterBadge({ text, className }) {
7
7
  return /* @__PURE__ */ jsx("span", {
8
- className: clsx("inline-flex shrink-0 items-center justify-center rounded-[3px] border theme-border font-bold leading-none tracking-tight text-(--theme-app)", className),
8
+ className: cx("inline-flex shrink-0 items-center justify-center rounded-[3px] border theme-border font-bold leading-none tracking-tight text-(--theme-app)", className),
9
9
  children: text
10
10
  });
11
11
  }
@@ -1,11 +1,18 @@
1
- interface LoaderProps {
1
+ export interface LoaderProps {
2
+ /** The spinner's size, in pixels or any CSS length. */
2
3
  size?: number | string;
3
- text?: string | undefined;
4
- textSize?: number;
5
- color?: string;
6
- full?: boolean;
7
- loaderStyle?: React.CSSProperties;
4
+ /** Shown under the spinner, and its accessible name. Without one, the
5
+ * loader is named with the provider's `loading` string. */
6
+ label?: string | undefined;
8
7
  variant?: 'spinner' | 'logo';
8
+ /** Sits in a line of text or a button instead of centering in its own row. */
9
+ inline?: boolean;
10
+ /** The spinner's color, such as `currentColor` inside a button. */
11
+ color?: string | undefined;
12
+ /** Beside text that already says what is happening, such as a busy button's
13
+ * label: hidden from assistive technology, and in the text's color. */
14
+ decorative?: boolean;
9
15
  }
10
- export default function Loader({ size, text, textSize, full, color, loaderStyle, variant, }: LoaderProps): import("react").JSX.Element;
11
- export {};
16
+ /** Something on the way that has no shape to sketch yet. When its shape is
17
+ * known, such as rows of a list, sketch it with `Skeleton` instead. */
18
+ export declare function Loader({ size, label, variant, inline, color, decorative, }: LoaderProps): import("react").JSX.Element;