@parallelworks/ui 0.44.0 → 0.45.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (622) hide show
  1. package/README.md +348 -25
  2. package/dist/ai/agent/diff.d.ts +2 -1
  3. package/dist/ai/agent/diff.js +4 -12
  4. package/dist/ai/agent/diffHighlight.d.ts +1 -1
  5. package/dist/ai/agent/diffHighlight.js +4 -3
  6. package/dist/ai/agent/index.d.ts +2 -1
  7. package/dist/ai/agent/toolStrings.d.ts +37 -0
  8. package/dist/ai/agent/toolStrings.js +35 -0
  9. package/dist/ai/agent/toolfmt.d.ts +8 -3
  10. package/dist/ai/agent/toolfmt.js +50 -65
  11. package/dist/ai/ai.css +18 -31
  12. package/dist/ai/components/AllocationSelector.js +2 -2
  13. package/dist/ai/components/AttachmentManager.js +28 -29
  14. package/dist/ai/components/AttachmentUpload.js +25 -30
  15. package/dist/ai/components/BlockedGroupBanner.js +2 -2
  16. package/dist/ai/components/BranchNavigator.js +3 -4
  17. package/dist/ai/components/ChatEmptyState.js +8 -7
  18. package/dist/ai/components/ChatInput.js +10 -12
  19. package/dist/ai/components/ChatLayout.js +3 -3
  20. package/dist/ai/components/ChatMessage.js +49 -61
  21. package/dist/ai/components/ChatMessageList.js +46 -42
  22. package/dist/ai/components/ChatSidebar.js +26 -34
  23. package/dist/ai/components/ChatStage.js +1 -1
  24. package/dist/ai/components/ComposerChrome.js +3 -4
  25. package/dist/ai/components/DragOverlay.js +6 -4
  26. package/dist/ai/components/ModelSelector.js +14 -15
  27. package/dist/ai/components/PastedText.js +18 -14
  28. package/dist/ai/components/ProviderIssueBanner.js +3 -4
  29. package/dist/ai/components/Reasoning.d.ts +12 -6
  30. package/dist/ai/components/Reasoning.js +31 -18
  31. package/dist/ai/components/ShareDialog.js +25 -28
  32. package/dist/ai/components/SlashMenu.js +3 -3
  33. package/dist/ai/components/agent/ActivityLine.d.ts +0 -5
  34. package/dist/ai/components/agent/ActivityLine.js +17 -54
  35. package/dist/ai/components/agent/AgentMessageParts.js +139 -149
  36. package/dist/ai/components/conversationActions.js +16 -16
  37. package/dist/ai/core/ChatProvider.d.ts +2 -4
  38. package/dist/ai/core/ChatProvider.js +25 -38
  39. package/dist/ai/core/exportConversation.js +4 -4
  40. package/dist/ai/core/sidebarState.d.ts +8 -6
  41. package/dist/ai/core/sidebarState.js +21 -28
  42. package/dist/ai/core/useKeyboardShortcuts.js +14 -5
  43. package/dist/ai/index.d.ts +4 -5
  44. package/dist/ai/index.js +7 -7
  45. package/dist/ai/strings.d.ts +14 -31
  46. package/dist/ai/strings.js +19 -39
  47. package/dist/ai/types.d.ts +0 -5
  48. package/dist/ai/ui/ConversationSidebar.d.ts +12 -9
  49. package/dist/ai/ui/ConversationSidebar.js +43 -87
  50. package/dist/ai/ui/Markdown.d.ts +3 -6
  51. package/dist/ai/ui/Markdown.js +6 -73
  52. package/dist/ai/ui/Notice.js +10 -12
  53. package/dist/ai/ui/chip.d.ts +2 -2
  54. package/dist/ai/ui/chip.js +1 -1
  55. package/dist/ai/ui/sidebar.d.ts +4 -20
  56. package/dist/ai/ui/sidebar.js +30 -67
  57. package/dist/ai/utils.d.ts +0 -1
  58. package/dist/ai/utils.js +1 -14
  59. package/dist/brandIcons.d.ts +51 -0
  60. package/dist/brandIcons.js +75 -0
  61. package/dist/components/Avatar.d.ts +3 -1
  62. package/dist/components/Avatar.js +34 -28
  63. package/dist/components/Button.d.ts +12 -7
  64. package/dist/components/Button.js +39 -44
  65. package/dist/components/Callout.js +18 -12
  66. package/dist/components/Card.d.ts +18 -8
  67. package/dist/components/Card.js +17 -6
  68. package/dist/components/Checkbox.d.ts +9 -0
  69. package/dist/components/Checkbox.js +30 -0
  70. package/dist/components/Combobox.d.ts +9 -1
  71. package/dist/components/Combobox.js +71 -44
  72. package/dist/components/ConfirmModal.js +11 -11
  73. package/dist/components/ContextMenu.d.ts +2 -8
  74. package/dist/components/ContextMenu.js +2 -29
  75. package/dist/components/CopyToClipboard.js +17 -36
  76. package/dist/components/CreateModal.d.ts +3 -24
  77. package/dist/components/CreateModal.js +46 -113
  78. package/dist/components/DatePicker.d.ts +31 -0
  79. package/dist/components/DatePicker.js +191 -0
  80. package/dist/components/DescriptionList.js +4 -4
  81. package/dist/components/Disclosure.d.ts +34 -0
  82. package/dist/components/Disclosure.js +46 -0
  83. package/dist/components/Drawer.d.ts +47 -0
  84. package/dist/components/Drawer.js +120 -0
  85. package/dist/components/EmptyState.d.ts +15 -10
  86. package/dist/components/EmptyState.js +13 -8
  87. package/dist/components/ExternalLink.d.ts +8 -0
  88. package/dist/components/ExternalLink.js +29 -0
  89. package/dist/components/Field.d.ts +70 -0
  90. package/dist/components/Field.js +159 -0
  91. package/dist/components/HoverCard.js +11 -14
  92. package/dist/components/IconButton.d.ts +16 -13
  93. package/dist/components/IconButton.js +27 -18
  94. package/dist/components/InfoTip.js +16 -23
  95. package/dist/components/Input.d.ts +10 -9
  96. package/dist/components/Input.js +54 -96
  97. package/dist/components/LetterBadge.js +2 -2
  98. package/dist/components/Loader.d.ts +15 -8
  99. package/dist/components/Loader.js +29 -19
  100. package/dist/components/Markdown.d.ts +7 -1
  101. package/dist/components/Markdown.js +2 -0
  102. package/dist/components/MarkdownImpl.d.ts +1 -1
  103. package/dist/components/MarkdownImpl.js +55 -14
  104. package/dist/components/Menu.js +13 -15
  105. package/dist/components/MenuEntries.js +11 -16
  106. package/dist/components/Meter.d.ts +48 -0
  107. package/dist/components/Meter.js +94 -0
  108. package/dist/components/Modal.js +11 -14
  109. package/dist/components/NumberInput.d.ts +25 -0
  110. package/dist/components/NumberInput.js +55 -0
  111. package/dist/components/Overview.js +12 -10
  112. package/dist/components/PageHeader.d.ts +2 -3
  113. package/dist/components/PageHeader.js +30 -21
  114. package/dist/components/Pagination.d.ts +27 -14
  115. package/dist/components/Pagination.js +86 -25
  116. package/dist/components/Popover.d.ts +47 -0
  117. package/dist/components/Popover.js +63 -0
  118. package/dist/components/Provider.d.ts +197 -80
  119. package/dist/components/Provider.js +200 -118
  120. package/dist/components/Radio.d.ts +1 -1
  121. package/dist/components/Radio.js +4 -4
  122. package/dist/components/RefreshButton.d.ts +15 -0
  123. package/dist/components/RefreshButton.js +53 -0
  124. package/dist/components/RunStatusIcon.d.ts +12 -0
  125. package/dist/components/RunStatusIcon.js +84 -0
  126. package/dist/components/SearchInput.d.ts +16 -0
  127. package/dist/components/SearchInput.js +52 -0
  128. package/dist/components/Section.d.ts +28 -0
  129. package/dist/components/Section.js +76 -0
  130. package/dist/components/SegmentedControl.d.ts +7 -11
  131. package/dist/components/SegmentedControl.js +25 -56
  132. package/dist/components/Select.d.ts +5 -1
  133. package/dist/components/Select.js +43 -44
  134. package/dist/components/SettingModeOption.d.ts +3 -5
  135. package/dist/components/SettingModeOption.js +5 -6
  136. package/dist/components/SettingsCard.d.ts +32 -19
  137. package/dist/components/SettingsCard.js +40 -13
  138. package/dist/components/Skeleton.d.ts +22 -0
  139. package/dist/components/Skeleton.js +34 -0
  140. package/dist/components/Slider.d.ts +16 -0
  141. package/dist/components/Slider.js +30 -0
  142. package/dist/components/Sort.js +4 -6
  143. package/dist/components/StatusBadge.d.ts +3 -1
  144. package/dist/components/StatusBadge.js +9 -32
  145. package/dist/components/StatusIcons.d.ts +0 -4
  146. package/dist/components/StatusIcons.js +5 -13
  147. package/dist/components/Switch.d.ts +5 -1
  148. package/dist/components/Switch.js +23 -6
  149. package/dist/components/Table.js +13 -20
  150. package/dist/components/Tabs.d.ts +52 -0
  151. package/dist/components/Tabs.js +75 -0
  152. package/dist/components/ThemeEditor.d.ts +29 -0
  153. package/dist/components/ThemeEditor.js +397 -0
  154. package/dist/components/Toast.d.ts +57 -0
  155. package/dist/components/Toast.js +203 -0
  156. package/dist/components/Tooltip.js +12 -15
  157. package/dist/components/buttonClasses.d.ts +18 -0
  158. package/dist/components/buttonClasses.js +31 -0
  159. package/dist/components/codeTheme.d.ts +5 -0
  160. package/dist/components/codeTheme.js +93 -0
  161. package/dist/components/fieldBox.d.ts +14 -0
  162. package/dist/components/fieldBox.js +29 -0
  163. package/dist/components/floating.d.ts +26 -5
  164. package/dist/components/floating.js +31 -9
  165. package/dist/{ai/ui/codeBreaks.js → components/markdownCodeBreaks.js} +1 -1
  166. package/dist/components/persistedState.d.ts +2 -0
  167. package/dist/components/persistedState.js +63 -0
  168. package/dist/components/relativeTime.d.ts +36 -8
  169. package/dist/components/relativeTime.js +106 -23
  170. package/dist/components/segmented.d.ts +17 -0
  171. package/dist/components/segmented.js +27 -0
  172. package/dist/components/shortcutKey.d.ts +4 -0
  173. package/dist/components/shortcutKey.js +27 -0
  174. package/dist/components/splitter.d.ts +26 -0
  175. package/dist/components/splitter.js +69 -0
  176. package/dist/components/tone.d.ts +9 -0
  177. package/dist/components/tone.js +30 -0
  178. package/dist/components/useCopy.d.ts +14 -0
  179. package/dist/components/useCopy.js +31 -0
  180. package/dist/components/useCssIsDark.d.ts +2 -0
  181. package/dist/components/useCssIsDark.js +2 -1
  182. package/dist/components/useTheme.d.ts +10 -0
  183. package/dist/components/useTheme.js +40 -0
  184. package/dist/cx.d.ts +5 -0
  185. package/dist/cx.js +11 -0
  186. package/dist/editor/Editor.js +2 -2
  187. package/dist/editor/EditorField.js +7 -10
  188. package/dist/editor/FormCodePanel.js +10 -23
  189. package/dist/editor/Monaco.js +7 -4
  190. package/dist/editor/index.d.ts +1 -1
  191. package/dist/editor/index.js +2 -2
  192. package/dist/editor/themes.d.ts +4 -0
  193. package/dist/editor/themes.js +75 -76
  194. package/dist/file-explorer/FileExplorer.js +180 -187
  195. package/dist/file-explorer/FileExplorerContext.js +36 -58
  196. package/dist/file-explorer/FilePreview/CodePreviewEditor.js +2 -1
  197. package/dist/file-explorer/FilePreview/Inline.js +9 -7
  198. package/dist/file-explorer/FilePreview/StreamedBadge.js +2 -2
  199. package/dist/file-explorer/FilePreview/Viewer.js +32 -34
  200. package/dist/file-explorer/FilePreview/index.js +60 -92
  201. package/dist/file-explorer/FileRow.js +10 -15
  202. package/dist/file-explorer/FileRowsWindow.js +2 -6
  203. package/dist/file-explorer/FileTable.js +2 -2
  204. package/dist/file-explorer/FileTableHeaders.js +8 -11
  205. package/dist/file-explorer/LoadMoreRow.js +8 -9
  206. package/dist/file-explorer/TreeView.js +16 -16
  207. package/dist/file-explorer/helpers.d.ts +1 -4
  208. package/dist/file-explorer/helpers.js +101 -114
  209. package/dist/file-explorer/lib/utils.d.ts +0 -2
  210. package/dist/file-explorer/lib/utils.js +1 -25
  211. package/dist/file-explorer/toasts.js +104 -185
  212. package/dist/form/Fields/BooleanField.js +12 -14
  213. package/dist/form/Fields/CheckboxGroupField.d.ts +1 -1
  214. package/dist/form/Fields/CheckboxGroupField.js +16 -18
  215. package/dist/form/Fields/ColorField.js +11 -11
  216. package/dist/form/Fields/DropdownField.d.ts +1 -1
  217. package/dist/form/Fields/DropdownField.js +20 -36
  218. package/dist/form/Fields/DurationField.d.ts +1 -1
  219. package/dist/form/Fields/DurationField.js +36 -50
  220. package/dist/form/Fields/LabelField.js +2 -2
  221. package/dist/form/Fields/MultiDropdownField.d.ts +1 -1
  222. package/dist/form/Fields/MultiDropdownField.js +9 -14
  223. package/dist/form/Fields/NumberField.d.ts +1 -1
  224. package/dist/form/Fields/NumberField.js +13 -48
  225. package/dist/form/Fields/ObjectField.js +3 -3
  226. package/dist/form/Fields/RadioField.d.ts +1 -1
  227. package/dist/form/Fields/RadioField.js +15 -18
  228. package/dist/form/Fields/RangeField.js +34 -35
  229. package/dist/form/Fields/StringField.d.ts +1 -1
  230. package/dist/form/Fields/StringField.js +15 -25
  231. package/dist/form/Fields/TextAreaField.js +10 -15
  232. package/dist/form/Form.d.ts +7 -2
  233. package/dist/form/Form.js +144 -49
  234. package/dist/form/FormLayout.js +18 -12
  235. package/dist/form/Wizard/WizardContainer.js +44 -18
  236. package/dist/form/Wizard/WizardNavigation.d.ts +1 -1
  237. package/dist/form/Wizard/WizardNavigation.js +31 -56
  238. package/dist/form/Wizard/WizardStepIndicator.d.ts +3 -0
  239. package/dist/form/Wizard/WizardStepIndicator.js +98 -114
  240. package/dist/form/Wizard/types.d.ts +2 -2
  241. package/dist/form/fieldFrame.d.ts +7 -0
  242. package/dist/form/fieldFrame.js +19 -0
  243. package/dist/form/index.d.ts +5 -5
  244. package/dist/form/index.js +4 -6
  245. package/dist/form/layoutCSS.js +5 -4
  246. package/dist/form/types/fieldComponentTypes.d.ts +5 -3
  247. package/dist/form/useChoiceField.js +2 -3
  248. package/dist/form/useFieldValue.d.ts +3 -0
  249. package/dist/form/useFieldValue.js +24 -7
  250. package/dist/form/utils/duration.d.ts +2 -2
  251. package/dist/form/utils/duration.js +3 -3
  252. package/dist/form/utils/fieldPath.d.ts +5 -3
  253. package/dist/form/utils/fieldPath.js +18 -3
  254. package/dist/form/utils/secondaryField.d.ts +0 -7
  255. package/dist/form/utils/secondaryField.js +1 -12
  256. package/dist/form/validation.d.ts +29 -0
  257. package/dist/form/validation.js +14 -0
  258. package/dist/format.d.ts +28 -0
  259. package/dist/format.js +64 -0
  260. package/dist/graph/AnnotationBanner.js +20 -31
  261. package/dist/graph/Connectors.js +1 -1
  262. package/dist/graph/DependencyGraph.js +51 -65
  263. package/dist/graph/GraphEditor.js +24 -28
  264. package/dist/graph/GraphEditorDialogs.js +239 -245
  265. package/dist/graph/InputDialog.js +93 -112
  266. package/dist/graph/InputsEditor.js +83 -84
  267. package/dist/graph/JobSummary.js +10 -11
  268. package/dist/graph/MatrixGroup.js +3 -3
  269. package/dist/graph/ProblemsButton.js +9 -10
  270. package/dist/graph/ShortcutsButton.js +12 -17
  271. package/dist/graph/SuggestionInput.d.ts +1 -2
  272. package/dist/graph/SuggestionInput.js +1 -3
  273. package/dist/graph/TreeView.js +47 -45
  274. package/dist/graph/WorkflowSettingsDialog.js +97 -102
  275. package/dist/graph/editorChrome.js +10 -12
  276. package/dist/graph/editorFields.d.ts +19 -16
  277. package/dist/graph/editorFields.js +97 -135
  278. package/dist/graph/editorPrimitives.js +2 -2
  279. package/dist/graph/editorRows.js +22 -25
  280. package/dist/graph/editorStrings.d.ts +16 -19
  281. package/dist/graph/editorStrings.js +11 -23
  282. package/dist/graph/fieldProblems.js +2 -2
  283. package/dist/graph/graphEditorState.d.ts +4 -4
  284. package/dist/graph/inputRefs.d.ts +0 -13
  285. package/dist/graph/inputRefs.js +121 -159
  286. package/dist/graph/settingsViews.js +5 -3
  287. package/dist/graph/stepWith.js +100 -100
  288. package/dist/graph/toolbarPanel.d.ts +8 -0
  289. package/dist/graph/toolbarPanel.js +11 -0
  290. package/dist/icons.d.ts +234 -23
  291. package/dist/icons.js +249 -264
  292. package/dist/index.d.ts +38 -21
  293. package/dist/index.js +42 -21
  294. package/dist/list/ActionToolbar.d.ts +1 -5
  295. package/dist/list/ActionToolbar.js +21 -20
  296. package/dist/list/ListPage.js +7 -7
  297. package/dist/list/ListTable.d.ts +3 -2
  298. package/dist/list/ListTable.js +33 -29
  299. package/dist/list/ListViewControls.d.ts +0 -17
  300. package/dist/list/ListViewControls.js +50 -118
  301. package/dist/list/UserHoverCard.js +24 -32
  302. package/dist/list/index.d.ts +2 -4
  303. package/dist/list/index.js +3 -5
  304. package/dist/list/listSearch.d.ts +1 -1
  305. package/dist/list/listSearch.js +19 -14
  306. package/dist/list/rowMenu.js +20 -26
  307. package/dist/logviewer/LogViewer.js +268 -382
  308. package/dist/logviewer/logviewer.css +53 -41
  309. package/dist/styles/base.css +16 -40
  310. package/dist/styles/theme.css +75 -106
  311. package/dist/styles.css +1 -1
  312. package/dist/theme/color.d.ts +40 -0
  313. package/dist/theme/color.js +228 -0
  314. package/dist/theme/contrast.d.ts +42 -0
  315. package/dist/theme/contrast.js +145 -0
  316. package/dist/theme/derive.d.ts +25 -0
  317. package/dist/theme/derive.js +475 -0
  318. package/dist/theme/fit.d.ts +35 -0
  319. package/dist/theme/fit.js +185 -0
  320. package/dist/theme/index.d.ts +14 -29
  321. package/dist/theme/index.js +20 -279
  322. package/dist/theme/model.d.ts +64 -0
  323. package/dist/theme/model.js +219 -0
  324. package/package.json +9 -5
  325. package/dist/ai/ui/Avatar.d.ts +0 -7
  326. package/dist/ai/ui/Avatar.js +0 -24
  327. package/dist/components/Filter.d.ts +0 -15
  328. package/dist/components/Filter.js +0 -32
  329. package/dist/components/FilterPill.d.ts +0 -7
  330. package/dist/components/FilterPill.js +0 -14
  331. package/dist/components/Indicator.d.ts +0 -4
  332. package/dist/components/Indicator.js +0 -44
  333. package/dist/components/SectionHeader.d.ts +0 -8
  334. package/dist/components/SectionHeader.js +0 -11
  335. package/dist/components/SettingRow.d.ts +0 -18
  336. package/dist/components/SettingRow.js +0 -35
  337. package/dist/components/SettingsGroup.d.ts +0 -8
  338. package/dist/components/SettingsGroup.js +0 -17
  339. package/dist/components/ghostButton.d.ts +0 -4
  340. package/dist/components/ghostButton.js +0 -7
  341. package/dist/components/inputClasses.d.ts +0 -1
  342. package/dist/components/inputClasses.js +0 -4
  343. package/dist/duration.d.ts +0 -3
  344. package/dist/duration.js +0 -17
  345. package/dist/form/FieldGroup.d.ts +0 -11
  346. package/dist/form/FieldGroup.js +0 -36
  347. package/dist/form/FieldWrapper.d.ts +0 -16
  348. package/dist/form/FieldWrapper.js +0 -55
  349. package/dist/form/fieldContext.d.ts +0 -19
  350. package/dist/form/fieldContext.js +0 -26
  351. package/dist/graph/Collapse.d.ts +0 -7
  352. package/dist/graph/Collapse.js +0 -15
  353. package/dist/graph/ToolbarPopover.d.ts +0 -13
  354. package/dist/graph/ToolbarPopover.js +0 -39
  355. package/dist/icons/ai/AiOutlineRollback.js +0 -16
  356. package/dist/icons/bi/BiBell.js +0 -16
  357. package/dist/icons/bi/BiBellOff.js +0 -16
  358. package/dist/icons/bi/BiBuildings.js +0 -20
  359. package/dist/icons/bi/BiError.js +0 -20
  360. package/dist/icons/bi/BiExpandVertical.js +0 -16
  361. package/dist/icons/bi/BiPause.js +0 -16
  362. package/dist/icons/bi/BiPlay.js +0 -16
  363. package/dist/icons/bi/BiRedo.js +0 -16
  364. package/dist/icons/bi/BiSolidCheckShield.js +0 -16
  365. package/dist/icons/bi/BiSolidTrashAlt.js +0 -16
  366. package/dist/icons/bi/BiStop.js +0 -16
  367. package/dist/icons/bi/BiUndo.js +0 -16
  368. package/dist/icons/bs/BsArrowsCollapse.js +0 -22
  369. package/dist/icons/bs/BsBank2.js +0 -19
  370. package/dist/icons/bs/BsBriefcase.js +0 -19
  371. package/dist/icons/bs/BsBucket.js +0 -19
  372. package/dist/icons/bs/BsCalendarX.js +0 -23
  373. package/dist/icons/bs/BsChatLeft.js +0 -19
  374. package/dist/icons/bs/BsChevronDoubleDown.js +0 -29
  375. package/dist/icons/bs/BsChevronDoubleUp.js +0 -29
  376. package/dist/icons/bs/BsClipboardCheck.js +0 -34
  377. package/dist/icons/bs/BsCurrencyDollar.js +0 -19
  378. package/dist/icons/bs/BsDash.js +0 -19
  379. package/dist/icons/bs/BsFileEarmarkZip.js +0 -23
  380. package/dist/icons/bs/BsFiles.js +0 -19
  381. package/dist/icons/bs/BsGeoAlt.js +0 -23
  382. package/dist/icons/bs/BsGrid.js +0 -19
  383. package/dist/icons/bs/BsLayers.js +0 -19
  384. package/dist/icons/bs/BsLayoutThreeColumns.js +0 -19
  385. package/dist/icons/bs/BsListUl.js +0 -22
  386. package/dist/icons/bs/BsMortarboard.js +0 -23
  387. package/dist/icons/bs/BsMusicNoteBeamed.js +0 -34
  388. package/dist/icons/bs/BsOpenai.js +0 -19
  389. package/dist/icons/bs/BsPersonPlus.js +0 -26
  390. package/dist/icons/bs/BsSearch.js +0 -19
  391. package/dist/icons/bs/BsSend.js +0 -19
  392. package/dist/icons/bs/BsShieldSlash.js +0 -22
  393. package/dist/icons/bs/BsStar.js +0 -19
  394. package/dist/icons/bs/BsStarFill.js +0 -19
  395. package/dist/icons/bs/BsStopCircle.js +0 -23
  396. package/dist/icons/bs/BsTag.js +0 -23
  397. package/dist/icons/bs/BsTelephone.js +0 -19
  398. package/dist/icons/bs/BsTerminal.js +0 -23
  399. package/dist/icons/bs/BsTerminalFill.js +0 -19
  400. package/dist/icons/bs/BsThreeDots.js +0 -19
  401. package/dist/icons/bs/BsThreeDotsVertical.js +0 -19
  402. package/dist/icons/bs/BsZoomIn.js +0 -37
  403. package/dist/icons/fa/FaAmazon.js +0 -16
  404. package/dist/icons/fa/FaAngleDown.js +0 -16
  405. package/dist/icons/fa/FaAngleLeft.js +0 -16
  406. package/dist/icons/fa/FaAngleRight.js +0 -16
  407. package/dist/icons/fa/FaAngleUp.js +0 -16
  408. package/dist/icons/fa/FaArrowDown.js +0 -16
  409. package/dist/icons/fa/FaArrowLeft.js +0 -16
  410. package/dist/icons/fa/FaArrowRight.js +0 -16
  411. package/dist/icons/fa/FaArrowUp.js +0 -16
  412. package/dist/icons/fa/FaBalanceScale.js +0 -16
  413. package/dist/icons/fa/FaCaretDown.js +0 -16
  414. package/dist/icons/fa/FaCentos.js +0 -16
  415. package/dist/icons/fa/FaChartLine.js +0 -16
  416. package/dist/icons/fa/FaChartPie.js +0 -16
  417. package/dist/icons/fa/FaCheck.js +0 -16
  418. package/dist/icons/fa/FaChevronDown.js +0 -16
  419. package/dist/icons/fa/FaChevronUp.js +0 -16
  420. package/dist/icons/fa/FaChrome.js +0 -16
  421. package/dist/icons/fa/FaCircleNotch.js +0 -16
  422. package/dist/icons/fa/FaCloud.js +0 -16
  423. package/dist/icons/fa/FaCloudDownloadAlt.js +0 -16
  424. package/dist/icons/fa/FaCog.js +0 -16
  425. package/dist/icons/fa/FaCogs.js +0 -16
  426. package/dist/icons/fa/FaComments.js +0 -16
  427. package/dist/icons/fa/FaCompress.js +0 -16
  428. package/dist/icons/fa/FaDesktop.js +0 -16
  429. package/dist/icons/fa/FaDocker.js +0 -16
  430. package/dist/icons/fa/FaDollarSign.js +0 -16
  431. package/dist/icons/fa/FaEdge.js +0 -16
  432. package/dist/icons/fa/FaEdit.js +0 -16
  433. package/dist/icons/fa/FaExclamationTriangle.js +0 -16
  434. package/dist/icons/fa/FaExpand.js +0 -16
  435. package/dist/icons/fa/FaEye.js +0 -16
  436. package/dist/icons/fa/FaEyeSlash.js +0 -16
  437. package/dist/icons/fa/FaFile.js +0 -16
  438. package/dist/icons/fa/FaFilePdf.js +0 -16
  439. package/dist/icons/fa/FaFilter.js +0 -16
  440. package/dist/icons/fa/FaFirefoxBrowser.js +0 -16
  441. package/dist/icons/fa/FaFlask.js +0 -16
  442. package/dist/icons/fa/FaFolder.js +0 -16
  443. package/dist/icons/fa/FaGithub.js +0 -16
  444. package/dist/icons/fa/FaGitlab.js +0 -16
  445. package/dist/icons/fa/FaGlobe.js +0 -16
  446. package/dist/icons/fa/FaGlobeAmericas.js +0 -16
  447. package/dist/icons/fa/FaImage.js +0 -16
  448. package/dist/icons/fa/FaInfoCircle.js +0 -16
  449. package/dist/icons/fa/FaKey.js +0 -16
  450. package/dist/icons/fa/FaLayerGroup.js +0 -16
  451. package/dist/icons/fa/FaLink.js +0 -16
  452. package/dist/icons/fa/FaLinkedin.js +0 -16
  453. package/dist/icons/fa/FaLinux.js +0 -16
  454. package/dist/icons/fa/FaList.js +0 -16
  455. package/dist/icons/fa/FaLock.js +0 -16
  456. package/dist/icons/fa/FaOpenid.js +0 -16
  457. package/dist/icons/fa/FaOpera.js +0 -16
  458. package/dist/icons/fa/FaPaperclip.js +0 -16
  459. package/dist/icons/fa/FaPlus.js +0 -16
  460. package/dist/icons/fa/FaPowerOff.js +0 -16
  461. package/dist/icons/fa/FaPrint.js +0 -16
  462. package/dist/icons/fa/FaQrcode.js +0 -16
  463. package/dist/icons/fa/FaQuestionCircle.js +0 -16
  464. package/dist/icons/fa/FaRedhat.js +0 -16
  465. package/dist/icons/fa/FaRegCircle.js +0 -16
  466. package/dist/icons/fa/FaRegFileImage.js +0 -16
  467. package/dist/icons/fa/FaRegFolder.js +0 -16
  468. package/dist/icons/fa/FaRobot.js +0 -16
  469. package/dist/icons/fa/FaRocket.js +0 -16
  470. package/dist/icons/fa/FaRunning.js +0 -16
  471. package/dist/icons/fa/FaSafari.js +0 -16
  472. package/dist/icons/fa/FaSave.js +0 -16
  473. package/dist/icons/fa/FaSearch.js +0 -16
  474. package/dist/icons/fa/FaShieldAlt.js +0 -16
  475. package/dist/icons/fa/FaSlack.js +0 -16
  476. package/dist/icons/fa/FaStar.js +0 -16
  477. package/dist/icons/fa/FaStop.js +0 -16
  478. package/dist/icons/fa/FaSuse.js +0 -16
  479. package/dist/icons/fa/FaTerminal.js +0 -16
  480. package/dist/icons/fa/FaTimes.js +0 -16
  481. package/dist/icons/fa/FaUbuntu.js +0 -16
  482. package/dist/icons/fa/FaUndoAlt.js +0 -16
  483. package/dist/icons/fa/FaUnlink.js +0 -16
  484. package/dist/icons/fa/FaUser.js +0 -16
  485. package/dist/icons/fa/FaUsers.js +0 -16
  486. package/dist/icons/fa/FaWindows.js +0 -16
  487. package/dist/icons/fa6/FaApple.js +0 -16
  488. package/dist/icons/fa6/FaArrowsRotate.js +0 -16
  489. package/dist/icons/fa6/FaDebian.js +0 -16
  490. package/dist/icons/fa6/FaFilterCircleXmark.js +0 -16
  491. package/dist/icons/fa6/FaInbox.js +0 -16
  492. package/dist/icons/fa6/FaLocationDot.js +0 -16
  493. package/dist/icons/fa6/FaRegFilePdf.js +0 -16
  494. package/dist/icons/fa6/FaRegFolderOpen.js +0 -16
  495. package/dist/icons/fa6/FaUpRightFromSquare.js +0 -16
  496. package/dist/icons/fa6/FaWandMagicSparkles.js +0 -16
  497. package/dist/icons/fa6/FaXTwitter.js +0 -16
  498. package/dist/icons/fi/FiActivity.js +0 -23
  499. package/dist/icons/fi/FiAlertCircle.js +0 -49
  500. package/dist/icons/fi/FiChevronDown.js +0 -23
  501. package/dist/icons/fi/FiClock.js +0 -31
  502. package/dist/icons/fi/FiCopy.js +0 -34
  503. package/dist/icons/fi/FiDownload.js +0 -40
  504. package/dist/icons/fi/FiFile.js +0 -27
  505. package/dist/icons/fi/FiFileText.js +0 -55
  506. package/dist/icons/fi/FiHardDrive.js +0 -55
  507. package/dist/icons/fi/FiRotateCcw.js +0 -27
  508. package/dist/icons/fi/FiUpload.js +0 -40
  509. package/dist/icons/fi/FiX.js +0 -37
  510. package/dist/icons/fi/FiZap.js +0 -23
  511. package/dist/icons/gi/GiSpy.js +0 -16
  512. package/dist/icons/go/GoGitCommit.js +0 -16
  513. package/dist/icons/go/GoGitPullRequest.js +0 -20
  514. package/dist/icons/go/GoIssueOpened.js +0 -16
  515. package/dist/icons/go/GoPlus.js +0 -16
  516. package/dist/icons/go/GoRepoForked.js +0 -28
  517. package/dist/icons/go/GoSignOut.js +0 -16
  518. package/dist/icons/go/GoSkip.js +0 -20
  519. package/dist/icons/go/GoVideo.js +0 -20
  520. package/dist/icons/gr/GrCloudComputer.js +0 -20
  521. package/dist/icons/gr/GrInbox.js +0 -20
  522. package/dist/icons/gr/GrServerCluster.js +0 -20
  523. package/dist/icons/gr/GrStorage.js +0 -20
  524. package/dist/icons/gr/GrTasks.js +0 -20
  525. package/dist/icons/hi/HiCog.js +0 -24
  526. package/dist/icons/hi/HiDuplicate.js +0 -24
  527. package/dist/icons/hi/HiOutlineArchive.js +0 -26
  528. package/dist/icons/hi/HiOutlineClipboardCopy.js +0 -26
  529. package/dist/icons/hi/HiOutlineHome.js +0 -26
  530. package/dist/icons/hi/HiQuestionMarkCircle.js +0 -24
  531. package/dist/icons/hi/HiServer.js +0 -24
  532. package/dist/icons/hi2/HiMiniCheckCircle.js +0 -24
  533. package/dist/icons/hi2/HiMiniLanguage.js +0 -28
  534. package/dist/icons/hi2/HiMiniMinusCircle.js +0 -24
  535. package/dist/icons/hi2/HiMiniXCircle.js +0 -24
  536. package/dist/icons/hi2/HiSparkles.js +0 -24
  537. package/dist/icons/im/ImSpinner5.js +0 -19
  538. package/dist/icons/io/IoIosNotifications.js +0 -16
  539. package/dist/icons/io/IoMdBuild.js +0 -16
  540. package/dist/icons/io/IoMdClose.js +0 -16
  541. package/dist/icons/io5/IoCloudUploadOutline.js +0 -32
  542. package/dist/icons/io5/IoDocumentTextOutline.js +0 -31
  543. package/dist/icons/io5/IoFileTrayFullOutline.js +0 -31
  544. package/dist/icons/io5/IoHeart.js +0 -16
  545. package/dist/icons/io5/IoHeartDislike.js +0 -16
  546. package/dist/icons/io5/IoHeartOutline.js +0 -22
  547. package/dist/icons/io5/IoInformationCircleOutline.js +0 -50
  548. package/dist/icons/io5/IoSettingsOutline.js +0 -22
  549. package/dist/icons/io5/IoWarningOutline.js +0 -40
  550. package/dist/icons/lu/LuArrowRight.js +0 -27
  551. package/dist/icons/lu/LuBadgeCheck.js +0 -27
  552. package/dist/icons/lu/LuBraces.js +0 -27
  553. package/dist/icons/lu/LuBrainCircuit.js +0 -101
  554. package/dist/icons/lu/LuCalendar.js +0 -46
  555. package/dist/icons/lu/LuCheck.js +0 -23
  556. package/dist/icons/lu/LuChevronLeft.js +0 -23
  557. package/dist/icons/lu/LuChevronRight.js +0 -23
  558. package/dist/icons/lu/LuCode.js +0 -27
  559. package/dist/icons/lu/LuExternalLink.js +0 -35
  560. package/dist/icons/lu/LuEye.js +0 -31
  561. package/dist/icons/lu/LuEyeOff.js +0 -40
  562. package/dist/icons/lu/LuFolderTree.js +0 -40
  563. package/dist/icons/lu/LuIdCard.js +0 -55
  564. package/dist/icons/lu/LuKeyboard.js +0 -71
  565. package/dist/icons/lu/LuLogs.js +0 -65
  566. package/dist/icons/lu/LuMail.js +0 -33
  567. package/dist/icons/lu/LuMegaphone.js +0 -27
  568. package/dist/icons/lu/LuMoon.js +0 -23
  569. package/dist/icons/lu/LuNetwork.js +0 -63
  570. package/dist/icons/lu/LuPartyPopper.js +0 -65
  571. package/dist/icons/lu/LuSettings2.js +0 -48
  572. package/dist/icons/lu/LuSheet.js +0 -72
  573. package/dist/icons/lu/LuShield.js +0 -23
  574. package/dist/icons/lu/LuSun.js +0 -69
  575. package/dist/icons/lu/LuTextCursorInput.js +0 -45
  576. package/dist/icons/lu/LuX.js +0 -27
  577. package/dist/icons/lu/LuZoomIn.js +0 -59
  578. package/dist/icons/lu/LuZoomOut.js +0 -49
  579. package/dist/icons/md/MdClear.js +0 -23
  580. package/dist/icons/md/MdDragHandle.js +0 -23
  581. package/dist/icons/md/MdInstallDesktop.js +0 -31
  582. package/dist/icons/md/MdOutlineAttachMoney.js +0 -23
  583. package/dist/icons/md/MdOutlineMoneyOff.js +0 -23
  584. package/dist/icons/md/MdPieChart.js +0 -23
  585. package/dist/icons/md/MdRefresh.js +0 -23
  586. package/dist/icons/md/MdReplay.js +0 -23
  587. package/dist/icons/md/MdSmartphone.js +0 -23
  588. package/dist/icons/pi/PiArrowBendUpRightBold.js +0 -19
  589. package/dist/icons/pi/PiPlugsConnectedFill.js +0 -19
  590. package/dist/icons/pi/PiRectangleDashed.js +0 -19
  591. package/dist/icons/pi/PiShareBold.js +0 -19
  592. package/dist/icons/si/SiAnthropic.js +0 -19
  593. package/dist/icons/si/SiHelm.js +0 -19
  594. package/dist/icons/si/SiKubernetes.js +0 -19
  595. package/dist/icons/tb/TbAlertTriangle.js +0 -35
  596. package/dist/icons/tb/TbAlertTriangleFilled.js +0 -19
  597. package/dist/icons/tb/TbApi.js +0 -40
  598. package/dist/icons/tb/TbBrain.js +0 -50
  599. package/dist/icons/tb/TbBuildingTunnel.js +0 -65
  600. package/dist/icons/tb/TbEdit.js +0 -35
  601. package/dist/icons/tb/TbLayoutSidebar.js +0 -27
  602. package/dist/icons/tb/TbLayoutSidebarLeftCollapse.js +0 -35
  603. package/dist/icons/tb/TbLayoutSidebarRightCollapse.js +0 -35
  604. package/dist/icons/tb/TbUser.js +0 -27
  605. package/dist/icons/tb/TbUserOff.js +0 -35
  606. package/dist/icons/tb/TbWorldShare.js +0 -55
  607. package/dist/icons/tb/TbWorldWww.js +0 -65
  608. package/dist/icons/ti/TiArrowSortedDown.js +0 -20
  609. package/dist/icons/ti/TiArrowSortedUp.js +0 -20
  610. package/dist/icons/ti/TiArrowUnsorted.js +0 -20
  611. package/dist/icons/ti/TiCancel.js +0 -20
  612. package/dist/icons/vsc/VscChromeMinimize.js +0 -19
  613. package/dist/icons/vsc/VscJson.js +0 -19
  614. package/dist/icons/vsc/VscLayoutSidebarLeft.js +0 -19
  615. package/dist/icons/vsc/VscPass.js +0 -27
  616. package/dist/icons/vsc/VscSplitHorizontal.js +0 -19
  617. package/dist/icons/vsc/VscTerminalPowershell.js +0 -19
  618. package/dist/list/ListPager.d.ts +0 -14
  619. package/dist/list/ListPager.js +0 -62
  620. package/dist/list/textEntry.d.ts +0 -2
  621. package/dist/list/textEntry.js +0 -10
  622. /package/dist/{ai/ui/codeBreaks.d.ts → components/markdownCodeBreaks.d.ts} +0 -0
