@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,31 +1,58 @@
1
- import { clsx } from "clsx";
1
+ import { cx } from "../cx.js";
2
2
  import { jsx, jsxs } from "react/jsx-runtime";
3
3
  //#region src/components/SettingsCard.tsx
4
- /**
5
- * A settings card: an optional sentence-case section label sits above a
6
- * bordered panel of rows. The label carries the breathing-room rhythm between
7
- * cards; the rows inside provide their own dividers via SettingRow's `isFirst`.
8
- */
9
- function SettingsCard({ title, description, action, actionAlign = "adjacent", overflowVisible, children, className }) {
4
+ /** A page's settings, grouped: a titled panel of SettingRows, each ruled off from
5
+ * the next. Cards stack with room between them. */
6
+ function SettingsCard({ title, description, action, actionAlign = "beside", overflowVisible = false, className, children }) {
10
7
  return /* @__PURE__ */ jsxs("section", {
11
- className: clsx("mt-10 first:mt-0", className),
8
+ className: cx("mt-10 first:mt-0", className),
12
9
  children: [(title || action) && /* @__PURE__ */ jsxs("div", {
13
10
  className: "mb-3 px-0.5",
14
11
  children: [/* @__PURE__ */ jsxs("div", {
15
- className: clsx("flex items-center gap-1.5", actionAlign === "right" && "justify-between"),
12
+ className: cx("flex items-center gap-1.5", actionAlign === "end" && "justify-between"),
16
13
  children: [title && /* @__PURE__ */ jsx("h2", {
17
- className: "text-[15px] font-semibold theme-text leading-none",
14
+ className: "text-[15px] leading-none font-semibold theme-text",
18
15
  children: title
19
16
  }), action]
20
17
  }), description && /* @__PURE__ */ jsx("p", {
21
- className: "text-xs theme-muted-text mt-1.5 leading-snug",
18
+ className: "mt-1.5 text-xs leading-snug theme-muted-text",
22
19
  children: description
23
20
  })]
24
21
  }), /* @__PURE__ */ jsx("div", {
25
- className: clsx("panel", overflowVisible ? "overflow-visible" : "overflow-hidden"),
22
+ className: cx("panel divide-y divide-(--theme-border)", overflowVisible ? "overflow-visible" : "overflow-hidden"),
23
+ children
24
+ })]
25
+ });
26
+ }
27
+ /** A heading between groups of rows inside a SettingsCard. */
28
+ function SettingsHeading({ children }) {
29
+ return /* @__PURE__ */ jsx("h3", {
30
+ className: "px-5 py-3 text-sm font-semibold tracking-wider uppercase theme-muted-panel theme-muted-text",
31
+ children
32
+ });
33
+ }
34
+ /** One setting in a SettingsCard: its name and help on the left, its control on
35
+ * the right, or under the name across the row with `fill`. */
36
+ function SettingRow({ label, htmlFor, helpText, fill = false, onClick, children }) {
37
+ return /* @__PURE__ */ jsxs("div", {
38
+ role: "none",
39
+ onClick,
40
+ className: cx("grid grid-cols-1 gap-x-8 gap-y-2 px-5 py-5", fill ? "md:grid-cols-[200px_1fr]" : "md:grid-cols-[1fr_auto]", onClick && "cursor-pointer transition-colors select-none hover:theme-hover"),
41
+ children: [/* @__PURE__ */ jsxs("div", {
42
+ className: "flex flex-col gap-y-1",
43
+ children: [/* @__PURE__ */ jsx("label", {
44
+ htmlFor,
45
+ className: "leading-tight font-semibold theme-text",
46
+ children: label
47
+ }), helpText && /* @__PURE__ */ jsx("div", {
48
+ className: "text-xs leading-snug theme-muted-text",
49
+ children: helpText
50
+ })]
51
+ }), /* @__PURE__ */ jsx("div", {
52
+ className: cx("min-w-0", !fill && "flex items-center justify-end"),
26
53
  children
27
54
  })]
28
55
  });
29
56
  }
30
57
  //#endregion
31
- export { SettingsCard as default };
58
+ export { SettingRow, SettingsCard, SettingsHeading };
@@ -0,0 +1,22 @@
1
+ import type { ReactNode } from 'react';
2
+ export interface SkeletonProps {
3
+ /** Any CSS length, or pixels. Defaults to the container's width. */
4
+ width?: number | string | undefined;
5
+ /** Any CSS length, or pixels. Defaults to a line of text. */
6
+ height?: number | string | undefined;
7
+ circle?: boolean | undefined;
8
+ /** Lines of the same shape, one under another; space them with `className`. */
9
+ count?: number | undefined;
10
+ className?: string | undefined;
11
+ }
12
+ /** The shape of content still loading. Hidden from assistive technology, so
13
+ * wrap a page's skeletons in one `LoadingRegion` that says they are loading. */
14
+ export declare function Skeleton({ width, height, circle, count, className }: SkeletonProps): import("react").JSX.Element[];
15
+ /** Says, once, that what it holds is still loading, for skeletons or a chart
16
+ * drawing its first data. */
17
+ export declare function LoadingRegion({ label, className, children, }: {
18
+ /** Defaults to the provider's `loading` string. */
19
+ label?: string | undefined;
20
+ className?: string | undefined;
21
+ children: ReactNode;
22
+ }): import("react").JSX.Element;
@@ -0,0 +1,34 @@
1
+ import { cx } from "../cx.js";
2
+ import { positionKeys } from "./keys.js";
3
+ import { useStrings } from "./Provider.js";
4
+ import { jsx, jsxs } from "react/jsx-runtime";
5
+ //#region src/components/Skeleton.tsx
6
+ /** The shape of content still loading. Hidden from assistive technology, so
7
+ * wrap a page's skeletons in one `LoadingRegion` that says they are loading. */
8
+ function Skeleton({ width, height, circle, count = 1, className }) {
9
+ return positionKeys(count, "skeleton").map((key) => /* @__PURE__ */ jsx("span", {
10
+ "aria-hidden": "true",
11
+ className: cx("block animate-pulse bg-(--theme-muted-panel-bg) motion-reduce:animate-none", circle ? "rounded-full" : "rounded", height === void 0 && "h-[1em]", className),
12
+ style: {
13
+ width: width ?? (circle ? height : void 0),
14
+ height
15
+ }
16
+ }, key));
17
+ }
18
+ /** Says, once, that what it holds is still loading, for skeletons or a chart
19
+ * drawing its first data. */
20
+ function LoadingRegion({ label, className, children }) {
21
+ const { loading } = useStrings().common;
22
+ const name = label || loading;
23
+ return /* @__PURE__ */ jsxs("div", {
24
+ role: "status",
25
+ "aria-label": name,
26
+ className,
27
+ children: [children, /* @__PURE__ */ jsx("span", {
28
+ className: "sr-only",
29
+ children: name
30
+ })]
31
+ });
32
+ }
33
+ //#endregion
34
+ export { LoadingRegion, Skeleton };
@@ -0,0 +1,16 @@
1
+ export interface SliderProps {
2
+ value: number;
3
+ onValueChange: (value: number) => void;
4
+ min: number;
5
+ max: number;
6
+ step?: number | undefined;
7
+ disabled?: boolean | undefined;
8
+ /** How the value reads to assistive technology, as Intl formats numbers. */
9
+ format?: Intl.NumberFormatOptions | undefined;
10
+ /** The thumb's name; a slider beside a field's own box shares the field's label. */
11
+ 'aria-label'?: string | undefined;
12
+ className?: string | undefined;
13
+ }
14
+ /** A number picked by dragging along a range, or with the arrow keys. Pair it with a
15
+ * NumberInput when the exact value matters. */
16
+ export declare function Slider({ value, onValueChange, min, max, step, disabled, format, 'aria-label': ariaLabel, className, }: SliderProps): import("react").JSX.Element;
@@ -0,0 +1,30 @@
1
+ import { cx } from "../cx.js";
2
+ import { jsx, jsxs } from "react/jsx-runtime";
3
+ import { Slider } from "@base-ui/react/slider";
4
+ //#region src/components/Slider.tsx
5
+ /** A number picked by dragging along a range, or with the arrow keys. Pair it with a
6
+ * NumberInput when the exact value matters. */
7
+ function Slider$1({ value, onValueChange, min, max, step = 1, disabled = false, format, "aria-label": ariaLabel, className }) {
8
+ return /* @__PURE__ */ jsx(Slider.Root, {
9
+ value,
10
+ onValueChange: (next) => onValueChange(Array.isArray(next) ? next[0] ?? min : next),
11
+ min,
12
+ max,
13
+ step,
14
+ disabled,
15
+ format,
16
+ className: cx("w-full", className),
17
+ children: /* @__PURE__ */ jsx(Slider.Control, {
18
+ className: "flex w-full touch-none select-none items-center py-2 data-disabled:cursor-not-allowed data-disabled:opacity-50",
19
+ children: /* @__PURE__ */ jsxs(Slider.Track, {
20
+ className: "h-1 w-full rounded-full bg-(--theme-border)",
21
+ children: [/* @__PURE__ */ jsx(Slider.Indicator, { className: "rounded-full bg-(--theme-accent)" }), /* @__PURE__ */ jsx(Slider.Thumb, {
22
+ "aria-label": ariaLabel,
23
+ className: "size-4 rounded-full border-2 border-(--theme-accent) bg-(--theme-panel-bg) shadow-sm outline-none has-[:focus-visible]:ring-2 has-[:focus-visible]:ring-(--theme-focus-ring)"
24
+ })]
25
+ })
26
+ })
27
+ });
28
+ }
29
+ //#endregion
30
+ export { Slider$1 as Slider };
@@ -1,15 +1,13 @@
1
- import { TiArrowSortedDown } from "../icons/ti/TiArrowSortedDown.js";
2
- import { TiArrowSortedUp } from "../icons/ti/TiArrowSortedUp.js";
3
- import { TiArrowUnsorted } from "../icons/ti/TiArrowUnsorted.js";
1
+ import { SortDownIcon, SortUnsortedIcon, SortUpIcon } from "../icons.js";
4
2
  import { useStrings } from "./Provider.js";
5
3
  import { jsx } from "react/jsx-runtime";
6
4
  //#region src/components/Sort.tsx
7
5
  var SortIcon = ({ currentlySorted, currentDirection, name }) => {
8
6
  const style = { transform: "translateY(2px)" };
9
7
  if (currentlySorted === name) {
10
- if (currentDirection === "ascending") return /* @__PURE__ */ jsx(TiArrowSortedDown, { style });
11
- else if (currentDirection === "descending") return /* @__PURE__ */ jsx(TiArrowSortedUp, { style });
12
- } else return /* @__PURE__ */ jsx(TiArrowUnsorted, { style });
8
+ if (currentDirection === "ascending") return /* @__PURE__ */ jsx(SortDownIcon, { style });
9
+ else if (currentDirection === "descending") return /* @__PURE__ */ jsx(SortUpIcon, { style });
10
+ } else return /* @__PURE__ */ jsx(SortUnsortedIcon, { style });
13
11
  return null;
14
12
  };
