@flanksource/clicky-ui 0.3.38 → 0.3.40

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 (1289) hide show
  1. package/README.md +40 -4
  2. package/dist/ai.d.ts +1 -1
  3. package/dist/chat.d.ts +1 -1
  4. package/dist/clicky.d.ts +1 -1
  5. package/dist/comments/CommentAuthor.d.ts +2 -2
  6. package/dist/comments/CommentCard.d.ts +1 -1
  7. package/dist/comments/CommentCardParts.d.ts +1 -1
  8. package/dist/comments/CommentComposer.d.ts +1 -1
  9. package/dist/comments/CommentFilterBar.d.ts +1 -1
  10. package/dist/comments/CommentProgress.d.ts +1 -1
  11. package/dist/comments/CommentProvider.d.ts +2 -2
  12. package/dist/comments/CommentSidePanel.d.ts +1 -1
  13. package/dist/comments/CommentThread.d.ts +1 -1
  14. package/dist/comments/CommentThreadList.d.ts +1 -1
  15. package/dist/comments/GroupedComments.d.ts +1 -1
  16. package/dist/comments/MentionTextarea.d.ts +1 -1
  17. package/dist/comments/comment-context.d.ts +1 -1
  18. package/dist/comments/comment-fixtures.d.ts +1 -1
  19. package/dist/comments/comment-types.d.ts +1 -1
  20. package/dist/comments/comment-utils.d.ts +2 -2
  21. package/dist/comments.d.ts +16 -16
  22. package/dist/components/AccordionList.d.ts +1 -1
  23. package/dist/components/Combobox.d.ts +2 -2
  24. package/dist/components/ComboboxControl.d.ts +2 -2
  25. package/dist/components/ComboboxMenu.d.ts +2 -2
  26. package/dist/components/ComboboxTags.d.ts +1 -1
  27. package/dist/components/ConnectionLoggingPolicy.d.ts +1 -1
  28. package/dist/components/CountryPicker.d.ts +1 -1
  29. package/dist/components/EndpointSelector.d.ts +1 -1
  30. package/dist/components/EndpointSelector.model.d.ts +4 -4
  31. package/dist/components/FilterBar.d.ts +8 -8
  32. package/dist/components/FormLookupProvider.d.ts +1 -1
  33. package/dist/components/FormatOptionsDropdown.d.ts +2 -2
  34. package/dist/components/IconButton.d.ts +1 -1
  35. package/dist/components/ItemActions.d.ts +1 -1
  36. package/dist/components/JSONPathField.d.ts +4 -4
  37. package/dist/components/JsonSchemaForm.d.ts +1 -1
  38. package/dist/components/ListMenu.d.ts +2 -2
  39. package/dist/components/MdxEditorCallout.d.ts +1 -1
  40. package/dist/components/MdxEditorField.d.ts +2 -2
  41. package/dist/components/MdxEditorToolbar.d.ts +1 -1
  42. package/dist/components/MultiSelect.d.ts +1 -1
  43. package/dist/components/OnePasswordSelector.d.ts +1 -1
  44. package/dist/components/ScheduleEditor.d.ts +1 -1
  45. package/dist/components/SearchInput.d.ts +1 -1
  46. package/dist/components/SecretFormField.d.ts +2 -2
  47. package/dist/components/SecretKeySelector.d.ts +1 -1
  48. package/dist/components/SecretKeySelector.model.d.ts +1 -1
  49. package/dist/components/SegmentedControl.d.ts +1 -1
  50. package/dist/components/SplitButton.d.ts +3 -3
  51. package/dist/components/TreePickerField.d.ts +2 -2
  52. package/dist/components/TriStateToggle.d.ts +1 -1
  53. package/dist/components/WorkloadPicker.d.ts +2 -2
  54. package/dist/components/button.d.ts +1 -1
  55. package/dist/components/combobox-types.d.ts +2 -2
  56. package/dist/components/endpoint-port.d.ts +1 -1
  57. package/dist/components/filter-bar-field-utils.d.ts +3 -3
  58. package/dist/components/filter-bar-multi.d.ts +4 -4
  59. package/dist/components/filter-bar-utils.d.ts +1 -1
  60. package/dist/components/form-lookup-context.d.ts +1 -1
  61. package/dist/components/format-options.d.ts +1 -1
  62. package/dist/components/icon-menu-picker.d.ts +1 -1
  63. package/dist/components/jotai-bindings-core.d.ts +2 -2
  64. package/dist/components/jotai-bindings.d.ts +1 -1
  65. package/dist/components/json-schema-form-accordion-array.d.ts +1 -1
  66. package/dist/components/json-schema-form-array.d.ts +1 -1
  67. package/dist/components/json-schema-form-cards-array.d.ts +1 -1
  68. package/dist/components/json-schema-form-collection-layouts.fixtures.d.ts +1 -1
  69. package/dist/components/json-schema-form-discriminator.d.ts +1 -1
  70. package/dist/components/json-schema-form-error-display.d.ts +1 -1
  71. package/dist/components/json-schema-form-errors.d.ts +2 -2
  72. package/dist/components/json-schema-form-extensions.d.ts +1 -1
  73. package/dist/components/json-schema-form-fields.d.ts +2 -2
  74. package/dist/components/json-schema-form-filter.d.ts +1 -1
  75. package/dist/components/json-schema-form-grid.d.ts +2 -2
  76. package/dist/components/json-schema-form-item-row.d.ts +1 -1
  77. package/dist/components/json-schema-form-item-summary.d.ts +1 -1
  78. package/dist/components/json-schema-form-layout.d.ts +3 -3
  79. package/dist/components/json-schema-form-list-array.d.ts +1 -1
  80. package/dist/components/json-schema-form-lookup-tree.d.ts +2 -2
  81. package/dist/components/json-schema-form-object.d.ts +1 -1
  82. package/dist/components/json-schema-form-preferences.d.ts +1 -1
  83. package/dist/components/json-schema-form-properties-errors.fixtures.d.ts +2 -2
  84. package/dist/components/json-schema-form-properties-size.d.ts +1 -1
  85. package/dist/components/json-schema-form-properties.d.ts +2 -2
  86. package/dist/components/json-schema-form-properties.fixtures.d.ts +1 -1
  87. package/dist/components/json-schema-form-property-collection.d.ts +1 -1
  88. package/dist/components/json-schema-form-property-preview.d.ts +1 -1
  89. package/dist/components/json-schema-form-property-selection.d.ts +1 -1
  90. package/dist/components/json-schema-form-refs.d.ts +1 -1
  91. package/dist/components/json-schema-form-render.d.ts +1 -1
  92. package/dist/components/json-schema-form-resolve.d.ts +1 -1
  93. package/dist/components/json-schema-form-runtime-types.d.ts +4 -4
  94. package/dist/components/json-schema-form-size.d.ts +1 -1
  95. package/dist/components/json-schema-form-table-array.d.ts +1 -1
  96. package/dist/components/json-schema-form-tags-combobox.d.ts +2 -2
  97. package/dist/components/json-schema-form-template-menu.d.ts +1 -1
  98. package/dist/components/json-schema-form-template.d.ts +3 -3
  99. package/dist/components/json-schema-form-types.d.ts +5 -5
  100. package/dist/components/json-schema-form-utils.d.ts +2 -2
  101. package/dist/components/mdx-editor-callout-model.d.ts +1 -1
  102. package/dist/components/mdx-editor-callout.d.ts +1 -1
  103. package/dist/components/mdx-editor-field-plugins.d.ts +1 -1
  104. package/dist/components/mdx-editor-jsx-attributes.d.ts +1 -1
  105. package/dist/components/mdx-editor-options.d.ts +1 -1
  106. package/dist/components/secret-form-extension.d.ts +4 -4
  107. package/dist/components/unit-form-extension.d.ts +1 -1
  108. package/dist/components/useComboboxLayout.d.ts +1 -1
  109. package/dist/components/workload-picker-utils.d.ts +1 -1
  110. package/dist/components.d.ts +102 -102
  111. package/dist/data/Avatar.d.ts +1 -1
  112. package/dist/data/AvatarBadge.d.ts +3 -3
  113. package/dist/data/Badge.d.ts +2 -2
  114. package/dist/data/Callout.d.ts +1 -1
  115. package/dist/data/Clicky.d.ts +10 -10
  116. package/dist/data/Clicky.fixtures.d.ts +1 -1
  117. package/dist/data/DataTable.d.ts +11 -11
  118. package/dist/data/DataTableMenuSections.d.ts +3 -3
  119. package/dist/data/DataTablePreferencesSheet.d.ts +3 -3
  120. package/dist/data/FilterPill.d.ts +1 -1
  121. package/dist/data/FixtureEditor/FenceForm.d.ts +2 -2
  122. package/dist/data/FixtureEditor/FixtureEditor.d.ts +1 -1
  123. package/dist/data/FixtureEditor/FixtureFenceCodeBlockEditor.d.ts +2 -2
  124. package/dist/data/FixtureEditor/FixtureFrontmatterDialog.d.ts +1 -1
  125. package/dist/data/FixtureEditor/fixture-blocks.d.ts +2 -2
  126. package/dist/data/FixtureEditor/fixture-code-block-model.d.ts +1 -1
  127. package/dist/data/FixtureEditor/fixture-frontmatter.d.ts +1 -1
  128. package/dist/data/FixtureEditor/index.d.ts +4 -4
  129. package/dist/data/FixtureEditor/types.d.ts +3 -3
  130. package/dist/data/Gauge.d.ts +1 -1
  131. package/dist/data/GaugeHoverCard.d.ts +1 -1
  132. package/dist/data/GraphDiagram.d.ts +1 -1
  133. package/dist/data/HighlightedTokens.d.ts +1 -1
  134. package/dist/data/Icon.d.ts +1 -1
  135. package/dist/data/LogDetails.d.ts +3 -3
  136. package/dist/data/LogsTable.d.ts +3 -3
  137. package/dist/data/MarkdownEditor.d.ts +2 -2
  138. package/dist/data/MarkdownEditor.model.d.ts +1 -1
  139. package/dist/data/ObjectGraph.d.ts +2 -2
  140. package/dist/data/ProgressBars.d.ts +1 -1
  141. package/dist/data/PromptBanner.d.ts +1 -1
  142. package/dist/data/PromptBanner.model.d.ts +1 -1
  143. package/dist/data/PromptDialog.d.ts +1 -1
  144. package/dist/data/Properties.d.ts +1 -1
  145. package/dist/data/RadialGauge.d.ts +1 -1
  146. package/dist/data/SchemaViewer.d.ts +2 -2
  147. package/dist/data/SelectionActionBar.d.ts +1 -1
  148. package/dist/data/ServerTimingBadge.d.ts +2 -2
  149. package/dist/data/SortableHeader.d.ts +1 -1
  150. package/dist/data/StatStrip.d.ts +2 -2
  151. package/dist/data/TabButton.d.ts +1 -1
  152. package/dist/data/TaskExecDetails.d.ts +1 -1
  153. package/dist/data/TaskHeaderExtras.d.ts +1 -1
  154. package/dist/data/TaskManager.d.ts +2 -2
  155. package/dist/data/TaskProcessDetails.d.ts +1 -1
  156. package/dist/data/TaskProcessMetadata.d.ts +1 -1
  157. package/dist/data/TaskProgress.d.ts +3 -3
  158. package/dist/data/TaskResourceReadings.d.ts +1 -1
  159. package/dist/data/TaskStreamTabs.d.ts +1 -1
  160. package/dist/data/Timeline.d.ts +2 -2
  161. package/dist/data/TimeseriesCoreBars.cjs +10 -36
  162. package/dist/data/TimeseriesCoreBars.cjs.map +1 -1
  163. package/dist/data/TimeseriesCoreBars.d.ts +5 -5
  164. package/dist/data/TimeseriesCoreBars.d.ts.map +1 -1
  165. package/dist/data/TimeseriesCoreBars.js +8 -34
  166. package/dist/data/TimeseriesCoreBars.js.map +1 -1
  167. package/dist/data/TimeseriesGauge.cjs +12 -36
  168. package/dist/data/TimeseriesGauge.cjs.map +1 -1
  169. package/dist/data/TimeseriesGauge.d.ts +15 -5
  170. package/dist/data/TimeseriesGauge.d.ts.map +1 -1
  171. package/dist/data/TimeseriesGauge.js +10 -34
  172. package/dist/data/TimeseriesGauge.js.map +1 -1
  173. package/dist/data/TimeseriesPanel.axes.d.ts +1 -1
  174. package/dist/data/TimeseriesPanel.cjs +82 -39
  175. package/dist/data/TimeseriesPanel.cjs.map +1 -1
  176. package/dist/data/TimeseriesPanel.d.ts +3 -3
  177. package/dist/data/TimeseriesPanel.d.ts.map +1 -1
  178. package/dist/data/TimeseriesPanel.js +82 -39
  179. package/dist/data/TimeseriesPanel.js.map +1 -1
  180. package/dist/data/TimeseriesPanel.model.cjs +1 -0
  181. package/dist/data/TimeseriesPanel.model.cjs.map +1 -1
  182. package/dist/data/TimeseriesPanel.model.d.ts +39 -3
  183. package/dist/data/TimeseriesPanel.model.d.ts.map +1 -1
  184. package/dist/data/TimeseriesPanel.model.js +1 -0
  185. package/dist/data/TimeseriesPanel.model.js.map +1 -1
  186. package/dist/data/Tree.d.ts +1 -1
  187. package/dist/data/TreeGroupHeader.d.ts +1 -1
  188. package/dist/data/Version.d.ts +1 -1
  189. package/dist/data/WorkloadCard.cjs +65 -31
  190. package/dist/data/WorkloadCard.cjs.map +1 -1
  191. package/dist/data/WorkloadCard.d.ts +17 -7
  192. package/dist/data/WorkloadCard.d.ts.map +1 -1
  193. package/dist/data/WorkloadCard.js +67 -33
  194. package/dist/data/WorkloadCard.js.map +1 -1
  195. package/dist/data/WorkloadCard.model.cjs +16 -10
  196. package/dist/data/WorkloadCard.model.cjs.map +1 -1
  197. package/dist/data/WorkloadCard.model.d.ts +33 -5
  198. package/dist/data/WorkloadCard.model.d.ts.map +1 -1
  199. package/dist/data/WorkloadCard.model.js +17 -11
  200. package/dist/data/WorkloadCard.model.js.map +1 -1
  201. package/dist/data/ai/AdvancedChatConfig.d.ts +2 -2
  202. package/dist/data/ai/ChatButton.d.ts +1 -1
  203. package/dist/data/ai/ChatFab.d.ts +1 -1
  204. package/dist/data/ai/ChatWindow.catalogs.d.ts +2 -2
  205. package/dist/data/ai/ChatWindow.d.ts +2 -2
  206. package/dist/data/ai/ChatWindow.models.d.ts +1 -1
  207. package/dist/data/ai/ChatWindow.preferences.d.ts +2 -2
  208. package/dist/data/ai/ChatWindow.runtime.d.ts +2 -2
  209. package/dist/data/ai/ChatWindow.test-utils.d.ts +2 -2
  210. package/dist/data/ai/ChatWindow.thread-status.d.ts +1 -1
  211. package/dist/data/ai/ChatWindow.thread.d.ts +1 -1
  212. package/dist/data/ai/ChatWindow.tool-catalog.d.ts +1 -1
  213. package/dist/data/ai/ChatWindow.types.d.ts +6 -6
  214. package/dist/data/ai/ChatWindowRequestBody.d.ts +3 -3
  215. package/dist/data/ai/ContextBadges.d.ts +1 -1
  216. package/dist/data/ai/PolicyTree.d.ts +1 -1
  217. package/dist/data/ai/PromptCatalog/PromptCatalogTable.d.ts +1 -1
  218. package/dist/data/ai/PromptCatalog/PromptLayerStrip.d.ts +1 -1
  219. package/dist/data/ai/PromptCatalog/PromptPage.d.ts +4 -4
  220. package/dist/data/ai/PromptCatalog/PromptPageEditor.d.ts +4 -4
  221. package/dist/data/ai/PromptCatalog/PromptPageHeader.d.ts +1 -1
  222. package/dist/data/ai/PromptCatalog/PromptPagePreview.d.ts +1 -1
  223. package/dist/data/ai/PromptCatalog/PromptPageSaveBar.d.ts +1 -1
  224. package/dist/data/ai/PromptCatalog/PromptSourceBadge.d.ts +1 -1
  225. package/dist/data/ai/PromptCatalog/index.d.ts +8 -8
  226. package/dist/data/ai/PromptCatalog/prompt-catalog-model.d.ts +1 -1
  227. package/dist/data/ai/PromptCatalog/prompt-page-model.d.ts +4 -4
  228. package/dist/data/ai/PromptCatalog/types.d.ts +1 -1
  229. package/dist/data/ai/PromptPicker/PromptPicker.d.ts +4 -4
  230. package/dist/data/ai/PromptPicker/PromptSourceRepair.d.ts +1 -1
  231. package/dist/data/ai/PromptPicker/index.d.ts +4 -4
  232. package/dist/data/ai/PromptPicker/prompt-runtime.d.ts +2 -2
  233. package/dist/data/ai/PromptPicker/types.d.ts +1 -1
  234. package/dist/data/ai/PromptRunEditor/PromptBlocks.d.ts +4 -4
  235. package/dist/data/ai/PromptRunEditor/RecentRuntimes.d.ts +3 -3
  236. package/dist/data/ai/PromptRunEditor/RuntimeRows.d.ts +5 -5
  237. package/dist/data/ai/PromptRunEditor/VariablesField.d.ts +1 -1
  238. package/dist/data/ai/PromptRunEditor/index.d.ts +11 -11
  239. package/dist/data/ai/PromptRunEditor/model.d.ts +1 -1
  240. package/dist/data/ai/PromptRunEditor/runtimeActions.d.ts +4 -4
  241. package/dist/data/ai/PromptRunEditor/yaml.d.ts +1 -1
  242. package/dist/data/ai/RuntimeModePicker.d.ts +3 -3
  243. package/dist/data/ai/SandboxConnectionsSection.d.ts +1 -1
  244. package/dist/data/ai/SandboxCreateWizard.d.ts +2 -2
  245. package/dist/data/ai/SandboxCreateWizard.model.d.ts +1 -1
  246. package/dist/data/ai/SessionChatComposer.d.ts +1 -1
  247. package/dist/data/ai/SessionInspector.approvals-model.d.ts +1 -1
  248. package/dist/data/ai/SessionInspector.approvals.d.ts +3 -3
  249. package/dist/data/ai/SessionInspector.collection-types.d.ts +2 -2
  250. package/dist/data/ai/SessionInspector.collection.d.ts +3 -3
  251. package/dist/data/ai/SessionInspector.compact.d.ts +2 -2
  252. package/dist/data/ai/SessionInspector.d.ts +6 -6
  253. package/dist/data/ai/SessionInspector.files.d.ts +1 -1
  254. package/dist/data/ai/SessionInspector.hierarchy-state.d.ts +2 -2
  255. package/dist/data/ai/SessionInspector.hierarchy.d.ts +2 -2
  256. package/dist/data/ai/SessionInspector.model.d.ts +1 -1
  257. package/dist/data/ai/SessionInspector.panel-values.d.ts +1 -1
  258. package/dist/data/ai/SessionInspector.panels.d.ts +4 -4
  259. package/dist/data/ai/SessionInspector.plan.d.ts +1 -1
  260. package/dist/data/ai/SessionInspector.summary.d.ts +1 -1
  261. package/dist/data/ai/SessionInspector.tabs.d.ts +2 -2
  262. package/dist/data/ai/SessionInspector.tabs.model.d.ts +2 -2
  263. package/dist/data/ai/SessionInspector.transcript.d.ts +2 -2
  264. package/dist/data/ai/SessionInspector.turns.d.ts +1 -1
  265. package/dist/data/ai/SessionViewer.d.ts +5 -5
  266. package/dist/data/ai/SessionViewer.fixtures.d.ts +2 -2
  267. package/dist/data/ai/SessionViewer.grouping.d.ts +1 -1
  268. package/dist/data/ai/SessionViewer.header.d.ts +2 -2
  269. package/dist/data/ai/SessionViewer.model.d.ts +2 -2
  270. package/dist/data/ai/SessionViewer.row-metadata.d.ts +1 -1
  271. package/dist/data/ai/SessionViewer.rows.d.ts +3 -3
  272. package/dist/data/ai/SessionViewer.tool-details.d.ts +1 -1
  273. package/dist/data/ai/SessionViewer.tool-row.d.ts +2 -2
  274. package/dist/data/ai/SessionViewerMenu.d.ts +2 -2
  275. package/dist/data/ai/SpecRuntimeEditor/CLIArgsSection.d.ts +2 -2
  276. package/dist/data/ai/SpecRuntimeEditor/CommitSection.d.ts +1 -1
  277. package/dist/data/ai/SpecRuntimeEditor/EnvironmentSection.d.ts +2 -2
  278. package/dist/data/ai/SpecRuntimeEditor/ModelContextAdvanced.d.ts +3 -3
  279. package/dist/data/ai/SpecRuntimeEditor/ModelSection.d.ts +5 -5
  280. package/dist/data/ai/SpecRuntimeEditor/PermissionModeField.d.ts +2 -2
  281. package/dist/data/ai/SpecRuntimeEditor/PermissionPolicyList.d.ts +1 -1
  282. package/dist/data/ai/SpecRuntimeEditor/PermissionsSection.d.ts +4 -4
  283. package/dist/data/ai/SpecRuntimeEditor/PromptSection.d.ts +2 -2
  284. package/dist/data/ai/SpecRuntimeEditor/SandboxSection.d.ts +4 -4
  285. package/dist/data/ai/SpecRuntimeEditor/SectionCard.d.ts +1 -1
  286. package/dist/data/ai/SpecRuntimeEditor/SectionTabs.d.ts +1 -1
  287. package/dist/data/ai/SpecRuntimeEditor/VerifySection.d.ts +5 -5
  288. package/dist/data/ai/SpecRuntimeEditor/WorkspaceSection.d.ts +3 -3
  289. package/dist/data/ai/SpecRuntimeEditor/env-model.d.ts +2 -2
  290. package/dist/data/ai/SpecRuntimeEditor/fields.d.ts +2 -2
  291. package/dist/data/ai/SpecRuntimeEditor/index.d.ts +11 -11
  292. package/dist/data/ai/SpecRuntimeEditor/permission-mode-visuals.d.ts +3 -3
  293. package/dist/data/ai/SpecRuntimeEditor/permissions-model.d.ts +3 -3
  294. package/dist/data/ai/SpecRuntimeEditor/summaries.d.ts +3 -3
  295. package/dist/data/ai/SpecRuntimeEditor/types.d.ts +4 -4
  296. package/dist/data/ai/SpecRuntimeEditor/update.d.ts +1 -1
  297. package/dist/data/ai/SpecRuntimeEditor.model.d.ts +5 -5
  298. package/dist/data/ai/ToolPreferences.d.ts +4 -4
  299. package/dist/data/ai/ToolPreferences.model.d.ts +2 -2
  300. package/dist/data/ai/ToolPreferencesList.d.ts +3 -3
  301. package/dist/data/ai/ToolSchemaBrowser.d.ts +2 -2
  302. package/dist/data/ai/ToolSchemaBrowser.detail.d.ts +2 -2
  303. package/dist/data/ai/ToolSchemaBrowser.model.d.ts +2 -2
  304. package/dist/data/ai/ToolSchemaBrowser.selection-toolbar.d.ts +2 -2
  305. package/dist/data/ai/ToolSchemaBrowser.sidebar.d.ts +4 -4
  306. package/dist/data/ai/agent-action-icons.d.ts +5 -5
  307. package/dist/data/ai/chat-window-context.d.ts +3 -3
  308. package/dist/data/ai/context.d.ts +1 -1
  309. package/dist/data/ai/examples/sessions/claude-complete.d.ts +1 -1
  310. package/dist/data/ai/examples/sessions/claude.d.ts +1 -1
  311. package/dist/data/ai/examples/sessions/codex-complete.d.ts +1 -1
  312. package/dist/data/ai/examples/sessions/codex.d.ts +1 -1
  313. package/dist/data/ai/examples/sessions/index.d.ts +5 -5
  314. package/dist/data/ai/index.d.ts +53 -53
  315. package/dist/data/ai/runtime-profile.d.ts +4 -4
  316. package/dist/data/ai/runtime-profiles/OrderedPresetSelect.d.ts +1 -1
  317. package/dist/data/ai/runtime-profiles/PermissionStrategiesEditor.d.ts +2 -2
  318. package/dist/data/ai/runtime-profiles/PermissionStrategyConditionRow.d.ts +3 -3
  319. package/dist/data/ai/runtime-profiles/PresetSpecEditor.d.ts +3 -3
  320. package/dist/data/ai/runtime-profiles/PresetWorkspace.d.ts +5 -5
  321. package/dist/data/ai/runtime-profiles/ProfilePresetChips.d.ts +1 -1
  322. package/dist/data/ai/runtime-profiles/ProfileSpecEditor.d.ts +4 -4
  323. package/dist/data/ai/runtime-profiles/ProfileWorkspace.d.ts +5 -5
  324. package/dist/data/ai/runtime-profiles/ResolutionInspector.d.ts +2 -2
  325. package/dist/data/ai/runtime-profiles/ResolutionTrace.d.ts +1 -1
  326. package/dist/data/ai/runtime-profiles/RuntimeLibraryList.d.ts +1 -1
  327. package/dist/data/ai/runtime-profiles/RuntimePersistenceBar.d.ts +1 -1
  328. package/dist/data/ai/runtime-profiles/RuntimeProfilePicker.d.ts +2 -2
  329. package/dist/data/ai/runtime-profiles/RuntimeProfilePicker.model.d.ts +3 -3
  330. package/dist/data/ai/runtime-profiles/RuntimeProfilesWorkspace.d.ts +4 -4
  331. package/dist/data/ai/runtime-profiles/index.d.ts +19 -19
  332. package/dist/data/ai/runtime-profiles/types.d.ts +3 -3
  333. package/dist/data/ai/runtime-profiles/use-permission-catalog.d.ts +3 -3
  334. package/dist/data/ai/runtime-profiles/use-resolution.d.ts +2 -2
  335. package/dist/data/ai/runtime-profiles/use-runtime-families.d.ts +1 -1
  336. package/dist/data/ai/runtime-profiles/use-runtime-profile-picker.d.ts +3 -3
  337. package/dist/data/ai/sandbox-kind-meta.d.ts +1 -1
  338. package/dist/data/ai/session-categories.d.ts +2 -2
  339. package/dist/data/ai/session-cost.d.ts +2 -2
  340. package/dist/data/ai/session-tones.d.ts +1 -1
  341. package/dist/data/ai/tool-name.d.ts +1 -1
  342. package/dist/data/cache-browser/CacheBrowser.d.ts +2 -2
  343. package/dist/data/cache-browser/CacheDetailPanel.d.ts +3 -3
  344. package/dist/data/cache-browser/CacheStatsOverview.d.ts +2 -2
  345. package/dist/data/cache-browser/CacheTree.d.ts +3 -3
  346. package/dist/data/cache-browser/CacheValue.d.ts +1 -1
  347. package/dist/data/cache-browser/adapter.d.ts +2 -2
  348. package/dist/data/cache-browser/api.d.ts +1 -1
  349. package/dist/data/cache-browser/cache-browser.fixtures.d.ts +2 -2
  350. package/dist/data/cache-browser/index.d.ts +8 -8
  351. package/dist/data/cells/EntityCell.d.ts +2 -2
  352. package/dist/data/cells/StatusDot.d.ts +1 -1
  353. package/dist/data/cells/TagList.d.ts +1 -1
  354. package/dist/data/cells/Timestamp.d.ts +1 -1
  355. package/dist/data/cells/status-mapping.d.ts +1 -1
  356. package/dist/data/cells/tag-utils.d.ts +1 -1
  357. package/dist/data/cells/timestamp-format.d.ts +1 -1
  358. package/dist/data/chat/Attachment.d.ts +2 -2
  359. package/dist/data/chat/Chat.d.ts +5 -5
  360. package/dist/data/chat/Chat.fixtures.d.ts +1 -1
  361. package/dist/data/chat/Chat.runtime.d.ts +2 -2
  362. package/dist/data/chat/ChatRuntimeToolbar.d.ts +2 -2
  363. package/dist/data/chat/ContextMeter.bar.d.ts +1 -1
  364. package/dist/data/chat/ContextMeter.d.ts +1 -1
  365. package/dist/data/chat/Conversation.d.ts +2 -2
  366. package/dist/data/chat/Message.d.ts +1 -1
  367. package/dist/data/chat/ModelSelector.d.ts +3 -3
  368. package/dist/data/chat/PromptInput.d.ts +2 -2
  369. package/dist/data/chat/Suggestion.d.ts +1 -1
  370. package/dist/data/chat/ToolCall.d.ts +2 -2
  371. package/dist/data/chat/approval.d.ts +1 -1
  372. package/dist/data/chat/attachment-upload.d.ts +1 -1
  373. package/dist/data/chat/clickyOperationsToTools.d.ts +2 -2
  374. package/dist/data/chat/effort-icons.d.ts +1 -1
  375. package/dist/data/chat/index.d.ts +20 -20
  376. package/dist/data/chat/models.d.ts +1 -1
  377. package/dist/data/chat/provider-icons.d.ts +1 -1
  378. package/dist/data/chat/tool-policy.d.ts +1 -1
  379. package/dist/data/chat/tool-render/ToolParams.d.ts +2 -2
  380. package/dist/data/chat/tool-render/ToolValue.d.ts +1 -1
  381. package/dist/data/chat/tool-render/adapter.d.ts +1 -1
  382. package/dist/data/chat/tool-render/context.d.ts +1 -1
  383. package/dist/data/chat/tool-render/defaults.d.ts +1 -1
  384. package/dist/data/chat/tool-render/index.d.ts +12 -12
  385. package/dist/data/chat/tool-render/known-tool-views.d.ts +1 -1
  386. package/dist/data/chat/tool-render/known-tools.d.ts +1 -1
  387. package/dist/data/chat/tool-render/registry.d.ts +1 -1
  388. package/dist/data/chat/tool-render/schema.d.ts +2 -2
  389. package/dist/data/chat/tool-render/shape.d.ts +2 -2
  390. package/dist/data/chat/tool-render/summary.d.ts +1 -1
  391. package/dist/data/chat/types.d.ts +1 -1
  392. package/dist/data/chat/usage-snapshot.d.ts +2 -2
  393. package/dist/data/clicky-export/ClickyExportDialog.d.ts +1 -1
  394. package/dist/data/clicky-export/index.d.ts +2 -2
  395. package/dist/data/clicky-export/useClickyExport.d.ts +2 -2
  396. package/dist/data/clicky-parse.d.ts +1 -1
  397. package/dist/data/code-block-actions.d.ts +1 -1
  398. package/dist/data/data-table-filter-values.d.ts +1 -1
  399. package/dist/data/data-table-server-filters.d.ts +4 -4
  400. package/dist/data/data-table-utils.d.ts +1 -1
  401. package/dist/data/diagnostics/DiagnosticsDetailPanel.d.ts +3 -3
  402. package/dist/data/diagnostics/DiagnosticsTree.d.ts +1 -1
  403. package/dist/data/diagnostics/ErrorDetails.d.ts +1 -1
  404. package/dist/data/diagnostics/FrameSourceWindow.d.ts +1 -1
  405. package/dist/data/diagnostics/GoroutineCard.d.ts +1 -1
  406. package/dist/data/diagnostics/JvmStackTrace.d.ts +3 -3
  407. package/dist/data/diagnostics/RenderedStackTrace.d.ts +3 -3
  408. package/dist/data/diagnostics/StackFrameRow.d.ts +1 -1
  409. package/dist/data/diagnostics/ThreadCard.d.ts +3 -3
  410. package/dist/data/diagnostics/fixtures.d.ts +1 -1
  411. package/dist/data/diagnostics/stacktrace-parse.d.ts +1 -1
  412. package/dist/data/diagnostics/stacktrace.d.ts +1 -1
  413. package/dist/data/diagnostics/utils.d.ts +3 -3
  414. package/dist/data/examples/markdown-preview-mock.d.ts +1 -1
  415. package/dist/data/gauge-stats.d.ts +1 -1
  416. package/dist/data/git/index.d.ts +2 -2
  417. package/dist/data/har/HarPanel.d.ts +1 -1
  418. package/dist/data/har/fixtures.d.ts +1 -1
  419. package/dist/data/properties-context.d.ts +1 -1
  420. package/dist/data/query-browser/QueryBrowser.d.ts +1 -1
  421. package/dist/data/query-browser/QueryBrowser.editor.d.ts +1 -1
  422. package/dist/data/query-browser/QueryBrowser.types.d.ts +6 -6
  423. package/dist/data/query-browser/QueryBrowserDiagnosticsPanel.d.ts +1 -1
  424. package/dist/data/query-browser/QueryBrowserResults.d.ts +3 -3
  425. package/dist/data/query-browser/index.d.ts +3 -3
  426. package/dist/data/runtime/ProviderStatusPanel.d.ts +2 -2
  427. package/dist/data/runtime/RuntimeBar.d.ts +3 -3
  428. package/dist/data/runtime/RuntimeBar.model.d.ts +3 -3
  429. package/dist/data/runtime/RuntimeBarActions.d.ts +2 -2
  430. package/dist/data/runtime/RuntimeBarCombo.d.ts +3 -3
  431. package/dist/data/runtime/RuntimeBarSegment.d.ts +1 -1
  432. package/dist/data/runtime/RuntimeBarSegments.d.ts +3 -3
  433. package/dist/data/runtime/availability.d.ts +1 -1
  434. package/dist/data/runtime/model-capabilities.d.ts +1 -1
  435. package/dist/data/runtime/provider-status.d.ts +2 -2
  436. package/dist/data/runtime/runtime-field-support.d.ts +4 -4
  437. package/dist/data/runtime/runtime-mode.d.ts +6 -6
  438. package/dist/data/schema-viewer-model.d.ts +1 -1
  439. package/dist/data/selectionActionSplit.d.ts +1 -1
  440. package/dist/data/status-breakdown-utils.d.ts +1 -1
  441. package/dist/data/task-copy.d.ts +1 -1
  442. package/dist/data/task-exec-details.d.ts +1 -1
  443. package/dist/data/task-process-details.d.ts +2 -2
  444. package/dist/data/task-resource-summary.d.ts +1 -1
  445. package/dist/data/task-status.d.ts +3 -3
  446. package/dist/data/task-streams.d.ts +1 -1
  447. package/dist/data/task-work-progress.d.ts +1 -1
  448. package/dist/data/test-runner/TestFailureDetail.d.ts +1 -1
  449. package/dist/data/test-runner/TestFilterBar.d.ts +2 -2
  450. package/dist/data/test-runner/TestRunSummary.d.ts +1 -1
  451. package/dist/data/test-runner/TestRunner.d.ts +3 -3
  452. package/dist/data/test-runner/TestRunner.fixtures.d.ts +2 -2
  453. package/dist/data/test-runner/TestTreeNode.d.ts +1 -1
  454. package/dist/data/test-runner/adapter.d.ts +2 -2
  455. package/dist/data/test-runner/context.d.ts +3 -3
  456. package/dist/data/test-runner/frameworkIcon.d.ts +1 -1
  457. package/dist/data/test-runner/index.d.ts +14 -14
  458. package/dist/data/test-runner/routePath.d.ts +1 -1
  459. package/dist/data/test-runner/status.d.ts +4 -4
  460. package/dist/data/timeseries-query.cjs +51 -0
  461. package/dist/data/timeseries-query.cjs.map +1 -0
  462. package/dist/data/timeseries-query.d.ts +31 -0
  463. package/dist/data/timeseries-query.d.ts.map +1 -0
  464. package/dist/data/timeseries-query.js +51 -0
  465. package/dist/data/timeseries-query.js.map +1 -0
  466. package/dist/data/use-infinite-rows.d.ts +1 -1
  467. package/dist/data/useDebugAction.d.ts +1 -1
  468. package/dist/data/verification/VerificationResults.d.ts +2 -2
  469. package/dist/data/verification/adapterViews.d.ts +1 -1
  470. package/dist/data/verification/adapters.d.ts +1 -1
  471. package/dist/data/verification/index.d.ts +4 -4
  472. package/dist/data/verification/verifyReportTests.d.ts +2 -2
  473. package/dist/data/version-info.cjs +3 -3
  474. package/dist/data/version-info.js +3 -3
  475. package/dist/data.cjs +1 -0
  476. package/dist/data.cjs.map +1 -1
  477. package/dist/data.d.ts +119 -119
  478. package/dist/data.d.ts.map +1 -1
  479. package/dist/data.js +3 -2
  480. package/dist/devtools/DebugConsole.d.ts +3 -3
  481. package/dist/devtools/DebugConsoleButton.d.ts +1 -1
  482. package/dist/devtools/DebugConsoleDock.d.ts +2 -2
  483. package/dist/devtools/ExecutionDetail.d.ts +2 -2
  484. package/dist/devtools/debugClient.d.ts +1 -1
  485. package/dist/devtools/debugStore.d.ts +1 -1
  486. package/dist/devtools/dockState.d.ts +1 -1
  487. package/dist/devtools/tabs/ConsoleTab.d.ts +1 -1
  488. package/dist/devtools/tabs/InspectionCaches.d.ts +2 -2
  489. package/dist/devtools/tabs/InspectionTab.d.ts +2 -2
  490. package/dist/devtools/tabs/NetworkTab.d.ts +2 -2
  491. package/dist/devtools/tabs/QueriesTab.d.ts +2 -2
  492. package/dist/devtools/types.d.ts +2 -2
  493. package/dist/devtools/useDebugStream.d.ts +2 -2
  494. package/dist/devtools.d.ts +28 -28
  495. package/dist/expressions/lang/attributes.d.ts +1 -1
  496. package/dist/expressions/lang/completion.d.ts +1 -1
  497. package/dist/expressions/lang/generated/index.d.ts +1 -1
  498. package/dist/expressions/lang/hover.d.ts +1 -1
  499. package/dist/expressions/lang/index.d.ts +13 -13
  500. package/dist/expressions/lang/merge.d.ts +1 -1
  501. package/dist/expressions/lang/prefix.d.ts +1 -1
  502. package/dist/expressions/lang/spec.d.ts +2 -2
  503. package/dist/expressions/lang/theme.d.ts +1 -1
  504. package/dist/expressions/playground/ExpressionPlayground.d.ts +3 -3
  505. package/dist/expressions/playground/RunControls.d.ts +1 -1
  506. package/dist/expressions/playground/api.d.ts +2 -2
  507. package/dist/expressions/playground/languages.d.ts +2 -2
  508. package/dist/expressions/playground/panels/ExpectationStrip.d.ts +1 -1
  509. package/dist/expressions/playground/panels/ResultPanel.d.ts +1 -1
  510. package/dist/expressions/playground/panels/ResultView.d.ts +3 -3
  511. package/dist/expressions/playground/panels/SamplesPanel.d.ts +2 -2
  512. package/dist/expressions/playground/panels/SpecPanel.d.ts +1 -1
  513. package/dist/expressions/playground/panels/graphNodes.d.ts +2 -2
  514. package/dist/expressions/playground/sampleOutcome.d.ts +1 -1
  515. package/dist/expressions/playground/useEvaluator.d.ts +1 -1
  516. package/dist/expressions/playground/useSampleRuns.d.ts +3 -3
  517. package/dist/expressions/playground.d.ts +14 -14
  518. package/dist/expressions.d.ts +1 -1
  519. package/dist/hooks/density-provider.d.ts +1 -1
  520. package/dist/hooks/theme-provider.d.ts +1 -1
  521. package/dist/hooks/use-log-tail.d.ts +2 -2
  522. package/dist/hooks/use-prompts.d.ts +1 -1
  523. package/dist/hooks/use-task-run.d.ts +2 -2
  524. package/dist/hooks.d.ts +13 -13
  525. package/dist/icons/changeIconAliases.d.ts +1 -1
  526. package/dist/icons/components/UiAccessProtected.d.ts +1 -1
  527. package/dist/icons/components/UiAccessPublic.d.ts +1 -1
  528. package/dist/icons/components/UiActivity.d.ts +1 -1
  529. package/dist/icons/components/UiAdd.d.ts +1 -1
  530. package/dist/icons/components/UiAddChangeset.d.ts +1 -1
  531. package/dist/icons/components/UiAggregate.d.ts +1 -1
  532. package/dist/icons/components/UiAlias.d.ts +1 -1
  533. package/dist/icons/components/UiAnnotation.d.ts +1 -1
  534. package/dist/icons/components/UiAopAroundAdvice.d.ts +1 -1
  535. package/dist/icons/components/UiAopBeforeAdvice.d.ts +1 -1
  536. package/dist/icons/components/UiAopPointcut.d.ts +1 -1
  537. package/dist/icons/components/UiArchive.d.ts +1 -1
  538. package/dist/icons/components/UiArray.d.ts +1 -1
  539. package/dist/icons/components/UiArrowDown.d.ts +1 -1
  540. package/dist/icons/components/UiArrowDownRight.d.ts +1 -1
  541. package/dist/icons/components/UiArrowFatUp.d.ts +1 -1
  542. package/dist/icons/components/UiArrowLeft.d.ts +1 -1
  543. package/dist/icons/components/UiArrowRight.d.ts +1 -1
  544. package/dist/icons/components/UiArrowUp.d.ts +1 -1
  545. package/dist/icons/components/UiArrowUpRight.d.ts +1 -1
  546. package/dist/icons/components/UiArrowsCounterClockwise.d.ts +1 -1
  547. package/dist/icons/components/UiArtifact.d.ts +1 -1
  548. package/dist/icons/components/UiAsterisk.d.ts +1 -1
  549. package/dist/icons/components/UiAsyncFn.d.ts +1 -1
  550. package/dist/icons/components/UiAt.d.ts +1 -1
  551. package/dist/icons/components/UiAtom.d.ts +1 -1
  552. package/dist/icons/components/UiAttachDebugger.d.ts +1 -1
  553. package/dist/icons/components/UiAttachToProcess.d.ts +1 -1
  554. package/dist/icons/components/UiAuditLog.d.ts +1 -1
  555. package/dist/icons/components/UiBank.d.ts +1 -1
  556. package/dist/icons/components/UiBatteryChargingVertical.d.ts +1 -1
  557. package/dist/icons/components/UiBatteryVerticalEmpty.d.ts +1 -1
  558. package/dist/icons/components/UiBatteryVerticalFull.d.ts +1 -1
  559. package/dist/icons/components/UiBatteryVerticalHigh.d.ts +1 -1
  560. package/dist/icons/components/UiBatteryVerticalLow.d.ts +1 -1
  561. package/dist/icons/components/UiBatteryVerticalMedium.d.ts +1 -1
  562. package/dist/icons/components/UiBeaker.d.ts +1 -1
  563. package/dist/icons/components/UiBell.d.ts +1 -1
  564. package/dist/icons/components/UiBellSlash.d.ts +1 -1
  565. package/dist/icons/components/UiBinary.d.ts +1 -1
  566. package/dist/icons/components/UiBlueKey.d.ts +1 -1
  567. package/dist/icons/components/UiBoolean.d.ts +1 -1
  568. package/dist/icons/components/UiBox.d.ts +1 -1
  569. package/dist/icons/components/UiBoxes.d.ts +1 -1
  570. package/dist/icons/components/UiBraces.d.ts +1 -1
  571. package/dist/icons/components/UiBrain.d.ts +1 -1
  572. package/dist/icons/components/UiBreakpoint.d.ts +1 -1
  573. package/dist/icons/components/UiBreakpoint1.d.ts +1 -1
  574. package/dist/icons/components/UiBreakpoint2.d.ts +1 -1
  575. package/dist/icons/components/UiBreakpoint3.d.ts +1 -1
  576. package/dist/icons/components/UiBreakpoint4.d.ts +1 -1
  577. package/dist/icons/components/UiBreakpointDisabled.d.ts +1 -1
  578. package/dist/icons/components/UiBreakpointField.d.ts +1 -1
  579. package/dist/icons/components/UiBreakpointMethod.d.ts +1 -1
  580. package/dist/icons/components/UiBroadcast.d.ts +1 -1
  581. package/dist/icons/components/UiBug.d.ts +1 -1
  582. package/dist/icons/components/UiCache.d.ts +1 -1
  583. package/dist/icons/components/UiCalculator.d.ts +1 -1
  584. package/dist/icons/components/UiCalendar.d.ts +1 -1
  585. package/dist/icons/components/UiCalendarBlank.d.ts +1 -1
  586. package/dist/icons/components/UiCalendarCheck.d.ts +1 -1
  587. package/dist/icons/components/UiCamera.d.ts +1 -1
  588. package/dist/icons/components/UiCancel.d.ts +1 -1
  589. package/dist/icons/components/UiChartBar.d.ts +1 -1
  590. package/dist/icons/components/UiChartLineUp.d.ts +1 -1
  591. package/dist/icons/components/UiChartOfAccounts.d.ts +1 -1
  592. package/dist/icons/components/UiChartPie.d.ts +1 -1
  593. package/dist/icons/components/UiChatDots.d.ts +1 -1
  594. package/dist/icons/components/UiCheck.d.ts +1 -1
  595. package/dist/icons/components/UiCheckConstraint.d.ts +1 -1
  596. package/dist/icons/components/UiChevronDown.d.ts +1 -1
  597. package/dist/icons/components/UiChevronRight.d.ts +1 -1
  598. package/dist/icons/components/UiChevronUp.d.ts +1 -1
  599. package/dist/icons/components/UiChevronsDown.d.ts +1 -1
  600. package/dist/icons/components/UiChevronsUp.d.ts +1 -1
  601. package/dist/icons/components/UiChip.d.ts +1 -1
  602. package/dist/icons/components/UiCircleFilled.d.ts +1 -1
  603. package/dist/icons/components/UiCircleOutline.d.ts +1 -1
  604. package/dist/icons/components/UiCircleX.d.ts +1 -1
  605. package/dist/icons/components/UiClass.d.ts +1 -1
  606. package/dist/icons/components/UiClass1.d.ts +1 -1
  607. package/dist/icons/components/UiClass2.d.ts +1 -1
  608. package/dist/icons/components/UiClass3.d.ts +1 -1
  609. package/dist/icons/components/UiClass4.d.ts +1 -1
  610. package/dist/icons/components/UiClass5.d.ts +1 -1
  611. package/dist/icons/components/UiClass6.d.ts +1 -1
  612. package/dist/icons/components/UiClass7.d.ts +1 -1
  613. package/dist/icons/components/UiClearCash.d.ts +1 -1
  614. package/dist/icons/components/UiClipboardText.d.ts +1 -1
  615. package/dist/icons/components/UiClock.d.ts +1 -1
  616. package/dist/icons/components/UiClockCountdown.d.ts +1 -1
  617. package/dist/icons/components/UiClose.d.ts +1 -1
  618. package/dist/icons/components/UiCloud.d.ts +1 -1
  619. package/dist/icons/components/UiCloudDownload.d.ts +1 -1
  620. package/dist/icons/components/UiCloudUpload.d.ts +1 -1
  621. package/dist/icons/components/UiCode2.d.ts +1 -1
  622. package/dist/icons/components/UiCog.d.ts +1 -1
  623. package/dist/icons/components/UiCoins.d.ts +1 -1
  624. package/dist/icons/components/UiCollapseAll.d.ts +1 -1
  625. package/dist/icons/components/UiCollection.d.ts +1 -1
  626. package/dist/icons/components/UiCollectionType.d.ts +1 -1
  627. package/dist/icons/components/UiColumn.d.ts +1 -1
  628. package/dist/icons/components/UiColumn1.d.ts +1 -1
  629. package/dist/icons/components/UiColumn2.d.ts +1 -1
  630. package/dist/icons/components/UiColumn3.d.ts +1 -1
  631. package/dist/icons/components/UiColumn4.d.ts +1 -1
  632. package/dist/icons/components/UiColumn5.d.ts +1 -1
  633. package/dist/icons/components/UiColumns.d.ts +1 -1
  634. package/dist/icons/components/UiCommand.d.ts +1 -1
  635. package/dist/icons/components/UiComment.d.ts +1 -1
  636. package/dist/icons/components/UiCompass.d.ts +1 -1
  637. package/dist/icons/components/UiConfig.d.ts +1 -1
  638. package/dist/icons/components/UiConfigMap.d.ts +1 -1
  639. package/dist/icons/components/UiConnector.d.ts +1 -1
  640. package/dist/icons/components/UiConstant.d.ts +1 -1
  641. package/dist/icons/components/UiConstant1.d.ts +1 -1
  642. package/dist/icons/components/UiConstructor.d.ts +1 -1
  643. package/dist/icons/components/UiConverter.d.ts +1 -1
  644. package/dist/icons/components/UiConverter1.d.ts +1 -1
  645. package/dist/icons/components/UiCopy.d.ts +1 -1
  646. package/dist/icons/components/UiCreateConstraint.d.ts +1 -1
  647. package/dist/icons/components/UiCurrencyDollar.d.ts +1 -1
  648. package/dist/icons/components/UiCursorClick.d.ts +1 -1
  649. package/dist/icons/components/UiCursorText.d.ts +1 -1
  650. package/dist/icons/components/UiCustomResource.d.ts +1 -1
  651. package/dist/icons/components/UiDataSchema.d.ts +1 -1
  652. package/dist/icons/components/UiDataShare.d.ts +1 -1
  653. package/dist/icons/components/UiDatabase.d.ts +1 -1
  654. package/dist/icons/components/UiDatabaseEventStream.d.ts +1 -1
  655. package/dist/icons/components/UiDatabaseLink.d.ts +1 -1
  656. package/dist/icons/components/UiDatabaseZap.d.ts +1 -1
  657. package/dist/icons/components/UiDebug.d.ts +1 -1
  658. package/dist/icons/components/UiDebugContinue.d.ts +1 -1
  659. package/dist/icons/components/UiDebugDisabled.d.ts +1 -1
  660. package/dist/icons/components/UiDebugSelection.d.ts +1 -1
  661. package/dist/icons/components/UiDebugSmall.d.ts +1 -1
  662. package/dist/icons/components/UiDebugStepInto.d.ts +1 -1
  663. package/dist/icons/components/UiDebugStepOut.d.ts +1 -1
  664. package/dist/icons/components/UiDebugStepOver.d.ts +1 -1
  665. package/dist/icons/components/UiDebugStop.d.ts +1 -1
  666. package/dist/icons/components/UiDecorator.d.ts +1 -1
  667. package/dist/icons/components/UiDeploy.d.ts +1 -1
  668. package/dist/icons/components/UiDesktop.d.ts +1 -1
  669. package/dist/icons/components/UiDetach.d.ts +1 -1
  670. package/dist/icons/components/UiDiagramDiff.d.ts +1 -1
  671. package/dist/icons/components/UiDiff.d.ts +1 -1
  672. package/dist/icons/components/UiDotsVertical.d.ts +1 -1
  673. package/dist/icons/components/UiDownload.d.ts +1 -1
  674. package/dist/icons/components/UiDumpThreads.d.ts +1 -1
  675. package/dist/icons/components/UiEdit.d.ts +1 -1
  676. package/dist/icons/components/UiEditMode.d.ts +1 -1
  677. package/dist/icons/components/UiEllipsis.d.ts +1 -1
  678. package/dist/icons/components/UiEllipsisBold.d.ts +1 -1
  679. package/dist/icons/components/UiEndpoint.d.ts +1 -1
  680. package/dist/icons/components/UiEnum.d.ts +1 -1
  681. package/dist/icons/components/UiEnumMember.d.ts +1 -1
  682. package/dist/icons/components/UiEnvelope.d.ts +1 -1
  683. package/dist/icons/components/UiError.d.ts +1 -1
  684. package/dist/icons/components/UiEvaluateExpression.d.ts +1 -1
  685. package/dist/icons/components/UiEvent.d.ts +1 -1
  686. package/dist/icons/components/UiException.d.ts +1 -1
  687. package/dist/icons/components/UiExceptionAnalyzerImportant.d.ts +1 -1
  688. package/dist/icons/components/UiExcludedGenerated.d.ts +1 -1
  689. package/dist/icons/components/UiExpandAll.d.ts +1 -1
  690. package/dist/icons/components/UiExport.d.ts +1 -1
  691. package/dist/icons/components/UiExtension.d.ts +1 -1
  692. package/dist/icons/components/UiExternalLink.d.ts +1 -1
  693. package/dist/icons/components/UiEye.d.ts +1 -1
  694. package/dist/icons/components/UiEyeClosed.d.ts +1 -1
  695. package/dist/icons/components/UiFactory.d.ts +1 -1
  696. package/dist/icons/components/UiFailedInProgress.d.ts +1 -1
  697. package/dist/icons/components/UiFastForwardCircle.d.ts +1 -1
  698. package/dist/icons/components/UiField.d.ts +1 -1
  699. package/dist/icons/components/UiField1.d.ts +1 -1
  700. package/dist/icons/components/UiField2.d.ts +1 -1
  701. package/dist/icons/components/UiField3.d.ts +1 -1
  702. package/dist/icons/components/UiField4.d.ts +1 -1
  703. package/dist/icons/components/UiField5.d.ts +1 -1
  704. package/dist/icons/components/UiField6.d.ts +1 -1
  705. package/dist/icons/components/UiFieldProtected.d.ts +1 -1
  706. package/dist/icons/components/UiFieldReadAccess.d.ts +1 -1
  707. package/dist/icons/components/UiFieldType.d.ts +1 -1
  708. package/dist/icons/components/UiFieldWriteAccess.d.ts +1 -1
  709. package/dist/icons/components/UiFile.d.ts +1 -1
  710. package/dist/icons/components/UiFileCode.d.ts +1 -1
  711. package/dist/icons/components/UiFileCog.d.ts +1 -1
  712. package/dist/icons/components/UiFileFormat.d.ts +1 -1
  713. package/dist/icons/components/UiFileJson.d.ts +1 -1
  714. package/dist/icons/components/UiFilePlus.d.ts +1 -1
  715. package/dist/icons/components/UiFileSearch.d.ts +1 -1
  716. package/dist/icons/components/UiFileSpreadsheet.d.ts +1 -1
  717. package/dist/icons/components/UiFileText.d.ts +1 -1
  718. package/dist/icons/components/UiFileType.d.ts +1 -1
  719. package/dist/icons/components/UiFilter.d.ts +1 -1
  720. package/dist/icons/components/UiFingerprint.d.ts +1 -1
  721. package/dist/icons/components/UiFolder.d.ts +1 -1
  722. package/dist/icons/components/UiFolderGit.d.ts +1 -1
  723. package/dist/icons/components/UiFolderGit2.d.ts +1 -1
  724. package/dist/icons/components/UiForeignServer.d.ts +1 -1
  725. package/dist/icons/components/UiForm.d.ts +1 -1
  726. package/dist/icons/components/UiFreemarker.d.ts +1 -1
  727. package/dist/icons/components/UiFullscreen.d.ts +1 -1
  728. package/dist/icons/components/UiFunction.d.ts +1 -1
  729. package/dist/icons/components/UiFunction1.d.ts +1 -1
  730. package/dist/icons/components/UiFunction2.d.ts +1 -1
  731. package/dist/icons/components/UiFunction3.d.ts +1 -1
  732. package/dist/icons/components/UiFunction4.d.ts +1 -1
  733. package/dist/icons/components/UiFunctionSquare.d.ts +1 -1
  734. package/dist/icons/components/UiFunnelData.d.ts +1 -1
  735. package/dist/icons/components/UiGavel.d.ts +1 -1
  736. package/dist/icons/components/UiGearSix.d.ts +1 -1
  737. package/dist/icons/components/UiGitBranch.d.ts +1 -1
  738. package/dist/icons/components/UiGitCommit.d.ts +1 -1
  739. package/dist/icons/components/UiGitGraph.d.ts +1 -1
  740. package/dist/icons/components/UiGitMerge.d.ts +1 -1
  741. package/dist/icons/components/UiGitPr.d.ts +1 -1
  742. package/dist/icons/components/UiGlobe.d.ts +1 -1
  743. package/dist/icons/components/UiGraph.d.ts +1 -1
  744. package/dist/icons/components/UiGreyKey.d.ts +1 -1
  745. package/dist/icons/components/UiGrid.d.ts +1 -1
  746. package/dist/icons/components/UiGroupByModuleGroup.d.ts +1 -1
  747. package/dist/icons/components/UiGroupByPackage.d.ts +1 -1
  748. package/dist/icons/components/UiGroupByTestProduction.d.ts +1 -1
  749. package/dist/icons/components/UiHandCoins.d.ts +1 -1
  750. package/dist/icons/components/UiHandPalm.d.ts +1 -1
  751. package/dist/icons/components/UiHardDrive.d.ts +1 -1
  752. package/dist/icons/components/UiHibernate.d.ts +1 -1
  753. package/dist/icons/components/UiHibernateEvent.d.ts +1 -1
  754. package/dist/icons/components/UiHistory.d.ts +1 -1
  755. package/dist/icons/components/UiHome.d.ts +1 -1
  756. package/dist/icons/components/UiHourglass.d.ts +1 -1
  757. package/dist/icons/components/UiHubot.d.ts +1 -1
  758. package/dist/icons/components/UiId.d.ts +1 -1
  759. package/dist/icons/components/UiIdentificationCard.d.ts +1 -1
  760. package/dist/icons/components/UiImage.d.ts +1 -1
  761. package/dist/icons/components/UiImport.d.ts +1 -1
  762. package/dist/icons/components/UiInbox.d.ts +1 -1
  763. package/dist/icons/components/UiIndex.d.ts +1 -1
  764. package/dist/icons/components/UiIndex1.d.ts +1 -1
  765. package/dist/icons/components/UiIndex2.d.ts +1 -1
  766. package/dist/icons/components/UiIndex3.d.ts +1 -1
  767. package/dist/icons/components/UiIndex4.d.ts +1 -1
  768. package/dist/icons/components/UiIndex5.d.ts +1 -1
  769. package/dist/icons/components/UiIndex6.d.ts +1 -1
  770. package/dist/icons/components/UiInfo.d.ts +1 -1
  771. package/dist/icons/components/UiInsightAvailability.d.ts +1 -1
  772. package/dist/icons/components/UiInsightCompliance.d.ts +1 -1
  773. package/dist/icons/components/UiInsightCost.d.ts +1 -1
  774. package/dist/icons/components/UiInsightIntegration.d.ts +1 -1
  775. package/dist/icons/components/UiInsightPerformance.d.ts +1 -1
  776. package/dist/icons/components/UiInsightRecommendation.d.ts +1 -1
  777. package/dist/icons/components/UiInsightReliability.d.ts +1 -1
  778. package/dist/icons/components/UiInsightSecurity.d.ts +1 -1
  779. package/dist/icons/components/UiInsightTechnicalDebt.d.ts +1 -1
  780. package/dist/icons/components/UiInspectionsGrammar.d.ts +1 -1
  781. package/dist/icons/components/UiInterface.d.ts +1 -1
  782. package/dist/icons/components/UiInvoice.d.ts +1 -1
  783. package/dist/icons/components/UiJpaAttribute.d.ts +1 -1
  784. package/dist/icons/components/UiJpaId.d.ts +1 -1
  785. package/dist/icons/components/UiJpaRelationship.d.ts +1 -1
  786. package/dist/icons/components/UiJson.d.ts +1 -1
  787. package/dist/icons/components/UiKanban.d.ts +1 -1
  788. package/dist/icons/components/UiKey.d.ts +1 -1
  789. package/dist/icons/components/UiKeyboard.d.ts +1 -1
  790. package/dist/icons/components/UiKeyword.d.ts +1 -1
  791. package/dist/icons/components/UiKillDataSourceProcess.d.ts +1 -1
  792. package/dist/icons/components/UiKubeConfigMap.d.ts +1 -1
  793. package/dist/icons/components/UiKubeDeployment.d.ts +1 -1
  794. package/dist/icons/components/UiKubeJob.d.ts +1 -1
  795. package/dist/icons/components/UiKubeNamespace.d.ts +1 -1
  796. package/dist/icons/components/UiKubePod.d.ts +1 -1
  797. package/dist/icons/components/UiLambda.d.ts +1 -1
  798. package/dist/icons/components/UiLangJava.d.ts +1 -1
  799. package/dist/icons/components/UiLangJavascript.d.ts +1 -1
  800. package/dist/icons/components/UiLangPython.d.ts +1 -1
  801. package/dist/icons/components/UiLayers.d.ts +1 -1
  802. package/dist/icons/components/UiLayoutDashboard.d.ts +1 -1
  803. package/dist/icons/components/UiLedger.d.ts +1 -1
  804. package/dist/icons/components/UiLightbulb.d.ts +1 -1
  805. package/dist/icons/components/UiLink.d.ts +1 -1
  806. package/dist/icons/components/UiLinkExternal.d.ts +1 -1
  807. package/dist/icons/components/UiListChecks.d.ts +1 -1
  808. package/dist/icons/components/UiListDashes.d.ts +1 -1
  809. package/dist/icons/components/UiListFlat.d.ts +1 -1
  810. package/dist/icons/components/UiListOrdered.d.ts +1 -1
  811. package/dist/icons/components/UiListTree.d.ts +1 -1
  812. package/dist/icons/components/UiLoader.d.ts +1 -1
  813. package/dist/icons/components/UiLocation.d.ts +1 -1
  814. package/dist/icons/components/UiLock.d.ts +1 -1
  815. package/dist/icons/components/UiLockKey.d.ts +1 -1
  816. package/dist/icons/components/UiLockOpen.d.ts +1 -1
  817. package/dist/icons/components/UiLogoAnthropic.d.ts +1 -1
  818. package/dist/icons/components/UiLogoClaude.d.ts +1 -1
  819. package/dist/icons/components/UiLogoDeepseek.d.ts +1 -1
  820. package/dist/icons/components/UiLogoGemini.d.ts +1 -1
  821. package/dist/icons/components/UiLogoGoogle.d.ts +1 -1
  822. package/dist/icons/components/UiLogoHuggingface.d.ts +1 -1
  823. package/dist/icons/components/UiLogoMeta.d.ts +1 -1
  824. package/dist/icons/components/UiLogoMistral.d.ts +1 -1
  825. package/dist/icons/components/UiLogoOllama.d.ts +1 -1
  826. package/dist/icons/components/UiLogoOpenai.d.ts +1 -1
  827. package/dist/icons/components/UiLogoPerplexity.d.ts +1 -1
  828. package/dist/icons/components/UiMagicWand.d.ts +1 -1
  829. package/dist/icons/components/UiMarkdown.d.ts +1 -1
  830. package/dist/icons/components/UiMaterializedLog.d.ts +1 -1
  831. package/dist/icons/components/UiMemoryProfile.d.ts +1 -1
  832. package/dist/icons/components/UiMemoryStick.d.ts +1 -1
  833. package/dist/icons/components/UiMenu.d.ts +1 -1
  834. package/dist/icons/components/UiMessageQueue.d.ts +1 -1
  835. package/dist/icons/components/UiMessageQueue1.d.ts +1 -1
  836. package/dist/icons/components/UiMethod.d.ts +1 -1
  837. package/dist/icons/components/UiMethod1.d.ts +1 -1
  838. package/dist/icons/components/UiMethod10.d.ts +1 -1
  839. package/dist/icons/components/UiMethod11.d.ts +1 -1
  840. package/dist/icons/components/UiMethod2.d.ts +1 -1
  841. package/dist/icons/components/UiMethod3.d.ts +1 -1
  842. package/dist/icons/components/UiMethod4.d.ts +1 -1
  843. package/dist/icons/components/UiMethod5.d.ts +1 -1
  844. package/dist/icons/components/UiMethod6.d.ts +1 -1
  845. package/dist/icons/components/UiMethod7.d.ts +1 -1
  846. package/dist/icons/components/UiMethod8.d.ts +1 -1
  847. package/dist/icons/components/UiMethod9.d.ts +1 -1
  848. package/dist/icons/components/UiModels.d.ts +1 -1
  849. package/dist/icons/components/UiModule.d.ts +1 -1
  850. package/dist/icons/components/UiModule1.d.ts +1 -1
  851. package/dist/icons/components/UiMoon.d.ts +1 -1
  852. package/dist/icons/components/UiName.d.ts +1 -1
  853. package/dist/icons/components/UiNamespace.d.ts +1 -1
  854. package/dist/icons/components/UiNetwork.d.ts +1 -1
  855. package/dist/icons/components/UiNull.d.ts +1 -1
  856. package/dist/icons/components/UiNumeric.d.ts +1 -1
  857. package/dist/icons/components/UiObject.d.ts +1 -1
  858. package/dist/icons/components/UiOpenBlock.d.ts +1 -1
  859. package/dist/icons/components/UiOpenScad.d.ts +1 -1
  860. package/dist/icons/components/UiOperator.d.ts +1 -1
  861. package/dist/icons/components/UiOperator1.d.ts +1 -1
  862. package/dist/icons/components/UiOrganization.d.ts +1 -1
  863. package/dist/icons/components/UiPackage.d.ts +1 -1
  864. package/dist/icons/components/UiPalette.d.ts +1 -1
  865. package/dist/icons/components/UiParameter.d.ts +1 -1
  866. package/dist/icons/components/UiPartition.d.ts +1 -1
  867. package/dist/icons/components/UiPass.d.ts +1 -1
  868. package/dist/icons/components/UiPause.d.ts +1 -1
  869. package/dist/icons/components/UiPauseCircle.d.ts +1 -1
  870. package/dist/icons/components/UiPencilSimpleLine.d.ts +1 -1
  871. package/dist/icons/components/UiPending.d.ts +1 -1
  872. package/dist/icons/components/UiPercent.d.ts +1 -1
  873. package/dist/icons/components/UiPhone.d.ts +1 -1
  874. package/dist/icons/components/UiPlay.d.ts +1 -1
  875. package/dist/icons/components/UiPlayCircle.d.ts +1 -1
  876. package/dist/icons/components/UiPlaybook.d.ts +1 -1
  877. package/dist/icons/components/UiPlug.d.ts +1 -1
  878. package/dist/icons/components/UiPluginModule.d.ts +1 -1
  879. package/dist/icons/components/UiPluginV2.d.ts +1 -1
  880. package/dist/icons/components/UiPlugsConnected.d.ts +1 -1
  881. package/dist/icons/components/UiPointcut.d.ts +1 -1
  882. package/dist/icons/components/UiProcedure.d.ts +1 -1
  883. package/dist/icons/components/UiProfile.d.ts +1 -1
  884. package/dist/icons/components/UiProfile1.d.ts +1 -1
  885. package/dist/icons/components/UiProfile2.d.ts +1 -1
  886. package/dist/icons/components/UiProfile3.d.ts +1 -1
  887. package/dist/icons/components/UiProfile4.d.ts +1 -1
  888. package/dist/icons/components/UiProfiler.d.ts +1 -1
  889. package/dist/icons/components/UiProfilerBackTrace.d.ts +1 -1
  890. package/dist/icons/components/UiProfilerMergeCallees.d.ts +1 -1
  891. package/dist/icons/components/UiProhibit.d.ts +1 -1
  892. package/dist/icons/components/UiProjectStructure.d.ts +1 -1
  893. package/dist/icons/components/UiProjection.d.ts +1 -1
  894. package/dist/icons/components/UiProperty.d.ts +1 -1
  895. package/dist/icons/components/UiPulse.d.ts +1 -1
  896. package/dist/icons/components/UiPuzzle.d.ts +1 -1
  897. package/dist/icons/components/UiQuestion.d.ts +1 -1
  898. package/dist/icons/components/UiQueue.d.ts +1 -1
  899. package/dist/icons/components/UiReadAccess.d.ts +1 -1
  900. package/dist/icons/components/UiReceipt.d.ts +1 -1
  901. package/dist/icons/components/UiRecord.d.ts +1 -1
  902. package/dist/icons/components/UiRecord1.d.ts +1 -1
  903. package/dist/icons/components/UiRefresh.d.ts +1 -1
  904. package/dist/icons/components/UiRegex.d.ts +1 -1
  905. package/dist/icons/components/UiRelationship.d.ts +1 -1
  906. package/dist/icons/components/UiRelay.d.ts +1 -1
  907. package/dist/icons/components/UiRemove.d.ts +1 -1
  908. package/dist/icons/components/UiRepeat.d.ts +1 -1
  909. package/dist/icons/components/UiResizeVertical.d.ts +1 -1
  910. package/dist/icons/components/UiRestart.d.ts +1 -1
  911. package/dist/icons/components/UiRobotAi.d.ts +1 -1
  912. package/dist/icons/components/UiRocket.d.ts +1 -1
  913. package/dist/icons/components/UiRole.d.ts +1 -1
  914. package/dist/icons/components/UiRollback.d.ts +1 -1
  915. package/dist/icons/components/UiRoute.d.ts +1 -1
  916. package/dist/icons/components/UiRoutine.d.ts +1 -1
  917. package/dist/icons/components/UiRows.d.ts +1 -1
  918. package/dist/icons/components/UiRun.d.ts +1 -1
  919. package/dist/icons/components/UiRun1.d.ts +1 -1
  920. package/dist/icons/components/UiRun10.d.ts +1 -1
  921. package/dist/icons/components/UiRun11.d.ts +1 -1
  922. package/dist/icons/components/UiRun12.d.ts +1 -1
  923. package/dist/icons/components/UiRun13.d.ts +1 -1
  924. package/dist/icons/components/UiRun14.d.ts +1 -1
  925. package/dist/icons/components/UiRun2.d.ts +1 -1
  926. package/dist/icons/components/UiRun3.d.ts +1 -1
  927. package/dist/icons/components/UiRun4.d.ts +1 -1
  928. package/dist/icons/components/UiRun5.d.ts +1 -1
  929. package/dist/icons/components/UiRun6.d.ts +1 -1
  930. package/dist/icons/components/UiRun7.d.ts +1 -1
  931. package/dist/icons/components/UiRun8.d.ts +1 -1
  932. package/dist/icons/components/UiRun9.d.ts +1 -1
  933. package/dist/icons/components/UiSave.d.ts +1 -1
  934. package/dist/icons/components/UiScale.d.ts +1 -1
  935. package/dist/icons/components/UiScan.d.ts +1 -1
  936. package/dist/icons/components/UiScroll.d.ts +1 -1
  937. package/dist/icons/components/UiSealCheck.d.ts +1 -1
  938. package/dist/icons/components/UiSearch.d.ts +1 -1
  939. package/dist/icons/components/UiSecurityRole.d.ts +1 -1
  940. package/dist/icons/components/UiSelect.d.ts +1 -1
  941. package/dist/icons/components/UiSequence.d.ts +1 -1
  942. package/dist/icons/components/UiSequence1.d.ts +1 -1
  943. package/dist/icons/components/UiSequence2.d.ts +1 -1
  944. package/dist/icons/components/UiSequence3.d.ts +1 -1
  945. package/dist/icons/components/UiSequence4.d.ts +1 -1
  946. package/dist/icons/components/UiServer.d.ts +1 -1
  947. package/dist/icons/components/UiServerProcess.d.ts +1 -1
  948. package/dist/icons/components/UiSetKey.d.ts +1 -1
  949. package/dist/icons/components/UiSeverityBlocker.d.ts +1 -1
  950. package/dist/icons/components/UiSeverityCritical.d.ts +1 -1
  951. package/dist/icons/components/UiSeverityHigh.d.ts +1 -1
  952. package/dist/icons/components/UiSeverityInfo.d.ts +1 -1
  953. package/dist/icons/components/UiSeverityLow.d.ts +1 -1
  954. package/dist/icons/components/UiSeverityMedium.d.ts +1 -1
  955. package/dist/icons/components/UiSeverityWarning.d.ts +1 -1
  956. package/dist/icons/components/UiShare.d.ts +1 -1
  957. package/dist/icons/components/UiShield.d.ts +1 -1
  958. package/dist/icons/components/UiShieldSlash.d.ts +1 -1
  959. package/dist/icons/components/UiShipWheel.d.ts +1 -1
  960. package/dist/icons/components/UiShortcutFilter.d.ts +1 -1
  961. package/dist/icons/components/UiShowCurrentFrame.d.ts +1 -1
  962. package/dist/icons/components/UiShowMembers.d.ts +1 -1
  963. package/dist/icons/components/UiShowToImplement.d.ts +1 -1
  964. package/dist/icons/components/UiSidebar.d.ts +1 -1
  965. package/dist/icons/components/UiSigma.d.ts +1 -1
  966. package/dist/icons/components/UiSignIn.d.ts +1 -1
  967. package/dist/icons/components/UiSignOut.d.ts +1 -1
  968. package/dist/icons/components/UiSiren.d.ts +1 -1
  969. package/dist/icons/components/UiSkipForward.d.ts +1 -1
  970. package/dist/icons/components/UiSkull.d.ts +1 -1
  971. package/dist/icons/components/UiSliders.d.ts +1 -1
  972. package/dist/icons/components/UiSortAlphabetically.d.ts +1 -1
  973. package/dist/icons/components/UiSortByType.d.ts +1 -1
  974. package/dist/icons/components/UiSortByUsage.d.ts +1 -1
  975. package/dist/icons/components/UiSortByVisibility.d.ts +1 -1
  976. package/dist/icons/components/UiSparkles.d.ts +1 -1
  977. package/dist/icons/components/UiSpeaker.d.ts +1 -1
  978. package/dist/icons/components/UiSpringBoot.d.ts +1 -1
  979. package/dist/icons/components/UiSqlArray.d.ts +1 -1
  980. package/dist/icons/components/UiSqlColumn.d.ts +1 -1
  981. package/dist/icons/components/UiSqlConstraint.d.ts +1 -1
  982. package/dist/icons/components/UiSqlDatabase.d.ts +1 -1
  983. package/dist/icons/components/UiSqlForeignKey.d.ts +1 -1
  984. package/dist/icons/components/UiSqlFunction.d.ts +1 -1
  985. package/dist/icons/components/UiSqlIndex.d.ts +1 -1
  986. package/dist/icons/components/UiSqlPrimaryKey.d.ts +1 -1
  987. package/dist/icons/components/UiSqlQuery.d.ts +1 -1
  988. package/dist/icons/components/UiSqlSchema.d.ts +1 -1
  989. package/dist/icons/components/UiSqlSequence.d.ts +1 -1
  990. package/dist/icons/components/UiSqlStoredProc.d.ts +1 -1
  991. package/dist/icons/components/UiSqlTable.d.ts +1 -1
  992. package/dist/icons/components/UiSqlTrigger.d.ts +1 -1
  993. package/dist/icons/components/UiSqlView.d.ts +1 -1
  994. package/dist/icons/components/UiSquare.d.ts +1 -1
  995. package/dist/icons/components/UiStack.d.ts +1 -1
  996. package/dist/icons/components/UiStackFrameDot.d.ts +1 -1
  997. package/dist/icons/components/UiStackTrace.d.ts +1 -1
  998. package/dist/icons/components/UiStar.d.ts +1 -1
  999. package/dist/icons/components/UiStartTimer.d.ts +1 -1
  1000. package/dist/icons/components/UiStatic.d.ts +1 -1
  1001. package/dist/icons/components/UiStep.d.ts +1 -1
  1002. package/dist/icons/components/UiStep1.d.ts +1 -1
  1003. package/dist/icons/components/UiStep2.d.ts +1 -1
  1004. package/dist/icons/components/UiStep3.d.ts +1 -1
  1005. package/dist/icons/components/UiStep4.d.ts +1 -1
  1006. package/dist/icons/components/UiStep5.d.ts +1 -1
  1007. package/dist/icons/components/UiStep6.d.ts +1 -1
  1008. package/dist/icons/components/UiStep7.d.ts +1 -1
  1009. package/dist/icons/components/UiStep8.d.ts +1 -1
  1010. package/dist/icons/components/UiStep9.d.ts +1 -1
  1011. package/dist/icons/components/UiSteps.d.ts +1 -1
  1012. package/dist/icons/components/UiStop.d.ts +1 -1
  1013. package/dist/icons/components/UiStrategy.d.ts +1 -1
  1014. package/dist/icons/components/UiStream.d.ts +1 -1
  1015. package/dist/icons/components/UiStreamKey.d.ts +1 -1
  1016. package/dist/icons/components/UiString.d.ts +1 -1
  1017. package/dist/icons/components/UiStruct.d.ts +1 -1
  1018. package/dist/icons/components/UiSubmitDB.d.ts +1 -1
  1019. package/dist/icons/components/UiSubscription.d.ts +1 -1
  1020. package/dist/icons/components/UiSun.d.ts +1 -1
  1021. package/dist/icons/components/UiSwap.d.ts +1 -1
  1022. package/dist/icons/components/UiSymbol.d.ts +1 -1
  1023. package/dist/icons/components/UiSync.d.ts +1 -1
  1024. package/dist/icons/components/UiTable.d.ts +1 -1
  1025. package/dist/icons/components/UiTable1.d.ts +1 -1
  1026. package/dist/icons/components/UiTable10.d.ts +1 -1
  1027. package/dist/icons/components/UiTable11.d.ts +1 -1
  1028. package/dist/icons/components/UiTable12.d.ts +1 -1
  1029. package/dist/icons/components/UiTable2.d.ts +1 -1
  1030. package/dist/icons/components/UiTable3.d.ts +1 -1
  1031. package/dist/icons/components/UiTable4.d.ts +1 -1
  1032. package/dist/icons/components/UiTable5.d.ts +1 -1
  1033. package/dist/icons/components/UiTable6.d.ts +1 -1
  1034. package/dist/icons/components/UiTable7.d.ts +1 -1
  1035. package/dist/icons/components/UiTable8.d.ts +1 -1
  1036. package/dist/icons/components/UiTable9.d.ts +1 -1
  1037. package/dist/icons/components/UiTableProperties.d.ts +1 -1
  1038. package/dist/icons/components/UiTag.d.ts +1 -1
  1039. package/dist/icons/components/UiTax.d.ts +1 -1
  1040. package/dist/icons/components/UiTemplate.d.ts +1 -1
  1041. package/dist/icons/components/UiTerminal.d.ts +1 -1
  1042. package/dist/icons/components/UiTest.d.ts +1 -1
  1043. package/dist/icons/components/UiTest1.d.ts +1 -1
  1044. package/dist/icons/components/UiTest2.d.ts +1 -1
  1045. package/dist/icons/components/UiTest3.d.ts +1 -1
  1046. package/dist/icons/components/UiTest4.d.ts +1 -1
  1047. package/dist/icons/components/UiTest5.d.ts +1 -1
  1048. package/dist/icons/components/UiTest6.d.ts +1 -1
  1049. package/dist/icons/components/UiTest7.d.ts +1 -1
  1050. package/dist/icons/components/UiText.d.ts +1 -1
  1051. package/dist/icons/components/UiThermometer.d.ts +1 -1
  1052. package/dist/icons/components/UiThumbsDown.d.ts +1 -1
  1053. package/dist/icons/components/UiThumbsUp.d.ts +1 -1
  1054. package/dist/icons/components/UiTimer.d.ts +1 -1
  1055. package/dist/icons/components/UiToggleOff.d.ts +1 -1
  1056. package/dist/icons/components/UiToggleOn.d.ts +1 -1
  1057. package/dist/icons/components/UiTrait.d.ts +1 -1
  1058. package/dist/icons/components/UiTransactionStart.d.ts +1 -1
  1059. package/dist/icons/components/UiTrash.d.ts +1 -1
  1060. package/dist/icons/components/UiTrendDown.d.ts +1 -1
  1061. package/dist/icons/components/UiTrendUp.d.ts +1 -1
  1062. package/dist/icons/components/UiTypeAlias.d.ts +1 -1
  1063. package/dist/icons/components/UiTypeParameter.d.ts +1 -1
  1064. package/dist/icons/components/UiTypeScriptIndexSignature.d.ts +1 -1
  1065. package/dist/icons/components/UiUndeploy.d.ts +1 -1
  1066. package/dist/icons/components/UiUnknown.d.ts +1 -1
  1067. package/dist/icons/components/UiUpload.d.ts +1 -1
  1068. package/dist/icons/components/UiUser.d.ts +1 -1
  1069. package/dist/icons/components/UiUserCircle.d.ts +1 -1
  1070. package/dist/icons/components/UiUserCog.d.ts +1 -1
  1071. package/dist/icons/components/UiUserGear.d.ts +1 -1
  1072. package/dist/icons/components/UiUsersFour.d.ts +1 -1
  1073. package/dist/icons/components/UiUsersThree.d.ts +1 -1
  1074. package/dist/icons/components/UiVariable.d.ts +1 -1
  1075. package/dist/icons/components/UiVariable1.d.ts +1 -1
  1076. package/dist/icons/components/UiVariable2.d.ts +1 -1
  1077. package/dist/icons/components/UiVariable3.d.ts +1 -1
  1078. package/dist/icons/components/UiVariable4.d.ts +1 -1
  1079. package/dist/icons/components/UiVariable5.d.ts +1 -1
  1080. package/dist/icons/components/UiVariable6.d.ts +1 -1
  1081. package/dist/icons/components/UiVideo.d.ts +1 -1
  1082. package/dist/icons/components/UiVirtualForeignKey.d.ts +1 -1
  1083. package/dist/icons/components/UiWarningCircle.d.ts +1 -1
  1084. package/dist/icons/components/UiWarningTriangle.d.ts +1 -1
  1085. package/dist/icons/components/UiWatch.d.ts +1 -1
  1086. package/dist/icons/components/UiWebArtifact.d.ts +1 -1
  1087. package/dist/icons/components/UiWebServiceClient.d.ts +1 -1
  1088. package/dist/icons/components/UiWorkflow.d.ts +1 -1
  1089. package/dist/icons/components/UiWrench.d.ts +1 -1
  1090. package/dist/icons/components/UiWriteAccess.d.ts +1 -1
  1091. package/dist/icons/components/UiXpath.d.ts +1 -1
  1092. package/dist/icons/components/UiXpath1.d.ts +1 -1
  1093. package/dist/icons/components/UiZap.d.ts +1 -1
  1094. package/dist/icons/components/UiZoomIn.d.ts +1 -1
  1095. package/dist/icons/components/UiZoomOut.d.ts +1 -1
  1096. package/dist/icons/index.d.ts +1067 -1067
  1097. package/dist/icons/programmingCatalog.d.ts +1 -1
  1098. package/dist/icons/registry.d.ts +1 -1
  1099. package/dist/icons.d.ts +1 -1
  1100. package/dist/index.cjs +1 -0
  1101. package/dist/index.cjs.map +1 -1
  1102. package/dist/index.d.ts +7 -7
  1103. package/dist/index.js +2 -1
  1104. package/dist/jotai.d.ts +3 -3
  1105. package/dist/layout/AppShell.d.ts +4 -4
  1106. package/dist/layout/AppShell.nav.d.ts +1 -1
  1107. package/dist/layout/AppSidebar.d.ts +2 -2
  1108. package/dist/layout/Panel.d.ts +3 -3
  1109. package/dist/layout/Section.d.ts +2 -2
  1110. package/dist/layout/Tabs.d.ts +2 -2
  1111. package/dist/layout/Workspace.d.ts +2 -2
  1112. package/dist/layout/Workspace.regions.d.ts +1 -1
  1113. package/dist/lib/combobox-values.d.ts +1 -1
  1114. package/dist/lib/comment-stage.d.ts +1 -1
  1115. package/dist/lib/permission-strategies.d.ts +2 -2
  1116. package/dist/lib/runtime-profile-model.d.ts +4 -4
  1117. package/dist/lib/size.d.ts +1 -1
  1118. package/dist/mdx-editor.d.ts +4 -4
  1119. package/dist/monaco/MonacoEditor.d.ts +1 -1
  1120. package/dist/monaco/MonacoProvider.d.ts +1 -1
  1121. package/dist/monaco/MonacoSchemaEditor.d.ts +1 -1
  1122. package/dist/monaco/schema-normalizer.d.ts +1 -1
  1123. package/dist/monaco/types.d.ts +1 -1
  1124. package/dist/monaco/use-monaco-worker.d.ts +1 -1
  1125. package/dist/monaco-schema.d.ts +2 -2
  1126. package/dist/monaco.d.ts +5 -5
  1127. package/dist/overlay/CellActions.d.ts +2 -2
  1128. package/dist/overlay/CommandPalette.d.ts +2 -2
  1129. package/dist/overlay/CommandPalette.model.d.ts +1 -1
  1130. package/dist/overlay/CommandPaletteList.d.ts +1 -1
  1131. package/dist/overlay/ContextMenu.d.ts +1 -1
  1132. package/dist/overlay/DropdownMenu.d.ts +2 -2
  1133. package/dist/overlay/DropdownMenuSubmenu.d.ts +1 -1
  1134. package/dist/overlay/Tour.d.ts +2 -2
  1135. package/dist/overlay/TourCard.d.ts +1 -1
  1136. package/dist/overlay/TourProvider.d.ts +3 -3
  1137. package/dist/overlay/TourSpotlight.d.ts +2 -2
  1138. package/dist/overlay/toast-context.d.ts +1 -1
  1139. package/dist/overlay/tour-anchor.d.ts +1 -1
  1140. package/dist/overlay/tour-context.d.ts +2 -2
  1141. package/dist/overlay/tour-model.d.ts +1 -1
  1142. package/dist/overlay/tour-progress.d.ts +1 -1
  1143. package/dist/overlay/use-tour-anchor.d.ts +1 -1
  1144. package/dist/overlay/use-tour-rect.d.ts +1 -1
  1145. package/dist/overlay/use-tour-step.d.ts +1 -1
  1146. package/dist/overlay/useConfirm.d.ts +1 -1
  1147. package/dist/profiles/cel/celEditor.d.ts +2 -2
  1148. package/dist/profiles/cel/celEditorExtension.d.ts +1 -1
  1149. package/dist/profiles/cel/celEditorResults.d.ts +1 -1
  1150. package/dist/profiles/cel/celPath.d.ts +1 -1
  1151. package/dist/profiles/cel/index.d.ts +5 -5
  1152. package/dist/profiles/connections/catalogTree.d.ts +1 -1
  1153. package/dist/profiles/connections/connectionBrowserModel.d.ts +4 -4
  1154. package/dist/profiles/connections/connectionQueryWorkspace.d.ts +7 -7
  1155. package/dist/profiles/connections/connectionQueryWorkspaceModel.d.ts +2 -2
  1156. package/dist/profiles/connections/index.d.ts +5 -5
  1157. package/dist/profiles/connections/inspectionStatus.d.ts +1 -1
  1158. package/dist/profiles/connections/useInspection.d.ts +2 -2
  1159. package/dist/profiles/editor/index.d.ts +11 -11
  1160. package/dist/profiles/editor/profileBuilder.d.ts +1 -1
  1161. package/dist/profiles/editor/profileBuilderExtension.d.ts +1 -1
  1162. package/dist/profiles/editor/profileBuilderModel.d.ts +2 -2
  1163. package/dist/profiles/editor/profileBuilderWorkspace.d.ts +3 -3
  1164. package/dist/profiles/editor/profileEditor.d.ts +2 -2
  1165. package/dist/profiles/editor/profileEditorModel.d.ts +2 -2
  1166. package/dist/profiles/editor/profileEditorPreview.d.ts +1 -1
  1167. package/dist/profiles/editor/profileEditorRail.d.ts +1 -1
  1168. package/dist/profiles/editor/profileEditorRaw.d.ts +1 -1
  1169. package/dist/profiles/editor/profileEditorSections.d.ts +3 -3
  1170. package/dist/profiles/editor/profileParameterEditor.d.ts +1 -1
  1171. package/dist/profiles/editor/profileYaml.d.ts +1 -1
  1172. package/dist/profiles/editor/testSchema.d.ts +1 -1
  1173. package/dist/profiles/elasticsearch/esFieldValues.d.ts +2 -2
  1174. package/dist/profiles/elasticsearch/esParamMappingModel.d.ts +2 -2
  1175. package/dist/profiles/elasticsearch/esParamOperandExtension.d.ts +2 -2
  1176. package/dist/profiles/elasticsearch/esQueryBuilder.d.ts +8 -8
  1177. package/dist/profiles/elasticsearch/esQueryBuilderExtension.d.ts +1 -1
  1178. package/dist/profiles/elasticsearch/esQueryBuilderForm.d.ts +3 -3
  1179. package/dist/profiles/elasticsearch/esQueryClauseGroup.d.ts +2 -2
  1180. package/dist/profiles/elasticsearch/esQueryCompile.d.ts +1 -1
  1181. package/dist/profiles/elasticsearch/esQueryConditionRow.d.ts +5 -5
  1182. package/dist/profiles/elasticsearch/esQueryGroupModel.d.ts +1 -1
  1183. package/dist/profiles/elasticsearch/esQueryOperandEditors.d.ts +5 -5
  1184. package/dist/profiles/elasticsearch/esQueryOperandModel.d.ts +2 -2
  1185. package/dist/profiles/elasticsearch/esQueryOperators.d.ts +1 -1
  1186. package/dist/profiles/elasticsearch/esQueryOutputEditor.d.ts +2 -2
  1187. package/dist/profiles/elasticsearch/esQueryPreview.d.ts +1 -1
  1188. package/dist/profiles/elasticsearch/esQuerySortEditor.d.ts +2 -2
  1189. package/dist/profiles/elasticsearch/esQuerySortModel.d.ts +1 -1
  1190. package/dist/profiles/elasticsearch/esValueCombobox.d.ts +1 -1
  1191. package/dist/profiles/elasticsearch/index.d.ts +22 -22
  1192. package/dist/profiles/fields/index.d.ts +8 -8
  1193. package/dist/profiles/fields/profileColumnModel.d.ts +1 -1
  1194. package/dist/profiles/fields/profileColumnPicker.d.ts +1 -1
  1195. package/dist/profiles/fields/profileFieldControls.d.ts +2 -2
  1196. package/dist/profiles/fields/profileFieldEditor.d.ts +1 -1
  1197. package/dist/profiles/fields/profileFieldFilterEditor.d.ts +1 -1
  1198. package/dist/profiles/fields/profileFieldIcons.d.ts +1 -1
  1199. package/dist/profiles/fields/profileFieldList.d.ts +1 -1
  1200. package/dist/profiles/fields/profileFieldManager.d.ts +1 -1
  1201. package/dist/profiles/fields/profileFieldState.d.ts +1 -1
  1202. package/dist/profiles/fields/profileParamModel.d.ts +1 -1
  1203. package/dist/profiles/processor/index.d.ts +5 -5
  1204. package/dist/profiles/processor/processorPipeline.d.ts +2 -2
  1205. package/dist/profiles/processor/processorPipelineEditor.d.ts +2 -2
  1206. package/dist/profiles/processor/processorPipelineExtension.d.ts +1 -1
  1207. package/dist/profiles/processor/processorPreviewTable.d.ts +1 -1
  1208. package/dist/profiles/processor/processorSampleParams.d.ts +1 -1
  1209. package/dist/profiles/profileApi.d.ts +2 -2
  1210. package/dist/profiles/query/index.d.ts +8 -8
  1211. package/dist/profiles/query/jsonPathSample.d.ts +1 -1
  1212. package/dist/profiles/query/kubernetesWorkloadTargetPicker.d.ts +1 -1
  1213. package/dist/profiles/query/profileSampleFilterLookup.d.ts +3 -3
  1214. package/dist/profiles/query/profileSamplePayload.d.ts +3 -3
  1215. package/dist/profiles/query/profileSampleResult.d.ts +3 -3
  1216. package/dist/profiles/query/prometheusResults.d.ts +1 -1
  1217. package/dist/profiles/query/queryRowLimits.d.ts +1 -1
  1218. package/dist/profiles/query/queryRowLimitsModel.d.ts +1 -1
  1219. package/dist/profiles/query/queryTargetPicker.d.ts +1 -1
  1220. package/dist/profiles/wizard/index.d.ts +5 -5
  1221. package/dist/profiles/wizard/profileWizard.d.ts +2 -2
  1222. package/dist/profiles/wizard/profileWizardModel.d.ts +1 -1
  1223. package/dist/profiles/wizard/profileWizardQueryStep.d.ts +1 -1
  1224. package/dist/profiles/wizard/profileWizardSteps.d.ts +1 -1
  1225. package/dist/profiles.d.ts +9 -9
  1226. package/dist/rpc/ChatLayer.d.ts +3 -3
  1227. package/dist/rpc/CommandForm.d.ts +2 -2
  1228. package/dist/rpc/CommandOutput.d.ts +7 -7
  1229. package/dist/rpc/EndpointList.d.ts +1 -1
  1230. package/dist/rpc/EntityExplorerApp.d.ts +5 -5
  1231. package/dist/rpc/ExecutionResult.d.ts +1 -1
  1232. package/dist/rpc/FilterForm.d.ts +3 -3
  1233. package/dist/rpc/FilterFormFields.d.ts +1 -1
  1234. package/dist/rpc/OperationActionBar.d.ts +6 -6
  1235. package/dist/rpc/OperationActionDialog.d.ts +2 -2
  1236. package/dist/rpc/OperationCatalog.d.ts +10 -10
  1237. package/dist/rpc/OperationCatalogActions.d.ts +3 -3
  1238. package/dist/rpc/OperationCatalogFollowStatus.d.ts +1 -1
  1239. package/dist/rpc/OperationCommandPage.d.ts +5 -5
  1240. package/dist/rpc/OperationEntityContextPicker.d.ts +4 -4
  1241. package/dist/rpc/OperationEntityContextPicker.model.d.ts +3 -3
  1242. package/dist/rpc/OperationEntityPage.d.ts +6 -6
  1243. package/dist/rpc/OperationPicker.d.ts +1 -1
  1244. package/dist/rpc/OperationResultView.d.ts +7 -7
  1245. package/dist/rpc/OperationScheduleDialog.d.ts +2 -2
  1246. package/dist/rpc/OperationSchedules.d.ts +1 -1
  1247. package/dist/rpc/RouterProvider.d.ts +1 -1
  1248. package/dist/rpc/SchemaActionForm.d.ts +3 -3
  1249. package/dist/rpc/SessionHeader.d.ts +5 -5
  1250. package/dist/rpc/SessionHeaderControls.d.ts +2 -2
  1251. package/dist/rpc/SessionsCatalog.d.ts +3 -3
  1252. package/dist/rpc/actionIconMap.d.ts +1 -1
  1253. package/dist/rpc/apiClient.d.ts +3 -3
  1254. package/dist/rpc/classify.d.ts +1 -1
  1255. package/dist/rpc/clickyMetadata.d.ts +1 -1
  1256. package/dist/rpc/command-form-utils.d.ts +1 -1
  1257. package/dist/rpc/commandHref.d.ts +1 -1
  1258. package/dist/rpc/cursorStale.d.ts +2 -2
  1259. package/dist/rpc/executionPages.d.ts +2 -2
  1260. package/dist/rpc/filterShapes.d.ts +1 -1
  1261. package/dist/rpc/formMetadata.d.ts +4 -4
  1262. package/dist/rpc/operation-cli-command.d.ts +2 -2
  1263. package/dist/rpc/operation-schedule-model.d.ts +3 -3
  1264. package/dist/rpc/operation-schedule-types.d.ts +1 -1
  1265. package/dist/rpc/operationCatalogFilterState.d.ts +2 -2
  1266. package/dist/rpc/operationCatalogFollow.d.ts +2 -2
  1267. package/dist/rpc/operationErrorDiagnostics.d.ts +1 -1
  1268. package/dist/rpc/operationFilterSearch.d.ts +3 -3
  1269. package/dist/rpc/operationLookupFetcher.d.ts +2 -2
  1270. package/dist/rpc/router.d.ts +1 -1
  1271. package/dist/rpc/rowNavigation.d.ts +2 -2
  1272. package/dist/rpc/rpc-story-fixtures/orders.fixture.d.ts +1 -1
  1273. package/dist/rpc/rpc-story-fixtures/services.fixture.d.ts +1 -1
  1274. package/dist/rpc/rpc-story-fixtures/surface-fixture.d.ts +2 -2
  1275. package/dist/rpc/rpc-story-fixtures/widgets.fixture.d.ts +1 -1
  1276. package/dist/rpc/rpc-story.fixtures.d.ts +3 -3
  1277. package/dist/rpc/session-story.fixtures.d.ts +1 -1
  1278. package/dist/rpc/sessionHeaderModel.d.ts +1 -1
  1279. package/dist/rpc/surfaceIconMap.d.ts +1 -1
  1280. package/dist/rpc/surfaceNav.d.ts +2 -2
  1281. package/dist/rpc/types.d.ts +3 -3
  1282. package/dist/rpc/useOperationCatalogFollow.d.ts +2 -2
  1283. package/dist/rpc/useOperationPages.d.ts +4 -4
  1284. package/dist/rpc/useOperations.d.ts +2 -2
  1285. package/dist/rpc/useSession.d.ts +2 -2
  1286. package/dist/rpc.d.ts +37 -37
  1287. package/dist/runtime-profile.d.ts +1 -1
  1288. package/dist/utils.d.ts +13 -13
  1289. package/package.json +4 -3
