@mastra/playground-ui 68.0.0 → 69.0.0-alpha.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +80 -8
- package/dist/AgentIndicator-Dnv_1hvF.js +1995 -0
- package/dist/AgentIndicator-Dnv_1hvF.js.map +1 -0
- package/dist/AgentIndicator-zCokR2zb.cjs +2012 -0
- package/dist/AgentIndicator-zCokR2zb.cjs.map +1 -0
- package/dist/{AttachmentCard-DbGp7TYl.js → AttachmentCard-Bt3-QAxJ.js} +3 -3
- package/dist/{AttachmentCard-DbGp7TYl.js.map → AttachmentCard-Bt3-QAxJ.js.map} +1 -1
- package/dist/{AttachmentCard-CciBqu7E.cjs → AttachmentCard-BycDEelL.cjs} +3 -3
- package/dist/{AttachmentCard-CciBqu7E.cjs.map → AttachmentCard-BycDEelL.cjs.map} +1 -1
- package/dist/{Avatar-Dj8aP7OI.js → Avatar-DOoEXudh.js} +3 -3
- package/dist/{Avatar-Dj8aP7OI.js.map → Avatar-DOoEXudh.js.map} +1 -1
- package/dist/{Avatar-Iiqjad9K.cjs → Avatar-Dxpc0YUx.cjs} +3 -3
- package/dist/{Avatar-Iiqjad9K.cjs.map → Avatar-Dxpc0YUx.cjs.map} +1 -1
- package/dist/{Badge-aVu5iGAF.js → Badge-C7NnqmMx.js} +3 -3
- package/dist/{Badge-aVu5iGAF.js.map → Badge-C7NnqmMx.js.map} +1 -1
- package/dist/{Badge-DZ6r6bcw.cjs → Badge-DqaMg7Gy.cjs} +3 -3
- package/dist/{Badge-DZ6r6bcw.cjs.map → Badge-DqaMg7Gy.cjs.map} +1 -1
- package/dist/{Button-DLcMcuUL.cjs → Button-BfICfyxD.cjs} +5 -5
- package/dist/Button-BfICfyxD.cjs.map +1 -0
- package/dist/{Button-CLXTbAY8.js → Button-Bi7aXd_G.js} +5 -5
- package/dist/Button-Bi7aXd_G.js.map +1 -0
- package/dist/{Card-C6iEBgVq.cjs → Card-C9oCXvxU.cjs} +3 -3
- package/dist/{Card-C6iEBgVq.cjs.map → Card-C9oCXvxU.cjs.map} +1 -1
- package/dist/{Card-LU1aWO7U.js → Card-ClDoUQNb.js} +3 -3
- package/dist/{Card-LU1aWO7U.js.map → Card-ClDoUQNb.js.map} +1 -1
- package/dist/{CodeEditor-CLzs0yVc.cjs → CodeEditor-DHIDfP5g.cjs} +8 -8
- package/dist/{CodeEditor-CLzs0yVc.cjs.map → CodeEditor-DHIDfP5g.cjs.map} +1 -1
- package/dist/{CodeEditor-COnz9c6B.js → CodeEditor-ZoBu3Gjw.js} +8 -8
- package/dist/{CodeEditor-COnz9c6B.js.map → CodeEditor-ZoBu3Gjw.js.map} +1 -1
- package/dist/{Comment-0n98b_f_.js → Comment-2q9SomE2.js} +5 -5
- package/dist/{Comment-0n98b_f_.js.map → Comment-2q9SomE2.js.map} +1 -1
- package/dist/{Comment-Cg0f7eLa.cjs → Comment-rQxuMDQv.cjs} +6 -6
- package/dist/{Comment-Cg0f7eLa.cjs.map → Comment-rQxuMDQv.cjs.map} +1 -1
- package/dist/{Composer-D1gF-0jZ.js → Composer-bVE8qK52.js} +19 -14
- package/dist/Composer-bVE8qK52.js.map +1 -0
- package/dist/{Composer-BcueJvdX.cjs → Composer-u1K6edoZ.cjs} +18 -13
- package/dist/Composer-u1K6edoZ.cjs.map +1 -0
- package/dist/{DataCodeSection-CFxXsQWH.cjs → DataCodeSection-7SvRJj6f.cjs} +8 -8
- package/dist/{DataCodeSection-CFxXsQWH.cjs.map → DataCodeSection-7SvRJj6f.cjs.map} +1 -1
- package/dist/{DataCodeSection-PY9XEg2C.js → DataCodeSection-CTodi9wg.js} +8 -8
- package/dist/{DataCodeSection-PY9XEg2C.js.map → DataCodeSection-CTodi9wg.js.map} +1 -1
- package/dist/{DataDetailsPanel-DiyjEXqK.cjs → DataDetailsPanel-BDoD6pxx.cjs} +7 -7
- package/dist/{DataDetailsPanel-DiyjEXqK.cjs.map → DataDetailsPanel-BDoD6pxx.cjs.map} +1 -1
- package/dist/{DataDetailsPanel-CohEKPm4.js → DataDetailsPanel-BU05psHL.js} +7 -7
- package/dist/{DataDetailsPanel-CohEKPm4.js.map → DataDetailsPanel-BU05psHL.js.map} +1 -1
- package/dist/{DataKeysAndValues-PwOmGxyp.js → DataKeysAndValues-B56je3sK.js} +2 -2
- package/dist/{DataKeysAndValues-PwOmGxyp.js.map → DataKeysAndValues-B56je3sK.js.map} +1 -1
- package/dist/{DataKeysAndValues-DsH6AbAo.cjs → DataKeysAndValues-BbKeVxrQ.cjs} +2 -2
- package/dist/{DataKeysAndValues-DsH6AbAo.cjs.map → DataKeysAndValues-BbKeVxrQ.cjs.map} +1 -1
- package/dist/{DataList-CUhRQAv6.js → DataList-B7ho6PrJ.js} +8 -8
- package/dist/{DataList-CUhRQAv6.js.map → DataList-B7ho6PrJ.js.map} +1 -1
- package/dist/{DataList-Cj0mfk19.cjs → DataList-DTIdllb-.cjs} +8 -8
- package/dist/{DataList-Cj0mfk19.cjs.map → DataList-DTIdllb-.cjs.map} +1 -1
- package/dist/{DataPanel-Coc9h35I.cjs → DataPanel-BRRAvWYQ.cjs} +10 -10
- package/dist/{DataPanel-Coc9h35I.cjs.map → DataPanel-BRRAvWYQ.cjs.map} +1 -1
- package/dist/{DataPanel-IgB9D5PO.js → DataPanel-pVr5LVaK.js} +10 -10
- package/dist/{DataPanel-IgB9D5PO.js.map → DataPanel-pVr5LVaK.js.map} +1 -1
- package/dist/{Dialog-BvWF9HE-.cjs → Dialog-Duy3M1ny.cjs} +3 -3
- package/dist/{Dialog-BvWF9HE-.cjs.map → Dialog-Duy3M1ny.cjs.map} +1 -1
- package/dist/{Dialog-DaWtxwd9.js → Dialog-OBPu3rl2.js} +3 -3
- package/dist/{Dialog-DaWtxwd9.js.map → Dialog-OBPu3rl2.js.map} +1 -1
- package/dist/{EmptyState-DxDHlYqD.cjs → EmptyState-Dc-sP95H.cjs} +2 -2
- package/dist/{EmptyState-DxDHlYqD.cjs.map → EmptyState-Dc-sP95H.cjs.map} +1 -1
- package/dist/{EmptyState-P-Gy898T.js → EmptyState-i88y1x75.js} +2 -2
- package/dist/{EmptyState-P-Gy898T.js.map → EmptyState-i88y1x75.js.map} +1 -1
- package/dist/{ErrorBoundary-B5GjmA6V.cjs → ErrorBoundary-Bwoum0sT.cjs} +3 -3
- package/dist/{ErrorBoundary-B5GjmA6V.cjs.map → ErrorBoundary-Bwoum0sT.cjs.map} +1 -1
- package/dist/{ErrorBoundary-Cat3KU86.js → ErrorBoundary-BzmaWe2y.js} +3 -3
- package/dist/{ErrorBoundary-Cat3KU86.js.map → ErrorBoundary-BzmaWe2y.js.map} +1 -1
- package/dist/{FilterBar-PSQ1OwqH.js → FilterBar-Kmn6gMgO.js} +14 -15
- package/dist/FilterBar-Kmn6gMgO.js.map +1 -0
- package/dist/{FilterBar-BSP2UTjc.cjs → FilterBar-jBz6yaNu.cjs} +13 -14
- package/dist/FilterBar-jBz6yaNu.cjs.map +1 -0
- package/dist/{LogsDataList-BI2C5OJz.js → LogsDataList-Cdo_U0Ei.js} +5 -5
- package/dist/{LogsDataList-BI2C5OJz.js.map → LogsDataList-Cdo_U0Ei.js.map} +1 -1
- package/dist/{LogsDataList-CCIfUPGo.cjs → LogsDataList-z0Y2X8P5.cjs} +5 -5
- package/dist/{LogsDataList-CCIfUPGo.cjs.map → LogsDataList-z0Y2X8P5.cjs.map} +1 -1
- package/dist/{MarkdownRenderer-y65WGBhC.cjs → MarkdownRenderer-CUYpmuPh.cjs} +6 -6
- package/dist/{MarkdownRenderer-y65WGBhC.cjs.map → MarkdownRenderer-CUYpmuPh.cjs.map} +1 -1
- package/dist/{MarkdownRenderer-CI30RqdB.js → MarkdownRenderer-CY8LGt-l.js} +6 -6
- package/dist/{MarkdownRenderer-CI30RqdB.js.map → MarkdownRenderer-CY8LGt-l.js.map} +1 -1
- package/dist/MarkdownRenderer.css +77 -6
- package/dist/{Message-jj56lxNL.cjs → Message-CgO_SxI4.cjs} +20 -9
- package/dist/Message-CgO_SxI4.cjs.map +1 -0
- package/dist/{Message-CWzi5F_Q.js → Message-DnnCoSef.js} +20 -9
- package/dist/{Message-CWzi5F_Q.js.map → Message-DnnCoSef.js.map} +1 -1
- package/dist/{MessageScroller-CGsfTd1Z.cjs → MessageScroller-D-mK1uuu.cjs} +50 -26
- package/dist/MessageScroller-D-mK1uuu.cjs.map +1 -0
- package/dist/{MessageScroller-DvaKlm4O.js → MessageScroller-nV_zBF3H.js} +50 -26
- package/dist/MessageScroller-nV_zBF3H.js.map +1 -0
- package/dist/Metadata-5GJlO4GU.cjs +32 -0
- package/dist/Metadata-5GJlO4GU.cjs.map +1 -0
- package/dist/Metadata-DlVgmRTA.js +27 -0
- package/dist/Metadata-DlVgmRTA.js.map +1 -0
- package/dist/{MetricsCard-BEwiS7Pe.cjs → MetricsCard-DojbLiEx.cjs} +19 -6
- package/dist/MetricsCard-DojbLiEx.cjs.map +1 -0
- package/dist/{MetricsCard-ua6C6b8a.js → MetricsCard-kAqSCPPe.js} +20 -7
- package/dist/MetricsCard-kAqSCPPe.js.map +1 -0
- package/dist/{MetricsKpiCard-OHbAElTl.js → MetricsKpiCard-1blTbzUs.js} +6 -6
- package/dist/{MetricsKpiCard-OHbAElTl.js.map → MetricsKpiCard-1blTbzUs.js.map} +1 -1
- package/dist/{MetricsKpiCard-By_-sagx.cjs → MetricsKpiCard-C_9GvRAp.cjs} +6 -6
- package/dist/{MetricsKpiCard-By_-sagx.cjs.map → MetricsKpiCard-C_9GvRAp.cjs.map} +1 -1
- package/dist/{MetricsLineChart-4SwxBbQx.js → MetricsLineChart-4w5lpH63.js} +3 -3
- package/dist/{MetricsLineChart-4SwxBbQx.js.map → MetricsLineChart-4w5lpH63.js.map} +1 -1
- package/dist/{MetricsLineChart-tZxsauau.cjs → MetricsLineChart-BnY9JKzc.cjs} +3 -3
- package/dist/{MetricsLineChart-tZxsauau.cjs.map → MetricsLineChart-BnY9JKzc.cjs.map} +1 -1
- package/dist/{MetricsStackedBarChart-D2QyS4-z.js → MetricsStackedBarChart-Bmk0OjYp.js} +7 -7
- package/dist/{MetricsStackedBarChart-D2QyS4-z.js.map → MetricsStackedBarChart-Bmk0OjYp.js.map} +1 -1
- package/dist/{MetricsStackedBarChart-CDLE76IB.cjs → MetricsStackedBarChart-CJQF99sc.cjs} +7 -7
- package/dist/{MetricsStackedBarChart-CDLE76IB.cjs.map → MetricsStackedBarChart-CJQF99sc.cjs.map} +1 -1
- package/dist/{MetricsTable-BSl81oNe.cjs → MetricsTable-CvMoo2vg.cjs} +3 -3
- package/dist/{MetricsTable-BSl81oNe.cjs.map → MetricsTable-CvMoo2vg.cjs.map} +1 -1
- package/dist/{MetricsTable-DID6LRoP.js → MetricsTable-DIjbD5Xk.js} +3 -3
- package/dist/{MetricsTable-DID6LRoP.js.map → MetricsTable-DIjbD5Xk.js.map} +1 -1
- package/dist/{Notice-JZ7SW7q6.cjs → Notice-B_KjMmA6.cjs} +3 -3
- package/dist/{Notice-JZ7SW7q6.cjs.map → Notice-B_KjMmA6.cjs.map} +1 -1
- package/dist/{Notice-C-8oOZZF.js → Notice-OSlG42lD.js} +2 -2
- package/dist/{Notice-C-8oOZZF.js.map → Notice-OSlG42lD.js.map} +1 -1
- package/dist/{PageLayout-DFRzcnkf.cjs → PageLayout-C0Fo3ZQC.cjs} +3 -3
- package/dist/{PageLayout-DFRzcnkf.cjs.map → PageLayout-C0Fo3ZQC.cjs.map} +1 -1
- package/dist/{PageLayout-CyM_Op3c.js → PageLayout-DLll7ZwB.js} +3 -3
- package/dist/{PageLayout-CyM_Op3c.js.map → PageLayout-DLll7ZwB.js.map} +1 -1
- package/dist/{SankeyChart-E68mYEs2.js → SankeyChart-lkM5cpOC.js} +3 -3
- package/dist/{SankeyChart-E68mYEs2.js.map → SankeyChart-lkM5cpOC.js.map} +1 -1
- package/dist/{SankeyChart-DHeJ45KN.cjs → SankeyChart-m50vrsBS.cjs} +3 -3
- package/dist/{SankeyChart-DHeJ45KN.cjs.map → SankeyChart-m50vrsBS.cjs.map} +1 -1
- package/dist/{Section-CyGQZR7U.cjs → Section-B8MIbDDs.cjs} +3 -3
- package/dist/{Section-CyGQZR7U.cjs.map → Section-B8MIbDDs.cjs.map} +1 -1
- package/dist/{Section-CWFQ8jNS.js → Section-C9Fgv-IF.js} +3 -3
- package/dist/{Section-CWFQ8jNS.js.map → Section-C9Fgv-IF.js.map} +1 -1
- package/dist/{ShareBar-3Z5np-NY.cjs → ShareBar-DERy_egz.cjs} +2 -2
- package/dist/{ShareBar-3Z5np-NY.cjs.map → ShareBar-DERy_egz.cjs.map} +1 -1
- package/dist/{ShareBar-D6dWWl4C.js → ShareBar-KrzzdcyI.js} +2 -2
- package/dist/{ShareBar-D6dWWl4C.js.map → ShareBar-KrzzdcyI.js.map} +1 -1
- package/dist/{Tree-BplQcY8u.cjs → Tree-Caz4FTCU.cjs} +3 -3
- package/dist/{Tree-BplQcY8u.cjs.map → Tree-Caz4FTCU.cjs.map} +1 -1
- package/dist/{Tree-CoLkeBCL.js → Tree-od43gLMO.js} +3 -3
- package/dist/{Tree-CoLkeBCL.js.map → Tree-od43gLMO.js.map} +1 -1
- package/dist/{Txt-BM6TVV_c.js → Txt-5efBsb2p.js} +2 -2
- package/dist/{Txt-BM6TVV_c.js.map → Txt-5efBsb2p.js.map} +1 -1
- package/dist/{Txt-BnoSqxKE.cjs → Txt-_00wWxTd.cjs} +2 -2
- package/dist/{Txt-BnoSqxKE.cjs.map → Txt-_00wWxTd.cjs.map} +1 -1
- package/dist/{Workflow-DSWQ-ROz.cjs → Workflow-XR5L-3cJ.cjs} +15 -14
- package/dist/Workflow-XR5L-3cJ.cjs.map +1 -0
- package/dist/{Workflow-C3SlEdP-.js → Workflow-mIbUYdv0.js} +15 -14
- package/dist/Workflow-mIbUYdv0.js.map +1 -0
- package/dist/{activity-CcQZeDYi.cjs → activity-BprmG6yH.cjs} +10 -10
- package/dist/activity-BprmG6yH.cjs.map +1 -0
- package/dist/{activity-C8Ql81WM.js → activity-ClFChYfl.js} +10 -10
- package/dist/activity-ClFChYfl.js.map +1 -0
- package/dist/annotations.css +8 -0
- package/dist/{ask-user-DPznrqGO.js → ask-user-D4ezQ6pt.js} +5 -5
- package/dist/{ask-user-DPznrqGO.js.map → ask-user-D4ezQ6pt.js.map} +1 -1
- package/dist/{ask-user-C1p2PEYe.cjs → ask-user-DcnUNMM5.cjs} +5 -5
- package/dist/{ask-user-C1p2PEYe.cjs.map → ask-user-DcnUNMM5.cjs.map} +1 -1
- package/dist/{buttons-group-DkFlnMiL.js → buttons-group-DA_wORqQ.js} +2 -2
- package/dist/{buttons-group-DkFlnMiL.js.map → buttons-group-DA_wORqQ.js.map} +1 -1
- package/dist/{buttons-group-Dc6R7YSs.cjs → buttons-group-DM6_Kohs.cjs} +2 -2
- package/dist/{buttons-group-Dc6R7YSs.cjs.map → buttons-group-DM6_Kohs.cjs.map} +1 -1
- package/dist/chat-shell-context-0m1GVhS7.js +16 -0
- package/dist/chat-shell-context-0m1GVhS7.js.map +1 -0
- package/dist/chat-shell-context-ONCslAGn.cjs +39 -0
- package/dist/chat-shell-context-ONCslAGn.cjs.map +1 -0
- package/dist/{clear-filters-button-CNrRuHOY.js → clear-filters-button-C79dzuzA.js} +2 -2
- package/dist/{clear-filters-button-CNrRuHOY.js.map → clear-filters-button-C79dzuzA.js.map} +1 -1
- package/dist/{clear-filters-button-Buc973vw.cjs → clear-filters-button-CCO-y7kt.cjs} +2 -2
- package/dist/{clear-filters-button-Buc973vw.cjs.map → clear-filters-button-CCO-y7kt.cjs.map} +1 -1
- package/dist/{combobox-DIT_6xiG.cjs → combobox-i723LxeC.cjs} +33 -29
- package/dist/combobox-i723LxeC.cjs.map +1 -0
- package/dist/{combobox-D21no8t5.js → combobox-lbSxWRMl.js} +33 -29
- package/dist/combobox-lbSxWRMl.js.map +1 -0
- package/dist/{combobox-parts-C4phOq4t.cjs → combobox-parts-BeNqgCbj.cjs} +27 -12
- package/dist/combobox-parts-BeNqgCbj.cjs.map +1 -0
- package/dist/{combobox-parts-D90ir0Py.js → combobox-parts-C9o4UfH_.js} +22 -13
- package/dist/combobox-parts-C9o4UfH_.js.map +1 -0
- package/dist/components/AgentIndicator.cjs.js +1 -1
- package/dist/components/AgentIndicator.es.js +1 -1
- package/dist/components/AlertDialog.cjs.js +2 -2
- package/dist/components/AlertDialog.es.js +2 -2
- package/dist/components/AttachmentCard.cjs.js +1 -1
- package/dist/components/AttachmentCard.es.js +1 -1
- package/dist/components/Avatar.cjs.js +1 -1
- package/dist/components/Avatar.es.js +1 -1
- package/dist/components/Badge.cjs.js +1 -1
- package/dist/components/Badge.es.js +1 -1
- package/dist/components/Breadcrumb.cjs.js +6 -5
- package/dist/components/Breadcrumb.cjs.js.map +1 -1
- package/dist/components/Breadcrumb.es.js +6 -5
- package/dist/components/Breadcrumb.es.js.map +1 -1
- package/dist/components/Button.cjs.js +2 -2
- package/dist/components/Button.es.js +2 -2
- package/dist/components/ButtonsGroup.cjs.js +1 -1
- package/dist/components/ButtonsGroup.es.js +1 -1
- package/dist/components/Card.cjs.js +1 -1
- package/dist/components/Card.es.js +1 -1
- package/dist/components/ChartSkeleton.cjs.js +2 -2
- package/dist/components/ChartSkeleton.es.js +2 -2
- package/dist/components/ChartTooltip.cjs.js +1 -1
- package/dist/components/ChartTooltip.es.js +1 -1
- package/dist/components/ChatShell.cjs.js +33 -9
- package/dist/components/ChatShell.cjs.js.map +1 -1
- package/dist/components/ChatShell.es.js +33 -9
- package/dist/components/ChatShell.es.js.map +1 -1
- package/dist/components/Checkbox.cjs.js +1 -1
- package/dist/components/Checkbox.es.js +1 -1
- package/dist/components/ClampedText.cjs.js +3 -3
- package/dist/components/ClampedText.es.js +3 -3
- package/dist/components/ClearFiltersButton.cjs.js +1 -1
- package/dist/components/ClearFiltersButton.es.js +1 -1
- package/dist/components/CodeBlock.cjs.js +5 -5
- package/dist/components/CodeBlock.es.js +5 -5
- package/dist/components/CodeDiff.cjs.js +3 -3
- package/dist/components/CodeDiff.es.js +2 -2
- package/dist/components/CodeEditor.cjs.js +1 -1
- package/dist/components/CodeEditor.es.js +1 -1
- package/dist/components/Collapsible.cjs.js +1 -1
- package/dist/components/Collapsible.es.js +1 -1
- package/dist/components/CollapsibleBox.cjs.js +1 -1
- package/dist/components/CollapsibleBox.es.js +1 -1
- package/dist/components/Combobox.cjs.js +2 -2
- package/dist/components/Combobox.es.js +2 -2
- package/dist/components/Command.cjs.js +5 -5
- package/dist/components/Command.es.js +5 -5
- package/dist/components/CommandPalette.cjs.js +7 -7
- package/dist/components/CommandPalette.cjs.js.map +1 -1
- package/dist/components/CommandPalette.es.js +7 -7
- package/dist/components/CommandPalette.es.js.map +1 -1
- package/dist/components/Comment.cjs.js +1 -1
- package/dist/components/Comment.es.js +1 -1
- package/dist/components/CompactNumber.cjs.js +2 -2
- package/dist/components/CompactNumber.es.js +2 -2
- package/dist/components/Composer.cjs.js +1 -1
- package/dist/components/Composer.es.js +1 -1
- package/dist/components/ContextMenu.cjs.js +1 -1
- package/dist/components/ContextMenu.es.js +1 -1
- package/dist/components/CopyButton.cjs.js +1 -1
- package/dist/components/CopyButton.es.js +1 -1
- package/dist/components/DataCodeSection.cjs.js +1 -1
- package/dist/components/DataCodeSection.es.js +1 -1
- package/dist/components/DataDetailsPanel.cjs.js +1 -1
- package/dist/components/DataDetailsPanel.es.js +1 -1
- package/dist/components/DataKeysAndValues.cjs.js +1 -1
- package/dist/components/DataKeysAndValues.es.js +1 -1
- package/dist/components/DataList.cjs.js +3 -3
- package/dist/components/DataList.es.js +3 -3
- package/dist/components/DataPanel.cjs.js +1 -1
- package/dist/components/DataPanel.es.js +1 -1
- package/dist/components/DateRangeTimeline.cjs.js +9 -9
- package/dist/components/DateRangeTimeline.cjs.js.map +1 -1
- package/dist/components/DateRangeTimeline.es.js +9 -9
- package/dist/components/DateRangeTimeline.es.js.map +1 -1
- package/dist/components/DateTimePicker.cjs.js +75 -142
- package/dist/components/DateTimePicker.cjs.js.map +1 -1
- package/dist/components/DateTimePicker.es.js +79 -146
- package/dist/components/DateTimePicker.es.js.map +1 -1
- package/dist/components/DateTimeRangePicker.cjs.js +1 -1
- package/dist/components/DateTimeRangePicker.es.js +1 -1
- package/dist/components/Dialog.cjs.js +1 -1
- package/dist/components/Dialog.es.js +1 -1
- package/dist/components/DiffStat.cjs.js +1 -1
- package/dist/components/DiffStat.es.js +1 -1
- package/dist/components/DisabledFeatureButton.cjs.js +3 -3
- package/dist/components/DisabledFeatureButton.es.js +3 -3
- package/dist/components/DisclosureChevron.cjs.js +1 -1
- package/dist/components/DisclosureChevron.es.js +1 -1
- package/dist/components/Drawer.cjs.js +2 -2
- package/dist/components/Drawer.es.js +2 -2
- package/dist/components/DropdownMenu.cjs.js +1 -1
- package/dist/components/DropdownMenu.es.js +1 -1
- package/dist/components/EmptyState.cjs.js +1 -1
- package/dist/components/EmptyState.es.js +1 -1
- package/dist/components/Entity.cjs.js +3 -3
- package/dist/components/Entity.es.js +3 -3
- package/dist/components/EntityHeader.cjs.js +2 -2
- package/dist/components/EntityHeader.es.js +2 -2
- package/dist/components/Entry.cjs.js +1 -1
- package/dist/components/Entry.es.js +1 -1
- package/dist/components/EnvironmentVariablesEditor.cjs.js +6 -6
- package/dist/components/EnvironmentVariablesEditor.es.js +6 -6
- package/dist/components/ErrorBoundary.cjs.js +1 -1
- package/dist/components/ErrorBoundary.es.js +1 -1
- package/dist/components/Field.cjs.js +2 -2
- package/dist/components/Field.es.js +2 -2
- package/dist/components/FileDropBackdrop.cjs.js +1 -1
- package/dist/components/FileDropBackdrop.es.js +1 -1
- package/dist/components/FilterBar.cjs.js +3 -3
- package/dist/components/FilterBar.es.js +3 -3
- package/dist/components/FormFieldBlocks.cjs.js +5 -5
- package/dist/components/FormFieldBlocks.es.js +6 -6
- package/dist/components/Header.cjs.js +1 -1
- package/dist/components/Header.es.js +1 -1
- package/dist/components/HoverCard.cjs.js +1 -1
- package/dist/components/HoverCard.es.js +1 -1
- package/dist/components/Input.cjs.js +1 -1
- package/dist/components/Input.es.js +1 -1
- package/dist/components/InputGroup.cjs.js +1 -1
- package/dist/components/InputGroup.es.js +1 -1
- package/dist/components/InputNumber.cjs.js +3 -3
- package/dist/components/InputNumber.es.js +3 -3
- package/dist/components/JSONSchemaForm.cjs.js +4 -4
- package/dist/components/JSONSchemaForm.es.js +4 -4
- package/dist/components/Kbd.cjs.js +1 -1
- package/dist/components/Kbd.es.js +1 -1
- package/dist/components/KeyValueList.cjs.js +2 -2
- package/dist/components/KeyValueList.es.js +2 -2
- package/dist/components/ListSearch.cjs.js +1 -1
- package/dist/components/ListSearch.es.js +1 -1
- package/dist/components/LogsDataList.cjs.js +2 -2
- package/dist/components/LogsDataList.es.js +2 -2
- package/dist/components/MainHeader.cjs.js +1 -1
- package/dist/components/MainHeader.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/MessageScroller.cjs.js +1 -1
- package/dist/components/MessageScroller.es.js +1 -1
- package/dist/components/Metadata.cjs.js +3 -0
- package/dist/components/Metadata.d.ts +1 -0
- package/dist/components/Metadata.es.js +1 -0
- package/dist/components/Meter.cjs.js +3 -3
- package/dist/components/Meter.es.js +3 -3
- package/dist/components/MetricsCard.cjs.js +1 -1
- package/dist/components/MetricsCard.es.js +1 -1
- package/dist/components/MetricsKpiCard.cjs.js +1 -1
- package/dist/components/MetricsKpiCard.es.js +1 -1
- package/dist/components/MetricsLineChart.cjs.js +1 -1
- package/dist/components/MetricsLineChart.es.js +1 -1
- package/dist/components/MetricsStackedBarChart.cjs.js +1 -1
- package/dist/components/MetricsStackedBarChart.es.js +1 -1
- package/dist/components/MetricsTable.cjs.js +1 -1
- package/dist/components/MetricsTable.es.js +1 -1
- package/dist/components/Notice.cjs.js +1 -1
- package/dist/components/Notice.es.js +1 -1
- package/dist/components/PageHeader.cjs.js +1 -1
- package/dist/components/PageHeader.es.js +1 -1
- package/dist/components/PageLayout.cjs.js +1 -1
- package/dist/components/PageLayout.es.js +1 -1
- package/dist/components/Popover.cjs.js +1 -1
- package/dist/components/Popover.es.js +1 -1
- package/dist/components/PrevNextNav.cjs.js +1 -1
- package/dist/components/PrevNextNav.es.js +1 -1
- package/dist/components/ProductAvatar.cjs.js +2 -2
- package/dist/components/ProductAvatar.es.js +2 -2
- package/dist/components/ProductBadge.cjs.js +2 -2
- package/dist/components/ProductBadge.es.js +2 -2
- package/dist/components/PropertyFilter.cjs.js +9 -9
- package/dist/components/PropertyFilter.cjs.js.map +1 -1
- package/dist/components/PropertyFilter.es.js +9 -9
- package/dist/components/PropertyFilter.es.js.map +1 -1
- package/dist/components/RadioGroup.cjs.js +1 -1
- package/dist/components/RadioGroup.es.js +1 -1
- package/dist/components/RelativeTimestamp.cjs.js +6 -30
- package/dist/components/RelativeTimestamp.cjs.js.map +1 -1
- package/dist/components/RelativeTimestamp.es.js +7 -31
- package/dist/components/RelativeTimestamp.es.js.map +1 -1
- package/dist/components/RuleBuilder.cjs.js +22 -22
- package/dist/components/RuleBuilder.cjs.js.map +1 -1
- package/dist/components/RuleBuilder.es.js +5 -5
- package/dist/components/SankeyChart.cjs.js +1 -1
- package/dist/components/SankeyChart.es.js +1 -1
- package/dist/components/SavedViews.cjs.js +9 -9
- package/dist/components/SavedViews.es.js +9 -9
- package/dist/components/ScatterPlotChart.cjs.js +2 -2
- package/dist/components/ScatterPlotChart.es.js +2 -2
- package/dist/components/ScrollArea.cjs.js +1 -1
- package/dist/components/ScrollArea.es.js +1 -1
- package/dist/components/SearchInput.cjs.js +2 -2
- package/dist/components/SearchInput.es.js +2 -2
- package/dist/components/Section.cjs.js +1 -1
- package/dist/components/Section.es.js +1 -1
- package/dist/components/SectionCard.cjs.js +1 -1
- package/dist/components/SectionCard.es.js +1 -1
- package/dist/components/SegmentedControl.cjs.js +3 -3
- package/dist/components/SegmentedControl.es.js +3 -3
- package/dist/components/Select.cjs.js +1 -1
- package/dist/components/Select.es.js +1 -1
- package/dist/components/ShareBar.cjs.js +1 -1
- package/dist/components/ShareBar.es.js +1 -1
- package/dist/components/SideDialog.cjs.js +8 -8
- package/dist/components/SideDialog.es.js +8 -8
- package/dist/components/Sidebar.cjs.js +14 -14
- package/dist/components/Sidebar.cjs.js.map +1 -1
- package/dist/components/Sidebar.es.js +15 -15
- package/dist/components/Sidebar.es.js.map +1 -1
- package/dist/components/Skeleton.cjs.js +1 -1
- package/dist/components/Skeleton.es.js +1 -1
- package/dist/components/Spinner.cjs.js +1 -1
- package/dist/components/Spinner.es.js +1 -1
- package/dist/components/StatusIndicators.cjs.js +3 -3
- package/dist/components/StatusIndicators.es.js +3 -3
- package/dist/components/Steps.cjs.js +73 -3
- package/dist/components/Steps.cjs.js.map +1 -1
- package/dist/components/Steps.es.js +73 -4
- package/dist/components/Steps.es.js.map +1 -1
- package/dist/components/Switch.cjs.js +2 -2
- package/dist/components/Switch.es.js +2 -2
- package/dist/components/Table.cjs.js +4 -4
- package/dist/components/Table.es.js +4 -4
- package/dist/components/Tabs.cjs.js +2 -2
- package/dist/components/Tabs.es.js +2 -2
- package/dist/components/Text.cjs.js +1 -1
- package/dist/components/Text.es.js +1 -1
- package/dist/components/Textarea.cjs.js +2 -2
- package/dist/components/Textarea.es.js +2 -2
- package/dist/components/ThinkingLevel.cjs.js +5 -5
- package/dist/components/ThinkingLevel.cjs.js.map +1 -1
- package/dist/components/ThinkingLevel.es.js +5 -5
- package/dist/components/ThinkingLevel.es.js.map +1 -1
- package/dist/components/ThreadList.cjs.js +2 -2
- package/dist/components/ThreadList.es.js +2 -2
- package/dist/components/ThreadRail.cjs.js +8 -8
- package/dist/components/ThreadRail.cjs.js.map +1 -1
- package/dist/components/ThreadRail.es.js +8 -8
- package/dist/components/ThreadRail.es.js.map +1 -1
- package/dist/components/Toaster.cjs.js +4 -4
- package/dist/components/Toaster.es.js +3 -3
- package/dist/components/TokenBudget.cjs.js +3 -3
- package/dist/components/TokenBudget.es.js +2 -2
- package/dist/components/Tooltip.cjs.js +2 -2
- package/dist/components/Tooltip.es.js +2 -2
- package/dist/components/Tree.cjs.js +1 -1
- package/dist/components/Tree.es.js +1 -1
- package/dist/components/Truncate.cjs.js +3 -3
- package/dist/components/Truncate.es.js +3 -3
- package/dist/components/Txt.cjs.js +1 -1
- package/dist/components/Txt.es.js +1 -1
- package/dist/components/Workflow.cjs.js +1 -1
- package/dist/components/Workflow.es.js +1 -1
- package/dist/components/ai/activity.cjs.js +1 -1
- package/dist/components/ai/activity.es.js +1 -1
- package/dist/components/ai/annotations.cjs.js +836 -0
- package/dist/components/ai/annotations.cjs.js.map +1 -0
- package/dist/components/ai/annotations.d.ts +1 -0
- package/dist/components/ai/annotations.es.js +831 -0
- package/dist/components/ai/annotations.es.js.map +1 -0
- package/dist/components/ai/ask-user.cjs.js +1 -1
- package/dist/components/ai/ask-user.es.js +1 -1
- package/dist/components/ai/plan.cjs.js +6 -6
- package/dist/components/ai/plan.es.js +6 -6
- package/dist/components/ai/task-list.cjs.js +4 -4
- package/dist/components/ai/task-list.cjs.js.map +1 -1
- package/dist/components/ai/task-list.es.js +4 -4
- package/dist/components/ai/task-list.es.js.map +1 -1
- package/dist/components/ai/tool-approval.cjs.js +1 -1
- package/dist/components/ai/tool-approval.es.js +1 -1
- package/dist/components/ai/tool-call.cjs.js +7 -2
- package/dist/components/ai/tool-call.es.js +3 -3
- package/dist/components/ai/transcript-divider.cjs.js +1 -1
- package/dist/components/ai/transcript-divider.es.js +1 -1
- package/dist/{context-menu-Dv0NU0oM.js → context-menu-6_Kcs8kj.js} +3 -3
- package/dist/{context-menu-Dv0NU0oM.js.map → context-menu-6_Kcs8kj.js.map} +1 -1
- package/dist/{context-menu-DTFPCyae.cjs → context-menu-DwB7u7fB.cjs} +3 -3
- package/dist/{context-menu-DTFPCyae.cjs.map → context-menu-DwB7u7fB.cjs.map} +1 -1
- package/dist/{copy-button-BXrbevLn.js → copy-button-B-_Z6N6y.js} +2 -2
- package/dist/{copy-button-BXrbevLn.js.map → copy-button-B-_Z6N6y.js.map} +1 -1
- package/dist/{copy-button-DJAQ6_3o.cjs → copy-button-DuEUYvS2.cjs} +2 -2
- package/dist/{copy-button-DJAQ6_3o.cjs.map → copy-button-DuEUYvS2.cjs.map} +1 -1
- package/dist/{data-list-C4Vmq5HA.cjs → data-list-072hHK9L.cjs} +7 -7
- package/dist/{data-list-C4Vmq5HA.cjs.map → data-list-072hHK9L.cjs.map} +1 -1
- package/dist/{data-list-DHCOoLmj.js → data-list-GzbzPmYR.js} +7 -7
- package/dist/{data-list-DHCOoLmj.js.map → data-list-GzbzPmYR.js.map} +1 -1
- package/dist/{date-time-range-picker-CWGjoR3j.cjs → date-time-range-picker-Bq-8IPtS.cjs} +141 -112
- package/dist/date-time-range-picker-Bq-8IPtS.cjs.map +1 -0
- package/dist/{date-time-range-picker-CdSiXwB4.js → date-time-range-picker-DdNgKD87.js} +144 -115
- package/dist/date-time-range-picker-DdNgKD87.js.map +1 -0
- package/dist/domains/auth/components/permission-denied.cjs.js +1 -1
- package/dist/domains/auth/components/permission-denied.es.js +1 -1
- package/dist/domains/auth/components/session-expired.cjs.js +3 -3
- package/dist/domains/auth/components/session-expired.es.js +3 -3
- package/dist/domains/chat/activity/activity-stretch-line.cjs.js +2 -2
- package/dist/domains/chat/activity/activity-stretch-line.es.js +2 -2
- package/dist/domains/chat/activity/components/activity-fold.cjs.js +54 -58
- package/dist/domains/chat/activity/components/activity-fold.cjs.js.map +1 -1
- package/dist/domains/chat/activity/components/activity-fold.es.js +54 -58
- package/dist/domains/chat/activity/components/activity-fold.es.js.map +1 -1
- package/dist/domains/chat/activity/components/calls-panel.cjs.js +2 -2
- package/dist/domains/chat/activity/components/calls-panel.es.js +2 -2
- package/dist/domains/chat/activity/components/stretch-content.cjs.js +2 -2
- package/dist/domains/chat/activity/components/stretch-content.es.js +2 -2
- 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/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 +7 -11
- package/dist/domains/chat/activity/model/activity-words.cjs.js.map +1 -1
- package/dist/domains/chat/activity/model/activity-words.es.js +8 -11
- package/dist/domains/chat/activity/model/activity-words.es.js.map +1 -1
- package/dist/domains/chat/activity.cjs.js +2 -5
- package/dist/domains/chat/activity.es.js +4 -5
- package/dist/domains/chat/attachments/attachment-preview-dialog.cjs.js +3 -3
- package/dist/domains/chat/attachments/attachment-preview-dialog.es.js +3 -3
- package/dist/domains/chat/attachments/composer-attachment-entry.cjs.js +2 -2
- package/dist/domains/chat/attachments/composer-attachment-entry.es.js +2 -2
- package/dist/domains/chat/attachments/composer-attachment-list.cjs.js +2 -2
- package/dist/domains/chat/attachments/composer-attachment-list.es.js +2 -2
- package/dist/domains/chat/attachments/composer-attachment.cjs.js +4 -4
- package/dist/domains/chat/attachments/composer-attachment.es.js +4 -4
- package/dist/domains/chat/attachments/message-attachment.cjs.js +2 -2
- package/dist/domains/chat/attachments/message-attachment.es.js +2 -2
- package/dist/domains/chat/attachments/message-image-attachment.cjs.js +2 -2
- package/dist/domains/chat/attachments/message-image-attachment.cjs.js.map +1 -1
- package/dist/domains/chat/attachments/message-image-attachment.es.js +2 -2
- package/dist/domains/chat/attachments/message-image-attachment.es.js.map +1 -1
- package/dist/domains/chat/components/badge-wrapper.cjs.js +2 -2
- package/dist/domains/chat/components/badge-wrapper.es.js +2 -2
- package/dist/domains/chat/components/loading-badge.cjs.js +2 -2
- package/dist/domains/chat/components/loading-badge.es.js +2 -2
- package/dist/domains/chat/components/network-choice-metadata-dialog.cjs.js +4 -4
- package/dist/domains/chat/components/network-choice-metadata-dialog.es.js +4 -4
- package/dist/domains/chat/components/section-label.cjs.js +1 -1
- package/dist/domains/chat/components/section-label.es.js +1 -1
- package/dist/domains/chat/context/chat-context.cjs.js +2 -0
- package/dist/domains/chat/context/chat-context.cjs.js.map +1 -1
- package/dist/domains/chat/context/chat-context.es.js +2 -1
- package/dist/domains/chat/context/chat-context.es.js.map +1 -1
- package/dist/domains/chat/knowledge/knowledge-links.cjs.js +1 -1
- package/dist/domains/chat/knowledge/knowledge-links.es.js +1 -1
- package/dist/domains/chat/knowledge/pinned-knowledge.cjs.js +3 -3
- package/dist/domains/chat/knowledge/pinned-knowledge.es.js +3 -3
- package/dist/domains/chat/knowledge.cjs.js +1 -1
- package/dist/domains/chat/knowledge.es.js +1 -1
- package/dist/domains/chat/messages/assistant-message-actions.cjs.js +2 -2
- package/dist/domains/chat/messages/assistant-message-actions.es.js +2 -2
- package/dist/domains/chat/messages/dataset-save-action.cjs.js +10 -10
- package/dist/domains/chat/messages/dataset-save-action.es.js +11 -11
- package/dist/domains/chat/messages/message-row.cjs.js +20 -20
- package/dist/domains/chat/messages/message-row.cjs.js.map +1 -1
- package/dist/domains/chat/messages/message-row.es.js +20 -20
- package/dist/domains/chat/messages/message-row.es.js.map +1 -1
- package/dist/domains/chat/messages/notification-signal-notice.cjs.js +5 -5
- package/dist/domains/chat/messages/notification-signal-notice.cjs.js.map +1 -1
- package/dist/domains/chat/messages/notification-signal-notice.es.js +5 -5
- package/dist/domains/chat/messages/notification-signal-notice.es.js.map +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/data-part-renderer.cjs.js +1 -1
- package/dist/domains/chat/messages/renderers/data-part-renderer.es.js +1 -1
- package/dist/domains/chat/messages/renderers/message-text.cjs.js +5 -5
- package/dist/domains/chat/messages/renderers/message-text.es.js +5 -5
- 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/status-renderers.cjs.js +1 -1
- package/dist/domains/chat/messages/renderers/status-renderers.es.js +1 -1
- package/dist/domains/chat/messages/renderers/user-file-part-renderer.cjs.js +1 -1
- package/dist/domains/chat/messages/renderers/user-file-part-renderer.es.js +1 -1
- package/dist/domains/chat/messages/signal-badge.cjs.js +5 -5
- package/dist/domains/chat/messages/signal-badge.es.js +5 -5
- package/dist/domains/chat/messages/skill-message.cjs.js +4 -4
- package/dist/domains/chat/messages/skill-message.es.js +4 -4
- 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/messages/tripwire-notice.cjs.js +4 -4
- package/dist/domains/chat/messages/tripwire-notice.es.js +4 -4
- 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/ask-user-badge.cjs.js +1 -1
- package/dist/domains/chat/tools/badges/ask-user-badge.es.js +1 -1
- package/dist/domains/chat/tools/badges/background-task-metadata-dialog.cjs.js +5 -5
- package/dist/domains/chat/tools/badges/background-task-metadata-dialog.es.js +5 -5
- package/dist/domains/chat/tools/badges/code-mode-badge.cjs.js +7 -6
- package/dist/domains/chat/tools/badges/code-mode-badge.cjs.js.map +1 -1
- package/dist/domains/chat/tools/badges/code-mode-badge.es.js +7 -6
- package/dist/domains/chat/tools/badges/code-mode-badge.es.js.map +1 -1
- package/dist/domains/chat/tools/badges/file-tree-badge.cjs.js +5 -5
- package/dist/domains/chat/tools/badges/file-tree-badge.es.js +5 -5
- package/dist/domains/chat/tools/badges/knowledge-body-range.cjs.js +2 -2
- package/dist/domains/chat/tools/badges/knowledge-body-range.cjs.js.map +1 -1
- package/dist/domains/chat/tools/badges/knowledge-body-range.es.js +2 -2
- package/dist/domains/chat/tools/badges/knowledge-body-range.es.js.map +1 -1
- package/dist/domains/chat/tools/badges/knowledge-tool-badge.cjs.js +34 -28
- package/dist/domains/chat/tools/badges/knowledge-tool-badge.cjs.js.map +1 -1
- package/dist/domains/chat/tools/badges/knowledge-tool-badge.es.js +34 -28
- package/dist/domains/chat/tools/badges/knowledge-tool-badge.es.js.map +1 -1
- package/dist/domains/chat/tools/badges/mcp-task-chip.cjs.js +28 -24
- package/dist/domains/chat/tools/badges/mcp-task-chip.cjs.js.map +1 -1
- package/dist/domains/chat/tools/badges/mcp-task-chip.es.js +28 -24
- package/dist/domains/chat/tools/badges/mcp-task-chip.es.js.map +1 -1
- package/dist/domains/chat/tools/badges/observation-marker-badge.cjs.js +4 -4
- package/dist/domains/chat/tools/badges/observation-marker-badge.es.js +4 -4
- package/dist/domains/chat/tools/badges/observation-marker-details.cjs.js +8 -7
- 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 +8 -7
- package/dist/domains/chat/tools/badges/observation-marker-details.es.js.map +1 -1
- package/dist/domains/chat/tools/badges/observation-renderer.cjs.js +3 -3
- package/dist/domains/chat/tools/badges/observation-renderer.es.js +3 -3
- package/dist/domains/chat/tools/badges/sandbox-execution-badge.cjs.js +25 -34
- package/dist/domains/chat/tools/badges/sandbox-execution-badge.cjs.js.map +1 -1
- package/dist/domains/chat/tools/badges/sandbox-execution-badge.es.js +27 -36
- package/dist/domains/chat/tools/badges/sandbox-execution-badge.es.js.map +1 -1
- 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 +19 -26
- package/dist/domains/chat/tools/badges/tool-badge.cjs.js.map +1 -1
- package/dist/domains/chat/tools/badges/tool-badge.es.js +19 -26
- package/dist/domains/chat/tools/badges/tool-badge.es.js.map +1 -1
- package/dist/domains/chat/tools/badges/workflow-badge.cjs.js +12 -10
- package/dist/domains/chat/tools/badges/workflow-badge.cjs.js.map +1 -1
- package/dist/domains/chat/tools/badges/workflow-badge.es.js +12 -10
- package/dist/domains/chat/tools/badges/workflow-badge.es.js.map +1 -1
- package/dist/domains/chat/tools/badges/workspace-data-parts.cjs.js +13 -0
- package/dist/domains/chat/tools/badges/workspace-data-parts.cjs.js.map +1 -1
- package/dist/domains/chat/tools/badges/workspace-data-parts.es.js +13 -1
- package/dist/domains/chat/tools/badges/workspace-data-parts.es.js.map +1 -1
- package/dist/domains/chat/tools/badges/workspace-link.cjs.js +1 -1
- package/dist/domains/chat/tools/badges/workspace-link.es.js +1 -1
- package/dist/domains/chat/tools/connect-prompt-tool.cjs.js +8 -8
- package/dist/domains/chat/tools/connect-prompt-tool.es.js +8 -8
- package/dist/domains/chat/tools/mcp-input-request-tool.cjs.js +5 -5
- package/dist/domains/chat/tools/mcp-input-request-tool.es.js +5 -5
- package/dist/domains/chat/tools/submit-plan-tool.cjs.js +4 -4
- package/dist/domains/chat/tools/submit-plan-tool.es.js +4 -4
- package/dist/domains/chat/tools/tool-card-kind.cjs.js +10 -5
- package/dist/domains/chat/tools/tool-card-kind.cjs.js.map +1 -1
- package/dist/domains/chat/tools/tool-card-kind.es.js +10 -5
- package/dist/domains/chat/tools/tool-card-kind.es.js.map +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 +2 -2
- package/dist/domains/chat/tools/tool-groups.es.js +2 -2
- package/dist/domains/chat.cjs.js +6 -5
- package/dist/domains/chat.es.js +6 -6
- package/dist/domains/connect.cjs.js +1 -1
- package/dist/domains/connect.es.js +1 -1
- package/dist/domains/dashboards/components/dashboard-grid.cjs.js +11 -8
- package/dist/domains/dashboards/components/dashboard-grid.cjs.js.map +1 -1
- package/dist/domains/dashboards/components/dashboard-grid.es.js +11 -8
- package/dist/domains/dashboards/components/dashboard-grid.es.js.map +1 -1
- package/dist/domains/dashboards/components/dashboard-renderer.cjs.js +18 -7
- package/dist/domains/dashboards/components/dashboard-renderer.cjs.js.map +1 -1
- package/dist/domains/dashboards/components/dashboard-renderer.es.js +18 -7
- package/dist/domains/dashboards/components/dashboard-renderer.es.js.map +1 -1
- package/dist/domains/dashboards/components/widget-chrome.cjs.js +1 -1
- package/dist/domains/dashboards/components/widget-chrome.es.js +1 -1
- package/dist/domains/dashboards/components/widget-controls.cjs.js +16 -1
- package/dist/domains/dashboards/components/widget-controls.cjs.js.map +1 -1
- package/dist/domains/dashboards/components/widget-controls.es.js +16 -2
- package/dist/domains/dashboards/components/widget-controls.es.js.map +1 -1
- package/dist/domains/dashboards/components/widget-error.cjs.js +6 -3
- package/dist/domains/dashboards/components/widget-error.cjs.js.map +1 -1
- package/dist/domains/dashboards/components/widget-error.es.js +6 -3
- package/dist/domains/dashboards/components/widget-error.es.js.map +1 -1
- package/dist/domains/dashboards/kinds/kpis/kpis-widget.cjs.js +18 -4
- package/dist/domains/dashboards/kinds/kpis/kpis-widget.cjs.js.map +1 -1
- package/dist/domains/dashboards/kinds/kpis/kpis-widget.es.js +19 -5
- package/dist/domains/dashboards/kinds/kpis/kpis-widget.es.js.map +1 -1
- package/dist/domains/dashboards/kinds/kpis.cjs.js +1 -1
- package/dist/domains/dashboards/kinds/kpis.es.js +1 -1
- package/dist/domains/dashboards/kinds/scores/scores-widget.cjs.js +18 -9
- package/dist/domains/dashboards/kinds/scores/scores-widget.cjs.js.map +1 -1
- package/dist/domains/dashboards/kinds/scores/scores-widget.es.js +18 -9
- package/dist/domains/dashboards/kinds/scores/scores-widget.es.js.map +1 -1
- package/dist/domains/dashboards/kinds/table/table-cells.cjs.js +1 -1
- package/dist/domains/dashboards/kinds/table/table-cells.es.js +1 -1
- package/dist/domains/dashboards/kinds/table/table-tabs.cjs.js +12 -5
- package/dist/domains/dashboards/kinds/table/table-tabs.cjs.js.map +1 -1
- package/dist/domains/dashboards/kinds/table/table-tabs.es.js +12 -5
- package/dist/domains/dashboards/kinds/table/table-tabs.es.js.map +1 -1
- package/dist/domains/dashboards/kinds/table/table-view.cjs.js +7 -7
- package/dist/domains/dashboards/kinds/table/table-view.es.js +7 -7
- package/dist/domains/dashboards/kinds/table/table-widget.cjs.js +5 -2
- package/dist/domains/dashboards/kinds/table/table-widget.cjs.js.map +1 -1
- package/dist/domains/dashboards/kinds/table/table-widget.es.js +5 -2
- package/dist/domains/dashboards/kinds/table/table-widget.es.js.map +1 -1
- package/dist/domains/dashboards/kinds/table.cjs.js +1 -1
- package/dist/domains/dashboards/kinds/table.es.js +1 -1
- package/dist/domains/dashboards/kinds/timeseries/timeseries-widget.cjs.js +21 -14
- package/dist/domains/dashboards/kinds/timeseries/timeseries-widget.cjs.js.map +1 -1
- package/dist/domains/dashboards/kinds/timeseries/timeseries-widget.es.js +22 -15
- package/dist/domains/dashboards/kinds/timeseries/timeseries-widget.es.js.map +1 -1
- package/dist/domains/dashboards/kinds/timeseries.cjs.js +1 -1
- package/dist/domains/dashboards/kinds/timeseries.es.js +1 -1
- package/dist/domains/dashboards/lib/chrome.cjs.js.map +1 -1
- package/dist/domains/dashboards/lib/chrome.es.js.map +1 -1
- package/dist/domains/dashboards/lib/format.cjs.js +1 -1
- package/dist/domains/dashboards/lib/format.es.js +1 -1
- package/dist/domains/dashboards/lib/pin-actions.cjs.js +16 -0
- package/dist/domains/dashboards/lib/pin-actions.cjs.js.map +1 -0
- package/dist/domains/dashboards/lib/pin-actions.d.ts +1 -0
- package/dist/domains/dashboards/lib/pin-actions.es.js +15 -0
- package/dist/domains/dashboards/lib/pin-actions.es.js.map +1 -0
- package/dist/domains/dashboards/lib/requests.cjs.js +2 -2
- package/dist/domains/dashboards/lib/requests.es.js +2 -2
- package/dist/domains/dashboards/widget-kind.cjs.js.map +1 -1
- package/dist/domains/dashboards/widget-kind.es.js.map +1 -1
- package/dist/domains/dashboards.cjs.js +11 -10
- package/dist/domains/dashboards.es.js +11 -11
- package/dist/domains/datasets/components/add-dataset-item-dialog/add-dataset-item-dialog.cjs.js +11 -11
- package/dist/domains/datasets/components/add-dataset-item-dialog/add-dataset-item-dialog.es.js +11 -11
- package/dist/domains/datasets/components/add-dataset-item-dialog/dataset-picker.cjs.js +3 -3
- package/dist/domains/datasets/components/add-dataset-item-dialog/dataset-picker.es.js +3 -3
- package/dist/domains/datasets/components/add-dataset-item-dialog/trajectory-editor.cjs.js +6 -6
- package/dist/domains/datasets/components/add-dataset-item-dialog/trajectory-editor.es.js +6 -6
- package/dist/domains/datasets/components/save-as-dataset-item-dialog.cjs.js +7 -7
- package/dist/domains/datasets/components/save-as-dataset-item-dialog.es.js +7 -7
- package/dist/domains/knowledge/components/KnowledgePageCard.cjs.js +3 -2
- package/dist/domains/knowledge/components/KnowledgePageCard.cjs.js.map +1 -1
- package/dist/domains/knowledge/components/KnowledgePageCard.es.js +3 -2
- package/dist/domains/knowledge/components/KnowledgePageCard.es.js.map +1 -1
- package/dist/domains/knowledge/components/KnowledgePageDetail.cjs.js +11 -16
- package/dist/domains/knowledge/components/KnowledgePageDetail.cjs.js.map +1 -1
- package/dist/domains/knowledge/components/KnowledgePageDetail.es.js +11 -16
- package/dist/domains/knowledge/components/KnowledgePageDetail.es.js.map +1 -1
- package/dist/domains/knowledge/components/KnowledgePageExplorer.cjs.js +5 -5
- package/dist/domains/knowledge/components/KnowledgePageExplorer.es.js +5 -5
- package/dist/domains/knowledge/components/KnowledgePageGraph.cjs.js +11 -10
- package/dist/domains/knowledge/components/KnowledgePageGraph.cjs.js.map +1 -1
- package/dist/domains/knowledge/components/KnowledgePageGraph.es.js +10 -9
- package/dist/domains/knowledge/components/KnowledgePageGraph.es.js.map +1 -1
- package/dist/domains/knowledge/components/KnowledgePageTree.cjs.js +1 -1
- package/dist/domains/knowledge/components/KnowledgePageTree.es.js +1 -1
- package/dist/domains/llm/models-dev-logo-slugs.cjs.js +230 -0
- package/dist/domains/llm/models-dev-logo-slugs.cjs.js.map +1 -0
- package/dist/domains/llm/models-dev-logo-slugs.d.ts +1 -0
- package/dist/domains/llm/models-dev-logo-slugs.es.js +229 -0
- package/dist/domains/llm/models-dev-logo-slugs.es.js.map +1 -0
- package/dist/domains/llm/provider-logo-monogram.cjs.js +37 -0
- package/dist/domains/llm/provider-logo-monogram.cjs.js.map +1 -0
- package/dist/domains/llm/provider-logo-monogram.d.ts +1 -0
- package/dist/domains/llm/provider-logo-monogram.es.js +36 -0
- package/dist/domains/llm/provider-logo-monogram.es.js.map +1 -0
- package/dist/domains/llm/provider-logo.cjs.js +46 -17
- package/dist/domains/llm/provider-logo.cjs.js.map +1 -1
- package/dist/domains/llm/provider-logo.es.js +46 -17
- package/dist/domains/llm/provider-logo.es.js.map +1 -1
- package/dist/domains/llm/provider-map-icon.cjs.js +1 -1
- package/dist/domains/llm/provider-map-icon.es.js +1 -1
- package/dist/domains/llm.cjs.js +1 -1
- package/dist/domains/llm.es.js +1 -1
- package/dist/domains/logs/components/log-data-panel.cjs.js +11 -7
- package/dist/domains/logs/components/log-data-panel.cjs.js.map +1 -1
- package/dist/domains/logs/components/log-data-panel.es.js +11 -7
- package/dist/domains/logs/components/log-data-panel.es.js.map +1 -1
- package/dist/domains/logs/components/logs-error-content.cjs.js +1 -1
- package/dist/domains/logs/components/logs-error-content.es.js +1 -1
- package/dist/domains/logs/components/logs-list-view.cjs.js +2 -2
- package/dist/domains/logs/components/logs-list-view.es.js +2 -2
- package/dist/domains/logs/components/logs-saved-views.cjs.js +1 -1
- package/dist/domains/logs/components/logs-saved-views.es.js +1 -1
- package/dist/domains/logs/components/logs-toolbar.cjs.js +1 -1
- package/dist/domains/logs/components/logs-toolbar.es.js +1 -1
- package/dist/domains/logs/components/no-logs-info.cjs.js +3 -3
- package/dist/domains/logs/components/no-logs-info.cjs.js.map +1 -1
- package/dist/domains/logs/components/no-logs-info.es.js +3 -3
- package/dist/domains/logs/components/no-logs-info.es.js.map +1 -1
- package/dist/domains/logs/hooks/use-logs-filter-persistence.cjs.js +1 -1
- package/dist/domains/logs/hooks/use-logs-filter-persistence.es.js +1 -1
- package/dist/domains/logs.cjs.js +2 -2
- package/dist/domains/logs.es.js +2 -2
- package/dist/domains/mcps/components/mcp-app-tool-result.cjs.js +7 -8
- package/dist/domains/mcps/components/mcp-app-tool-result.cjs.js.map +1 -1
- package/dist/domains/mcps/components/mcp-app-tool-result.es.js +6 -7
- package/dist/domains/mcps/components/mcp-app-tool-result.es.js.map +1 -1
- package/dist/domains/mcps/components/mcp-app-viewer.cjs.js +2 -108
- package/dist/domains/mcps/components/mcp-app-viewer.es.js +1 -108
- package/dist/domains/mcps/hooks/use-mcp-app-tool-call.cjs.js +36 -0
- package/dist/domains/mcps/hooks/use-mcp-app-tool-call.cjs.js.map +1 -0
- package/dist/domains/mcps/hooks/use-mcp-app-tool-call.d.ts +1 -0
- package/dist/domains/mcps/hooks/use-mcp-app-tool-call.es.js +35 -0
- package/dist/domains/mcps/hooks/use-mcp-app-tool-call.es.js.map +1 -0
- package/dist/domains/memory/components/flame-graph.cjs.js +4 -4
- package/dist/domains/memory/components/flame-graph.es.js +4 -4
- package/dist/domains/memory/components/memory-studio-panel.cjs.js +6 -6
- package/dist/domains/memory/components/memory-studio-panel.es.js +6 -6
- package/dist/domains/memory/components/observation-detail-view.cjs.js +6 -6
- package/dist/domains/memory/components/observation-detail-view.es.js +6 -6
- package/dist/domains/memory/components/thread-context-progress.cjs.js +2 -2
- package/dist/domains/memory/components/thread-context-progress.es.js +2 -2
- package/dist/domains/memory/components.cjs.js +1 -1
- package/dist/domains/memory/components.es.js +1 -1
- package/dist/domains/metrics/components/agent-runs-card.cjs.js +7 -7
- package/dist/domains/metrics/components/agent-runs-card.es.js +7 -7
- package/dist/domains/metrics/components/breakdown/breakdown-entity-tab.cjs.js +2 -2
- package/dist/domains/metrics/components/breakdown/breakdown-entity-tab.es.js +2 -2
- package/dist/domains/metrics/components/breakdown/breakdown-figure.cjs.js +1 -1
- package/dist/domains/metrics/components/breakdown/breakdown-figure.es.js +1 -1
- package/dist/domains/metrics/components/breakdown/breakdown-models-tab.cjs.js +2 -2
- package/dist/domains/metrics/components/breakdown/breakdown-models-tab.es.js +2 -2
- package/dist/domains/metrics/components/breakdown/breakdown-row-mark.cjs.js +2 -2
- package/dist/domains/metrics/components/breakdown/breakdown-row-mark.es.js +2 -2
- package/dist/domains/metrics/components/breakdown/breakdown-row-name.cjs.js +1 -1
- package/dist/domains/metrics/components/breakdown/breakdown-row-name.es.js +1 -1
- package/dist/domains/metrics/components/breakdown/breakdown-tab-body.cjs.js +2 -2
- package/dist/domains/metrics/components/breakdown/breakdown-tab-body.es.js +2 -2
- package/dist/domains/metrics/components/breakdown/breakdown-table.cjs.js +8 -8
- package/dist/domains/metrics/components/breakdown/breakdown-table.es.js +8 -8
- package/dist/domains/metrics/components/breakdown/breakdown-text.cjs.js +1 -1
- package/dist/domains/metrics/components/breakdown/breakdown-text.es.js +1 -1
- package/dist/domains/metrics/components/breakdown/breakdown-trace-tab.cjs.js +2 -2
- package/dist/domains/metrics/components/breakdown/breakdown-trace-tab.es.js +2 -2
- package/dist/domains/metrics/components/breakdown-card.cjs.js +4 -4
- package/dist/domains/metrics/components/breakdown-card.es.js +4 -4
- package/dist/domains/metrics/components/card-action-buttons.cjs.js +1 -1
- package/dist/domains/metrics/components/card-action-buttons.es.js +1 -1
- package/dist/domains/metrics/components/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 +2 -2
- package/dist/domains/metrics/components/chart-card-error.es.js +2 -2
- package/dist/domains/metrics/components/chart-card.cjs.js +21 -5
- package/dist/domains/metrics/components/chart-card.cjs.js.map +1 -1
- package/dist/domains/metrics/components/chart-card.es.js +21 -5
- 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 +5 -5
- package/dist/domains/metrics/components/distinct-ids/distinct-ids-chart.es.js +5 -5
- package/dist/domains/metrics/components/failure-rate-card.cjs.js +7 -7
- package/dist/domains/metrics/components/failure-rate-card.es.js +7 -7
- package/dist/domains/metrics/components/kpi-card.cjs.js +1 -1
- package/dist/domains/metrics/components/kpi-card.cjs.js.map +1 -1
- package/dist/domains/metrics/components/kpi-card.es.js +1 -1
- package/dist/domains/metrics/components/kpi-card.es.js.map +1 -1
- package/dist/domains/metrics/components/latency-card.cjs.js +7 -7
- package/dist/domains/metrics/components/latency-card.es.js +7 -7
- package/dist/domains/metrics/components/metrics-time-range-chip.cjs.js +2 -2
- package/dist/domains/metrics/components/metrics-time-range-chip.es.js +2 -2
- package/dist/domains/metrics/components/scores-card.cjs.js +4 -4
- package/dist/domains/metrics/components/scores-card.es.js +4 -4
- package/dist/domains/metrics/components/token-usage-card.cjs.js +8 -8
- package/dist/domains/metrics/components/token-usage-card.es.js +8 -8
- package/dist/domains/metrics/components/trace-aggregate-card.cjs.js +1 -1
- package/dist/domains/metrics/components/trace-aggregate-card.es.js +1 -1
- package/dist/domains/metrics/components/trace-volume-card.cjs.js +4 -4
- package/dist/domains/metrics/components/trace-volume-card.es.js +4 -4
- package/dist/domains/metrics/components/usage-card.cjs.js +5 -5
- package/dist/domains/metrics/components/usage-card.es.js +5 -5
- package/dist/domains/metrics/components.cjs.js +9 -9
- package/dist/domains/metrics/components.es.js +9 -9
- 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 +2 -2
- package/dist/domains/metrics/hooks/use-metrics-span-aggregate.es.js +2 -2
- package/dist/domains/metrics/hooks/use-metrics-trace-aggregate.cjs.js +1 -1
- package/dist/domains/metrics/hooks/use-metrics-trace-aggregate.es.js +1 -1
- package/dist/domains/metrics/hooks/use-metrics.cjs.js +1 -1
- package/dist/domains/metrics/hooks/use-metrics.es.js +1 -1
- package/dist/domains/metrics/hooks.cjs.js +5 -5
- package/dist/domains/metrics/hooks.es.js +5 -5
- 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/series-colors.cjs.js +279 -0
- package/dist/domains/metrics/lib/series-colors.cjs.js.map +1 -0
- package/dist/domains/metrics/lib/series-colors.d.ts +1 -0
- package/dist/domains/metrics/lib/series-colors.es.js +272 -0
- package/dist/domains/metrics/lib/series-colors.es.js.map +1 -0
- package/dist/domains/metrics/lib.cjs.js +9 -3
- package/dist/domains/metrics/lib.es.js +5 -4
- package/dist/domains/metrics.cjs.js +7 -1
- package/dist/domains/metrics.es.js +3 -2
- package/dist/domains/observability/components/observability-capability-gate.cjs.js +3 -3
- package/dist/domains/observability/components/observability-capability-gate.es.js +3 -3
- package/dist/domains/observability/components/observability-histogram.cjs.js +5 -5
- package/dist/domains/observability/components/observability-histogram.cjs.js.map +1 -1
- package/dist/domains/observability/components/observability-histogram.es.js +5 -5
- package/dist/domains/observability/components/observability-histogram.es.js.map +1 -1
- package/dist/domains/observability/components/observability-page-layout.cjs.js +2 -2
- package/dist/domains/observability/components/observability-page-layout.es.js +2 -2
- package/dist/domains/observability/hooks/use-observability-list-filters.cjs.js +3 -3
- package/dist/domains/observability/hooks/use-observability-list-filters.es.js +3 -3
- package/dist/domains/observability/observability-list-url-state.cjs.js +1 -1
- package/dist/domains/observability/observability-list-url-state.es.js +1 -1
- package/dist/domains/observability/saved-view-state.cjs.js +3 -3
- package/dist/domains/observability/saved-view-state.es.js +3 -3
- package/dist/domains/observability/saved-views/observability-saved-views.cjs.js +1 -1
- package/dist/domains/observability/saved-views/observability-saved-views.es.js +1 -1
- package/dist/domains/observability/saved-views/use-hosted-saved-views.cjs.js +1 -1
- package/dist/domains/observability/saved-views/use-hosted-saved-views.es.js +1 -1
- package/dist/domains/observability/saved-views.cjs.js +2 -2
- package/dist/domains/observability/saved-views.es.js +2 -2
- package/dist/domains/observability.cjs.js +6 -6
- package/dist/domains/observability.es.js +6 -6
- package/dist/domains/review/components/review-status-badge.cjs.js +1 -1
- package/dist/domains/review/components/review-status-badge.es.js +1 -1
- package/dist/domains/scores/components/score-as-item-dialog.cjs.js +1 -1
- package/dist/domains/scores/components/score-as-item-dialog.es.js +1 -1
- package/dist/domains/scores/components/score-data-panel.cjs.js +7 -7
- package/dist/domains/scores/components/score-data-panel.cjs.js.map +1 -1
- package/dist/domains/scores/components/score-data-panel.es.js +7 -7
- package/dist/domains/scores/components/score-data-panel.es.js.map +1 -1
- package/dist/domains/scores/components/span-scoring.cjs.js +4 -4
- package/dist/domains/scores/components/span-scoring.es.js +4 -4
- package/dist/domains/scores/components/trace-scores-list.cjs.js +5 -5
- package/dist/domains/scores/components/trace-scores-list.es.js +5 -5
- package/dist/domains/scores/components/trace-scores-tab.cjs.js +15 -19
- package/dist/domains/scores/components/trace-scores-tab.cjs.js.map +1 -1
- package/dist/domains/scores/components/trace-scores-tab.es.js +15 -19
- package/dist/domains/scores/components/trace-scores-tab.es.js.map +1 -1
- package/dist/domains/scores/components.cjs.js +1 -1
- package/dist/domains/scores/components.es.js +1 -1
- package/dist/domains/skills/skill-simple-form.cjs.js +4 -4
- package/dist/domains/skills/skill-simple-form.es.js +4 -4
- package/dist/domains/spans/components/spans-explorer-body.cjs.js +6 -6
- package/dist/domains/spans/components/spans-explorer-body.es.js +7 -7
- package/dist/domains/spans/components/spans-filter-bar.cjs.js +3 -3
- package/dist/domains/spans/components/spans-filter-bar.es.js +3 -3
- package/dist/domains/spans/hooks/use-spans-filter-bar.cjs.js +2 -2
- package/dist/domains/spans/hooks/use-spans-filter-bar.es.js +2 -2
- package/dist/domains/spans/hooks/use-spans-list-source.cjs.js +1 -1
- package/dist/domains/spans/hooks/use-spans-list-source.es.js +1 -1
- package/dist/domains/spans/hooks.cjs.js +1 -1
- package/dist/domains/spans/hooks.es.js +1 -1
- package/dist/domains/threads/components/threads-explorer-body.cjs.js +6 -6
- package/dist/domains/threads/components/threads-explorer-body.es.js +7 -7
- 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 +2 -2
- package/dist/domains/threads/hooks/use-threads-filter-bar.es.js +2 -2
- package/dist/domains/threads/hooks/use-threads-list-source.cjs.js +1 -1
- package/dist/domains/threads/hooks/use-threads-list-source.es.js +1 -1
- package/dist/domains/threads/hooks.cjs.js +1 -1
- package/dist/domains/threads/hooks.es.js +1 -1
- package/dist/domains/traces/components/columns-menu/columns-menu.cjs.js +1 -1
- package/dist/domains/traces/components/columns-menu/columns-menu.es.js +2 -2
- package/dist/domains/traces/components/feedback-thread.cjs.js +9 -9
- package/dist/domains/traces/components/feedback-thread.es.js +9 -9
- package/dist/domains/traces/components/format-trace-thread-messages.cjs.js +1 -1
- package/dist/domains/traces/components/format-trace-thread-messages.es.js +1 -1
- package/dist/domains/traces/components/no-traces-info.cjs.js +2 -2
- package/dist/domains/traces/components/no-traces-info.cjs.js.map +1 -1
- package/dist/domains/traces/components/no-traces-info.es.js +2 -2
- package/dist/domains/traces/components/no-traces-info.es.js.map +1 -1
- package/dist/domains/traces/components/shared.cjs.js +3 -3
- package/dist/domains/traces/components/shared.es.js +3 -3
- package/dist/domains/traces/components/span-data-panel-view.cjs.js +23 -23
- 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 +23 -23
- package/dist/domains/traces/components/span-data-panel-view.es.js.map +1 -1
- package/dist/domains/traces/components/span-details-view.cjs.js +3 -3
- package/dist/domains/traces/components/span-details-view.es.js +3 -3
- package/dist/domains/traces/components/span-outcome.cjs.js +1 -1
- package/dist/domains/traces/components/span-outcome.es.js +1 -1
- package/dist/domains/traces/components/span-outcome.utils.cjs.js +3 -3
- package/dist/domains/traces/components/span-outcome.utils.cjs.js.map +1 -1
- package/dist/domains/traces/components/span-outcome.utils.es.js +3 -3
- package/dist/domains/traces/components/span-outcome.utils.es.js.map +1 -1
- package/dist/domains/traces/components/span-payload/span-error-renderer.cjs.js +5 -5
- package/dist/domains/traces/components/span-payload/span-error-renderer.es.js +5 -5
- package/dist/domains/traces/components/span-payload/span-input-renderers.cjs.js +4 -4
- package/dist/domains/traces/components/span-payload/span-input-renderers.es.js +4 -4
- package/dist/domains/traces/components/span-payload/span-output-renderers.cjs.js +7 -7
- package/dist/domains/traces/components/span-payload/span-output-renderers.es.js +7 -7
- package/dist/domains/traces/components/span-payload/span-payload-attachment.cjs.js +1 -1
- package/dist/domains/traces/components/span-payload/span-payload-attachment.es.js +1 -1
- package/dist/domains/traces/components/span-payload/span-payload-json.cjs.js +2 -2
- package/dist/domains/traces/components/span-payload/span-payload-json.es.js +2 -2
- package/dist/domains/traces/components/span-payload/span-payload-messages.cjs.js +14 -9
- package/dist/domains/traces/components/span-payload/span-payload-messages.cjs.js.map +1 -1
- package/dist/domains/traces/components/span-payload/span-payload-messages.es.js +14 -9
- package/dist/domains/traces/components/span-payload/span-payload-messages.es.js.map +1 -1
- 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 +3 -3
- package/dist/domains/traces/components/span-payload/span-payload-processor.es.js +3 -3
- package/dist/domains/traces/components/span-payload/span-payload-registry.cjs.js +1 -1
- package/dist/domains/traces/components/span-payload/span-payload-registry.es.js +1 -1
- package/dist/domains/traces/components/span-payload/span-payload-section.cjs.js +7 -7
- package/dist/domains/traces/components/span-payload/span-payload-section.es.js +7 -7
- 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-attributes.cjs.js +3 -3
- package/dist/domains/traces/components/span-payload/span-processor-attributes.es.js +3 -3
- package/dist/domains/traces/components/span-payload/span-processor-mutations.cjs.js +3 -3
- package/dist/domains/traces/components/span-payload/span-processor-mutations.es.js +3 -3
- package/dist/domains/traces/components/span-payload/span-signal-details.cjs.js +4 -4
- package/dist/domains/traces/components/span-payload/span-signal-details.es.js +4 -4
- package/dist/domains/traces/components/span-payload/span-tools-section.cjs.js +6 -6
- package/dist/domains/traces/components/span-payload/span-tools-section.es.js +6 -6
- package/dist/domains/traces/components/span-payload.cjs.js +4 -4
- package/dist/domains/traces/components/span-payload.es.js +4 -4
- package/dist/domains/traces/components/span-prompt-changes.cjs.js +17 -10
- package/dist/domains/traces/components/span-prompt-changes.cjs.js.map +1 -1
- package/dist/domains/traces/components/span-prompt-changes.es.js +17 -10
- package/dist/domains/traces/components/span-prompt-changes.es.js.map +1 -1
- package/dist/domains/traces/components/span-rows.cjs.js +1 -1
- package/dist/domains/traces/components/span-rows.es.js +1 -1
- package/dist/domains/traces/components/span-summary-description.cjs.js +3 -3
- package/dist/domains/traces/components/span-summary-description.es.js +3 -3
- package/dist/domains/traces/components/span-timeline-row.cjs.js +10 -10
- package/dist/domains/traces/components/span-timeline-row.es.js +10 -10
- package/dist/domains/traces/components/span-timing-hover-card.cjs.js +3 -3
- package/dist/domains/traces/components/span-timing-hover-card.es.js +3 -3
- package/dist/domains/traces/components/span-token-usage.cjs.js +2 -2
- package/dist/domains/traces/components/span-token-usage.es.js +2 -2
- package/dist/domains/traces/components/span-token-usage.utils.cjs.js +2 -2
- package/dist/domains/traces/components/span-token-usage.utils.cjs.js.map +1 -1
- package/dist/domains/traces/components/span-token-usage.utils.es.js +2 -2
- package/dist/domains/traces/components/span-token-usage.utils.es.js.map +1 -1
- package/dist/domains/traces/components/span-type-badge.cjs.js +1 -1
- package/dist/domains/traces/components/span-type-badge.es.js +1 -1
- package/dist/domains/traces/components/thread-trace/thread-trace-details.cjs.js +3 -3
- package/dist/domains/traces/components/thread-trace/thread-trace-details.es.js +3 -3
- package/dist/domains/traces/components/thread-trace/thread-trace-list.cjs.js +2 -2
- package/dist/domains/traces/components/thread-trace/thread-trace-list.es.js +2 -2
- package/dist/domains/traces/components/thread-trace/thread-trace-messages.cjs.js +4 -4
- package/dist/domains/traces/components/thread-trace/thread-trace-messages.es.js +4 -4
- package/dist/domains/traces/components/thread-trace/thread-trace-root.cjs.js +3 -3
- package/dist/domains/traces/components/thread-trace/thread-trace-root.es.js +3 -3
- package/dist/domains/traces/components/thread-trace/thread-trace-row.cjs.js +5 -5
- package/dist/domains/traces/components/thread-trace/thread-trace-row.es.js +5 -5
- package/dist/domains/traces/components/thread-trace/thread-trace-span-panel.cjs.js +1 -1
- package/dist/domains/traces/components/thread-trace/thread-trace-span-panel.es.js +1 -1
- package/dist/domains/traces/components/thread-trace/thread-trace-spans.cjs.js +6 -6
- package/dist/domains/traces/components/thread-trace/thread-trace-spans.es.js +6 -6
- package/dist/domains/traces/components/thread-trace.cjs.js +3 -3
- package/dist/domains/traces/components/thread-trace.es.js +3 -3
- package/dist/domains/traces/components/thread-view-by-trace.cjs.js +7 -7
- package/dist/domains/traces/components/thread-view-by-trace.es.js +7 -7
- package/dist/domains/traces/components/thread-view-skeleton.cjs.js +5 -5
- package/dist/domains/traces/components/thread-view-skeleton.es.js +5 -5
- package/dist/domains/traces/components/timeline-name-col.cjs.js +6 -6
- package/dist/domains/traces/components/timeline-name-col.es.js +6 -6
- package/dist/domains/traces/components/timeline-timing-col.cjs.js +4 -4
- package/dist/domains/traces/components/timeline-timing-col.es.js +4 -4
- package/dist/domains/traces/components/trace-columns-menu.cjs.js +5 -5
- package/dist/domains/traces/components/trace-columns-menu.es.js +5 -5
- package/dist/domains/traces/components/trace-data-panel-view.cjs.js +13 -13
- package/dist/domains/traces/components/trace-data-panel-view.es.js +13 -13
- package/dist/domains/traces/components/trace-data-panel.cjs.js +2 -2
- package/dist/domains/traces/components/trace-data-panel.es.js +2 -2
- package/dist/domains/traces/components/trace-details-view.cjs.js +3 -3
- package/dist/domains/traces/components/trace-details-view.es.js +3 -3
- package/dist/domains/traces/components/trace-error-cell.cjs.js +2 -2
- package/dist/domains/traces/components/trace-error-cell.es.js +2 -2
- package/dist/domains/traces/components/trace-error-summary.cjs.js +2 -2
- package/dist/domains/traces/components/trace-error-summary.es.js +2 -2
- package/dist/domains/traces/components/trace-id-button.cjs.js +1 -1
- package/dist/domains/traces/components/trace-id-button.es.js +1 -1
- package/dist/domains/traces/components/trace-messages-panel.cjs.js +1 -1
- package/dist/domains/traces/components/trace-messages-panel.es.js +1 -1
- package/dist/domains/traces/components/trace-messages-skeleton.cjs.js +1 -1
- package/dist/domains/traces/components/trace-messages-skeleton.es.js +1 -1
- package/dist/domains/traces/components/trace-span-panel.cjs.js +3 -3
- package/dist/domains/traces/components/trace-span-panel.es.js +3 -3
- package/dist/domains/traces/components/trace-span-timeline-markers.cjs.js +6 -6
- package/dist/domains/traces/components/trace-span-timeline-markers.es.js +6 -6
- package/dist/domains/traces/components/trace-span-timeline.cjs.js +5 -5
- package/dist/domains/traces/components/trace-span-timeline.es.js +5 -5
- package/dist/domains/traces/components/trace-span-tree-skeleton.cjs.js +2 -2
- package/dist/domains/traces/components/trace-span-tree-skeleton.es.js +2 -2
- package/dist/domains/traces/components/trace-span-tree.cjs.js +2 -2
- package/dist/domains/traces/components/trace-span-tree.es.js +2 -2
- package/dist/domains/traces/components/trace-status-value.cjs.js +1 -1
- package/dist/domains/traces/components/trace-status-value.es.js +1 -1
- package/dist/domains/traces/components/trace-summary-description.cjs.js +5 -5
- package/dist/domains/traces/components/trace-summary-description.es.js +5 -5
- package/dist/domains/traces/components/trace-thread-item-view.cjs.js +5 -5
- package/dist/domains/traces/components/trace-thread-item-view.es.js +5 -5
- package/dist/domains/traces/components/trace-thread-panel.cjs.js +1 -1
- package/dist/domains/traces/components/trace-thread-panel.es.js +1 -1
- package/dist/domains/traces/components/trace-timeline.cjs.js +1 -1
- package/dist/domains/traces/components/trace-timeline.es.js +1 -1
- package/dist/domains/traces/components/traces-error-content.cjs.js +2 -2
- package/dist/domains/traces/components/traces-error-content.es.js +2 -2
- package/dist/domains/traces/components/traces-explorer/traces-explorer-body.cjs.js +2 -2
- package/dist/domains/traces/components/traces-explorer/traces-explorer-body.es.js +2 -2
- package/dist/domains/traces/components/traces-explorer/traces-explorer-columns-menu.cjs.js +1 -1
- package/dist/domains/traces/components/traces-explorer/traces-explorer-columns-menu.es.js +1 -1
- package/dist/domains/traces/components/traces-explorer/traces-explorer-columns-provider.cjs.js +1 -1
- package/dist/domains/traces/components/traces-explorer/traces-explorer-columns-provider.es.js +1 -1
- package/dist/domains/traces/components/traces-explorer/traces-explorer-filter-bar.cjs.js +2 -2
- package/dist/domains/traces/components/traces-explorer/traces-explorer-filter-bar.es.js +2 -2
- package/dist/domains/traces/components/traces-explorer/traces-explorer-histogram.cjs.js +1 -1
- package/dist/domains/traces/components/traces-explorer/traces-explorer-histogram.es.js +1 -1
- package/dist/domains/traces/components/traces-explorer/traces-explorer-layout.cjs.js +2 -2
- package/dist/domains/traces/components/traces-explorer/traces-explorer-layout.es.js +2 -2
- package/dist/domains/traces/components/traces-explorer/traces-explorer-list-provider.cjs.js +2 -2
- package/dist/domains/traces/components/traces-explorer/traces-explorer-list-provider.es.js +2 -2
- package/dist/domains/traces/components/traces-explorer/traces-explorer-list.cjs.js +1 -1
- package/dist/domains/traces/components/traces-explorer/traces-explorer-list.es.js +1 -1
- package/dist/domains/traces/components/traces-explorer/traces-explorer-panel.cjs.js +6 -6
- package/dist/domains/traces/components/traces-explorer/traces-explorer-panel.es.js +6 -6
- package/dist/domains/traces/components/traces-explorer/traces-explorer-root.cjs.js +2 -2
- package/dist/domains/traces/components/traces-explorer/traces-explorer-root.es.js +3 -3
- package/dist/domains/traces/components/traces-explorer/traces-explorer-saved-views.cjs.js +1 -1
- package/dist/domains/traces/components/traces-explorer/traces-explorer-saved-views.es.js +1 -1
- package/dist/domains/traces/components/traces-explorer/use-traces-filter-bar.cjs.js +2 -2
- package/dist/domains/traces/components/traces-explorer/use-traces-filter-bar.es.js +2 -2
- package/dist/domains/traces/components/traces-explorer.cjs.js +4 -4
- package/dist/domains/traces/components/traces-explorer.es.js +4 -4
- package/dist/domains/traces/components/traces-list-mode-toggle.cjs.js +2 -2
- package/dist/domains/traces/components/traces-list-mode-toggle.es.js +2 -2
- package/dist/domains/traces/components/traces-list-view.cjs.js +10 -10
- package/dist/domains/traces/components/traces-list-view.es.js +10 -10
- package/dist/domains/traces/components/traces-page-skeleton.cjs.js +2 -2
- package/dist/domains/traces/components/traces-page-skeleton.es.js +2 -2
- package/dist/domains/traces/components/traces-spans-switch.cjs.js +3 -3
- package/dist/domains/traces/components/traces-spans-switch.es.js +3 -3
- package/dist/domains/traces/components.cjs.js +15 -15
- package/dist/domains/traces/components.es.js +15 -15
- package/dist/domains/traces/hooks/use-download-trace-json.cjs.js +1 -1
- package/dist/domains/traces/hooks/use-download-trace-json.es.js +1 -1
- package/dist/domains/traces/hooks/use-traces-list-source.cjs.js +1 -1
- package/dist/domains/traces/hooks/use-traces-list-source.es.js +1 -1
- package/dist/domains/traces/hooks.cjs.js +4 -4
- package/dist/domains/traces/hooks.es.js +4 -4
- package/dist/domains/traces/utils/span-utils.cjs.js +2 -2
- package/dist/domains/traces/utils/span-utils.cjs.js.map +1 -1
- package/dist/domains/traces/utils/span-utils.es.js +2 -2
- package/dist/domains/traces/utils/span-utils.es.js.map +1 -1
- package/dist/domains/traces/utils.cjs.js +2 -2
- package/dist/domains/traces/utils.es.js +2 -2
- package/dist/domains/traces.cjs.js +2 -2
- package/dist/domains/traces.es.js +2 -2
- package/dist/domains/workflows/components/workflow-combobox.cjs.js +4 -3
- package/dist/domains/workflows/components/workflow-combobox.cjs.js.map +1 -1
- package/dist/domains/workflows/components/workflow-combobox.es.js +4 -3
- package/dist/domains/workflows/components/workflow-combobox.es.js.map +1 -1
- package/dist/domains/workflows/components/workflow-entity-header.cjs.js +6 -6
- package/dist/domains/workflows/components/workflow-entity-header.cjs.js.map +1 -1
- package/dist/domains/workflows/components/workflow-entity-header.es.js +6 -6
- package/dist/domains/workflows/components/workflow-entity-header.es.js.map +1 -1
- package/dist/domains/workflows/components/workflow-information.cjs.js +10 -10
- package/dist/domains/workflows/components/workflow-information.es.js +10 -10
- package/dist/domains/workflows/components/workflow-layout.cjs.js +3 -3
- package/dist/domains/workflows/components/workflow-layout.es.js +2 -2
- package/dist/domains/workflows/components/workflow-run-status-icon.cjs.js +3 -3
- package/dist/domains/workflows/components/workflow-run-status-icon.es.js +3 -3
- package/dist/domains/workflows/components/workflow-step-detail.cjs.js +4 -4
- package/dist/domains/workflows/components/workflow-step-detail.es.js +4 -4
- package/dist/domains/workflows/components/workflows-list/no-workflows-info.cjs.js +2 -2
- package/dist/domains/workflows/components/workflows-list/no-workflows-info.es.js +2 -2
- package/dist/domains/workflows/components/workflows-list/workflows-list.cjs.js +11 -11
- package/dist/domains/workflows/components/workflows-list/workflows-list.es.js +11 -11
- package/dist/domains/workflows/context/playground-workflow-run-provider.cjs.js +1 -1
- package/dist/domains/workflows/context/playground-workflow-run-provider.es.js +1 -1
- package/dist/domains/workflows/context/use-stream-for-run.cjs.js +1 -1
- package/dist/domains/workflows/context/use-stream-for-run.es.js +1 -1
- package/dist/domains/workflows/context/workflow-run-provider.cjs.js +1 -1
- package/dist/domains/workflows/context/workflow-run-provider.es.js +1 -1
- package/dist/domains/workflows/runs/workflow-run-details.cjs.js +2 -2
- package/dist/domains/workflows/runs/workflow-run-details.es.js +2 -2
- package/dist/domains/workflows/runs/workflow-run-list.cjs.js +26 -21
- package/dist/domains/workflows/runs/workflow-run-list.cjs.js.map +1 -1
- package/dist/domains/workflows/runs/workflow-run-list.es.js +26 -21
- package/dist/domains/workflows/runs/workflow-run-list.es.js.map +1 -1
- package/dist/domains/workflows/workflow/data/use-workflow-data.cjs.js +1 -1
- package/dist/domains/workflows/workflow/data/use-workflow-data.es.js +1 -1
- package/dist/domains/workflows/workflow/data/workflow-data-button.cjs.js +1 -1
- package/dist/domains/workflows/workflow/data/workflow-data-button.es.js +1 -1
- package/dist/domains/workflows/workflow/data/workflow-data-inspector.cjs.js +5 -5
- package/dist/domains/workflows/workflow/data/workflow-data-inspector.es.js +5 -5
- package/dist/domains/workflows/workflow/input/workflow-json-input.cjs.js +1 -1
- package/dist/domains/workflows/workflow/input/workflow-json-input.es.js +1 -1
- package/dist/domains/workflows/workflow/input/workflow-processor-input.cjs.js +8 -8
- package/dist/domains/workflows/workflow/input/workflow-processor-input.cjs.js.map +1 -1
- package/dist/domains/workflows/workflow/input/workflow-processor-input.es.js +8 -8
- package/dist/domains/workflows/workflow/input/workflow-processor-input.es.js.map +1 -1
- package/dist/domains/workflows/workflow/use-workflow-graph-nodes.cjs.js +1 -1
- package/dist/domains/workflows/workflow/use-workflow-graph-nodes.es.js +1 -1
- package/dist/domains/workflows/workflow/use-workflow-graph-runtime.cjs.js +1 -1
- package/dist/domains/workflows/workflow/use-workflow-graph-runtime.es.js +1 -1
- package/dist/domains/workflows/workflow/use-workflow-trigger.cjs.js +3 -3
- package/dist/domains/workflows/workflow/use-workflow-trigger.es.js +3 -3
- package/dist/domains/workflows/workflow/utils.cjs.js +2 -2
- package/dist/domains/workflows/workflow/utils.es.js +2 -2
- package/dist/domains/workflows/workflow/workflow-body-graph.cjs.js +1 -1
- package/dist/domains/workflows/workflow/workflow-body-graph.es.js +1 -1
- package/dist/domains/workflows/workflow/workflow-cancel-button.cjs.js +1 -1
- package/dist/domains/workflows/workflow/workflow-cancel-button.es.js +1 -1
- package/dist/domains/workflows/workflow/workflow-card.cjs.js +1 -1
- package/dist/domains/workflows/workflow/workflow-card.es.js +1 -1
- package/dist/domains/workflows/workflow/workflow-data-edge.cjs.js +1 -1
- package/dist/domains/workflows/workflow/workflow-data-edge.es.js +1 -1
- package/dist/domains/workflows/workflow/workflow-debug-mode-switch.cjs.js +1 -1
- package/dist/domains/workflows/workflow/workflow-debug-mode-switch.es.js +1 -1
- package/dist/domains/workflows/workflow/workflow-debug-step-controls.cjs.js +1 -1
- package/dist/domains/workflows/workflow/workflow-debug-step-controls.es.js +1 -1
- package/dist/domains/workflows/workflow/workflow-graph-boundary.cjs.js +6 -6
- package/dist/domains/workflows/workflow/workflow-graph-boundary.es.js +6 -6
- package/dist/domains/workflows/workflow/workflow-graph-groups.cjs.js +1 -1
- package/dist/domains/workflows/workflow/workflow-graph-groups.cjs.js.map +1 -1
- package/dist/domains/workflows/workflow/workflow-graph-groups.es.js +1 -1
- package/dist/domains/workflows/workflow/workflow-graph-groups.es.js.map +1 -1
- package/dist/domains/workflows/workflow/workflow-graph-inner.cjs.js +4 -4
- package/dist/domains/workflows/workflow/workflow-graph-inner.es.js +4 -4
- package/dist/domains/workflows/workflow/workflow-graph-layout.cjs.js +1 -1
- package/dist/domains/workflows/workflow/workflow-graph-layout.es.js +1 -1
- package/dist/domains/workflows/workflow/workflow-graph-node.cjs.js +1 -1
- package/dist/domains/workflows/workflow/workflow-graph-node.es.js +1 -1
- package/dist/domains/workflows/workflow/workflow-graph.cjs.js +2 -2
- package/dist/domains/workflows/workflow/workflow-graph.es.js +2 -2
- package/dist/domains/workflows/workflow/workflow-input-data.cjs.js +6 -6
- package/dist/domains/workflows/workflow/workflow-input-data.es.js +6 -6
- package/dist/domains/workflows/workflow/workflow-input-type-toggle.cjs.js +2 -2
- package/dist/domains/workflows/workflow/workflow-input-type-toggle.es.js +2 -2
- package/dist/domains/workflows/workflow/workflow-map-config-dialog.cjs.js +3 -3
- package/dist/domains/workflows/workflow/workflow-map-config-dialog.es.js +3 -3
- package/dist/domains/workflows/workflow/workflow-nested-graph.cjs.js +1 -1
- package/dist/domains/workflows/workflow/workflow-nested-graph.es.js +1 -1
- package/dist/domains/workflows/workflow/workflow-run-data.cjs.js +4 -4
- package/dist/domains/workflows/workflow/workflow-run-data.es.js +4 -4
- package/dist/domains/workflows/workflow/workflow-run-error.cjs.js +1 -1
- package/dist/domains/workflows/workflow/workflow-run-error.es.js +1 -1
- package/dist/domains/workflows/workflow/workflow-run-header.cjs.js +6 -6
- package/dist/domains/workflows/workflow/workflow-run-header.es.js +6 -6
- package/dist/domains/workflows/workflow/workflow-status.cjs.js +7 -7
- package/dist/domains/workflows/workflow/workflow-status.es.js +7 -7
- package/dist/domains/workflows/workflow/workflow-step-action-bar.cjs.js +2 -2
- package/dist/domains/workflows/workflow/workflow-step-action-bar.es.js +2 -2
- package/dist/domains/workflows/workflow/workflow-step-node-utils.cjs.js +1 -1
- package/dist/domains/workflows/workflow/workflow-step-node-utils.es.js +1 -1
- package/dist/domains/workflows/workflow/workflow-steps-status.cjs.js +1 -1
- package/dist/domains/workflows/workflow/workflow-steps-status.es.js +1 -1
- package/dist/domains/workflows/workflow/workflow-suspended-steps.cjs.js +10 -10
- package/dist/domains/workflows/workflow/workflow-suspended-steps.es.js +10 -10
- package/dist/domains/workflows/workflow/workflow-time-travel-form.cjs.js +12 -12
- package/dist/domains/workflows/workflow/workflow-time-travel-form.es.js +12 -12
- package/dist/domains/workflows/workflow/workflow-timeline-row.cjs.js +4 -4
- package/dist/domains/workflows/workflow/workflow-timeline-row.es.js +4 -4
- package/dist/domains/workflows/workflow/workflow-timeline.cjs.js +9 -9
- package/dist/domains/workflows/workflow/workflow-timeline.es.js +9 -9
- package/dist/domains/workflows/workflow/workflow-trigger-form.cjs.js +2 -2
- package/dist/domains/workflows/workflow/workflow-trigger-form.es.js +2 -2
- package/dist/domains/workflows/workflow/workflow-trigger-header.cjs.js +3 -3
- package/dist/domains/workflows/workflow/workflow-trigger-header.es.js +3 -3
- package/dist/domains/workflows/workflow/workflow-trigger.cjs.js +5 -5
- package/dist/domains/workflows/workflow/workflow-trigger.es.js +5 -5
- package/dist/domains/workflows.cjs.js +4 -4
- package/dist/domains/workflows.es.js +4 -4
- package/dist/domains/workspace/components/mount-icon.cjs.js +1 -1
- package/dist/domains/workspace/components/mount-icon.es.js +1 -1
- package/dist/domains/workspace/components/workspace-active-file.cjs.js +4 -4
- package/dist/domains/workspace/components/workspace-active-file.es.js +4 -4
- package/dist/domains/workspace/components/workspace-add-skill-dialog.cjs.js +10 -10
- package/dist/domains/workspace/components/workspace-add-skill-dialog.es.js +10 -10
- package/dist/domains/workspace/components/workspace-add-skill.cjs.js +1 -1
- package/dist/domains/workspace/components/workspace-add-skill.es.js +1 -1
- package/dist/domains/workspace/components/workspace-context.cjs.js +1 -1
- package/dist/domains/workspace/components/workspace-context.es.js +1 -1
- package/dist/domains/workspace/components/workspace-create-directory.cjs.js +4 -4
- package/dist/domains/workspace/components/workspace-create-directory.es.js +4 -4
- package/dist/domains/workspace/components/workspace-error.cjs.js +1 -1
- package/dist/domains/workspace/components/workspace-error.es.js +1 -1
- package/dist/domains/workspace/components/workspace-markdown-preview.cjs.js +2 -2
- package/dist/domains/workspace/components/workspace-markdown-preview.es.js +2 -2
- package/dist/domains/workspace/components/workspace-parts.cjs.js +5 -5
- package/dist/domains/workspace/components/workspace-parts.es.js +5 -5
- package/dist/domains/workspace/components/workspace-search.cjs.js +17 -20
- package/dist/domains/workspace/components/workspace-search.cjs.js.map +1 -1
- package/dist/domains/workspace/components/workspace-search.es.js +18 -21
- package/dist/domains/workspace/components/workspace-search.es.js.map +1 -1
- package/dist/domains/workspace/components/workspace-tree-view.cjs.js +1 -1
- package/dist/domains/workspace/components/workspace-tree-view.es.js +1 -1
- package/dist/domains/workspace/components/workspace-tree.cjs.js +11 -11
- package/dist/domains/workspace/components/workspace-tree.cjs.js.map +1 -1
- package/dist/domains/workspace/components/workspace-tree.es.js +11 -11
- package/dist/domains/workspace/components/workspace-tree.es.js.map +1 -1
- package/dist/domains/workspace/components/workspace.cjs.js +1 -1
- package/dist/domains/workspace/components/workspace.es.js +1 -1
- package/dist/domains/workspace.cjs.js +3 -3
- package/dist/domains/workspace.es.js +3 -3
- package/dist/{dropdown-menu-B4jY3J9e.js → dropdown-menu-DKoWI8kD.js} +2 -2
- package/dist/{dropdown-menu-B4jY3J9e.js.map → dropdown-menu-DKoWI8kD.js.map} +1 -1
- package/dist/{dropdown-menu-BETTTPBB.cjs → dropdown-menu-Dx-jCOIv.cjs} +2 -2
- package/dist/{dropdown-menu-BETTTPBB.cjs.map → dropdown-menu-Dx-jCOIv.cjs.map} +1 -1
- package/dist/ee/signals/components/entity-index-compact-grid.cjs.js +4 -4
- package/dist/ee/signals/components/entity-index-compact-grid.es.js +4 -4
- package/dist/ee/signals/components/entity-index-list.cjs.js +1 -1
- package/dist/ee/signals/components/entity-index-list.es.js +1 -1
- package/dist/ee/signals/components/entity-index-status.cjs.js +2 -2
- package/dist/ee/signals/components/entity-index-status.es.js +2 -2
- package/dist/ee/signals/components/signals-empty-state.cjs.js +12 -21
- package/dist/ee/signals/components/signals-empty-state.cjs.js.map +1 -1
- package/dist/ee/signals/components/signals-empty-state.es.js +12 -21
- package/dist/ee/signals/components/signals-empty-state.es.js.map +1 -1
- package/dist/ee/signals/components/trace-intelligence-entity-detail.cjs.js +5 -5
- package/dist/ee/signals/components/trace-intelligence-entity-detail.es.js +5 -5
- package/dist/ee/signals/components/trace-intelligence-entity-index.cjs.js +13 -13
- package/dist/ee/signals/components/trace-intelligence-entity-index.es.js +14 -14
- package/dist/ee/signals/examples-pager.cjs.js +2 -2
- package/dist/ee/signals/examples-pager.es.js +2 -2
- package/dist/ee/signals/flow-card.cjs.js +4 -4
- package/dist/ee/signals/flow-card.es.js +4 -4
- package/dist/ee/signals/lifeline-point.cjs.js +2 -2
- package/dist/ee/signals/lifeline-point.es.js +2 -2
- package/dist/ee/signals/lifeline-row.cjs.js +6 -6
- package/dist/ee/signals/lifeline-row.cjs.js.map +1 -1
- package/dist/ee/signals/lifeline-row.es.js +6 -6
- package/dist/ee/signals/lifeline-row.es.js.map +1 -1
- package/dist/ee/signals/noise-detail-panel.cjs.js +6 -6
- package/dist/ee/signals/noise-detail-panel.es.js +6 -6
- package/dist/ee/signals/sankey-signals-data.cjs.js +9 -5
- package/dist/ee/signals/sankey-signals-data.cjs.js.map +1 -1
- package/dist/ee/signals/sankey-signals-data.es.js +9 -5
- package/dist/ee/signals/sankey-signals-data.es.js.map +1 -1
- package/dist/ee/signals/sankey-signals.cjs.js +21 -12
- package/dist/ee/signals/sankey-signals.cjs.js.map +1 -1
- package/dist/ee/signals/sankey-signals.es.js +21 -12
- package/dist/ee/signals/sankey-signals.es.js.map +1 -1
- package/dist/ee/signals/settings/signal-definition-form-dialog.cjs.js +4 -4
- package/dist/ee/signals/settings/signal-definition-form-dialog.es.js +4 -4
- package/dist/ee/signals/settings/trace-signal-settings.cjs.js +7 -7
- package/dist/ee/signals/settings/trace-signal-settings.es.js +7 -7
- package/dist/ee/signals/signal-delta-column.cjs.js +3 -3
- package/dist/ee/signals/signal-delta-column.es.js +3 -3
- package/dist/ee/signals/signal-lifelines.cjs.js +5 -5
- package/dist/ee/signals/signal-lifelines.es.js +5 -5
- package/dist/ee/signals/signals-error-state.cjs.js +2 -2
- package/dist/ee/signals/signals-error-state.es.js +2 -2
- package/dist/ee/signals/snapshot-summary.cjs.js +15 -0
- package/dist/ee/signals/snapshot-summary.cjs.js.map +1 -0
- package/dist/ee/signals/snapshot-summary.d.ts +1 -0
- package/dist/ee/signals/snapshot-summary.es.js +14 -0
- package/dist/ee/signals/snapshot-summary.es.js.map +1 -0
- package/dist/ee/signals/snapshot-timeline.cjs.js +4 -4
- package/dist/ee/signals/snapshot-timeline.cjs.js.map +1 -1
- package/dist/ee/signals/snapshot-timeline.es.js +4 -4
- package/dist/ee/signals/snapshot-timeline.es.js.map +1 -1
- package/dist/ee/signals/sortable-signal-headers.cjs.js +6 -6
- package/dist/ee/signals/sortable-signal-headers.es.js +6 -6
- package/dist/ee/signals/theme-compare.cjs.js +15 -7
- package/dist/ee/signals/theme-compare.cjs.js.map +1 -1
- package/dist/ee/signals/theme-compare.es.js +15 -7
- package/dist/ee/signals/theme-compare.es.js.map +1 -1
- package/dist/ee/signals/theme-detail-panel.cjs.js +13 -17
- package/dist/ee/signals/theme-detail-panel.cjs.js.map +1 -1
- package/dist/ee/signals/theme-detail-panel.es.js +13 -17
- package/dist/ee/signals/theme-detail-panel.es.js.map +1 -1
- package/dist/ee/signals/theme-filter-banner.cjs.js +7 -7
- package/dist/ee/signals/theme-filter-banner.cjs.js.map +1 -1
- package/dist/ee/signals/theme-filter-banner.es.js +7 -7
- package/dist/ee/signals/theme-filter-banner.es.js.map +1 -1
- package/dist/ee/signals/theme-lifelines.cjs.js +8 -5
- package/dist/ee/signals/theme-lifelines.cjs.js.map +1 -1
- package/dist/ee/signals/theme-lifelines.es.js +8 -5
- package/dist/ee/signals/theme-lifelines.es.js.map +1 -1
- package/dist/ee/signals/theme-trend-chart.cjs.js +3 -3
- package/dist/ee/signals/theme-trend-chart.cjs.js.map +1 -1
- package/dist/ee/signals/theme-trend-chart.es.js +3 -3
- package/dist/ee/signals/theme-trend-chart.es.js.map +1 -1
- package/dist/ee/signals/trace-insight-view.cjs.js +11 -13
- package/dist/ee/signals/trace-insight-view.cjs.js.map +1 -1
- package/dist/ee/signals/trace-insight-view.es.js +11 -13
- package/dist/ee/signals/trace-insight-view.es.js.map +1 -1
- package/dist/ee/signals/trace-intelligence-explainer.cjs.js +10 -15
- package/dist/ee/signals/trace-intelligence-explainer.cjs.js.map +1 -1
- package/dist/ee/signals/trace-intelligence-explainer.es.js +10 -15
- package/dist/ee/signals/trace-intelligence-explainer.es.js.map +1 -1
- package/dist/ee/signals/view-mode-tab.cjs.js +2 -2
- package/dist/ee/signals/view-mode-tab.es.js +2 -2
- package/dist/ee/signals.cjs.js +5 -5
- package/dist/ee/signals.es.js +5 -5
- package/dist/ee/topics/components/topic-trace-details-panel.cjs.js +1 -1
- package/dist/ee/topics/components/topic-trace-details-panel.es.js +1 -1
- package/dist/ee/topics/components/topic-trace-summary-list.cjs.js +4 -4
- package/dist/ee/topics/components/topic-trace-summary-list.es.js +4 -4
- package/dist/ee/topics/components/topics-layout.cjs.js +1 -1
- package/dist/ee/topics/components/topics-layout.es.js +1 -1
- package/dist/{field-error-id-DBSuJ3HM.js → field-error-id-6ZynvsRO.js} +2 -2
- package/dist/{field-error-id-DBSuJ3HM.js.map → field-error-id-6ZynvsRO.js.map} +1 -1
- package/dist/{field-error-id-nGAF0330.cjs → field-error-id-VimPQI_b.cjs} +2 -2
- package/dist/{field-error-id-nGAF0330.cjs.map → field-error-id-VimPQI_b.cjs.map} +1 -1
- package/dist/{filter-bar-chip-Cg-UbIwP.cjs → filter-bar-chip-DFsbUZ-V.cjs} +10 -10
- package/dist/{filter-bar-chip-Cg-UbIwP.cjs.map → filter-bar-chip-DFsbUZ-V.cjs.map} +1 -1
- package/dist/{filter-bar-chip-CABeKrtf.js → filter-bar-chip-NBtfDca9.js} +11 -11
- package/dist/{filter-bar-chip-CABeKrtf.js.map → filter-bar-chip-NBtfDca9.js.map} +1 -1
- package/dist/{filter-bar-time-range-qlV8p7hp.js → filter-bar-time-range-D9SnzR2J.js} +3 -3
- package/dist/{filter-bar-time-range-qlV8p7hp.js.map → filter-bar-time-range-D9SnzR2J.js.map} +1 -1
- package/dist/{filter-bar-time-range-zdM024JD.cjs → filter-bar-time-range-DlVNjw43.cjs} +3 -3
- package/dist/{filter-bar-time-range-zdM024JD.cjs.map → filter-bar-time-range-DlVNjw43.cjs.map} +1 -1
- package/dist/hooks/use-clock.cjs.js +34 -0
- package/dist/hooks/use-clock.cjs.js.map +1 -0
- package/dist/hooks/use-clock.d.ts +1 -0
- package/dist/hooks/use-clock.es.js +33 -0
- package/dist/hooks/use-clock.es.js.map +1 -0
- package/dist/hooks/use-copy-to-clipboard.cjs.js +1 -1
- package/dist/hooks/use-copy-to-clipboard.es.js +1 -1
- package/dist/hooks/use-text-highlight.cjs.js +3 -5
- package/dist/hooks/use-text-highlight.cjs.js.map +1 -1
- package/dist/hooks/use-text-highlight.es.js +1 -3
- package/dist/hooks/use-text-highlight.es.js.map +1 -1
- package/dist/icons/ByteDanceIcon.cjs.js +37 -0
- package/dist/icons/ByteDanceIcon.cjs.js.map +1 -0
- package/dist/icons/ByteDanceIcon.d.ts +1 -0
- package/dist/icons/ByteDanceIcon.es.js +34 -0
- package/dist/icons/ByteDanceIcon.es.js.map +1 -0
- package/dist/icons/CohereBrandIcon.cjs.js +34 -0
- package/dist/icons/CohereBrandIcon.cjs.js.map +1 -0
- package/dist/icons/CohereBrandIcon.d.ts +1 -0
- package/dist/icons/CohereBrandIcon.es.js +31 -0
- package/dist/icons/CohereBrandIcon.es.js.map +1 -0
- package/dist/icons/FireworksIcon.cjs.js +22 -0
- package/dist/icons/FireworksIcon.cjs.js.map +1 -0
- package/dist/icons/FireworksIcon.d.ts +1 -0
- package/dist/icons/FireworksIcon.es.js +19 -0
- package/dist/icons/FireworksIcon.es.js.map +1 -0
- package/dist/icons/Icon.cjs.js +1 -1
- package/dist/icons/Icon.es.js +1 -1
- package/dist/icons/LongCatIcon.cjs.js +22 -0
- package/dist/icons/LongCatIcon.cjs.js.map +1 -0
- package/dist/icons/LongCatIcon.d.ts +1 -0
- package/dist/icons/LongCatIcon.es.js +19 -0
- package/dist/icons/LongCatIcon.es.js.map +1 -0
- package/dist/icons/MicrosoftIcon.cjs.js +34 -0
- package/dist/icons/MicrosoftIcon.cjs.js.map +1 -0
- package/dist/icons/MicrosoftIcon.d.ts +1 -0
- package/dist/icons/MicrosoftIcon.es.js +31 -0
- package/dist/icons/MicrosoftIcon.es.js.map +1 -0
- package/dist/icons/MorphIcon.cjs.js +20 -0
- package/dist/icons/MorphIcon.cjs.js.map +1 -0
- package/dist/icons/MorphIcon.d.ts +1 -0
- package/dist/icons/MorphIcon.es.js +17 -0
- package/dist/icons/MorphIcon.es.js.map +1 -0
- package/dist/icons/NousResearchIcon.cjs.js +19 -0
- package/dist/icons/NousResearchIcon.cjs.js.map +1 -0
- package/dist/icons/NousResearchIcon.d.ts +1 -0
- package/dist/icons/NousResearchIcon.es.js +16 -0
- package/dist/icons/NousResearchIcon.es.js.map +1 -0
- package/dist/icons/NovaIcon.cjs.js +41 -0
- package/dist/icons/NovaIcon.cjs.js.map +1 -0
- package/dist/icons/NovaIcon.d.ts +1 -0
- package/dist/icons/NovaIcon.es.js +38 -0
- package/dist/icons/NovaIcon.es.js.map +1 -0
- package/dist/icons/PerplexityIcon.cjs.js +21 -0
- package/dist/icons/PerplexityIcon.cjs.js.map +1 -0
- package/dist/icons/PerplexityIcon.d.ts +1 -0
- package/dist/icons/PerplexityIcon.es.js +18 -0
- package/dist/icons/PerplexityIcon.es.js.map +1 -0
- package/dist/icons/SakanaIcon.cjs.js +20 -0
- package/dist/icons/SakanaIcon.cjs.js.map +1 -0
- package/dist/icons/SakanaIcon.d.ts +1 -0
- package/dist/icons/SakanaIcon.es.js +17 -0
- package/dist/icons/SakanaIcon.es.js.map +1 -0
- package/dist/icons/StepFunIcon.cjs.js +35 -0
- package/dist/icons/StepFunIcon.cjs.js.map +1 -0
- package/dist/icons/StepFunIcon.d.ts +1 -0
- package/dist/icons/StepFunIcon.es.js +32 -0
- package/dist/icons/StepFunIcon.es.js.map +1 -0
- package/dist/icons/TencentIcon.cjs.js +21 -0
- package/dist/icons/TencentIcon.cjs.js.map +1 -0
- package/dist/icons/TencentIcon.d.ts +1 -0
- package/dist/icons/TencentIcon.es.js +18 -0
- package/dist/icons/TencentIcon.es.js.map +1 -0
- package/dist/icons/UpstageIcon.cjs.js +36 -0
- package/dist/icons/UpstageIcon.cjs.js.map +1 -0
- package/dist/icons/UpstageIcon.d.ts +1 -0
- package/dist/icons/UpstageIcon.es.js +33 -0
- package/dist/icons/UpstageIcon.es.js.map +1 -0
- package/dist/{input-2hRXcZIu.cjs → input-BpnUsQSt.cjs} +4 -4
- package/dist/{input-2hRXcZIu.cjs.map → input-BpnUsQSt.cjs.map} +1 -1
- package/dist/{input-0l1uzOBZ.js → input-Cyit5ZSc.js} +4 -4
- package/dist/{input-0l1uzOBZ.js.map → input-Cyit5ZSc.js.map} +1 -1
- package/dist/{input-group-DVJLZDBL.cjs → input-group-DBCilXjT.cjs} +4 -4
- package/dist/{input-group-DVJLZDBL.cjs.map → input-group-DBCilXjT.cjs.map} +1 -1
- package/dist/{input-group-QKKV_ouF.js → input-group-NV4ZzKOk.js} +4 -4
- package/dist/{input-group-QKKV_ouF.js.map → input-group-NV4ZzKOk.js.map} +1 -1
- package/dist/layout/tabbed-container.cjs.js +1 -1
- package/dist/layout/tabbed-container.es.js +1 -1
- package/dist/lib/form/auto-form.cjs.js +1 -1
- package/dist/lib/form/auto-form.es.js +1 -1
- package/dist/lib/form/components/array-element-wrapper.cjs.js +4 -4
- package/dist/lib/form/components/array-element-wrapper.es.js +4 -4
- package/dist/lib/form/components/array-wrapper.cjs.js +2 -2
- package/dist/lib/form/components/array-wrapper.es.js +2 -2
- package/dist/lib/form/components/boolean-field.cjs.js +1 -1
- package/dist/lib/form/components/boolean-field.es.js +1 -1
- package/dist/lib/form/components/date-field.cjs.js +5 -5
- package/dist/lib/form/components/date-field.es.js +5 -5
- package/dist/lib/form/components/error-message.cjs.js +1 -1
- package/dist/lib/form/components/error-message.es.js +1 -1
- package/dist/lib/form/components/form-submit-row.cjs.js +2 -2
- package/dist/lib/form/components/form-submit-row.es.js +2 -2
- package/dist/lib/form/components/number-field.cjs.js +1 -1
- package/dist/lib/form/components/number-field.es.js +1 -1
- package/dist/lib/form/components/object-wrapper.cjs.js +3 -3
- package/dist/lib/form/components/object-wrapper.es.js +3 -3
- package/dist/lib/form/components/record-field.cjs.js +2 -2
- package/dist/lib/form/components/record-field.es.js +2 -2
- package/dist/lib/form/components/select-field.cjs.js +1 -1
- package/dist/lib/form/components/select-field.es.js +1 -1
- package/dist/lib/form/components/string-field.cjs.js +1 -1
- package/dist/lib/form/components/string-field.es.js +1 -1
- package/dist/lib/form/components/submit-button.cjs.js +1 -1
- package/dist/lib/form/components/submit-button.es.js +1 -1
- package/dist/lib/form/components/union-field.cjs.js +1 -1
- package/dist/lib/form/components/union-field.es.js +1 -1
- package/dist/lib/form/dynamic-form.cjs.js +2 -2
- package/dist/lib/form/dynamic-form.es.js +2 -2
- package/dist/{list-search-CkhsTFdG.js → list-search-DUcIMJTk.js} +2 -2
- package/dist/{list-search-CkhsTFdG.js.map → list-search-DUcIMJTk.js.map} +1 -1
- package/dist/{list-search-BtRno5As.cjs → list-search-yF02rvZt.cjs} +2 -2
- package/dist/{list-search-BtRno5As.cjs.map → list-search-yF02rvZt.cjs.map} +1 -1
- package/dist/mcp-app-viewer-BV7FI498.js +2051 -0
- package/dist/mcp-app-viewer-BV7FI498.js.map +1 -0
- package/dist/mcp-app-viewer-M3-pqAlo.cjs +2058 -0
- package/dist/mcp-app-viewer-M3-pqAlo.cjs.map +1 -0
- package/dist/new/layout/page-header.cjs.js +1 -1
- package/dist/new/layout/page-header.es.js +1 -1
- package/dist/new/settings.cjs.js +1 -1
- package/dist/new/settings.es.js +1 -1
- package/dist/{observability-saved-views-CjKTEp1V.js → observability-saved-views-Ch53fh5_.js} +9 -9
- package/dist/{observability-saved-views-CjKTEp1V.js.map → observability-saved-views-Ch53fh5_.js.map} +1 -1
- package/dist/{observability-saved-views-Daizz4tU.cjs → observability-saved-views-DgABvgat.cjs} +9 -9
- package/dist/{observability-saved-views-Daizz4tU.cjs.map → observability-saved-views-DgABvgat.cjs.map} +1 -1
- package/dist/{page-header-BykBsHUy.js → page-header-Maytcmgh.js} +3 -3
- package/dist/{page-header-BB6yjtce.cjs.map → page-header-Maytcmgh.js.map} +1 -1
- package/dist/{page-header-BB6yjtce.cjs → page-header-pZCts_WC.cjs} +3 -3
- package/dist/page-header-pZCts_WC.cjs.map +1 -0
- package/dist/{popover-CzHvTPk2.js → popover-BpMi52Tb.js} +3 -3
- package/dist/{popover-CzHvTPk2.js.map → popover-BpMi52Tb.js.map} +1 -1
- package/dist/{popover-BJqa6Hz6.cjs → popover-D9AfJmla.cjs} +3 -3
- package/dist/{popover-BJqa6Hz6.cjs.map → popover-D9AfJmla.cjs.map} +1 -1
- package/dist/primitives/chart-frame.cjs.js +2 -2
- package/dist/primitives/chart-frame.es.js +2 -2
- package/dist/primitives/chart-time-tick.cjs.js +2 -2
- package/dist/primitives/chart-time-tick.es.js +2 -2
- package/dist/primitives/charts/drag-selection.cjs.js +1 -1
- package/dist/primitives/charts/drag-selection.es.js +1 -1
- package/dist/primitives/menu-item.cjs.js +2 -2
- package/dist/primitives/menu-item.es.js +2 -2
- package/dist/primitives/menu-scroll-area.cjs.js +1 -1
- package/dist/primitives/menu-scroll-area.es.js +1 -1
- package/dist/primitives/resize-handle-indicator.cjs.js +1 -1
- package/dist/primitives/resize-handle-indicator.es.js +1 -1
- package/dist/primitives/trigger-button.cjs.js +2 -2
- package/dist/primitives/trigger-button.es.js +2 -2
- package/dist/{property-filter-applied--U5EZdaA.js → property-filter-applied-DoxQHG09.js} +8 -8
- package/dist/{property-filter-applied--U5EZdaA.js.map → property-filter-applied-DoxQHG09.js.map} +1 -1
- package/dist/{property-filter-applied-BkkIObRq.cjs → property-filter-applied-DuyL4S_K.cjs} +8 -8
- package/dist/{property-filter-applied-BkkIObRq.cjs.map → property-filter-applied-DuyL4S_K.cjs.map} +1 -1
- package/dist/resize/collapsible-panel.cjs.js +4 -4
- package/dist/resize/collapsible-panel.cjs.js.map +1 -1
- package/dist/resize/collapsible-panel.es.js +4 -4
- package/dist/resize/collapsible-panel.es.js.map +1 -1
- package/dist/resize/panel-drawer.cjs.js +3 -3
- package/dist/resize/panel-drawer.es.js +3 -3
- package/dist/resize/panel-icon-button.cjs.js +1 -2
- package/dist/resize/panel-icon-button.cjs.js.map +1 -1
- package/dist/resize/panel-icon-button.es.js +1 -1
- package/dist/resize/separator.cjs.js +1 -1
- package/dist/resize/separator.es.js +1 -1
- package/dist/{scroll-area-C226l0v0.js → scroll-area-9-S7wfSs.js} +2 -2
- package/dist/{scroll-area-C226l0v0.js.map → scroll-area-9-S7wfSs.js.map} +1 -1
- package/dist/{scroll-area-BP4gPZ4G.cjs → scroll-area-BU_TorPW.cjs} +2 -2
- package/dist/{scroll-area-BP4gPZ4G.cjs.map → scroll-area-BU_TorPW.cjs.map} +1 -1
- package/dist/{select-Dg8L5ROX.cjs → select-CeukeSn_.cjs} +5 -5
- package/dist/{select-Dg8L5ROX.cjs.map → select-CeukeSn_.cjs.map} +1 -1
- package/dist/{select-BdIZEdcy.js → select-dNX9If-s.js} +5 -5
- package/dist/{select-BdIZEdcy.js.map → select-dNX9If-s.js.map} +1 -1
- package/dist/{settings-BaUeaO96.js → settings-BEw_bg12.js} +2 -2
- package/dist/{settings-BaUeaO96.js.map → settings-BEw_bg12.js.map} +1 -1
- package/dist/{settings-CUVqhBbf.cjs → settings-Bminohri.cjs} +2 -2
- package/dist/{settings-CUVqhBbf.cjs.map → settings-Bminohri.cjs.map} +1 -1
- package/dist/{span-payload-primitives-CKKIAVPJ.js → span-payload-primitives-BKkRpVVO.js} +12 -12
- package/dist/{span-payload-primitives-CKKIAVPJ.js.map → span-payload-primitives-BKkRpVVO.js.map} +1 -1
- package/dist/{span-payload-primitives-D4tHWN2W.cjs → span-payload-primitives-D2NWznGy.cjs} +12 -12
- package/dist/{span-payload-primitives-D4tHWN2W.cjs.map → span-payload-primitives-D2NWznGy.cjs.map} +1 -1
- package/dist/{spinner-CnLgLj9R.js → spinner-B9ykw74u.js} +2 -2
- package/dist/{spinner-CnLgLj9R.js.map → spinner-B9ykw74u.js.map} +1 -1
- package/dist/{spinner-C8ZxiA5C.cjs → spinner-oS6q4pwx.cjs} +3 -3
- package/dist/{spinner-C8ZxiA5C.cjs.map → spinner-oS6q4pwx.cjs.map} +1 -1
- package/dist/src/domains/chat/activity/index.d.ts +1 -3
- package/dist/src/domains/chat/activity/model/activity-members.d.ts +1 -2
- package/dist/src/domains/chat/activity/model/activity-words.d.ts +1 -2
- package/dist/src/domains/chat/context/chat-context.d.ts +9 -0
- package/dist/src/domains/chat/tools/badges/knowledge-tool-badge.d.ts +2 -1
- package/dist/src/domains/chat/tools/badges/mcp-task-chip.d.ts +1 -1
- package/dist/src/domains/chat/tools/badges/workspace-data-parts.d.ts +6 -0
- package/dist/src/domains/chat/tools/tool-card-kind.d.ts +12 -2
- package/dist/src/domains/dashboards/components/dashboard-grid.d.ts +4 -1
- package/dist/src/domains/dashboards/components/dashboard-renderer.d.ts +22 -2
- package/dist/src/domains/dashboards/components/widget-controls.d.ts +3 -0
- package/dist/src/domains/dashboards/components/widget-error.d.ts +7 -2
- package/dist/src/domains/dashboards/index.d.ts +2 -2
- package/dist/src/domains/dashboards/kinds/kpis/kpis-widget.d.ts +1 -1
- package/dist/src/domains/dashboards/kinds/scores/scores-widget.d.ts +1 -1
- package/dist/src/domains/dashboards/lib/chrome.d.ts +5 -2
- package/dist/src/domains/dashboards/lib/pin-actions.d.ts +7 -0
- package/dist/src/domains/dashboards/widget-kind.d.ts +13 -0
- package/dist/src/domains/llm/models-dev-logo-slugs.d.ts +1 -0
- package/dist/src/domains/llm/provider-logo-monogram.d.ts +8 -0
- package/dist/src/domains/llm/provider-logo.d.ts +0 -4
- package/dist/src/domains/mcps/components/mcp-app-tool-result.d.ts +2 -1
- package/dist/src/domains/mcps/components/mcp-app-viewer.d.ts +7 -2
- package/dist/src/domains/mcps/hooks/use-mcp-app-tool-call.d.ts +5 -0
- package/dist/src/domains/metrics/components/chart-card.d.ts +6 -2
- package/dist/src/domains/metrics/components/kpi-card.d.ts +2 -1
- package/dist/src/domains/metrics/lib/index.d.ts +1 -0
- package/dist/src/domains/metrics/lib/series-colors.d.ts +39 -0
- package/dist/src/domains/traces/components/span-token-usage.utils.d.ts +1 -1
- package/dist/src/domains/workflows/components/workflow-combobox.d.ts +2 -1
- package/dist/src/ds/components/AgentIndicator/paint.d.ts +6 -2
- package/dist/src/ds/components/AgentIndicator/poses/coordination.d.ts +7 -0
- package/dist/src/ds/components/AgentIndicator/poses/documents.d.ts +2 -0
- package/dist/src/ds/components/AgentIndicator/poses/files.d.ts +5 -0
- package/dist/src/ds/components/AgentIndicator/poses/interface.d.ts +8 -0
- package/dist/src/ds/components/AgentIndicator/poses/knowledge-actions.d.ts +6 -0
- package/dist/src/ds/components/AgentIndicator/poses/knowledge.d.ts +2 -0
- package/dist/src/ds/components/AgentIndicator/poses/skills.d.ts +4 -0
- package/dist/src/ds/components/AgentIndicator/poses/terminal.d.ts +4 -0
- package/dist/src/ds/components/AgentIndicator/poses/thinking.d.ts +2 -0
- package/dist/src/ds/components/AgentIndicator/poses.d.ts +1 -1
- package/dist/src/ds/components/AgentIndicator/shapes.d.ts +7 -1
- package/dist/src/ds/components/Breadcrumb/crumb-switcher.d.ts +1 -0
- package/dist/src/ds/components/ChatShell/chat-shell-context.d.ts +9 -0
- package/dist/src/ds/components/ChatShell/chat-shell.d.ts +5 -0
- package/dist/src/ds/components/ChatShell/index.d.ts +2 -1
- package/dist/src/ds/components/Combobox/combobox-parts.d.ts +2 -1
- package/dist/src/ds/components/Combobox/combobox-styles.d.ts +9 -4
- package/dist/src/ds/components/Combobox/combobox.d.ts +4 -2
- package/dist/src/ds/components/CommandPalette/command-palette.d.ts +1 -1
- package/dist/src/ds/components/DateTimePicker/date-picker.d.ts +6 -1
- package/dist/src/ds/components/DateTimePicker/index.d.ts +0 -1
- package/dist/src/ds/components/DateTimeRangePicker/custom-range-editor.d.ts +3 -2
- package/dist/src/ds/components/Message/message-timestamp.d.ts +1 -0
- package/dist/src/ds/components/MessageScroller/message-scroller-context.d.ts +3 -2
- package/dist/src/ds/components/MessageScroller/message-scroller-geometry.d.ts +1 -1
- package/dist/src/ds/components/MessageScroller/message-scroller-hooks.d.ts +2 -8
- package/dist/src/ds/components/MessageScroller/message-scroller-visibility-store.d.ts +8 -0
- package/dist/src/ds/components/Metadata/index.d.ts +2 -0
- package/dist/src/ds/components/Metadata/metadata.d.ts +10 -0
- package/dist/src/ds/components/MetricsCard/index.d.ts +1 -0
- package/dist/src/ds/components/MetricsCard/metrics-card-drag-handle.d.ts +12 -0
- package/dist/src/ds/components/MetricsCard/metrics-card.d.ts +2 -0
- package/dist/src/ds/components/Steps/index.d.ts +1 -0
- package/dist/src/ds/components/Steps/step.d.ts +13 -0
- package/dist/src/ds/components/Steps/steps-context.d.ts +2 -0
- package/dist/src/ds/components/Steps/steps-root.d.ts +18 -0
- package/dist/src/ds/components/Steps/steps.d.ts +7 -0
- package/dist/src/ds/components/ai/annotations/annotatable-selection.d.ts +25 -0
- package/dist/src/ds/components/ai/annotations/annotation-comment-card.d.ts +11 -0
- package/dist/src/ds/components/ai/annotations/annotation-comment-popover.d.ts +15 -0
- package/dist/src/ds/components/ai/annotations/annotation-highlights.d.ts +1 -0
- package/dist/src/ds/components/ai/annotations/annotation-marker.d.ts +13 -0
- package/dist/src/ds/components/ai/annotations/annotation-markers.d.ts +9 -0
- package/dist/src/ds/components/ai/annotations/annotation-number.d.ts +4 -0
- package/dist/src/ds/components/ai/annotations/annotation-selection-toolbar.d.ts +7 -0
- package/dist/src/ds/components/ai/annotations/chat-annotations.d.ts +27 -0
- package/dist/src/ds/components/ai/annotations/composer-annotation-list.d.ts +6 -0
- package/dist/src/ds/components/ai/annotations/composer-annotations.d.ts +5 -0
- package/dist/src/ds/components/ai/annotations/format-annotated-message.d.ts +11 -0
- package/dist/src/ds/components/ai/annotations/index.d.ts +5 -0
- package/dist/src/ds/components/ai/annotations/transcript-annotations.d.ts +6 -0
- package/dist/src/ds/components/ai/annotations/use-annotation-placement.d.ts +11 -0
- package/dist/src/ds/components/ai/annotations/use-annotation-selection.d.ts +12 -0
- package/dist/src/ds/components/ai/tool-call/index.d.ts +3 -0
- package/dist/src/ds/components/ai/tool-call/tool-call-body.d.ts +6 -0
- package/dist/src/ds/components/ai/tool-call/tool-call-exit-status.d.ts +11 -0
- package/dist/src/ds/components/ai/tool-call/tool-call-output.d.ts +1 -2
- package/dist/src/ds/components/ai/tool-call/tool-call-view.d.ts +17 -0
- package/dist/src/ds/components/ai/tool-call/tool-phrases.d.ts +127 -138
- package/dist/src/ds/components/ai/tool-call/tool-presentation.d.ts +2 -0
- package/dist/src/ds/components/ai/tool-call/tool-styles.d.ts +10 -0
- package/dist/src/ds/components/ai/transcript-divider/transcript-divider.d.ts +2 -2
- package/dist/src/ds/icons/ByteDanceIcon.d.ts +2 -0
- package/dist/src/ds/icons/CohereBrandIcon.d.ts +2 -0
- package/dist/src/ds/icons/FireworksIcon.d.ts +2 -0
- package/dist/src/ds/icons/LongCatIcon.d.ts +2 -0
- package/dist/src/ds/icons/MicrosoftIcon.d.ts +2 -0
- package/dist/src/ds/icons/MorphIcon.d.ts +2 -0
- package/dist/src/ds/icons/NousResearchIcon.d.ts +2 -0
- package/dist/src/ds/icons/NovaIcon.d.ts +2 -0
- package/dist/src/ds/icons/PerplexityIcon.d.ts +2 -0
- package/dist/src/ds/icons/SakanaIcon.d.ts +2 -0
- package/dist/src/ds/icons/StepFunIcon.d.ts +2 -0
- package/dist/src/ds/icons/TencentIcon.d.ts +2 -0
- package/dist/src/ds/icons/UpstageIcon.d.ts +2 -0
- package/dist/src/ds/icons/index.d.ts +13 -0
- package/dist/src/ds/tokens/colors.d.ts +12 -0
- package/dist/src/ee/signals/sankey-signals-data.d.ts +2 -2
- package/dist/src/ee/signals/snapshot-summary.d.ts +7 -0
- package/dist/src/ee/signals/snapshot-timeline.d.ts +2 -1
- package/dist/src/hooks/use-clock.d.ts +5 -0
- package/dist/src/lib/resize/collapsible-panel.d.ts +5 -3
- package/dist/src/lib/string.d.ts +1 -0
- package/dist/{string-CNKDIc_4.js → string-CA5M0mj_.js} +5 -2
- package/dist/{string-CNKDIc_4.js.map → string-CA5M0mj_.js.map} +1 -1
- package/dist/{string-DdJJdCv2.cjs → string-EyTazW-F.cjs} +10 -1
- package/dist/{string-DdJJdCv2.cjs.map → string-EyTazW-F.cjs.map} +1 -1
- package/dist/style.css +321 -144
- package/dist/{tabbed-container-B4lCBgRP.cjs → tabbed-container-Bhfi-DWr.cjs} +9 -9
- package/dist/{tabbed-container-B4lCBgRP.cjs.map → tabbed-container-Bhfi-DWr.cjs.map} +1 -1
- package/dist/{tabbed-container-DI1GI1Qv.js → tabbed-container-DOkHshha.js} +8 -8
- package/dist/{tabbed-container-DI1GI1Qv.js.map → tabbed-container-DOkHshha.js.map} +1 -1
- package/dist/{tabs-content-CmXe5ML0.cjs → tabs-content-BACwMrMG.cjs} +3 -3
- package/dist/{tabs-content-CmXe5ML0.cjs.map → tabs-content-BACwMrMG.cjs.map} +1 -1
- package/dist/{tabs-content-D__B9hd-.js → tabs-content-DwU_eA-a.js} +3 -3
- package/dist/{tabs-content-D__B9hd-.js.map → tabs-content-DwU_eA-a.js.map} +1 -1
- package/dist/{tabs-tab-CYTZevdV.js → tabs-tab-BHs639jL.js} +4 -4
- package/dist/{tabs-tab-CYTZevdV.js.map → tabs-tab-BHs639jL.js.map} +1 -1
- package/dist/{tabs-tab-DGwfHVDr.cjs → tabs-tab-CANh2eAD.cjs} +4 -4
- package/dist/{tabs-tab-DGwfHVDr.cjs.map → tabs-tab-CANh2eAD.cjs.map} +1 -1
- package/dist/{toast-api-D_rrRhNG.js → toast-api-Cak5N8pT.js} +2 -2
- package/dist/{toast-api-D_rrRhNG.js.map → toast-api-Cak5N8pT.js.map} +1 -1
- package/dist/{toast-api-qtkOucy2.cjs → toast-api-DDcGCbIw.cjs} +2 -2
- package/dist/{toast-api-qtkOucy2.cjs.map → toast-api-DDcGCbIw.cjs.map} +1 -1
- package/dist/tokens.cjs.js +12 -0
- package/dist/tokens.cjs.js.map +1 -1
- package/dist/tokens.es.js +12 -0
- package/dist/tokens.es.js.map +1 -1
- package/dist/{tool-approval-CJvPDL7D.cjs → tool-approval-CguPaikn.cjs} +7 -7
- package/dist/{tool-approval-CJvPDL7D.cjs.map → tool-approval-CguPaikn.cjs.map} +1 -1
- package/dist/{tool-approval-DyN11vFA.js → tool-approval-Cjz0yAzw.js} +7 -7
- package/dist/{tool-approval-DyN11vFA.js.map → tool-approval-Cjz0yAzw.js.map} +1 -1
- package/dist/tool-call-BqDI9mrY.cjs +600 -0
- package/dist/tool-call-BqDI9mrY.cjs.map +1 -0
- package/dist/tool-call-ChJKYCfu.js +505 -0
- package/dist/tool-call-ChJKYCfu.js.map +1 -0
- package/dist/{tool-card-BOLXeKIp.cjs → tool-card-Dg4VOYV6.cjs} +24 -15
- package/dist/tool-card-Dg4VOYV6.cjs.map +1 -0
- package/dist/{tool-card-HZ5bm7ue.js → tool-card-GSiCfxMz.js} +25 -16
- package/dist/tool-card-GSiCfxMz.js.map +1 -0
- package/dist/tool-presentation-C2bYQ7gB.js +874 -0
- package/dist/tool-presentation-C2bYQ7gB.js.map +1 -0
- package/dist/tool-presentation-DPp9h-n2.cjs +915 -0
- package/dist/tool-presentation-DPp9h-n2.cjs.map +1 -0
- package/dist/{tooltip-BiRLT3Th.cjs → tooltip-BsExuMO8.cjs} +2 -2
- package/dist/{tooltip-BiRLT3Th.cjs.map → tooltip-BsExuMO8.cjs.map} +1 -1
- package/dist/{tooltip-HzcLyGtV.js → tooltip-DJcze2VZ.js} +2 -2
- package/dist/{tooltip-HzcLyGtV.js.map → tooltip-DJcze2VZ.js.map} +1 -1
- package/dist/{transcript-divider-CvdgElIC.js → transcript-divider-DM2HkdeO.js} +5 -11
- package/dist/transcript-divider-DM2HkdeO.js.map +1 -0
- package/dist/{transcript-divider-CQ6sc3nt.cjs → transcript-divider-DroC3feH.cjs} +4 -10
- package/dist/transcript-divider-DroC3feH.cjs.map +1 -0
- package/dist/{use-workflow-graph-runtime-BKNhOKsH.js → use-workflow-graph-runtime-B3VUuhUE.js} +12 -12
- package/dist/{use-workflow-graph-runtime-BKNhOKsH.js.map → use-workflow-graph-runtime-B3VUuhUE.js.map} +1 -1
- package/dist/{use-workflow-graph-runtime-DYao-08R.cjs → use-workflow-graph-runtime-BfCL6nd4.cjs} +12 -12
- package/dist/{use-workflow-graph-runtime-DYao-08R.cjs.map → use-workflow-graph-runtime-BfCL6nd4.cjs.map} +1 -1
- package/dist/utils/string.cjs.js +2 -1
- package/dist/utils/string.es.js +1 -1
- package/dist/utils/toast.cjs.js +1 -1
- package/dist/utils/toast.es.js +1 -1
- package/oxlint/copy-rules.d.ts +4 -0
- package/oxlint/copy-rules.js +29 -0
- package/oxlint/copy-sources.js +223 -0
- package/oxlint/index.d.ts +5 -0
- package/oxlint/index.js +17 -0
- package/package.json +13 -10
- package/theme/data-viz.css +33 -0
- package/dist/AgentIndicator-Bs2S8AWJ.js +0 -847
- package/dist/AgentIndicator-Bs2S8AWJ.js.map +0 -1
- package/dist/AgentIndicator-to30W73z.cjs +0 -864
- package/dist/AgentIndicator-to30W73z.cjs.map +0 -1
- package/dist/Button-CLXTbAY8.js.map +0 -1
- package/dist/Button-DLcMcuUL.cjs.map +0 -1
- package/dist/Composer-BcueJvdX.cjs.map +0 -1
- package/dist/Composer-D1gF-0jZ.js.map +0 -1
- package/dist/FilterBar-BSP2UTjc.cjs.map +0 -1
- package/dist/FilterBar-PSQ1OwqH.js.map +0 -1
- package/dist/Message-jj56lxNL.cjs.map +0 -1
- package/dist/MessageScroller-CGsfTd1Z.cjs.map +0 -1
- package/dist/MessageScroller-DvaKlm4O.js.map +0 -1
- package/dist/MetricsCard-BEwiS7Pe.cjs.map +0 -1
- package/dist/MetricsCard-ua6C6b8a.js.map +0 -1
- package/dist/Workflow-C3SlEdP-.js.map +0 -1
- package/dist/Workflow-DSWQ-ROz.cjs.map +0 -1
- package/dist/activity-C8Ql81WM.js.map +0 -1
- package/dist/activity-CcQZeDYi.cjs.map +0 -1
- package/dist/combobox-D21no8t5.js.map +0 -1
- package/dist/combobox-DIT_6xiG.cjs.map +0 -1
- package/dist/combobox-parts-C4phOq4t.cjs.map +0 -1
- package/dist/combobox-parts-D90ir0Py.js.map +0 -1
- package/dist/date-time-range-picker-CWGjoR3j.cjs.map +0 -1
- package/dist/date-time-range-picker-CdSiXwB4.js.map +0 -1
- package/dist/domains/chat/activity/components/activity-timed-trigger.cjs.js +0 -29
- package/dist/domains/chat/activity/components/activity-timed-trigger.cjs.js.map +0 -1
- package/dist/domains/chat/activity/components/activity-timed-trigger.d.ts +0 -1
- package/dist/domains/chat/activity/components/activity-timed-trigger.es.js +0 -28
- package/dist/domains/chat/activity/components/activity-timed-trigger.es.js.map +0 -1
- package/dist/domains/mcps/components/mcp-app-viewer.cjs.js.map +0 -1
- package/dist/domains/mcps/components/mcp-app-viewer.es.js.map +0 -1
- package/dist/page-header-BykBsHUy.js.map +0 -1
- package/dist/src/domains/chat/activity/components/activity-timed-trigger.d.ts +0 -9
- package/dist/src/ds/components/DateTimePicker/time-picker.d.ts +0 -7
- package/dist/tool-call-DBn14X-3.cjs +0 -497
- package/dist/tool-call-DBn14X-3.cjs.map +0 -1
- package/dist/tool-call-Dsj43lvJ.js +0 -426
- package/dist/tool-call-Dsj43lvJ.js.map +0 -1
- package/dist/tool-card-BOLXeKIp.cjs.map +0 -1
- package/dist/tool-card-HZ5bm7ue.js.map +0 -1
- package/dist/tool-presentation-CvibOP1J.js +0 -256
- package/dist/tool-presentation-CvibOP1J.js.map +0 -1
- package/dist/tool-presentation-D6nzVruN.cjs +0 -291
- package/dist/tool-presentation-D6nzVruN.cjs.map +0 -1
- package/dist/transcript-divider-CQ6sc3nt.cjs.map +0 -1
- package/dist/transcript-divider-CvdgElIC.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DateRangeTimeline.cjs.js","names":["parseISO","isValid","format","addDays","differenceInCalendarDays","useState","format","Popover","PopoverTrigger","Button","CalendarDaysIcon","Txt","PopoverContent","DatePicker","useState","useRef","format","Txt","format","cn","cn","focusRing","Txt","cn","useRef","useState","useEffectEvent","addDays","useRef","cn","addDays","differenceInCalendarDays","useState","useRef"],"sources":["../../src/ds/components/DateRangeTimeline/lib/date-range-timeline.ts","../../src/ds/components/DateRangeTimeline/DateRangeBoundaryPicker.tsx","../../src/ds/components/DateRangeTimeline/lib/date-range-boundary-layout.ts","../../src/ds/components/DateRangeTimeline/hooks/useDateRangeBoundaryLayout.ts","../../src/ds/components/DateRangeTimeline/DateRangeBoundaryPickers.tsx","../../src/ds/components/DateRangeTimeline/DateRangeTicks.tsx","../../src/ds/components/DateRangeTimeline/DateRangeHandle.tsx","../../src/ds/components/DateRangeTimeline/DateRangeSelection.tsx","../../src/ds/components/DateRangeTimeline/DateRangeTrackGrid.tsx","../../src/ds/components/DateRangeTimeline/lib/date-range-timeline-interactions.ts","../../src/ds/components/DateRangeTimeline/hooks/useDateRangeKeyboardControls.ts","../../src/ds/components/DateRangeTimeline/hooks/use-pointer-drag.ts","../../src/ds/components/DateRangeTimeline/hooks/useDateRangePointerGestures.ts","../../src/ds/components/DateRangeTimeline/hooks/useDateRangeWheelZoom.ts","../../src/ds/components/DateRangeTimeline/lib/date-range-timeline-grid.ts","../../src/ds/components/DateRangeTimeline/lib/date-range-timeline-view-model.ts","../../src/ds/components/DateRangeTimeline/DateRangeTrack.tsx","../../src/ds/components/DateRangeTimeline/hooks/useDateRangeTimelineState.ts","../../src/ds/components/DateRangeTimeline/DateRangeTimeline.tsx"],"sourcesContent":["import { addDays, differenceInCalendarDays, format, isValid, parseISO } from 'date-fns';\nimport type { DateRangeValue, DateRangeBounds } from '../types';\n\nconst API_DATE_FORMAT = 'yyyy-MM-dd';\n\nexport type DateBoundary = 'from' | 'to';\n\nexport interface TimelineIndexRange {\n from: number;\n to: number;\n}\n\nexport interface TimelineState {\n origin: Date;\n viewport: TimelineIndexRange;\n selection: TimelineIndexRange;\n}\n\nexport interface TimelineTick {\n date: string;\n label: string;\n position: number;\n}\n\nexport function clamp(value: number, min: number, max: number) {\n return Math.min(max, Math.max(min, value));\n}\n\nexport function parseDate(value: string) {\n const date = parseISO(value);\n if (!/^\\d{4}-\\d{2}-\\d{2}$/.test(value) || !isValid(date)) return undefined;\n return format(date, API_DATE_FORMAT) === value ? date : undefined;\n}\n\nexport function toDateRange(state: TimelineState): DateRangeValue {\n return {\n from: format(addDays(state.origin, state.selection.from), API_DATE_FORMAT),\n to: format(addDays(state.origin, state.selection.to), API_DATE_FORMAT),\n };\n}\n\nexport function createTimelineState(value: DateRangeValue, min: Date, max: Date): TimelineState {\n const selectedFrom = parseDate(value.from) ?? min;\n const selectedTo = parseDate(value.to) ?? max;\n const absoluteSpan = Math.max(0, differenceInCalendarDays(max, min));\n if (absoluteSpan === 0) {\n return {\n origin: min,\n viewport: { from: 0, to: 0 },\n selection: { from: 0, to: 0 },\n };\n }\n\n const selectedFromIndex = clamp(differenceInCalendarDays(selectedFrom, min), 0, absoluteSpan);\n const selectedToIndex = clamp(differenceInCalendarDays(selectedTo, min), 0, absoluteSpan);\n\n return {\n origin: min,\n viewport: { from: 0, to: absoluteSpan },\n selection: {\n from: Math.min(selectedFromIndex, selectedToIndex),\n to: Math.max(selectedFromIndex, selectedToIndex),\n },\n };\n}\n\nexport function zoomTimelineViewport(\n state: TimelineState,\n maximumIndex: number,\n factor: number,\n anchor: number,\n): TimelineState {\n if (!Number.isFinite(factor) || factor <= 0 || factor === 1) return state;\n\n const boundedMaximum = Math.max(0, maximumIndex);\n const viewportSpan = state.viewport.to - state.viewport.from;\n const selectionSpan = state.selection.to - state.selection.from;\n const minimumViewportSpan = Math.max(selectionSpan, Math.min(1, boundedMaximum));\n const scaledSpan = clamp(Math.round(viewportSpan * factor), minimumViewportSpan, boundedMaximum);\n const nextSpan =\n scaledSpan === viewportSpan\n ? clamp(viewportSpan + (factor > 1 ? 1 : -1), minimumViewportSpan, boundedMaximum)\n : scaledSpan;\n if (nextSpan === viewportSpan) return state;\n\n const normalizedAnchor = Number.isFinite(anchor) ? clamp(anchor, 0, 1) : 0.5;\n const anchorIndex = state.viewport.from + viewportSpan * normalizedAnchor;\n const desiredFrom = Math.round(anchorIndex - nextSpan * normalizedAnchor);\n const earliestFrom = Math.max(0, state.selection.to - nextSpan);\n const latestFrom = Math.min(state.selection.from, boundedMaximum - nextSpan);\n const from = clamp(desiredFrom, earliestFrom, latestFrom);\n\n return {\n ...state,\n viewport: { from, to: from + nextSpan },\n };\n}\n\nexport function revealTimelineSelection(\n viewport: TimelineIndexRange,\n selection: TimelineIndexRange,\n maximumIndex: number,\n): TimelineIndexRange {\n const boundedMaximum = Math.max(0, maximumIndex);\n const selectionFrom = clamp(Math.min(selection.from, selection.to), 0, boundedMaximum);\n const selectionTo = clamp(Math.max(selection.from, selection.to), selectionFrom, boundedMaximum);\n const viewportSpan = clamp(viewport.to - viewport.from, 0, boundedMaximum);\n const viewportFrom = clamp(viewport.from, 0, boundedMaximum - viewportSpan);\n const normalizedViewport = { from: viewportFrom, to: viewportFrom + viewportSpan };\n const selectionSpan = selectionTo - selectionFrom;\n const nextSpan = Math.max(viewportSpan, selectionSpan);\n\n if (selectionFrom >= normalizedViewport.from && selectionTo <= normalizedViewport.to) {\n if (normalizedViewport.from === viewport.from && normalizedViewport.to === viewport.to) {\n return viewport;\n }\n return normalizedViewport;\n }\n\n const desiredFrom = selectionFrom < normalizedViewport.from ? selectionFrom : selectionTo - nextSpan;\n const from = clamp(desiredFrom, 0, boundedMaximum - nextSpan);\n return { from, to: from + nextSpan };\n}\n\nexport function getTimelinePosition(index: number, viewport: TimelineIndexRange) {\n const viewportSpan = viewport.to - viewport.from;\n if (viewportSpan === 0) return 50;\n return ((index - viewport.from) / viewportSpan) * 100;\n}\n\nexport function buildTimelineTickOffsets(span: number) {\n const boundedSpan = Math.max(0, Math.floor(span));\n const tickCount = boundedSpan === 0 ? 1 : Math.min(5, boundedSpan + 1);\n\n return Array.from({ length: tickCount }, (_, index) =>\n Math.round((boundedSpan * index) / Math.max(1, tickCount - 1)),\n );\n}\n\nexport function buildTimelineTicks(domainFrom: Date, domainTo: Date): TimelineTick[] {\n const span = Math.max(0, differenceInCalendarDays(domainTo, domainFrom));\n const crossesYears = domainFrom.getFullYear() !== domainTo.getFullYear();\n\n return buildTimelineTickOffsets(span).map(dayOffset => {\n const date = addDays(domainFrom, dayOffset);\n const labelFormat = span > 365 || crossesYears ? 'MMM yyyy' : 'MMM d';\n\n return {\n label: format(date, labelFormat),\n date: format(date, API_DATE_FORMAT),\n position: span === 0 ? 50 : (dayOffset / span) * 100,\n };\n });\n}\n\nexport function clampDateRangeToBounds(value: DateRangeValue, bounds: DateRangeBounds): DateRangeValue {\n const min = parseDate(bounds.min);\n const max = parseDate(bounds.max);\n if (!min || !max) return value;\n\n const from = parseDate(value.from) ?? min;\n const to = parseDate(value.to) ?? max;\n const clampedFrom = new Date(clamp(from.getTime(), min.getTime(), max.getTime()));\n const clampedTo = new Date(clamp(to.getTime(), clampedFrom.getTime(), max.getTime()));\n\n return {\n from: format(clampedFrom, API_DATE_FORMAT),\n to: format(clampedTo, API_DATE_FORMAT),\n };\n}\n\nexport function getDateRangeBounds(createdAt: string, today: string): DateRangeBounds {\n const max = parseDate(today) ?? new Date();\n const created = parseDate(createdAt) ?? max;\n const min = created > max ? max : created;\n return {\n min: format(min, API_DATE_FORMAT),\n max: format(max, API_DATE_FORMAT),\n };\n}\n\nexport function formatDateRangeDuration(value: DateRangeValue) {\n const from = parseDate(value.from);\n const to = parseDate(value.to);\n if (!from || !to) return '';\n const days = Math.max(1, differenceInCalendarDays(to, from) + 1);\n return days === 1 ? '1 day' : `${days} days`;\n}\n\nexport function formatDateRangeValueText(value: DateRangeValue) {\n const from = parseDate(value.from);\n const to = parseDate(value.to);\n if (!from || !to) return `${value.from} through ${value.to}`;\n return `${format(from, 'MMMM d, yyyy')} through ${format(to, 'MMMM d, yyyy')}`;\n}\n","import { format } from 'date-fns';\nimport { CalendarDaysIcon } from 'lucide-react';\nimport { useState } from 'react';\nimport { parseDate } from './lib/date-range-timeline';\nimport type { DateBoundary } from './lib/date-range-timeline';\nimport { Button } from '@/ds/components/Button/Button';\nimport { DatePicker } from '@/ds/components/DateTimePicker';\nimport { Popover, PopoverTrigger, PopoverContent } from '@/ds/components/Popover/popover';\nimport { Txt } from '@/ds/components/Txt/Txt';\n\ninterface DateRangeBoundaryPickerProps {\n boundary: DateBoundary;\n value: string;\n min: string;\n max: string;\n onSelect: (boundary: DateBoundary, value: string) => void;\n}\n\nexport function DateRangeBoundaryPicker({ boundary, value, min, max, onSelect }: DateRangeBoundaryPickerProps) {\n const [open, setOpen] = useState(false);\n const isFrom = boundary === 'from';\n const boundaryLabel = isFrom ? 'start date' : 'end date';\n const selectedDate = parseDate(value);\n const firstDate = parseDate(min) ?? selectedDate;\n const lastDate = parseDate(max) ?? selectedDate;\n const formattedDate = selectedDate ? format(selectedDate, 'MMM d, yyyy') : value;\n\n function handleSelect(date?: Date) {\n if (!date) return;\n onSelect(boundary, format(date, 'yyyy-MM-dd'));\n setOpen(false);\n }\n\n return (\n <Popover open={open} onOpenChange={setOpen}>\n <PopoverTrigger\n render={\n <Button\n aria-label={`Choose ${boundaryLabel}, ${formattedDate}`}\n aria-expanded={open}\n size=\"sm\"\n className=\"h-11 w-full min-w-0 justify-start overflow-hidden px-3 sm:h-8\"\n icon={<CalendarDaysIcon aria-hidden=\"true\" />}\n >\n <Txt as=\"span\" variant=\"caption\" tone=\"ink\" className=\"truncate tabular-nums\">\n {formattedDate}\n </Txt>\n </Button>\n }\n />\n <PopoverContent align={isFrom ? 'start' : 'end'} className=\"w-auto p-0\" sideOffset={6}>\n <DatePicker\n mode=\"single\"\n selected={selectedDate}\n defaultMonth={selectedDate}\n fromMonth={firstDate}\n toMonth={lastDate}\n disabled={firstDate && lastDate ? { before: firstDate, after: lastDate } : undefined}\n onSelect={handleSelect}\n />\n </PopoverContent>\n </Popover>\n );\n}\n","import { clamp } from './date-range-timeline';\n\nconst PREFERRED_PICKER_WIDTH = 160;\nconst PREFERRED_PICKER_GAP = 8;\n\ninterface BoundaryPositions {\n from: number;\n to: number;\n}\n\ninterface BoundaryPickerRect {\n left: number;\n width: number;\n}\n\nexport interface DateRangeBoundaryLayout {\n from: BoundaryPickerRect;\n to: BoundaryPickerRect;\n gap: number;\n}\n\nexport function resolveDateRangeBoundaryLayout(\n requestedWidth: number,\n positions: BoundaryPositions,\n): DateRangeBoundaryLayout {\n const width = Math.max(0, requestedWidth);\n const gap = Math.min(PREFERRED_PICKER_GAP, width);\n const pickerWidth = Math.min(PREFERRED_PICKER_WIDTH, Math.max(0, (width - gap) / 2));\n const maximumLeft = Math.max(0, width - pickerWidth);\n const fromAnchor = (clamp(positions.from, 0, 100) / 100) * width;\n const toAnchor = (clamp(positions.to, 0, 100) / 100) * width;\n const preferredFromLeft = clamp(fromAnchor - pickerWidth - gap / 2, 0, maximumLeft);\n const preferredToLeft = clamp(toAnchor + gap / 2, 0, maximumLeft);\n const overlap = preferredFromLeft + pickerWidth + gap - preferredToLeft;\n\n if (overlap <= 0) {\n return {\n from: { left: preferredFromLeft, width: pickerWidth },\n to: { left: preferredToLeft, width: pickerWidth },\n gap,\n };\n }\n\n const pairWidth = pickerWidth * 2 + gap;\n const pairLeft = clamp(preferredFromLeft - overlap / 2, 0, Math.max(0, width - pairWidth));\n\n return {\n from: { left: pairLeft, width: pickerWidth },\n to: { left: pairLeft + pickerWidth + gap, width: pickerWidth },\n gap,\n };\n}\n","import { useLayoutEffect, useState } from 'react';\nimport type { RefObject } from 'react';\nimport { resolveDateRangeBoundaryLayout } from '../lib/date-range-boundary-layout';\nimport type { DateRangeBoundaryLayout } from '../lib/date-range-boundary-layout';\n\ninterface BoundaryPositions {\n from: number;\n to: number;\n}\n\nexport function useDateRangeBoundaryLayout(\n containerRef: RefObject<HTMLDivElement | null>,\n positions: BoundaryPositions,\n): DateRangeBoundaryLayout | undefined {\n const [containerWidth, setContainerWidth] = useState<number>();\n\n useLayoutEffect(() => {\n const container = containerRef.current;\n if (!container) return;\n\n function updateWidth(width: number) {\n // Accept 0 (collapsed container) so stale positions don't linger; reject\n // only invalid measurements. resolveDateRangeBoundaryLayout handles 0.\n if (!Number.isFinite(width) || width < 0) return;\n setContainerWidth(current => (current === width ? current : width));\n }\n\n updateWidth(container.getBoundingClientRect().width);\n if (typeof ResizeObserver === 'undefined') return;\n\n const observer = new ResizeObserver(entries => {\n const entry = entries.find(({ target }) => target === container) ?? entries[0];\n const width = entry?.contentRect.width ?? container.getBoundingClientRect().width;\n updateWidth(width);\n });\n observer.observe(container);\n return () => observer.disconnect();\n }, [containerRef]);\n\n return containerWidth === undefined ? undefined : resolveDateRangeBoundaryLayout(containerWidth, positions);\n}\n","import { useRef } from 'react';\nimport { DateRangeBoundaryPicker } from './DateRangeBoundaryPicker';\nimport { useDateRangeBoundaryLayout } from './hooks/useDateRangeBoundaryLayout';\nimport type { DateBoundary } from './lib/date-range-timeline';\nimport type { DateRangeValue } from './types';\n\ninterface DateRangeBoundaryPickersProps {\n positions: { from: number; to: number };\n value: DateRangeValue;\n min: string;\n max: string;\n onSelect: (boundary: DateBoundary, value: string) => void;\n}\n\nconst FALLBACK_PICKER_WIDTH = 'clamp(0px, calc(50% - 0.25rem), 10rem)';\n\nexport function DateRangeBoundaryPickers({ positions, value, min, max, onSelect }: DateRangeBoundaryPickersProps) {\n const containerRef = useRef<HTMLDivElement>(null);\n const layout = useDateRangeBoundaryLayout(containerRef, positions);\n\n return (\n <div ref={containerRef} className=\"relative h-16 sm:h-12\">\n <div\n className=\"absolute top-0 min-w-0\"\n style={{\n left: layout?.from.left ?? 0,\n width: layout?.from.width ?? FALLBACK_PICKER_WIDTH,\n }}\n >\n <DateRangeBoundaryPicker boundary=\"from\" value={value.from} min={min} max={value.to} onSelect={onSelect} />\n </div>\n\n <div\n className=\"absolute top-0 min-w-0\"\n style={{\n left: layout?.to.left ?? 'max(calc(50% + 0.25rem), calc(100% - 10rem))',\n width: layout?.to.width ?? FALLBACK_PICKER_WIDTH,\n }}\n >\n <DateRangeBoundaryPicker boundary=\"to\" value={value.to} min={value.from} max={max} onSelect={onSelect} />\n </div>\n\n <div\n className=\"absolute top-11 h-4 w-px -translate-x-1/2 bg-border-strong transition-[left] duration-150 ease-out motion-reduce:transition-none sm:top-8\"\n style={{ left: `${positions.from}%` }}\n aria-hidden=\"true\"\n />\n <div\n className=\"absolute top-11 h-4 w-px -translate-x-1/2 bg-border-strong transition-[left] duration-150 ease-out motion-reduce:transition-none sm:top-8\"\n style={{ left: `${positions.to}%` }}\n aria-hidden=\"true\"\n />\n </div>\n );\n}\n","import { format } from 'date-fns';\nimport { parseDate } from './lib/date-range-timeline';\nimport type { TimelineTick } from './lib/date-range-timeline';\nimport { Txt } from '@/ds/components/Txt/Txt';\n\ninterface DateRangeTicksProps {\n ticks: TimelineTick[];\n min: string;\n max: string;\n}\n\nfunction formatBoundaryDate(value: string) {\n const date = parseDate(value);\n return date ? format(date, 'MMM d, yyyy') : value;\n}\n\nexport function DateRangeTicks({ ticks, min, max }: DateRangeTicksProps) {\n const firstTick = ticks[0];\n const lastTick = ticks.at(-1);\n if (!firstTick || !lastTick) return null;\n const timelineLabel = `Visible from ${formatBoundaryDate(firstTick.date)} through ${formatBoundaryDate(lastTick.date)}. Available from ${formatBoundaryDate(min)} through ${formatBoundaryDate(max)}`;\n\n if (firstTick.date === lastTick.date) {\n const date = formatBoundaryDate(firstTick.date);\n // Only claim \"Created today\" when the whole available domain is a single\n // day; a zoomed viewport can hold one tick for any date, so stay neutral.\n const singleLabel =\n firstTick.date === min && firstTick.date === max\n ? `Created today · ${date}`\n : firstTick.date === min\n ? `Created · ${date}`\n : firstTick.date === max\n ? `Today · ${date}`\n : date;\n return (\n <div role=\"group\" aria-label={timelineLabel} className=\"flex h-10 items-start justify-center pt-2\">\n {/* TODO(ds): Txt needs a muted timeline-axis variant. */}\n <Txt as=\"span\" variant=\"caption\" tone=\"muted\">\n {singleLabel}\n </Txt>\n </div>\n );\n }\n\n const startLabel = firstTick.date === min ? `Created · ${formatBoundaryDate(min)}` : firstTick.label;\n const endLabel = lastTick.date === max ? `Today · ${formatBoundaryDate(max)}` : lastTick.label;\n const middleTicks = ticks.slice(1, -1);\n\n return (\n <div role=\"group\" className=\"relative h-10\" aria-label={timelineLabel}>\n <div className=\"absolute top-0 left-0 flex flex-col items-start\">\n <span className=\"mb-1 h-1.5 w-px bg-border-strong\" aria-hidden=\"true\" />\n {/* TODO(ds): Txt needs a muted timeline-axis variant. */}\n <Txt as=\"span\" variant=\"caption\" tone=\"muted\" className=\"whitespace-nowrap\">\n {startLabel}\n </Txt>\n </div>\n\n {middleTicks.map(tick => (\n <div\n key={tick.date}\n className=\"absolute top-0 hidden -translate-x-1/2 flex-col items-center sm:flex\"\n style={{ left: `${tick.position}%` }}\n aria-hidden=\"true\"\n >\n <span className=\"mb-1 h-1.5 w-px bg-border-strong\" />\n {/* TODO(ds): Txt needs a muted timeline-axis variant. */}\n <Txt as=\"span\" variant=\"meta\" tone=\"muted\" className=\"whitespace-nowrap\">\n {tick.label}\n </Txt>\n </div>\n ))}\n\n <div className=\"absolute top-0 right-0 flex flex-col items-end\">\n <span className=\"mb-1 h-1.5 w-px bg-border-strong\" aria-hidden=\"true\" />\n {/* TODO(ds): Txt needs a muted timeline-axis variant. */}\n <Txt as=\"span\" variant=\"caption\" tone=\"muted\" className=\"whitespace-nowrap\">\n {endLabel}\n </Txt>\n </div>\n </div>\n );\n}\n","import { format } from 'date-fns';\nimport type { KeyboardEventHandler, PointerEventHandler } from 'react';\nimport { parseDate } from './lib/date-range-timeline';\nimport type { DateBoundary } from './lib/date-range-timeline';\nimport { cn } from '@/lib/utils';\n\ninterface DateRangeHandleProps {\n boundary: DateBoundary;\n position: number;\n value: number;\n valueText: string;\n min: number;\n max: number;\n active: boolean;\n onPointerDown: PointerEventHandler<HTMLDivElement>;\n onKeyDown: KeyboardEventHandler<HTMLDivElement>;\n}\n\nexport function DateRangeHandle({\n boundary,\n position,\n value,\n valueText,\n min,\n max,\n active,\n onPointerDown,\n onKeyDown,\n}: DateRangeHandleProps) {\n const label = boundary === 'from' ? 'Start date handle' : 'End date handle';\n const date = parseDate(valueText);\n const accessibleValue = date ? format(date, 'MMMM d, yyyy') : valueText;\n\n return (\n <div\n role=\"slider\"\n tabIndex={0}\n aria-label={label}\n aria-orientation=\"horizontal\"\n aria-valuemin={min}\n aria-valuemax={max}\n aria-valuenow={value}\n aria-valuetext={accessibleValue}\n className=\"group absolute inset-y-0 z-30 w-11 -translate-x-1/2 cursor-ew-resize touch-none outline-hidden\"\n style={{ left: `${position}%` }}\n onPointerDown={onPointerDown}\n onKeyDown={onKeyDown}\n >\n <span\n className={cn(\n 'absolute top-1/2 left-1/2 h-7 w-1.5 -translate-1/2 rounded-xs bg-card ring-1 transition-[width,box-shadow] duration-150 group-hover:w-2 group-focus-visible:w-2 group-focus-visible:ring-1 group-focus-visible:ring-border-focus motion-reduce:transition-none',\n active ? 'w-2 ring-2 ring-border-focus' : 'ring-border-strong',\n )}\n aria-hidden=\"true\"\n />\n </div>\n );\n}\n","import type { KeyboardEventHandler, PointerEventHandler } from 'react';\nimport { Txt } from '@/ds/components/Txt/Txt';\nimport { focusRing } from '@/ds/primitives/transitions';\nimport { cn } from '@/lib/utils';\n\ninterface DateRangeSelectionProps {\n left: number;\n width: number;\n duration: string;\n active: boolean;\n value: number;\n valueText: string;\n max: number;\n onPointerDown: PointerEventHandler<HTMLDivElement>;\n onKeyDown: KeyboardEventHandler<HTMLDivElement>;\n}\n\nexport function DateRangeSelection({\n left,\n width,\n duration,\n active,\n value,\n valueText,\n max,\n onPointerDown,\n onKeyDown,\n}: DateRangeSelectionProps) {\n const visibleWidth = Math.max(width, 0.6);\n const visibleLeft = Math.min(left, 100 - visibleWidth);\n const showDuration = width >= 12;\n return (\n <div\n role=\"slider\"\n tabIndex={0}\n aria-label=\"Move selected date range\"\n aria-orientation=\"horizontal\"\n aria-valuemin={0}\n aria-valuemax={max}\n aria-valuenow={value}\n aria-valuetext={valueText}\n className={cn(\n 'absolute inset-y-1 z-10 flex cursor-grab touch-none items-center justify-center overflow-hidden rounded-md bg-fill text-foreground select-none active:cursor-grabbing',\n focusRing,\n active\n ? 'transition-none'\n : 'transition-[left,width,background-color] duration-150 ease-out motion-reduce:transition-none',\n )}\n style={{ left: `${visibleLeft}%`, width: `${visibleWidth}%` }}\n onPointerDown={onPointerDown}\n onKeyDown={onKeyDown}\n >\n {showDuration ? (\n // TODO(ds): Txt needs a compact data-label variant.\n <Txt as=\"span\" variant=\"caption\" tone=\"ink\" font=\"mono\" className=\"tabular-nums\">\n {duration}\n </Txt>\n ) : null}\n </div>\n );\n}\n","import type { DateRangeGridMarker } from './lib/date-range-timeline-grid';\nimport { cn } from '@/lib/utils';\n\ninterface DateRangeTrackGridProps {\n markers: DateRangeGridMarker[];\n}\n\nfunction getMarkerHeight(emphasis: DateRangeGridMarker['emphasis']) {\n if (emphasis === 'major') return 'h-5';\n if (emphasis === 'medium') return 'h-3';\n return 'h-1.5';\n}\n\nexport function DateRangeTrackGrid({ markers }: DateRangeTrackGridProps) {\n // Skip markers sitting exactly on the edges — the track boundary already reads as a line there.\n const interiorMarkers = markers.filter(marker => marker.position > 0 && marker.position < 100);\n\n return (\n <div className=\"pointer-events-none absolute inset-0\" aria-hidden=\"true\">\n {interiorMarkers.map(marker => (\n <span\n key={marker.index}\n className={cn(\n 'absolute top-1/2 w-px -translate-1/2 bg-muted-foreground/15',\n getMarkerHeight(marker.emphasis),\n )}\n style={{ left: `${marker.position}%` }}\n />\n ))}\n </div>\n );\n}\n","import { clamp } from './date-range-timeline';\nimport type { DateBoundary, TimelineIndexRange } from './date-range-timeline';\n\ninterface TimelineTrackGeometry {\n left: number;\n width: number;\n}\n\nexport type TimelinePointerGesture =\n | { type: 'brush'; startIndex: number }\n | { type: 'pan'; startIndex: number; originalSelection: TimelineIndexRange }\n | { type: 'handle'; boundary: DateBoundary; originalSelection: TimelineIndexRange };\n\nexport type TimelineInteraction =\n | { type: 'selecting' }\n | { type: 'moving' }\n | { type: 'resizing'; boundary: DateBoundary };\n\nconst KEYBOARD_LARGE_STEP_DAYS = 7;\n\nfunction getKeyboardDelta(key: string) {\n if (key === 'ArrowLeft' || key === 'ArrowDown') return -1;\n if (key === 'ArrowRight' || key === 'ArrowUp') return 1;\n if (key === 'PageDown') return -KEYBOARD_LARGE_STEP_DAYS;\n if (key === 'PageUp') return KEYBOARD_LARGE_STEP_DAYS;\n return undefined;\n}\n\nexport function getTimelineInteraction(gesture: TimelinePointerGesture): TimelineInteraction {\n if (gesture.type === 'brush') return { type: 'selecting' };\n if (gesture.type === 'pan') return { type: 'moving' };\n return { type: 'resizing', boundary: gesture.boundary };\n}\n\nexport function getTimelineIndexAtClientX(\n clientX: number,\n track: TimelineTrackGeometry | undefined,\n viewport: TimelineIndexRange,\n) {\n const viewportSpan = viewport.to - viewport.from;\n if (!track || track.width <= 0 || viewportSpan <= 0) return viewport.from;\n\n const position = clamp((clientX - track.left) / track.width, 0, 1);\n return viewport.from + Math.round(position * viewportSpan);\n}\n\nexport function resolveTimelineGestureSelection(\n gesture: TimelinePointerGesture,\n pointerIndex: number,\n viewport: TimelineIndexRange,\n): TimelineIndexRange {\n const boundedPointerIndex = clamp(pointerIndex, viewport.from, viewport.to);\n\n if (gesture.type === 'brush') {\n return {\n from: Math.min(gesture.startIndex, boundedPointerIndex),\n to: Math.max(gesture.startIndex, boundedPointerIndex),\n };\n }\n\n if (gesture.type === 'pan') {\n const selectionSpan = gesture.originalSelection.to - gesture.originalSelection.from;\n const delta = boundedPointerIndex - gesture.startIndex;\n const from = clamp(gesture.originalSelection.from + delta, viewport.from, viewport.to - selectionSpan);\n return { from, to: from + selectionSpan };\n }\n\n if (gesture.boundary === 'from') {\n return {\n from: clamp(boundedPointerIndex, viewport.from, gesture.originalSelection.to),\n to: gesture.originalSelection.to,\n };\n }\n\n return {\n from: gesture.originalSelection.from,\n to: clamp(boundedPointerIndex, gesture.originalSelection.from, viewport.to),\n };\n}\n\nexport function moveTimelineSelectionFromKey(selection: TimelineIndexRange, key: string, maximumIndex: number) {\n const span = selection.to - selection.from;\n if (key === 'Home') return { from: 0, to: span };\n if (key === 'End') return { from: maximumIndex - span, to: maximumIndex };\n\n const delta = getKeyboardDelta(key);\n if (delta === undefined) return undefined;\n const from = clamp(selection.from + delta, 0, maximumIndex - span);\n return { from, to: from + span };\n}\n\nexport function resizeTimelineSelectionFromKey(\n selection: TimelineIndexRange,\n boundary: DateBoundary,\n key: string,\n maximumIndex: number,\n) {\n const { from, to } = selection;\n if (key === 'Home') return boundary === 'from' ? { from: 0, to } : { from, to: from };\n if (key === 'End') {\n return boundary === 'from' ? { from: to, to } : { from, to: maximumIndex };\n }\n\n const delta = getKeyboardDelta(key);\n if (delta === undefined) return undefined;\n return boundary === 'from'\n ? { from: clamp(from + delta, 0, to), to }\n : { from, to: clamp(to + delta, from, maximumIndex) };\n}\n","import type { KeyboardEvent } from 'react';\nimport type { DateBoundary, TimelineIndexRange } from '../lib/date-range-timeline';\nimport { moveTimelineSelectionFromKey, resizeTimelineSelectionFromKey } from '../lib/date-range-timeline-interactions';\n\ninterface UseDateRangeKeyboardControlsInput {\n selection: TimelineIndexRange;\n maximumIndex: number;\n onCommit: (selection: TimelineIndexRange) => void;\n}\n\nexport function useDateRangeKeyboardControls({ selection, maximumIndex, onCommit }: UseDateRangeKeyboardControlsInput) {\n function handleSelectionKeyDown(event: KeyboardEvent<HTMLDivElement>) {\n const nextSelection = moveTimelineSelectionFromKey(selection, event.key, maximumIndex);\n if (!nextSelection) return;\n\n event.preventDefault();\n onCommit(nextSelection);\n }\n\n function handleBoundaryKeyDown(boundary: DateBoundary, event: KeyboardEvent<HTMLDivElement>) {\n const nextSelection = resizeTimelineSelectionFromKey(selection, boundary, event.key, maximumIndex);\n if (!nextSelection) return;\n\n event.preventDefault();\n onCommit(nextSelection);\n }\n\n function handleFromKeyDown(event: KeyboardEvent<HTMLDivElement>) {\n handleBoundaryKeyDown('from', event);\n }\n\n function handleToKeyDown(event: KeyboardEvent<HTMLDivElement>) {\n handleBoundaryKeyDown('to', event);\n }\n\n return {\n handleSelectionKeyDown,\n handleFromKeyDown,\n handleToKeyDown,\n };\n}\n","import { useRef } from 'react';\nimport type { PointerEvent } from 'react';\n\ninterface PointerDragSession<TPayload> {\n pointerId: number;\n captureTarget: HTMLElement;\n payload: TPayload;\n}\n\ninterface UsePointerDragInput<TPayload> {\n onMove: (payload: TPayload, event: PointerEvent<HTMLElement>) => void;\n onEnd: (payload: TPayload, event: PointerEvent<HTMLElement>) => void;\n onCancel: (payload: TPayload, event: PointerEvent<HTMLElement>) => void;\n}\n\nexport function usePointerDrag<TPayload>({ onMove, onEnd, onCancel }: UsePointerDragInput<TPayload>) {\n const sessionRef = useRef<PointerDragSession<TPayload> | undefined>(undefined);\n\n function startPointerDrag(event: PointerEvent<HTMLElement>, payload: TPayload) {\n if (sessionRef.current) return false;\n\n const captureTarget = event.currentTarget;\n captureTarget.setPointerCapture(event.pointerId);\n sessionRef.current = {\n pointerId: event.pointerId,\n captureTarget,\n payload,\n };\n return true;\n }\n\n function getSession(event: PointerEvent<HTMLElement>) {\n const session = sessionRef.current;\n if (!session || session.pointerId !== event.pointerId) return undefined;\n return session;\n }\n\n function releaseSession(session: PointerDragSession<TPayload>) {\n sessionRef.current = undefined;\n if (!session.captureTarget.hasPointerCapture(session.pointerId)) return;\n session.captureTarget.releasePointerCapture(session.pointerId);\n }\n\n function handlePointerMove(event: PointerEvent<HTMLElement>) {\n const session = getSession(event);\n if (!session) return;\n onMove(session.payload, event);\n }\n\n function handlePointerUp(event: PointerEvent<HTMLElement>) {\n const session = getSession(event);\n if (!session) return;\n releaseSession(session);\n onEnd(session.payload, event);\n }\n\n function handlePointerCancel(event: PointerEvent<HTMLElement>) {\n const session = getSession(event);\n if (!session) return;\n releaseSession(session);\n onCancel(session.payload, event);\n }\n\n function handleLostPointerCapture(event: PointerEvent<HTMLElement>) {\n const session = getSession(event);\n if (!session) return;\n sessionRef.current = undefined;\n onCancel(session.payload, event);\n }\n\n return {\n startPointerDrag,\n handlePointerMove,\n handlePointerUp,\n handlePointerCancel,\n handleLostPointerCapture,\n };\n}\n","import { useState } from 'react';\nimport type { PointerEvent, RefObject } from 'react';\nimport type { DateBoundary, TimelineIndexRange, TimelineState } from '../lib/date-range-timeline';\nimport {\n getTimelineIndexAtClientX,\n getTimelineInteraction,\n resolveTimelineGestureSelection,\n} from '../lib/date-range-timeline-interactions';\nimport type { TimelineInteraction, TimelinePointerGesture } from '../lib/date-range-timeline-interactions';\nimport { usePointerDrag } from './use-pointer-drag';\n\nexport type { TimelineInteraction } from '../lib/date-range-timeline-interactions';\n\ninterface TimelinePointerDrag {\n gesture: TimelinePointerGesture;\n currentSelection: TimelineIndexRange;\n}\n\ninterface UseDateRangePointerGesturesInput {\n trackRef: RefObject<HTMLDivElement | null>;\n timeline: TimelineState;\n onSelectionPreview: (selection: TimelineIndexRange) => void;\n onSelectionCommit: (selection: TimelineIndexRange) => void;\n onSelectionCancel: () => void;\n}\n\nexport function useDateRangePointerGestures({\n trackRef,\n timeline,\n onSelectionPreview,\n onSelectionCommit,\n onSelectionCancel,\n}: UseDateRangePointerGesturesInput) {\n const [interaction, setInteraction] = useState<TimelineInteraction>();\n\n function getPointerIndex(clientX: number) {\n const track = trackRef.current?.getBoundingClientRect();\n return getTimelineIndexAtClientX(clientX, track, timeline.viewport);\n }\n\n function previewPointerDrag(drag: TimelinePointerDrag, event: PointerEvent<HTMLElement>) {\n const pointerIndex = getPointerIndex(event.clientX);\n const selection = resolveTimelineGestureSelection(drag.gesture, pointerIndex, timeline.viewport);\n drag.currentSelection = selection;\n onSelectionPreview(selection);\n }\n\n function commitPointerDrag(drag: TimelinePointerDrag, event: PointerEvent<HTMLElement>) {\n previewPointerDrag(drag, event);\n setInteraction(undefined);\n onSelectionCommit(drag.currentSelection);\n }\n\n function cancelPointerDrag() {\n setInteraction(undefined);\n onSelectionCancel();\n }\n\n const pointerDrag = usePointerDrag<TimelinePointerDrag>({\n onMove: previewPointerDrag,\n onEnd: commitPointerDrag,\n onCancel: cancelPointerDrag,\n });\n\n function beginPointerDrag(\n event: PointerEvent<HTMLDivElement>,\n gesture: TimelinePointerGesture,\n currentSelection: TimelineIndexRange,\n ) {\n const started = pointerDrag.startPointerDrag(event, { gesture, currentSelection });\n if (!started) return false;\n setInteraction(getTimelineInteraction(gesture));\n return true;\n }\n\n function startBrush(event: PointerEvent<HTMLDivElement>) {\n if (event.button !== 0) return;\n event.preventDefault();\n const startIndex = getPointerIndex(event.clientX);\n const selection = { from: startIndex, to: startIndex };\n const started = beginPointerDrag(\n event,\n {\n type: 'brush',\n startIndex,\n },\n selection,\n );\n if (!started) return;\n onSelectionPreview(selection);\n }\n\n function startPan(event: PointerEvent<HTMLDivElement>) {\n if (event.button !== 0) return;\n event.preventDefault();\n event.stopPropagation();\n beginPointerDrag(\n event,\n {\n type: 'pan',\n startIndex: getPointerIndex(event.clientX),\n originalSelection: timeline.selection,\n },\n timeline.selection,\n );\n }\n\n function startHandle(boundary: DateBoundary, event: PointerEvent<HTMLDivElement>) {\n if (event.button !== 0) return;\n event.preventDefault();\n event.stopPropagation();\n beginPointerDrag(\n event,\n {\n type: 'handle',\n boundary,\n originalSelection: timeline.selection,\n },\n timeline.selection,\n );\n }\n\n function handlePointerMove(event: PointerEvent<HTMLDivElement>) {\n pointerDrag.handlePointerMove(event);\n }\n\n function handlePointerUp(event: PointerEvent<HTMLDivElement>) {\n pointerDrag.handlePointerUp(event);\n }\n\n function handlePointerCancel(event: PointerEvent<HTMLDivElement>) {\n pointerDrag.handlePointerCancel(event);\n }\n\n function handleLostPointerCapture(event: PointerEvent<HTMLDivElement>) {\n pointerDrag.handleLostPointerCapture(event);\n }\n\n return {\n interaction,\n startBrush,\n startPan,\n startHandle,\n handlePointerMove,\n handlePointerUp,\n handlePointerCancel,\n handleLostPointerCapture,\n };\n}\n","import { useEffect, useEffectEvent } from 'react';\nimport type { RefObject } from 'react';\nimport { clamp } from '../lib/date-range-timeline';\n\nconst MAX_WHEEL_DELTA = 80;\nconst WHEEL_ZOOM_SENSITIVITY = 0.003;\n\ninterface UseDateRangeWheelZoomInput {\n rootRef: RefObject<HTMLDivElement | null>;\n trackRef: RefObject<HTMLDivElement | null>;\n disabled: boolean;\n onZoom: (factor: number, anchor: number) => void;\n}\n\nexport function useDateRangeWheelZoom({ rootRef, trackRef, disabled, onZoom }: UseDateRangeWheelZoomInput) {\n const handleWheel = useEffectEvent((event: WheelEvent) => {\n if (!event.ctrlKey) return;\n // Bail before preventDefault when disabled so native browser zoom still works.\n if (disabled) return;\n event.preventDefault();\n\n const trackRect = trackRef.current?.getBoundingClientRect();\n const anchor =\n trackRect && trackRect.width > 0 ? clamp((event.clientX - trackRect.left) / trackRect.width, 0, 1) : 0.5;\n const wheelDelta = clamp(event.deltaY, -MAX_WHEEL_DELTA, MAX_WHEEL_DELTA);\n const factor = Math.exp(wheelDelta * WHEEL_ZOOM_SENSITIVITY);\n onZoom(factor, anchor);\n });\n\n useEffect(() => {\n const root = rootRef.current;\n if (!root) return;\n root.addEventListener('wheel', handleWheel, { passive: false });\n return () => root.removeEventListener('wheel', handleWheel);\n }, [rootRef]);\n}\n","import { buildTimelineTickOffsets, getTimelinePosition } from './date-range-timeline';\nimport type { TimelineIndexRange } from './date-range-timeline';\n\nconst MAX_GRID_INTERVALS = 24;\n\nexport interface DateRangeGridMarker {\n index: number;\n position: number;\n emphasis: 'major' | 'medium' | 'minor';\n}\n\nfunction addVisibleMarker(markerIndices: Set<number>, index: number, viewport: TimelineIndexRange) {\n if (index >= viewport.from && index <= viewport.to) {\n markerIndices.add(index);\n }\n}\n\nfunction getMarkerEmphasis(\n index: number,\n majorIndices: Set<number>,\n mediumIndices: Set<number>,\n): DateRangeGridMarker['emphasis'] {\n if (majorIndices.has(index)) return 'major';\n if (mediumIndices.has(index)) return 'medium';\n return 'minor';\n}\n\nexport function createDateRangeGridMarkers(\n viewport: TimelineIndexRange,\n selection: TimelineIndexRange,\n): DateRangeGridMarker[] {\n const viewportSpan = Math.max(0, viewport.to - viewport.from);\n if (viewportSpan === 0) {\n return [{ index: viewport.from, position: 50, emphasis: 'major' }];\n }\n\n const sampleStep = Math.max(1, Math.ceil(viewportSpan / MAX_GRID_INTERVALS));\n const markerIndices = new Set<number>();\n const majorIndices = new Set<number>();\n const mediumIndices = new Set<number>();\n const tickOffsets = buildTimelineTickOffsets(viewportSpan);\n\n for (let index = viewport.from; index <= viewport.to; index += sampleStep) {\n markerIndices.add(index);\n }\n\n for (let index = 0; index < tickOffsets.length; index += 1) {\n const tickOffset = tickOffsets[index];\n if (tickOffset === undefined) continue;\n\n const majorIndex = viewport.from + tickOffset;\n markerIndices.add(majorIndex);\n majorIndices.add(majorIndex);\n\n const nextTickOffset = tickOffsets[index + 1];\n if (nextTickOffset === undefined) continue;\n\n const mediumIndex = viewport.from + Math.round((tickOffset + nextTickOffset) / 2);\n markerIndices.add(mediumIndex);\n mediumIndices.add(mediumIndex);\n }\n\n addVisibleMarker(markerIndices, selection.from, viewport);\n addVisibleMarker(markerIndices, selection.to, viewport);\n\n return [...markerIndices]\n .sort((left, right) => left - right)\n .map(index => ({\n index,\n position: getTimelinePosition(index, viewport),\n emphasis: getMarkerEmphasis(index, majorIndices, mediumIndices),\n }));\n}\n","import { addDays } from 'date-fns';\nimport {\n buildTimelineTicks,\n formatDateRangeDuration,\n formatDateRangeValueText,\n getTimelinePosition,\n toDateRange,\n} from './date-range-timeline';\nimport type { TimelineState } from './date-range-timeline';\n\nexport function createDateRangeBoundaryModel(state: TimelineState) {\n const range = toDateRange(state);\n const fromPosition = getTimelinePosition(state.selection.from, state.viewport);\n const toPosition = getTimelinePosition(state.selection.to, state.viewport);\n\n return {\n positions: { from: fromPosition, to: toPosition },\n range,\n };\n}\n\nexport function createDateRangeTrackModel(state: TimelineState, maximumIndex: number) {\n const range = toDateRange(state);\n const fromPosition = getTimelinePosition(state.selection.from, state.viewport);\n const toPosition = getTimelinePosition(state.selection.to, state.viewport);\n const span = state.selection.to - state.selection.from;\n\n return {\n handles: {\n from: {\n position: fromPosition,\n value: state.selection.from,\n valueText: range.from,\n min: 0,\n max: state.selection.to,\n },\n to: {\n position: toPosition,\n value: state.selection.to,\n valueText: range.to,\n min: state.selection.from,\n max: maximumIndex,\n },\n },\n selection: {\n left: fromPosition,\n width: Math.max(0, toPosition - fromPosition),\n duration: formatDateRangeDuration(range),\n value: state.selection.from,\n valueText: formatDateRangeValueText(range),\n max: maximumIndex - span,\n },\n };\n}\n\nexport function createDateRangeAxisModel(state: TimelineState) {\n const visibleFrom = addDays(state.origin, state.viewport.from);\n const visibleTo = addDays(state.origin, state.viewport.to);\n return { ticks: buildTimelineTicks(visibleFrom, visibleTo) };\n}\n","import { useRef } from 'react';\nimport type { PointerEvent, RefObject } from 'react';\nimport { DateRangeHandle } from './DateRangeHandle';\nimport { DateRangeSelection } from './DateRangeSelection';\nimport { DateRangeTrackGrid } from './DateRangeTrackGrid';\nimport { useDateRangeKeyboardControls } from './hooks/useDateRangeKeyboardControls';\nimport { useDateRangePointerGestures } from './hooks/useDateRangePointerGestures';\nimport { useDateRangeWheelZoom } from './hooks/useDateRangeWheelZoom';\nimport type { TimelineIndexRange, TimelineState } from './lib/date-range-timeline';\nimport { createDateRangeGridMarkers } from './lib/date-range-timeline-grid';\nimport { createDateRangeTrackModel } from './lib/date-range-timeline-view-model';\nimport { cn } from '@/lib/utils';\n\ninterface DateRangeTrackProps {\n wheelTargetRef: RefObject<HTMLDivElement | null>;\n timeline: TimelineState;\n maximumIndex: number;\n onSelectionPreview: (selection: TimelineIndexRange) => void;\n onSelectionCommit: (selection: TimelineIndexRange) => void;\n onSelectionCancel: () => void;\n onZoom: (factor: number, anchor: number) => void;\n}\n\nexport function DateRangeTrack({\n wheelTargetRef,\n timeline,\n maximumIndex,\n onSelectionPreview,\n onSelectionCommit,\n onSelectionCancel,\n onZoom,\n}: DateRangeTrackProps) {\n const trackRef = useRef<HTMLDivElement>(null);\n const pointer = useDateRangePointerGestures({\n trackRef,\n timeline,\n onSelectionPreview,\n onSelectionCommit,\n onSelectionCancel,\n });\n const { handleSelectionKeyDown, handleFromKeyDown, handleToKeyDown } = useDateRangeKeyboardControls({\n selection: timeline.selection,\n maximumIndex,\n onCommit: onSelectionCommit,\n });\n\n useDateRangeWheelZoom({\n rootRef: wheelTargetRef,\n trackRef,\n disabled: pointer.interaction !== undefined,\n onZoom,\n });\n\n const model = createDateRangeTrackModel(timeline, maximumIndex);\n const gridMarkers = createDateRangeGridMarkers(timeline.viewport, timeline.selection);\n\n function startFromHandle(event: PointerEvent<HTMLDivElement>) {\n pointer.startHandle('from', event);\n }\n\n function startToHandle(event: PointerEvent<HTMLDivElement>) {\n pointer.startHandle('to', event);\n }\n\n return (\n <div\n ref={trackRef}\n role=\"group\"\n aria-label=\"Date range selection area\"\n className={cn(\n 'relative h-12 touch-none rounded-lg bg-muted',\n pointer.interaction?.type === 'selecting' ? 'cursor-col-resize' : 'cursor-crosshair',\n )}\n onPointerDown={pointer.startBrush}\n onPointerMove={pointer.handlePointerMove}\n onPointerUp={pointer.handlePointerUp}\n onPointerCancel={pointer.handlePointerCancel}\n onLostPointerCapture={pointer.handleLostPointerCapture}\n >\n <DateRangeTrackGrid markers={gridMarkers} />\n <DateRangeSelection\n left={model.selection.left}\n width={model.selection.width}\n duration={model.selection.duration}\n active={pointer.interaction !== undefined}\n value={model.selection.value}\n valueText={model.selection.valueText}\n max={model.selection.max}\n onPointerDown={pointer.startPan}\n onKeyDown={handleSelectionKeyDown}\n />\n <DateRangeHandle\n boundary=\"from\"\n position={model.handles.from.position}\n value={model.handles.from.value}\n valueText={model.handles.from.valueText}\n min={model.handles.from.min}\n max={model.handles.from.max}\n active={pointer.interaction?.type === 'resizing' && pointer.interaction.boundary === 'from'}\n onPointerDown={startFromHandle}\n onKeyDown={handleFromKeyDown}\n />\n <DateRangeHandle\n boundary=\"to\"\n position={model.handles.to.position}\n value={model.handles.to.value}\n valueText={model.handles.to.valueText}\n min={model.handles.to.min}\n max={model.handles.to.max}\n active={pointer.interaction?.type === 'resizing' && pointer.interaction.boundary === 'to'}\n onPointerDown={startToHandle}\n onKeyDown={handleToKeyDown}\n />\n </div>\n );\n}\n","import { addDays, differenceInCalendarDays } from 'date-fns';\nimport { useState } from 'react';\nimport {\n clamp,\n createTimelineState,\n parseDate,\n revealTimelineSelection,\n toDateRange,\n zoomTimelineViewport,\n} from '../lib/date-range-timeline';\nimport type { DateBoundary, TimelineIndexRange } from '../lib/date-range-timeline';\nimport type { DateRangeValue } from '../types';\n\ninterface UseDateRangeTimelineStateInput {\n value: DateRangeValue;\n min: string;\n max: string;\n onCommit: (value: DateRangeValue) => void;\n}\n\nfunction resolveTimelineBounds(min: string, max: string) {\n const fallbackMax = new Date();\n const maxDate = parseDate(max) ?? fallbackMax;\n const requestedMin = parseDate(min) ?? addDays(maxDate, -365);\n const minDate = requestedMin > maxDate ? maxDate : requestedMin;\n return { minDate, maxDate };\n}\n\nexport function useDateRangeTimelineState({ value, min, max, onCommit }: UseDateRangeTimelineStateInput) {\n const { minDate, maxDate } = resolveTimelineBounds(min, max);\n const committedTimeline = createTimelineState(value, minDate, maxDate);\n const maximumIndex = Math.max(0, differenceInCalendarDays(maxDate, minDate));\n const [viewport, setViewport] = useState(() => committedTimeline.viewport);\n const [draftSelection, setDraftSelection] = useState<TimelineIndexRange>();\n const selection = draftSelection ?? committedTimeline.selection;\n const state = {\n ...committedTimeline,\n viewport: revealTimelineSelection(viewport, selection, maximumIndex),\n selection,\n };\n\n function previewSelection(nextSelection: TimelineIndexRange) {\n setDraftSelection(nextSelection);\n }\n\n function cancelSelection() {\n setDraftSelection(undefined);\n }\n\n function commitSelection(nextSelection: TimelineIndexRange) {\n setDraftSelection(undefined);\n setViewport(current => revealTimelineSelection(current, nextSelection, maximumIndex));\n onCommit(toDateRange({ ...state, selection: nextSelection }));\n }\n\n function zoom(factor: number, anchor: number) {\n setViewport(current => {\n const visibleViewport = revealTimelineSelection(current, state.selection, maximumIndex);\n return zoomTimelineViewport({ ...state, viewport: visibleViewport }, maximumIndex, factor, anchor).viewport;\n });\n }\n\n function selectDate(boundary: DateBoundary, nextValue: string) {\n const date = parseDate(nextValue);\n if (!date) return;\n\n const dateIndex = clamp(differenceInCalendarDays(date, state.origin), 0, maximumIndex);\n const nextSelection =\n boundary === 'from'\n ? {\n from: clamp(dateIndex, 0, state.selection.to),\n to: state.selection.to,\n }\n : {\n from: state.selection.from,\n to: clamp(dateIndex, state.selection.from, maximumIndex),\n };\n commitSelection(nextSelection);\n }\n\n return {\n state,\n maximumIndex,\n previewSelection,\n cancelSelection,\n commitSelection,\n zoom,\n selectDate,\n };\n}\n","import { useRef } from 'react';\nimport { DateRangeBoundaryPickers } from './DateRangeBoundaryPickers';\nimport { DateRangeTicks } from './DateRangeTicks';\nimport { DateRangeTrack } from './DateRangeTrack';\nimport { useDateRangeTimelineState } from './hooks/useDateRangeTimelineState';\nimport { createDateRangeAxisModel, createDateRangeBoundaryModel } from './lib/date-range-timeline-view-model';\nimport type { DateRangeValue } from './types';\n\ninterface DateRangeTimelineProps {\n value: DateRangeValue;\n min: string;\n max: string;\n onCommit: (value: DateRangeValue) => void;\n}\n\nexport function DateRangeTimeline({ value, min, max, onCommit }: DateRangeTimelineProps) {\n const rootRef = useRef<HTMLDivElement>(null);\n const timeline = useDateRangeTimelineState({\n value,\n min,\n max,\n onCommit,\n });\n const boundaryModel = createDateRangeBoundaryModel(timeline.state);\n const axisModel = createDateRangeAxisModel(timeline.state);\n\n return (\n <div\n ref={rootRef}\n role=\"group\"\n aria-label=\"Date range timeline\"\n // Clip keeps stray axis labels from causing horizontal scroll; the margin lets the edge\n // handles (and their focus ring) render fully instead of being sliced in half at min/max.\n className=\"w-full overflow-x-clip select-none [overflow-clip-margin:0.75rem]\"\n >\n <DateRangeBoundaryPickers\n positions={boundaryModel.positions}\n value={boundaryModel.range}\n min={min}\n max={max}\n onSelect={timeline.selectDate}\n />\n\n <DateRangeTrack\n wheelTargetRef={rootRef}\n timeline={timeline.state}\n maximumIndex={timeline.maximumIndex}\n onSelectionPreview={timeline.previewSelection}\n onSelectionCommit={timeline.commitSelection}\n onSelectionCancel={timeline.cancelSelection}\n onZoom={timeline.zoom}\n />\n\n <DateRangeTicks ticks={axisModel.ticks} min={min} max={max} />\n </div>\n );\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"DateRangeTimeline.cjs.js","names":["parseISO","isValid","format","addDays","differenceInCalendarDays","useState","format","Popover","PopoverTrigger","Button","CalendarDaysIcon","Txt","PopoverContent","DatePicker","useState","useRef","format","Txt","format","cn","cn","focusRing","Txt","cn","useRef","useState","useEffectEvent","addDays","useRef","cn","addDays","differenceInCalendarDays","useState","useRef"],"sources":["../../src/ds/components/DateRangeTimeline/lib/date-range-timeline.ts","../../src/ds/components/DateRangeTimeline/DateRangeBoundaryPicker.tsx","../../src/ds/components/DateRangeTimeline/lib/date-range-boundary-layout.ts","../../src/ds/components/DateRangeTimeline/hooks/useDateRangeBoundaryLayout.ts","../../src/ds/components/DateRangeTimeline/DateRangeBoundaryPickers.tsx","../../src/ds/components/DateRangeTimeline/DateRangeTicks.tsx","../../src/ds/components/DateRangeTimeline/DateRangeHandle.tsx","../../src/ds/components/DateRangeTimeline/DateRangeSelection.tsx","../../src/ds/components/DateRangeTimeline/DateRangeTrackGrid.tsx","../../src/ds/components/DateRangeTimeline/lib/date-range-timeline-interactions.ts","../../src/ds/components/DateRangeTimeline/hooks/useDateRangeKeyboardControls.ts","../../src/ds/components/DateRangeTimeline/hooks/use-pointer-drag.ts","../../src/ds/components/DateRangeTimeline/hooks/useDateRangePointerGestures.ts","../../src/ds/components/DateRangeTimeline/hooks/useDateRangeWheelZoom.ts","../../src/ds/components/DateRangeTimeline/lib/date-range-timeline-grid.ts","../../src/ds/components/DateRangeTimeline/lib/date-range-timeline-view-model.ts","../../src/ds/components/DateRangeTimeline/DateRangeTrack.tsx","../../src/ds/components/DateRangeTimeline/hooks/useDateRangeTimelineState.ts","../../src/ds/components/DateRangeTimeline/DateRangeTimeline.tsx"],"sourcesContent":["import { addDays, differenceInCalendarDays, format, isValid, parseISO } from 'date-fns';\nimport type { DateRangeValue, DateRangeBounds } from '../types';\n\nconst API_DATE_FORMAT = 'yyyy-MM-dd';\n\nexport type DateBoundary = 'from' | 'to';\n\nexport interface TimelineIndexRange {\n from: number;\n to: number;\n}\n\nexport interface TimelineState {\n origin: Date;\n viewport: TimelineIndexRange;\n selection: TimelineIndexRange;\n}\n\nexport interface TimelineTick {\n date: string;\n label: string;\n position: number;\n}\n\nexport function clamp(value: number, min: number, max: number) {\n return Math.min(max, Math.max(min, value));\n}\n\nexport function parseDate(value: string) {\n const date = parseISO(value);\n if (!/^\\d{4}-\\d{2}-\\d{2}$/.test(value) || !isValid(date)) return undefined;\n return format(date, API_DATE_FORMAT) === value ? date : undefined;\n}\n\nexport function toDateRange(state: TimelineState): DateRangeValue {\n return {\n from: format(addDays(state.origin, state.selection.from), API_DATE_FORMAT),\n to: format(addDays(state.origin, state.selection.to), API_DATE_FORMAT),\n };\n}\n\nexport function createTimelineState(value: DateRangeValue, min: Date, max: Date): TimelineState {\n const selectedFrom = parseDate(value.from) ?? min;\n const selectedTo = parseDate(value.to) ?? max;\n const absoluteSpan = Math.max(0, differenceInCalendarDays(max, min));\n if (absoluteSpan === 0) {\n return {\n origin: min,\n viewport: { from: 0, to: 0 },\n selection: { from: 0, to: 0 },\n };\n }\n\n const selectedFromIndex = clamp(differenceInCalendarDays(selectedFrom, min), 0, absoluteSpan);\n const selectedToIndex = clamp(differenceInCalendarDays(selectedTo, min), 0, absoluteSpan);\n\n return {\n origin: min,\n viewport: { from: 0, to: absoluteSpan },\n selection: {\n from: Math.min(selectedFromIndex, selectedToIndex),\n to: Math.max(selectedFromIndex, selectedToIndex),\n },\n };\n}\n\nexport function zoomTimelineViewport(\n state: TimelineState,\n maximumIndex: number,\n factor: number,\n anchor: number,\n): TimelineState {\n if (!Number.isFinite(factor) || factor <= 0 || factor === 1) return state;\n\n const boundedMaximum = Math.max(0, maximumIndex);\n const viewportSpan = state.viewport.to - state.viewport.from;\n const selectionSpan = state.selection.to - state.selection.from;\n const minimumViewportSpan = Math.max(selectionSpan, Math.min(1, boundedMaximum));\n const scaledSpan = clamp(Math.round(viewportSpan * factor), minimumViewportSpan, boundedMaximum);\n const nextSpan =\n scaledSpan === viewportSpan\n ? clamp(viewportSpan + (factor > 1 ? 1 : -1), minimumViewportSpan, boundedMaximum)\n : scaledSpan;\n if (nextSpan === viewportSpan) return state;\n\n const normalizedAnchor = Number.isFinite(anchor) ? clamp(anchor, 0, 1) : 0.5;\n const anchorIndex = state.viewport.from + viewportSpan * normalizedAnchor;\n const desiredFrom = Math.round(anchorIndex - nextSpan * normalizedAnchor);\n const earliestFrom = Math.max(0, state.selection.to - nextSpan);\n const latestFrom = Math.min(state.selection.from, boundedMaximum - nextSpan);\n const from = clamp(desiredFrom, earliestFrom, latestFrom);\n\n return {\n ...state,\n viewport: { from, to: from + nextSpan },\n };\n}\n\nexport function revealTimelineSelection(\n viewport: TimelineIndexRange,\n selection: TimelineIndexRange,\n maximumIndex: number,\n): TimelineIndexRange {\n const boundedMaximum = Math.max(0, maximumIndex);\n const selectionFrom = clamp(Math.min(selection.from, selection.to), 0, boundedMaximum);\n const selectionTo = clamp(Math.max(selection.from, selection.to), selectionFrom, boundedMaximum);\n const viewportSpan = clamp(viewport.to - viewport.from, 0, boundedMaximum);\n const viewportFrom = clamp(viewport.from, 0, boundedMaximum - viewportSpan);\n const normalizedViewport = { from: viewportFrom, to: viewportFrom + viewportSpan };\n const selectionSpan = selectionTo - selectionFrom;\n const nextSpan = Math.max(viewportSpan, selectionSpan);\n\n if (selectionFrom >= normalizedViewport.from && selectionTo <= normalizedViewport.to) {\n if (normalizedViewport.from === viewport.from && normalizedViewport.to === viewport.to) {\n return viewport;\n }\n return normalizedViewport;\n }\n\n const desiredFrom = selectionFrom < normalizedViewport.from ? selectionFrom : selectionTo - nextSpan;\n const from = clamp(desiredFrom, 0, boundedMaximum - nextSpan);\n return { from, to: from + nextSpan };\n}\n\nexport function getTimelinePosition(index: number, viewport: TimelineIndexRange) {\n const viewportSpan = viewport.to - viewport.from;\n if (viewportSpan === 0) return 50;\n return ((index - viewport.from) / viewportSpan) * 100;\n}\n\nexport function buildTimelineTickOffsets(span: number) {\n const boundedSpan = Math.max(0, Math.floor(span));\n const tickCount = boundedSpan === 0 ? 1 : Math.min(5, boundedSpan + 1);\n\n return Array.from({ length: tickCount }, (_, index) =>\n Math.round((boundedSpan * index) / Math.max(1, tickCount - 1)),\n );\n}\n\nexport function buildTimelineTicks(domainFrom: Date, domainTo: Date): TimelineTick[] {\n const span = Math.max(0, differenceInCalendarDays(domainTo, domainFrom));\n const crossesYears = domainFrom.getFullYear() !== domainTo.getFullYear();\n\n return buildTimelineTickOffsets(span).map(dayOffset => {\n const date = addDays(domainFrom, dayOffset);\n const labelFormat = span > 365 || crossesYears ? 'MMM yyyy' : 'MMM d';\n\n return {\n label: format(date, labelFormat),\n date: format(date, API_DATE_FORMAT),\n position: span === 0 ? 50 : (dayOffset / span) * 100,\n };\n });\n}\n\nexport function clampDateRangeToBounds(value: DateRangeValue, bounds: DateRangeBounds): DateRangeValue {\n const min = parseDate(bounds.min);\n const max = parseDate(bounds.max);\n if (!min || !max) return value;\n\n const from = parseDate(value.from) ?? min;\n const to = parseDate(value.to) ?? max;\n const clampedFrom = new Date(clamp(from.getTime(), min.getTime(), max.getTime()));\n const clampedTo = new Date(clamp(to.getTime(), clampedFrom.getTime(), max.getTime()));\n\n return {\n from: format(clampedFrom, API_DATE_FORMAT),\n to: format(clampedTo, API_DATE_FORMAT),\n };\n}\n\nexport function getDateRangeBounds(createdAt: string, today: string): DateRangeBounds {\n const max = parseDate(today) ?? new Date();\n const created = parseDate(createdAt) ?? max;\n const min = created > max ? max : created;\n return {\n min: format(min, API_DATE_FORMAT),\n max: format(max, API_DATE_FORMAT),\n };\n}\n\nexport function formatDateRangeDuration(value: DateRangeValue) {\n const from = parseDate(value.from);\n const to = parseDate(value.to);\n if (!from || !to) return '';\n const days = Math.max(1, differenceInCalendarDays(to, from) + 1);\n return days === 1 ? '1 day' : `${days} days`;\n}\n\nexport function formatDateRangeValueText(value: DateRangeValue) {\n const from = parseDate(value.from);\n const to = parseDate(value.to);\n if (!from || !to) return `${value.from} through ${value.to}`;\n return `${format(from, 'MMMM d, yyyy')} through ${format(to, 'MMMM d, yyyy')}`;\n}\n","import { format } from 'date-fns';\nimport { CalendarDaysIcon } from 'lucide-react';\nimport { useState } from 'react';\nimport { parseDate } from './lib/date-range-timeline';\nimport type { DateBoundary } from './lib/date-range-timeline';\nimport { Button } from '@/ds/components/Button/Button';\nimport { DatePicker } from '@/ds/components/DateTimePicker';\nimport { Popover, PopoverTrigger, PopoverContent } from '@/ds/components/Popover/popover';\nimport { Txt } from '@/ds/components/Txt/Txt';\n\ninterface DateRangeBoundaryPickerProps {\n boundary: DateBoundary;\n value: string;\n min: string;\n max: string;\n onSelect: (boundary: DateBoundary, value: string) => void;\n}\n\nexport function DateRangeBoundaryPicker({ boundary, value, min, max, onSelect }: DateRangeBoundaryPickerProps) {\n const [open, setOpen] = useState(false);\n const isFrom = boundary === 'from';\n const boundaryLabel = isFrom ? 'start date' : 'end date';\n const selectedDate = parseDate(value);\n const firstDate = parseDate(min) ?? selectedDate;\n const lastDate = parseDate(max) ?? selectedDate;\n const formattedDate = selectedDate ? format(selectedDate, 'MMM d, yyyy') : value;\n\n function handleSelect(date?: Date) {\n if (!date) return;\n onSelect(boundary, format(date, 'yyyy-MM-dd'));\n setOpen(false);\n }\n\n return (\n <Popover open={open} onOpenChange={setOpen}>\n <PopoverTrigger\n render={\n <Button\n aria-label={`Choose ${boundaryLabel}, ${formattedDate}`}\n aria-expanded={open}\n size=\"sm\"\n className=\"h-11 w-full min-w-0 justify-start overflow-hidden px-3 sm:h-8\"\n icon={<CalendarDaysIcon aria-hidden=\"true\" />}\n >\n <Txt as=\"span\" variant=\"caption\" tone=\"ink\" className=\"truncate tabular-nums\">\n {formattedDate}\n </Txt>\n </Button>\n }\n />\n <PopoverContent align={isFrom ? 'start' : 'end'} className=\"w-auto p-0\" sideOffset={6}>\n <DatePicker\n mode=\"single\"\n selected={selectedDate}\n defaultMonth={selectedDate}\n startMonth={firstDate}\n endMonth={lastDate}\n disabled={firstDate && lastDate ? { before: firstDate, after: lastDate } : undefined}\n onSelect={handleSelect}\n />\n </PopoverContent>\n </Popover>\n );\n}\n","import { clamp } from './date-range-timeline';\n\nconst PREFERRED_PICKER_WIDTH = 160;\nconst PREFERRED_PICKER_GAP = 8;\n\ninterface BoundaryPositions {\n from: number;\n to: number;\n}\n\ninterface BoundaryPickerRect {\n left: number;\n width: number;\n}\n\nexport interface DateRangeBoundaryLayout {\n from: BoundaryPickerRect;\n to: BoundaryPickerRect;\n gap: number;\n}\n\nexport function resolveDateRangeBoundaryLayout(\n requestedWidth: number,\n positions: BoundaryPositions,\n): DateRangeBoundaryLayout {\n const width = Math.max(0, requestedWidth);\n const gap = Math.min(PREFERRED_PICKER_GAP, width);\n const pickerWidth = Math.min(PREFERRED_PICKER_WIDTH, Math.max(0, (width - gap) / 2));\n const maximumLeft = Math.max(0, width - pickerWidth);\n const fromAnchor = (clamp(positions.from, 0, 100) / 100) * width;\n const toAnchor = (clamp(positions.to, 0, 100) / 100) * width;\n const preferredFromLeft = clamp(fromAnchor - pickerWidth - gap / 2, 0, maximumLeft);\n const preferredToLeft = clamp(toAnchor + gap / 2, 0, maximumLeft);\n const overlap = preferredFromLeft + pickerWidth + gap - preferredToLeft;\n\n if (overlap <= 0) {\n return {\n from: { left: preferredFromLeft, width: pickerWidth },\n to: { left: preferredToLeft, width: pickerWidth },\n gap,\n };\n }\n\n const pairWidth = pickerWidth * 2 + gap;\n const pairLeft = clamp(preferredFromLeft - overlap / 2, 0, Math.max(0, width - pairWidth));\n\n return {\n from: { left: pairLeft, width: pickerWidth },\n to: { left: pairLeft + pickerWidth + gap, width: pickerWidth },\n gap,\n };\n}\n","import { useLayoutEffect, useState } from 'react';\nimport type { RefObject } from 'react';\nimport { resolveDateRangeBoundaryLayout } from '../lib/date-range-boundary-layout';\nimport type { DateRangeBoundaryLayout } from '../lib/date-range-boundary-layout';\n\ninterface BoundaryPositions {\n from: number;\n to: number;\n}\n\nexport function useDateRangeBoundaryLayout(\n containerRef: RefObject<HTMLDivElement | null>,\n positions: BoundaryPositions,\n): DateRangeBoundaryLayout | undefined {\n const [containerWidth, setContainerWidth] = useState<number>();\n\n useLayoutEffect(() => {\n const container = containerRef.current;\n if (!container) return;\n\n function updateWidth(width: number) {\n // Accept 0 (collapsed container) so stale positions don't linger; reject\n // only invalid measurements. resolveDateRangeBoundaryLayout handles 0.\n if (!Number.isFinite(width) || width < 0) return;\n setContainerWidth(current => (current === width ? current : width));\n }\n\n updateWidth(container.getBoundingClientRect().width);\n if (typeof ResizeObserver === 'undefined') return;\n\n const observer = new ResizeObserver(entries => {\n const entry = entries.find(({ target }) => target === container) ?? entries[0];\n const width = entry?.contentRect.width ?? container.getBoundingClientRect().width;\n updateWidth(width);\n });\n observer.observe(container);\n return () => observer.disconnect();\n }, [containerRef]);\n\n return containerWidth === undefined ? undefined : resolveDateRangeBoundaryLayout(containerWidth, positions);\n}\n","import { useRef } from 'react';\nimport { DateRangeBoundaryPicker } from './DateRangeBoundaryPicker';\nimport { useDateRangeBoundaryLayout } from './hooks/useDateRangeBoundaryLayout';\nimport type { DateBoundary } from './lib/date-range-timeline';\nimport type { DateRangeValue } from './types';\n\ninterface DateRangeBoundaryPickersProps {\n positions: { from: number; to: number };\n value: DateRangeValue;\n min: string;\n max: string;\n onSelect: (boundary: DateBoundary, value: string) => void;\n}\n\nconst FALLBACK_PICKER_WIDTH = 'clamp(0px, calc(50% - 0.25rem), 10rem)';\n\nexport function DateRangeBoundaryPickers({ positions, value, min, max, onSelect }: DateRangeBoundaryPickersProps) {\n const containerRef = useRef<HTMLDivElement>(null);\n const layout = useDateRangeBoundaryLayout(containerRef, positions);\n\n return (\n <div ref={containerRef} className=\"relative h-16 sm:h-12\">\n <div\n className=\"absolute top-0 min-w-0\"\n style={{\n left: layout?.from.left ?? 0,\n width: layout?.from.width ?? FALLBACK_PICKER_WIDTH,\n }}\n >\n <DateRangeBoundaryPicker boundary=\"from\" value={value.from} min={min} max={value.to} onSelect={onSelect} />\n </div>\n\n <div\n className=\"absolute top-0 min-w-0\"\n style={{\n left: layout?.to.left ?? 'max(calc(50% + 0.25rem), calc(100% - 10rem))',\n width: layout?.to.width ?? FALLBACK_PICKER_WIDTH,\n }}\n >\n <DateRangeBoundaryPicker boundary=\"to\" value={value.to} min={value.from} max={max} onSelect={onSelect} />\n </div>\n\n <div\n className=\"absolute top-11 h-4 w-px -translate-x-1/2 bg-border-strong transition-[left] duration-150 ease-out motion-reduce:transition-none sm:top-8\"\n style={{ left: `${positions.from}%` }}\n aria-hidden=\"true\"\n />\n <div\n className=\"absolute top-11 h-4 w-px -translate-x-1/2 bg-border-strong transition-[left] duration-150 ease-out motion-reduce:transition-none sm:top-8\"\n style={{ left: `${positions.to}%` }}\n aria-hidden=\"true\"\n />\n </div>\n );\n}\n","import { format } from 'date-fns';\nimport { parseDate } from './lib/date-range-timeline';\nimport type { TimelineTick } from './lib/date-range-timeline';\nimport { Txt } from '@/ds/components/Txt/Txt';\n\ninterface DateRangeTicksProps {\n ticks: TimelineTick[];\n min: string;\n max: string;\n}\n\nfunction formatBoundaryDate(value: string) {\n const date = parseDate(value);\n return date ? format(date, 'MMM d, yyyy') : value;\n}\n\nexport function DateRangeTicks({ ticks, min, max }: DateRangeTicksProps) {\n const firstTick = ticks[0];\n const lastTick = ticks.at(-1);\n if (!firstTick || !lastTick) return null;\n const timelineLabel = `Visible from ${formatBoundaryDate(firstTick.date)} through ${formatBoundaryDate(lastTick.date)}. Available from ${formatBoundaryDate(min)} through ${formatBoundaryDate(max)}`;\n\n if (firstTick.date === lastTick.date) {\n const date = formatBoundaryDate(firstTick.date);\n // Only claim \"Created today\" when the whole available domain is a single\n // day; a zoomed viewport can hold one tick for any date, so stay neutral.\n const singleLabel =\n firstTick.date === min && firstTick.date === max\n ? `Created today (${date})`\n : firstTick.date === min\n ? `Created ${date}`\n : firstTick.date === max\n ? `Today (${date})`\n : date;\n return (\n <div role=\"group\" aria-label={timelineLabel} className=\"flex h-10 items-start justify-center pt-2\">\n {/* TODO(ds): Txt needs a muted timeline-axis variant. */}\n <Txt as=\"span\" variant=\"caption\" tone=\"muted\">\n {singleLabel}\n </Txt>\n </div>\n );\n }\n\n const startLabel = firstTick.date === min ? `Created ${formatBoundaryDate(min)}` : firstTick.label;\n const endLabel = lastTick.date === max ? `Today (${formatBoundaryDate(max)})` : lastTick.label;\n const middleTicks = ticks.slice(1, -1);\n\n return (\n <div role=\"group\" className=\"relative h-10\" aria-label={timelineLabel}>\n <div className=\"absolute top-0 left-0 flex flex-col items-start\">\n <span className=\"mb-1 h-1.5 w-px bg-border-strong\" aria-hidden=\"true\" />\n {/* TODO(ds): Txt needs a muted timeline-axis variant. */}\n <Txt as=\"span\" variant=\"caption\" tone=\"muted\" className=\"whitespace-nowrap\">\n {startLabel}\n </Txt>\n </div>\n\n {middleTicks.map(tick => (\n <div\n key={tick.date}\n className=\"absolute top-0 hidden -translate-x-1/2 flex-col items-center sm:flex\"\n style={{ left: `${tick.position}%` }}\n aria-hidden=\"true\"\n >\n <span className=\"mb-1 h-1.5 w-px bg-border-strong\" />\n {/* TODO(ds): Txt needs a muted timeline-axis variant. */}\n <Txt as=\"span\" variant=\"meta\" tone=\"muted\" className=\"whitespace-nowrap\">\n {tick.label}\n </Txt>\n </div>\n ))}\n\n <div className=\"absolute top-0 right-0 flex flex-col items-end\">\n <span className=\"mb-1 h-1.5 w-px bg-border-strong\" aria-hidden=\"true\" />\n {/* TODO(ds): Txt needs a muted timeline-axis variant. */}\n <Txt as=\"span\" variant=\"caption\" tone=\"muted\" className=\"whitespace-nowrap\">\n {endLabel}\n </Txt>\n </div>\n </div>\n );\n}\n","import { format } from 'date-fns';\nimport type { KeyboardEventHandler, PointerEventHandler } from 'react';\nimport { parseDate } from './lib/date-range-timeline';\nimport type { DateBoundary } from './lib/date-range-timeline';\nimport { cn } from '@/lib/utils';\n\ninterface DateRangeHandleProps {\n boundary: DateBoundary;\n position: number;\n value: number;\n valueText: string;\n min: number;\n max: number;\n active: boolean;\n onPointerDown: PointerEventHandler<HTMLDivElement>;\n onKeyDown: KeyboardEventHandler<HTMLDivElement>;\n}\n\nexport function DateRangeHandle({\n boundary,\n position,\n value,\n valueText,\n min,\n max,\n active,\n onPointerDown,\n onKeyDown,\n}: DateRangeHandleProps) {\n const label = boundary === 'from' ? 'Start date handle' : 'End date handle';\n const date = parseDate(valueText);\n const accessibleValue = date ? format(date, 'MMMM d, yyyy') : valueText;\n\n return (\n <div\n role=\"slider\"\n tabIndex={0}\n aria-label={label}\n aria-orientation=\"horizontal\"\n aria-valuemin={min}\n aria-valuemax={max}\n aria-valuenow={value}\n aria-valuetext={accessibleValue}\n className=\"group absolute inset-y-0 z-30 w-11 -translate-x-1/2 cursor-ew-resize touch-none outline-hidden\"\n style={{ left: `${position}%` }}\n onPointerDown={onPointerDown}\n onKeyDown={onKeyDown}\n >\n <span\n className={cn(\n 'absolute top-1/2 left-1/2 h-7 w-1.5 -translate-1/2 rounded-xs bg-card ring-1 transition-[width,box-shadow] duration-150 group-hover:w-2 group-focus-visible:w-2 group-focus-visible:ring-1 group-focus-visible:ring-border-focus motion-reduce:transition-none',\n active ? 'w-2 ring-2 ring-border-focus' : 'ring-border-strong',\n )}\n aria-hidden=\"true\"\n />\n </div>\n );\n}\n","import type { KeyboardEventHandler, PointerEventHandler } from 'react';\nimport { Txt } from '@/ds/components/Txt/Txt';\nimport { focusRing } from '@/ds/primitives/transitions';\nimport { cn } from '@/lib/utils';\n\ninterface DateRangeSelectionProps {\n left: number;\n width: number;\n duration: string;\n active: boolean;\n value: number;\n valueText: string;\n max: number;\n onPointerDown: PointerEventHandler<HTMLDivElement>;\n onKeyDown: KeyboardEventHandler<HTMLDivElement>;\n}\n\nexport function DateRangeSelection({\n left,\n width,\n duration,\n active,\n value,\n valueText,\n max,\n onPointerDown,\n onKeyDown,\n}: DateRangeSelectionProps) {\n const visibleWidth = Math.max(width, 0.6);\n const visibleLeft = Math.min(left, 100 - visibleWidth);\n const showDuration = width >= 12;\n return (\n <div\n role=\"slider\"\n tabIndex={0}\n aria-label=\"Move selected date range\"\n aria-orientation=\"horizontal\"\n aria-valuemin={0}\n aria-valuemax={max}\n aria-valuenow={value}\n aria-valuetext={valueText}\n className={cn(\n 'absolute inset-y-1 z-10 flex cursor-grab touch-none items-center justify-center overflow-hidden rounded-md bg-fill text-foreground select-none active:cursor-grabbing',\n focusRing,\n active\n ? 'transition-none'\n : 'transition-[left,width,background-color] duration-150 ease-out motion-reduce:transition-none',\n )}\n style={{ left: `${visibleLeft}%`, width: `${visibleWidth}%` }}\n onPointerDown={onPointerDown}\n onKeyDown={onKeyDown}\n >\n {showDuration ? (\n // TODO(ds): Txt needs a compact data-label variant.\n <Txt as=\"span\" variant=\"caption\" tone=\"ink\" font=\"mono\" className=\"tabular-nums\">\n {duration}\n </Txt>\n ) : null}\n </div>\n );\n}\n","import type { DateRangeGridMarker } from './lib/date-range-timeline-grid';\nimport { cn } from '@/lib/utils';\n\ninterface DateRangeTrackGridProps {\n markers: DateRangeGridMarker[];\n}\n\nfunction getMarkerHeight(emphasis: DateRangeGridMarker['emphasis']) {\n if (emphasis === 'major') return 'h-5';\n if (emphasis === 'medium') return 'h-3';\n return 'h-1.5';\n}\n\nexport function DateRangeTrackGrid({ markers }: DateRangeTrackGridProps) {\n // Skip markers sitting exactly on the edges — the track boundary already reads as a line there.\n const interiorMarkers = markers.filter(marker => marker.position > 0 && marker.position < 100);\n\n return (\n <div className=\"pointer-events-none absolute inset-0\" aria-hidden=\"true\">\n {interiorMarkers.map(marker => (\n <span\n key={marker.index}\n className={cn(\n 'absolute top-1/2 w-px -translate-1/2 bg-muted-foreground/15',\n getMarkerHeight(marker.emphasis),\n )}\n style={{ left: `${marker.position}%` }}\n />\n ))}\n </div>\n );\n}\n","import { clamp } from './date-range-timeline';\nimport type { DateBoundary, TimelineIndexRange } from './date-range-timeline';\n\ninterface TimelineTrackGeometry {\n left: number;\n width: number;\n}\n\nexport type TimelinePointerGesture =\n | { type: 'brush'; startIndex: number }\n | { type: 'pan'; startIndex: number; originalSelection: TimelineIndexRange }\n | { type: 'handle'; boundary: DateBoundary; originalSelection: TimelineIndexRange };\n\nexport type TimelineInteraction =\n | { type: 'selecting' }\n | { type: 'moving' }\n | { type: 'resizing'; boundary: DateBoundary };\n\nconst KEYBOARD_LARGE_STEP_DAYS = 7;\n\nfunction getKeyboardDelta(key: string) {\n if (key === 'ArrowLeft' || key === 'ArrowDown') return -1;\n if (key === 'ArrowRight' || key === 'ArrowUp') return 1;\n if (key === 'PageDown') return -KEYBOARD_LARGE_STEP_DAYS;\n if (key === 'PageUp') return KEYBOARD_LARGE_STEP_DAYS;\n return undefined;\n}\n\nexport function getTimelineInteraction(gesture: TimelinePointerGesture): TimelineInteraction {\n if (gesture.type === 'brush') return { type: 'selecting' };\n if (gesture.type === 'pan') return { type: 'moving' };\n return { type: 'resizing', boundary: gesture.boundary };\n}\n\nexport function getTimelineIndexAtClientX(\n clientX: number,\n track: TimelineTrackGeometry | undefined,\n viewport: TimelineIndexRange,\n) {\n const viewportSpan = viewport.to - viewport.from;\n if (!track || track.width <= 0 || viewportSpan <= 0) return viewport.from;\n\n const position = clamp((clientX - track.left) / track.width, 0, 1);\n return viewport.from + Math.round(position * viewportSpan);\n}\n\nexport function resolveTimelineGestureSelection(\n gesture: TimelinePointerGesture,\n pointerIndex: number,\n viewport: TimelineIndexRange,\n): TimelineIndexRange {\n const boundedPointerIndex = clamp(pointerIndex, viewport.from, viewport.to);\n\n if (gesture.type === 'brush') {\n return {\n from: Math.min(gesture.startIndex, boundedPointerIndex),\n to: Math.max(gesture.startIndex, boundedPointerIndex),\n };\n }\n\n if (gesture.type === 'pan') {\n const selectionSpan = gesture.originalSelection.to - gesture.originalSelection.from;\n const delta = boundedPointerIndex - gesture.startIndex;\n const from = clamp(gesture.originalSelection.from + delta, viewport.from, viewport.to - selectionSpan);\n return { from, to: from + selectionSpan };\n }\n\n if (gesture.boundary === 'from') {\n return {\n from: clamp(boundedPointerIndex, viewport.from, gesture.originalSelection.to),\n to: gesture.originalSelection.to,\n };\n }\n\n return {\n from: gesture.originalSelection.from,\n to: clamp(boundedPointerIndex, gesture.originalSelection.from, viewport.to),\n };\n}\n\nexport function moveTimelineSelectionFromKey(selection: TimelineIndexRange, key: string, maximumIndex: number) {\n const span = selection.to - selection.from;\n if (key === 'Home') return { from: 0, to: span };\n if (key === 'End') return { from: maximumIndex - span, to: maximumIndex };\n\n const delta = getKeyboardDelta(key);\n if (delta === undefined) return undefined;\n const from = clamp(selection.from + delta, 0, maximumIndex - span);\n return { from, to: from + span };\n}\n\nexport function resizeTimelineSelectionFromKey(\n selection: TimelineIndexRange,\n boundary: DateBoundary,\n key: string,\n maximumIndex: number,\n) {\n const { from, to } = selection;\n if (key === 'Home') return boundary === 'from' ? { from: 0, to } : { from, to: from };\n if (key === 'End') {\n return boundary === 'from' ? { from: to, to } : { from, to: maximumIndex };\n }\n\n const delta = getKeyboardDelta(key);\n if (delta === undefined) return undefined;\n return boundary === 'from'\n ? { from: clamp(from + delta, 0, to), to }\n : { from, to: clamp(to + delta, from, maximumIndex) };\n}\n","import type { KeyboardEvent } from 'react';\nimport type { DateBoundary, TimelineIndexRange } from '../lib/date-range-timeline';\nimport { moveTimelineSelectionFromKey, resizeTimelineSelectionFromKey } from '../lib/date-range-timeline-interactions';\n\ninterface UseDateRangeKeyboardControlsInput {\n selection: TimelineIndexRange;\n maximumIndex: number;\n onCommit: (selection: TimelineIndexRange) => void;\n}\n\nexport function useDateRangeKeyboardControls({ selection, maximumIndex, onCommit }: UseDateRangeKeyboardControlsInput) {\n function handleSelectionKeyDown(event: KeyboardEvent<HTMLDivElement>) {\n const nextSelection = moveTimelineSelectionFromKey(selection, event.key, maximumIndex);\n if (!nextSelection) return;\n\n event.preventDefault();\n onCommit(nextSelection);\n }\n\n function handleBoundaryKeyDown(boundary: DateBoundary, event: KeyboardEvent<HTMLDivElement>) {\n const nextSelection = resizeTimelineSelectionFromKey(selection, boundary, event.key, maximumIndex);\n if (!nextSelection) return;\n\n event.preventDefault();\n onCommit(nextSelection);\n }\n\n function handleFromKeyDown(event: KeyboardEvent<HTMLDivElement>) {\n handleBoundaryKeyDown('from', event);\n }\n\n function handleToKeyDown(event: KeyboardEvent<HTMLDivElement>) {\n handleBoundaryKeyDown('to', event);\n }\n\n return {\n handleSelectionKeyDown,\n handleFromKeyDown,\n handleToKeyDown,\n };\n}\n","import { useRef } from 'react';\nimport type { PointerEvent } from 'react';\n\ninterface PointerDragSession<TPayload> {\n pointerId: number;\n captureTarget: HTMLElement;\n payload: TPayload;\n}\n\ninterface UsePointerDragInput<TPayload> {\n onMove: (payload: TPayload, event: PointerEvent<HTMLElement>) => void;\n onEnd: (payload: TPayload, event: PointerEvent<HTMLElement>) => void;\n onCancel: (payload: TPayload, event: PointerEvent<HTMLElement>) => void;\n}\n\nexport function usePointerDrag<TPayload>({ onMove, onEnd, onCancel }: UsePointerDragInput<TPayload>) {\n const sessionRef = useRef<PointerDragSession<TPayload> | undefined>(undefined);\n\n function startPointerDrag(event: PointerEvent<HTMLElement>, payload: TPayload) {\n if (sessionRef.current) return false;\n\n const captureTarget = event.currentTarget;\n captureTarget.setPointerCapture(event.pointerId);\n sessionRef.current = {\n pointerId: event.pointerId,\n captureTarget,\n payload,\n };\n return true;\n }\n\n function getSession(event: PointerEvent<HTMLElement>) {\n const session = sessionRef.current;\n if (!session || session.pointerId !== event.pointerId) return undefined;\n return session;\n }\n\n function releaseSession(session: PointerDragSession<TPayload>) {\n sessionRef.current = undefined;\n if (!session.captureTarget.hasPointerCapture(session.pointerId)) return;\n session.captureTarget.releasePointerCapture(session.pointerId);\n }\n\n function handlePointerMove(event: PointerEvent<HTMLElement>) {\n const session = getSession(event);\n if (!session) return;\n onMove(session.payload, event);\n }\n\n function handlePointerUp(event: PointerEvent<HTMLElement>) {\n const session = getSession(event);\n if (!session) return;\n releaseSession(session);\n onEnd(session.payload, event);\n }\n\n function handlePointerCancel(event: PointerEvent<HTMLElement>) {\n const session = getSession(event);\n if (!session) return;\n releaseSession(session);\n onCancel(session.payload, event);\n }\n\n function handleLostPointerCapture(event: PointerEvent<HTMLElement>) {\n const session = getSession(event);\n if (!session) return;\n sessionRef.current = undefined;\n onCancel(session.payload, event);\n }\n\n return {\n startPointerDrag,\n handlePointerMove,\n handlePointerUp,\n handlePointerCancel,\n handleLostPointerCapture,\n };\n}\n","import { useState } from 'react';\nimport type { PointerEvent, RefObject } from 'react';\nimport type { DateBoundary, TimelineIndexRange, TimelineState } from '../lib/date-range-timeline';\nimport {\n getTimelineIndexAtClientX,\n getTimelineInteraction,\n resolveTimelineGestureSelection,\n} from '../lib/date-range-timeline-interactions';\nimport type { TimelineInteraction, TimelinePointerGesture } from '../lib/date-range-timeline-interactions';\nimport { usePointerDrag } from './use-pointer-drag';\n\nexport type { TimelineInteraction } from '../lib/date-range-timeline-interactions';\n\ninterface TimelinePointerDrag {\n gesture: TimelinePointerGesture;\n currentSelection: TimelineIndexRange;\n}\n\ninterface UseDateRangePointerGesturesInput {\n trackRef: RefObject<HTMLDivElement | null>;\n timeline: TimelineState;\n onSelectionPreview: (selection: TimelineIndexRange) => void;\n onSelectionCommit: (selection: TimelineIndexRange) => void;\n onSelectionCancel: () => void;\n}\n\nexport function useDateRangePointerGestures({\n trackRef,\n timeline,\n onSelectionPreview,\n onSelectionCommit,\n onSelectionCancel,\n}: UseDateRangePointerGesturesInput) {\n const [interaction, setInteraction] = useState<TimelineInteraction>();\n\n function getPointerIndex(clientX: number) {\n const track = trackRef.current?.getBoundingClientRect();\n return getTimelineIndexAtClientX(clientX, track, timeline.viewport);\n }\n\n function previewPointerDrag(drag: TimelinePointerDrag, event: PointerEvent<HTMLElement>) {\n const pointerIndex = getPointerIndex(event.clientX);\n const selection = resolveTimelineGestureSelection(drag.gesture, pointerIndex, timeline.viewport);\n drag.currentSelection = selection;\n onSelectionPreview(selection);\n }\n\n function commitPointerDrag(drag: TimelinePointerDrag, event: PointerEvent<HTMLElement>) {\n previewPointerDrag(drag, event);\n setInteraction(undefined);\n onSelectionCommit(drag.currentSelection);\n }\n\n function cancelPointerDrag() {\n setInteraction(undefined);\n onSelectionCancel();\n }\n\n const pointerDrag = usePointerDrag<TimelinePointerDrag>({\n onMove: previewPointerDrag,\n onEnd: commitPointerDrag,\n onCancel: cancelPointerDrag,\n });\n\n function beginPointerDrag(\n event: PointerEvent<HTMLDivElement>,\n gesture: TimelinePointerGesture,\n currentSelection: TimelineIndexRange,\n ) {\n const started = pointerDrag.startPointerDrag(event, { gesture, currentSelection });\n if (!started) return false;\n setInteraction(getTimelineInteraction(gesture));\n return true;\n }\n\n function startBrush(event: PointerEvent<HTMLDivElement>) {\n if (event.button !== 0) return;\n event.preventDefault();\n const startIndex = getPointerIndex(event.clientX);\n const selection = { from: startIndex, to: startIndex };\n const started = beginPointerDrag(\n event,\n {\n type: 'brush',\n startIndex,\n },\n selection,\n );\n if (!started) return;\n onSelectionPreview(selection);\n }\n\n function startPan(event: PointerEvent<HTMLDivElement>) {\n if (event.button !== 0) return;\n event.preventDefault();\n event.stopPropagation();\n beginPointerDrag(\n event,\n {\n type: 'pan',\n startIndex: getPointerIndex(event.clientX),\n originalSelection: timeline.selection,\n },\n timeline.selection,\n );\n }\n\n function startHandle(boundary: DateBoundary, event: PointerEvent<HTMLDivElement>) {\n if (event.button !== 0) return;\n event.preventDefault();\n event.stopPropagation();\n beginPointerDrag(\n event,\n {\n type: 'handle',\n boundary,\n originalSelection: timeline.selection,\n },\n timeline.selection,\n );\n }\n\n function handlePointerMove(event: PointerEvent<HTMLDivElement>) {\n pointerDrag.handlePointerMove(event);\n }\n\n function handlePointerUp(event: PointerEvent<HTMLDivElement>) {\n pointerDrag.handlePointerUp(event);\n }\n\n function handlePointerCancel(event: PointerEvent<HTMLDivElement>) {\n pointerDrag.handlePointerCancel(event);\n }\n\n function handleLostPointerCapture(event: PointerEvent<HTMLDivElement>) {\n pointerDrag.handleLostPointerCapture(event);\n }\n\n return {\n interaction,\n startBrush,\n startPan,\n startHandle,\n handlePointerMove,\n handlePointerUp,\n handlePointerCancel,\n handleLostPointerCapture,\n };\n}\n","import { useEffect, useEffectEvent } from 'react';\nimport type { RefObject } from 'react';\nimport { clamp } from '../lib/date-range-timeline';\n\nconst MAX_WHEEL_DELTA = 80;\nconst WHEEL_ZOOM_SENSITIVITY = 0.003;\n\ninterface UseDateRangeWheelZoomInput {\n rootRef: RefObject<HTMLDivElement | null>;\n trackRef: RefObject<HTMLDivElement | null>;\n disabled: boolean;\n onZoom: (factor: number, anchor: number) => void;\n}\n\nexport function useDateRangeWheelZoom({ rootRef, trackRef, disabled, onZoom }: UseDateRangeWheelZoomInput) {\n const handleWheel = useEffectEvent((event: WheelEvent) => {\n if (!event.ctrlKey) return;\n // Bail before preventDefault when disabled so native browser zoom still works.\n if (disabled) return;\n event.preventDefault();\n\n const trackRect = trackRef.current?.getBoundingClientRect();\n const anchor =\n trackRect && trackRect.width > 0 ? clamp((event.clientX - trackRect.left) / trackRect.width, 0, 1) : 0.5;\n const wheelDelta = clamp(event.deltaY, -MAX_WHEEL_DELTA, MAX_WHEEL_DELTA);\n const factor = Math.exp(wheelDelta * WHEEL_ZOOM_SENSITIVITY);\n onZoom(factor, anchor);\n });\n\n useEffect(() => {\n const root = rootRef.current;\n if (!root) return;\n root.addEventListener('wheel', handleWheel, { passive: false });\n return () => root.removeEventListener('wheel', handleWheel);\n }, [rootRef]);\n}\n","import { buildTimelineTickOffsets, getTimelinePosition } from './date-range-timeline';\nimport type { TimelineIndexRange } from './date-range-timeline';\n\nconst MAX_GRID_INTERVALS = 24;\n\nexport interface DateRangeGridMarker {\n index: number;\n position: number;\n emphasis: 'major' | 'medium' | 'minor';\n}\n\nfunction addVisibleMarker(markerIndices: Set<number>, index: number, viewport: TimelineIndexRange) {\n if (index >= viewport.from && index <= viewport.to) {\n markerIndices.add(index);\n }\n}\n\nfunction getMarkerEmphasis(\n index: number,\n majorIndices: Set<number>,\n mediumIndices: Set<number>,\n): DateRangeGridMarker['emphasis'] {\n if (majorIndices.has(index)) return 'major';\n if (mediumIndices.has(index)) return 'medium';\n return 'minor';\n}\n\nexport function createDateRangeGridMarkers(\n viewport: TimelineIndexRange,\n selection: TimelineIndexRange,\n): DateRangeGridMarker[] {\n const viewportSpan = Math.max(0, viewport.to - viewport.from);\n if (viewportSpan === 0) {\n return [{ index: viewport.from, position: 50, emphasis: 'major' }];\n }\n\n const sampleStep = Math.max(1, Math.ceil(viewportSpan / MAX_GRID_INTERVALS));\n const markerIndices = new Set<number>();\n const majorIndices = new Set<number>();\n const mediumIndices = new Set<number>();\n const tickOffsets = buildTimelineTickOffsets(viewportSpan);\n\n for (let index = viewport.from; index <= viewport.to; index += sampleStep) {\n markerIndices.add(index);\n }\n\n for (let index = 0; index < tickOffsets.length; index += 1) {\n const tickOffset = tickOffsets[index];\n if (tickOffset === undefined) continue;\n\n const majorIndex = viewport.from + tickOffset;\n markerIndices.add(majorIndex);\n majorIndices.add(majorIndex);\n\n const nextTickOffset = tickOffsets[index + 1];\n if (nextTickOffset === undefined) continue;\n\n const mediumIndex = viewport.from + Math.round((tickOffset + nextTickOffset) / 2);\n markerIndices.add(mediumIndex);\n mediumIndices.add(mediumIndex);\n }\n\n addVisibleMarker(markerIndices, selection.from, viewport);\n addVisibleMarker(markerIndices, selection.to, viewport);\n\n return [...markerIndices]\n .sort((left, right) => left - right)\n .map(index => ({\n index,\n position: getTimelinePosition(index, viewport),\n emphasis: getMarkerEmphasis(index, majorIndices, mediumIndices),\n }));\n}\n","import { addDays } from 'date-fns';\nimport {\n buildTimelineTicks,\n formatDateRangeDuration,\n formatDateRangeValueText,\n getTimelinePosition,\n toDateRange,\n} from './date-range-timeline';\nimport type { TimelineState } from './date-range-timeline';\n\nexport function createDateRangeBoundaryModel(state: TimelineState) {\n const range = toDateRange(state);\n const fromPosition = getTimelinePosition(state.selection.from, state.viewport);\n const toPosition = getTimelinePosition(state.selection.to, state.viewport);\n\n return {\n positions: { from: fromPosition, to: toPosition },\n range,\n };\n}\n\nexport function createDateRangeTrackModel(state: TimelineState, maximumIndex: number) {\n const range = toDateRange(state);\n const fromPosition = getTimelinePosition(state.selection.from, state.viewport);\n const toPosition = getTimelinePosition(state.selection.to, state.viewport);\n const span = state.selection.to - state.selection.from;\n\n return {\n handles: {\n from: {\n position: fromPosition,\n value: state.selection.from,\n valueText: range.from,\n min: 0,\n max: state.selection.to,\n },\n to: {\n position: toPosition,\n value: state.selection.to,\n valueText: range.to,\n min: state.selection.from,\n max: maximumIndex,\n },\n },\n selection: {\n left: fromPosition,\n width: Math.max(0, toPosition - fromPosition),\n duration: formatDateRangeDuration(range),\n value: state.selection.from,\n valueText: formatDateRangeValueText(range),\n max: maximumIndex - span,\n },\n };\n}\n\nexport function createDateRangeAxisModel(state: TimelineState) {\n const visibleFrom = addDays(state.origin, state.viewport.from);\n const visibleTo = addDays(state.origin, state.viewport.to);\n return { ticks: buildTimelineTicks(visibleFrom, visibleTo) };\n}\n","import { useRef } from 'react';\nimport type { PointerEvent, RefObject } from 'react';\nimport { DateRangeHandle } from './DateRangeHandle';\nimport { DateRangeSelection } from './DateRangeSelection';\nimport { DateRangeTrackGrid } from './DateRangeTrackGrid';\nimport { useDateRangeKeyboardControls } from './hooks/useDateRangeKeyboardControls';\nimport { useDateRangePointerGestures } from './hooks/useDateRangePointerGestures';\nimport { useDateRangeWheelZoom } from './hooks/useDateRangeWheelZoom';\nimport type { TimelineIndexRange, TimelineState } from './lib/date-range-timeline';\nimport { createDateRangeGridMarkers } from './lib/date-range-timeline-grid';\nimport { createDateRangeTrackModel } from './lib/date-range-timeline-view-model';\nimport { cn } from '@/lib/utils';\n\ninterface DateRangeTrackProps {\n wheelTargetRef: RefObject<HTMLDivElement | null>;\n timeline: TimelineState;\n maximumIndex: number;\n onSelectionPreview: (selection: TimelineIndexRange) => void;\n onSelectionCommit: (selection: TimelineIndexRange) => void;\n onSelectionCancel: () => void;\n onZoom: (factor: number, anchor: number) => void;\n}\n\nexport function DateRangeTrack({\n wheelTargetRef,\n timeline,\n maximumIndex,\n onSelectionPreview,\n onSelectionCommit,\n onSelectionCancel,\n onZoom,\n}: DateRangeTrackProps) {\n const trackRef = useRef<HTMLDivElement>(null);\n const pointer = useDateRangePointerGestures({\n trackRef,\n timeline,\n onSelectionPreview,\n onSelectionCommit,\n onSelectionCancel,\n });\n const { handleSelectionKeyDown, handleFromKeyDown, handleToKeyDown } = useDateRangeKeyboardControls({\n selection: timeline.selection,\n maximumIndex,\n onCommit: onSelectionCommit,\n });\n\n useDateRangeWheelZoom({\n rootRef: wheelTargetRef,\n trackRef,\n disabled: pointer.interaction !== undefined,\n onZoom,\n });\n\n const model = createDateRangeTrackModel(timeline, maximumIndex);\n const gridMarkers = createDateRangeGridMarkers(timeline.viewport, timeline.selection);\n\n function startFromHandle(event: PointerEvent<HTMLDivElement>) {\n pointer.startHandle('from', event);\n }\n\n function startToHandle(event: PointerEvent<HTMLDivElement>) {\n pointer.startHandle('to', event);\n }\n\n return (\n <div\n ref={trackRef}\n role=\"group\"\n aria-label=\"Date range selection area\"\n className={cn(\n 'relative h-12 touch-none rounded-lg bg-muted',\n pointer.interaction?.type === 'selecting' ? 'cursor-col-resize' : 'cursor-crosshair',\n )}\n onPointerDown={pointer.startBrush}\n onPointerMove={pointer.handlePointerMove}\n onPointerUp={pointer.handlePointerUp}\n onPointerCancel={pointer.handlePointerCancel}\n onLostPointerCapture={pointer.handleLostPointerCapture}\n >\n <DateRangeTrackGrid markers={gridMarkers} />\n <DateRangeSelection\n left={model.selection.left}\n width={model.selection.width}\n duration={model.selection.duration}\n active={pointer.interaction !== undefined}\n value={model.selection.value}\n valueText={model.selection.valueText}\n max={model.selection.max}\n onPointerDown={pointer.startPan}\n onKeyDown={handleSelectionKeyDown}\n />\n <DateRangeHandle\n boundary=\"from\"\n position={model.handles.from.position}\n value={model.handles.from.value}\n valueText={model.handles.from.valueText}\n min={model.handles.from.min}\n max={model.handles.from.max}\n active={pointer.interaction?.type === 'resizing' && pointer.interaction.boundary === 'from'}\n onPointerDown={startFromHandle}\n onKeyDown={handleFromKeyDown}\n />\n <DateRangeHandle\n boundary=\"to\"\n position={model.handles.to.position}\n value={model.handles.to.value}\n valueText={model.handles.to.valueText}\n min={model.handles.to.min}\n max={model.handles.to.max}\n active={pointer.interaction?.type === 'resizing' && pointer.interaction.boundary === 'to'}\n onPointerDown={startToHandle}\n onKeyDown={handleToKeyDown}\n />\n </div>\n );\n}\n","import { addDays, differenceInCalendarDays } from 'date-fns';\nimport { useState } from 'react';\nimport {\n clamp,\n createTimelineState,\n parseDate,\n revealTimelineSelection,\n toDateRange,\n zoomTimelineViewport,\n} from '../lib/date-range-timeline';\nimport type { DateBoundary, TimelineIndexRange } from '../lib/date-range-timeline';\nimport type { DateRangeValue } from '../types';\n\ninterface UseDateRangeTimelineStateInput {\n value: DateRangeValue;\n min: string;\n max: string;\n onCommit: (value: DateRangeValue) => void;\n}\n\nfunction resolveTimelineBounds(min: string, max: string) {\n const fallbackMax = new Date();\n const maxDate = parseDate(max) ?? fallbackMax;\n const requestedMin = parseDate(min) ?? addDays(maxDate, -365);\n const minDate = requestedMin > maxDate ? maxDate : requestedMin;\n return { minDate, maxDate };\n}\n\nexport function useDateRangeTimelineState({ value, min, max, onCommit }: UseDateRangeTimelineStateInput) {\n const { minDate, maxDate } = resolveTimelineBounds(min, max);\n const committedTimeline = createTimelineState(value, minDate, maxDate);\n const maximumIndex = Math.max(0, differenceInCalendarDays(maxDate, minDate));\n const [viewport, setViewport] = useState(() => committedTimeline.viewport);\n const [draftSelection, setDraftSelection] = useState<TimelineIndexRange>();\n const selection = draftSelection ?? committedTimeline.selection;\n const state = {\n ...committedTimeline,\n viewport: revealTimelineSelection(viewport, selection, maximumIndex),\n selection,\n };\n\n function previewSelection(nextSelection: TimelineIndexRange) {\n setDraftSelection(nextSelection);\n }\n\n function cancelSelection() {\n setDraftSelection(undefined);\n }\n\n function commitSelection(nextSelection: TimelineIndexRange) {\n setDraftSelection(undefined);\n setViewport(current => revealTimelineSelection(current, nextSelection, maximumIndex));\n onCommit(toDateRange({ ...state, selection: nextSelection }));\n }\n\n function zoom(factor: number, anchor: number) {\n setViewport(current => {\n const visibleViewport = revealTimelineSelection(current, state.selection, maximumIndex);\n return zoomTimelineViewport({ ...state, viewport: visibleViewport }, maximumIndex, factor, anchor).viewport;\n });\n }\n\n function selectDate(boundary: DateBoundary, nextValue: string) {\n const date = parseDate(nextValue);\n if (!date) return;\n\n const dateIndex = clamp(differenceInCalendarDays(date, state.origin), 0, maximumIndex);\n const nextSelection =\n boundary === 'from'\n ? {\n from: clamp(dateIndex, 0, state.selection.to),\n to: state.selection.to,\n }\n : {\n from: state.selection.from,\n to: clamp(dateIndex, state.selection.from, maximumIndex),\n };\n commitSelection(nextSelection);\n }\n\n return {\n state,\n maximumIndex,\n previewSelection,\n cancelSelection,\n commitSelection,\n zoom,\n selectDate,\n };\n}\n","import { useRef } from 'react';\nimport { DateRangeBoundaryPickers } from './DateRangeBoundaryPickers';\nimport { DateRangeTicks } from './DateRangeTicks';\nimport { DateRangeTrack } from './DateRangeTrack';\nimport { useDateRangeTimelineState } from './hooks/useDateRangeTimelineState';\nimport { createDateRangeAxisModel, createDateRangeBoundaryModel } from './lib/date-range-timeline-view-model';\nimport type { DateRangeValue } from './types';\n\ninterface DateRangeTimelineProps {\n value: DateRangeValue;\n min: string;\n max: string;\n onCommit: (value: DateRangeValue) => void;\n}\n\nexport function DateRangeTimeline({ value, min, max, onCommit }: DateRangeTimelineProps) {\n const rootRef = useRef<HTMLDivElement>(null);\n const timeline = useDateRangeTimelineState({\n value,\n min,\n max,\n onCommit,\n });\n const boundaryModel = createDateRangeBoundaryModel(timeline.state);\n const axisModel = createDateRangeAxisModel(timeline.state);\n\n return (\n <div\n ref={rootRef}\n role=\"group\"\n aria-label=\"Date range timeline\"\n // Clip keeps stray axis labels from causing horizontal scroll; the margin lets the edge\n // handles (and their focus ring) render fully instead of being sliced in half at min/max.\n className=\"w-full overflow-x-clip select-none [overflow-clip-margin:0.75rem]\"\n >\n <DateRangeBoundaryPickers\n positions={boundaryModel.positions}\n value={boundaryModel.range}\n min={min}\n max={max}\n onSelect={timeline.selectDate}\n />\n\n <DateRangeTrack\n wheelTargetRef={rootRef}\n timeline={timeline.state}\n maximumIndex={timeline.maximumIndex}\n onSelectionPreview={timeline.previewSelection}\n onSelectionCommit={timeline.commitSelection}\n onSelectionCancel={timeline.cancelSelection}\n onZoom={timeline.zoom}\n />\n\n <DateRangeTicks ticks={axisModel.ticks} min={min} max={max} />\n </div>\n );\n}\n"],"mappings":"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"}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
+
import { t as Button } from "../Button-Bi7aXd_G.js";
|
|
2
|
+
import { DatePicker } from "./DateTimePicker.es.js";
|
|
3
|
+
import { i as PopoverTrigger, n as Popover, r as PopoverContent } from "../popover-BpMi52Tb.js";
|
|
4
|
+
import { t as Txt } from "../Txt-5efBsb2p.js";
|
|
1
5
|
import { t as cn } from "../utils-DQx8TpNT.js";
|
|
2
6
|
import { focusRing } from "../primitives/transitions.es.js";
|
|
3
|
-
import { t as Button } from "../Button-CLXTbAY8.js";
|
|
4
|
-
import { t as Txt } from "../Txt-BM6TVV_c.js";
|
|
5
|
-
import { i as PopoverTrigger, n as Popover, r as PopoverContent } from "../popover-CzHvTPk2.js";
|
|
6
|
-
import { DatePicker } from "./DateTimePicker.es.js";
|
|
7
7
|
import { useEffect, useEffectEvent, useLayoutEffect, useRef, useState } from "react";
|
|
8
8
|
import { jsx, jsxs } from "react/jsx-runtime";
|
|
9
9
|
import { CalendarDaysIcon } from "lucide-react";
|
|
@@ -189,8 +189,8 @@ function DateRangeBoundaryPicker({ boundary, value, min, max, onSelect }) {
|
|
|
189
189
|
mode: "single",
|
|
190
190
|
selected: selectedDate,
|
|
191
191
|
defaultMonth: selectedDate,
|
|
192
|
-
|
|
193
|
-
|
|
192
|
+
startMonth: firstDate,
|
|
193
|
+
endMonth: lastDate,
|
|
194
194
|
disabled: firstDate && lastDate ? {
|
|
195
195
|
before: firstDate,
|
|
196
196
|
after: lastDate
|
|
@@ -320,7 +320,7 @@ function DateRangeTicks({ ticks, min, max }) {
|
|
|
320
320
|
const timelineLabel = `Visible from ${formatBoundaryDate(firstTick.date)} through ${formatBoundaryDate(lastTick.date)}. Available from ${formatBoundaryDate(min)} through ${formatBoundaryDate(max)}`;
|
|
321
321
|
if (firstTick.date === lastTick.date) {
|
|
322
322
|
const date = formatBoundaryDate(firstTick.date);
|
|
323
|
-
const singleLabel = firstTick.date === min && firstTick.date === max ? `Created today
|
|
323
|
+
const singleLabel = firstTick.date === min && firstTick.date === max ? `Created today (${date})` : firstTick.date === min ? `Created ${date}` : firstTick.date === max ? `Today (${date})` : date;
|
|
324
324
|
return /* @__PURE__ */ jsx("div", {
|
|
325
325
|
role: "group",
|
|
326
326
|
"aria-label": timelineLabel,
|
|
@@ -333,8 +333,8 @@ function DateRangeTicks({ ticks, min, max }) {
|
|
|
333
333
|
})
|
|
334
334
|
});
|
|
335
335
|
}
|
|
336
|
-
const startLabel = firstTick.date === min ? `Created
|
|
337
|
-
const endLabel = lastTick.date === max ? `Today
|
|
336
|
+
const startLabel = firstTick.date === min ? `Created ${formatBoundaryDate(min)}` : firstTick.label;
|
|
337
|
+
const endLabel = lastTick.date === max ? `Today (${formatBoundaryDate(max)})` : lastTick.label;
|
|
338
338
|
const middleTicks = ticks.slice(1, -1);
|
|
339
339
|
return /* @__PURE__ */ jsxs("div", {
|
|
340
340
|
role: "group",
|