@@ -1,32 +1,29 @@
1
- import { FaChevronDown } from "../icons/fa/FaChevronDown.js";
2
- import { IoHeart } from "../icons/io5/IoHeart.js";
3
- import { IoHeartOutline } from "../icons/io5/IoHeartOutline.js";
4
- import { LuChevronRight } from "../icons/lu/LuChevronRight.js";
1
+ import { cx } from "../cx.js";
2
+ import { ChevronDownIcon, FavoriteIcon, FavoriteOutlineIcon } from "../icons.js";
3
+ import { buttonClasses } from "./buttonClasses.js";
5
4
  import { Tooltip } from "./Tooltip.js";
6
5
  import { useStrings } from "./Provider.js";
7
6
  import { ActionMenu } from "./ActionMenu.js";
7
+ import { Button } from "./Button.js";
8
8
  import { comboboxLeaves } from "./comboboxItems.js";
9
- import { Autocomplete, Combobox } from "./Combobox.js";
10
- import { ghostButtonClasses } from "./ghostButton.js";
9
+ import { Combobox } from "./Combobox.js";
11
10
  import { Modal } from "./Modal.js";
12
- import { InfoTip } from "./InfoTip.js";
11
+ import { Disclosure } from "./Disclosure.js";
13
12
  import { Switch } from "./Switch.js";