15
13
  function Sort({ currentlySorted, name, setCurrentDirection, setCurrentlySorted, currentDirection }) {
@@ -1,5 +1,7 @@
1
1
  import type { ReactNode } from 'react';
2
- export type BadgeVariant = 'default' | 'success' | 'warning' | 'error' | 'info' | 'muted';
2
+ import { type Tone } from './tone.js';
3
+ /** A badge's tone. */
4
+ export type BadgeVariant = Tone;
3
5
  interface StatusBadgeProps {
4
6
  /** Badge content */
5
7
  children: ReactNode;
@@ -1,57 +1,34 @@
1
- import { clsx } from "clsx";
1
+ import { cx } from "../cx.js";
2
+ import { toneFill, toneSurface, toneText } from "./tone.js";
2
3
  import { jsx, jsxs } from "react/jsx-runtime";
3
4
  //#region src/components/StatusBadge.tsx
4
- var variantStyles = {
5
- default: "bg-(--theme-muted-panel-bg) text-(--theme-app) border-(--theme-border)",
6
- success: "bg-emerald-500/10 text-emerald-800 dark:text-emerald-400 border-emerald-500/20",
7
- warning: "bg-amber-500/10 text-amber-800 dark:text-amber-400 border-amber-500/20",
8
- error: "bg-red-500/10 text-red-800 dark:text-red-400 border-red-500/20",
9
- info: "bg-blue-500/10 text-blue-800 dark:text-blue-400 border-blue-500/20",
10
- muted: "bg-(--theme-muted-panel-bg)/50 text-(--theme-muted-text-color) border-(--theme-border)"
11
- };
12
- var pulseColors = {
13
- default: "bg-(--theme-app)",
14
- success: "bg-emerald-500",
15
- warning: "bg-amber-500",
16
- error: "bg-red-500",
17
- info: "bg-blue-500",
18
- muted: "bg-(--theme-muted-text-color)"
19
- };
20
- var textColors = {
21
- default: "text-(--theme-app)",
22
- success: "text-emerald-600 dark:text-emerald-400",
23
- warning: "text-amber-600 dark:text-amber-400",
24
- error: "text-red-600 dark:text-red-400",
25
- info: "text-blue-600 dark:text-blue-400",
26
- muted: "text-(--theme-muted-text-color)"
27
- };
28
5
  /** A line of text in a variant's colour, for a status that stands beside a
29
6
  * dot rather than inside a badge. */
30
7
  function statusTextClass(variant) {
31
- return textColors[variant];
8
+ return toneText[variant];
32
9
  }
33
10
  function StatusBadge({ children, variant = "default", pulse = false, dot = false, size = "sm", className }) {
34
11
  return /* @__PURE__ */ jsxs("span", {
35
- className: clsx("inline-flex items-center gap-1.5 rounded-full border font-medium", size === "sm" && "px-2 py-0.5 text-[10px]", size === "md" && "px-2.5 py-1 text-xs", variantStyles[variant], className),
12
+ className: cx("inline-flex items-center gap-1.5 rounded-full border font-medium", size === "sm" && "px-2 py-0.5 text-[10px]", size === "md" && "px-2.5 py-1 text-xs", toneSurface[variant], className),
36
13
  children: [
37
14
  pulse && /* @__PURE__ */ jsxs("span", {
38
15
  className: "relative flex h-2 w-2",
39
- children: [/* @__PURE__ */ jsx("span", { className: clsx("absolute inline-flex h-full w-full animate-ping rounded-full opacity-75", pulseColors[variant]) }), /* @__PURE__ */ jsx("span", { className: clsx("relative inline-flex h-2 w-2 rounded-full", pulseColors[variant]) })]
16
+ children: [/* @__PURE__ */ jsx("span", { className: cx("absolute inline-flex h-full w-full animate-ping rounded-full opacity-75", toneFill[variant]) }), /* @__PURE__ */ jsx("span", { className: cx("relative inline-flex h-2 w-2 rounded-full", toneFill[variant]) })]
40
17
  }),
41
- dot && !pulse && /* @__PURE__ */ jsx("span", { className: clsx("inline-flex h-1.5 w-1.5 rounded-full", pulseColors[variant]) }),
18
+ dot && !pulse && /* @__PURE__ */ jsx("span", { className: cx("inline-flex h-1.5 w-1.5 rounded-full", toneFill[variant]) }),
42
19
  children
43
20
  ]
44
21
  });
45
22
  }
46
23
  function StatusDot({ variant = "default", pulse = false, size = 8, className }) {
47
24
  return /* @__PURE__ */ jsxs("span", {
48
- className: clsx("relative inline-flex", className),
25
+ className: cx("relative inline-flex", className),
49
26
  style: {
50
27
  width: size,
51
28
  height: size
52
29
  },
53
- children: [pulse && /* @__PURE__ */ jsx("span", { className: clsx("absolute inline-flex h-full w-full animate-ping rounded-full opacity-75", pulseColors[variant]) }), /* @__PURE__ */ jsx("span", {
54
- className: clsx("relative inline-flex rounded-full", pulseColors[variant]),
30
+ children: [pulse && /* @__PURE__ */ jsx("span", { className: cx("absolute inline-flex h-full w-full animate-ping rounded-full opacity-75", toneFill[variant]) }), /* @__PURE__ */ jsx("span", {
31
+ className: cx("relative inline-flex rounded-full", toneFill[variant]),
55
32
  style: {
56
33
  width: size,
57
34
  height: size
@@ -1,11 +1,7 @@
1
- import type { IconBaseProps } from 'react-icons';
2
1
  interface IBaseCheckmarkProps {
3
2
  className?: string;
4
3
  colored?: boolean;
5
4
  }
6
5
  export declare function SuccessCheckmark({ className, colored }: IBaseCheckmarkProps): import("react").JSX.Element;
7
6
  export declare function ErrorCheckmark({ className, colored }: IBaseCheckmarkProps): import("react").JSX.Element;
8
- export declare function LoaderIcon({ className, ...props }: IconBaseProps & {
9
- className?: string;
10
- }): import("react").JSX.Element;
11
7
  export {};
@@ -1,20 +1,12 @@
1
- import { BiError } from "../icons/bi/BiError.js";
2
- import { HiMiniCheckCircle } from "../icons/hi2/HiMiniCheckCircle.js";
3
- import { FaCircleNotch } from "../icons/fa/FaCircleNotch.js";
4
- import { clsx } from "clsx";
1
+ import { cx } from "../cx.js";
2
+ import { ErrorIcon, SuccessIcon } from "../icons.js";
5
3
  import { jsx } from "react/jsx-runtime";
6
4
  //#region src/components/StatusIcons.tsx
7
5
  function SuccessCheckmark({ className, colored = true }) {
8
- return /* @__PURE__ */ jsx(HiMiniCheckCircle, { className: clsx(colored && "text-green-500", className) });
6
+ return /* @__PURE__ */ jsx(SuccessIcon, { className: cx(colored && "text-green-500", className) });
9
7
  }
10
8
  function ErrorCheckmark({ className, colored = true }) {
11
- return /* @__PURE__ */ jsx(BiError, { className: clsx(colored && "text-red-400", className) });
12
- }
13
- function LoaderIcon({ className, ...props }) {
14
- return /* @__PURE__ */ jsx(FaCircleNotch, {
15
- className: clsx("animate-spin", className),
16
- ...props
17
- });
9
+ return /* @__PURE__ */ jsx(ErrorIcon, { className: cx(colored && "text-red-400", className) });
18
10
  }
19
11
  //#endregion
20
- export { ErrorCheckmark, LoaderIcon, SuccessCheckmark };
12
+ export { ErrorCheckmark, SuccessCheckmark };
@@ -12,11 +12,15 @@ declare const sizes: {
12
12
  export interface SwitchProps extends Omit<BaseSwitch.Root.Props, 'className' | 'children'> {
13
13
  size?: keyof typeof sizes;
14
14
  className?: string | undefined;
15
+ /** The on state's own name, such as "Enabled", shown beside the switch while it's on. */
16
+ onLabel?: string | undefined;
17
+ /** The off state's own name, shown beside the switch while it's off. */
18
+ offLabel?: string | undefined;
15
19
  }
16
20
  /**
17
21
  * An on/off control. Name it with an enclosing `<label>`, or `aria-label`. A
18
22
  * sibling `<label htmlFor>` needs `nativeButton render={<button />}`, which
19
23
  * puts the id on the button the label points at.
20
24
  */
21
- export declare function Switch({ size, className, ...props }: SwitchProps): import("react").JSX.Element;
25
+ export declare function Switch({ size, className, onLabel, offLabel, ...props }: SwitchProps): import("react").JSX.Element;
22
26
  export {};
@@ -1,5 +1,5 @@
1
- import { clsx } from "clsx";
2
- import { jsx } from "react/jsx-runtime";
1
+ import { cx } from "../cx.js";
2
+ import { jsx, jsxs } from "react/jsx-runtime";
3
3
  import { Switch } from "@base-ui/react/switch";
4
4
  //#region src/components/Switch.tsx
5
5
  var sizes = {
@@ -17,11 +17,28 @@ var sizes = {
17
17
  * sibling `<label htmlFor>` needs `nativeButton render={<button />}`, which
18
18
  * puts the id on the button the label points at.
19
19
  */
20
- function Switch$1({ size = "md", className, ...props }) {
21
- return /* @__PURE__ */ jsx(Switch.Root, {
20
+ function Switch$1({ size = "md", className, onLabel, offLabel, ...props }) {
21
+ const control = /* @__PURE__ */ jsx(Switch.Root, {
22
22
  ...props,
23
- className: clsx("inline-flex shrink-0 items-center rounded-full p-0.5 bg-(--theme-border) transition-colors duration-200 cursor-pointer outline-none", "data-checked:bg-(--theme-element)", "focus-visible:ring-2 focus-visible:ring-(--theme-focus-ring) aria-invalid:ring-2 aria-invalid:ring-(--theme-error)", "data-disabled:cursor-not-allowed data-disabled:opacity-50", sizes[size].root, className),
24
- children: /* @__PURE__ */ jsx(Switch.Thumb, { className: clsx("rounded-full bg-white shadow-sm transition-transform duration-200", sizes[size].thumb) })
23
+ className: cx("peer inline-flex shrink-0 items-center rounded-full p-0.5 bg-(--theme-border) transition-colors duration-200 cursor-pointer outline-none", "data-checked:bg-(--theme-accent)", "focus-visible:ring-2 focus-visible:ring-(--theme-focus-ring) aria-invalid:ring-2 aria-invalid:ring-(--theme-error)", "data-disabled:cursor-not-allowed data-disabled:opacity-50", sizes[size].root, className),
24
+ children: /* @__PURE__ */ jsx(Switch.Thumb, { className: cx("rounded-full bg-white shadow-sm transition-transform duration-200", sizes[size].thumb) })
25
+ });
26
+ if (onLabel === void 0 && offLabel === void 0) return control;
27
+ return /* @__PURE__ */ jsxs("span", {
28
+ className: "inline-flex items-center gap-2 text-sm text-(--theme-app)",
29
+ children: [
30
+ control,
31
+ /* @__PURE__ */ jsx("span", {
32
+ "aria-hidden": "true",
33
+ className: "peer-data-checked:hidden",
34
+ children: offLabel
35
+ }),
36
+ /* @__PURE__ */ jsx("span", {
37
+ "aria-hidden": "true",
38
+ className: "hidden peer-data-checked:inline",
39
+ children: onLabel
40
+ })
41
+ ]
25
42
  });
26
43
  }
27
44
  //#endregion
@@ -1,6 +1,5 @@
1
- import { useStrings } from "./Provider.js";
2
- import Loader from "./Loader.js";
3
- import { clsx } from "clsx";
1
+ import { cx } from "../cx.js";
2
+ import { Loader } from "./Loader.js";
4
3
  import { jsx, jsxs } from "react/jsx-runtime";
5
4
  import React from "react";
6
5
  //#region src/components/Table.tsx
@@ -10,7 +9,7 @@ function Item({ wrap = false, children, className, colspan = 1, ...tdProps }) {
10
9
  return /* @__PURE__ */ jsx("td", {
11
10
  ...tdProps,
12
11
  colSpan: colspan,
13
- className: clsx(yPadding, xPadding, wrap ? "" : "whitespace-nowrap", className),
12
+ className: cx(yPadding, xPadding, wrap ? "" : "whitespace-nowrap", className),
14
13
  children
15
14
  });
16
15
  }
@@ -18,7 +17,7 @@ function CompactItem({ wrap = false, children, className, colspan = 1, ...tdProp
18
17
  return /* @__PURE__ */ jsx("td", {
19
18
  ...tdProps,
20
19
  colSpan: colspan,
21
- className: clsx("px-2 text-sm font-medium", !wrap && "whitespace-nowrap", className),
20
+ className: cx("px-2 text-sm font-medium", !wrap && "whitespace-nowrap", className),
22
21
  children
23
22
  });
24
23
  }
@@ -31,7 +30,7 @@ function Header({ children, className, style, colspan = 1, onClick, sort, caps =
31
30
  colSpan: colspan,
32
31
  style,
33
32
  "aria-sort": sort === "unsorted" ? "none" : sort,
34
- className: clsx(className, yPadding, xPadding, textAlign, "text-xs font-medium", caps ? "uppercase tracking-wider" : ""),
33
+ className: cx(className, yPadding, xPadding, textAlign, "text-xs font-medium", caps ? "uppercase tracking-wider" : ""),
35
34
  children: onClick ? /* @__PURE__ */ jsx("button", {
36
35
  type: "button",
37
36
  onClick,
@@ -46,25 +45,19 @@ var isHeaderChild = (child) => {
46
45
  };
47
46
  var getHeaders = (children) => children.filter(isHeaderChild);
48
47
  function Table({ borderless = false, panel = true, className = "", wrapperClassName = "", tbodyClassName = "divide-y", theadClassName = "theme-muted-panel", children, roundedTop = false, rounded = false, roundedBottom = false, isLoading = false, tableProps }) {
49
- const { loading } = useStrings();
50
48
  const ChildrenArr = React.Children.toArray(children);
51
49
  const Headers = getHeaders(ChildrenArr);
52
50
  const hasOverflow = wrapperClassName.split(" ").some((cls) => cls.startsWith("overflow-"));
53
51
  return /* @__PURE__ */ jsx("div", {
54
52
  "aria-busy": isLoading,
55
- className: clsx("flex flex-col w-full", !hasOverflow && "overflow-hidden", wrapperClassName),
56
- children: isLoading ? /* @__PURE__ */ jsxs("div", {
57
- role: "status",
58
- "aria-label": loading,
53
+ className: cx("flex flex-col w-full", !hasOverflow && "overflow-hidden", wrapperClassName),
54
+ children: isLoading ? /* @__PURE__ */ jsx("div", {
59
55
  className: "flex justify-center items-center h-32",
60
- children: [/* @__PURE__ */ jsx(Loader, {}), /* @__PURE__ */ jsx("span", {
61
- className: "sr-only",
62
- children: loading
63
- })]
56
+ children: /* @__PURE__ */ jsx(Loader, {})
64
57
  }) : /* @__PURE__ */ jsx("div", {
65
- className: clsx("align-middle inline-block min-w-full overflow-x-auto", panel && "theme-panel", !borderless && "border theme-border", rounded && "rounded-2xl", roundedBottom && "rounded-b-2xl", roundedTop && "rounded-t-2xl"),
58
+ className: cx("align-middle inline-block min-w-full overflow-x-auto", panel && "theme-panel", !borderless && "border theme-border", rounded && "rounded-2xl", roundedBottom && "rounded-b-2xl", roundedTop && "rounded-t-2xl"),
66
59
  children: /* @__PURE__ */ jsxs("table", {
67
- className: clsx(className, "min-w-full divide-y theme-border"),
60
+ className: cx(className, "min-w-full divide-y theme-border"),
68
61
  ...tableProps,
69
62
  children: [/* @__PURE__ */ jsx("thead", {
70
63
  className: theadClassName,
@@ -82,11 +75,11 @@ function CompactTable({ wrapperClassName = "", className = "", tbodyClassName =
82
75
  const Headers = getHeaders(ChildrenArr);
83
76
  const hasOverflow = wrapperClassName.split(" ").some((cls) => cls.startsWith("overflow-"));
84
77
  return /* @__PURE__ */ jsx("div", {
85
- className: clsx("flex flex-col w-full", !hasOverflow && "overflow-hidden", wrapperClassName),
78
+ className: cx("flex flex-col w-full", !hasOverflow && "overflow-hidden", wrapperClassName),
86
79
  children: /* @__PURE__ */ jsx("div", {
87
- className: clsx("theme-panel inline-block min-w-full align-middle overflow-x-auto", rounded && "rounded-2xl", roundedBottom && "rounded-b-2xl pb-1", roundedTop && "rounded-t-2xl"),
80
+ className: cx("theme-panel inline-block min-w-full align-middle overflow-x-auto", rounded && "rounded-2xl", roundedBottom && "rounded-b-2xl pb-1", roundedTop && "rounded-t-2xl"),
88
81
  children: /* @__PURE__ */ jsxs("table", {
89
- className: clsx("min-w-full divide-y theme-border", className),
82
+ className: cx("min-w-full divide-y theme-border", className),
90
83
  children: [/* @__PURE__ */ jsx("thead", {
91
84
  className: "theme-muted-panel",
92
85
  children: /* @__PURE__ */ jsx("tr", {
@@ -0,0 +1,52 @@
1
+ import { type ReactNode } from 'react';
2
+ import { type SegmentLayout } from './segmented.js';
3
+ export interface TabItem<Value extends string = string> {
4
+ value: Value;
5
+ label: string;
6
+ icon?: ReactNode;
7
+ /** Beside the label, or in the corner when only the icon shows. */
8
+ badge?: ReactNode;
9
+ /** Navigates instead of showing a panel, for tabs that are pages. */
10
+ href?: string;
11
+ disabled?: boolean;
12
+ testId?: string;
13
+ }
14
+ declare const stickyClasses: {
15
+ underHeader: string;
16
+ underToolbar: string;
17
+ };
18
+ export interface TabsProps<Value extends string> extends SegmentLayout {
19
+ /** Names the set of tabs for assistive technology. */
20
+ label: string;
21
+ items: TabItem<Value>[];
22
+ /** The current tab. For tabs that are pages, the page being shown. */
23
+ value?: Value | undefined;
24
+ defaultValue?: Value | undefined;
25
+ onValueChange?: ((value: Value) => void) | undefined;
26
+ /** `line` underlines the current tab across a page; `segmented` matches a
27
+ * SegmentedControl, for a few views in a small space. `fill` and `iconOnly`
28
+ * apply to `segmented`. */
29
+ variant?: 'line' | 'segmented' | undefined;
30
+ /** At the tab row's far end, such as a picker for what the tabs show. */
31
+ end?: ReactNode;
32
+ /** Pins the tab row as the page scrolls. */
33
+ sticky?: keyof typeof stickyClasses | undefined;
34
+ /** On the tab row. */
35
+ className?: string | undefined;
36
+ testId?: string | undefined;
37
+ /** The `TabPanel`s; tabs that are pages leave this to the router. */
38
+ children?: ReactNode;
39
+ }
40
+ /** Views of one thing, one shown at a time: panels below the tabs, or pages
41
+ * the tabs link to. A lone tab would only repeat the page's title, so the row
42
+ * hides unless there are two or more, or something at its end. */
43
+ export declare function Tabs<Value extends string>({ label, items, value, defaultValue, onValueChange, variant, fill, iconOnly, end, sticky, className, testId, children, }: TabsProps<Value>): import("react").JSX.Element;
44
+ /** One tab's content, shown while its tab is current. */
45
+ export declare function TabPanel({ value, keepMounted, className, children, }: {
46
+ value: string;
47
+ /** Keeps the content, and its state, while another tab is shown. */
48
+ keepMounted?: boolean | undefined;
49
+ className?: string | undefined;
50
+ children: ReactNode;
51
+ }): import("react").JSX.Element;
52
+ export {};
@@ -0,0 +1,75 @@
1
+ import { cx } from "../cx.js";
2
+ import { Tooltip } from "./Tooltip.js";
3
+ import { useLink } from "./Provider.js";
4
+ import { SegmentContent, segmentClassName, segmentGroupClassName } from "./segmented.js";
5
+ import { jsx, jsxs } from "react/jsx-runtime";
6
+ import { useState } from "react";
7
+ import { Tabs } from "@base-ui/react/tabs";
8
+ //#region src/components/Tabs.tsx
9
+ var stickyClasses = {
10
+ underHeader: "sticky top-10 z-(--layer-sticky) bg-(--theme-app-bg)",
11
+ underToolbar: "sticky top-22 z-(--layer-sticky) bg-(--theme-app-bg)"
12
+ };
13
+ /** Views of one thing, one shown at a time: panels below the tabs, or pages
14
+ * the tabs link to. A lone tab would only repeat the page's title, so the row
15
+ * hides unless there are two or more, or something at its end. */
16
+ function Tabs$1({ label, items, value, defaultValue, onValueChange, variant = "line", fill = false, iconOnly = false, end, sticky, className, testId, children }) {
17
+ const Link = useLink();
18
+ const segmented = variant === "segmented";
19
+ const layout = {
20
+ fill,
21
+ iconOnly: segmented && iconOnly
22
+ };
23
+ const [own, setOwn] = useState(defaultValue ?? items[0]?.value);
24
+ const current = value ?? own;
25
+ const showRow = items.length > 1 || !!end;
26
+ const tabs = items.map((item) => {
27
+ const tab = /* @__PURE__ */ jsx(Tabs.Tab, {
28
+ value: item.value,
29
+ disabled: item.disabled,
30
+ "data-testid": item.testId,
31
+ ...item.href ? {
32
+ nativeButton: false,
33
+ render: /* @__PURE__ */ jsx(Link, { href: item.href })
34
+ } : {},
35
+ className: segmented ? segmentClassName(item.value === current, layout) : "flex cursor-pointer select-none items-center gap-1.5 whitespace-nowrap px-2 py-2 text-sm font-semibold theme-muted-text outline-none transition-colors hover:theme-text focus-visible:rounded-sm focus-visible:outline-2 focus-visible:-outline-offset-2 focus-visible:outline-(--theme-link) data-active:text-(--theme-link) data-disabled:cursor-not-allowed data-disabled:opacity-50",
36
+ children: /* @__PURE__ */ jsx(SegmentContent, {
37
+ ...item,
38
+ iconOnly: layout.iconOnly
39
+ })
40
+ }, item.value);
41
+ return layout.iconOnly ? /* @__PURE__ */ jsx(Tooltip, {
42
+ content: item.label,
43
+ side: "right",
44
+ children: tab
45
+ }, item.value) : tab;
46
+ });
47
+ return /* @__PURE__ */ jsxs(Tabs.Root, {
48
+ value: current ?? null,
49
+ onValueChange: (next) => {
50
+ setOwn(next);
51
+ onValueChange?.(next);
52
+ },
53
+ orientation: layout.iconOnly ? "vertical" : "horizontal",
54
+ "data-testid": testId,
55
+ children: [showRow && /* @__PURE__ */ jsxs("div", {
56
+ className: cx("flex items-center justify-between gap-2", !segmented && "border-b border-(--theme-border)", sticky && stickyClasses[sticky], className),
57
+ children: [/* @__PURE__ */ jsxs(Tabs.List, {
58
+ "aria-label": label,
59
+ className: cx(segmented ? segmentGroupClassName(layout) : "relative flex min-w-0 overflow-x-auto"),
60
+ children: [tabs, !segmented && /* @__PURE__ */ jsx(Tabs.Indicator, { className: "absolute bottom-0 left-0 h-0.5 w-(--active-tab-width) translate-x-(--active-tab-left) bg-(--theme-link) transition-[translate,width] duration-200 ease-in-out motion-reduce:transition-none" })]
61
+ }), end]
62
+ }), children]
63
+ });
64
+ }
65
+ /** One tab's content, shown while its tab is current. */
66
+ function TabPanel({ value, keepMounted, className, children }) {
67
+ return /* @__PURE__ */ jsx(Tabs.Panel, {
68
+ value,
69
+ keepMounted,
70
+ className: cx("outline-none", className),
71
+ children
72
+ });
73
+ }
74
+ //#endregion
75
+ export { TabPanel, Tabs$1 as Tabs };
@@ -0,0 +1,29 @@
1
+ import { type ColorPreference, type Mode, type Theme } from '../theme/index.js';
2
+ export interface ThemeEditorProps {
3
+ /** The theme being edited, as a host stores it. */
4
+ value: Theme;
5
+ onChange: (theme: Theme) => void;
6
+ /** Which mode's colors the controls edit. Leave it out to let the editor keep its own. */
7
+ mode?: Mode | undefined;
8
+ onModeChange?: ((mode: Mode) => void) | undefined;
9
+ /** The person's light, dark or system choice; the Appearance control shows when this and its handler are given. */
10
+ preference?: ColorPreference | undefined;
11
+ onPreferenceChange?: ((preference: ColorPreference) => void) | undefined;
12
+ /** What Reset returns to; the default theme when left out. */
13
+ defaultValue?: Theme | undefined;
14
+ /** False drops the preview beside the controls, for a host that applies the theme app-wide as it changes (`useApplyTheme`). */
15
+ preview?: boolean | undefined;
16
+ className?: string | undefined;
17
+ }
18
+ /**
19
+ * Edits a theme: a background, an accent and a contrast for light and for
20
+ * dark, an optional sidebar of its own and a code style. Everything else is
21
+ * generated, so any choice reads. It previews the result beside the controls,
22
+ * copies the theme as JSON, imports one pasted back, and resets.
23
+ */
24
+ export declare function ThemeEditor({ value, onChange, mode, onModeChange, preference, onPreferenceChange, defaultValue, preview, className, }: ThemeEditorProps): import("react").JSX.Element;
25
+ /** The theme on a small page: a sidebar, a panel of text, a control, statuses and code. */
26
+ export declare function ThemePreview({ theme, mode }: {
27
+ theme: Theme;
28
+ mode: Mode;
29
+ }): import("react").JSX.Element;