@@ -1,5 +1,4 @@
1
1
  import { jsxs, jsx, Fragment } from "react/jsx-runtime";
2
- import { useQueries } from "@tanstack/react-query";
3
2
  import { useState, useMemo } from "react";
4
3
  import { CartesianGrid, XAxis, YAxis, Tooltip, ReferenceLine, ResponsiveContainer, LineChart, Line, AreaChart, Area } from "recharts";
5
4
  import { cn } from "../lib/utils.js";
@@ -10,12 +9,8 @@ import { ProgressBar } from "./ProgressBar.js";
10
9
  import { Icon } from "./Icon.js";
11
10
  import { latestOf, assignAxes } from "./TimeseriesPanel.axes.js";
12
11
  import { resolveSeries, mergeSeries, resolveBreakdown } from "./TimeseriesPanel.model.js";
12
+ import { defaultTimeseriesFetcher, useTimeseriesQueries } from "./timeseries-query.js";
13
13
  import { UiFullscreen } from "../icons/components/UiFullscreen.js";
14
- const defaultFetcher = async (url) => {
15
- const res = await fetch(url);
16
- if (!res.ok) throw new Error(`metrics request failed: ${res.status}`);
17
- return res.json();
18
- };
19
14
  function formatClock(at) {
20
15
  const date = new Date(at);
21
16
  if (Number.isNaN(date.getTime())) return "";
@@ -33,7 +28,8 @@ function TimeseriesPanel(props) {
33
28
  variant = "area",
34
29
  expandable = true,
35
30
  total,
36
- fetcher = defaultFetcher,
31
+ referenceLines,
32
+ fetcher = defaultTimeseriesFetcher,
37
33
  className
38
34
  } = props;
39
35
  const isBreakdown = variant === "breakdown";
@@ -41,23 +37,11 @@ function TimeseriesPanel(props) {
41
37
  const expandVariant = props.expandVariant ?? chartVariant;
42
38
  const [expanded, setExpanded] = useState(false);
43
39
  const series = useMemo(() => resolveSeries(props), [props]);
44
- const requestUrls = useMemo(
45
- () => series.map((s) => {
46
- const u = new URL(s.url, window.location.origin);
47
- if (range) u.searchParams.set("since", range);
48
- return u.pathname + u.search;
49
- }),
50
- [series, range]
40
+ const results = useTimeseriesQueries(
41
+ series.map((s) => ({ id: s.key, load: s.load })),
42
+ { baseUrl: props.baseUrl ?? "", range, refreshMs, fetcher }
51
43
  );
52
- const results = useQueries({
53
- queries: requestUrls.map((requestUrl) => ({
54
- queryKey: ["timeseries", requestUrl],
55
- queryFn: () => fetcher(requestUrl),
56
- refetchInterval: refreshMs > 0 ? refreshMs : false,
57
- staleTime: 0,
58
- retry: 0
59
- }))
60
- });
44
+ const refs = referenceLines ?? [];
61
45
  const isError = results.some((r) => r.isError);
62
46
  const error = (_a = results.find((r) => r.isError)) == null ? void 0 : _a.error;
63
47
  const isLoading = results.some((r) => r.isLoading) && results.every((r) => !r.data);
@@ -92,11 +76,31 @@ function TimeseriesPanel(props) {
92
76
  ) : null
93
77
  ] })