14
- import { clsx } from "clsx";
15
13
  import { Fragment, jsx, jsxs } from "react/jsx-runtime";
16
- import { useEffect, useId, useRef, useState } from "react";
17
- import { Button } from "@base-ui/react/button";
14
+ import { useEffect, useRef, useState } from "react";
18
15
  import { Toggle } from "@base-ui/react/toggle";
19
16
  //#region src/components/CreateModal.tsx
20
17
  /** Submits on Enter in the name field or ⌘/Ctrl+Enter from anywhere in the panel. */
21
18
  function CreateModal({ open, onClose, typeIcon, typeLabel, typeMenu, namePlaceholder, hideName = false, initialName, showDescription = true, descriptionPlaceholder, submitLabel, submittingLabel, validateName, sanitizeName, nameHint, children, properties, advanced, submitDisabled = false, hideSubmit = false, nameOptional = false, onNameChange, dirty = false, showFavorite = false, onSubmit }) {
22
19
  const t = useStrings().modal;
23
- const submitText = submitLabel ?? t.create;
20
+ const { common } = useStrings();
21
+ const submitText = submitLabel ?? common.create;
24
22
  const submittingText = submittingLabel ?? t.creating;
25
23
  const descriptionText = descriptionPlaceholder ?? t.addDescription;
26
24
  const [name, setName] = useState("");
27
25
  const [description, setDescription] = useState("");
28
26
  const [submitting, setSubmitting] = useState(false);
29
- const [advancedOpen, setAdvancedOpen] = useState(false);
30
27
  const [favorite, setFavorite] = useState(false);
31
28
  const [nameFlash, setNameFlash] = useState(false);
32
29
  const [nameTouched, setNameTouched] = useState(false);
@@ -37,7 +34,6 @@ function CreateModal({ open, onClose, typeIcon, typeLabel, typeMenu, namePlaceho
37
34
  setName(initialName ?? "");
38
35
  setDescription("");
39
36
  setSubmitting(false);
40
- setAdvancedOpen(false);
41
37
  setFavorite(false);
42
38
  setNameTouched(false);
43
39
  setInteracted(false);
@@ -97,7 +93,7 @@ function CreateModal({ open, onClose, typeIcon, typeLabel, typeMenu, namePlaceho
97
93
  children: [
98
94
  typeIcon,
99
95
  typeLabel,
100
- /* @__PURE__ */ jsx(FaChevronDown, { className: "w-3 h-3 opacity-60" })
96
+ /* @__PURE__ */ jsx(ChevronDownIcon, { className: "w-3 h-3 opacity-60" })
101
97
  ]
102
98
  }) : /* @__PURE__ */ jsxs("div", {
103
99
  className: "inline-flex items-center gap-1.5 px-1.5 py-1 rounded-md bg-(--theme-muted-panel-bg) text-xs font-medium text-(--theme-muted-text-color)",
@@ -128,7 +124,7 @@ function CreateModal({ open, onClose, typeIcon, typeLabel, typeMenu, namePlaceho
128
124
  placeholder: namePlaceholder,
129
125
  "aria-label": namePlaceholder,
130
126
  onAnimationEnd: () => setNameFlash(false),
131
- className: clsx("mt-2 -mb-1 -mx-1.5 w-[calc(100%+0.75rem)] rounded-md border-0 px-1.5 py-1 bg-transparent shadow-none text-lg font-medium text-(--theme-app) placeholder:text-(--theme-muted-text-color) focus:outline-none", nameFlash && "animate-field-flash", nameMissing ? "ring-1 ring-(--theme-error)" : "focus:ring-0")
127
+ className: cx("mt-2 -mb-1 -mx-1.5 w-[calc(100%+0.75rem)] rounded-md border-0 px-1.5 py-1 bg-transparent shadow-none text-lg font-medium text-(--theme-app) placeholder:text-(--theme-muted-text-color) focus:outline-none", nameFlash && "animate-field-flash", nameMissing ? "ring-1 ring-(--theme-error)" : "focus:ring-0")
132
128
  }),
133
129
  nameError && /* @__PURE__ */ jsx("p", {
134
130
  className: "mt-1 text-xs text-(--theme-error)",
@@ -149,24 +145,24 @@ function CreateModal({ open, onClose, typeIcon, typeLabel, typeMenu, namePlaceho
149
145
  className: "mt-1.5 w-full border-0 p-0 bg-transparent shadow-none resize-none text-sm text-(--theme-app) placeholder:text-(--theme-muted-text-color) focus:outline-none focus:ring-0"
150
146
  }) : /* @__PURE__ */ jsx("div", { className: "mt-3" })
151
147
  ] }),
152
- children
148
+ children && /* @__PURE__ */ jsx("div", {
149
+ className: "mb-3 flex flex-col gap-3",
150
+ children
151
+ })
153
152
  ]
154
153
  }),
155
154
  properties && /* @__PURE__ */ jsx("div", {
156
155
  className: "flex flex-wrap items-center gap-1.5 px-4 pt-1 pb-3",
157
156
  children: properties
158
157
  }),
159
- advanced && /* @__PURE__ */ jsxs("div", {
158
+ advanced && /* @__PURE__ */ jsx("div", {
160
159
  className: "px-4 pb-3",
161
- children: [/* @__PURE__ */ jsxs("button", {
162
- type: "button",
163
- onClick: () => setAdvancedOpen((o) => !o),
164
- className: "inline-flex items-center gap-1 text-xs font-medium text-(--theme-muted-text-color) hover:text-(--theme-app) transition-colors",
165
- children: [/* @__PURE__ */ jsx(LuChevronRight, { className: clsx("w-3 h-3 transition-transform", advancedOpen && "rotate-90") }), t.advanced]
166
- }), advancedOpen && /* @__PURE__ */ jsx("div", {
167
- className: "mt-2",
160
+ children: /* @__PURE__ */ jsx(Disclosure, {
161
+ summary: t.advanced,
162
+ summaryClassName: "text-xs font-medium text-(--theme-muted-text-color) transition-colors hover:text-(--theme-app)",
163
+ panelClassName: "pt-2",
168
164
  children: advanced
169
- })]
165
+ })
170
166
  })
171
167
  ]
172
168
  }), /* @__PURE__ */ jsxs("div", {
@@ -177,105 +173,41 @@ function CreateModal({ open, onClose, typeIcon, typeLabel, typeMenu, namePlaceho
177
173
  pressed: favorite,
178
174
  onPressedChange: setFavorite,
179
175
  "aria-label": t.favorite,
180
- className: clsx("inline-flex h-8 items-center gap-1.5 px-2.5 rounded-md text-sm font-medium transition-colors focus:outline-none focus-visible:ring-2 focus-visible:ring-(--theme-focus-ring)", favorite ? "text-(--theme-favorite) bg-(--theme-favorite-muted)" : "text-(--theme-muted-text-color) hover:text-(--theme-app) hover:bg-(--theme-muted-panel-bg)"),
181
- children: [favorite ? /* @__PURE__ */ jsx(IoHeart, { className: "w-4 h-4 scale-110 transition-transform" }) : /* @__PURE__ */ jsx(IoHeartOutline, { className: "w-4 h-4 transition-transform" }), favorite ? t.favorited : t.favorite]
176
+ className: buttonClasses({
177
+ variant: "ghost",
178
+ size: "md"
179
+ }),
180
+ children: [favorite ? /* @__PURE__ */ jsx(FavoriteIcon, { className: "text-(--theme-favorite)" }) : /* @__PURE__ */ jsx(FavoriteOutlineIcon, {}), favorite ? t.favorited : t.favorite]
182
181
  })
183
182
  }) : /* @__PURE__ */ jsx("span", {}), /* @__PURE__ */ jsxs("div", {
184
183
  className: "flex items-center gap-2",
185
- children: [/* @__PURE__ */ jsx("button", {
186
- type: "button",
184
+ children: [/* @__PURE__ */ jsx(Button, {
185
+ variant: "ghost",
186
+ size: "sm",
187
187
  onClick: onClose,
188
- className: ghostButtonClasses,
189
- children: hideSubmit ? t.close : t.cancel
190
- }), !hideSubmit && /* @__PURE__ */ jsx("button", {
191
- type: "button",
188
+ children: hideSubmit ? common.close : common.cancel
189
+ }), !hideSubmit && /* @__PURE__ */ jsx(Button, {
190
+ variant: "primary",
191
+ size: "sm",
192
192
  onClick: handleSubmit,
193
193
  "aria-disabled": !canSubmit,
194
- className: `inline-flex cursor-pointer items-center gap-1.5 h-7 px-2.5 rounded-md text-[12.5px] font-medium bg-(--theme-element) text-(--theme-element-text) hover:opacity-90 transition-opacity aria-disabled:opacity-50 aria-disabled:cursor-not-allowed aria-disabled:hover:opacity-50`,
194
+ loading: submitting,
195
195
  children: submitting ? submittingText : submitText
196
196
  })]
197
197
  })]
198
198
  })]
