@mastra/playground-ui 56.0.0 → 57.0.0-alpha.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{EmptyState-CdRjFB06.cjs → EmptyState-0MgNiP40.cjs} +11 -5
- package/dist/EmptyState-0MgNiP40.cjs.map +1 -0
- package/dist/{EmptyState-UWXhBp5U.js → EmptyState-CiZVWvpH.js} +11 -5
- package/dist/EmptyState-CiZVWvpH.js.map +1 -0
- package/dist/ErrorState-C7-4A-rB.cjs +21 -0
- package/dist/ErrorState-C7-4A-rB.cjs.map +1 -0
- package/dist/ErrorState-l5gg5Nzw.js +19 -0
- package/dist/ErrorState-l5gg5Nzw.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/{PermissionDenied-Dz5qXpQj.cjs → PermissionDenied-CwLIzjpC.cjs} +11 -6
- package/dist/PermissionDenied-CwLIzjpC.cjs.map +1 -0
- package/dist/{PermissionDenied-B6TSGolC.js → PermissionDenied-DPM04x0a.js} +11 -6
- package/dist/PermissionDenied-DPM04x0a.js.map +1 -0
- package/dist/{SessionExpired-CF0BGNo_.cjs → SessionExpired-07Lz91i3.cjs} +4 -5
- package/dist/SessionExpired-07Lz91i3.cjs.map +1 -0
- package/dist/{SessionExpired-Bq5LcsDu.js → SessionExpired-CnJ8zr5Y.js} +4 -5
- package/dist/SessionExpired-CnJ8zr5Y.js.map +1 -0
- package/dist/ask-user-B_O3GEjY.cjs +216 -0
- package/dist/ask-user-B_O3GEjY.cjs.map +1 -0
- package/dist/ask-user-gT9rODOe.js +206 -0
- package/dist/ask-user-gT9rODOe.js.map +1 -0
- package/dist/{combobox-BWM3VH-n.cjs → combobox-BTZyTiyL.cjs} +3 -4
- package/dist/{combobox-BWM3VH-n.cjs.map → combobox-BTZyTiyL.cjs.map} +1 -1
- package/dist/{combobox-D7xJFZuO.js → combobox-B_gv8nUN.js} +2 -3
- package/dist/{combobox-D7xJFZuO.js.map → combobox-B_gv8nUN.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/Combobox.cjs.js +1 -1
- package/dist/components/Combobox.es.js +1 -1
- package/dist/components/Comment.cjs.js +2 -3
- package/dist/components/Comment.cjs.js.map +1 -1
- package/dist/components/Comment.es.js +1 -2
- package/dist/components/Comment.es.js.map +1 -1
- package/dist/components/DataCodeSection.cjs.js +1 -1
- package/dist/components/DataCodeSection.es.js +1 -1
- package/dist/components/DataDetailsPanel.cjs.js +2 -2
- package/dist/components/DataDetailsPanel.cjs.js.map +1 -1
- package/dist/components/DataDetailsPanel.es.js +2 -2
- package/dist/components/DataDetailsPanel.es.js.map +1 -1
- package/dist/components/DataPanel.cjs.js +1 -1
- package/dist/components/DataPanel.es.js +1 -1
- package/dist/components/DateTimePicker.cjs.js +1 -1
- package/dist/components/DateTimePicker.es.js +1 -1
- package/dist/components/DateTimeRangePicker.cjs.js +1 -1
- package/dist/components/DateTimeRangePicker.es.js +1 -1
- package/dist/components/EmptyState.cjs.js +1 -1
- package/dist/components/EmptyState.es.js +1 -1
- package/dist/components/EnvironmentVariablesEditor.cjs.js +7 -8
- package/dist/components/EnvironmentVariablesEditor.cjs.js.map +1 -1
- package/dist/components/EnvironmentVariablesEditor.es.js +1 -2
- package/dist/components/EnvironmentVariablesEditor.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 +490 -38
- package/dist/components/FilterBar.cjs.js.map +1 -1
- package/dist/components/FilterBar.es.js +490 -42
- 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/IntegrationDialog.cjs.js +1 -1
- package/dist/components/IntegrationDialog.es.js +1 -1
- package/dist/components/JSONSchemaForm.cjs.js +2 -2
- package/dist/components/JSONSchemaForm.es.js +2 -2
- package/dist/components/ListSearch.cjs.js +1 -1
- package/dist/components/ListSearch.es.js +1 -1
- package/dist/components/LogsDataList.cjs.js +2 -0
- package/dist/components/LogsDataList.cjs.js.map +1 -1
- package/dist/components/LogsDataList.es.js +2 -0
- package/dist/components/LogsDataList.es.js.map +1 -1
- package/dist/components/Message.cjs.js +1 -1
- package/dist/components/Message.es.js +2 -2
- 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/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/PermissionDenied.cjs.js +1 -1
- package/dist/components/PermissionDenied.es.js +1 -1
- package/dist/components/PropertyFilter.cjs.js +2 -2
- package/dist/components/PropertyFilter.es.js +3 -3
- 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/SessionExpired.cjs.js +1 -1
- package/dist/components/SessionExpired.es.js +1 -1
- package/dist/components/SideDialog.cjs.js +10 -2
- package/dist/components/SideDialog.cjs.js.map +1 -1
- package/dist/components/SideDialog.es.js +10 -2
- 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/Steps.cjs.js +1 -1
- package/dist/components/Steps.es.js +1 -1
- package/dist/components/Workflow.cjs.js +6 -6
- package/dist/components/Workflow.cjs.js.map +1 -1
- package/dist/components/Workflow.es.js +6 -6
- 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/tool-call.cjs.js +1 -1
- package/dist/components/ai/tool-call.es.js +2 -2
- package/dist/{data-code-section-qujvEc6j.cjs → data-code-section-Dpd2hzmU.cjs} +4 -4
- package/dist/{data-code-section-qujvEc6j.cjs.map → data-code-section-Dpd2hzmU.cjs.map} +1 -1
- package/dist/{data-code-section-DKz9Okaz.js → data-code-section-O-DRRO6N.js} +4 -4
- package/dist/{data-code-section-DKz9Okaz.js.map → data-code-section-O-DRRO6N.js.map} +1 -1
- package/dist/{data-panel-CWjgS1Gh.js → data-panel-CDJMMCvz.js} +3 -3
- package/dist/{data-panel-CWjgS1Gh.js.map → data-panel-CDJMMCvz.js.map} +1 -1
- package/dist/{data-panel-CWZJKBeW.cjs → data-panel-DNPcL38C.cjs} +3 -3
- package/dist/{data-panel-CWZJKBeW.cjs.map → data-panel-DNPcL38C.cjs.map} +1 -1
- package/dist/{date-time-range-picker-BcjLbkGu.js → date-time-range-picker-B-C-PPI4.js} +2 -3
- package/dist/{date-time-range-picker-BcjLbkGu.js.map → date-time-range-picker-B-C-PPI4.js.map} +1 -1
- package/dist/{date-time-range-picker-C6hjZswK.cjs → date-time-range-picker-D_mHYCx_.cjs} +3 -4
- package/dist/{date-time-range-picker-C6hjZswK.cjs.map → date-time-range-picker-D_mHYCx_.cjs.map} +1 -1
- package/dist/domains/chat/components/badge-wrapper.cjs.js +1 -1
- package/dist/domains/chat/components/badge-wrapper.es.js +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/messages/reasoning.cjs.js +1 -1
- package/dist/domains/chat/messages/reasoning.cjs.js.map +1 -1
- package/dist/domains/chat/messages/reasoning.es.js +1 -1
- package/dist/domains/chat/messages/reasoning.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/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-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 +5 -5
- package/dist/domains/logs/components/no-logs-info.cjs.js.map +1 -1
- package/dist/domains/logs/components/no-logs-info.es.js +6 -6
- package/dist/domains/logs/components/no-logs-info.es.js.map +1 -1
- package/dist/domains/memory/components/flame-graph.cjs.js +6 -6
- package/dist/domains/memory/components/flame-graph.cjs.js.map +1 -1
- package/dist/domains/memory/components/flame-graph.es.js +6 -6
- package/dist/domains/memory/components/flame-graph.es.js.map +1 -1
- package/dist/domains/memory/components/observation-detail-view.cjs.js +10 -11
- package/dist/domains/memory/components/observation-detail-view.cjs.js.map +1 -1
- package/dist/domains/memory/components/observation-detail-view.es.js +10 -11
- package/dist/domains/memory/components/observation-detail-view.es.js.map +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 +1 -1
- package/dist/domains/metrics/components/latency-card-view.es.js +1 -1
- package/dist/domains/metrics/components/memory-card-view.cjs.js +1 -1
- package/dist/domains/metrics/components/memory-card-view.es.js +1 -1
- package/dist/domains/metrics/components/model-usage-cost-card-view.cjs.js +1 -1
- package/dist/domains/metrics/components/model-usage-cost-card-view.es.js +1 -1
- package/dist/domains/metrics/components/scores-card-view.cjs.js +1 -1
- package/dist/domains/metrics/components/scores-card-view.es.js +1 -1
- package/dist/domains/metrics/components/token-usage-by-agent-card-view.cjs.js +1 -1
- package/dist/domains/metrics/components/token-usage-by-agent-card-view.es.js +1 -1
- package/dist/domains/metrics/components/token-usage-timeline-card-view.cjs.js +1 -1
- package/dist/domains/metrics/components/token-usage-timeline-card-view.es.js +1 -1
- package/dist/domains/metrics/components/traces-volume-card-view.cjs.js +1 -1
- package/dist/domains/metrics/components/traces-volume-card-view.es.js +1 -1
- 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 +1 -1
- package/dist/domains/traces/components/span-data-panel-view.es.js +1 -1
- package/dist/domains/traces/components/span-payload/span-error-renderer.cjs.js +1 -1
- package/dist/domains/traces/components/span-payload/span-error-renderer.es.js +1 -1
- package/dist/domains/traces/components/span-payload/span-input-renderers.cjs.js +1 -1
- package/dist/domains/traces/components/span-payload/span-input-renderers.es.js +1 -1
- package/dist/domains/traces/components/span-payload/span-output-renderers.cjs.js +1 -1
- package/dist/domains/traces/components/span-payload/span-output-renderers.es.js +1 -1
- 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 +1 -1
- package/dist/domains/traces/components/span-payload/span-payload-primitives.es.js +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/thread-trace/thread-trace-details.cjs.js +1 -1
- package/dist/domains/traces/components/thread-trace/thread-trace-details.es.js +1 -1
- package/dist/domains/traces/components/thread-trace/thread-trace-messages.cjs.js +1 -1
- package/dist/domains/traces/components/thread-trace/thread-trace-messages.es.js +1 -1
- package/dist/domains/traces/components/trace-columns-menu.cjs.js +4 -4
- package/dist/domains/traces/components/trace-columns-menu.cjs.js.map +1 -1
- package/dist/domains/traces/components/trace-columns-menu.es.js +2 -2
- package/dist/domains/traces/components/trace-data-panel-view.cjs.js +2 -2
- package/dist/domains/traces/components/trace-data-panel-view.es.js +2 -2
- 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-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-page-skeleton.cjs.js +2 -0
- package/dist/domains/traces/components/traces-page-skeleton.cjs.js.map +1 -1
- package/dist/domains/traces/components/traces-page-skeleton.es.js +2 -0
- 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/ee/signals/components/entity-index-list.cjs.js +2 -0
- package/dist/ee/signals/components/entity-index-list.cjs.js.map +1 -1
- package/dist/ee/signals/components/entity-index-list.es.js +2 -0
- package/dist/ee/signals/components/entity-index-list.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 +11 -13
- 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 +12 -14
- package/dist/ee/signals/components/trace-intelligence-entity-index.es.js.map +1 -1
- package/dist/ee/signals/sankey-signals.cjs.js +2 -2
- package/dist/ee/signals/sankey-signals.cjs.js.map +1 -1
- package/dist/ee/signals/sankey-signals.es.js +2 -2
- package/dist/ee/signals/sankey-signals.es.js.map +1 -1
- package/dist/ee/signals/settings/signal-definition-form-dialog.cjs.js +10 -11
- 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 +3 -4
- package/dist/ee/signals/settings/signal-definition-form-dialog.es.js.map +1 -1
- package/dist/ee/topics/components/topics-layout.cjs.js +1 -1
- package/dist/ee/topics/components/topics-layout.cjs.js.map +1 -1
- package/dist/ee/topics/components/topics-layout.es.js +1 -1
- package/dist/ee/topics/components/topics-layout.es.js.map +1 -1
- package/dist/{field-block-DWkbNcsV.js → field-error-id-BLxISyNV.js} +4 -2
- package/dist/field-error-id-BLxISyNV.js.map +1 -0
- package/dist/{field-block-Dy1IaWbv.cjs → field-error-id-CXi0XkjZ.cjs} +4 -1
- package/dist/field-error-id-CXi0XkjZ.cjs.map +1 -0
- package/dist/{filter-bar-chip-BxI0NgEz.cjs → filter-bar-chip-D-IRgccJ.cjs} +296 -65
- package/dist/filter-bar-chip-D-IRgccJ.cjs.map +1 -0
- package/dist/{filter-bar-chip-C-JxWUU8.js → filter-bar-chip-luoMVy8-.js} +293 -67
- package/dist/filter-bar-chip-luoMVy8-.js.map +1 -0
- package/dist/filter-bar-chip.css +33 -1
- package/dist/layout/tabbed-container.cjs.js +2 -2
- package/dist/layout/tabbed-container.es.js +2 -2
- package/dist/{list-search-vyxsZMAK.cjs → list-search-BEDvqI5f.cjs} +2 -2
- package/dist/{list-search-vyxsZMAK.cjs.map → list-search-BEDvqI5f.cjs.map} +1 -1
- package/dist/{list-search-BTW0Neuc.js → list-search-BcOawrgy.js} +2 -2
- package/dist/{list-search-BTW0Neuc.js.map → list-search-BcOawrgy.js.map} +1 -1
- 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-D-VjFkUM.cjs} +3 -3
- package/dist/{metrics-card-BUJxiwec.cjs.map → metrics-card-D-VjFkUM.cjs.map} +1 -1
- package/dist/{metrics-card-BlBt1WHw.js → metrics-card-jjLRvic4.js} +3 -3
- package/dist/{metrics-card-BlBt1WHw.js.map → metrics-card-jjLRvic4.js.map} +1 -1
- package/dist/{metrics-kpi-card-CBSNmtc5.js → metrics-kpi-card-CY6F7nTX.js} +2 -2
- package/dist/{metrics-kpi-card-CBSNmtc5.js.map → metrics-kpi-card-CY6F7nTX.js.map} +1 -1
- package/dist/{metrics-kpi-card-CgqmNcEC.cjs → metrics-kpi-card-krK6uG7U.cjs} +2 -2
- package/dist/{metrics-kpi-card-CgqmNcEC.cjs.map → metrics-kpi-card-krK6uG7U.cjs.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/{property-filter-applied-BmxCPe2d.cjs → property-filter-applied-CAiO4FBw.cjs} +2 -2
- package/dist/{property-filter-applied-BmxCPe2d.cjs.map → property-filter-applied-CAiO4FBw.cjs.map} +1 -1
- package/dist/{property-filter-applied-BBiUbtr0.js → property-filter-applied-MIKU9okW.js} +2 -2
- package/dist/{property-filter-applied-BBiUbtr0.js.map → property-filter-applied-MIKU9okW.js.map} +1 -1
- 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/{search-field-block-D0PUUCAE.cjs → search-field-block-DAdvPs1N.cjs} +8 -9
- package/dist/{search-field-block-D0PUUCAE.cjs.map → search-field-block-DAdvPs1N.cjs.map} +1 -1
- package/dist/{search-field-block-B5vUVTpl.js → search-field-block-DjN9AgLw.js} +2 -3
- package/dist/{search-field-block-B5vUVTpl.js.map → search-field-block-DjN9AgLw.js.map} +1 -1
- package/dist/{select-field-block-W2u2WmN3.cjs → select-field-block-7EHxArfT.cjs} +8 -9
- package/dist/{select-field-block-W2u2WmN3.cjs.map → select-field-block-7EHxArfT.cjs.map} +1 -1
- package/dist/{select-field-block-Bu7UXI2H.js → select-field-block-CBte2DyW.js} +2 -3
- package/dist/{select-field-block-Bu7UXI2H.js.map → select-field-block-CBte2DyW.js.map} +1 -1
- package/dist/{span-payload-primitives-DnRsP93D.cjs → span-payload-primitives-BLKf0qn0.cjs} +2 -2
- package/dist/{span-payload-primitives-DnRsP93D.cjs.map → span-payload-primitives-BLKf0qn0.cjs.map} +1 -1
- package/dist/{span-payload-primitives-sbxk4CHC.js → span-payload-primitives-CDLOoJfp.js} +2 -2
- package/dist/{span-payload-primitives-sbxk4CHC.js.map → span-payload-primitives-CDLOoJfp.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/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/ButtonsGroup/buttons-group.stories.d.ts +7 -5
- 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/style.css +42 -92
- package/dist/{text-field-block--EUJKlY_.js → text-field-block-DBesvdaa.js} +2 -3
- package/dist/{text-field-block--EUJKlY_.js.map → text-field-block-DBesvdaa.js.map} +1 -1
- package/dist/{text-field-block-BLpLWmu8.cjs → text-field-block-DUMc8MTJ.cjs} +8 -9
- package/dist/{text-field-block-BLpLWmu8.cjs.map → text-field-block-DUMc8MTJ.cjs.map} +1 -1
- package/dist/{tool-call-K147tCug.js → tool-call-Du8XIzfo.js} +2 -2
- package/dist/{tool-call-K147tCug.js.map → tool-call-Du8XIzfo.js.map} +1 -1
- package/dist/{tool-call-CMRvRE-v.cjs → tool-call-ZKSbU3LR.cjs} +2 -2
- package/dist/{tool-call-CMRvRE-v.cjs.map → tool-call-ZKSbU3LR.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 -6
- 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/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/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/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/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/{span-payload-primitives-DnRsP93D.cjs.map → span-payload-primitives-BLKf0qn0.cjs.map}
RENAMED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"span-payload-primitives-
|
|
1
|
+
{"version":3,"file":"span-payload-primitives-BLKf0qn0.cjs","sources":["../src/domains/traces/components/span-payload/span-payload-tool.tsx","../src/domains/traces/components/span-payload/span-payload-primitives.tsx"],"sourcesContent":["import { SpanPayloadJson } from './span-payload-json';\nimport { SpanPayloadField, SpanPayloadLabel } from './span-payload-primitives';\nimport { BadgeWrapper } from '@/domains/chat/components/badge-wrapper';\nimport { ToolCallPresentedHeader } from '@/ds/components/ai/tool-call';\nimport { presentTool } from '@/ds/components/ai/tool-call/tool-presentation';\n\nconst isRecord = (value: unknown): value is Record<string, unknown> =>\n typeof value === 'object' && value !== null && !Array.isArray(value);\n\nexport function SpanPayloadTool({ value, showLabel = true }: { value: unknown; showLabel?: boolean }) {\n if (!isRecord(value)) return <SpanPayloadJson value={value} />;\n const call = value.type === 'tool-invocation' ? value.toolInvocation : value;\n if (!isRecord(call) || typeof call.toolName !== 'string' || !call.toolName) {\n return <SpanPayloadJson value={value} />;\n }\n const input = 'args' in call ? call.args : call.input;\n const output = 'result' in call ? call.result : call.output;\n const error = call.isError === true || call.state === 'output-error';\n const errorText = typeof call.errorText === 'string' ? call.errorText : undefined;\n return (\n <div data-slot=\"span-payload-tool\" className=\"flex flex-col gap-2\">\n {showLabel && <SpanPayloadLabel>{value.type === 'tool-result' ? 'Tool result' : 'Tool call'}</SpanPayloadLabel>}\n <BadgeWrapper\n status={error ? 'error' : 'idle'}\n header={<ToolCallPresentedHeader {...presentTool(call.toolName, input)} />}\n >\n <div className=\"flex flex-col gap-3\">\n {input !== undefined && (\n <SpanPayloadField label=\"Arguments\">\n <SpanPayloadJson value={input} />\n </SpanPayloadField>\n )}\n {output !== undefined && (\n <SpanPayloadField label=\"Result\">\n <SpanPayloadJson value={output} />\n </SpanPayloadField>\n )}\n {errorText !== undefined && (\n <SpanPayloadField label=\"Error\">\n <SpanPayloadJson value={errorText} />\n </SpanPayloadField>\n )}\n </div>\n </BadgeWrapper>\n </div>\n );\n}\n","import { ChevronRightIcon } from 'lucide-react';\nimport type { ReactNode } from 'react';\nimport { SpanPayloadTool } from './span-payload-tool';\nimport { Collapsible, CollapsibleContent, CollapsibleTrigger } from '@/ds/components/Collapsible';\nimport { MarkdownRenderer } from '@/ds/components/MarkdownRenderer';\n\n/** Small-caps label above a field of a rich payload. */\nexport function SpanPayloadLabel({ children }: { children: ReactNode }) {\n return <div className=\"text-meta text-placeholder tracking-widest uppercase\">{children}</div>;\n}\n\nexport function SpanPayloadField({ label, children }: { label: ReactNode; children: ReactNode }) {\n return (\n <div data-slot=\"span-payload-field\" className=\"flex flex-col gap-1.5\">\n <SpanPayloadLabel>{label}</SpanPayloadLabel>\n {children}\n </div>\n );\n}\n\nexport function SpanPayloadMarkdown({ children }: { children: string }) {\n return (\n <div data-slot=\"span-payload-markdown\" className=\"text-body text-foreground\">\n <MarkdownRenderer>{children}</MarkdownRenderer>\n </div>\n );\n}\n\n/** A collapsed block for secondary data (reasoning, steps, warnings…). */\nexport function SpanPayloadCollapsible({\n label,\n children,\n defaultOpen = false,\n}: {\n label: ReactNode;\n children: ReactNode;\n defaultOpen?: boolean;\n}) {\n return (\n <Collapsible defaultOpen={defaultOpen}>\n <CollapsibleTrigger className=\"text-meta text-placeholder flex items-center gap-1 tracking-widest uppercase [&>svg]:size-3\">\n <ChevronRightIcon />\n {label}\n </CollapsibleTrigger>\n <CollapsibleContent className=\"pt-1.5\">{children}</CollapsibleContent>\n </Collapsible>\n );\n}\n\n/** Tool calls as core records them: `{ toolName, args | input }` when they have that shape, JSON otherwise. */\nexport function SpanPayloadToolCalls({ toolCalls }: { toolCalls: unknown[] }) {\n return (\n <ul data-slot=\"span-payload-tool-calls\" className=\"flex flex-col gap-2\">\n {toolCalls.map((call, index) => (\n <li key={index}>\n <SpanPayloadTool value={call} showLabel={false} />\n </li>\n ))}\n </ul>\n );\n}\n"],"names":["jsx","SpanPayloadJson","jsxs","BadgeWrapper","ToolCallPresentedHeader","presentTool","MarkdownRenderer","Collapsible","CollapsibleTrigger","ChevronRightIcon","CollapsibleContent"],"mappings":"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"}
|
|
@@ -4,7 +4,7 @@ import { SpanPayloadJson } from './domains/traces/components/span-payload/span-p
|
|
|
4
4
|
import { C as Collapsible, b as CollapsibleTrigger, a as CollapsibleContent } from './collapsible-B2uUy8w5.js';
|
|
5
5
|
import { M as MarkdownRenderer } from './markdown-renderer-B0gTm_Ea.js';
|
|
6
6
|
import { BadgeWrapper } from './domains/chat/components/badge-wrapper.es.js';
|
|
7
|
-
import { j as ToolCallPresentedHeader } from './tool-call-
|
|
7
|
+
import { j as ToolCallPresentedHeader } from './tool-call-Du8XIzfo.js';
|
|
8
8
|
import { p as presentTool } from './tool-presentation-D-smNbXC.js';
|
|
9
9
|
|
|
10
10
|
const isRecord = (value) => typeof value === "object" && value !== null && !Array.isArray(value);
|
|
@@ -65,4 +65,4 @@ function SpanPayloadToolCalls({ toolCalls }) {
|
|
|
65
65
|
}
|
|
66
66
|
|
|
67
67
|
export { SpanPayloadField as S, SpanPayloadMarkdown as a, SpanPayloadToolCalls as b, SpanPayloadCollapsible as c, SpanPayloadLabel as d, SpanPayloadTool as e };
|
|
68
|
-
//# sourceMappingURL=span-payload-primitives-
|
|
68
|
+
//# sourceMappingURL=span-payload-primitives-CDLOoJfp.js.map
|
package/dist/{span-payload-primitives-sbxk4CHC.js.map → span-payload-primitives-CDLOoJfp.js.map}
RENAMED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"span-payload-primitives-
|
|
1
|
+
{"version":3,"file":"span-payload-primitives-CDLOoJfp.js","sources":["../src/domains/traces/components/span-payload/span-payload-tool.tsx","../src/domains/traces/components/span-payload/span-payload-primitives.tsx"],"sourcesContent":["import { SpanPayloadJson } from './span-payload-json';\nimport { SpanPayloadField, SpanPayloadLabel } from './span-payload-primitives';\nimport { BadgeWrapper } from '@/domains/chat/components/badge-wrapper';\nimport { ToolCallPresentedHeader } from '@/ds/components/ai/tool-call';\nimport { presentTool } from '@/ds/components/ai/tool-call/tool-presentation';\n\nconst isRecord = (value: unknown): value is Record<string, unknown> =>\n typeof value === 'object' && value !== null && !Array.isArray(value);\n\nexport function SpanPayloadTool({ value, showLabel = true }: { value: unknown; showLabel?: boolean }) {\n if (!isRecord(value)) return <SpanPayloadJson value={value} />;\n const call = value.type === 'tool-invocation' ? value.toolInvocation : value;\n if (!isRecord(call) || typeof call.toolName !== 'string' || !call.toolName) {\n return <SpanPayloadJson value={value} />;\n }\n const input = 'args' in call ? call.args : call.input;\n const output = 'result' in call ? call.result : call.output;\n const error = call.isError === true || call.state === 'output-error';\n const errorText = typeof call.errorText === 'string' ? call.errorText : undefined;\n return (\n <div data-slot=\"span-payload-tool\" className=\"flex flex-col gap-2\">\n {showLabel && <SpanPayloadLabel>{value.type === 'tool-result' ? 'Tool result' : 'Tool call'}</SpanPayloadLabel>}\n <BadgeWrapper\n status={error ? 'error' : 'idle'}\n header={<ToolCallPresentedHeader {...presentTool(call.toolName, input)} />}\n >\n <div className=\"flex flex-col gap-3\">\n {input !== undefined && (\n <SpanPayloadField label=\"Arguments\">\n <SpanPayloadJson value={input} />\n </SpanPayloadField>\n )}\n {output !== undefined && (\n <SpanPayloadField label=\"Result\">\n <SpanPayloadJson value={output} />\n </SpanPayloadField>\n )}\n {errorText !== undefined && (\n <SpanPayloadField label=\"Error\">\n <SpanPayloadJson value={errorText} />\n </SpanPayloadField>\n )}\n </div>\n </BadgeWrapper>\n </div>\n );\n}\n","import { ChevronRightIcon } from 'lucide-react';\nimport type { ReactNode } from 'react';\nimport { SpanPayloadTool } from './span-payload-tool';\nimport { Collapsible, CollapsibleContent, CollapsibleTrigger } from '@/ds/components/Collapsible';\nimport { MarkdownRenderer } from '@/ds/components/MarkdownRenderer';\n\n/** Small-caps label above a field of a rich payload. */\nexport function SpanPayloadLabel({ children }: { children: ReactNode }) {\n return <div className=\"text-meta text-placeholder tracking-widest uppercase\">{children}</div>;\n}\n\nexport function SpanPayloadField({ label, children }: { label: ReactNode; children: ReactNode }) {\n return (\n <div data-slot=\"span-payload-field\" className=\"flex flex-col gap-1.5\">\n <SpanPayloadLabel>{label}</SpanPayloadLabel>\n {children}\n </div>\n );\n}\n\nexport function SpanPayloadMarkdown({ children }: { children: string }) {\n return (\n <div data-slot=\"span-payload-markdown\" className=\"text-body text-foreground\">\n <MarkdownRenderer>{children}</MarkdownRenderer>\n </div>\n );\n}\n\n/** A collapsed block for secondary data (reasoning, steps, warnings…). */\nexport function SpanPayloadCollapsible({\n label,\n children,\n defaultOpen = false,\n}: {\n label: ReactNode;\n children: ReactNode;\n defaultOpen?: boolean;\n}) {\n return (\n <Collapsible defaultOpen={defaultOpen}>\n <CollapsibleTrigger className=\"text-meta text-placeholder flex items-center gap-1 tracking-widest uppercase [&>svg]:size-3\">\n <ChevronRightIcon />\n {label}\n </CollapsibleTrigger>\n <CollapsibleContent className=\"pt-1.5\">{children}</CollapsibleContent>\n </Collapsible>\n );\n}\n\n/** Tool calls as core records them: `{ toolName, args | input }` when they have that shape, JSON otherwise. */\nexport function SpanPayloadToolCalls({ toolCalls }: { toolCalls: unknown[] }) {\n return (\n <ul data-slot=\"span-payload-tool-calls\" className=\"flex flex-col gap-2\">\n {toolCalls.map((call, index) => (\n <li key={index}>\n <SpanPayloadTool value={call} showLabel={false} />\n </li>\n ))}\n </ul>\n );\n}\n"],"names":[],"mappings":"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"}
|
|
@@ -8,7 +8,8 @@ const spinnerVariants = index.cva("spinner inline-block text-foreground", {
|
|
|
8
8
|
variants: {
|
|
9
9
|
size: {
|
|
10
10
|
sm: "size-4",
|
|
11
|
-
md: "size-6"
|
|
11
|
+
md: "size-6",
|
|
12
|
+
lg: "size-8"
|
|
12
13
|
},
|
|
13
14
|
variant: {
|
|
14
15
|
default: "",
|
|
@@ -24,13 +25,14 @@ function Spinner({
|
|
|
24
25
|
className,
|
|
25
26
|
size = "md",
|
|
26
27
|
variant = "default",
|
|
28
|
+
fill = false,
|
|
27
29
|
"aria-label": ariaLabel = "Loading",
|
|
28
30
|
role = "status",
|
|
29
31
|
...props
|
|
30
32
|
}) {
|
|
31
33
|
const resolvedSize = size ?? "md";
|
|
32
34
|
const resolvedVariant = variant ?? "default";
|
|
33
|
-
|
|
35
|
+
const svg = /* @__PURE__ */ jsxRuntime.jsx(
|
|
34
36
|
"svg",
|
|
35
37
|
{
|
|
36
38
|
...props,
|
|
@@ -47,7 +49,11 @@ function Spinner({
|
|
|
47
49
|
] }) : /* @__PURE__ */ jsxRuntime.jsx("circle", { className: "spinner-ring", cx: "12", cy: "12", r: "8.5" })
|
|
48
50
|
}
|
|
49
51
|
);
|
|
52
|
+
if (fill) {
|
|
53
|
+
return /* @__PURE__ */ jsxRuntime.jsx("div", { "data-slot": "spinner-fill", className: "flex h-full items-center-safe justify-center-safe", children: svg });
|
|
54
|
+
}
|
|
55
|
+
return svg;
|
|
50
56
|
}
|
|
51
57
|
|
|
52
58
|
exports.Spinner = Spinner;
|
|
53
|
-
//# sourceMappingURL=spinner-
|
|
59
|
+
//# sourceMappingURL=spinner-BCpN7LL9.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"spinner-BCpN7LL9.cjs","sources":["../src/ds/components/Spinner/spinner.tsx"],"sourcesContent":["import { cva } from 'class-variance-authority';\nimport type { VariantProps } from 'class-variance-authority';\nimport type { ComponentPropsWithoutRef } from 'react';\n\nimport { cn } from '@/lib/utils';\n\nimport './spinner.css';\n\nconst spinnerVariants = cva('spinner inline-block text-foreground', {\n variants: {\n size: {\n sm: 'size-4',\n md: 'size-6',\n lg: 'size-8',\n },\n variant: {\n default: '',\n pulse: '',\n },\n },\n defaultVariants: {\n size: 'md',\n variant: 'default',\n },\n});\n\ntype SpinnerVariantsProps = VariantProps<typeof spinnerVariants>;\nexport type SpinnerVariant = NonNullable<SpinnerVariantsProps['variant']>;\nexport type SpinnerSize = NonNullable<SpinnerVariantsProps['size']>;\n\nexport type SpinnerProps = Omit<ComponentPropsWithoutRef<'svg'>, 'color' | 'size' | 'fill'> &\n SpinnerVariantsProps & {\n /** Center the spinner in the full height of its parent — the parent must have a definite height. */\n fill?: boolean;\n };\n\nfunction Spinner({\n className,\n size = 'md',\n variant = 'default',\n fill = false,\n 'aria-label': ariaLabel = 'Loading',\n role = 'status',\n ...props\n}: SpinnerProps) {\n const resolvedSize = size ?? 'md';\n const resolvedVariant = variant ?? 'default';\n\n const svg = (\n <svg\n {...props}\n role={role}\n aria-label={ariaLabel}\n data-size={resolvedSize}\n data-variant={resolvedVariant}\n className={cn(spinnerVariants({ size: resolvedSize, variant: resolvedVariant }), className)}\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n >\n {resolvedVariant === 'pulse' ? (\n <>\n <circle className=\"spinner-pulse-ring\" cx=\"12\" cy=\"12\" r=\"7\" />\n <circle className=\"spinner-pulse-core\" cx=\"12\" cy=\"12\" r=\"5\" />\n </>\n ) : (\n <circle className=\"spinner-ring\" cx=\"12\" cy=\"12\" r=\"8.5\" />\n )}\n </svg>\n );\n\n if (fill) {\n return (\n <div data-slot=\"spinner-fill\" className=\"flex h-full items-center-safe justify-center-safe\">\n {svg}\n </div>\n );\n }\n\n return svg;\n}\n\nexport { Spinner };\n"],"names":["cva","jsx","cn","jsxs","Fragment"],"mappings":";;;;;;AAQA,MAAM,eAAA,GAAkBA,UAAI,sCAAA,EAAwC;AAAA,EAClE,QAAA,EAAU;AAAA,IACR,IAAA,EAAM;AAAA,MACJ,EAAA,EAAI,QAAA;AAAA,MACJ,EAAA,EAAI,QAAA;AAAA,MACJ,EAAA,EAAI;AAAA,KACN;AAAA,IACA,OAAA,EAAS;AAAA,MACP,OAAA,EAAS,EAAA;AAAA,MACT,KAAA,EAAO;AAAA;AACT,GACF;AAAA,EACA,eAAA,EAAiB;AAAA,IACf,IAAA,EAAM,IAAA;AAAA,IACN,OAAA,EAAS;AAAA;AAEb,CAAC,CAAA;AAYD,SAAS,OAAA,CAAQ;AAAA,EACf,SAAA;AAAA,EACA,IAAA,GAAO,IAAA;AAAA,EACP,OAAA,GAAU,SAAA;AAAA,EACV,IAAA,GAAO,KAAA;AAAA,EACP,cAAc,SAAA,GAAY,SAAA;AAAA,EAC1B,IAAA,GAAO,QAAA;AAAA,EACP,GAAG;AACL,CAAA,EAAiB;AACf,EAAA,MAAM,eAAe,IAAA,IAAQ,IAAA;AAC7B,EAAA,MAAM,kBAAkB,OAAA,IAAW,SAAA;AAEnC,EAAA,MAAM,GAAA,mBACJC,cAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACE,GAAG,KAAA;AAAA,MACJ,IAAA;AAAA,MACA,YAAA,EAAY,SAAA;AAAA,MACZ,WAAA,EAAW,YAAA;AAAA,MACX,cAAA,EAAc,eAAA;AAAA,MACd,SAAA,EAAWC,WAAA,CAAG,eAAA,CAAgB,EAAE,IAAA,EAAM,cAAc,OAAA,EAAS,eAAA,EAAiB,CAAA,EAAG,SAAS,CAAA;AAAA,MAC1F,KAAA,EAAM,4BAAA;AAAA,MACN,OAAA,EAAQ,WAAA;AAAA,MAEP,QAAA,EAAA,eAAA,KAAoB,0BACnBC,eAAA,CAAAC,mBAAA,EAAA,EACE,QAAA,EAAA;AAAA,wBAAAH,cAAA,CAAC,QAAA,EAAA,EAAO,WAAU,oBAAA,EAAqB,EAAA,EAAG,MAAK,EAAA,EAAG,IAAA,EAAK,GAAE,GAAA,EAAI,CAAA;AAAA,wBAC7DA,cAAA,CAAC,YAAO,SAAA,EAAU,oBAAA,EAAqB,IAAG,IAAA,EAAK,EAAA,EAAG,IAAA,EAAK,CAAA,EAAE,GAAA,EAAI;AAAA,OAAA,EAC/D,CAAA,mBAEAA,cAAA,CAAC,QAAA,EAAA,EAAO,SAAA,EAAU,cAAA,EAAe,IAAG,IAAA,EAAK,EAAA,EAAG,IAAA,EAAK,CAAA,EAAE,KAAA,EAAM;AAAA;AAAA,GAE7D;AAGF,EAAA,IAAI,IAAA,EAAM;AACR,IAAA,sCACG,KAAA,EAAA,EAAI,WAAA,EAAU,cAAA,EAAe,SAAA,EAAU,qDACrC,QAAA,EAAA,GAAA,EACH,CAAA;AAAA,EAEJ;AAEA,EAAA,OAAO,GAAA;AACT;;;;"}
|
|
@@ -6,7 +6,8 @@ import './spinner.css';const spinnerVariants = cva("spinner inline-block text-fo
|
|
|
6
6
|
variants: {
|
|
7
7
|
size: {
|
|
8
8
|
sm: "size-4",
|
|
9
|
-
md: "size-6"
|
|
9
|
+
md: "size-6",
|
|
10
|
+
lg: "size-8"
|
|
10
11
|
},
|
|
11
12
|
variant: {
|
|
12
13
|
default: "",
|
|
@@ -22,13 +23,14 @@ function Spinner({
|
|
|
22
23
|
className,
|
|
23
24
|
size = "md",
|
|
24
25
|
variant = "default",
|
|
26
|
+
fill = false,
|
|
25
27
|
"aria-label": ariaLabel = "Loading",
|
|
26
28
|
role = "status",
|
|
27
29
|
...props
|
|
28
30
|
}) {
|
|
29
31
|
const resolvedSize = size ?? "md";
|
|
30
32
|
const resolvedVariant = variant ?? "default";
|
|
31
|
-
|
|
33
|
+
const svg = /* @__PURE__ */ jsx(
|
|
32
34
|
"svg",
|
|
33
35
|
{
|
|
34
36
|
...props,
|
|
@@ -45,7 +47,11 @@ function Spinner({
|
|
|
45
47
|
] }) : /* @__PURE__ */ jsx("circle", { className: "spinner-ring", cx: "12", cy: "12", r: "8.5" })
|
|
46
48
|
}
|
|
47
49
|
);
|
|
50
|
+
if (fill) {
|
|
51
|
+
return /* @__PURE__ */ jsx("div", { "data-slot": "spinner-fill", className: "flex h-full items-center-safe justify-center-safe", children: svg });
|
|
52
|
+
}
|
|
53
|
+
return svg;
|
|
48
54
|
}
|
|
49
55
|
|
|
50
56
|
export { Spinner as S };
|
|
51
|
-
//# sourceMappingURL=spinner-
|
|
57
|
+
//# sourceMappingURL=spinner-ylbE0TJA.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"spinner-ylbE0TJA.js","sources":["../src/ds/components/Spinner/spinner.tsx"],"sourcesContent":["import { cva } from 'class-variance-authority';\nimport type { VariantProps } from 'class-variance-authority';\nimport type { ComponentPropsWithoutRef } from 'react';\n\nimport { cn } from '@/lib/utils';\n\nimport './spinner.css';\n\nconst spinnerVariants = cva('spinner inline-block text-foreground', {\n variants: {\n size: {\n sm: 'size-4',\n md: 'size-6',\n lg: 'size-8',\n },\n variant: {\n default: '',\n pulse: '',\n },\n },\n defaultVariants: {\n size: 'md',\n variant: 'default',\n },\n});\n\ntype SpinnerVariantsProps = VariantProps<typeof spinnerVariants>;\nexport type SpinnerVariant = NonNullable<SpinnerVariantsProps['variant']>;\nexport type SpinnerSize = NonNullable<SpinnerVariantsProps['size']>;\n\nexport type SpinnerProps = Omit<ComponentPropsWithoutRef<'svg'>, 'color' | 'size' | 'fill'> &\n SpinnerVariantsProps & {\n /** Center the spinner in the full height of its parent — the parent must have a definite height. */\n fill?: boolean;\n };\n\nfunction Spinner({\n className,\n size = 'md',\n variant = 'default',\n fill = false,\n 'aria-label': ariaLabel = 'Loading',\n role = 'status',\n ...props\n}: SpinnerProps) {\n const resolvedSize = size ?? 'md';\n const resolvedVariant = variant ?? 'default';\n\n const svg = (\n <svg\n {...props}\n role={role}\n aria-label={ariaLabel}\n data-size={resolvedSize}\n data-variant={resolvedVariant}\n className={cn(spinnerVariants({ size: resolvedSize, variant: resolvedVariant }), className)}\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n >\n {resolvedVariant === 'pulse' ? (\n <>\n <circle className=\"spinner-pulse-ring\" cx=\"12\" cy=\"12\" r=\"7\" />\n <circle className=\"spinner-pulse-core\" cx=\"12\" cy=\"12\" r=\"5\" />\n </>\n ) : (\n <circle className=\"spinner-ring\" cx=\"12\" cy=\"12\" r=\"8.5\" />\n )}\n </svg>\n );\n\n if (fill) {\n return (\n <div data-slot=\"spinner-fill\" className=\"flex h-full items-center-safe justify-center-safe\">\n {svg}\n </div>\n );\n }\n\n return svg;\n}\n\nexport { Spinner };\n"],"names":[],"mappings":";;;;AAQA,MAAM,eAAA,GAAkB,IAAI,sCAAA,EAAwC;AAAA,EAClE,QAAA,EAAU;AAAA,IACR,IAAA,EAAM;AAAA,MACJ,EAAA,EAAI,QAAA;AAAA,MACJ,EAAA,EAAI,QAAA;AAAA,MACJ,EAAA,EAAI;AAAA,KACN;AAAA,IACA,OAAA,EAAS;AAAA,MACP,OAAA,EAAS,EAAA;AAAA,MACT,KAAA,EAAO;AAAA;AACT,GACF;AAAA,EACA,eAAA,EAAiB;AAAA,IACf,IAAA,EAAM,IAAA;AAAA,IACN,OAAA,EAAS;AAAA;AAEb,CAAC,CAAA;AAYD,SAAS,OAAA,CAAQ;AAAA,EACf,SAAA;AAAA,EACA,IAAA,GAAO,IAAA;AAAA,EACP,OAAA,GAAU,SAAA;AAAA,EACV,IAAA,GAAO,KAAA;AAAA,EACP,cAAc,SAAA,GAAY,SAAA;AAAA,EAC1B,IAAA,GAAO,QAAA;AAAA,EACP,GAAG;AACL,CAAA,EAAiB;AACf,EAAA,MAAM,eAAe,IAAA,IAAQ,IAAA;AAC7B,EAAA,MAAM,kBAAkB,OAAA,IAAW,SAAA;AAEnC,EAAA,MAAM,GAAA,mBACJ,GAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACE,GAAG,KAAA;AAAA,MACJ,IAAA;AAAA,MACA,YAAA,EAAY,SAAA;AAAA,MACZ,WAAA,EAAW,YAAA;AAAA,MACX,cAAA,EAAc,eAAA;AAAA,MACd,SAAA,EAAW,EAAA,CAAG,eAAA,CAAgB,EAAE,IAAA,EAAM,cAAc,OAAA,EAAS,eAAA,EAAiB,CAAA,EAAG,SAAS,CAAA;AAAA,MAC1F,KAAA,EAAM,4BAAA;AAAA,MACN,OAAA,EAAQ,WAAA;AAAA,MAEP,QAAA,EAAA,eAAA,KAAoB,0BACnB,IAAA,CAAA,QAAA,EAAA,EACE,QAAA,EAAA;AAAA,wBAAA,GAAA,CAAC,QAAA,EAAA,EAAO,WAAU,oBAAA,EAAqB,EAAA,EAAG,MAAK,EAAA,EAAG,IAAA,EAAK,GAAE,GAAA,EAAI,CAAA;AAAA,wBAC7D,GAAA,CAAC,YAAO,SAAA,EAAU,oBAAA,EAAqB,IAAG,IAAA,EAAK,EAAA,EAAG,IAAA,EAAK,CAAA,EAAE,GAAA,EAAI;AAAA,OAAA,EAC/D,CAAA,mBAEA,GAAA,CAAC,QAAA,EAAA,EAAO,SAAA,EAAU,cAAA,EAAe,IAAG,IAAA,EAAK,EAAA,EAAG,IAAA,EAAK,CAAA,EAAE,KAAA,EAAM;AAAA;AAAA,GAE7D;AAGF,EAAA,IAAI,IAAA,EAAM;AACR,IAAA,2BACG,KAAA,EAAA,EAAI,WAAA,EAAU,cAAA,EAAe,SAAA,EAAU,qDACrC,QAAA,EAAA,GAAA,EACH,CAAA;AAAA,EAEJ;AAEA,EAAA,OAAO,GAAA;AACT;;;;"}
|
|
@@ -10,7 +10,7 @@ export interface TracesErrorContentProps {
|
|
|
10
10
|
* Renders the appropriate fallback content for a traces-related query error:
|
|
11
11
|
* `<SessionExpired />` for 401, `<PermissionDenied />` for 403, otherwise `<ErrorState />`.
|
|
12
12
|
*
|
|
13
|
-
* The consumer wraps it in whatever layout they want (
|
|
14
|
-
*
|
|
13
|
+
* The consumer wraps it in whatever layout they want (PageLayout for the list page,
|
|
14
|
+
* a centered div for the detail page, etc.) — this component only owns the 3-branch decision.
|
|
15
15
|
*/
|
|
16
16
|
export declare function TracesErrorContent({ error, resource, errorTitle }: TracesErrorContentProps): import("react").JSX.Element;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { TraceSpanView } from '../components/trace-data-panel-view';
|
|
2
2
|
import { SpanTab, TraceDatePreset } from '../index';
|
|
3
|
-
import { EntityOptions, TraceFilterToken, TraceListMode, TraceStatusFilter } from '../trace-filters';
|
|
3
|
+
import { EntityOptions, TraceFilterGroup, TraceFilterToken, TraceListMode, TraceStatusFilter } from '../trace-filters';
|
|
4
4
|
/** Minimal interface compatible with react-router's `setSearchParams`. */
|
|
5
5
|
export type SetURLSearchParamsLike = (next: URLSearchParams | ((prev: URLSearchParams) => URLSearchParams), options?: {
|
|
6
6
|
replace?: boolean;
|
|
@@ -36,6 +36,8 @@ export interface UseTraceUrlStateResult {
|
|
|
36
36
|
selectedEntityOption: EntityOptions | undefined;
|
|
37
37
|
selectedStatus: TraceStatusFilter | undefined;
|
|
38
38
|
filterTokens: TraceFilterToken[];
|
|
39
|
+
/** Root-level advanced (AND/OR) filter groups, read from the `filterGroup` params. */
|
|
40
|
+
filterGroups: TraceFilterGroup[];
|
|
39
41
|
/**
|
|
40
42
|
* Selects a row. In traces mode pass just `traceId` (and optionally a `spanId` for an
|
|
41
43
|
* initial span selection in the panel). In branches mode also pass `anchorSpanId` — the
|
|
@@ -61,7 +63,7 @@ export interface UseTraceUrlStateResult {
|
|
|
61
63
|
handleHighlightSpans: (spanIds: string[]) => void;
|
|
62
64
|
/** Switches the list view between traces and branches. Clears the current selection. */
|
|
63
65
|
handleListModeChange: (mode: TraceListMode) => void;
|
|
64
|
-
handleFilterTokensChange: (nextTokens: TraceFilterToken[]) => void;
|
|
66
|
+
handleFilterTokensChange: (nextTokens: TraceFilterToken[], nextGroups?: TraceFilterGroup[]) => void;
|
|
65
67
|
handleDateChange: (value: Date | undefined, type: 'from' | 'to') => void;
|
|
66
68
|
/** Writes both ends of a custom range in one URL update (two `handleDateChange` calls in the
|
|
67
69
|
* same tick would clobber each other through react-router's closure-bound setter). */
|
|
@@ -69,7 +71,7 @@ export interface UseTraceUrlStateResult {
|
|
|
69
71
|
handleDatePresetChange: (preset: TraceDatePreset) => void;
|
|
70
72
|
handleRemoveAll: () => void;
|
|
71
73
|
/** Lower-level helper used by `handleClear`: writes a token set and clears the trace/span selection. */
|
|
72
|
-
applyFilterTokens: (tokens: TraceFilterToken[]) => void;
|
|
74
|
+
applyFilterTokens: (tokens: TraceFilterToken[], groups?: TraceFilterGroup[]) => void;
|
|
73
75
|
}
|
|
74
76
|
/**
|
|
75
77
|
* Owns all URL-derived state and URL-modifying handlers for the traces page. Routing-agnostic —
|
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
import { EntityType } from '@mastra/core/observability';
|
|
2
2
|
import { ListTracesArgs } from '@mastra/core/storage';
|
|
3
3
|
import { TraceMetadataFilterField } from './hooks/use-trace-metadata-filter-fields';
|
|
4
|
-
import { TraceFilterOperatorId, TraceFilterToken, TraceQueryRelatedScope } from './trace-query-filters';
|
|
4
|
+
import { TraceFilterGroup, TraceFilterOperatorId, TraceFilterToken, TraceQueryRelatedScope } from './trace-query-filters';
|
|
5
5
|
import { TraceDatePreset } from './types';
|
|
6
|
-
import { FilterBarField, FilterBarItem, FilterBarOperator, FilterBarSuggestionsResolver } from '../../ds/components/FilterBar/types';
|
|
6
|
+
import { FilterBarExpression, FilterBarField, FilterBarItem, FilterBarOperator, FilterBarSuggestionsResolver } from '../../ds/components/FilterBar/types';
|
|
7
7
|
import { PropertyFilterToken } from '../../ds/components/PropertyFilter/types';
|
|
8
|
-
export type { TraceFilterOperatorId, TraceFilterToken, TraceQueryRelatedScope } from './trace-query-filters';
|
|
8
|
+
export type { TraceFilterGroup, TraceFilterLogic, TraceFilterNode, TraceFilterOperatorId, TraceFilterToken, TraceQueryRelatedScope, } from './trace-query-filters';
|
|
9
|
+
export { isTraceFilterGroup } from './trace-query-filters';
|
|
9
10
|
type EntityTypeValue = `${EntityType}`;
|
|
10
11
|
export type EntityOptions = {
|
|
11
12
|
label: string;
|
|
@@ -150,6 +151,13 @@ export declare function createTraceFilterBarFields({ availableRootEntityNames, a
|
|
|
150
151
|
* Only the legacy 'Any' sentinel is mapped back to an empty value. */
|
|
151
152
|
export declare function traceTokensToFilterBarItems(tokens: TraceFilterToken[]): FilterBarItem[];
|
|
152
153
|
export declare function filterBarItemsToTraceTokens(items: FilterBarItem[]): TraceFilterToken[];
|
|
154
|
+
/** Expression-mode value for the FilterBar: root tokens as items, then one
|
|
155
|
+
* group node per advanced filter. Ids inside groups are carried as-is. */
|
|
156
|
+
export declare function traceFiltersToFilterBarExpression(tokens: TraceFilterToken[], groups: TraceFilterGroup[]): FilterBarExpression;
|
|
157
|
+
export declare function filterBarExpressionToTraceFilters(expression: FilterBarExpression): {
|
|
158
|
+
tokens: TraceFilterToken[];
|
|
159
|
+
groups: TraceFilterGroup[];
|
|
160
|
+
};
|
|
153
161
|
/**
|
|
154
162
|
* Read filter tokens from URL search params preserving the order in which each
|
|
155
163
|
* filter was first added (URLSearchParams iterates in insertion order). This
|
|
@@ -164,7 +172,14 @@ export declare function getPreservedTraceFilterParams(searchParams: URLSearchPar
|
|
|
164
172
|
* creation order of filters. Handles the generic `filterX` params plus the
|
|
165
173
|
* dedicated synthetic params (rootEntityType, status).
|
|
166
174
|
*/
|
|
167
|
-
export declare function applyTracePropertyFilterTokens(params: URLSearchParams, tokens: TraceFilterToken[]): void;
|
|
175
|
+
export declare function applyTracePropertyFilterTokens(params: URLSearchParams, tokens: TraceFilterToken[], groups?: TraceFilterGroup[]): void;
|
|
176
|
+
/** Root-level advanced filter groups live in a repeatable `filterGroup` param,
|
|
177
|
+
* one compact JSON subtree each. Node ids are part of the payload so the
|
|
178
|
+
* FilterBar keeps chip identity across URL round-trips. */
|
|
179
|
+
export declare const TRACE_FILTER_GROUP_PARAM = "filterGroup";
|
|
180
|
+
export declare const serializeTraceFilterGroup: (group: TraceFilterGroup) => string;
|
|
181
|
+
export declare function getTraceFilterGroups(searchParams: URLSearchParams): TraceFilterGroup[];
|
|
182
|
+
export declare function parseTraceFilterGroupParam(raw: string): TraceFilterGroup | undefined;
|
|
168
183
|
export declare function buildTraceListFilters({ rootEntityType, status, dateFrom, dateTo, tokens, }: {
|
|
169
184
|
rootEntityType?: string;
|
|
170
185
|
status?: TraceStatusFilter;
|
|
@@ -8,7 +8,18 @@ export declare const isTraceFilterOperatorId: (value: string) => value is TraceF
|
|
|
8
8
|
/** A trace filter chip: `operatorId` defaults to `is` (equality / set membership). */
|
|
9
9
|
export type TraceFilterToken = PropertyFilterToken & {
|
|
10
10
|
operatorId?: TraceFilterOperatorId;
|
|
11
|
+
/** Only set for tokens inside a group: a group may hold several tokens on the same field. */
|
|
12
|
+
id?: string;
|
|
11
13
|
};
|
|
14
|
+
export type TraceFilterLogic = 'and' | 'or';
|
|
15
|
+
/** An advanced filter: a nested boolean combination of tokens. */
|
|
16
|
+
export type TraceFilterGroup = {
|
|
17
|
+
id: string;
|
|
18
|
+
logic: TraceFilterLogic;
|
|
19
|
+
nodes: TraceFilterNode[];
|
|
20
|
+
};
|
|
21
|
+
export type TraceFilterNode = TraceFilterToken | TraceFilterGroup;
|
|
22
|
+
export declare const isTraceFilterGroup: (node: TraceFilterNode) => node is TraceFilterGroup;
|
|
12
23
|
/** Fields whose values must be sent as numbers. Non-numeric input is dropped. */
|
|
13
24
|
export declare const TRACE_QUERY_NUMERIC_FIELD_IDS: Set<string>;
|
|
14
25
|
/** Trace-level fields that may be unset. "is not X" on these must also keep traces
|
|
@@ -16,9 +27,10 @@ export declare const TRACE_QUERY_NUMERIC_FIELD_IDS: Set<string>;
|
|
|
16
27
|
export declare const TRACE_QUERY_OPTIONAL_TRACE_FIELD_IDS: Set<string>;
|
|
17
28
|
declare const TRACE_QUERY_RELATED_SCOPES: readonly ["spans", "scores", "feedback"];
|
|
18
29
|
export type TraceQueryRelatedScope = (typeof TRACE_QUERY_RELATED_SCOPES)[number];
|
|
19
|
-
export declare function buildTraceQueryRequest({ rootEntityType, status, dateFrom, dateTo, tokens, now, }: Omit<Parameters<typeof buildTraceListFilters>[0], 'tokens' | 'status'> & {
|
|
30
|
+
export declare function buildTraceQueryRequest({ rootEntityType, status, dateFrom, dateTo, tokens, groups, now, }: Omit<Parameters<typeof buildTraceListFilters>[0], 'tokens' | 'status'> & {
|
|
20
31
|
status?: TraceStatusFilter;
|
|
21
32
|
tokens: TraceFilterToken[];
|
|
33
|
+
groups?: TraceFilterGroup[];
|
|
22
34
|
now: Date;
|
|
23
35
|
}): Pick<QueryTracesInput, 'timeRange' | 'where'>;
|
|
24
36
|
export declare const TRACE_QUERY_DISCOVERY_MAX_RANGE_MS: number;
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { ComponentPropsWithoutRef } from 'react';
|
|
2
|
+
type DivProps = ComponentPropsWithoutRef<'div'>;
|
|
3
|
+
/** One toolbar line: a start group and an end group pushed apart, wrapping on narrow viewports. */
|
|
4
|
+
export declare function ActionRowRoot({ className, ...props }: DivProps): import("react").JSX.Element;
|
|
5
|
+
/** Actions positioned on the left. Grows to fill the line; keeps a floor so the end group wraps under it instead of squeezing it. */
|
|
6
|
+
export declare function ActionRowStart({ className, ...props }: DivProps): import("react").JSX.Element;
|
|
7
|
+
/** Actions positioned on the right. Never shrinks; wraps under the start group when needed. */
|
|
8
|
+
export declare function ActionRowEnd({ className, ...props }: DivProps): import("react").JSX.Element;
|
|
9
|
+
export {};
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { Meta, StoryObj } from '@storybook/react-vite';
|
|
2
|
+
import { ActionRow } from './index';
|
|
3
|
+
declare const meta: Meta<typeof ActionRow>;
|
|
4
|
+
export default meta;
|
|
5
|
+
type Story = StoryObj<typeof ActionRow>;
|
|
6
|
+
export declare const StartOnly: Story;
|
|
7
|
+
export declare const StartAndEnd: Story;
|
|
8
|
+
export declare const EndOnly: Story;
|
|
@@ -36,14 +36,16 @@ export declare const WithText: Story;
|
|
|
36
36
|
* `ButtonsGroup` merger; an interactive clear button would go in an `InputGroupAddon`
|
|
37
37
|
* (`align="inline-end"`) with an `InputGroupButton`.
|
|
38
38
|
*
|
|
39
|
-
* No layout classes on the children (`flex-1`/`min-w-0`/`shrink-0`): the group owns sizing
|
|
40
|
-
*
|
|
41
|
-
*
|
|
42
|
-
*
|
|
39
|
+
* No layout classes on the children (`flex-1`/`min-w-0`/`shrink-0`): the group owns sizing — the
|
|
40
|
+
* InputGroup fills the row and the Select trigger sizes to its content. The group collapses the
|
|
41
|
+
* touching borders into a divider and flattens the inner corners, leaving the outer pill rounded.
|
|
42
|
+
*
|
|
43
|
+
* Both segments sit on the same rung of the size ladder (`md`, the default on both): the group
|
|
44
|
+
* imposes no height of its own, so a segment on a different rung pokes out of the pill.
|
|
43
45
|
*
|
|
44
46
|
* Only one class is passed: `rounded-full` on the `SelectTrigger`, an intentional shape choice
|
|
45
47
|
* so its outer corner matches the InputGroup pill (the trigger's standalone default is
|
|
46
|
-
* `rounded-lg`). The `w-
|
|
48
|
+
* `rounded-lg`). The `w-105` on the group is just the demo container width.
|
|
47
49
|
*/
|
|
48
50
|
export declare const SearchWithDropdown: Story;
|
|
49
51
|
/**
|
|
@@ -1,10 +1,16 @@
|
|
|
1
1
|
import * as React from 'react';
|
|
2
2
|
export type EmptyStateProps = {
|
|
3
|
-
|
|
3
|
+
/** Defaults to a circle-slash icon. Pass `null` to render no icon. */
|
|
4
|
+
iconSlot?: React.ReactNode;
|
|
4
5
|
titleSlot: React.ReactNode;
|
|
5
6
|
descriptionSlot?: React.ReactNode;
|
|
6
7
|
actionSlot?: React.ReactNode;
|
|
7
8
|
className?: string;
|
|
8
9
|
as?: 'h1' | 'h2' | 'h3' | 'h4' | 'h5' | 'h6';
|
|
10
|
+
/**
|
|
11
|
+
* `inline` (default) renders the block in place.
|
|
12
|
+
* `fill` centers it in the full height of its parent — the parent must have a definite height.
|
|
13
|
+
*/
|
|
14
|
+
variant?: 'inline' | 'fill';
|
|
9
15
|
};
|
|
10
|
-
export declare function EmptyState({ iconSlot, titleSlot, descriptionSlot, actionSlot, className, as: HeadingTag, }: EmptyStateProps): React.JSX.Element;
|
|
16
|
+
export declare function EmptyState({ iconSlot, titleSlot, descriptionSlot, actionSlot, className, as: HeadingTag, variant, }: EmptyStateProps): React.JSX.Element;
|
|
@@ -1,6 +1,8 @@
|
|
|
1
|
+
import { EmptyStateProps } from '../EmptyState';
|
|
1
2
|
export type ErrorStateProps = {
|
|
2
3
|
title: string;
|
|
3
4
|
message: string;
|
|
4
5
|
action?: React.ReactNode;
|
|
6
|
+
variant?: EmptyStateProps['variant'];
|
|
5
7
|
};
|
|
6
|
-
export declare function ErrorState({ title, message, action }: ErrorStateProps): import("react").JSX.Element;
|
|
8
|
+
export declare function ErrorState({ title, message, action, variant }: ErrorStateProps): import("react").JSX.Element;
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { FilterBarGroup } from './types';
|
|
2
|
+
export type FilterBarAdvancedChipProps = {
|
|
3
|
+
group: FilterBarGroup;
|
|
4
|
+
className?: string;
|
|
5
|
+
};
|
|
6
|
+
/**
|
|
7
|
+
* A root-level group rendered as one "Advanced filter" chip. Its popover hosts the
|
|
8
|
+
* recursive rule builder; the chip's remove button drops the whole subtree.
|
|
9
|
+
*/
|
|
10
|
+
export declare function FilterBarAdvancedChip({ group, className }: FilterBarAdvancedChipProps): import("react").JSX.Element;
|
|
@@ -1,30 +1,61 @@
|
|
|
1
1
|
import { ReactNode } from 'react';
|
|
2
|
-
import {
|
|
2
|
+
import { FilterBarValueInput } from './filter-bar-tree';
|
|
3
|
+
import { FilterBarCommit, FilterBarDraft, FilterBarExpression, FilterBarField, FilterBarItem, FilterBarLogic, FilterBarOperator, FilterBarSegment, FilterBarValue } from './types';
|
|
4
|
+
/** Default nesting bound for advanced-filter groups (root-level group = depth 1). */
|
|
5
|
+
export declare const DEFAULT_MAX_GROUP_DEPTH = 3;
|
|
6
|
+
/**
|
|
7
|
+
* Marks a focus scope: the bar and each open advanced-filter popover. Arrow navigation
|
|
8
|
+
* never crosses scopes, so ←/→ inside a popover cannot land back in the bar.
|
|
9
|
+
*/
|
|
10
|
+
export declare const FILTER_BAR_SCOPE_ATTR = "data-filter-bar-scope";
|
|
3
11
|
export type FilterBarContextValue = {
|
|
4
12
|
fields: FilterBarField[];
|
|
5
13
|
operators: FilterBarOperator[];
|
|
14
|
+
/** Every rendered item in visual order (groups flattened), including leaving ones. */
|
|
6
15
|
items: FilterBarItem[];
|
|
16
|
+
/** The rendered tree, including the pending commit and leaving nodes. */
|
|
17
|
+
expression: FilterBarExpression;
|
|
18
|
+
/** False when the consumer passed a flat `FilterBarItem[]`: no groups are offered. */
|
|
19
|
+
groupsEnabled: boolean;
|
|
20
|
+
/** Deepest allowed group nesting (root-level group = 1). */
|
|
21
|
+
maxDepth: number;
|
|
7
22
|
/** Filter under construction in the input, once a field is picked; `null` otherwise. */
|
|
8
23
|
draft: FilterBarDraft | null;
|
|
9
24
|
/** Progress or reset the draft. Its id is assigned on first field pick and kept afterwards. */
|
|
10
|
-
setDraft: (next: Omit<FilterBarDraft, 'id' | 'from'> | null) => void;
|
|
25
|
+
setDraft: (next: Omit<FilterBarDraft, 'id' | 'from' | 'groupId'> | null) => void;
|
|
11
26
|
/** Append an item for the draft, reusing its id so the draft chip becomes the item's chip. */
|
|
12
|
-
commitDraft: (next: Required<Omit<FilterBarDraft, 'id' | 'from'>>, value: FilterBarValue) => void;
|
|
27
|
+
commitDraft: (next: Required<Omit<FilterBarDraft, 'id' | 'from' | 'groupId'>>, value: FilterBarValue) => void;
|
|
13
28
|
/** The draft that just became an item, until its chip has glinted or the bar moves on. */
|
|
14
29
|
lastCommit: FilterBarCommit | null;
|
|
15
30
|
settleCommit: () => void;
|
|
16
31
|
updateItem: (id: string, patch: Partial<Omit<FilterBarItem, 'id'>>) => void;
|
|
32
|
+
/** Removes a leaf. Its group stays, even empty, until the popover closes (see `setOpenGroup`). */
|
|
17
33
|
removeItem: (id: string) => void;
|
|
18
|
-
/** Ids of removed items still rendered while their chip plays its exit animation. */
|
|
34
|
+
/** Ids of removed items and groups still rendered while their chip plays its exit animation. */
|
|
19
35
|
leaving: ReadonlySet<string>;
|
|
20
36
|
/** Called by a leaving chip once its exit animation has finished (or when nothing animates). */
|
|
21
37
|
settleRemove: (id: string) => void;
|
|
22
|
-
/** Removes every removable item (chips rendered with `removable={false}` stay). */
|
|
38
|
+
/** Removes every removable item (chips rendered with `removable={false}` stay) and every group left empty. */
|
|
23
39
|
clear: () => void;
|
|
24
40
|
/** Whether at least one item can be removed, i.e. whether Clear has anything to do. */
|
|
25
41
|
hasRemovableItems: boolean;
|
|
26
42
|
/** Called by chips so `clear` and the Clear button know which items are pinned. */
|
|
27
43
|
registerNonRemovable: (itemId: string, nonRemovable: boolean) => void;
|
|
44
|
+
/** Appends an empty group to the root (`undefined`) or inside `parentId`, and points the input at it. */
|
|
45
|
+
addGroup: (parentId: string | undefined, logic: FilterBarLogic) => string;
|
|
46
|
+
/** Removes a group and everything below it. */
|
|
47
|
+
removeGroup: (groupId: string) => void;
|
|
48
|
+
setLogic: (groupId: string, logic: FilterBarLogic) => void;
|
|
49
|
+
/** Nesting level of a group (root-level = 1); 0 when unknown. */
|
|
50
|
+
getGroupDepth: (groupId: string) => number;
|
|
51
|
+
/** Root group whose advanced-filter popover is open. */
|
|
52
|
+
openGroupId: string | null;
|
|
53
|
+
/** Open a root group's popover, or close it with `null` (empty groups are pruned on close). */
|
|
54
|
+
setOpenGroup: (groupId: string | null) => void;
|
|
55
|
+
/** Group the input commits into; `undefined` = root. */
|
|
56
|
+
inputTarget: string | undefined;
|
|
57
|
+
/** Point the input at a group (or back at the root with `undefined`) and focus it. */
|
|
58
|
+
openGroupInput: (groupId: string | undefined) => void;
|
|
28
59
|
getField: (fieldId: string) => FilterBarField | undefined;
|
|
29
60
|
getOperator: (operatorId: string) => FilterBarOperator | undefined;
|
|
30
61
|
/** Operators allowed for a field (`field.operators` or every root operator). */
|
|
@@ -34,7 +65,8 @@ export type FilterBarContextValue = {
|
|
|
34
65
|
/**
|
|
35
66
|
* Focus a segment of the nearest editable chip starting at `fromIndex` and
|
|
36
67
|
* walking in `direction` (read-only chips register no segments and are skipped).
|
|
37
|
-
*
|
|
68
|
+
* Never leaves the focus scope of the currently focused element. Returns false if
|
|
69
|
+
* nothing was focused.
|
|
38
70
|
*/
|
|
39
71
|
focusChip: (fromIndex: number, direction: -1 | 1, segment: FilterBarSegment) => boolean;
|
|
40
72
|
focusInput: () => void;
|
|
@@ -50,10 +82,15 @@ export declare function emptyValueFor(operator: FilterBarOperator | undefined):
|
|
|
50
82
|
export type FilterBarProviderProps = {
|
|
51
83
|
fields: FilterBarField[];
|
|
52
84
|
operators: FilterBarOperator[];
|
|
53
|
-
value:
|
|
54
|
-
|
|
85
|
+
value: FilterBarValueInput;
|
|
86
|
+
/** Receives the same shape as `value` (method syntax so flat-only handlers stay assignable). */
|
|
87
|
+
onValueChange(value: FilterBarValueInput): void;
|
|
88
|
+
/** Derives ids for root-level items only; items inside groups always get a random id
|
|
89
|
+
* because a group may hold several conditions on the same field. */
|
|
55
90
|
createItemId?: (fieldId: string) => string;
|
|
91
|
+
/** Deepest allowed group nesting (root-level group = 1). Defaults to 3. */
|
|
92
|
+
maxDepth?: number;
|
|
56
93
|
ariaLabel: string;
|
|
57
94
|
children: ReactNode;
|
|
58
95
|
};
|
|
59
|
-
export declare function FilterBarProvider({ fields, operators, value, onValueChange, createItemId, ariaLabel, children, }: FilterBarProviderProps): import("react").JSX.Element;
|
|
96
|
+
export declare function FilterBarProvider({ fields, operators, value, onValueChange, createItemId, maxDepth, ariaLabel, children, }: FilterBarProviderProps): import("react").JSX.Element;
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { FilterBarGroup, FilterBarLogic } from './types';
|
|
2
|
+
export type FilterBarLogicToggleProps = {
|
|
3
|
+
groupId: string;
|
|
4
|
+
logic: FilterBarLogic;
|
|
5
|
+
className?: string;
|
|
6
|
+
};
|
|
7
|
+
/** `and` / `or` connector in front of a row; every connector of a group shares its logic. */
|
|
8
|
+
export declare function FilterBarLogicToggle({ groupId, logic, className }: FilterBarLogicToggleProps): import("react").JSX.Element;
|
|
9
|
+
export type FilterBarGroupEditorProps = {
|
|
10
|
+
group: FilterBarGroup;
|
|
11
|
+
/** Nesting level of `group` (root-level group = 1). */
|
|
12
|
+
depth: number;
|
|
13
|
+
/** Drops this group; rendered as a trailing `Clear all` in the footer. */
|
|
14
|
+
onRemove?: () => void;
|
|
15
|
+
removeLabel?: string;
|
|
16
|
+
className?: string;
|
|
17
|
+
};
|
|
18
|
+
/**
|
|
19
|
+
* Recursive rule builder shown in an advanced-filter popover. Rows are laid out as
|
|
20
|
+
* `connector | condition`: the first row reads `where`, the following ones carry the
|
|
21
|
+
* group's `and` / `or` toggle. Nested groups render as bordered cards with their own
|
|
22
|
+
* header (logic switch + remove) and footer. The shared typeahead input renders as the
|
|
23
|
+
* last row of the group it is pointed at.
|
|
24
|
+
*/
|
|
25
|
+
export declare function FilterBarGroupEditor({ group, depth, onRemove, removeLabel, className, }: FilterBarGroupEditorProps): import("react").JSX.Element;
|
|
@@ -2,9 +2,16 @@ export type FilterBarInputProps = {
|
|
|
2
2
|
placeholder?: string;
|
|
3
3
|
className?: string;
|
|
4
4
|
'aria-label'?: string;
|
|
5
|
+
/**
|
|
6
|
+
* Group this instance commits into; omit for the bar's own input. Only the instance whose
|
|
7
|
+
* `groupId` matches the provider's `inputTarget` renders, so a single input is ever mounted.
|
|
8
|
+
*/
|
|
9
|
+
groupId?: string;
|
|
10
|
+
/** Called when Escape is pressed on an empty query inside a group, after the input hands back to the bar. */
|
|
11
|
+
onLeave?: () => void;
|
|
5
12
|
};
|
|
6
13
|
/**
|
|
7
14
|
* Typeahead entry point: type to pick a field, then an operator, then a value.
|
|
8
15
|
* Focus never leaves the input; the popup is driven with the arrow keys.
|
|
9
16
|
*/
|
|
10
|
-
export declare function FilterBarInput(
|
|
17
|
+
export declare function FilterBarInput(props: FilterBarInputProps): import("react").JSX.Element | null;
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { ReactNode } from 'react';
|
|
2
|
+
import { FilterBarOption } from './types';
|
|
2
3
|
export type FilterBarOptionListProps<T> = {
|
|
3
4
|
getKey: (option: T) => string;
|
|
4
5
|
renderOption: (option: T) => ReactNode;
|
|
@@ -10,6 +11,10 @@ export type FilterBarOptionListProps<T> = {
|
|
|
10
11
|
'aria-label': string;
|
|
11
12
|
'aria-multiselectable'?: boolean;
|
|
12
13
|
};
|
|
14
|
+
/** Default value row: the option's leading node (avatar, swatch…) followed by its label. */
|
|
15
|
+
export declare function FilterBarOptionLabel({ option }: {
|
|
16
|
+
option: FilterBarOption;
|
|
17
|
+
}): import("react").JSX.Element;
|
|
13
18
|
/**
|
|
14
19
|
* List/status/empty rows for a `ComboboxPrimitive.Root`, laid out like the DS
|
|
15
20
|
* `Combobox` popup (fluid hover highlight, scroller around the list). Items come
|