94
78
  ] }),
95
- /* @__PURE__ */ jsx("div", { className: "mt-2", style: breakdown ? void 0 : { height }, children: breakdown ? /* @__PURE__ */ jsx(BreakdownView, { total: breakdown.total, unit, items: breakdown.items }) : isError ? /* @__PURE__ */ jsx(PanelMessage, { children: (error == null ? void 0 : error.message) ?? "Failed to load metric" }) : isLoading ? /* @__PURE__ */ jsx(PanelMessage, { children: "Loading…" }) : rows.length < 2 ? /* @__PURE__ */ jsx(PanelMessage, { children: "Collecting data…" }) : /* @__PURE__ */ jsx(Chart, { rows, series, variant: chartVariant, unit, showZeroLine: hasMirrored }) }),
96
- !breakdown && !isError && !isLoading && rows.length >= 2 && series.length > 1 ? /* @__PURE__ */ jsx(ChartLegend, { series, rows }) : null,
79
+ /* @__PURE__ */ jsx("div", { className: "mt-2", style: breakdown ? void 0 : { height }, children: breakdown ? /* @__PURE__ */ jsx(BreakdownView, { total: breakdown.total, unit, items: breakdown.items }) : isError ? /* @__PURE__ */ jsx(PanelMessage, { children: (error == null ? void 0 : error.message) ?? "Failed to load metric" }) : isLoading ? /* @__PURE__ */ jsx(PanelMessage, { children: "Loading…" }) : rows.length < 2 ? /* @__PURE__ */ jsx(PanelMessage, { children: "Collecting data…" }) : /* @__PURE__ */ jsx(
80
+ Chart,
81
+ {
82
+ rows,
83
+ series,
84
+ variant: chartVariant,
85
+ unit,
86
+ showZeroLine: hasMirrored,
87
+ referenceLines: refs
88
+ }
89
+ ) }),
90
+ !breakdown && !isError && !isLoading && rows.length >= 2 && series.length + refs.length > 1 ? /* @__PURE__ */ jsx(ChartLegend, { series, rows, referenceLines: refs, unit }) : null,
97
91
  canExpand ? /* @__PURE__ */ jsxs(Modal, { open: expanded, onClose: () => setExpanded(false), title, size: "xl", children: [
98
- /* @__PURE__ */ jsx("div", { style: { height: 360 }, children: /* @__PURE__ */ jsx(Chart, { rows, series, variant: expandVariant, unit, showZeroLine: hasMirrored }) }),
99
- series.length > 1 ? /* @__PURE__ */ jsx(ChartLegend, { series, rows }) : null
92
+ /* @__PURE__ */ jsx("div", { style: { height: 360 }, children: /* @__PURE__ */ jsx(
93
+ Chart,
94
+ {
95
+ rows,
96
+ series,
97
+ variant: expandVariant,
98
+ unit,
99
+ showZeroLine: hasMirrored,
100
+ referenceLines: refs
101
+ }
102
+ ) }),
103
+ series.length + refs.length > 1 ? /* @__PURE__ */ jsx(ChartLegend, { series, rows, referenceLines: refs, unit }) : null
100
104
  ] }) : null