199
199
  });
200
200
  }
201
- var fieldInputClasses = "w-full h-8 px-2.5 rounded-md border border-(--theme-border) bg-(--theme-input-bg) shadow-none text-sm text-(--theme-app) placeholder:text-(--theme-muted-text-color) transition-colors focus:outline-none focus:ring-0 focus:border-(--theme-element)";
202
- var fieldLabelClasses = "block mb-1 text-xs font-medium text-(--theme-muted-text-color)";
203
- /** A field's label, with its help beside it rather than inside the label, so
204
- * the label names the field and not the help button. */
205
- function FieldLabel({ id, label, tooltip }) {
206
- return /* @__PURE__ */ jsxs("div", {
207
- className: clsx(fieldLabelClasses, "flex items-center gap-1"),
208
- children: [/* @__PURE__ */ jsx("label", {
209
- htmlFor: id,
210
- children: label
211
- }), tooltip && /* @__PURE__ */ jsx(InfoTip, { text: tooltip })]
212
- });
213
- }
214
- /** Labeled single-line input row for the dialog's extra fields. */
215
- function CreateModalField({ label, tooltip, id, ...props }) {
216
- const fallbackId = useId();
217
- const fieldId = id ?? fallbackId;
218
- return /* @__PURE__ */ jsxs("div", {
219
- className: "mb-3",
220
- children: [/* @__PURE__ */ jsx(FieldLabel, {
221
- id: fieldId,
222
- label,
223
- tooltip
224
- }), /* @__PURE__ */ jsx("input", {
225
- type: "text",
226
- autoComplete: "off",
227
- "data-1p-ignore": true,
228
- ...props,
229
- id: fieldId,
230
- className: fieldInputClasses
231
- })]
232
- });
233
- }
234
- /** Labeled multi-line field for credential blobs (JSON keys, PEM keys). */
235
- function CreateModalTextarea({ label, tooltip, rows = 4, id, ...props }) {
236
- const fallbackId = useId();
237
- const fieldId = id ?? fallbackId;
238
- return /* @__PURE__ */ jsxs("div", {
239
- className: "mb-3",
240
- children: [/* @__PURE__ */ jsx(FieldLabel, {
241
- id: fieldId,
242
- label,
243
- tooltip
244
- }), /* @__PURE__ */ jsx("textarea", {
245
- autoComplete: "off",
246
- "data-1p-ignore": true,
247
- rows,
248
- ...props,
249
- id: fieldId,
250
- className: clsx(fieldInputClasses, "h-auto py-2 font-mono text-xs leading-relaxed resize-y")
251
- })]
252
- });
253
- }
254
- /** Labeled input with suggestions; any text is allowed. */
255
- function CreateModalAutocompleteField({ label, tooltip, value, onValueChange, items, placeholder }) {
256
- const id = useId();
257
- return /* @__PURE__ */ jsxs("div", {
258
- className: "mb-3",
259
- children: [/* @__PURE__ */ jsx(FieldLabel, {
260
- id,
261
- label,
262
- tooltip
263
- }), /* @__PURE__ */ jsx(Autocomplete, {
264
- id,
265
- items,
266
- value,
267
- onValueChange,
268
- placeholder
269
- })]
270
- });
271
- }
272
- var pillClasses = "inline-flex h-7 items-center gap-1.5 rounded-md border border-(--theme-border) px-2 text-xs font-medium transition-colors";
201
+ var pillClasses = (set) => buttonClasses({
202
+ variant: set ? "secondary" : "outline",
203
+ size: "sm"
204
+ });
273
205
  /** Compact property pill with an on/off switch. */
