@mastra/playground-ui 66.1.0-alpha.2 → 67.0.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/AgentIndicator-Bs2S8AWJ.js +847 -0
- package/dist/AgentIndicator-Bs2S8AWJ.js.map +1 -0
- package/dist/AgentIndicator-to30W73z.cjs +864 -0
- package/dist/AgentIndicator-to30W73z.cjs.map +1 -0
- package/dist/AgentIndicator.css +28 -0
- package/dist/{Arrival-NpBOyV52.js → Arrival-CJFEOXr5.js} +33 -3
- package/dist/Arrival-CJFEOXr5.js.map +1 -0
- package/dist/{Arrival-Dm6Vgn78.cjs → Arrival-Cs1oWjo4.cjs} +43 -1
- package/dist/Arrival-Cs1oWjo4.cjs.map +1 -0
- package/dist/{Comment-CUQvfikb.cjs → Comment-KYUQzeSu.cjs} +2 -2
- package/dist/{Comment-CUQvfikb.cjs.map → Comment-KYUQzeSu.cjs.map} +1 -1
- package/dist/{Comment-CPA3IyPS.js → Comment-VFJq2wRp.js} +2 -2
- package/dist/{Comment-CPA3IyPS.js.map → Comment-VFJq2wRp.js.map} +1 -1
- package/dist/{DataList-Ve3omCXT.js → DataList-2tIlQsLc.js} +95 -3
- package/dist/DataList-2tIlQsLc.js.map +1 -0
- package/dist/{DataList-Cmk08jUV.cjs → DataList-Czwmwyvp.cjs} +93 -1
- package/dist/DataList-Czwmwyvp.cjs.map +1 -0
- package/dist/{DateTimeRangePicker-ByMbLdom.js → DateTimeRangePicker-C_Lie_2P.js} +23 -2
- package/dist/DateTimeRangePicker-C_Lie_2P.js.map +1 -0
- package/dist/{DateTimeRangePicker-DGbH5WOn.cjs → DateTimeRangePicker-HmPOHwAQ.cjs} +23 -2
- package/dist/DateTimeRangePicker-HmPOHwAQ.cjs.map +1 -0
- package/dist/{FilterBar-Dk3QEuT6.js → FilterBar--4oguuVe.js} +4 -4
- package/dist/FilterBar--4oguuVe.js.map +1 -0
- package/dist/{FilterBar-gEvoWDXA.cjs → FilterBar-BUd4f7oi.cjs} +7 -7
- package/dist/FilterBar-BUd4f7oi.cjs.map +1 -0
- package/dist/GrainFill.css +2 -0
- package/dist/{MarkdownRenderer-BgqKfmRm.cjs → MarkdownRenderer-CS6u5drO.cjs} +2 -2
- package/dist/{MarkdownRenderer-BgqKfmRm.cjs.map → MarkdownRenderer-CS6u5drO.cjs.map} +1 -1
- package/dist/{MarkdownRenderer-DKCDXaLy.js → MarkdownRenderer-DME2xKTk.js} +2 -2
- package/dist/{MarkdownRenderer-DKCDXaLy.js.map → MarkdownRenderer-DME2xKTk.js.map} +1 -1
- package/dist/{Message-BF9cpYaw.cjs → Message-DsCNQpou.cjs} +2 -2
- package/dist/{Message-BF9cpYaw.cjs.map → Message-DsCNQpou.cjs.map} +1 -1
- package/dist/{Message-Bkf6Ro9H.js → Message-nVI6tMS3.js} +2 -2
- package/dist/{Message-Bkf6Ro9H.js.map → Message-nVI6tMS3.js.map} +1 -1
- package/dist/{MetricsCard-Dly_H3oX.cjs → MetricsCard-CEB-f2sv.cjs} +91 -109
- package/dist/MetricsCard-CEB-f2sv.cjs.map +1 -0
- package/dist/{MetricsCard-C9GWgT58.js → MetricsCard-M8awJ2B_.js} +91 -109
- package/dist/MetricsCard-M8awJ2B_.js.map +1 -0
- package/dist/{MetricsKpiCard-Uw0nyMgW.cjs → MetricsKpiCard-By_-sagx.cjs} +3 -2
- package/dist/{MetricsKpiCard-Uw0nyMgW.cjs.map → MetricsKpiCard-By_-sagx.cjs.map} +1 -1
- package/dist/{MetricsKpiCard-Idxjl-dn.js → MetricsKpiCard-OHbAElTl.js} +3 -2
- package/dist/{MetricsKpiCard-Idxjl-dn.js.map → MetricsKpiCard-OHbAElTl.js.map} +1 -1
- package/dist/{MetricsLineChart-DKzuRU2q.js → MetricsLineChart-BhHoduO0.js} +21 -39
- package/dist/MetricsLineChart-BhHoduO0.js.map +1 -0
- package/dist/{MetricsLineChart-2m4LVL1N.cjs → MetricsLineChart-CjBm4IXu.cjs} +21 -39
- package/dist/MetricsLineChart-CjBm4IXu.cjs.map +1 -0
- package/dist/{MetricsStackedBarChart-DJB4aByt.js → MetricsStackedBarChart-BRuA6MTE.js} +2 -3
- package/dist/MetricsStackedBarChart-BRuA6MTE.js.map +1 -0
- package/dist/{MetricsStackedBarChart-NATtwA_W.cjs → MetricsStackedBarChart-BdMlKv6G.cjs} +2 -3
- package/dist/MetricsStackedBarChart-BdMlKv6G.cjs.map +1 -0
- package/dist/Notice.css +2 -0
- package/dist/Shimmer.css +7 -0
- package/dist/{activity-ihrl0JtH.js → activity-CM34JyW-.js} +98 -33
- package/dist/activity-CM34JyW-.js.map +1 -0
- package/dist/{activity-QyLJcBKc.cjs → activity-DAK8tj7r.cjs} +108 -31
- package/dist/activity-DAK8tj7r.cjs.map +1 -0
- package/dist/chart-plot.css +15 -0
- package/dist/combobox-8kNAJFlj.cjs +309 -0
- package/dist/combobox-8kNAJFlj.cjs.map +1 -0
- package/dist/{combobox-C-E7_q4j.cjs → combobox-parts-BZVXwbG7.cjs} +7 -300
- package/dist/combobox-parts-BZVXwbG7.cjs.map +1 -0
- package/dist/{combobox-CDS2pBqz.js → combobox-parts-W7KRQUsV.js} +10 -297
- package/dist/combobox-parts-W7KRQUsV.js.map +1 -0
- package/dist/combobox-wFudhN8F.js +302 -0
- package/dist/combobox-wFudhN8F.js.map +1 -0
- package/dist/components/AgentIndicator.cjs.js +5 -0
- package/dist/components/AgentIndicator.d.ts +1 -0
- package/dist/components/AgentIndicator.es.js +1 -0
- package/dist/components/Arrival.cjs.js +3 -1
- package/dist/components/Arrival.es.js +1 -1
- package/dist/components/Combobox.cjs.js +24 -23
- package/dist/components/Combobox.es.js +2 -1
- package/dist/components/Comment.cjs.js +1 -1
- package/dist/components/Comment.es.js +1 -1
- package/dist/components/DataList.cjs.js +2 -2
- package/dist/components/DataList.es.js +2 -2
- package/dist/components/DateTimeRangePicker.cjs.js +1 -1
- package/dist/components/DateTimeRangePicker.es.js +1 -1
- package/dist/components/DiffStat.cjs.js +1 -1
- package/dist/components/DiffStat.es.js +1 -1
- package/dist/components/FilterBar.cjs.js +2 -2
- package/dist/components/FilterBar.es.js +2 -2
- package/dist/components/LogsDataList.cjs.js +1 -1
- package/dist/components/LogsDataList.es.js +1 -1
- package/dist/components/MarkdownRenderer.cjs.js +1 -1
- package/dist/components/MarkdownRenderer.es.js +1 -1
- package/dist/components/Message.cjs.js +1 -1
- package/dist/components/Message.es.js +1 -1
- 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/MetricsStackedBarChart.cjs.js +1 -1
- package/dist/components/MetricsStackedBarChart.es.js +1 -1
- package/dist/components/PropertyFilter.cjs.js +1 -1
- package/dist/components/PropertyFilter.es.js +1 -1
- package/dist/components/SavedViews.cjs.js +27 -69
- package/dist/components/SavedViews.cjs.js.map +1 -1
- package/dist/components/SavedViews.es.js +26 -68
- package/dist/components/SavedViews.es.js.map +1 -1
- package/dist/components/ai/activity.cjs.js +3 -1
- package/dist/components/ai/activity.es.js +1 -1
- package/dist/components/ai/message-reveal.cjs.js +2 -1
- package/dist/components/ai/message-reveal.cjs.js.map +1 -1
- package/dist/components/ai/message-reveal.es.js +2 -1
- package/dist/components/ai/message-reveal.es.js.map +1 -1
- package/dist/components/ai/plan.cjs.js +1 -1
- package/dist/components/ai/plan.es.js +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 +2 -2
- package/dist/components/ai/tool-call.es.js +2 -2
- package/dist/domains/chat/activity/activity-stretch-line.cjs.js +6 -4
- package/dist/domains/chat/activity/activity-stretch-line.cjs.js.map +1 -1
- package/dist/domains/chat/activity/activity-stretch-line.es.js +6 -4
- package/dist/domains/chat/activity/activity-stretch-line.es.js.map +1 -1
- package/dist/domains/chat/activity/components/activity-fold.cjs.js +81 -28
- package/dist/domains/chat/activity/components/activity-fold.cjs.js.map +1 -1
- package/dist/domains/chat/activity/components/activity-fold.es.js +82 -29
- package/dist/domains/chat/activity/components/activity-fold.es.js.map +1 -1
- package/dist/domains/chat/activity/components/activity-timed-trigger.cjs.js +1 -1
- package/dist/domains/chat/activity/components/activity-timed-trigger.es.js +1 -1
- package/dist/domains/chat/activity/components/calls-panel.cjs.js +1 -1
- package/dist/domains/chat/activity/components/calls-panel.es.js +1 -1
- package/dist/domains/chat/activity/components/stretch-content.cjs.js +1 -1
- package/dist/domains/chat/activity/components/stretch-content.es.js +1 -1
- package/dist/domains/chat/activity/components/stretch-thought.cjs.js +1 -1
- package/dist/domains/chat/activity/components/stretch-thought.es.js +1 -1
- package/dist/domains/chat/activity/components/use-fading-edge.cjs.js +26 -0
- package/dist/domains/chat/activity/components/use-fading-edge.cjs.js.map +1 -0
- package/dist/domains/chat/activity/components/use-fading-edge.d.ts +1 -0
- package/dist/domains/chat/activity/components/use-fading-edge.es.js +25 -0
- package/dist/domains/chat/activity/components/use-fading-edge.es.js.map +1 -0
- package/dist/domains/chat/activity/components/use-rolling-words.cjs.js +123 -0
- package/dist/domains/chat/activity/components/use-rolling-words.cjs.js.map +1 -0
- package/dist/domains/chat/activity/components/use-rolling-words.d.ts +1 -0
- package/dist/domains/chat/activity/components/use-rolling-words.es.js +122 -0
- package/dist/domains/chat/activity/components/use-rolling-words.es.js.map +1 -0
- package/dist/domains/chat/activity/model/activity-segments.cjs.js +1 -1
- package/dist/domains/chat/activity/model/activity-segments.es.js +1 -1
- package/dist/domains/chat/activity/model/activity-words.cjs.js +16 -6
- package/dist/domains/chat/activity/model/activity-words.cjs.js.map +1 -1
- package/dist/domains/chat/activity/model/activity-words.es.js +15 -7
- package/dist/domains/chat/activity/model/activity-words.es.js.map +1 -1
- package/dist/domains/chat/activity.cjs.js +3 -0
- package/dist/domains/chat/activity.es.js +2 -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/messages/assistant-message-actions.cjs.js +1 -1
- package/dist/domains/chat/messages/assistant-message-actions.es.js +1 -1
- package/dist/domains/chat/messages/message-row.cjs.js +4 -4
- package/dist/domains/chat/messages/message-row.es.js +4 -4
- 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-content.cjs.js +1 -1
- package/dist/domains/chat/messages/reasoning-content.es.js +1 -1
- package/dist/domains/chat/messages/renderers/message-text.cjs.js +1 -1
- package/dist/domains/chat/messages/renderers/message-text.es.js +1 -1
- package/dist/domains/chat/messages/renderers/reasoning-part-renderer.cjs.js +1 -1
- package/dist/domains/chat/messages/renderers/reasoning-part-renderer.es.js +1 -1
- package/dist/domains/chat/messages/renderers/tool-part.cjs.js +18 -0
- package/dist/domains/chat/messages/renderers/tool-part.cjs.js.map +1 -1
- package/dist/domains/chat/messages/renderers/tool-part.es.js +18 -0
- package/dist/domains/chat/messages/renderers/tool-part.es.js.map +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/skill-message.cjs.js +10 -7
- package/dist/domains/chat/messages/skill-message.cjs.js.map +1 -1
- package/dist/domains/chat/messages/skill-message.es.js +10 -7
- package/dist/domains/chat/messages/skill-message.es.js.map +1 -1
- package/dist/domains/chat/messages/system-reminder-badge.cjs.js +1 -1
- package/dist/domains/chat/messages/system-reminder-badge.es.js +1 -1
- package/dist/domains/chat/tools/badges/agent-badge-wrapper.cjs.js +1 -1
- package/dist/domains/chat/tools/badges/agent-badge-wrapper.es.js +1 -1
- package/dist/domains/chat/tools/badges/agent-badge.cjs.js +1 -1
- package/dist/domains/chat/tools/badges/agent-badge.es.js +1 -1
- package/dist/domains/chat/tools/badges/file-tree-badge.cjs.js +2 -2
- package/dist/domains/chat/tools/badges/file-tree-badge.es.js +2 -2
- package/dist/domains/chat/tools/badges/mcp-task-chip.cjs.js +111 -0
- package/dist/domains/chat/tools/badges/mcp-task-chip.cjs.js.map +1 -0
- package/dist/domains/chat/tools/badges/mcp-task-chip.d.ts +1 -0
- package/dist/domains/chat/tools/badges/mcp-task-chip.es.js +109 -0
- package/dist/domains/chat/tools/badges/mcp-task-chip.es.js.map +1 -0
- package/dist/domains/chat/tools/badges/observation-marker-badge.cjs.js +8 -6
- 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 +9 -7
- package/dist/domains/chat/tools/badges/observation-marker-badge.es.js.map +1 -1
- package/dist/domains/chat/tools/badges/observation-marker-details.cjs.js +2 -3
- package/dist/domains/chat/tools/badges/observation-marker-details.cjs.js.map +1 -1
- package/dist/domains/chat/tools/badges/observation-marker-details.es.js +2 -3
- package/dist/domains/chat/tools/badges/observation-marker-details.es.js.map +1 -1
- package/dist/domains/chat/tools/badges/observation-renderer.cjs.js +1 -1
- package/dist/domains/chat/tools/badges/observation-renderer.es.js +1 -1
- package/dist/domains/chat/tools/badges/sandbox-execution-badge.cjs.js +2 -2
- package/dist/domains/chat/tools/badges/sandbox-execution-badge.es.js +2 -2
- package/dist/domains/chat/tools/badges/tool-approval-badge.cjs.js +1 -1
- package/dist/domains/chat/tools/badges/tool-approval-badge.es.js +1 -1
- package/dist/domains/chat/tools/badges/tool-badge.cjs.js +10 -4
- package/dist/domains/chat/tools/badges/tool-badge.cjs.js.map +1 -1
- package/dist/domains/chat/tools/badges/tool-badge.es.js +10 -4
- package/dist/domains/chat/tools/badges/tool-badge.es.js.map +1 -1
- package/dist/domains/chat/tools/badges/use-mcp-task-progress.cjs.js +51 -0
- package/dist/domains/chat/tools/badges/use-mcp-task-progress.cjs.js.map +1 -0
- package/dist/domains/chat/tools/badges/use-mcp-task-progress.d.ts +1 -0
- package/dist/domains/chat/tools/badges/use-mcp-task-progress.es.js +49 -0
- package/dist/domains/chat/tools/badges/use-mcp-task-progress.es.js.map +1 -0
- package/dist/domains/chat/tools/badges/workflow-badge.cjs.js +1 -1
- package/dist/domains/chat/tools/badges/workflow-badge.es.js +1 -1
- package/dist/domains/chat/tools/tool-card-kind.cjs.js +1 -1
- package/dist/domains/chat/tools/tool-card-kind.es.js +1 -1
- package/dist/domains/chat/tools/tool-card.cjs.js +1 -1
- package/dist/domains/chat/tools/tool-card.es.js +1 -1
- package/dist/domains/chat/tools/tool-groups.cjs.js +1 -1
- package/dist/domains/chat/tools/tool-groups.es.js +1 -1
- package/dist/domains/dashboards/components/dashboard-grid.cjs.js +44 -0
- package/dist/domains/dashboards/components/dashboard-grid.cjs.js.map +1 -0
- package/dist/domains/dashboards/components/dashboard-grid.d.ts +1 -0
- package/dist/domains/dashboards/components/dashboard-grid.es.js +41 -0
- package/dist/domains/dashboards/components/dashboard-grid.es.js.map +1 -0
- package/dist/domains/dashboards/components/dashboard-renderer.cjs.js +72 -0
- package/dist/domains/dashboards/components/dashboard-renderer.cjs.js.map +1 -0
- package/dist/domains/dashboards/components/dashboard-renderer.d.ts +1 -0
- package/dist/domains/dashboards/components/dashboard-renderer.es.js +71 -0
- package/dist/domains/dashboards/components/dashboard-renderer.es.js.map +1 -0
- package/dist/domains/dashboards/components/view-gate.cjs.js +55 -0
- package/dist/domains/dashboards/components/view-gate.cjs.js.map +1 -0
- package/dist/domains/dashboards/components/view-gate.d.ts +1 -0
- package/dist/domains/dashboards/components/view-gate.es.js +54 -0
- package/dist/domains/dashboards/components/view-gate.es.js.map +1 -0
- package/dist/domains/dashboards/components/widget-chrome.cjs.js +16 -0
- package/dist/domains/dashboards/components/widget-chrome.cjs.js.map +1 -0
- package/dist/domains/dashboards/components/widget-chrome.d.ts +1 -0
- package/dist/domains/dashboards/components/widget-chrome.es.js +15 -0
- package/dist/domains/dashboards/components/widget-chrome.es.js.map +1 -0
- package/dist/domains/dashboards/components/widget-controls.cjs.js +21 -0
- package/dist/domains/dashboards/components/widget-controls.cjs.js.map +1 -0
- package/dist/domains/dashboards/components/widget-controls.d.ts +1 -0
- package/dist/domains/dashboards/components/widget-controls.es.js +20 -0
- package/dist/domains/dashboards/components/widget-controls.es.js.map +1 -0
- package/dist/domains/dashboards/components/widget-error.cjs.js +18 -0
- package/dist/domains/dashboards/components/widget-error.cjs.js.map +1 -0
- package/dist/domains/dashboards/components/widget-error.d.ts +1 -0
- package/dist/domains/dashboards/components/widget-error.es.js +17 -0
- package/dist/domains/dashboards/components/widget-error.es.js.map +1 -0
- package/dist/domains/dashboards/hooks/use-dashboard-requests.cjs.js +47 -0
- package/dist/domains/dashboards/hooks/use-dashboard-requests.cjs.js.map +1 -0
- package/dist/domains/dashboards/hooks/use-dashboard-requests.d.ts +1 -0
- package/dist/domains/dashboards/hooks/use-dashboard-requests.es.js +46 -0
- package/dist/domains/dashboards/hooks/use-dashboard-requests.es.js.map +1 -0
- package/dist/domains/dashboards/hooks/use-scorers.cjs.js +41 -0
- package/dist/domains/dashboards/hooks/use-scorers.cjs.js.map +1 -0
- package/dist/domains/dashboards/hooks/use-scorers.d.ts +1 -0
- package/dist/domains/dashboards/hooks/use-scorers.es.js +40 -0
- package/dist/domains/dashboards/hooks/use-scorers.es.js.map +1 -0
- package/dist/domains/dashboards/hooks/use-widget-views.cjs.js +35 -0
- package/dist/domains/dashboards/hooks/use-widget-views.cjs.js.map +1 -0
- package/dist/domains/dashboards/hooks/use-widget-views.d.ts +1 -0
- package/dist/domains/dashboards/hooks/use-widget-views.es.js +32 -0
- package/dist/domains/dashboards/hooks/use-widget-views.es.js.map +1 -0
- package/dist/domains/dashboards/kinds/kpis/kpis-widget.cjs.js +63 -0
- package/dist/domains/dashboards/kinds/kpis/kpis-widget.cjs.js.map +1 -0
- package/dist/domains/dashboards/kinds/kpis/kpis-widget.d.ts +1 -0
- package/dist/domains/dashboards/kinds/kpis/kpis-widget.es.js +62 -0
- package/dist/domains/dashboards/kinds/kpis/kpis-widget.es.js.map +1 -0
- package/dist/domains/dashboards/kinds/kpis/options.cjs.js +72 -0
- package/dist/domains/dashboards/kinds/kpis/options.cjs.js.map +1 -0
- package/dist/domains/dashboards/kinds/kpis/options.d.ts +1 -0
- package/dist/domains/dashboards/kinds/kpis/options.es.js +69 -0
- package/dist/domains/dashboards/kinds/kpis/options.es.js.map +1 -0
- package/dist/domains/dashboards/kinds/kpis.cjs.js +17 -0
- package/dist/domains/dashboards/kinds/kpis.cjs.js.map +1 -0
- package/dist/domains/dashboards/kinds/kpis.d.ts +1 -0
- package/dist/domains/dashboards/kinds/kpis.es.js +14 -0
- package/dist/domains/dashboards/kinds/kpis.es.js.map +1 -0
- package/dist/domains/dashboards/kinds/scores/options.cjs.js +30 -0
- package/dist/domains/dashboards/kinds/scores/options.cjs.js.map +1 -0
- package/dist/domains/dashboards/kinds/scores/options.d.ts +1 -0
- package/dist/domains/dashboards/kinds/scores/options.es.js +28 -0
- package/dist/domains/dashboards/kinds/scores/options.es.js.map +1 -0
- package/dist/domains/dashboards/kinds/scores/scores-widget.cjs.js +91 -0
- package/dist/domains/dashboards/kinds/scores/scores-widget.cjs.js.map +1 -0
- package/dist/domains/dashboards/kinds/scores/scores-widget.d.ts +1 -0
- package/dist/domains/dashboards/kinds/scores/scores-widget.es.js +90 -0
- package/dist/domains/dashboards/kinds/scores/scores-widget.es.js.map +1 -0
- package/dist/domains/dashboards/kinds/scores.cjs.js +16 -0
- package/dist/domains/dashboards/kinds/scores.cjs.js.map +1 -0
- package/dist/domains/dashboards/kinds/scores.d.ts +1 -0
- package/dist/domains/dashboards/kinds/scores.es.js +14 -0
- package/dist/domains/dashboards/kinds/scores.es.js.map +1 -0
- package/dist/domains/dashboards/kinds/table/table-cells.cjs.js +67 -0
- package/dist/domains/dashboards/kinds/table/table-cells.cjs.js.map +1 -0
- package/dist/domains/dashboards/kinds/table/table-cells.d.ts +1 -0
- package/dist/domains/dashboards/kinds/table/table-cells.es.js +63 -0
- package/dist/domains/dashboards/kinds/table/table-cells.es.js.map +1 -0
- package/dist/domains/dashboards/kinds/table/table-columns.cjs.js +72 -0
- package/dist/domains/dashboards/kinds/table/table-columns.cjs.js.map +1 -0
- package/dist/domains/dashboards/kinds/table/table-columns.d.ts +1 -0
- package/dist/domains/dashboards/kinds/table/table-columns.es.js +71 -0
- package/dist/domains/dashboards/kinds/table/table-columns.es.js.map +1 -0
- package/dist/domains/dashboards/kinds/table/table-frame.cjs.js +16 -0
- package/dist/domains/dashboards/kinds/table/table-frame.cjs.js.map +1 -0
- package/dist/domains/dashboards/kinds/table/table-frame.d.ts +1 -0
- package/dist/domains/dashboards/kinds/table/table-frame.es.js +15 -0
- package/dist/domains/dashboards/kinds/table/table-frame.es.js.map +1 -0
- package/dist/domains/dashboards/kinds/table/table-tabs.cjs.js +55 -0
- package/dist/domains/dashboards/kinds/table/table-tabs.cjs.js.map +1 -0
- package/dist/domains/dashboards/kinds/table/table-tabs.d.ts +1 -0
- package/dist/domains/dashboards/kinds/table/table-tabs.es.js +54 -0
- package/dist/domains/dashboards/kinds/table/table-tabs.es.js.map +1 -0
- package/dist/domains/dashboards/kinds/table/table-view.cjs.js +80 -0
- package/dist/domains/dashboards/kinds/table/table-view.cjs.js.map +1 -0
- package/dist/domains/dashboards/kinds/table/table-view.d.ts +1 -0
- package/dist/domains/dashboards/kinds/table/table-view.es.js +79 -0
- package/dist/domains/dashboards/kinds/table/table-view.es.js.map +1 -0
- package/dist/domains/dashboards/kinds/table/table-widget.cjs.js +30 -0
- package/dist/domains/dashboards/kinds/table/table-widget.cjs.js.map +1 -0
- package/dist/domains/dashboards/kinds/table/table-widget.d.ts +1 -0
- package/dist/domains/dashboards/kinds/table/table-widget.es.js +29 -0
- package/dist/domains/dashboards/kinds/table/table-widget.es.js.map +1 -0
- package/dist/domains/dashboards/kinds/table.cjs.js +17 -0
- package/dist/domains/dashboards/kinds/table.cjs.js.map +1 -0
- package/dist/domains/dashboards/kinds/table.d.ts +1 -0
- package/dist/domains/dashboards/kinds/table.es.js +14 -0
- package/dist/domains/dashboards/kinds/table.es.js.map +1 -0
- package/dist/domains/dashboards/kinds/timeseries/timeseries-widget.cjs.js +115 -0
- package/dist/domains/dashboards/kinds/timeseries/timeseries-widget.cjs.js.map +1 -0
- package/dist/domains/dashboards/kinds/timeseries/timeseries-widget.d.ts +1 -0
- package/dist/domains/dashboards/kinds/timeseries/timeseries-widget.es.js +114 -0
- package/dist/domains/dashboards/kinds/timeseries/timeseries-widget.es.js.map +1 -0
- package/dist/domains/dashboards/kinds/timeseries.cjs.js +15 -0
- package/dist/domains/dashboards/kinds/timeseries.cjs.js.map +1 -0
- package/dist/domains/dashboards/kinds/timeseries.d.ts +1 -0
- package/dist/domains/dashboards/kinds/timeseries.es.js +14 -0
- package/dist/domains/dashboards/kinds/timeseries.es.js.map +1 -0
- package/dist/domains/dashboards/kinds.cjs.js +20 -0
- package/dist/domains/dashboards/kinds.cjs.js.map +1 -0
- package/dist/domains/dashboards/kinds.d.ts +1 -0
- package/dist/domains/dashboards/kinds.es.js +15 -0
- package/dist/domains/dashboards/kinds.es.js.map +1 -0
- package/dist/domains/dashboards/lib/answers.cjs.js +42 -0
- package/dist/domains/dashboards/lib/answers.cjs.js.map +1 -0
- package/dist/domains/dashboards/lib/answers.d.ts +1 -0
- package/dist/domains/dashboards/lib/answers.es.js +37 -0
- package/dist/domains/dashboards/lib/answers.es.js.map +1 -0
- package/dist/domains/dashboards/lib/chrome.cjs.js +41 -0
- package/dist/domains/dashboards/lib/chrome.cjs.js.map +1 -0
- package/dist/domains/dashboards/lib/chrome.d.ts +1 -0
- package/dist/domains/dashboards/lib/chrome.es.js +37 -0
- package/dist/domains/dashboards/lib/chrome.es.js.map +1 -0
- package/dist/domains/dashboards/lib/definition.cjs.js +59 -0
- package/dist/domains/dashboards/lib/definition.cjs.js.map +1 -0
- package/dist/domains/dashboards/lib/definition.d.ts +1 -0
- package/dist/domains/dashboards/lib/definition.es.js +55 -0
- package/dist/domains/dashboards/lib/definition.es.js.map +1 -0
- package/dist/domains/dashboards/lib/filters.cjs.js +44 -0
- package/dist/domains/dashboards/lib/filters.cjs.js.map +1 -0
- package/dist/domains/dashboards/lib/filters.d.ts +1 -0
- package/dist/domains/dashboards/lib/filters.es.js +43 -0
- package/dist/domains/dashboards/lib/filters.es.js.map +1 -0
- package/dist/domains/dashboards/lib/format.cjs.js +32 -0
- package/dist/domains/dashboards/lib/format.cjs.js.map +1 -0
- package/dist/domains/dashboards/lib/format.d.ts +1 -0
- package/dist/domains/dashboards/lib/format.es.js +30 -0
- package/dist/domains/dashboards/lib/format.es.js.map +1 -0
- package/dist/domains/dashboards/lib/prepare-widget.cjs.js +77 -0
- package/dist/domains/dashboards/lib/prepare-widget.cjs.js.map +1 -0
- package/dist/domains/dashboards/lib/prepare-widget.d.ts +1 -0
- package/dist/domains/dashboards/lib/prepare-widget.es.js +75 -0
- package/dist/domains/dashboards/lib/prepare-widget.es.js.map +1 -0
- package/dist/domains/dashboards/lib/requests.cjs.js +279 -0
- package/dist/domains/dashboards/lib/requests.cjs.js.map +1 -0
- package/dist/domains/dashboards/lib/requests.d.ts +1 -0
- package/dist/domains/dashboards/lib/requests.es.js +273 -0
- package/dist/domains/dashboards/lib/requests.es.js.map +1 -0
- package/dist/domains/dashboards/lib/scores.cjs.js +58 -0
- package/dist/domains/dashboards/lib/scores.cjs.js.map +1 -0
- package/dist/domains/dashboards/lib/scores.d.ts +1 -0
- package/dist/domains/dashboards/lib/scores.es.js +53 -0
- package/dist/domains/dashboards/lib/scores.es.js.map +1 -0
- package/dist/domains/dashboards/lib/table.cjs.js +408 -0
- package/dist/domains/dashboards/lib/table.cjs.js.map +1 -0
- package/dist/domains/dashboards/lib/table.d.ts +1 -0
- package/dist/domains/dashboards/lib/table.es.js +388 -0
- package/dist/domains/dashboards/lib/table.es.js.map +1 -0
- package/dist/domains/dashboards/lib/timeseries.cjs.js +192 -0
- package/dist/domains/dashboards/lib/timeseries.cjs.js.map +1 -0
- package/dist/domains/dashboards/lib/timeseries.d.ts +1 -0
- package/dist/domains/dashboards/lib/timeseries.es.js +188 -0
- package/dist/domains/dashboards/lib/timeseries.es.js.map +1 -0
- package/dist/domains/dashboards/lib/values.cjs.js +155 -0
- package/dist/domains/dashboards/lib/values.cjs.js.map +1 -0
- package/dist/domains/dashboards/lib/values.d.ts +1 -0
- package/dist/domains/dashboards/lib/values.es.js +142 -0
- package/dist/domains/dashboards/lib/values.es.js.map +1 -0
- package/dist/domains/dashboards/metrics-dashboard.cjs.js +737 -0
- package/dist/domains/dashboards/metrics-dashboard.cjs.js.map +1 -0
- package/dist/domains/dashboards/metrics-dashboard.d.ts +1 -0
- package/dist/domains/dashboards/metrics-dashboard.es.js +736 -0
- package/dist/domains/dashboards/metrics-dashboard.es.js.map +1 -0
- package/dist/domains/dashboards/widget-kind.cjs.js +7 -0
- package/dist/domains/dashboards/widget-kind.cjs.js.map +1 -0
- package/dist/domains/dashboards/widget-kind.d.ts +1 -0
- package/dist/domains/dashboards/widget-kind.es.js +6 -0
- package/dist/domains/dashboards/widget-kind.es.js.map +1 -0
- package/dist/domains/dashboards.cjs.js +39 -0
- package/dist/domains/dashboards.d.ts +1 -0
- package/dist/domains/dashboards.es.js +18 -0
- package/dist/domains/logs/components/logs-list-view.cjs.js +1 -1
- package/dist/domains/logs/components/logs-list-view.es.js +1 -1
- package/dist/domains/logs/components/logs-saved-views.cjs.js +14 -0
- package/dist/domains/logs/components/logs-saved-views.cjs.js.map +1 -0
- package/dist/domains/logs/components/logs-saved-views.d.ts +1 -0
- package/dist/domains/logs/components/logs-saved-views.es.js +13 -0
- package/dist/domains/logs/components/logs-saved-views.es.js.map +1 -0
- package/dist/domains/logs/components.cjs.js +2 -0
- package/dist/domains/logs/components.es.js +2 -1
- package/dist/domains/logs/hooks/use-logs-url-state.cjs.js +1 -1
- package/dist/domains/logs/hooks/use-logs-url-state.cjs.js.map +1 -1
- package/dist/domains/logs/hooks/use-logs-url-state.es.js +2 -2
- package/dist/domains/logs/hooks/use-logs-url-state.es.js.map +1 -1
- package/dist/domains/logs/log-filters.cjs.js +11 -0
- package/dist/domains/logs/log-filters.cjs.js.map +1 -1
- package/dist/domains/logs/log-filters.es.js +9 -1
- package/dist/domains/logs/log-filters.es.js.map +1 -1
- package/dist/domains/logs.cjs.js +6 -1
- package/dist/domains/logs.es.js +3 -2
- package/dist/domains/metrics/components/agent-runs-card.cjs.js +38 -15
- package/dist/domains/metrics/components/agent-runs-card.cjs.js.map +1 -1
- package/dist/domains/metrics/components/agent-runs-card.es.js +38 -15
- package/dist/domains/metrics/components/agent-runs-card.es.js.map +1 -1
- package/dist/domains/metrics/components/breakdown/breakdown-change-cell.cjs.js +4 -11
- package/dist/domains/metrics/components/breakdown/breakdown-change-cell.cjs.js.map +1 -1
- package/dist/domains/metrics/components/breakdown/breakdown-change-cell.es.js +4 -11
- package/dist/domains/metrics/components/breakdown/breakdown-change-cell.es.js.map +1 -1
- package/dist/domains/metrics/components/breakdown/breakdown-cost-cell.cjs.js +2 -4
- package/dist/domains/metrics/components/breakdown/breakdown-cost-cell.cjs.js.map +1 -1
- package/dist/domains/metrics/components/breakdown/breakdown-cost-cell.es.js +2 -4
- package/dist/domains/metrics/components/breakdown/breakdown-cost-cell.es.js.map +1 -1
- package/dist/domains/metrics/components/breakdown/breakdown-entity-tab.cjs.js +1 -1
- package/dist/domains/metrics/components/breakdown/breakdown-entity-tab.es.js +1 -1
- package/dist/domains/metrics/components/breakdown/breakdown-frame.cjs.js +16 -27
- package/dist/domains/metrics/components/breakdown/breakdown-frame.cjs.js.map +1 -1
- package/dist/domains/metrics/components/breakdown/breakdown-frame.es.js +16 -27
- package/dist/domains/metrics/components/breakdown/breakdown-frame.es.js.map +1 -1
- package/dist/domains/metrics/components/breakdown/breakdown-models-tab.cjs.js +1 -1
- package/dist/domains/metrics/components/breakdown/breakdown-models-tab.es.js +1 -1
- package/dist/domains/metrics/components/breakdown/breakdown-name.cjs.js +22 -0
- package/dist/domains/metrics/components/breakdown/breakdown-name.cjs.js.map +1 -0
- package/dist/domains/metrics/components/breakdown/breakdown-name.d.ts +1 -0
- package/dist/domains/metrics/components/breakdown/breakdown-name.es.js +21 -0
- package/dist/domains/metrics/components/breakdown/breakdown-name.es.js.map +1 -0
- package/dist/domains/metrics/components/breakdown/breakdown-not-priced.cjs.js +13 -0
- package/dist/domains/metrics/components/breakdown/breakdown-not-priced.cjs.js.map +1 -0
- package/dist/domains/metrics/components/breakdown/breakdown-not-priced.d.ts +1 -0
- package/dist/domains/metrics/components/breakdown/breakdown-not-priced.es.js +12 -0
- package/dist/domains/metrics/components/breakdown/breakdown-not-priced.es.js.map +1 -0
- package/dist/domains/metrics/components/breakdown/breakdown-projects-first.cjs.js +1 -1
- package/dist/domains/metrics/components/breakdown/breakdown-projects-first.es.js +1 -1
- package/dist/domains/metrics/components/breakdown/breakdown-row-mark.cjs.js +26 -13
- package/dist/domains/metrics/components/breakdown/breakdown-row-mark.cjs.js.map +1 -1
- package/dist/domains/metrics/components/breakdown/breakdown-row-mark.es.js +25 -14
- package/dist/domains/metrics/components/breakdown/breakdown-row-mark.es.js.map +1 -1
- package/dist/domains/metrics/components/breakdown/breakdown-row-name.cjs.js +10 -13
- package/dist/domains/metrics/components/breakdown/breakdown-row-name.cjs.js.map +1 -1
- package/dist/domains/metrics/components/breakdown/breakdown-row-name.es.js +11 -14
- package/dist/domains/metrics/components/breakdown/breakdown-row-name.es.js.map +1 -1
- package/dist/domains/metrics/components/breakdown/breakdown-tab-body.cjs.js +1 -1
- package/dist/domains/metrics/components/breakdown/breakdown-tab-body.es.js +1 -1
- package/dist/domains/metrics/components/breakdown/breakdown-table.cjs.js +5 -5
- package/dist/domains/metrics/components/breakdown/breakdown-table.es.js +5 -5
- package/dist/domains/metrics/components/breakdown/breakdown-trace-tab.cjs.js +1 -1
- package/dist/domains/metrics/components/breakdown/breakdown-trace-tab.es.js +1 -1
- package/dist/domains/metrics/components/breakdown/breakdown-trend-text.cjs.js +25 -0
- package/dist/domains/metrics/components/breakdown/breakdown-trend-text.cjs.js.map +1 -0
- package/dist/domains/metrics/components/breakdown/breakdown-trend-text.d.ts +1 -0
- package/dist/domains/metrics/components/breakdown/breakdown-trend-text.es.js +24 -0
- package/dist/domains/metrics/components/breakdown/breakdown-trend-text.es.js.map +1 -0
- package/dist/domains/metrics/components/breakdown-card.cjs.js +3 -3
- package/dist/domains/metrics/components/breakdown-card.es.js +3 -3
- package/dist/domains/metrics/components/card-action-buttons.cjs.js +43 -3
- package/dist/domains/metrics/components/card-action-buttons.cjs.js.map +1 -1
- package/dist/domains/metrics/components/card-action-buttons.es.js +42 -5
- package/dist/domains/metrics/components/card-action-buttons.es.js.map +1 -1
- package/dist/domains/metrics/components/chart-area.cjs.js +1 -1
- package/dist/domains/metrics/components/chart-area.es.js +1 -1
- package/dist/domains/metrics/components/chart-card-error.cjs.js +1 -1
- package/dist/domains/metrics/components/chart-card-error.es.js +1 -1
- package/dist/domains/metrics/components/chart-card.cjs.js +39 -38
- package/dist/domains/metrics/components/chart-card.cjs.js.map +1 -1
- package/dist/domains/metrics/components/chart-card.es.js +39 -38
- package/dist/domains/metrics/components/chart-card.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/distinct-ids/distinct-ids-chart.cjs.js +15 -16
- package/dist/domains/metrics/components/distinct-ids/distinct-ids-chart.cjs.js.map +1 -1
- package/dist/domains/metrics/components/distinct-ids/distinct-ids-chart.es.js +16 -16
- package/dist/domains/metrics/components/distinct-ids/distinct-ids-chart.es.js.map +1 -1
- package/dist/domains/metrics/components/distinct-ids-card.cjs.js +0 -1
- package/dist/domains/metrics/components/distinct-ids-card.cjs.js.map +1 -1
- package/dist/domains/metrics/components/distinct-ids-card.es.js +1 -2
- package/dist/domains/metrics/components/distinct-ids-card.es.js.map +1 -1
- package/dist/domains/metrics/components/failure-rate-card.cjs.js +11 -14
- package/dist/domains/metrics/components/failure-rate-card.cjs.js.map +1 -1
- package/dist/domains/metrics/components/failure-rate-card.es.js +11 -14
- package/dist/domains/metrics/components/failure-rate-card.es.js.map +1 -1
- package/dist/domains/metrics/components/kpi-card.cjs.js +8 -5
- package/dist/domains/metrics/components/kpi-card.cjs.js.map +1 -1
- package/dist/domains/metrics/components/kpi-card.es.js +8 -5
- package/dist/domains/metrics/components/kpi-card.es.js.map +1 -1
- package/dist/domains/metrics/components/latency-card.cjs.js +33 -30
- package/dist/domains/metrics/components/latency-card.cjs.js.map +1 -1
- package/dist/domains/metrics/components/latency-card.es.js +34 -31
- package/dist/domains/metrics/components/latency-card.es.js.map +1 -1
- package/dist/domains/metrics/components/metrics-grid/metrics-grid.cjs.js +5 -2
- package/dist/domains/metrics/components/metrics-grid/metrics-grid.cjs.js.map +1 -1
- package/dist/domains/metrics/components/metrics-grid/metrics-grid.es.js +5 -2
- package/dist/domains/metrics/components/metrics-grid/metrics-grid.es.js.map +1 -1
- package/dist/domains/metrics/components/scores-card.cjs.js +7 -17
- package/dist/domains/metrics/components/scores-card.cjs.js.map +1 -1
- package/dist/domains/metrics/components/scores-card.es.js +7 -17
- package/dist/domains/metrics/components/scores-card.es.js.map +1 -1
- package/dist/domains/metrics/components/token-usage-card.cjs.js +29 -26
- package/dist/domains/metrics/components/token-usage-card.cjs.js.map +1 -1
- package/dist/domains/metrics/components/token-usage-card.es.js +30 -27
- package/dist/domains/metrics/components/token-usage-card.es.js.map +1 -1
- package/dist/domains/metrics/components/trace-aggregate-card.cjs.js +3 -2
- package/dist/domains/metrics/components/trace-aggregate-card.cjs.js.map +1 -1
- package/dist/domains/metrics/components/trace-aggregate-card.es.js +3 -2
- package/dist/domains/metrics/components/trace-aggregate-card.es.js.map +1 -1
- package/dist/domains/metrics/components/trace-volume-card.cjs.js +31 -35
- package/dist/domains/metrics/components/trace-volume-card.cjs.js.map +1 -1
- package/dist/domains/metrics/components/trace-volume-card.es.js +31 -35
- package/dist/domains/metrics/components/trace-volume-card.es.js.map +1 -1
- package/dist/domains/metrics/components/usage-card.cjs.js +29 -28
- package/dist/domains/metrics/components/usage-card.cjs.js.map +1 -1
- package/dist/domains/metrics/components/usage-card.es.js +30 -29
- package/dist/domains/metrics/components/usage-card.es.js.map +1 -1
- package/dist/domains/metrics/components.cjs.js +6 -5
- package/dist/domains/metrics/components.es.js +4 -5
- package/dist/domains/metrics/drilldown.cjs.js +1 -1
- package/dist/domains/metrics/drilldown.es.js +1 -1
- package/dist/domains/metrics/hooks/use-metrics-activity.cjs.js +1 -1
- package/dist/domains/metrics/hooks/use-metrics-activity.es.js +1 -1
- package/dist/domains/metrics/hooks/use-metrics-latency.cjs.js +1 -1
- package/dist/domains/metrics/hooks/use-metrics-latency.es.js +1 -1
- package/dist/domains/metrics/hooks/use-metrics-scores.cjs.js +1 -1
- package/dist/domains/metrics/hooks/use-metrics-scores.es.js +1 -1
- package/dist/domains/metrics/hooks/use-metrics-span-aggregate.cjs.js +1 -1
- package/dist/domains/metrics/hooks/use-metrics-span-aggregate.es.js +1 -1
- package/dist/domains/metrics/hooks.cjs.js +1 -1
- package/dist/domains/metrics/hooks.es.js +1 -1
- package/dist/domains/metrics/lib/breakdown-table.cjs.js +2 -2
- package/dist/domains/metrics/lib/breakdown-table.es.js +2 -2
- package/dist/domains/metrics/lib.cjs.js +2 -2
- package/dist/domains/metrics/lib.es.js +2 -2
- package/dist/domains/metrics/metrics-filters.cjs.js +1 -1
- package/dist/domains/metrics/metrics-filters.es.js +1 -1
- package/dist/domains/metrics.cjs.js +14 -13
- package/dist/domains/metrics.es.js +12 -13
- package/dist/domains/observability/components/observability-header-slot.cjs.js +13 -0
- package/dist/domains/observability/components/observability-header-slot.cjs.js.map +1 -0
- package/dist/domains/observability/components/observability-header-slot.d.ts +1 -0
- package/dist/domains/observability/components/observability-header-slot.es.js +11 -0
- package/dist/domains/observability/components/observability-header-slot.es.js.map +1 -0
- package/dist/domains/observability/components/observability-histogram.cjs.js +6 -2
- package/dist/domains/observability/components/observability-histogram.cjs.js.map +1 -1
- package/dist/domains/observability/components/observability-histogram.es.js +6 -2
- package/dist/domains/observability/components/observability-histogram.es.js.map +1 -1
- package/dist/domains/observability/components/observability-page-layout.cjs.js +19 -5
- package/dist/domains/observability/components/observability-page-layout.cjs.js.map +1 -1
- package/dist/domains/observability/components/observability-page-layout.es.js +20 -6
- package/dist/domains/observability/components/observability-page-layout.es.js.map +1 -1
- package/dist/domains/observability/hooks/use-observability-list-filters.cjs.js +75 -18
- package/dist/domains/observability/hooks/use-observability-list-filters.cjs.js.map +1 -1
- package/dist/domains/observability/hooks/use-observability-list-filters.es.js +76 -19
- package/dist/domains/observability/hooks/use-observability-list-filters.es.js.map +1 -1
- package/dist/domains/observability/lib/zoom-memory.cjs.js +24 -0
- package/dist/domains/observability/lib/zoom-memory.cjs.js.map +1 -0
- package/dist/domains/observability/lib/zoom-memory.d.ts +1 -0
- package/dist/domains/observability/lib/zoom-memory.es.js +22 -0
- package/dist/domains/observability/lib/zoom-memory.es.js.map +1 -0
- package/dist/domains/observability/observability-list-url-state.cjs.js +122 -0
- package/dist/domains/observability/observability-list-url-state.cjs.js.map +1 -0
- package/dist/domains/observability/observability-list-url-state.d.ts +1 -0
- package/dist/domains/observability/observability-list-url-state.es.js +111 -0
- package/dist/domains/observability/observability-list-url-state.es.js.map +1 -0
- package/dist/domains/observability/saved-view-state.cjs.js +292 -0
- package/dist/domains/observability/saved-view-state.cjs.js.map +1 -0
- package/dist/domains/observability/saved-view-state.d.ts +1 -0
- package/dist/domains/observability/saved-view-state.es.js +286 -0
- package/dist/domains/observability/saved-view-state.es.js.map +1 -0
- package/dist/domains/observability/saved-views/observability-saved-views.cjs.js +3 -0
- package/dist/domains/observability/saved-views/observability-saved-views.d.ts +1 -0
- package/dist/domains/observability/saved-views/observability-saved-views.es.js +1 -0
- package/dist/domains/observability/saved-views/saved-views-provider.cjs.js +18 -0
- package/dist/domains/observability/saved-views/saved-views-provider.cjs.js.map +1 -0
- package/dist/domains/observability/saved-views/saved-views-provider.d.ts +1 -0
- package/dist/domains/observability/saved-views/saved-views-provider.es.js +17 -0
- package/dist/domains/observability/saved-views/saved-views-provider.es.js.map +1 -0
- package/dist/domains/observability/saved-views/saved-views-source.cjs.js +23 -0
- package/dist/domains/observability/saved-views/saved-views-source.cjs.js.map +1 -0
- package/dist/domains/observability/saved-views/saved-views-source.d.ts +1 -0
- package/dist/domains/observability/saved-views/saved-views-source.es.js +19 -0
- package/dist/domains/observability/saved-views/saved-views-source.es.js.map +1 -0
- package/dist/domains/observability/saved-views/use-hosted-saved-views.cjs.js +235 -0
- package/dist/domains/observability/saved-views/use-hosted-saved-views.cjs.js.map +1 -0
- package/dist/domains/observability/saved-views/use-hosted-saved-views.d.ts +1 -0
- package/dist/domains/observability/saved-views/use-hosted-saved-views.es.js +232 -0
- package/dist/domains/observability/saved-views/use-hosted-saved-views.es.js.map +1 -0
- package/dist/domains/observability/saved-views.cjs.js +7 -0
- package/dist/domains/observability/saved-views.d.ts +1 -0
- package/dist/domains/observability/saved-views.es.js +4 -0
- package/dist/domains/observability.cjs.js +6 -0
- package/dist/domains/observability.es.js +4 -1
- package/dist/domains/scores/components/span-scoring.cjs.js +1 -1
- package/dist/domains/scores/components/span-scoring.es.js +1 -1
- package/dist/domains/scores/components/trace-scores-list.cjs.js +1 -1
- package/dist/domains/scores/components/trace-scores-list.es.js +1 -1
- package/dist/domains/scores/components/trace-scores-tab.cjs.js +1 -1
- package/dist/domains/scores/components/trace-scores-tab.es.js +1 -1
- package/dist/domains/skills/skill-simple-form.cjs.js +1 -1
- package/dist/domains/skills/skill-simple-form.es.js +1 -1
- package/dist/domains/spans/components/spans-explorer-body.cjs.js +64 -18
- package/dist/domains/spans/components/spans-explorer-body.cjs.js.map +1 -1
- package/dist/domains/spans/components/spans-explorer-body.es.js +64 -18
- package/dist/domains/spans/components/spans-explorer-body.es.js.map +1 -1
- package/dist/domains/spans/components/spans-filter-bar.cjs.js +6 -5
- package/dist/domains/spans/components/spans-filter-bar.cjs.js.map +1 -1
- package/dist/domains/spans/components/spans-filter-bar.es.js +6 -5
- package/dist/domains/spans/components/spans-filter-bar.es.js.map +1 -1
- package/dist/domains/spans/hooks/use-spans-filter-bar.cjs.js +15 -3
- package/dist/domains/spans/hooks/use-spans-filter-bar.cjs.js.map +1 -1
- package/dist/domains/spans/hooks/use-spans-filter-bar.es.js +15 -3
- package/dist/domains/spans/hooks/use-spans-filter-bar.es.js.map +1 -1
- package/dist/domains/spans/span-filters.cjs.js +53 -14
- package/dist/domains/spans/span-filters.cjs.js.map +1 -1
- package/dist/domains/spans/span-filters.es.js +52 -15
- package/dist/domains/spans/span-filters.es.js.map +1 -1
- package/dist/domains/spans/span-list-row.cjs.js +6 -1
- package/dist/domains/spans/span-list-row.cjs.js.map +1 -1
- package/dist/domains/spans/span-list-row.es.js +6 -1
- package/dist/domains/spans/span-list-row.es.js.map +1 -1
- package/dist/domains/threads/components/threads-explorer-body.cjs.js +45 -12
- package/dist/domains/threads/components/threads-explorer-body.cjs.js.map +1 -1
- package/dist/domains/threads/components/threads-explorer-body.es.js +46 -12
- package/dist/domains/threads/components/threads-explorer-body.es.js.map +1 -1
- package/dist/domains/threads/components/threads-filter-bar.cjs.js +3 -3
- package/dist/domains/threads/components/threads-filter-bar.es.js +3 -3
- package/dist/domains/threads/hooks/use-threads-filter-bar.cjs.js +14 -3
- package/dist/domains/threads/hooks/use-threads-filter-bar.cjs.js.map +1 -1
- package/dist/domains/threads/hooks/use-threads-filter-bar.es.js +14 -3
- package/dist/domains/threads/hooks/use-threads-filter-bar.es.js.map +1 -1
- package/dist/domains/threads/thread-filters.cjs.js +26 -13
- package/dist/domains/threads/thread-filters.cjs.js.map +1 -1
- package/dist/domains/threads/thread-filters.es.js +26 -13
- package/dist/domains/threads/thread-filters.es.js.map +1 -1
- package/dist/domains/threads/thread-list-row.cjs.js +2 -0
- package/dist/domains/threads/thread-list-row.cjs.js.map +1 -1
- package/dist/domains/threads/thread-list-row.es.js +2 -0
- package/dist/domains/threads/thread-list-row.es.js.map +1 -1
- package/dist/domains/traces/components/columns-menu/columns-menu.cjs.js +24 -19
- package/dist/domains/traces/components/columns-menu/columns-menu.cjs.js.map +1 -1
- package/dist/domains/traces/components/columns-menu/columns-menu.es.js +25 -20
- package/dist/domains/traces/components/columns-menu/columns-menu.es.js.map +1 -1
- package/dist/domains/traces/components/feedback-thread.cjs.js +1 -1
- package/dist/domains/traces/components/feedback-thread.es.js +1 -1
- package/dist/domains/traces/components/span-data-panel-view.cjs.js +12 -2
- package/dist/domains/traces/components/span-data-panel-view.cjs.js.map +1 -1
- package/dist/domains/traces/components/span-data-panel-view.es.js +12 -2
- package/dist/domains/traces/components/span-data-panel-view.es.js.map +1 -1
- package/dist/domains/traces/components/span-outcome.utils.cjs.js +1 -1
- package/dist/domains/traces/components/span-outcome.utils.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 +2 -2
- package/dist/domains/traces/components/span-payload/span-output-renderers.es.js +2 -2
- package/dist/domains/traces/components/span-payload/span-payload-messages.cjs.js +3 -3
- package/dist/domains/traces/components/span-payload/span-payload-messages.es.js +3 -3
- 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-processor.cjs.js +1 -1
- package/dist/domains/traces/components/span-payload/span-payload-processor.es.js +1 -1
- package/dist/domains/traces/components/span-payload/span-payload-tool.cjs.js +1 -1
- package/dist/domains/traces/components/span-payload/span-payload-tool.es.js +1 -1
- package/dist/domains/traces/components/span-payload/span-processor-mutations.cjs.js +2 -2
- package/dist/domains/traces/components/span-payload/span-processor-mutations.es.js +2 -2
- package/dist/domains/traces/components/span-payload/span-tools-section.cjs.js +1 -1
- package/dist/domains/traces/components/span-payload/span-tools-section.es.js +1 -1
- package/dist/domains/traces/components/span-prompt-changes.cjs.js +1 -1
- package/dist/domains/traces/components/span-prompt-changes.es.js +1 -1
- package/dist/domains/traces/components/trace-columns-menu.cjs.js +2 -1
- package/dist/domains/traces/components/trace-columns-menu.cjs.js.map +1 -1
- package/dist/domains/traces/components/trace-columns-menu.es.js +2 -1
- package/dist/domains/traces/components/trace-columns-menu.es.js.map +1 -1
- package/dist/domains/traces/components/trace-data-panel-view.cjs.js +9 -2
- 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 +9 -2
- package/dist/domains/traces/components/trace-data-panel-view.es.js.map +1 -1
- package/dist/domains/traces/components/trace-span-panel.cjs.js +2 -1
- package/dist/domains/traces/components/trace-span-panel.cjs.js.map +1 -1
- package/dist/domains/traces/components/trace-span-panel.es.js +2 -1
- package/dist/domains/traces/components/trace-span-panel.es.js.map +1 -1
- package/dist/domains/traces/components/trace-span-timeline-markers.cjs.js +120 -0
- package/dist/domains/traces/components/trace-span-timeline-markers.cjs.js.map +1 -0
- package/dist/domains/traces/components/trace-span-timeline-markers.d.ts +1 -0
- package/dist/domains/traces/components/trace-span-timeline-markers.es.js +119 -0
- package/dist/domains/traces/components/trace-span-timeline-markers.es.js.map +1 -0
- package/dist/domains/traces/components/trace-span-timeline.cjs.js +8 -5
- package/dist/domains/traces/components/trace-span-timeline.cjs.js.map +1 -1
- package/dist/domains/traces/components/trace-span-timeline.es.js +8 -5
- package/dist/domains/traces/components/trace-span-timeline.es.js.map +1 -1
- package/dist/domains/traces/components/trace-time-range-chip.cjs.js +5 -5
- package/dist/domains/traces/components/trace-time-range-chip.cjs.js.map +1 -1
- package/dist/domains/traces/components/trace-time-range-chip.es.js +5 -5
- package/dist/domains/traces/components/trace-time-range-chip.es.js.map +1 -1
- package/dist/domains/traces/components/traces-explorer/traces-explorer-actions.cjs.js +15 -11
- package/dist/domains/traces/components/traces-explorer/traces-explorer-actions.cjs.js.map +1 -1
- package/dist/domains/traces/components/traces-explorer/traces-explorer-actions.es.js +15 -12
- package/dist/domains/traces/components/traces-explorer/traces-explorer-actions.es.js.map +1 -1
- package/dist/domains/traces/components/traces-explorer/traces-explorer-context.cjs.js +4 -3
- package/dist/domains/traces/components/traces-explorer/traces-explorer-context.cjs.js.map +1 -1
- package/dist/domains/traces/components/traces-explorer/traces-explorer-context.es.js +4 -3
- package/dist/domains/traces/components/traces-explorer/traces-explorer-context.es.js.map +1 -1
- package/dist/domains/traces/components/traces-explorer/traces-explorer-filter-bar.cjs.js +5 -4
- package/dist/domains/traces/components/traces-explorer/traces-explorer-filter-bar.cjs.js.map +1 -1
- package/dist/domains/traces/components/traces-explorer/traces-explorer-filter-bar.es.js +5 -4
- package/dist/domains/traces/components/traces-explorer/traces-explorer-filter-bar.es.js.map +1 -1
- package/dist/domains/traces/components/traces-explorer/traces-explorer-histogram.cjs.js +13 -5
- package/dist/domains/traces/components/traces-explorer/traces-explorer-histogram.cjs.js.map +1 -1
- package/dist/domains/traces/components/traces-explorer/traces-explorer-histogram.es.js +13 -5
- package/dist/domains/traces/components/traces-explorer/traces-explorer-histogram.es.js.map +1 -1
- package/dist/domains/traces/components/traces-explorer/traces-explorer-list-provider.cjs.js +5 -2
- package/dist/domains/traces/components/traces-explorer/traces-explorer-list-provider.cjs.js.map +1 -1
- package/dist/domains/traces/components/traces-explorer/traces-explorer-list-provider.es.js +5 -2
- package/dist/domains/traces/components/traces-explorer/traces-explorer-list-provider.es.js.map +1 -1
- package/dist/domains/traces/components/traces-explorer/traces-explorer-list.cjs.js +7 -11
- package/dist/domains/traces/components/traces-explorer/traces-explorer-list.cjs.js.map +1 -1
- package/dist/domains/traces/components/traces-explorer/traces-explorer-list.es.js +7 -11
- package/dist/domains/traces/components/traces-explorer/traces-explorer-list.es.js.map +1 -1
- package/dist/domains/traces/components/traces-explorer/traces-explorer-panel.cjs.js +3 -1
- package/dist/domains/traces/components/traces-explorer/traces-explorer-panel.cjs.js.map +1 -1
- package/dist/domains/traces/components/traces-explorer/traces-explorer-panel.es.js +3 -1
- package/dist/domains/traces/components/traces-explorer/traces-explorer-panel.es.js.map +1 -1
- package/dist/domains/traces/components/traces-explorer/traces-explorer-root.cjs.js +51 -5
- package/dist/domains/traces/components/traces-explorer/traces-explorer-root.cjs.js.map +1 -1
- package/dist/domains/traces/components/traces-explorer/traces-explorer-root.es.js +51 -5
- package/dist/domains/traces/components/traces-explorer/traces-explorer-root.es.js.map +1 -1
- package/dist/domains/traces/components/traces-explorer/traces-explorer-saved-views.cjs.js +20 -0
- package/dist/domains/traces/components/traces-explorer/traces-explorer-saved-views.cjs.js.map +1 -0
- package/dist/domains/traces/components/traces-explorer/traces-explorer-saved-views.d.ts +1 -0
- package/dist/domains/traces/components/traces-explorer/traces-explorer-saved-views.es.js +19 -0
- package/dist/domains/traces/components/traces-explorer/traces-explorer-saved-views.es.js.map +1 -0
- package/dist/domains/traces/components/traces-explorer/use-traces-filter-bar.cjs.js +10 -4
- package/dist/domains/traces/components/traces-explorer/use-traces-filter-bar.cjs.js.map +1 -1
- package/dist/domains/traces/components/traces-explorer/use-traces-filter-bar.es.js +10 -4
- package/dist/domains/traces/components/traces-explorer/use-traces-filter-bar.es.js.map +1 -1
- package/dist/domains/traces/components/traces-explorer.cjs.js +4 -1
- package/dist/domains/traces/components/traces-explorer.cjs.js.map +1 -1
- package/dist/domains/traces/components/traces-explorer.es.js +5 -3
- package/dist/domains/traces/components/traces-explorer.es.js.map +1 -1
- package/dist/domains/traces/components/traces-list-view-adapter.cjs.js +5 -1
- package/dist/domains/traces/components/traces-list-view-adapter.cjs.js.map +1 -1
- package/dist/domains/traces/components/traces-list-view-adapter.es.js +5 -1
- package/dist/domains/traces/components/traces-list-view-adapter.es.js.map +1 -1
- package/dist/domains/traces/components/traces-list-view.cjs.js +53 -18
- package/dist/domains/traces/components/traces-list-view.cjs.js.map +1 -1
- package/dist/domains/traces/components/traces-list-view.es.js +53 -18
- package/dist/domains/traces/components/traces-list-view.es.js.map +1 -1
- package/dist/domains/traces/components/traces-page-skeleton.cjs.js +1 -1
- package/dist/domains/traces/components/traces-page-skeleton.es.js +1 -1
- package/dist/domains/traces/trace-filters.cjs.js +5 -1
- package/dist/domains/traces/trace-filters.es.js +1 -1
- package/dist/domains/traces/trace-list-columns.cjs.js +48 -9
- package/dist/domains/traces/trace-list-columns.cjs.js.map +1 -1
- package/dist/domains/traces/trace-list-columns.es.js +48 -9
- package/dist/domains/traces/trace-list-columns.es.js.map +1 -1
- package/dist/domains/traces/trace-query-filters.cjs.js +1 -1
- package/dist/domains/traces/trace-query-filters.es.js +1 -1
- package/dist/domains/traces/utils/timeline-markers.cjs.js +34 -0
- package/dist/domains/traces/utils/timeline-markers.cjs.js.map +1 -0
- package/dist/domains/traces/utils/timeline-markers.d.ts +1 -0
- package/dist/domains/traces/utils/timeline-markers.es.js +33 -0
- package/dist/domains/traces/utils/timeline-markers.es.js.map +1 -0
- package/dist/domains/traces.cjs.js +5 -1
- package/dist/domains/traces.es.js +2 -2
- package/dist/domains/workflows/components/workflow-combobox.cjs.js +1 -1
- package/dist/domains/workflows/components/workflow-combobox.es.js +1 -1
- package/dist/domains/workflows/components/workflows-list/workflows-list.cjs.js +1 -1
- package/dist/domains/workflows/components/workflows-list/workflows-list.es.js +1 -1
- package/dist/domains/workflows/workflow/workflow-graph.cjs.js +1 -1
- package/dist/domains/workflows/workflow/workflow-graph.es.js +1 -1
- package/dist/domains/workspace/components/workspace-add-skill-dialog.cjs.js +1 -1
- package/dist/domains/workspace/components/workspace-add-skill-dialog.es.js +1 -1
- package/dist/domains/workspace/components/workspace-markdown-preview.cjs.js +1 -1
- package/dist/domains/workspace/components/workspace-markdown-preview.es.js +1 -1
- package/dist/ee/signals/components/trace-intelligence-entity-index.cjs.js +1 -1
- package/dist/ee/signals/components/trace-intelligence-entity-index.es.js +1 -1
- package/dist/{filter-bar-chip-B3pgpngW.js → filter-bar-chip-7O02P9Vk.js} +27 -9
- package/dist/filter-bar-chip-7O02P9Vk.js.map +1 -0
- package/dist/{filter-bar-chip-CyTAmjt6.cjs → filter-bar-chip-BUyMf8XQ.cjs} +40 -22
- package/dist/filter-bar-chip-BUyMf8XQ.cjs.map +1 -0
- package/dist/layout/tabbed-container.cjs.js +1 -1
- package/dist/layout/tabbed-container.es.js +1 -1
- package/dist/lib/form/json-schema-to-zod-runtime.cjs.js +4 -4
- package/dist/lib/form/json-schema-to-zod-runtime.cjs.js.map +1 -1
- package/dist/lib/form/json-schema-to-zod-runtime.es.js +4 -4
- package/dist/lib/form/json-schema-to-zod-runtime.es.js.map +1 -1
- package/dist/lib/form/zod-provider.cjs.js +5 -1
- package/dist/lib/form/zod-provider.cjs.js.map +1 -1
- package/dist/lib/form/zod-provider.es.js +5 -1
- package/dist/lib/form/zod-provider.es.js.map +1 -1
- package/dist/observability-saved-views-Bo5kLN20.js +297 -0
- package/dist/observability-saved-views-Bo5kLN20.js.map +1 -0
- package/dist/observability-saved-views-CwCii7hh.cjs +302 -0
- package/dist/observability-saved-views-CwCii7hh.cjs.map +1 -0
- package/dist/primitives/chart-axes.cjs.js +44 -0
- package/dist/primitives/chart-axes.cjs.js.map +1 -1
- package/dist/primitives/chart-axes.es.js +43 -1
- package/dist/primitives/chart-axes.es.js.map +1 -1
- package/dist/primitives/chart-frame.cjs.js +5 -3
- package/dist/primitives/chart-frame.cjs.js.map +1 -1
- package/dist/primitives/chart-frame.es.js +6 -4
- package/dist/primitives/chart-frame.es.js.map +1 -1
- package/dist/primitives/chart-time-tick.cjs.js +15 -11
- package/dist/primitives/chart-time-tick.cjs.js.map +1 -1
- package/dist/primitives/chart-time-tick.es.js +16 -12
- package/dist/primitives/chart-time-tick.es.js.map +1 -1
- package/dist/saved-view-schema-DRJYELfK.cjs +71 -0
- package/dist/saved-view-schema-DRJYELfK.cjs.map +1 -0
- package/dist/saved-view-schema-eJXlRRel.js +54 -0
- package/dist/saved-view-schema-eJXlRRel.js.map +1 -0
- package/dist/{span-payload-primitives-D3OO0u6u.cjs → span-payload-primitives-B10Xxmx7.cjs} +4 -4
- package/dist/{span-payload-primitives-D3OO0u6u.cjs.map → span-payload-primitives-B10Xxmx7.cjs.map} +1 -1
- package/dist/{span-payload-primitives-DTV7eUY-.js → span-payload-primitives-Dyhbqaa7.js} +4 -4
- package/dist/{span-payload-primitives-DTV7eUY-.js.map → span-payload-primitives-Dyhbqaa7.js.map} +1 -1
- package/dist/src/domains/chat/activity/activity-stretch-line.d.ts +4 -2
- package/dist/src/domains/chat/activity/components/activity-fold.d.ts +5 -4
- package/dist/src/domains/chat/activity/components/use-fading-edge.d.ts +6 -0
- package/dist/src/domains/chat/activity/components/use-rolling-words.d.ts +7 -0
- package/dist/src/domains/chat/activity/index.d.ts +2 -1
- package/dist/src/domains/chat/activity/model/activity-members.d.ts +1 -0
- package/dist/src/domains/chat/activity/model/activity-words.d.ts +3 -0
- package/dist/src/domains/chat/messages/renderers/tool-part.d.ts +4 -0
- package/dist/src/domains/chat/messages/skill-message.d.ts +3 -1
- package/dist/src/domains/chat/tools/badges/mcp-task-chip.d.ts +14 -0
- package/dist/src/domains/chat/tools/badges/tool-badge.d.ts +5 -1
- package/dist/src/domains/chat/tools/badges/use-mcp-task-progress.d.ts +27 -0
- package/dist/src/domains/chat/tools/tool-card.d.ts +5 -1
- package/dist/src/domains/dashboards/components/dashboard-grid.d.ts +18 -0
- package/dist/src/domains/dashboards/components/dashboard-renderer.d.ts +19 -0
- package/dist/src/domains/dashboards/components/view-gate.d.ts +30 -0
- package/dist/src/domains/dashboards/components/widget-chrome.d.ts +7 -0
- package/dist/src/domains/dashboards/components/widget-controls.d.ts +8 -0
- package/dist/src/domains/dashboards/components/widget-error.d.ts +6 -0
- package/dist/src/domains/dashboards/hooks/use-dashboard-requests.d.ts +10 -0
- package/dist/src/domains/dashboards/hooks/use-scorers.d.ts +66 -0
- package/dist/src/domains/dashboards/hooks/use-widget-views.d.ts +18 -0
- package/dist/src/domains/dashboards/index.d.ts +19 -0
- package/dist/src/domains/dashboards/kinds/index.d.ts +7 -0
- package/dist/src/domains/dashboards/kinds/kpis/index.d.ts +13 -0
- package/dist/src/domains/dashboards/kinds/kpis/kpis-widget.d.ts +3 -0
- package/dist/src/domains/dashboards/kinds/kpis/options.d.ts +35 -0
- package/dist/src/domains/dashboards/kinds/scores/index.d.ts +8 -0
- package/dist/src/domains/dashboards/kinds/scores/options.d.ts +13 -0
- package/dist/src/domains/dashboards/kinds/scores/scores-widget.d.ts +3 -0
- package/dist/src/domains/dashboards/kinds/table/index.d.ts +23 -0
- package/dist/src/domains/dashboards/kinds/table/table-cells.d.ts +26 -0
- package/dist/src/domains/dashboards/kinds/table/table-columns.d.ts +7 -0
- package/dist/src/domains/dashboards/kinds/table/table-frame.d.ts +13 -0
- package/dist/src/domains/dashboards/kinds/table/table-tabs.d.ts +10 -0
- package/dist/src/domains/dashboards/kinds/table/table-view.d.ts +5 -0
- package/dist/src/domains/dashboards/kinds/table/table-widget.d.ts +7 -0
- package/dist/src/domains/dashboards/kinds/timeseries/index.d.ts +30 -0
- package/dist/src/domains/dashboards/kinds/timeseries/timeseries-widget.d.ts +5 -0
- package/dist/src/domains/dashboards/lib/answers.d.ts +43 -0
- package/dist/src/domains/dashboards/lib/chrome.d.ts +14 -0
- package/dist/src/domains/dashboards/lib/definition.d.ts +27 -0
- package/dist/src/domains/dashboards/lib/filters.d.ts +6 -0
- package/dist/src/domains/dashboards/lib/format.d.ts +7 -0
- package/dist/src/domains/dashboards/lib/prepare-widget.d.ts +26 -0
- package/dist/src/domains/dashboards/lib/requests.d.ts +95 -0
- package/dist/src/domains/dashboards/lib/scores.d.ts +35 -0
- package/dist/src/domains/dashboards/lib/table.d.ts +188 -0
- package/dist/src/domains/dashboards/lib/timeseries.d.ts +119 -0
- package/dist/src/domains/dashboards/lib/values.d.ts +86 -0
- package/dist/src/domains/dashboards/metrics-dashboard.d.ts +7 -0
- package/dist/src/domains/dashboards/widget-kind.d.ts +31 -0
- package/dist/src/domains/logs/components/index.d.ts +1 -0
- package/dist/src/domains/logs/components/logs-saved-views.d.ts +4 -0
- package/dist/src/domains/logs/log-filters.d.ts +8 -0
- package/dist/src/domains/metrics/components/agent-runs-card.d.ts +10 -3
- package/dist/src/domains/metrics/components/breakdown/breakdown-name.d.ts +13 -0
- package/dist/src/domains/metrics/components/breakdown/breakdown-not-priced.d.ts +2 -0
- package/dist/src/domains/metrics/components/breakdown/breakdown-row-mark.d.ts +17 -4
- package/dist/src/domains/metrics/components/breakdown/breakdown-trend-text.d.ts +9 -0
- package/dist/src/domains/metrics/components/card-action-buttons.d.ts +9 -0
- package/dist/src/domains/metrics/components/chart-card.d.ts +33 -21
- package/dist/src/domains/metrics/components/distinct-ids/distinct-ids-chart.d.ts +0 -1
- package/dist/src/domains/metrics/components/failure-rate-card.d.ts +5 -2
- package/dist/src/domains/metrics/components/index.d.ts +1 -2
- package/dist/src/domains/metrics/components/metrics-grid/metrics-grid.d.ts +4 -1
- package/dist/src/domains/metrics/components/trace-aggregate-card.d.ts +1 -1
- package/dist/src/domains/observability/components/observability-header-slot.d.ts +6 -0
- package/dist/src/domains/observability/components/observability-histogram.d.ts +1 -1
- package/dist/src/domains/observability/hooks/use-observability-list-filters.d.ts +21 -5
- package/dist/src/domains/observability/index.d.ts +2 -0
- package/dist/src/domains/observability/lib/zoom-memory.d.ts +19 -0
- package/dist/src/domains/observability/observability-list-url-state.d.ts +39 -0
- package/dist/src/domains/observability/saved-view-state.d.ts +46 -0
- package/dist/src/domains/observability/saved-views/index.d.ts +7 -0
- package/dist/src/domains/observability/saved-views/observability-saved-views.d.ts +22 -0
- package/dist/src/domains/observability/saved-views/saved-views-provider.d.ts +15 -0
- package/dist/src/domains/observability/saved-views/saved-views-source.d.ts +41 -0
- package/dist/src/domains/observability/saved-views/use-hosted-saved-views.d.ts +34 -0
- package/dist/src/domains/spans/components/spans-explorer-body.d.ts +4 -1
- package/dist/src/domains/spans/components/spans-filter-bar.d.ts +3 -1
- package/dist/src/domains/spans/hooks/use-spans-filter-bar.d.ts +1 -1
- package/dist/src/domains/spans/hooks/use-spans-list-source.d.ts +3 -0
- package/dist/src/domains/spans/span-filters.d.ts +16 -5
- package/dist/src/domains/threads/components/threads-explorer-body.d.ts +4 -1
- package/dist/src/domains/threads/thread-filters.d.ts +6 -5
- package/dist/src/domains/traces/components/columns-menu/columns-menu.d.ts +3 -3
- package/dist/src/domains/traces/components/trace-data-panel-view.d.ts +7 -1
- package/dist/src/domains/traces/components/trace-span-panel.d.ts +2 -1
- package/dist/src/domains/traces/components/trace-span-timeline-markers.d.ts +5 -0
- package/dist/src/domains/traces/components/trace-span-timeline.d.ts +6 -1
- package/dist/src/domains/traces/components/trace-time-range-chip.d.ts +3 -1
- package/dist/src/domains/traces/components/traces-explorer/index.d.ts +4 -1
- package/dist/src/domains/traces/components/traces-explorer/traces-explorer-actions.d.ts +5 -5
- package/dist/src/domains/traces/components/traces-explorer/traces-explorer-context.d.ts +11 -1
- package/dist/src/domains/traces/components/traces-explorer/traces-explorer-saved-views.d.ts +7 -0
- package/dist/src/domains/traces/components/traces-list-view.d.ts +20 -7
- package/dist/src/domains/traces/hooks/use-traces-list-source.d.ts +5 -0
- package/dist/src/domains/traces/trace-filters.d.ts +27 -3
- package/dist/src/domains/traces/trace-list-columns.d.ts +16 -6
- package/dist/src/domains/traces/utils/timeline-markers.d.ts +25 -0
- package/dist/src/domains/workflows/context/use-persisted-workflow-run.d.ts +2 -0
- package/dist/src/domains/workflows/workflow/input/processor-input.d.ts +5 -535
- package/dist/src/domains/workflows/workflow/use-workflow-trigger.d.ts +1 -1
- package/dist/src/ds/components/AgentIndicator/agent-glyph.d.ts +4 -0
- package/dist/src/ds/components/AgentIndicator/agent-indicator.d.ts +8 -0
- package/dist/src/ds/components/AgentIndicator/animate.d.ts +5 -0
- package/dist/src/ds/components/AgentIndicator/index.d.ts +4 -0
- package/dist/src/ds/components/AgentIndicator/paint.d.ts +21 -0
- package/dist/src/ds/components/AgentIndicator/poses.d.ts +7 -0
- package/dist/src/ds/components/AgentIndicator/shapes.d.ts +41 -0
- package/dist/src/ds/components/Arrival/arrival.d.ts +11 -0
- package/dist/src/ds/components/Arrival/index.d.ts +1 -1
- package/dist/src/ds/components/DataList/TracesDataList/traces-data-list-cells.d.ts +12 -0
- package/dist/src/ds/components/DataList/TracesDataList/traces-data-list.d.ts +3 -1
- package/dist/src/ds/components/FilterBar/types.d.ts +2 -0
- package/dist/src/ds/components/MetricsCard/index.d.ts +1 -1
- package/dist/src/ds/components/MetricsCard/metrics-card-actions.d.ts +2 -1
- package/dist/src/ds/components/MetricsCard/metrics-card-headline.d.ts +13 -0
- package/dist/src/ds/components/MetricsCard/metrics-card-title-menu.d.ts +2 -0
- package/dist/src/ds/components/MetricsCard/metrics-card-title.d.ts +1 -3
- package/dist/src/ds/components/MetricsCard/metrics-card-toolbar.d.ts +3 -3
- package/dist/src/ds/components/MetricsCard/metrics-card-total.d.ts +11 -3
- package/dist/src/ds/components/MetricsCard/metrics-card.d.ts +2 -9
- package/dist/src/ds/components/MetricsCard/metrics-story-data.d.ts +0 -26
- package/dist/src/ds/components/MetricsKpiCard/metrics-kpi-card-root.d.ts +5 -2
- package/dist/src/ds/components/MetricsLineChart/metrics-line-chart-legend.d.ts +3 -4
- package/dist/src/ds/components/MetricsLineChart/metrics-line-chart.d.ts +2 -6
- package/dist/src/ds/components/SavedViews/saved-view-editor.d.ts +3 -1
- package/dist/src/ds/components/SavedViews/saved-view-picker.d.ts +21 -0
- package/dist/src/ds/components/SavedViews/use-saved-views.d.ts +6 -2
- package/dist/src/ds/components/ai/activity/activity.d.ts +12 -7
- package/dist/src/ds/components/ai/activity/index.d.ts +1 -0
- package/dist/src/ds/components/ai/activity/presets/signal-activity.d.ts +4 -1
- package/dist/src/ds/components/ai/activity/use-relative-paths.d.ts +3 -0
- package/dist/src/ds/components/ai/message-reveal/message-reveal.d.ts +2 -1
- package/dist/src/ds/components/ai/tool-call/tool-presentation.d.ts +4 -0
- package/dist/src/ds/primitives/chart-axes.d.ts +24 -0
- package/dist/src/ds/primitives/chart-frame.d.ts +2 -1
- package/dist/src/ds/primitives/chart-time-tick.d.ts +7 -4
- package/dist/src/lib/string.d.ts +1 -0
- package/dist/{string-OAgeMRQ5.js → string-CNKDIc_4.js} +6 -2
- package/dist/string-CNKDIc_4.js.map +1 -0
- package/dist/{string-CymY0aJ9.cjs → string-DdJJdCv2.cjs} +11 -1
- package/dist/string-DdJJdCv2.cjs.map +1 -0
- package/dist/style.css +67 -4
- package/dist/{tabbed-container-x2mfK07d.js → tabbed-container-BKUqfEKy.js} +2 -2
- package/dist/{tabbed-container-x2mfK07d.js.map → tabbed-container-BKUqfEKy.js.map} +1 -1
- package/dist/{tabbed-container-CBTb0LgE.cjs → tabbed-container-CFEImJOK.cjs} +2 -2
- package/dist/{tabbed-container-CBTb0LgE.cjs.map → tabbed-container-CFEImJOK.cjs.map} +1 -1
- package/dist/{tool-approval-6E73C0r6.cjs → tool-approval-BfjoSNOC.cjs} +4 -4
- package/dist/{tool-approval-6E73C0r6.cjs.map → tool-approval-BfjoSNOC.cjs.map} +1 -1
- package/dist/{tool-approval-BXlro6fV.js → tool-approval-FeuyUUcL.js} +4 -4
- package/dist/{tool-approval-BXlro6fV.js.map → tool-approval-FeuyUUcL.js.map} +1 -1
- package/dist/{tool-call-CItJ8KLA.js → tool-call-BxYXs9w0.js} +9 -7
- package/dist/{tool-call-CItJ8KLA.js.map → tool-call-BxYXs9w0.js.map} +1 -1
- package/dist/{tool-call-Dq9xF3WD.cjs → tool-call-CvilN9ti.cjs} +9 -7
- package/dist/{tool-call-Dq9xF3WD.cjs.map → tool-call-CvilN9ti.cjs.map} +1 -1
- package/dist/{tool-card-o5u4YCR0.cjs → tool-card-B7O8AsRl.cjs} +9 -5
- package/dist/tool-card-B7O8AsRl.cjs.map +1 -0
- package/dist/{tool-card-Bd8weXze.js → tool-card-ELW898uw.js} +9 -5
- package/dist/tool-card-ELW898uw.js.map +1 -0
- package/dist/{tool-presentation-D2uUj1AB.cjs → tool-presentation-BLErsb7c.cjs} +38 -40
- package/dist/tool-presentation-BLErsb7c.cjs.map +1 -0
- package/dist/{tool-presentation-DKfIKLQy.js → tool-presentation-BSZYIWx2.js} +38 -40
- package/dist/tool-presentation-BSZYIWx2.js.map +1 -0
- package/dist/{trace-filters-C27yWcan.js → trace-filters-BJaebsxJ.js} +78 -11
- package/dist/trace-filters-BJaebsxJ.js.map +1 -0
- package/dist/{trace-filters-BpeBUjCb.cjs → trace-filters-BNEZ31HX.cjs} +100 -9
- package/dist/trace-filters-BNEZ31HX.cjs.map +1 -0
- package/dist/types-CP7wbYua.cjs.map +1 -1
- package/dist/types-DiiL5mTO.js.map +1 -1
- package/dist/utils/string.cjs.js +2 -1
- package/dist/utils/string.es.js +1 -1
- package/package.json +14 -14
- package/dist/Arrival-Dm6Vgn78.cjs.map +0 -1
- package/dist/Arrival-NpBOyV52.js.map +0 -1
- package/dist/DataList-Cmk08jUV.cjs.map +0 -1
- package/dist/DataList-Ve3omCXT.js.map +0 -1
- package/dist/DateTimeRangePicker-ByMbLdom.js.map +0 -1
- package/dist/DateTimeRangePicker-DGbH5WOn.cjs.map +0 -1
- package/dist/FilterBar-Dk3QEuT6.js.map +0 -1
- package/dist/FilterBar-gEvoWDXA.cjs.map +0 -1
- package/dist/MetricsCard-C9GWgT58.js.map +0 -1
- package/dist/MetricsCard-Dly_H3oX.cjs.map +0 -1
- package/dist/MetricsLineChart-2m4LVL1N.cjs.map +0 -1
- package/dist/MetricsLineChart-DKzuRU2q.js.map +0 -1
- package/dist/MetricsStackedBarChart-DJB4aByt.js.map +0 -1
- package/dist/MetricsStackedBarChart-NATtwA_W.cjs.map +0 -1
- package/dist/activity-QyLJcBKc.cjs.map +0 -1
- package/dist/activity-ihrl0JtH.js.map +0 -1
- package/dist/combobox-C-E7_q4j.cjs.map +0 -1
- package/dist/combobox-CDS2pBqz.js.map +0 -1
- package/dist/domains/metrics/components/metrics-kpis.cjs.js +0 -106
- package/dist/domains/metrics/components/metrics-kpis.cjs.js.map +0 -1
- package/dist/domains/metrics/components/metrics-kpis.d.ts +0 -1
- package/dist/domains/metrics/components/metrics-kpis.es.js +0 -105
- package/dist/domains/metrics/components/metrics-kpis.es.js.map +0 -1
- package/dist/filter-bar-chip-B3pgpngW.js.map +0 -1
- package/dist/filter-bar-chip-CyTAmjt6.cjs.map +0 -1
- package/dist/src/domains/metrics/components/metrics-kpis.d.ts +0 -2
- package/dist/src/ds/components/MetricsCard/metrics-card-description.d.ts +0 -4
- package/dist/src/ds/components/MetricsCard/metrics-card-summary.d.ts +0 -8
- package/dist/src/ds/components/MetricsCard/metrics-card-tabs.d.ts +0 -16
- package/dist/src/ds/components/MetricsCard/metrics-card-title-and-description.d.ts +0 -16
- package/dist/string-CymY0aJ9.cjs.map +0 -1
- package/dist/string-OAgeMRQ5.js.map +0 -1
- package/dist/tool-card-Bd8weXze.js.map +0 -1
- package/dist/tool-card-o5u4YCR0.cjs.map +0 -1
- package/dist/tool-presentation-D2uUj1AB.cjs.map +0 -1
- package/dist/tool-presentation-DKfIKLQy.js.map +0 -1
- package/dist/trace-filters-BpeBUjCb.cjs.map +0 -1
- package/dist/trace-filters-C27yWcan.js.map +0 -1
|
@@ -1,19 +1,19 @@
|
|
|
1
1
|
import { t as cn } from "./utils-DQx8TpNT.js";
|
|
2
2
|
import { t as Txt } from "./Txt-BM6TVV_c.js";
|
|
3
3
|
import { t as DropdownMenu } from "./dropdown-menu-B4jY3J9e.js";
|
|
4
|
-
import { n as Tabs, r as TabList, t as Tab } from "./tabs-tab-UT1JliwK.js";
|
|
5
4
|
import { SkeletonText } from "./components/Skeleton.es.js";
|
|
6
5
|
import { t as Spinner } from "./spinner-CnLgLj9R.js";
|
|
6
|
+
import { t as MetricsKpiCard } from "./MetricsKpiCard-OHbAElTl.js";
|
|
7
7
|
import { t as Card } from "./Card-LU1aWO7U.js";
|
|
8
|
-
import { t as MetricsKpiCard } from "./MetricsKpiCard-Idxjl-dn.js";
|
|
9
8
|
import { jsx, jsxs } from "react/jsx-runtime";
|
|
10
9
|
import { ChevronDownIcon } from "lucide-react";
|
|
11
10
|
// src/ds/components/MetricsCard/metrics-card-actions.tsx
|
|
12
11
|
/** Container for icon buttons / small actions in the top bar of a MetricsCard,
|
|
13
|
-
* placed between
|
|
12
|
+
* placed between the title and `Total` (which always renders last). Small (28px) buttons sit
|
|
13
|
+
* centered on the 20px title line without making the top bar taller. */
|
|
14
14
|
function MetricsCardActions({ children, reveal = "always", className }) {
|
|
15
15
|
return /* @__PURE__ */ jsx("div", {
|
|
16
|
-
className: cn("flex shrink-0 items-center gap-1 self-
|
|
16
|
+
className: cn("-my-1 flex shrink-0 items-center gap-1 self-start", reveal === "hover" && "opacity-0 transition-opacity duration-150 group-hover/metrics-card:opacity-100 focus-within:opacity-100", className),
|
|
17
17
|
children
|
|
18
18
|
});
|
|
19
19
|
}
|
|
@@ -29,14 +29,6 @@ function MetricsCardContent({ children, className }) {
|
|
|
29
29
|
children
|
|
30
30
|
});
|
|
31
31
|
}
|
|
32
|
-
// src/ds/components/MetricsCard/metrics-card-description.tsx
|
|
33
|
-
function MetricsCardDescription({ children, className }) {
|
|
34
|
-
return /* @__PURE__ */ jsx(Txt, {
|
|
35
|
-
tone: "faint",
|
|
36
|
-
className: cn("mt-0.5", className),
|
|
37
|
-
children
|
|
38
|
-
});
|
|
39
|
-
}
|
|
40
32
|
// src/ds/components/MetricsCard/metrics-card-error.tsx
|
|
41
33
|
function MetricsCardError({ message = "Failed to load data", className }) {
|
|
42
34
|
return /* @__PURE__ */ jsx("div", {
|
|
@@ -48,6 +40,33 @@ function MetricsCardError({ message = "Failed to load data", className }) {
|
|
|
48
40
|
})
|
|
49
41
|
});
|
|
50
42
|
}
|
|
43
|
+
// src/ds/components/MetricsCard/metrics-card-headline.tsx
|
|
44
|
+
/**
|
|
45
|
+
* The header of a card with one large chart (an explorer, a detail page): the label over a large
|
|
46
|
+
* value, the change against the previous period beside it. Cards in a grid use the compact title
|
|
47
|
+
* and `MetricsCard.Total` instead. A skeleton while loading, in the value's own line box.
|
|
48
|
+
*/
|
|
49
|
+
function MetricsCardHeadline({ label, value, change, isLoading = false, className }) {
|
|
50
|
+
return /* @__PURE__ */ jsxs("div", {
|
|
51
|
+
className: cn("grid gap-1.5", className),
|
|
52
|
+
children: [/* @__PURE__ */ jsx("h3", {
|
|
53
|
+
className: "text-body-sm text-muted-foreground",
|
|
54
|
+
children: label
|
|
55
|
+
}), /* @__PURE__ */ jsxs("span", {
|
|
56
|
+
className: "flex items-baseline gap-2",
|
|
57
|
+
children: [/* @__PURE__ */ jsx("span", {
|
|
58
|
+
className: "text-title text-foreground tabular-nums [text-box:trim-both_cap_alphabetic]",
|
|
59
|
+
children: isLoading ? /* @__PURE__ */ jsx(SkeletonText, {
|
|
60
|
+
line: "text-title",
|
|
61
|
+
className: "w-24"
|
|
62
|
+
}) : value
|
|
63
|
+
}), !isLoading && change && /* @__PURE__ */ jsxs("span", {
|
|
64
|
+
className: "text-body-sm text-muted-foreground tabular-nums",
|
|
65
|
+
children: [change, " vs previous"]
|
|
66
|
+
})]
|
|
67
|
+
})]
|
|
68
|
+
});
|
|
69
|
+
}
|
|
51
70
|
// src/ds/components/MetricsCard/metrics-card-loading.tsx
|
|
52
71
|
function MetricsCardLoading({ className }) {
|
|
53
72
|
return /* @__PURE__ */ jsx("div", {
|
|
@@ -76,106 +95,46 @@ function MetricsCardRoot({ children, className }) {
|
|
|
76
95
|
children
|
|
77
96
|
});
|
|
78
97
|
}
|
|
79
|
-
// src/ds/components/MetricsCard/metrics-card-summary.tsx
|
|
80
|
-
/** Always the top bar's last item, so action buttons sit to its left and the value hugs the edge. */
|
|
81
|
-
function MetricsCardSummary({ value, label, isLoading = false, className }) {
|
|
82
|
-
if (isLoading) return /* @__PURE__ */ jsxs("div", {
|
|
83
|
-
className: cn("order-last flex shrink-0 flex-col items-end", className),
|
|
84
|
-
children: [/* @__PURE__ */ jsx(SkeletonText, {
|
|
85
|
-
line: "text-body",
|
|
86
|
-
className: "h-4 w-14"
|
|
87
|
-
}), label && /* @__PURE__ */ jsx(SkeletonText, {
|
|
88
|
-
line: "text-body mt-0.5",
|
|
89
|
-
className: "w-10"
|
|
90
|
-
})]
|
|
91
|
-
});
|
|
92
|
-
return /* @__PURE__ */ jsxs("div", {
|
|
93
|
-
className: cn("order-last text-right", className),
|
|
94
|
-
children: [/* @__PURE__ */ jsx(Txt, {
|
|
95
|
-
tone: "muted",
|
|
96
|
-
className: "tabular-nums",
|
|
97
|
-
children: value
|
|
98
|
-
}), label && /* @__PURE__ */ jsx(Txt, {
|
|
99
|
-
tone: "faint",
|
|
100
|
-
className: "mt-0.5",
|
|
101
|
-
children: label
|
|
102
|
-
})]
|
|
103
|
-
});
|
|
104
|
-
}
|
|
105
|
-
// src/ds/components/MetricsCard/metrics-card-tabs.tsx
|
|
106
|
-
/**
|
|
107
|
-
* The view switch in a metrics card's toolbar (e.g. Agents / Workflows / Tools): ghost tabs a
|
|
108
|
-
* size under the control rung, so the switch stays quieter than the data. Metrics cards only;
|
|
109
|
-
* anywhere else use `TabList`, which lines up with buttons and inputs.
|
|
110
|
-
*/
|
|
111
|
-
function MetricsCardTabs({ value, onValueChange, children }) {
|
|
112
|
-
return /* @__PURE__ */ jsx(Tabs, {
|
|
113
|
-
value,
|
|
114
|
-
onValueChange,
|
|
115
|
-
defaultTab: value,
|
|
116
|
-
children: /* @__PURE__ */ jsx(TabList, {
|
|
117
|
-
variant: "pill-ghost",
|
|
118
|
-
size: "sm",
|
|
119
|
-
children
|
|
120
|
-
})
|
|
121
|
-
});
|
|
122
|
-
}
|
|
123
|
-
/** One `MetricsCard.Tabs` option: 24px tall with 12px labels. */
|
|
124
|
-
function MetricsCardTab({ className, ...props }) {
|
|
125
|
-
return /* @__PURE__ */ jsx(Tab, {
|
|
126
|
-
...props,
|
|
127
|
-
className: cn("h-6 px-2.5 text-column", className)
|
|
128
|
-
});
|
|
129
|
-
}
|
|
130
98
|
// src/ds/components/MetricsCard/metrics-card-title.tsx
|
|
131
|
-
function MetricsCardTitle({ children, className, as: Tag = "
|
|
99
|
+
function MetricsCardTitle({ children, className, as: Tag = "h3" }) {
|
|
132
100
|
return /* @__PURE__ */ jsx(Tag, {
|
|
133
|
-
className: cn("text-body
|
|
101
|
+
className: cn("text-body font-medium text-foreground", className),
|
|
134
102
|
children
|
|
135
103
|
});
|
|
136
104
|
}
|
|
137
|
-
// src/ds/components/MetricsCard/metrics-card-title-and-description.tsx
|
|
138
|
-
function MetricsCardTitleAndDescription(props) {
|
|
139
|
-
if ("children" in props) return /* @__PURE__ */ jsx("div", {
|
|
140
|
-
className: props.className,
|
|
141
|
-
children: props.children
|
|
142
|
-
});
|
|
143
|
-
const { title, description, titleAs } = props;
|
|
144
|
-
return /* @__PURE__ */ jsxs("div", {
|
|
145
|
-
className: props.className,
|
|
146
|
-
children: [/* @__PURE__ */ jsx(MetricsCardTitle, {
|
|
147
|
-
as: titleAs,
|
|
148
|
-
children: title
|
|
149
|
-
}), description && /* @__PURE__ */ jsx(MetricsCardDescription, { children: description })]
|
|
150
|
-
});
|
|
151
|
-
}
|
|
152
105
|
// src/ds/components/MetricsCard/metrics-card-title-menu.tsx
|
|
153
106
|
/**
|
|
154
107
|
* A card title that switches the card's view, as on Vercel's usage cards: the title is the
|
|
155
108
|
* trigger, with a chevron. The hover fill bleeds past the text so the title stays aligned.
|
|
109
|
+
* Wrapped, so the top bar stretches the wrapper rather than the button, and the menu's open-state
|
|
110
|
+
* nodes next to the trigger don't become the top bar's first child.
|
|
156
111
|
*/
|
|
157
112
|
function MetricsCardTitleMenu({ title, value, onValueChange, options, className }) {
|
|
158
|
-
return /* @__PURE__ */
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
113
|
+
return /* @__PURE__ */ jsx("div", {
|
|
114
|
+
className: "flex min-w-0",
|
|
115
|
+
children: /* @__PURE__ */ jsxs(DropdownMenu, { children: [/* @__PURE__ */ jsxs(DropdownMenu.Trigger, {
|
|
116
|
+
render: /* @__PURE__ */ jsx("button", {
|
|
117
|
+
type: "button",
|
|
118
|
+
className: cn("-mx-1.5 -my-0.5 flex items-center gap-1 self-start rounded-md px-1.5 py-0.5 text-left text-body font-medium text-foreground hover:bg-fill-subtle", className)
|
|
119
|
+
}),
|
|
120
|
+
children: [title, /* @__PURE__ */ jsx(ChevronDownIcon, { className: "size-3.5 text-muted-foreground" })]
|
|
121
|
+
}), /* @__PURE__ */ jsx(DropdownMenu.Content, {
|
|
122
|
+
align: "start",
|
|
123
|
+
children: /* @__PURE__ */ jsx(DropdownMenu.RadioOptions, {
|
|
124
|
+
options,
|
|
125
|
+
value,
|
|
126
|
+
onValueChange,
|
|
127
|
+
closeOnSelect: true
|
|
128
|
+
})
|
|
129
|
+
})] })
|
|
130
|
+
});
|
|
172
131
|
}
|
|
173
132
|
// src/ds/components/MetricsCard/metrics-card-toolbar.tsx
|
|
174
133
|
/**
|
|
175
|
-
* One row under the top bar for a card's controls:
|
|
134
|
+
* One row under the top bar for a card's controls: a legend, list column headers.
|
|
176
135
|
* The first child sits on the left, the last on the right; either side may be omitted. When
|
|
177
|
-
* both don't fit (a narrow card), the right side wraps to its own line, still on the right. At least
|
|
178
|
-
* tall
|
|
136
|
+
* both don't fit (a narrow card), the right side wraps to its own line, still on the right. At least 24px
|
|
137
|
+
* tall, so toolbars line up across cards in the same row.
|
|
179
138
|
*/
|
|
180
139
|
function MetricsCardToolbar({ children, className }) {
|
|
181
140
|
return /* @__PURE__ */ jsx("div", {
|
|
@@ -192,16 +151,43 @@ function MetricsCardTopBar({ children, className }) {
|
|
|
192
151
|
}
|
|
193
152
|
// src/ds/components/MetricsCard/metrics-card-total.tsx
|
|
194
153
|
/**
|
|
195
|
-
* A
|
|
196
|
-
* bar's last item. A skeleton while loading, in the value's own line box.
|
|
154
|
+
* A card's total, right of the title in the same type (14px, medium). Always the top
|
|
155
|
+
* bar's last item. A skeleton while loading, in the value's own line box. A card charting a
|
|
156
|
+
* few series of different things (resources, threads) can give one total each, each after a
|
|
157
|
+
* marker in its series' color, like the legend.
|
|
197
158
|
*/
|
|
198
159
|
function MetricsCardTotal({ value, isLoading = false, className }) {
|
|
199
160
|
return /* @__PURE__ */ jsx("span", {
|
|
200
161
|
className: cn("order-last shrink-0 text-body font-medium text-foreground tabular-nums", className),
|
|
201
|
-
children:
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
})
|
|
162
|
+
children: /* @__PURE__ */ jsx(TotalValue, {
|
|
163
|
+
value,
|
|
164
|
+
isLoading
|
|
165
|
+
})
|
|
166
|
+
});
|
|
167
|
+
}
|
|
168
|
+
function TotalValue({ value, isLoading }) {
|
|
169
|
+
if (isLoading) return /* @__PURE__ */ jsx(SkeletonText, {
|
|
170
|
+
line: "text-body",
|
|
171
|
+
className: "h-4 w-14"
|
|
172
|
+
});
|
|
173
|
+
if (typeof value === "string") return value;
|
|
174
|
+
return /* @__PURE__ */ jsx("span", {
|
|
175
|
+
className: "inline-flex items-center gap-3",
|
|
176
|
+
children: value.map((part) => /* @__PURE__ */ jsxs("span", {
|
|
177
|
+
className: "inline-flex items-center gap-1.5",
|
|
178
|
+
children: [
|
|
179
|
+
/* @__PURE__ */ jsx("span", {
|
|
180
|
+
"aria-hidden": true,
|
|
181
|
+
className: "size-2 shrink-0 rounded-[2px]",
|
|
182
|
+
style: { backgroundColor: part.color }
|
|
183
|
+
}),
|
|
184
|
+
/* @__PURE__ */ jsxs("span", {
|
|
185
|
+
className: "sr-only",
|
|
186
|
+
children: [part.label, " "]
|
|
187
|
+
}),
|
|
188
|
+
part.value
|
|
189
|
+
]
|
|
190
|
+
}, part.label))
|
|
205
191
|
});
|
|
206
192
|
}
|
|
207
193
|
// src/ds/components/MetricsCard/metrics-card.tsx
|
|
@@ -210,15 +196,11 @@ var MetricsCard = Object.assign(MetricsCardRoot, {
|
|
|
210
196
|
Kpi: MetricsKpiCard,
|
|
211
197
|
TopBar: MetricsCardTopBar,
|
|
212
198
|
Toolbar: MetricsCardToolbar,
|
|
213
|
-
Tabs: MetricsCardTabs,
|
|
214
|
-
Tab: MetricsCardTab,
|
|
215
199
|
Actions: MetricsCardActions,
|
|
216
|
-
TitleAndDescription: MetricsCardTitleAndDescription,
|
|
217
200
|
Title: MetricsCardTitle,
|
|
218
201
|
TitleMenu: MetricsCardTitleMenu,
|
|
219
|
-
Description: MetricsCardDescription,
|
|
220
|
-
Summary: MetricsCardSummary,
|
|
221
202
|
Total: MetricsCardTotal,
|
|
203
|
+
Headline: MetricsCardHeadline,
|
|
222
204
|
Loading: MetricsCardLoading,
|
|
223
205
|
Error: MetricsCardError,
|
|
224
206
|
Content: MetricsCardContent,
|
|
@@ -226,4 +208,4 @@ var MetricsCard = Object.assign(MetricsCardRoot, {
|
|
|
226
208
|
});
|
|
227
209
|
export { MetricsCard as t };
|
|
228
210
|
|
|
229
|
-
//# sourceMappingURL=MetricsCard-
|
|
211
|
+
//# sourceMappingURL=MetricsCard-M8awJ2B_.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MetricsCard-M8awJ2B_.js","names":[],"sources":["../src/ds/components/MetricsCard/metrics-card-actions.tsx","../src/ds/components/MetricsCard/metrics-card-content.tsx","../src/ds/components/MetricsCard/metrics-card-error.tsx","../src/ds/components/MetricsCard/metrics-card-headline.tsx","../src/ds/components/MetricsCard/metrics-card-loading.tsx","../src/ds/components/MetricsCard/metrics-card-no-data.tsx","../src/ds/components/MetricsCard/metrics-card-root.tsx","../src/ds/components/MetricsCard/metrics-card-title.tsx","../src/ds/components/MetricsCard/metrics-card-title-menu.tsx","../src/ds/components/MetricsCard/metrics-card-toolbar.tsx","../src/ds/components/MetricsCard/metrics-card-top-bar.tsx","../src/ds/components/MetricsCard/metrics-card-total.tsx","../src/ds/components/MetricsCard/metrics-card.tsx"],"sourcesContent":["import type { ReactNode } from 'react';\nimport { cn } from '@/lib/utils';\n\n/** Container for icon buttons / small actions in the top bar of a MetricsCard,\n * placed between the title and `Total` (which always renders last). Small (28px) buttons sit\n * centered on the 20px title line without making the top bar taller. */\nexport function MetricsCardActions({\n children,\n reveal = 'always',\n className,\n}: {\n children: ReactNode;\n /**\n * `hover`: the actions appear while the card is hovered or one of them has focus, so a page\n * of cards doesn't read as a page of buttons.\n */\n reveal?: 'always' | 'hover';\n className?: string;\n}) {\n return (\n <div\n className={cn(\n '-my-1 flex shrink-0 items-center gap-1 self-start',\n reveal === 'hover' &&\n 'opacity-0 transition-opacity duration-150 group-hover/metrics-card:opacity-100 focus-within:opacity-100',\n className,\n )}\n >\n {children}\n </div>\n );\n}\n","import type { ReactNode } from 'react';\nimport { cn } from '@/lib/utils';\n\n/**\n * Scrolls sideways only (wide tables). Vertical overflow is hidden: a chart filling a card with a\n * fractional height rounds 1px past it, which otherwise turns the content into a scroll box.\n * Tables inside a card drop the last row's border: the card edge already closes them.\n */\nexport function MetricsCardContent({ children, className }: { children: ReactNode; className?: string }) {\n return (\n <div className={cn('overflow-x-auto overflow-y-hidden [&_tbody>tr:last-child]:border-b-0', className)}>\n {children}\n </div>\n );\n}\n","import { Txt } from '@/ds/components/Txt';\nimport { cn } from '@/lib/utils';\n\nexport function MetricsCardError({\n message = 'Failed to load data',\n className,\n}: {\n message?: string;\n className?: string;\n}) {\n return (\n <div className={cn('flex flex-col items-center justify-center gap-3', className)}>\n <Txt variant=\"caption\" className=\"text-destructive-foreground\">\n {message}\n </Txt>\n </div>\n );\n}\n","import { SkeletonText } from '@/ds/components/Skeleton';\nimport { cn } from '@/lib/utils';\n\n/**\n * The header of a card with one large chart (an explorer, a detail page): the label over a large\n * value, the change against the previous period beside it. Cards in a grid use the compact title\n * and `MetricsCard.Total` instead. A skeleton while loading, in the value's own line box.\n */\nexport function MetricsCardHeadline({\n label,\n value,\n change,\n isLoading = false,\n className,\n}: {\n label: string;\n value: string;\n /** E.g. \"+71.4%\"; shown as \"+71.4% vs previous\". */\n change?: string;\n isLoading?: boolean;\n className?: string;\n}) {\n return (\n <div className={cn('grid gap-1.5', className)}>\n <h3 className=\"text-body-sm text-muted-foreground\">{label}</h3>\n <span className=\"flex items-baseline gap-2\">\n <span className=\"text-title text-foreground tabular-nums [text-box:trim-both_cap_alphabetic]\">\n {isLoading ? <SkeletonText line=\"text-title\" className=\"w-24\" /> : value}\n </span>\n {!isLoading && change && (\n <span className=\"text-body-sm text-muted-foreground tabular-nums\">{change} vs previous</span>\n )}\n </span>\n </div>\n );\n}\n","import { Spinner } from '@/ds/components/Spinner/spinner';\nimport { cn } from '@/lib/utils';\n\nexport function MetricsCardLoading({ className }: { className?: string }) {\n return (\n <div className={cn('flex items-center justify-center', className)}>\n <Spinner size=\"md\" variant=\"pulse\" className=\"text-placeholder\" />\n </div>\n );\n}\n","import { Txt } from '@/ds/components/Txt';\nimport { cn } from '@/lib/utils';\n\nexport function MetricsCardNoData({ message = 'No data yet', className }: { message?: string; className?: string }) {\n return (\n <div className={cn('flex h-full items-center justify-center', className)}>\n <Txt tone=\"faint\">{message}</Txt>\n </div>\n );\n}\n","import type { ReactNode } from 'react';\nimport { Card } from '@/ds/components/Card';\nimport { cn } from '@/lib/utils';\n\nexport function MetricsCardRoot({ children, className }: { children: ReactNode; className?: string }) {\n return (\n <Card\n className={cn(\n 'group/metrics-card grid min-h-72 min-w-80 flex-1 grid-rows-[auto_1fr] gap-4 px-4 py-3 2xl:min-w-120 md:min-w-88 lg:min-w-sm xl:min-w-104',\n className,\n )}\n >\n {children}\n </Card>\n );\n}\n","import { cn } from '@/lib/utils';\n\nexport function MetricsCardTitle({\n children,\n className,\n as: Tag = 'h3',\n}: {\n children: string;\n className?: string;\n as?: 'h2' | 'h3' | 'h4';\n}) {\n return <Tag className={cn('text-body font-medium text-foreground', className)}>{children}</Tag>;\n}\n","import { ChevronDownIcon } from 'lucide-react';\nimport { DropdownMenu } from '@/ds/components/DropdownMenu';\nimport type { DropdownMenuRadioOption } from '@/ds/components/DropdownMenu';\nimport { cn } from '@/lib/utils';\n\nexport type MetricsCardTitleMenuProps<V extends string> = {\n /** The card title for the picked view (e.g. \"Spend by model\"). */\n title: string;\n value: V;\n onValueChange: (value: V) => void;\n /** The views (e.g. \"By model\", \"By provider\"). */\n options: readonly DropdownMenuRadioOption<V>[];\n className?: string;\n};\n\n/**\n * A card title that switches the card's view, as on Vercel's usage cards: the title is the\n * trigger, with a chevron. The hover fill bleeds past the text so the title stays aligned.\n * Wrapped, so the top bar stretches the wrapper rather than the button, and the menu's open-state\n * nodes next to the trigger don't become the top bar's first child.\n */\nexport function MetricsCardTitleMenu<V extends string>({\n title,\n value,\n onValueChange,\n options,\n className,\n}: MetricsCardTitleMenuProps<V>) {\n return (\n <div className=\"flex min-w-0\">\n <DropdownMenu>\n <DropdownMenu.Trigger\n render={\n <button\n type=\"button\"\n className={cn(\n '-mx-1.5 -my-0.5 flex items-center gap-1 self-start rounded-md px-1.5 py-0.5 text-left text-body font-medium text-foreground hover:bg-fill-subtle',\n className,\n )}\n />\n }\n >\n {title}\n <ChevronDownIcon className=\"size-3.5 text-muted-foreground\" />\n </DropdownMenu.Trigger>\n <DropdownMenu.Content align=\"start\">\n <DropdownMenu.RadioOptions options={options} value={value} onValueChange={onValueChange} closeOnSelect />\n </DropdownMenu.Content>\n </DropdownMenu>\n </div>\n );\n}\n","import type { ReactNode } from 'react';\nimport { cn } from '@/lib/utils';\n\n/**\n * One row under the top bar for a card's controls: a legend, list column headers.\n * The first child sits on the left, the last on the right; either side may be omitted. When\n * both don't fit (a narrow card), the right side wraps to its own line, still on the right. At least 24px\n * tall, so toolbars line up across cards in the same row.\n */\nexport function MetricsCardToolbar({ children, className }: { children: ReactNode; className?: string }) {\n return (\n <div\n className={cn(\n 'flex min-h-6 min-w-0 flex-wrap items-center justify-between gap-x-4 gap-y-2 [&>*:first-child]:min-w-0 [&>*:last-child:not(:first-child)]:ml-auto',\n className,\n )}\n >\n {children}\n </div>\n );\n}\n","import type { ReactNode } from 'react';\nimport { cn } from '@/lib/utils';\n\nexport function MetricsCardTopBar({ children, className }: { children: ReactNode; className?: string }) {\n return (\n <div className={cn('flex items-start gap-4 [&>:first-child]:min-w-0 [&>:first-child]:flex-1', className)}>\n {children}\n </div>\n );\n}\n","import { SkeletonText } from '@/ds/components/Skeleton';\nimport { cn } from '@/lib/utils';\n\n/** One of several totals in a card that charts a few series, marked with its series' color. */\nexport type MetricsCardTotalPart = { label: string; value: string; color: string };\n\n/**\n * A card's total, right of the title in the same type (14px, medium). Always the top\n * bar's last item. A skeleton while loading, in the value's own line box. A card charting a\n * few series of different things (resources, threads) can give one total each, each after a\n * marker in its series' color, like the legend.\n */\nexport function MetricsCardTotal({\n value,\n isLoading = false,\n className,\n}: {\n value: string | readonly MetricsCardTotalPart[];\n isLoading?: boolean;\n className?: string;\n}) {\n return (\n <span className={cn('order-last shrink-0 text-body font-medium text-foreground tabular-nums', className)}>\n <TotalValue value={value} isLoading={isLoading} />\n </span>\n );\n}\n\nfunction TotalValue({ value, isLoading }: { value: string | readonly MetricsCardTotalPart[]; isLoading: boolean }) {\n if (isLoading) return <SkeletonText line=\"text-body\" className=\"h-4 w-14\" />;\n if (typeof value === 'string') return value;\n return (\n <span className=\"inline-flex items-center gap-3\">\n {value.map(part => (\n <span key={part.label} className=\"inline-flex items-center gap-1.5\">\n <span aria-hidden className=\"size-2 shrink-0 rounded-[2px]\" style={{ backgroundColor: part.color }} />\n {/* The marker is decorative; screen readers hear which total this is. */}\n <span className=\"sr-only\">{part.label} </span>\n {part.value}\n </span>\n ))}\n </span>\n );\n}\n","import { MetricsCardActions } from './metrics-card-actions';\nimport { MetricsCardContent } from './metrics-card-content';\nimport { MetricsCardError } from './metrics-card-error';\nimport { MetricsCardHeadline } from './metrics-card-headline';\nimport { MetricsCardLoading } from './metrics-card-loading';\nimport { MetricsCardNoData } from './metrics-card-no-data';\nimport { MetricsCardRoot } from './metrics-card-root';\nimport { MetricsCardTitle } from './metrics-card-title';\nimport { MetricsCardTitleMenu } from './metrics-card-title-menu';\nimport { MetricsCardToolbar } from './metrics-card-toolbar';\nimport { MetricsCardTopBar } from './metrics-card-top-bar';\nimport { MetricsCardTotal } from './metrics-card-total';\nimport { MetricsKpiCard } from '@/ds/components/MetricsKpiCard';\n\nexport const MetricsCard = Object.assign(MetricsCardRoot, {\n Root: MetricsCardRoot,\n Kpi: MetricsKpiCard,\n TopBar: MetricsCardTopBar,\n Toolbar: MetricsCardToolbar,\n Actions: MetricsCardActions,\n Title: MetricsCardTitle,\n TitleMenu: MetricsCardTitleMenu,\n Total: MetricsCardTotal,\n Headline: MetricsCardHeadline,\n Loading: MetricsCardLoading,\n Error: MetricsCardError,\n Content: MetricsCardContent,\n NoData: MetricsCardNoData,\n});\n"],"mappings":"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"}
|
|
@@ -173,9 +173,10 @@ function MetricsKpiCardPrev({ value, className }) {
|
|
|
173
173
|
});
|
|
174
174
|
}
|
|
175
175
|
// src/ds/components/MetricsKpiCard/metrics-kpi-card-root.tsx
|
|
176
|
-
function MetricsKpiCardRoot({ children, className }) {
|
|
176
|
+
function MetricsKpiCardRoot({ children, className, busy }) {
|
|
177
177
|
return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_Card.Card, {
|
|
178
178
|
className: require_utils.cn("min-w-72 flex-1 px-4 py-3", className),
|
|
179
|
+
"aria-busy": busy || void 0,
|
|
179
180
|
children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
|
|
180
181
|
className: "grid gap-1.5",
|
|
181
182
|
children
|
|
@@ -217,4 +218,4 @@ Object.defineProperty(exports, "MetricsKpiCard", {
|
|
|
217
218
|
}
|
|
218
219
|
});
|
|
219
220
|
|
|
220
|
-
//# sourceMappingURL=MetricsKpiCard-
|
|
221
|
+
//# sourceMappingURL=MetricsKpiCard-By_-sagx.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MetricsKpiCard-Uw0nyMgW.cjs","names":["ArrowUpRightIcon","ArrowDownRightIcon","cn","Tooltip","TooltipTrigger","Badge","TooltipContent","Txt","Txt","cn","cn","SkeletonText","Txt","cn","Txt","cn","Txt","Spinner","Txt","Txt","Txt","cn","Card","cn","cn","cn","Skeleton"],"sources":["../src/ds/components/MetricsKpiCard/metrics-kpi-card-change.tsx","../src/ds/components/MetricsKpiCard/metrics-kpi-card-error.tsx","../src/ds/components/MetricsKpiCard/metrics-kpi-card-footer.tsx","../src/ds/components/MetricsKpiCard/metrics-kpi-card-header.tsx","../src/ds/components/MetricsKpiCard/metrics-kpi-card-label.tsx","../src/ds/components/MetricsKpiCard/metrics-kpi-card-loading.tsx","../src/ds/components/MetricsKpiCard/metrics-kpi-card-no-change.tsx","../src/ds/components/MetricsKpiCard/metrics-kpi-card-no-data.tsx","../src/ds/components/MetricsKpiCard/metrics-kpi-card-prev.tsx","../src/ds/components/MetricsKpiCard/metrics-kpi-card-root.tsx","../src/ds/components/MetricsKpiCard/metrics-kpi-card-value.tsx","../src/ds/components/MetricsKpiCard/metrics-kpi-card-value-row.tsx","../src/ds/components/MetricsKpiCard/metrics-kpi-card.tsx"],"sourcesContent":["import { ArrowDownRightIcon, ArrowUpRightIcon } from 'lucide-react';\nimport { Badge } from '@/ds/components/Badge';\nimport { Tooltip, TooltipContent, TooltipTrigger } from '@/ds/components/Tooltip';\nimport { Txt } from '@/ds/components/Txt';\nimport { cn } from '@/lib/utils';\n\nconst compact = new Intl.NumberFormat('en', { notation: 'compact', maximumFractionDigits: 1 });\n\n// A change that rounds to 0.0% is no change: a neutral badge, no arrow.\nconst isFlat = (changePct: number) => Math.abs(changePct) < 0.05;\n\n// Green when the value moved the good way, red when it moved the bad way.\nfunction changeVariant(changePct: number, lowerIsBetter?: boolean) {\n if (isFlat(changePct)) return 'neutral';\n const isGood = lowerIsBetter ? changePct < 0 : changePct >= 0;\n return isGood ? 'success' : 'destructive';\n}\n\n// Past +1000% a percentage is unreadable, so show how many times bigger the value got instead.\nfunction formatChange(changePct: number) {\n if (isFlat(changePct)) return '0%';\n if (changePct >= 1000) return `×${compact.format(1 + changePct / 100)}`;\n const digits = Math.abs(changePct) < 10 ? 1 : 0;\n return `${changePct > 0 ? '+' : ''}${changePct.toFixed(digits)}%`;\n}\n\nexport function MetricsKpiCardChange({\n changePct,\n comparison = 'vs prior period',\n prevValue,\n lowerIsBetter,\n caption = false,\n className,\n}: {\n changePct: number;\n /** Names the window the change compares against, e.g. \"vs previous 7d\". Shown on hover. */\n comparison?: string;\n prevValue?: string;\n lowerIsBetter?: boolean;\n /** Show the comparison as inline text. Off by default: pair the badge with\n * `MetricsKpiCard.Footer`, which shows the prior value itself. */\n caption?: boolean;\n className?: string;\n}) {\n const flat = isFlat(changePct);\n const Icon = changePct >= 0 ? ArrowUpRightIcon : ArrowDownRightIcon;\n const formattedChange = formatChange(changePct);\n const description = prevValue ? `${comparison} (${prevValue})` : comparison;\n\n return (\n <div className={cn('flex items-center gap-1.5', className)}>\n <Tooltip>\n <TooltipTrigger render={<span tabIndex={0} className=\"inline-flex rounded-full\" />}>\n <Badge\n variant={changeVariant(changePct, lowerIsBetter)}\n emphasis=\"strong\"\n size=\"xs\"\n icon={flat ? undefined : <Icon />}\n className=\"tabular-nums\"\n aria-hidden=\"true\"\n >\n {formattedChange}\n </Badge>\n <span className=\"sr-only\">{`${formattedChange} ${description}`}</span>\n </TooltipTrigger>\n <TooltipContent>{description}</TooltipContent>\n </Tooltip>\n {caption ? (\n <Txt as=\"span\" variant=\"meta\" tone=\"faint\" aria-hidden=\"true\">\n {comparison}\n </Txt>\n ) : null}\n </div>\n );\n}\n","import { Txt } from '@/ds/components/Txt';\nimport { cn } from '@/lib/utils';\n\nexport function MetricsKpiCardError({\n message = 'Failed to load data',\n className,\n}: {\n message?: string;\n className?: string;\n}) {\n return (\n <Txt as=\"span\" variant=\"meta\" className={cn('text-destructive-foreground', className)}>\n {message}\n </Txt>\n );\n}\n","import type { ReactNode } from 'react';\nimport { SkeletonText } from '@/ds/components/Skeleton';\nimport { Txt } from '@/ds/components/Txt';\nimport { cn } from '@/lib/utils';\n\n/**\n * Bottom row under a hairline: one line of context on the left (e.g. \"1.3K server errors\")\n * and the prior period's value on the right. Only worth its hairline when there is a detail\n * line; a card with just a prior value puts it in the value row (`MetricsKpiCard.Prev`).\n */\nexport function MetricsKpiCardFooter({\n detail,\n prevValue,\n isLoading = false,\n className,\n}: {\n detail: ReactNode;\n prevValue?: string;\n /** Skeletons in the detail's and prior value's line boxes, so the card keeps its height. */\n isLoading?: boolean;\n className?: string;\n}) {\n const frame = cn('mt-1 flex items-center justify-between gap-2 border-t border-border pt-2', className);\n if (isLoading) {\n return (\n <div className={frame}>\n <SkeletonText className=\"w-24\" />\n <SkeletonText className=\"w-14\" />\n </div>\n );\n }\n if (detail == null || detail === false || detail === '') return null;\n return (\n <div className={frame}>\n <Txt as=\"span\" variant=\"body-sm\" tone=\"muted\" className=\"min-w-0 truncate\">\n {detail}\n </Txt>\n {prevValue && (\n <Txt as=\"span\" variant=\"body-sm\" tone=\"muted\" className=\"shrink-0 tabular-nums\">\n vs {prevValue}\n </Txt>\n )}\n </div>\n );\n}\n","import type { ReactNode } from 'react';\nimport { cn } from '@/lib/utils';\n\nexport function MetricsKpiCardHeader({ children, className }: { children: ReactNode; className?: string }) {\n return <div className={cn('flex flex-wrap items-center gap-x-2 gap-y-1', className)}>{children}</div>;\n}\n","import type { ReactNode } from 'react';\nimport { Txt } from '@/ds/components/Txt';\nimport { cn } from '@/lib/utils';\n\nexport function MetricsKpiCardLabel({\n children,\n icon,\n className,\n}: {\n children: string;\n /** Optional glyph shown at the far end of the label row (e.g. a lucide icon). */\n icon?: ReactNode;\n className?: string;\n}) {\n if (!icon) {\n return (\n <Txt as=\"span\" variant=\"subheading\" tone=\"ink\" className={className}>\n {children}\n </Txt>\n );\n }\n return (\n <span className={cn('flex items-center justify-between gap-2', className)}>\n <Txt as=\"span\" variant=\"subheading\" tone=\"ink\">\n {children}\n </Txt>\n <span aria-hidden className=\"shrink-0 text-muted-foreground [&>svg]:size-4\">\n {icon}\n </span>\n </span>\n );\n}\n","import { Spinner } from '@/ds/components/Spinner/spinner';\nimport { Txt } from '@/ds/components/Txt';\n\nexport function MetricsKpiCardLoading({ className }: { className?: string }) {\n return (\n <Txt as=\"span\" className={className}>\n <Spinner size=\"md\" variant=\"pulse\" className=\"text-placeholder\" />\n </Txt>\n );\n}\n","import { Txt } from '@/ds/components/Txt';\n\nexport function MetricsKpiCardNoChange({\n message = 'No previous value to compare',\n className,\n}: {\n message?: string;\n className?: string;\n}) {\n return (\n <Txt as=\"span\" variant=\"meta\" tone=\"faint\" className={className}>\n {message}\n </Txt>\n );\n}\n","import { Txt } from '@/ds/components/Txt';\n\nexport function MetricsKpiCardNoData({ message = 'No data yet', className }: { message?: string; className?: string }) {\n return (\n <Txt as=\"span\" variant=\"meta\" tone=\"faint\" className={className}>\n {message}\n </Txt>\n );\n}\n","import { Txt } from '@/ds/components/Txt';\nimport { cn } from '@/lib/utils';\n\n/**\n * The prior period's value, pushed to the end of the value row. Use it when the card has\n * no detail line; with one, pass `prevValue` to `MetricsKpiCard.Footer` instead.\n */\nexport function MetricsKpiCardPrev({ value, className }: { value: string; className?: string }) {\n return (\n <Txt\n as=\"span\"\n variant=\"body-sm\"\n tone=\"muted\"\n title={`vs ${value}`}\n // The value row keeps its children from shrinking; the prior value is the one part that\n // may give way in a narrow card, truncating with the full text in the title.\n className={cn('ml-auto min-w-0 shrink! truncate tabular-nums', className)}\n >\n vs {value}\n </Txt>\n );\n}\n","import type { ReactNode } from 'react';\nimport { Card } from '@/ds/components/Card';\nimport { cn } from '@/lib/utils';\n\nexport function MetricsKpiCardRoot({ children, className }: { children: ReactNode; className?: string }) {\n return (\n <Card className={cn('min-w-72 flex-1 px-4 py-3', className)}>\n <div className=\"grid gap-1.5\">{children}</div>\n </Card>\n );\n}\n","import type { ReactNode } from 'react';\nimport { cn } from '@/lib/utils';\n\nexport function MetricsKpiCardValue({ children, className }: { children: ReactNode; className?: string }) {\n return (\n <strong className={cn('text-title text-foreground tabular-nums [text-box:trim-both_cap_alphabetic]', className)}>\n {children}\n </strong>\n );\n}\n","import type { ReactNode } from 'react';\nimport { Skeleton } from '@/ds/components/Skeleton';\nimport { cn } from '@/lib/utils';\n\nexport function MetricsKpiCardValueRow({\n children,\n isLoading = false,\n className,\n}: {\n children?: ReactNode;\n /** A value-sized skeleton in place of the value and its change badge. */\n isLoading?: boolean;\n className?: string;\n}) {\n return (\n <div className={cn('flex min-h-6 items-center gap-2 whitespace-nowrap *:shrink-0', className)}>\n {isLoading ? <Skeleton className=\"h-6 w-20\" /> : children}\n </div>\n );\n}\n","import { MetricsKpiCardChange } from './metrics-kpi-card-change';\nimport { MetricsKpiCardError } from './metrics-kpi-card-error';\nimport { MetricsKpiCardFooter } from './metrics-kpi-card-footer';\nimport { MetricsKpiCardHeader } from './metrics-kpi-card-header';\nimport { MetricsKpiCardLabel } from './metrics-kpi-card-label';\nimport { MetricsKpiCardLoading } from './metrics-kpi-card-loading';\nimport { MetricsKpiCardNoChange } from './metrics-kpi-card-no-change';\nimport { MetricsKpiCardNoData } from './metrics-kpi-card-no-data';\nimport { MetricsKpiCardPrev } from './metrics-kpi-card-prev';\nimport { MetricsKpiCardRoot } from './metrics-kpi-card-root';\nimport { MetricsKpiCardValue } from './metrics-kpi-card-value';\nimport { MetricsKpiCardValueRow } from './metrics-kpi-card-value-row';\n\nexport const MetricsKpiCard = Object.assign(MetricsKpiCardRoot, {\n Header: MetricsKpiCardHeader,\n Label: MetricsKpiCardLabel,\n ValueRow: MetricsKpiCardValueRow,\n Value: MetricsKpiCardValue,\n Change: MetricsKpiCardChange,\n NoChange: MetricsKpiCardNoChange,\n NoData: MetricsKpiCardNoData,\n Error: MetricsKpiCardError,\n Loading: MetricsKpiCardLoading,\n Footer: MetricsKpiCardFooter,\n Prev: MetricsKpiCardPrev,\n});\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"MetricsKpiCard-By_-sagx.cjs","names":["ArrowUpRightIcon","ArrowDownRightIcon","cn","Tooltip","TooltipTrigger","Badge","TooltipContent","Txt","Txt","cn","cn","SkeletonText","Txt","cn","Txt","cn","Txt","Spinner","Txt","Txt","Txt","cn","Card","cn","cn","cn","Skeleton"],"sources":["../src/ds/components/MetricsKpiCard/metrics-kpi-card-change.tsx","../src/ds/components/MetricsKpiCard/metrics-kpi-card-error.tsx","../src/ds/components/MetricsKpiCard/metrics-kpi-card-footer.tsx","../src/ds/components/MetricsKpiCard/metrics-kpi-card-header.tsx","../src/ds/components/MetricsKpiCard/metrics-kpi-card-label.tsx","../src/ds/components/MetricsKpiCard/metrics-kpi-card-loading.tsx","../src/ds/components/MetricsKpiCard/metrics-kpi-card-no-change.tsx","../src/ds/components/MetricsKpiCard/metrics-kpi-card-no-data.tsx","../src/ds/components/MetricsKpiCard/metrics-kpi-card-prev.tsx","../src/ds/components/MetricsKpiCard/metrics-kpi-card-root.tsx","../src/ds/components/MetricsKpiCard/metrics-kpi-card-value.tsx","../src/ds/components/MetricsKpiCard/metrics-kpi-card-value-row.tsx","../src/ds/components/MetricsKpiCard/metrics-kpi-card.tsx"],"sourcesContent":["import { ArrowDownRightIcon, ArrowUpRightIcon } from 'lucide-react';\nimport { Badge } from '@/ds/components/Badge';\nimport { Tooltip, TooltipContent, TooltipTrigger } from '@/ds/components/Tooltip';\nimport { Txt } from '@/ds/components/Txt';\nimport { cn } from '@/lib/utils';\n\nconst compact = new Intl.NumberFormat('en', { notation: 'compact', maximumFractionDigits: 1 });\n\n// A change that rounds to 0.0% is no change: a neutral badge, no arrow.\nconst isFlat = (changePct: number) => Math.abs(changePct) < 0.05;\n\n// Green when the value moved the good way, red when it moved the bad way.\nfunction changeVariant(changePct: number, lowerIsBetter?: boolean) {\n if (isFlat(changePct)) return 'neutral';\n const isGood = lowerIsBetter ? changePct < 0 : changePct >= 0;\n return isGood ? 'success' : 'destructive';\n}\n\n// Past +1000% a percentage is unreadable, so show how many times bigger the value got instead.\nfunction formatChange(changePct: number) {\n if (isFlat(changePct)) return '0%';\n if (changePct >= 1000) return `×${compact.format(1 + changePct / 100)}`;\n const digits = Math.abs(changePct) < 10 ? 1 : 0;\n return `${changePct > 0 ? '+' : ''}${changePct.toFixed(digits)}%`;\n}\n\nexport function MetricsKpiCardChange({\n changePct,\n comparison = 'vs prior period',\n prevValue,\n lowerIsBetter,\n caption = false,\n className,\n}: {\n changePct: number;\n /** Names the window the change compares against, e.g. \"vs previous 7d\". Shown on hover. */\n comparison?: string;\n prevValue?: string;\n lowerIsBetter?: boolean;\n /** Show the comparison as inline text. Off by default: pair the badge with\n * `MetricsKpiCard.Footer`, which shows the prior value itself. */\n caption?: boolean;\n className?: string;\n}) {\n const flat = isFlat(changePct);\n const Icon = changePct >= 0 ? ArrowUpRightIcon : ArrowDownRightIcon;\n const formattedChange = formatChange(changePct);\n const description = prevValue ? `${comparison} (${prevValue})` : comparison;\n\n return (\n <div className={cn('flex items-center gap-1.5', className)}>\n <Tooltip>\n <TooltipTrigger render={<span tabIndex={0} className=\"inline-flex rounded-full\" />}>\n <Badge\n variant={changeVariant(changePct, lowerIsBetter)}\n emphasis=\"strong\"\n size=\"xs\"\n icon={flat ? undefined : <Icon />}\n className=\"tabular-nums\"\n aria-hidden=\"true\"\n >\n {formattedChange}\n </Badge>\n <span className=\"sr-only\">{`${formattedChange} ${description}`}</span>\n </TooltipTrigger>\n <TooltipContent>{description}</TooltipContent>\n </Tooltip>\n {caption ? (\n <Txt as=\"span\" variant=\"meta\" tone=\"faint\" aria-hidden=\"true\">\n {comparison}\n </Txt>\n ) : null}\n </div>\n );\n}\n","import { Txt } from '@/ds/components/Txt';\nimport { cn } from '@/lib/utils';\n\nexport function MetricsKpiCardError({\n message = 'Failed to load data',\n className,\n}: {\n message?: string;\n className?: string;\n}) {\n return (\n <Txt as=\"span\" variant=\"meta\" className={cn('text-destructive-foreground', className)}>\n {message}\n </Txt>\n );\n}\n","import type { ReactNode } from 'react';\nimport { SkeletonText } from '@/ds/components/Skeleton';\nimport { Txt } from '@/ds/components/Txt';\nimport { cn } from '@/lib/utils';\n\n/**\n * Bottom row under a hairline: one line of context on the left (e.g. \"1.3K server errors\")\n * and the prior period's value on the right. Only worth its hairline when there is a detail\n * line; a card with just a prior value puts it in the value row (`MetricsKpiCard.Prev`).\n */\nexport function MetricsKpiCardFooter({\n detail,\n prevValue,\n isLoading = false,\n className,\n}: {\n detail: ReactNode;\n prevValue?: string;\n /** Skeletons in the detail's and prior value's line boxes, so the card keeps its height. */\n isLoading?: boolean;\n className?: string;\n}) {\n const frame = cn('mt-1 flex items-center justify-between gap-2 border-t border-border pt-2', className);\n if (isLoading) {\n return (\n <div className={frame}>\n <SkeletonText className=\"w-24\" />\n <SkeletonText className=\"w-14\" />\n </div>\n );\n }\n if (detail == null || detail === false || detail === '') return null;\n return (\n <div className={frame}>\n <Txt as=\"span\" variant=\"body-sm\" tone=\"muted\" className=\"min-w-0 truncate\">\n {detail}\n </Txt>\n {prevValue && (\n <Txt as=\"span\" variant=\"body-sm\" tone=\"muted\" className=\"shrink-0 tabular-nums\">\n vs {prevValue}\n </Txt>\n )}\n </div>\n );\n}\n","import type { ReactNode } from 'react';\nimport { cn } from '@/lib/utils';\n\nexport function MetricsKpiCardHeader({ children, className }: { children: ReactNode; className?: string }) {\n return <div className={cn('flex flex-wrap items-center gap-x-2 gap-y-1', className)}>{children}</div>;\n}\n","import type { ReactNode } from 'react';\nimport { Txt } from '@/ds/components/Txt';\nimport { cn } from '@/lib/utils';\n\nexport function MetricsKpiCardLabel({\n children,\n icon,\n className,\n}: {\n children: string;\n /** Optional glyph shown at the far end of the label row (e.g. a lucide icon). */\n icon?: ReactNode;\n className?: string;\n}) {\n if (!icon) {\n return (\n <Txt as=\"span\" variant=\"subheading\" tone=\"ink\" className={className}>\n {children}\n </Txt>\n );\n }\n return (\n <span className={cn('flex items-center justify-between gap-2', className)}>\n <Txt as=\"span\" variant=\"subheading\" tone=\"ink\">\n {children}\n </Txt>\n <span aria-hidden className=\"shrink-0 text-muted-foreground [&>svg]:size-4\">\n {icon}\n </span>\n </span>\n );\n}\n","import { Spinner } from '@/ds/components/Spinner/spinner';\nimport { Txt } from '@/ds/components/Txt';\n\nexport function MetricsKpiCardLoading({ className }: { className?: string }) {\n return (\n <Txt as=\"span\" className={className}>\n <Spinner size=\"md\" variant=\"pulse\" className=\"text-placeholder\" />\n </Txt>\n );\n}\n","import { Txt } from '@/ds/components/Txt';\n\nexport function MetricsKpiCardNoChange({\n message = 'No previous value to compare',\n className,\n}: {\n message?: string;\n className?: string;\n}) {\n return (\n <Txt as=\"span\" variant=\"meta\" tone=\"faint\" className={className}>\n {message}\n </Txt>\n );\n}\n","import { Txt } from '@/ds/components/Txt';\n\nexport function MetricsKpiCardNoData({ message = 'No data yet', className }: { message?: string; className?: string }) {\n return (\n <Txt as=\"span\" variant=\"meta\" tone=\"faint\" className={className}>\n {message}\n </Txt>\n );\n}\n","import { Txt } from '@/ds/components/Txt';\nimport { cn } from '@/lib/utils';\n\n/**\n * The prior period's value, pushed to the end of the value row. Use it when the card has\n * no detail line; with one, pass `prevValue` to `MetricsKpiCard.Footer` instead.\n */\nexport function MetricsKpiCardPrev({ value, className }: { value: string; className?: string }) {\n return (\n <Txt\n as=\"span\"\n variant=\"body-sm\"\n tone=\"muted\"\n title={`vs ${value}`}\n // The value row keeps its children from shrinking; the prior value is the one part that\n // may give way in a narrow card, truncating with the full text in the title.\n className={cn('ml-auto min-w-0 shrink! truncate tabular-nums', className)}\n >\n vs {value}\n </Txt>\n );\n}\n","import type { ReactNode } from 'react';\nimport { Card } from '@/ds/components/Card';\nimport { cn } from '@/lib/utils';\n\nexport type MetricsKpiCardRootProps = {\n children: ReactNode;\n className?: string;\n /** The reading is loading or being replaced. */\n busy?: boolean;\n};\n\nexport function MetricsKpiCardRoot({ children, className, busy }: MetricsKpiCardRootProps) {\n return (\n <Card className={cn('min-w-72 flex-1 px-4 py-3', className)} aria-busy={busy || undefined}>\n <div className=\"grid gap-1.5\">{children}</div>\n </Card>\n );\n}\n","import type { ReactNode } from 'react';\nimport { cn } from '@/lib/utils';\n\nexport function MetricsKpiCardValue({ children, className }: { children: ReactNode; className?: string }) {\n return (\n <strong className={cn('text-title text-foreground tabular-nums [text-box:trim-both_cap_alphabetic]', className)}>\n {children}\n </strong>\n );\n}\n","import type { ReactNode } from 'react';\nimport { Skeleton } from '@/ds/components/Skeleton';\nimport { cn } from '@/lib/utils';\n\nexport function MetricsKpiCardValueRow({\n children,\n isLoading = false,\n className,\n}: {\n children?: ReactNode;\n /** A value-sized skeleton in place of the value and its change badge. */\n isLoading?: boolean;\n className?: string;\n}) {\n return (\n <div className={cn('flex min-h-6 items-center gap-2 whitespace-nowrap *:shrink-0', className)}>\n {isLoading ? <Skeleton className=\"h-6 w-20\" /> : children}\n </div>\n );\n}\n","import { MetricsKpiCardChange } from './metrics-kpi-card-change';\nimport { MetricsKpiCardError } from './metrics-kpi-card-error';\nimport { MetricsKpiCardFooter } from './metrics-kpi-card-footer';\nimport { MetricsKpiCardHeader } from './metrics-kpi-card-header';\nimport { MetricsKpiCardLabel } from './metrics-kpi-card-label';\nimport { MetricsKpiCardLoading } from './metrics-kpi-card-loading';\nimport { MetricsKpiCardNoChange } from './metrics-kpi-card-no-change';\nimport { MetricsKpiCardNoData } from './metrics-kpi-card-no-data';\nimport { MetricsKpiCardPrev } from './metrics-kpi-card-prev';\nimport { MetricsKpiCardRoot } from './metrics-kpi-card-root';\nimport { MetricsKpiCardValue } from './metrics-kpi-card-value';\nimport { MetricsKpiCardValueRow } from './metrics-kpi-card-value-row';\n\nexport const MetricsKpiCard = Object.assign(MetricsKpiCardRoot, {\n Header: MetricsKpiCardHeader,\n Label: MetricsKpiCardLabel,\n ValueRow: MetricsKpiCardValueRow,\n Value: MetricsKpiCardValue,\n Change: MetricsKpiCardChange,\n NoChange: MetricsKpiCardNoChange,\n NoData: MetricsKpiCardNoData,\n Error: MetricsKpiCardError,\n Loading: MetricsKpiCardLoading,\n Footer: MetricsKpiCardFooter,\n Prev: MetricsKpiCardPrev,\n});\n"],"mappings":"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"}
|
|
@@ -173,9 +173,10 @@ function MetricsKpiCardPrev({ value, className }) {
|
|
|
173
173
|
});
|
|
174
174
|
}
|
|
175
175
|
// src/ds/components/MetricsKpiCard/metrics-kpi-card-root.tsx
|
|
176
|
-
function MetricsKpiCardRoot({ children, className }) {
|
|
176
|
+
function MetricsKpiCardRoot({ children, className, busy }) {
|
|
177
177
|
return /* @__PURE__ */ jsx(Card, {
|
|
178
178
|
className: cn("min-w-72 flex-1 px-4 py-3", className),
|
|
179
|
+
"aria-busy": busy || void 0,
|
|
179
180
|
children: /* @__PURE__ */ jsx("div", {
|
|
180
181
|
className: "grid gap-1.5",
|
|
181
182
|
children
|
|
@@ -212,4 +213,4 @@ var MetricsKpiCard = Object.assign(MetricsKpiCardRoot, {
|
|
|
212
213
|
});
|
|
213
214
|
export { MetricsKpiCard as t };
|
|
214
215
|
|
|
215
|
-
//# sourceMappingURL=MetricsKpiCard-
|
|
216
|
+
//# sourceMappingURL=MetricsKpiCard-OHbAElTl.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MetricsKpiCard-Idxjl-dn.js","names":[],"sources":["../src/ds/components/MetricsKpiCard/metrics-kpi-card-change.tsx","../src/ds/components/MetricsKpiCard/metrics-kpi-card-error.tsx","../src/ds/components/MetricsKpiCard/metrics-kpi-card-footer.tsx","../src/ds/components/MetricsKpiCard/metrics-kpi-card-header.tsx","../src/ds/components/MetricsKpiCard/metrics-kpi-card-label.tsx","../src/ds/components/MetricsKpiCard/metrics-kpi-card-loading.tsx","../src/ds/components/MetricsKpiCard/metrics-kpi-card-no-change.tsx","../src/ds/components/MetricsKpiCard/metrics-kpi-card-no-data.tsx","../src/ds/components/MetricsKpiCard/metrics-kpi-card-prev.tsx","../src/ds/components/MetricsKpiCard/metrics-kpi-card-root.tsx","../src/ds/components/MetricsKpiCard/metrics-kpi-card-value.tsx","../src/ds/components/MetricsKpiCard/metrics-kpi-card-value-row.tsx","../src/ds/components/MetricsKpiCard/metrics-kpi-card.tsx"],"sourcesContent":["import { ArrowDownRightIcon, ArrowUpRightIcon } from 'lucide-react';\nimport { Badge } from '@/ds/components/Badge';\nimport { Tooltip, TooltipContent, TooltipTrigger } from '@/ds/components/Tooltip';\nimport { Txt } from '@/ds/components/Txt';\nimport { cn } from '@/lib/utils';\n\nconst compact = new Intl.NumberFormat('en', { notation: 'compact', maximumFractionDigits: 1 });\n\n// A change that rounds to 0.0% is no change: a neutral badge, no arrow.\nconst isFlat = (changePct: number) => Math.abs(changePct) < 0.05;\n\n// Green when the value moved the good way, red when it moved the bad way.\nfunction changeVariant(changePct: number, lowerIsBetter?: boolean) {\n if (isFlat(changePct)) return 'neutral';\n const isGood = lowerIsBetter ? changePct < 0 : changePct >= 0;\n return isGood ? 'success' : 'destructive';\n}\n\n// Past +1000% a percentage is unreadable, so show how many times bigger the value got instead.\nfunction formatChange(changePct: number) {\n if (isFlat(changePct)) return '0%';\n if (changePct >= 1000) return `×${compact.format(1 + changePct / 100)}`;\n const digits = Math.abs(changePct) < 10 ? 1 : 0;\n return `${changePct > 0 ? '+' : ''}${changePct.toFixed(digits)}%`;\n}\n\nexport function MetricsKpiCardChange({\n changePct,\n comparison = 'vs prior period',\n prevValue,\n lowerIsBetter,\n caption = false,\n className,\n}: {\n changePct: number;\n /** Names the window the change compares against, e.g. \"vs previous 7d\". Shown on hover. */\n comparison?: string;\n prevValue?: string;\n lowerIsBetter?: boolean;\n /** Show the comparison as inline text. Off by default: pair the badge with\n * `MetricsKpiCard.Footer`, which shows the prior value itself. */\n caption?: boolean;\n className?: string;\n}) {\n const flat = isFlat(changePct);\n const Icon = changePct >= 0 ? ArrowUpRightIcon : ArrowDownRightIcon;\n const formattedChange = formatChange(changePct);\n const description = prevValue ? `${comparison} (${prevValue})` : comparison;\n\n return (\n <div className={cn('flex items-center gap-1.5', className)}>\n <Tooltip>\n <TooltipTrigger render={<span tabIndex={0} className=\"inline-flex rounded-full\" />}>\n <Badge\n variant={changeVariant(changePct, lowerIsBetter)}\n emphasis=\"strong\"\n size=\"xs\"\n icon={flat ? undefined : <Icon />}\n className=\"tabular-nums\"\n aria-hidden=\"true\"\n >\n {formattedChange}\n </Badge>\n <span className=\"sr-only\">{`${formattedChange} ${description}`}</span>\n </TooltipTrigger>\n <TooltipContent>{description}</TooltipContent>\n </Tooltip>\n {caption ? (\n <Txt as=\"span\" variant=\"meta\" tone=\"faint\" aria-hidden=\"true\">\n {comparison}\n </Txt>\n ) : null}\n </div>\n );\n}\n","import { Txt } from '@/ds/components/Txt';\nimport { cn } from '@/lib/utils';\n\nexport function MetricsKpiCardError({\n message = 'Failed to load data',\n className,\n}: {\n message?: string;\n className?: string;\n}) {\n return (\n <Txt as=\"span\" variant=\"meta\" className={cn('text-destructive-foreground', className)}>\n {message}\n </Txt>\n );\n}\n","import type { ReactNode } from 'react';\nimport { SkeletonText } from '@/ds/components/Skeleton';\nimport { Txt } from '@/ds/components/Txt';\nimport { cn } from '@/lib/utils';\n\n/**\n * Bottom row under a hairline: one line of context on the left (e.g. \"1.3K server errors\")\n * and the prior period's value on the right. Only worth its hairline when there is a detail\n * line; a card with just a prior value puts it in the value row (`MetricsKpiCard.Prev`).\n */\nexport function MetricsKpiCardFooter({\n detail,\n prevValue,\n isLoading = false,\n className,\n}: {\n detail: ReactNode;\n prevValue?: string;\n /** Skeletons in the detail's and prior value's line boxes, so the card keeps its height. */\n isLoading?: boolean;\n className?: string;\n}) {\n const frame = cn('mt-1 flex items-center justify-between gap-2 border-t border-border pt-2', className);\n if (isLoading) {\n return (\n <div className={frame}>\n <SkeletonText className=\"w-24\" />\n <SkeletonText className=\"w-14\" />\n </div>\n );\n }\n if (detail == null || detail === false || detail === '') return null;\n return (\n <div className={frame}>\n <Txt as=\"span\" variant=\"body-sm\" tone=\"muted\" className=\"min-w-0 truncate\">\n {detail}\n </Txt>\n {prevValue && (\n <Txt as=\"span\" variant=\"body-sm\" tone=\"muted\" className=\"shrink-0 tabular-nums\">\n vs {prevValue}\n </Txt>\n )}\n </div>\n );\n}\n","import type { ReactNode } from 'react';\nimport { cn } from '@/lib/utils';\n\nexport function MetricsKpiCardHeader({ children, className }: { children: ReactNode; className?: string }) {\n return <div className={cn('flex flex-wrap items-center gap-x-2 gap-y-1', className)}>{children}</div>;\n}\n","import type { ReactNode } from 'react';\nimport { Txt } from '@/ds/components/Txt';\nimport { cn } from '@/lib/utils';\n\nexport function MetricsKpiCardLabel({\n children,\n icon,\n className,\n}: {\n children: string;\n /** Optional glyph shown at the far end of the label row (e.g. a lucide icon). */\n icon?: ReactNode;\n className?: string;\n}) {\n if (!icon) {\n return (\n <Txt as=\"span\" variant=\"subheading\" tone=\"ink\" className={className}>\n {children}\n </Txt>\n );\n }\n return (\n <span className={cn('flex items-center justify-between gap-2', className)}>\n <Txt as=\"span\" variant=\"subheading\" tone=\"ink\">\n {children}\n </Txt>\n <span aria-hidden className=\"shrink-0 text-muted-foreground [&>svg]:size-4\">\n {icon}\n </span>\n </span>\n );\n}\n","import { Spinner } from '@/ds/components/Spinner/spinner';\nimport { Txt } from '@/ds/components/Txt';\n\nexport function MetricsKpiCardLoading({ className }: { className?: string }) {\n return (\n <Txt as=\"span\" className={className}>\n <Spinner size=\"md\" variant=\"pulse\" className=\"text-placeholder\" />\n </Txt>\n );\n}\n","import { Txt } from '@/ds/components/Txt';\n\nexport function MetricsKpiCardNoChange({\n message = 'No previous value to compare',\n className,\n}: {\n message?: string;\n className?: string;\n}) {\n return (\n <Txt as=\"span\" variant=\"meta\" tone=\"faint\" className={className}>\n {message}\n </Txt>\n );\n}\n","import { Txt } from '@/ds/components/Txt';\n\nexport function MetricsKpiCardNoData({ message = 'No data yet', className }: { message?: string; className?: string }) {\n return (\n <Txt as=\"span\" variant=\"meta\" tone=\"faint\" className={className}>\n {message}\n </Txt>\n );\n}\n","import { Txt } from '@/ds/components/Txt';\nimport { cn } from '@/lib/utils';\n\n/**\n * The prior period's value, pushed to the end of the value row. Use it when the card has\n * no detail line; with one, pass `prevValue` to `MetricsKpiCard.Footer` instead.\n */\nexport function MetricsKpiCardPrev({ value, className }: { value: string; className?: string }) {\n return (\n <Txt\n as=\"span\"\n variant=\"body-sm\"\n tone=\"muted\"\n title={`vs ${value}`}\n // The value row keeps its children from shrinking; the prior value is the one part that\n // may give way in a narrow card, truncating with the full text in the title.\n className={cn('ml-auto min-w-0 shrink! truncate tabular-nums', className)}\n >\n vs {value}\n </Txt>\n );\n}\n","import type { ReactNode } from 'react';\nimport { Card } from '@/ds/components/Card';\nimport { cn } from '@/lib/utils';\n\nexport function MetricsKpiCardRoot({ children, className }: { children: ReactNode; className?: string }) {\n return (\n <Card className={cn('min-w-72 flex-1 px-4 py-3', className)}>\n <div className=\"grid gap-1.5\">{children}</div>\n </Card>\n );\n}\n","import type { ReactNode } from 'react';\nimport { cn } from '@/lib/utils';\n\nexport function MetricsKpiCardValue({ children, className }: { children: ReactNode; className?: string }) {\n return (\n <strong className={cn('text-title text-foreground tabular-nums [text-box:trim-both_cap_alphabetic]', className)}>\n {children}\n </strong>\n );\n}\n","import type { ReactNode } from 'react';\nimport { Skeleton } from '@/ds/components/Skeleton';\nimport { cn } from '@/lib/utils';\n\nexport function MetricsKpiCardValueRow({\n children,\n isLoading = false,\n className,\n}: {\n children?: ReactNode;\n /** A value-sized skeleton in place of the value and its change badge. */\n isLoading?: boolean;\n className?: string;\n}) {\n return (\n <div className={cn('flex min-h-6 items-center gap-2 whitespace-nowrap *:shrink-0', className)}>\n {isLoading ? <Skeleton className=\"h-6 w-20\" /> : children}\n </div>\n );\n}\n","import { MetricsKpiCardChange } from './metrics-kpi-card-change';\nimport { MetricsKpiCardError } from './metrics-kpi-card-error';\nimport { MetricsKpiCardFooter } from './metrics-kpi-card-footer';\nimport { MetricsKpiCardHeader } from './metrics-kpi-card-header';\nimport { MetricsKpiCardLabel } from './metrics-kpi-card-label';\nimport { MetricsKpiCardLoading } from './metrics-kpi-card-loading';\nimport { MetricsKpiCardNoChange } from './metrics-kpi-card-no-change';\nimport { MetricsKpiCardNoData } from './metrics-kpi-card-no-data';\nimport { MetricsKpiCardPrev } from './metrics-kpi-card-prev';\nimport { MetricsKpiCardRoot } from './metrics-kpi-card-root';\nimport { MetricsKpiCardValue } from './metrics-kpi-card-value';\nimport { MetricsKpiCardValueRow } from './metrics-kpi-card-value-row';\n\nexport const MetricsKpiCard = Object.assign(MetricsKpiCardRoot, {\n Header: MetricsKpiCardHeader,\n Label: MetricsKpiCardLabel,\n ValueRow: MetricsKpiCardValueRow,\n Value: MetricsKpiCardValue,\n Change: MetricsKpiCardChange,\n NoChange: MetricsKpiCardNoChange,\n NoData: MetricsKpiCardNoData,\n Error: MetricsKpiCardError,\n Loading: MetricsKpiCardLoading,\n Footer: MetricsKpiCardFooter,\n Prev: MetricsKpiCardPrev,\n});\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"MetricsKpiCard-OHbAElTl.js","names":[],"sources":["../src/ds/components/MetricsKpiCard/metrics-kpi-card-change.tsx","../src/ds/components/MetricsKpiCard/metrics-kpi-card-error.tsx","../src/ds/components/MetricsKpiCard/metrics-kpi-card-footer.tsx","../src/ds/components/MetricsKpiCard/metrics-kpi-card-header.tsx","../src/ds/components/MetricsKpiCard/metrics-kpi-card-label.tsx","../src/ds/components/MetricsKpiCard/metrics-kpi-card-loading.tsx","../src/ds/components/MetricsKpiCard/metrics-kpi-card-no-change.tsx","../src/ds/components/MetricsKpiCard/metrics-kpi-card-no-data.tsx","../src/ds/components/MetricsKpiCard/metrics-kpi-card-prev.tsx","../src/ds/components/MetricsKpiCard/metrics-kpi-card-root.tsx","../src/ds/components/MetricsKpiCard/metrics-kpi-card-value.tsx","../src/ds/components/MetricsKpiCard/metrics-kpi-card-value-row.tsx","../src/ds/components/MetricsKpiCard/metrics-kpi-card.tsx"],"sourcesContent":["import { ArrowDownRightIcon, ArrowUpRightIcon } from 'lucide-react';\nimport { Badge } from '@/ds/components/Badge';\nimport { Tooltip, TooltipContent, TooltipTrigger } from '@/ds/components/Tooltip';\nimport { Txt } from '@/ds/components/Txt';\nimport { cn } from '@/lib/utils';\n\nconst compact = new Intl.NumberFormat('en', { notation: 'compact', maximumFractionDigits: 1 });\n\n// A change that rounds to 0.0% is no change: a neutral badge, no arrow.\nconst isFlat = (changePct: number) => Math.abs(changePct) < 0.05;\n\n// Green when the value moved the good way, red when it moved the bad way.\nfunction changeVariant(changePct: number, lowerIsBetter?: boolean) {\n if (isFlat(changePct)) return 'neutral';\n const isGood = lowerIsBetter ? changePct < 0 : changePct >= 0;\n return isGood ? 'success' : 'destructive';\n}\n\n// Past +1000% a percentage is unreadable, so show how many times bigger the value got instead.\nfunction formatChange(changePct: number) {\n if (isFlat(changePct)) return '0%';\n if (changePct >= 1000) return `×${compact.format(1 + changePct / 100)}`;\n const digits = Math.abs(changePct) < 10 ? 1 : 0;\n return `${changePct > 0 ? '+' : ''}${changePct.toFixed(digits)}%`;\n}\n\nexport function MetricsKpiCardChange({\n changePct,\n comparison = 'vs prior period',\n prevValue,\n lowerIsBetter,\n caption = false,\n className,\n}: {\n changePct: number;\n /** Names the window the change compares against, e.g. \"vs previous 7d\". Shown on hover. */\n comparison?: string;\n prevValue?: string;\n lowerIsBetter?: boolean;\n /** Show the comparison as inline text. Off by default: pair the badge with\n * `MetricsKpiCard.Footer`, which shows the prior value itself. */\n caption?: boolean;\n className?: string;\n}) {\n const flat = isFlat(changePct);\n const Icon = changePct >= 0 ? ArrowUpRightIcon : ArrowDownRightIcon;\n const formattedChange = formatChange(changePct);\n const description = prevValue ? `${comparison} (${prevValue})` : comparison;\n\n return (\n <div className={cn('flex items-center gap-1.5', className)}>\n <Tooltip>\n <TooltipTrigger render={<span tabIndex={0} className=\"inline-flex rounded-full\" />}>\n <Badge\n variant={changeVariant(changePct, lowerIsBetter)}\n emphasis=\"strong\"\n size=\"xs\"\n icon={flat ? undefined : <Icon />}\n className=\"tabular-nums\"\n aria-hidden=\"true\"\n >\n {formattedChange}\n </Badge>\n <span className=\"sr-only\">{`${formattedChange} ${description}`}</span>\n </TooltipTrigger>\n <TooltipContent>{description}</TooltipContent>\n </Tooltip>\n {caption ? (\n <Txt as=\"span\" variant=\"meta\" tone=\"faint\" aria-hidden=\"true\">\n {comparison}\n </Txt>\n ) : null}\n </div>\n );\n}\n","import { Txt } from '@/ds/components/Txt';\nimport { cn } from '@/lib/utils';\n\nexport function MetricsKpiCardError({\n message = 'Failed to load data',\n className,\n}: {\n message?: string;\n className?: string;\n}) {\n return (\n <Txt as=\"span\" variant=\"meta\" className={cn('text-destructive-foreground', className)}>\n {message}\n </Txt>\n );\n}\n","import type { ReactNode } from 'react';\nimport { SkeletonText } from '@/ds/components/Skeleton';\nimport { Txt } from '@/ds/components/Txt';\nimport { cn } from '@/lib/utils';\n\n/**\n * Bottom row under a hairline: one line of context on the left (e.g. \"1.3K server errors\")\n * and the prior period's value on the right. Only worth its hairline when there is a detail\n * line; a card with just a prior value puts it in the value row (`MetricsKpiCard.Prev`).\n */\nexport function MetricsKpiCardFooter({\n detail,\n prevValue,\n isLoading = false,\n className,\n}: {\n detail: ReactNode;\n prevValue?: string;\n /** Skeletons in the detail's and prior value's line boxes, so the card keeps its height. */\n isLoading?: boolean;\n className?: string;\n}) {\n const frame = cn('mt-1 flex items-center justify-between gap-2 border-t border-border pt-2', className);\n if (isLoading) {\n return (\n <div className={frame}>\n <SkeletonText className=\"w-24\" />\n <SkeletonText className=\"w-14\" />\n </div>\n );\n }\n if (detail == null || detail === false || detail === '') return null;\n return (\n <div className={frame}>\n <Txt as=\"span\" variant=\"body-sm\" tone=\"muted\" className=\"min-w-0 truncate\">\n {detail}\n </Txt>\n {prevValue && (\n <Txt as=\"span\" variant=\"body-sm\" tone=\"muted\" className=\"shrink-0 tabular-nums\">\n vs {prevValue}\n </Txt>\n )}\n </div>\n );\n}\n","import type { ReactNode } from 'react';\nimport { cn } from '@/lib/utils';\n\nexport function MetricsKpiCardHeader({ children, className }: { children: ReactNode; className?: string }) {\n return <div className={cn('flex flex-wrap items-center gap-x-2 gap-y-1', className)}>{children}</div>;\n}\n","import type { ReactNode } from 'react';\nimport { Txt } from '@/ds/components/Txt';\nimport { cn } from '@/lib/utils';\n\nexport function MetricsKpiCardLabel({\n children,\n icon,\n className,\n}: {\n children: string;\n /** Optional glyph shown at the far end of the label row (e.g. a lucide icon). */\n icon?: ReactNode;\n className?: string;\n}) {\n if (!icon) {\n return (\n <Txt as=\"span\" variant=\"subheading\" tone=\"ink\" className={className}>\n {children}\n </Txt>\n );\n }\n return (\n <span className={cn('flex items-center justify-between gap-2', className)}>\n <Txt as=\"span\" variant=\"subheading\" tone=\"ink\">\n {children}\n </Txt>\n <span aria-hidden className=\"shrink-0 text-muted-foreground [&>svg]:size-4\">\n {icon}\n </span>\n </span>\n );\n}\n","import { Spinner } from '@/ds/components/Spinner/spinner';\nimport { Txt } from '@/ds/components/Txt';\n\nexport function MetricsKpiCardLoading({ className }: { className?: string }) {\n return (\n <Txt as=\"span\" className={className}>\n <Spinner size=\"md\" variant=\"pulse\" className=\"text-placeholder\" />\n </Txt>\n );\n}\n","import { Txt } from '@/ds/components/Txt';\n\nexport function MetricsKpiCardNoChange({\n message = 'No previous value to compare',\n className,\n}: {\n message?: string;\n className?: string;\n}) {\n return (\n <Txt as=\"span\" variant=\"meta\" tone=\"faint\" className={className}>\n {message}\n </Txt>\n );\n}\n","import { Txt } from '@/ds/components/Txt';\n\nexport function MetricsKpiCardNoData({ message = 'No data yet', className }: { message?: string; className?: string }) {\n return (\n <Txt as=\"span\" variant=\"meta\" tone=\"faint\" className={className}>\n {message}\n </Txt>\n );\n}\n","import { Txt } from '@/ds/components/Txt';\nimport { cn } from '@/lib/utils';\n\n/**\n * The prior period's value, pushed to the end of the value row. Use it when the card has\n * no detail line; with one, pass `prevValue` to `MetricsKpiCard.Footer` instead.\n */\nexport function MetricsKpiCardPrev({ value, className }: { value: string; className?: string }) {\n return (\n <Txt\n as=\"span\"\n variant=\"body-sm\"\n tone=\"muted\"\n title={`vs ${value}`}\n // The value row keeps its children from shrinking; the prior value is the one part that\n // may give way in a narrow card, truncating with the full text in the title.\n className={cn('ml-auto min-w-0 shrink! truncate tabular-nums', className)}\n >\n vs {value}\n </Txt>\n );\n}\n","import type { ReactNode } from 'react';\nimport { Card } from '@/ds/components/Card';\nimport { cn } from '@/lib/utils';\n\nexport type MetricsKpiCardRootProps = {\n children: ReactNode;\n className?: string;\n /** The reading is loading or being replaced. */\n busy?: boolean;\n};\n\nexport function MetricsKpiCardRoot({ children, className, busy }: MetricsKpiCardRootProps) {\n return (\n <Card className={cn('min-w-72 flex-1 px-4 py-3', className)} aria-busy={busy || undefined}>\n <div className=\"grid gap-1.5\">{children}</div>\n </Card>\n );\n}\n","import type { ReactNode } from 'react';\nimport { cn } from '@/lib/utils';\n\nexport function MetricsKpiCardValue({ children, className }: { children: ReactNode; className?: string }) {\n return (\n <strong className={cn('text-title text-foreground tabular-nums [text-box:trim-both_cap_alphabetic]', className)}>\n {children}\n </strong>\n );\n}\n","import type { ReactNode } from 'react';\nimport { Skeleton } from '@/ds/components/Skeleton';\nimport { cn } from '@/lib/utils';\n\nexport function MetricsKpiCardValueRow({\n children,\n isLoading = false,\n className,\n}: {\n children?: ReactNode;\n /** A value-sized skeleton in place of the value and its change badge. */\n isLoading?: boolean;\n className?: string;\n}) {\n return (\n <div className={cn('flex min-h-6 items-center gap-2 whitespace-nowrap *:shrink-0', className)}>\n {isLoading ? <Skeleton className=\"h-6 w-20\" /> : children}\n </div>\n );\n}\n","import { MetricsKpiCardChange } from './metrics-kpi-card-change';\nimport { MetricsKpiCardError } from './metrics-kpi-card-error';\nimport { MetricsKpiCardFooter } from './metrics-kpi-card-footer';\nimport { MetricsKpiCardHeader } from './metrics-kpi-card-header';\nimport { MetricsKpiCardLabel } from './metrics-kpi-card-label';\nimport { MetricsKpiCardLoading } from './metrics-kpi-card-loading';\nimport { MetricsKpiCardNoChange } from './metrics-kpi-card-no-change';\nimport { MetricsKpiCardNoData } from './metrics-kpi-card-no-data';\nimport { MetricsKpiCardPrev } from './metrics-kpi-card-prev';\nimport { MetricsKpiCardRoot } from './metrics-kpi-card-root';\nimport { MetricsKpiCardValue } from './metrics-kpi-card-value';\nimport { MetricsKpiCardValueRow } from './metrics-kpi-card-value-row';\n\nexport const MetricsKpiCard = Object.assign(MetricsKpiCardRoot, {\n Header: MetricsKpiCardHeader,\n Label: MetricsKpiCardLabel,\n ValueRow: MetricsKpiCardValueRow,\n Value: MetricsKpiCardValue,\n Change: MetricsKpiCardChange,\n NoChange: MetricsKpiCardNoChange,\n NoData: MetricsKpiCardNoData,\n Error: MetricsKpiCardError,\n Loading: MetricsKpiCardLoading,\n Footer: MetricsKpiCardFooter,\n Prev: MetricsKpiCardPrev,\n});\n"],"mappings":"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"}
|
|
@@ -11,43 +11,26 @@ import { useChartDefsId } from "./primitives/use-chart-defs-id.es.js";
|
|
|
11
11
|
import { jsx, jsxs } from "react/jsx-runtime";
|
|
12
12
|
import { Area, CartesianGrid, ComposedChart, Line, Tooltip } from "recharts";
|
|
13
13
|
// src/ds/components/MetricsLineChart/metrics-line-chart-legend.tsx
|
|
14
|
-
|
|
14
|
+
/** A marker and a label per series. Totals belong in the card's header, not here. */
|
|
15
|
+
function MetricsLineChartLegend({ series, className }) {
|
|
15
16
|
return /* @__PURE__ */ jsx("div", {
|
|
16
17
|
className: cn("flex flex-wrap items-center gap-x-4 gap-y-1", className),
|
|
17
|
-
children: series.map((s) => {
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
className: "
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
className: "max-w-48 truncate",
|
|
34
|
-
children: s.label
|
|
35
|
-
}),
|
|
36
|
-
aggregated && /* @__PURE__ */ jsxs(Txt, {
|
|
37
|
-
as: "span",
|
|
38
|
-
variant: "body-sm",
|
|
39
|
-
tone: "muted",
|
|
40
|
-
className: "-ml-1 tabular-nums",
|
|
41
|
-
children: [aggregated.value, aggregated.suffix && /* @__PURE__ */ jsxs(Txt, {
|
|
42
|
-
as: "span",
|
|
43
|
-
variant: "body-sm",
|
|
44
|
-
tone: "faint",
|
|
45
|
-
children: [" ", aggregated.suffix]
|
|
46
|
-
})]
|
|
47
|
-
})
|
|
48
|
-
]
|
|
49
|
-
}, s.dataKey);
|
|
50
|
-
})
|
|
18
|
+
children: series.map((s) => /* @__PURE__ */ jsxs("div", {
|
|
19
|
+
className: "inline-flex items-center gap-1.5",
|
|
20
|
+
children: [s.dashed ? /* @__PURE__ */ jsx("span", {
|
|
21
|
+
className: "h-0 w-3 shrink-0 border-t-2 border-dashed",
|
|
22
|
+
style: { borderColor: s.color }
|
|
23
|
+
}) : /* @__PURE__ */ jsx("div", {
|
|
24
|
+
className: "size-2 shrink-0 rounded-[2px]",
|
|
25
|
+
style: { backgroundColor: s.color }
|
|
26
|
+
}), /* @__PURE__ */ jsx(Txt, {
|
|
27
|
+
as: "span",
|
|
28
|
+
variant: "body-sm",
|
|
29
|
+
tone: "muted",
|
|
30
|
+
className: "max-w-48 truncate",
|
|
31
|
+
children: s.label
|
|
32
|
+
})]
|
|
33
|
+
}, s.dataKey))
|
|
51
34
|
});
|
|
52
35
|
}
|
|
53
36
|
// src/ds/components/MetricsLineChart/metrics-line-chart-tooltip.tsx
|
|
@@ -129,8 +112,8 @@ var LINE_STYLES = {
|
|
|
129
112
|
* edge where the line starts and stops. A mask sized to each fill's own box.
|
|
130
113
|
*/
|
|
131
114
|
var THIN_FILL_FADE = "[&_.recharts-area-area]:mask-x-from-[calc(100%-24px)]";
|
|
132
|
-
/** A
|
|
133
|
-
var SPARSE_POINTS =
|
|
115
|
+
/** A lone point draws no line at all, so it gets a dot; lines already bridge gaps (`connectNulls`). */
|
|
116
|
+
var SPARSE_POINTS = 1;
|
|
134
117
|
function HoverLine({ points }) {
|
|
135
118
|
const [top, bottom] = points ?? [];
|
|
136
119
|
if (!top || !bottom) return null;
|
|
@@ -149,7 +132,6 @@ function MetricsLineChart(props) {
|
|
|
149
132
|
return /* @__PURE__ */ jsxs("div", {
|
|
150
133
|
className: root,
|
|
151
134
|
children: [showLegend && /* @__PURE__ */ jsx(MetricsLineChartLegend, {
|
|
152
|
-
data: isLoading ? void 0 : data,
|
|
153
135
|
series,
|
|
154
136
|
className: "mb-4"
|
|
155
137
|
}), isLoading ? /* @__PURE__ */ jsx(ChartSkeleton, {
|
|
@@ -266,4 +248,4 @@ function isRecord(value) {
|
|
|
266
248
|
}
|
|
267
249
|
export { MetricsLineChartTooltip as n, MetricsLineChartLegend as r, MetricsLineChart as t };
|
|
268
250
|
|
|
269
|
-
//# sourceMappingURL=MetricsLineChart-
|
|
251
|
+
//# sourceMappingURL=MetricsLineChart-BhHoduO0.js.map
|