@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
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AgentIndicator-to30W73z.cjs","names":["segment","_Fragment","useId","useRef","cn","forwardRef","useId"],"sources":["../src/ds/components/AgentIndicator/shapes.ts","../src/ds/components/AgentIndicator/paint.ts","../src/ds/components/AgentIndicator/poses.ts","../src/ds/components/AgentIndicator/animate.ts","../src/ds/components/AgentIndicator/agent-indicator.tsx","../src/ds/components/AgentIndicator/agent-glyph.tsx"],"sourcesContent":["export type Point = [number, number];\nexport type Frame = number[];\nexport type Inside = (p: Point) => boolean;\nexport type Segment = [number, number, number, number, number];\nexport type TrailPoint = [number, number, number, number];\ntype Ball = [number, number, number];\n\nexport const TAU = Math.PI * 2;\nexport const RAYS = 64;\nexport const BALLS = 2;\nexport const LINES = 2;\nexport const TRAIL = 64;\nexport const BODY = 2 * RAYS + 4;\nexport const KIT = BODY + 3 * BALLS + 10 * LINES;\nexport const FRAME = KIT + 4 * TRAIL;\n\nexport const clamp01 = (x: number) => (x < 0 ? 0 : x > 1 ? 1 : x);\nexport const range = (n: number) => Array.from({ length: n }, (_, i) => i);\n\nexport function once<T>(make: () => T) {\n let value: T | undefined;\n return () => (value ??= make());\n}\nexport const lerpFrame = (a: Frame, b: Frame, w: number): Frame => a.map((v, i) => v + ((b[i] ?? v) - v) * w);\n\nexport function sstep(a: number, b: number, x: number) {\n const k = clamp01((x - a) / (b - a));\n return k * k * (3 - 2 * k);\n}\n\nexport function cubicBezier(x1: number, y1: number, x2: number, y2: number) {\n const cx = 3 * x1;\n const bx = 3 * (x2 - x1) - cx;\n const ax = 1 - cx - bx;\n const cy = 3 * y1;\n const by = 3 * (y2 - y1) - cy;\n const ay = 1 - cy - by;\n const at = (t: number) => ((ax * t + bx) * t + cx) * t;\n return (x: number) => {\n if (x <= 0) return 0;\n if (x >= 1) return 1;\n let lo = 0;\n let hi = 1;\n let t = x;\n for (let i = 0; i < 24 && Math.abs(at(t) - x) >= 1e-5; i++) {\n if (at(t) < x) lo = t;\n else hi = t;\n t = (lo + hi) / 2;\n }\n return ((ay * t + by) * t + cy) * t;\n };\n}\n\nfunction segDist([px, py]: Point, [ax, ay]: Point, [bx, by]: Point) {\n const vx = bx - ax;\n const vy = by - ay;\n const k = clamp01(((px - ax) * vx + (py - ay) * vy) / (vx * vx + vy * vy));\n return Math.hypot(px - ax - vx * k, py - ay - vy * k);\n}\n\nexport const inCirc =\n (cx: number, cy: number, r: number): Inside =>\n ([x, y]) =>\n (x - cx) ** 2 + (y - cy) ** 2 < r * r;\n\nexport const inCap =\n (a: Point, b: Point, r: number): Inside =>\n p =>\n segDist(p, a, b) < r;\n\nexport const inShape =\n (poly: Point[]): Inside =>\n ([x, y]) => {\n let inside = false;\n let previous = poly.at(-1);\n for (const point of poly) {\n if (!previous) break;\n const [xi, yi] = point;\n const [xj, yj] = previous;\n if (yi > y !== yj > y && x < ((xj - xi) * (y - yi)) / (yj - yi) + xi) inside = !inside;\n previous = point;\n }\n return inside;\n };\n\nexport const inRoundRect =\n (cx: number, cy: number, hx: number, hy: number, r: number): Inside =>\n ([x, y]) =>\n Math.hypot(Math.max(0, Math.abs(x - cx) - hx + r), Math.max(0, Math.abs(y - cy) - hy + r)) < r;\n\nexport const inOval =\n (cx: number, cy: number, rx: number, ry: number, b = 0, n = 11): Inside =>\n ([x, y]) =>\n ((x - cx) / rx) ** 2 + ((y - cy) / ry) ** 2 < (1 + b * Math.cos(n * Math.atan2(y - cy, x - cx))) ** 2;\n\nexport const anyOf =\n (...shapes: Inside[]): Inside =>\n p =>\n shapes.some(inside => inside(p));\n\nexport const allOf =\n (...shapes: Inside[]): Inside =>\n p =>\n shapes.every(inside => inside(p));\n\nexport const nothing: Inside = () => false;\n\nexport const placed =\n (inside: Inside, a: number, [tx, ty]: Point = [0, 0]): Inside =>\n ([x, y]) => {\n const c = Math.cos(a);\n const s = Math.sin(a);\n const dx = x - tx;\n const dy = y - ty;\n return inside([dx * c + dy * s, -dx * s + dy * c]);\n };\n\nexport const around = ([cx, cy]: Point, a: number, r: number): Point => [cx + r * Math.cos(a), cy + r * Math.sin(a)];\n\nexport const dot = (p: Point, d: number): TrailPoint[] => [\n [...p, d, 0],\n [...p, 0, 0],\n];\n\nfunction radial(inside: Inside, [cx, cy]: Point): number[] {\n const r = range(RAYS).map(i => {\n const a = (TAU * i) / RAYS;\n const at = (d: number) => inside([cx + Math.cos(a) * d, cy + Math.sin(a) * d]);\n let d = 0;\n while (d < 12 && at(d)) d += 0.3;\n let lo = Math.max(0, d - 0.3);\n let hi = d;\n for (let k = 0; k < 6; k++) {\n const m = (lo + hi) / 2;\n if (at(m)) lo = m;\n else hi = m;\n }\n return lo;\n });\n const ring = (i: number) => r[(i + RAYS) % RAYS] ?? 0;\n return range(RAYS).map(i => (ring(i - 1) + 2 * ring(i) + ring(i + 1)) / 4);\n}\n\nconst NO_HOLE = range(RAYS).map(() => 0);\n\nexport interface KitParts {\n hole?: Inside;\n holeCenter?: Point;\n balls?: Ball[];\n cuts?: Segment[];\n inks?: Segment[];\n}\n\nexport function kit(\n outer: Inside,\n c: Point,\n { hole, holeCenter = c, balls = [], cuts = [], inks = [] }: KitParts = {},\n) {\n return [\n ...c,\n ...radial(outer, c),\n ...holeCenter,\n ...(hole ? radial(hole, holeCenter) : NO_HOLE),\n ...range(BALLS).flatMap(i => balls[i] ?? [...c, 0]),\n ...range(LINES).flatMap(i => cuts[i] ?? [...c, ...c, 0]),\n ...range(LINES).flatMap(i => inks[i] ?? [...c, ...c, 0]),\n ];\n}\n\nexport function withTrail(kitFrame: Frame, points: TrailPoint[] = []): Frame {\n const [x = 0, y = 0] = points.at(-1) ?? kitFrame;\n return [...kitFrame, ...range(TRAIL).flatMap(i => points[i] ?? [x, y, 0, 0])];\n}\n","import { BALLS, BODY, KIT, LINES, range, RAYS, TAU, TRAIL } from './shapes';\nimport type { Frame } from './shapes';\n\nexport interface Ball {\n cx: string;\n cy: string;\n r: string;\n}\n\n/** A segment with no width keeps its last `d`, so the live painter skips rewriting it. */\nexport interface Stroke {\n width: string;\n d?: string;\n}\n\nexport interface FrameParts {\n body: string;\n balls: Ball[];\n cuts: Stroke[];\n inks: Stroke[];\n trailCuts: Stroke[];\n trailInks: Stroke[];\n}\n\nconst xy = (x: number, y: number) => `${x.toFixed(2)} ${y.toFixed(2)}`;\n\nfunction outline(cx: number, cy: number, radii: number[]) {\n const points = radii.map((r, i): [number, number] => [\n cx + r * Math.cos((TAU * i) / RAYS),\n cy + r * Math.sin((TAU * i) / RAYS),\n ]);\n const mid = ([ax, ay]: [number, number], [bx, by]: [number, number] = [ax, ay]) => xy((ax + bx) / 2, (ay + by) / 2);\n const curves = points.map((p, i) => `Q${xy(...p)} ${mid(p, points[(i + 1) % RAYS])}`).join('');\n const [first = [cx, cy]] = points;\n return `M${mid(first, points.at(-1))}${curves}Z`;\n}\n\nfunction segment(x1: number, y1: number, x2: number, y2: number, width: number): Stroke {\n const strokeWidth = Math.max(0, width).toFixed(3);\n if (Number(strokeWidth) === 0) return { width: strokeWidth };\n return {\n width: strokeWidth,\n d: `M${x1.toFixed(3)} ${y1.toFixed(3)}L${(x2 + 0.001).toFixed(3)} ${y2.toFixed(3)}`,\n };\n}\n\nconst HOLE_AT = 2 + RAYS;\nconst LINES_AT = BODY + 3 * BALLS;\n\nexport function frameParts(f: Frame): FrameParts {\n const at = (i: number) => f[i] ?? 0;\n const hole = f.slice(HOLE_AT + 2, HOLE_AT + 2 + RAYS);\n const holePath = hole.some(r => r > 0.05) ? outline(at(HOLE_AT), at(HOLE_AT + 1), hole) : '';\n const line = (k: number) => segment(at(k), at(k + 1), at(k + 2), at(k + 3), at(k + 4));\n const trail = (k: number, widthAt: number) => segment(at(k), at(k + 1), at(k + 4), at(k + 5), at(k + widthAt));\n\n return {\n body: outline(at(0), at(1), f.slice(2, HOLE_AT)) + holePath,\n balls: range(BALLS).map(i => {\n const k = BODY + 3 * i;\n return { cx: at(k).toFixed(2), cy: at(k + 1).toFixed(2), r: Math.max(0, at(k + 2)).toFixed(2) };\n }),\n cuts: range(LINES).map(i => line(LINES_AT + 5 * i)),\n inks: range(LINES).map(i => line(LINES_AT + 5 * (LINES + i))),\n trailCuts: range(TRAIL - 1).map(i => trail(KIT + 4 * i, 3)),\n trailInks: range(TRAIL - 1).map(i => trail(KIT + 4 * i, 2)),\n };\n}\n\nconst attribute = (element: Element, name: string, value: string) => {\n if (element.getAttribute(name) !== value) element.setAttribute(name, value);\n};\n\nfunction stroke(path: SVGPathElement, { width, d }: Stroke) {\n attribute(path, 'stroke-width', width);\n if (d) attribute(path, 'd', d);\n}\n\nexport function painter(svg: SVGSVGElement) {\n const parts = <T extends Element>(name: string) => [...svg.querySelectorAll<T>(`[data-part=\"${name}\"]`)];\n const [body] = parts<SVGPathElement>('body');\n if (!body) throw new Error('AgentIndicator is missing its body path');\n const balls = parts<SVGCircleElement>('ball');\n const strokes = {\n cuts: parts<SVGPathElement>('cut'),\n inks: parts<SVGPathElement>('ink'),\n trailCuts: parts<SVGPathElement>('trail-cut'),\n trailInks: parts<SVGPathElement>('trail-ink'),\n };\n\n return (f: Frame) => {\n const drawn = frameParts(f);\n attribute(body, 'd', drawn.body);\n balls.forEach((ball, i) => {\n const { cx = '0', cy = '0', r = '0' } = drawn.balls[i] ?? {};\n attribute(ball, 'cx', cx);\n attribute(ball, 'cy', cy);\n attribute(ball, 'r', r);\n });\n for (const name of ['cuts', 'inks', 'trailCuts', 'trailInks'] as const) {\n strokes[name].forEach((path, i) => {\n const part = drawn[name][i];\n if (part) stroke(path, part);\n });\n }\n };\n}\n","import {\n allOf,\n anyOf,\n around,\n dot,\n inCap,\n inCirc,\n inOval,\n inRoundRect,\n inShape,\n kit,\n lerpFrame,\n nothing,\n once,\n placed,\n range,\n sstep,\n TAU,\n withTrail,\n} from './shapes';\nimport type { Frame, Inside, Point, Segment, TrailPoint } from './shapes';\n\nexport const agentIndicatorStates = [\n 'idle',\n 'memory',\n 'thinking',\n 'reading',\n 'searching',\n 'finding',\n 'browsing',\n 'editing',\n 'running',\n 'deleting',\n 'skill',\n 'tool',\n 'waiting',\n 'done',\n 'error',\n 'context',\n 'notice',\n] as const;\n\nexport type AgentIndicatorState = (typeof agentIndicatorStates)[number];\n\nexport type Pose = (clock: number, sinceEntered: number) => Frame;\n\nexport const MORPH_SECONDS = 0.52;\n\nconst GROW = 1.2;\nconst settle = (sinceEntered: number) => Math.max(0, sinceEntered - MORPH_SECONDS);\n\nconst AGENT_HEAD: Point = [0, -5.5];\nconst AGENT_LIMBS: [Point, Point, Point, Point] = [\n [-5.778, -1.293],\n [5.778, -1.293],\n [3.57, 5.5],\n [-3.57, 5.5],\n];\nconst AGENT_WEB: Point[] = [AGENT_LIMBS[0], [-4.029, -2.566], [4.029, -2.566], ...AGENT_LIMBS.slice(1)];\nconst AGENT_NOTCHES: Point[] = [\n [-4.674, 2.104],\n [4.674, 2.104],\n [0, 5.5],\n];\nconst AGENT_DOT = 4.326;\n\nconst agent = once(() =>\n withTrail(kit(inShape(AGENT_WEB), [0, 1.8]), [\n ...dot(AGENT_HEAD, AGENT_DOT),\n [...AGENT_HEAD, 0, 9.968],\n [...AGENT_HEAD, 0, 0],\n ...AGENT_LIMBS.flatMap(limb => dot(limb, AGENT_DOT)),\n ...AGENT_NOTCHES.flatMap((notch): TrailPoint[] => [\n [...notch, 0, 2.818],\n [...notch, 0, 0],\n ]),\n ]),\n);\n\nconst memory: Pose = t => {\n const c = t / 2.4;\n const turn = Math.floor(c) + sstep(0, 0.6, c - Math.floor(c));\n const minute = -Math.PI / 2 - TAU * turn;\n const hour = -2.6 - (TAU / 12) * turn;\n return withTrail(\n kit(inCirc(0, 0, 7.8), [0, 0], {\n cuts: [\n [0, 0, 4.6 * Math.cos(minute), 4.6 * Math.sin(minute), 2.2],\n [0, 0, 3 * Math.cos(hour), 3 * Math.sin(hour), 2.2],\n ],\n }),\n );\n};\n\nconst sulcus =\n ([a, b, amp, waves]: [Point, Point, number, number]) =>\n (u: number): Point => {\n const dx = b[0] - a[0];\n const dy = b[1] - a[1];\n const length = Math.hypot(dx, dy);\n const s = amp * Math.sin(Math.PI * waves * u);\n return [a[0] + dx * u - (dy / length) * s, a[1] + dy * u + (dx / length) * s];\n };\n\nconst PROFILE = anyOf(\n inOval(-0.3, -1.3, 7.9, 5.3, 0.035),\n inOval(-1.6, 2.2, 4.6, 2.6),\n inOval(5, 3.4, 2.8, 2),\n inCap([1.4, 2.6], [2.1, 6.8], 1.2),\n);\nconst SULCI = (\n [\n [[-5.8, 1.4], [3, -1.6], 0.5, 2],\n [[0.9, -7], [-0.6, -2.6], 0.45, 3],\n [[-7.6, -2.2], [-3.4, -3.4], 0.55, 2],\n [[4.6, -6], [5.6, -1.6], 0.5, 2],\n [[2.4, 2.4], [8.2, 1.8], 0, 1],\n ] satisfies [Point, Point, number, number][]\n).map(sulcus);\n\nconst brainKit = once(() => kit(PROFILE, [0.4, 0.4], { cuts: [[2.9, 3, 3.4, 6.2, 1.2]] }));\n\nconst brain = (t: number) =>\n withTrail(\n brainKit(),\n SULCI.flatMap((fold, j) =>\n range(9).map((i): TrailPoint => {\n const pulse = 0.7 * Math.max(0, Math.cos(2.2 * t - 1.3 * j - (3 * i) / 8)) ** 6;\n return [...fold(i / 8), 0, i < 8 ? (j ? 1.6 : 1.9) + pulse : 0];\n }),\n ),\n );\n\nconst BULB = anyOf(\n inCirc(0, -1.2, 4.6),\n inShape([\n [-3.1, 1.9],\n [3.1, 1.9],\n [2.1, 4.4],\n [-2.1, 4.4],\n ]),\n inRoundRect(0, 5.5, 2.1, 1.4, 0.8),\n);\nconst BULB_RAYS = [-132, -48, -174, -6, -90].map(d => (d * Math.PI) / 180);\n\nconst bulbKit = once(() =>\n kit(BULB, [0, 0], {\n cuts: [\n [0, -2, 0, -2, 0],\n [-2.6, 5.4, 2.6, 5.4, 0.8],\n ],\n }),\n);\n\nconst bulb = (light: number) =>\n withTrail(\n bulbKit(),\n BULB_RAYS.flatMap((a, j) => {\n const n = j < 4 ? 15 : 2;\n return range(n).map(\n (i): TrailPoint => [...around([0, -1.2], a, 5.9 + (1.5 * light * i) / (n - 1)), i < n - 1 ? 1.8 * light : 0, 0],\n );\n }),\n );\n\nconst thinking: Pose = t => {\n const p = (t / 5) % 1;\n const lit = sstep(0.28, 0.4, p) * (1 - sstep(0.76, 0.88, p));\n const glow = sstep(0.4, 0.5, p) * (1 - sstep(0.68, 0.76, p));\n return lerpFrame(brain(t), bulb(glow * (1 + 0.06 * Math.sin(8 * t))), lit);\n};\n\nconst TELESCOPE = anyOf(\n inShape([\n [-6.8, -1.3],\n [5.4, -2.6],\n [5.4, 2.6],\n [-6.8, 1.3],\n ]),\n inCap([-6.8, 0], [-8, 0], 1.6),\n inCirc(0, 1.6, 1.8),\n);\nconst MOUNT: Point = [-0.4, 1];\n\nconst browsing: Pose = t => {\n const a = -0.5 + 0.2 * Math.sin(0.9 * t) + 0.06 * Math.sin(2.3 * t);\n return withTrail(\n kit(placed(TELESCOPE, a, MOUNT), MOUNT, {\n inks: [\n [MOUNT[0], MOUNT[1] + 1.4, -4.2, 8, 1.8],\n [MOUNT[0], MOUNT[1] + 1.4, 3.4, 8, 1.8],\n ],\n }),\n );\n};\n\nconst NUT: Inside = ([x, y]) => {\n const side = Math.PI / 3;\n const a = ((Math.atan2(y, x) % side) + side) % side;\n return Math.hypot(x, y) < (7.4 * Math.cos(side / 2)) / Math.cos(a - side / 2);\n};\n\nconst nut = (turn: number) => withTrail(kit(placed(NUT, (Math.PI / 3) * turn), [0, 0], { hole: inCirc(0, 0, 2.8) }));\nconst restingNut = once(() => nut(0));\n\nconst tool: Pose = t => {\n const c = t / 1.1;\n const turn = sstep(0.55, 0.85, c - Math.floor(c));\n return Number.isInteger(turn) ? restingNut() : nut(turn);\n};\n\nconst turned = ([x, y]: Point, a: number): Point => [\n x * Math.cos(a) - y * Math.sin(a),\n x * Math.sin(a) + y * Math.cos(a),\n];\nconst shifted = ([x, y]: Point, [dx, dy]: Point): Point => [x + dx, y + dy];\nconst segment = (a: Point, b: Point, width: number): Segment => [...a, ...b, width];\nconst polyline = (points: Point[], ink: number, cut: number): TrailPoint[] =>\n points.map((p, i) => (i < points.length - 1 ? [...p, ink, cut] : [...p, 0, 0]));\nconst dotCut = (p: Point, d: number): TrailPoint[] => [\n [...p, 0, d],\n [...p, 0, 0],\n];\n\nconst ALMOND = allOf(inCirc(0, 4.6, 8.8), inCirc(0, -4.6, 8.8));\n\nconst reading: Pose = t => {\n const iris: Point = [1.5 * Math.sin((TAU * t) / 2.6), 0];\n return withTrail(kit(ALMOND, [0, 0], { hole: inCirc(...iris, 3.1), holeCenter: iris, balls: [[...iris, 1.7]] }));\n};\n\nconst LENS: Point = [-1.6, -1.6];\nconst MAGNIFIER = anyOf(inCirc(...LENS, 5), inCap([1.8, 1.8], [5.4, 5.4], 1.7));\n\nconst searching: Pose = t => {\n const w = (TAU * t) / 2.4;\n const at: Point = [0.9 * Math.sin(w), 0.5 * Math.sin(2 * w)];\n const lens = shifted(LENS, at);\n return withTrail(kit(placed(MAGNIFIER, 0, at), lens, { hole: inCirc(...lens, 3.1), holeCenter: lens }));\n};\n\nconst FOLDER = anyOf(inRoundRect(0, 0.8, 7.6, 5, 1.8), inRoundRect(-4, -4.4, 3.6, 1.4, 1.2));\nconst FOLDER_LENS: Point = [-0.6, 0.6];\n\nconst finding: Pose = t => {\n const w = (TAU * t) / 2.8;\n const lens = shifted(FOLDER_LENS, [1.3 * Math.sin(w), 0.6 * Math.sin(2 * w)]);\n return withTrail(\n kit(FOLDER, [0, 0.4], {\n hole: inCirc(...lens, 2.9),\n holeCenter: lens,\n balls: [[...lens, 1.7]],\n cuts: [segment(shifted(lens, [2.1, 2.1]), shifted(lens, [3.5, 3.5]), 1.5)],\n }),\n );\n};\n\nconst PEN = anyOf(\n inCap([-2.6, 2.6], [5, -5], 2.3),\n inShape([\n [-4.23, 0.97],\n [-0.97, 4.23],\n [-5.9, 5.9],\n ]),\n);\nconst PEN_BANDS: [Point, Point][] = [\n [\n [-3.4, 0.6],\n [-0.6, 3.4],\n ],\n [\n [1.4, -4.2],\n [4.2, -1.4],\n ],\n];\n\nconst editing: Pose = t => {\n const w = (TAU * t) / 0.9;\n const at: Point = [0.45 * Math.sin(w), 0.3 * Math.sin(2 * w)];\n return withTrail(\n kit(placed(PEN, 0, at), at, {\n cuts: PEN_BANDS.map(([a, b]) => segment(shifted(a, at), shifted(b, at), 1)),\n }),\n );\n};\n\nconst SCREEN = inRoundRect(0, 0, 7.6, 6.2, 2);\nconst PROMPT: Point[] = [\n [-4, -2.4],\n [-1.2, 0.2],\n [-4, 2.8],\n];\n\nconst running: Pose = t => {\n const p = (t / 1.1) % 1;\n const cursor = 1 - sstep(0.45, 0.55, p) + sstep(0.9, 1, p);\n return withTrail(\n kit(SCREEN, [0, 0], { cuts: [segment([0.6, 2.8], [4.2, 2.8], 1.8 * cursor)] }),\n polyline(PROMPT, 0, 1.8),\n );\n};\n\nconst CAN = anyOf(inRoundRect(0, 1.6, 5.4, 5.2, 1.4), inRoundRect(0, -4.4, 7.2, 1, 1), inRoundRect(0, -6, 2.4, 1, 0.8));\nconst CAN_CUTS: [Point, Point][] = [\n [\n [-1.9, -0.8],\n [-1.9, 4.4],\n ],\n [\n [1.9, -0.8],\n [1.9, 4.4],\n ],\n];\nconst LID_SEAM: Point[] = [\n [-5.6, -3.2],\n [5.6, -3.2],\n];\n\nconst deleting: Pose = t => {\n const a = 0.08 * Math.sin((TAU * t) / 1.2);\n return withTrail(\n kit(placed(CAN, a), [0, 0], { cuts: CAN_CUTS.map(([p, q]) => segment(turned(p, a), turned(q, a), 1.3)) }),\n polyline(\n LID_SEAM.map(p => turned(p, a)),\n 0,\n 0.9,\n ),\n );\n};\n\nconst page = (side: 1 | -1, lift: number): Inside =>\n inShape(\n (\n [\n [-0.1, -3.6],\n [3, -5.2 - lift],\n [7.6, -5 - lift],\n [7.6, 4.6],\n [3, 4.8],\n [-0.1, 6.2],\n ] satisfies Point[]\n ).map(([x, y]): Point => [side * x, y]),\n );\n\nconst skill: Pose = t => {\n const lift = 0.5 * Math.sin((TAU * t) / 2.2);\n return withTrail(kit(anyOf(page(1, lift), page(-1, -lift)), [0, 0.4], { cuts: [segment([0, -3.2], [0, 5.6], 1)] }));\n};\n\nconst LAYER_TIERS = [-3.2, 0, 3.2];\nconst diamond = (cy: number): [Point, Point, Point, Point] => [\n [0, cy - 3.6],\n [7.4, cy],\n [0, cy + 3.6],\n [-7.4, cy],\n];\n\nconst context = once(() =>\n withTrail(\n kit(anyOf(...LAYER_TIERS.map(cy => inShape(diamond(cy)))), [0, 0]),\n LAYER_TIERS.slice(0, -1).flatMap(cy => {\n const [, right, bottom, left] = diamond(cy);\n return polyline([left, bottom, right], 0, 1);\n }),\n ),\n);\n\nconst notice = once(() =>\n withTrail(kit(inCirc(0, 0, 7.4), [0, 0], { cuts: [segment([0, -0.4], [0, 3.8], 1.9)] }), dotCut([0, -3.6], 2.3)),\n);\n\nconst blank = once(() => kit(nothing, [0, 0]));\nconst line =\n (a: Point, b: Point) =>\n (u: number): Point => [a[0] + (b[0] - a[0]) * u, a[1] + (b[1] - a[1]) * u];\n\nconst twoStrokes = (first: (u: number) => Point, second: (u: number) => Point, width: number) =>\n withTrail(\n blank(),\n [first, second].flatMap(stroke => range(32).map((i): TrailPoint => [...stroke(i / 31), i < 31 ? width : 0, 0])),\n );\n\nconst waiting = once(() => twoStrokes(line([-2.7, -3.4], [-2.7, 3.4]), line([2.7, -3.4], [2.7, 3.4]), 2.2));\n\nconst CHECK: [Point, Point, Point] = [\n [-6.2, 0.4],\n [-2.2, 4.4],\n [6.4, -4.8],\n];\n\nconst done: Pose = (_, s) => {\n const q = settle(s);\n const k = 1 + 0.08 * Math.exp(-q * 7) * Math.sin(q * 15);\n const at = ([x, y]: Point): Point => [x * k, y * k];\n const [a, b, c] = CHECK;\n return twoStrokes(line(at(a), at(b)), line(at(b), at(c)), 2.1);\n};\n\nconst CROSS = 4.6;\n\nconst error: Pose = (_, s) => {\n const q = settle(s);\n const shake = 1.4 * Math.exp(-q * 5) * Math.sin(q * 36);\n return twoStrokes(\n line([-CROSS + shake, -CROSS], [CROSS + shake, CROSS]),\n line([CROSS + shake, -CROSS], [-CROSS + shake, CROSS]),\n 2.1,\n );\n};\n\nconst grown =\n (pose: Pose): Pose =>\n (t, s) =>\n pose(t, s).map(v => v * GROW);\n\nconst RINGING_SECONDS = MORPH_SECONDS + 2;\n\nexport const restsAfterSeconds: Partial<Record<AgentIndicatorState, number>> = {\n idle: 0,\n waiting: 0,\n context: 0,\n notice: 0,\n done: RINGING_SECONDS,\n error: RINGING_SECONDS,\n};\n\nexport const poses: Record<AgentIndicatorState, Pose> = {\n idle: grown(agent),\n memory: grown(memory),\n thinking: grown(thinking),\n reading: grown(reading),\n searching: grown(searching),\n finding: grown(finding),\n browsing: grown(browsing),\n editing: grown(editing),\n running: grown(running),\n deleting: grown(deleting),\n skill: grown(skill),\n tool: grown(tool),\n waiting: grown(waiting),\n done: grown(done),\n error: grown(error),\n context: grown(context),\n notice: grown(notice),\n};\n","import { painter } from './paint';\nimport { MORPH_SECONDS, poses, restsAfterSeconds } from './poses';\nimport type { AgentIndicatorState } from './poses';\nimport { clamp01, cubicBezier, lerpFrame } from './shapes';\nimport type { Frame } from './shapes';\n\nconst ease = cubicBezier(0.65, 0, 0.35, 1);\nconst MAX_STEP_SECONDS = 0.05;\n\nconst prefersReducedMotion = () => window.matchMedia?.('(prefers-reduced-motion: reduce)').matches ?? false;\n\nexport function animate(svg: SVGSVGElement) {\n const paint = painter(svg);\n const reduced = prefersReducedMotion();\n let clock = 0;\n let state: AgentIndicatorState | undefined;\n let enteredAt = 0;\n let leaving: ((t: number) => Frame) | undefined;\n let shown: Frame | undefined;\n let onScreen = true;\n let frame = 0;\n let last = 0;\n\n const draw = () => {\n if (!state) return;\n let f = poses[state](clock, clock - enteredAt);\n const morph = clamp01((clock - enteredAt) / MORPH_SECONDS);\n if (morph >= 1) leaving = undefined;\n if (leaving) f = lerpFrame(leaving(clock), f, ease(morph));\n shown = f;\n paint(f);\n };\n\n const resting = () => !leaving && state !== undefined && clock - enteredAt >= (restsAfterSeconds[state] ?? Infinity);\n\n const tick = (now: number) => {\n clock += Math.min(MAX_STEP_SECONDS, (now - last) / 1000);\n last = now;\n draw();\n frame = resting() ? 0 : requestAnimationFrame(tick);\n };\n\n const wake = () => {\n const running = onScreen && !reduced && !resting();\n if (running && !frame) {\n last = performance.now();\n frame = requestAnimationFrame(tick);\n }\n if (!running && frame) {\n cancelAnimationFrame(frame);\n frame = 0;\n }\n };\n\n const viewport = new IntersectionObserver(entries => {\n onScreen = entries.at(-1)?.isIntersecting ?? onScreen;\n wake();\n });\n viewport.observe(svg);\n\n return {\n show(next: AgentIndicatorState) {\n if (next === state) return;\n if (state && !reduced) {\n const outgoing = poses[state];\n const outgoingAt = enteredAt;\n const frozen = shown;\n leaving = leaving && frozen ? () => frozen : t => outgoing(t, t - outgoingAt);\n }\n state = next;\n enteredAt = clock;\n draw();\n wake();\n },\n stop() {\n cancelAnimationFrame(frame);\n viewport.disconnect();\n },\n };\n}\n","import { useId, useLayoutEffect, useRef } from 'react';\nimport type { CSSProperties } from 'react';\n\nimport { animate } from './animate';\nimport { MORPH_SECONDS } from './poses';\nimport type { AgentIndicatorState } from './poses';\nimport { BALLS, LINES, range, TRAIL } from './shapes';\nimport { cn } from '@/lib/utils';\nimport './agent-indicator.css';\n\nexport interface AgentIndicatorProps {\n state: AgentIndicatorState;\n /** Holds idle and waiting without their ambient motion, for a state that is over rather than live. */\n still?: boolean;\n className?: string;\n}\n\ninterface IndicatorStyle extends CSSProperties {\n '--agent-indicator-morph': string;\n}\n\nconst MORPH: IndicatorStyle = { '--agent-indicator-morph': `${MORPH_SECONDS}s` };\n\nfunction Strokes({ part, count }: { part: string; count: number }) {\n return range(count).map(i => <path key={i} data-part={part} />);\n}\n\nconst CUTS = (\n <g fill=\"none\" stroke=\"black\" strokeLinecap=\"round\">\n <Strokes part=\"cut\" count={LINES} />\n <Strokes part=\"trail-cut\" count={TRAIL - 1} />\n </g>\n);\n\nconst SHAPE = (\n <>\n <path data-part=\"body\" fillRule=\"evenodd\" />\n {range(BALLS).map(i => (\n <circle key={i} data-part=\"ball\" />\n ))}\n <g fill=\"none\" stroke=\"currentColor\" strokeLinecap=\"round\">\n <Strokes part=\"ink\" count={LINES} />\n </g>\n </>\n);\n\nconst TRAIL_INKS = (\n <g fill=\"none\" stroke=\"currentColor\" strokeLinecap=\"round\">\n <Strokes part=\"trail-ink\" count={TRAIL - 1} />\n </g>\n);\n\nexport function AgentIndicator({ state, still, className }: AgentIndicatorProps) {\n const maskId = `agent-indicator-${useId().replace(/[^a-zA-Z0-9_-]/g, '')}`;\n const svgRef = useRef<SVGSVGElement>(null);\n const animation = useRef<ReturnType<typeof animate>>(undefined);\n\n useLayoutEffect(() => {\n if (!svgRef.current) return;\n const running = animate(svgRef.current);\n animation.current = running;\n return () => {\n running.stop();\n animation.current = undefined;\n };\n }, []);\n\n useLayoutEffect(() => {\n animation.current?.show(state);\n }, [state]);\n\n return (\n <span\n aria-hidden\n data-state={state}\n data-still={still || undefined}\n className={cn('agent-indicator inline-flex size-4 shrink-0', className)}\n style={MORPH}\n >\n <svg ref={svgRef} viewBox=\"-12 -12 24 24\" className=\"size-full\">\n <defs>\n <mask id={maskId} maskUnits=\"userSpaceOnUse\" x={-12} y={-12} width={24} height={24}>\n <rect x={-12} y={-12} width={24} height={24} fill=\"white\" />\n {CUTS}\n </mask>\n </defs>\n <g fill=\"currentColor\" mask={`url(#${maskId})`}>\n {SHAPE}\n </g>\n {TRAIL_INKS}\n </svg>\n </span>\n );\n}\n","import type { LucideIcon, LucideProps } from 'lucide-react';\nimport { forwardRef, useId } from 'react';\n\nimport { frameParts } from './paint';\nimport type { FrameParts, Stroke } from './paint';\nimport { poses } from './poses';\nimport type { AgentIndicatorState } from './poses';\nimport { once } from './shapes';\n\nconst SETTLED_SECONDS = 60;\n\nconst drawn = (strokes: Stroke[]) => strokes.filter(stroke => stroke.d);\n\nfunction glyph(state: AgentIndicatorState): LucideIcon {\n const parts = once((): FrameParts => frameParts(poses[state](0, SETTLED_SECONDS)));\n\n const Glyph = forwardRef<SVGSVGElement, LucideProps>(\n ({ size = 24, color = 'currentColor', absoluteStrokeWidth: _, ...props }, ref) => {\n const maskId = `agent-glyph-${useId().replace(/[^a-zA-Z0-9_-]/g, '')}`;\n const { body, balls, cuts, inks, trailCuts, trailInks } = parts();\n const cutting = drawn([...cuts, ...trailCuts]);\n const named = Object.keys(props).some(prop => prop.startsWith('aria-') || prop === 'role' || prop === 'title');\n\n return (\n <svg\n ref={ref}\n viewBox=\"-12 -12 24 24\"\n width={size}\n height={size}\n fill={color}\n aria-hidden={named ? undefined : true}\n {...props}\n >\n {cutting.length > 0 && (\n <mask id={maskId} maskUnits=\"userSpaceOnUse\" x={-12} y={-12} width={24} height={24}>\n <rect x={-12} y={-12} width={24} height={24} fill=\"white\" />\n <g fill=\"none\" stroke=\"black\" strokeLinecap=\"round\">\n {cutting.map(({ d, width }) => (\n <path key={d} data-part=\"cut\" d={d} strokeWidth={width} />\n ))}\n </g>\n </mask>\n )}\n <g mask={cutting.length > 0 ? `url(#${maskId})` : undefined}>\n <path data-part=\"body\" d={body} fillRule=\"evenodd\" />\n {balls\n .filter(ball => Number(ball.r) > 0)\n .map(ball => (\n <circle key={`${ball.cx} ${ball.cy}`} data-part=\"ball\" {...ball} />\n ))}\n <g fill=\"none\" stroke={color} strokeLinecap=\"round\">\n {drawn(inks).map(({ d, width }) => (\n <path key={d} data-part=\"ink\" d={d} strokeWidth={width} />\n ))}\n </g>\n </g>\n <g fill=\"none\" stroke={color} strokeLinecap=\"round\">\n {drawn(trailInks).map(({ d, width }) => (\n <path key={d} data-part=\"ink\" d={d} strokeWidth={width} />\n ))}\n </g>\n </svg>\n );\n },\n );\n Glyph.displayName = `AgentGlyph(${state})`;\n return Glyph;\n}\n\nconst glyphs = new Map<AgentIndicatorState, LucideIcon>();\n\n/** An indicator pose as a still icon: what a row shows for the work the indicator morphs into. */\nexport function agentGlyph(state: AgentIndicatorState): LucideIcon {\n const known = glyphs.get(state);\n if (known) return known;\n const made = glyph(state);\n glyphs.set(state, made);\n return made;\n}\n"],"mappings":"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"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
/* Idle and waiting move here, not in poses.ts: a resting drawing lets the frame loop stop. */
|
|
2
|
+
@keyframes agent-indicator-breathe {
|
|
3
|
+
25% {
|
|
4
|
+
scale: 1.02;
|
|
5
|
+
}
|
|
6
|
+
75% {
|
|
7
|
+
scale: 0.98;
|
|
8
|
+
}
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
@keyframes agent-indicator-pulse {
|
|
12
|
+
25% {
|
|
13
|
+
scale: 1 1.088;
|
|
14
|
+
}
|
|
15
|
+
75% {
|
|
16
|
+
scale: 1 0.912;
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
@media (prefers-reduced-motion: no-preference) {
|
|
21
|
+
.agent-indicator[data-state='idle']:not([data-still]) {
|
|
22
|
+
animation: agent-indicator-breathe 5.236s ease-in-out var(--agent-indicator-morph) infinite;
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
.agent-indicator[data-state='waiting']:not([data-still]) {
|
|
26
|
+
animation: agent-indicator-pulse 2.4s ease-in-out var(--agent-indicator-morph) infinite;
|
|
27
|
+
}
|
|
28
|
+
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { ARRIVING_CLASS } from "./tokens.es.js";
|
|
2
2
|
import { t as cn } from "./utils-DQx8TpNT.js";
|
|
3
|
-
import { createContext, useContext, useEffect, useRef, useState } from "react";
|
|
3
|
+
import { createContext, useContext, useEffect, useLayoutEffect, useRef, useState } from "react";
|
|
4
4
|
import { jsx } from "react/jsx-runtime";
|
|
5
5
|
import './Arrival.css';// src/ds/components/Arrival/use-watched.ts
|
|
6
6
|
/** Outside any scope nothing is watched arriving, so nothing animates. */
|
|
@@ -16,6 +16,13 @@ function useArriving() {
|
|
|
16
16
|
return useWatched() ? ARRIVING_CLASS : void 0;
|
|
17
17
|
}
|
|
18
18
|
// src/ds/components/Arrival/arrival.tsx
|
|
19
|
+
var ARRIVING_HOST = `.${ARRIVING_CLASS}`;
|
|
20
|
+
function finishEntrancesAround(marker) {
|
|
21
|
+
for (let host = marker.parentElement?.closest(ARRIVING_HOST); host; host = host.parentElement?.closest(ARRIVING_HOST)) {
|
|
22
|
+
if (typeof host.getAnimations !== "function") return;
|
|
23
|
+
for (const animation of host.getAnimations()) if ("animationName" in animation && animation.animationName === "mastra-arriving") animation.finish();
|
|
24
|
+
}
|
|
25
|
+
}
|
|
19
26
|
/**
|
|
20
27
|
* Marks what the reader was handed. Whatever mounts with a scope is already there and
|
|
21
28
|
* never animates; whatever mounts after it painted is the run happening in front of
|
|
@@ -40,6 +47,29 @@ function ArrivalScope({ children }) {
|
|
|
40
47
|
children
|
|
41
48
|
});
|
|
42
49
|
}
|
|
50
|
+
/**
|
|
51
|
+
* Something the reader already sees, moved to a new place, such as the run's indicator stepping onto the line
|
|
52
|
+
* that now describes it. It mounts without fading in, and takes the entrance off any element around it.
|
|
53
|
+
*/
|
|
54
|
+
function Continuing({ children }) {
|
|
55
|
+
const marker = useRef(null);
|
|
56
|
+
useLayoutEffect(() => {
|
|
57
|
+
if (marker.current) finishEntrancesAround(marker.current);
|
|
58
|
+
}, []);
|
|
59
|
+
return /* @__PURE__ */ jsx("div", {
|
|
60
|
+
ref: marker,
|
|
61
|
+
className: "contents",
|
|
62
|
+
children: /* @__PURE__ */ jsx(ArrivalScope, { children })
|
|
63
|
+
});
|
|
64
|
+
}
|
|
65
|
+
var UNWATCHED = { current: false };
|
|
66
|
+
/** Content whose entrance its host plays: nothing inside fades in on its own, as if no scope were watching. */
|
|
67
|
+
function Unwatched({ children }) {
|
|
68
|
+
return /* @__PURE__ */ jsx(SettledContext, {
|
|
69
|
+
value: UNWATCHED,
|
|
70
|
+
children
|
|
71
|
+
});
|
|
72
|
+
}
|
|
43
73
|
/** An element that fades in when it lands, and hosts a scope for whatever lands inside it later. */
|
|
44
74
|
function Arriving({ children, className }) {
|
|
45
75
|
const arriving = useArriving();
|
|
@@ -48,6 +78,6 @@ function Arriving({ children, className }) {
|
|
|
48
78
|
children: /* @__PURE__ */ jsx(ArrivalScope, { children })
|
|
49
79
|
});
|
|
50
80
|
}
|
|
51
|
-
export {
|
|
81
|
+
export { useArriving as a, Unwatched as i, Arriving as n, useWatched as o, Continuing as r, ArrivalScope as t };
|
|
52
82
|
|
|
53
|
-
//# sourceMappingURL=Arrival-
|
|
83
|
+
//# sourceMappingURL=Arrival-CJFEOXr5.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Arrival-CJFEOXr5.js","names":[],"sources":["../src/ds/components/Arrival/use-watched.ts","../src/ds/components/Arrival/arrival.tsx"],"sourcesContent":["import { createContext, useContext, useState } from 'react';\n\nimport { ARRIVING_CLASS } from '@/ds/tokens';\n\nimport './arrival.css';\n\n/** Outside any scope nothing is watched arriving, so nothing animates. */\nexport const SettledContext = createContext<{ readonly current: boolean }>({ current: false });\n\n/** Whether the reader was watching when this element mounted — the one boundary every entrance derives from. */\nexport function useWatched(): boolean {\n const settled = useContext(SettledContext);\n const [watched] = useState(() => settled.current);\n\n return watched;\n}\n\n/** The entrance class if this element mounted while the reader was watching, nothing otherwise. */\nexport function useArriving(): string | undefined {\n return useWatched() ? ARRIVING_CLASS : undefined;\n}\n","import { useEffect, useLayoutEffect, useRef } from 'react';\nimport type { ReactNode } from 'react';\n\nimport { SettledContext, useArriving } from './use-watched';\nimport { ARRIVING_CLASS } from '@/ds/tokens';\nimport { cn } from '@/lib/utils';\n\nconst ARRIVING_HOST = `.${ARRIVING_CLASS}`;\n\nfunction finishEntrancesAround(marker: HTMLElement) {\n for (\n let host = marker.parentElement?.closest(ARRIVING_HOST);\n host;\n host = host.parentElement?.closest(ARRIVING_HOST)\n ) {\n if (typeof host.getAnimations !== 'function') return;\n for (const animation of host.getAnimations()) {\n if ('animationName' in animation && animation.animationName === ARRIVING_CLASS) animation.finish();\n }\n }\n}\n\n/**\n * Marks what the reader was handed. Whatever mounts with a scope is already there and\n * never animates; whatever mounts after it painted is the run happening in front of\n * them, and fades in.\n *\n * Scopes nest, and that is the whole rule: a transcript opens one for its history,\n * and every element that fades in opens one for its own subtree, so a row's contents\n * ride its entrance rather than playing a second one on top of it — while a detail\n * that fills in a beat later still gets its own.\n *\n * A ref, not state: this says when a child mounted, which is only ever read by a child\n * mounting. Holding it as state would re-render every scope and its subtree once each\n * after paint — a whole restored transcript rendered twice to tell it to sit still.\n */\nexport function ArrivalScope({ children }: { children: ReactNode }) {\n const settled = useRef(false);\n useEffect(() => {\n settled.current = true;\n }, []);\n\n return <SettledContext value={settled}>{children}</SettledContext>;\n}\n\n/**\n * Something the reader already sees, moved to a new place, such as the run's indicator stepping onto the line\n * that now describes it. It mounts without fading in, and takes the entrance off any element around it.\n */\nexport function Continuing({ children }: { children: ReactNode }) {\n const marker = useRef<HTMLDivElement>(null);\n useLayoutEffect(() => {\n if (marker.current) finishEntrancesAround(marker.current);\n }, []);\n\n return (\n <div ref={marker} className=\"contents\">\n <ArrivalScope>{children}</ArrivalScope>\n </div>\n );\n}\n\nconst UNWATCHED = { current: false };\n\n/** Content whose entrance its host plays: nothing inside fades in on its own, as if no scope were watching. */\nexport function Unwatched({ children }: { children: ReactNode }) {\n return <SettledContext value={UNWATCHED}>{children}</SettledContext>;\n}\n\n/** An element that fades in when it lands, and hosts a scope for whatever lands inside it later. */\nexport function Arriving({ children, className }: { children: ReactNode; className?: string }) {\n const arriving = useArriving();\n\n return (\n <div className={cn(arriving, className)}>\n <ArrivalScope>{children}</ArrivalScope>\n </div>\n );\n}\n"],"mappings":";;;;;;AAOA,IAAa,iBAAiB,cAA6C,EAAE,SAAS,MAAM,CAAC;;AAG7F,SAAgB,aAAsB;CACpC,MAAM,UAAU,WAAW,cAAc;CACzC,MAAM,CAAC,WAAW,eAAe,QAAQ,OAAO;CAEhD,OAAO;AACT;;AAGA,SAAgB,cAAkC;CAChD,OAAO,WAAW,IAAI,iBAAiB,KAAA;AACzC;;ACbA,IAAM,gBAAgB,IAAI;AAE1B,SAAS,sBAAsB,QAAqB;CAClD,KACE,IAAI,OAAO,OAAO,eAAe,QAAQ,aAAa,GACtD,MACA,OAAO,KAAK,eAAe,QAAQ,aAAa,GAChD;EACA,IAAI,OAAO,KAAK,kBAAkB,YAAY;EAC9C,KAAK,MAAM,aAAa,KAAK,cAAc,GACzC,IAAI,mBAAmB,aAAa,UAAU,kBAAA,mBAAkC,UAAU,OAAO;CAErG;AACF;;;;;;;;;;;;;;;AAgBA,SAAgB,aAAa,EAAE,YAAqC;CAClE,MAAM,UAAU,OAAO,KAAK;CAC5B,gBAAgB;EACd,QAAQ,UAAU;CACpB,GAAG,CAAC,CAAC;CAEL,OAAO,oBAAC,gBAAD;EAAgB,OAAO;EAAU;CAAyB,CAAA;AACnE;;;;;AAMA,SAAgB,WAAW,EAAE,YAAqC;CAChE,MAAM,SAAS,OAAuB,IAAI;CAC1C,sBAAsB;EACpB,IAAI,OAAO,SAAS,sBAAsB,OAAO,OAAO;CAC1D,GAAG,CAAC,CAAC;CAEL,OACE,oBAAC,OAAD;EAAK,KAAK;EAAQ,WAAU;EAC1B,UAAA,oBAAC,cAAD,EAAe,SAAuB,CAAA;CACnC,CAAA;AAET;AAEA,IAAM,YAAY,EAAE,SAAS,MAAM;;AAGnC,SAAgB,UAAU,EAAE,YAAqC;CAC/D,OAAO,oBAAC,gBAAD;EAAgB,OAAO;EAAY;CAAyB,CAAA;AACrE;;AAGA,SAAgB,SAAS,EAAE,UAAU,aAA0D;CAC7F,MAAM,WAAW,YAAY;CAE7B,OACE,oBAAC,OAAD;EAAK,WAAW,GAAG,UAAU,SAAS;EACpC,UAAA,oBAAC,cAAD,EAAe,SAAuB,CAAA;CACnC,CAAA;AAET"}
|
|
@@ -16,6 +16,13 @@ function useArriving() {
|
|
|
16
16
|
return useWatched() ? require_tokens.ARRIVING_CLASS : void 0;
|
|
17
17
|
}
|
|
18
18
|
// src/ds/components/Arrival/arrival.tsx
|
|
19
|
+
var ARRIVING_HOST = `.${require_tokens.ARRIVING_CLASS}`;
|
|
20
|
+
function finishEntrancesAround(marker) {
|
|
21
|
+
for (let host = marker.parentElement?.closest(ARRIVING_HOST); host; host = host.parentElement?.closest(ARRIVING_HOST)) {
|
|
22
|
+
if (typeof host.getAnimations !== "function") return;
|
|
23
|
+
for (const animation of host.getAnimations()) if ("animationName" in animation && animation.animationName === "mastra-arriving") animation.finish();
|
|
24
|
+
}
|
|
25
|
+
}
|
|
19
26
|
/**
|
|
20
27
|
* Marks what the reader was handed. Whatever mounts with a scope is already there and
|
|
21
28
|
* never animates; whatever mounts after it painted is the run happening in front of
|
|
@@ -40,6 +47,29 @@ function ArrivalScope({ children }) {
|
|
|
40
47
|
children
|
|
41
48
|
});
|
|
42
49
|
}
|
|
50
|
+
/**
|
|
51
|
+
* Something the reader already sees, moved to a new place, such as the run's indicator stepping onto the line
|
|
52
|
+
* that now describes it. It mounts without fading in, and takes the entrance off any element around it.
|
|
53
|
+
*/
|
|
54
|
+
function Continuing({ children }) {
|
|
55
|
+
const marker = (0, react.useRef)(null);
|
|
56
|
+
(0, react.useLayoutEffect)(() => {
|
|
57
|
+
if (marker.current) finishEntrancesAround(marker.current);
|
|
58
|
+
}, []);
|
|
59
|
+
return /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
|
|
60
|
+
ref: marker,
|
|
61
|
+
className: "contents",
|
|
62
|
+
children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(ArrivalScope, { children })
|
|
63
|
+
});
|
|
64
|
+
}
|
|
65
|
+
var UNWATCHED = { current: false };
|
|
66
|
+
/** Content whose entrance its host plays: nothing inside fades in on its own, as if no scope were watching. */
|
|
67
|
+
function Unwatched({ children }) {
|
|
68
|
+
return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(SettledContext, {
|
|
69
|
+
value: UNWATCHED,
|
|
70
|
+
children
|
|
71
|
+
});
|
|
72
|
+
}
|
|
43
73
|
/** An element that fades in when it lands, and hosts a scope for whatever lands inside it later. */
|
|
44
74
|
function Arriving({ children, className }) {
|
|
45
75
|
const arriving = useArriving();
|
|
@@ -60,6 +90,18 @@ Object.defineProperty(exports, "Arriving", {
|
|
|
60
90
|
return Arriving;
|
|
61
91
|
}
|
|
62
92
|
});
|
|
93
|
+
Object.defineProperty(exports, "Continuing", {
|
|
94
|
+
enumerable: true,
|
|
95
|
+
get: function() {
|
|
96
|
+
return Continuing;
|
|
97
|
+
}
|
|
98
|
+
});
|
|
99
|
+
Object.defineProperty(exports, "Unwatched", {
|
|
100
|
+
enumerable: true,
|
|
101
|
+
get: function() {
|
|
102
|
+
return Unwatched;
|
|
103
|
+
}
|
|
104
|
+
});
|
|
63
105
|
Object.defineProperty(exports, "useArriving", {
|
|
64
106
|
enumerable: true,
|
|
65
107
|
get: function() {
|
|
@@ -73,4 +115,4 @@ Object.defineProperty(exports, "useWatched", {
|
|
|
73
115
|
}
|
|
74
116
|
});
|
|
75
117
|
|
|
76
|
-
//# sourceMappingURL=Arrival-
|
|
118
|
+
//# sourceMappingURL=Arrival-Cs1oWjo4.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Arrival-Cs1oWjo4.cjs","names":["createContext","useContext","useState","ARRIVING_CLASS","ARRIVING_CLASS","useRef","cn"],"sources":["../src/ds/components/Arrival/use-watched.ts","../src/ds/components/Arrival/arrival.tsx"],"sourcesContent":["import { createContext, useContext, useState } from 'react';\n\nimport { ARRIVING_CLASS } from '@/ds/tokens';\n\nimport './arrival.css';\n\n/** Outside any scope nothing is watched arriving, so nothing animates. */\nexport const SettledContext = createContext<{ readonly current: boolean }>({ current: false });\n\n/** Whether the reader was watching when this element mounted — the one boundary every entrance derives from. */\nexport function useWatched(): boolean {\n const settled = useContext(SettledContext);\n const [watched] = useState(() => settled.current);\n\n return watched;\n}\n\n/** The entrance class if this element mounted while the reader was watching, nothing otherwise. */\nexport function useArriving(): string | undefined {\n return useWatched() ? ARRIVING_CLASS : undefined;\n}\n","import { useEffect, useLayoutEffect, useRef } from 'react';\nimport type { ReactNode } from 'react';\n\nimport { SettledContext, useArriving } from './use-watched';\nimport { ARRIVING_CLASS } from '@/ds/tokens';\nimport { cn } from '@/lib/utils';\n\nconst ARRIVING_HOST = `.${ARRIVING_CLASS}`;\n\nfunction finishEntrancesAround(marker: HTMLElement) {\n for (\n let host = marker.parentElement?.closest(ARRIVING_HOST);\n host;\n host = host.parentElement?.closest(ARRIVING_HOST)\n ) {\n if (typeof host.getAnimations !== 'function') return;\n for (const animation of host.getAnimations()) {\n if ('animationName' in animation && animation.animationName === ARRIVING_CLASS) animation.finish();\n }\n }\n}\n\n/**\n * Marks what the reader was handed. Whatever mounts with a scope is already there and\n * never animates; whatever mounts after it painted is the run happening in front of\n * them, and fades in.\n *\n * Scopes nest, and that is the whole rule: a transcript opens one for its history,\n * and every element that fades in opens one for its own subtree, so a row's contents\n * ride its entrance rather than playing a second one on top of it — while a detail\n * that fills in a beat later still gets its own.\n *\n * A ref, not state: this says when a child mounted, which is only ever read by a child\n * mounting. Holding it as state would re-render every scope and its subtree once each\n * after paint — a whole restored transcript rendered twice to tell it to sit still.\n */\nexport function ArrivalScope({ children }: { children: ReactNode }) {\n const settled = useRef(false);\n useEffect(() => {\n settled.current = true;\n }, []);\n\n return <SettledContext value={settled}>{children}</SettledContext>;\n}\n\n/**\n * Something the reader already sees, moved to a new place, such as the run's indicator stepping onto the line\n * that now describes it. It mounts without fading in, and takes the entrance off any element around it.\n */\nexport function Continuing({ children }: { children: ReactNode }) {\n const marker = useRef<HTMLDivElement>(null);\n useLayoutEffect(() => {\n if (marker.current) finishEntrancesAround(marker.current);\n }, []);\n\n return (\n <div ref={marker} className=\"contents\">\n <ArrivalScope>{children}</ArrivalScope>\n </div>\n );\n}\n\nconst UNWATCHED = { current: false };\n\n/** Content whose entrance its host plays: nothing inside fades in on its own, as if no scope were watching. */\nexport function Unwatched({ children }: { children: ReactNode }) {\n return <SettledContext value={UNWATCHED}>{children}</SettledContext>;\n}\n\n/** An element that fades in when it lands, and hosts a scope for whatever lands inside it later. */\nexport function Arriving({ children, className }: { children: ReactNode; className?: string }) {\n const arriving = useArriving();\n\n return (\n <div className={cn(arriving, className)}>\n <ArrivalScope>{children}</ArrivalScope>\n </div>\n );\n}\n"],"mappings":";;;;;;AAOA,IAAa,kBAAA,GAAiBA,MAAAA,cAAAA,CAA6C,EAAE,SAAS,MAAM,CAAC;;AAG7F,SAAgB,aAAsB;CACpC,MAAM,WAAA,GAAUC,MAAAA,WAAAA,CAAW,cAAc;CACzC,MAAM,CAAC,YAAA,GAAWC,MAAAA,SAAAA,OAAe,QAAQ,OAAO;CAEhD,OAAO;AACT;;AAGA,SAAgB,cAAkC;CAChD,OAAO,WAAW,IAAIC,eAAAA,iBAAiB,KAAA;AACzC;;ACbA,IAAM,gBAAgB,IAAIC,eAAAA;AAE1B,SAAS,sBAAsB,QAAqB;CAClD,KACE,IAAI,OAAO,OAAO,eAAe,QAAQ,aAAa,GACtD,MACA,OAAO,KAAK,eAAe,QAAQ,aAAa,GAChD;EACA,IAAI,OAAO,KAAK,kBAAkB,YAAY;EAC9C,KAAK,MAAM,aAAa,KAAK,cAAc,GACzC,IAAI,mBAAmB,aAAa,UAAU,kBAAA,mBAAkC,UAAU,OAAO;CAErG;AACF;;;;;;;;;;;;;;;AAgBA,SAAgB,aAAa,EAAE,YAAqC;CAClE,MAAM,WAAA,GAAUC,MAAAA,OAAAA,CAAO,KAAK;CAC5B,CAAA,GAAA,MAAA,UAAA,OAAgB;EACd,QAAQ,UAAU;CACpB,GAAG,CAAC,CAAC;CAEL,OAAO,iBAAA,GAAA,kBAAA,IAAA,CAAC,gBAAD;EAAgB,OAAO;EAAU;CAAyB,CAAA;AACnE;;;;;AAMA,SAAgB,WAAW,EAAE,YAAqC;CAChE,MAAM,UAAA,GAASA,MAAAA,OAAAA,CAAuB,IAAI;CAC1C,CAAA,GAAA,MAAA,gBAAA,OAAsB;EACpB,IAAI,OAAO,SAAS,sBAAsB,OAAO,OAAO;CAC1D,GAAG,CAAC,CAAC;CAEL,OACE,iBAAA,GAAA,kBAAA,IAAA,CAAC,OAAD;EAAK,KAAK;EAAQ,WAAU;EAC1B,UAAA,iBAAA,GAAA,kBAAA,IAAA,CAAC,cAAD,EAAe,SAAuB,CAAA;CACnC,CAAA;AAET;AAEA,IAAM,YAAY,EAAE,SAAS,MAAM;;AAGnC,SAAgB,UAAU,EAAE,YAAqC;CAC/D,OAAO,iBAAA,GAAA,kBAAA,IAAA,CAAC,gBAAD;EAAgB,OAAO;EAAY;CAAyB,CAAA;AACrE;;AAGA,SAAgB,SAAS,EAAE,UAAU,aAA0D;CAC7F,MAAM,WAAW,YAAY;CAE7B,OACE,iBAAA,GAAA,kBAAA,IAAA,CAAC,OAAD;EAAK,WAAWC,cAAAA,GAAG,UAAU,SAAS;EACpC,UAAA,iBAAA,GAAA,kBAAA,IAAA,CAAC,cAAD,EAAe,SAAuB,CAAA;CACnC,CAAA;AAET"}
|
|
@@ -4,7 +4,7 @@ const require_primitives_raised_surface = require("./primitives/raised-surface.c
|
|
|
4
4
|
const require_Button = require("./Button-YQRflC47.cjs");
|
|
5
5
|
const require_primitives_text = require("./primitives/text.cjs.js");
|
|
6
6
|
const require_Txt = require("./Txt-BnoSqxKE.cjs");
|
|
7
|
-
const require_Arrival = require("./Arrival-
|
|
7
|
+
const require_Arrival = require("./Arrival-Cs1oWjo4.cjs");
|
|
8
8
|
const require_components_Field = require("./components/Field.cjs.js");
|
|
9
9
|
const require_primitives_textarea_control = require("./primitives/textarea-control.cjs.js");
|
|
10
10
|
const require_input_group = require("./input-group-uDpFNnSW.cjs");
|
|
@@ -409,4 +409,4 @@ Object.defineProperty(exports, "CommentQuote", {
|
|
|
409
409
|
}
|
|
410
410
|
});
|
|
411
411
|
|
|
412
|
-
//# sourceMappingURL=Comment-
|
|
412
|
+
//# sourceMappingURL=Comment-KYUQzeSu.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Comment-CUQvfikb.cjs","names":["createContext","useContext","cva","cn","raisedSurfaceStyle","forwardRef","Txt","useRender","textStyle","useWatched","ArrivalScope","forwardRef","cn","InputGroup","InputGroupInput","InputGroupAddon","InputGroupButton","ArrowUp","useState","Field","cn","TextareaControl","Button","X","Check","FieldError","cn","Txt","Button","X"],"sources":["../src/ds/components/Comment/comment-context.ts","../src/ds/components/Comment/comment.tsx","../src/ds/components/Comment/comment-arrival.tsx","../src/ds/components/Comment/comment-composer.tsx","../src/ds/components/Comment/comment-editor.tsx","../src/ds/components/Comment/comment-quote.tsx"],"sourcesContent":["import { createContext, useContext } from 'react';\n\nexport type CommentVariant = 'default' | 'embed' | 'thread';\n\nexport const CommentContext = createContext<CommentVariant | null>(null);\n\nexport function useCommentVariant(): CommentVariant {\n const variant = useContext(CommentContext);\n if (!variant) throw new Error('Comment compounds must be rendered within Comment');\n return variant;\n}\n","import { useRender } from '@base-ui/react/use-render';\nimport { cva } from 'class-variance-authority';\nimport type { ComponentPropsWithoutRef, HTMLAttributes } from 'react';\nimport { forwardRef } from 'react';\n\nimport { CommentContext, useCommentVariant } from './comment-context';\nimport type { CommentVariant } from './comment-context';\nimport { Txt } from '@/ds/components/Txt';\nimport type { TxtProps } from '@/ds/components/Txt';\nimport { raisedSurfaceStyle } from '@/ds/primitives/raised-surface';\nimport { textStyle } from '@/ds/primitives/text';\nimport { cn } from '@/lib/utils';\n\nconst commentVariants = cva('flex flex-col', {\n variants: {\n variant: {\n default: 'gap-2',\n embed: cn(raisedSurfaceStyle, 'gap-1 rounded-xl p-3'),\n thread: '',\n },\n },\n defaultVariants: {\n variant: 'default',\n },\n});\n\nexport interface CommentProps extends ComponentPropsWithoutRef<'div'> {\n variant?: CommentVariant;\n}\n\nexport const Comment = forwardRef<HTMLDivElement, CommentProps>(({ className, variant = 'default', ...props }, ref) => (\n <CommentContext.Provider value={variant}>\n <div\n ref={ref}\n data-slot=\"comment\"\n data-variant={variant}\n className={cn(commentVariants({ variant }), className)}\n {...props}\n />\n </CommentContext.Provider>\n));\nComment.displayName = 'Comment';\n\nconst commentListGap: Record<CommentVariant, string> = {\n default: 'gap-3',\n embed: 'gap-2',\n thread: '',\n};\n\nexport type CommentListProps = ComponentPropsWithoutRef<'ul'>;\n\nexport const CommentList = forwardRef<HTMLUListElement, CommentListProps>(({ className, ...props }, ref) => {\n const variant = useCommentVariant();\n\n return (\n <ul\n ref={ref}\n data-slot=\"comment-list\"\n className={cn('flex flex-col', commentListGap[variant], className)}\n {...props}\n />\n );\n});\nCommentList.displayName = 'CommentList';\n\nconst commentItemLayout: Record<CommentVariant, string> = {\n default: 'flex flex-col gap-1',\n embed: 'flex flex-col gap-1',\n thread: 'relative flex gap-2 rounded-lg px-2 hover:bg-fill-subtle',\n};\n\nexport interface CommentItemProps extends HTMLAttributes<HTMLElement> {\n /** Same author moments after the row above: the header is dropped and the row tightens. */\n continued?: boolean;\n /** The comment a link pointed at. */\n highlighted?: boolean;\n}\n\nexport const CommentItem = forwardRef<HTMLElement, CommentItemProps>(\n ({ className, continued = false, highlighted = false, ...props }, ref) => {\n const variant = useCommentVariant();\n // A thread row is a stream entry among runs and moves, not a list item.\n const Root = variant === 'thread' ? 'div' : 'li';\n\n return (\n <Root\n // Cast needed: `Root` is polymorphic, so TS narrows the expected ref to a single element type.\n ref={ref as never}\n data-slot=\"comment-item\"\n className={cn(\n 'group/comment-item',\n commentItemLayout[variant],\n variant === 'thread' && (continued ? 'py-0.5' : 'py-1.5'),\n highlighted && 'bg-info-subtle',\n className,\n )}\n {...props}\n />\n );\n },\n);\nCommentItem.displayName = 'CommentItem';\n\nexport type CommentItemAvatarProps = ComponentPropsWithoutRef<'div'>;\n\n/** Fixed gutter: left empty on a continuation row, it keeps the body aligned under the avatar above. */\nexport const CommentItemAvatar = forwardRef<HTMLDivElement, CommentItemAvatarProps>(({ className, ...props }, ref) => (\n <div ref={ref} data-slot=\"comment-item-avatar\" className={cn('w-6 shrink-0 pt-0.5', className)} {...props} />\n));\nCommentItemAvatar.displayName = 'CommentItemAvatar';\n\nexport type CommentItemContentProps = ComponentPropsWithoutRef<'div'>;\n\n/** Everything beside the gutter, stacked and free to shrink so long words wrap instead of widening the row. */\nexport const CommentItemContent = forwardRef<HTMLDivElement, CommentItemContentProps>(\n ({ className, ...props }, ref) => (\n <div ref={ref} data-slot=\"comment-item-content\" className={cn('min-w-0 flex-1', className)} {...props} />\n ),\n);\nCommentItemContent.displayName = 'CommentItemContent';\n\nconst commentItemHeaderLayout: Record<CommentVariant, string> = {\n default: 'flex items-center gap-2',\n embed: 'flex items-center gap-2',\n thread: 'flex items-baseline gap-1.5',\n};\n\nexport type CommentItemHeaderProps = ComponentPropsWithoutRef<'div'>;\n\nexport const CommentItemHeader = forwardRef<HTMLDivElement, CommentItemHeaderProps>(({ className, ...props }, ref) => {\n const variant = useCommentVariant();\n\n return (\n <div\n ref={ref}\n data-slot=\"comment-item-header\"\n className={cn(commentItemHeaderLayout[variant], className)}\n {...props}\n />\n );\n});\nCommentItemHeader.displayName = 'CommentItemHeader';\n\nconst commentItemAuthorSize: Record<CommentVariant, TxtProps['variant']> = {\n default: 'subheading',\n embed: 'subheading',\n thread: 'column',\n};\n\nconst commentItemAuthorTone: Record<CommentVariant, string> = {\n default: 'text-foreground',\n embed: 'text-foreground',\n thread: 'truncate text-foreground',\n};\n\nexport type CommentItemAuthorProps = ComponentPropsWithoutRef<'span'>;\n\nexport const CommentItemAuthor = forwardRef<HTMLElement, CommentItemAuthorProps>(({ className, ...props }, ref) => {\n const variant = useCommentVariant();\n\n return (\n <Txt\n ref={ref}\n as=\"span\"\n variant={commentItemAuthorSize[variant]}\n data-slot=\"comment-item-author\"\n className={cn(commentItemAuthorTone[variant], className)}\n {...props}\n />\n );\n});\nCommentItemAuthor.displayName = 'CommentItemAuthor';\n\nconst commentItemTimestampTone: Record<CommentVariant, string> = {\n default: 'text-caption text-muted-foreground',\n embed: 'text-caption text-muted-foreground',\n thread: 'text-meta text-placeholder shrink-0',\n};\n\nexport type CommentItemTimestampProps = ComponentPropsWithoutRef<'time'>;\n\nexport const CommentItemTimestamp = forwardRef<HTMLTimeElement, CommentItemTimestampProps>(\n ({ className, ...props }, ref) => {\n const variant = useCommentVariant();\n\n return (\n <time\n ref={ref}\n data-slot=\"comment-item-timestamp\"\n className={cn(commentItemTimestampTone[variant], className)}\n {...props}\n />\n );\n },\n);\nCommentItemTimestamp.displayName = 'CommentItemTimestamp';\n\nconst commentItemBodySize: Record<CommentVariant, TxtProps['variant']> = {\n default: 'body',\n embed: 'body',\n thread: 'caption',\n};\n\nconst commentItemBodyTone: Record<CommentVariant, string> = {\n default: 'whitespace-pre-wrap text-foreground border-l border-border pl-3',\n embed: 'whitespace-pre-wrap text-foreground',\n thread: '',\n};\n\nexport type CommentItemBodyProps = ComponentPropsWithoutRef<'p'>;\n\nexport const CommentItemBody = forwardRef<HTMLElement, CommentItemBodyProps>(({ className, ...props }, ref) => {\n const variant = useCommentVariant();\n\n // Rendered markdown brings its own blocks, which a paragraph cannot hold.\n return useRender({\n defaultTagName: variant === 'thread' ? 'div' : 'p',\n props: {\n ...props,\n ref,\n 'data-slot': 'comment-item-body',\n className: cn(textStyle({ variant: commentItemBodySize[variant] }), commentItemBodyTone[variant], className),\n },\n });\n});\nCommentItemBody.displayName = 'CommentItemBody';\n\nconst commentItemActionsLayout: Record<CommentVariant, string> = {\n default:\n 'flex items-center gap-1 opacity-0 group-focus-within/comment-item:opacity-100 group-hover/comment-item:opacity-100 motion-safe:transition-opacity',\n embed: '',\n // Inline at the end of the header row, revealed on hover/focus.\n // `pointer-fine` only: a touch screen has no hover to reveal it with.\n thread:\n 'ml-auto flex shrink-0 items-center gap-0.5 self-center transition-opacity duration-200 ease-out motion-reduce:transition-none pointer-fine:opacity-0 pointer-fine:group-focus-within/comment-item:opacity-100 pointer-fine:group-hover/comment-item:opacity-100',\n};\n\nexport type CommentItemActionsProps = ComponentPropsWithoutRef<'div'>;\n\n/** Hidden in the `embed` variant, which drops per-item actions. */\nexport const CommentItemActions = forwardRef<HTMLDivElement, CommentItemActionsProps>(\n ({ className, ...props }, ref) => {\n const variant = useCommentVariant();\n if (variant === 'embed') return null;\n\n return (\n <div\n ref={ref}\n data-slot=\"comment-item-actions\"\n className={cn(commentItemActionsLayout[variant], className)}\n {...props}\n />\n );\n },\n);\nCommentItemActions.displayName = 'CommentItemActions';\n","import type { ReactNode } from 'react';\n\nimport { ArrivalScope, useWatched } from '@/ds/components/Arrival';\n\nimport './comment-arrival.css';\n\n/** A comment the reader watched land rises into place; one that was already there just appears. */\nexport function CommentArrival({ children }: { children: ReactNode }) {\n const watched = useWatched();\n\n return (\n <div data-slot=\"comment-arrival\" className={watched ? 'mastra-comment-arriving' : undefined}>\n <ArrivalScope>{children}</ArrivalScope>\n </div>\n );\n}\n","import { ArrowUp } from 'lucide-react';\nimport type { ComponentPropsWithoutRef, ReactNode } from 'react';\nimport { forwardRef } from 'react';\n\nimport { useCommentVariant } from './comment-context';\nimport type { CommentVariant } from './comment-context';\nimport { InputGroup, InputGroupAddon, InputGroupButton, InputGroupInput } from '@/ds/components/InputGroup';\nimport type { InputGroupButtonProps, InputGroupInputProps } from '@/ds/components/InputGroup';\nimport type { ControlSize } from '@/ds/primitives/control-size';\nimport { cn } from '@/lib/utils';\n\nexport type CommentComposerProps = ComponentPropsWithoutRef<'form'>;\n\nexport const CommentComposer = forwardRef<HTMLFormElement, CommentComposerProps>(({ className, ...props }, ref) => (\n <form ref={ref} data-slot=\"comment-composer\" className={cn('flex w-full items-center gap-2', className)} {...props} />\n));\nCommentComposer.displayName = 'CommentComposer';\n\nconst composerSize: Record<CommentVariant, ControlSize> = {\n default: 'md',\n embed: 'sm',\n thread: 'md',\n};\n\nexport interface CommentComposerInputProps extends InputGroupInputProps {\n /** Layout classes for the surrounding InputGroup. */\n groupClassName?: string;\n children?: ReactNode;\n}\n\nexport const CommentComposerInput = forwardRef<HTMLInputElement, CommentComposerInputProps>(\n ({ groupClassName, children, ...props }, ref) => {\n const variant = useCommentVariant();\n\n return (\n <InputGroup size={composerSize[variant]} className={groupClassName}>\n <InputGroupInput ref={ref} data-slot=\"comment-composer-input\" {...props} />\n {children}\n </InputGroup>\n );\n },\n);\nCommentComposerInput.displayName = 'CommentComposerInput';\n\nexport type CommentComposerSendProps = Omit<InputGroupButtonProps, 'children'>;\n\nexport const CommentComposerSend = forwardRef<HTMLButtonElement, CommentComposerSendProps>(\n ({ 'aria-label': ariaLabel = 'Send comment', type = 'submit', ...props }, ref) => (\n <InputGroupAddon align=\"inline-end\">\n <InputGroupButton ref={ref} data-slot=\"comment-composer-send\" type={type} aria-label={ariaLabel} {...props}>\n <ArrowUp />\n </InputGroupButton>\n </InputGroupAddon>\n ),\n);\nCommentComposerSend.displayName = 'CommentComposerSend';\n","import { Check, X } from 'lucide-react';\nimport { useState } from 'react';\nimport type { KeyboardEvent } from 'react';\n\nimport { Button } from '@/ds/components/Button';\nimport { Field, FieldError } from '@/ds/components/Field';\nimport { TextareaControl } from '@/ds/primitives/textarea-control';\nimport { cn } from '@/lib/utils';\n\nexport interface CommentEditorProps {\n initialBody: string;\n /** Handed the trimmed draft. Closing is the caller's call, so a save that failed keeps what was typed. */\n onSave: (body: string) => void;\n onClose: () => void;\n /** The caller's save in flight: the box locks until it settles. */\n isPending?: boolean;\n /** Why the caller's last save failed. */\n error?: string;\n 'aria-label'?: string;\n className?: string;\n}\n\n/** Owns the draft only; whether a save landed is the caller's mutation to report. */\nexport function CommentEditor({\n initialBody,\n onSave,\n onClose,\n isPending = false,\n error,\n 'aria-label': ariaLabel = 'Edit comment',\n className,\n}: CommentEditorProps) {\n const [draft, setDraft] = useState(initialBody);\n const body = draft.trim();\n const canSave = body.length > 0 && !isPending;\n\n const save = () => {\n if (!canSave) return;\n if (body === initialBody) {\n onClose();\n return;\n }\n onSave(body);\n };\n\n const onKeyDown = (event: KeyboardEvent<HTMLTextAreaElement>) => {\n // An IME commit fires Enter mid-composition; acting on it would save half a word.\n if (event.nativeEvent.isComposing) return;\n if (event.key === 'Enter' && !event.shiftKey) {\n event.preventDefault();\n save();\n }\n };\n\n return (\n <Field invalid={Boolean(error)} data-slot=\"comment-editor\" className={cn('mt-1 flex flex-col gap-1.5', className)}>\n <div className=\"relative\">\n <TextareaControl\n value={draft}\n onChange={event => setDraft(event.target.value)}\n onKeyDown={onKeyDown}\n readOnly={isPending}\n aria-label={ariaLabel}\n rows={2}\n className=\"block field-sizing-content max-h-40 w-full resize-none overflow-y-auto rounded-lg border border-border bg-background px-2 pt-1.5 pb-9 text-caption text-foreground outline-none focus:border-border-strong\"\n />\n <div className=\"absolute inset-x-px bottom-px flex items-center justify-end gap-1 rounded-b-lg bg-background px-1.5 pt-1 pb-1.5\">\n <Button icon={<X />} type=\"button\" variant=\"ghost\" size=\"sm\" disabled={isPending} onClick={onClose}>\n Cancel\n </Button>\n <Button icon={<Check />} type=\"button\" size=\"sm\" disabled={!canSave} onClick={save}>\n {isPending ? 'Saving…' : 'Save'}\n </Button>\n </div>\n </div>\n <FieldError>{error}</FieldError>\n </Field>\n );\n}\n","import { X } from 'lucide-react';\n\nimport { Button } from '@/ds/components/Button';\nimport { Txt } from '@/ds/components/Txt';\nimport { cn } from '@/lib/utils';\n\nexport interface CommentQuoteProps {\n authorName?: string;\n quote: string;\n /** Given only while the quote is a draft the writer can still drop. */\n onDismiss?: () => void;\n className?: string;\n}\n\n/** The passage a reply answers, above the reply itself or inside the composer writing it. */\nexport function CommentQuote({ authorName, quote, onDismiss, className }: CommentQuoteProps) {\n return (\n <blockquote\n data-slot=\"comment-quote\"\n className={cn(\n 'm-0 flex min-w-0 gap-2 border-l-2 border-border-strong pl-2 text-caption text-muted-foreground',\n className,\n )}\n >\n <span className=\"min-w-0 flex-1\">\n {authorName ? (\n <Txt as=\"span\" variant=\"column\">\n {authorName}{' '}\n </Txt>\n ) : null}\n <span className=\"line-clamp-2 wrap-anywhere whitespace-pre-line\">{quote}</span>\n </span>\n {onDismiss ? (\n <Button\n type=\"button\"\n variant=\"ghost\"\n size=\"icon-sm\"\n aria-label=\"Remove quote\"\n onClick={onDismiss}\n className=\"shrink-0\"\n >\n <X size={12} aria-hidden />\n </Button>\n ) : null}\n </blockquote>\n );\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Comment-KYUQzeSu.cjs","names":["createContext","useContext","cva","cn","raisedSurfaceStyle","forwardRef","Txt","useRender","textStyle","useWatched","ArrivalScope","forwardRef","cn","InputGroup","InputGroupInput","InputGroupAddon","InputGroupButton","ArrowUp","useState","Field","cn","TextareaControl","Button","X","Check","FieldError","cn","Txt","Button","X"],"sources":["../src/ds/components/Comment/comment-context.ts","../src/ds/components/Comment/comment.tsx","../src/ds/components/Comment/comment-arrival.tsx","../src/ds/components/Comment/comment-composer.tsx","../src/ds/components/Comment/comment-editor.tsx","../src/ds/components/Comment/comment-quote.tsx"],"sourcesContent":["import { createContext, useContext } from 'react';\n\nexport type CommentVariant = 'default' | 'embed' | 'thread';\n\nexport const CommentContext = createContext<CommentVariant | null>(null);\n\nexport function useCommentVariant(): CommentVariant {\n const variant = useContext(CommentContext);\n if (!variant) throw new Error('Comment compounds must be rendered within Comment');\n return variant;\n}\n","import { useRender } from '@base-ui/react/use-render';\nimport { cva } from 'class-variance-authority';\nimport type { ComponentPropsWithoutRef, HTMLAttributes } from 'react';\nimport { forwardRef } from 'react';\n\nimport { CommentContext, useCommentVariant } from './comment-context';\nimport type { CommentVariant } from './comment-context';\nimport { Txt } from '@/ds/components/Txt';\nimport type { TxtProps } from '@/ds/components/Txt';\nimport { raisedSurfaceStyle } from '@/ds/primitives/raised-surface';\nimport { textStyle } from '@/ds/primitives/text';\nimport { cn } from '@/lib/utils';\n\nconst commentVariants = cva('flex flex-col', {\n variants: {\n variant: {\n default: 'gap-2',\n embed: cn(raisedSurfaceStyle, 'gap-1 rounded-xl p-3'),\n thread: '',\n },\n },\n defaultVariants: {\n variant: 'default',\n },\n});\n\nexport interface CommentProps extends ComponentPropsWithoutRef<'div'> {\n variant?: CommentVariant;\n}\n\nexport const Comment = forwardRef<HTMLDivElement, CommentProps>(({ className, variant = 'default', ...props }, ref) => (\n <CommentContext.Provider value={variant}>\n <div\n ref={ref}\n data-slot=\"comment\"\n data-variant={variant}\n className={cn(commentVariants({ variant }), className)}\n {...props}\n />\n </CommentContext.Provider>\n));\nComment.displayName = 'Comment';\n\nconst commentListGap: Record<CommentVariant, string> = {\n default: 'gap-3',\n embed: 'gap-2',\n thread: '',\n};\n\nexport type CommentListProps = ComponentPropsWithoutRef<'ul'>;\n\nexport const CommentList = forwardRef<HTMLUListElement, CommentListProps>(({ className, ...props }, ref) => {\n const variant = useCommentVariant();\n\n return (\n <ul\n ref={ref}\n data-slot=\"comment-list\"\n className={cn('flex flex-col', commentListGap[variant], className)}\n {...props}\n />\n );\n});\nCommentList.displayName = 'CommentList';\n\nconst commentItemLayout: Record<CommentVariant, string> = {\n default: 'flex flex-col gap-1',\n embed: 'flex flex-col gap-1',\n thread: 'relative flex gap-2 rounded-lg px-2 hover:bg-fill-subtle',\n};\n\nexport interface CommentItemProps extends HTMLAttributes<HTMLElement> {\n /** Same author moments after the row above: the header is dropped and the row tightens. */\n continued?: boolean;\n /** The comment a link pointed at. */\n highlighted?: boolean;\n}\n\nexport const CommentItem = forwardRef<HTMLElement, CommentItemProps>(\n ({ className, continued = false, highlighted = false, ...props }, ref) => {\n const variant = useCommentVariant();\n // A thread row is a stream entry among runs and moves, not a list item.\n const Root = variant === 'thread' ? 'div' : 'li';\n\n return (\n <Root\n // Cast needed: `Root` is polymorphic, so TS narrows the expected ref to a single element type.\n ref={ref as never}\n data-slot=\"comment-item\"\n className={cn(\n 'group/comment-item',\n commentItemLayout[variant],\n variant === 'thread' && (continued ? 'py-0.5' : 'py-1.5'),\n highlighted && 'bg-info-subtle',\n className,\n )}\n {...props}\n />\n );\n },\n);\nCommentItem.displayName = 'CommentItem';\n\nexport type CommentItemAvatarProps = ComponentPropsWithoutRef<'div'>;\n\n/** Fixed gutter: left empty on a continuation row, it keeps the body aligned under the avatar above. */\nexport const CommentItemAvatar = forwardRef<HTMLDivElement, CommentItemAvatarProps>(({ className, ...props }, ref) => (\n <div ref={ref} data-slot=\"comment-item-avatar\" className={cn('w-6 shrink-0 pt-0.5', className)} {...props} />\n));\nCommentItemAvatar.displayName = 'CommentItemAvatar';\n\nexport type CommentItemContentProps = ComponentPropsWithoutRef<'div'>;\n\n/** Everything beside the gutter, stacked and free to shrink so long words wrap instead of widening the row. */\nexport const CommentItemContent = forwardRef<HTMLDivElement, CommentItemContentProps>(\n ({ className, ...props }, ref) => (\n <div ref={ref} data-slot=\"comment-item-content\" className={cn('min-w-0 flex-1', className)} {...props} />\n ),\n);\nCommentItemContent.displayName = 'CommentItemContent';\n\nconst commentItemHeaderLayout: Record<CommentVariant, string> = {\n default: 'flex items-center gap-2',\n embed: 'flex items-center gap-2',\n thread: 'flex items-baseline gap-1.5',\n};\n\nexport type CommentItemHeaderProps = ComponentPropsWithoutRef<'div'>;\n\nexport const CommentItemHeader = forwardRef<HTMLDivElement, CommentItemHeaderProps>(({ className, ...props }, ref) => {\n const variant = useCommentVariant();\n\n return (\n <div\n ref={ref}\n data-slot=\"comment-item-header\"\n className={cn(commentItemHeaderLayout[variant], className)}\n {...props}\n />\n );\n});\nCommentItemHeader.displayName = 'CommentItemHeader';\n\nconst commentItemAuthorSize: Record<CommentVariant, TxtProps['variant']> = {\n default: 'subheading',\n embed: 'subheading',\n thread: 'column',\n};\n\nconst commentItemAuthorTone: Record<CommentVariant, string> = {\n default: 'text-foreground',\n embed: 'text-foreground',\n thread: 'truncate text-foreground',\n};\n\nexport type CommentItemAuthorProps = ComponentPropsWithoutRef<'span'>;\n\nexport const CommentItemAuthor = forwardRef<HTMLElement, CommentItemAuthorProps>(({ className, ...props }, ref) => {\n const variant = useCommentVariant();\n\n return (\n <Txt\n ref={ref}\n as=\"span\"\n variant={commentItemAuthorSize[variant]}\n data-slot=\"comment-item-author\"\n className={cn(commentItemAuthorTone[variant], className)}\n {...props}\n />\n );\n});\nCommentItemAuthor.displayName = 'CommentItemAuthor';\n\nconst commentItemTimestampTone: Record<CommentVariant, string> = {\n default: 'text-caption text-muted-foreground',\n embed: 'text-caption text-muted-foreground',\n thread: 'text-meta text-placeholder shrink-0',\n};\n\nexport type CommentItemTimestampProps = ComponentPropsWithoutRef<'time'>;\n\nexport const CommentItemTimestamp = forwardRef<HTMLTimeElement, CommentItemTimestampProps>(\n ({ className, ...props }, ref) => {\n const variant = useCommentVariant();\n\n return (\n <time\n ref={ref}\n data-slot=\"comment-item-timestamp\"\n className={cn(commentItemTimestampTone[variant], className)}\n {...props}\n />\n );\n },\n);\nCommentItemTimestamp.displayName = 'CommentItemTimestamp';\n\nconst commentItemBodySize: Record<CommentVariant, TxtProps['variant']> = {\n default: 'body',\n embed: 'body',\n thread: 'caption',\n};\n\nconst commentItemBodyTone: Record<CommentVariant, string> = {\n default: 'whitespace-pre-wrap text-foreground border-l border-border pl-3',\n embed: 'whitespace-pre-wrap text-foreground',\n thread: '',\n};\n\nexport type CommentItemBodyProps = ComponentPropsWithoutRef<'p'>;\n\nexport const CommentItemBody = forwardRef<HTMLElement, CommentItemBodyProps>(({ className, ...props }, ref) => {\n const variant = useCommentVariant();\n\n // Rendered markdown brings its own blocks, which a paragraph cannot hold.\n return useRender({\n defaultTagName: variant === 'thread' ? 'div' : 'p',\n props: {\n ...props,\n ref,\n 'data-slot': 'comment-item-body',\n className: cn(textStyle({ variant: commentItemBodySize[variant] }), commentItemBodyTone[variant], className),\n },\n });\n});\nCommentItemBody.displayName = 'CommentItemBody';\n\nconst commentItemActionsLayout: Record<CommentVariant, string> = {\n default:\n 'flex items-center gap-1 opacity-0 group-focus-within/comment-item:opacity-100 group-hover/comment-item:opacity-100 motion-safe:transition-opacity',\n embed: '',\n // Inline at the end of the header row, revealed on hover/focus.\n // `pointer-fine` only: a touch screen has no hover to reveal it with.\n thread:\n 'ml-auto flex shrink-0 items-center gap-0.5 self-center transition-opacity duration-200 ease-out motion-reduce:transition-none pointer-fine:opacity-0 pointer-fine:group-focus-within/comment-item:opacity-100 pointer-fine:group-hover/comment-item:opacity-100',\n};\n\nexport type CommentItemActionsProps = ComponentPropsWithoutRef<'div'>;\n\n/** Hidden in the `embed` variant, which drops per-item actions. */\nexport const CommentItemActions = forwardRef<HTMLDivElement, CommentItemActionsProps>(\n ({ className, ...props }, ref) => {\n const variant = useCommentVariant();\n if (variant === 'embed') return null;\n\n return (\n <div\n ref={ref}\n data-slot=\"comment-item-actions\"\n className={cn(commentItemActionsLayout[variant], className)}\n {...props}\n />\n );\n },\n);\nCommentItemActions.displayName = 'CommentItemActions';\n","import type { ReactNode } from 'react';\n\nimport { ArrivalScope, useWatched } from '@/ds/components/Arrival';\n\nimport './comment-arrival.css';\n\n/** A comment the reader watched land rises into place; one that was already there just appears. */\nexport function CommentArrival({ children }: { children: ReactNode }) {\n const watched = useWatched();\n\n return (\n <div data-slot=\"comment-arrival\" className={watched ? 'mastra-comment-arriving' : undefined}>\n <ArrivalScope>{children}</ArrivalScope>\n </div>\n );\n}\n","import { ArrowUp } from 'lucide-react';\nimport type { ComponentPropsWithoutRef, ReactNode } from 'react';\nimport { forwardRef } from 'react';\n\nimport { useCommentVariant } from './comment-context';\nimport type { CommentVariant } from './comment-context';\nimport { InputGroup, InputGroupAddon, InputGroupButton, InputGroupInput } from '@/ds/components/InputGroup';\nimport type { InputGroupButtonProps, InputGroupInputProps } from '@/ds/components/InputGroup';\nimport type { ControlSize } from '@/ds/primitives/control-size';\nimport { cn } from '@/lib/utils';\n\nexport type CommentComposerProps = ComponentPropsWithoutRef<'form'>;\n\nexport const CommentComposer = forwardRef<HTMLFormElement, CommentComposerProps>(({ className, ...props }, ref) => (\n <form ref={ref} data-slot=\"comment-composer\" className={cn('flex w-full items-center gap-2', className)} {...props} />\n));\nCommentComposer.displayName = 'CommentComposer';\n\nconst composerSize: Record<CommentVariant, ControlSize> = {\n default: 'md',\n embed: 'sm',\n thread: 'md',\n};\n\nexport interface CommentComposerInputProps extends InputGroupInputProps {\n /** Layout classes for the surrounding InputGroup. */\n groupClassName?: string;\n children?: ReactNode;\n}\n\nexport const CommentComposerInput = forwardRef<HTMLInputElement, CommentComposerInputProps>(\n ({ groupClassName, children, ...props }, ref) => {\n const variant = useCommentVariant();\n\n return (\n <InputGroup size={composerSize[variant]} className={groupClassName}>\n <InputGroupInput ref={ref} data-slot=\"comment-composer-input\" {...props} />\n {children}\n </InputGroup>\n );\n },\n);\nCommentComposerInput.displayName = 'CommentComposerInput';\n\nexport type CommentComposerSendProps = Omit<InputGroupButtonProps, 'children'>;\n\nexport const CommentComposerSend = forwardRef<HTMLButtonElement, CommentComposerSendProps>(\n ({ 'aria-label': ariaLabel = 'Send comment', type = 'submit', ...props }, ref) => (\n <InputGroupAddon align=\"inline-end\">\n <InputGroupButton ref={ref} data-slot=\"comment-composer-send\" type={type} aria-label={ariaLabel} {...props}>\n <ArrowUp />\n </InputGroupButton>\n </InputGroupAddon>\n ),\n);\nCommentComposerSend.displayName = 'CommentComposerSend';\n","import { Check, X } from 'lucide-react';\nimport { useState } from 'react';\nimport type { KeyboardEvent } from 'react';\n\nimport { Button } from '@/ds/components/Button';\nimport { Field, FieldError } from '@/ds/components/Field';\nimport { TextareaControl } from '@/ds/primitives/textarea-control';\nimport { cn } from '@/lib/utils';\n\nexport interface CommentEditorProps {\n initialBody: string;\n /** Handed the trimmed draft. Closing is the caller's call, so a save that failed keeps what was typed. */\n onSave: (body: string) => void;\n onClose: () => void;\n /** The caller's save in flight: the box locks until it settles. */\n isPending?: boolean;\n /** Why the caller's last save failed. */\n error?: string;\n 'aria-label'?: string;\n className?: string;\n}\n\n/** Owns the draft only; whether a save landed is the caller's mutation to report. */\nexport function CommentEditor({\n initialBody,\n onSave,\n onClose,\n isPending = false,\n error,\n 'aria-label': ariaLabel = 'Edit comment',\n className,\n}: CommentEditorProps) {\n const [draft, setDraft] = useState(initialBody);\n const body = draft.trim();\n const canSave = body.length > 0 && !isPending;\n\n const save = () => {\n if (!canSave) return;\n if (body === initialBody) {\n onClose();\n return;\n }\n onSave(body);\n };\n\n const onKeyDown = (event: KeyboardEvent<HTMLTextAreaElement>) => {\n // An IME commit fires Enter mid-composition; acting on it would save half a word.\n if (event.nativeEvent.isComposing) return;\n if (event.key === 'Enter' && !event.shiftKey) {\n event.preventDefault();\n save();\n }\n };\n\n return (\n <Field invalid={Boolean(error)} data-slot=\"comment-editor\" className={cn('mt-1 flex flex-col gap-1.5', className)}>\n <div className=\"relative\">\n <TextareaControl\n value={draft}\n onChange={event => setDraft(event.target.value)}\n onKeyDown={onKeyDown}\n readOnly={isPending}\n aria-label={ariaLabel}\n rows={2}\n className=\"block field-sizing-content max-h-40 w-full resize-none overflow-y-auto rounded-lg border border-border bg-background px-2 pt-1.5 pb-9 text-caption text-foreground outline-none focus:border-border-strong\"\n />\n <div className=\"absolute inset-x-px bottom-px flex items-center justify-end gap-1 rounded-b-lg bg-background px-1.5 pt-1 pb-1.5\">\n <Button icon={<X />} type=\"button\" variant=\"ghost\" size=\"sm\" disabled={isPending} onClick={onClose}>\n Cancel\n </Button>\n <Button icon={<Check />} type=\"button\" size=\"sm\" disabled={!canSave} onClick={save}>\n {isPending ? 'Saving…' : 'Save'}\n </Button>\n </div>\n </div>\n <FieldError>{error}</FieldError>\n </Field>\n );\n}\n","import { X } from 'lucide-react';\n\nimport { Button } from '@/ds/components/Button';\nimport { Txt } from '@/ds/components/Txt';\nimport { cn } from '@/lib/utils';\n\nexport interface CommentQuoteProps {\n authorName?: string;\n quote: string;\n /** Given only while the quote is a draft the writer can still drop. */\n onDismiss?: () => void;\n className?: string;\n}\n\n/** The passage a reply answers, above the reply itself or inside the composer writing it. */\nexport function CommentQuote({ authorName, quote, onDismiss, className }: CommentQuoteProps) {\n return (\n <blockquote\n data-slot=\"comment-quote\"\n className={cn(\n 'm-0 flex min-w-0 gap-2 border-l-2 border-border-strong pl-2 text-caption text-muted-foreground',\n className,\n )}\n >\n <span className=\"min-w-0 flex-1\">\n {authorName ? (\n <Txt as=\"span\" variant=\"column\">\n {authorName}{' '}\n </Txt>\n ) : null}\n <span className=\"line-clamp-2 wrap-anywhere whitespace-pre-line\">{quote}</span>\n </span>\n {onDismiss ? (\n <Button\n type=\"button\"\n variant=\"ghost\"\n size=\"icon-sm\"\n aria-label=\"Remove quote\"\n onClick={onDismiss}\n className=\"shrink-0\"\n >\n <X size={12} aria-hidden />\n </Button>\n ) : null}\n </blockquote>\n );\n}\n"],"mappings":"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"}
|
|
@@ -4,7 +4,7 @@ import { raisedSurfaceStyle } from "./primitives/raised-surface.es.js";
|
|
|
4
4
|
import { t as Button } from "./Button-Bw1e3ONi.js";
|
|
5
5
|
import { textStyle } from "./primitives/text.es.js";
|
|
6
6
|
import { t as Txt } from "./Txt-BM6TVV_c.js";
|
|
7
|
-
import {
|
|
7
|
+
import { o as useWatched, t as ArrivalScope } from "./Arrival-CJFEOXr5.js";
|
|
8
8
|
import { Field, FieldError } from "./components/Field.es.js";
|
|
9
9
|
import { TextareaControl } from "./primitives/textarea-control.es.js";
|
|
10
10
|
import { i as InputGroupInput, n as InputGroupAddon, r as InputGroupButton, t as InputGroup } from "./input-group-g85FYfze.js";
|
|
@@ -314,4 +314,4 @@ function CommentQuote({ authorName, quote, onDismiss, className }) {
|
|
|
314
314
|
}
|
|
315
315
|
export { CommentComposerSend as a, CommentItem as c, CommentItemAvatar as d, CommentItemBody as f, CommentList as g, CommentItemTimestamp as h, CommentComposerInput as i, CommentItemActions as l, CommentItemHeader as m, CommentEditor as n, CommentArrival as o, CommentItemContent as p, CommentComposer as r, Comment as s, CommentQuote as t, CommentItemAuthor as u };
|
|
316
316
|
|
|
317
|
-
//# sourceMappingURL=Comment-
|
|
317
|
+
//# sourceMappingURL=Comment-VFJq2wRp.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Comment-CPA3IyPS.js","names":[],"sources":["../src/ds/components/Comment/comment-context.ts","../src/ds/components/Comment/comment.tsx","../src/ds/components/Comment/comment-arrival.tsx","../src/ds/components/Comment/comment-composer.tsx","../src/ds/components/Comment/comment-editor.tsx","../src/ds/components/Comment/comment-quote.tsx"],"sourcesContent":["import { createContext, useContext } from 'react';\n\nexport type CommentVariant = 'default' | 'embed' | 'thread';\n\nexport const CommentContext = createContext<CommentVariant | null>(null);\n\nexport function useCommentVariant(): CommentVariant {\n const variant = useContext(CommentContext);\n if (!variant) throw new Error('Comment compounds must be rendered within Comment');\n return variant;\n}\n","import { useRender } from '@base-ui/react/use-render';\nimport { cva } from 'class-variance-authority';\nimport type { ComponentPropsWithoutRef, HTMLAttributes } from 'react';\nimport { forwardRef } from 'react';\n\nimport { CommentContext, useCommentVariant } from './comment-context';\nimport type { CommentVariant } from './comment-context';\nimport { Txt } from '@/ds/components/Txt';\nimport type { TxtProps } from '@/ds/components/Txt';\nimport { raisedSurfaceStyle } from '@/ds/primitives/raised-surface';\nimport { textStyle } from '@/ds/primitives/text';\nimport { cn } from '@/lib/utils';\n\nconst commentVariants = cva('flex flex-col', {\n variants: {\n variant: {\n default: 'gap-2',\n embed: cn(raisedSurfaceStyle, 'gap-1 rounded-xl p-3'),\n thread: '',\n },\n },\n defaultVariants: {\n variant: 'default',\n },\n});\n\nexport interface CommentProps extends ComponentPropsWithoutRef<'div'> {\n variant?: CommentVariant;\n}\n\nexport const Comment = forwardRef<HTMLDivElement, CommentProps>(({ className, variant = 'default', ...props }, ref) => (\n <CommentContext.Provider value={variant}>\n <div\n ref={ref}\n data-slot=\"comment\"\n data-variant={variant}\n className={cn(commentVariants({ variant }), className)}\n {...props}\n />\n </CommentContext.Provider>\n));\nComment.displayName = 'Comment';\n\nconst commentListGap: Record<CommentVariant, string> = {\n default: 'gap-3',\n embed: 'gap-2',\n thread: '',\n};\n\nexport type CommentListProps = ComponentPropsWithoutRef<'ul'>;\n\nexport const CommentList = forwardRef<HTMLUListElement, CommentListProps>(({ className, ...props }, ref) => {\n const variant = useCommentVariant();\n\n return (\n <ul\n ref={ref}\n data-slot=\"comment-list\"\n className={cn('flex flex-col', commentListGap[variant], className)}\n {...props}\n />\n );\n});\nCommentList.displayName = 'CommentList';\n\nconst commentItemLayout: Record<CommentVariant, string> = {\n default: 'flex flex-col gap-1',\n embed: 'flex flex-col gap-1',\n thread: 'relative flex gap-2 rounded-lg px-2 hover:bg-fill-subtle',\n};\n\nexport interface CommentItemProps extends HTMLAttributes<HTMLElement> {\n /** Same author moments after the row above: the header is dropped and the row tightens. */\n continued?: boolean;\n /** The comment a link pointed at. */\n highlighted?: boolean;\n}\n\nexport const CommentItem = forwardRef<HTMLElement, CommentItemProps>(\n ({ className, continued = false, highlighted = false, ...props }, ref) => {\n const variant = useCommentVariant();\n // A thread row is a stream entry among runs and moves, not a list item.\n const Root = variant === 'thread' ? 'div' : 'li';\n\n return (\n <Root\n // Cast needed: `Root` is polymorphic, so TS narrows the expected ref to a single element type.\n ref={ref as never}\n data-slot=\"comment-item\"\n className={cn(\n 'group/comment-item',\n commentItemLayout[variant],\n variant === 'thread' && (continued ? 'py-0.5' : 'py-1.5'),\n highlighted && 'bg-info-subtle',\n className,\n )}\n {...props}\n />\n );\n },\n);\nCommentItem.displayName = 'CommentItem';\n\nexport type CommentItemAvatarProps = ComponentPropsWithoutRef<'div'>;\n\n/** Fixed gutter: left empty on a continuation row, it keeps the body aligned under the avatar above. */\nexport const CommentItemAvatar = forwardRef<HTMLDivElement, CommentItemAvatarProps>(({ className, ...props }, ref) => (\n <div ref={ref} data-slot=\"comment-item-avatar\" className={cn('w-6 shrink-0 pt-0.5', className)} {...props} />\n));\nCommentItemAvatar.displayName = 'CommentItemAvatar';\n\nexport type CommentItemContentProps = ComponentPropsWithoutRef<'div'>;\n\n/** Everything beside the gutter, stacked and free to shrink so long words wrap instead of widening the row. */\nexport const CommentItemContent = forwardRef<HTMLDivElement, CommentItemContentProps>(\n ({ className, ...props }, ref) => (\n <div ref={ref} data-slot=\"comment-item-content\" className={cn('min-w-0 flex-1', className)} {...props} />\n ),\n);\nCommentItemContent.displayName = 'CommentItemContent';\n\nconst commentItemHeaderLayout: Record<CommentVariant, string> = {\n default: 'flex items-center gap-2',\n embed: 'flex items-center gap-2',\n thread: 'flex items-baseline gap-1.5',\n};\n\nexport type CommentItemHeaderProps = ComponentPropsWithoutRef<'div'>;\n\nexport const CommentItemHeader = forwardRef<HTMLDivElement, CommentItemHeaderProps>(({ className, ...props }, ref) => {\n const variant = useCommentVariant();\n\n return (\n <div\n ref={ref}\n data-slot=\"comment-item-header\"\n className={cn(commentItemHeaderLayout[variant], className)}\n {...props}\n />\n );\n});\nCommentItemHeader.displayName = 'CommentItemHeader';\n\nconst commentItemAuthorSize: Record<CommentVariant, TxtProps['variant']> = {\n default: 'subheading',\n embed: 'subheading',\n thread: 'column',\n};\n\nconst commentItemAuthorTone: Record<CommentVariant, string> = {\n default: 'text-foreground',\n embed: 'text-foreground',\n thread: 'truncate text-foreground',\n};\n\nexport type CommentItemAuthorProps = ComponentPropsWithoutRef<'span'>;\n\nexport const CommentItemAuthor = forwardRef<HTMLElement, CommentItemAuthorProps>(({ className, ...props }, ref) => {\n const variant = useCommentVariant();\n\n return (\n <Txt\n ref={ref}\n as=\"span\"\n variant={commentItemAuthorSize[variant]}\n data-slot=\"comment-item-author\"\n className={cn(commentItemAuthorTone[variant], className)}\n {...props}\n />\n );\n});\nCommentItemAuthor.displayName = 'CommentItemAuthor';\n\nconst commentItemTimestampTone: Record<CommentVariant, string> = {\n default: 'text-caption text-muted-foreground',\n embed: 'text-caption text-muted-foreground',\n thread: 'text-meta text-placeholder shrink-0',\n};\n\nexport type CommentItemTimestampProps = ComponentPropsWithoutRef<'time'>;\n\nexport const CommentItemTimestamp = forwardRef<HTMLTimeElement, CommentItemTimestampProps>(\n ({ className, ...props }, ref) => {\n const variant = useCommentVariant();\n\n return (\n <time\n ref={ref}\n data-slot=\"comment-item-timestamp\"\n className={cn(commentItemTimestampTone[variant], className)}\n {...props}\n />\n );\n },\n);\nCommentItemTimestamp.displayName = 'CommentItemTimestamp';\n\nconst commentItemBodySize: Record<CommentVariant, TxtProps['variant']> = {\n default: 'body',\n embed: 'body',\n thread: 'caption',\n};\n\nconst commentItemBodyTone: Record<CommentVariant, string> = {\n default: 'whitespace-pre-wrap text-foreground border-l border-border pl-3',\n embed: 'whitespace-pre-wrap text-foreground',\n thread: '',\n};\n\nexport type CommentItemBodyProps = ComponentPropsWithoutRef<'p'>;\n\nexport const CommentItemBody = forwardRef<HTMLElement, CommentItemBodyProps>(({ className, ...props }, ref) => {\n const variant = useCommentVariant();\n\n // Rendered markdown brings its own blocks, which a paragraph cannot hold.\n return useRender({\n defaultTagName: variant === 'thread' ? 'div' : 'p',\n props: {\n ...props,\n ref,\n 'data-slot': 'comment-item-body',\n className: cn(textStyle({ variant: commentItemBodySize[variant] }), commentItemBodyTone[variant], className),\n },\n });\n});\nCommentItemBody.displayName = 'CommentItemBody';\n\nconst commentItemActionsLayout: Record<CommentVariant, string> = {\n default:\n 'flex items-center gap-1 opacity-0 group-focus-within/comment-item:opacity-100 group-hover/comment-item:opacity-100 motion-safe:transition-opacity',\n embed: '',\n // Inline at the end of the header row, revealed on hover/focus.\n // `pointer-fine` only: a touch screen has no hover to reveal it with.\n thread:\n 'ml-auto flex shrink-0 items-center gap-0.5 self-center transition-opacity duration-200 ease-out motion-reduce:transition-none pointer-fine:opacity-0 pointer-fine:group-focus-within/comment-item:opacity-100 pointer-fine:group-hover/comment-item:opacity-100',\n};\n\nexport type CommentItemActionsProps = ComponentPropsWithoutRef<'div'>;\n\n/** Hidden in the `embed` variant, which drops per-item actions. */\nexport const CommentItemActions = forwardRef<HTMLDivElement, CommentItemActionsProps>(\n ({ className, ...props }, ref) => {\n const variant = useCommentVariant();\n if (variant === 'embed') return null;\n\n return (\n <div\n ref={ref}\n data-slot=\"comment-item-actions\"\n className={cn(commentItemActionsLayout[variant], className)}\n {...props}\n />\n );\n },\n);\nCommentItemActions.displayName = 'CommentItemActions';\n","import type { ReactNode } from 'react';\n\nimport { ArrivalScope, useWatched } from '@/ds/components/Arrival';\n\nimport './comment-arrival.css';\n\n/** A comment the reader watched land rises into place; one that was already there just appears. */\nexport function CommentArrival({ children }: { children: ReactNode }) {\n const watched = useWatched();\n\n return (\n <div data-slot=\"comment-arrival\" className={watched ? 'mastra-comment-arriving' : undefined}>\n <ArrivalScope>{children}</ArrivalScope>\n </div>\n );\n}\n","import { ArrowUp } from 'lucide-react';\nimport type { ComponentPropsWithoutRef, ReactNode } from 'react';\nimport { forwardRef } from 'react';\n\nimport { useCommentVariant } from './comment-context';\nimport type { CommentVariant } from './comment-context';\nimport { InputGroup, InputGroupAddon, InputGroupButton, InputGroupInput } from '@/ds/components/InputGroup';\nimport type { InputGroupButtonProps, InputGroupInputProps } from '@/ds/components/InputGroup';\nimport type { ControlSize } from '@/ds/primitives/control-size';\nimport { cn } from '@/lib/utils';\n\nexport type CommentComposerProps = ComponentPropsWithoutRef<'form'>;\n\nexport const CommentComposer = forwardRef<HTMLFormElement, CommentComposerProps>(({ className, ...props }, ref) => (\n <form ref={ref} data-slot=\"comment-composer\" className={cn('flex w-full items-center gap-2', className)} {...props} />\n));\nCommentComposer.displayName = 'CommentComposer';\n\nconst composerSize: Record<CommentVariant, ControlSize> = {\n default: 'md',\n embed: 'sm',\n thread: 'md',\n};\n\nexport interface CommentComposerInputProps extends InputGroupInputProps {\n /** Layout classes for the surrounding InputGroup. */\n groupClassName?: string;\n children?: ReactNode;\n}\n\nexport const CommentComposerInput = forwardRef<HTMLInputElement, CommentComposerInputProps>(\n ({ groupClassName, children, ...props }, ref) => {\n const variant = useCommentVariant();\n\n return (\n <InputGroup size={composerSize[variant]} className={groupClassName}>\n <InputGroupInput ref={ref} data-slot=\"comment-composer-input\" {...props} />\n {children}\n </InputGroup>\n );\n },\n);\nCommentComposerInput.displayName = 'CommentComposerInput';\n\nexport type CommentComposerSendProps = Omit<InputGroupButtonProps, 'children'>;\n\nexport const CommentComposerSend = forwardRef<HTMLButtonElement, CommentComposerSendProps>(\n ({ 'aria-label': ariaLabel = 'Send comment', type = 'submit', ...props }, ref) => (\n <InputGroupAddon align=\"inline-end\">\n <InputGroupButton ref={ref} data-slot=\"comment-composer-send\" type={type} aria-label={ariaLabel} {...props}>\n <ArrowUp />\n </InputGroupButton>\n </InputGroupAddon>\n ),\n);\nCommentComposerSend.displayName = 'CommentComposerSend';\n","import { Check, X } from 'lucide-react';\nimport { useState } from 'react';\nimport type { KeyboardEvent } from 'react';\n\nimport { Button } from '@/ds/components/Button';\nimport { Field, FieldError } from '@/ds/components/Field';\nimport { TextareaControl } from '@/ds/primitives/textarea-control';\nimport { cn } from '@/lib/utils';\n\nexport interface CommentEditorProps {\n initialBody: string;\n /** Handed the trimmed draft. Closing is the caller's call, so a save that failed keeps what was typed. */\n onSave: (body: string) => void;\n onClose: () => void;\n /** The caller's save in flight: the box locks until it settles. */\n isPending?: boolean;\n /** Why the caller's last save failed. */\n error?: string;\n 'aria-label'?: string;\n className?: string;\n}\n\n/** Owns the draft only; whether a save landed is the caller's mutation to report. */\nexport function CommentEditor({\n initialBody,\n onSave,\n onClose,\n isPending = false,\n error,\n 'aria-label': ariaLabel = 'Edit comment',\n className,\n}: CommentEditorProps) {\n const [draft, setDraft] = useState(initialBody);\n const body = draft.trim();\n const canSave = body.length > 0 && !isPending;\n\n const save = () => {\n if (!canSave) return;\n if (body === initialBody) {\n onClose();\n return;\n }\n onSave(body);\n };\n\n const onKeyDown = (event: KeyboardEvent<HTMLTextAreaElement>) => {\n // An IME commit fires Enter mid-composition; acting on it would save half a word.\n if (event.nativeEvent.isComposing) return;\n if (event.key === 'Enter' && !event.shiftKey) {\n event.preventDefault();\n save();\n }\n };\n\n return (\n <Field invalid={Boolean(error)} data-slot=\"comment-editor\" className={cn('mt-1 flex flex-col gap-1.5', className)}>\n <div className=\"relative\">\n <TextareaControl\n value={draft}\n onChange={event => setDraft(event.target.value)}\n onKeyDown={onKeyDown}\n readOnly={isPending}\n aria-label={ariaLabel}\n rows={2}\n className=\"block field-sizing-content max-h-40 w-full resize-none overflow-y-auto rounded-lg border border-border bg-background px-2 pt-1.5 pb-9 text-caption text-foreground outline-none focus:border-border-strong\"\n />\n <div className=\"absolute inset-x-px bottom-px flex items-center justify-end gap-1 rounded-b-lg bg-background px-1.5 pt-1 pb-1.5\">\n <Button icon={<X />} type=\"button\" variant=\"ghost\" size=\"sm\" disabled={isPending} onClick={onClose}>\n Cancel\n </Button>\n <Button icon={<Check />} type=\"button\" size=\"sm\" disabled={!canSave} onClick={save}>\n {isPending ? 'Saving…' : 'Save'}\n </Button>\n </div>\n </div>\n <FieldError>{error}</FieldError>\n </Field>\n );\n}\n","import { X } from 'lucide-react';\n\nimport { Button } from '@/ds/components/Button';\nimport { Txt } from '@/ds/components/Txt';\nimport { cn } from '@/lib/utils';\n\nexport interface CommentQuoteProps {\n authorName?: string;\n quote: string;\n /** Given only while the quote is a draft the writer can still drop. */\n onDismiss?: () => void;\n className?: string;\n}\n\n/** The passage a reply answers, above the reply itself or inside the composer writing it. */\nexport function CommentQuote({ authorName, quote, onDismiss, className }: CommentQuoteProps) {\n return (\n <blockquote\n data-slot=\"comment-quote\"\n className={cn(\n 'm-0 flex min-w-0 gap-2 border-l-2 border-border-strong pl-2 text-caption text-muted-foreground',\n className,\n )}\n >\n <span className=\"min-w-0 flex-1\">\n {authorName ? (\n <Txt as=\"span\" variant=\"column\">\n {authorName}{' '}\n </Txt>\n ) : null}\n <span className=\"line-clamp-2 wrap-anywhere whitespace-pre-line\">{quote}</span>\n </span>\n {onDismiss ? (\n <Button\n type=\"button\"\n variant=\"ghost\"\n size=\"icon-sm\"\n aria-label=\"Remove quote\"\n onClick={onDismiss}\n className=\"shrink-0\"\n >\n <X size={12} aria-hidden />\n </Button>\n ) : null}\n </blockquote>\n );\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Comment-VFJq2wRp.js","names":[],"sources":["../src/ds/components/Comment/comment-context.ts","../src/ds/components/Comment/comment.tsx","../src/ds/components/Comment/comment-arrival.tsx","../src/ds/components/Comment/comment-composer.tsx","../src/ds/components/Comment/comment-editor.tsx","../src/ds/components/Comment/comment-quote.tsx"],"sourcesContent":["import { createContext, useContext } from 'react';\n\nexport type CommentVariant = 'default' | 'embed' | 'thread';\n\nexport const CommentContext = createContext<CommentVariant | null>(null);\n\nexport function useCommentVariant(): CommentVariant {\n const variant = useContext(CommentContext);\n if (!variant) throw new Error('Comment compounds must be rendered within Comment');\n return variant;\n}\n","import { useRender } from '@base-ui/react/use-render';\nimport { cva } from 'class-variance-authority';\nimport type { ComponentPropsWithoutRef, HTMLAttributes } from 'react';\nimport { forwardRef } from 'react';\n\nimport { CommentContext, useCommentVariant } from './comment-context';\nimport type { CommentVariant } from './comment-context';\nimport { Txt } from '@/ds/components/Txt';\nimport type { TxtProps } from '@/ds/components/Txt';\nimport { raisedSurfaceStyle } from '@/ds/primitives/raised-surface';\nimport { textStyle } from '@/ds/primitives/text';\nimport { cn } from '@/lib/utils';\n\nconst commentVariants = cva('flex flex-col', {\n variants: {\n variant: {\n default: 'gap-2',\n embed: cn(raisedSurfaceStyle, 'gap-1 rounded-xl p-3'),\n thread: '',\n },\n },\n defaultVariants: {\n variant: 'default',\n },\n});\n\nexport interface CommentProps extends ComponentPropsWithoutRef<'div'> {\n variant?: CommentVariant;\n}\n\nexport const Comment = forwardRef<HTMLDivElement, CommentProps>(({ className, variant = 'default', ...props }, ref) => (\n <CommentContext.Provider value={variant}>\n <div\n ref={ref}\n data-slot=\"comment\"\n data-variant={variant}\n className={cn(commentVariants({ variant }), className)}\n {...props}\n />\n </CommentContext.Provider>\n));\nComment.displayName = 'Comment';\n\nconst commentListGap: Record<CommentVariant, string> = {\n default: 'gap-3',\n embed: 'gap-2',\n thread: '',\n};\n\nexport type CommentListProps = ComponentPropsWithoutRef<'ul'>;\n\nexport const CommentList = forwardRef<HTMLUListElement, CommentListProps>(({ className, ...props }, ref) => {\n const variant = useCommentVariant();\n\n return (\n <ul\n ref={ref}\n data-slot=\"comment-list\"\n className={cn('flex flex-col', commentListGap[variant], className)}\n {...props}\n />\n );\n});\nCommentList.displayName = 'CommentList';\n\nconst commentItemLayout: Record<CommentVariant, string> = {\n default: 'flex flex-col gap-1',\n embed: 'flex flex-col gap-1',\n thread: 'relative flex gap-2 rounded-lg px-2 hover:bg-fill-subtle',\n};\n\nexport interface CommentItemProps extends HTMLAttributes<HTMLElement> {\n /** Same author moments after the row above: the header is dropped and the row tightens. */\n continued?: boolean;\n /** The comment a link pointed at. */\n highlighted?: boolean;\n}\n\nexport const CommentItem = forwardRef<HTMLElement, CommentItemProps>(\n ({ className, continued = false, highlighted = false, ...props }, ref) => {\n const variant = useCommentVariant();\n // A thread row is a stream entry among runs and moves, not a list item.\n const Root = variant === 'thread' ? 'div' : 'li';\n\n return (\n <Root\n // Cast needed: `Root` is polymorphic, so TS narrows the expected ref to a single element type.\n ref={ref as never}\n data-slot=\"comment-item\"\n className={cn(\n 'group/comment-item',\n commentItemLayout[variant],\n variant === 'thread' && (continued ? 'py-0.5' : 'py-1.5'),\n highlighted && 'bg-info-subtle',\n className,\n )}\n {...props}\n />\n );\n },\n);\nCommentItem.displayName = 'CommentItem';\n\nexport type CommentItemAvatarProps = ComponentPropsWithoutRef<'div'>;\n\n/** Fixed gutter: left empty on a continuation row, it keeps the body aligned under the avatar above. */\nexport const CommentItemAvatar = forwardRef<HTMLDivElement, CommentItemAvatarProps>(({ className, ...props }, ref) => (\n <div ref={ref} data-slot=\"comment-item-avatar\" className={cn('w-6 shrink-0 pt-0.5', className)} {...props} />\n));\nCommentItemAvatar.displayName = 'CommentItemAvatar';\n\nexport type CommentItemContentProps = ComponentPropsWithoutRef<'div'>;\n\n/** Everything beside the gutter, stacked and free to shrink so long words wrap instead of widening the row. */\nexport const CommentItemContent = forwardRef<HTMLDivElement, CommentItemContentProps>(\n ({ className, ...props }, ref) => (\n <div ref={ref} data-slot=\"comment-item-content\" className={cn('min-w-0 flex-1', className)} {...props} />\n ),\n);\nCommentItemContent.displayName = 'CommentItemContent';\n\nconst commentItemHeaderLayout: Record<CommentVariant, string> = {\n default: 'flex items-center gap-2',\n embed: 'flex items-center gap-2',\n thread: 'flex items-baseline gap-1.5',\n};\n\nexport type CommentItemHeaderProps = ComponentPropsWithoutRef<'div'>;\n\nexport const CommentItemHeader = forwardRef<HTMLDivElement, CommentItemHeaderProps>(({ className, ...props }, ref) => {\n const variant = useCommentVariant();\n\n return (\n <div\n ref={ref}\n data-slot=\"comment-item-header\"\n className={cn(commentItemHeaderLayout[variant], className)}\n {...props}\n />\n );\n});\nCommentItemHeader.displayName = 'CommentItemHeader';\n\nconst commentItemAuthorSize: Record<CommentVariant, TxtProps['variant']> = {\n default: 'subheading',\n embed: 'subheading',\n thread: 'column',\n};\n\nconst commentItemAuthorTone: Record<CommentVariant, string> = {\n default: 'text-foreground',\n embed: 'text-foreground',\n thread: 'truncate text-foreground',\n};\n\nexport type CommentItemAuthorProps = ComponentPropsWithoutRef<'span'>;\n\nexport const CommentItemAuthor = forwardRef<HTMLElement, CommentItemAuthorProps>(({ className, ...props }, ref) => {\n const variant = useCommentVariant();\n\n return (\n <Txt\n ref={ref}\n as=\"span\"\n variant={commentItemAuthorSize[variant]}\n data-slot=\"comment-item-author\"\n className={cn(commentItemAuthorTone[variant], className)}\n {...props}\n />\n );\n});\nCommentItemAuthor.displayName = 'CommentItemAuthor';\n\nconst commentItemTimestampTone: Record<CommentVariant, string> = {\n default: 'text-caption text-muted-foreground',\n embed: 'text-caption text-muted-foreground',\n thread: 'text-meta text-placeholder shrink-0',\n};\n\nexport type CommentItemTimestampProps = ComponentPropsWithoutRef<'time'>;\n\nexport const CommentItemTimestamp = forwardRef<HTMLTimeElement, CommentItemTimestampProps>(\n ({ className, ...props }, ref) => {\n const variant = useCommentVariant();\n\n return (\n <time\n ref={ref}\n data-slot=\"comment-item-timestamp\"\n className={cn(commentItemTimestampTone[variant], className)}\n {...props}\n />\n );\n },\n);\nCommentItemTimestamp.displayName = 'CommentItemTimestamp';\n\nconst commentItemBodySize: Record<CommentVariant, TxtProps['variant']> = {\n default: 'body',\n embed: 'body',\n thread: 'caption',\n};\n\nconst commentItemBodyTone: Record<CommentVariant, string> = {\n default: 'whitespace-pre-wrap text-foreground border-l border-border pl-3',\n embed: 'whitespace-pre-wrap text-foreground',\n thread: '',\n};\n\nexport type CommentItemBodyProps = ComponentPropsWithoutRef<'p'>;\n\nexport const CommentItemBody = forwardRef<HTMLElement, CommentItemBodyProps>(({ className, ...props }, ref) => {\n const variant = useCommentVariant();\n\n // Rendered markdown brings its own blocks, which a paragraph cannot hold.\n return useRender({\n defaultTagName: variant === 'thread' ? 'div' : 'p',\n props: {\n ...props,\n ref,\n 'data-slot': 'comment-item-body',\n className: cn(textStyle({ variant: commentItemBodySize[variant] }), commentItemBodyTone[variant], className),\n },\n });\n});\nCommentItemBody.displayName = 'CommentItemBody';\n\nconst commentItemActionsLayout: Record<CommentVariant, string> = {\n default:\n 'flex items-center gap-1 opacity-0 group-focus-within/comment-item:opacity-100 group-hover/comment-item:opacity-100 motion-safe:transition-opacity',\n embed: '',\n // Inline at the end of the header row, revealed on hover/focus.\n // `pointer-fine` only: a touch screen has no hover to reveal it with.\n thread:\n 'ml-auto flex shrink-0 items-center gap-0.5 self-center transition-opacity duration-200 ease-out motion-reduce:transition-none pointer-fine:opacity-0 pointer-fine:group-focus-within/comment-item:opacity-100 pointer-fine:group-hover/comment-item:opacity-100',\n};\n\nexport type CommentItemActionsProps = ComponentPropsWithoutRef<'div'>;\n\n/** Hidden in the `embed` variant, which drops per-item actions. */\nexport const CommentItemActions = forwardRef<HTMLDivElement, CommentItemActionsProps>(\n ({ className, ...props }, ref) => {\n const variant = useCommentVariant();\n if (variant === 'embed') return null;\n\n return (\n <div\n ref={ref}\n data-slot=\"comment-item-actions\"\n className={cn(commentItemActionsLayout[variant], className)}\n {...props}\n />\n );\n },\n);\nCommentItemActions.displayName = 'CommentItemActions';\n","import type { ReactNode } from 'react';\n\nimport { ArrivalScope, useWatched } from '@/ds/components/Arrival';\n\nimport './comment-arrival.css';\n\n/** A comment the reader watched land rises into place; one that was already there just appears. */\nexport function CommentArrival({ children }: { children: ReactNode }) {\n const watched = useWatched();\n\n return (\n <div data-slot=\"comment-arrival\" className={watched ? 'mastra-comment-arriving' : undefined}>\n <ArrivalScope>{children}</ArrivalScope>\n </div>\n );\n}\n","import { ArrowUp } from 'lucide-react';\nimport type { ComponentPropsWithoutRef, ReactNode } from 'react';\nimport { forwardRef } from 'react';\n\nimport { useCommentVariant } from './comment-context';\nimport type { CommentVariant } from './comment-context';\nimport { InputGroup, InputGroupAddon, InputGroupButton, InputGroupInput } from '@/ds/components/InputGroup';\nimport type { InputGroupButtonProps, InputGroupInputProps } from '@/ds/components/InputGroup';\nimport type { ControlSize } from '@/ds/primitives/control-size';\nimport { cn } from '@/lib/utils';\n\nexport type CommentComposerProps = ComponentPropsWithoutRef<'form'>;\n\nexport const CommentComposer = forwardRef<HTMLFormElement, CommentComposerProps>(({ className, ...props }, ref) => (\n <form ref={ref} data-slot=\"comment-composer\" className={cn('flex w-full items-center gap-2', className)} {...props} />\n));\nCommentComposer.displayName = 'CommentComposer';\n\nconst composerSize: Record<CommentVariant, ControlSize> = {\n default: 'md',\n embed: 'sm',\n thread: 'md',\n};\n\nexport interface CommentComposerInputProps extends InputGroupInputProps {\n /** Layout classes for the surrounding InputGroup. */\n groupClassName?: string;\n children?: ReactNode;\n}\n\nexport const CommentComposerInput = forwardRef<HTMLInputElement, CommentComposerInputProps>(\n ({ groupClassName, children, ...props }, ref) => {\n const variant = useCommentVariant();\n\n return (\n <InputGroup size={composerSize[variant]} className={groupClassName}>\n <InputGroupInput ref={ref} data-slot=\"comment-composer-input\" {...props} />\n {children}\n </InputGroup>\n );\n },\n);\nCommentComposerInput.displayName = 'CommentComposerInput';\n\nexport type CommentComposerSendProps = Omit<InputGroupButtonProps, 'children'>;\n\nexport const CommentComposerSend = forwardRef<HTMLButtonElement, CommentComposerSendProps>(\n ({ 'aria-label': ariaLabel = 'Send comment', type = 'submit', ...props }, ref) => (\n <InputGroupAddon align=\"inline-end\">\n <InputGroupButton ref={ref} data-slot=\"comment-composer-send\" type={type} aria-label={ariaLabel} {...props}>\n <ArrowUp />\n </InputGroupButton>\n </InputGroupAddon>\n ),\n);\nCommentComposerSend.displayName = 'CommentComposerSend';\n","import { Check, X } from 'lucide-react';\nimport { useState } from 'react';\nimport type { KeyboardEvent } from 'react';\n\nimport { Button } from '@/ds/components/Button';\nimport { Field, FieldError } from '@/ds/components/Field';\nimport { TextareaControl } from '@/ds/primitives/textarea-control';\nimport { cn } from '@/lib/utils';\n\nexport interface CommentEditorProps {\n initialBody: string;\n /** Handed the trimmed draft. Closing is the caller's call, so a save that failed keeps what was typed. */\n onSave: (body: string) => void;\n onClose: () => void;\n /** The caller's save in flight: the box locks until it settles. */\n isPending?: boolean;\n /** Why the caller's last save failed. */\n error?: string;\n 'aria-label'?: string;\n className?: string;\n}\n\n/** Owns the draft only; whether a save landed is the caller's mutation to report. */\nexport function CommentEditor({\n initialBody,\n onSave,\n onClose,\n isPending = false,\n error,\n 'aria-label': ariaLabel = 'Edit comment',\n className,\n}: CommentEditorProps) {\n const [draft, setDraft] = useState(initialBody);\n const body = draft.trim();\n const canSave = body.length > 0 && !isPending;\n\n const save = () => {\n if (!canSave) return;\n if (body === initialBody) {\n onClose();\n return;\n }\n onSave(body);\n };\n\n const onKeyDown = (event: KeyboardEvent<HTMLTextAreaElement>) => {\n // An IME commit fires Enter mid-composition; acting on it would save half a word.\n if (event.nativeEvent.isComposing) return;\n if (event.key === 'Enter' && !event.shiftKey) {\n event.preventDefault();\n save();\n }\n };\n\n return (\n <Field invalid={Boolean(error)} data-slot=\"comment-editor\" className={cn('mt-1 flex flex-col gap-1.5', className)}>\n <div className=\"relative\">\n <TextareaControl\n value={draft}\n onChange={event => setDraft(event.target.value)}\n onKeyDown={onKeyDown}\n readOnly={isPending}\n aria-label={ariaLabel}\n rows={2}\n className=\"block field-sizing-content max-h-40 w-full resize-none overflow-y-auto rounded-lg border border-border bg-background px-2 pt-1.5 pb-9 text-caption text-foreground outline-none focus:border-border-strong\"\n />\n <div className=\"absolute inset-x-px bottom-px flex items-center justify-end gap-1 rounded-b-lg bg-background px-1.5 pt-1 pb-1.5\">\n <Button icon={<X />} type=\"button\" variant=\"ghost\" size=\"sm\" disabled={isPending} onClick={onClose}>\n Cancel\n </Button>\n <Button icon={<Check />} type=\"button\" size=\"sm\" disabled={!canSave} onClick={save}>\n {isPending ? 'Saving…' : 'Save'}\n </Button>\n </div>\n </div>\n <FieldError>{error}</FieldError>\n </Field>\n );\n}\n","import { X } from 'lucide-react';\n\nimport { Button } from '@/ds/components/Button';\nimport { Txt } from '@/ds/components/Txt';\nimport { cn } from '@/lib/utils';\n\nexport interface CommentQuoteProps {\n authorName?: string;\n quote: string;\n /** Given only while the quote is a draft the writer can still drop. */\n onDismiss?: () => void;\n className?: string;\n}\n\n/** The passage a reply answers, above the reply itself or inside the composer writing it. */\nexport function CommentQuote({ authorName, quote, onDismiss, className }: CommentQuoteProps) {\n return (\n <blockquote\n data-slot=\"comment-quote\"\n className={cn(\n 'm-0 flex min-w-0 gap-2 border-l-2 border-border-strong pl-2 text-caption text-muted-foreground',\n className,\n )}\n >\n <span className=\"min-w-0 flex-1\">\n {authorName ? (\n <Txt as=\"span\" variant=\"column\">\n {authorName}{' '}\n </Txt>\n ) : null}\n <span className=\"line-clamp-2 wrap-anywhere whitespace-pre-line\">{quote}</span>\n </span>\n {onDismiss ? (\n <Button\n type=\"button\"\n variant=\"ghost\"\n size=\"icon-sm\"\n aria-label=\"Remove quote\"\n onClick={onDismiss}\n className=\"shrink-0\"\n >\n <X size={12} aria-hidden />\n </Button>\n ) : null}\n </blockquote>\n );\n}\n"],"mappings":"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"}
|