274
206
  function CreateModalSwitch({ label, checked, onCheckedChange, tooltip }) {
275
207
  return /* @__PURE__ */ jsx(Tooltip, {
276
208
  content: tooltip,
277
209
  children: /* @__PURE__ */ jsxs("label", {
278
- className: clsx(pillClasses, "cursor-pointer hover:bg-(--theme-muted-panel-bg)", checked ? "text-(--theme-app)" : "text-(--theme-muted-text-color)"),
210
+ className: pillClasses(checked),
279
211
  children: [/* @__PURE__ */ jsx(Switch, {
280
212
  size: "sm",
281
213
  checked,
@@ -287,7 +219,7 @@ function CreateModalSwitch({ label, checked, onCheckedChange, tooltip }) {
287
219
  /** Compact property pill that picks one value from a searchable list. Items may carry
288
220
  * icons, descriptions and group headings (e.g. Clusters vs Kubernetes). */
289
221
  function CreateModalSelect({ label, icon, value, items, onValueChange, disabled = false, disabledReason, tooltip }) {
290
- const t = useStrings().modal;
222
+ const { common } = useStrings();
291
223
  const selected = comboboxLeaves(items).map((item) => typeof item === "string" ? {
292
224
  value: item,
293
225
  label: item
@@ -299,7 +231,7 @@ function CreateModalSelect({ label, icon, value, items, onValueChange, disabled
299
231
  className: "font-normal text-(--theme-muted-text-color)",
300
232
  children: label
301
233
  }), selectedLabel] }) : label,
302
- /* @__PURE__ */ jsx(FaChevronDown, { className: "w-3 h-3 opacity-60" })
234
+ /* @__PURE__ */ jsx(ChevronDownIcon, { className: "w-3 h-3 opacity-60" })
303
235
  ] });
304
236
  if (disabled) return /* @__PURE__ */ jsx(Tooltip, {
305
237
  content: disabledReason ?? tooltip,
@@ -307,7 +239,8 @@ function CreateModalSelect({ label, icon, value, items, onValueChange, disabled
307
239
  disabled: true,
308
240
  focusableWhenDisabled: true,
309
241
  "aria-label": label,
310
- className: clsx(pillClasses, "opacity-50 cursor-not-allowed text-(--theme-muted-text-color)"),
242
+ variant: "outline",
243
+ size: "sm",
311
244
  children: pillContent
312
245
  })
313
246
  });
@@ -319,14 +252,14 @@ function CreateModalSelect({ label, icon, value, items, onValueChange, disabled
319
252
  },
320
253
  itemToStringLabel: (next) => next,
321
254
  "aria-label": label,
322
- placeholder: t.filter,
255
+ placeholder: common.filter,
323
256
  triggerTooltip: tooltip,
324
257
  trigger: /* @__PURE__ */ jsx("button", {
325
258
  type: "button",
326
- className: clsx(pillClasses, "cursor-pointer hover:bg-(--theme-muted-panel-bg)", selectedLabel ? "text-(--theme-app)" : "text-(--theme-muted-text-color)"),
259
+ className: pillClasses(!!selectedLabel),
327
260
  children: pillContent
328
261
  })
329
262
  });
330
263
  }
331
264
  //#endregion
332
- export { CreateModal, CreateModalAutocompleteField, CreateModalField, CreateModalSelect, CreateModalSwitch, CreateModalTextarea };
265
+ export { CreateModal, CreateModalSelect, CreateModalSwitch };
@@ -0,0 +1,31 @@
1
+ export interface DatePickerProps {
2
+ /** As a native date input holds it: `yyyy-MM-dd`, or with `withTime` the local
3
+ * `yyyy-MM-ddTHH:mm` of `datetime-local`. Empty while nothing is chosen. */
4
+ value: string;
5
+ onValueChange: (value: string) => void;
6
+ /** A time beside the date. */
7
+ withTime?: boolean | undefined;
8
+ /** The earliest and latest days, and with `withTime` times, that can be chosen, in the value's
9
+ * format. */
10
+ min?: string | undefined;
11
+ max?: string | undefined;
12
+ /** Seconds the time steps by, such as 900 for quarter hours. */
13
+ timeStep?: number | undefined;
14
+ /** Leaves out the clear button, for a field that always holds a date. */
15
+ required?: boolean | undefined;
16
+ disabled?: boolean | undefined;
17
+ placeholder?: string | undefined;
18
+ id?: string | undefined;
19
+ 'aria-label'?: string | undefined;
20
+ 'aria-labelledby'?: string | undefined;
21
+ 'aria-describedby'?: string | undefined;
22
+ 'aria-invalid'?: boolean | undefined;
23
+ 'aria-required'?: boolean | undefined;
24
+ className?: string | undefined;
25
+ }
26
+ /**
27
+ * A day from a calendar, and with `withTime` a time beside it. The value is a string as a native
28
+ * date or datetime-local input holds it, so it reads the same in forms and URLs; months, weekdays
29
+ * and the shown date follow the reader's locale.
30
+ */
31
+ export declare function DatePicker({ value, onValueChange, withTime, min, max, timeStep, required, disabled, placeholder, id, 'aria-label': ariaLabel, 'aria-labelledby': ariaLabelledBy, 'aria-describedby': ariaDescribedBy, 'aria-invalid': ariaInvalid, 'aria-required': ariaRequired, className, }: DatePickerProps): import("react").JSX.Element;
@@ -0,0 +1,191 @@
1
+ import { cx } from "../cx.js";
2
+ import { CalendarIcon, ChevronLeftIcon, ChevronRightIcon } from "../icons.js";
3
+ import { panelClassName, positionerClassName } from "./floating.js";
4
+ import { buttonClasses } from "./buttonClasses.js";
5
+ import { useStrings } from "./Provider.js";
6
+ import { fieldBox } from "./fieldBox.js";
7
+ import { jsx, jsxs } from "react/jsx-runtime";
8
+ import { useState } from "react";
9
+ import { Popover } from "@base-ui/react/popover";
10
+ import { DayPicker } from "@daypicker/react";
11
+ //#region src/components/DatePicker.tsx
12
+ var pad = (n) => String(n).padStart(2, "0");
13
+ var toDay = (date) => `${date.getFullYear()}-${pad(date.getMonth() + 1)}-${pad(date.getDate())}`;
14
+ /** The local calendar day a value names, or undefined for none or nonsense. */
15
+ function parseDay(value) {
16
+ const match = value?.match(/^(\d{4})-(\d{2})-(\d{2})/);
17
+ if (!match) return;
18
+ const [, y, m, d] = match.map(Number);
19
+ const date = new Date(y, m - 1, d);
20
+ return Number.isNaN(date.getTime()) ? void 0 : date;
21
+ }
22
+ var timeOf = (value) => value?.match(/T(\d{2}:\d{2}(?::\d{2})?)/)?.[1];
23
+ /** The locale's first day of the week, where the browser reports it; Sunday otherwise. */
24
+ function firstWeekday() {
25
+ try {
26
+ const locale = new Intl.Locale(navigator.language);
27
+ const firstDay = (locale.getWeekInfo?.() ?? locale.weekInfo)?.firstDay;
28
+ return firstDay === void 0 ? 0 : firstDay % 7;
29
+ } catch {
30
+ return 0;
31
+ }
32
+ }
33
+ var caption = new Intl.DateTimeFormat(void 0, {
34
+ month: "long",
35
+ year: "numeric"
36
+ });
37
+ var weekday = new Intl.DateTimeFormat(void 0, { weekday: "narrow" });
38
+ var longDay = new Intl.DateTimeFormat(void 0, { dateStyle: "full" });
39
+ var shownDay = new Intl.DateTimeFormat(void 0, { dateStyle: "medium" });
40
+ var calendarClassNames = {
41
+ root: "relative p-3",
42
+ months: "flex flex-col",
43
+ month: "flex flex-col gap-2",
44
+ month_caption: "flex h-7 items-center px-1",
45
+ caption_label: "text-sm font-semibold",
46
+ nav: "absolute top-3 right-3 flex items-center gap-1",
47
+ button_previous: buttonClasses({
48
+ variant: "ghost",
49
+ size: "sm",
50
+ iconOnly: true
51
+ }),
52
+ button_next: buttonClasses({
53
+ variant: "ghost",
54
+ size: "sm",
55
+ iconOnly: true
56
+ }),
57
+ month_grid: "border-collapse",
58
+ weekdays: "",
59
+ weekday: "size-9 text-center text-xs font-normal text-(--theme-muted-text-color)",
60
+ week: "",
61
+ day: "size-9 p-0 text-center text-sm",
62
+ day_button: "size-9 rounded-md cursor-pointer outline-none hover:bg-(--theme-hover) focus-visible:ring-2 focus-visible:ring-(--theme-focus-ring) disabled:cursor-not-allowed disabled:hover:bg-transparent",
63
+ selected: "[&>button]:bg-(--theme-accent) [&>button]:text-(--theme-accent-text) [&>button]:hover:bg-(--theme-accent)",
64
+ today: "font-semibold [&>button]:underline [&>button]:underline-offset-4",
65
+ outside: "text-(--theme-muted-text-color) opacity-60",
66
+ disabled: "text-(--theme-muted-text-color) opacity-40"
67
+ };
68
+ var triggerClassName = cx(fieldBox(), "flex flex-1 min-w-40 cursor-pointer items-center gap-2 text-left");
69
+ /**
70
+ * A day from a calendar, and with `withTime` a time beside it. The value is a string as a native
71
+ * date or datetime-local input holds it, so it reads the same in forms and URLs; months, weekdays
72
+ * and the shown date follow the reader's locale.
73
+ */
74
+ function DatePicker({ value, onValueChange, withTime = false, min, max, timeStep = 60, required = false, disabled = false, placeholder, id, "aria-label": ariaLabel, "aria-labelledby": ariaLabelledBy, "aria-describedby": ariaDescribedBy, "aria-invalid": ariaInvalid, "aria-required": ariaRequired, className }) {
75
+ const t = useStrings().datePicker;
76
+ const { common } = useStrings();
77
+ const [open, setOpen] = useState(false);
78
+ const [weekStartsOn] = useState(firstWeekday);
79
+ const day = parseDay(value);
80
+ const time = timeOf(value) ?? timeOf(min) ?? "00:00";
81
+ const earliest = parseDay(min);
82
+ const latest = parseDay(max);
83
+ const outOfRange = [...earliest ? [{ before: earliest }] : [], ...latest ? [{ after: latest }] : []];
84
+ const emit = (next, nextTime = time) => {
85
+ if (!next) {
86
+ onValueChange("");
87
+ return;
88
+ }
89
+ onValueChange(withTime ? `${toDay(next)}T${nextTime}` : toDay(next));
90
+ };
91
+ const opensOn = day ?? earliest;
92
+ const pick = (next) => {
93
+ emit(next);
94
+ setOpen(false);
95
+ };
96
+ const sameDay = (bound) => day !== void 0 && parseDay(bound)?.getTime() === day.getTime();
97
+ return /* @__PURE__ */ jsxs("div", {
98
+ className: cx("flex w-full items-center gap-2", className),
99
+ children: [/* @__PURE__ */ jsxs(Popover.Root, {
100
+ open,
101
+ onOpenChange: setOpen,
102
+ children: [/* @__PURE__ */ jsxs(Popover.Trigger, {
103
+ id,
104
+ disabled,
105
+ "aria-label": ariaLabel,
106
+ "aria-labelledby": ariaLabelledBy,
107
+ "aria-describedby": ariaDescribedBy,
108
+ "aria-invalid": ariaInvalid || void 0,
109
+ "aria-required": ariaRequired || void 0,
110
+ className: triggerClassName,
111
+ children: [/* @__PURE__ */ jsx(CalendarIcon, {
112
+ "aria-hidden": "true",
113
+ className: "size-3.5 shrink-0 text-(--theme-muted-text-color)"
114
+ }), /* @__PURE__ */ jsx("span", {
115
+ className: cx("truncate", !day && "text-(--theme-muted-text-color)"),
116
+ children: day ? shownDay.format(day) : placeholder ?? t.pickDate
117
+ })]
118
+ }), /* @__PURE__ */ jsx(Popover.Portal, { children: /* @__PURE__ */ jsx(Popover.Positioner, {
119
+ align: "start",
120
+ sideOffset: 4,
121
+ className: positionerClassName,
122
+ children: /* @__PURE__ */ jsxs(Popover.Popup, {
123
+ className: panelClassName,
124
+ children: [/* @__PURE__ */ jsx(DayPicker, {
125
+ ...required ? {
126
+ mode: "single",
127
+ required: true,
128
+ selected: day,
129
+ onSelect: pick
130
+ } : {
131
+ mode: "single",
132
+ selected: day,
133
+ onSelect: pick
134
+ },
135
+ ...opensOn && { defaultMonth: opensOn },
136
+ ...earliest && { startMonth: earliest },
137
+ ...latest && { endMonth: latest },
138
+ disabled: outOfRange,
139
+ weekStartsOn,
140
+ autoFocus: true,
141
+ showOutsideDays: true,
142
+ fixedWeeks: true,
143
+ classNames: calendarClassNames,
144
+ formatters: {
145
+ formatCaption: (month) => caption.format(month),
146
+ formatWeekdayName: (date) => weekday.format(date)
147
+ },
148
+ labels: {
149
+ labelDayButton: (date) => longDay.format(date),
150
+ labelPrevious: () => t.previousMonth,
151
+ labelNext: () => t.nextMonth,
152
+ labelGrid: (month) => caption.format(month),
153
+ labelWeekday: (date) => new Intl.DateTimeFormat(void 0, { weekday: "long" }).format(date)
154
+ },
155
+ components: { Chevron: ({ orientation }) => orientation === "left" ? /* @__PURE__ */ jsx(ChevronLeftIcon, { "aria-hidden": "true" }) : /* @__PURE__ */ jsx(ChevronRightIcon, { "aria-hidden": "true" }) }
156
+ }), !required && day && /* @__PURE__ */ jsx("div", {
157
+ className: "flex justify-end border-t border-(--theme-border) px-3 py-2",
158
+ children: /* @__PURE__ */ jsx("button", {
159
+ type: "button",
160
+ className: buttonClasses({
161
+ variant: "ghost",
162
+ size: "xs"
163
+ }),
164
+ onClick: () => {
165
+ emit(void 0);
166
+ setOpen(false);
167
+ },
168
+ children: common.clear
169
+ })
170
+ })]
171
+ })
172
+ }) })]
173
+ }), withTime && /* @__PURE__ */ jsx("input", {
174
+ type: "time",
175
+ "aria-label": t.time,
176
+ value: day ? time : "",
177
+ step: timeStep,
178
+ min: sameDay(min) ? timeOf(min) : void 0,
179
+ max: sameDay(max) ? timeOf(max) : void 0,
180
+ disabled,
181
+ "aria-invalid": ariaInvalid || void 0,
182
+ onChange: (event) => {
183
+ const next = event.target.value;
184
+ if (next) emit(day ?? earliest ?? /* @__PURE__ */ new Date(), next);
185
+ },
186
+ className: cx(fieldBox(), "w-auto tabular-nums")
187
+ })]
188
+ });
189
+ }
190
+ //#endregion
191
+ export { DatePicker };
@@ -1,11 +1,11 @@
1
+ import { cx } from "../cx.js";
1
2
  import { InfoTip } from "./InfoTip.js";
2
- import { clsx } from "clsx";
3
3
  import { Fragment, jsx, jsxs } from "react/jsx-runtime";
4
4
  import React from "react";
5
5
  //#region src/components/DescriptionList.tsx
6
6
  function DescriptionListItem({ label, children, tooltip, className, ...props }) {
7
7
  return /* @__PURE__ */ jsxs(Fragment, { children: [/* @__PURE__ */ jsxs("dt", {
8
- className: clsx("text-[13px] leading-6 col-span-1 font-normal flex gap-1", className),
8
+ className: cx("text-[13px] leading-6 col-span-1 font-normal flex gap-1", className),
9
9
  children: [/* @__PURE__ */ jsx("span", {
10
10
  className: "min-w-0 truncate",
11
11
  children: label
@@ -21,7 +21,7 @@ function DescriptionListItem({ label, children, tooltip, className, ...props })
21
21
  }
22
22
  function DescriptionList({ children, title, separators = true, subtitle, className, wrapperClassName, vertical = false }) {
23
23
  return /* @__PURE__ */ jsxs("div", {
24
- className: clsx("w-full", wrapperClassName),
24
+ className: cx("w-full", wrapperClassName),
25
25
  children: [
26
26
  title && /* @__PURE__ */ jsx("h2", {
27
27
  className: "text-sm font-semibold w-full mb-1",
@@ -32,7 +32,7 @@ function DescriptionList({ children, title, separators = true, subtitle, classNa
32
32
  children: subtitle
33
33
  }),
34
34
  /* @__PURE__ */ jsx("dl", {
35
- className: clsx("grid", separators && "*:not-last-of-type:border-b-1", vertical ? "grid-cols-1" : "grid-cols-5 gap-x-4 gap-y-0.5 *:pb-0.5", className),
35
+ className: cx("grid", separators && "*:not-last-of-type:border-b-1", vertical ? "grid-cols-1" : "grid-cols-5 gap-x-4 gap-y-0.5 *:pb-0.5", className),
36
36
  children: Array.isArray(children) ? React.Children.toArray(children) : children
37
37
  })
38
38
  ]
@@ -0,0 +1,34 @@
1
+ import type { ReactNode } from 'react';
2
+ /** The height a collapsible panel animates as it opens and closes. It clips
3
+ * only while it moves, so focus rings and overflowing content show once open. */
4
+ export declare const collapsePanelClassName = "h-(--collapsible-panel-height) transition-[height,opacity] duration-200 ease-out motion-reduce:transition-none data-starting-style:h-0 data-starting-style:overflow-hidden data-starting-style:opacity-0 data-ending-style:h-0 data-ending-style:overflow-hidden data-ending-style:opacity-0";
5
+ export interface DisclosureProps {
6
+ /** The line that toggles the detail: a label, or a row of status and label. */
7
+ summary: ReactNode;
8
+ open?: boolean | undefined;
9
+ onOpenChange?: ((open: boolean) => void) | undefined;
10
+ defaultOpen?: boolean | undefined;
11
+ /** Nothing to reveal: the summary shows without a toggle. */
12
+ disabled?: boolean | undefined;
13
+ /** Keep the detail mounted while folded, so its own state survives. */
14
+ keepMounted?: boolean | undefined;
15
+ className?: string | undefined;
16
+ /** On the toggle: its width (`w-full` for a whole row), text size and color. */
17
+ summaryClassName?: string | undefined;
18
+ /** On the revealed detail: its indent and spacing. */
19
+ panelClassName?: string | undefined;
20
+ children: ReactNode;
21
+ }
22
+ /** A line inside content that reveals more detail beneath it, such as a tool
23
+ * call's arguments or a model's reasoning. For a titled part of a page or
24
+ * form, which belongs in the page's outline, use Section. */
25
+ export declare function Disclosure({ summary, open, onOpenChange, defaultOpen, disabled, keepMounted, className, summaryClassName, panelClassName, children, }: DisclosureProps): import("react").JSX.Element;
26
+ /** The revealing panel alone, for a toggle that lives elsewhere, such as a
27
+ * tree row's chevron that names this panel with `aria-controls`. */
28
+ export declare function DisclosurePanel({ open, id, keepMounted, className, children, }: {
29
+ open: boolean;
30
+ id?: string | undefined;
31
+ keepMounted?: boolean | undefined;
32
+ className?: string | undefined;
33
+ children: ReactNode;
34
+ }): import("react").JSX.Element;
@@ -0,0 +1,46 @@
1
+ import { cx } from "../cx.js";
2
+ import { ChevronRightIcon } from "../icons.js";
3
+ import { jsx, jsxs } from "react/jsx-runtime";
4
+ import { Collapsible } from "@base-ui/react/collapsible";
5
+ //#region src/components/Disclosure.tsx
6
+ /** The height a collapsible panel animates as it opens and closes. It clips
7
+ * only while it moves, so focus rings and overflowing content show once open. */
8
+ var collapsePanelClassName = "h-(--collapsible-panel-height) transition-[height,opacity] duration-200 ease-out motion-reduce:transition-none data-starting-style:h-0 data-starting-style:overflow-hidden data-starting-style:opacity-0 data-ending-style:h-0 data-ending-style:overflow-hidden data-ending-style:opacity-0";
9
+ /** A line inside content that reveals more detail beneath it, such as a tool
10
+ * call's arguments or a model's reasoning. For a titled part of a page or
11
+ * form, which belongs in the page's outline, use Section. */
12
+ function Disclosure({ summary, open, onOpenChange, defaultOpen = false, disabled = false, keepMounted = false, className, summaryClassName, panelClassName, children }) {
13
+ return /* @__PURE__ */ jsxs(Collapsible.Root, {
14
+ open,
15
+ onOpenChange: (next) => onOpenChange?.(next),
16
+ defaultOpen,
17
+ disabled,
18
+ className,
19
+ children: [/* @__PURE__ */ jsxs(Collapsible.Trigger, {
20
+ className: cx("group/disclosure flex min-w-0 items-start gap-2 text-left", disabled ? "cursor-default" : "cursor-pointer", summaryClassName),
21
+ children: [summary, !disabled && /* @__PURE__ */ jsx(ChevronRightIcon, {
22
+ "aria-hidden": "true",
23
+ className: "mt-1 h-3.5 w-3.5 shrink-0 opacity-70 transition-transform group-data-panel-open/disclosure:rotate-90 motion-reduce:transition-none"
24
+ })]
25
+ }), /* @__PURE__ */ jsx(Collapsible.Panel, {
26
+ keepMounted,
27
+ className: cx(collapsePanelClassName, panelClassName),
28
+ children
29
+ })]
30
+ });
31
+ }
32
+ /** The revealing panel alone, for a toggle that lives elsewhere, such as a
33
+ * tree row's chevron that names this panel with `aria-controls`. */
34
+ function DisclosurePanel({ open, id, keepMounted = false, className, children }) {
35
+ return /* @__PURE__ */ jsx(Collapsible.Root, {
36
+ open,
37
+ children: /* @__PURE__ */ jsx(Collapsible.Panel, {
38
+ id,
39
+ keepMounted,
40
+ className: cx(collapsePanelClassName, className),
41
+ children
42
+ })
43
+ });
44
+ }
45
+ //#endregion
46
+ export { Disclosure, DisclosurePanel, collapsePanelClassName };
@@ -0,0 +1,47 @@
1
+ import { Drawer as BaseDrawer } from '@base-ui/react/drawer';
2
+ import { type ReactNode } from 'react';
3
+ export interface DrawerProps extends Omit<BaseDrawer.Popup.Props, 'className' | 'children' | 'render' | 'title'> {
4
+ open: boolean;
5
+ onClose: () => void;
6
+ /** The header's heading, which names the drawer. Without one, name it with `aria-label`. */
7
+ title?: ReactNode;
8
+ /** A line under the title. */
9
+ description?: ReactNode;
10
+ /** Actions along the bottom edge, such as Cancel and Save; they stay in view as the body scrolls. */
11
+ footer?: ReactNode;
12
+ /** The edge it slides in from, and the way a swipe dismisses it. */
13
+ side?: 'left' | 'right';
14
+ /** Its width: pixels, or any CSS length such as `'100%'` for as wide as the space allows. */
15
+ width?: number | string;
16
+ /** Adds a handle on the inner edge that drags, or arrow keys move, to change the width. */
17
+ resizable?: boolean;
18
+ /** The narrowest a drag leaves it, in pixels. */
19
+ minWidth?: number;
20
+ /** False ignores the backdrop and Escape, so typed input isn't lost to a stray
21
+ * click; the drawer's own buttons still close it. */
22
+ dismissible?: boolean;
23
+ /** True dims the page behind it, locks its scroll and keeps focus inside;
24
+ * `'trap-focus'` dims and keeps focus but leaves the page's scroll alone, as an
25
+ * embedded panel wants; false is a side panel the page stays usable beside. */
26
+ modal?: boolean | 'trap-focus';
27
+ /** False drops the header's close button, for a drawer whose footer closes it. */
28
+ closeButton?: boolean;
29
+ /** Covers its nearest positioned ancestor instead of the window, as a drawer
30
+ * inside an embedded panel does. */
31
+ contained?: boolean;
32
+ /** Keeps the content mounted while closed, so its scroll and state survive. */
33
+ keepMounted?: boolean;
34
+ /** False drops the body's padding, for content that fills the drawer edge to edge. */
35
+ padded?: boolean;
36
+ /** On the body. */
37
+ className?: string;
38
+ children: ReactNode;
39
+ }
40
+ /** A panel that slides in from an edge over the page. A swipe toward that edge,
41
+ * Escape or a press outside closes it, and focus returns where it was.
42
+ *
43
+ * It leaves the host's fixed chrome uncovered: it starts below
44
+ * `--app-inset-top` (a top bar's height), and at its widest leaves the strip
45
+ * `--app-inset-start` (a start-side sidebar's width, at least 2.5rem). Set both
46
+ * on the document root. */
47
+ export declare function Drawer({ open, onClose, title, description, footer, side, width, resizable, minWidth, dismissible, modal, closeButton, contained, keepMounted, padded, className, children, ...popupProps }: DrawerProps): import("react").JSX.Element;