@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.
- package/README.md +40 -4
- package/dist/ai.d.ts +1 -1
- package/dist/chat.d.ts +1 -1
- package/dist/clicky.d.ts +1 -1
- package/dist/comments/CommentAuthor.d.ts +2 -2
- package/dist/comments/CommentCard.d.ts +1 -1
- package/dist/comments/CommentCardParts.d.ts +1 -1
- package/dist/comments/CommentComposer.d.ts +1 -1
- package/dist/comments/CommentFilterBar.d.ts +1 -1
- package/dist/comments/CommentProgress.d.ts +1 -1
- package/dist/comments/CommentProvider.d.ts +2 -2
- package/dist/comments/CommentSidePanel.d.ts +1 -1
- package/dist/comments/CommentThread.d.ts +1 -1
- package/dist/comments/CommentThreadList.d.ts +1 -1
- package/dist/comments/GroupedComments.d.ts +1 -1
- package/dist/comments/MentionTextarea.d.ts +1 -1
- package/dist/comments/comment-context.d.ts +1 -1
- package/dist/comments/comment-fixtures.d.ts +1 -1
- package/dist/comments/comment-types.d.ts +1 -1
- package/dist/comments/comment-utils.d.ts +2 -2
- package/dist/comments.d.ts +16 -16
- package/dist/components/AccordionList.d.ts +1 -1
- package/dist/components/Combobox.d.ts +2 -2
- package/dist/components/ComboboxControl.d.ts +2 -2
- package/dist/components/ComboboxMenu.d.ts +2 -2
- package/dist/components/ComboboxTags.d.ts +1 -1
- package/dist/components/ConnectionLoggingPolicy.d.ts +1 -1
- package/dist/components/CountryPicker.d.ts +1 -1
- package/dist/components/EndpointSelector.d.ts +1 -1
- package/dist/components/EndpointSelector.model.d.ts +4 -4
- package/dist/components/FilterBar.d.ts +8 -8
- package/dist/components/FormLookupProvider.d.ts +1 -1
- package/dist/components/FormatOptionsDropdown.d.ts +2 -2
- package/dist/components/IconButton.d.ts +1 -1
- package/dist/components/ItemActions.d.ts +1 -1
- package/dist/components/JSONPathField.d.ts +4 -4
- package/dist/components/JsonSchemaForm.d.ts +1 -1
- package/dist/components/ListMenu.d.ts +2 -2
- package/dist/components/MdxEditorCallout.d.ts +1 -1
- package/dist/components/MdxEditorField.d.ts +2 -2
- package/dist/components/MdxEditorToolbar.d.ts +1 -1
- package/dist/components/MultiSelect.d.ts +1 -1
- package/dist/components/OnePasswordSelector.d.ts +1 -1
- package/dist/components/ScheduleEditor.d.ts +1 -1
- package/dist/components/SearchInput.d.ts +1 -1
- package/dist/components/SecretFormField.d.ts +2 -2
- package/dist/components/SecretKeySelector.d.ts +1 -1
- package/dist/components/SecretKeySelector.model.d.ts +1 -1
- package/dist/components/SegmentedControl.d.ts +1 -1
- package/dist/components/SplitButton.d.ts +3 -3
- package/dist/components/TreePickerField.d.ts +2 -2
- package/dist/components/TriStateToggle.d.ts +1 -1
- package/dist/components/WorkloadPicker.d.ts +2 -2
- package/dist/components/button.d.ts +1 -1
- package/dist/components/combobox-types.d.ts +2 -2
- package/dist/components/endpoint-port.d.ts +1 -1
- package/dist/components/filter-bar-field-utils.d.ts +3 -3
- package/dist/components/filter-bar-multi.d.ts +4 -4
- package/dist/components/filter-bar-utils.d.ts +1 -1
- package/dist/components/form-lookup-context.d.ts +1 -1
- package/dist/components/format-options.d.ts +1 -1
- package/dist/components/icon-menu-picker.d.ts +1 -1
- package/dist/components/jotai-bindings-core.d.ts +2 -2
- package/dist/components/jotai-bindings.d.ts +1 -1
- package/dist/components/json-schema-form-accordion-array.d.ts +1 -1
- package/dist/components/json-schema-form-array.d.ts +1 -1
- package/dist/components/json-schema-form-cards-array.d.ts +1 -1
- package/dist/components/json-schema-form-collection-layouts.fixtures.d.ts +1 -1
- package/dist/components/json-schema-form-discriminator.d.ts +1 -1
- package/dist/components/json-schema-form-error-display.d.ts +1 -1
- package/dist/components/json-schema-form-errors.d.ts +2 -2
- package/dist/components/json-schema-form-extensions.d.ts +1 -1
- package/dist/components/json-schema-form-fields.d.ts +2 -2
- package/dist/components/json-schema-form-filter.d.ts +1 -1
- package/dist/components/json-schema-form-grid.d.ts +2 -2
- package/dist/components/json-schema-form-item-row.d.ts +1 -1
- package/dist/components/json-schema-form-item-summary.d.ts +1 -1
- package/dist/components/json-schema-form-layout.d.ts +3 -3
- package/dist/components/json-schema-form-list-array.d.ts +1 -1
- package/dist/components/json-schema-form-lookup-tree.d.ts +2 -2
- package/dist/components/json-schema-form-object.d.ts +1 -1
- package/dist/components/json-schema-form-preferences.d.ts +1 -1
- package/dist/components/json-schema-form-properties-errors.fixtures.d.ts +2 -2
- package/dist/components/json-schema-form-properties-size.d.ts +1 -1
- package/dist/components/json-schema-form-properties.d.ts +2 -2
- package/dist/components/json-schema-form-properties.fixtures.d.ts +1 -1
- package/dist/components/json-schema-form-property-collection.d.ts +1 -1
- package/dist/components/json-schema-form-property-preview.d.ts +1 -1
- package/dist/components/json-schema-form-property-selection.d.ts +1 -1
- package/dist/components/json-schema-form-refs.d.ts +1 -1
- package/dist/components/json-schema-form-render.d.ts +1 -1
- package/dist/components/json-schema-form-resolve.d.ts +1 -1
- package/dist/components/json-schema-form-runtime-types.d.ts +4 -4
- package/dist/components/json-schema-form-size.d.ts +1 -1
- package/dist/components/json-schema-form-table-array.d.ts +1 -1
- package/dist/components/json-schema-form-tags-combobox.d.ts +2 -2
- package/dist/components/json-schema-form-template-menu.d.ts +1 -1
- package/dist/components/json-schema-form-template.d.ts +3 -3
- package/dist/components/json-schema-form-types.d.ts +5 -5
- package/dist/components/json-schema-form-utils.d.ts +2 -2
- package/dist/components/mdx-editor-callout-model.d.ts +1 -1
- package/dist/components/mdx-editor-callout.d.ts +1 -1
- package/dist/components/mdx-editor-field-plugins.d.ts +1 -1
- package/dist/components/mdx-editor-jsx-attributes.d.ts +1 -1
- package/dist/components/mdx-editor-options.d.ts +1 -1
- package/dist/components/secret-form-extension.d.ts +4 -4
- package/dist/components/unit-form-extension.d.ts +1 -1
- package/dist/components/useComboboxLayout.d.ts +1 -1
- package/dist/components/workload-picker-utils.d.ts +1 -1
- package/dist/components.d.ts +102 -102
- package/dist/data/Avatar.d.ts +1 -1
- package/dist/data/AvatarBadge.d.ts +3 -3
- package/dist/data/Badge.d.ts +2 -2
- package/dist/data/Callout.d.ts +1 -1
- package/dist/data/Clicky.d.ts +10 -10
- package/dist/data/Clicky.fixtures.d.ts +1 -1
- package/dist/data/DataTable.d.ts +11 -11
- package/dist/data/DataTableMenuSections.d.ts +3 -3
- package/dist/data/DataTablePreferencesSheet.d.ts +3 -3
- package/dist/data/FilterPill.d.ts +1 -1
- package/dist/data/FixtureEditor/FenceForm.d.ts +2 -2
- package/dist/data/FixtureEditor/FixtureEditor.d.ts +1 -1
- package/dist/data/FixtureEditor/FixtureFenceCodeBlockEditor.d.ts +2 -2
- package/dist/data/FixtureEditor/FixtureFrontmatterDialog.d.ts +1 -1
- package/dist/data/FixtureEditor/fixture-blocks.d.ts +2 -2
- package/dist/data/FixtureEditor/fixture-code-block-model.d.ts +1 -1
- package/dist/data/FixtureEditor/fixture-frontmatter.d.ts +1 -1
- package/dist/data/FixtureEditor/index.d.ts +4 -4
- package/dist/data/FixtureEditor/types.d.ts +3 -3
- package/dist/data/Gauge.d.ts +1 -1
- package/dist/data/GaugeHoverCard.d.ts +1 -1
- package/dist/data/GraphDiagram.d.ts +1 -1
- package/dist/data/HighlightedTokens.d.ts +1 -1
- package/dist/data/Icon.d.ts +1 -1
- package/dist/data/LogDetails.d.ts +3 -3
- package/dist/data/LogsTable.d.ts +3 -3
- package/dist/data/MarkdownEditor.d.ts +2 -2
- package/dist/data/MarkdownEditor.model.d.ts +1 -1
- package/dist/data/ObjectGraph.d.ts +2 -2
- package/dist/data/ProgressBars.d.ts +1 -1
- package/dist/data/PromptBanner.d.ts +1 -1
- package/dist/data/PromptBanner.model.d.ts +1 -1
- package/dist/data/PromptDialog.d.ts +1 -1
- package/dist/data/Properties.d.ts +1 -1
- package/dist/data/RadialGauge.d.ts +1 -1
- package/dist/data/SchemaViewer.d.ts +2 -2
- package/dist/data/SelectionActionBar.d.ts +1 -1
- package/dist/data/ServerTimingBadge.d.ts +2 -2
- package/dist/data/SortableHeader.d.ts +1 -1
- package/dist/data/StatStrip.d.ts +2 -2
- package/dist/data/TabButton.d.ts +1 -1
- package/dist/data/TaskExecDetails.d.ts +1 -1
- package/dist/data/TaskHeaderExtras.d.ts +1 -1
- package/dist/data/TaskManager.d.ts +2 -2
- package/dist/data/TaskProcessDetails.d.ts +1 -1
- package/dist/data/TaskProcessMetadata.d.ts +1 -1
- package/dist/data/TaskProgress.d.ts +3 -3
- package/dist/data/TaskResourceReadings.d.ts +1 -1
- package/dist/data/TaskStreamTabs.d.ts +1 -1
- package/dist/data/Timeline.d.ts +2 -2
- package/dist/data/TimeseriesCoreBars.cjs +10 -36
- package/dist/data/TimeseriesCoreBars.cjs.map +1 -1
- package/dist/data/TimeseriesCoreBars.d.ts +5 -5
- package/dist/data/TimeseriesCoreBars.d.ts.map +1 -1
- package/dist/data/TimeseriesCoreBars.js +8 -34
- package/dist/data/TimeseriesCoreBars.js.map +1 -1
- package/dist/data/TimeseriesGauge.cjs +12 -36
- package/dist/data/TimeseriesGauge.cjs.map +1 -1
- package/dist/data/TimeseriesGauge.d.ts +15 -5
- package/dist/data/TimeseriesGauge.d.ts.map +1 -1
- package/dist/data/TimeseriesGauge.js +10 -34
- package/dist/data/TimeseriesGauge.js.map +1 -1
- package/dist/data/TimeseriesPanel.axes.d.ts +1 -1
- package/dist/data/TimeseriesPanel.cjs +82 -39
- package/dist/data/TimeseriesPanel.cjs.map +1 -1
- package/dist/data/TimeseriesPanel.d.ts +3 -3
- package/dist/data/TimeseriesPanel.d.ts.map +1 -1
- package/dist/data/TimeseriesPanel.js +82 -39
- package/dist/data/TimeseriesPanel.js.map +1 -1
- package/dist/data/TimeseriesPanel.model.cjs +1 -0
- package/dist/data/TimeseriesPanel.model.cjs.map +1 -1
- package/dist/data/TimeseriesPanel.model.d.ts +39 -3
- package/dist/data/TimeseriesPanel.model.d.ts.map +1 -1
- package/dist/data/TimeseriesPanel.model.js +1 -0
- package/dist/data/TimeseriesPanel.model.js.map +1 -1
- package/dist/data/Tree.d.ts +1 -1
- package/dist/data/TreeGroupHeader.d.ts +1 -1
- package/dist/data/Version.d.ts +1 -1
- package/dist/data/WorkloadCard.cjs +65 -31
- package/dist/data/WorkloadCard.cjs.map +1 -1
- package/dist/data/WorkloadCard.d.ts +17 -7
- package/dist/data/WorkloadCard.d.ts.map +1 -1
- package/dist/data/WorkloadCard.js +67 -33
- package/dist/data/WorkloadCard.js.map +1 -1
- package/dist/data/WorkloadCard.model.cjs +16 -10
- package/dist/data/WorkloadCard.model.cjs.map +1 -1
- package/dist/data/WorkloadCard.model.d.ts +33 -5
- package/dist/data/WorkloadCard.model.d.ts.map +1 -1
- package/dist/data/WorkloadCard.model.js +17 -11
- package/dist/data/WorkloadCard.model.js.map +1 -1
- package/dist/data/ai/AdvancedChatConfig.d.ts +2 -2
- package/dist/data/ai/ChatButton.d.ts +1 -1
- package/dist/data/ai/ChatFab.d.ts +1 -1
- package/dist/data/ai/ChatWindow.catalogs.d.ts +2 -2
- package/dist/data/ai/ChatWindow.d.ts +2 -2
- package/dist/data/ai/ChatWindow.models.d.ts +1 -1
- package/dist/data/ai/ChatWindow.preferences.d.ts +2 -2
- package/dist/data/ai/ChatWindow.runtime.d.ts +2 -2
- package/dist/data/ai/ChatWindow.test-utils.d.ts +2 -2
- package/dist/data/ai/ChatWindow.thread-status.d.ts +1 -1
- package/dist/data/ai/ChatWindow.thread.d.ts +1 -1
- package/dist/data/ai/ChatWindow.tool-catalog.d.ts +1 -1
- package/dist/data/ai/ChatWindow.types.d.ts +6 -6
- package/dist/data/ai/ChatWindowRequestBody.d.ts +3 -3
- package/dist/data/ai/ContextBadges.d.ts +1 -1
- package/dist/data/ai/PolicyTree.d.ts +1 -1
- package/dist/data/ai/PromptCatalog/PromptCatalogTable.d.ts +1 -1
- package/dist/data/ai/PromptCatalog/PromptLayerStrip.d.ts +1 -1
- package/dist/data/ai/PromptCatalog/PromptPage.d.ts +4 -4
- package/dist/data/ai/PromptCatalog/PromptPageEditor.d.ts +4 -4
- package/dist/data/ai/PromptCatalog/PromptPageHeader.d.ts +1 -1
- package/dist/data/ai/PromptCatalog/PromptPagePreview.d.ts +1 -1
- package/dist/data/ai/PromptCatalog/PromptPageSaveBar.d.ts +1 -1
- package/dist/data/ai/PromptCatalog/PromptSourceBadge.d.ts +1 -1
- package/dist/data/ai/PromptCatalog/index.d.ts +8 -8
- package/dist/data/ai/PromptCatalog/prompt-catalog-model.d.ts +1 -1
- package/dist/data/ai/PromptCatalog/prompt-page-model.d.ts +4 -4
- package/dist/data/ai/PromptCatalog/types.d.ts +1 -1
- package/dist/data/ai/PromptPicker/PromptPicker.d.ts +4 -4
- package/dist/data/ai/PromptPicker/PromptSourceRepair.d.ts +1 -1
- package/dist/data/ai/PromptPicker/index.d.ts +4 -4
- package/dist/data/ai/PromptPicker/prompt-runtime.d.ts +2 -2
- package/dist/data/ai/PromptPicker/types.d.ts +1 -1
- package/dist/data/ai/PromptRunEditor/PromptBlocks.d.ts +4 -4
- package/dist/data/ai/PromptRunEditor/RecentRuntimes.d.ts +3 -3
- package/dist/data/ai/PromptRunEditor/RuntimeRows.d.ts +5 -5
- package/dist/data/ai/PromptRunEditor/VariablesField.d.ts +1 -1
- package/dist/data/ai/PromptRunEditor/index.d.ts +11 -11
- package/dist/data/ai/PromptRunEditor/model.d.ts +1 -1
- package/dist/data/ai/PromptRunEditor/runtimeActions.d.ts +4 -4
- package/dist/data/ai/PromptRunEditor/yaml.d.ts +1 -1
- package/dist/data/ai/RuntimeModePicker.d.ts +3 -3
- package/dist/data/ai/SandboxConnectionsSection.d.ts +1 -1
- package/dist/data/ai/SandboxCreateWizard.d.ts +2 -2
- package/dist/data/ai/SandboxCreateWizard.model.d.ts +1 -1
- package/dist/data/ai/SessionChatComposer.d.ts +1 -1
- package/dist/data/ai/SessionInspector.approvals-model.d.ts +1 -1
- package/dist/data/ai/SessionInspector.approvals.d.ts +3 -3
- package/dist/data/ai/SessionInspector.collection-types.d.ts +2 -2
- package/dist/data/ai/SessionInspector.collection.d.ts +3 -3
- package/dist/data/ai/SessionInspector.compact.d.ts +2 -2
- package/dist/data/ai/SessionInspector.d.ts +6 -6
- package/dist/data/ai/SessionInspector.files.d.ts +1 -1
- package/dist/data/ai/SessionInspector.hierarchy-state.d.ts +2 -2
- package/dist/data/ai/SessionInspector.hierarchy.d.ts +2 -2
- package/dist/data/ai/SessionInspector.model.d.ts +1 -1
- package/dist/data/ai/SessionInspector.panel-values.d.ts +1 -1
- package/dist/data/ai/SessionInspector.panels.d.ts +4 -4
- package/dist/data/ai/SessionInspector.plan.d.ts +1 -1
- package/dist/data/ai/SessionInspector.summary.d.ts +1 -1
- package/dist/data/ai/SessionInspector.tabs.d.ts +2 -2
- package/dist/data/ai/SessionInspector.tabs.model.d.ts +2 -2
- package/dist/data/ai/SessionInspector.transcript.d.ts +2 -2
- package/dist/data/ai/SessionInspector.turns.d.ts +1 -1
- package/dist/data/ai/SessionViewer.d.ts +5 -5
- package/dist/data/ai/SessionViewer.fixtures.d.ts +2 -2
- package/dist/data/ai/SessionViewer.grouping.d.ts +1 -1
- package/dist/data/ai/SessionViewer.header.d.ts +2 -2
- package/dist/data/ai/SessionViewer.model.d.ts +2 -2
- package/dist/data/ai/SessionViewer.row-metadata.d.ts +1 -1
- package/dist/data/ai/SessionViewer.rows.d.ts +3 -3
- package/dist/data/ai/SessionViewer.tool-details.d.ts +1 -1
- package/dist/data/ai/SessionViewer.tool-row.d.ts +2 -2
- package/dist/data/ai/SessionViewerMenu.d.ts +2 -2
- package/dist/data/ai/SpecRuntimeEditor/CLIArgsSection.d.ts +2 -2
- package/dist/data/ai/SpecRuntimeEditor/CommitSection.d.ts +1 -1
- package/dist/data/ai/SpecRuntimeEditor/EnvironmentSection.d.ts +2 -2
- package/dist/data/ai/SpecRuntimeEditor/ModelContextAdvanced.d.ts +3 -3
- package/dist/data/ai/SpecRuntimeEditor/ModelSection.d.ts +5 -5
- package/dist/data/ai/SpecRuntimeEditor/PermissionModeField.d.ts +2 -2
- package/dist/data/ai/SpecRuntimeEditor/PermissionPolicyList.d.ts +1 -1
- package/dist/data/ai/SpecRuntimeEditor/PermissionsSection.d.ts +4 -4
- package/dist/data/ai/SpecRuntimeEditor/PromptSection.d.ts +2 -2
- package/dist/data/ai/SpecRuntimeEditor/SandboxSection.d.ts +4 -4
- package/dist/data/ai/SpecRuntimeEditor/SectionCard.d.ts +1 -1
- package/dist/data/ai/SpecRuntimeEditor/SectionTabs.d.ts +1 -1
- package/dist/data/ai/SpecRuntimeEditor/VerifySection.d.ts +5 -5
- package/dist/data/ai/SpecRuntimeEditor/WorkspaceSection.d.ts +3 -3
- package/dist/data/ai/SpecRuntimeEditor/env-model.d.ts +2 -2
- package/dist/data/ai/SpecRuntimeEditor/fields.d.ts +2 -2
- package/dist/data/ai/SpecRuntimeEditor/index.d.ts +11 -11
- package/dist/data/ai/SpecRuntimeEditor/permission-mode-visuals.d.ts +3 -3
- package/dist/data/ai/SpecRuntimeEditor/permissions-model.d.ts +3 -3
- package/dist/data/ai/SpecRuntimeEditor/summaries.d.ts +3 -3
- package/dist/data/ai/SpecRuntimeEditor/types.d.ts +4 -4
- package/dist/data/ai/SpecRuntimeEditor/update.d.ts +1 -1
- package/dist/data/ai/SpecRuntimeEditor.model.d.ts +5 -5
- package/dist/data/ai/ToolPreferences.d.ts +4 -4
- package/dist/data/ai/ToolPreferences.model.d.ts +2 -2
- package/dist/data/ai/ToolPreferencesList.d.ts +3 -3
- package/dist/data/ai/ToolSchemaBrowser.d.ts +2 -2
- package/dist/data/ai/ToolSchemaBrowser.detail.d.ts +2 -2
- package/dist/data/ai/ToolSchemaBrowser.model.d.ts +2 -2
- package/dist/data/ai/ToolSchemaBrowser.selection-toolbar.d.ts +2 -2
- package/dist/data/ai/ToolSchemaBrowser.sidebar.d.ts +4 -4
- package/dist/data/ai/agent-action-icons.d.ts +5 -5
- package/dist/data/ai/chat-window-context.d.ts +3 -3
- package/dist/data/ai/context.d.ts +1 -1
- package/dist/data/ai/examples/sessions/claude-complete.d.ts +1 -1
- package/dist/data/ai/examples/sessions/claude.d.ts +1 -1
- package/dist/data/ai/examples/sessions/codex-complete.d.ts +1 -1
- package/dist/data/ai/examples/sessions/codex.d.ts +1 -1
- package/dist/data/ai/examples/sessions/index.d.ts +5 -5
- package/dist/data/ai/index.d.ts +53 -53
- package/dist/data/ai/runtime-profile.d.ts +4 -4
- package/dist/data/ai/runtime-profiles/OrderedPresetSelect.d.ts +1 -1
- package/dist/data/ai/runtime-profiles/PermissionStrategiesEditor.d.ts +2 -2
- package/dist/data/ai/runtime-profiles/PermissionStrategyConditionRow.d.ts +3 -3
- package/dist/data/ai/runtime-profiles/PresetSpecEditor.d.ts +3 -3
- package/dist/data/ai/runtime-profiles/PresetWorkspace.d.ts +5 -5
- package/dist/data/ai/runtime-profiles/ProfilePresetChips.d.ts +1 -1
- package/dist/data/ai/runtime-profiles/ProfileSpecEditor.d.ts +4 -4
- package/dist/data/ai/runtime-profiles/ProfileWorkspace.d.ts +5 -5
- package/dist/data/ai/runtime-profiles/ResolutionInspector.d.ts +2 -2
- package/dist/data/ai/runtime-profiles/ResolutionTrace.d.ts +1 -1
- package/dist/data/ai/runtime-profiles/RuntimeLibraryList.d.ts +1 -1
- package/dist/data/ai/runtime-profiles/RuntimePersistenceBar.d.ts +1 -1
- package/dist/data/ai/runtime-profiles/RuntimeProfilePicker.d.ts +2 -2
- package/dist/data/ai/runtime-profiles/RuntimeProfilePicker.model.d.ts +3 -3
- package/dist/data/ai/runtime-profiles/RuntimeProfilesWorkspace.d.ts +4 -4
- package/dist/data/ai/runtime-profiles/index.d.ts +19 -19
- package/dist/data/ai/runtime-profiles/types.d.ts +3 -3
- package/dist/data/ai/runtime-profiles/use-permission-catalog.d.ts +3 -3
- package/dist/data/ai/runtime-profiles/use-resolution.d.ts +2 -2
- package/dist/data/ai/runtime-profiles/use-runtime-families.d.ts +1 -1
- package/dist/data/ai/runtime-profiles/use-runtime-profile-picker.d.ts +3 -3
- package/dist/data/ai/sandbox-kind-meta.d.ts +1 -1
- package/dist/data/ai/session-categories.d.ts +2 -2
- package/dist/data/ai/session-cost.d.ts +2 -2
- package/dist/data/ai/session-tones.d.ts +1 -1
- package/dist/data/ai/tool-name.d.ts +1 -1
- package/dist/data/cache-browser/CacheBrowser.d.ts +2 -2
- package/dist/data/cache-browser/CacheDetailPanel.d.ts +3 -3
- package/dist/data/cache-browser/CacheStatsOverview.d.ts +2 -2
- package/dist/data/cache-browser/CacheTree.d.ts +3 -3
- package/dist/data/cache-browser/CacheValue.d.ts +1 -1
- package/dist/data/cache-browser/adapter.d.ts +2 -2
- package/dist/data/cache-browser/api.d.ts +1 -1
- package/dist/data/cache-browser/cache-browser.fixtures.d.ts +2 -2
- package/dist/data/cache-browser/index.d.ts +8 -8
- package/dist/data/cells/EntityCell.d.ts +2 -2
- package/dist/data/cells/StatusDot.d.ts +1 -1
- package/dist/data/cells/TagList.d.ts +1 -1
- package/dist/data/cells/Timestamp.d.ts +1 -1
- package/dist/data/cells/status-mapping.d.ts +1 -1
- package/dist/data/cells/tag-utils.d.ts +1 -1
- package/dist/data/cells/timestamp-format.d.ts +1 -1
- package/dist/data/chat/Attachment.d.ts +2 -2
- package/dist/data/chat/Chat.d.ts +5 -5
- package/dist/data/chat/Chat.fixtures.d.ts +1 -1
- package/dist/data/chat/Chat.runtime.d.ts +2 -2
- package/dist/data/chat/ChatRuntimeToolbar.d.ts +2 -2
- package/dist/data/chat/ContextMeter.bar.d.ts +1 -1
- package/dist/data/chat/ContextMeter.d.ts +1 -1
- package/dist/data/chat/Conversation.d.ts +2 -2
- package/dist/data/chat/Message.d.ts +1 -1
- package/dist/data/chat/ModelSelector.d.ts +3 -3
- package/dist/data/chat/PromptInput.d.ts +2 -2
- package/dist/data/chat/Suggestion.d.ts +1 -1
- package/dist/data/chat/ToolCall.d.ts +2 -2
- package/dist/data/chat/approval.d.ts +1 -1
- package/dist/data/chat/attachment-upload.d.ts +1 -1
- package/dist/data/chat/clickyOperationsToTools.d.ts +2 -2
- package/dist/data/chat/effort-icons.d.ts +1 -1
- package/dist/data/chat/index.d.ts +20 -20
- package/dist/data/chat/models.d.ts +1 -1
- package/dist/data/chat/provider-icons.d.ts +1 -1
- package/dist/data/chat/tool-policy.d.ts +1 -1
- package/dist/data/chat/tool-render/ToolParams.d.ts +2 -2
- package/dist/data/chat/tool-render/ToolValue.d.ts +1 -1
- package/dist/data/chat/tool-render/adapter.d.ts +1 -1
- package/dist/data/chat/tool-render/context.d.ts +1 -1
- package/dist/data/chat/tool-render/defaults.d.ts +1 -1
- package/dist/data/chat/tool-render/index.d.ts +12 -12
- package/dist/data/chat/tool-render/known-tool-views.d.ts +1 -1
- package/dist/data/chat/tool-render/known-tools.d.ts +1 -1
- package/dist/data/chat/tool-render/registry.d.ts +1 -1
- package/dist/data/chat/tool-render/schema.d.ts +2 -2
- package/dist/data/chat/tool-render/shape.d.ts +2 -2
- package/dist/data/chat/tool-render/summary.d.ts +1 -1
- package/dist/data/chat/types.d.ts +1 -1
- package/dist/data/chat/usage-snapshot.d.ts +2 -2
- package/dist/data/clicky-export/ClickyExportDialog.d.ts +1 -1
- package/dist/data/clicky-export/index.d.ts +2 -2
- package/dist/data/clicky-export/useClickyExport.d.ts +2 -2
- package/dist/data/clicky-parse.d.ts +1 -1
- package/dist/data/code-block-actions.d.ts +1 -1
- package/dist/data/data-table-filter-values.d.ts +1 -1
- package/dist/data/data-table-server-filters.d.ts +4 -4
- package/dist/data/data-table-utils.d.ts +1 -1
- package/dist/data/diagnostics/DiagnosticsDetailPanel.d.ts +3 -3
- package/dist/data/diagnostics/DiagnosticsTree.d.ts +1 -1
- package/dist/data/diagnostics/ErrorDetails.d.ts +1 -1
- package/dist/data/diagnostics/FrameSourceWindow.d.ts +1 -1
- package/dist/data/diagnostics/GoroutineCard.d.ts +1 -1
- package/dist/data/diagnostics/JvmStackTrace.d.ts +3 -3
- package/dist/data/diagnostics/RenderedStackTrace.d.ts +3 -3
- package/dist/data/diagnostics/StackFrameRow.d.ts +1 -1
- package/dist/data/diagnostics/ThreadCard.d.ts +3 -3
- package/dist/data/diagnostics/fixtures.d.ts +1 -1
- package/dist/data/diagnostics/stacktrace-parse.d.ts +1 -1
- package/dist/data/diagnostics/stacktrace.d.ts +1 -1
- package/dist/data/diagnostics/utils.d.ts +3 -3
- package/dist/data/examples/markdown-preview-mock.d.ts +1 -1
- package/dist/data/gauge-stats.d.ts +1 -1
- package/dist/data/git/index.d.ts +2 -2
- package/dist/data/har/HarPanel.d.ts +1 -1
- package/dist/data/har/fixtures.d.ts +1 -1
- package/dist/data/properties-context.d.ts +1 -1
- package/dist/data/query-browser/QueryBrowser.d.ts +1 -1
- package/dist/data/query-browser/QueryBrowser.editor.d.ts +1 -1
- package/dist/data/query-browser/QueryBrowser.types.d.ts +6 -6
- package/dist/data/query-browser/QueryBrowserDiagnosticsPanel.d.ts +1 -1
- package/dist/data/query-browser/QueryBrowserResults.d.ts +3 -3
- package/dist/data/query-browser/index.d.ts +3 -3
- package/dist/data/runtime/ProviderStatusPanel.d.ts +2 -2
- package/dist/data/runtime/RuntimeBar.d.ts +3 -3
- package/dist/data/runtime/RuntimeBar.model.d.ts +3 -3
- package/dist/data/runtime/RuntimeBarActions.d.ts +2 -2
- package/dist/data/runtime/RuntimeBarCombo.d.ts +3 -3
- package/dist/data/runtime/RuntimeBarSegment.d.ts +1 -1
- package/dist/data/runtime/RuntimeBarSegments.d.ts +3 -3
- package/dist/data/runtime/availability.d.ts +1 -1
- package/dist/data/runtime/model-capabilities.d.ts +1 -1
- package/dist/data/runtime/provider-status.d.ts +2 -2
- package/dist/data/runtime/runtime-field-support.d.ts +4 -4
- package/dist/data/runtime/runtime-mode.d.ts +6 -6
- package/dist/data/schema-viewer-model.d.ts +1 -1
- package/dist/data/selectionActionSplit.d.ts +1 -1
- package/dist/data/status-breakdown-utils.d.ts +1 -1
- package/dist/data/task-copy.d.ts +1 -1
- package/dist/data/task-exec-details.d.ts +1 -1
- package/dist/data/task-process-details.d.ts +2 -2
- package/dist/data/task-resource-summary.d.ts +1 -1
- package/dist/data/task-status.d.ts +3 -3
- package/dist/data/task-streams.d.ts +1 -1
- package/dist/data/task-work-progress.d.ts +1 -1
- package/dist/data/test-runner/TestFailureDetail.d.ts +1 -1
- package/dist/data/test-runner/TestFilterBar.d.ts +2 -2
- package/dist/data/test-runner/TestRunSummary.d.ts +1 -1
- package/dist/data/test-runner/TestRunner.d.ts +3 -3
- package/dist/data/test-runner/TestRunner.fixtures.d.ts +2 -2
- package/dist/data/test-runner/TestTreeNode.d.ts +1 -1
- package/dist/data/test-runner/adapter.d.ts +2 -2
- package/dist/data/test-runner/context.d.ts +3 -3
- package/dist/data/test-runner/frameworkIcon.d.ts +1 -1
- package/dist/data/test-runner/index.d.ts +14 -14
- package/dist/data/test-runner/routePath.d.ts +1 -1
- package/dist/data/test-runner/status.d.ts +4 -4
- package/dist/data/timeseries-query.cjs +51 -0
- package/dist/data/timeseries-query.cjs.map +1 -0
- package/dist/data/timeseries-query.d.ts +31 -0
- package/dist/data/timeseries-query.d.ts.map +1 -0
- package/dist/data/timeseries-query.js +51 -0
- package/dist/data/timeseries-query.js.map +1 -0
- package/dist/data/use-infinite-rows.d.ts +1 -1
- package/dist/data/useDebugAction.d.ts +1 -1
- package/dist/data/verification/VerificationResults.d.ts +2 -2
- package/dist/data/verification/adapterViews.d.ts +1 -1
- package/dist/data/verification/adapters.d.ts +1 -1
- package/dist/data/verification/index.d.ts +4 -4
- package/dist/data/verification/verifyReportTests.d.ts +2 -2
- package/dist/data/version-info.cjs +3 -3
- package/dist/data/version-info.js +3 -3
- package/dist/data.cjs +1 -0
- package/dist/data.cjs.map +1 -1
- package/dist/data.d.ts +119 -119
- package/dist/data.d.ts.map +1 -1
- package/dist/data.js +3 -2
- package/dist/devtools/DebugConsole.d.ts +3 -3
- package/dist/devtools/DebugConsoleButton.d.ts +1 -1
- package/dist/devtools/DebugConsoleDock.d.ts +2 -2
- package/dist/devtools/ExecutionDetail.d.ts +2 -2
- package/dist/devtools/debugClient.d.ts +1 -1
- package/dist/devtools/debugStore.d.ts +1 -1
- package/dist/devtools/dockState.d.ts +1 -1
- package/dist/devtools/tabs/ConsoleTab.d.ts +1 -1
- package/dist/devtools/tabs/InspectionCaches.d.ts +2 -2
- package/dist/devtools/tabs/InspectionTab.d.ts +2 -2
- package/dist/devtools/tabs/NetworkTab.d.ts +2 -2
- package/dist/devtools/tabs/QueriesTab.d.ts +2 -2
- package/dist/devtools/types.d.ts +2 -2
- package/dist/devtools/useDebugStream.d.ts +2 -2
- package/dist/devtools.d.ts +28 -28
- package/dist/expressions/lang/attributes.d.ts +1 -1
- package/dist/expressions/lang/completion.d.ts +1 -1
- package/dist/expressions/lang/generated/index.d.ts +1 -1
- package/dist/expressions/lang/hover.d.ts +1 -1
- package/dist/expressions/lang/index.d.ts +13 -13
- package/dist/expressions/lang/merge.d.ts +1 -1
- package/dist/expressions/lang/prefix.d.ts +1 -1
- package/dist/expressions/lang/spec.d.ts +2 -2
- package/dist/expressions/lang/theme.d.ts +1 -1
- package/dist/expressions/playground/ExpressionPlayground.d.ts +3 -3
- package/dist/expressions/playground/RunControls.d.ts +1 -1
- package/dist/expressions/playground/api.d.ts +2 -2
- package/dist/expressions/playground/languages.d.ts +2 -2
- package/dist/expressions/playground/panels/ExpectationStrip.d.ts +1 -1
- package/dist/expressions/playground/panels/ResultPanel.d.ts +1 -1
- package/dist/expressions/playground/panels/ResultView.d.ts +3 -3
- package/dist/expressions/playground/panels/SamplesPanel.d.ts +2 -2
- package/dist/expressions/playground/panels/SpecPanel.d.ts +1 -1
- package/dist/expressions/playground/panels/graphNodes.d.ts +2 -2
- package/dist/expressions/playground/sampleOutcome.d.ts +1 -1
- package/dist/expressions/playground/useEvaluator.d.ts +1 -1
- package/dist/expressions/playground/useSampleRuns.d.ts +3 -3
- package/dist/expressions/playground.d.ts +14 -14
- package/dist/expressions.d.ts +1 -1
- package/dist/hooks/density-provider.d.ts +1 -1
- package/dist/hooks/theme-provider.d.ts +1 -1
- package/dist/hooks/use-log-tail.d.ts +2 -2
- package/dist/hooks/use-prompts.d.ts +1 -1
- package/dist/hooks/use-task-run.d.ts +2 -2
- package/dist/hooks.d.ts +13 -13
- package/dist/icons/changeIconAliases.d.ts +1 -1
- package/dist/icons/components/UiAccessProtected.d.ts +1 -1
- package/dist/icons/components/UiAccessPublic.d.ts +1 -1
- package/dist/icons/components/UiActivity.d.ts +1 -1
- package/dist/icons/components/UiAdd.d.ts +1 -1
- package/dist/icons/components/UiAddChangeset.d.ts +1 -1
- package/dist/icons/components/UiAggregate.d.ts +1 -1
- package/dist/icons/components/UiAlias.d.ts +1 -1
- package/dist/icons/components/UiAnnotation.d.ts +1 -1
- package/dist/icons/components/UiAopAroundAdvice.d.ts +1 -1
- package/dist/icons/components/UiAopBeforeAdvice.d.ts +1 -1
- package/dist/icons/components/UiAopPointcut.d.ts +1 -1
- package/dist/icons/components/UiArchive.d.ts +1 -1
- package/dist/icons/components/UiArray.d.ts +1 -1
- package/dist/icons/components/UiArrowDown.d.ts +1 -1
- package/dist/icons/components/UiArrowDownRight.d.ts +1 -1
- package/dist/icons/components/UiArrowFatUp.d.ts +1 -1
- package/dist/icons/components/UiArrowLeft.d.ts +1 -1
- package/dist/icons/components/UiArrowRight.d.ts +1 -1
- package/dist/icons/components/UiArrowUp.d.ts +1 -1
- package/dist/icons/components/UiArrowUpRight.d.ts +1 -1
- package/dist/icons/components/UiArrowsCounterClockwise.d.ts +1 -1
- package/dist/icons/components/UiArtifact.d.ts +1 -1
- package/dist/icons/components/UiAsterisk.d.ts +1 -1
- package/dist/icons/components/UiAsyncFn.d.ts +1 -1
- package/dist/icons/components/UiAt.d.ts +1 -1
- package/dist/icons/components/UiAtom.d.ts +1 -1
- package/dist/icons/components/UiAttachDebugger.d.ts +1 -1
- package/dist/icons/components/UiAttachToProcess.d.ts +1 -1
- package/dist/icons/components/UiAuditLog.d.ts +1 -1
- package/dist/icons/components/UiBank.d.ts +1 -1
- package/dist/icons/components/UiBatteryChargingVertical.d.ts +1 -1
- package/dist/icons/components/UiBatteryVerticalEmpty.d.ts +1 -1
- package/dist/icons/components/UiBatteryVerticalFull.d.ts +1 -1
- package/dist/icons/components/UiBatteryVerticalHigh.d.ts +1 -1
- package/dist/icons/components/UiBatteryVerticalLow.d.ts +1 -1
- package/dist/icons/components/UiBatteryVerticalMedium.d.ts +1 -1
- package/dist/icons/components/UiBeaker.d.ts +1 -1
- package/dist/icons/components/UiBell.d.ts +1 -1
- package/dist/icons/components/UiBellSlash.d.ts +1 -1
- package/dist/icons/components/UiBinary.d.ts +1 -1
- package/dist/icons/components/UiBlueKey.d.ts +1 -1
- package/dist/icons/components/UiBoolean.d.ts +1 -1
- package/dist/icons/components/UiBox.d.ts +1 -1
- package/dist/icons/components/UiBoxes.d.ts +1 -1
- package/dist/icons/components/UiBraces.d.ts +1 -1
- package/dist/icons/components/UiBrain.d.ts +1 -1
- package/dist/icons/components/UiBreakpoint.d.ts +1 -1
- package/dist/icons/components/UiBreakpoint1.d.ts +1 -1
- package/dist/icons/components/UiBreakpoint2.d.ts +1 -1
- package/dist/icons/components/UiBreakpoint3.d.ts +1 -1
- package/dist/icons/components/UiBreakpoint4.d.ts +1 -1
- package/dist/icons/components/UiBreakpointDisabled.d.ts +1 -1
- package/dist/icons/components/UiBreakpointField.d.ts +1 -1
- package/dist/icons/components/UiBreakpointMethod.d.ts +1 -1
- package/dist/icons/components/UiBroadcast.d.ts +1 -1
- package/dist/icons/components/UiBug.d.ts +1 -1
- package/dist/icons/components/UiCache.d.ts +1 -1
- package/dist/icons/components/UiCalculator.d.ts +1 -1
- package/dist/icons/components/UiCalendar.d.ts +1 -1
- package/dist/icons/components/UiCalendarBlank.d.ts +1 -1
- package/dist/icons/components/UiCalendarCheck.d.ts +1 -1
- package/dist/icons/components/UiCamera.d.ts +1 -1
- package/dist/icons/components/UiCancel.d.ts +1 -1
- package/dist/icons/components/UiChartBar.d.ts +1 -1
- package/dist/icons/components/UiChartLineUp.d.ts +1 -1
- package/dist/icons/components/UiChartOfAccounts.d.ts +1 -1
- package/dist/icons/components/UiChartPie.d.ts +1 -1
- package/dist/icons/components/UiChatDots.d.ts +1 -1
- package/dist/icons/components/UiCheck.d.ts +1 -1
- package/dist/icons/components/UiCheckConstraint.d.ts +1 -1
- package/dist/icons/components/UiChevronDown.d.ts +1 -1
- package/dist/icons/components/UiChevronRight.d.ts +1 -1
- package/dist/icons/components/UiChevronUp.d.ts +1 -1
- package/dist/icons/components/UiChevronsDown.d.ts +1 -1
- package/dist/icons/components/UiChevronsUp.d.ts +1 -1
- package/dist/icons/components/UiChip.d.ts +1 -1
- package/dist/icons/components/UiCircleFilled.d.ts +1 -1
- package/dist/icons/components/UiCircleOutline.d.ts +1 -1
- package/dist/icons/components/UiCircleX.d.ts +1 -1
- package/dist/icons/components/UiClass.d.ts +1 -1
- package/dist/icons/components/UiClass1.d.ts +1 -1
- package/dist/icons/components/UiClass2.d.ts +1 -1
- package/dist/icons/components/UiClass3.d.ts +1 -1
- package/dist/icons/components/UiClass4.d.ts +1 -1
- package/dist/icons/components/UiClass5.d.ts +1 -1
- package/dist/icons/components/UiClass6.d.ts +1 -1
- package/dist/icons/components/UiClass7.d.ts +1 -1
- package/dist/icons/components/UiClearCash.d.ts +1 -1
- package/dist/icons/components/UiClipboardText.d.ts +1 -1
- package/dist/icons/components/UiClock.d.ts +1 -1
- package/dist/icons/components/UiClockCountdown.d.ts +1 -1
- package/dist/icons/components/UiClose.d.ts +1 -1
- package/dist/icons/components/UiCloud.d.ts +1 -1
- package/dist/icons/components/UiCloudDownload.d.ts +1 -1
- package/dist/icons/components/UiCloudUpload.d.ts +1 -1
- package/dist/icons/components/UiCode2.d.ts +1 -1
- package/dist/icons/components/UiCog.d.ts +1 -1
- package/dist/icons/components/UiCoins.d.ts +1 -1
- package/dist/icons/components/UiCollapseAll.d.ts +1 -1
- package/dist/icons/components/UiCollection.d.ts +1 -1
- package/dist/icons/components/UiCollectionType.d.ts +1 -1
- package/dist/icons/components/UiColumn.d.ts +1 -1
- package/dist/icons/components/UiColumn1.d.ts +1 -1
- package/dist/icons/components/UiColumn2.d.ts +1 -1
- package/dist/icons/components/UiColumn3.d.ts +1 -1
- package/dist/icons/components/UiColumn4.d.ts +1 -1
- package/dist/icons/components/UiColumn5.d.ts +1 -1
- package/dist/icons/components/UiColumns.d.ts +1 -1
- package/dist/icons/components/UiCommand.d.ts +1 -1
- package/dist/icons/components/UiComment.d.ts +1 -1
- package/dist/icons/components/UiCompass.d.ts +1 -1
- package/dist/icons/components/UiConfig.d.ts +1 -1
- package/dist/icons/components/UiConfigMap.d.ts +1 -1
- package/dist/icons/components/UiConnector.d.ts +1 -1
- package/dist/icons/components/UiConstant.d.ts +1 -1
- package/dist/icons/components/UiConstant1.d.ts +1 -1
- package/dist/icons/components/UiConstructor.d.ts +1 -1
- package/dist/icons/components/UiConverter.d.ts +1 -1
- package/dist/icons/components/UiConverter1.d.ts +1 -1
- package/dist/icons/components/UiCopy.d.ts +1 -1
- package/dist/icons/components/UiCreateConstraint.d.ts +1 -1
- package/dist/icons/components/UiCurrencyDollar.d.ts +1 -1
- package/dist/icons/components/UiCursorClick.d.ts +1 -1
- package/dist/icons/components/UiCursorText.d.ts +1 -1
- package/dist/icons/components/UiCustomResource.d.ts +1 -1
- package/dist/icons/components/UiDataSchema.d.ts +1 -1
- package/dist/icons/components/UiDataShare.d.ts +1 -1
- package/dist/icons/components/UiDatabase.d.ts +1 -1
- package/dist/icons/components/UiDatabaseEventStream.d.ts +1 -1
- package/dist/icons/components/UiDatabaseLink.d.ts +1 -1
- package/dist/icons/components/UiDatabaseZap.d.ts +1 -1
- package/dist/icons/components/UiDebug.d.ts +1 -1
- package/dist/icons/components/UiDebugContinue.d.ts +1 -1
- package/dist/icons/components/UiDebugDisabled.d.ts +1 -1
- package/dist/icons/components/UiDebugSelection.d.ts +1 -1
- package/dist/icons/components/UiDebugSmall.d.ts +1 -1
- package/dist/icons/components/UiDebugStepInto.d.ts +1 -1
- package/dist/icons/components/UiDebugStepOut.d.ts +1 -1
- package/dist/icons/components/UiDebugStepOver.d.ts +1 -1
- package/dist/icons/components/UiDebugStop.d.ts +1 -1
- package/dist/icons/components/UiDecorator.d.ts +1 -1
- package/dist/icons/components/UiDeploy.d.ts +1 -1
- package/dist/icons/components/UiDesktop.d.ts +1 -1
- package/dist/icons/components/UiDetach.d.ts +1 -1
- package/dist/icons/components/UiDiagramDiff.d.ts +1 -1
- package/dist/icons/components/UiDiff.d.ts +1 -1
- package/dist/icons/components/UiDotsVertical.d.ts +1 -1
- package/dist/icons/components/UiDownload.d.ts +1 -1
- package/dist/icons/components/UiDumpThreads.d.ts +1 -1
- package/dist/icons/components/UiEdit.d.ts +1 -1
- package/dist/icons/components/UiEditMode.d.ts +1 -1
- package/dist/icons/components/UiEllipsis.d.ts +1 -1
- package/dist/icons/components/UiEllipsisBold.d.ts +1 -1
- package/dist/icons/components/UiEndpoint.d.ts +1 -1
- package/dist/icons/components/UiEnum.d.ts +1 -1
- package/dist/icons/components/UiEnumMember.d.ts +1 -1
- package/dist/icons/components/UiEnvelope.d.ts +1 -1
- package/dist/icons/components/UiError.d.ts +1 -1
- package/dist/icons/components/UiEvaluateExpression.d.ts +1 -1
- package/dist/icons/components/UiEvent.d.ts +1 -1
- package/dist/icons/components/UiException.d.ts +1 -1
- package/dist/icons/components/UiExceptionAnalyzerImportant.d.ts +1 -1
- package/dist/icons/components/UiExcludedGenerated.d.ts +1 -1
- package/dist/icons/components/UiExpandAll.d.ts +1 -1
- package/dist/icons/components/UiExport.d.ts +1 -1
- package/dist/icons/components/UiExtension.d.ts +1 -1
- package/dist/icons/components/UiExternalLink.d.ts +1 -1
- package/dist/icons/components/UiEye.d.ts +1 -1
- package/dist/icons/components/UiEyeClosed.d.ts +1 -1
- package/dist/icons/components/UiFactory.d.ts +1 -1
- package/dist/icons/components/UiFailedInProgress.d.ts +1 -1
- package/dist/icons/components/UiFastForwardCircle.d.ts +1 -1
- package/dist/icons/components/UiField.d.ts +1 -1
- package/dist/icons/components/UiField1.d.ts +1 -1
- package/dist/icons/components/UiField2.d.ts +1 -1
- package/dist/icons/components/UiField3.d.ts +1 -1
- package/dist/icons/components/UiField4.d.ts +1 -1
- package/dist/icons/components/UiField5.d.ts +1 -1
- package/dist/icons/components/UiField6.d.ts +1 -1
- package/dist/icons/components/UiFieldProtected.d.ts +1 -1
- package/dist/icons/components/UiFieldReadAccess.d.ts +1 -1
- package/dist/icons/components/UiFieldType.d.ts +1 -1
- package/dist/icons/components/UiFieldWriteAccess.d.ts +1 -1
- package/dist/icons/components/UiFile.d.ts +1 -1
- package/dist/icons/components/UiFileCode.d.ts +1 -1
- package/dist/icons/components/UiFileCog.d.ts +1 -1
- package/dist/icons/components/UiFileFormat.d.ts +1 -1
- package/dist/icons/components/UiFileJson.d.ts +1 -1
- package/dist/icons/components/UiFilePlus.d.ts +1 -1
- package/dist/icons/components/UiFileSearch.d.ts +1 -1
- package/dist/icons/components/UiFileSpreadsheet.d.ts +1 -1
- package/dist/icons/components/UiFileText.d.ts +1 -1
- package/dist/icons/components/UiFileType.d.ts +1 -1
- package/dist/icons/components/UiFilter.d.ts +1 -1
- package/dist/icons/components/UiFingerprint.d.ts +1 -1
- package/dist/icons/components/UiFolder.d.ts +1 -1
- package/dist/icons/components/UiFolderGit.d.ts +1 -1
- package/dist/icons/components/UiFolderGit2.d.ts +1 -1
- package/dist/icons/components/UiForeignServer.d.ts +1 -1
- package/dist/icons/components/UiForm.d.ts +1 -1
- package/dist/icons/components/UiFreemarker.d.ts +1 -1
- package/dist/icons/components/UiFullscreen.d.ts +1 -1
- package/dist/icons/components/UiFunction.d.ts +1 -1
- package/dist/icons/components/UiFunction1.d.ts +1 -1
- package/dist/icons/components/UiFunction2.d.ts +1 -1
- package/dist/icons/components/UiFunction3.d.ts +1 -1
- package/dist/icons/components/UiFunction4.d.ts +1 -1
- package/dist/icons/components/UiFunctionSquare.d.ts +1 -1
- package/dist/icons/components/UiFunnelData.d.ts +1 -1
- package/dist/icons/components/UiGavel.d.ts +1 -1
- package/dist/icons/components/UiGearSix.d.ts +1 -1
- package/dist/icons/components/UiGitBranch.d.ts +1 -1
- package/dist/icons/components/UiGitCommit.d.ts +1 -1
- package/dist/icons/components/UiGitGraph.d.ts +1 -1
- package/dist/icons/components/UiGitMerge.d.ts +1 -1
- package/dist/icons/components/UiGitPr.d.ts +1 -1
- package/dist/icons/components/UiGlobe.d.ts +1 -1
- package/dist/icons/components/UiGraph.d.ts +1 -1
- package/dist/icons/components/UiGreyKey.d.ts +1 -1
- package/dist/icons/components/UiGrid.d.ts +1 -1
- package/dist/icons/components/UiGroupByModuleGroup.d.ts +1 -1
- package/dist/icons/components/UiGroupByPackage.d.ts +1 -1
- package/dist/icons/components/UiGroupByTestProduction.d.ts +1 -1
- package/dist/icons/components/UiHandCoins.d.ts +1 -1
- package/dist/icons/components/UiHandPalm.d.ts +1 -1
- package/dist/icons/components/UiHardDrive.d.ts +1 -1
- package/dist/icons/components/UiHibernate.d.ts +1 -1
- package/dist/icons/components/UiHibernateEvent.d.ts +1 -1
- package/dist/icons/components/UiHistory.d.ts +1 -1
- package/dist/icons/components/UiHome.d.ts +1 -1
- package/dist/icons/components/UiHourglass.d.ts +1 -1
- package/dist/icons/components/UiHubot.d.ts +1 -1
- package/dist/icons/components/UiId.d.ts +1 -1
- package/dist/icons/components/UiIdentificationCard.d.ts +1 -1
- package/dist/icons/components/UiImage.d.ts +1 -1
- package/dist/icons/components/UiImport.d.ts +1 -1
- package/dist/icons/components/UiInbox.d.ts +1 -1
- package/dist/icons/components/UiIndex.d.ts +1 -1
- package/dist/icons/components/UiIndex1.d.ts +1 -1
- package/dist/icons/components/UiIndex2.d.ts +1 -1
- package/dist/icons/components/UiIndex3.d.ts +1 -1
- package/dist/icons/components/UiIndex4.d.ts +1 -1
- package/dist/icons/components/UiIndex5.d.ts +1 -1
- package/dist/icons/components/UiIndex6.d.ts +1 -1
- package/dist/icons/components/UiInfo.d.ts +1 -1
- package/dist/icons/components/UiInsightAvailability.d.ts +1 -1
- package/dist/icons/components/UiInsightCompliance.d.ts +1 -1
- package/dist/icons/components/UiInsightCost.d.ts +1 -1
- package/dist/icons/components/UiInsightIntegration.d.ts +1 -1
- package/dist/icons/components/UiInsightPerformance.d.ts +1 -1
- package/dist/icons/components/UiInsightRecommendation.d.ts +1 -1
- package/dist/icons/components/UiInsightReliability.d.ts +1 -1
- package/dist/icons/components/UiInsightSecurity.d.ts +1 -1
- package/dist/icons/components/UiInsightTechnicalDebt.d.ts +1 -1
- package/dist/icons/components/UiInspectionsGrammar.d.ts +1 -1
- package/dist/icons/components/UiInterface.d.ts +1 -1
- package/dist/icons/components/UiInvoice.d.ts +1 -1
- package/dist/icons/components/UiJpaAttribute.d.ts +1 -1
- package/dist/icons/components/UiJpaId.d.ts +1 -1
- package/dist/icons/components/UiJpaRelationship.d.ts +1 -1
- package/dist/icons/components/UiJson.d.ts +1 -1
- package/dist/icons/components/UiKanban.d.ts +1 -1
- package/dist/icons/components/UiKey.d.ts +1 -1
- package/dist/icons/components/UiKeyboard.d.ts +1 -1
- package/dist/icons/components/UiKeyword.d.ts +1 -1
- package/dist/icons/components/UiKillDataSourceProcess.d.ts +1 -1
- package/dist/icons/components/UiKubeConfigMap.d.ts +1 -1
- package/dist/icons/components/UiKubeDeployment.d.ts +1 -1
- package/dist/icons/components/UiKubeJob.d.ts +1 -1
- package/dist/icons/components/UiKubeNamespace.d.ts +1 -1
- package/dist/icons/components/UiKubePod.d.ts +1 -1
- package/dist/icons/components/UiLambda.d.ts +1 -1
- package/dist/icons/components/UiLangJava.d.ts +1 -1
- package/dist/icons/components/UiLangJavascript.d.ts +1 -1
- package/dist/icons/components/UiLangPython.d.ts +1 -1
- package/dist/icons/components/UiLayers.d.ts +1 -1
- package/dist/icons/components/UiLayoutDashboard.d.ts +1 -1
- package/dist/icons/components/UiLedger.d.ts +1 -1
- package/dist/icons/components/UiLightbulb.d.ts +1 -1
- package/dist/icons/components/UiLink.d.ts +1 -1
- package/dist/icons/components/UiLinkExternal.d.ts +1 -1
- package/dist/icons/components/UiListChecks.d.ts +1 -1
- package/dist/icons/components/UiListDashes.d.ts +1 -1
- package/dist/icons/components/UiListFlat.d.ts +1 -1
- package/dist/icons/components/UiListOrdered.d.ts +1 -1
- package/dist/icons/components/UiListTree.d.ts +1 -1
- package/dist/icons/components/UiLoader.d.ts +1 -1
- package/dist/icons/components/UiLocation.d.ts +1 -1
- package/dist/icons/components/UiLock.d.ts +1 -1
- package/dist/icons/components/UiLockKey.d.ts +1 -1
- package/dist/icons/components/UiLockOpen.d.ts +1 -1
- package/dist/icons/components/UiLogoAnthropic.d.ts +1 -1
- package/dist/icons/components/UiLogoClaude.d.ts +1 -1
- package/dist/icons/components/UiLogoDeepseek.d.ts +1 -1
- package/dist/icons/components/UiLogoGemini.d.ts +1 -1
- package/dist/icons/components/UiLogoGoogle.d.ts +1 -1
- package/dist/icons/components/UiLogoHuggingface.d.ts +1 -1
- package/dist/icons/components/UiLogoMeta.d.ts +1 -1
- package/dist/icons/components/UiLogoMistral.d.ts +1 -1
- package/dist/icons/components/UiLogoOllama.d.ts +1 -1
- package/dist/icons/components/UiLogoOpenai.d.ts +1 -1
- package/dist/icons/components/UiLogoPerplexity.d.ts +1 -1
- package/dist/icons/components/UiMagicWand.d.ts +1 -1
- package/dist/icons/components/UiMarkdown.d.ts +1 -1
- package/dist/icons/components/UiMaterializedLog.d.ts +1 -1
- package/dist/icons/components/UiMemoryProfile.d.ts +1 -1
- package/dist/icons/components/UiMemoryStick.d.ts +1 -1
- package/dist/icons/components/UiMenu.d.ts +1 -1
- package/dist/icons/components/UiMessageQueue.d.ts +1 -1
- package/dist/icons/components/UiMessageQueue1.d.ts +1 -1
- package/dist/icons/components/UiMethod.d.ts +1 -1
- package/dist/icons/components/UiMethod1.d.ts +1 -1
- package/dist/icons/components/UiMethod10.d.ts +1 -1
- package/dist/icons/components/UiMethod11.d.ts +1 -1
- package/dist/icons/components/UiMethod2.d.ts +1 -1
- package/dist/icons/components/UiMethod3.d.ts +1 -1
- package/dist/icons/components/UiMethod4.d.ts +1 -1
- package/dist/icons/components/UiMethod5.d.ts +1 -1
- package/dist/icons/components/UiMethod6.d.ts +1 -1
- package/dist/icons/components/UiMethod7.d.ts +1 -1
- package/dist/icons/components/UiMethod8.d.ts +1 -1
- package/dist/icons/components/UiMethod9.d.ts +1 -1
- package/dist/icons/components/UiModels.d.ts +1 -1
- package/dist/icons/components/UiModule.d.ts +1 -1
- package/dist/icons/components/UiModule1.d.ts +1 -1
- package/dist/icons/components/UiMoon.d.ts +1 -1
- package/dist/icons/components/UiName.d.ts +1 -1
- package/dist/icons/components/UiNamespace.d.ts +1 -1
- package/dist/icons/components/UiNetwork.d.ts +1 -1
- package/dist/icons/components/UiNull.d.ts +1 -1
- package/dist/icons/components/UiNumeric.d.ts +1 -1
- package/dist/icons/components/UiObject.d.ts +1 -1
- package/dist/icons/components/UiOpenBlock.d.ts +1 -1
- package/dist/icons/components/UiOpenScad.d.ts +1 -1
- package/dist/icons/components/UiOperator.d.ts +1 -1
- package/dist/icons/components/UiOperator1.d.ts +1 -1
- package/dist/icons/components/UiOrganization.d.ts +1 -1
- package/dist/icons/components/UiPackage.d.ts +1 -1
- package/dist/icons/components/UiPalette.d.ts +1 -1
- package/dist/icons/components/UiParameter.d.ts +1 -1
- package/dist/icons/components/UiPartition.d.ts +1 -1
- package/dist/icons/components/UiPass.d.ts +1 -1
- package/dist/icons/components/UiPause.d.ts +1 -1
- package/dist/icons/components/UiPauseCircle.d.ts +1 -1
- package/dist/icons/components/UiPencilSimpleLine.d.ts +1 -1
- package/dist/icons/components/UiPending.d.ts +1 -1
- package/dist/icons/components/UiPercent.d.ts +1 -1
- package/dist/icons/components/UiPhone.d.ts +1 -1
- package/dist/icons/components/UiPlay.d.ts +1 -1
- package/dist/icons/components/UiPlayCircle.d.ts +1 -1
- package/dist/icons/components/UiPlaybook.d.ts +1 -1
- package/dist/icons/components/UiPlug.d.ts +1 -1
- package/dist/icons/components/UiPluginModule.d.ts +1 -1
- package/dist/icons/components/UiPluginV2.d.ts +1 -1
- package/dist/icons/components/UiPlugsConnected.d.ts +1 -1
- package/dist/icons/components/UiPointcut.d.ts +1 -1
- package/dist/icons/components/UiProcedure.d.ts +1 -1
- package/dist/icons/components/UiProfile.d.ts +1 -1
- package/dist/icons/components/UiProfile1.d.ts +1 -1
- package/dist/icons/components/UiProfile2.d.ts +1 -1
- package/dist/icons/components/UiProfile3.d.ts +1 -1
- package/dist/icons/components/UiProfile4.d.ts +1 -1
- package/dist/icons/components/UiProfiler.d.ts +1 -1
- package/dist/icons/components/UiProfilerBackTrace.d.ts +1 -1
- package/dist/icons/components/UiProfilerMergeCallees.d.ts +1 -1
- package/dist/icons/components/UiProhibit.d.ts +1 -1
- package/dist/icons/components/UiProjectStructure.d.ts +1 -1
- package/dist/icons/components/UiProjection.d.ts +1 -1
- package/dist/icons/components/UiProperty.d.ts +1 -1
- package/dist/icons/components/UiPulse.d.ts +1 -1
- package/dist/icons/components/UiPuzzle.d.ts +1 -1
- package/dist/icons/components/UiQuestion.d.ts +1 -1
- package/dist/icons/components/UiQueue.d.ts +1 -1
- package/dist/icons/components/UiReadAccess.d.ts +1 -1
- package/dist/icons/components/UiReceipt.d.ts +1 -1
- package/dist/icons/components/UiRecord.d.ts +1 -1
- package/dist/icons/components/UiRecord1.d.ts +1 -1
- package/dist/icons/components/UiRefresh.d.ts +1 -1
- package/dist/icons/components/UiRegex.d.ts +1 -1
- package/dist/icons/components/UiRelationship.d.ts +1 -1
- package/dist/icons/components/UiRelay.d.ts +1 -1
- package/dist/icons/components/UiRemove.d.ts +1 -1
- package/dist/icons/components/UiRepeat.d.ts +1 -1
- package/dist/icons/components/UiResizeVertical.d.ts +1 -1
- package/dist/icons/components/UiRestart.d.ts +1 -1
- package/dist/icons/components/UiRobotAi.d.ts +1 -1
- package/dist/icons/components/UiRocket.d.ts +1 -1
- package/dist/icons/components/UiRole.d.ts +1 -1
- package/dist/icons/components/UiRollback.d.ts +1 -1
- package/dist/icons/components/UiRoute.d.ts +1 -1
- package/dist/icons/components/UiRoutine.d.ts +1 -1
- package/dist/icons/components/UiRows.d.ts +1 -1
- package/dist/icons/components/UiRun.d.ts +1 -1
- package/dist/icons/components/UiRun1.d.ts +1 -1
- package/dist/icons/components/UiRun10.d.ts +1 -1
- package/dist/icons/components/UiRun11.d.ts +1 -1
- package/dist/icons/components/UiRun12.d.ts +1 -1
- package/dist/icons/components/UiRun13.d.ts +1 -1
- package/dist/icons/components/UiRun14.d.ts +1 -1
- package/dist/icons/components/UiRun2.d.ts +1 -1
- package/dist/icons/components/UiRun3.d.ts +1 -1
- package/dist/icons/components/UiRun4.d.ts +1 -1
- package/dist/icons/components/UiRun5.d.ts +1 -1
- package/dist/icons/components/UiRun6.d.ts +1 -1
- package/dist/icons/components/UiRun7.d.ts +1 -1
- package/dist/icons/components/UiRun8.d.ts +1 -1
- package/dist/icons/components/UiRun9.d.ts +1 -1
- package/dist/icons/components/UiSave.d.ts +1 -1
- package/dist/icons/components/UiScale.d.ts +1 -1
- package/dist/icons/components/UiScan.d.ts +1 -1
- package/dist/icons/components/UiScroll.d.ts +1 -1
- package/dist/icons/components/UiSealCheck.d.ts +1 -1
- package/dist/icons/components/UiSearch.d.ts +1 -1
- package/dist/icons/components/UiSecurityRole.d.ts +1 -1
- package/dist/icons/components/UiSelect.d.ts +1 -1
- package/dist/icons/components/UiSequence.d.ts +1 -1
- package/dist/icons/components/UiSequence1.d.ts +1 -1
- package/dist/icons/components/UiSequence2.d.ts +1 -1
- package/dist/icons/components/UiSequence3.d.ts +1 -1
- package/dist/icons/components/UiSequence4.d.ts +1 -1
- package/dist/icons/components/UiServer.d.ts +1 -1
- package/dist/icons/components/UiServerProcess.d.ts +1 -1
- package/dist/icons/components/UiSetKey.d.ts +1 -1
- package/dist/icons/components/UiSeverityBlocker.d.ts +1 -1
- package/dist/icons/components/UiSeverityCritical.d.ts +1 -1
- package/dist/icons/components/UiSeverityHigh.d.ts +1 -1
- package/dist/icons/components/UiSeverityInfo.d.ts +1 -1
- package/dist/icons/components/UiSeverityLow.d.ts +1 -1
- package/dist/icons/components/UiSeverityMedium.d.ts +1 -1
- package/dist/icons/components/UiSeverityWarning.d.ts +1 -1
- package/dist/icons/components/UiShare.d.ts +1 -1
- package/dist/icons/components/UiShield.d.ts +1 -1
- package/dist/icons/components/UiShieldSlash.d.ts +1 -1
- package/dist/icons/components/UiShipWheel.d.ts +1 -1
- package/dist/icons/components/UiShortcutFilter.d.ts +1 -1
- package/dist/icons/components/UiShowCurrentFrame.d.ts +1 -1
- package/dist/icons/components/UiShowMembers.d.ts +1 -1
- package/dist/icons/components/UiShowToImplement.d.ts +1 -1
- package/dist/icons/components/UiSidebar.d.ts +1 -1
- package/dist/icons/components/UiSigma.d.ts +1 -1
- package/dist/icons/components/UiSignIn.d.ts +1 -1
- package/dist/icons/components/UiSignOut.d.ts +1 -1
- package/dist/icons/components/UiSiren.d.ts +1 -1
- package/dist/icons/components/UiSkipForward.d.ts +1 -1
- package/dist/icons/components/UiSkull.d.ts +1 -1
- package/dist/icons/components/UiSliders.d.ts +1 -1
- package/dist/icons/components/UiSortAlphabetically.d.ts +1 -1
- package/dist/icons/components/UiSortByType.d.ts +1 -1
- package/dist/icons/components/UiSortByUsage.d.ts +1 -1
- package/dist/icons/components/UiSortByVisibility.d.ts +1 -1
- package/dist/icons/components/UiSparkles.d.ts +1 -1
- package/dist/icons/components/UiSpeaker.d.ts +1 -1
- package/dist/icons/components/UiSpringBoot.d.ts +1 -1
- package/dist/icons/components/UiSqlArray.d.ts +1 -1
- package/dist/icons/components/UiSqlColumn.d.ts +1 -1
- package/dist/icons/components/UiSqlConstraint.d.ts +1 -1
- package/dist/icons/components/UiSqlDatabase.d.ts +1 -1
- package/dist/icons/components/UiSqlForeignKey.d.ts +1 -1
- package/dist/icons/components/UiSqlFunction.d.ts +1 -1
- package/dist/icons/components/UiSqlIndex.d.ts +1 -1
- package/dist/icons/components/UiSqlPrimaryKey.d.ts +1 -1
- package/dist/icons/components/UiSqlQuery.d.ts +1 -1
- package/dist/icons/components/UiSqlSchema.d.ts +1 -1
- package/dist/icons/components/UiSqlSequence.d.ts +1 -1
- package/dist/icons/components/UiSqlStoredProc.d.ts +1 -1
- package/dist/icons/components/UiSqlTable.d.ts +1 -1
- package/dist/icons/components/UiSqlTrigger.d.ts +1 -1
- package/dist/icons/components/UiSqlView.d.ts +1 -1
- package/dist/icons/components/UiSquare.d.ts +1 -1
- package/dist/icons/components/UiStack.d.ts +1 -1
- package/dist/icons/components/UiStackFrameDot.d.ts +1 -1
- package/dist/icons/components/UiStackTrace.d.ts +1 -1
- package/dist/icons/components/UiStar.d.ts +1 -1
- package/dist/icons/components/UiStartTimer.d.ts +1 -1
- package/dist/icons/components/UiStatic.d.ts +1 -1
- package/dist/icons/components/UiStep.d.ts +1 -1
- package/dist/icons/components/UiStep1.d.ts +1 -1
- package/dist/icons/components/UiStep2.d.ts +1 -1
- package/dist/icons/components/UiStep3.d.ts +1 -1
- package/dist/icons/components/UiStep4.d.ts +1 -1
- package/dist/icons/components/UiStep5.d.ts +1 -1
- package/dist/icons/components/UiStep6.d.ts +1 -1
- package/dist/icons/components/UiStep7.d.ts +1 -1
- package/dist/icons/components/UiStep8.d.ts +1 -1
- package/dist/icons/components/UiStep9.d.ts +1 -1
- package/dist/icons/components/UiSteps.d.ts +1 -1
- package/dist/icons/components/UiStop.d.ts +1 -1
- package/dist/icons/components/UiStrategy.d.ts +1 -1
- package/dist/icons/components/UiStream.d.ts +1 -1
- package/dist/icons/components/UiStreamKey.d.ts +1 -1
- package/dist/icons/components/UiString.d.ts +1 -1
- package/dist/icons/components/UiStruct.d.ts +1 -1
- package/dist/icons/components/UiSubmitDB.d.ts +1 -1
- package/dist/icons/components/UiSubscription.d.ts +1 -1
- package/dist/icons/components/UiSun.d.ts +1 -1
- package/dist/icons/components/UiSwap.d.ts +1 -1
- package/dist/icons/components/UiSymbol.d.ts +1 -1
- package/dist/icons/components/UiSync.d.ts +1 -1
- package/dist/icons/components/UiTable.d.ts +1 -1
- package/dist/icons/components/UiTable1.d.ts +1 -1
- package/dist/icons/components/UiTable10.d.ts +1 -1
- package/dist/icons/components/UiTable11.d.ts +1 -1
- package/dist/icons/components/UiTable12.d.ts +1 -1
- package/dist/icons/components/UiTable2.d.ts +1 -1
- package/dist/icons/components/UiTable3.d.ts +1 -1
- package/dist/icons/components/UiTable4.d.ts +1 -1
- package/dist/icons/components/UiTable5.d.ts +1 -1
- package/dist/icons/components/UiTable6.d.ts +1 -1
- package/dist/icons/components/UiTable7.d.ts +1 -1
- package/dist/icons/components/UiTable8.d.ts +1 -1
- package/dist/icons/components/UiTable9.d.ts +1 -1
- package/dist/icons/components/UiTableProperties.d.ts +1 -1
- package/dist/icons/components/UiTag.d.ts +1 -1
- package/dist/icons/components/UiTax.d.ts +1 -1
- package/dist/icons/components/UiTemplate.d.ts +1 -1
- package/dist/icons/components/UiTerminal.d.ts +1 -1
- package/dist/icons/components/UiTest.d.ts +1 -1
- package/dist/icons/components/UiTest1.d.ts +1 -1
- package/dist/icons/components/UiTest2.d.ts +1 -1
- package/dist/icons/components/UiTest3.d.ts +1 -1
- package/dist/icons/components/UiTest4.d.ts +1 -1
- package/dist/icons/components/UiTest5.d.ts +1 -1
- package/dist/icons/components/UiTest6.d.ts +1 -1
- package/dist/icons/components/UiTest7.d.ts +1 -1
- package/dist/icons/components/UiText.d.ts +1 -1
- package/dist/icons/components/UiThermometer.d.ts +1 -1
- package/dist/icons/components/UiThumbsDown.d.ts +1 -1
- package/dist/icons/components/UiThumbsUp.d.ts +1 -1
- package/dist/icons/components/UiTimer.d.ts +1 -1
- package/dist/icons/components/UiToggleOff.d.ts +1 -1
- package/dist/icons/components/UiToggleOn.d.ts +1 -1
- package/dist/icons/components/UiTrait.d.ts +1 -1
- package/dist/icons/components/UiTransactionStart.d.ts +1 -1
- package/dist/icons/components/UiTrash.d.ts +1 -1
- package/dist/icons/components/UiTrendDown.d.ts +1 -1
- package/dist/icons/components/UiTrendUp.d.ts +1 -1
- package/dist/icons/components/UiTypeAlias.d.ts +1 -1
- package/dist/icons/components/UiTypeParameter.d.ts +1 -1
- package/dist/icons/components/UiTypeScriptIndexSignature.d.ts +1 -1
- package/dist/icons/components/UiUndeploy.d.ts +1 -1
- package/dist/icons/components/UiUnknown.d.ts +1 -1
- package/dist/icons/components/UiUpload.d.ts +1 -1
- package/dist/icons/components/UiUser.d.ts +1 -1
- package/dist/icons/components/UiUserCircle.d.ts +1 -1
- package/dist/icons/components/UiUserCog.d.ts +1 -1
- package/dist/icons/components/UiUserGear.d.ts +1 -1
- package/dist/icons/components/UiUsersFour.d.ts +1 -1
- package/dist/icons/components/UiUsersThree.d.ts +1 -1
- package/dist/icons/components/UiVariable.d.ts +1 -1
- package/dist/icons/components/UiVariable1.d.ts +1 -1
- package/dist/icons/components/UiVariable2.d.ts +1 -1
- package/dist/icons/components/UiVariable3.d.ts +1 -1
- package/dist/icons/components/UiVariable4.d.ts +1 -1
- package/dist/icons/components/UiVariable5.d.ts +1 -1
- package/dist/icons/components/UiVariable6.d.ts +1 -1
- package/dist/icons/components/UiVideo.d.ts +1 -1
- package/dist/icons/components/UiVirtualForeignKey.d.ts +1 -1
- package/dist/icons/components/UiWarningCircle.d.ts +1 -1
- package/dist/icons/components/UiWarningTriangle.d.ts +1 -1
- package/dist/icons/components/UiWatch.d.ts +1 -1
- package/dist/icons/components/UiWebArtifact.d.ts +1 -1
- package/dist/icons/components/UiWebServiceClient.d.ts +1 -1
- package/dist/icons/components/UiWorkflow.d.ts +1 -1
- package/dist/icons/components/UiWrench.d.ts +1 -1
- package/dist/icons/components/UiWriteAccess.d.ts +1 -1
- package/dist/icons/components/UiXpath.d.ts +1 -1
- package/dist/icons/components/UiXpath1.d.ts +1 -1
- package/dist/icons/components/UiZap.d.ts +1 -1
- package/dist/icons/components/UiZoomIn.d.ts +1 -1
- package/dist/icons/components/UiZoomOut.d.ts +1 -1
- package/dist/icons/index.d.ts +1067 -1067
- package/dist/icons/programmingCatalog.d.ts +1 -1
- package/dist/icons/registry.d.ts +1 -1
- package/dist/icons.d.ts +1 -1
- package/dist/index.cjs +1 -0
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.ts +7 -7
- package/dist/index.js +2 -1
- package/dist/jotai.d.ts +3 -3
- package/dist/layout/AppShell.d.ts +4 -4
- package/dist/layout/AppShell.nav.d.ts +1 -1
- package/dist/layout/AppSidebar.d.ts +2 -2
- package/dist/layout/Panel.d.ts +3 -3
- package/dist/layout/Section.d.ts +2 -2
- package/dist/layout/Tabs.d.ts +2 -2
- package/dist/layout/Workspace.d.ts +2 -2
- package/dist/layout/Workspace.regions.d.ts +1 -1
- package/dist/lib/combobox-values.d.ts +1 -1
- package/dist/lib/comment-stage.d.ts +1 -1
- package/dist/lib/permission-strategies.d.ts +2 -2
- package/dist/lib/runtime-profile-model.d.ts +4 -4
- package/dist/lib/size.d.ts +1 -1
- package/dist/mdx-editor.d.ts +4 -4
- package/dist/monaco/MonacoEditor.d.ts +1 -1
- package/dist/monaco/MonacoProvider.d.ts +1 -1
- package/dist/monaco/MonacoSchemaEditor.d.ts +1 -1
- package/dist/monaco/schema-normalizer.d.ts +1 -1
- package/dist/monaco/types.d.ts +1 -1
- package/dist/monaco/use-monaco-worker.d.ts +1 -1
- package/dist/monaco-schema.d.ts +2 -2
- package/dist/monaco.d.ts +5 -5
- package/dist/overlay/CellActions.d.ts +2 -2
- package/dist/overlay/CommandPalette.d.ts +2 -2
- package/dist/overlay/CommandPalette.model.d.ts +1 -1
- package/dist/overlay/CommandPaletteList.d.ts +1 -1
- package/dist/overlay/ContextMenu.d.ts +1 -1
- package/dist/overlay/DropdownMenu.d.ts +2 -2
- package/dist/overlay/DropdownMenuSubmenu.d.ts +1 -1
- package/dist/overlay/Tour.d.ts +2 -2
- package/dist/overlay/TourCard.d.ts +1 -1
- package/dist/overlay/TourProvider.d.ts +3 -3
- package/dist/overlay/TourSpotlight.d.ts +2 -2
- package/dist/overlay/toast-context.d.ts +1 -1
- package/dist/overlay/tour-anchor.d.ts +1 -1
- package/dist/overlay/tour-context.d.ts +2 -2
- package/dist/overlay/tour-model.d.ts +1 -1
- package/dist/overlay/tour-progress.d.ts +1 -1
- package/dist/overlay/use-tour-anchor.d.ts +1 -1
- package/dist/overlay/use-tour-rect.d.ts +1 -1
- package/dist/overlay/use-tour-step.d.ts +1 -1
- package/dist/overlay/useConfirm.d.ts +1 -1
- package/dist/profiles/cel/celEditor.d.ts +2 -2
- package/dist/profiles/cel/celEditorExtension.d.ts +1 -1
- package/dist/profiles/cel/celEditorResults.d.ts +1 -1
- package/dist/profiles/cel/celPath.d.ts +1 -1
- package/dist/profiles/cel/index.d.ts +5 -5
- package/dist/profiles/connections/catalogTree.d.ts +1 -1
- package/dist/profiles/connections/connectionBrowserModel.d.ts +4 -4
- package/dist/profiles/connections/connectionQueryWorkspace.d.ts +7 -7
- package/dist/profiles/connections/connectionQueryWorkspaceModel.d.ts +2 -2
- package/dist/profiles/connections/index.d.ts +5 -5
- package/dist/profiles/connections/inspectionStatus.d.ts +1 -1
- package/dist/profiles/connections/useInspection.d.ts +2 -2
- package/dist/profiles/editor/index.d.ts +11 -11
- package/dist/profiles/editor/profileBuilder.d.ts +1 -1
- package/dist/profiles/editor/profileBuilderExtension.d.ts +1 -1
- package/dist/profiles/editor/profileBuilderModel.d.ts +2 -2
- package/dist/profiles/editor/profileBuilderWorkspace.d.ts +3 -3
- package/dist/profiles/editor/profileEditor.d.ts +2 -2
- package/dist/profiles/editor/profileEditorModel.d.ts +2 -2
- package/dist/profiles/editor/profileEditorPreview.d.ts +1 -1
- package/dist/profiles/editor/profileEditorRail.d.ts +1 -1
- package/dist/profiles/editor/profileEditorRaw.d.ts +1 -1
- package/dist/profiles/editor/profileEditorSections.d.ts +3 -3
- package/dist/profiles/editor/profileParameterEditor.d.ts +1 -1
- package/dist/profiles/editor/profileYaml.d.ts +1 -1
- package/dist/profiles/editor/testSchema.d.ts +1 -1
- package/dist/profiles/elasticsearch/esFieldValues.d.ts +2 -2
- package/dist/profiles/elasticsearch/esParamMappingModel.d.ts +2 -2
- package/dist/profiles/elasticsearch/esParamOperandExtension.d.ts +2 -2
- package/dist/profiles/elasticsearch/esQueryBuilder.d.ts +8 -8
- package/dist/profiles/elasticsearch/esQueryBuilderExtension.d.ts +1 -1
- package/dist/profiles/elasticsearch/esQueryBuilderForm.d.ts +3 -3
- package/dist/profiles/elasticsearch/esQueryClauseGroup.d.ts +2 -2
- package/dist/profiles/elasticsearch/esQueryCompile.d.ts +1 -1
- package/dist/profiles/elasticsearch/esQueryConditionRow.d.ts +5 -5
- package/dist/profiles/elasticsearch/esQueryGroupModel.d.ts +1 -1
- package/dist/profiles/elasticsearch/esQueryOperandEditors.d.ts +5 -5
- package/dist/profiles/elasticsearch/esQueryOperandModel.d.ts +2 -2
- package/dist/profiles/elasticsearch/esQueryOperators.d.ts +1 -1
- package/dist/profiles/elasticsearch/esQueryOutputEditor.d.ts +2 -2
- package/dist/profiles/elasticsearch/esQueryPreview.d.ts +1 -1
- package/dist/profiles/elasticsearch/esQuerySortEditor.d.ts +2 -2
- package/dist/profiles/elasticsearch/esQuerySortModel.d.ts +1 -1
- package/dist/profiles/elasticsearch/esValueCombobox.d.ts +1 -1
- package/dist/profiles/elasticsearch/index.d.ts +22 -22
- package/dist/profiles/fields/index.d.ts +8 -8
- package/dist/profiles/fields/profileColumnModel.d.ts +1 -1
- package/dist/profiles/fields/profileColumnPicker.d.ts +1 -1
- package/dist/profiles/fields/profileFieldControls.d.ts +2 -2
- package/dist/profiles/fields/profileFieldEditor.d.ts +1 -1
- package/dist/profiles/fields/profileFieldFilterEditor.d.ts +1 -1
- package/dist/profiles/fields/profileFieldIcons.d.ts +1 -1
- package/dist/profiles/fields/profileFieldList.d.ts +1 -1
- package/dist/profiles/fields/profileFieldManager.d.ts +1 -1
- package/dist/profiles/fields/profileFieldState.d.ts +1 -1
- package/dist/profiles/fields/profileParamModel.d.ts +1 -1
- package/dist/profiles/processor/index.d.ts +5 -5
- package/dist/profiles/processor/processorPipeline.d.ts +2 -2
- package/dist/profiles/processor/processorPipelineEditor.d.ts +2 -2
- package/dist/profiles/processor/processorPipelineExtension.d.ts +1 -1
- package/dist/profiles/processor/processorPreviewTable.d.ts +1 -1
- package/dist/profiles/processor/processorSampleParams.d.ts +1 -1
- package/dist/profiles/profileApi.d.ts +2 -2
- package/dist/profiles/query/index.d.ts +8 -8
- package/dist/profiles/query/jsonPathSample.d.ts +1 -1
- package/dist/profiles/query/kubernetesWorkloadTargetPicker.d.ts +1 -1
- package/dist/profiles/query/profileSampleFilterLookup.d.ts +3 -3
- package/dist/profiles/query/profileSamplePayload.d.ts +3 -3
- package/dist/profiles/query/profileSampleResult.d.ts +3 -3
- package/dist/profiles/query/prometheusResults.d.ts +1 -1
- package/dist/profiles/query/queryRowLimits.d.ts +1 -1
- package/dist/profiles/query/queryRowLimitsModel.d.ts +1 -1
- package/dist/profiles/query/queryTargetPicker.d.ts +1 -1
- package/dist/profiles/wizard/index.d.ts +5 -5
- package/dist/profiles/wizard/profileWizard.d.ts +2 -2
- package/dist/profiles/wizard/profileWizardModel.d.ts +1 -1
- package/dist/profiles/wizard/profileWizardQueryStep.d.ts +1 -1
- package/dist/profiles/wizard/profileWizardSteps.d.ts +1 -1
- package/dist/profiles.d.ts +9 -9
- package/dist/rpc/ChatLayer.d.ts +3 -3
- package/dist/rpc/CommandForm.d.ts +2 -2
- package/dist/rpc/CommandOutput.d.ts +7 -7
- package/dist/rpc/EndpointList.d.ts +1 -1
- package/dist/rpc/EntityExplorerApp.d.ts +5 -5
- package/dist/rpc/ExecutionResult.d.ts +1 -1
- package/dist/rpc/FilterForm.d.ts +3 -3
- package/dist/rpc/FilterFormFields.d.ts +1 -1
- package/dist/rpc/OperationActionBar.d.ts +6 -6
- package/dist/rpc/OperationActionDialog.d.ts +2 -2
- package/dist/rpc/OperationCatalog.d.ts +10 -10
- package/dist/rpc/OperationCatalogActions.d.ts +3 -3
- package/dist/rpc/OperationCatalogFollowStatus.d.ts +1 -1
- package/dist/rpc/OperationCommandPage.d.ts +5 -5
- package/dist/rpc/OperationEntityContextPicker.d.ts +4 -4
- package/dist/rpc/OperationEntityContextPicker.model.d.ts +3 -3
- package/dist/rpc/OperationEntityPage.d.ts +6 -6
- package/dist/rpc/OperationPicker.d.ts +1 -1
- package/dist/rpc/OperationResultView.d.ts +7 -7
- package/dist/rpc/OperationScheduleDialog.d.ts +2 -2
- package/dist/rpc/OperationSchedules.d.ts +1 -1
- package/dist/rpc/RouterProvider.d.ts +1 -1
- package/dist/rpc/SchemaActionForm.d.ts +3 -3
- package/dist/rpc/SessionHeader.d.ts +5 -5
- package/dist/rpc/SessionHeaderControls.d.ts +2 -2
- package/dist/rpc/SessionsCatalog.d.ts +3 -3
- package/dist/rpc/actionIconMap.d.ts +1 -1
- package/dist/rpc/apiClient.d.ts +3 -3
- package/dist/rpc/classify.d.ts +1 -1
- package/dist/rpc/clickyMetadata.d.ts +1 -1
- package/dist/rpc/command-form-utils.d.ts +1 -1
- package/dist/rpc/commandHref.d.ts +1 -1
- package/dist/rpc/cursorStale.d.ts +2 -2
- package/dist/rpc/executionPages.d.ts +2 -2
- package/dist/rpc/filterShapes.d.ts +1 -1
- package/dist/rpc/formMetadata.d.ts +4 -4
- package/dist/rpc/operation-cli-command.d.ts +2 -2
- package/dist/rpc/operation-schedule-model.d.ts +3 -3
- package/dist/rpc/operation-schedule-types.d.ts +1 -1
- package/dist/rpc/operationCatalogFilterState.d.ts +2 -2
- package/dist/rpc/operationCatalogFollow.d.ts +2 -2
- package/dist/rpc/operationErrorDiagnostics.d.ts +1 -1
- package/dist/rpc/operationFilterSearch.d.ts +3 -3
- package/dist/rpc/operationLookupFetcher.d.ts +2 -2
- package/dist/rpc/router.d.ts +1 -1
- package/dist/rpc/rowNavigation.d.ts +2 -2
- package/dist/rpc/rpc-story-fixtures/orders.fixture.d.ts +1 -1
- package/dist/rpc/rpc-story-fixtures/services.fixture.d.ts +1 -1
- package/dist/rpc/rpc-story-fixtures/surface-fixture.d.ts +2 -2
- package/dist/rpc/rpc-story-fixtures/widgets.fixture.d.ts +1 -1
- package/dist/rpc/rpc-story.fixtures.d.ts +3 -3
- package/dist/rpc/session-story.fixtures.d.ts +1 -1
- package/dist/rpc/sessionHeaderModel.d.ts +1 -1
- package/dist/rpc/surfaceIconMap.d.ts +1 -1
- package/dist/rpc/surfaceNav.d.ts +2 -2
- package/dist/rpc/types.d.ts +3 -3
- package/dist/rpc/useOperationCatalogFollow.d.ts +2 -2
- package/dist/rpc/useOperationPages.d.ts +4 -4
- package/dist/rpc/useOperations.d.ts +2 -2
- package/dist/rpc/useSession.d.ts +2 -2
- package/dist/rpc.d.ts +37 -37
- package/dist/runtime-profile.d.ts +1 -1
- package/dist/utils.d.ts +13 -13
- package/package.json +4 -3
|
@@ -1,19 +1,14 @@
|
|
|
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 { cn } from "../lib/utils.js";
|
|
5
4
|
import { formatUnit } from "../lib/format.js";
|
|
6
5
|
import { Modal } from "../overlay/Modal.js";
|
|
7
6
|
import { Icon } from "./Icon.js";
|
|
8
7
|
import { TimeseriesPanel } from "./TimeseriesPanel.js";
|
|
8
|
+
import { useTimeseriesQueries, latestValue, defaultTimeseriesFetcher } from "./timeseries-query.js";
|
|
9
9
|
import { GaugeHoverCard } from "./GaugeHoverCard.js";
|
|
10
10
|
import { seriesStats } from "./gauge-stats.js";
|
|
11
11
|
import { UiFullscreen } from "../icons/components/UiFullscreen.js";
|
|
12
|
-
const defaultFetcher = async (url) => {
|
|
13
|
-
const res = await fetch(url);
|
|
14
|
-
if (!res.ok) throw new Error(`metrics request failed: ${res.status}`);
|
|
15
|
-
return res.json();
|
|
16
|
-
};
|
|
17
12
|
const GAUGE_RADIUS = 40;
|
|
18
13
|
const GAUGE_ARC = Math.PI * GAUGE_RADIUS;
|
|
19
14
|
const GAUGE_PATH = `M 10 50 A ${GAUGE_RADIUS} ${GAUGE_RADIUS} 0 0 1 90 50`;
|
|
@@ -54,12 +49,6 @@ function GaugeBar({ pct, toneBg, className }) {
|
|
|
54
49
|
}
|
|
55
50
|
) });
|
|
56
51
|
}
|
|
57
|
-
function latestValue(resp) {
|
|
58
|
-
var _a;
|
|
59
|
-
const points = resp == null ? void 0 : resp.points;
|
|
60
|
-
if (!points || points.length === 0) return void 0;
|
|
61
|
-
return (_a = points[points.length - 1]) == null ? void 0 : _a.value;
|
|
62
|
-
}
|
|
63
52
|
function GaugeIcon({ icon }) {
|
|
64
53
|
if (typeof icon === "string") {
|
|
65
54
|
return /* @__PURE__ */ jsx(Icon, { name: icon, width: 14, height: 14, className: "text-muted-foreground" });
|
|
@@ -82,31 +71,18 @@ function TimeseriesGauge({
|
|
|
82
71
|
shape = "radial",
|
|
83
72
|
showLabel = true,
|
|
84
73
|
hoverCard = true,
|
|
85
|
-
fetcher =
|
|
74
|
+
fetcher = defaultTimeseriesFetcher,
|
|
86
75
|
className
|
|
87
76
|
}) {
|
|
88
77
|
var _a, _b, _c, _d;
|
|
89
78
|
const [expanded, setExpanded] = useState(false);
|
|
90
79
|
const maxIsSeries = typeof max === "object";
|
|
91
80
|
const maxSeries = maxIsSeries ? max : void 0;
|
|
92
|
-
const
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
const results = useQueries({
|
|
98
|
-
queries: ids.map((id) => {
|
|
99
|
-
const u = new URL(baseUrl + id, window.location.origin);
|
|
100
|
-
if (range) u.searchParams.set("since", range);
|
|
101
|
-
const requestUrl = u.pathname + u.search;
|
|
102
|
-
return {
|
|
103
|
-
queryKey: ["timeseries", requestUrl],
|
|
104
|
-
queryFn: () => fetcher(requestUrl),
|
|
105
|
-
refetchInterval: refreshMs > 0 ? refreshMs : false,
|
|
106
|
-
staleTime: 0,
|
|
107
|
-
retry: 0
|
|
108
|
-
};
|
|
109
|
-
})
|
|
81
|
+
const results = useTimeseriesQueries(maxSeries ? [value, maxSeries] : [value], {
|
|
82
|
+
baseUrl,
|
|
83
|
+
range,
|
|
84
|
+
refreshMs,
|
|
85
|
+
fetcher
|
|
110
86
|
});
|
|
111
87
|
const rawValue = latestValue((_a = results[0]) == null ? void 0 : _a.data);
|
|
112
88
|
const hasValue = rawValue !== void 0;
|
|
@@ -127,10 +103,10 @@ function TimeseriesGauge({
|
|
|
127
103
|
const canExpand = expandable && variant === "default";
|
|
128
104
|
const readoutTone = bounded ? tone : "text-foreground";
|
|
129
105
|
const chartSeries = useMemo(() => {
|
|
130
|
-
const s = [{
|
|
131
|
-
if (maxSeries) s.push({
|
|
106
|
+
const s = [{ ...value, label: "value" }];
|
|
107
|
+
if (maxSeries) s.push({ ...maxSeries, label: "max" });
|
|
132
108
|
return s;
|
|
133
|
-
}, [value
|
|
109
|
+
}, [value, maxSeries]);
|
|
134
110
|
const stats = seriesStats((_d = (_c = results[0]) == null ? void 0 : _c.data) == null ? void 0 : _d.points, value.transform);
|
|
135
111
|
const fmt = (n) => formatUnit(n, unit);
|
|
136
112
|
const hoverRows = hasValue ? [
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TimeseriesGauge.js","sources":["../../src/data/TimeseriesGauge.tsx"],"sourcesContent":["import { useQueries } from \"@tanstack/react-query\";\nimport { useMemo, useState } from \"react\";\nimport { cn } from \"../lib/utils\";\nimport { formatUnit } from \"../lib/format\";\nimport { Modal } from \"../overlay/Modal\";\nimport { UiFullscreen } from \"../icons\";\nimport { Icon, type StaticIconComponent } from \"./Icon\";\nimport {\n TimeseriesPanel,\n type TimeseriesResponse,\n type TimeseriesSeries,\n} from \"./TimeseriesPanel\";\nimport { GaugeHoverCard, type GaugeHoverRow } from \"./GaugeHoverCard\";\nimport { seriesStats } from \"./gauge-stats\";\n\n/** A metric series whose latest value drives the gauge fill or its maximum. */\nexport interface GaugeSeries {\n /** Metric id appended to the gauge's baseUrl, e.g. \"k8s.statefulset.cycle.cpu.usage\". */\n id: string;\n /** Maps the latest value before display (e.g. unit scaling). Identity when omitted. */\n transform?: (value: number) => number;\n}\n\nexport type TimeseriesGaugeVariant = \"default\" | \"cell\";\n/** Gauge fill geometry: a half-circle arc (default) or a horizontal progress bar. */\nexport type TimeseriesGaugeShape = \"radial\" | \"linear\";\n\nexport interface TimeseriesGaugeProps {\n /** Common prefix; the value/max requests are `baseUrl + id`. */\n baseUrl?: string;\n /** The metric whose latest value fills the gauge. */\n value: GaugeSeries;\n /**\n * The gauge maximum. Either a metric series (its latest value, e.g. a `.limit`\n * metric) or a fixed number. When omitted, or when the resolved max is 0, the\n * gauge shows the raw value with no fill (an unbounded reading).\n */\n max?: GaugeSeries | number;\n title: string;\n /** Iconify name or static icon component shown beside the label. */\n icon?: string | StaticIconComponent;\n /** Grafana-style unit key for the readout (e.g. \"bytes\", \"percent\", \"short\", \"ms\"). */\n unit?: string;\n /** Look-back window for the expand chart, passed as ?since=; defaults to \"1h\". */\n range?: string;\n /** Poll interval in ms; defaults to 5000. Pass 0 to disable polling. */\n refreshMs?: number;\n /** Show an expand button that opens the value/max time-series chart in a modal. Default true. */\n expandable?: boolean;\n /**\n * Utilisation thresholds (percent of max) at which the arc turns amber then\n * red. Defaults to [75, 90].\n */\n thresholds?: [warning: number, danger: number];\n /**\n * What to print in the centre: the formatted value (default) or the\n * utilisation percentage of max (e.g. CPU usage out of its millicore limit).\n */\n centerDisplay?: \"value\" | \"percent\";\n /** Visual density/layout. `cell` is a compact inline form for table/grid cells. */\n variant?: TimeseriesGaugeVariant;\n /** Fill geometry: a radial half-gauge (default) or a horizontal progress bar. */\n shape?: TimeseriesGaugeShape;\n /** Show the title text. Icons and values remain visible when false. */\n showLabel?: boolean;\n /**\n * Wrap the gauge in a hover card summarising the metric (label + current / min /\n * max / avg / capacity over the window). Defaults to true.\n */\n hoverCard?: boolean;\n /** Override the default fetch (e.g. to route through an app's API client). */\n fetcher?: (url: string) => Promise<TimeseriesResponse>;\n className?: string;\n}\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\n// Half-gauge SVG geometry: a 100×50 viewBox semicircle (radius 40, centre 50,50)\n// swept 180°. The arc length is π·r; stroke-dashoffset reveals value/max of it.\nconst GAUGE_RADIUS = 40;\nconst GAUGE_ARC = Math.PI * GAUGE_RADIUS;\nconst GAUGE_PATH = `M 10 50 A ${GAUGE_RADIUS} ${GAUGE_RADIUS} 0 0 1 90 50`;\n\nfunction toneClass(pct: number, [warn, danger]: [number, number]): string {\n if (pct >= danger) return \"text-red-500\";\n if (pct >= warn) return \"text-amber-500\";\n return \"text-emerald-500\";\n}\n\n// toneBgClass mirrors toneClass for the linear bar's fill, which needs a\n// background colour rather than the arc's stroke (currentColor) tone.\nfunction toneBgClass(pct: number, [warn, danger]: [number, number]): string {\n if (pct >= danger) return \"bg-red-500\";\n if (pct >= warn) return \"bg-amber-500\";\n return \"bg-emerald-500\";\n}\n\n// GaugeArc is the half-circle SVG shared by the cell and default radial gauges;\n// only the stroke width differs between the two densities.\nfunction GaugeArc({ pct, tone, strokeWidth }: { pct: number; tone: string; strokeWidth: number }) {\n return (\n <svg viewBox=\"0 0 100 50\" className=\"h-full w-full overflow-visible\">\n <path d={GAUGE_PATH} fill=\"none\" stroke=\"currentColor\" strokeWidth={strokeWidth} strokeLinecap=\"round\" className=\"text-muted\" />\n <path\n d={GAUGE_PATH}\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth={strokeWidth}\n strokeLinecap=\"round\"\n className={tone}\n strokeDasharray={GAUGE_ARC}\n strokeDashoffset={GAUGE_ARC * (1 - pct / 100)}\n />\n </svg>\n );\n}\n\n// GaugeBar is the horizontal progress track shared by the cell and default linear\n// gauges; the caller sizes it via className (e.g. \"h-1.5 w-12\" or \"h-2 w-full\").\nfunction GaugeBar({ pct, toneBg, className }: { pct: number; toneBg: string; className?: string }) {\n return (\n <span className={cn(\"relative block overflow-hidden rounded-full bg-muted\", className)} aria-hidden=\"true\">\n <span\n className={cn(\"absolute inset-y-0 left-0 rounded-full transition-all duration-300\", toneBg)}\n style={{ width: `${pct}%` }}\n />\n </span>\n );\n}\n\nfunction latestValue(resp: TimeseriesResponse | undefined): number | undefined {\n const points = resp?.points;\n if (!points || points.length === 0) return undefined;\n return points[points.length - 1]?.value;\n}\n\nfunction GaugeIcon({ icon }: { icon: string | StaticIconComponent }) {\n if (typeof icon === \"string\") {\n return <Icon name={icon} width={14} height={14} className=\"text-muted-foreground\" />;\n }\n return <Icon icon={icon} width={14} height={14} className=\"text-muted-foreground\" />;\n}\n\n/**\n * TimeseriesGauge renders a half (180°) radial gauge whose fill is the latest\n * value of a metric over its maximum (a `.limit`-style metric or a fixed number),\n * both read live from the timeseries store. The centre shows the utilisation\n * percentage, with the value/max caption below; the arc colour crosses warning\n * and danger thresholds. An expand button opens the full value/max time-series\n * chart in a modal (a `TimeseriesPanel`), so the gauge gives the at-a-glance\n * reading and the chart the trend.\n */\nexport function TimeseriesGauge({\n baseUrl = \"\",\n value,\n max,\n title,\n icon,\n unit,\n range = \"1h\",\n refreshMs = 5000,\n expandable = true,\n thresholds = [75, 90],\n centerDisplay = \"value\",\n variant = \"default\",\n shape = \"radial\",\n showLabel = true,\n hoverCard = true,\n fetcher = defaultFetcher,\n className,\n}: TimeseriesGaugeProps) {\n const [expanded, setExpanded] = useState(false);\n\n const maxIsSeries = typeof max === \"object\";\n const maxSeries = maxIsSeries ? max : undefined;\n const ids = useMemo(() => {\n const list = [value.id];\n if (maxSeries) list.push(maxSeries.id);\n return list;\n }, [value.id, maxSeries]);\n\n const results = useQueries({\n queries: ids.map((id) => {\n const u = new URL(baseUrl + id, window.location.origin);\n if (range) u.searchParams.set(\"since\", range);\n const requestUrl = u.pathname + u.search;\n return {\n queryKey: [\"timeseries\", requestUrl],\n queryFn: () => fetcher(requestUrl),\n refetchInterval: refreshMs > 0 ? refreshMs : false,\n staleTime: 0,\n retry: 0,\n };\n }),\n });\n\n const rawValue = latestValue(results[0]?.data);\n const hasValue = rawValue !== undefined;\n const usage = value.transform ? value.transform(rawValue ?? 0) : (rawValue ?? 0);\n\n let limit: number | undefined;\n if (typeof max === \"number\") {\n limit = max;\n } else if (maxSeries) {\n const rawMax = latestValue(results[1]?.data);\n limit = rawMax === undefined ? undefined : maxSeries.transform ? maxSeries.transform(rawMax) : rawMax;\n }\n\n const bounded = hasValue && limit !== undefined && limit > 0;\n const pct = bounded ? Math.min(100, Math.round((usage / (limit as number)) * 100)) : 0;\n const tone = toneClass(pct, thresholds);\n const toneBg = toneBgClass(pct, thresholds);\n const readout =\n centerDisplay === \"percent\"\n ? bounded\n ? `${pct}%`\n : hasValue\n ? \"n/a\"\n : \"—\"\n : hasValue\n ? formatUnit(usage, unit)\n : \"—\";\n const titleText = `${title}: ${readout}`;\n const canExpand = expandable && variant === \"default\";\n const readoutTone = bounded ? tone : \"text-foreground\";\n\n const chartSeries: TimeseriesSeries[] = useMemo(() => {\n const s: TimeseriesSeries[] = [{ id: value.id, label: \"value\", ...(value.transform ? { transform: value.transform } : {}) }];\n if (maxSeries) s.push({ id: maxSeries.id, label: \"max\", ...(maxSeries.transform ? { transform: maxSeries.transform } : {}) });\n return s;\n }, [value.id, value.transform, maxSeries]);\n\n // Hover card: reduce the value's points to current/min/max/avg (transformed to\n // the display unit), plus the resolved capacity. The current row is tinted by\n // its threshold tone when the reading is bounded.\n const stats = seriesStats(results[0]?.data?.points, value.transform);\n const fmt = (n: number) => formatUnit(n, unit);\n const hoverRows: GaugeHoverRow[] = hasValue\n ? [\n { label: \"Current\", value: fmt(usage), ...(bounded ? { tone } : {}) },\n ...(stats\n ? [\n { label: \"Min\", value: fmt(stats.min) },\n { label: \"Max\", value: fmt(stats.max) },\n { label: \"Avg\", value: fmt(stats.avg) },\n ]\n : []),\n ...(limit !== undefined\n ? [{ label: \"Capacity\", value: fmt(limit) }]\n : []),\n ]\n : [];\n const useHover = hoverCard && hoverRows.length > 0;\n const footer = `over last ${range}`;\n\n if (variant === \"cell\") {\n const cell = (\n <span\n className={cn(\n \"inline-flex min-w-0 items-center gap-1.5 whitespace-nowrap align-middle text-xs\",\n className,\n )}\n {...(useHover ? {} : { title: titleText })}\n aria-label={useHover || !showLabel ? titleText : undefined}\n data-shape={shape}\n >\n {icon ? <GaugeIcon icon={icon} /> : null}\n {showLabel ? <span className=\"min-w-0 truncate text-muted-foreground\">{title}</span> : null}\n {shape === \"linear\" ? (\n <GaugeBar pct={pct} toneBg={toneBg} className=\"h-1.5 w-12 shrink-0\" />\n ) : (\n <span className=\"relative h-4 w-8 shrink-0\" aria-hidden=\"true\">\n <GaugeArc pct={pct} tone={tone} strokeWidth={10} />\n </span>\n )}\n <span className={cn(\"shrink-0 font-semibold tabular-nums\", readoutTone)}>\n {readout}\n </span>\n </span>\n );\n return useHover ? (\n <GaugeHoverCard title={title} rows={hoverRows} footer={footer} trigger={cell} />\n ) : (\n cell\n );\n }\n\n const body = (\n <div\n className={cn(\"flex flex-col items-center gap-1\", className)}\n {...(useHover ? {} : { title: !showLabel ? titleText : undefined })}\n aria-label={useHover || !showLabel ? titleText : undefined}\n data-shape={shape}\n >\n {shape === \"linear\" ? (\n <div className=\"flex w-full items-center gap-2\">\n <GaugeBar pct={pct} toneBg={toneBg} className=\"h-2 w-full\" />\n <span className=\"shrink-0 text-sm font-semibold text-foreground\">{readout}</span>\n {canExpand && (\n <button\n type=\"button\"\n aria-label=\"Expand chart\"\n onClick={() => setExpanded(true)}\n className=\"shrink-0 text-muted-foreground hover:text-foreground\"\n >\n <Icon icon={UiFullscreen} width={12} height={12} />\n </button>\n )}\n </div>\n ) : (\n <div className=\"relative h-10 w-20\">\n <GaugeArc pct={pct} tone={tone} strokeWidth={9} />\n <span className=\"absolute inset-x-0 bottom-0 text-center text-sm font-semibold text-foreground\">\n {readout}\n </span>\n {canExpand && (\n <button\n type=\"button\"\n aria-label=\"Expand chart\"\n onClick={() => setExpanded(true)}\n className=\"absolute right-0 top-0 text-muted-foreground hover:text-foreground\"\n >\n <Icon icon={UiFullscreen} width={12} height={12} />\n </button>\n )}\n </div>\n )}\n {icon || showLabel ? (\n <div className=\"flex items-center gap-1 text-xs text-muted-foreground\">\n {icon ? <GaugeIcon icon={icon} /> : null}\n {showLabel ? <span>{title}</span> : null}\n </div>\n ) : null}\n </div>\n );\n\n return (\n <>\n {useHover ? (\n <GaugeHoverCard\n title={title}\n rows={hoverRows}\n footer={footer}\n trigger={body}\n className=\"w-full justify-center\"\n />\n ) : (\n body\n )}\n {canExpand && (\n <Modal open={expanded} onClose={() => setExpanded(false)} title={title} size=\"xl\">\n <TimeseriesPanel\n title={title}\n {...(icon ? { icon } : {})}\n {...(unit ? { unit } : {})}\n baseUrl={baseUrl}\n series={chartSeries}\n range={range}\n refreshMs={refreshMs}\n expandable={false}\n fetcher={fetcher}\n />\n </Modal>\n )}\n </>\n );\n}\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"TimeseriesGauge.js","sources":["../../src/data/TimeseriesGauge.tsx"],"sourcesContent":["import { useMemo, useState } from \"react\";\nimport { cn } from \"../lib/utils\";\nimport { formatUnit } from \"../lib/format\";\nimport { Modal } from \"../overlay/Modal\";\nimport { UiFullscreen } from \"../icons\";\nimport { Icon, type StaticIconComponent } from \"./Icon\";\nimport {\n TimeseriesPanel,\n type SeriesLoader,\n type TimeseriesResponse,\n type TimeseriesSeries,\n} from \"./TimeseriesPanel\";\nimport { defaultTimeseriesFetcher, latestValue, useTimeseriesQueries } from \"./timeseries-query\";\nimport { GaugeHoverCard, type GaugeHoverRow } from \"./GaugeHoverCard\";\nimport { seriesStats } from \"./gauge-stats\";\n\n/**\n * A metric series whose latest value drives the gauge fill or its maximum. It\n * is requested as `baseUrl + id` through the widget's `fetcher`, or, when\n * `load` is set, loaded by calling `load` directly.\n */\nexport interface GaugeSeries {\n /**\n * Metric id appended to the gauge's baseUrl, e.g. \"k8s.statefulset.cycle.cpu.usage\".\n * With `load`, the id is the cache identity: loaded series are cached under\n * `[\"timeseries\", \"load\", id, range]`, so keep it unique per data source.\n */\n id: string;\n /** Maps the latest value before display (e.g. unit scaling). Identity when omitted. */\n transform?: (value: number) => number;\n /** Loads the series' points; when set, `baseUrl` and `fetcher` are not used. */\n load?: SeriesLoader;\n}\n\nexport type TimeseriesGaugeVariant = \"default\" | \"cell\";\n/** Gauge fill geometry: a half-circle arc (default) or a horizontal progress bar. */\nexport type TimeseriesGaugeShape = \"radial\" | \"linear\";\n\nexport interface TimeseriesGaugeProps {\n /** Common prefix; the value/max requests are `baseUrl + id` (unless a series has `load`). */\n baseUrl?: string;\n /** The metric whose latest value fills the gauge. */\n value: GaugeSeries;\n /**\n * The gauge maximum. Either a metric series (its latest value, e.g. a `.limit`\n * metric) or a fixed number. When omitted, or when the resolved max is 0, the\n * gauge shows the raw value with no fill (an unbounded reading).\n */\n max?: GaugeSeries | number;\n title: string;\n /** Iconify name or static icon component shown beside the label. */\n icon?: string | StaticIconComponent;\n /** Grafana-style unit key for the readout (e.g. \"bytes\", \"percent\", \"short\", \"ms\"). */\n unit?: string;\n /** Look-back window for the expand chart, passed as ?since=; defaults to \"1h\". */\n range?: string;\n /** Poll interval in ms; defaults to 5000. Pass 0 to disable polling. */\n refreshMs?: number;\n /** Show an expand button that opens the value/max time-series chart in a modal. Default true. */\n expandable?: boolean;\n /**\n * Utilisation thresholds (percent of max) at which the arc turns amber then\n * red. Defaults to [75, 90].\n */\n thresholds?: [warning: number, danger: number];\n /**\n * What to print in the centre: the formatted value (default) or the\n * utilisation percentage of max (e.g. CPU usage out of its millicore limit).\n */\n centerDisplay?: \"value\" | \"percent\";\n /** Visual density/layout. `cell` is a compact inline form for table/grid cells. */\n variant?: TimeseriesGaugeVariant;\n /** Fill geometry: a radial half-gauge (default) or a horizontal progress bar. */\n shape?: TimeseriesGaugeShape;\n /** Show the title text. Icons and values remain visible when false. */\n showLabel?: boolean;\n /**\n * Wrap the gauge in a hover card summarising the metric (label + current / min /\n * max / avg / capacity over the window). Defaults to true.\n */\n hoverCard?: boolean;\n /** Override the default fetch (e.g. to route through an app's API client). */\n fetcher?: (url: string) => Promise<TimeseriesResponse>;\n className?: string;\n}\n\n// Half-gauge SVG geometry: a 100×50 viewBox semicircle (radius 40, centre 50,50)\n// swept 180°. The arc length is π·r; stroke-dashoffset reveals value/max of it.\nconst GAUGE_RADIUS = 40;\nconst GAUGE_ARC = Math.PI * GAUGE_RADIUS;\nconst GAUGE_PATH = `M 10 50 A ${GAUGE_RADIUS} ${GAUGE_RADIUS} 0 0 1 90 50`;\n\nfunction toneClass(pct: number, [warn, danger]: [number, number]): string {\n if (pct >= danger) return \"text-red-500\";\n if (pct >= warn) return \"text-amber-500\";\n return \"text-emerald-500\";\n}\n\n// toneBgClass mirrors toneClass for the linear bar's fill, which needs a\n// background colour rather than the arc's stroke (currentColor) tone.\nfunction toneBgClass(pct: number, [warn, danger]: [number, number]): string {\n if (pct >= danger) return \"bg-red-500\";\n if (pct >= warn) return \"bg-amber-500\";\n return \"bg-emerald-500\";\n}\n\n// GaugeArc is the half-circle SVG shared by the cell and default radial gauges;\n// only the stroke width differs between the two densities.\nfunction GaugeArc({ pct, tone, strokeWidth }: { pct: number; tone: string; strokeWidth: number }) {\n return (\n <svg viewBox=\"0 0 100 50\" className=\"h-full w-full overflow-visible\">\n <path d={GAUGE_PATH} fill=\"none\" stroke=\"currentColor\" strokeWidth={strokeWidth} strokeLinecap=\"round\" className=\"text-muted\" />\n <path\n d={GAUGE_PATH}\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth={strokeWidth}\n strokeLinecap=\"round\"\n className={tone}\n strokeDasharray={GAUGE_ARC}\n strokeDashoffset={GAUGE_ARC * (1 - pct / 100)}\n />\n </svg>\n );\n}\n\n// GaugeBar is the horizontal progress track shared by the cell and default linear\n// gauges; the caller sizes it via className (e.g. \"h-1.5 w-12\" or \"h-2 w-full\").\nfunction GaugeBar({ pct, toneBg, className }: { pct: number; toneBg: string; className?: string }) {\n return (\n <span className={cn(\"relative block overflow-hidden rounded-full bg-muted\", className)} aria-hidden=\"true\">\n <span\n className={cn(\"absolute inset-y-0 left-0 rounded-full transition-all duration-300\", toneBg)}\n style={{ width: `${pct}%` }}\n />\n </span>\n );\n}\n\nfunction GaugeIcon({ icon }: { icon: string | StaticIconComponent }) {\n if (typeof icon === \"string\") {\n return <Icon name={icon} width={14} height={14} className=\"text-muted-foreground\" />;\n }\n return <Icon icon={icon} width={14} height={14} className=\"text-muted-foreground\" />;\n}\n\n/**\n * TimeseriesGauge renders a half (180°) radial gauge whose fill is the latest\n * value of a metric over its maximum (a `.limit`-style metric or a fixed number),\n * both read live from the timeseries store. The centre shows the utilisation\n * percentage, with the value/max caption below; the arc colour crosses warning\n * and danger thresholds. An expand button opens the full value/max time-series\n * chart in a modal (a `TimeseriesPanel`), so the gauge gives the at-a-glance\n * reading and the chart the trend.\n */\nexport function TimeseriesGauge({\n baseUrl = \"\",\n value,\n max,\n title,\n icon,\n unit,\n range = \"1h\",\n refreshMs = 5000,\n expandable = true,\n thresholds = [75, 90],\n centerDisplay = \"value\",\n variant = \"default\",\n shape = \"radial\",\n showLabel = true,\n hoverCard = true,\n fetcher = defaultTimeseriesFetcher,\n className,\n}: TimeseriesGaugeProps) {\n const [expanded, setExpanded] = useState(false);\n\n const maxIsSeries = typeof max === \"object\";\n const maxSeries = maxIsSeries ? max : undefined;\n const results = useTimeseriesQueries(maxSeries ? [value, maxSeries] : [value], {\n baseUrl,\n range,\n refreshMs,\n fetcher,\n });\n\n const rawValue = latestValue(results[0]?.data);\n const hasValue = rawValue !== undefined;\n const usage = value.transform ? value.transform(rawValue ?? 0) : (rawValue ?? 0);\n\n let limit: number | undefined;\n if (typeof max === \"number\") {\n limit = max;\n } else if (maxSeries) {\n const rawMax = latestValue(results[1]?.data);\n limit = rawMax === undefined ? undefined : maxSeries.transform ? maxSeries.transform(rawMax) : rawMax;\n }\n\n const bounded = hasValue && limit !== undefined && limit > 0;\n const pct = bounded ? Math.min(100, Math.round((usage / (limit as number)) * 100)) : 0;\n const tone = toneClass(pct, thresholds);\n const toneBg = toneBgClass(pct, thresholds);\n const readout =\n centerDisplay === \"percent\"\n ? bounded\n ? `${pct}%`\n : hasValue\n ? \"n/a\"\n : \"—\"\n : hasValue\n ? formatUnit(usage, unit)\n : \"—\";\n const titleText = `${title}: ${readout}`;\n const canExpand = expandable && variant === \"default\";\n const readoutTone = bounded ? tone : \"text-foreground\";\n\n const chartSeries: TimeseriesSeries[] = useMemo(() => {\n const s: TimeseriesSeries[] = [{ ...value, label: \"value\" }];\n if (maxSeries) s.push({ ...maxSeries, label: \"max\" });\n return s;\n }, [value, maxSeries]);\n\n // Hover card: reduce the value's points to current/min/max/avg (transformed to\n // the display unit), plus the resolved capacity. The current row is tinted by\n // its threshold tone when the reading is bounded.\n const stats = seriesStats(results[0]?.data?.points, value.transform);\n const fmt = (n: number) => formatUnit(n, unit);\n const hoverRows: GaugeHoverRow[] = hasValue\n ? [\n { label: \"Current\", value: fmt(usage), ...(bounded ? { tone } : {}) },\n ...(stats\n ? [\n { label: \"Min\", value: fmt(stats.min) },\n { label: \"Max\", value: fmt(stats.max) },\n { label: \"Avg\", value: fmt(stats.avg) },\n ]\n : []),\n ...(limit !== undefined\n ? [{ label: \"Capacity\", value: fmt(limit) }]\n : []),\n ]\n : [];\n const useHover = hoverCard && hoverRows.length > 0;\n const footer = `over last ${range}`;\n\n if (variant === \"cell\") {\n const cell = (\n <span\n className={cn(\n \"inline-flex min-w-0 items-center gap-1.5 whitespace-nowrap align-middle text-xs\",\n className,\n )}\n {...(useHover ? {} : { title: titleText })}\n aria-label={useHover || !showLabel ? titleText : undefined}\n data-shape={shape}\n >\n {icon ? <GaugeIcon icon={icon} /> : null}\n {showLabel ? <span className=\"min-w-0 truncate text-muted-foreground\">{title}</span> : null}\n {shape === \"linear\" ? (\n <GaugeBar pct={pct} toneBg={toneBg} className=\"h-1.5 w-12 shrink-0\" />\n ) : (\n <span className=\"relative h-4 w-8 shrink-0\" aria-hidden=\"true\">\n <GaugeArc pct={pct} tone={tone} strokeWidth={10} />\n </span>\n )}\n <span className={cn(\"shrink-0 font-semibold tabular-nums\", readoutTone)}>\n {readout}\n </span>\n </span>\n );\n return useHover ? (\n <GaugeHoverCard title={title} rows={hoverRows} footer={footer} trigger={cell} />\n ) : (\n cell\n );\n }\n\n const body = (\n <div\n className={cn(\"flex flex-col items-center gap-1\", className)}\n {...(useHover ? {} : { title: !showLabel ? titleText : undefined })}\n aria-label={useHover || !showLabel ? titleText : undefined}\n data-shape={shape}\n >\n {shape === \"linear\" ? (\n <div className=\"flex w-full items-center gap-2\">\n <GaugeBar pct={pct} toneBg={toneBg} className=\"h-2 w-full\" />\n <span className=\"shrink-0 text-sm font-semibold text-foreground\">{readout}</span>\n {canExpand && (\n <button\n type=\"button\"\n aria-label=\"Expand chart\"\n onClick={() => setExpanded(true)}\n className=\"shrink-0 text-muted-foreground hover:text-foreground\"\n >\n <Icon icon={UiFullscreen} width={12} height={12} />\n </button>\n )}\n </div>\n ) : (\n <div className=\"relative h-10 w-20\">\n <GaugeArc pct={pct} tone={tone} strokeWidth={9} />\n <span className=\"absolute inset-x-0 bottom-0 text-center text-sm font-semibold text-foreground\">\n {readout}\n </span>\n {canExpand && (\n <button\n type=\"button\"\n aria-label=\"Expand chart\"\n onClick={() => setExpanded(true)}\n className=\"absolute right-0 top-0 text-muted-foreground hover:text-foreground\"\n >\n <Icon icon={UiFullscreen} width={12} height={12} />\n </button>\n )}\n </div>\n )}\n {icon || showLabel ? (\n <div className=\"flex items-center gap-1 text-xs text-muted-foreground\">\n {icon ? <GaugeIcon icon={icon} /> : null}\n {showLabel ? <span>{title}</span> : null}\n </div>\n ) : null}\n </div>\n );\n\n return (\n <>\n {useHover ? (\n <GaugeHoverCard\n title={title}\n rows={hoverRows}\n footer={footer}\n trigger={body}\n className=\"w-full justify-center\"\n />\n ) : (\n body\n )}\n {canExpand && (\n <Modal open={expanded} onClose={() => setExpanded(false)} title={title} size=\"xl\">\n <TimeseriesPanel\n title={title}\n {...(icon ? { icon } : {})}\n {...(unit ? { unit } : {})}\n baseUrl={baseUrl}\n series={chartSeries}\n range={range}\n refreshMs={refreshMs}\n expandable={false}\n fetcher={fetcher}\n />\n </Modal>\n )}\n </>\n );\n}\n"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { MergedRow, ResolvedSeries } from './TimeseriesPanel.model';
|
|
1
|
+
import { MergedRow, ResolvedSeries } from './TimeseriesPanel.model.js';
|
|
2
2
|
export type AxisOrientation = "left" | "right";
|
|
3
3
|
/** A rendered Y-axis: its recharts id (== orientation) and the unit it formats with. */
|
|
4
4
|
export interface AxisSpec {
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
3
|
const jsxRuntime = require("react/jsx-runtime");
|
|
4
|
-
const reactQuery = require("@tanstack/react-query");
|
|
5
4
|
const react = require("react");
|
|
6
5
|
const recharts = require("recharts");
|
|
7
6
|
const utils = require("../lib/utils.cjs");
|
|
@@ -12,12 +11,8 @@ const ProgressBar = require("./ProgressBar.cjs");
|
|
|
12
11
|
const Icon = require("./Icon.cjs");
|
|
13
12
|
const TimeseriesPanel_axes = require("./TimeseriesPanel.axes.cjs");
|
|
14
13
|
const TimeseriesPanel_model = require("./TimeseriesPanel.model.cjs");
|
|
14
|
+
const timeseriesQuery = require("./timeseries-query.cjs");
|
|
15
15
|
const UiFullscreen = require("../icons/components/UiFullscreen.cjs");
|
|
16
|
-
const defaultFetcher = async (url) => {
|
|
17
|
-
const res = await fetch(url);
|
|
18
|
-
if (!res.ok) throw new Error(`metrics request failed: ${res.status}`);
|
|
19
|
-
return res.json();
|
|
20
|
-
};
|
|
21
16
|
function formatClock(at) {
|
|
22
17
|
const date = new Date(at);
|
|
23
18
|
if (Number.isNaN(date.getTime())) return "";
|
|
@@ -35,7 +30,8 @@ function TimeseriesPanel(props) {
|
|
|
35
30
|
variant = "area",
|
|
36
31
|
expandable = true,
|
|
37
32
|
total,
|
|
38
|
-
|
|
33
|
+
referenceLines,
|
|
34
|
+
fetcher = timeseriesQuery.defaultTimeseriesFetcher,
|
|
39
35
|
className
|
|
40
36
|
} = props;
|
|
41
37
|
const isBreakdown = variant === "breakdown";
|
|
@@ -43,23 +39,11 @@ function TimeseriesPanel(props) {
|
|
|
43
39
|
const expandVariant = props.expandVariant ?? chartVariant;
|
|
44
40
|
const [expanded, setExpanded] = react.useState(false);
|
|
45
41
|
const series = react.useMemo(() => TimeseriesPanel_model.resolveSeries(props), [props]);
|
|
46
|
-
const
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
if (range) u.searchParams.set("since", range);
|
|
50
|
-
return u.pathname + u.search;
|
|
51
|
-
}),
|
|
52
|
-
[series, range]
|
|
42
|
+
const results = timeseriesQuery.useTimeseriesQueries(
|
|
43
|
+
series.map((s) => ({ id: s.key, load: s.load })),
|
|
44
|
+
{ baseUrl: props.baseUrl ?? "", range, refreshMs, fetcher }
|
|
53
45
|
);
|
|
54
|
-
const
|
|
55
|
-
queries: requestUrls.map((requestUrl) => ({
|
|
56
|
-
queryKey: ["timeseries", requestUrl],
|
|
57
|
-
queryFn: () => fetcher(requestUrl),
|
|
58
|
-
refetchInterval: refreshMs > 0 ? refreshMs : false,
|
|
59
|
-
staleTime: 0,
|
|
60
|
-
retry: 0
|
|
61
|
-
}))
|
|
62
|
-
});
|
|
46
|
+
const refs = referenceLines ?? [];
|
|
63
47
|
const isError = results.some((r) => r.isError);
|
|
64
48
|
const error = (_a = results.find((r) => r.isError)) == null ? void 0 : _a.error;
|
|
65
49
|
const isLoading = results.some((r) => r.isLoading) && results.every((r) => !r.data);
|
|
@@ -94,11 +78,31 @@ function TimeseriesPanel(props) {
|
|
|
94
78
|
) : null
|
|
95
79
|
] })
|
|
96
80
|
] }),
|
|
97
|
-
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "mt-2", style: breakdown ? void 0 : { height }, children: breakdown ? /* @__PURE__ */ jsxRuntime.jsx(BreakdownView, { total: breakdown.total, unit, items: breakdown.items }) : isError ? /* @__PURE__ */ jsxRuntime.jsx(PanelMessage, { children: (error == null ? void 0 : error.message) ?? "Failed to load metric" }) : isLoading ? /* @__PURE__ */ jsxRuntime.jsx(PanelMessage, { children: "Loading…" }) : rows.length < 2 ? /* @__PURE__ */ jsxRuntime.jsx(PanelMessage, { children: "Collecting data…" }) : /* @__PURE__ */ jsxRuntime.jsx(
|
|
98
|
-
|
|
81
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "mt-2", style: breakdown ? void 0 : { height }, children: breakdown ? /* @__PURE__ */ jsxRuntime.jsx(BreakdownView, { total: breakdown.total, unit, items: breakdown.items }) : isError ? /* @__PURE__ */ jsxRuntime.jsx(PanelMessage, { children: (error == null ? void 0 : error.message) ?? "Failed to load metric" }) : isLoading ? /* @__PURE__ */ jsxRuntime.jsx(PanelMessage, { children: "Loading…" }) : rows.length < 2 ? /* @__PURE__ */ jsxRuntime.jsx(PanelMessage, { children: "Collecting data…" }) : /* @__PURE__ */ jsxRuntime.jsx(
|
|
82
|
+
Chart,
|
|
83
|
+
{
|
|
84
|
+
rows,
|
|
85
|
+
series,
|
|
86
|
+
variant: chartVariant,
|
|
87
|
+
unit,
|
|
88
|
+
showZeroLine: hasMirrored,
|
|
89
|
+
referenceLines: refs
|
|
90
|
+
}
|
|
91
|
+
) }),
|
|
92
|
+
!breakdown && !isError && !isLoading && rows.length >= 2 && series.length + refs.length > 1 ? /* @__PURE__ */ jsxRuntime.jsx(ChartLegend, { series, rows, referenceLines: refs, unit }) : null,
|
|
99
93
|
canExpand ? /* @__PURE__ */ jsxRuntime.jsxs(Modal.Modal, { open: expanded, onClose: () => setExpanded(false), title, size: "xl", children: [
|
|
100
|
-
/* @__PURE__ */ jsxRuntime.jsx("div", { style: { height: 360 }, children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
101
|
-
|
|
94
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { style: { height: 360 }, children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
95
|
+
Chart,
|
|
96
|
+
{
|
|
97
|
+
rows,
|
|
98
|
+
series,
|
|
99
|
+
variant: expandVariant,
|
|
100
|
+
unit,
|
|
101
|
+
showZeroLine: hasMirrored,
|
|
102
|
+
referenceLines: refs
|
|
103
|
+
}
|
|
104
|
+
) }),
|
|
105
|
+
series.length + refs.length > 1 ? /* @__PURE__ */ jsxRuntime.jsx(ChartLegend, { series, rows, referenceLines: refs, unit }) : null
|
|
102
106
|
] }) : null
|
|
103
107
|
] });
|
|
104
108
|
}
|
|
@@ -109,22 +113,45 @@ function LatestReadout({ series, rows }) {
|
|
|
109
113
|
if (v === void 0) return null;
|
|
110
114
|
return /* @__PURE__ */ jsxRuntime.jsx("span", { className: "tabular-nums", children: format.formatUnit(Math.abs(v), only.unit) });
|
|
111
115
|
}
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
+
const REFERENCE_LINE_COLOR = "var(--muted-foreground, #64748b)";
|
|
117
|
+
function referenceColor(ref) {
|
|
118
|
+
return color.resolveCssColor(ref.color ?? REFERENCE_LINE_COLOR);
|
|
119
|
+
}
|
|
120
|
+
function ChartLegend({
|
|
121
|
+
series,
|
|
122
|
+
rows,
|
|
123
|
+
referenceLines,
|
|
124
|
+
unit
|
|
125
|
+
}) {
|
|
126
|
+
return /* @__PURE__ */ jsxRuntime.jsxs("ul", { className: "mt-1.5 flex flex-wrap gap-x-3 gap-y-1 text-xs text-muted-foreground", children: [
|
|
127
|
+
series.map((s) => {
|
|
128
|
+
const v = TimeseriesPanel_axes.latestOf(rows, s.key);
|
|
129
|
+
return /* @__PURE__ */ jsxRuntime.jsxs("li", { className: "inline-flex min-w-0 items-center gap-1.5", children: [
|
|
130
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
131
|
+
"span",
|
|
132
|
+
{
|
|
133
|
+
className: "h-2 w-2 shrink-0 rounded-full",
|
|
134
|
+
style: { backgroundColor: color.resolveCssColor(s.color) },
|
|
135
|
+
"aria-hidden": true
|
|
136
|
+
}
|
|
137
|
+
),
|
|
138
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "truncate text-foreground", children: s.label }),
|
|
139
|
+
v !== void 0 ? /* @__PURE__ */ jsxRuntime.jsx("span", { className: "tabular-nums", children: format.formatUnit(Math.abs(v), s.unit) }) : null
|
|
140
|
+
] }, s.key);
|
|
141
|
+
}),
|
|
142
|
+
referenceLines.map((ref, i) => /* @__PURE__ */ jsxRuntime.jsxs("li", { className: "inline-flex min-w-0 items-center gap-1.5", children: [
|
|
116
143
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
117
144
|
"span",
|
|
118
145
|
{
|
|
119
|
-
className: "h-
|
|
120
|
-
style: { backgroundColor:
|
|
146
|
+
className: "h-0.5 w-2.5 shrink-0",
|
|
147
|
+
style: { backgroundColor: referenceColor(ref) },
|
|
121
148
|
"aria-hidden": true
|
|
122
149
|
}
|
|
123
150
|
),
|
|
124
|
-
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "truncate text-foreground", children:
|
|
125
|
-
|
|
126
|
-
] },
|
|
127
|
-
|
|
151
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "truncate text-foreground", children: ref.label }),
|
|
152
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "tabular-nums", children: format.formatUnit(ref.value, ref.unit ?? unit) })
|
|
153
|
+
] }, `ref-${i}`))
|
|
154
|
+
] });
|
|
128
155
|
}
|
|
129
156
|
function BreakdownReadout({
|
|
130
157
|
total,
|
|
@@ -177,13 +204,18 @@ function Chart({
|
|
|
177
204
|
series,
|
|
178
205
|
variant,
|
|
179
206
|
unit,
|
|
180
|
-
showZeroLine
|
|
207
|
+
showZeroLine,
|
|
208
|
+
referenceLines
|
|
181
209
|
}) {
|
|
182
210
|
const stacked = variant === "stacked";
|
|
183
211
|
const seriesByKey = new Map(series.map((s) => [s.key, s]));
|
|
184
212
|
const strokeOf = (s) => color.resolveCssColor(s.color);
|
|
185
213
|
const { axes: yAxes, axisOfKey } = react.useMemo(() => TimeseriesPanel_axes.assignAxes(series), [series]);
|
|
186
214
|
const axisOf = (key) => axisOfKey.get(key) ?? "left";
|
|
215
|
+
const axisOfUnit = (u) => {
|
|
216
|
+
var _a;
|
|
217
|
+
return ((_a = yAxes.find((ax) => ax.unit === u)) == null ? void 0 : _a.id) ?? "left";
|
|
218
|
+
};
|
|
187
219
|
const axes = /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
188
220
|
/* @__PURE__ */ jsxRuntime.jsx(recharts.CartesianGrid, { strokeOpacity: 0.12, vertical: false }),
|
|
189
221
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
@@ -221,7 +253,18 @@ function Chart({
|
|
|
221
253
|
contentStyle: { fontSize: 12 }
|
|
222
254
|
}
|
|
223
255
|
),
|
|
224
|
-
showZeroLine ? /* @__PURE__ */ jsxRuntime.jsx(recharts.ReferenceLine, { yAxisId: "left", y: 0, stroke: "currentColor", strokeOpacity: 0.35 }) : null
|
|
256
|
+
showZeroLine ? /* @__PURE__ */ jsxRuntime.jsx(recharts.ReferenceLine, { yAxisId: "left", y: 0, stroke: "currentColor", strokeOpacity: 0.35 }) : null,
|
|
257
|
+
referenceLines.map((ref, i) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
258
|
+
recharts.ReferenceLine,
|
|
259
|
+
{
|
|
260
|
+
yAxisId: axisOfUnit(ref.unit ?? unit),
|
|
261
|
+
y: ref.value,
|
|
262
|
+
stroke: referenceColor(ref),
|
|
263
|
+
strokeDasharray: "4 4",
|
|
264
|
+
ifOverflow: "extendDomain"
|
|
265
|
+
},
|
|
266
|
+
`ref-${i}`
|
|
267
|
+
))
|
|
225
268
|
] });
|
|
226
269
|
return /* @__PURE__ */ jsxRuntime.jsx(recharts.ResponsiveContainer, { width: "100%", height: "100%", children: variant === "line" ? /* @__PURE__ */ jsxRuntime.jsxs(recharts.LineChart, { data: rows, margin: { top: 4, right: 8, bottom: 0, left: 0 }, children: [
|
|
227
270
|
axes,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TimeseriesPanel.cjs","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":["useState","useMemo","resolveSeries","useQueries","_a","mergeSeries","resolveBreakdown","cn","jsxs","jsx","Icon","UiFullscreen","Modal","latestOf","formatUnit","resolveCssColor","ProgressBar","assignAxes","Fragment","CartesianGrid","XAxis","YAxis","Tooltip","ReferenceLine","ResponsiveContainer","LineChart","Line","AreaChart","Area"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"TimeseriesPanel.cjs","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":["defaultTimeseriesFetcher","useState","useMemo","resolveSeries","useTimeseriesQueries","_a","mergeSeries","resolveBreakdown","cn","jsxs","jsx","Icon","UiFullscreen","Modal","latestOf","formatUnit","resolveCssColor","ProgressBar","assignAxes","Fragment","CartesianGrid","XAxis","YAxis","Tooltip","ReferenceLine","ResponsiveContainer","LineChart","Line","AreaChart","Area"],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { TimeseriesPanelProps } from './TimeseriesPanel.model';
|
|
2
|
-
export type { AxisAssignment, AxisOrientation, AxisSpec } from './TimeseriesPanel.axes';
|
|
3
|
-
export type { BreakdownItem, MergedRow, ResolvedSeries, TimeseriesPanelProps, TimeseriesPoint, TimeseriesResponse, TimeseriesSeries, } from './TimeseriesPanel.model';
|
|
1
|
+
import { TimeseriesPanelProps } from './TimeseriesPanel.model.js';
|
|
2
|
+
export type { AxisAssignment, AxisOrientation, AxisSpec } from './TimeseriesPanel.axes.js';
|
|
3
|
+
export type { BreakdownItem, MergedRow, ResolvedSeries, SeriesLoadContext, SeriesLoader, TimeseriesPanelProps, TimeseriesPoint, TimeseriesReferenceLine, TimeseriesResponse, TimeseriesSeries, } from './TimeseriesPanel.model.js';
|
|
4
4
|
export declare function TimeseriesPanel(props: TimeseriesPanelProps): import("react").JSX.Element;
|
|
5
5
|
//# sourceMappingURL=TimeseriesPanel.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TimeseriesPanel.d.ts","sourceRoot":"","sources":["../../src/data/TimeseriesPanel.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"TimeseriesPanel.d.ts","sourceRoot":"","sources":["../../src/data/TimeseriesPanel.tsx"],"names":[],"mappings":"AAqBA,OAAO,EAOL,KAAK,oBAAoB,EAE1B,MAAM,yBAAyB,CAAC;AAGjC,YAAY,EAAE,cAAc,EAAE,eAAe,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AACxF,YAAY,EACV,aAAa,EACb,SAAS,EACT,cAAc,EACd,iBAAiB,EACjB,YAAY,EACZ,oBAAoB,EACpB,eAAe,EACf,uBAAuB,EACvB,kBAAkB,EAClB,gBAAgB,GACjB,MAAM,yBAAyB,CAAC;AAQjC,wBAAgB,eAAe,CAAC,KAAK,EAAE,oBAAoB,+BAgH1D"}
|