@mastra/playground-ui 56.0.0 → 57.0.0-alpha.1
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/dist/{Button-CVewl8nT.cjs → Button-C0DBEBcJ.cjs} +12 -5
- package/dist/Button-C0DBEBcJ.cjs.map +1 -0
- package/dist/{Button-cWcBEd-G.js → Button-C9cvaVFG.js} +13 -6
- package/dist/Button-C9cvaVFG.js.map +1 -0
- package/dist/{Card-DEvGFj-Z.js → Card-B_buJ5yF.js} +3 -3
- package/dist/{Card-DEvGFj-Z.js.map → Card-B_buJ5yF.js.map} +1 -1
- package/dist/{Card-D0kFp9j9.cjs → Card-DwGasv0K.cjs} +3 -3
- package/dist/{Card-D0kFp9j9.cjs.map → Card-DwGasv0K.cjs.map} +1 -1
- package/dist/{EmptyState-UWXhBp5U.js → EmptyState-B6cyZw6m.js} +12 -6
- package/dist/EmptyState-B6cyZw6m.js.map +1 -0
- package/dist/{EmptyState-CdRjFB06.cjs → EmptyState-DiSP6UIy.cjs} +12 -6
- package/dist/EmptyState-DiSP6UIy.cjs.map +1 -0
- package/dist/ErrorState-B0839u-q.cjs +21 -0
- package/dist/ErrorState-B0839u-q.cjs.map +1 -0
- package/dist/ErrorState-HyRJdaA2.js +19 -0
- package/dist/ErrorState-HyRJdaA2.js.map +1 -0
- package/dist/Header-BVnFQlzE.js +31 -0
- package/dist/Header-BVnFQlzE.js.map +1 -0
- package/dist/Header-CGjhJ0nQ.cjs +36 -0
- package/dist/Header-CGjhJ0nQ.cjs.map +1 -0
- package/dist/{Notice-Cjti0e0j.cjs → Notice-CoFjo8O6.cjs} +3 -3
- package/dist/{Notice-Cjti0e0j.cjs.map → Notice-CoFjo8O6.cjs.map} +1 -1
- package/dist/{Notice-Ah-84yi6.js → Notice-DUdQkUqH.js} +3 -3
- package/dist/{Notice-Ah-84yi6.js.map → Notice-DUdQkUqH.js.map} +1 -1
- package/dist/{PermissionDenied-B6TSGolC.js → PermissionDenied-CTqnE57B.js} +11 -6
- package/dist/PermissionDenied-CTqnE57B.js.map +1 -0
- package/dist/{PermissionDenied-Dz5qXpQj.cjs → PermissionDenied-fdVmTjjf.cjs} +11 -6
- package/dist/PermissionDenied-fdVmTjjf.cjs.map +1 -0
- package/dist/{SessionExpired-CF0BGNo_.cjs → SessionExpired-CFGTqnU5.cjs} +5 -6
- package/dist/SessionExpired-CFGTqnU5.cjs.map +1 -0
- package/dist/{SessionExpired-Bq5LcsDu.js → SessionExpired-COK6flhT.js} +5 -6
- package/dist/SessionExpired-COK6flhT.js.map +1 -0
- package/dist/ask-user-3fufbFt8.cjs +216 -0
- package/dist/ask-user-3fufbFt8.cjs.map +1 -0
- package/dist/ask-user-CvCMHkhI.js +206 -0
- package/dist/ask-user-CvCMHkhI.js.map +1 -0
- package/dist/buttons-group-CoZP3lJt.cjs +59 -0
- package/dist/buttons-group-CoZP3lJt.cjs.map +1 -0
- package/dist/buttons-group-DsZgrZBZ.js +37 -0
- package/dist/buttons-group-DsZgrZBZ.js.map +1 -0
- package/dist/buttons-group.css +113 -22
- package/dist/{chat-notification-4OuPNhtu.js → chat-notification-BM24QnK9.js} +7 -7
- package/dist/{chat-notification-4OuPNhtu.js.map → chat-notification-BM24QnK9.js.map} +1 -1
- package/dist/{chat-notification-CPrlBwP_.cjs → chat-notification-CQlc3Z3y.cjs} +7 -7
- package/dist/{chat-notification-CPrlBwP_.cjs.map → chat-notification-CQlc3Z3y.cjs.map} +1 -1
- package/dist/{chat-signal-CG5-vy21.js → chat-signal-5gAZo10e.js} +6 -6
- package/dist/{chat-signal-CG5-vy21.js.map → chat-signal-5gAZo10e.js.map} +1 -1
- package/dist/{chat-signal-B_T2DSzo.cjs → chat-signal-CUkeTh1i.cjs} +6 -6
- package/dist/{chat-signal-B_T2DSzo.cjs.map → chat-signal-CUkeTh1i.cjs.map} +1 -1
- package/dist/{code-block-Cd4u7Bo9.cjs → code-block-D2q4w1t-.cjs} +10 -10
- package/dist/{code-block-Cd4u7Bo9.cjs.map → code-block-D2q4w1t-.cjs.map} +1 -1
- package/dist/{code-block-CSqjpBvb.js → code-block-D3BWud_S.js} +10 -10
- package/dist/{code-block-CSqjpBvb.js.map → code-block-D3BWud_S.js.map} +1 -1
- package/dist/{code-diff-C5uY-3Hz.js → code-diff-BHZTS4Zh.js} +2 -2
- package/dist/{code-diff-C5uY-3Hz.js.map → code-diff-BHZTS4Zh.js.map} +1 -1
- package/dist/{code-diff-DBtbPe9D.cjs → code-diff-CG8veSa-.cjs} +2 -2
- package/dist/{code-diff-DBtbPe9D.cjs.map → code-diff-CG8veSa-.cjs.map} +1 -1
- package/dist/{code-editor-vCt7l9Bl.js → code-editor-7wJJDE9d.js} +2 -2
- package/dist/{code-editor-vCt7l9Bl.js.map → code-editor-7wJJDE9d.js.map} +1 -1
- package/dist/{code-editor-DgY7d8kg.cjs → code-editor-Ce1FXyFV.cjs} +2 -2
- package/dist/{code-editor-DgY7d8kg.cjs.map → code-editor-Ce1FXyFV.cjs.map} +1 -1
- package/dist/{collapsible-BvrI6XnN.cjs → collapsible-BFSJouuI.cjs} +2 -2
- package/dist/{collapsible-BvrI6XnN.cjs.map → collapsible-BFSJouuI.cjs.map} +1 -1
- package/dist/{collapsible-B2uUy8w5.js → collapsible-DhhP5p1j.js} +2 -2
- package/dist/{collapsible-B2uUy8w5.js.map → collapsible-DhhP5p1j.js.map} +1 -1
- package/dist/{combobox-D7xJFZuO.js → combobox-CV-Ue388.js} +5 -5
- package/dist/combobox-CV-Ue388.js.map +1 -0
- package/dist/{combobox-BWM3VH-n.cjs → combobox-Dw3W6EHS.cjs} +6 -6
- package/dist/combobox-Dw3W6EHS.cjs.map +1 -0
- package/dist/{combobox-styles-CRebmeht.js → combobox-styles-Dgc_Jp-E.js} +3 -6
- package/dist/combobox-styles-Dgc_Jp-E.js.map +1 -0
- package/dist/{combobox-styles-DYlNNjKC.cjs → combobox-styles-ExU7SMb7.cjs} +3 -6
- package/dist/combobox-styles-ExU7SMb7.cjs.map +1 -0
- package/dist/{command-DuT06mTw.cjs → command-BJrGchxZ.cjs} +6 -6
- package/dist/{command-DuT06mTw.cjs.map → command-BJrGchxZ.cjs.map} +1 -1
- package/dist/{command-jRiL1vXM.js → command-kHnYspgO.js} +6 -6
- package/dist/{command-jRiL1vXM.js.map → command-kHnYspgO.js.map} +1 -1
- package/dist/components/ActionRow.cjs.js +38 -0
- package/dist/components/ActionRow.cjs.js.map +1 -0
- package/dist/components/ActionRow.d.ts +2 -0
- package/dist/components/ActionRow.es.js +34 -0
- package/dist/components/ActionRow.es.js.map +1 -0
- package/dist/components/AlertDialog.cjs.js +1 -1
- package/dist/components/AlertDialog.es.js +1 -1
- package/dist/components/Breadcrumb.cjs.js +1 -1
- package/dist/components/Breadcrumb.cjs.js.map +1 -1
- package/dist/components/Breadcrumb.es.js +1 -1
- package/dist/components/Breadcrumb.es.js.map +1 -1
- package/dist/components/Button.cjs.js +2 -2
- package/dist/components/Button.es.js +3 -3
- package/dist/components/ButtonsGroup.cjs.js +1 -2
- package/dist/components/ButtonsGroup.cjs.js.map +1 -1
- package/dist/components/ButtonsGroup.es.js +1 -1
- package/dist/components/Card.cjs.js +1 -1
- package/dist/components/Card.es.js +1 -1
- package/dist/components/ClampedText.cjs.js +1 -1
- package/dist/components/ClampedText.es.js +1 -1
- package/dist/components/CodeBlock.cjs.js +1 -1
- package/dist/components/CodeBlock.es.js +1 -1
- package/dist/components/CodeDiff.cjs.js +1 -1
- package/dist/components/CodeDiff.es.js +1 -1
- package/dist/components/CodeEditor.cjs.js +1 -1
- package/dist/components/CodeEditor.es.js +1 -1
- package/dist/components/Collapsible.cjs.js +1 -1
- package/dist/components/Collapsible.es.js +1 -1
- package/dist/components/Columns.cjs.js +1 -1
- package/dist/components/Columns.es.js +1 -1
- package/dist/components/Combobox.cjs.js +2 -2
- package/dist/components/Combobox.es.js +2 -2
- package/dist/components/Command.cjs.js +1 -1
- package/dist/components/Command.es.js +1 -1
- package/dist/components/CommandPalette.cjs.js +12 -12
- package/dist/components/CommandPalette.cjs.js.map +1 -1
- package/dist/components/CommandPalette.es.js +12 -12
- package/dist/components/CommandPalette.es.js.map +1 -1
- package/dist/components/Comment.cjs.js +6 -7
- package/dist/components/Comment.cjs.js.map +1 -1
- package/dist/components/Comment.es.js +5 -6
- package/dist/components/Comment.es.js.map +1 -1
- package/dist/components/Composer.cjs.js +6 -6
- package/dist/components/Composer.cjs.js.map +1 -1
- package/dist/components/Composer.es.js +6 -6
- package/dist/components/Composer.es.js.map +1 -1
- package/dist/components/ContextMenu.cjs.js +1 -6
- package/dist/components/ContextMenu.cjs.js.map +1 -1
- package/dist/components/ContextMenu.es.js +1 -6
- package/dist/components/ContextMenu.es.js.map +1 -1
- package/dist/components/CopyButton.cjs.js +1 -1
- package/dist/components/CopyButton.es.js +1 -1
- package/dist/components/DataCodeSection.cjs.js +1 -1
- package/dist/components/DataCodeSection.es.js +1 -1
- package/dist/components/DataDetailsPanel.cjs.js +10 -11
- package/dist/components/DataDetailsPanel.cjs.js.map +1 -1
- package/dist/components/DataDetailsPanel.es.js +10 -11
- package/dist/components/DataDetailsPanel.es.js.map +1 -1
- package/dist/components/DataFilter.cjs.js +2 -2
- package/dist/components/DataFilter.es.js +2 -2
- package/dist/components/DataKeysAndValues.cjs.js +1 -1
- package/dist/components/DataKeysAndValues.es.js +1 -1
- package/dist/components/DataList.cjs.js +8 -8
- package/dist/components/DataList.cjs.js.map +1 -1
- package/dist/components/DataList.es.js +8 -8
- package/dist/components/DataList.es.js.map +1 -1
- package/dist/components/DataPanel.cjs.js +1 -1
- package/dist/components/DataPanel.es.js +1 -1
- package/dist/components/DateRangeTimeline.cjs.js +6 -6
- package/dist/components/DateRangeTimeline.cjs.js.map +1 -1
- package/dist/components/DateRangeTimeline.es.js +6 -6
- package/dist/components/DateRangeTimeline.es.js.map +1 -1
- package/dist/components/DateTimePicker.cjs.js +4 -4
- package/dist/components/DateTimePicker.cjs.js.map +1 -1
- package/dist/components/DateTimePicker.es.js +4 -4
- package/dist/components/DateTimePicker.es.js.map +1 -1
- package/dist/components/DateTimeRangePicker.cjs.js +1 -1
- package/dist/components/DateTimeRangePicker.es.js +1 -1
- package/dist/components/Dialog.cjs.js +2 -2
- package/dist/components/Dialog.es.js +3 -3
- package/dist/components/Drawer.cjs.js +1 -1
- package/dist/components/Drawer.es.js +1 -1
- package/dist/components/DropdownMenu.cjs.js +1 -1
- package/dist/components/DropdownMenu.es.js +1 -1
- package/dist/components/EmptyState.cjs.js +1 -1
- package/dist/components/EmptyState.es.js +1 -1
- package/dist/components/EntityHeader.cjs.js +1 -1
- package/dist/components/EntityHeader.cjs.js.map +1 -1
- package/dist/components/EntityHeader.es.js +1 -1
- package/dist/components/EntityHeader.es.js.map +1 -1
- package/dist/components/EnvironmentVariablesEditor.cjs.js +15 -16
- package/dist/components/EnvironmentVariablesEditor.cjs.js.map +1 -1
- package/dist/components/EnvironmentVariablesEditor.es.js +9 -10
- package/dist/components/EnvironmentVariablesEditor.es.js.map +1 -1
- package/dist/components/ErrorBoundary.cjs.js +3 -3
- package/dist/components/ErrorBoundary.cjs.js.map +1 -1
- package/dist/components/ErrorBoundary.es.js +3 -3
- package/dist/components/ErrorBoundary.es.js.map +1 -1
- package/dist/components/ErrorState.cjs.js +1 -1
- package/dist/components/ErrorState.es.js +1 -1
- package/dist/components/FilterBar.cjs.js +495 -43
- package/dist/components/FilterBar.cjs.js.map +1 -1
- package/dist/components/FilterBar.es.js +495 -47
- package/dist/components/FilterBar.es.js.map +1 -1
- package/dist/components/FormFieldBlocks.cjs.js +11 -12
- package/dist/components/FormFieldBlocks.cjs.js.map +1 -1
- package/dist/components/FormFieldBlocks.es.js +4 -5
- package/dist/components/FormFieldBlocks.es.js.map +1 -1
- package/dist/components/Header.cjs.js +6 -31
- package/dist/components/Header.cjs.js.map +1 -1
- package/dist/components/Header.es.js +1 -30
- package/dist/components/Header.es.js.map +1 -1
- package/dist/components/HorizontalBars.cjs.js +1 -1
- package/dist/components/HorizontalBars.es.js +1 -1
- package/dist/components/HoverCard.cjs.js +1 -1
- package/dist/components/HoverCard.es.js +1 -1
- package/dist/components/InputGroup.cjs.js +1 -1
- package/dist/components/InputGroup.es.js +1 -1
- package/dist/components/IntegrationDialog.cjs.js +6 -6
- package/dist/components/IntegrationDialog.cjs.js.map +1 -1
- package/dist/components/IntegrationDialog.es.js +6 -6
- package/dist/components/IntegrationDialog.es.js.map +1 -1
- package/dist/components/ItemList.cjs.js +4 -4
- package/dist/components/ItemList.cjs.js.map +1 -1
- package/dist/components/ItemList.es.js +4 -4
- package/dist/components/ItemList.es.js.map +1 -1
- package/dist/components/JSONSchemaForm.cjs.js +3 -3
- package/dist/components/JSONSchemaForm.es.js +3 -3
- package/dist/components/Kbd.cjs.js +1 -1
- package/dist/components/Kbd.es.js +1 -1
- package/dist/components/KeyValueList.cjs.js +1 -1
- package/dist/components/KeyValueList.es.js +1 -1
- package/dist/components/ListSearch.cjs.js +1 -1
- package/dist/components/ListSearch.es.js +1 -1
- package/dist/components/LogsDataList.cjs.js +4 -2
- package/dist/components/LogsDataList.cjs.js.map +1 -1
- package/dist/components/LogsDataList.es.js +4 -2
- package/dist/components/LogsDataList.es.js.map +1 -1
- package/dist/components/MainHeader.cjs.js +3 -3
- package/dist/components/MainHeader.cjs.js.map +1 -1
- package/dist/components/MainHeader.es.js +3 -3
- package/dist/components/MainHeader.es.js.map +1 -1
- package/dist/components/MainSidebar.cjs.js +11 -125
- package/dist/components/MainSidebar.cjs.js.map +1 -1
- package/dist/components/MainSidebar.es.js +1 -120
- package/dist/components/MainSidebar.es.js.map +1 -1
- package/dist/components/MarkdownRenderer.cjs.js +1 -1
- package/dist/components/MarkdownRenderer.es.js +1 -1
- package/dist/components/Message.cjs.js +2 -2
- package/dist/components/Message.es.js +3 -3
- package/dist/components/MetricsCard.cjs.js +1 -1
- package/dist/components/MetricsCard.es.js +1 -1
- package/dist/components/MetricsKpiCard.cjs.js +1 -1
- package/dist/components/MetricsKpiCard.es.js +1 -1
- package/dist/components/MetricsLineChart.cjs.js +1 -1
- package/dist/components/MetricsLineChart.es.js +1 -1
- package/dist/components/Notice.cjs.js +1 -1
- package/dist/components/Notice.es.js +1 -1
- package/dist/components/PageHeader.cjs.js +1 -1
- package/dist/components/PageHeader.es.js +1 -1
- package/dist/components/PageLayout.cjs.js +30 -8
- package/dist/components/PageLayout.cjs.js.map +1 -1
- package/dist/components/PageLayout.es.js +32 -3
- package/dist/components/PageLayout.es.js.map +1 -1
- package/dist/components/PendingIndicator.cjs.js +1 -1
- package/dist/components/PendingIndicator.cjs.js.map +1 -1
- package/dist/components/PendingIndicator.es.js +1 -1
- package/dist/components/PendingIndicator.es.js.map +1 -1
- package/dist/components/PermissionDenied.cjs.js +1 -1
- package/dist/components/PermissionDenied.es.js +1 -1
- package/dist/components/PrevNextNav.cjs.js +1 -1
- package/dist/components/PrevNextNav.es.js +1 -1
- package/dist/components/PropertyFilter.cjs.js +18 -19
- package/dist/components/PropertyFilter.cjs.js.map +1 -1
- package/dist/components/PropertyFilter.es.js +21 -22
- package/dist/components/PropertyFilter.es.js.map +1 -1
- package/dist/components/RadioGroup.cjs.js +3 -56
- package/dist/components/RadioGroup.cjs.js.map +1 -1
- package/dist/components/RadioGroup.es.js +1 -39
- package/dist/components/RadioGroup.es.js.map +1 -1
- package/dist/components/RuleBuilder.cjs.js +10 -10
- package/dist/components/RuleBuilder.cjs.js.map +1 -1
- package/dist/components/RuleBuilder.es.js +10 -10
- package/dist/components/RuleBuilder.es.js.map +1 -1
- package/dist/components/SankeyChart.cjs.js +1 -1
- package/dist/components/SankeyChart.es.js +1 -1
- package/dist/components/ScatterPlotChart.cjs.js +2 -2
- package/dist/components/ScatterPlotChart.cjs.js.map +1 -1
- package/dist/components/ScatterPlotChart.es.js +2 -2
- package/dist/components/ScatterPlotChart.es.js.map +1 -1
- package/dist/components/ScrollArea.cjs.js +1 -1
- package/dist/components/ScrollArea.es.js +1 -1
- package/dist/components/Select.cjs.js +1 -1
- package/dist/components/Select.es.js +1 -1
- package/dist/components/SessionExpired.cjs.js +1 -1
- package/dist/components/SessionExpired.es.js +1 -1
- package/dist/components/SettingsLayout.cjs.js +1 -1
- package/dist/components/SettingsLayout.es.js +1 -1
- package/dist/components/SideDialog.cjs.js +17 -10
- package/dist/components/SideDialog.cjs.js.map +1 -1
- package/dist/components/SideDialog.es.js +17 -10
- package/dist/components/SideDialog.es.js.map +1 -1
- package/dist/components/Spinner.cjs.js +1 -1
- package/dist/components/Spinner.es.js +1 -1
- package/dist/components/StatusIndicators.cjs.js +3 -3
- package/dist/components/StatusIndicators.cjs.js.map +1 -1
- package/dist/components/StatusIndicators.es.js +3 -3
- package/dist/components/StatusIndicators.es.js.map +1 -1
- package/dist/components/Steps.cjs.js +3 -3
- package/dist/components/Steps.cjs.js.map +1 -1
- package/dist/components/Steps.es.js +3 -3
- package/dist/components/Steps.es.js.map +1 -1
- package/dist/components/Tabs.cjs.js +3 -3
- package/dist/components/Tabs.es.js +3 -3
- package/dist/components/ThreadList.cjs.js +2 -2
- package/dist/components/ThreadList.cjs.js.map +1 -1
- package/dist/components/ThreadList.es.js +2 -2
- package/dist/components/ThreadList.es.js.map +1 -1
- package/dist/components/ThreadRail.cjs.js +1 -1
- package/dist/components/ThreadRail.es.js +1 -1
- package/dist/components/TokenBudget.cjs.js +1 -1
- package/dist/components/TokenBudget.cjs.js.map +1 -1
- package/dist/components/TokenBudget.es.js +1 -1
- package/dist/components/TokenBudget.es.js.map +1 -1
- package/dist/components/Tree.cjs.js +3 -3
- package/dist/components/Tree.cjs.js.map +1 -1
- package/dist/components/Tree.es.js +3 -3
- package/dist/components/Tree.es.js.map +1 -1
- package/dist/components/Truncate.cjs.js +1 -1
- package/dist/components/Truncate.es.js +1 -1
- package/dist/components/Workflow.cjs.js +36 -36
- package/dist/components/Workflow.cjs.js.map +1 -1
- package/dist/components/Workflow.es.js +36 -36
- package/dist/components/Workflow.es.js.map +1 -1
- package/dist/components/ai/ask-user.cjs.js +4 -3
- package/dist/components/ai/ask-user.cjs.js.map +1 -1
- package/dist/components/ai/ask-user.es.js +1 -1
- package/dist/components/ai/chat-event.cjs.js +6 -6
- package/dist/components/ai/chat-event.cjs.js.map +1 -1
- package/dist/components/ai/chat-event.es.js +7 -7
- package/dist/components/ai/chat-event.es.js.map +1 -1
- package/dist/components/ai/plan.cjs.js +2 -2
- package/dist/components/ai/plan.es.js +2 -2
- package/dist/components/ai/task-list.cjs.js +7 -7
- package/dist/components/ai/task-list.cjs.js.map +1 -1
- package/dist/components/ai/task-list.es.js +7 -7
- package/dist/components/ai/task-list.es.js.map +1 -1
- package/dist/components/ai/tool-approval.cjs.js +1 -1
- package/dist/components/ai/tool-approval.es.js +1 -1
- package/dist/components/ai/tool-call.cjs.js +8 -8
- package/dist/components/ai/tool-call.cjs.js.map +1 -1
- package/dist/components/ai/tool-call.es.js +9 -9
- package/dist/components/ai/tool-call.es.js.map +1 -1
- package/dist/components/fluid-hover-highlight.cjs.js +13 -35
- package/dist/components/fluid-hover-highlight.cjs.js.map +1 -1
- package/dist/components/fluid-hover-highlight.es.js +14 -33
- package/dist/components/fluid-hover-highlight.es.js.map +1 -1
- package/dist/{composer-BUoRnMDd.cjs → composer-B_Err196.cjs} +6 -6
- package/dist/{composer-BUoRnMDd.cjs.map → composer-B_Err196.cjs.map} +1 -1
- package/dist/{composer-CEL1glw7.js → composer-DJGAoBcn.js} +6 -6
- package/dist/{composer-CEL1glw7.js.map → composer-DJGAoBcn.js.map} +1 -1
- package/dist/{copy-button-BbDBpBMl.cjs → copy-button-C5dMlWsW.cjs} +2 -2
- package/dist/{copy-button-BbDBpBMl.cjs.map → copy-button-C5dMlWsW.cjs.map} +1 -1
- package/dist/{copy-button-2cwdZ3dW.js → copy-button-C6RswD_D.js} +2 -2
- package/dist/{copy-button-2cwdZ3dW.js.map → copy-button-C6RswD_D.js.map} +1 -1
- package/dist/{data-code-section-qujvEc6j.cjs → data-code-section-B-y2WPBl.cjs} +17 -19
- package/dist/data-code-section-B-y2WPBl.cjs.map +1 -0
- package/dist/{data-code-section-DKz9Okaz.js → data-code-section-DcocgDAN.js} +17 -19
- package/dist/data-code-section-DcocgDAN.js.map +1 -0
- package/dist/{data-keys-and-values-4pYpSbqS.cjs → data-keys-and-values-BduKvvC5.cjs} +2 -2
- package/dist/{data-keys-and-values-4pYpSbqS.cjs.map → data-keys-and-values-BduKvvC5.cjs.map} +1 -1
- package/dist/{data-keys-and-values-j0NVKPOl.js → data-keys-and-values-DhC4U4Yl.js} +2 -2
- package/dist/{data-keys-and-values-j0NVKPOl.js.map → data-keys-and-values-DhC4U4Yl.js.map} +1 -1
- package/dist/{data-list-DnSdaRES.js → data-list-gN4SP7a8.js} +5 -5
- package/dist/{data-list-DnSdaRES.js.map → data-list-gN4SP7a8.js.map} +1 -1
- package/dist/{data-list-skeleton-ADXw-opu.cjs → data-list-skeleton-DYG2LLri.cjs} +2 -2
- package/dist/{data-list-skeleton-ADXw-opu.cjs.map → data-list-skeleton-DYG2LLri.cjs.map} +1 -1
- package/dist/{data-list-skeleton-D7-glFuk.js → data-list-skeleton-PXHovGLv.js} +2 -2
- package/dist/{data-list-skeleton-D7-glFuk.js.map → data-list-skeleton-PXHovGLv.js.map} +1 -1
- package/dist/{data-list-spacer-DRHNUeeP.js → data-list-spacer-D-AQzTYw.js} +3 -3
- package/dist/{data-list-spacer-DRHNUeeP.js.map → data-list-spacer-D-AQzTYw.js.map} +1 -1
- package/dist/{data-list-spacer-EWo65MrK.cjs → data-list-spacer-MpuBsXjL.cjs} +3 -3
- package/dist/{data-list-spacer-EWo65MrK.cjs.map → data-list-spacer-MpuBsXjL.cjs.map} +1 -1
- package/dist/{data-list-top-DLwt_Sv-.js → data-list-top-BTeM7hI4.js} +5 -5
- package/dist/{data-list-top-DLwt_Sv-.js.map → data-list-top-BTeM7hI4.js.map} +1 -1
- package/dist/{data-list-top-RK_yX6z8.cjs → data-list-top-DDux1Eu4.cjs} +5 -5
- package/dist/{data-list-top-RK_yX6z8.cjs.map → data-list-top-DDux1Eu4.cjs.map} +1 -1
- package/dist/{data-list-CypPKOQ_.cjs → data-list-yJm-3f2w.cjs} +5 -5
- package/dist/{data-list-CypPKOQ_.cjs.map → data-list-yJm-3f2w.cjs.map} +1 -1
- package/dist/{data-panel-CWZJKBeW.cjs → data-panel-CM3N_4M7.cjs} +9 -9
- package/dist/{data-panel-CWZJKBeW.cjs.map → data-panel-CM3N_4M7.cjs.map} +1 -1
- package/dist/{data-panel-CWjgS1Gh.js → data-panel-D3UfzCoE.js} +9 -9
- package/dist/{data-panel-CWjgS1Gh.js.map → data-panel-D3UfzCoE.js.map} +1 -1
- package/dist/{date-time-range-picker-C6hjZswK.cjs → date-time-range-picker-2Pkg-FoU.cjs} +6 -7
- package/dist/{date-time-range-picker-C6hjZswK.cjs.map → date-time-range-picker-2Pkg-FoU.cjs.map} +1 -1
- package/dist/{date-time-range-picker-BcjLbkGu.js → date-time-range-picker-DHg-fuV3.js} +5 -6
- package/dist/{date-time-range-picker-BcjLbkGu.js.map → date-time-range-picker-DHg-fuV3.js.map} +1 -1
- package/dist/{dialog-Dm33cZqt.cjs → dialog-Cyj59QsZ.cjs} +3 -3
- package/dist/{dialog-Dm33cZqt.cjs.map → dialog-Cyj59QsZ.cjs.map} +1 -1
- package/dist/{dialog-DRpMek34.js → dialog-D8fuBETk.js} +3 -3
- package/dist/{dialog-DRpMek34.js.map → dialog-D8fuBETk.js.map} +1 -1
- package/dist/domains/chat/attachments/attachment-preview-dialog.cjs.js +2 -2
- package/dist/domains/chat/attachments/attachment-preview-dialog.es.js +2 -2
- package/dist/domains/chat/attachments/composer-attachment-list.cjs.js +1 -1
- package/dist/domains/chat/attachments/composer-attachment-list.es.js +1 -1
- package/dist/domains/chat/attachments/composer-attachment.cjs.js +1 -1
- package/dist/domains/chat/attachments/composer-attachment.es.js +1 -1
- package/dist/domains/chat/components/badge-wrapper.cjs.js +2 -2
- package/dist/domains/chat/components/badge-wrapper.cjs.js.map +1 -1
- package/dist/domains/chat/components/badge-wrapper.es.js +2 -2
- package/dist/domains/chat/components/badge-wrapper.es.js.map +1 -1
- package/dist/domains/chat/components/loading-badge.cjs.js +1 -1
- package/dist/domains/chat/components/loading-badge.es.js +1 -1
- package/dist/domains/chat/components/network-choice-metadata-dialog.cjs.js +4 -4
- package/dist/domains/chat/components/network-choice-metadata-dialog.cjs.js.map +1 -1
- package/dist/domains/chat/components/network-choice-metadata-dialog.es.js +4 -4
- package/dist/domains/chat/components/network-choice-metadata-dialog.es.js.map +1 -1
- package/dist/domains/chat/messages/notification-signal-notice.cjs.js +1 -1
- package/dist/domains/chat/messages/notification-signal-notice.es.js +1 -1
- package/dist/domains/chat/messages/reasoning-streaming-line.cjs.js +1 -1
- package/dist/domains/chat/messages/reasoning-streaming-line.cjs.js.map +1 -1
- package/dist/domains/chat/messages/reasoning-streaming-line.es.js +1 -1
- package/dist/domains/chat/messages/reasoning-streaming-line.es.js.map +1 -1
- package/dist/domains/chat/messages/reasoning.cjs.js +4 -4
- package/dist/domains/chat/messages/reasoning.cjs.js.map +1 -1
- package/dist/domains/chat/messages/reasoning.es.js +4 -4
- package/dist/domains/chat/messages/reasoning.es.js.map +1 -1
- package/dist/domains/chat/messages/renderers/message-text.cjs.js +2 -2
- package/dist/domains/chat/messages/renderers/message-text.es.js +2 -2
- package/dist/domains/chat/messages/renderers/status-renderers.cjs.js +1 -1
- package/dist/domains/chat/messages/renderers/status-renderers.es.js +1 -1
- package/dist/domains/chat/messages/signal-badge.cjs.js +1 -1
- package/dist/domains/chat/messages/signal-badge.es.js +1 -1
- package/dist/domains/chat/messages/system-reminder-badge.cjs.js +6 -6
- package/dist/domains/chat/messages/system-reminder-badge.cjs.js.map +1 -1
- package/dist/domains/chat/messages/system-reminder-badge.es.js +6 -6
- package/dist/domains/chat/messages/system-reminder-badge.es.js.map +1 -1
- package/dist/domains/chat/messages/tripwire-notice.cjs.js +3 -3
- package/dist/domains/chat/messages/tripwire-notice.cjs.js.map +1 -1
- package/dist/domains/chat/messages/tripwire-notice.es.js +3 -3
- package/dist/domains/chat/messages/tripwire-notice.es.js.map +1 -1
- package/dist/domains/chat/tools/badges/ask-user-badge.cjs.js +2 -2
- package/dist/domains/chat/tools/badges/ask-user-badge.cjs.js.map +1 -1
- package/dist/domains/chat/tools/badges/ask-user-badge.es.js +2 -2
- package/dist/domains/chat/tools/badges/ask-user-badge.es.js.map +1 -1
- package/dist/domains/chat/tools/badges/code-mode-badge.cjs.js +5 -5
- package/dist/domains/chat/tools/badges/code-mode-badge.cjs.js.map +1 -1
- package/dist/domains/chat/tools/badges/code-mode-badge.es.js +5 -5
- package/dist/domains/chat/tools/badges/code-mode-badge.es.js.map +1 -1
- package/dist/domains/chat/tools/badges/observation-marker-badge.cjs.js +29 -29
- package/dist/domains/chat/tools/badges/observation-marker-badge.cjs.js.map +1 -1
- package/dist/domains/chat/tools/badges/observation-marker-badge.es.js +29 -29
- package/dist/domains/chat/tools/badges/observation-marker-badge.es.js.map +1 -1
- package/dist/domains/chat/tools/badges/observation-renderer.cjs.js +11 -11
- package/dist/domains/chat/tools/badges/observation-renderer.cjs.js.map +1 -1
- package/dist/domains/chat/tools/badges/observation-renderer.es.js +11 -11
- package/dist/domains/chat/tools/badges/observation-renderer.es.js.map +1 -1
- package/dist/domains/chat/tools/badges/tool-approval-buttons.cjs.js +1 -1
- package/dist/domains/chat/tools/badges/tool-approval-buttons.es.js +1 -1
- package/dist/domains/logs/components/log-details-view.cjs.js +10 -12
- package/dist/domains/logs/components/log-details-view.cjs.js.map +1 -1
- package/dist/domains/logs/components/log-details-view.es.js +10 -12
- package/dist/domains/logs/components/log-details-view.es.js.map +1 -1
- package/dist/domains/logs/components/logs-error-content.cjs.js +4 -7
- package/dist/domains/logs/components/logs-error-content.cjs.js.map +1 -1
- package/dist/domains/logs/components/logs-error-content.es.js +4 -7
- package/dist/domains/logs/components/logs-error-content.es.js.map +1 -1
- package/dist/domains/logs/components/logs-list-view.cjs.js +2 -2
- package/dist/domains/logs/components/logs-list-view.es.js +2 -2
- package/dist/domains/logs/components/logs-toolbar.cjs.js +1 -1
- package/dist/domains/logs/components/logs-toolbar.cjs.js.map +1 -1
- package/dist/domains/logs/components/logs-toolbar.es.js +1 -1
- package/dist/domains/logs/components/logs-toolbar.es.js.map +1 -1
- package/dist/domains/logs/components/no-logs-info.cjs.js +6 -6
- package/dist/domains/logs/components/no-logs-info.cjs.js.map +1 -1
- package/dist/domains/logs/components/no-logs-info.es.js +7 -7
- package/dist/domains/logs/components/no-logs-info.es.js.map +1 -1
- package/dist/domains/memory/components/flame-graph.cjs.js +19 -19
- package/dist/domains/memory/components/flame-graph.cjs.js.map +1 -1
- package/dist/domains/memory/components/flame-graph.es.js +19 -19
- package/dist/domains/memory/components/flame-graph.es.js.map +1 -1
- package/dist/domains/memory/components/memory-studio-panel.cjs.js +4 -4
- package/dist/domains/memory/components/memory-studio-panel.cjs.js.map +1 -1
- package/dist/domains/memory/components/memory-studio-panel.es.js +4 -4
- package/dist/domains/memory/components/memory-studio-panel.es.js.map +1 -1
- package/dist/domains/memory/components/observation-detail-view.cjs.js +17 -18
- package/dist/domains/memory/components/observation-detail-view.cjs.js.map +1 -1
- package/dist/domains/memory/components/observation-detail-view.es.js +17 -18
- package/dist/domains/memory/components/observation-detail-view.es.js.map +1 -1
- package/dist/domains/memory/components/thread-context-progress.cjs.js +3 -3
- package/dist/domains/memory/components/thread-context-progress.cjs.js.map +1 -1
- package/dist/domains/memory/components/thread-context-progress.es.js +3 -3
- package/dist/domains/memory/components/thread-context-progress.es.js.map +1 -1
- package/dist/domains/metrics/components/bar-list.cjs.js +9 -9
- package/dist/domains/metrics/components/bar-list.cjs.js.map +1 -1
- package/dist/domains/metrics/components/bar-list.es.js +9 -9
- package/dist/domains/metrics/components/bar-list.es.js.map +1 -1
- package/dist/domains/metrics/components/card-action-buttons.cjs.js +1 -1
- package/dist/domains/metrics/components/card-action-buttons.es.js +1 -1
- package/dist/domains/metrics/components/date-range-selector.cjs.js +1 -1
- package/dist/domains/metrics/components/date-range-selector.es.js +1 -1
- package/dist/domains/metrics/components/kpi-card-view.cjs.js +1 -1
- package/dist/domains/metrics/components/kpi-card-view.es.js +1 -1
- package/dist/domains/metrics/components/latency-card-view.cjs.js +5 -5
- package/dist/domains/metrics/components/latency-card-view.es.js +5 -5
- package/dist/domains/metrics/components/memory-card-view.cjs.js +5 -5
- package/dist/domains/metrics/components/memory-card-view.es.js +5 -5
- package/dist/domains/metrics/components/model-usage-cost-card-view.cjs.js +2 -2
- package/dist/domains/metrics/components/model-usage-cost-card-view.es.js +2 -2
- package/dist/domains/metrics/components/scores-card-view.cjs.js +6 -6
- package/dist/domains/metrics/components/scores-card-view.es.js +6 -6
- package/dist/domains/metrics/components/token-usage-by-agent-card-view.cjs.js +5 -5
- package/dist/domains/metrics/components/token-usage-by-agent-card-view.es.js +5 -5
- package/dist/domains/metrics/components/token-usage-timeline-card-view.cjs.js +5 -5
- package/dist/domains/metrics/components/token-usage-timeline-card-view.es.js +5 -5
- package/dist/domains/metrics/components/traces-volume-card-view.cjs.js +5 -5
- package/dist/domains/metrics/components/traces-volume-card-view.es.js +5 -5
- package/dist/domains/traces/components/no-traces-info.cjs.js +2 -3
- package/dist/domains/traces/components/no-traces-info.cjs.js.map +1 -1
- package/dist/domains/traces/components/no-traces-info.es.js +2 -3
- package/dist/domains/traces/components/no-traces-info.es.js.map +1 -1
- package/dist/domains/traces/components/span-data-panel-view.cjs.js +7 -7
- package/dist/domains/traces/components/span-data-panel-view.es.js +7 -7
- package/dist/domains/traces/components/span-details-view.cjs.js +1 -1
- package/dist/domains/traces/components/span-details-view.es.js +1 -1
- package/dist/domains/traces/components/span-payload/span-error-renderer.cjs.js +3 -3
- package/dist/domains/traces/components/span-payload/span-error-renderer.es.js +3 -3
- package/dist/domains/traces/components/span-payload/span-input-renderers.cjs.js +3 -3
- package/dist/domains/traces/components/span-payload/span-input-renderers.es.js +3 -3
- package/dist/domains/traces/components/span-payload/span-output-renderers.cjs.js +4 -4
- package/dist/domains/traces/components/span-payload/span-output-renderers.es.js +4 -4
- package/dist/domains/traces/components/span-payload/span-payload-messages.cjs.js +2 -2
- package/dist/domains/traces/components/span-payload/span-payload-messages.es.js +2 -2
- package/dist/domains/traces/components/span-payload/span-payload-primitives.cjs.js +3 -3
- package/dist/domains/traces/components/span-payload/span-payload-primitives.es.js +3 -3
- package/dist/domains/traces/components/span-payload/span-payload-section.cjs.js +4 -6
- package/dist/domains/traces/components/span-payload/span-payload-section.cjs.js.map +1 -1
- package/dist/domains/traces/components/span-payload/span-payload-section.es.js +4 -6
- package/dist/domains/traces/components/span-payload/span-payload-section.es.js.map +1 -1
- package/dist/domains/traces/components/span-payload/span-payload-tool.cjs.js +2 -2
- package/dist/domains/traces/components/span-payload/span-payload-tool.es.js +2 -2
- package/dist/domains/traces/components/span-summary-description.cjs.js +1 -1
- package/dist/domains/traces/components/span-summary-description.es.js +1 -1
- package/dist/domains/traces/components/span-timeline-row.cjs.js +4 -4
- package/dist/domains/traces/components/span-timeline-row.cjs.js.map +1 -1
- package/dist/domains/traces/components/span-timeline-row.es.js +4 -4
- package/dist/domains/traces/components/span-timeline-row.es.js.map +1 -1
- package/dist/domains/traces/components/span-timing-hover-card.cjs.js +2 -2
- package/dist/domains/traces/components/span-timing-hover-card.es.js +2 -2
- package/dist/domains/traces/components/span-token-usage.cjs.js +5 -5
- package/dist/domains/traces/components/span-token-usage.cjs.js.map +1 -1
- package/dist/domains/traces/components/span-token-usage.es.js +5 -5
- package/dist/domains/traces/components/span-token-usage.es.js.map +1 -1
- package/dist/domains/traces/components/thread-trace/thread-trace-details.cjs.js +2 -2
- package/dist/domains/traces/components/thread-trace/thread-trace-details.cjs.js.map +1 -1
- package/dist/domains/traces/components/thread-trace/thread-trace-details.es.js +2 -2
- package/dist/domains/traces/components/thread-trace/thread-trace-details.es.js.map +1 -1
- package/dist/domains/traces/components/thread-trace/thread-trace-messages.cjs.js +4 -4
- package/dist/domains/traces/components/thread-trace/thread-trace-messages.es.js +4 -4
- package/dist/domains/traces/components/thread-trace/thread-trace-rail.cjs.js +1 -1
- package/dist/domains/traces/components/thread-trace/thread-trace-rail.es.js +1 -1
- package/dist/domains/traces/components/thread-trace/thread-trace-spans.cjs.js +2 -2
- package/dist/domains/traces/components/thread-trace/thread-trace-spans.cjs.js.map +1 -1
- package/dist/domains/traces/components/thread-trace/thread-trace-spans.es.js +2 -2
- package/dist/domains/traces/components/thread-trace/thread-trace-spans.es.js.map +1 -1
- package/dist/domains/traces/components/timeline-name-col.cjs.js +2 -2
- package/dist/domains/traces/components/timeline-name-col.cjs.js.map +1 -1
- package/dist/domains/traces/components/timeline-name-col.es.js +2 -2
- package/dist/domains/traces/components/timeline-name-col.es.js.map +1 -1
- package/dist/domains/traces/components/timeline-structure-sign.cjs.js +1 -1
- package/dist/domains/traces/components/timeline-structure-sign.cjs.js.map +1 -1
- package/dist/domains/traces/components/timeline-structure-sign.es.js +1 -1
- package/dist/domains/traces/components/timeline-structure-sign.es.js.map +1 -1
- package/dist/domains/traces/components/timeline-timing-col.cjs.js +2 -2
- package/dist/domains/traces/components/timeline-timing-col.cjs.js.map +1 -1
- package/dist/domains/traces/components/timeline-timing-col.es.js +2 -2
- package/dist/domains/traces/components/timeline-timing-col.es.js.map +1 -1
- package/dist/domains/traces/components/trace-columns-menu.cjs.js +8 -8
- package/dist/domains/traces/components/trace-columns-menu.cjs.js.map +1 -1
- package/dist/domains/traces/components/trace-columns-menu.es.js +6 -6
- package/dist/domains/traces/components/trace-columns-menu.es.js.map +1 -1
- package/dist/domains/traces/components/trace-data-panel-view.cjs.js +11 -13
- package/dist/domains/traces/components/trace-data-panel-view.cjs.js.map +1 -1
- package/dist/domains/traces/components/trace-data-panel-view.es.js +11 -13
- package/dist/domains/traces/components/trace-data-panel-view.es.js.map +1 -1
- package/dist/domains/traces/components/trace-id-button.cjs.js +1 -1
- package/dist/domains/traces/components/trace-id-button.es.js +1 -1
- package/dist/domains/traces/components/trace-keys-and-values.cjs.js +1 -1
- package/dist/domains/traces/components/trace-keys-and-values.es.js +1 -1
- package/dist/domains/traces/components/trace-span-timeline.cjs.js +1 -1
- package/dist/domains/traces/components/trace-span-timeline.cjs.js.map +1 -1
- package/dist/domains/traces/components/trace-span-timeline.es.js +1 -1
- package/dist/domains/traces/components/trace-span-timeline.es.js.map +1 -1
- package/dist/domains/traces/components/trace-summary-description.cjs.js +1 -1
- package/dist/domains/traces/components/trace-summary-description.es.js +1 -1
- package/dist/domains/traces/components/trace-time-range-chip.cjs.js +2 -2
- package/dist/domains/traces/components/trace-time-range-chip.es.js +2 -2
- package/dist/domains/traces/components/traces-error-content.cjs.js +3 -3
- package/dist/domains/traces/components/traces-error-content.cjs.js.map +1 -1
- package/dist/domains/traces/components/traces-error-content.es.js +3 -3
- package/dist/domains/traces/components/traces-error-content.es.js.map +1 -1
- package/dist/domains/traces/components/traces-list-mode-toggle.cjs.js +2 -2
- package/dist/domains/traces/components/traces-list-mode-toggle.es.js +2 -2
- package/dist/domains/traces/components/traces-list-view.cjs.js +5 -5
- package/dist/domains/traces/components/traces-list-view.cjs.js.map +1 -1
- package/dist/domains/traces/components/traces-list-view.es.js +5 -5
- package/dist/domains/traces/components/traces-list-view.es.js.map +1 -1
- package/dist/domains/traces/components/traces-page-skeleton.cjs.js +3 -1
- package/dist/domains/traces/components/traces-page-skeleton.cjs.js.map +1 -1
- package/dist/domains/traces/components/traces-page-skeleton.es.js +3 -1
- package/dist/domains/traces/components/traces-page-skeleton.es.js.map +1 -1
- package/dist/domains/traces/hooks/use-trace-url-state.cjs.js +4 -2
- package/dist/domains/traces/hooks/use-trace-url-state.cjs.js.map +1 -1
- package/dist/domains/traces/hooks/use-trace-url-state.es.js +5 -3
- package/dist/domains/traces/hooks/use-trace-url-state.es.js.map +1 -1
- package/dist/domains/traces/trace-filters.cjs.js +92 -11
- package/dist/domains/traces/trace-filters.cjs.js.map +1 -1
- package/dist/domains/traces/trace-filters.es.js +87 -13
- package/dist/domains/traces/trace-filters.es.js.map +1 -1
- package/dist/domains/traces/trace-query-filters.cjs.js +76 -45
- package/dist/domains/traces/trace-query-filters.cjs.js.map +1 -1
- package/dist/domains/traces/trace-query-filters.es.js +76 -46
- package/dist/domains/traces/trace-query-filters.es.js.map +1 -1
- package/dist/domains/traces.cjs.js +7 -0
- package/dist/domains/traces.cjs.js.map +1 -1
- package/dist/domains/traces.es.js +2 -2
- package/dist/{drawer-BL5shtHH.cjs → drawer-9eoZbmRK.cjs} +5 -5
- package/dist/{drawer-BL5shtHH.cjs.map → drawer-9eoZbmRK.cjs.map} +1 -1
- package/dist/{drawer-Bv2DRY8E.js → drawer-DnfOugYZ.js} +5 -5
- package/dist/{drawer-Bv2DRY8E.js.map → drawer-DnfOugYZ.js.map} +1 -1
- package/dist/{dropdown-menu-DL0MzjEb.js → dropdown-menu-DpEn6HwK.js} +2 -7
- package/dist/dropdown-menu-DpEn6HwK.js.map +1 -0
- package/dist/{dropdown-menu-DNRCA4Gj.cjs → dropdown-menu-j2y37TL5.cjs} +2 -7
- package/dist/dropdown-menu-j2y37TL5.cjs.map +1 -0
- package/dist/ee/signals/components/entity-index-compact-grid.cjs.js +4 -4
- package/dist/ee/signals/components/entity-index-compact-grid.cjs.js.map +1 -1
- package/dist/ee/signals/components/entity-index-compact-grid.es.js +4 -4
- package/dist/ee/signals/components/entity-index-compact-grid.es.js.map +1 -1
- package/dist/ee/signals/components/entity-index-list.cjs.js +3 -1
- package/dist/ee/signals/components/entity-index-list.cjs.js.map +1 -1
- package/dist/ee/signals/components/entity-index-list.es.js +3 -1
- package/dist/ee/signals/components/entity-index-list.es.js.map +1 -1
- package/dist/ee/signals/components/signals-empty-state.cjs.js +34 -34
- package/dist/ee/signals/components/signals-empty-state.cjs.js.map +1 -1
- package/dist/ee/signals/components/signals-empty-state.es.js +34 -34
- package/dist/ee/signals/components/signals-empty-state.es.js.map +1 -1
- package/dist/ee/signals/components/trace-intelligence-entity-detail.cjs.js +5 -7
- package/dist/ee/signals/components/trace-intelligence-entity-detail.cjs.js.map +1 -1
- package/dist/ee/signals/components/trace-intelligence-entity-detail.es.js +5 -7
- package/dist/ee/signals/components/trace-intelligence-entity-detail.es.js.map +1 -1
- package/dist/ee/signals/components/trace-intelligence-entity-index.cjs.js +15 -17
- package/dist/ee/signals/components/trace-intelligence-entity-index.cjs.js.map +1 -1
- package/dist/ee/signals/components/trace-intelligence-entity-index.es.js +16 -18
- package/dist/ee/signals/components/trace-intelligence-entity-index.es.js.map +1 -1
- package/dist/ee/signals/examples-pager.cjs.js +2 -2
- package/dist/ee/signals/examples-pager.cjs.js.map +1 -1
- package/dist/ee/signals/examples-pager.es.js +2 -2
- package/dist/ee/signals/examples-pager.es.js.map +1 -1
- package/dist/ee/signals/flow-card.cjs.js +6 -6
- package/dist/ee/signals/flow-card.cjs.js.map +1 -1
- package/dist/ee/signals/flow-card.es.js +6 -6
- package/dist/ee/signals/flow-card.es.js.map +1 -1
- package/dist/ee/signals/lifeline-row.cjs.js +4 -4
- package/dist/ee/signals/lifeline-row.cjs.js.map +1 -1
- package/dist/ee/signals/lifeline-row.es.js +4 -4
- package/dist/ee/signals/lifeline-row.es.js.map +1 -1
- package/dist/ee/signals/noise-detail-panel.cjs.js +12 -12
- package/dist/ee/signals/noise-detail-panel.cjs.js.map +1 -1
- package/dist/ee/signals/noise-detail-panel.es.js +12 -12
- package/dist/ee/signals/noise-detail-panel.es.js.map +1 -1
- package/dist/ee/signals/sankey-signals.cjs.js +6 -6
- package/dist/ee/signals/sankey-signals.cjs.js.map +1 -1
- package/dist/ee/signals/sankey-signals.es.js +6 -6
- package/dist/ee/signals/sankey-signals.es.js.map +1 -1
- package/dist/ee/signals/settings/signal-definition-form-dialog.cjs.js +13 -14
- package/dist/ee/signals/settings/signal-definition-form-dialog.cjs.js.map +1 -1
- package/dist/ee/signals/settings/signal-definition-form-dialog.es.js +6 -7
- package/dist/ee/signals/settings/signal-definition-form-dialog.es.js.map +1 -1
- package/dist/ee/signals/settings/trace-signal-settings.cjs.js +9 -9
- package/dist/ee/signals/settings/trace-signal-settings.cjs.js.map +1 -1
- package/dist/ee/signals/settings/trace-signal-settings.es.js +9 -9
- package/dist/ee/signals/settings/trace-signal-settings.es.js.map +1 -1
- package/dist/ee/signals/signal-delta-column.cjs.js +7 -7
- package/dist/ee/signals/signal-delta-column.cjs.js.map +1 -1
- package/dist/ee/signals/signal-delta-column.es.js +7 -7
- package/dist/ee/signals/signal-delta-column.es.js.map +1 -1
- package/dist/ee/signals/signal-lifelines.cjs.js +2 -2
- package/dist/ee/signals/signal-lifelines.cjs.js.map +1 -1
- package/dist/ee/signals/signal-lifelines.es.js +2 -2
- package/dist/ee/signals/signal-lifelines.es.js.map +1 -1
- package/dist/ee/signals/signals-error-state.cjs.js +3 -3
- package/dist/ee/signals/signals-error-state.cjs.js.map +1 -1
- package/dist/ee/signals/signals-error-state.es.js +3 -3
- package/dist/ee/signals/signals-error-state.es.js.map +1 -1
- package/dist/ee/signals/signals-loading-skeleton.cjs.js +1 -1
- package/dist/ee/signals/signals-loading-skeleton.cjs.js.map +1 -1
- package/dist/ee/signals/signals-loading-skeleton.es.js +1 -1
- package/dist/ee/signals/signals-loading-skeleton.es.js.map +1 -1
- package/dist/ee/signals/snapshot-timeline.cjs.js +5 -5
- package/dist/ee/signals/snapshot-timeline.cjs.js.map +1 -1
- package/dist/ee/signals/snapshot-timeline.es.js +5 -5
- package/dist/ee/signals/snapshot-timeline.es.js.map +1 -1
- package/dist/ee/signals/sortable-signal-headers.cjs.js +1 -1
- package/dist/ee/signals/sortable-signal-headers.cjs.js.map +1 -1
- package/dist/ee/signals/sortable-signal-headers.es.js +1 -1
- package/dist/ee/signals/sortable-signal-headers.es.js.map +1 -1
- package/dist/ee/signals/theme-compare-sparkline.cjs.js +1 -1
- package/dist/ee/signals/theme-compare-sparkline.cjs.js.map +1 -1
- package/dist/ee/signals/theme-compare-sparkline.es.js +1 -1
- package/dist/ee/signals/theme-compare-sparkline.es.js.map +1 -1
- package/dist/ee/signals/theme-compare.cjs.js +5 -5
- package/dist/ee/signals/theme-compare.cjs.js.map +1 -1
- package/dist/ee/signals/theme-compare.es.js +5 -5
- package/dist/ee/signals/theme-compare.es.js.map +1 -1
- package/dist/ee/signals/theme-detail-panel.cjs.js +18 -18
- package/dist/ee/signals/theme-detail-panel.cjs.js.map +1 -1
- package/dist/ee/signals/theme-detail-panel.es.js +18 -18
- package/dist/ee/signals/theme-detail-panel.es.js.map +1 -1
- package/dist/ee/signals/theme-filter-banner.cjs.js +2 -2
- package/dist/ee/signals/theme-filter-banner.cjs.js.map +1 -1
- package/dist/ee/signals/theme-filter-banner.es.js +2 -2
- package/dist/ee/signals/theme-filter-banner.es.js.map +1 -1
- package/dist/ee/signals/theme-lifelines.cjs.js +1 -1
- package/dist/ee/signals/theme-lifelines.cjs.js.map +1 -1
- package/dist/ee/signals/theme-lifelines.es.js +1 -1
- package/dist/ee/signals/theme-lifelines.es.js.map +1 -1
- package/dist/ee/signals/theme-trend-chart.cjs.js +1 -1
- package/dist/ee/signals/theme-trend-chart.cjs.js.map +1 -1
- package/dist/ee/signals/theme-trend-chart.es.js +1 -1
- package/dist/ee/signals/theme-trend-chart.es.js.map +1 -1
- package/dist/ee/signals/trace-insight-view.cjs.js +12 -12
- package/dist/ee/signals/trace-insight-view.cjs.js.map +1 -1
- package/dist/ee/signals/trace-insight-view.es.js +12 -12
- package/dist/ee/signals/trace-insight-view.es.js.map +1 -1
- package/dist/ee/signals/trace-intelligence-explainer.cjs.js +2 -2
- package/dist/ee/signals/trace-intelligence-explainer.cjs.js.map +1 -1
- package/dist/ee/signals/trace-intelligence-explainer.es.js +2 -2
- package/dist/ee/signals/trace-intelligence-explainer.es.js.map +1 -1
- package/dist/ee/signals/view-mode-tab.cjs.js +1 -1
- package/dist/ee/signals/view-mode-tab.es.js +1 -1
- package/dist/ee/topics/components/topic-trace-summary-list.cjs.js +3 -3
- package/dist/ee/topics/components/topic-trace-summary-list.es.js +3 -3
- package/dist/ee/topics/components/topics-layout.cjs.js +3 -3
- package/dist/ee/topics/components/topics-layout.cjs.js.map +1 -1
- package/dist/ee/topics/components/topics-layout.es.js +3 -3
- package/dist/ee/topics/components/topics-layout.es.js.map +1 -1
- package/dist/{field-block-Dy1IaWbv.cjs → field-error-id-6EfqmQ4C.cjs} +5 -2
- package/dist/field-error-id-6EfqmQ4C.cjs.map +1 -0
- package/dist/{field-block-DWkbNcsV.js → field-error-id-DyWx33Fu.js} +5 -3
- package/dist/field-error-id-DyWx33Fu.js.map +1 -0
- package/dist/{filter-bar-chip-BxI0NgEz.cjs → filter-bar-chip-D8O9jpCW.cjs} +300 -69
- package/dist/filter-bar-chip-D8O9jpCW.cjs.map +1 -0
- package/dist/{filter-bar-chip-C-JxWUU8.js → filter-bar-chip-DMhUPTt8.js} +297 -71
- package/dist/filter-bar-chip-DMhUPTt8.js.map +1 -0
- package/dist/filter-bar-chip.css +33 -1
- package/dist/hooks/use-fluid-hover.cjs.js +15 -9
- package/dist/hooks/use-fluid-hover.cjs.js.map +1 -1
- package/dist/hooks/use-fluid-hover.es.js +15 -9
- package/dist/hooks/use-fluid-hover.es.js.map +1 -1
- package/dist/{horizontal-bars-nyWGmQ7g.cjs → horizontal-bars-BkVi2dEb.cjs} +7 -7
- package/dist/{horizontal-bars-nyWGmQ7g.cjs.map → horizontal-bars-BkVi2dEb.cjs.map} +1 -1
- package/dist/{horizontal-bars-CksEKcCE.js → horizontal-bars-nTOFylzc.js} +7 -7
- package/dist/{horizontal-bars-CksEKcCE.js.map → horizontal-bars-nTOFylzc.js.map} +1 -1
- package/dist/{hover-card-Ch5smNcf.js → hover-card-B1-n3amu.js} +3 -3
- package/dist/{hover-card-Ch5smNcf.js.map → hover-card-B1-n3amu.js.map} +1 -1
- package/dist/{hover-card-DdHnkGcs.cjs → hover-card-DVfZ2INZ.cjs} +3 -3
- package/dist/{hover-card-DdHnkGcs.cjs.map → hover-card-DVfZ2INZ.cjs.map} +1 -1
- package/dist/icons/Icon.cjs.js +1 -1
- package/dist/icons/Icon.cjs.js.map +1 -1
- package/dist/icons/Icon.es.js +1 -1
- package/dist/icons/Icon.es.js.map +1 -1
- package/dist/{input-group-CvWwK1Vz.cjs → input-group-2yWKRuq9.cjs} +7 -5
- package/dist/input-group-2yWKRuq9.cjs.map +1 -0
- package/dist/{input-group-BEdHivvy.js → input-group-Czviwtvr.js} +8 -6
- package/dist/input-group-Czviwtvr.js.map +1 -0
- package/dist/{kbd-CINtikLh.js → kbd-BDVTQHD_.js} +2 -2
- package/dist/{kbd-CINtikLh.js.map → kbd-BDVTQHD_.js.map} +1 -1
- package/dist/{kbd-B-Z2sNvK.cjs → kbd-BptPsKP6.cjs} +2 -2
- package/dist/{kbd-B-Z2sNvK.cjs.map → kbd-BptPsKP6.cjs.map} +1 -1
- package/dist/layout/tabbed-container.cjs.js +6 -6
- package/dist/layout/tabbed-container.es.js +6 -6
- package/dist/{list-search-BTW0Neuc.js → list-search-Jm6SLN0g.js} +2 -2
- package/dist/{list-search-BTW0Neuc.js.map → list-search-Jm6SLN0g.js.map} +1 -1
- package/dist/{list-search-vyxsZMAK.cjs → list-search-s3DRIfz6.cjs} +2 -2
- package/dist/{list-search-vyxsZMAK.cjs.map → list-search-s3DRIfz6.cjs.map} +1 -1
- package/dist/{logs-data-list-BSHJPGi6.cjs → logs-data-list-C5tjRtkQ.cjs} +5 -5
- package/dist/{logs-data-list-BSHJPGi6.cjs.map → logs-data-list-C5tjRtkQ.cjs.map} +1 -1
- package/dist/{logs-data-list-CG-UgC_x.js → logs-data-list-Cl3abARp.js} +5 -5
- package/dist/{logs-data-list-CG-UgC_x.js.map → logs-data-list-Cl3abARp.js.map} +1 -1
- package/dist/{main-sidebar-link-active-DbCvKZy2.cjs → main-sidebar-BsEmFpKN.cjs} +122 -9
- package/dist/main-sidebar-BsEmFpKN.cjs.map +1 -0
- package/dist/{main-sidebar-link-active-CmDoiX6g.js → main-sidebar-C5PU7zgc.js} +123 -11
- package/dist/main-sidebar-C5PU7zgc.js.map +1 -0
- package/dist/{markdown-renderer-D8qYAU7K.cjs → markdown-renderer-C74wABzc.cjs} +6 -7
- package/dist/markdown-renderer-C74wABzc.cjs.map +1 -0
- package/dist/{markdown-renderer-B0gTm_Ea.js → markdown-renderer-DZAcPOxC.js} +6 -7
- package/dist/markdown-renderer-DZAcPOxC.js.map +1 -0
- package/dist/{message-BrwbcLPi.js → message-Cs8NW-MR.js} +2 -2
- package/dist/{message-BrwbcLPi.js.map → message-Cs8NW-MR.js.map} +1 -1
- package/dist/{message-CszposMZ.cjs → message-D9b33Pf_.cjs} +2 -2
- package/dist/{message-CszposMZ.cjs.map → message-D9b33Pf_.cjs.map} +1 -1
- package/dist/{metrics-card-BUJxiwec.cjs → metrics-card-BdWGPlnt.cjs} +8 -8
- package/dist/metrics-card-BdWGPlnt.cjs.map +1 -0
- package/dist/{metrics-card-BlBt1WHw.js → metrics-card-C5znWn69.js} +8 -8
- package/dist/metrics-card-C5znWn69.js.map +1 -0
- package/dist/{metrics-kpi-card-CBSNmtc5.js → metrics-kpi-card-CinKYTBn.js} +4 -4
- package/dist/{metrics-kpi-card-CBSNmtc5.js.map → metrics-kpi-card-CinKYTBn.js.map} +1 -1
- package/dist/{metrics-kpi-card-CgqmNcEC.cjs → metrics-kpi-card-HU17WRTT.cjs} +4 -4
- package/dist/{metrics-kpi-card-CgqmNcEC.cjs.map → metrics-kpi-card-HU17WRTT.cjs.map} +1 -1
- package/dist/{metrics-line-chart-B_sP3eiL.cjs → metrics-line-chart-0FR3SYSt.cjs} +3 -3
- package/dist/{metrics-line-chart-B_sP3eiL.cjs.map → metrics-line-chart-0FR3SYSt.cjs.map} +1 -1
- package/dist/{metrics-line-chart-DHyrDPkJ.js → metrics-line-chart-knlgw8bV.js} +3 -3
- package/dist/{metrics-line-chart-DHyrDPkJ.js.map → metrics-line-chart-knlgw8bV.js.map} +1 -1
- package/dist/new/layout/app-shell.cjs.js +23 -28
- package/dist/new/layout/app-shell.cjs.js.map +1 -1
- package/dist/new/layout/app-shell.es.js +23 -28
- package/dist/new/layout/app-shell.es.js.map +1 -1
- package/dist/new/layout/page-header.cjs.js +1 -1
- package/dist/new/layout/page-header.es.js +1 -1
- package/dist/new/settings.cjs.js +1 -1
- package/dist/new/settings.es.js +1 -1
- package/dist/new/sidebar.cjs.js +40 -40
- package/dist/new/sidebar.cjs.js.map +1 -1
- package/dist/new/sidebar.es.js +10 -10
- package/dist/new/sidebar.es.js.map +1 -1
- package/dist/{page-header-BIoUf7MA.js → page-header-CSigVThQ.js} +2 -2
- package/dist/{page-header-BIoUf7MA.js.map → page-header-CSigVThQ.js.map} +1 -1
- package/dist/{page-header-BBlPmW-T.cjs → page-header-DzEEkOca.cjs} +2 -2
- package/dist/{page-header-BBlPmW-T.cjs.map → page-header-DzEEkOca.cjs.map} +1 -1
- package/dist/primitives/control-size.cjs.js +24 -2
- package/dist/primitives/control-size.cjs.js.map +1 -1
- package/dist/primitives/control-size.es.js +5 -3
- package/dist/primitives/control-size.es.js.map +1 -1
- package/dist/primitives/fluid-menu.cjs.js +30 -18
- package/dist/primitives/fluid-menu.cjs.js.map +1 -1
- package/dist/primitives/fluid-menu.es.js +30 -18
- package/dist/primitives/fluid-menu.es.js.map +1 -1
- package/dist/primitives/form-element.cjs.js +4 -4
- package/dist/primitives/form-element.cjs.js.map +1 -1
- package/dist/primitives/form-element.es.js +4 -3
- package/dist/primitives/form-element.es.js.map +1 -1
- package/dist/primitives/menu-item.cjs.js +7 -4
- package/dist/primitives/menu-item.cjs.js.map +1 -1
- package/dist/primitives/menu-item.es.js +7 -4
- package/dist/primitives/menu-item.es.js.map +1 -1
- package/dist/primitives/trigger-button.cjs.js +1 -1
- package/dist/primitives/trigger-button.es.js +1 -1
- package/dist/{property-filter-applied-BBiUbtr0.js → property-filter-applied-C15IJHLs.js} +30 -36
- package/dist/property-filter-applied-C15IJHLs.js.map +1 -0
- package/dist/{property-filter-applied-BmxCPe2d.cjs → property-filter-applied-DtSjGypB.cjs} +30 -36
- package/dist/property-filter-applied-DtSjGypB.cjs.map +1 -0
- package/dist/radio-group-BdEPWGzi.cjs +62 -0
- package/dist/radio-group-BdEPWGzi.cjs.map +1 -0
- package/dist/radio-group-CFZXUXZ5.js +40 -0
- package/dist/radio-group-CFZXUXZ5.js.map +1 -0
- package/dist/resize/collapsible-panel.cjs.js +1 -1
- package/dist/resize/collapsible-panel.es.js +1 -1
- package/dist/resize/panel-drawer.cjs.js +1 -1
- package/dist/resize/panel-drawer.es.js +1 -1
- package/dist/{sankey-chart-Bcm9jMhe.cjs → sankey-chart-C1e0nRc3.cjs} +4 -4
- package/dist/{sankey-chart-Bcm9jMhe.cjs.map → sankey-chart-C1e0nRc3.cjs.map} +1 -1
- package/dist/{sankey-chart-CqngN2lw.js → sankey-chart-jvMXKzud.js} +4 -4
- package/dist/{sankey-chart-CqngN2lw.js.map → sankey-chart-jvMXKzud.js.map} +1 -1
- package/dist/{scroll-area-Qjf7e0Ik.cjs → scroll-area-BzOyuS8Y.cjs} +2 -2
- package/dist/{scroll-area-Qjf7e0Ik.cjs.map → scroll-area-BzOyuS8Y.cjs.map} +1 -1
- package/dist/{scroll-area-CdQ_5bLm.js → scroll-area-DyTZoISq.js} +2 -2
- package/dist/{scroll-area-CdQ_5bLm.js.map → scroll-area-DyTZoISq.js.map} +1 -1
- package/dist/{search-field-block-D0PUUCAE.cjs → search-field-block-ChXCuPrB.cjs} +9 -10
- package/dist/{search-field-block-D0PUUCAE.cjs.map → search-field-block-ChXCuPrB.cjs.map} +1 -1
- package/dist/{search-field-block-B5vUVTpl.js → search-field-block-nVeIkFXN.js} +3 -4
- package/dist/{search-field-block-B5vUVTpl.js.map → search-field-block-nVeIkFXN.js.map} +1 -1
- package/dist/{select--DXpTg0O.js → select-CDIt5aab.js} +3 -6
- package/dist/select-CDIt5aab.js.map +1 -0
- package/dist/{select-7ACAVdGX.cjs → select-CH5XO18L.cjs} +3 -6
- package/dist/select-CH5XO18L.cjs.map +1 -0
- package/dist/{select-field-block-Bu7UXI2H.js → select-field-block-BtjE0P5d.js} +3 -4
- package/dist/{select-field-block-Bu7UXI2H.js.map → select-field-block-BtjE0P5d.js.map} +1 -1
- package/dist/{select-field-block-W2u2WmN3.cjs → select-field-block-CpzMTsP6.cjs} +9 -10
- package/dist/{select-field-block-W2u2WmN3.cjs.map → select-field-block-CpzMTsP6.cjs.map} +1 -1
- package/dist/{settings-layout-NP_1dC-e.cjs → settings-layout-BGvMSClL.cjs} +2 -2
- package/dist/{settings-layout-NP_1dC-e.cjs.map → settings-layout-BGvMSClL.cjs.map} +1 -1
- package/dist/{settings-layout-C80s-D31.js → settings-layout-DA-JWqW3.js} +2 -2
- package/dist/{settings-layout-C80s-D31.js.map → settings-layout-DA-JWqW3.js.map} +1 -1
- package/dist/{span-payload-primitives-DnRsP93D.cjs → span-payload-primitives-70wznWZl.cjs} +6 -6
- package/dist/{span-payload-primitives-DnRsP93D.cjs.map → span-payload-primitives-70wznWZl.cjs.map} +1 -1
- package/dist/{span-payload-primitives-sbxk4CHC.js → span-payload-primitives-BvoMauDb.js} +6 -6
- package/dist/{span-payload-primitives-sbxk4CHC.js.map → span-payload-primitives-BvoMauDb.js.map} +1 -1
- package/dist/{spinner-CqP-NaB2.cjs → spinner-BCpN7LL9.cjs} +9 -3
- package/dist/spinner-BCpN7LL9.cjs.map +1 -0
- package/dist/{spinner-D2C2DYw8.js → spinner-ylbE0TJA.js} +9 -3
- package/dist/spinner-ylbE0TJA.js.map +1 -0
- package/dist/src/components/fluid-hover-highlight.d.ts +4 -58
- package/dist/src/domains/traces/components/traces-error-content.d.ts +2 -2
- package/dist/src/domains/traces/hooks/use-trace-url-state.d.ts +5 -3
- package/dist/src/domains/traces/trace-filters.d.ts +19 -4
- package/dist/src/domains/traces/trace-query-filters.d.ts +13 -1
- package/dist/src/ds/components/ActionRow/action-row.d.ts +9 -0
- package/dist/src/ds/components/ActionRow/action-row.stories.d.ts +8 -0
- package/dist/src/ds/components/ActionRow/index.d.ts +5 -0
- package/dist/src/ds/components/Badge/badge.stories.d.ts +0 -1
- package/dist/src/ds/components/ButtonsGroup/buttons-group.d.ts +11 -11
- package/dist/src/ds/components/ButtonsGroup/buttons-group.stories.d.ts +17 -7
- package/dist/src/ds/components/EmptyState/EmptyState.d.ts +8 -2
- package/dist/src/ds/components/EmptyState/empty-state.stories.d.ts +1 -0
- package/dist/src/ds/components/ErrorState/ErrorState.d.ts +3 -1
- package/dist/src/ds/components/ErrorState/error-state.stories.d.ts +1 -0
- package/dist/src/ds/components/FilterBar/filter-bar-advanced-chip.d.ts +10 -0
- package/dist/src/ds/components/FilterBar/filter-bar-context.d.ts +46 -9
- package/dist/src/ds/components/FilterBar/filter-bar-group-editor.d.ts +25 -0
- package/dist/src/ds/components/FilterBar/filter-bar-input.d.ts +8 -1
- package/dist/src/ds/components/FilterBar/filter-bar-option-list.d.ts +5 -0
- package/dist/src/ds/components/FilterBar/filter-bar-tree.d.ts +36 -0
- package/dist/src/ds/components/FilterBar/filter-bar.d.ts +28 -7
- package/dist/src/ds/components/FilterBar/filter-bar.stories.d.ts +3 -0
- package/dist/src/ds/components/FilterBar/index.d.ts +6 -1
- package/dist/src/ds/components/FilterBar/types.d.ts +36 -0
- package/dist/src/ds/components/FilterBar/use-settle-on-leave.d.ts +2 -0
- package/dist/src/ds/components/PageLayout/index.d.ts +1 -2
- package/dist/src/ds/components/PageLayout/page-layout.d.ts +13 -11
- package/dist/src/ds/components/PageLayout/page-layout.stories.d.ts +1 -2
- package/dist/src/ds/components/PermissionDenied/PermissionDenied.d.ts +3 -1
- package/dist/src/ds/components/PermissionDenied/permission-denied.stories.d.ts +1 -0
- package/dist/src/ds/components/SessionExpired/SessionExpired.d.ts +3 -1
- package/dist/src/ds/components/SessionExpired/session-expired.stories.d.ts +1 -0
- package/dist/src/ds/components/Spinner/spinner.d.ts +6 -3
- package/dist/src/ds/components/Spinner/spinner.stories.d.ts +1 -0
- package/dist/src/ds/components/ai/ask-user/ask-user.d.ts +13 -8
- package/dist/src/ds/new/layout/app-shell/app-shell.d.ts +2 -8
- package/dist/src/ds/new/layout/app-shell/app-shell.stories.d.ts +0 -1
- package/dist/src/ds/primitives/control-size.d.ts +3 -1
- package/dist/src/ds/primitives/fluid-menu.d.ts +8 -3
- package/dist/src/ds/primitives/form-element.d.ts +1 -2
- package/dist/src/hooks/use-fluid-hover.d.ts +7 -2
- package/dist/style.css +83 -120
- package/dist/{tabs-content-CKC4kIpH.js → tabs-content-BeFlc4E_.js} +2 -2
- package/dist/{tabs-content-CKC4kIpH.js.map → tabs-content-BeFlc4E_.js.map} +1 -1
- package/dist/{tabs-content-Bz6CZuv9.cjs → tabs-content-Cdu6HP8U.cjs} +2 -2
- package/dist/{tabs-content-Bz6CZuv9.cjs.map → tabs-content-Cdu6HP8U.cjs.map} +1 -1
- package/dist/{tabs-root-C5ABfm1F.cjs → tabs-root-BiV8irc3.cjs} +4 -4
- package/dist/{tabs-root-C5ABfm1F.cjs.map → tabs-root-BiV8irc3.cjs.map} +1 -1
- package/dist/{tabs-root-CcEQrwTM.js → tabs-root-CJ3GkDzi.js} +4 -4
- package/dist/{tabs-root-CcEQrwTM.js.map → tabs-root-CJ3GkDzi.js.map} +1 -1
- package/dist/{tabs-tab-BycF4dvx.js → tabs-tab-CoSCf5Ku.js} +2 -2
- package/dist/{tabs-tab-BycF4dvx.js.map → tabs-tab-CoSCf5Ku.js.map} +1 -1
- package/dist/{tabs-tab-DA466DbX.cjs → tabs-tab-J91Szy3Q.cjs} +2 -2
- package/dist/{tabs-tab-DA466DbX.cjs.map → tabs-tab-J91Szy3Q.cjs.map} +1 -1
- package/dist/{text-field-block-BLpLWmu8.cjs → text-field-block-BmWGMw3a.cjs} +8 -9
- package/dist/{text-field-block-BLpLWmu8.cjs.map → text-field-block-BmWGMw3a.cjs.map} +1 -1
- package/dist/{text-field-block--EUJKlY_.js → text-field-block-Cihf0IRw.js} +2 -3
- package/dist/{text-field-block--EUJKlY_.js.map → text-field-block-Cihf0IRw.js.map} +1 -1
- package/dist/{thread-rail-b-8RHNX_.cjs → thread-rail-BVpfkSyT.cjs} +6 -6
- package/dist/{thread-rail-b-8RHNX_.cjs.map → thread-rail-BVpfkSyT.cjs.map} +1 -1
- package/dist/{thread-rail-vsR5C0j4.js → thread-rail-DV89nFnn.js} +6 -6
- package/dist/{thread-rail-vsR5C0j4.js.map → thread-rail-DV89nFnn.js.map} +1 -1
- package/dist/{time-picker-Dlm-C-n4.cjs → time-picker-DXuXFGa-.cjs} +2 -2
- package/dist/{time-picker-Dlm-C-n4.cjs.map → time-picker-DXuXFGa-.cjs.map} +1 -1
- package/dist/{time-picker-DVt1ZUsS.js → time-picker-vFozGRyK.js} +2 -2
- package/dist/{time-picker-DVt1ZUsS.js.map → time-picker-vFozGRyK.js.map} +1 -1
- package/dist/{tool-approval-DB82iiRa.js → tool-approval-C11ECt4s.js} +5 -5
- package/dist/{tool-approval-DB82iiRa.js.map → tool-approval-C11ECt4s.js.map} +1 -1
- package/dist/{tool-approval-Dys524ty.cjs → tool-approval-DODxfqk7.cjs} +5 -5
- package/dist/{tool-approval-Dys524ty.cjs.map → tool-approval-DODxfqk7.cjs.map} +1 -1
- package/dist/{tool-call-K147tCug.js → tool-call-BjAGFbH-.js} +5 -5
- package/dist/{tool-call-K147tCug.js.map → tool-call-BjAGFbH-.js.map} +1 -1
- package/dist/{tool-call-CMRvRE-v.cjs → tool-call-CNBGnCmO.cjs} +5 -5
- package/dist/{tool-call-CMRvRE-v.cjs.map → tool-call-CNBGnCmO.cjs.map} +1 -1
- package/dist/{traces-data-list-CDNE9P8W.js → traces-data-list-BhKK8-wa.js} +7 -7
- package/dist/{traces-data-list-CDNE9P8W.js.map → traces-data-list-BhKK8-wa.js.map} +1 -1
- package/dist/{traces-data-list-B3q_cy6c.cjs → traces-data-list-D58cw23x.cjs} +7 -7
- package/dist/{traces-data-list-B3q_cy6c.cjs.map → traces-data-list-D58cw23x.cjs.map} +1 -1
- package/dist/types-CIPrYAzY.js +9 -0
- package/dist/types-CIPrYAzY.js.map +1 -0
- package/dist/types-Ns4ZNp-g.cjs +12 -0
- package/dist/types-Ns4ZNp-g.cjs.map +1 -0
- package/package.json +6 -7
- package/theme/surfaces.css +2 -2
- package/dist/Button-CVewl8nT.cjs.map +0 -1
- package/dist/Button-cWcBEd-G.js.map +0 -1
- package/dist/EmptyState-CdRjFB06.cjs.map +0 -1
- package/dist/EmptyState-UWXhBp5U.js.map +0 -1
- package/dist/ErrorState-B3uTRAEd.cjs +0 -16
- package/dist/ErrorState-B3uTRAEd.cjs.map +0 -1
- package/dist/ErrorState-DqRx8Dw_.js +0 -14
- package/dist/ErrorState-DqRx8Dw_.js.map +0 -1
- package/dist/PermissionDenied-B6TSGolC.js.map +0 -1
- package/dist/PermissionDenied-Dz5qXpQj.cjs.map +0 -1
- package/dist/SessionExpired-Bq5LcsDu.js.map +0 -1
- package/dist/SessionExpired-CF0BGNo_.cjs.map +0 -1
- package/dist/ask-user-CS2e6Re4.cjs +0 -147
- package/dist/ask-user-CS2e6Re4.cjs.map +0 -1
- package/dist/ask-user-gS3Y1bCc.js +0 -138
- package/dist/ask-user-gS3Y1bCc.js.map +0 -1
- package/dist/buttons-group-BiLEV_Ak.cjs +0 -101
- package/dist/buttons-group-BiLEV_Ak.cjs.map +0 -1
- package/dist/buttons-group-CaA7KAWf.js +0 -78
- package/dist/buttons-group-CaA7KAWf.js.map +0 -1
- package/dist/combobox-BWM3VH-n.cjs.map +0 -1
- package/dist/combobox-D7xJFZuO.js.map +0 -1
- package/dist/combobox-styles-CRebmeht.js.map +0 -1
- package/dist/combobox-styles-DYlNNjKC.cjs.map +0 -1
- package/dist/components/MainContent.cjs.js +0 -81
- package/dist/components/MainContent.cjs.js.map +0 -1
- package/dist/components/MainContent.d.ts +0 -2
- package/dist/components/MainContent.es.js +0 -75
- package/dist/components/MainContent.es.js.map +0 -1
- package/dist/data-code-section-DKz9Okaz.js.map +0 -1
- package/dist/data-code-section-qujvEc6j.cjs.map +0 -1
- package/dist/dropdown-menu-DL0MzjEb.js.map +0 -1
- package/dist/dropdown-menu-DNRCA4Gj.cjs.map +0 -1
- package/dist/field-block-DWkbNcsV.js.map +0 -1
- package/dist/field-block-Dy1IaWbv.cjs.map +0 -1
- package/dist/field-error-id-B3Z2Zu5y.cjs +0 -6
- package/dist/field-error-id-B3Z2Zu5y.cjs.map +0 -1
- package/dist/field-error-id-D3yg1nBh.js +0 -4
- package/dist/field-error-id-D3yg1nBh.js.map +0 -1
- package/dist/filter-bar-chip-BxI0NgEz.cjs.map +0 -1
- package/dist/filter-bar-chip-C-JxWUU8.js.map +0 -1
- package/dist/input-group-BEdHivvy.js.map +0 -1
- package/dist/input-group-CvWwK1Vz.cjs.map +0 -1
- package/dist/lib/springs.cjs.js +0 -32
- package/dist/lib/springs.cjs.js.map +0 -1
- package/dist/lib/springs.d.ts +0 -2
- package/dist/lib/springs.es.js +0 -27
- package/dist/lib/springs.es.js.map +0 -1
- package/dist/main-sidebar-link-active-CmDoiX6g.js.map +0 -1
- package/dist/main-sidebar-link-active-DbCvKZy2.cjs.map +0 -1
- package/dist/markdown-renderer-B0gTm_Ea.js.map +0 -1
- package/dist/markdown-renderer-D8qYAU7K.cjs.map +0 -1
- package/dist/metrics-card-BUJxiwec.cjs.map +0 -1
- package/dist/metrics-card-BlBt1WHw.js.map +0 -1
- package/dist/new/layout/page-shell.cjs.js +0 -34
- package/dist/new/layout/page-shell.cjs.js.map +0 -1
- package/dist/new/layout/page-shell.d.ts +0 -2
- package/dist/new/layout/page-shell.es.js +0 -30
- package/dist/new/layout/page-shell.es.js.map +0 -1
- package/dist/no-data-page-layout-DcVPjj-J.js +0 -9
- package/dist/no-data-page-layout-DcVPjj-J.js.map +0 -1
- package/dist/no-data-page-layout-Drzbg_w8.cjs +0 -11
- package/dist/no-data-page-layout-Drzbg_w8.cjs.map +0 -1
- package/dist/page-heading-context-D3yjYoJE.js +0 -9
- package/dist/page-heading-context-D3yjYoJE.js.map +0 -1
- package/dist/page-heading-context-Du-CpxAx.cjs +0 -12
- package/dist/page-heading-context-Du-CpxAx.cjs.map +0 -1
- package/dist/page-layout-C9ifD9Q8.cjs +0 -99
- package/dist/page-layout-C9ifD9Q8.cjs.map +0 -1
- package/dist/page-layout-xcM8IR-B.js +0 -97
- package/dist/page-layout-xcM8IR-B.js.map +0 -1
- package/dist/property-filter-applied-BBiUbtr0.js.map +0 -1
- package/dist/property-filter-applied-BmxCPe2d.cjs.map +0 -1
- package/dist/select--DXpTg0O.js.map +0 -1
- package/dist/select-7ACAVdGX.cjs.map +0 -1
- package/dist/spinner-CqP-NaB2.cjs.map +0 -1
- package/dist/spinner-D2C2DYw8.js.map +0 -1
- package/dist/src/ds/components/MainContent/index.d.ts +0 -1
- package/dist/src/ds/components/MainContent/main-content.d.ts +0 -21
- package/dist/src/ds/components/MainContent/main-content.stories.d.ts +0 -10
- package/dist/src/ds/components/PageLayout/no-data-page-layout.d.ts +0 -6
- package/dist/src/ds/components/PageLayout/page-heading-context.d.ts +0 -2
- package/dist/src/ds/components/PageLayout/page-layout-column.d.ts +0 -5
- package/dist/src/ds/components/PageLayout/page-layout-main-area.d.ts +0 -7
- package/dist/src/ds/components/PageLayout/page-layout-root.d.ts +0 -7
- package/dist/src/ds/components/PageLayout/page-layout-row.d.ts +0 -11
- package/dist/src/ds/components/PageLayout/page-layout-top-area.d.ts +0 -5
- package/dist/src/ds/new/layout/page-shell/index.d.ts +0 -1
- package/dist/src/ds/new/layout/page-shell/page-shell.d.ts +0 -24
- package/dist/src/ds/new/layout/page-shell/page-shell.stories.d.ts +0 -63
- package/dist/src/lib/springs.d.ts +0 -31
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sortable-signal-headers.cjs.js","sources":["../../../src/ee/signals/sortable-signal-headers.tsx"],"sourcesContent":["import type { DragStart, DragUpdate, DraggableStateSnapshot, DropResult, DroppableProvided } from '@hello-pangea/dnd';\nimport {\n DragDropContext,\n Draggable,\n Droppable,\n useKeyboardSensor,\n useMouseSensor,\n useTouchSensor,\n} from '@hello-pangea/dnd';\nimport { GripVertical } from 'lucide-react';\nimport { useState } from 'react';\n\nimport { getSignalHue } from './signal-colors';\nimport { signalDescription, signalLabel } from './signal-formatting';\nimport type { TraceSignalName } from './types';\nimport { useTraceIntelligence } from './use-trace-intelligence';\nimport { nodeColor } from '@/ds/components/SankeyChart';\nimport { Tooltip, TooltipContent, TooltipTrigger } from '@/ds/components/Tooltip';\nimport { overlaySurfaceStyle } from '@/ds/primitives/raised-surface';\nimport { controlStateColorTransition } from '@/ds/primitives/transitions';\nimport { quietTextHover } from '@/ds/primitives/typography';\nimport { cn } from '@/lib/utils';\n\nconst DRAG_SENSORS = [useMouseSensor, useTouchSensor, useKeyboardSensor];\n\ntype DragProjection = {\n sourceIndex: number;\n destinationIndex: number;\n};\n\ntype HeaderAnchor = 'start' | 'middle' | 'end';\n\nfunction projectedHeaderIndex(index: number, projection: DragProjection | undefined) {\n if (!projection) return index;\n if (index === projection.sourceIndex) return projection.destinationIndex;\n if (\n projection.sourceIndex < projection.destinationIndex &&\n index > projection.sourceIndex &&\n index <= projection.destinationIndex\n ) {\n return index - 1;\n }\n if (\n projection.destinationIndex < projection.sourceIndex &&\n index >= projection.destinationIndex &&\n index < projection.sourceIndex\n ) {\n return index + 1;\n }\n return index;\n}\n\nfunction headerAnchor(index: number, count: number): HeaderAnchor {\n if (index === 0) return 'start';\n if (index === count - 1) return 'end';\n return 'middle';\n}\n\nfunction contentOffsetClass(anchor: HeaderAnchor) {\n if (anchor === 'start') return 'translate-x-1/2';\n if (anchor === 'end') return '-translate-x-1/2';\n return '';\n}\n\nexport function SortableSignalHeaders({\n signalNames,\n reorderDisabled,\n onOrderChange,\n}: {\n signalNames: TraceSignalName[];\n reorderDisabled: boolean;\n onOrderChange: (signalNames: TraceSignalName[]) => void;\n}) {\n const { signalCatalog } = useTraceIntelligence();\n const [dragProjection, setDragProjection] = useState<DragProjection>();\n\n function handleDragStart(start: DragStart) {\n setDragProjection({ sourceIndex: start.source.index, destinationIndex: start.source.index });\n }\n\n function handleDragUpdate(update: DragUpdate) {\n setDragProjection({\n sourceIndex: update.source.index,\n destinationIndex: update.destination?.index ?? update.source.index,\n });\n }\n\n function handleDragEnd(result: DropResult) {\n setDragProjection(undefined);\n const destinationIndex = result.destination?.index;\n if (destinationIndex === undefined || destinationIndex === result.source.index) return;\n\n const reordered = [...signalNames];\n const [movedSignalName] = reordered.splice(result.source.index, 1);\n if (!movedSignalName) return;\n reordered.splice(destinationIndex, 0, movedSignalName);\n onOrderChange(reordered);\n }\n\n return (\n <div aria-label=\"Signals\" role=\"group\">\n <DragDropContext\n enableDefaultSensors={false}\n sensors={DRAG_SENSORS}\n onDragEnd={handleDragEnd}\n onDragStart={handleDragStart}\n onDragUpdate={handleDragUpdate}\n >\n <Droppable direction=\"horizontal\" droppableId=\"signal-column-headers\">\n {(provided: DroppableProvided) => (\n <div\n {...provided.droppableProps}\n ref={provided.innerRef}\n aria-label=\"Trace signal column headers\"\n className=\"flex items-center gap-1 px-8 pb-1\"\n role=\"group\"\n >\n {signalNames.map((signalName, index) => {\n const label = signalLabel(signalCatalog, signalName);\n const projectedIndex = projectedHeaderIndex(index, dragProjection);\n const offsetPercent =\n signalNames.length > 1 ? (projectedIndex / (signalNames.length - 1) - 0.5) * 100 : 0;\n const anchor = headerAnchor(projectedIndex, signalNames.length);\n return (\n <Draggable key={signalName} draggableId={signalName} index={index} isDragDisabled={reorderDisabled}>\n {(dragProvided, dragSnapshot: DraggableStateSnapshot) => (\n <div\n ref={dragProvided.innerRef}\n {...dragProvided.draggableProps}\n className=\"flex min-w-0 flex-1 basis-0 items-center justify-center py-1\"\n data-dragging={dragSnapshot.isDragging}\n style={dragProvided.draggableProps.style}\n >\n <div\n className=\"flex w-full justify-center\"\n data-testid=\"signal-column-header-alignment\"\n style={{ translate: `${offsetPercent}%` }}\n >\n <div\n className={`relative inline-flex items-center justify-center rounded-md border border-transparent px-1 py-0.5 motion-safe:transition-[background-color,border-color,box-shadow,scale] motion-safe:duration-150 ${contentOffsetClass(anchor)} ${\n dragSnapshot.isDragging ? `scale-1.03 ${overlaySurfaceStyle}` : ''\n }`}\n data-header-anchor={anchor}\n data-testid=\"signal-column-header-content\"\n >\n <Tooltip>\n <TooltipTrigger\n className=\"text-column cursor-default font-mono tracking-wider\"\n data-testid=\"signal-column-header\"\n style={{ color: nodeColor(getSignalHue(signalName)) }}\n >\n {label.toUpperCase()}\n </TooltipTrigger>\n <TooltipContent>{signalDescription(signalCatalog, signalName)}</TooltipContent>\n </Tooltip>\n <div\n {...dragProvided.dragHandleProps}\n aria-disabled={reorderDisabled}\n aria-label={`Reorder ${label}`}\n className={cn(\n quietTextHover,\n controlStateColorTransition,\n 'absolute top-1/2 ml-0.5 -translate-y-1/2 cursor-grab rounded-sm p-1 active:cursor-grabbing aria-disabled:cursor-wait aria-disabled:opacity-50',\n )}\n style={{ left: '100%' }}\n title={`Drag to reorder the ${label} column`}\n >\n <GripVertical aria-hidden=\"true\" className=\"size-3.5\" />\n </div>\n </div>\n </div>\n </div>\n )}\n </Draggable>\n );\n })}\n {provided.placeholder}\n </div>\n )}\n </Droppable>\n </DragDropContext>\n </div>\n );\n}\n"],"names":["useMouseSensor","useTouchSensor","useKeyboardSensor","useTraceIntelligence","useState","jsx","DragDropContext","Droppable","jsxs","signalLabel","Draggable","overlaySurfaceStyle","Tooltip","TooltipTrigger","nodeColor","getSignalHue","TooltipContent","signalDescription","cn","quietTextHover","controlStateColorTransition","GripVertical"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"sortable-signal-headers.cjs.js","sources":["../../../src/ee/signals/sortable-signal-headers.tsx"],"sourcesContent":["import type { DragStart, DragUpdate, DraggableStateSnapshot, DropResult, DroppableProvided } from '@hello-pangea/dnd';\nimport {\n DragDropContext,\n Draggable,\n Droppable,\n useKeyboardSensor,\n useMouseSensor,\n useTouchSensor,\n} from '@hello-pangea/dnd';\nimport { GripVertical } from 'lucide-react';\nimport { useState } from 'react';\n\nimport { getSignalHue } from './signal-colors';\nimport { signalDescription, signalLabel } from './signal-formatting';\nimport type { TraceSignalName } from './types';\nimport { useTraceIntelligence } from './use-trace-intelligence';\nimport { nodeColor } from '@/ds/components/SankeyChart';\nimport { Tooltip, TooltipContent, TooltipTrigger } from '@/ds/components/Tooltip';\nimport { overlaySurfaceStyle } from '@/ds/primitives/raised-surface';\nimport { controlStateColorTransition } from '@/ds/primitives/transitions';\nimport { quietTextHover } from '@/ds/primitives/typography';\nimport { cn } from '@/lib/utils';\n\nconst DRAG_SENSORS = [useMouseSensor, useTouchSensor, useKeyboardSensor];\n\ntype DragProjection = {\n sourceIndex: number;\n destinationIndex: number;\n};\n\ntype HeaderAnchor = 'start' | 'middle' | 'end';\n\nfunction projectedHeaderIndex(index: number, projection: DragProjection | undefined) {\n if (!projection) return index;\n if (index === projection.sourceIndex) return projection.destinationIndex;\n if (\n projection.sourceIndex < projection.destinationIndex &&\n index > projection.sourceIndex &&\n index <= projection.destinationIndex\n ) {\n return index - 1;\n }\n if (\n projection.destinationIndex < projection.sourceIndex &&\n index >= projection.destinationIndex &&\n index < projection.sourceIndex\n ) {\n return index + 1;\n }\n return index;\n}\n\nfunction headerAnchor(index: number, count: number): HeaderAnchor {\n if (index === 0) return 'start';\n if (index === count - 1) return 'end';\n return 'middle';\n}\n\nfunction contentOffsetClass(anchor: HeaderAnchor) {\n if (anchor === 'start') return 'translate-x-1/2';\n if (anchor === 'end') return '-translate-x-1/2';\n return '';\n}\n\nexport function SortableSignalHeaders({\n signalNames,\n reorderDisabled,\n onOrderChange,\n}: {\n signalNames: TraceSignalName[];\n reorderDisabled: boolean;\n onOrderChange: (signalNames: TraceSignalName[]) => void;\n}) {\n const { signalCatalog } = useTraceIntelligence();\n const [dragProjection, setDragProjection] = useState<DragProjection>();\n\n function handleDragStart(start: DragStart) {\n setDragProjection({ sourceIndex: start.source.index, destinationIndex: start.source.index });\n }\n\n function handleDragUpdate(update: DragUpdate) {\n setDragProjection({\n sourceIndex: update.source.index,\n destinationIndex: update.destination?.index ?? update.source.index,\n });\n }\n\n function handleDragEnd(result: DropResult) {\n setDragProjection(undefined);\n const destinationIndex = result.destination?.index;\n if (destinationIndex === undefined || destinationIndex === result.source.index) return;\n\n const reordered = [...signalNames];\n const [movedSignalName] = reordered.splice(result.source.index, 1);\n if (!movedSignalName) return;\n reordered.splice(destinationIndex, 0, movedSignalName);\n onOrderChange(reordered);\n }\n\n return (\n <div aria-label=\"Signals\" role=\"group\">\n <DragDropContext\n enableDefaultSensors={false}\n sensors={DRAG_SENSORS}\n onDragEnd={handleDragEnd}\n onDragStart={handleDragStart}\n onDragUpdate={handleDragUpdate}\n >\n <Droppable direction=\"horizontal\" droppableId=\"signal-column-headers\">\n {(provided: DroppableProvided) => (\n <div\n {...provided.droppableProps}\n ref={provided.innerRef}\n aria-label=\"Trace signal column headers\"\n className=\"flex items-center gap-1 px-8 pb-1\"\n role=\"group\"\n >\n {signalNames.map((signalName, index) => {\n const label = signalLabel(signalCatalog, signalName);\n const projectedIndex = projectedHeaderIndex(index, dragProjection);\n const offsetPercent =\n signalNames.length > 1 ? (projectedIndex / (signalNames.length - 1) - 0.5) * 100 : 0;\n const anchor = headerAnchor(projectedIndex, signalNames.length);\n return (\n <Draggable key={signalName} draggableId={signalName} index={index} isDragDisabled={reorderDisabled}>\n {(dragProvided, dragSnapshot: DraggableStateSnapshot) => (\n <div\n ref={dragProvided.innerRef}\n {...dragProvided.draggableProps}\n className=\"flex min-w-0 flex-1 basis-0 items-center justify-center py-1\"\n data-dragging={dragSnapshot.isDragging}\n style={dragProvided.draggableProps.style}\n >\n <div\n className=\"flex w-full justify-center\"\n data-testid=\"signal-column-header-alignment\"\n style={{ translate: `${offsetPercent}%` }}\n >\n <div\n className={`relative inline-flex items-center justify-center rounded-md border border-transparent px-1 py-0.5 motion-safe:transition-[background-color,border-color,box-shadow,scale] motion-safe:duration-150 ${contentOffsetClass(anchor)} ${\n dragSnapshot.isDragging ? `scale-1.03 ${overlaySurfaceStyle}` : ''\n }`}\n data-header-anchor={anchor}\n data-testid=\"signal-column-header-content\"\n >\n <Tooltip>\n <TooltipTrigger\n className=\"cursor-default font-mono text-column tracking-wider\"\n data-testid=\"signal-column-header\"\n style={{ color: nodeColor(getSignalHue(signalName)) }}\n >\n {label.toUpperCase()}\n </TooltipTrigger>\n <TooltipContent>{signalDescription(signalCatalog, signalName)}</TooltipContent>\n </Tooltip>\n <div\n {...dragProvided.dragHandleProps}\n aria-disabled={reorderDisabled}\n aria-label={`Reorder ${label}`}\n className={cn(\n quietTextHover,\n controlStateColorTransition,\n 'absolute top-1/2 ml-0.5 -translate-y-1/2 cursor-grab rounded-sm p-1 active:cursor-grabbing aria-disabled:cursor-wait aria-disabled:opacity-50',\n )}\n style={{ left: '100%' }}\n title={`Drag to reorder the ${label} column`}\n >\n <GripVertical aria-hidden=\"true\" className=\"size-3.5\" />\n </div>\n </div>\n </div>\n </div>\n )}\n </Draggable>\n );\n })}\n {provided.placeholder}\n </div>\n )}\n </Droppable>\n </DragDropContext>\n </div>\n );\n}\n"],"names":["useMouseSensor","useTouchSensor","useKeyboardSensor","useTraceIntelligence","useState","jsx","DragDropContext","Droppable","jsxs","signalLabel","Draggable","overlaySurfaceStyle","Tooltip","TooltipTrigger","nodeColor","getSignalHue","TooltipContent","signalDescription","cn","quietTextHover","controlStateColorTransition","GripVertical"],"mappings":";;;;;;;;;;;;;;;;;;AAuBA,MAAM,YAAA,GAAe,CAACA,kBAAA,EAAgBC,kBAAA,EAAgBC,qBAAiB,CAAA;AASvE,SAAS,oBAAA,CAAqB,OAAe,UAAA,EAAwC;AACnF,EAAA,IAAI,CAAC,YAAY,OAAO,KAAA;AACxB,EAAA,IAAI,KAAA,KAAU,UAAA,CAAW,WAAA,EAAa,OAAO,UAAA,CAAW,gBAAA;AACxD,EAAA,IACE,UAAA,CAAW,cAAc,UAAA,CAAW,gBAAA,IACpC,QAAQ,UAAA,CAAW,WAAA,IACnB,KAAA,IAAS,UAAA,CAAW,gBAAA,EACpB;AACA,IAAA,OAAO,KAAA,GAAQ,CAAA;AAAA,EACjB;AACA,EAAA,IACE,UAAA,CAAW,mBAAmB,UAAA,CAAW,WAAA,IACzC,SAAS,UAAA,CAAW,gBAAA,IACpB,KAAA,GAAQ,UAAA,CAAW,WAAA,EACnB;AACA,IAAA,OAAO,KAAA,GAAQ,CAAA;AAAA,EACjB;AACA,EAAA,OAAO,KAAA;AACT;AAEA,SAAS,YAAA,CAAa,OAAe,KAAA,EAA6B;AAChE,EAAA,IAAI,KAAA,KAAU,GAAG,OAAO,OAAA;AACxB,EAAA,IAAI,KAAA,KAAU,KAAA,GAAQ,CAAA,EAAG,OAAO,KAAA;AAChC,EAAA,OAAO,QAAA;AACT;AAEA,SAAS,mBAAmB,MAAA,EAAsB;AAChD,EAAA,IAAI,MAAA,KAAW,SAAS,OAAO,iBAAA;AAC/B,EAAA,IAAI,MAAA,KAAW,OAAO,OAAO,kBAAA;AAC7B,EAAA,OAAO,EAAA;AACT;AAEO,SAAS,qBAAA,CAAsB;AAAA,EACpC,WAAA;AAAA,EACA,eAAA;AAAA,EACA;AACF,CAAA,EAIG;AACD,EAAA,MAAM,EAAE,aAAA,EAAc,GAAIC,oDAAA,EAAqB;AAC/C,EAAA,MAAM,CAAC,cAAA,EAAgB,iBAAiB,CAAA,GAAIC,cAAA,EAAyB;AAErE,EAAA,SAAS,gBAAgB,KAAA,EAAkB;AACzC,IAAA,iBAAA,CAAkB,EAAE,aAAa,KAAA,CAAM,MAAA,CAAO,OAAO,gBAAA,EAAkB,KAAA,CAAM,MAAA,CAAO,KAAA,EAAO,CAAA;AAAA,EAC7F;AAEA,EAAA,SAAS,iBAAiB,MAAA,EAAoB;AAC5C,IAAA,iBAAA,CAAkB;AAAA,MAChB,WAAA,EAAa,OAAO,MAAA,CAAO,KAAA;AAAA,MAC3B,gBAAA,EAAkB,MAAA,CAAO,WAAA,EAAa,KAAA,IAAS,OAAO,MAAA,CAAO;AAAA,KAC9D,CAAA;AAAA,EACH;AAEA,EAAA,SAAS,cAAc,MAAA,EAAoB;AACzC,IAAA,iBAAA,CAAkB,MAAS,CAAA;AAC3B,IAAA,MAAM,gBAAA,GAAmB,OAAO,WAAA,EAAa,KAAA;AAC7C,IAAA,IAAI,gBAAA,KAAqB,MAAA,IAAa,gBAAA,KAAqB,MAAA,CAAO,OAAO,KAAA,EAAO;AAEhF,IAAA,MAAM,SAAA,GAAY,CAAC,GAAG,WAAW,CAAA;AACjC,IAAA,MAAM,CAAC,eAAe,CAAA,GAAI,SAAA,CAAU,OAAO,MAAA,CAAO,MAAA,CAAO,OAAO,CAAC,CAAA;AACjE,IAAA,IAAI,CAAC,eAAA,EAAiB;AACtB,IAAA,SAAA,CAAU,MAAA,CAAO,gBAAA,EAAkB,CAAA,EAAG,eAAe,CAAA;AACrD,IAAA,aAAA,CAAc,SAAS,CAAA;AAAA,EACzB;AAEA,EAAA,uBACEC,cAAA,CAAC,KAAA,EAAA,EAAI,YAAA,EAAW,SAAA,EAAU,MAAK,OAAA,EAC7B,QAAA,kBAAAA,cAAA;AAAA,IAACC,mBAAA;AAAA,IAAA;AAAA,MACC,oBAAA,EAAsB,KAAA;AAAA,MACtB,OAAA,EAAS,YAAA;AAAA,MACT,SAAA,EAAW,aAAA;AAAA,MACX,WAAA,EAAa,eAAA;AAAA,MACb,YAAA,EAAc,gBAAA;AAAA,MAEd,yCAACC,aAAA,EAAA,EAAU,SAAA,EAAU,cAAa,WAAA,EAAY,uBAAA,EAC3C,WAAC,QAAA,qBACAC,eAAA;AAAA,QAAC,KAAA;AAAA,QAAA;AAAA,UACE,GAAG,QAAA,CAAS,cAAA;AAAA,UACb,KAAK,QAAA,CAAS,QAAA;AAAA,UACd,YAAA,EAAW,6BAAA;AAAA,UACX,SAAA,EAAU,mCAAA;AAAA,UACV,IAAA,EAAK,OAAA;AAAA,UAEJ,QAAA,EAAA;AAAA,YAAA,WAAA,CAAY,GAAA,CAAI,CAAC,UAAA,EAAY,KAAA,KAAU;AACtC,cAAA,MAAM,KAAA,GAAQC,uCAAA,CAAY,aAAA,EAAe,UAAU,CAAA;AACnD,cAAA,MAAM,cAAA,GAAiB,oBAAA,CAAqB,KAAA,EAAO,cAAc,CAAA;AACjE,cAAA,MAAM,aAAA,GACJ,YAAY,MAAA,GAAS,CAAA,GAAA,CAAK,kBAAkB,WAAA,CAAY,MAAA,GAAS,CAAA,CAAA,GAAK,GAAA,IAAO,GAAA,GAAM,CAAA;AACrF,cAAA,MAAM,MAAA,GAAS,YAAA,CAAa,cAAA,EAAgB,WAAA,CAAY,MAAM,CAAA;AAC9D,cAAA,uBACEJ,cAAA,CAACK,iBAA2B,WAAA,EAAa,UAAA,EAAY,OAAc,cAAA,EAAgB,eAAA,EAChF,QAAA,EAAA,CAAC,YAAA,EAAc,YAAA,qBACdL,cAAA;AAAA,gBAAC,KAAA;AAAA,gBAAA;AAAA,kBACC,KAAK,YAAA,CAAa,QAAA;AAAA,kBACjB,GAAG,YAAA,CAAa,cAAA;AAAA,kBACjB,SAAA,EAAU,8DAAA;AAAA,kBACV,iBAAe,YAAA,CAAa,UAAA;AAAA,kBAC5B,KAAA,EAAO,aAAa,cAAA,CAAe,KAAA;AAAA,kBAEnC,QAAA,kBAAAA,cAAA;AAAA,oBAAC,KAAA;AAAA,oBAAA;AAAA,sBACC,SAAA,EAAU,4BAAA;AAAA,sBACV,aAAA,EAAY,gCAAA;AAAA,sBACZ,KAAA,EAAO,EAAE,SAAA,EAAW,CAAA,EAAG,aAAa,CAAA,CAAA,CAAA,EAAI;AAAA,sBAExC,QAAA,kBAAAG,eAAA;AAAA,wBAAC,KAAA;AAAA,wBAAA;AAAA,0BACC,SAAA,EAAW,CAAA,mMAAA,EAAsM,kBAAA,CAAmB,MAAM,CAAC,CAAA,CAAA,EACzO,YAAA,CAAa,UAAA,GAAa,CAAA,WAAA,EAAcG,4CAAmB,CAAA,CAAA,GAAK,EAClE,CAAA,CAAA;AAAA,0BACA,oBAAA,EAAoB,MAAA;AAAA,0BACpB,aAAA,EAAY,8BAAA;AAAA,0BAEZ,QAAA,EAAA;AAAA,4CAAAH,eAAA,CAACI,eAAA,EAAA,EACC,QAAA,EAAA;AAAA,8CAAAP,cAAA;AAAA,gCAACQ,sBAAA;AAAA,gCAAA;AAAA,kCACC,SAAA,EAAU,qDAAA;AAAA,kCACV,aAAA,EAAY,sBAAA;AAAA,kCACZ,OAAO,EAAE,KAAA,EAAOC,sBAAUC,oCAAA,CAAa,UAAU,CAAC,CAAA,EAAE;AAAA,kCAEnD,gBAAM,WAAA;AAAY;AAAA,+BACrB;AAAA,8CACAV,cAAA,CAACW,sBAAA,EAAA,EAAgB,QAAA,EAAAC,6CAAA,CAAkB,aAAA,EAAe,UAAU,CAAA,EAAE;AAAA,6BAAA,EAChE,CAAA;AAAA,4CACAZ,cAAA;AAAA,8BAAC,KAAA;AAAA,8BAAA;AAAA,gCACE,GAAG,YAAA,CAAa,eAAA;AAAA,gCACjB,eAAA,EAAe,eAAA;AAAA,gCACf,YAAA,EAAY,WAAW,KAAK,CAAA,CAAA;AAAA,gCAC5B,SAAA,EAAWa,WAAA;AAAA,kCACTC,oCAAA;AAAA,kCACAC,kDAAA;AAAA,kCACA;AAAA,iCACF;AAAA,gCACA,KAAA,EAAO,EAAE,IAAA,EAAM,MAAA,EAAO;AAAA,gCACtB,KAAA,EAAO,uBAAuB,KAAK,CAAA,OAAA,CAAA;AAAA,gCAEnC,QAAA,kBAAAf,cAAA,CAACgB,wBAAA,EAAA,EAAa,aAAA,EAAY,MAAA,EAAO,WAAU,UAAA,EAAW;AAAA;AAAA;AACxD;AAAA;AAAA;AACF;AAAA;AACF;AAAA,mBA9CU,UAiDhB,CAAA;AAAA,YAEJ,CAAC,CAAA;AAAA,YACA,QAAA,CAAS;AAAA;AAAA;AAAA,OACZ,EAEJ;AAAA;AAAA,GACF,EACF,CAAA;AAEJ;;;;"}
|
|
@@ -107,7 +107,7 @@ function SortableSignalHeaders({
|
|
|
107
107
|
/* @__PURE__ */ jsx(
|
|
108
108
|
TooltipTrigger,
|
|
109
109
|
{
|
|
110
|
-
className: "
|
|
110
|
+
className: "cursor-default font-mono text-column tracking-wider",
|
|
111
111
|
"data-testid": "signal-column-header",
|
|
112
112
|
style: { color: nodeColor(getSignalHue(signalName)) },
|
|
113
113
|
children: label.toUpperCase()
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sortable-signal-headers.es.js","sources":["../../../src/ee/signals/sortable-signal-headers.tsx"],"sourcesContent":["import type { DragStart, DragUpdate, DraggableStateSnapshot, DropResult, DroppableProvided } from '@hello-pangea/dnd';\nimport {\n DragDropContext,\n Draggable,\n Droppable,\n useKeyboardSensor,\n useMouseSensor,\n useTouchSensor,\n} from '@hello-pangea/dnd';\nimport { GripVertical } from 'lucide-react';\nimport { useState } from 'react';\n\nimport { getSignalHue } from './signal-colors';\nimport { signalDescription, signalLabel } from './signal-formatting';\nimport type { TraceSignalName } from './types';\nimport { useTraceIntelligence } from './use-trace-intelligence';\nimport { nodeColor } from '@/ds/components/SankeyChart';\nimport { Tooltip, TooltipContent, TooltipTrigger } from '@/ds/components/Tooltip';\nimport { overlaySurfaceStyle } from '@/ds/primitives/raised-surface';\nimport { controlStateColorTransition } from '@/ds/primitives/transitions';\nimport { quietTextHover } from '@/ds/primitives/typography';\nimport { cn } from '@/lib/utils';\n\nconst DRAG_SENSORS = [useMouseSensor, useTouchSensor, useKeyboardSensor];\n\ntype DragProjection = {\n sourceIndex: number;\n destinationIndex: number;\n};\n\ntype HeaderAnchor = 'start' | 'middle' | 'end';\n\nfunction projectedHeaderIndex(index: number, projection: DragProjection | undefined) {\n if (!projection) return index;\n if (index === projection.sourceIndex) return projection.destinationIndex;\n if (\n projection.sourceIndex < projection.destinationIndex &&\n index > projection.sourceIndex &&\n index <= projection.destinationIndex\n ) {\n return index - 1;\n }\n if (\n projection.destinationIndex < projection.sourceIndex &&\n index >= projection.destinationIndex &&\n index < projection.sourceIndex\n ) {\n return index + 1;\n }\n return index;\n}\n\nfunction headerAnchor(index: number, count: number): HeaderAnchor {\n if (index === 0) return 'start';\n if (index === count - 1) return 'end';\n return 'middle';\n}\n\nfunction contentOffsetClass(anchor: HeaderAnchor) {\n if (anchor === 'start') return 'translate-x-1/2';\n if (anchor === 'end') return '-translate-x-1/2';\n return '';\n}\n\nexport function SortableSignalHeaders({\n signalNames,\n reorderDisabled,\n onOrderChange,\n}: {\n signalNames: TraceSignalName[];\n reorderDisabled: boolean;\n onOrderChange: (signalNames: TraceSignalName[]) => void;\n}) {\n const { signalCatalog } = useTraceIntelligence();\n const [dragProjection, setDragProjection] = useState<DragProjection>();\n\n function handleDragStart(start: DragStart) {\n setDragProjection({ sourceIndex: start.source.index, destinationIndex: start.source.index });\n }\n\n function handleDragUpdate(update: DragUpdate) {\n setDragProjection({\n sourceIndex: update.source.index,\n destinationIndex: update.destination?.index ?? update.source.index,\n });\n }\n\n function handleDragEnd(result: DropResult) {\n setDragProjection(undefined);\n const destinationIndex = result.destination?.index;\n if (destinationIndex === undefined || destinationIndex === result.source.index) return;\n\n const reordered = [...signalNames];\n const [movedSignalName] = reordered.splice(result.source.index, 1);\n if (!movedSignalName) return;\n reordered.splice(destinationIndex, 0, movedSignalName);\n onOrderChange(reordered);\n }\n\n return (\n <div aria-label=\"Signals\" role=\"group\">\n <DragDropContext\n enableDefaultSensors={false}\n sensors={DRAG_SENSORS}\n onDragEnd={handleDragEnd}\n onDragStart={handleDragStart}\n onDragUpdate={handleDragUpdate}\n >\n <Droppable direction=\"horizontal\" droppableId=\"signal-column-headers\">\n {(provided: DroppableProvided) => (\n <div\n {...provided.droppableProps}\n ref={provided.innerRef}\n aria-label=\"Trace signal column headers\"\n className=\"flex items-center gap-1 px-8 pb-1\"\n role=\"group\"\n >\n {signalNames.map((signalName, index) => {\n const label = signalLabel(signalCatalog, signalName);\n const projectedIndex = projectedHeaderIndex(index, dragProjection);\n const offsetPercent =\n signalNames.length > 1 ? (projectedIndex / (signalNames.length - 1) - 0.5) * 100 : 0;\n const anchor = headerAnchor(projectedIndex, signalNames.length);\n return (\n <Draggable key={signalName} draggableId={signalName} index={index} isDragDisabled={reorderDisabled}>\n {(dragProvided, dragSnapshot: DraggableStateSnapshot) => (\n <div\n ref={dragProvided.innerRef}\n {...dragProvided.draggableProps}\n className=\"flex min-w-0 flex-1 basis-0 items-center justify-center py-1\"\n data-dragging={dragSnapshot.isDragging}\n style={dragProvided.draggableProps.style}\n >\n <div\n className=\"flex w-full justify-center\"\n data-testid=\"signal-column-header-alignment\"\n style={{ translate: `${offsetPercent}%` }}\n >\n <div\n className={`relative inline-flex items-center justify-center rounded-md border border-transparent px-1 py-0.5 motion-safe:transition-[background-color,border-color,box-shadow,scale] motion-safe:duration-150 ${contentOffsetClass(anchor)} ${\n dragSnapshot.isDragging ? `scale-1.03 ${overlaySurfaceStyle}` : ''\n }`}\n data-header-anchor={anchor}\n data-testid=\"signal-column-header-content\"\n >\n <Tooltip>\n <TooltipTrigger\n className=\"text-column cursor-default font-mono tracking-wider\"\n data-testid=\"signal-column-header\"\n style={{ color: nodeColor(getSignalHue(signalName)) }}\n >\n {label.toUpperCase()}\n </TooltipTrigger>\n <TooltipContent>{signalDescription(signalCatalog, signalName)}</TooltipContent>\n </Tooltip>\n <div\n {...dragProvided.dragHandleProps}\n aria-disabled={reorderDisabled}\n aria-label={`Reorder ${label}`}\n className={cn(\n quietTextHover,\n controlStateColorTransition,\n 'absolute top-1/2 ml-0.5 -translate-y-1/2 cursor-grab rounded-sm p-1 active:cursor-grabbing aria-disabled:cursor-wait aria-disabled:opacity-50',\n )}\n style={{ left: '100%' }}\n title={`Drag to reorder the ${label} column`}\n >\n <GripVertical aria-hidden=\"true\" className=\"size-3.5\" />\n </div>\n </div>\n </div>\n </div>\n )}\n </Draggable>\n );\n })}\n {provided.placeholder}\n </div>\n )}\n </Droppable>\n </DragDropContext>\n </div>\n );\n}\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"sortable-signal-headers.es.js","sources":["../../../src/ee/signals/sortable-signal-headers.tsx"],"sourcesContent":["import type { DragStart, DragUpdate, DraggableStateSnapshot, DropResult, DroppableProvided } from '@hello-pangea/dnd';\nimport {\n DragDropContext,\n Draggable,\n Droppable,\n useKeyboardSensor,\n useMouseSensor,\n useTouchSensor,\n} from '@hello-pangea/dnd';\nimport { GripVertical } from 'lucide-react';\nimport { useState } from 'react';\n\nimport { getSignalHue } from './signal-colors';\nimport { signalDescription, signalLabel } from './signal-formatting';\nimport type { TraceSignalName } from './types';\nimport { useTraceIntelligence } from './use-trace-intelligence';\nimport { nodeColor } from '@/ds/components/SankeyChart';\nimport { Tooltip, TooltipContent, TooltipTrigger } from '@/ds/components/Tooltip';\nimport { overlaySurfaceStyle } from '@/ds/primitives/raised-surface';\nimport { controlStateColorTransition } from '@/ds/primitives/transitions';\nimport { quietTextHover } from '@/ds/primitives/typography';\nimport { cn } from '@/lib/utils';\n\nconst DRAG_SENSORS = [useMouseSensor, useTouchSensor, useKeyboardSensor];\n\ntype DragProjection = {\n sourceIndex: number;\n destinationIndex: number;\n};\n\ntype HeaderAnchor = 'start' | 'middle' | 'end';\n\nfunction projectedHeaderIndex(index: number, projection: DragProjection | undefined) {\n if (!projection) return index;\n if (index === projection.sourceIndex) return projection.destinationIndex;\n if (\n projection.sourceIndex < projection.destinationIndex &&\n index > projection.sourceIndex &&\n index <= projection.destinationIndex\n ) {\n return index - 1;\n }\n if (\n projection.destinationIndex < projection.sourceIndex &&\n index >= projection.destinationIndex &&\n index < projection.sourceIndex\n ) {\n return index + 1;\n }\n return index;\n}\n\nfunction headerAnchor(index: number, count: number): HeaderAnchor {\n if (index === 0) return 'start';\n if (index === count - 1) return 'end';\n return 'middle';\n}\n\nfunction contentOffsetClass(anchor: HeaderAnchor) {\n if (anchor === 'start') return 'translate-x-1/2';\n if (anchor === 'end') return '-translate-x-1/2';\n return '';\n}\n\nexport function SortableSignalHeaders({\n signalNames,\n reorderDisabled,\n onOrderChange,\n}: {\n signalNames: TraceSignalName[];\n reorderDisabled: boolean;\n onOrderChange: (signalNames: TraceSignalName[]) => void;\n}) {\n const { signalCatalog } = useTraceIntelligence();\n const [dragProjection, setDragProjection] = useState<DragProjection>();\n\n function handleDragStart(start: DragStart) {\n setDragProjection({ sourceIndex: start.source.index, destinationIndex: start.source.index });\n }\n\n function handleDragUpdate(update: DragUpdate) {\n setDragProjection({\n sourceIndex: update.source.index,\n destinationIndex: update.destination?.index ?? update.source.index,\n });\n }\n\n function handleDragEnd(result: DropResult) {\n setDragProjection(undefined);\n const destinationIndex = result.destination?.index;\n if (destinationIndex === undefined || destinationIndex === result.source.index) return;\n\n const reordered = [...signalNames];\n const [movedSignalName] = reordered.splice(result.source.index, 1);\n if (!movedSignalName) return;\n reordered.splice(destinationIndex, 0, movedSignalName);\n onOrderChange(reordered);\n }\n\n return (\n <div aria-label=\"Signals\" role=\"group\">\n <DragDropContext\n enableDefaultSensors={false}\n sensors={DRAG_SENSORS}\n onDragEnd={handleDragEnd}\n onDragStart={handleDragStart}\n onDragUpdate={handleDragUpdate}\n >\n <Droppable direction=\"horizontal\" droppableId=\"signal-column-headers\">\n {(provided: DroppableProvided) => (\n <div\n {...provided.droppableProps}\n ref={provided.innerRef}\n aria-label=\"Trace signal column headers\"\n className=\"flex items-center gap-1 px-8 pb-1\"\n role=\"group\"\n >\n {signalNames.map((signalName, index) => {\n const label = signalLabel(signalCatalog, signalName);\n const projectedIndex = projectedHeaderIndex(index, dragProjection);\n const offsetPercent =\n signalNames.length > 1 ? (projectedIndex / (signalNames.length - 1) - 0.5) * 100 : 0;\n const anchor = headerAnchor(projectedIndex, signalNames.length);\n return (\n <Draggable key={signalName} draggableId={signalName} index={index} isDragDisabled={reorderDisabled}>\n {(dragProvided, dragSnapshot: DraggableStateSnapshot) => (\n <div\n ref={dragProvided.innerRef}\n {...dragProvided.draggableProps}\n className=\"flex min-w-0 flex-1 basis-0 items-center justify-center py-1\"\n data-dragging={dragSnapshot.isDragging}\n style={dragProvided.draggableProps.style}\n >\n <div\n className=\"flex w-full justify-center\"\n data-testid=\"signal-column-header-alignment\"\n style={{ translate: `${offsetPercent}%` }}\n >\n <div\n className={`relative inline-flex items-center justify-center rounded-md border border-transparent px-1 py-0.5 motion-safe:transition-[background-color,border-color,box-shadow,scale] motion-safe:duration-150 ${contentOffsetClass(anchor)} ${\n dragSnapshot.isDragging ? `scale-1.03 ${overlaySurfaceStyle}` : ''\n }`}\n data-header-anchor={anchor}\n data-testid=\"signal-column-header-content\"\n >\n <Tooltip>\n <TooltipTrigger\n className=\"cursor-default font-mono text-column tracking-wider\"\n data-testid=\"signal-column-header\"\n style={{ color: nodeColor(getSignalHue(signalName)) }}\n >\n {label.toUpperCase()}\n </TooltipTrigger>\n <TooltipContent>{signalDescription(signalCatalog, signalName)}</TooltipContent>\n </Tooltip>\n <div\n {...dragProvided.dragHandleProps}\n aria-disabled={reorderDisabled}\n aria-label={`Reorder ${label}`}\n className={cn(\n quietTextHover,\n controlStateColorTransition,\n 'absolute top-1/2 ml-0.5 -translate-y-1/2 cursor-grab rounded-sm p-1 active:cursor-grabbing aria-disabled:cursor-wait aria-disabled:opacity-50',\n )}\n style={{ left: '100%' }}\n title={`Drag to reorder the ${label} column`}\n >\n <GripVertical aria-hidden=\"true\" className=\"size-3.5\" />\n </div>\n </div>\n </div>\n </div>\n )}\n </Draggable>\n );\n })}\n {provided.placeholder}\n </div>\n )}\n </Droppable>\n </DragDropContext>\n </div>\n );\n}\n"],"names":[],"mappings":"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"}
|
|
@@ -43,7 +43,7 @@ function ThemeCompareSparkline({
|
|
|
43
43
|
children: polylines.map((points) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
44
44
|
"polyline",
|
|
45
45
|
{
|
|
46
|
-
className: "stroke-muted-foreground
|
|
46
|
+
className: "fill-none stroke-muted-foreground",
|
|
47
47
|
points,
|
|
48
48
|
strokeWidth: "1",
|
|
49
49
|
vectorEffect: "non-scaling-stroke"
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"theme-compare-sparkline.cjs.js","sources":["../../../src/ee/signals/theme-compare-sparkline.tsx"],"sourcesContent":["const SPARKLINE_WIDTH = 100;\nconst SPARKLINE_HEIGHT = 20;\n\nexport function ThemeCompareSparkline({\n series,\n positions,\n markerIndexes,\n}: {\n series: Array<number | undefined>;\n positions: number[];\n markerIndexes: number[];\n}) {\n const loaded = series.flatMap((share, index) => (share === undefined ? [] : [{ share, index }]));\n if (loaded.length < 2) return null;\n\n const maxShare = Math.max(...loaded.map(point => point.share), 0.01);\n const pointFor = (point: { share: number; index: number }) => ({\n x: ((positions[point.index] ?? 0) / 100) * SPARKLINE_WIDTH,\n y: SPARKLINE_HEIGHT - 2 - (point.share / maxShare) * (SPARKLINE_HEIGHT - 4),\n });\n const segments: Array<Array<{ share: number; index: number }>> = [];\n for (const point of loaded) {\n const currentSegment = segments.at(-1);\n const previousPoint = currentSegment?.at(-1);\n if (!currentSegment || !previousPoint || point.index !== previousPoint.index + 1) {\n segments.push([point]);\n } else {\n currentSegment.push(point);\n }\n }\n const polylines = segments\n .filter(segment => segment.length > 1)\n .map(segment => segment.map(point => `${pointFor(point).x.toFixed(1)},${pointFor(point).y.toFixed(1)}`).join(' '));\n const markers = markerIndexes.flatMap(markerIndex => {\n const point = loaded.find(candidate => candidate.index === markerIndex);\n return point ? [point] : [];\n });\n\n return (\n <div aria-hidden=\"true\" className=\"relative mt-1.5 h-5 w-full\">\n <svg\n className=\"absolute inset-0 size-full\"\n preserveAspectRatio=\"none\"\n viewBox={`0 0 ${SPARKLINE_WIDTH} ${SPARKLINE_HEIGHT}`}\n >\n {polylines.map(points => (\n <polyline\n key={points}\n className=\"stroke-muted-foreground
|
|
1
|
+
{"version":3,"file":"theme-compare-sparkline.cjs.js","sources":["../../../src/ee/signals/theme-compare-sparkline.tsx"],"sourcesContent":["const SPARKLINE_WIDTH = 100;\nconst SPARKLINE_HEIGHT = 20;\n\nexport function ThemeCompareSparkline({\n series,\n positions,\n markerIndexes,\n}: {\n series: Array<number | undefined>;\n positions: number[];\n markerIndexes: number[];\n}) {\n const loaded = series.flatMap((share, index) => (share === undefined ? [] : [{ share, index }]));\n if (loaded.length < 2) return null;\n\n const maxShare = Math.max(...loaded.map(point => point.share), 0.01);\n const pointFor = (point: { share: number; index: number }) => ({\n x: ((positions[point.index] ?? 0) / 100) * SPARKLINE_WIDTH,\n y: SPARKLINE_HEIGHT - 2 - (point.share / maxShare) * (SPARKLINE_HEIGHT - 4),\n });\n const segments: Array<Array<{ share: number; index: number }>> = [];\n for (const point of loaded) {\n const currentSegment = segments.at(-1);\n const previousPoint = currentSegment?.at(-1);\n if (!currentSegment || !previousPoint || point.index !== previousPoint.index + 1) {\n segments.push([point]);\n } else {\n currentSegment.push(point);\n }\n }\n const polylines = segments\n .filter(segment => segment.length > 1)\n .map(segment => segment.map(point => `${pointFor(point).x.toFixed(1)},${pointFor(point).y.toFixed(1)}`).join(' '));\n const markers = markerIndexes.flatMap(markerIndex => {\n const point = loaded.find(candidate => candidate.index === markerIndex);\n return point ? [point] : [];\n });\n\n return (\n <div aria-hidden=\"true\" className=\"relative mt-1.5 h-5 w-full\">\n <svg\n className=\"absolute inset-0 size-full\"\n preserveAspectRatio=\"none\"\n viewBox={`0 0 ${SPARKLINE_WIDTH} ${SPARKLINE_HEIGHT}`}\n >\n {polylines.map(points => (\n <polyline\n key={points}\n className=\"fill-none stroke-muted-foreground\"\n points={points}\n strokeWidth=\"1\"\n vectorEffect=\"non-scaling-stroke\"\n />\n ))}\n </svg>\n {markers.map(point => (\n <span\n key={point.index}\n className=\"absolute size-2 -translate-1/2 rounded-full bg-green-400\"\n style={{ left: `${positions[point.index]}%`, top: `${pointFor(point).y}px` }}\n />\n ))}\n </div>\n );\n}\n"],"names":["jsxs","jsx"],"mappings":"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"}
|
|
@@ -39,7 +39,7 @@ function ThemeCompareSparkline({
|
|
|
39
39
|
children: polylines.map((points) => /* @__PURE__ */ jsx(
|
|
40
40
|
"polyline",
|
|
41
41
|
{
|
|
42
|
-
className: "stroke-muted-foreground
|
|
42
|
+
className: "fill-none stroke-muted-foreground",
|
|
43
43
|
points,
|
|
44
44
|
strokeWidth: "1",
|
|
45
45
|
vectorEffect: "non-scaling-stroke"
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"theme-compare-sparkline.es.js","sources":["../../../src/ee/signals/theme-compare-sparkline.tsx"],"sourcesContent":["const SPARKLINE_WIDTH = 100;\nconst SPARKLINE_HEIGHT = 20;\n\nexport function ThemeCompareSparkline({\n series,\n positions,\n markerIndexes,\n}: {\n series: Array<number | undefined>;\n positions: number[];\n markerIndexes: number[];\n}) {\n const loaded = series.flatMap((share, index) => (share === undefined ? [] : [{ share, index }]));\n if (loaded.length < 2) return null;\n\n const maxShare = Math.max(...loaded.map(point => point.share), 0.01);\n const pointFor = (point: { share: number; index: number }) => ({\n x: ((positions[point.index] ?? 0) / 100) * SPARKLINE_WIDTH,\n y: SPARKLINE_HEIGHT - 2 - (point.share / maxShare) * (SPARKLINE_HEIGHT - 4),\n });\n const segments: Array<Array<{ share: number; index: number }>> = [];\n for (const point of loaded) {\n const currentSegment = segments.at(-1);\n const previousPoint = currentSegment?.at(-1);\n if (!currentSegment || !previousPoint || point.index !== previousPoint.index + 1) {\n segments.push([point]);\n } else {\n currentSegment.push(point);\n }\n }\n const polylines = segments\n .filter(segment => segment.length > 1)\n .map(segment => segment.map(point => `${pointFor(point).x.toFixed(1)},${pointFor(point).y.toFixed(1)}`).join(' '));\n const markers = markerIndexes.flatMap(markerIndex => {\n const point = loaded.find(candidate => candidate.index === markerIndex);\n return point ? [point] : [];\n });\n\n return (\n <div aria-hidden=\"true\" className=\"relative mt-1.5 h-5 w-full\">\n <svg\n className=\"absolute inset-0 size-full\"\n preserveAspectRatio=\"none\"\n viewBox={`0 0 ${SPARKLINE_WIDTH} ${SPARKLINE_HEIGHT}`}\n >\n {polylines.map(points => (\n <polyline\n key={points}\n className=\"stroke-muted-foreground
|
|
1
|
+
{"version":3,"file":"theme-compare-sparkline.es.js","sources":["../../../src/ee/signals/theme-compare-sparkline.tsx"],"sourcesContent":["const SPARKLINE_WIDTH = 100;\nconst SPARKLINE_HEIGHT = 20;\n\nexport function ThemeCompareSparkline({\n series,\n positions,\n markerIndexes,\n}: {\n series: Array<number | undefined>;\n positions: number[];\n markerIndexes: number[];\n}) {\n const loaded = series.flatMap((share, index) => (share === undefined ? [] : [{ share, index }]));\n if (loaded.length < 2) return null;\n\n const maxShare = Math.max(...loaded.map(point => point.share), 0.01);\n const pointFor = (point: { share: number; index: number }) => ({\n x: ((positions[point.index] ?? 0) / 100) * SPARKLINE_WIDTH,\n y: SPARKLINE_HEIGHT - 2 - (point.share / maxShare) * (SPARKLINE_HEIGHT - 4),\n });\n const segments: Array<Array<{ share: number; index: number }>> = [];\n for (const point of loaded) {\n const currentSegment = segments.at(-1);\n const previousPoint = currentSegment?.at(-1);\n if (!currentSegment || !previousPoint || point.index !== previousPoint.index + 1) {\n segments.push([point]);\n } else {\n currentSegment.push(point);\n }\n }\n const polylines = segments\n .filter(segment => segment.length > 1)\n .map(segment => segment.map(point => `${pointFor(point).x.toFixed(1)},${pointFor(point).y.toFixed(1)}`).join(' '));\n const markers = markerIndexes.flatMap(markerIndex => {\n const point = loaded.find(candidate => candidate.index === markerIndex);\n return point ? [point] : [];\n });\n\n return (\n <div aria-hidden=\"true\" className=\"relative mt-1.5 h-5 w-full\">\n <svg\n className=\"absolute inset-0 size-full\"\n preserveAspectRatio=\"none\"\n viewBox={`0 0 ${SPARKLINE_WIDTH} ${SPARKLINE_HEIGHT}`}\n >\n {polylines.map(points => (\n <polyline\n key={points}\n className=\"fill-none stroke-muted-foreground\"\n points={points}\n strokeWidth=\"1\"\n vectorEffect=\"non-scaling-stroke\"\n />\n ))}\n </svg>\n {markers.map(point => (\n <span\n key={point.index}\n className=\"absolute size-2 -translate-1/2 rounded-full bg-green-400\"\n style={{ left: `${positions[point.index]}%`, top: `${pointFor(point).y}px` }}\n />\n ))}\n </div>\n );\n}\n"],"names":[],"mappings":"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"}
|
|
@@ -77,12 +77,12 @@ function ThemeCompare({
|
|
|
77
77
|
}
|
|
78
78
|
) }),
|
|
79
79
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-wrap items-center gap-x-3 gap-y-1.5", children: [
|
|
80
|
-
/* @__PURE__ */ jsxRuntime.jsx("p", { className: "
|
|
81
|
-
/* @__PURE__ */ jsxRuntime.jsx("span", { "aria-hidden": "true", className: "text-muted-foreground
|
|
82
|
-
/* @__PURE__ */ jsxRuntime.jsx("p", { className: "
|
|
83
|
-
/* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-muted-foreground
|
|
80
|
+
/* @__PURE__ */ jsxRuntime.jsx("p", { className: "rounded-md border border-border px-2 py-1 font-mono text-caption text-muted-foreground tabular-nums", children: ee_signals_sankeySignalsData.snapshotSummaryLabel(fromSnapshot, flows[fromIndex]) }),
|
|
81
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { "aria-hidden": "true", className: "text-caption text-muted-foreground", children: "→" }),
|
|
82
|
+
/* @__PURE__ */ jsxRuntime.jsx("p", { className: "rounded-md border border-border px-2 py-1 font-mono text-caption text-muted-foreground tabular-nums", children: ee_signals_sankeySignalsData.snapshotSummaryLabel(toSnapshot, flows[toIndex]) }),
|
|
83
|
+
/* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-caption text-muted-foreground", children: grabbedPoint === void 0 ? "Click a landmark to move the nearest point · click a point to grab it." : "Point grabbed — click a landmark to place it." })
|
|
84
84
|
] }),
|
|
85
|
-
fromIndex === toIndex ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: "border-border bg-background
|
|
85
|
+
fromIndex === toIndex ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: "rounded-lg border border-border bg-background p-6 text-body text-muted-foreground", children: "Pick two different landmarks on the timeline to compare them." }) : !fromFlow || !toFlow ? /* @__PURE__ */ jsxRuntime.jsx(ee_signals_signalsLoadingSkeleton.SignalsFrameLoadingSkeleton, {}) : /* @__PURE__ */ jsxRuntime.jsx("div", { className: "grid grid-cols-1 gap-4 sm:grid-cols-2 xl:grid-cols-4", children: signalNames.map((signalName) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
86
86
|
ee_signals_signalDeltaColumn.SignalDeltaColumn,
|
|
87
87
|
{
|
|
88
88
|
signalName,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"theme-compare.cjs.js","sources":["../../../src/ee/signals/theme-compare.tsx"],"sourcesContent":["import { useState } from 'react';\n\nimport { useThemeFlows } from './hooks/use-theme-flows';\nimport { snapshotSummaryLabel } from './sankey-signals-data';\nimport { SignalDeltaColumn } from './signal-delta-column';\nimport { SignalsFrameLoadingSkeleton } from './signals-loading-skeleton';\nimport { TimelineTrack } from './snapshot-timeline';\nimport type { TimelineMarkerKind } from './snapshot-timeline';\nimport { timelineTickPositions } from './snapshot-timeline-data';\nimport type { ThemeSelection } from './theme-drilldown-data';\nimport type { ThemeSnapshot, TraceSignalName } from './types';\n\n/**\n * Compare mode: two interchangeable points on the shared time axis show how\n * each signal's theme mix moved between them (always read earlier → later),\n * with per-theme sparklines across every landmark in range. Clicking an\n * unmarked landmark moves the nearest point; clicking a marked landmark grabs\n * that point so the next click moves it specifically.\n */\nexport function ThemeCompare({\n entityId,\n entityType,\n signalNames,\n snapshots,\n totalSnapshots,\n onThemeSelect,\n}: {\n entityId: string;\n entityType: string;\n signalNames: TraceSignalName[];\n snapshots: ThemeSnapshot[];\n totalSnapshots: number;\n onThemeSelect: (selection: ThemeSelection, snapshotIndex: number) => void;\n}) {\n const [pointIndexes, setPointIndexes] = useState<[number, number]>();\n const [grabbedPoint, setGrabbedPoint] = useState<0 | 1>();\n const lastIndex = snapshots.length - 1;\n const points: [number, number] = [\n Math.min(pointIndexes?.[0] ?? 0, lastIndex),\n Math.min(pointIndexes?.[1] ?? lastIndex, lastIndex),\n ];\n // Compare always reads earlier → later regardless of which point moved last.\n const fromIndex = Math.min(points[0], points[1]);\n const toIndex = Math.max(points[0], points[1]);\n const flowQueries = useThemeFlows(\n entityId,\n entityType,\n signalNames,\n snapshots.map(snapshot => snapshot.snapshotId),\n );\n const flows = flowQueries.map(query => query.data);\n const fromFlow = flows[fromIndex];\n const toFlow = flows[toIndex];\n const positions = timelineTickPositions(snapshots);\n const fromSnapshot = snapshots[fromIndex];\n const toSnapshot = snapshots[toIndex];\n\n if (!fromSnapshot || !toSnapshot) return null;\n\n // The two points are interchangeable: an unmarked tick moves whichever\n // point is nearest on the track; a marked tick grabs that point so the next\n // click moves it specifically (covers moving a point past the other).\n const handleTickSelect = (index: number) => {\n if (grabbedPoint !== undefined) {\n setPointIndexes(grabbedPoint === 0 ? [index, points[1]] : [points[0], index]);\n setGrabbedPoint(undefined);\n return;\n }\n const pointAtIndex = points[0] === index ? 0 : points[1] === index ? 1 : undefined;\n if (pointAtIndex !== undefined) {\n setGrabbedPoint(pointAtIndex);\n return;\n }\n const selectedPosition = positions[index];\n const firstPointPosition = positions[points[0]];\n const secondPointPosition = positions[points[1]];\n if (selectedPosition === undefined || firstPointPosition === undefined || secondPointPosition === undefined) return;\n\n const distanceToFirst = Math.abs(selectedPosition - firstPointPosition);\n const distanceToSecond = Math.abs(selectedPosition - secondPointPosition);\n setPointIndexes(distanceToFirst <= distanceToSecond ? [index, points[1]] : [points[0], index]);\n };\n\n const markers = new Map<number, TimelineMarkerKind>([\n [points[0], 'compare-point'],\n [points[1], 'compare-point'],\n ]);\n const grabbedIndex = grabbedPoint === undefined ? undefined : points[grabbedPoint];\n\n return (\n <section aria-label=\"Snapshot comparison\" className=\"space-y-4\">\n <div className=\"flex flex-wrap items-center gap-3 px-3 py-2.5 sm:px-4\">\n <TimelineTrack\n snapshots={snapshots}\n totalCount={totalSnapshots}\n markers={markers}\n grabbedIndex={grabbedIndex}\n onTickSelect={handleTickSelect}\n />\n </div>\n <div className=\"flex flex-wrap items-center gap-x-3 gap-y-1.5\">\n <p className=\"
|
|
1
|
+
{"version":3,"file":"theme-compare.cjs.js","sources":["../../../src/ee/signals/theme-compare.tsx"],"sourcesContent":["import { useState } from 'react';\n\nimport { useThemeFlows } from './hooks/use-theme-flows';\nimport { snapshotSummaryLabel } from './sankey-signals-data';\nimport { SignalDeltaColumn } from './signal-delta-column';\nimport { SignalsFrameLoadingSkeleton } from './signals-loading-skeleton';\nimport { TimelineTrack } from './snapshot-timeline';\nimport type { TimelineMarkerKind } from './snapshot-timeline';\nimport { timelineTickPositions } from './snapshot-timeline-data';\nimport type { ThemeSelection } from './theme-drilldown-data';\nimport type { ThemeSnapshot, TraceSignalName } from './types';\n\n/**\n * Compare mode: two interchangeable points on the shared time axis show how\n * each signal's theme mix moved between them (always read earlier → later),\n * with per-theme sparklines across every landmark in range. Clicking an\n * unmarked landmark moves the nearest point; clicking a marked landmark grabs\n * that point so the next click moves it specifically.\n */\nexport function ThemeCompare({\n entityId,\n entityType,\n signalNames,\n snapshots,\n totalSnapshots,\n onThemeSelect,\n}: {\n entityId: string;\n entityType: string;\n signalNames: TraceSignalName[];\n snapshots: ThemeSnapshot[];\n totalSnapshots: number;\n onThemeSelect: (selection: ThemeSelection, snapshotIndex: number) => void;\n}) {\n const [pointIndexes, setPointIndexes] = useState<[number, number]>();\n const [grabbedPoint, setGrabbedPoint] = useState<0 | 1>();\n const lastIndex = snapshots.length - 1;\n const points: [number, number] = [\n Math.min(pointIndexes?.[0] ?? 0, lastIndex),\n Math.min(pointIndexes?.[1] ?? lastIndex, lastIndex),\n ];\n // Compare always reads earlier → later regardless of which point moved last.\n const fromIndex = Math.min(points[0], points[1]);\n const toIndex = Math.max(points[0], points[1]);\n const flowQueries = useThemeFlows(\n entityId,\n entityType,\n signalNames,\n snapshots.map(snapshot => snapshot.snapshotId),\n );\n const flows = flowQueries.map(query => query.data);\n const fromFlow = flows[fromIndex];\n const toFlow = flows[toIndex];\n const positions = timelineTickPositions(snapshots);\n const fromSnapshot = snapshots[fromIndex];\n const toSnapshot = snapshots[toIndex];\n\n if (!fromSnapshot || !toSnapshot) return null;\n\n // The two points are interchangeable: an unmarked tick moves whichever\n // point is nearest on the track; a marked tick grabs that point so the next\n // click moves it specifically (covers moving a point past the other).\n const handleTickSelect = (index: number) => {\n if (grabbedPoint !== undefined) {\n setPointIndexes(grabbedPoint === 0 ? [index, points[1]] : [points[0], index]);\n setGrabbedPoint(undefined);\n return;\n }\n const pointAtIndex = points[0] === index ? 0 : points[1] === index ? 1 : undefined;\n if (pointAtIndex !== undefined) {\n setGrabbedPoint(pointAtIndex);\n return;\n }\n const selectedPosition = positions[index];\n const firstPointPosition = positions[points[0]];\n const secondPointPosition = positions[points[1]];\n if (selectedPosition === undefined || firstPointPosition === undefined || secondPointPosition === undefined) return;\n\n const distanceToFirst = Math.abs(selectedPosition - firstPointPosition);\n const distanceToSecond = Math.abs(selectedPosition - secondPointPosition);\n setPointIndexes(distanceToFirst <= distanceToSecond ? [index, points[1]] : [points[0], index]);\n };\n\n const markers = new Map<number, TimelineMarkerKind>([\n [points[0], 'compare-point'],\n [points[1], 'compare-point'],\n ]);\n const grabbedIndex = grabbedPoint === undefined ? undefined : points[grabbedPoint];\n\n return (\n <section aria-label=\"Snapshot comparison\" className=\"space-y-4\">\n <div className=\"flex flex-wrap items-center gap-3 px-3 py-2.5 sm:px-4\">\n <TimelineTrack\n snapshots={snapshots}\n totalCount={totalSnapshots}\n markers={markers}\n grabbedIndex={grabbedIndex}\n onTickSelect={handleTickSelect}\n />\n </div>\n <div className=\"flex flex-wrap items-center gap-x-3 gap-y-1.5\">\n <p className=\"rounded-md border border-border px-2 py-1 font-mono text-caption text-muted-foreground tabular-nums\">\n {snapshotSummaryLabel(fromSnapshot, flows[fromIndex])}\n </p>\n <span aria-hidden=\"true\" className=\"text-caption text-muted-foreground\">\n →\n </span>\n <p className=\"rounded-md border border-border px-2 py-1 font-mono text-caption text-muted-foreground tabular-nums\">\n {snapshotSummaryLabel(toSnapshot, flows[toIndex])}\n </p>\n <p className=\"text-caption text-muted-foreground\">\n {grabbedPoint === undefined\n ? 'Click a landmark to move the nearest point · click a point to grab it.'\n : 'Point grabbed — click a landmark to place it.'}\n </p>\n </div>\n {fromIndex === toIndex ? (\n <p className=\"rounded-lg border border-border bg-background p-6 text-body text-muted-foreground\">\n Pick two different landmarks on the timeline to compare them.\n </p>\n ) : !fromFlow || !toFlow ? (\n <SignalsFrameLoadingSkeleton />\n ) : (\n <div className=\"grid grid-cols-1 gap-4 sm:grid-cols-2 xl:grid-cols-4\">\n {signalNames.map(signalName => (\n <SignalDeltaColumn\n key={signalName}\n signalName={signalName}\n fromFlow={fromFlow}\n toFlow={toFlow}\n flows={flows}\n positions={positions}\n fromIndex={fromIndex}\n toIndex={toIndex}\n onThemeSelect={onThemeSelect}\n />\n ))}\n </div>\n )}\n </section>\n );\n}\n"],"names":["useState","useThemeFlows","timelineTickPositions","jsxs","jsx","TimelineTrack","snapshotSummaryLabel","SignalsFrameLoadingSkeleton","SignalDeltaColumn"],"mappings":"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"}
|
|
@@ -73,12 +73,12 @@ function ThemeCompare({
|
|
|
73
73
|
}
|
|
74
74
|
) }),
|
|
75
75
|
/* @__PURE__ */ jsxs("div", { className: "flex flex-wrap items-center gap-x-3 gap-y-1.5", children: [
|
|
76
|
-
/* @__PURE__ */ jsx("p", { className: "
|
|
77
|
-
/* @__PURE__ */ jsx("span", { "aria-hidden": "true", className: "text-muted-foreground
|
|
78
|
-
/* @__PURE__ */ jsx("p", { className: "
|
|
79
|
-
/* @__PURE__ */ jsx("p", { className: "text-muted-foreground
|
|
76
|
+
/* @__PURE__ */ jsx("p", { className: "rounded-md border border-border px-2 py-1 font-mono text-caption text-muted-foreground tabular-nums", children: snapshotSummaryLabel(fromSnapshot, flows[fromIndex]) }),
|
|
77
|
+
/* @__PURE__ */ jsx("span", { "aria-hidden": "true", className: "text-caption text-muted-foreground", children: "→" }),
|
|
78
|
+
/* @__PURE__ */ jsx("p", { className: "rounded-md border border-border px-2 py-1 font-mono text-caption text-muted-foreground tabular-nums", children: snapshotSummaryLabel(toSnapshot, flows[toIndex]) }),
|
|
79
|
+
/* @__PURE__ */ jsx("p", { className: "text-caption text-muted-foreground", children: grabbedPoint === void 0 ? "Click a landmark to move the nearest point · click a point to grab it." : "Point grabbed — click a landmark to place it." })
|
|
80
80
|
] }),
|
|
81
|
-
fromIndex === toIndex ? /* @__PURE__ */ jsx("p", { className: "border-border bg-background
|
|
81
|
+
fromIndex === toIndex ? /* @__PURE__ */ jsx("p", { className: "rounded-lg border border-border bg-background p-6 text-body text-muted-foreground", children: "Pick two different landmarks on the timeline to compare them." }) : !fromFlow || !toFlow ? /* @__PURE__ */ jsx(SignalsFrameLoadingSkeleton, {}) : /* @__PURE__ */ jsx("div", { className: "grid grid-cols-1 gap-4 sm:grid-cols-2 xl:grid-cols-4", children: signalNames.map((signalName) => /* @__PURE__ */ jsx(
|
|
82
82
|
SignalDeltaColumn,
|
|
83
83
|
{
|
|
84
84
|
signalName,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"theme-compare.es.js","sources":["../../../src/ee/signals/theme-compare.tsx"],"sourcesContent":["import { useState } from 'react';\n\nimport { useThemeFlows } from './hooks/use-theme-flows';\nimport { snapshotSummaryLabel } from './sankey-signals-data';\nimport { SignalDeltaColumn } from './signal-delta-column';\nimport { SignalsFrameLoadingSkeleton } from './signals-loading-skeleton';\nimport { TimelineTrack } from './snapshot-timeline';\nimport type { TimelineMarkerKind } from './snapshot-timeline';\nimport { timelineTickPositions } from './snapshot-timeline-data';\nimport type { ThemeSelection } from './theme-drilldown-data';\nimport type { ThemeSnapshot, TraceSignalName } from './types';\n\n/**\n * Compare mode: two interchangeable points on the shared time axis show how\n * each signal's theme mix moved between them (always read earlier → later),\n * with per-theme sparklines across every landmark in range. Clicking an\n * unmarked landmark moves the nearest point; clicking a marked landmark grabs\n * that point so the next click moves it specifically.\n */\nexport function ThemeCompare({\n entityId,\n entityType,\n signalNames,\n snapshots,\n totalSnapshots,\n onThemeSelect,\n}: {\n entityId: string;\n entityType: string;\n signalNames: TraceSignalName[];\n snapshots: ThemeSnapshot[];\n totalSnapshots: number;\n onThemeSelect: (selection: ThemeSelection, snapshotIndex: number) => void;\n}) {\n const [pointIndexes, setPointIndexes] = useState<[number, number]>();\n const [grabbedPoint, setGrabbedPoint] = useState<0 | 1>();\n const lastIndex = snapshots.length - 1;\n const points: [number, number] = [\n Math.min(pointIndexes?.[0] ?? 0, lastIndex),\n Math.min(pointIndexes?.[1] ?? lastIndex, lastIndex),\n ];\n // Compare always reads earlier → later regardless of which point moved last.\n const fromIndex = Math.min(points[0], points[1]);\n const toIndex = Math.max(points[0], points[1]);\n const flowQueries = useThemeFlows(\n entityId,\n entityType,\n signalNames,\n snapshots.map(snapshot => snapshot.snapshotId),\n );\n const flows = flowQueries.map(query => query.data);\n const fromFlow = flows[fromIndex];\n const toFlow = flows[toIndex];\n const positions = timelineTickPositions(snapshots);\n const fromSnapshot = snapshots[fromIndex];\n const toSnapshot = snapshots[toIndex];\n\n if (!fromSnapshot || !toSnapshot) return null;\n\n // The two points are interchangeable: an unmarked tick moves whichever\n // point is nearest on the track; a marked tick grabs that point so the next\n // click moves it specifically (covers moving a point past the other).\n const handleTickSelect = (index: number) => {\n if (grabbedPoint !== undefined) {\n setPointIndexes(grabbedPoint === 0 ? [index, points[1]] : [points[0], index]);\n setGrabbedPoint(undefined);\n return;\n }\n const pointAtIndex = points[0] === index ? 0 : points[1] === index ? 1 : undefined;\n if (pointAtIndex !== undefined) {\n setGrabbedPoint(pointAtIndex);\n return;\n }\n const selectedPosition = positions[index];\n const firstPointPosition = positions[points[0]];\n const secondPointPosition = positions[points[1]];\n if (selectedPosition === undefined || firstPointPosition === undefined || secondPointPosition === undefined) return;\n\n const distanceToFirst = Math.abs(selectedPosition - firstPointPosition);\n const distanceToSecond = Math.abs(selectedPosition - secondPointPosition);\n setPointIndexes(distanceToFirst <= distanceToSecond ? [index, points[1]] : [points[0], index]);\n };\n\n const markers = new Map<number, TimelineMarkerKind>([\n [points[0], 'compare-point'],\n [points[1], 'compare-point'],\n ]);\n const grabbedIndex = grabbedPoint === undefined ? undefined : points[grabbedPoint];\n\n return (\n <section aria-label=\"Snapshot comparison\" className=\"space-y-4\">\n <div className=\"flex flex-wrap items-center gap-3 px-3 py-2.5 sm:px-4\">\n <TimelineTrack\n snapshots={snapshots}\n totalCount={totalSnapshots}\n markers={markers}\n grabbedIndex={grabbedIndex}\n onTickSelect={handleTickSelect}\n />\n </div>\n <div className=\"flex flex-wrap items-center gap-x-3 gap-y-1.5\">\n <p className=\"
|
|
1
|
+
{"version":3,"file":"theme-compare.es.js","sources":["../../../src/ee/signals/theme-compare.tsx"],"sourcesContent":["import { useState } from 'react';\n\nimport { useThemeFlows } from './hooks/use-theme-flows';\nimport { snapshotSummaryLabel } from './sankey-signals-data';\nimport { SignalDeltaColumn } from './signal-delta-column';\nimport { SignalsFrameLoadingSkeleton } from './signals-loading-skeleton';\nimport { TimelineTrack } from './snapshot-timeline';\nimport type { TimelineMarkerKind } from './snapshot-timeline';\nimport { timelineTickPositions } from './snapshot-timeline-data';\nimport type { ThemeSelection } from './theme-drilldown-data';\nimport type { ThemeSnapshot, TraceSignalName } from './types';\n\n/**\n * Compare mode: two interchangeable points on the shared time axis show how\n * each signal's theme mix moved between them (always read earlier → later),\n * with per-theme sparklines across every landmark in range. Clicking an\n * unmarked landmark moves the nearest point; clicking a marked landmark grabs\n * that point so the next click moves it specifically.\n */\nexport function ThemeCompare({\n entityId,\n entityType,\n signalNames,\n snapshots,\n totalSnapshots,\n onThemeSelect,\n}: {\n entityId: string;\n entityType: string;\n signalNames: TraceSignalName[];\n snapshots: ThemeSnapshot[];\n totalSnapshots: number;\n onThemeSelect: (selection: ThemeSelection, snapshotIndex: number) => void;\n}) {\n const [pointIndexes, setPointIndexes] = useState<[number, number]>();\n const [grabbedPoint, setGrabbedPoint] = useState<0 | 1>();\n const lastIndex = snapshots.length - 1;\n const points: [number, number] = [\n Math.min(pointIndexes?.[0] ?? 0, lastIndex),\n Math.min(pointIndexes?.[1] ?? lastIndex, lastIndex),\n ];\n // Compare always reads earlier → later regardless of which point moved last.\n const fromIndex = Math.min(points[0], points[1]);\n const toIndex = Math.max(points[0], points[1]);\n const flowQueries = useThemeFlows(\n entityId,\n entityType,\n signalNames,\n snapshots.map(snapshot => snapshot.snapshotId),\n );\n const flows = flowQueries.map(query => query.data);\n const fromFlow = flows[fromIndex];\n const toFlow = flows[toIndex];\n const positions = timelineTickPositions(snapshots);\n const fromSnapshot = snapshots[fromIndex];\n const toSnapshot = snapshots[toIndex];\n\n if (!fromSnapshot || !toSnapshot) return null;\n\n // The two points are interchangeable: an unmarked tick moves whichever\n // point is nearest on the track; a marked tick grabs that point so the next\n // click moves it specifically (covers moving a point past the other).\n const handleTickSelect = (index: number) => {\n if (grabbedPoint !== undefined) {\n setPointIndexes(grabbedPoint === 0 ? [index, points[1]] : [points[0], index]);\n setGrabbedPoint(undefined);\n return;\n }\n const pointAtIndex = points[0] === index ? 0 : points[1] === index ? 1 : undefined;\n if (pointAtIndex !== undefined) {\n setGrabbedPoint(pointAtIndex);\n return;\n }\n const selectedPosition = positions[index];\n const firstPointPosition = positions[points[0]];\n const secondPointPosition = positions[points[1]];\n if (selectedPosition === undefined || firstPointPosition === undefined || secondPointPosition === undefined) return;\n\n const distanceToFirst = Math.abs(selectedPosition - firstPointPosition);\n const distanceToSecond = Math.abs(selectedPosition - secondPointPosition);\n setPointIndexes(distanceToFirst <= distanceToSecond ? [index, points[1]] : [points[0], index]);\n };\n\n const markers = new Map<number, TimelineMarkerKind>([\n [points[0], 'compare-point'],\n [points[1], 'compare-point'],\n ]);\n const grabbedIndex = grabbedPoint === undefined ? undefined : points[grabbedPoint];\n\n return (\n <section aria-label=\"Snapshot comparison\" className=\"space-y-4\">\n <div className=\"flex flex-wrap items-center gap-3 px-3 py-2.5 sm:px-4\">\n <TimelineTrack\n snapshots={snapshots}\n totalCount={totalSnapshots}\n markers={markers}\n grabbedIndex={grabbedIndex}\n onTickSelect={handleTickSelect}\n />\n </div>\n <div className=\"flex flex-wrap items-center gap-x-3 gap-y-1.5\">\n <p className=\"rounded-md border border-border px-2 py-1 font-mono text-caption text-muted-foreground tabular-nums\">\n {snapshotSummaryLabel(fromSnapshot, flows[fromIndex])}\n </p>\n <span aria-hidden=\"true\" className=\"text-caption text-muted-foreground\">\n →\n </span>\n <p className=\"rounded-md border border-border px-2 py-1 font-mono text-caption text-muted-foreground tabular-nums\">\n {snapshotSummaryLabel(toSnapshot, flows[toIndex])}\n </p>\n <p className=\"text-caption text-muted-foreground\">\n {grabbedPoint === undefined\n ? 'Click a landmark to move the nearest point · click a point to grab it.'\n : 'Point grabbed — click a landmark to place it.'}\n </p>\n </div>\n {fromIndex === toIndex ? (\n <p className=\"rounded-lg border border-border bg-background p-6 text-body text-muted-foreground\">\n Pick two different landmarks on the timeline to compare them.\n </p>\n ) : !fromFlow || !toFlow ? (\n <SignalsFrameLoadingSkeleton />\n ) : (\n <div className=\"grid grid-cols-1 gap-4 sm:grid-cols-2 xl:grid-cols-4\">\n {signalNames.map(signalName => (\n <SignalDeltaColumn\n key={signalName}\n signalName={signalName}\n fromFlow={fromFlow}\n toFlow={toFlow}\n flows={flows}\n positions={positions}\n fromIndex={fromIndex}\n toIndex={toIndex}\n onThemeSelect={onThemeSelect}\n />\n ))}\n </div>\n )}\n </section>\n );\n}\n"],"names":[],"mappings":"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"}
|
|
@@ -15,7 +15,7 @@ const ee_signals_signalFormatting = require('./signal-formatting.cjs.js');
|
|
|
15
15
|
const ee_signals_themeTrend = require('./theme-trend.cjs.js');
|
|
16
16
|
const ee_signals_themeTrendChart = require('./theme-trend-chart.cjs.js');
|
|
17
17
|
const ee_signals_traceInsightView = require('./trace-insight-view.cjs.js');
|
|
18
|
-
const drawer = require('../../drawer-
|
|
18
|
+
const drawer = require('../../drawer-9eoZbmRK.cjs');
|
|
19
19
|
const sankeyColor = require('../../sankeyColor-DHE7ggh8.cjs');
|
|
20
20
|
const tooltip = require('../../tooltip-FvWL16Xn.cjs');
|
|
21
21
|
const primitives_raisedSurface = require('../../primitives/raised-surface.cjs.js');
|
|
@@ -81,11 +81,11 @@ function ThemeDetailPanel({
|
|
|
81
81
|
side: "right",
|
|
82
82
|
variant: "floating",
|
|
83
83
|
children: /* @__PURE__ */ jsxRuntime.jsxs(drawer.DrawerContent, { children: [
|
|
84
|
-
/* @__PURE__ */ jsxRuntime.jsxs(drawer.DrawerHeader, { className: "border-
|
|
84
|
+
/* @__PURE__ */ jsxRuntime.jsxs(drawer.DrawerHeader, { className: "border-b border-border", children: [
|
|
85
85
|
signalName !== void 0 && /* @__PURE__ */ jsxRuntime.jsx(
|
|
86
86
|
"span",
|
|
87
87
|
{
|
|
88
|
-
className: "text-column
|
|
88
|
+
className: "font-mono text-column tracking-widest",
|
|
89
89
|
style: { color: sankeyColor.nodeColor(ee_signals_signalColors.getSignalHue(signalName)) },
|
|
90
90
|
children: signalDisplayDescription ? /* @__PURE__ */ jsxRuntime.jsxs(tooltip.Tooltip, { children: [
|
|
91
91
|
/* @__PURE__ */ jsxRuntime.jsx(tooltip.TooltipTrigger, { "aria-label": signalDisplayLabel, className: "cursor-default uppercase", children: signalDisplayLabel }),
|
|
@@ -104,11 +104,11 @@ function ThemeDetailPanel({
|
|
|
104
104
|
/* @__PURE__ */ jsxRuntime.jsxs(drawer.DrawerBody, { className: "grid content-start gap-6 overflow-y-auto p-6", children: [
|
|
105
105
|
insightTraceId !== void 0 && /* @__PURE__ */ jsxRuntime.jsx(ee_signals_traceInsightView.TraceInsightView, { traceId: insightTraceId, onBack: () => setInsightTraceId(void 0) }),
|
|
106
106
|
insightTraceId === void 0 && /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
107
|
-
detailQuery.isPending && /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-muted-foreground
|
|
107
|
+
detailQuery.isPending && /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-body text-muted-foreground", children: "Loading theme details…" }),
|
|
108
108
|
detailQuery.isError && /* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-body text-red-500", children: "Unable to load theme details." }),
|
|
109
109
|
detailQuery.data && !detailQuery.data.theme && /* @__PURE__ */ jsxRuntime.jsxs("section", { children: [
|
|
110
|
-
/* @__PURE__ */ jsxRuntime.jsx("h2", { className: "text-
|
|
111
|
-
/* @__PURE__ */ jsxRuntime.jsx("p", { className: "
|
|
110
|
+
/* @__PURE__ */ jsxRuntime.jsx("h2", { className: "text-subheading text-foreground", children: "Not present in this snapshot" }),
|
|
111
|
+
/* @__PURE__ */ jsxRuntime.jsx("p", { className: "mt-2 text-body text-muted-foreground", children: "This theme has no data in the selected snapshot." })
|
|
112
112
|
] }),
|
|
113
113
|
detailQuery.data?.theme && /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
114
114
|
/* @__PURE__ */ jsxRuntime.jsxs("section", { "aria-labelledby": "theme-summary-heading", children: [
|
|
@@ -116,12 +116,12 @@ function ThemeDetailPanel({
|
|
|
116
116
|
"h2",
|
|
117
117
|
{
|
|
118
118
|
id: "theme-summary-heading",
|
|
119
|
-
className: "
|
|
119
|
+
className: "font-mono text-caption tracking-wider text-muted-foreground uppercase",
|
|
120
120
|
children: "Summary"
|
|
121
121
|
}
|
|
122
122
|
),
|
|
123
|
-
/* @__PURE__ */ jsxRuntime.jsx("p", { className: "
|
|
124
|
-
/* @__PURE__ */ jsxRuntime.jsx("p", { className: "
|
|
123
|
+
/* @__PURE__ */ jsxRuntime.jsx("p", { className: "mt-3 text-body text-foreground", children: detailQuery.data.theme.description ?? "No description available." }),
|
|
124
|
+
/* @__PURE__ */ jsxRuntime.jsx("p", { className: "mt-3 font-mono text-body text-foreground tabular-nums", children: ee_signals_signalFormatting.shareSentence(
|
|
125
125
|
filteredStats?.traceCount ?? detailQuery.data.theme.traceCount,
|
|
126
126
|
filteredStats?.stageShare ?? detailQuery.data.theme.coverage
|
|
127
127
|
) })
|
|
@@ -131,21 +131,21 @@ function ThemeDetailPanel({
|
|
|
131
131
|
"h2",
|
|
132
132
|
{
|
|
133
133
|
id: "theme-examples-heading",
|
|
134
|
-
className: "
|
|
134
|
+
className: "font-mono text-caption tracking-wider text-muted-foreground uppercase",
|
|
135
135
|
children: "Examples"
|
|
136
136
|
}
|
|
137
137
|
),
|
|
138
|
-
examplesQuery.isPending && /* @__PURE__ */ jsxRuntime.jsx("p", { className: "
|
|
139
|
-
examplesQuery.isError && /* @__PURE__ */ jsxRuntime.jsx("p", { className: "
|
|
138
|
+
examplesQuery.isPending && /* @__PURE__ */ jsxRuntime.jsx("p", { className: "mt-3 text-body text-muted-foreground", children: "Loading examples…" }),
|
|
139
|
+
examplesQuery.isError && /* @__PURE__ */ jsxRuntime.jsx("p", { className: "mt-3 text-body text-red-500", children: "Unable to load examples." }),
|
|
140
140
|
examplesQuery.data && /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
141
|
-
examplesQuery.data.examples.length === 0 ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: "
|
|
141
|
+
examplesQuery.data.examples.length === 0 ? /* @__PURE__ */ jsxRuntime.jsx("p", { className: "mt-3 text-body text-muted-foreground", children: "No examples in this snapshot." }) : /* @__PURE__ */ jsxRuntime.jsx("ul", { className: "mt-3 space-y-3", children: examplesQuery.data.examples.map((example) => /* @__PURE__ */ jsxRuntime.jsx("li", { children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
142
142
|
"button",
|
|
143
143
|
{
|
|
144
144
|
type: "button",
|
|
145
145
|
"aria-label": `View trace insight for ${example.signalText}`,
|
|
146
146
|
className: utils_cn.cn(
|
|
147
147
|
primitives_raisedSurface.raisedSurfaceStyle,
|
|
148
|
-
"state-layer
|
|
148
|
+
"state-layer w-full cursor-pointer rounded-md p-3 text-left text-body text-foreground"
|
|
149
149
|
),
|
|
150
150
|
onClick: () => setInsightTraceId(example.traceId),
|
|
151
151
|
children: example.signalText
|
|
@@ -166,14 +166,14 @@ function ThemeDetailPanel({
|
|
|
166
166
|
"h2",
|
|
167
167
|
{
|
|
168
168
|
id: "theme-trend-heading",
|
|
169
|
-
className: "
|
|
169
|
+
className: "font-mono text-caption tracking-wider text-muted-foreground uppercase",
|
|
170
170
|
children: "Trend"
|
|
171
171
|
}
|
|
172
172
|
),
|
|
173
|
-
historyQuery.isPending && /* @__PURE__ */ jsxRuntime.jsx("p", { className: "
|
|
174
|
-
historyQuery.isError && /* @__PURE__ */ jsxRuntime.jsx("p", { className: "
|
|
173
|
+
historyQuery.isPending && /* @__PURE__ */ jsxRuntime.jsx("p", { className: "mt-3 text-body text-muted-foreground", children: "Loading trend…" }),
|
|
174
|
+
historyQuery.isError && /* @__PURE__ */ jsxRuntime.jsx("p", { className: "mt-3 text-body text-red-500", children: "Unable to load the trend." }),
|
|
175
175
|
oldestHistoryPoint !== void 0 && /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
176
|
-
/* @__PURE__ */ jsxRuntime.jsxs("p", { className: "
|
|
176
|
+
/* @__PURE__ */ jsxRuntime.jsxs("p", { className: "mt-3 text-body text-foreground", children: [
|
|
177
177
|
historyQuery.data?.nextCursor ? `Active since at least ${ee_signals_signalFormatting.formatSnapshotDate(oldestHistoryPoint.startedAt)} · in ${historyPoints.length}+ snapshots` : `First seen ${ee_signals_signalFormatting.formatSnapshotDate(oldestHistoryPoint.startedAt)} · in ${historyPoints.length} ${historyPoints.length === 1 ? "snapshot" : "snapshots"}`,
|
|
178
178
|
" ",
|
|
179
179
|
"· ",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"theme-detail-panel.cjs.js","sources":["../../../src/ee/signals/theme-detail-panel.tsx"],"sourcesContent":["import { useState } from 'react';\n\nimport { EXAMPLES_PAGE_SIZE, ExamplesPager } from './examples-pager';\nimport { useThemeDetail, useThemeExamples, useThemeHistory } from './hooks';\nimport { getSignalHue } from './signal-colors';\nimport { formatSnapshotDate, shareSentence, signalDescription, signalLabel } from './signal-formatting';\nimport type { SelectedTheme, ThemeSelection, ThemeSelectionStats } from './theme-drilldown-data';\nimport { chronologicalHistoryPoints, themeTrendDirection } from './theme-trend';\nimport { ThemeTrendChart } from './theme-trend-chart';\nimport { TraceInsightView } from './trace-insight-view';\nimport { useTraceIntelligence } from './use-trace-intelligence';\nimport {\n Drawer,\n DrawerBody,\n DrawerContent,\n DrawerDescription,\n DrawerHeader,\n DrawerTitle,\n} from '@/ds/components/Drawer';\nimport { nodeColor } from '@/ds/components/SankeyChart';\nimport { Tooltip, TooltipContent, TooltipTrigger } from '@/ds/components/Tooltip';\nimport { raisedSurfaceStyle } from '@/ds/primitives/raised-surface';\nimport { cn } from '@/lib/utils';\n\ninterface ThemeDetailPanelProps {\n entityId: string;\n entityType: string;\n snapshotId: string;\n snapshotTotal: number;\n selection: SelectedTheme | undefined;\n filters?: ThemeSelection[];\n filteredStats?: ThemeSelectionStats;\n onClose: () => void;\n}\n\nexport function ThemeDetailPanel({\n entityId,\n entityType,\n snapshotId,\n snapshotTotal,\n selection,\n filters = [],\n filteredStats,\n onClose,\n}: ThemeDetailPanelProps) {\n const { signalCatalog } = useTraceIntelligence();\n const filterKey = filters\n .map(filter => `${filter.signalName}:${filter.kind === 'theme' ? filter.themeId : 'noise'}`)\n .join(',');\n const examplesContextKey = `${snapshotId}:${selection?.signalName ?? ''}:${selection?.themeId ?? ''}:${filterKey}`;\n const [examplesPage, setExamplesPage] = useState(() => ({ contextKey: examplesContextKey, offset: 0 }));\n const examplesOffset = examplesPage.contextKey === examplesContextKey ? examplesPage.offset : 0;\n const [insightTraceId, setInsightTraceId] = useState<string>();\n const detailQuery = useThemeDetail(\n entityId,\n entityType,\n selection?.signalName ?? 'goal',\n snapshotId,\n selection?.themeId,\n );\n const examplesQuery = useThemeExamples(\n entityId,\n entityType,\n selection?.signalName ?? 'goal',\n snapshotId,\n selection?.themeId,\n EXAMPLES_PAGE_SIZE,\n examplesOffset,\n filters,\n );\n const historyQuery = useThemeHistory(\n entityId,\n entityType,\n selection?.signalName ?? 'goal',\n snapshotTotal > 1 ? selection?.themeId : undefined,\n );\n const title = detailQuery.data?.theme?.label ?? selection?.label ?? 'Theme details';\n const signalName = selection?.signalName;\n const signalDisplayLabel = signalName ? signalLabel(signalCatalog, signalName) : undefined;\n const signalDisplayDescription = signalName ? signalDescription(signalCatalog, signalName) : undefined;\n const historyPoints = historyQuery.data ? chronologicalHistoryPoints(historyQuery.data.points) : [];\n const oldestHistoryPoint = historyPoints[0];\n\n return (\n <Drawer\n onOpenChange={open => {\n if (!open) {\n setExamplesPage({ contextKey: '', offset: 0 });\n setInsightTraceId(undefined);\n onClose();\n }\n }}\n open={selection !== undefined}\n overlay=\"none\"\n side=\"right\"\n variant=\"floating\"\n >\n <DrawerContent>\n <DrawerHeader className=\"border-border border-b\">\n {signalName !== undefined && (\n <span\n className=\"text-column font-mono tracking-widest\"\n style={{ color: nodeColor(getSignalHue(signalName)) }}\n >\n {signalDisplayDescription ? (\n <Tooltip>\n <TooltipTrigger aria-label={signalDisplayLabel} className=\"cursor-default uppercase\">\n {signalDisplayLabel}\n </TooltipTrigger>\n <TooltipContent>{signalDisplayDescription}</TooltipContent>\n </Tooltip>\n ) : (\n <span className=\"uppercase\">{signalDisplayLabel}</span>\n )}\n </span>\n )}\n <DrawerTitle>{title}</DrawerTitle>\n <DrawerDescription className=\"sr-only\">\n Details for the {signalName ?? 'selected'} theme {title}\n </DrawerDescription>\n </DrawerHeader>\n <DrawerBody className=\"grid content-start gap-6 overflow-y-auto p-6\">\n {insightTraceId !== undefined && (\n <TraceInsightView traceId={insightTraceId} onBack={() => setInsightTraceId(undefined)} />\n )}\n {insightTraceId === undefined && (\n <>\n {detailQuery.isPending && <p className=\"text-muted-foreground text-body\">Loading theme details…</p>}\n {detailQuery.isError && <p className=\"text-body text-red-500\">Unable to load theme details.</p>}\n {detailQuery.data && !detailQuery.data.theme && (\n <section>\n <h2 className=\"text-foreground text-subheading\">Not present in this snapshot</h2>\n <p className=\"text-muted-foreground text-body mt-2\">\n This theme has no data in the selected snapshot.\n </p>\n </section>\n )}\n {detailQuery.data?.theme && (\n <>\n <section aria-labelledby=\"theme-summary-heading\">\n <h2\n id=\"theme-summary-heading\"\n className=\"text-muted-foreground text-caption font-mono tracking-wider uppercase\"\n >\n Summary\n </h2>\n <p className=\"text-foreground text-body mt-3\">\n {detailQuery.data.theme.description ?? 'No description available.'}\n </p>\n <p className=\"text-foreground text-body mt-3 font-mono tabular-nums\">\n {shareSentence(\n filteredStats?.traceCount ?? detailQuery.data.theme.traceCount,\n filteredStats?.stageShare ?? detailQuery.data.theme.coverage,\n )}\n </p>\n </section>\n\n <section aria-labelledby=\"theme-examples-heading\">\n <h2\n id=\"theme-examples-heading\"\n className=\"text-muted-foreground text-caption font-mono tracking-wider uppercase\"\n >\n Examples\n </h2>\n {examplesQuery.isPending && (\n <p className=\"text-muted-foreground text-body mt-3\">Loading examples…</p>\n )}\n {examplesQuery.isError && <p className=\"text-body mt-3 text-red-500\">Unable to load examples.</p>}\n {examplesQuery.data && (\n <>\n {examplesQuery.data.examples.length === 0 ? (\n <p className=\"text-muted-foreground text-body mt-3\">No examples in this snapshot.</p>\n ) : (\n <ul className=\"mt-3 space-y-3\">\n {examplesQuery.data.examples.map(example => (\n <li key={example.traceId}>\n <button\n type=\"button\"\n aria-label={`View trace insight for ${example.signalText}`}\n className={cn(\n raisedSurfaceStyle,\n 'state-layer text-foreground text-body w-full cursor-pointer rounded-md p-3 text-left',\n )}\n onClick={() => setInsightTraceId(example.traceId)}\n >\n {example.signalText}\n </button>\n </li>\n ))}\n </ul>\n )}\n <ExamplesPager\n traceCount={filteredStats?.traceCount ?? detailQuery.data.theme.traceCount}\n offset={examplesOffset}\n onOffsetChange={offset => setExamplesPage({ contextKey: examplesContextKey, offset })}\n />\n </>\n )}\n </section>\n\n {snapshotTotal > 1 && (\n <section aria-labelledby=\"theme-trend-heading\">\n <h2\n id=\"theme-trend-heading\"\n className=\"text-muted-foreground text-caption font-mono tracking-wider uppercase\"\n >\n Trend\n </h2>\n {historyQuery.isPending && <p className=\"text-muted-foreground text-body mt-3\">Loading trend…</p>}\n {historyQuery.isError && <p className=\"text-body mt-3 text-red-500\">Unable to load the trend.</p>}\n {oldestHistoryPoint !== undefined && (\n <>\n <p className=\"text-foreground text-body mt-3\">\n {/* A nextCursor means older points exist beyond the fetched window,\n so the oldest loaded point is a lower bound, not the true origin. */}\n {historyQuery.data?.nextCursor\n ? `Active since at least ${formatSnapshotDate(oldestHistoryPoint.startedAt)} · in ${historyPoints.length}+ snapshots`\n : `First seen ${formatSnapshotDate(oldestHistoryPoint.startedAt)} · in ${historyPoints.length} ${historyPoints.length === 1 ? 'snapshot' : 'snapshots'}`}{' '}\n · {themeTrendDirection(historyPoints)}\n </p>\n {historyPoints.length >= 2 && (\n <ThemeTrendChart\n points={historyPoints}\n color={nodeColor(getSignalHue(signalName ?? 'goal'))}\n />\n )}\n </>\n )}\n </section>\n )}\n </>\n )}\n </>\n )}\n </DrawerBody>\n </DrawerContent>\n </Drawer>\n );\n}\n"],"names":["useTraceIntelligence","useState","useThemeDetail","useThemeExamples","EXAMPLES_PAGE_SIZE","useThemeHistory","signalLabel","signalDescription","chronologicalHistoryPoints","jsx","Drawer","DrawerContent","jsxs","DrawerHeader","nodeColor","getSignalHue","Tooltip","TooltipTrigger","TooltipContent","DrawerTitle","DrawerDescription","DrawerBody","TraceInsightView","Fragment","shareSentence","cn","raisedSurfaceStyle","ExamplesPager","formatSnapshotDate","themeTrendDirection","ThemeTrendChart"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"theme-detail-panel.cjs.js","sources":["../../../src/ee/signals/theme-detail-panel.tsx"],"sourcesContent":["import { useState } from 'react';\n\nimport { EXAMPLES_PAGE_SIZE, ExamplesPager } from './examples-pager';\nimport { useThemeDetail, useThemeExamples, useThemeHistory } from './hooks';\nimport { getSignalHue } from './signal-colors';\nimport { formatSnapshotDate, shareSentence, signalDescription, signalLabel } from './signal-formatting';\nimport type { SelectedTheme, ThemeSelection, ThemeSelectionStats } from './theme-drilldown-data';\nimport { chronologicalHistoryPoints, themeTrendDirection } from './theme-trend';\nimport { ThemeTrendChart } from './theme-trend-chart';\nimport { TraceInsightView } from './trace-insight-view';\nimport { useTraceIntelligence } from './use-trace-intelligence';\nimport {\n Drawer,\n DrawerBody,\n DrawerContent,\n DrawerDescription,\n DrawerHeader,\n DrawerTitle,\n} from '@/ds/components/Drawer';\nimport { nodeColor } from '@/ds/components/SankeyChart';\nimport { Tooltip, TooltipContent, TooltipTrigger } from '@/ds/components/Tooltip';\nimport { raisedSurfaceStyle } from '@/ds/primitives/raised-surface';\nimport { cn } from '@/lib/utils';\n\ninterface ThemeDetailPanelProps {\n entityId: string;\n entityType: string;\n snapshotId: string;\n snapshotTotal: number;\n selection: SelectedTheme | undefined;\n filters?: ThemeSelection[];\n filteredStats?: ThemeSelectionStats;\n onClose: () => void;\n}\n\nexport function ThemeDetailPanel({\n entityId,\n entityType,\n snapshotId,\n snapshotTotal,\n selection,\n filters = [],\n filteredStats,\n onClose,\n}: ThemeDetailPanelProps) {\n const { signalCatalog } = useTraceIntelligence();\n const filterKey = filters\n .map(filter => `${filter.signalName}:${filter.kind === 'theme' ? filter.themeId : 'noise'}`)\n .join(',');\n const examplesContextKey = `${snapshotId}:${selection?.signalName ?? ''}:${selection?.themeId ?? ''}:${filterKey}`;\n const [examplesPage, setExamplesPage] = useState(() => ({ contextKey: examplesContextKey, offset: 0 }));\n const examplesOffset = examplesPage.contextKey === examplesContextKey ? examplesPage.offset : 0;\n const [insightTraceId, setInsightTraceId] = useState<string>();\n const detailQuery = useThemeDetail(\n entityId,\n entityType,\n selection?.signalName ?? 'goal',\n snapshotId,\n selection?.themeId,\n );\n const examplesQuery = useThemeExamples(\n entityId,\n entityType,\n selection?.signalName ?? 'goal',\n snapshotId,\n selection?.themeId,\n EXAMPLES_PAGE_SIZE,\n examplesOffset,\n filters,\n );\n const historyQuery = useThemeHistory(\n entityId,\n entityType,\n selection?.signalName ?? 'goal',\n snapshotTotal > 1 ? selection?.themeId : undefined,\n );\n const title = detailQuery.data?.theme?.label ?? selection?.label ?? 'Theme details';\n const signalName = selection?.signalName;\n const signalDisplayLabel = signalName ? signalLabel(signalCatalog, signalName) : undefined;\n const signalDisplayDescription = signalName ? signalDescription(signalCatalog, signalName) : undefined;\n const historyPoints = historyQuery.data ? chronologicalHistoryPoints(historyQuery.data.points) : [];\n const oldestHistoryPoint = historyPoints[0];\n\n return (\n <Drawer\n onOpenChange={open => {\n if (!open) {\n setExamplesPage({ contextKey: '', offset: 0 });\n setInsightTraceId(undefined);\n onClose();\n }\n }}\n open={selection !== undefined}\n overlay=\"none\"\n side=\"right\"\n variant=\"floating\"\n >\n <DrawerContent>\n <DrawerHeader className=\"border-b border-border\">\n {signalName !== undefined && (\n <span\n className=\"font-mono text-column tracking-widest\"\n style={{ color: nodeColor(getSignalHue(signalName)) }}\n >\n {signalDisplayDescription ? (\n <Tooltip>\n <TooltipTrigger aria-label={signalDisplayLabel} className=\"cursor-default uppercase\">\n {signalDisplayLabel}\n </TooltipTrigger>\n <TooltipContent>{signalDisplayDescription}</TooltipContent>\n </Tooltip>\n ) : (\n <span className=\"uppercase\">{signalDisplayLabel}</span>\n )}\n </span>\n )}\n <DrawerTitle>{title}</DrawerTitle>\n <DrawerDescription className=\"sr-only\">\n Details for the {signalName ?? 'selected'} theme {title}\n </DrawerDescription>\n </DrawerHeader>\n <DrawerBody className=\"grid content-start gap-6 overflow-y-auto p-6\">\n {insightTraceId !== undefined && (\n <TraceInsightView traceId={insightTraceId} onBack={() => setInsightTraceId(undefined)} />\n )}\n {insightTraceId === undefined && (\n <>\n {detailQuery.isPending && <p className=\"text-body text-muted-foreground\">Loading theme details…</p>}\n {detailQuery.isError && <p className=\"text-body text-red-500\">Unable to load theme details.</p>}\n {detailQuery.data && !detailQuery.data.theme && (\n <section>\n <h2 className=\"text-subheading text-foreground\">Not present in this snapshot</h2>\n <p className=\"mt-2 text-body text-muted-foreground\">\n This theme has no data in the selected snapshot.\n </p>\n </section>\n )}\n {detailQuery.data?.theme && (\n <>\n <section aria-labelledby=\"theme-summary-heading\">\n <h2\n id=\"theme-summary-heading\"\n className=\"font-mono text-caption tracking-wider text-muted-foreground uppercase\"\n >\n Summary\n </h2>\n <p className=\"mt-3 text-body text-foreground\">\n {detailQuery.data.theme.description ?? 'No description available.'}\n </p>\n <p className=\"mt-3 font-mono text-body text-foreground tabular-nums\">\n {shareSentence(\n filteredStats?.traceCount ?? detailQuery.data.theme.traceCount,\n filteredStats?.stageShare ?? detailQuery.data.theme.coverage,\n )}\n </p>\n </section>\n\n <section aria-labelledby=\"theme-examples-heading\">\n <h2\n id=\"theme-examples-heading\"\n className=\"font-mono text-caption tracking-wider text-muted-foreground uppercase\"\n >\n Examples\n </h2>\n {examplesQuery.isPending && (\n <p className=\"mt-3 text-body text-muted-foreground\">Loading examples…</p>\n )}\n {examplesQuery.isError && <p className=\"mt-3 text-body text-red-500\">Unable to load examples.</p>}\n {examplesQuery.data && (\n <>\n {examplesQuery.data.examples.length === 0 ? (\n <p className=\"mt-3 text-body text-muted-foreground\">No examples in this snapshot.</p>\n ) : (\n <ul className=\"mt-3 space-y-3\">\n {examplesQuery.data.examples.map(example => (\n <li key={example.traceId}>\n <button\n type=\"button\"\n aria-label={`View trace insight for ${example.signalText}`}\n className={cn(\n raisedSurfaceStyle,\n 'state-layer w-full cursor-pointer rounded-md p-3 text-left text-body text-foreground',\n )}\n onClick={() => setInsightTraceId(example.traceId)}\n >\n {example.signalText}\n </button>\n </li>\n ))}\n </ul>\n )}\n <ExamplesPager\n traceCount={filteredStats?.traceCount ?? detailQuery.data.theme.traceCount}\n offset={examplesOffset}\n onOffsetChange={offset => setExamplesPage({ contextKey: examplesContextKey, offset })}\n />\n </>\n )}\n </section>\n\n {snapshotTotal > 1 && (\n <section aria-labelledby=\"theme-trend-heading\">\n <h2\n id=\"theme-trend-heading\"\n className=\"font-mono text-caption tracking-wider text-muted-foreground uppercase\"\n >\n Trend\n </h2>\n {historyQuery.isPending && <p className=\"mt-3 text-body text-muted-foreground\">Loading trend…</p>}\n {historyQuery.isError && <p className=\"mt-3 text-body text-red-500\">Unable to load the trend.</p>}\n {oldestHistoryPoint !== undefined && (\n <>\n <p className=\"mt-3 text-body text-foreground\">\n {/* A nextCursor means older points exist beyond the fetched window,\n so the oldest loaded point is a lower bound, not the true origin. */}\n {historyQuery.data?.nextCursor\n ? `Active since at least ${formatSnapshotDate(oldestHistoryPoint.startedAt)} · in ${historyPoints.length}+ snapshots`\n : `First seen ${formatSnapshotDate(oldestHistoryPoint.startedAt)} · in ${historyPoints.length} ${historyPoints.length === 1 ? 'snapshot' : 'snapshots'}`}{' '}\n · {themeTrendDirection(historyPoints)}\n </p>\n {historyPoints.length >= 2 && (\n <ThemeTrendChart\n points={historyPoints}\n color={nodeColor(getSignalHue(signalName ?? 'goal'))}\n />\n )}\n </>\n )}\n </section>\n )}\n </>\n )}\n </>\n )}\n </DrawerBody>\n </DrawerContent>\n </Drawer>\n );\n}\n"],"names":["useTraceIntelligence","useState","useThemeDetail","useThemeExamples","EXAMPLES_PAGE_SIZE","useThemeHistory","signalLabel","signalDescription","chronologicalHistoryPoints","jsx","Drawer","DrawerContent","jsxs","DrawerHeader","nodeColor","getSignalHue","Tooltip","TooltipTrigger","TooltipContent","DrawerTitle","DrawerDescription","DrawerBody","TraceInsightView","Fragment","shareSentence","cn","raisedSurfaceStyle","ExamplesPager","formatSnapshotDate","themeTrendDirection","ThemeTrendChart"],"mappings":"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"}
|