101
105
  ] });
102
106
  }
@@ -107,22 +111,45 @@ function LatestReadout({ series, rows }) {
107
111
  if (v === void 0) return null;
108
112
  return /* @__PURE__ */ jsx("span", { className: "tabular-nums", children: formatUnit(Math.abs(v), only.unit) });
109
113
  }
110
- function ChartLegend({ series, rows }) {
111
- return /* @__PURE__ */ jsx("ul", { className: "mt-1.5 flex flex-wrap gap-x-3 gap-y-1 text-xs text-muted-foreground", children: series.map((s) => {
112
- const v = latestOf(rows, s.key);
113
- return /* @__PURE__ */ jsxs("li", { className: "inline-flex min-w-0 items-center gap-1.5", children: [
114
+ const REFERENCE_LINE_COLOR = "var(--muted-foreground, #64748b)";
115
+ function referenceColor(ref) {
116
+ return resolveCssColor(ref.color ?? REFERENCE_LINE_COLOR);
117
+ }
118
+ function ChartLegend({
119
+ series,
120
+ rows,
121
+ referenceLines,
122
+ unit
123
+ }) {
124
+ return /* @__PURE__ */ jsxs("ul", { className: "mt-1.5 flex flex-wrap gap-x-3 gap-y-1 text-xs text-muted-foreground", children: [
125
+ series.map((s) => {
126
+ const v = latestOf(rows, s.key);
127
+ return /* @__PURE__ */ jsxs("li", { className: "inline-flex min-w-0 items-center gap-1.5", children: [
128
+ /* @__PURE__ */ jsx(
129
+ "span",
130
+ {
131
+ className: "h-2 w-2 shrink-0 rounded-full",
132
+ style: { backgroundColor: resolveCssColor(s.color) },
133
+ "aria-hidden": true
134
+ }
135
+ ),
136
+ /* @__PURE__ */ jsx("span", { className: "truncate text-foreground", children: s.label }),
137
+ v !== void 0 ? /* @__PURE__ */ jsx("span", { className: "tabular-nums", children: formatUnit(Math.abs(v), s.unit) }) : null
138
+ ] }, s.key);
139
+ }),
140
+ referenceLines.map((ref, i) => /* @__PURE__ */ jsxs("li", { className: "inline-flex min-w-0 items-center gap-1.5", children: [
114
141
  /* @__PURE__ */ jsx(
115
142
  "span",
116
143
  {
117
- className: "h-2 w-2 shrink-0 rounded-full",
118
- style: { backgroundColor: resolveCssColor(s.color) },
144
+ className: "h-0.5 w-2.5 shrink-0",
145
+ style: { backgroundColor: referenceColor(ref) },
119
146
  "aria-hidden": true
120
147
  }
121
148
  ),
122
- /* @__PURE__ */ jsx("span", { className: "truncate text-foreground", children: s.label }),
123
- v !== void 0 ? /* @__PURE__ */ jsx("span", { className: "tabular-nums", children: formatUnit(Math.abs(v), s.unit) }) : null
124
- ] }, s.key);
125
- }) });
149
+ /* @__PURE__ */ jsx("span", { className: "truncate text-foreground", children: ref.label }),
150
+ /* @__PURE__ */ jsx("span", { className: "tabular-nums", children: formatUnit(ref.value, ref.unit ?? unit) })
151
+ ] }, `ref-${i}`))
152
+ ] });
126
153
  }
127
154
  function BreakdownReadout({
128
155
  total,
@@ -175,13 +202,18 @@ function Chart({
175
202
  series,
176
203
  variant,
177
204
  unit,
178
- showZeroLine
205
+ showZeroLine,
206
+ referenceLines
179
207
  }) {
180
208
  const stacked = variant === "stacked";
181
209
  const seriesByKey = new Map(series.map((s) => [s.key, s]));
182
210
  const strokeOf = (s) => resolveCssColor(s.color);
183
211
  const { axes: yAxes, axisOfKey } = useMemo(() => assignAxes(series), [series]);
184
212
  const axisOf = (key) => axisOfKey.get(key) ?? "left";
213
+ const axisOfUnit = (u) => {
214
+ var _a;
215
+ return ((_a = yAxes.find((ax) => ax.unit === u)) == null ? void 0 : _a.id) ?? "left";
216
+ };
185
217
  const axes = /* @__PURE__ */ jsxs(Fragment, { children: [
186
218
  /* @__PURE__ */ jsx(CartesianGrid, { strokeOpacity: 0.12, vertical: false }),
187
219
  /* @__PURE__ */ jsx(
@@ -219,7 +251,18 @@ function Chart({
219
251
  contentStyle: { fontSize: 12 }
220
252
  }
221
253
  ),
222
- showZeroLine ? /* @__PURE__ */ jsx(ReferenceLine, { yAxisId: "left", y: 0, stroke: "currentColor", strokeOpacity: 0.35 }) : null
254
+ showZeroLine ? /* @__PURE__ */ jsx(ReferenceLine, { yAxisId: "left", y: 0, stroke: "currentColor", strokeOpacity: 0.35 }) : null,
255
+ referenceLines.map((ref, i) => /* @__PURE__ */ jsx(
256
+ ReferenceLine,
257
+ {
258
+ yAxisId: axisOfUnit(ref.unit ?? unit),
259
+ y: ref.value,
260
+ stroke: referenceColor(ref),
261
+ strokeDasharray: "4 4",
262
+ ifOverflow: "extendDomain"
263
+ },
264
+ `ref-${i}`
265
+ ))
223
266
  ] });
224
267
  return /* @__PURE__ */ jsx(ResponsiveContainer, { width: "100%", height: "100%", children: variant === "line" ? /* @__PURE__ */ jsxs(LineChart, { data: rows, margin: { top: 4, right: 8, bottom: 0, left: 0 }, children: [
225
268
  axes,
@@ -1 +1 @@
1
- {"version":3,"file":"TimeseriesPanel.js","sources":["../../src/data/TimeseriesPanel.tsx"],"sourcesContent":["import { useQueries } from \"@tanstack/react-query\";\nimport { useMemo, useState } from \"react\";\nimport {\n Area,\n AreaChart,\n CartesianGrid,\n Line,\n LineChart,\n ReferenceLine,\n ResponsiveContainer,\n Tooltip,\n XAxis,\n YAxis,\n} from \"recharts\";\nimport { cn } from \"../lib/utils\";\nimport { resolveCssColor } from \"../lib/color\";\nimport { formatUnit } from \"../lib/format\";\nimport { Modal } from \"../overlay/Modal\";\nimport { ProgressBar, type ProgressSegment } from \"./ProgressBar\";\nimport { UiFullscreen } from \"../icons\";\nimport { Icon, type StaticIconComponent } from \"./Icon\";\nimport { assignAxes, latestOf } from \"./TimeseriesPanel.axes\";\nimport {\n mergeSeries,\n resolveBreakdown,\n resolveSeries,\n type BreakdownItem,\n type MergedRow,\n type ResolvedSeries,\n type TimeseriesPanelProps,\n type TimeseriesResponse,\n} from \"./TimeseriesPanel.model\";\n\nexport type { AxisAssignment, AxisOrientation, AxisSpec } from \"./TimeseriesPanel.axes\";\nexport type {\n BreakdownItem,\n MergedRow,\n ResolvedSeries,\n TimeseriesPanelProps,\n TimeseriesPoint,\n TimeseriesResponse,\n TimeseriesSeries,\n} from \"./TimeseriesPanel.model\";\n\nconst defaultFetcher = async (url: string): Promise<TimeseriesResponse> => {\n const res = await fetch(url);\n if (!res.ok) throw new Error(`metrics request failed: ${res.status}`);\n return res.json();\n};\n\nfunction formatClock(at: string): string {\n const date = new Date(at);\n if (Number.isNaN(date.getTime())) return \"\";\n return date.toLocaleTimeString([], { hour: \"2-digit\", minute: \"2-digit\" });\n}\n\nexport function TimeseriesPanel(props: TimeseriesPanelProps) {\n const {\n title,\n icon,\n unit,\n range = \"1h\",\n refreshMs = 5000,\n height = 160,\n variant = \"area\",\n expandable = true,\n total,\n fetcher = defaultFetcher,\n className,\n } = props;\n const isBreakdown = variant === \"breakdown\";\n // The inline chart (non-breakdown only) and the expand modal both need a\n // time-series variant; breakdown has no inline chart and expands to \"area\".\n const chartVariant: ChartVariant = isBreakdown ? \"area\" : variant;\n const expandVariant = props.expandVariant ?? chartVariant;\n\n const [expanded, setExpanded] = useState(false);\n\n const series = useMemo(() => resolveSeries(props), [props]);\n const requestUrls = useMemo(\n () =>\n series.map((s) => {\n const u = new URL(s.url, window.location.origin);\n if (range) u.searchParams.set(\"since\", range);\n return u.pathname + u.search;\n }),\n [series, range],\n );\n\n const results = useQueries({\n queries: requestUrls.map((requestUrl) => ({\n queryKey: [\"timeseries\", requestUrl],\n queryFn: () => fetcher(requestUrl),\n refetchInterval: refreshMs > 0 ? refreshMs : false,\n staleTime: 0,\n retry: 0,\n })),\n });\n\n const isError = results.some((r) => r.isError);\n const error = results.find((r) => r.isError)?.error;\n const isLoading = results.some((r) => r.isLoading) && results.every((r) => !r.data);\n const pointsBySeries = results.map((r) => r.data?.points);\n const rows = useMemo(() => mergeSeries(series, pointsBySeries), [series, pointsBySeries]);\n const hasMirrored = series.some((s) => s.transform);\n const breakdown = useMemo(\n () => (isBreakdown ? resolveBreakdown(series, rows, total) : null),\n [isBreakdown, series, rows, total],\n );\n\n // Breakdown renders instantly from `current`; the modal still needs polled\n // history. Other variants gate on having ≥2 points to draw a line.\n const canExpand = expandable && rows.length >= 2;\n\n return (\n <div className={cn(\"flex flex-col rounded-lg border border-border bg-card p-3\", className)}>\n <div className=\"flex items-center justify-between gap-2 text-xs text-muted-foreground\">\n <span className=\"inline-flex min-w-0 items-center gap-1.5\">\n {icon ? <PanelIcon icon={icon} /> : null}\n <span className=\"truncate font-medium text-foreground\">{title}</span>\n </span>\n <span className=\"inline-flex shrink-0 items-center gap-1.5\">\n {breakdown ? (\n <BreakdownReadout total={breakdown.total} unit={unit} items={breakdown.items} />\n ) : (\n <LatestReadout series={series} rows={rows} />\n )}\n {canExpand ? (\n <button\n type=\"button\"\n aria-label=\"Expand chart\"\n onClick={() => setExpanded(true)}\n className=\"text-muted-foreground transition-colors hover:text-foreground\"\n >\n <Icon icon={UiFullscreen} width={14} height={14} />\n </button>\n ) : null}\n </span>\n </div>\n <div className=\"mt-2\" style={breakdown ? undefined : { height }}>\n {breakdown ? (\n <BreakdownView total={breakdown.total} unit={unit} items={breakdown.items} />\n ) : isError ? (\n <PanelMessage>{(error as Error)?.message ?? \"Failed to load metric\"}</PanelMessage>\n ) : isLoading ? (\n <PanelMessage>Loading…</PanelMessage>\n ) : rows.length < 2 ? (\n <PanelMessage>Collecting data…</PanelMessage>\n ) : (\n <Chart rows={rows} series={series} variant={chartVariant} unit={unit} showZeroLine={hasMirrored} />\n )}\n </div>\n {!breakdown && !isError && !isLoading && rows.length >= 2 && series.length > 1 ? (\n <ChartLegend series={series} rows={rows} />\n ) : null}\n {canExpand ? (\n <Modal open={expanded} onClose={() => setExpanded(false)} title={title} size=\"xl\">\n <div style={{ height: 360 }}>\n <Chart rows={rows} series={series} variant={expandVariant} unit={unit} showZeroLine={hasMirrored} />\n </div>\n {series.length > 1 ? <ChartLegend series={series} rows={rows} /> : null}\n </Modal>\n ) : null}\n </div>\n );\n}\n\n/**\n * Header readout for a single-series panel: the latest value, formatted with the\n * series' unit. Multi-series panels render the per-series values in {@link ChartLegend}\n * below the chart instead, so this returns null for them to avoid overlapping the title.\n */\nfunction LatestReadout({ series, rows }: { series: ResolvedSeries[]; rows: MergedRow[] }) {\n const only = series.length === 1 ? series[0] : undefined;\n if (!only) return null;\n const v = latestOf(rows, only.key);\n if (v === undefined) return null;\n return <span className=\"tabular-nums\">{formatUnit(Math.abs(v), only.unit)}</span>;\n}\n\n/** Wrapping color-keyed legend for the time-series variants: dot + label + latest value. */\nfunction ChartLegend({ series, rows }: { series: ResolvedSeries[]; rows: MergedRow[] }) {\n return (\n <ul className=\"mt-1.5 flex flex-wrap gap-x-3 gap-y-1 text-xs text-muted-foreground\">\n {series.map((s) => {\n const v = latestOf(rows, s.key);\n return (\n <li key={s.key} className=\"inline-flex min-w-0 items-center gap-1.5\">\n <span\n className=\"h-2 w-2 shrink-0 rounded-full\"\n style={{ backgroundColor: resolveCssColor(s.color) }}\n aria-hidden\n />\n <span className=\"truncate text-foreground\">{s.label}</span>\n {v !== undefined ? (\n <span className=\"tabular-nums\">{formatUnit(Math.abs(v), s.unit)}</span>\n ) : null}\n </li>\n );\n })}\n </ul>\n );\n}\n\n/** Breakdown header readout: `used / total · pct%`, where used is the sum of segments. */\nfunction BreakdownReadout({\n total,\n unit,\n items,\n}: {\n total: number;\n unit: string | undefined;\n items: BreakdownItem[];\n}) {\n const used = items.reduce((acc, it) => acc + it.value, 0);\n const pct = total > 0 ? Math.min(100, (used / total) * 100) : 0;\n return (\n <span className=\"font-mono tabular-nums\">\n {formatUnit(used, unit)} / {formatUnit(total, unit)} · {pct.toFixed(0)}%\n </span>\n );\n}\n\n/** Instantaneous stacked bar + legend list. The expand button (in the panel header) opens the graph. */\nfunction BreakdownView({\n total,\n unit,\n items,\n}: {\n total: number;\n unit: string | undefined;\n items: BreakdownItem[];\n}) {\n const segments: ProgressSegment[] = items.map((it) => ({\n count: it.value,\n color: it.color,\n label: it.label,\n }));\n return (\n <div className=\"flex flex-col gap-2\">\n <ProgressBar segments={segments} total={total > 0 ? total : 1} height=\"h-3\" />\n {items.length > 0 ? (\n <ul className=\"grid grid-cols-1 gap-y-1 text-xs\">\n {items.map((it) => (\n <li key={it.key} className=\"flex items-center gap-2\">\n <span\n className=\"h-2 w-2 shrink-0 rounded-full\"\n style={{ backgroundColor: resolveCssColor(it.color) }}\n aria-hidden\n />\n <span className=\"min-w-0 flex-1 truncate font-mono text-muted-foreground\">\n {it.label}\n </span>\n <span className=\"font-mono tabular-nums text-foreground\">\n {formatUnit(it.value, it.unit ?? unit)}\n </span>\n <span className=\"w-10 text-right font-mono tabular-nums text-muted-foreground\">\n {it.percent.toFixed(0)}%\n </span>\n </li>\n ))}\n </ul>\n ) : null}\n </div>\n );\n}\n\ntype ChartVariant = \"area\" | \"line\" | \"stacked\";\n\nfunction Chart({\n rows,\n series,\n variant,\n unit,\n showZeroLine,\n}: {\n rows: MergedRow[];\n series: ResolvedSeries[];\n variant: ChartVariant;\n unit: string | undefined;\n showZeroLine: boolean;\n}) {\n const stacked = variant === \"stacked\";\n // Mirrored series carry negative values; show magnitudes on axis and tooltip.\n const seriesByKey = new Map(series.map((s) => [s.key, s]));\n // recharts needs a CSS color value; a series may carry a Tailwind class.\n const strokeOf = (s: ResolvedSeries) => resolveCssColor(s.color);\n // Distinct units map to a left and (when present) right axis; each series draws\n // against the axis for its unit so mixed-unit panels keep independent scales.\n const { axes: yAxes, axisOfKey } = useMemo(() => assignAxes(series), [series]);\n const axisOf = (key: string): \"left\" | \"right\" => axisOfKey.get(key) ?? \"left\";\n const axes = (\n <>\n <CartesianGrid strokeOpacity={0.12} vertical={false} />\n <XAxis\n dataKey=\"at\"\n tickFormatter={formatClock}\n tick={{ fontSize: 10 }}\n stroke=\"currentColor\"\n strokeOpacity={0.35}\n minTickGap={32}\n />\n {yAxes.map((ax) => (\n <YAxis\n key={ax.id}\n yAxisId={ax.id}\n orientation={ax.orientation}\n tick={{ fontSize: 10 }}\n stroke=\"currentColor\"\n strokeOpacity={0.35}\n width={40}\n tickFormatter={(v: number) => formatUnit(Math.abs(v), ax.unit)}\n />\n ))}\n <Tooltip\n labelFormatter={(label) => formatClock(String(label))}\n formatter={(value, name) => {\n const s = seriesByKey.get(String(name));\n return [formatUnit(Math.abs(Number(value) || 0), s?.unit ?? unit), s?.label ?? String(name)];\n }}\n contentStyle={{ fontSize: 12 }}\n />\n {showZeroLine ? (\n <ReferenceLine yAxisId=\"left\" y={0} stroke=\"currentColor\" strokeOpacity={0.35} />\n ) : null}\n </>\n );\n\n return (\n <ResponsiveContainer width=\"100%\" height=\"100%\">\n {variant === \"line\" ? (\n <LineChart data={rows} margin={{ top: 4, right: 8, bottom: 0, left: 0 }}>\n {axes}\n {series.map((s) => (\n <Line\n key={s.key}\n yAxisId={axisOf(s.key)}\n type=\"monotone\"\n dataKey={s.key}\n name={s.key}\n stroke={strokeOf(s)}\n strokeWidth={2}\n dot={false}\n connectNulls\n isAnimationActive={false}\n />\n ))}\n </LineChart>\n ) : (\n <AreaChart data={rows} margin={{ top: 4, right: 8, bottom: 0, left: 0 }}>\n {axes}\n {series.map((s) => (\n <Area\n key={s.key}\n yAxisId={axisOf(s.key)}\n type=\"monotone\"\n dataKey={s.key}\n name={s.key}\n stroke={strokeOf(s)}\n fill={strokeOf(s)}\n {...(stacked ? { stackId: `stack-${axisOf(s.key)}` } : {})}\n fillOpacity={stacked ? 0.7 : 0.12}\n strokeWidth={stacked ? 0 : 2}\n connectNulls\n isAnimationActive={false}\n />\n ))}\n </AreaChart>\n )}\n </ResponsiveContainer>\n );\n}\n\nfunction PanelMessage({ children }: { children: React.ReactNode }) {\n return (\n <div className=\"flex h-full items-center justify-center text-xs text-muted-foreground\">\n {children}\n </div>\n );\n}\n\nfunction PanelIcon({ icon }: { icon: string | StaticIconComponent }) {\n if (typeof icon === \"string\") {\n return <Icon name={icon} width={16} height={16} className=\"text-muted-foreground\" />;\n }\n return <Icon icon={icon} width={16} height={16} className=\"text-muted-foreground\" />;\n}\n"],"names":["_a"],"mappings":";;;;;;;;;;;;;AA4CA,MAAM,iBAAiB,OAAO,QAA6C;AACzE,QAAM,MAAM,MAAM,MAAM,GAAG;AAC3B,MAAI,CAAC,IAAI,GAAI,OAAM,IAAI,MAAM,2BAA2B,IAAI,MAAM,EAAE;AACpE,SAAO,IAAI,KAAA;AACb;AAEA,SAAS,YAAY,IAAoB;AACvC,QAAM,OAAO,IAAI,KAAK,EAAE;AACxB,MAAI,OAAO,MAAM,KAAK,QAAA,CAAS,EAAG,QAAO;AACzC,SAAO,KAAK,mBAAmB,IAAI,EAAE,MAAM,WAAW,QAAQ,WAAW;AAC3E;AAEO,SAAS,gBAAgB,OAA6B;;AAC3D,QAAM;AAAA,IACJ;AAAA,IACA;AAAA,IACA;AAAA,IACA,QAAQ;AAAA,IACR,YAAY;AAAA,IACZ,SAAS;AAAA,IACT,UAAU;AAAA,IACV,aAAa;AAAA,IACb;AAAA,IACA,UAAU;AAAA,IACV;AAAA,EAAA,IACE;AACJ,QAAM,cAAc,YAAY;AAGhC,QAAM,eAA6B,cAAc,SAAS;AAC1D,QAAM,gBAAgB,MAAM,iBAAiB;AAE7C,QAAM,CAAC,UAAU,WAAW,IAAI,SAAS,KAAK;AAE9C,QAAM,SAAS,QAAQ,MAAM,cAAc,KAAK,GAAG,CAAC,KAAK,CAAC;AAC1D,QAAM,cAAc;AAAA,IAClB,MACE,OAAO,IAAI,CAAC,MAAM;AAChB,YAAM,IAAI,IAAI,IAAI,EAAE,KAAK,OAAO,SAAS,MAAM;AAC/C,UAAI,MAAO,GAAE,aAAa,IAAI,SAAS,KAAK;AAC5C,aAAO,EAAE,WAAW,EAAE;AAAA,IACxB,CAAC;AAAA,IACH,CAAC,QAAQ,KAAK;AAAA,EAAA;AAGhB,QAAM,UAAU,WAAW;AAAA,IACzB,SAAS,YAAY,IAAI,CAAC,gBAAgB;AAAA,MACxC,UAAU,CAAC,cAAc,UAAU;AAAA,MACnC,SAAS,MAAM,QAAQ,UAAU;AAAA,MACjC,iBAAiB,YAAY,IAAI,YAAY;AAAA,MAC7C,WAAW;AAAA,MACX,OAAO;AAAA,IAAA,EACP;AAAA,EAAA,CACH;AAED,QAAM,UAAU,QAAQ,KAAK,CAAC,MAAM,EAAE,OAAO;AAC7C,QAAM,SAAQ,aAAQ,KAAK,CAAC,MAAM,EAAE,OAAO,MAA7B,mBAAgC;AAC9C,QAAM,YAAY,QAAQ,KAAK,CAAC,MAAM,EAAE,SAAS,KAAK,QAAQ,MAAM,CAAC,MAAM,CAAC,EAAE,IAAI;AAClF,QAAM,iBAAiB,QAAQ,IAAI,CAAC;;AAAM,YAAAA,MAAA,EAAE,SAAF,gBAAAA,IAAQ;AAAA,GAAM;AACxD,QAAM,OAAO,QAAQ,MAAM,YAAY,QAAQ,cAAc,GAAG,CAAC,QAAQ,cAAc,CAAC;AACxF,QAAM,cAAc,OAAO,KAAK,CAAC,MAAM,EAAE,SAAS;AAClD,QAAM,YAAY;AAAA,IAChB,MAAO,cAAc,iBAAiB,QAAQ,MAAM,KAAK,IAAI;AAAA,IAC7D,CAAC,aAAa,QAAQ,MAAM,KAAK;AAAA,EAAA;AAKnC,QAAM,YAAY,cAAc,KAAK,UAAU;AAE/C,8BACG,OAAA,EAAI,WAAW,GAAG,6DAA6D,SAAS,GACvF,UAAA;AAAA,IAAA,qBAAC,OAAA,EAAI,WAAU,yEACb,UAAA;AAAA,MAAA,qBAAC,QAAA,EAAK,WAAU,4CACb,UAAA;AAAA,QAAA,OAAO,oBAAC,WAAA,EAAU,KAAA,CAAY,IAAK;AAAA,QACpC,oBAAC,QAAA,EAAK,WAAU,wCAAwC,UAAA,MAAA,CAAM;AAAA,MAAA,GAChE;AAAA,MACA,qBAAC,QAAA,EAAK,WAAU,6CACb,UAAA;AAAA,QAAA,YACC,oBAAC,kBAAA,EAAiB,OAAO,UAAU,OAAO,MAAY,OAAO,UAAU,MAAA,CAAO,IAE9E,oBAAC,eAAA,EAAc,QAAgB,MAAY;AAAA,QAE5C,YACC;AAAA,UAAC;AAAA,UAAA;AAAA,YACC,MAAK;AAAA,YACL,cAAW;AAAA,YACX,SAAS,MAAM,YAAY,IAAI;AAAA,YAC/B,WAAU;AAAA,YAEV,8BAAC,MAAA,EAAK,MAAM,cAAc,OAAO,IAAI,QAAQ,GAAA,CAAI;AAAA,UAAA;AAAA,QAAA,IAEjD;AAAA,MAAA,EAAA,CACN;AAAA,IAAA,GACF;AAAA,IACA,oBAAC,SAAI,WAAU,QAAO,OAAO,YAAY,SAAY,EAAE,OAAA,GACpD,UAAA,gCACE,eAAA,EAAc,OAAO,UAAU,OAAO,MAAY,OAAO,UAAU,OAAO,IACzE,UACF,oBAAC,cAAA,EAAe,0CAAiB,YAAW,wBAAA,CAAwB,IAClE,YACF,oBAAC,gBAAa,UAAA,WAAA,CAAQ,IACpB,KAAK,SAAS,IAChB,oBAAC,gBAAa,UAAA,mBAAA,CAAgB,IAE9B,oBAAC,OAAA,EAAM,MAAY,QAAgB,SAAS,cAAc,MAAY,cAAc,YAAA,CAAa,EAAA,CAErG;AAAA,IACC,CAAC,aAAa,CAAC,WAAW,CAAC,aAAa,KAAK,UAAU,KAAK,OAAO,SAAS,IAC3E,oBAAC,aAAA,EAAY,QAAgB,MAAY,IACvC;AAAA,IACH,YACC,qBAAC,OAAA,EAAM,MAAM,UAAU,SAAS,MAAM,YAAY,KAAK,GAAG,OAAc,MAAK,MAC3E,UAAA;AAAA,MAAA,oBAAC,OAAA,EAAI,OAAO,EAAE,QAAQ,OACpB,UAAA,oBAAC,OAAA,EAAM,MAAY,QAAgB,SAAS,eAAe,MAAY,cAAc,aAAa,GACpG;AAAA,MACC,OAAO,SAAS,wBAAK,aAAA,EAAY,QAAgB,MAAY,IAAK;AAAA,IAAA,EAAA,CACrE,IACE;AAAA,EAAA,GACN;AAEJ;AAOA,SAAS,cAAc,EAAE,QAAQ,QAAyD;AACxF,QAAM,OAAO,OAAO,WAAW,IAAI,OAAO,CAAC,IAAI;AAC/C,MAAI,CAAC,KAAM,QAAO;AAClB,QAAM,IAAI,SAAS,MAAM,KAAK,GAAG;AACjC,MAAI,MAAM,OAAW,QAAO;AAC5B,SAAO,oBAAC,QAAA,EAAK,WAAU,gBAAgB,UAAA,WAAW,KAAK,IAAI,CAAC,GAAG,KAAK,IAAI,EAAA,CAAE;AAC5E;AAGA,SAAS,YAAY,EAAE,QAAQ,QAAyD;AACtF,6BACG,MAAA,EAAG,WAAU,uEACX,UAAA,OAAO,IAAI,CAAC,MAAM;AACjB,UAAM,IAAI,SAAS,MAAM,EAAE,GAAG;AAC9B,WACE,qBAAC,MAAA,EAAe,WAAU,4CACxB,UAAA;AAAA,MAAA;AAAA,QAAC;AAAA,QAAA;AAAA,UACC,WAAU;AAAA,UACV,OAAO,EAAE,iBAAiB,gBAAgB,EAAE,KAAK,EAAA;AAAA,UACjD,eAAW;AAAA,QAAA;AAAA,MAAA;AAAA,MAEb,oBAAC,QAAA,EAAK,WAAU,4BAA4B,YAAE,OAAM;AAAA,MACnD,MAAM,SACL,oBAAC,QAAA,EAAK,WAAU,gBAAgB,UAAA,WAAW,KAAK,IAAI,CAAC,GAAG,EAAE,IAAI,GAAE,IAC9D;AAAA,IAAA,EAAA,GATG,EAAE,GAUX;AAAA,EAEJ,CAAC,EAAA,CACH;AAEJ;AAGA,SAAS,iBAAiB;AAAA,EACxB;AAAA,EACA;AAAA,EACA;AACF,GAIG;AACD,QAAM,OAAO,MAAM,OAAO,CAAC,KAAK,OAAO,MAAM,GAAG,OAAO,CAAC;AACxD,QAAM,MAAM,QAAQ,IAAI,KAAK,IAAI,KAAM,OAAO,QAAS,GAAG,IAAI;AAC9D,SACE,qBAAC,QAAA,EAAK,WAAU,0BACb,UAAA;AAAA,IAAA,WAAW,MAAM,IAAI;AAAA,IAAE;AAAA,IAAI,WAAW,OAAO,IAAI;AAAA,IAAE;AAAA,IAAI,IAAI,QAAQ,CAAC;AAAA,IAAE;AAAA,EAAA,GACzE;AAEJ;AAGA,SAAS,cAAc;AAAA,EACrB;AAAA,EACA;AAAA,EACA;AACF,GAIG;AACD,QAAM,WAA8B,MAAM,IAAI,CAAC,QAAQ;AAAA,IACrD,OAAO,GAAG;AAAA,IACV,OAAO,GAAG;AAAA,IACV,OAAO,GAAG;AAAA,EAAA,EACV;AACF,SACE,qBAAC,OAAA,EAAI,WAAU,uBACb,UAAA;AAAA,IAAA,oBAAC,aAAA,EAAY,UAAoB,OAAO,QAAQ,IAAI,QAAQ,GAAG,QAAO,MAAA,CAAM;AAAA,IAC3E,MAAM,SAAS,IACd,oBAAC,QAAG,WAAU,oCACX,UAAA,MAAM,IAAI,CAAC,OACV,qBAAC,MAAA,EAAgB,WAAU,2BACzB,UAAA;AAAA,MAAA;AAAA,QAAC;AAAA,QAAA;AAAA,UACC,WAAU;AAAA,UACV,OAAO,EAAE,iBAAiB,gBAAgB,GAAG,KAAK,EAAA;AAAA,UAClD,eAAW;AAAA,QAAA;AAAA,MAAA;AAAA,MAEb,oBAAC,QAAA,EAAK,WAAU,2DACb,aAAG,OACN;AAAA,MACA,oBAAC,QAAA,EAAK,WAAU,0CACb,UAAA,WAAW,GAAG,OAAO,GAAG,QAAQ,IAAI,EAAA,CACvC;AAAA,MACA,qBAAC,QAAA,EAAK,WAAU,gEACb,UAAA;AAAA,QAAA,GAAG,QAAQ,QAAQ,CAAC;AAAA,QAAE;AAAA,MAAA,EAAA,CACzB;AAAA,IAAA,EAAA,GAdO,GAAG,GAeZ,CACD,EAAA,CACH,IACE;AAAA,EAAA,GACN;AAEJ;AAIA,SAAS,MAAM;AAAA,EACb;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,GAMG;AACD,QAAM,UAAU,YAAY;AAE5B,QAAM,cAAc,IAAI,IAAI,OAAO,IAAI,CAAC,MAAM,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC;AAEzD,QAAM,WAAW,CAAC,MAAsB,gBAAgB,EAAE,KAAK;AAG/D,QAAM,EAAE,MAAM,OAAO,cAAc,QAAQ,MAAM,WAAW,MAAM,GAAG,CAAC,MAAM,CAAC;AAC7E,QAAM,SAAS,CAAC,QAAkC,UAAU,IAAI,GAAG,KAAK;AACxE,QAAM,OACJ,qBAAA,UAAA,EACE,UAAA;AAAA,IAAA,oBAAC,eAAA,EAAc,eAAe,MAAM,UAAU,OAAO;AAAA,IACrD;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,SAAQ;AAAA,QACR,eAAe;AAAA,QACf,MAAM,EAAE,UAAU,GAAA;AAAA,QAClB,QAAO;AAAA,QACP,eAAe;AAAA,QACf,YAAY;AAAA,MAAA;AAAA,IAAA;AAAA,IAEb,MAAM,IAAI,CAAC,OACV;AAAA,MAAC;AAAA,MAAA;AAAA,QAEC,SAAS,GAAG;AAAA,QACZ,aAAa,GAAG;AAAA,QAChB,MAAM,EAAE,UAAU,GAAA;AAAA,QAClB,QAAO;AAAA,QACP,eAAe;AAAA,QACf,OAAO;AAAA,QACP,eAAe,CAAC,MAAc,WAAW,KAAK,IAAI,CAAC,GAAG,GAAG,IAAI;AAAA,MAAA;AAAA,MAPxD,GAAG;AAAA,IAAA,CASX;AAAA,IACD;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,gBAAgB,CAAC,UAAU,YAAY,OAAO,KAAK,CAAC;AAAA,QACpD,WAAW,CAAC,OAAO,SAAS;AAC1B,gBAAM,IAAI,YAAY,IAAI,OAAO,IAAI,CAAC;AACtC,iBAAO,CAAC,WAAW,KAAK,IAAI,OAAO,KAAK,KAAK,CAAC,IAAG,uBAAG,SAAQ,IAAI,IAAG,uBAAG,UAAS,OAAO,IAAI,CAAC;AAAA,QAC7F;AAAA,QACA,cAAc,EAAE,UAAU,GAAA;AAAA,MAAG;AAAA,IAAA;AAAA,IAE9B,eACC,oBAAC,eAAA,EAAc,SAAQ,QAAO,GAAG,GAAG,QAAO,gBAAe,eAAe,KAAA,CAAM,IAC7E;AAAA,EAAA,GACN;AAGF,SACE,oBAAC,uBAAoB,OAAM,QAAO,QAAO,QACtC,UAAA,YAAY,SACX,qBAAC,WAAA,EAAU,MAAM,MAAM,QAAQ,EAAE,KAAK,GAAG,OAAO,GAAG,QAAQ,GAAG,MAAM,EAAA,GACjE,UAAA;AAAA,IAAA;AAAA,IACA,OAAO,IAAI,CAAC,MACX;AAAA,MAAC;AAAA,MAAA;AAAA,QAEC,SAAS,OAAO,EAAE,GAAG;AAAA,QACrB,MAAK;AAAA,QACL,SAAS,EAAE;AAAA,QACX,MAAM,EAAE;AAAA,QACR,QAAQ,SAAS,CAAC;AAAA,QAClB,aAAa;AAAA,QACb,KAAK;AAAA,QACL,cAAY;AAAA,QACZ,mBAAmB;AAAA,MAAA;AAAA,MATd,EAAE;AAAA,IAAA,CAWV;AAAA,EAAA,EAAA,CACH,IAEA,qBAAC,WAAA,EAAU,MAAM,MAAM,QAAQ,EAAE,KAAK,GAAG,OAAO,GAAG,QAAQ,GAAG,MAAM,KACjE,UAAA;AAAA,IAAA;AAAA,IACA,OAAO,IAAI,CAAC,MACX;AAAA,MAAC;AAAA,MAAA;AAAA,QAEC,SAAS,OAAO,EAAE,GAAG;AAAA,QACrB,MAAK;AAAA,QACL,SAAS,EAAE;AAAA,QACX,MAAM,EAAE;AAAA,QACR,QAAQ,SAAS,CAAC;AAAA,QAClB,MAAM,SAAS,CAAC;AAAA,QACf,GAAI,UAAU,EAAE,SAAS,SAAS,OAAO,EAAE,GAAG,CAAC,GAAA,IAAO,CAAA;AAAA,QACvD,aAAa,UAAU,MAAM;AAAA,QAC7B,aAAa,UAAU,IAAI;AAAA,QAC3B,cAAY;AAAA,QACZ,mBAAmB;AAAA,MAAA;AAAA,MAXd,EAAE;AAAA,IAAA,CAaV;AAAA,EAAA,EAAA,CACH,EAAA,CAEJ;AAEJ;AAEA,SAAS,aAAa,EAAE,YAA2C;AACjE,SACE,oBAAC,OAAA,EAAI,WAAU,yEACZ,SAAA,CACH;AAEJ;AAEA,SAAS,UAAU,EAAE,QAAgD;AACnE,MAAI,OAAO,SAAS,UAAU;AAC5B,WAAO,oBAAC,QAAK,MAAM,MAAM,OAAO,IAAI,QAAQ,IAAI,WAAU,wBAAA,CAAwB;AAAA,EACpF;AACA,SAAO,oBAAC,QAAK,MAAY,OAAO,IAAI,QAAQ,IAAI,WAAU,yBAAwB;AACpF;"}
1
+ {"version":3,"file":"TimeseriesPanel.js","sources":["../../src/data/TimeseriesPanel.tsx"],"sourcesContent":["import { useMemo, useState } from \"react\";\nimport {\n Area,\n AreaChart,\n CartesianGrid,\n Line,\n LineChart,\n ReferenceLine,\n ResponsiveContainer,\n Tooltip,\n XAxis,\n YAxis,\n} from \"recharts\";\nimport { cn } from \"../lib/utils\";\nimport { resolveCssColor } from \"../lib/color\";\nimport { formatUnit } from \"../lib/format\";\nimport { Modal } from \"../overlay/Modal\";\nimport { ProgressBar, type ProgressSegment } from \"./ProgressBar\";\nimport { UiFullscreen } from \"../icons\";\nimport { Icon, type StaticIconComponent } from \"./Icon\";\nimport { assignAxes, latestOf } from \"./TimeseriesPanel.axes\";\nimport {\n mergeSeries,\n resolveBreakdown,\n resolveSeries,\n type BreakdownItem,\n type MergedRow,\n type ResolvedSeries,\n type TimeseriesPanelProps,\n type TimeseriesReferenceLine,\n} from \"./TimeseriesPanel.model\";\nimport { defaultTimeseriesFetcher, useTimeseriesQueries } from \"./timeseries-query\";\n\nexport type { AxisAssignment, AxisOrientation, AxisSpec } from \"./TimeseriesPanel.axes\";\nexport type {\n BreakdownItem,\n MergedRow,\n ResolvedSeries,\n SeriesLoadContext,\n SeriesLoader,\n TimeseriesPanelProps,\n TimeseriesPoint,\n TimeseriesReferenceLine,\n TimeseriesResponse,\n TimeseriesSeries,\n} from \"./TimeseriesPanel.model\";\n\nfunction formatClock(at: string): string {\n const date = new Date(at);\n if (Number.isNaN(date.getTime())) return \"\";\n return date.toLocaleTimeString([], { hour: \"2-digit\", minute: \"2-digit\" });\n}\n\nexport function TimeseriesPanel(props: TimeseriesPanelProps) {\n const {\n title,\n icon,\n unit,\n range = \"1h\",\n refreshMs = 5000,\n height = 160,\n variant = \"area\",\n expandable = true,\n total,\n referenceLines,\n fetcher = defaultTimeseriesFetcher,\n className,\n } = props;\n const isBreakdown = variant === \"breakdown\";\n // The inline chart (non-breakdown only) and the expand modal both need a\n // time-series variant; breakdown has no inline chart and expands to \"area\".\n const chartVariant: ChartVariant = isBreakdown ? \"area\" : variant;\n const expandVariant = props.expandVariant ?? chartVariant;\n\n const [expanded, setExpanded] = useState(false);\n\n const series = useMemo(() => resolveSeries(props), [props]);\n const results = useTimeseriesQueries(\n series.map((s) => ({ id: s.key, load: s.load })),\n { baseUrl: props.baseUrl ?? \"\", range, refreshMs, fetcher },\n );\n const refs = referenceLines ?? [];\n\n const isError = results.some((r) => r.isError);\n const error = results.find((r) => r.isError)?.error;\n const isLoading = results.some((r) => r.isLoading) && results.every((r) => !r.data);\n const pointsBySeries = results.map((r) => r.data?.points);\n const rows = useMemo(() => mergeSeries(series, pointsBySeries), [series, pointsBySeries]);\n const hasMirrored = series.some((s) => s.transform);\n const breakdown = useMemo(\n () => (isBreakdown ? resolveBreakdown(series, rows, total) : null),\n [isBreakdown, series, rows, total],\n );\n\n // Breakdown renders instantly from `current`; the modal still needs polled\n // history. Other variants gate on having ≥2 points to draw a line.\n const canExpand = expandable && rows.length >= 2;\n\n return (\n <div className={cn(\"flex flex-col rounded-lg border border-border bg-card p-3\", className)}>\n <div className=\"flex items-center justify-between gap-2 text-xs text-muted-foreground\">\n <span className=\"inline-flex min-w-0 items-center gap-1.5\">\n {icon ? <PanelIcon icon={icon} /> : null}\n <span className=\"truncate font-medium text-foreground\">{title}</span>\n </span>\n <span className=\"inline-flex shrink-0 items-center gap-1.5\">\n {breakdown ? (\n <BreakdownReadout total={breakdown.total} unit={unit} items={breakdown.items} />\n ) : (\n <LatestReadout series={series} rows={rows} />\n )}\n {canExpand ? (\n <button\n type=\"button\"\n aria-label=\"Expand chart\"\n onClick={() => setExpanded(true)}\n className=\"text-muted-foreground transition-colors hover:text-foreground\"\n >\n <Icon icon={UiFullscreen} width={14} height={14} />\n </button>\n ) : null}\n </span>\n </div>\n <div className=\"mt-2\" style={breakdown ? undefined : { height }}>\n {breakdown ? (\n <BreakdownView total={breakdown.total} unit={unit} items={breakdown.items} />\n ) : isError ? (\n <PanelMessage>{(error as Error)?.message ?? \"Failed to load metric\"}</PanelMessage>\n ) : isLoading ? (\n <PanelMessage>Loading…</PanelMessage>\n ) : rows.length < 2 ? (\n <PanelMessage>Collecting data…</PanelMessage>\n ) : (\n <Chart\n rows={rows}\n series={series}\n variant={chartVariant}\n unit={unit}\n showZeroLine={hasMirrored}\n referenceLines={refs}\n />\n )}\n </div>\n {!breakdown && !isError && !isLoading && rows.length >= 2 && series.length + refs.length > 1 ? (\n <ChartLegend series={series} rows={rows} referenceLines={refs} unit={unit} />\n ) : null}\n {canExpand ? (\n <Modal open={expanded} onClose={() => setExpanded(false)} title={title} size=\"xl\">\n <div style={{ height: 360 }}>\n <Chart\n rows={rows}\n series={series}\n variant={expandVariant}\n unit={unit}\n showZeroLine={hasMirrored}\n referenceLines={refs}\n />\n </div>\n {series.length + refs.length > 1 ? (\n <ChartLegend series={series} rows={rows} referenceLines={refs} unit={unit} />\n ) : null}\n </Modal>\n ) : null}\n </div>\n );\n}\n\n/**\n * Header readout for a single-series panel: the latest value, formatted with the\n * series' unit. Multi-series panels render the per-series values in {@link ChartLegend}\n * below the chart instead, so this returns null for them to avoid overlapping the title.\n */\nfunction LatestReadout({ series, rows }: { series: ResolvedSeries[]; rows: MergedRow[] }) {\n const only = series.length === 1 ? series[0] : undefined;\n if (!only) return null;\n const v = latestOf(rows, only.key);\n if (v === undefined) return null;\n return <span className=\"tabular-nums\">{formatUnit(Math.abs(v), only.unit)}</span>;\n}\n\nconst REFERENCE_LINE_COLOR = \"var(--muted-foreground, #64748b)\";\n\nfunction referenceColor(ref: TimeseriesReferenceLine): string {\n return resolveCssColor(ref.color ?? REFERENCE_LINE_COLOR);\n}\n\n/**\n * Wrapping color-keyed legend for the time-series variants: dot + label + latest\n * value, then each reference line with its fixed value.\n */\nfunction ChartLegend({\n series,\n rows,\n referenceLines,\n unit,\n}: {\n series: ResolvedSeries[];\n rows: MergedRow[];\n referenceLines: TimeseriesReferenceLine[];\n unit: string | undefined;\n}) {\n return (\n <ul className=\"mt-1.5 flex flex-wrap gap-x-3 gap-y-1 text-xs text-muted-foreground\">\n {series.map((s) => {\n const v = latestOf(rows, s.key);\n return (\n <li key={s.key} className=\"inline-flex min-w-0 items-center gap-1.5\">\n <span\n className=\"h-2 w-2 shrink-0 rounded-full\"\n style={{ backgroundColor: resolveCssColor(s.color) }}\n aria-hidden\n />\n <span className=\"truncate text-foreground\">{s.label}</span>\n {v !== undefined ? (\n <span className=\"tabular-nums\">{formatUnit(Math.abs(v), s.unit)}</span>\n ) : null}\n </li>\n );\n })}\n {referenceLines.map((ref, i) => (\n <li key={`ref-${i}`} className=\"inline-flex min-w-0 items-center gap-1.5\">\n <span\n className=\"h-0.5 w-2.5 shrink-0\"\n style={{ backgroundColor: referenceColor(ref) }}\n aria-hidden\n />\n <span className=\"truncate text-foreground\">{ref.label}</span>\n <span className=\"tabular-nums\">{formatUnit(ref.value, ref.unit ?? unit)}</span>\n </li>\n ))}\n </ul>\n );\n}\n\n/** Breakdown header readout: `used / total · pct%`, where used is the sum of segments. */\nfunction BreakdownReadout({\n total,\n unit,\n items,\n}: {\n total: number;\n unit: string | undefined;\n items: BreakdownItem[];\n}) {\n const used = items.reduce((acc, it) => acc + it.value, 0);\n const pct = total > 0 ? Math.min(100, (used / total) * 100) : 0;\n return (\n <span className=\"font-mono tabular-nums\">\n {formatUnit(used, unit)} / {formatUnit(total, unit)} · {pct.toFixed(0)}%\n </span>\n );\n}\n\n/** Instantaneous stacked bar + legend list. The expand button (in the panel header) opens the graph. */\nfunction BreakdownView({\n total,\n unit,\n items,\n}: {\n total: number;\n unit: string | undefined;\n items: BreakdownItem[];\n}) {\n const segments: ProgressSegment[] = items.map((it) => ({\n count: it.value,\n color: it.color,\n label: it.label,\n }));\n return (\n <div className=\"flex flex-col gap-2\">\n <ProgressBar segments={segments} total={total > 0 ? total : 1} height=\"h-3\" />\n {items.length > 0 ? (\n <ul className=\"grid grid-cols-1 gap-y-1 text-xs\">\n {items.map((it) => (\n <li key={it.key} className=\"flex items-center gap-2\">\n <span\n className=\"h-2 w-2 shrink-0 rounded-full\"\n style={{ backgroundColor: resolveCssColor(it.color) }}\n aria-hidden\n />\n <span className=\"min-w-0 flex-1 truncate font-mono text-muted-foreground\">\n {it.label}\n </span>\n <span className=\"font-mono tabular-nums text-foreground\">\n {formatUnit(it.value, it.unit ?? unit)}\n </span>\n <span className=\"w-10 text-right font-mono tabular-nums text-muted-foreground\">\n {it.percent.toFixed(0)}%\n </span>\n </li>\n ))}\n </ul>\n ) : null}\n </div>\n );\n}\n\ntype ChartVariant = \"area\" | \"line\" | \"stacked\";\n\nfunction Chart({\n rows,\n series,\n variant,\n unit,\n showZeroLine,\n referenceLines,\n}: {\n rows: MergedRow[];\n series: ResolvedSeries[];\n variant: ChartVariant;\n unit: string | undefined;\n showZeroLine: boolean;\n referenceLines: TimeseriesReferenceLine[];\n}) {\n const stacked = variant === \"stacked\";\n // Mirrored series carry negative values; show magnitudes on axis and tooltip.\n const seriesByKey = new Map(series.map((s) => [s.key, s]));\n // recharts needs a CSS color value; a series may carry a Tailwind class.\n const strokeOf = (s: ResolvedSeries) => resolveCssColor(s.color);\n // Distinct units map to a left and (when present) right axis; each series draws\n // against the axis for its unit so mixed-unit panels keep independent scales.\n const { axes: yAxes, axisOfKey } = useMemo(() => assignAxes(series), [series]);\n const axisOf = (key: string): \"left\" | \"right\" => axisOfKey.get(key) ?? \"left\";\n // A reference line draws against the axis formatting its unit, else the left.\n const axisOfUnit = (u: string | undefined): \"left\" | \"right\" =>\n yAxes.find((ax) => ax.unit === u)?.id ?? \"left\";\n const axes = (\n <>\n <CartesianGrid strokeOpacity={0.12} vertical={false} />\n <XAxis\n dataKey=\"at\"\n tickFormatter={formatClock}\n tick={{ fontSize: 10 }}\n stroke=\"currentColor\"\n strokeOpacity={0.35}\n minTickGap={32}\n />\n {yAxes.map((ax) => (\n <YAxis\n key={ax.id}\n yAxisId={ax.id}\n orientation={ax.orientation}\n tick={{ fontSize: 10 }}\n stroke=\"currentColor\"\n strokeOpacity={0.35}\n width={40}\n tickFormatter={(v: number) => formatUnit(Math.abs(v), ax.unit)}\n />\n ))}\n <Tooltip\n labelFormatter={(label) => formatClock(String(label))}\n formatter={(value, name) => {\n const s = seriesByKey.get(String(name));\n return [formatUnit(Math.abs(Number(value) || 0), s?.unit ?? unit), s?.label ?? String(name)];\n }}\n contentStyle={{ fontSize: 12 }}\n />\n {showZeroLine ? (\n <ReferenceLine yAxisId=\"left\" y={0} stroke=\"currentColor\" strokeOpacity={0.35} />\n ) : null}\n {referenceLines.map((ref, i) => (\n <ReferenceLine\n key={`ref-${i}`}\n yAxisId={axisOfUnit(ref.unit ?? unit)}\n y={ref.value}\n stroke={referenceColor(ref)}\n strokeDasharray=\"4 4\"\n ifOverflow=\"extendDomain\"\n />\n ))}\n </>\n );\n\n return (\n <ResponsiveContainer width=\"100%\" height=\"100%\">\n {variant === \"line\" ? (\n <LineChart data={rows} margin={{ top: 4, right: 8, bottom: 0, left: 0 }}>\n {axes}\n {series.map((s) => (\n <Line\n key={s.key}\n yAxisId={axisOf(s.key)}\n type=\"monotone\"\n dataKey={s.key}\n name={s.key}\n stroke={strokeOf(s)}\n strokeWidth={2}\n dot={false}\n connectNulls\n isAnimationActive={false}\n />\n ))}\n </LineChart>\n ) : (\n <AreaChart data={rows} margin={{ top: 4, right: 8, bottom: 0, left: 0 }}>\n {axes}\n {series.map((s) => (\n <Area\n key={s.key}\n yAxisId={axisOf(s.key)}\n type=\"monotone\"\n dataKey={s.key}\n name={s.key}\n stroke={strokeOf(s)}\n fill={strokeOf(s)}\n {...(stacked ? { stackId: `stack-${axisOf(s.key)}` } : {})}\n fillOpacity={stacked ? 0.7 : 0.12}\n strokeWidth={stacked ? 0 : 2}\n connectNulls\n isAnimationActive={false}\n />\n ))}\n </AreaChart>\n )}\n </ResponsiveContainer>\n );\n}\n\nfunction PanelMessage({ children }: { children: React.ReactNode }) {\n return (\n <div className=\"flex h-full items-center justify-center text-xs text-muted-foreground\">\n {children}\n </div>\n );\n}\n\nfunction PanelIcon({ icon }: { icon: string | StaticIconComponent }) {\n if (typeof icon === \"string\") {\n return <Icon name={icon} width={16} height={16} className=\"text-muted-foreground\" />;\n }\n return <Icon icon={icon} width={16} height={16} className=\"text-muted-foreground\" />;\n}\n"],"names":["_a"],"mappings":"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"}
@@ -20,6 +20,7 @@ function resolveSeries(props) {
20
20
  color: s.color ?? paletteColor(i),
21
21
  ...s.unit ?? props.unit ? { unit: s.unit ?? props.unit } : {},
22
22
  ...s.transform ? { transform: s.transform } : {},
23
+ ...s.load ? { load: s.load } : {},
23
24
  ...s.current !== void 0 ? { current: s.current } : {}
24
25
  }));
25
26
  }
@@ -1 +1 @@
1
- {"version":3,"file":"TimeseriesPanel.model.cjs","sources":["../../src/data/TimeseriesPanel.model.ts"],"sourcesContent":["import type { StaticIconComponent } from \"./Icon\";\nimport { latestOf } from \"./TimeseriesPanel.axes\";\n\nexport interface TimeseriesPoint {\n at: string;\n value: number;\n}\n\nexport interface TimeseriesResponse {\n id: string;\n points: TimeseriesPoint[];\n}\n\n/** One metric plotted on a panel. Its request URL is `baseUrl + id`. */\nexport interface TimeseriesSeries {\n /** Metric id appended to the panel's baseUrl, e.g. \"sqlserver.iops.read\". */\n id: string;\n /** Tooltip/legend label; defaults to the id. */\n label?: string;\n /**\n * Maps each point's value before plotting, e.g. writes pass `(v) => -v` to\n * render below the zero axis. Identity when omitted.\n */\n transform?: (value: number) => number;\n /**\n * Stroke/fill override as a CSS color value or a Tailwind color class.\n * Defaults cycle a small palette by index.\n */\n color?: string;\n /**\n * Grafana-style unit key for this series' readout/tooltip. Falls back to the\n * panel-level `unit`.\n */\n unit?: string;\n /**\n * Instantaneous value for the `breakdown` variant. When omitted, the\n * breakdown falls back to the latest polled point.\n */\n current?: number;\n}\n\nexport interface TimeseriesPanelProps {\n url?: string;\n baseUrl?: string;\n series?: TimeseriesSeries[];\n title: string;\n icon?: string | StaticIconComponent;\n unit?: string;\n range?: string;\n refreshMs?: number;\n height?: number;\n variant?: \"area\" | \"line\" | \"stacked\" | \"breakdown\";\n expandVariant?: \"area\" | \"line\" | \"stacked\";\n total?: number;\n expandable?: boolean;\n fetcher?: (url: string) => Promise<TimeseriesResponse>;\n className?: string;\n}\n\nconst SERIES_PALETTE = [\n \"var(--chart-1, #3b82f6)\",\n \"var(--chart-2, #ef4444)\",\n \"var(--chart-3, #10b981)\",\n \"var(--chart-4, #f59e0b)\",\n] as const;\n\nfunction paletteColor(index: number): string {\n return SERIES_PALETTE[index % SERIES_PALETTE.length] ?? SERIES_PALETTE[0];\n}\n\n/** A series with its full request URL, resolved label, color, and unit. */\nexport interface ResolvedSeries {\n key: string;\n url: string;\n label: string;\n color: string;\n unit?: string;\n transform?: (value: number) => number;\n current?: number;\n}\n\n/** Normalises the single-url and baseUrl+series forms to one list. */\nexport function resolveSeries(props: TimeseriesPanelProps): ResolvedSeries[] {\n const base = props.baseUrl ?? \"\";\n const list = props.series ?? (props.url ? [{ id: props.url }] : []);\n return list.map((s, i) => ({\n key: s.id,\n url: base + s.id,\n label: s.label ?? s.id,\n color: s.color ?? paletteColor(i),\n ...(s.unit ?? props.unit ? { unit: s.unit ?? props.unit } : {}),\n ...(s.transform ? { transform: s.transform } : {}),\n ...(s.current !== undefined ? { current: s.current } : {}),\n }));\n}\n\n/** One legend/bar row of the breakdown variant. */\nexport interface BreakdownItem {\n key: string;\n label: string;\n color: string;\n unit?: string;\n value: number;\n percent: number;\n}\n\n/**\n * One row of the merged chart data: the timestamp in `at` plus each series'\n * value under its key.\n */\nexport interface MergedRow {\n at: string;\n [seriesKey: string]: string | number | undefined;\n}\n\nexport function resolveBreakdown(\n series: ResolvedSeries[],\n rows: MergedRow[],\n total?: number,\n): { items: BreakdownItem[]; total: number } {\n const withValue = series.map((s) => ({ s, value: s.current ?? latestOf(rows, s.key) ?? 0 }));\n const denom = total ?? withValue.reduce((acc, w) => acc + w.value, 0);\n const items = withValue.map(({ s, value }) => ({\n key: s.key,\n label: s.label,\n color: s.color,\n ...(s.unit ? { unit: s.unit } : {}),\n value,\n percent: denom > 0 ? Math.min(100, Math.max(0, (value / denom) * 100)) : 0,\n }));\n return { items, total: denom };\n}\n\nexport function mergeSeries(\n series: ResolvedSeries[],\n pointsBySeries: (TimeseriesPoint[] | undefined)[],\n): MergedRow[] {\n const rows = new Map<string, MergedRow>();\n series.forEach((s, i) => {\n for (const p of pointsBySeries[i] ?? []) {\n const row = rows.get(p.at) ?? { at: p.at };\n row[s.key] = s.transform ? s.transform(p.value) : p.value;\n rows.set(p.at, row);\n }\n });\n return [...rows.values()].sort((a, b) => a.at.localeCompare(b.at));\n}\n"],"names":["latestOf"],"mappings":";;;AA2DA,MAAM,iBAAiB;AAAA,EACrB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AAEA,SAAS,aAAa,OAAuB;AAC3C,SAAO,eAAe,QAAQ,eAAe,MAAM,KAAK,eAAe,CAAC;AAC1E;AAcO,SAAS,cAAc,OAA+C;AAC3E,QAAM,OAAO,MAAM,WAAW;AAC9B,QAAM,OAAO,MAAM,WAAW,MAAM,MAAM,CAAC,EAAE,IAAI,MAAM,IAAA,CAAK,IAAI,CAAA;AAChE,SAAO,KAAK,IAAI,CAAC,GAAG,OAAO;AAAA,IACzB,KAAK,EAAE;AAAA,IACP,KAAK,OAAO,EAAE;AAAA,IACd,OAAO,EAAE,SAAS,EAAE;AAAA,IACpB,OAAO,EAAE,SAAS,aAAa,CAAC;AAAA,IAChC,GAAI,EAAE,QAAQ,MAAM,OAAO,EAAE,MAAM,EAAE,QAAQ,MAAM,KAAA,IAAS,CAAA;AAAA,IAC5D,GAAI,EAAE,YAAY,EAAE,WAAW,EAAE,UAAA,IAAc,CAAA;AAAA,IAC/C,GAAI,EAAE,YAAY,SAAY,EAAE,SAAS,EAAE,YAAY,CAAA;AAAA,EAAC,EACxD;AACJ;AAqBO,SAAS,iBACd,QACA,MACA,OAC2C;AAC3C,QAAM,YAAY,OAAO,IAAI,CAAC,OAAO,EAAE,GAAG,OAAO,EAAE,WAAWA,qBAAAA,SAAS,MAAM,EAAE,GAAG,KAAK,IAAI;AAC3F,QAAM,QAAQ,SAAS,UAAU,OAAO,CAAC,KAAK,MAAM,MAAM,EAAE,OAAO,CAAC;AACpE,QAAM,QAAQ,UAAU,IAAI,CAAC,EAAE,GAAG,aAAa;AAAA,IAC7C,KAAK,EAAE;AAAA,IACP,OAAO,EAAE;AAAA,IACT,OAAO,EAAE;AAAA,IACT,GAAI,EAAE,OAAO,EAAE,MAAM,EAAE,KAAA,IAAS,CAAA;AAAA,IAChC;AAAA,IACA,SAAS,QAAQ,IAAI,KAAK,IAAI,KAAK,KAAK,IAAI,GAAI,QAAQ,QAAS,GAAG,CAAC,IAAI;AAAA,EAAA,EACzE;AACF,SAAO,EAAE,OAAO,OAAO,MAAA;AACzB;AAEO,SAAS,YACd,QACA,gBACa;AACb,QAAM,2BAAW,IAAA;AACjB,SAAO,QAAQ,CAAC,GAAG,MAAM;AACvB,eAAW,KAAK,eAAe,CAAC,KAAK,CAAA,GAAI;AACvC,YAAM,MAAM,KAAK,IAAI,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,GAAA;AACtC,UAAI,EAAE,GAAG,IAAI,EAAE,YAAY,EAAE,UAAU,EAAE,KAAK,IAAI,EAAE;AACpD,WAAK,IAAI,EAAE,IAAI,GAAG;AAAA,IACpB;AAAA,EACF,CAAC;AACD,SAAO,CAAC,GAAG,KAAK,OAAA,CAAQ,EAAE,KAAK,CAAC,GAAG,MAAM,EAAE,GAAG,cAAc,EAAE,EAAE,CAAC;AACnE;;;;"}
1
+ {"version":3,"file":"TimeseriesPanel.model.cjs","sources":["../../src/data/TimeseriesPanel.model.ts"],"sourcesContent":["import type { StaticIconComponent } from \"./Icon\";\nimport { latestOf } from \"./TimeseriesPanel.axes\";\n\nexport interface TimeseriesPoint {\n at: string;\n value: number;\n}\n\nexport interface TimeseriesResponse {\n id: string;\n points: TimeseriesPoint[];\n}\n\n/** What a {@link SeriesLoader} receives from the widget polling it. */\nexport interface SeriesLoadContext {\n /** The widget's look-back window, e.g. \"1h\". */\n range: string;\n /** Aborted when the query is cancelled, e.g. the widget unmounts mid-request. */\n signal: AbortSignal;\n}\n\n/**\n * Loads a series directly, instead of the widget requesting `baseUrl + id`\n * through its `fetcher`. Called again whenever the range changes and on every\n * poll.\n */\nexport type SeriesLoader = (ctx: SeriesLoadContext) => Promise<TimeseriesResponse>;\n\n/**\n * One metric plotted on a panel. Its request URL is `baseUrl + id`, unless a\n * `load` function supplies the data.\n */\nexport interface TimeseriesSeries {\n /**\n * Metric id appended to the panel's baseUrl, e.g. \"sqlserver.iops.read\".\n * With `load`, the id is the series' cache identity instead: loaded series\n * are cached under `[\"timeseries\", \"load\", id, range]`, so it must be unique\n * per data source (two series sharing an id share one cached response).\n */\n id: string;\n /** Loads the series' points; when set, `baseUrl` and `fetcher` are not used. */\n load?: SeriesLoader;\n /** Tooltip/legend label; defaults to the id. */\n label?: string;\n /**\n * Maps each point's value before plotting, e.g. writes pass `(v) => -v` to\n * render below the zero axis. Identity when omitted.\n */\n transform?: (value: number) => number;\n /**\n * Stroke/fill override as a CSS color value or a Tailwind color class.\n * Defaults cycle a small palette by index.\n */\n color?: string;\n /**\n * Grafana-style unit key for this series' readout/tooltip. Falls back to the\n * panel-level `unit`.\n */\n unit?: string;\n /**\n * Instantaneous value for the `breakdown` variant. When omitted, the\n * breakdown falls back to the latest polled point.\n */\n current?: number;\n}\n\n/** A horizontal marker line at a fixed value, e.g. a static capacity. */\nexport interface TimeseriesReferenceLine {\n value: number;\n /** Legend label, e.g. \"capacity\". */\n label: string;\n /** CSS color value or Tailwind color class; defaults to the muted foreground. */\n color?: string;\n /** Grafana-style unit key for the legend value; falls back to the panel `unit`. */\n unit?: string;\n}\n\nexport interface TimeseriesPanelProps {\n url?: string;\n baseUrl?: string;\n series?: TimeseriesSeries[];\n title: string;\n icon?: string | StaticIconComponent;\n unit?: string;\n range?: string;\n refreshMs?: number;\n height?: number;\n variant?: \"area\" | \"line\" | \"stacked\" | \"breakdown\";\n expandVariant?: \"area\" | \"line\" | \"stacked\";\n total?: number;\n /** Flat lines drawn across the time-series chart, e.g. a fixed capacity. */\n referenceLines?: TimeseriesReferenceLine[];\n expandable?: boolean;\n fetcher?: (url: string) => Promise<TimeseriesResponse>;\n className?: string;\n}\n\nconst SERIES_PALETTE = [\n \"var(--chart-1, #3b82f6)\",\n \"var(--chart-2, #ef4444)\",\n \"var(--chart-3, #10b981)\",\n \"var(--chart-4, #f59e0b)\",\n] as const;\n\nfunction paletteColor(index: number): string {\n return SERIES_PALETTE[index % SERIES_PALETTE.length] ?? SERIES_PALETTE[0];\n}\n\n/** A series with its full request URL, resolved label, color, and unit. */\nexport interface ResolvedSeries {\n key: string;\n url: string;\n label: string;\n color: string;\n unit?: string;\n transform?: (value: number) => number;\n load?: SeriesLoader;\n current?: number;\n}\n\n/** Normalises the single-url and baseUrl+series forms to one list. */\nexport function resolveSeries(props: TimeseriesPanelProps): ResolvedSeries[] {\n const base = props.baseUrl ?? \"\";\n const list = props.series ?? (props.url ? [{ id: props.url }] : []);\n return list.map((s, i) => ({\n key: s.id,\n url: base + s.id,\n label: s.label ?? s.id,\n color: s.color ?? paletteColor(i),\n ...(s.unit ?? props.unit ? { unit: s.unit ?? props.unit } : {}),\n ...(s.transform ? { transform: s.transform } : {}),\n ...(s.load ? { load: s.load } : {}),\n ...(s.current !== undefined ? { current: s.current } : {}),\n }));\n}\n\n/** One legend/bar row of the breakdown variant. */\nexport interface BreakdownItem {\n key: string;\n label: string;\n color: string;\n unit?: string;\n value: number;\n percent: number;\n}\n\n/**\n * One row of the merged chart data: the timestamp in `at` plus each series'\n * value under its key.\n */\nexport interface MergedRow {\n at: string;\n [seriesKey: string]: string | number | undefined;\n}\n\nexport function resolveBreakdown(\n series: ResolvedSeries[],\n rows: MergedRow[],\n total?: number,\n): { items: BreakdownItem[]; total: number } {\n const withValue = series.map((s) => ({ s, value: s.current ?? latestOf(rows, s.key) ?? 0 }));\n const denom = total ?? withValue.reduce((acc, w) => acc + w.value, 0);\n const items = withValue.map(({ s, value }) => ({\n key: s.key,\n label: s.label,\n color: s.color,\n ...(s.unit ? { unit: s.unit } : {}),\n value,\n percent: denom > 0 ? Math.min(100, Math.max(0, (value / denom) * 100)) : 0,\n }));\n return { items, total: denom };\n}\n\nexport function mergeSeries(\n series: ResolvedSeries[],\n pointsBySeries: (TimeseriesPoint[] | undefined)[],\n): MergedRow[] {\n const rows = new Map<string, MergedRow>();\n series.forEach((s, i) => {\n for (const p of pointsBySeries[i] ?? []) {\n const row = rows.get(p.at) ?? { at: p.at };\n row[s.key] = s.transform ? s.transform(p.value) : p.value;\n rows.set(p.at, row);\n }\n });\n return [...rows.values()].sort((a, b) => a.at.localeCompare(b.at));\n}\n"],"names":["latestOf"],"mappings":";;;AAiGA,MAAM,iBAAiB;AAAA,EACrB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AAEA,SAAS,aAAa,OAAuB;AAC3C,SAAO,eAAe,QAAQ,eAAe,MAAM,KAAK,eAAe,CAAC;AAC1E;AAeO,SAAS,cAAc,OAA+C;AAC3E,QAAM,OAAO,MAAM,WAAW;AAC9B,QAAM,OAAO,MAAM,WAAW,MAAM,MAAM,CAAC,EAAE,IAAI,MAAM,IAAA,CAAK,IAAI,CAAA;AAChE,SAAO,KAAK,IAAI,CAAC,GAAG,OAAO;AAAA,IACzB,KAAK,EAAE;AAAA,IACP,KAAK,OAAO,EAAE;AAAA,IACd,OAAO,EAAE,SAAS,EAAE;AAAA,IACpB,OAAO,EAAE,SAAS,aAAa,CAAC;AAAA,IAChC,GAAI,EAAE,QAAQ,MAAM,OAAO,EAAE,MAAM,EAAE,QAAQ,MAAM,KAAA,IAAS,CAAA;AAAA,IAC5D,GAAI,EAAE,YAAY,EAAE,WAAW,EAAE,UAAA,IAAc,CAAA;AAAA,IAC/C,GAAI,EAAE,OAAO,EAAE,MAAM,EAAE,KAAA,IAAS,CAAA;AAAA,IAChC,GAAI,EAAE,YAAY,SAAY,EAAE,SAAS,EAAE,YAAY,CAAA;AAAA,EAAC,EACxD;AACJ;AAqBO,SAAS,iBACd,QACA,MACA,OAC2C;AAC3C,QAAM,YAAY,OAAO,IAAI,CAAC,OAAO,EAAE,GAAG,OAAO,EAAE,WAAWA,qBAAAA,SAAS,MAAM,EAAE,GAAG,KAAK,IAAI;AAC3F,QAAM,QAAQ,SAAS,UAAU,OAAO,CAAC,KAAK,MAAM,MAAM,EAAE,OAAO,CAAC;AACpE,QAAM,QAAQ,UAAU,IAAI,CAAC,EAAE,GAAG,aAAa;AAAA,IAC7C,KAAK,EAAE;AAAA,IACP,OAAO,EAAE;AAAA,IACT,OAAO,EAAE;AAAA,IACT,GAAI,EAAE,OAAO,EAAE,MAAM,EAAE,KAAA,IAAS,CAAA;AAAA,IAChC;AAAA,IACA,SAAS,QAAQ,IAAI,KAAK,IAAI,KAAK,KAAK,IAAI,GAAI,QAAQ,QAAS,GAAG,CAAC,IAAI;AAAA,EAAA,EACzE;AACF,SAAO,EAAE,OAAO,OAAO,MAAA;AACzB;AAEO,SAAS,YACd,QACA,gBACa;AACb,QAAM,2BAAW,IAAA;AACjB,SAAO,QAAQ,CAAC,GAAG,MAAM;AACvB,eAAW,KAAK,eAAe,CAAC,KAAK,CAAA,GAAI;AACvC,YAAM,MAAM,KAAK,IAAI,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,GAAA;AACtC,UAAI,EAAE,GAAG,IAAI,EAAE,YAAY,EAAE,UAAU,EAAE,KAAK,IAAI,EAAE;AACpD,WAAK,IAAI,EAAE,IAAI,GAAG;AAAA,IACpB;AAAA,EACF,CAAC;AACD,SAAO,CAAC,GAAG,KAAK,OAAA,CAAQ,EAAE,KAAK,CAAC,GAAG,MAAM,EAAE,GAAG,cAAc,EAAE,EAAE,CAAC;AACnE;;;;"}
@@ -1,4 +1,4 @@
1
- import { StaticIconComponent } from './Icon';
1
+ import { StaticIconComponent } from './Icon.js';
2
2
  export interface TimeseriesPoint {
3
3
  at: string;
4
4
  value: number;
@@ -7,10 +7,33 @@ export interface TimeseriesResponse {
7
7
  id: string;
8
8
  points: TimeseriesPoint[];
9
9
  }
10
- /** One metric plotted on a panel. Its request URL is `baseUrl + id`. */
10
+ /** What a {@link SeriesLoader} receives from the widget polling it. */
11
+ export interface SeriesLoadContext {
12
+ /** The widget's look-back window, e.g. "1h". */
13
+ range: string;
14
+ /** Aborted when the query is cancelled, e.g. the widget unmounts mid-request. */
15
+ signal: AbortSignal;
16
+ }
17
+ /**
18
+ * Loads a series directly, instead of the widget requesting `baseUrl + id`
19
+ * through its `fetcher`. Called again whenever the range changes and on every
20
+ * poll.
21
+ */
22
+ export type SeriesLoader = (ctx: SeriesLoadContext) => Promise<TimeseriesResponse>;
23
+ /**
24
+ * One metric plotted on a panel. Its request URL is `baseUrl + id`, unless a
25
+ * `load` function supplies the data.
26
+ */
11
27
  export interface TimeseriesSeries {
12
- /** Metric id appended to the panel's baseUrl, e.g. "sqlserver.iops.read". */
28
+ /**
29
+ * Metric id appended to the panel's baseUrl, e.g. "sqlserver.iops.read".
30
+ * With `load`, the id is the series' cache identity instead: loaded series
31
+ * are cached under `["timeseries", "load", id, range]`, so it must be unique
32
+ * per data source (two series sharing an id share one cached response).
33
+ */
13
34
  id: string;
35
+ /** Loads the series' points; when set, `baseUrl` and `fetcher` are not used. */
36
+ load?: SeriesLoader;
14
37
  /** Tooltip/legend label; defaults to the id. */
15
38
  label?: string;
16
39
  /**
@@ -34,6 +57,16 @@ export interface TimeseriesSeries {
34
57
  */
35
58
  current?: number;
36
59
  }
60
+ /** A horizontal marker line at a fixed value, e.g. a static capacity. */
61
+ export interface TimeseriesReferenceLine {
62
+ value: number;
63
+ /** Legend label, e.g. "capacity". */
64
+ label: string;
65
+ /** CSS color value or Tailwind color class; defaults to the muted foreground. */
66
+ color?: string;
67
+ /** Grafana-style unit key for the legend value; falls back to the panel `unit`. */
68
+ unit?: string;
69
+ }
37
70
  export interface TimeseriesPanelProps {
38
71
  url?: string;
39
72
  baseUrl?: string;
@@ -47,6 +80,8 @@ export interface TimeseriesPanelProps {
47
80
  variant?: "area" | "line" | "stacked" | "breakdown";
48
81
  expandVariant?: "area" | "line" | "stacked";
49
82
  total?: number;
83
+ /** Flat lines drawn across the time-series chart, e.g. a fixed capacity. */
84
+ referenceLines?: TimeseriesReferenceLine[];
50
85
  expandable?: boolean;
51
86
  fetcher?: (url: string) => Promise<TimeseriesResponse>;
52
87
  className?: string;
@@ -59,6 +94,7 @@ export interface ResolvedSeries {
59
94
  color: string;
60
95
  unit?: string;
61
96
  transform?: (value: number) => number;
97
+ load?: SeriesLoader;
62
98
  current?: number;
63
99
  }
64
100
  /** Normalises the single-url and baseUrl+series forms to one list. */
@@ -1 +1 @@
1
- {"version":3,"file":"TimeseriesPanel.model.d.ts","sourceRoot":"","sources":["../../src/data/TimeseriesPanel.model.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"TimeseriesPanel.model.d.ts","sourceRoot":"","sources":["../../src/data/TimeseriesPanel.model.ts"],"names":[],"mappings":"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"}
@@ -18,6 +18,7 @@ function resolveSeries(props) {
18
18
  color: s.color ?? paletteColor(i),
19
19
  ...s.unit ?? props.unit ? { unit: s.unit ?? props.unit } : {},
20
20
  ...s.transform ? { transform: s.transform } : {},
21
+ ...s.load ? { load: s.load } : {},
21
22
  ...s.current !== void 0 ? { current: s.current } : {}
22
23
  }));
23
24
  }
@@ -1 +1 @@
1
- {"version":3,"file":"TimeseriesPanel.model.js","sources":["../../src/data/TimeseriesPanel.model.ts"],"sourcesContent":["import type { StaticIconComponent } from \"./Icon\";\nimport { latestOf } from \"./TimeseriesPanel.axes\";\n\nexport interface TimeseriesPoint {\n at: string;\n value: number;\n}\n\nexport interface TimeseriesResponse {\n id: string;\n points: TimeseriesPoint[];\n}\n\n/** One metric plotted on a panel. Its request URL is `baseUrl + id`. */\nexport interface TimeseriesSeries {\n /** Metric id appended to the panel's baseUrl, e.g. \"sqlserver.iops.read\". */\n id: string;\n /** Tooltip/legend label; defaults to the id. */\n label?: string;\n /**\n * Maps each point's value before plotting, e.g. writes pass `(v) => -v` to\n * render below the zero axis. Identity when omitted.\n */\n transform?: (value: number) => number;\n /**\n * Stroke/fill override as a CSS color value or a Tailwind color class.\n * Defaults cycle a small palette by index.\n */\n color?: string;\n /**\n * Grafana-style unit key for this series' readout/tooltip. Falls back to the\n * panel-level `unit`.\n */\n unit?: string;\n /**\n * Instantaneous value for the `breakdown` variant. When omitted, the\n * breakdown falls back to the latest polled point.\n */\n current?: number;\n}\n\nexport interface TimeseriesPanelProps {\n url?: string;\n baseUrl?: string;\n series?: TimeseriesSeries[];\n title: string;\n icon?: string | StaticIconComponent;\n unit?: string;\n range?: string;\n refreshMs?: number;\n height?: number;\n variant?: \"area\" | \"line\" | \"stacked\" | \"breakdown\";\n expandVariant?: \"area\" | \"line\" | \"stacked\";\n total?: number;\n expandable?: boolean;\n fetcher?: (url: string) => Promise<TimeseriesResponse>;\n className?: string;\n}\n\nconst SERIES_PALETTE = [\n \"var(--chart-1, #3b82f6)\",\n \"var(--chart-2, #ef4444)\",\n \"var(--chart-3, #10b981)\",\n \"var(--chart-4, #f59e0b)\",\n] as const;\n\nfunction paletteColor(index: number): string {\n return SERIES_PALETTE[index % SERIES_PALETTE.length] ?? SERIES_PALETTE[0];\n}\n\n/** A series with its full request URL, resolved label, color, and unit. */\nexport interface ResolvedSeries {\n key: string;\n url: string;\n label: string;\n color: string;\n unit?: string;\n transform?: (value: number) => number;\n current?: number;\n}\n\n/** Normalises the single-url and baseUrl+series forms to one list. */\nexport function resolveSeries(props: TimeseriesPanelProps): ResolvedSeries[] {\n const base = props.baseUrl ?? \"\";\n const list = props.series ?? (props.url ? [{ id: props.url }] : []);\n return list.map((s, i) => ({\n key: s.id,\n url: base + s.id,\n label: s.label ?? s.id,\n color: s.color ?? paletteColor(i),\n ...(s.unit ?? props.unit ? { unit: s.unit ?? props.unit } : {}),\n ...(s.transform ? { transform: s.transform } : {}),\n ...(s.current !== undefined ? { current: s.current } : {}),\n }));\n}\n\n/** One legend/bar row of the breakdown variant. */\nexport interface BreakdownItem {\n key: string;\n label: string;\n color: string;\n unit?: string;\n value: number;\n percent: number;\n}\n\n/**\n * One row of the merged chart data: the timestamp in `at` plus each series'\n * value under its key.\n */\nexport interface MergedRow {\n at: string;\n [seriesKey: string]: string | number | undefined;\n}\n\nexport function resolveBreakdown(\n series: ResolvedSeries[],\n rows: MergedRow[],\n total?: number,\n): { items: BreakdownItem[]; total: number } {\n const withValue = series.map((s) => ({ s, value: s.current ?? latestOf(rows, s.key) ?? 0 }));\n const denom = total ?? withValue.reduce((acc, w) => acc + w.value, 0);\n const items = withValue.map(({ s, value }) => ({\n key: s.key,\n label: s.label,\n color: s.color,\n ...(s.unit ? { unit: s.unit } : {}),\n value,\n percent: denom > 0 ? Math.min(100, Math.max(0, (value / denom) * 100)) : 0,\n }));\n return { items, total: denom };\n}\n\nexport function mergeSeries(\n series: ResolvedSeries[],\n pointsBySeries: (TimeseriesPoint[] | undefined)[],\n): MergedRow[] {\n const rows = new Map<string, MergedRow>();\n series.forEach((s, i) => {\n for (const p of pointsBySeries[i] ?? []) {\n const row = rows.get(p.at) ?? { at: p.at };\n row[s.key] = s.transform ? s.transform(p.value) : p.value;\n rows.set(p.at, row);\n }\n });\n return [...rows.values()].sort((a, b) => a.at.localeCompare(b.at));\n}\n"],"names":[],"mappings":";AA2DA,MAAM,iBAAiB;AAAA,EACrB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AAEA,SAAS,aAAa,OAAuB;AAC3C,SAAO,eAAe,QAAQ,eAAe,MAAM,KAAK,eAAe,CAAC;AAC1E;AAcO,SAAS,cAAc,OAA+C;AAC3E,QAAM,OAAO,MAAM,WAAW;AAC9B,QAAM,OAAO,MAAM,WAAW,MAAM,MAAM,CAAC,EAAE,IAAI,MAAM,IAAA,CAAK,IAAI,CAAA;AAChE,SAAO,KAAK,IAAI,CAAC,GAAG,OAAO;AAAA,IACzB,KAAK,EAAE;AAAA,IACP,KAAK,OAAO,EAAE;AAAA,IACd,OAAO,EAAE,SAAS,EAAE;AAAA,IACpB,OAAO,EAAE,SAAS,aAAa,CAAC;AAAA,IAChC,GAAI,EAAE,QAAQ,MAAM,OAAO,EAAE,MAAM,EAAE,QAAQ,MAAM,KAAA,IAAS,CAAA;AAAA,IAC5D,GAAI,EAAE,YAAY,EAAE,WAAW,EAAE,UAAA,IAAc,CAAA;AAAA,IAC/C,GAAI,EAAE,YAAY,SAAY,EAAE,SAAS,EAAE,YAAY,CAAA;AAAA,EAAC,EACxD;AACJ;AAqBO,SAAS,iBACd,QACA,MACA,OAC2C;AAC3C,QAAM,YAAY,OAAO,IAAI,CAAC,OAAO,EAAE,GAAG,OAAO,EAAE,WAAW,SAAS,MAAM,EAAE,GAAG,KAAK,IAAI;AAC3F,QAAM,QAAQ,SAAS,UAAU,OAAO,CAAC,KAAK,MAAM,MAAM,EAAE,OAAO,CAAC;AACpE,QAAM,QAAQ,UAAU,IAAI,CAAC,EAAE,GAAG,aAAa;AAAA,IAC7C,KAAK,EAAE;AAAA,IACP,OAAO,EAAE;AAAA,IACT,OAAO,EAAE;AAAA,IACT,GAAI,EAAE,OAAO,EAAE,MAAM,EAAE,KAAA,IAAS,CAAA;AAAA,IAChC;AAAA,IACA,SAAS,QAAQ,IAAI,KAAK,IAAI,KAAK,KAAK,IAAI,GAAI,QAAQ,QAAS,GAAG,CAAC,IAAI;AAAA,EAAA,EACzE;AACF,SAAO,EAAE,OAAO,OAAO,MAAA;AACzB;AAEO,SAAS,YACd,QACA,gBACa;AACb,QAAM,2BAAW,IAAA;AACjB,SAAO,QAAQ,CAAC,GAAG,MAAM;AACvB,eAAW,KAAK,eAAe,CAAC,KAAK,CAAA,GAAI;AACvC,YAAM,MAAM,KAAK,IAAI,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,GAAA;AACtC,UAAI,EAAE,GAAG,IAAI,EAAE,YAAY,EAAE,UAAU,EAAE,KAAK,IAAI,EAAE;AACpD,WAAK,IAAI,EAAE,IAAI,GAAG;AAAA,IACpB;AAAA,EACF,CAAC;AACD,SAAO,CAAC,GAAG,KAAK,OAAA,CAAQ,EAAE,KAAK,CAAC,GAAG,MAAM,EAAE,GAAG,cAAc,EAAE,EAAE,CAAC;AACnE;"}
1
+ {"version":3,"file":"TimeseriesPanel.model.js","sources":["../../src/data/TimeseriesPanel.model.ts"],"sourcesContent":["import type { StaticIconComponent } from \"./Icon\";\nimport { latestOf } from \"./TimeseriesPanel.axes\";\n\nexport interface TimeseriesPoint {\n at: string;\n value: number;\n}\n\nexport interface TimeseriesResponse {\n id: string;\n points: TimeseriesPoint[];\n}\n\n/** What a {@link SeriesLoader} receives from the widget polling it. */\nexport interface SeriesLoadContext {\n /** The widget's look-back window, e.g. \"1h\". */\n range: string;\n /** Aborted when the query is cancelled, e.g. the widget unmounts mid-request. */\n signal: AbortSignal;\n}\n\n/**\n * Loads a series directly, instead of the widget requesting `baseUrl + id`\n * through its `fetcher`. Called again whenever the range changes and on every\n * poll.\n */\nexport type SeriesLoader = (ctx: SeriesLoadContext) => Promise<TimeseriesResponse>;\n\n/**\n * One metric plotted on a panel. Its request URL is `baseUrl + id`, unless a\n * `load` function supplies the data.\n */\nexport interface TimeseriesSeries {\n /**\n * Metric id appended to the panel's baseUrl, e.g. \"sqlserver.iops.read\".\n * With `load`, the id is the series' cache identity instead: loaded series\n * are cached under `[\"timeseries\", \"load\", id, range]`, so it must be unique\n * per data source (two series sharing an id share one cached response).\n */\n id: string;\n /** Loads the series' points; when set, `baseUrl` and `fetcher` are not used. */\n load?: SeriesLoader;\n /** Tooltip/legend label; defaults to the id. */\n label?: string;\n /**\n * Maps each point's value before plotting, e.g. writes pass `(v) => -v` to\n * render below the zero axis. Identity when omitted.\n */\n transform?: (value: number) => number;\n /**\n * Stroke/fill override as a CSS color value or a Tailwind color class.\n * Defaults cycle a small palette by index.\n */\n color?: string;\n /**\n * Grafana-style unit key for this series' readout/tooltip. Falls back to the\n * panel-level `unit`.\n */\n unit?: string;\n /**\n * Instantaneous value for the `breakdown` variant. When omitted, the\n * breakdown falls back to the latest polled point.\n */\n current?: number;\n}\n\n/** A horizontal marker line at a fixed value, e.g. a static capacity. */\nexport interface TimeseriesReferenceLine {\n value: number;\n /** Legend label, e.g. \"capacity\". */\n label: string;\n /** CSS color value or Tailwind color class; defaults to the muted foreground. */\n color?: string;\n /** Grafana-style unit key for the legend value; falls back to the panel `unit`. */\n unit?: string;\n}\n\nexport interface TimeseriesPanelProps {\n url?: string;\n baseUrl?: string;\n series?: TimeseriesSeries[];\n title: string;\n icon?: string | StaticIconComponent;\n unit?: string;\n range?: string;\n refreshMs?: number;\n height?: number;\n variant?: \"area\" | \"line\" | \"stacked\" | \"breakdown\";\n expandVariant?: \"area\" | \"line\" | \"stacked\";\n total?: number;\n /** Flat lines drawn across the time-series chart, e.g. a fixed capacity. */\n referenceLines?: TimeseriesReferenceLine[];\n expandable?: boolean;\n fetcher?: (url: string) => Promise<TimeseriesResponse>;\n className?: string;\n}\n\nconst SERIES_PALETTE = [\n \"var(--chart-1, #3b82f6)\",\n \"var(--chart-2, #ef4444)\",\n \"var(--chart-3, #10b981)\",\n \"var(--chart-4, #f59e0b)\",\n] as const;\n\nfunction paletteColor(index: number): string {\n return SERIES_PALETTE[index % SERIES_PALETTE.length] ?? SERIES_PALETTE[0];\n}\n\n/** A series with its full request URL, resolved label, color, and unit. */\nexport interface ResolvedSeries {\n key: string;\n url: string;\n label: string;\n color: string;\n unit?: string;\n transform?: (value: number) => number;\n load?: SeriesLoader;\n current?: number;\n}\n\n/** Normalises the single-url and baseUrl+series forms to one list. */\nexport function resolveSeries(props: TimeseriesPanelProps): ResolvedSeries[] {\n const base = props.baseUrl ?? \"\";\n const list = props.series ?? (props.url ? [{ id: props.url }] : []);\n return list.map((s, i) => ({\n key: s.id,\n url: base + s.id,\n label: s.label ?? s.id,\n color: s.color ?? paletteColor(i),\n ...(s.unit ?? props.unit ? { unit: s.unit ?? props.unit } : {}),\n ...(s.transform ? { transform: s.transform } : {}),\n ...(s.load ? { load: s.load } : {}),\n ...(s.current !== undefined ? { current: s.current } : {}),\n }));\n}\n\n/** One legend/bar row of the breakdown variant. */\nexport interface BreakdownItem {\n key: string;\n label: string;\n color: string;\n unit?: string;\n value: number;\n percent: number;\n}\n\n/**\n * One row of the merged chart data: the timestamp in `at` plus each series'\n * value under its key.\n */\nexport interface MergedRow {\n at: string;\n [seriesKey: string]: string | number | undefined;\n}\n\nexport function resolveBreakdown(\n series: ResolvedSeries[],\n rows: MergedRow[],\n total?: number,\n): { items: BreakdownItem[]; total: number } {\n const withValue = series.map((s) => ({ s, value: s.current ?? latestOf(rows, s.key) ?? 0 }));\n const denom = total ?? withValue.reduce((acc, w) => acc + w.value, 0);\n const items = withValue.map(({ s, value }) => ({\n key: s.key,\n label: s.label,\n color: s.color,\n ...(s.unit ? { unit: s.unit } : {}),\n value,\n percent: denom > 0 ? Math.min(100, Math.max(0, (value / denom) * 100)) : 0,\n }));\n return { items, total: denom };\n}\n\nexport function mergeSeries(\n series: ResolvedSeries[],\n pointsBySeries: (TimeseriesPoint[] | undefined)[],\n): MergedRow[] {\n const rows = new Map<string, MergedRow>();\n series.forEach((s, i) => {\n for (const p of pointsBySeries[i] ?? []) {\n const row = rows.get(p.at) ?? { at: p.at };\n row[s.key] = s.transform ? s.transform(p.value) : p.value;\n rows.set(p.at, row);\n }\n });\n return [...rows.values()].sort((a, b) => a.at.localeCompare(b.at));\n}\n"],"names":[],"mappings":";AAiGA,MAAM,iBAAiB;AAAA,EACrB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AAEA,SAAS,aAAa,OAAuB;AAC3C,SAAO,eAAe,QAAQ,eAAe,MAAM,KAAK,eAAe,CAAC;AAC1E;AAeO,SAAS,cAAc,OAA+C;AAC3E,QAAM,OAAO,MAAM,WAAW;AAC9B,QAAM,OAAO,MAAM,WAAW,MAAM,MAAM,CAAC,EAAE,IAAI,MAAM,IAAA,CAAK,IAAI,CAAA;AAChE,SAAO,KAAK,IAAI,CAAC,GAAG,OAAO;AAAA,IACzB,KAAK,EAAE;AAAA,IACP,KAAK,OAAO,EAAE;AAAA,IACd,OAAO,EAAE,SAAS,EAAE;AAAA,IACpB,OAAO,EAAE,SAAS,aAAa,CAAC;AAAA,IAChC,GAAI,EAAE,QAAQ,MAAM,OAAO,EAAE,MAAM,EAAE,QAAQ,MAAM,KAAA,IAAS,CAAA;AAAA,IAC5D,GAAI,EAAE,YAAY,EAAE,WAAW,EAAE,UAAA,IAAc,CAAA;AAAA,IAC/C,GAAI,EAAE,OAAO,EAAE,MAAM,EAAE,KAAA,IAAS,CAAA;AAAA,IAChC,GAAI,EAAE,YAAY,SAAY,EAAE,SAAS,EAAE,YAAY,CAAA;AAAA,EAAC,EACxD;AACJ;AAqBO,SAAS,iBACd,QACA,MACA,OAC2C;AAC3C,QAAM,YAAY,OAAO,IAAI,CAAC,OAAO,EAAE,GAAG,OAAO,EAAE,WAAW,SAAS,MAAM,EAAE,GAAG,KAAK,IAAI;AAC3F,QAAM,QAAQ,SAAS,UAAU,OAAO,CAAC,KAAK,MAAM,MAAM,EAAE,OAAO,CAAC;AACpE,QAAM,QAAQ,UAAU,IAAI,CAAC,EAAE,GAAG,aAAa;AAAA,IAC7C,KAAK,EAAE;AAAA,IACP,OAAO,EAAE;AAAA,IACT,OAAO,EAAE;AAAA,IACT,GAAI,EAAE,OAAO,EAAE,MAAM,EAAE,KAAA,IAAS,CAAA;AAAA,IAChC;AAAA,IACA,SAAS,QAAQ,IAAI,KAAK,IAAI,KAAK,KAAK,IAAI,GAAI,QAAQ,QAAS,GAAG,CAAC,IAAI;AAAA,EAAA,EACzE;AACF,SAAO,EAAE,OAAO,OAAO,MAAA;AACzB;AAEO,SAAS,YACd,QACA,gBACa;AACb,QAAM,2BAAW,IAAA;AACjB,SAAO,QAAQ,CAAC,GAAG,MAAM;AACvB,eAAW,KAAK,eAAe,CAAC,KAAK,CAAA,GAAI;AACvC,YAAM,MAAM,KAAK,IAAI,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,GAAA;AACtC,UAAI,EAAE,GAAG,IAAI,EAAE,YAAY,EAAE,UAAU,EAAE,KAAK,IAAI,EAAE;AACpD,WAAK,IAAI,EAAE,IAAI,GAAG;AAAA,IACpB;AAAA,EACF,CAAC;AACD,SAAO,CAAC,GAAG,KAAK,OAAA,CAAQ,EAAE,KAAK,CAAC,GAAG,MAAM,EAAE,GAAG,cAAc,EAAE,EAAE,CAAC;AACnE;"}
@@ -1,5 +1,5 @@
1
1
  import { ReactNode } from 'react';
2
- import { TreeNodeProps } from './TreeNode';
2
+ import { TreeNodeProps } from './TreeNode.js';
3
3
  export type TreeProps<T> = Omit<TreeNodeProps<T>, "node" | "depth" | "expandAll" | "forcedOpenKeys"> & {
4
4
  /** Root nodes to render. */
5
5
  roots: T[];
@@ -1,5 +1,5 @@
1
1
  import { ReactNode } from 'react';
2
- import { StaticIconComponent } from './Icon';
2
+ import { StaticIconComponent } from './Icon.js';
3
3
  export type TreeGroupHeaderProps = {
4
4
  /** Header title. */
5
5
  title: ReactNode;
@@ -1,5 +1,5 @@
1
1
  import { HTMLAttributes } from 'react';
2
- import { VersionInfo } from './version-info';
2
+ import { VersionInfo } from './version-info.js';
3
3
  export type VersionProps = HTMLAttributes<HTMLSpanElement> & {
4
4
  /** Show the short git commit hash. */
5
5
  commit?: boolean;