@mastra/playground-ui 67.0.0 → 68.0.0-alpha.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{ActionRow-BfK77pCT.cjs → ActionRow-BlC9GAef.cjs} +4 -4
- package/dist/ActionRow-BlC9GAef.cjs.map +1 -0
- package/dist/{ActionRow-Cd6tOC2K.js → ActionRow-DCrRCvBq.js} +4 -4
- package/dist/ActionRow-DCrRCvBq.js.map +1 -0
- package/dist/{Button-Bw1e3ONi.js → Button-CLXTbAY8.js} +42 -13
- package/dist/Button-CLXTbAY8.js.map +1 -0
- package/dist/{Button-YQRflC47.cjs → Button-DLcMcuUL.cjs} +58 -11
- package/dist/Button-DLcMcuUL.cjs.map +1 -0
- package/dist/{CodeEditor-CJ9jC9lu.cjs → CodeEditor-CLzs0yVc.cjs} +4 -4
- package/dist/{CodeEditor-CJ9jC9lu.cjs.map → CodeEditor-CLzs0yVc.cjs.map} +1 -1
- package/dist/{CodeEditor-CPVxj7WS.js → CodeEditor-COnz9c6B.js} +4 -4
- package/dist/{CodeEditor-CPVxj7WS.js.map → CodeEditor-COnz9c6B.js.map} +1 -1
- package/dist/{Comment-VFJq2wRp.js → Comment-0n98b_f_.js} +3 -3
- package/dist/{Comment-VFJq2wRp.js.map → Comment-0n98b_f_.js.map} +1 -1
- package/dist/{Comment-KYUQzeSu.cjs → Comment-Cg0f7eLa.cjs} +3 -3
- package/dist/{Comment-KYUQzeSu.cjs.map → Comment-Cg0f7eLa.cjs.map} +1 -1
- package/dist/{DataCodeSection-CZRPsStI.cjs → DataCodeSection-CcPmJPTp.cjs} +8 -8
- package/dist/{DataCodeSection-CZRPsStI.cjs.map → DataCodeSection-CcPmJPTp.cjs.map} +1 -1
- package/dist/{DataCodeSection-Ckd47p_S.js → DataCodeSection-KJRyRD1Q.js} +6 -6
- package/dist/{DataCodeSection-Ckd47p_S.js.map → DataCodeSection-KJRyRD1Q.js.map} +1 -1
- package/dist/{DataDetailsPanel-_CK0Huk6.js → DataDetailsPanel-CohEKPm4.js} +5 -5
- package/dist/{DataDetailsPanel-_CK0Huk6.js.map → DataDetailsPanel-CohEKPm4.js.map} +1 -1
- package/dist/{DataDetailsPanel-DFhM9H5D.cjs → DataDetailsPanel-DiyjEXqK.cjs} +6 -6
- package/dist/{DataDetailsPanel-DFhM9H5D.cjs.map → DataDetailsPanel-DiyjEXqK.cjs.map} +1 -1
- package/dist/{DataList-2tIlQsLc.js → DataList-CUhRQAv6.js} +2 -2
- package/dist/{DataList-2tIlQsLc.js.map → DataList-CUhRQAv6.js.map} +1 -1
- package/dist/{DataList-Czwmwyvp.cjs → DataList-Cj0mfk19.cjs} +2 -2
- package/dist/{DataList-Czwmwyvp.cjs.map → DataList-Cj0mfk19.cjs.map} +1 -1
- package/dist/{DataPanel-CY1W5LHJ.js → DataPanel-Bv4M17xO.js} +3 -3
- package/dist/{DataPanel-CY1W5LHJ.js.map → DataPanel-Bv4M17xO.js.map} +1 -1
- package/dist/{DataPanel-C0Ll76Ne.cjs → DataPanel-BwB1Oifd.cjs} +3 -3
- package/dist/{DataPanel-C0Ll76Ne.cjs.map → DataPanel-BwB1Oifd.cjs.map} +1 -1
- package/dist/{Dialog-CjaiCrkv.cjs → Dialog-BvWF9HE-.cjs} +2 -2
- package/dist/{Dialog-CjaiCrkv.cjs.map → Dialog-BvWF9HE-.cjs.map} +1 -1
- package/dist/{Dialog-CKtTR8h3.js → Dialog-DaWtxwd9.js} +2 -2
- package/dist/{Dialog-CKtTR8h3.js.map → Dialog-DaWtxwd9.js.map} +1 -1
- package/dist/{ErrorBoundary-Bm0LL_b7.cjs → ErrorBoundary-B5GjmA6V.cjs} +2 -2
- package/dist/{ErrorBoundary-Bm0LL_b7.cjs.map → ErrorBoundary-B5GjmA6V.cjs.map} +1 -1
- package/dist/{ErrorBoundary-95_6A77S.js → ErrorBoundary-Cat3KU86.js} +2 -2
- package/dist/{ErrorBoundary-95_6A77S.js.map → ErrorBoundary-Cat3KU86.js.map} +1 -1
- package/dist/{FilterBar--4oguuVe.js → FilterBar-BO-vvvyq.js} +18 -22
- package/dist/FilterBar-BO-vvvyq.js.map +1 -0
- package/dist/{FilterBar-BUd4f7oi.cjs → FilterBar-Buw0tv51.cjs} +18 -22
- package/dist/FilterBar-Buw0tv51.cjs.map +1 -0
- package/dist/KnowledgePageGraph.css +11 -0
- package/dist/{LogsDataList-Cslabh8K.js → LogsDataList-BI2C5OJz.js} +2 -2
- package/dist/{LogsDataList-Cslabh8K.js.map → LogsDataList-BI2C5OJz.js.map} +1 -1
- package/dist/{LogsDataList-DMmxAt_t.cjs → LogsDataList-CCIfUPGo.cjs} +2 -2
- package/dist/{LogsDataList-DMmxAt_t.cjs.map → LogsDataList-CCIfUPGo.cjs.map} +1 -1
- package/dist/{MarkdownRenderer-DME2xKTk.js → MarkdownRenderer-2GOXQJEv.js} +3 -3
- package/dist/{MarkdownRenderer-DME2xKTk.js.map → MarkdownRenderer-2GOXQJEv.js.map} +1 -1
- package/dist/{MarkdownRenderer-CS6u5drO.cjs → MarkdownRenderer-CB8Z_CHc.cjs} +4 -4
- package/dist/{MarkdownRenderer-CS6u5drO.cjs.map → MarkdownRenderer-CB8Z_CHc.cjs.map} +1 -1
- package/dist/{Message-nVI6tMS3.js → Message-CWzi5F_Q.js} +2 -2
- package/dist/{Message-nVI6tMS3.js.map → Message-CWzi5F_Q.js.map} +1 -1
- package/dist/{Message-DsCNQpou.cjs → Message-jj56lxNL.cjs} +2 -2
- package/dist/{Message-DsCNQpou.cjs.map → Message-jj56lxNL.cjs.map} +1 -1
- package/dist/{Notice-CyKngbbv.js → Notice-C-8oOZZF.js} +2 -2
- package/dist/{Notice-CyKngbbv.js.map → Notice-C-8oOZZF.js.map} +1 -1
- package/dist/{Notice-DWNeCe-t.cjs → Notice-JZ7SW7q6.cjs} +2 -2
- package/dist/{Notice-DWNeCe-t.cjs.map → Notice-JZ7SW7q6.cjs.map} +1 -1
- package/dist/{Workflow-BVWvgDmI.js → Workflow-C3SlEdP-.js} +5 -5
- package/dist/{Workflow-BVWvgDmI.js.map → Workflow-C3SlEdP-.js.map} +1 -1
- package/dist/{Workflow-BeF6pIO9.cjs → Workflow-DSWQ-ROz.cjs} +5 -5
- package/dist/{Workflow-BeF6pIO9.cjs.map → Workflow-DSWQ-ROz.cjs.map} +1 -1
- package/dist/{activity-DAK8tj7r.cjs → activity-DyB5H3gF.cjs} +2 -2
- package/dist/{activity-DAK8tj7r.cjs.map → activity-DyB5H3gF.cjs.map} +1 -1
- package/dist/{activity-CM34JyW-.js → activity-rJ1NQl_2.js} +2 -2
- package/dist/{activity-CM34JyW-.js.map → activity-rJ1NQl_2.js.map} +1 -1
- package/dist/{ask-user-BdjH9F7G.js → ask-user-B225wzWc.js} +2 -2
- package/dist/{ask-user-BdjH9F7G.js.map → ask-user-B225wzWc.js.map} +1 -1
- package/dist/{ask-user-C82m_G9W.cjs → ask-user-DdYz56qH.cjs} +2 -2
- package/dist/{ask-user-C82m_G9W.cjs.map → ask-user-DdYz56qH.cjs.map} +1 -1
- package/dist/buttons-group-Dc6R7YSs.cjs +48 -0
- package/dist/buttons-group-Dc6R7YSs.cjs.map +1 -0
- package/dist/buttons-group-DkFlnMiL.js +35 -0
- package/dist/buttons-group-DkFlnMiL.js.map +1 -0
- package/dist/{ButtonsGroup.css → buttons-group.css} +2 -0
- package/dist/clear-filters-button-Buc973vw.cjs +27 -0
- package/dist/clear-filters-button-Buc973vw.cjs.map +1 -0
- package/dist/clear-filters-button-CNrRuHOY.js +22 -0
- package/dist/clear-filters-button-CNrRuHOY.js.map +1 -0
- package/dist/{combobox-8kNAJFlj.cjs → combobox-CMx2ayFN.cjs} +3 -3
- package/dist/{combobox-8kNAJFlj.cjs.map → combobox-CMx2ayFN.cjs.map} +1 -1
- package/dist/{combobox-wFudhN8F.js → combobox-CtCK0mNx.js} +3 -3
- package/dist/{combobox-wFudhN8F.js.map → combobox-CtCK0mNx.js.map} +1 -1
- package/dist/{combobox-parts-W7KRQUsV.js → combobox-parts-C1CugUAU.js} +11 -19
- package/dist/combobox-parts-C1CugUAU.js.map +1 -0
- package/dist/{combobox-parts-BZVXwbG7.cjs → combobox-parts-ScKcYjMR.cjs} +10 -18
- package/dist/combobox-parts-ScKcYjMR.cjs.map +1 -0
- package/dist/components/ActionRow.cjs.js +1 -1
- package/dist/components/ActionRow.es.js +1 -1
- package/dist/components/AlertDialog.cjs.js +2 -2
- package/dist/components/AlertDialog.es.js +2 -2
- package/dist/components/Button.cjs.js +4 -1
- package/dist/components/Button.es.js +2 -2
- package/dist/components/ButtonsGroup.cjs.js +3 -38
- package/dist/components/ButtonsGroup.es.js +1 -35
- package/dist/components/ClampedText.cjs.js +1 -1
- package/dist/components/ClampedText.es.js +1 -1
- package/dist/components/ClearFiltersButton.cjs.js +3 -0
- package/dist/components/ClearFiltersButton.d.ts +1 -0
- package/dist/components/ClearFiltersButton.es.js +1 -0
- package/dist/components/CodeBlock.cjs.js +3 -3
- package/dist/components/CodeBlock.es.js +3 -3
- package/dist/components/CodeEditor.cjs.js +1 -1
- package/dist/components/CodeEditor.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 +3 -2
- package/dist/components/Command.cjs.js.map +1 -1
- package/dist/components/Command.es.js +3 -2
- package/dist/components/Command.es.js.map +1 -1
- package/dist/components/Comment.cjs.js +1 -1
- package/dist/components/Comment.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/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 +1 -1
- package/dist/components/DateRangeTimeline.es.js +1 -1
- package/dist/components/DateTimePicker.cjs.js +2 -2
- package/dist/components/DateTimePicker.es.js +2 -2
- package/dist/components/DateTimeRangePicker.cjs.js +2 -2
- 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/DisabledFeatureButton.cjs.js +1 -1
- package/dist/components/DisabledFeatureButton.es.js +1 -1
- package/dist/components/Drawer.cjs.js +1 -1
- package/dist/components/Drawer.es.js +1 -1
- package/dist/components/EnvironmentVariablesEditor.cjs.js +4 -4
- package/dist/components/EnvironmentVariablesEditor.es.js +4 -4
- package/dist/components/ErrorBoundary.cjs.js +1 -1
- package/dist/components/ErrorBoundary.es.js +1 -1
- package/dist/components/FilterBar.cjs.js +7 -2
- package/dist/components/FilterBar.es.js +4 -3
- package/dist/components/FormFieldBlocks.cjs.js +2 -2
- package/dist/components/FormFieldBlocks.es.js +2 -2
- package/dist/components/InputGroup.cjs.js +1 -1
- package/dist/components/InputGroup.es.js +1 -1
- package/dist/components/InputNumber.cjs.js +2 -2
- package/dist/components/InputNumber.es.js +2 -2
- package/dist/components/JSONSchemaForm.cjs.js +2 -2
- package/dist/components/JSONSchemaForm.es.js +2 -2
- package/dist/components/ListSearch.cjs.js +1 -1
- package/dist/components/ListSearch.es.js +1 -1
- package/dist/components/LogsDataList.cjs.js +2 -2
- package/dist/components/LogsDataList.es.js +2 -2
- 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/Notice.cjs.js +1 -1
- package/dist/components/Notice.es.js +1 -1
- package/dist/components/PrevNextNav.cjs.js +1 -1
- package/dist/components/PrevNextNav.es.js +1 -1
- package/dist/components/PropertyFilter.cjs.js +3 -3
- package/dist/components/PropertyFilter.es.js +3 -3
- package/dist/components/RuleBuilder.cjs.js +2 -2
- package/dist/components/RuleBuilder.es.js +2 -2
- package/dist/components/SavedViews.cjs.js +4 -3
- package/dist/components/SavedViews.cjs.js.map +1 -1
- package/dist/components/SavedViews.es.js +4 -3
- package/dist/components/SavedViews.es.js.map +1 -1
- package/dist/components/SearchInput.cjs.js +5 -2
- package/dist/components/SearchInput.cjs.js.map +1 -1
- package/dist/components/SearchInput.es.js +5 -2
- package/dist/components/SearchInput.es.js.map +1 -1
- package/dist/components/Select.cjs.js +1 -1
- package/dist/components/Select.es.js +1 -1
- package/dist/components/SideDialog.cjs.js +5 -5
- package/dist/components/SideDialog.cjs.js.map +1 -1
- package/dist/components/SideDialog.es.js +4 -4
- package/dist/components/Sidebar.cjs.js +3 -3
- package/dist/components/Sidebar.es.js +3 -3
- package/dist/components/Tabs.cjs.js +2 -2
- package/dist/components/Tabs.es.js +2 -2
- package/dist/components/ThreadList.cjs.js +1 -1
- package/dist/components/ThreadList.es.js +1 -1
- package/dist/components/Toaster.cjs.js +2 -2
- package/dist/components/Toaster.es.js +2 -2
- package/dist/components/Truncate.cjs.js +1 -1
- package/dist/components/Truncate.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/ask-user.cjs.js +1 -1
- package/dist/components/ai/ask-user.es.js +1 -1
- package/dist/components/ai/plan.cjs.js +2 -2
- package/dist/components/ai/plan.es.js +2 -2
- package/dist/components/ai/tool-approval.cjs.js +1 -1
- package/dist/components/ai/tool-approval.es.js +1 -1
- package/dist/components/ai/tool-call.cjs.js +2 -2
- package/dist/components/ai/tool-call.es.js +2 -2
- package/dist/{copy-button-CF-X4iDj.js → copy-button-BXrbevLn.js} +2 -2
- package/dist/{copy-button-CF-X4iDj.js.map → copy-button-BXrbevLn.js.map} +1 -1
- package/dist/{copy-button-BYEFKNpo.cjs → copy-button-DJAQ6_3o.cjs} +2 -2
- package/dist/{copy-button-BYEFKNpo.cjs.map → copy-button-DJAQ6_3o.cjs.map} +1 -1
- package/dist/{data-list-BkimqE_P.cjs → data-list-C4Vmq5HA.cjs} +2 -2
- package/dist/{data-list-BkimqE_P.cjs.map → data-list-C4Vmq5HA.cjs.map} +1 -1
- package/dist/{data-list-evmf5xWI.js → data-list-DHCOoLmj.js} +2 -2
- package/dist/{data-list-evmf5xWI.js.map → data-list-DHCOoLmj.js.map} +1 -1
- package/dist/{DateTimeRangePicker-HmPOHwAQ.cjs → date-time-range-picker-CTt7Od0P.cjs} +71 -57
- package/dist/date-time-range-picker-CTt7Od0P.cjs.map +1 -0
- package/dist/{DateTimeRangePicker-C_Lie_2P.js → date-time-range-picker-DKh1K9Iy.js} +72 -58
- package/dist/date-time-range-picker-DKh1K9Iy.js.map +1 -0
- package/dist/domains/auth/components/session-expired.cjs.js +2 -2
- package/dist/domains/auth/components/session-expired.es.js +2 -2
- package/dist/domains/chat/activity/activity-stretch-line.cjs.js +1 -1
- package/dist/domains/chat/activity/activity-stretch-line.es.js +1 -1
- package/dist/domains/chat/activity/components/activity-fold.cjs.js +1 -1
- package/dist/domains/chat/activity/components/activity-fold.es.js +1 -1
- package/dist/domains/chat/activity/components/activity-timed-trigger.cjs.js +1 -1
- package/dist/domains/chat/activity/components/activity-timed-trigger.es.js +1 -1
- package/dist/domains/chat/activity/components/calls-panel.cjs.js +1 -1
- package/dist/domains/chat/activity/components/calls-panel.es.js +1 -1
- package/dist/domains/chat/activity/components/stretch-content.cjs.js +1 -1
- package/dist/domains/chat/activity/components/stretch-content.es.js +1 -1
- package/dist/domains/chat/activity/components/stretch-thought.cjs.js +1 -1
- package/dist/domains/chat/activity/components/stretch-thought.es.js +1 -1
- package/dist/domains/chat/activity/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 +2 -2
- package/dist/domains/chat/activity/model/activity-words.es.js +2 -2
- package/dist/domains/chat/attachments/attachment-preview-dialog.cjs.js +2 -2
- package/dist/domains/chat/attachments/attachment-preview-dialog.es.js +2 -2
- package/dist/domains/chat/attachments/composer-attachment.cjs.js +1 -1
- package/dist/domains/chat/attachments/composer-attachment.es.js +1 -1
- package/dist/domains/chat/components/badge-wrapper.cjs.js +1 -1
- package/dist/domains/chat/components/badge-wrapper.es.js +1 -1
- package/dist/domains/chat/components/network-choice-metadata-dialog.cjs.js +3 -3
- package/dist/domains/chat/components/network-choice-metadata-dialog.es.js +3 -3
- package/dist/domains/chat/knowledge/knowledge-links.cjs.js +40 -0
- package/dist/domains/chat/knowledge/knowledge-links.cjs.js.map +1 -0
- package/dist/domains/chat/knowledge/knowledge-links.d.ts +1 -0
- package/dist/domains/chat/knowledge/knowledge-links.es.js +38 -0
- package/dist/domains/chat/knowledge/knowledge-links.es.js.map +1 -0
- package/dist/domains/chat/knowledge/pinned-knowledge-data.cjs.js +79 -0
- package/dist/domains/chat/knowledge/pinned-knowledge-data.cjs.js.map +1 -0
- package/dist/domains/chat/knowledge/pinned-knowledge-data.d.ts +1 -0
- package/dist/domains/chat/knowledge/pinned-knowledge-data.es.js +77 -0
- package/dist/domains/chat/knowledge/pinned-knowledge-data.es.js.map +1 -0
- package/dist/domains/chat/knowledge/pinned-knowledge.cjs.js +124 -0
- package/dist/domains/chat/knowledge/pinned-knowledge.cjs.js.map +1 -0
- package/dist/domains/chat/knowledge/pinned-knowledge.d.ts +1 -0
- package/dist/domains/chat/knowledge/pinned-knowledge.es.js +123 -0
- package/dist/domains/chat/knowledge/pinned-knowledge.es.js.map +1 -0
- package/dist/domains/chat/knowledge.cjs.js +12 -0
- package/dist/domains/chat/knowledge.d.ts +1 -0
- package/dist/domains/chat/knowledge.es.js +5 -0
- 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 +5 -5
- package/dist/domains/chat/messages/dataset-save-action.es.js +5 -5
- package/dist/domains/chat/messages/message-row.cjs.js +4 -4
- package/dist/domains/chat/messages/message-row.es.js +4 -4
- package/dist/domains/chat/messages/notification-signal-notice.cjs.js +1 -1
- package/dist/domains/chat/messages/notification-signal-notice.es.js +1 -1
- package/dist/domains/chat/messages/reasoning-content.cjs.js +1 -1
- package/dist/domains/chat/messages/reasoning-content.es.js +1 -1
- package/dist/domains/chat/messages/renderers/message-text.cjs.js +2 -2
- package/dist/domains/chat/messages/renderers/message-text.es.js +2 -2
- 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/signal-badge.cjs.js +8 -1
- package/dist/domains/chat/messages/signal-badge.cjs.js.map +1 -1
- package/dist/domains/chat/messages/signal-badge.es.js +8 -1
- package/dist/domains/chat/messages/signal-badge.es.js.map +1 -1
- package/dist/domains/chat/messages/skill-message.cjs.js +2 -2
- package/dist/domains/chat/messages/skill-message.es.js +2 -2
- 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 +2 -2
- package/dist/domains/chat/messages/tripwire-notice.es.js +2 -2
- 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 +3 -3
- package/dist/domains/chat/tools/badges/background-task-metadata-dialog.es.js +3 -3
- package/dist/domains/chat/tools/badges/code-mode-badge.cjs.js +1 -1
- package/dist/domains/chat/tools/badges/code-mode-badge.es.js +1 -1
- package/dist/domains/chat/tools/badges/file-tree-badge.cjs.js +2 -2
- package/dist/domains/chat/tools/badges/file-tree-badge.es.js +2 -2
- package/dist/domains/chat/tools/badges/knowledge-tool-badge.cjs.js +273 -0
- package/dist/domains/chat/tools/badges/knowledge-tool-badge.cjs.js.map +1 -0
- package/dist/domains/chat/tools/badges/knowledge-tool-badge.d.ts +1 -0
- package/dist/domains/chat/tools/badges/knowledge-tool-badge.es.js +270 -0
- package/dist/domains/chat/tools/badges/knowledge-tool-badge.es.js.map +1 -0
- package/dist/domains/chat/tools/badges/mcp-task-chip.cjs.js +1 -1
- package/dist/domains/chat/tools/badges/mcp-task-chip.es.js +1 -1
- package/dist/domains/chat/tools/badges/observation-marker-badge.cjs.js +2 -2
- package/dist/domains/chat/tools/badges/observation-marker-badge.es.js +2 -2
- package/dist/domains/chat/tools/badges/observation-marker-details.cjs.js +2 -2
- package/dist/domains/chat/tools/badges/observation-marker-details.es.js +2 -2
- package/dist/domains/chat/tools/badges/observation-renderer.cjs.js +1 -1
- package/dist/domains/chat/tools/badges/observation-renderer.es.js +1 -1
- package/dist/domains/chat/tools/badges/sandbox-execution-badge.cjs.js +2 -2
- package/dist/domains/chat/tools/badges/sandbox-execution-badge.es.js +2 -2
- package/dist/domains/chat/tools/badges/tool-approval-badge.cjs.js +1 -1
- package/dist/domains/chat/tools/badges/tool-approval-badge.es.js +1 -1
- package/dist/domains/chat/tools/badges/tool-badge.cjs.js +4 -4
- package/dist/domains/chat/tools/badges/tool-badge.es.js +4 -4
- package/dist/domains/chat/tools/badges/workflow-badge.cjs.js +4 -4
- package/dist/domains/chat/tools/badges/workflow-badge.es.js +4 -4
- package/dist/domains/chat/tools/connect-prompt-tool.cjs.js +3 -3
- package/dist/domains/chat/tools/connect-prompt-tool.es.js +3 -3
- package/dist/domains/chat/tools/submit-plan-tool.cjs.js +1 -1
- package/dist/domains/chat/tools/submit-plan-tool.es.js +1 -1
- package/dist/domains/chat/tools/tool-card-kind.cjs.js +4 -2
- package/dist/domains/chat/tools/tool-card-kind.cjs.js.map +1 -1
- package/dist/domains/chat/tools/tool-card-kind.es.js +4 -2
- 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 +3 -2
- package/dist/domains/chat/tools/tool-groups.cjs.js.map +1 -1
- package/dist/domains/chat/tools/tool-groups.es.js +3 -2
- package/dist/domains/chat/tools/tool-groups.es.js.map +1 -1
- package/dist/domains/chat.cjs.js +11 -0
- package/dist/domains/chat.es.js +5 -1
- package/dist/domains/dashboards/components/dashboard-renderer.cjs.js +1 -1
- package/dist/domains/dashboards/components/dashboard-renderer.es.js +1 -1
- package/dist/domains/datasets/components/add-dataset-item-dialog/add-dataset-item-dialog.cjs.js +4 -4
- package/dist/domains/datasets/components/add-dataset-item-dialog/add-dataset-item-dialog.es.js +4 -4
- package/dist/domains/datasets/components/add-dataset-item-dialog/dataset-picker.cjs.js +1 -1
- package/dist/domains/datasets/components/add-dataset-item-dialog/dataset-picker.es.js +1 -1
- package/dist/domains/datasets/components/add-dataset-item-dialog/trajectory-editor.cjs.js +3 -3
- package/dist/domains/datasets/components/add-dataset-item-dialog/trajectory-editor.es.js +3 -3
- package/dist/domains/datasets/components/save-as-dataset-item-dialog.cjs.js +5 -5
- package/dist/domains/datasets/components/save-as-dataset-item-dialog.es.js +5 -5
- package/dist/domains/knowledge/components/KnowledgePageDetail.cjs.js +438 -0
- package/dist/domains/knowledge/components/KnowledgePageDetail.cjs.js.map +1 -0
- package/dist/domains/knowledge/components/KnowledgePageDetail.d.ts +1 -0
- package/dist/domains/knowledge/components/KnowledgePageDetail.es.js +436 -0
- package/dist/domains/knowledge/components/KnowledgePageDetail.es.js.map +1 -0
- package/dist/domains/knowledge/components/KnowledgePageExplorer.cjs.js +521 -0
- package/dist/domains/knowledge/components/KnowledgePageExplorer.cjs.js.map +1 -0
- package/dist/domains/knowledge/components/KnowledgePageExplorer.d.ts +1 -0
- package/dist/domains/knowledge/components/KnowledgePageExplorer.es.js +520 -0
- package/dist/domains/knowledge/components/KnowledgePageExplorer.es.js.map +1 -0
- package/dist/domains/knowledge/components/KnowledgePageGraph.cjs.js +626 -0
- package/dist/domains/knowledge/components/KnowledgePageGraph.cjs.js.map +1 -0
- package/dist/domains/knowledge/components/KnowledgePageGraph.d.ts +1 -0
- package/dist/domains/knowledge/components/KnowledgePageGraph.es.js +625 -0
- package/dist/domains/knowledge/components/KnowledgePageGraph.es.js.map +1 -0
- package/dist/domains/knowledge/components/KnowledgePageTree.cjs.js +170 -0
- package/dist/domains/knowledge/components/KnowledgePageTree.cjs.js.map +1 -0
- package/dist/domains/knowledge/components/KnowledgePageTree.d.ts +1 -0
- package/dist/domains/knowledge/components/KnowledgePageTree.es.js +168 -0
- package/dist/domains/knowledge/components/KnowledgePageTree.es.js.map +1 -0
- package/dist/domains/knowledge/hooks/useInteractionIdle.cjs.js +37 -0
- package/dist/domains/knowledge/hooks/useInteractionIdle.cjs.js.map +1 -0
- package/dist/domains/knowledge/hooks/useInteractionIdle.d.ts +1 -0
- package/dist/domains/knowledge/hooks/useInteractionIdle.es.js +35 -0
- package/dist/domains/knowledge/hooks/useInteractionIdle.es.js.map +1 -0
- package/dist/domains/knowledge/lib/layout.cjs.js +93 -0
- package/dist/domains/knowledge/lib/layout.cjs.js.map +1 -0
- package/dist/domains/knowledge/lib/layout.d.ts +1 -0
- package/dist/domains/knowledge/lib/layout.es.js +92 -0
- package/dist/domains/knowledge/lib/layout.es.js.map +1 -0
- package/dist/domains/knowledge/lib/pageGraph.cjs.js +135 -0
- package/dist/domains/knowledge/lib/pageGraph.cjs.js.map +1 -0
- package/dist/domains/knowledge/lib/pageGraph.d.ts +1 -0
- package/dist/domains/knowledge/lib/pageGraph.es.js +128 -0
- package/dist/domains/knowledge/lib/pageGraph.es.js.map +1 -0
- package/dist/domains/knowledge/lib/pageLayout.cjs.js +49 -0
- package/dist/domains/knowledge/lib/pageLayout.cjs.js.map +1 -0
- package/dist/domains/knowledge/lib/pageLayout.d.ts +1 -0
- package/dist/domains/knowledge/lib/pageLayout.es.js +48 -0
- package/dist/domains/knowledge/lib/pageLayout.es.js.map +1 -0
- package/dist/domains/knowledge/lib/pageTree.cjs.js +98 -0
- package/dist/domains/knowledge/lib/pageTree.cjs.js.map +1 -0
- package/dist/domains/knowledge/lib/pageTree.d.ts +1 -0
- package/dist/domains/knowledge/lib/pageTree.es.js +94 -0
- package/dist/domains/knowledge/lib/pageTree.es.js.map +1 -0
- package/dist/domains/knowledge/lib/popupPlacement.cjs.js +22 -0
- package/dist/domains/knowledge/lib/popupPlacement.cjs.js.map +1 -0
- package/dist/domains/knowledge/lib/popupPlacement.d.ts +1 -0
- package/dist/domains/knowledge/lib/popupPlacement.es.js +21 -0
- package/dist/domains/knowledge/lib/popupPlacement.es.js.map +1 -0
- package/dist/domains/knowledge/lib/recordText.cjs.js +26 -0
- package/dist/domains/knowledge/lib/recordText.cjs.js.map +1 -0
- package/dist/domains/knowledge/lib/recordText.d.ts +1 -0
- package/dist/domains/knowledge/lib/recordText.es.js +25 -0
- package/dist/domains/knowledge/lib/recordText.es.js.map +1 -0
- package/dist/domains/knowledge/pageTypes.cjs.js +0 -0
- package/dist/domains/knowledge/pageTypes.d.ts +1 -0
- package/dist/domains/knowledge/pageTypes.es.js +0 -0
- package/dist/domains/logs/components/log-data-panel.cjs.js +6 -6
- package/dist/domains/logs/components/log-data-panel.cjs.js.map +1 -1
- package/dist/domains/logs/components/log-data-panel.es.js +4 -4
- 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 +1 -1
- package/dist/domains/logs/components/no-logs-info.es.js +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/memory/components/flame-graph.cjs.js +1 -1
- package/dist/domains/memory/components/flame-graph.es.js +1 -1
- package/dist/domains/memory/components/memory-studio-panel.cjs.js +1 -1
- package/dist/domains/memory/components/memory-studio-panel.es.js +1 -1
- package/dist/domains/metrics/components/card-action-buttons.cjs.js +1 -1
- package/dist/domains/metrics/components/card-action-buttons.es.js +1 -1
- package/dist/domains/metrics/components/chart-card-error.cjs.js +1 -1
- package/dist/domains/metrics/components/chart-card-error.es.js +1 -1
- package/dist/domains/metrics/components/date-range-selector.cjs.js +2 -2
- package/dist/domains/metrics/components/date-range-selector.cjs.js.map +1 -1
- package/dist/domains/metrics/components/date-range-selector.es.js +1 -1
- package/dist/domains/metrics/components/metrics-time-range-chip.cjs.js +4 -4
- package/dist/domains/metrics/components/metrics-time-range-chip.cjs.js.map +1 -1
- package/dist/domains/metrics/components/metrics-time-range-chip.es.js +4 -4
- package/dist/domains/metrics/components/metrics-time-range-chip.es.js.map +1 -1
- package/dist/domains/metrics/drilldown.cjs.js +1 -1
- package/dist/domains/metrics/drilldown.es.js +1 -1
- package/dist/domains/metrics/metrics-filters.cjs.js +1 -1
- package/dist/domains/metrics/metrics-filters.es.js +1 -1
- package/dist/domains/observability/hooks/use-observability-list-filters.cjs.js +1 -1
- package/dist/domains/observability/hooks/use-observability-list-filters.es.js +1 -1
- 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 +1 -1
- package/dist/domains/observability/saved-view-state.es.js +1 -1
- 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/saved-views-provider.cjs.js +3 -2
- package/dist/domains/observability/saved-views/saved-views-provider.cjs.js.map +1 -1
- package/dist/domains/observability/saved-views/saved-views-provider.es.js +3 -2
- package/dist/domains/observability/saved-views/saved-views-provider.es.js.map +1 -1
- package/dist/domains/observability/saved-views/saved-views-source.cjs.js.map +1 -1
- package/dist/domains/observability/saved-views/saved-views-source.es.js.map +1 -1
- package/dist/domains/observability/saved-views/use-hosted-saved-views.cjs.js +3 -2
- package/dist/domains/observability/saved-views/use-hosted-saved-views.cjs.js.map +1 -1
- package/dist/domains/observability/saved-views/use-hosted-saved-views.es.js +3 -2
- package/dist/domains/observability/saved-views/use-hosted-saved-views.es.js.map +1 -1
- package/dist/domains/observability/saved-views.cjs.js +1 -1
- package/dist/domains/observability/saved-views.es.js +1 -1
- package/dist/domains/observability.cjs.js +1 -1
- package/dist/domains/observability.es.js +1 -1
- package/dist/domains/scores/components/score-data-panel.cjs.js +2 -2
- package/dist/domains/scores/components/score-data-panel.es.js +2 -2
- 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 +2 -2
- package/dist/domains/scores/components/trace-scores-list.es.js +2 -2
- package/dist/domains/scores/components/trace-scores-tab.cjs.js +1 -1
- package/dist/domains/scores/components/trace-scores-tab.es.js +1 -1
- package/dist/domains/skills/skill-simple-form.cjs.js +4 -4
- package/dist/domains/skills/skill-simple-form.cjs.js.map +1 -1
- package/dist/domains/skills/skill-simple-form.es.js +4 -4
- package/dist/domains/skills/skill-simple-form.es.js.map +1 -1
- package/dist/domains/spans/components/spans-explorer-body.cjs.js +8 -8
- package/dist/domains/spans/components/spans-explorer-body.cjs.js.map +1 -1
- package/dist/domains/spans/components/spans-explorer-body.es.js +8 -8
- package/dist/domains/spans/components/spans-explorer-body.es.js.map +1 -1
- package/dist/domains/spans/components/spans-filter-bar.cjs.js +5 -5
- package/dist/domains/spans/components/spans-filter-bar.cjs.js.map +1 -1
- package/dist/domains/spans/components/spans-filter-bar.es.js +5 -5
- package/dist/domains/spans/components/spans-filter-bar.es.js.map +1 -1
- package/dist/domains/spans/hooks/use-spans-filter-bar.cjs.js +5 -5
- package/dist/domains/spans/hooks/use-spans-filter-bar.cjs.js.map +1 -1
- package/dist/domains/spans/hooks/use-spans-filter-bar.es.js +5 -5
- package/dist/domains/spans/hooks/use-spans-filter-bar.es.js.map +1 -1
- package/dist/domains/spans/span-filters.cjs.js +2 -2
- package/dist/domains/spans/span-filters.cjs.js.map +1 -1
- package/dist/domains/spans/span-filters.es.js +2 -2
- package/dist/domains/spans/span-filters.es.js.map +1 -1
- package/dist/domains/threads/components/threads-explorer-body.cjs.js +8 -8
- package/dist/domains/threads/components/threads-explorer-body.cjs.js.map +1 -1
- package/dist/domains/threads/components/threads-explorer-body.es.js +8 -8
- package/dist/domains/threads/components/threads-explorer-body.es.js.map +1 -1
- package/dist/domains/threads/components/threads-filter-bar.cjs.js +5 -5
- package/dist/domains/threads/components/threads-filter-bar.cjs.js.map +1 -1
- package/dist/domains/threads/components/threads-filter-bar.es.js +5 -5
- package/dist/domains/threads/components/threads-filter-bar.es.js.map +1 -1
- package/dist/domains/threads/hooks/use-threads-filter-bar.cjs.js +5 -5
- package/dist/domains/threads/hooks/use-threads-filter-bar.cjs.js.map +1 -1
- package/dist/domains/threads/hooks/use-threads-filter-bar.es.js +5 -5
- package/dist/domains/threads/hooks/use-threads-filter-bar.es.js.map +1 -1
- package/dist/domains/threads/thread-filters.cjs.js +2 -2
- package/dist/domains/threads/thread-filters.cjs.js.map +1 -1
- package/dist/domains/threads/thread-filters.es.js +2 -2
- package/dist/domains/threads/thread-filters.es.js.map +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 +1 -1
- package/dist/domains/traces/components/feedback-thread.cjs.js +3 -3
- package/dist/domains/traces/components/feedback-thread.es.js +3 -3
- package/dist/domains/traces/components/span-data-panel-view.cjs.js +5 -5
- package/dist/domains/traces/components/span-data-panel-view.es.js +5 -5
- package/dist/domains/traces/components/span-details-view.cjs.js +1 -1
- package/dist/domains/traces/components/span-details-view.es.js +1 -1
- package/dist/domains/traces/components/span-outcome.cjs.js +1 -1
- package/dist/domains/traces/components/span-outcome.es.js +1 -1
- package/dist/domains/traces/components/span-payload/span-error-renderer.cjs.js +2 -2
- package/dist/domains/traces/components/span-payload/span-error-renderer.es.js +2 -2
- package/dist/domains/traces/components/span-payload/span-input-renderers.cjs.js +1 -1
- package/dist/domains/traces/components/span-payload/span-input-renderers.es.js +1 -1
- package/dist/domains/traces/components/span-payload/span-output-renderers.cjs.js +3 -3
- package/dist/domains/traces/components/span-payload/span-output-renderers.es.js +3 -3
- package/dist/domains/traces/components/span-payload/span-payload-json.cjs.js +1 -1
- package/dist/domains/traces/components/span-payload/span-payload-json.es.js +1 -1
- package/dist/domains/traces/components/span-payload/span-payload-messages.cjs.js +3 -3
- package/dist/domains/traces/components/span-payload/span-payload-messages.es.js +3 -3
- package/dist/domains/traces/components/span-payload/span-payload-primitives.cjs.js +1 -1
- package/dist/domains/traces/components/span-payload/span-payload-primitives.es.js +1 -1
- package/dist/domains/traces/components/span-payload/span-payload-processor.cjs.js +1 -1
- package/dist/domains/traces/components/span-payload/span-payload-processor.es.js +1 -1
- package/dist/domains/traces/components/span-payload/span-payload-section.cjs.js +2 -2
- package/dist/domains/traces/components/span-payload/span-payload-section.es.js +2 -2
- package/dist/domains/traces/components/span-payload/span-payload-tool.cjs.js +1 -1
- package/dist/domains/traces/components/span-payload/span-payload-tool.es.js +1 -1
- package/dist/domains/traces/components/span-payload/span-processor-mutations.cjs.js +1 -1
- package/dist/domains/traces/components/span-payload/span-processor-mutations.es.js +1 -1
- package/dist/domains/traces/components/span-payload/span-tools-section.cjs.js +1 -1
- package/dist/domains/traces/components/span-payload/span-tools-section.es.js +1 -1
- package/dist/domains/traces/components/span-summary-description.cjs.js +1 -1
- package/dist/domains/traces/components/span-summary-description.es.js +1 -1
- package/dist/domains/traces/components/thread-trace/thread-trace-details.cjs.js +1 -1
- package/dist/domains/traces/components/thread-trace/thread-trace-details.es.js +1 -1
- package/dist/domains/traces/components/thread-trace/thread-trace-messages.cjs.js +2 -2
- package/dist/domains/traces/components/thread-trace/thread-trace-messages.es.js +2 -2
- package/dist/domains/traces/components/thread-trace/thread-trace-row.cjs.js +1 -1
- package/dist/domains/traces/components/thread-trace/thread-trace-row.es.js +1 -1
- package/dist/domains/traces/components/thread-trace/thread-trace-spans.cjs.js +1 -1
- package/dist/domains/traces/components/thread-trace/thread-trace-spans.es.js +1 -1
- package/dist/domains/traces/components/thread-view-by-trace.cjs.js +1 -1
- package/dist/domains/traces/components/thread-view-by-trace.es.js +1 -1
- package/dist/domains/traces/components/trace-columns-menu.cjs.js +3 -4
- package/dist/domains/traces/components/trace-columns-menu.cjs.js.map +1 -1
- package/dist/domains/traces/components/trace-columns-menu.es.js +3 -4
- package/dist/domains/traces/components/trace-columns-menu.es.js.map +1 -1
- package/dist/domains/traces/components/trace-data-panel-view.cjs.js +4 -4
- package/dist/domains/traces/components/trace-data-panel-view.es.js +4 -4
- package/dist/domains/traces/components/trace-data-panel.cjs.js +1 -1
- package/dist/domains/traces/components/trace-data-panel.es.js +1 -1
- package/dist/domains/traces/components/trace-details-view.cjs.js +1 -1
- package/dist/domains/traces/components/trace-details-view.es.js +1 -1
- package/dist/domains/traces/components/trace-error-cell.cjs.js +1 -1
- package/dist/domains/traces/components/trace-error-cell.es.js +1 -1
- package/dist/domains/traces/components/trace-error-summary.cjs.js +1 -1
- package/dist/domains/traces/components/trace-error-summary.es.js +1 -1
- package/dist/domains/traces/components/trace-id-button.cjs.js +1 -1
- package/dist/domains/traces/components/trace-id-button.es.js +1 -1
- package/dist/domains/traces/components/trace-span-panel.cjs.js +1 -1
- package/dist/domains/traces/components/trace-span-panel.es.js +1 -1
- package/dist/domains/traces/components/trace-summary-description.cjs.js +1 -1
- package/dist/domains/traces/components/trace-summary-description.es.js +1 -1
- package/dist/domains/traces/components/trace-thread-item-view.cjs.js +1 -1
- package/dist/domains/traces/components/trace-thread-item-view.es.js +1 -1
- 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/traces-explorer/traces-explorer-actions.cjs.js +1 -1
- package/dist/domains/traces/components/traces-explorer/traces-explorer-actions.es.js +1 -1
- package/dist/domains/traces/components/traces-explorer/traces-explorer-filter-bar.cjs.js +5 -5
- package/dist/domains/traces/components/traces-explorer/traces-explorer-filter-bar.cjs.js.map +1 -1
- package/dist/domains/traces/components/traces-explorer/traces-explorer-filter-bar.es.js +5 -5
- package/dist/domains/traces/components/traces-explorer/traces-explorer-filter-bar.es.js.map +1 -1
- package/dist/domains/traces/components/traces-explorer/traces-explorer-root.cjs.js +1 -1
- package/dist/domains/traces/components/traces-explorer/traces-explorer-root.es.js +1 -1
- 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 +5 -5
- package/dist/domains/traces/components/traces-explorer/use-traces-filter-bar.cjs.js.map +1 -1
- package/dist/domains/traces/components/traces-explorer/use-traces-filter-bar.es.js +5 -5
- package/dist/domains/traces/components/traces-explorer/use-traces-filter-bar.es.js.map +1 -1
- package/dist/domains/traces/components/traces-list-mode-toggle.cjs.js +1 -1
- package/dist/domains/traces/components/traces-list-mode-toggle.es.js +1 -1
- package/dist/domains/traces/components/traces-list-view.cjs.js +2 -2
- package/dist/domains/traces/components/traces-list-view.es.js +2 -2
- package/dist/domains/traces/components/traces-page-skeleton.cjs.js +2 -2
- package/dist/domains/traces/components/traces-page-skeleton.cjs.js.map +1 -1
- package/dist/domains/traces/components/traces-page-skeleton.es.js +2 -2
- package/dist/domains/traces/components/traces-page-skeleton.es.js.map +1 -1
- package/dist/domains/traces/components/traces-spans-switch.cjs.js +1 -1
- package/dist/domains/traces/components/traces-spans-switch.es.js +1 -1
- 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/trace-filters.cjs.js +1 -1
- package/dist/domains/traces/trace-filters.es.js +1 -1
- package/dist/domains/traces/trace-query-filters.cjs.js +1 -1
- package/dist/domains/traces/trace-query-filters.es.js +1 -1
- package/dist/domains/traces.cjs.js +1 -1
- package/dist/domains/traces.es.js +1 -1
- package/dist/domains/workflows/components/workflow-combobox.cjs.js +2 -2
- package/dist/domains/workflows/components/workflow-combobox.es.js +2 -2
- package/dist/domains/workflows/components/workflow-information.cjs.js +2 -2
- package/dist/domains/workflows/components/workflow-information.es.js +2 -2
- package/dist/domains/workflows/components/workflow-layout.cjs.js +1 -1
- package/dist/domains/workflows/components/workflow-layout.es.js +1 -1
- package/dist/domains/workflows/components/workflow-step-detail.cjs.js +2 -2
- package/dist/domains/workflows/components/workflow-step-detail.es.js +2 -2
- package/dist/domains/workflows/components/workflows-list/no-workflows-info.cjs.js +1 -1
- package/dist/domains/workflows/components/workflows-list/no-workflows-info.es.js +1 -1
- package/dist/domains/workflows/components/workflows-list/workflows-list.cjs.js +2 -2
- package/dist/domains/workflows/components/workflows-list/workflows-list.es.js +2 -2
- 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/runs/workflow-run-list.cjs.js +1 -1
- package/dist/domains/workflows/runs/workflow-run-list.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 +2 -2
- package/dist/domains/workflows/workflow/data/workflow-data-inspector.es.js +2 -2
- 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 +1 -1
- package/dist/domains/workflows/workflow/input/workflow-processor-input.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 +2 -1
- package/dist/domains/workflows/workflow/use-workflow-trigger.cjs.js.map +1 -1
- package/dist/domains/workflows/workflow/use-workflow-trigger.es.js +2 -1
- package/dist/domains/workflows/workflow/use-workflow-trigger.es.js.map +1 -1
- package/dist/domains/workflows/workflow/utils.cjs.js +1 -1
- package/dist/domains/workflows/workflow/utils.es.js +1 -1
- 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-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-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 +3 -3
- package/dist/domains/workflows/workflow/workflow-graph-boundary.es.js +3 -3
- package/dist/domains/workflows/workflow/workflow-graph-inner.cjs.js +2 -2
- package/dist/domains/workflows/workflow/workflow-graph-inner.es.js +2 -2
- 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 +1 -1
- package/dist/domains/workflows/workflow/workflow-graph.es.js +1 -1
- 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 +3 -3
- package/dist/domains/workflows/workflow/workflow-run-data.es.js +3 -3
- 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 +1 -1
- package/dist/domains/workflows/workflow/workflow-run-header.es.js +1 -1
- package/dist/domains/workflows/workflow/workflow-status.cjs.js +1 -1
- package/dist/domains/workflows/workflow/workflow-status.es.js +1 -1
- 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-suspended-steps.cjs.js +2 -2
- package/dist/domains/workflows/workflow/workflow-suspended-steps.es.js +2 -2
- package/dist/domains/workflows/workflow/workflow-time-travel-form.cjs.js +2 -2
- package/dist/domains/workflows/workflow/workflow-time-travel-form.es.js +2 -2
- package/dist/domains/workflows/workflow/workflow-timeline-row.cjs.js +1 -1
- package/dist/domains/workflows/workflow/workflow-timeline-row.es.js +1 -1
- package/dist/domains/workflows/workflow/workflow-timeline.cjs.js +1 -1
- package/dist/domains/workflows/workflow/workflow-timeline.es.js +1 -1
- package/dist/domains/workflows/workflow/workflow-trigger-form.cjs.js +1 -1
- package/dist/domains/workflows/workflow/workflow-trigger-form.es.js +1 -1
- package/dist/domains/workflows/workflow/workflow-trigger-header.cjs.js +1 -1
- package/dist/domains/workflows/workflow/workflow-trigger-header.es.js +1 -1
- package/dist/domains/workflows/workflow/workflow-trigger.cjs.js +1 -1
- package/dist/domains/workflows/workflow/workflow-trigger.es.js +1 -1
- package/dist/domains/workspace/components/workspace-add-skill-dialog.cjs.js +3 -3
- package/dist/domains/workspace/components/workspace-add-skill-dialog.es.js +3 -3
- 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-create-directory.cjs.js +2 -2
- package/dist/domains/workspace/components/workspace-create-directory.es.js +2 -2
- 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 +1 -1
- package/dist/domains/workspace/components/workspace-markdown-preview.es.js +1 -1
- package/dist/domains/workspace/components/workspace-search.cjs.js +1 -1
- package/dist/domains/workspace/components/workspace-search.es.js +1 -1
- package/dist/domains/workspace/components/workspace-tree.cjs.js +1 -1
- package/dist/domains/workspace/components/workspace-tree.es.js +1 -1
- 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/signals-empty-state.cjs.js +1 -1
- package/dist/ee/signals/components/signals-empty-state.es.js +1 -1
- package/dist/ee/signals/components/trace-intelligence-entity-index.cjs.js +6 -6
- package/dist/ee/signals/components/trace-intelligence-entity-index.cjs.js.map +1 -1
- package/dist/ee/signals/components/trace-intelligence-entity-index.es.js +5 -5
- package/dist/ee/signals/examples-pager.cjs.js +1 -1
- package/dist/ee/signals/examples-pager.es.js +1 -1
- package/dist/ee/signals/sankey-signals.cjs.js +1 -1
- package/dist/ee/signals/sankey-signals.es.js +1 -1
- package/dist/ee/signals/settings/signal-definition-form-dialog.cjs.js +2 -2
- package/dist/ee/signals/settings/signal-definition-form-dialog.es.js +2 -2
- package/dist/ee/signals/settings/trace-signal-settings.cjs.js +3 -3
- package/dist/ee/signals/settings/trace-signal-settings.es.js +3 -3
- package/dist/ee/signals/signals-error-state.cjs.js +1 -1
- package/dist/ee/signals/signals-error-state.es.js +1 -1
- package/dist/ee/signals/snapshot-timeline.cjs.js +1 -1
- package/dist/ee/signals/snapshot-timeline.es.js +1 -1
- package/dist/ee/signals/theme-filter-banner.cjs.js +1 -1
- package/dist/ee/signals/theme-filter-banner.es.js +1 -1
- package/dist/ee/signals/trace-insight-view.cjs.js +1 -1
- package/dist/ee/signals/trace-insight-view.es.js +1 -1
- package/dist/ee/signals/view-mode-tab.cjs.js +1 -1
- package/dist/ee/signals/view-mode-tab.es.js +1 -1
- package/dist/ee/topics/components/topic-trace-summary-list.cjs.js +2 -2
- package/dist/ee/topics/components/topic-trace-summary-list.es.js +2 -2
- package/dist/{filter-bar-chip-7O02P9Vk.js → filter-bar-chip-B4sV4gDm.js} +86 -71
- package/dist/filter-bar-chip-B4sV4gDm.js.map +1 -0
- package/dist/{filter-bar-chip-BUyMf8XQ.cjs → filter-bar-chip-CIEsWcEw.cjs} +88 -79
- package/dist/filter-bar-chip-CIEsWcEw.cjs.map +1 -0
- package/dist/filter-bar-chip.css +22 -0
- package/dist/filter-bar-time-range-CXQMBgpz.js +60 -0
- package/dist/filter-bar-time-range-CXQMBgpz.js.map +1 -0
- package/dist/filter-bar-time-range-DvuaFnkI.cjs +83 -0
- package/dist/filter-bar-time-range-DvuaFnkI.cjs.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/{input-group-uDpFNnSW.cjs → input-group-DVJLZDBL.cjs} +6 -4
- package/dist/input-group-DVJLZDBL.cjs.map +1 -0
- package/dist/{input-group-g85FYfze.js → input-group-QKKV_ouF.js} +7 -5
- package/dist/input-group-QKKV_ouF.js.map +1 -0
- package/dist/layout/tabbed-container.cjs.js +1 -1
- package/dist/layout/tabbed-container.es.js +1 -1
- package/dist/lib/form/components/array-element-wrapper.cjs.js +1 -1
- package/dist/lib/form/components/array-element-wrapper.es.js +1 -1
- package/dist/lib/form/components/array-wrapper.cjs.js +1 -1
- package/dist/lib/form/components/array-wrapper.es.js +1 -1
- package/dist/lib/form/components/date-field.cjs.js +1 -1
- package/dist/lib/form/components/date-field.es.js +1 -1
- 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 +1 -1
- package/dist/lib/form/components/form-submit-row.es.js +1 -1
- package/dist/lib/form/components/record-field.cjs.js +1 -1
- package/dist/lib/form/components/record-field.es.js +1 -1
- 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/submit-button.cjs.js +1 -1
- package/dist/lib/form/components/submit-button.es.js +1 -1
- package/dist/lib/form/dynamic-form.cjs.js +2 -2
- package/dist/lib/form/dynamic-form.cjs.js.map +1 -1
- package/dist/lib/form/dynamic-form.es.js +2 -2
- package/dist/lib/form/dynamic-form.es.js.map +1 -1
- package/dist/lib/form/json-draft.cjs.js +1 -1
- package/dist/lib/form/json-draft.es.js +1 -1
- package/dist/lib/form/zod-provider/compat.cjs.js +8 -0
- package/dist/lib/form/zod-provider/compat.cjs.js.map +1 -1
- package/dist/lib/form/zod-provider/compat.es.js +8 -1
- package/dist/lib/form/zod-provider/compat.es.js.map +1 -1
- package/dist/lib/form/zod-provider.cjs.js +1 -1
- package/dist/lib/form/zod-provider.es.js +1 -1
- package/dist/{list-search-BEJmYa9a.cjs → list-search-BtRno5As.cjs} +2 -2
- package/dist/list-search-BtRno5As.cjs.map +1 -0
- package/dist/{list-search-bg7WzULj.js → list-search-CkhsTFdG.js} +2 -2
- package/dist/list-search-CkhsTFdG.js.map +1 -0
- package/dist/{observability-saved-views-CwCii7hh.cjs → observability-saved-views-BAzxxoAr.cjs} +10 -8
- package/dist/observability-saved-views-BAzxxoAr.cjs.map +1 -0
- package/dist/{observability-saved-views-Bo5kLN20.js → observability-saved-views-BBam8Fr5.js} +10 -8
- package/dist/observability-saved-views-BBam8Fr5.js.map +1 -0
- package/dist/primitives/control-icon.cjs.js +9 -0
- package/dist/primitives/control-icon.cjs.js.map +1 -0
- package/dist/primitives/control-icon.d.ts +1 -0
- package/dist/primitives/control-icon.es.js +8 -0
- package/dist/primitives/control-icon.es.js.map +1 -0
- package/dist/primitives/control-size.cjs.js +6 -0
- package/dist/primitives/control-size.cjs.js.map +1 -1
- package/dist/primitives/control-size.es.js +6 -1
- package/dist/primitives/control-size.es.js.map +1 -1
- package/dist/primitives/menu-item.cjs.js +3 -3
- package/dist/primitives/menu-item.cjs.js.map +1 -1
- package/dist/primitives/menu-item.es.js +3 -3
- package/dist/primitives/menu-item.es.js.map +1 -1
- package/dist/primitives/trigger-button.cjs.js +1 -1
- package/dist/primitives/trigger-button.es.js +1 -1
- package/dist/{property-filter-applied-DqsPFbYM.cjs → property-filter-applied-BCeRLcXb.cjs} +18 -18
- package/dist/{property-filter-applied-DqsPFbYM.cjs.map → property-filter-applied-BCeRLcXb.cjs.map} +1 -1
- package/dist/{property-filter-applied-DRglaEj-.js → property-filter-applied-p3dTTDdb.js} +3 -3
- package/dist/{property-filter-applied-DRglaEj-.js.map → property-filter-applied-p3dTTDdb.js.map} +1 -1
- package/dist/{select-BbFpEBAY.js → select-BdIZEdcy.js} +4 -8
- package/dist/select-BdIZEdcy.js.map +1 -0
- package/dist/{select-NySY9Men.cjs → select-Dg8L5ROX.cjs} +3 -7
- package/dist/select-Dg8L5ROX.cjs.map +1 -0
- package/dist/{span-payload-primitives-Dyhbqaa7.js → span-payload-primitives-B3RdahsC.js} +4 -4
- package/dist/{span-payload-primitives-Dyhbqaa7.js.map → span-payload-primitives-B3RdahsC.js.map} +1 -1
- package/dist/{span-payload-primitives-B10Xxmx7.cjs → span-payload-primitives-_2d-pAOD.cjs} +4 -4
- package/dist/{span-payload-primitives-B10Xxmx7.cjs.map → span-payload-primitives-_2d-pAOD.cjs.map} +1 -1
- package/dist/src/domains/chat/index.d.ts +1 -0
- package/dist/src/domains/chat/knowledge/index.d.ts +5 -0
- package/dist/src/domains/chat/knowledge/knowledge-links.d.ts +21 -0
- package/dist/src/domains/chat/knowledge/pinned-knowledge-data.d.ts +22 -0
- package/dist/src/domains/chat/knowledge/pinned-knowledge.d.ts +9 -0
- package/dist/src/domains/chat/tools/badges/knowledge-tool-badge.d.ts +19 -0
- package/dist/src/domains/chat/tools/tool-card-kind.d.ts +2 -2
- package/dist/src/domains/knowledge/components/KnowledgePageDetail.d.ts +42 -0
- package/dist/src/domains/knowledge/components/KnowledgePageExplorer.d.ts +80 -0
- package/dist/src/domains/knowledge/components/KnowledgePageGraph.d.ts +35 -0
- package/dist/src/domains/knowledge/components/KnowledgePageTree.d.ts +27 -0
- package/dist/src/domains/knowledge/hooks/useInteractionIdle.d.ts +12 -0
- package/dist/src/domains/knowledge/lib/layout.d.ts +35 -0
- package/dist/src/domains/knowledge/lib/pageGraph.d.ts +45 -0
- package/dist/src/domains/knowledge/lib/pageLayout.d.ts +24 -0
- package/dist/src/domains/knowledge/lib/pageTree.d.ts +28 -0
- package/dist/src/domains/knowledge/lib/popupPlacement.d.ts +12 -0
- package/dist/src/domains/knowledge/lib/recordText.d.ts +9 -0
- package/dist/src/domains/knowledge/pageTypes.d.ts +96 -0
- package/dist/src/domains/metrics/components/metrics-time-range-chip.d.ts +2 -2
- package/dist/src/domains/observability/saved-views/saved-views-provider.d.ts +6 -1
- package/dist/src/domains/observability/saved-views/saved-views-source.d.ts +1 -0
- package/dist/src/domains/observability/saved-views/use-hosted-saved-views.d.ts +1 -1
- package/dist/src/domains/skills/skill-simple-form.d.ts +3 -1
- package/dist/src/domains/spans/components/spans-filter-bar.d.ts +1 -1
- package/dist/src/domains/spans/hooks/use-spans-filter-bar.d.ts +1 -1
- package/dist/src/domains/spans/span-filters.d.ts +1 -1
- package/dist/src/domains/threads/components/threads-filter-bar.d.ts +1 -1
- package/dist/src/domains/threads/hooks/use-threads-filter-bar.d.ts +1 -1
- package/dist/src/domains/threads/thread-filters.d.ts +1 -1
- package/dist/src/domains/traces/components/traces-explorer/traces-explorer-filter-bar.d.ts +3 -3
- package/dist/src/domains/traces/components/traces-page-skeleton.d.ts +1 -1
- package/dist/src/ds/components/Button/Button.d.ts +15 -0
- package/dist/src/ds/components/ClearFiltersButton/clear-filters-button.d.ts +12 -0
- package/dist/src/ds/components/ClearFiltersButton/index.d.ts +1 -0
- package/dist/src/ds/components/Combobox/combobox-styles.d.ts +0 -1
- package/dist/src/ds/components/DateTimeRangePicker/date-time-range-picker.d.ts +12 -11
- package/dist/src/ds/components/FilterBar/filter-bar-chip.d.ts +10 -7
- package/dist/src/ds/components/FilterBar/filter-bar-time-range.d.ts +19 -0
- package/dist/src/ds/components/FilterBar/filter-bar.d.ts +2 -0
- package/dist/src/ds/components/FilterBar/index.d.ts +2 -0
- package/dist/src/ds/components/FilterBar/use-filter-bar-item-keys.d.ts +23 -0
- package/dist/src/ds/components/ListSearch/list-search.d.ts +1 -0
- package/dist/src/ds/components/SavedViews/saved-view-picker.d.ts +3 -1
- package/dist/src/ds/components/ai/tool-call/tool-phrases.d.ts +30 -0
- package/dist/src/ds/primitives/control-icon.d.ts +3 -0
- package/dist/src/ds/primitives/control-size.d.ts +1 -0
- package/dist/src/lib/form/zod-provider/compat.d.ts +5 -0
- package/dist/style.css +181 -66
- package/dist/{tabbed-container-BKUqfEKy.js → tabbed-container-5j6dhoRX.js} +6 -6
- package/dist/{tabbed-container-BKUqfEKy.js.map → tabbed-container-5j6dhoRX.js.map} +1 -1
- package/dist/{tabbed-container-CFEImJOK.cjs → tabbed-container-DQU7pVio.cjs} +6 -6
- package/dist/{tabbed-container-CFEImJOK.cjs.map → tabbed-container-DQU7pVio.cjs.map} +1 -1
- package/dist/{tabs-content-DgR3Hik1.cjs → tabs-content-CmXe5ML0.cjs} +2 -2
- package/dist/{tabs-content-DgR3Hik1.cjs.map → tabs-content-CmXe5ML0.cjs.map} +1 -1
- package/dist/{tabs-content-cpV6A9c3.js → tabs-content-D__B9hd-.js} +2 -2
- package/dist/{tabs-content-cpV6A9c3.js.map → tabs-content-D__B9hd-.js.map} +1 -1
- package/dist/{tabs-tab-UT1JliwK.js → tabs-tab-CYTZevdV.js} +2 -2
- package/dist/{tabs-tab-UT1JliwK.js.map → tabs-tab-CYTZevdV.js.map} +1 -1
- package/dist/{tabs-tab-Qp3RJ17z.cjs → tabs-tab-DGwfHVDr.cjs} +2 -2
- package/dist/{tabs-tab-Qp3RJ17z.cjs.map → tabs-tab-DGwfHVDr.cjs.map} +1 -1
- package/dist/{toast-api-WhxnAT9F.js → toast-api-D_rrRhNG.js} +2 -2
- package/dist/{toast-api-WhxnAT9F.js.map → toast-api-D_rrRhNG.js.map} +1 -1
- package/dist/{toast-api-Bv87KHu_.cjs → toast-api-qtkOucy2.cjs} +2 -2
- package/dist/{toast-api-Bv87KHu_.cjs.map → toast-api-qtkOucy2.cjs.map} +1 -1
- package/dist/{tool-approval-BfjoSNOC.cjs → tool-approval-1qiB4hhG.cjs} +5 -5
- package/dist/{tool-approval-BfjoSNOC.cjs.map → tool-approval-1qiB4hhG.cjs.map} +1 -1
- package/dist/{tool-approval-FeuyUUcL.js → tool-approval-B6MFcaKV.js} +5 -5
- package/dist/{tool-approval-FeuyUUcL.js.map → tool-approval-B6MFcaKV.js.map} +1 -1
- package/dist/{tool-call-CvilN9ti.cjs → tool-call-Bu66PkD-.cjs} +34 -4
- package/dist/{tool-call-CvilN9ti.cjs.map → tool-call-Bu66PkD-.cjs.map} +1 -1
- package/dist/{tool-call-BxYXs9w0.js → tool-call-Ch9-jjXU.js} +34 -4
- package/dist/{tool-call-BxYXs9w0.js.map → tool-call-Ch9-jjXU.js.map} +1 -1
- package/dist/{tool-card-B7O8AsRl.cjs → tool-card-DrqPZfPQ.cjs} +20 -6
- package/dist/tool-card-DrqPZfPQ.cjs.map +1 -0
- package/dist/{tool-card-ELW898uw.js → tool-card-sO6P2Qj4.js} +20 -6
- package/dist/tool-card-sO6P2Qj4.js.map +1 -0
- package/dist/{tool-presentation-BLErsb7c.cjs → tool-presentation-CQlDEwgS.cjs} +26 -1
- package/dist/tool-presentation-CQlDEwgS.cjs.map +1 -0
- package/dist/{tool-presentation-BSZYIWx2.js → tool-presentation-DvCsb_kz.js} +26 -1
- package/dist/tool-presentation-DvCsb_kz.js.map +1 -0
- package/dist/{trace-filters-BJaebsxJ.js → trace-filters-CaWkw779.js} +2 -3
- package/dist/trace-filters-CaWkw779.js.map +1 -0
- package/dist/{trace-filters-BNEZ31HX.cjs → trace-filters-a0N9bf52.cjs} +1 -2
- package/dist/trace-filters-a0N9bf52.cjs.map +1 -0
- package/dist/{use-workflow-graph-runtime-deTN_q_G.js → use-workflow-graph-runtime-BKNhOKsH.js} +3 -3
- package/dist/{use-workflow-graph-runtime-deTN_q_G.js.map → use-workflow-graph-runtime-BKNhOKsH.js.map} +1 -1
- package/dist/{use-workflow-graph-runtime-DkwQjMEV.cjs → use-workflow-graph-runtime-DYao-08R.cjs} +3 -3
- package/dist/{use-workflow-graph-runtime-DkwQjMEV.cjs.map → use-workflow-graph-runtime-DYao-08R.cjs.map} +1 -1
- package/dist/utils/toast.cjs.js +1 -1
- package/dist/utils/toast.es.js +1 -1
- package/package.json +12 -10
- package/theme.css +4 -0
- package/dist/ActionRow-BfK77pCT.cjs.map +0 -1
- package/dist/ActionRow-Cd6tOC2K.js.map +0 -1
- package/dist/Button-Bw1e3ONi.js.map +0 -1
- package/dist/Button-YQRflC47.cjs.map +0 -1
- package/dist/DateTimeRangePicker-C_Lie_2P.js.map +0 -1
- package/dist/DateTimeRangePicker-HmPOHwAQ.cjs.map +0 -1
- package/dist/FilterBar--4oguuVe.js.map +0 -1
- package/dist/FilterBar-BUd4f7oi.cjs.map +0 -1
- package/dist/combobox-parts-BZVXwbG7.cjs.map +0 -1
- package/dist/combobox-parts-W7KRQUsV.js.map +0 -1
- package/dist/components/ButtonsGroup.cjs.js.map +0 -1
- package/dist/components/ButtonsGroup.es.js.map +0 -1
- package/dist/domains/traces/components/trace-time-range-chip.cjs.js +0 -90
- package/dist/domains/traces/components/trace-time-range-chip.cjs.js.map +0 -1
- package/dist/domains/traces/components/trace-time-range-chip.d.ts +0 -1
- package/dist/domains/traces/components/trace-time-range-chip.es.js +0 -86
- package/dist/domains/traces/components/trace-time-range-chip.es.js.map +0 -1
- package/dist/filter-bar-chip-7O02P9Vk.js.map +0 -1
- package/dist/filter-bar-chip-BUyMf8XQ.cjs.map +0 -1
- package/dist/input-group-g85FYfze.js.map +0 -1
- package/dist/input-group-uDpFNnSW.cjs.map +0 -1
- package/dist/list-search-BEJmYa9a.cjs.map +0 -1
- package/dist/list-search-bg7WzULj.js.map +0 -1
- package/dist/observability-saved-views-Bo5kLN20.js.map +0 -1
- package/dist/observability-saved-views-CwCii7hh.cjs.map +0 -1
- package/dist/select-BbFpEBAY.js.map +0 -1
- package/dist/select-NySY9Men.cjs.map +0 -1
- package/dist/src/domains/traces/components/trace-time-range-chip.d.ts +0 -22
- package/dist/tool-card-B7O8AsRl.cjs.map +0 -1
- package/dist/tool-card-ELW898uw.js.map +0 -1
- package/dist/tool-presentation-BLErsb7c.cjs.map +0 -1
- package/dist/tool-presentation-BSZYIWx2.js.map +0 -1
- package/dist/trace-filters-BJaebsxJ.js.map +0 -1
- package/dist/trace-filters-BNEZ31HX.cjs.map +0 -1
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
const require_utils = require("./utils-uDc1ofX1.cjs");
|
|
2
2
|
const require_tooltip = require("./tooltip-BiRLT3Th.cjs");
|
|
3
|
-
const require_Button = require("./Button-
|
|
3
|
+
const require_Button = require("./Button-DLcMcuUL.cjs");
|
|
4
4
|
const require_primitives_menu_item = require("./primitives/menu-item.cjs.js");
|
|
5
5
|
const require_primitives_password_manager_autofill = require("./primitives/password-manager-autofill.cjs.js");
|
|
6
6
|
const require_input = require("./input-2hRXcZIu.cjs");
|
|
7
7
|
const require_dropdown_menu = require("./dropdown-menu-BETTTPBB.cjs");
|
|
8
|
-
const
|
|
8
|
+
const require_buttons_group = require("./buttons-group-Dc6R7YSs.cjs");
|
|
9
9
|
const require_spinner = require("./spinner-C8ZxiA5C.cjs");
|
|
10
10
|
const require_popover = require("./popover-BJqa6Hz6.cjs");
|
|
11
11
|
let react = require("react");
|
|
@@ -175,16 +175,16 @@ function LockedTokenPill({ field, value, tooltipContent }) {
|
|
|
175
175
|
delayDuration: 150,
|
|
176
176
|
children: /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(require_tooltip.Tooltip, { children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_tooltip.TooltipTrigger, {
|
|
177
177
|
asChild: true,
|
|
178
|
-
children: /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(
|
|
178
|
+
children: /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(require_buttons_group.ButtonsGroup, {
|
|
179
179
|
"data-locked-field-id": field.id,
|
|
180
180
|
"data-property-filter-pill": "locked",
|
|
181
181
|
tabIndex: 0,
|
|
182
182
|
"aria-label": lockA11yLabel,
|
|
183
183
|
children: [
|
|
184
|
-
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(
|
|
185
|
-
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(
|
|
186
|
-
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(
|
|
187
|
-
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(
|
|
184
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_buttons_group.ButtonsGroupText, { children: field.label }),
|
|
185
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_buttons_group.ButtonsGroupText, { children: "is" }),
|
|
186
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_buttons_group.ButtonsGroupText, { children: display }),
|
|
187
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_buttons_group.ButtonsGroupText, { children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(lucide_react.LockIcon, {}) })
|
|
188
188
|
]
|
|
189
189
|
})
|
|
190
190
|
}), /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_tooltip.TooltipContent, { children: tooltipContent })] })
|
|
@@ -199,9 +199,9 @@ function TextTokenPill({ field, value, onChange, onRemove, disabled, autoFocus }
|
|
|
199
199
|
(0, react.useEffect)(() => {
|
|
200
200
|
if (autoFocus) inputRef.current?.focus();
|
|
201
201
|
}, [autoFocus]);
|
|
202
|
-
return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(
|
|
203
|
-
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(
|
|
204
|
-
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(
|
|
202
|
+
return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(require_buttons_group.ButtonsGroup, { children: [
|
|
203
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_buttons_group.ButtonsGroupText, { children: field.label }),
|
|
204
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_buttons_group.ButtonsGroupText, { children: "is" }),
|
|
205
205
|
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_input.Input, {
|
|
206
206
|
ref: inputRef,
|
|
207
207
|
disabled,
|
|
@@ -237,9 +237,9 @@ function TextTokenPill({ field, value, onChange, onRemove, disabled, autoFocus }
|
|
|
237
237
|
}
|
|
238
238
|
function PickMultiTokenPill({ field, token, tokens, onChange, onRemove, disabled }) {
|
|
239
239
|
const [open, setOpen] = (0, react.useState)(false);
|
|
240
|
-
return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(
|
|
241
|
-
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(
|
|
242
|
-
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(
|
|
240
|
+
return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(require_buttons_group.ButtonsGroup, { children: [
|
|
241
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_buttons_group.ButtonsGroupText, { children: field.label }),
|
|
242
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_buttons_group.ButtonsGroupText, { children: "is" }),
|
|
243
243
|
/* @__PURE__ */ (0, react_jsx_runtime.jsxs)(require_popover.Popover, {
|
|
244
244
|
open,
|
|
245
245
|
onOpenChange: setOpen,
|
|
@@ -323,10 +323,10 @@ function PropertyFilterApplied({ fields, tokens, onTokensChange, disabled, autoF
|
|
|
323
323
|
}),
|
|
324
324
|
onRemove: () => removeTokenAt(index)
|
|
325
325
|
}, `${token.fieldId}-${index}`);
|
|
326
|
-
return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(
|
|
327
|
-
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(
|
|
328
|
-
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(
|
|
329
|
-
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(
|
|
326
|
+
return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(require_buttons_group.ButtonsGroup, { children: [
|
|
327
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_buttons_group.ButtonsGroupText, { children: field.label }),
|
|
328
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_buttons_group.ButtonsGroupText, { children: "is" }),
|
|
329
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_buttons_group.ButtonsGroupText, { children: stringifyTokenValue(token.value) }),
|
|
330
330
|
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_Button.Button, {
|
|
331
331
|
size: "icon-md",
|
|
332
332
|
type: "button",
|
|
@@ -358,4 +358,4 @@ Object.defineProperty(exports, "PropertyFilterApplied", {
|
|
|
358
358
|
}
|
|
359
359
|
});
|
|
360
360
|
|
|
361
|
-
//# sourceMappingURL=property-filter-applied-
|
|
361
|
+
//# sourceMappingURL=property-filter-applied-BCeRLcXb.cjs.map
|
package/dist/{property-filter-applied-DqsPFbYM.cjs.map → property-filter-applied-BCeRLcXb.cjs.map}
RENAMED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"property-filter-applied-DqsPFbYM.cjs","names":["Button","XIcon","DropdownMenu","EllipsisVerticalIcon","SaveIcon","Trash2Icon","cn","menuItemButtonClass","menuItemCheckClass","CheckIcon","useState","useMemo","_Fragment","menuSearchClasses","SearchIcon","passwordManagerOptOutProps","menuEmptyClass","Spinner","TooltipProvider","Tooltip","TooltipTrigger","ButtonsGroup","ButtonsGroupText","LockIcon","TooltipContent","useState","useRef","Input","Button","XIcon","Popover","PopoverTrigger","PopoverContent"],"sources":["../src/ds/components/PropertyFilter/property-filter-actions.tsx","../src/ds/components/PropertyFilter/pick-multi-panel.tsx","../src/ds/components/PropertyFilter/property-filter-applied.tsx"],"sourcesContent":["import { EllipsisVerticalIcon, SaveIcon, Trash2Icon, XIcon } from 'lucide-react';\nimport { Button } from '@/ds/components/Button/Button';\nimport { DropdownMenu } from '@/ds/components/DropdownMenu/dropdown-menu';\n\nexport type PropertyFilterActionsProps = {\n disabled?: boolean;\n /** Neutralize each pill's value (keep pills, clear values). Shown as a button, not a menu item. */\n onClear?: () => void;\n /** Fully remove all active filters. Rendered as \"Remove all filters\" inside the overflow menu. */\n onRemoveAll?: () => void;\n /** Persist the current filter set (typically to localStorage) for later restoration. */\n onSave?: () => void;\n /** Drop a previously-saved filter set. Wire only when a saved set actually exists. */\n onRemoveSaved?: () => void;\n};\n\n/**\n * Shared action bar for filter-driven pages (traces, logs, …). Renders a\n * Clear button and an overflow menu with Remove all / Save / Remove saved actions.\n */\nexport function PropertyFilterActions({\n disabled,\n onClear,\n onRemoveAll,\n onSave,\n onRemoveSaved,\n}: PropertyFilterActionsProps) {\n const hasMenuItems = !!(onRemoveAll || onSave || onRemoveSaved);\n if (!onClear && !hasMenuItems) return null;\n\n return (\n <div className=\"flex items-center gap-2\">\n {onClear && (\n <Button disabled={disabled} size=\"md\" onClick={onClear} icon={<XIcon />}>\n Clear\n </Button>\n )}\n\n {hasMenuItems && (\n <DropdownMenu>\n <DropdownMenu.Trigger asChild>\n <Button disabled={disabled} size=\"icon-md\" aria-label=\"More filter actions\">\n <EllipsisVerticalIcon />\n </Button>\n </DropdownMenu.Trigger>\n <DropdownMenu.Content align=\"end\">\n {onRemoveAll && (\n <DropdownMenu.Item onSelect={() => onRemoveAll()}>\n <XIcon />\n Remove all filters\n </DropdownMenu.Item>\n )}\n {onRemoveAll && (onSave || onRemoveSaved) && <DropdownMenu.Separator />}\n {onSave && (\n <DropdownMenu.Item onSelect={() => onSave()}>\n <SaveIcon />\n Save filters for next time\n </DropdownMenu.Item>\n )}\n {onRemoveSaved && (\n <DropdownMenu.Item onSelect={() => onRemoveSaved()}>\n <Trash2Icon />\n Remove saved filters\n </DropdownMenu.Item>\n )}\n </DropdownMenu.Content>\n </DropdownMenu>\n )}\n </div>\n );\n}\n","import { CheckIcon, SearchIcon } from 'lucide-react';\nimport { useMemo, useState } from 'react';\nimport type { PropertyFilterField, PropertyFilterToken } from './types';\nimport { Spinner } from '@/ds/components/Spinner/spinner';\nimport { menuEmptyClass, menuItemButtonClass, menuItemCheckClass, menuSearchClasses } from '@/ds/primitives/menu-item';\nimport { passwordManagerOptOutProps } from '@/ds/primitives/password-manager-autofill';\nimport { cn } from '@/lib/utils';\n\n// Same rendering as Combobox items: no visible control, a trailing check when selected.\n// Focus is on the item itself (roving via [data-pick-multi-item]).\nconst pickMultiItemClass = cn(menuItemButtonClass, 'min-w-0');\n\nfunction PickMultiItem({\n role,\n checked,\n label,\n onClick,\n}: {\n role: 'checkbox' | 'radio';\n checked: boolean;\n label: string;\n onClick: () => void;\n}) {\n return (\n <button\n type=\"button\"\n role={role}\n aria-checked={checked}\n data-selected={checked || undefined}\n data-pick-multi-item=\"\"\n title={label}\n className={pickMultiItemClass}\n onClick={onClick}\n >\n <span className=\"min-w-0 flex-1 truncate\">{label}</span>\n {checked && (\n <span className={menuItemCheckClass}>\n <CheckIcon />\n </span>\n )}\n </button>\n );\n}\n\ntype PickMultiField = Extract<PropertyFilterField, { kind: 'pick-multi' }>;\n\nexport type PickMultiPanelProps = {\n field: PickMultiField;\n tokens: PropertyFilterToken[];\n /** Always carries a value: an empty list is how the panel says \"nothing selected\". */\n onChange: (fieldId: string, value: string | string[]) => void;\n};\n\n/**\n * Reusable body for a pick-multi side popover: optional search input plus a\n * radio group (single-select) or checkbox list (when `field.multi` is true).\n * Shared between the Filter Creator's property-picker side popover and the\n * PropertyFilterApplied pill's inline editor so both surfaces use the exact same UI.\n */\nexport function PickMultiPanel({ field, tokens, onChange }: PickMultiPanelProps) {\n const [query, setQuery] = useState('');\n const listClassName = 'max-h-[80dvh] overflow-auto p-1';\n\n const filteredOptions = useMemo(() => {\n const q = query.trim().toLowerCase();\n if (!q) return field.options;\n return field.options.filter(o => o.label.toLowerCase().includes(q));\n }, [field.options, query]);\n\n const token = useMemo(() => tokens.find(t => t.fieldId === field.id), [tokens, field.id]);\n // Fall back to `defaultValue` when no token exists — lets view-toggle fields (e.g. List mode)\n // show their default option pre-selected before the user explicitly picks one.\n const selectedValue = typeof token?.value === 'string' ? token.value : !field.multi ? field.defaultValue : undefined;\n const selectedValues = useMemo<string[]>(() => {\n const value = token?.value;\n if (Array.isArray(value)) return value;\n if (typeof value === 'string') return [value];\n return [];\n }, [token]);\n\n return (\n <>\n {field.searchable !== false && (\n <div className={menuSearchClasses.container}>\n <SearchIcon className={menuSearchClasses.icon} />\n <input\n type=\"text\"\n value={query}\n onChange={e => setQuery(e.target.value)}\n placeholder={`Search ${field.label.toLowerCase()}...`}\n className={menuSearchClasses.input}\n {...passwordManagerOptOutProps}\n onKeyDown={e => {\n if (e.key !== 'ArrowDown') return;\n const panel = e.currentTarget.closest<HTMLElement>('[data-pick-multi-panel]');\n const first = panel?.querySelector<HTMLElement>('[data-pick-multi-item]:not([disabled])');\n if (!first) return;\n e.preventDefault();\n e.stopPropagation();\n first.focus();\n }}\n />\n </div>\n )}\n\n {field.isLoading ? (\n <div className={cn(menuEmptyClass, 'm-1')}>\n <Spinner size=\"sm\" className=\"size-3 text-muted-foreground\" />\n Loading options…\n </div>\n ) : filteredOptions.length === 0 ? (\n <div className={cn(menuEmptyClass, 'm-1')}>{field.emptyText ?? 'No option found.'}</div>\n ) : field.multi ? (\n <div className={listClassName}>\n <>\n {filteredOptions.map(option => {\n const checked = selectedValues.includes(option.value);\n return (\n <PickMultiItem\n key={option.value}\n role=\"checkbox\"\n checked={checked}\n label={option.label}\n onClick={() =>\n onChange(\n field.id,\n checked ? selectedValues.filter(v => v !== option.value) : [...selectedValues, option.value],\n )\n }\n />\n );\n })}\n </>\n </div>\n ) : (\n <div role=\"radiogroup\" className={listClassName}>\n <>\n {filteredOptions.map(option => (\n <PickMultiItem\n key={option.value}\n role=\"radio\"\n checked={selectedValue === option.value}\n label={option.label}\n onClick={() => onChange(field.id, option.value)}\n />\n ))}\n {!field.omitAnyOption && (\n <PickMultiItem\n role=\"radio\"\n checked={selectedValue === 'Any'}\n label=\"Any\"\n onClick={() => onChange(field.id, 'Any')}\n />\n )}\n </>\n </div>\n )}\n </>\n );\n}\n","import { LockIcon, XIcon } from 'lucide-react';\nimport type { ReactNode } from 'react';\nimport { useEffect, useRef, useState } from 'react';\nimport { Button } from '../Button';\nimport { ButtonsGroup, ButtonsGroupText } from '../ButtonsGroup';\nimport { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger } from '../Tooltip';\nimport { PickMultiPanel } from './pick-multi-panel';\nimport type { PropertyFilterField, PropertyFilterToken } from './types';\nimport { Input } from '@/ds/components/Input';\nimport { Popover, PopoverContent, PopoverTrigger } from '@/ds/components/Popover/popover';\nimport { MENU_SIDE_OFFSET } from '@/ds/primitives/menu-item';\n\nexport type PropertyFilterAppliedProps = {\n fields: PropertyFilterField[];\n tokens: PropertyFilterToken[];\n onTokensChange: (tokens: PropertyFilterToken[]) => void;\n disabled?: boolean;\n /**\n * Field id that was just added via the Creator — rendered pill auto-focuses\n * its input so the user can start typing immediately.\n */\n autoFocusFieldId?: string;\n /**\n * Field ids whose pills must remain visible and read-only — value stays\n * displayed but cannot be edited or removed. Use when an upstream context\n * (e.g. agent-scoped traces tab) pre-applies a filter that the user must\n * not be able to clear.\n */\n lockedFieldIds?: readonly string[];\n /** Tooltip content shown on hover/focus of any locked pill. */\n lockedTooltipContent?: ReactNode;\n};\n\nfunction stringifyTokenValue(value: string | string[]) {\n if (Array.isArray(value)) return value.length === 0 ? 'Any' : value.join(', ');\n return value;\n}\n\nconst DEFAULT_LOCKED_TOOLTIP = 'This filter is set by the current context and cannot be removed here.';\n\nfunction lookupOptionLabel(field: PropertyFilterField, value: string | string[]): string {\n if (field.kind === 'pick-multi' && field.options) {\n if (Array.isArray(value)) {\n if (value.length === 0) return 'Any';\n return value.map(v => field.options.find(o => o.value === v)?.label ?? v).join(', ');\n }\n return field.options.find(o => o.value === value)?.label ?? value;\n }\n return stringifyTokenValue(value);\n}\n\ntype LockedTokenPillProps = {\n field: PropertyFilterField;\n value: string | string[];\n tooltipContent: ReactNode;\n};\n\nfunction LockedTokenPill({ field, value, tooltipContent }: LockedTokenPillProps) {\n const display = lookupOptionLabel(field, value);\n const lockA11yLabel = `${field.label} filter is locked by context`;\n\n return (\n <TooltipProvider delayDuration={150}>\n <Tooltip>\n <TooltipTrigger asChild>\n <ButtonsGroup\n data-locked-field-id={field.id}\n data-property-filter-pill=\"locked\"\n tabIndex={0}\n aria-label={lockA11yLabel}\n >\n <ButtonsGroupText>{field.label}</ButtonsGroupText>\n <ButtonsGroupText>is</ButtonsGroupText>\n <ButtonsGroupText>{display}</ButtonsGroupText>\n <ButtonsGroupText>\n <LockIcon />\n </ButtonsGroupText>\n </ButtonsGroup>\n </TooltipTrigger>\n <TooltipContent>{tooltipContent}</TooltipContent>\n </Tooltip>\n </TooltipProvider>\n );\n}\n\ntype TextTokenPillProps = {\n field: Extract<PropertyFilterField, { kind: 'text' }>;\n value: string;\n onChange: (value: string) => void;\n onRemove: () => void;\n disabled?: boolean;\n autoFocus?: boolean;\n};\n\nfunction TextTokenPill({ field, value, onChange, onRemove, disabled, autoFocus }: TextTokenPillProps) {\n // Local draft keeps the caret stable when the URL round-trip trims the\n // stored value (e.g. trailing spaces). We only re-sync from the prop when\n // the external value is genuinely different from our current (trimmed) draft.\n const [draft, setDraft] = useState(value);\n const inputRef = useRef<HTMLInputElement>(null);\n\n useEffect(() => {\n if (draft.trim() !== value) setDraft(value);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [value]);\n\n useEffect(() => {\n if (autoFocus) inputRef.current?.focus();\n }, [autoFocus]);\n\n return (\n <ButtonsGroup>\n <ButtonsGroupText>{field.label}</ButtonsGroupText>\n <ButtonsGroupText>is</ButtonsGroupText>\n <Input\n ref={inputRef}\n disabled={disabled}\n value={draft}\n placeholder={field.placeholder ?? `Enter ${field.label}`}\n onChange={e => {\n const next = e.target.value;\n setDraft(next);\n // Apply live — URL and traces query update on every keystroke.\n // Empty values persist as empty-value tokens so the pill stays visible.\n if (next.trim() !== value) onChange(next);\n }}\n onKeyDown={e => {\n if (e.key === 'Enter') {\n e.preventDefault();\n const trimmed = draft.trim();\n if (trimmed !== value) onChange(trimmed);\n } else if (e.key === 'Escape') {\n e.preventDefault();\n setDraft(value);\n e.currentTarget.blur();\n }\n }}\n />\n <Button\n size=\"icon-md\"\n type=\"button\"\n disabled={disabled}\n aria-label={`Remove ${field.label} filter`}\n onMouseDown={e => e.preventDefault()}\n onClick={onRemove}\n >\n <XIcon />\n </Button>\n </ButtonsGroup>\n );\n}\n\ntype PickMultiTokenPillProps = {\n field: Extract<PropertyFilterField, { kind: 'pick-multi' }>;\n token: PropertyFilterToken;\n tokens: PropertyFilterToken[];\n onChange: (fieldId: string, value: string | string[]) => void;\n onRemove: () => void;\n disabled?: boolean;\n};\n\nfunction PickMultiTokenPill({ field, token, tokens, onChange, onRemove, disabled }: PickMultiTokenPillProps) {\n const [open, setOpen] = useState(false);\n\n return (\n <ButtonsGroup>\n <ButtonsGroupText>{field.label}</ButtonsGroupText>\n <ButtonsGroupText>is</ButtonsGroupText>\n <Popover open={open} onOpenChange={setOpen}>\n <PopoverTrigger asChild>\n <Button type=\"button\" disabled={disabled}>\n {stringifyTokenValue(token.value)}\n </Button>\n </PopoverTrigger>\n <PopoverContent align=\"start\" sideOffset={MENU_SIDE_OFFSET} className=\"w-64 p-0\" data-pick-multi-panel>\n <PickMultiPanel field={field} tokens={tokens} onChange={onChange} />\n </PopoverContent>\n </Popover>\n <Button\n size=\"icon-md\"\n type=\"button\"\n disabled={disabled}\n aria-label={`Remove ${field.label} filter`}\n onClick={onRemove}\n >\n <XIcon />\n </Button>\n </ButtonsGroup>\n );\n}\n\n/**\n * Applied filter pills. Text/id-style tokens render with an always-active\n * input so the user can edit the value inline (and an empty token is valid —\n * it persists in the URL until the user explicitly removes it via ×).\n * Pick-multi tokens render with a clickable value that opens the same side\n * popover as the Filter Creator so the user can update selections in place.\n * Creation lives in a separate component (PropertyFilterCreator).\n */\nexport function PropertyFilterApplied({\n fields,\n tokens,\n onTokensChange,\n disabled,\n autoFocusFieldId,\n lockedFieldIds,\n lockedTooltipContent = DEFAULT_LOCKED_TOOLTIP,\n}: PropertyFilterAppliedProps) {\n if (tokens.length === 0) return null;\n\n const lockedSet = new Set(lockedFieldIds ?? []);\n\n const replaceTokenAt = (index: number, next: PropertyFilterToken) => {\n const copy = [...tokens];\n copy[index] = next;\n onTokensChange(copy);\n };\n\n const removeTokenAt = (index: number) => {\n onTokensChange(tokens.filter((_, i) => i !== index));\n };\n\n return (\n <div className=\"flex flex-wrap items-center gap-2\">\n {tokens.map((token, index) => {\n const field = fields.find(f => f.id === token.fieldId);\n if (!field) return null;\n\n if (lockedSet.has(token.fieldId)) {\n return (\n <LockedTokenPill\n key={`${token.fieldId}-${index}`}\n field={field}\n value={token.value}\n tooltipContent={lockedTooltipContent}\n />\n );\n }\n\n if (field.kind === 'text' && !Array.isArray(token.value)) {\n return (\n <TextTokenPill\n key={`${token.fieldId}-${index}`}\n field={field}\n value={token.value}\n disabled={disabled}\n autoFocus={autoFocusFieldId === token.fieldId}\n onChange={nextValue => replaceTokenAt(index, { fieldId: token.fieldId, value: nextValue })}\n onRemove={() => removeTokenAt(index)}\n />\n );\n }\n\n if (field.kind === 'pick-multi') {\n return (\n <PickMultiTokenPill\n key={`${token.fieldId}-${index}`}\n field={field}\n token={token}\n tokens={tokens}\n disabled={disabled}\n // Unselecting everything (empty array) keeps the pill alive in a\n // neutral state — the user explicitly removes it via ×. This lets\n // the page-level Reset neutralize values without dropping the pill.\n onChange={(fieldId, value) => replaceTokenAt(index, { fieldId, value })}\n onRemove={() => removeTokenAt(index)}\n />\n );\n }\n\n return (\n <ButtonsGroup key={`${token.fieldId}-${index}`}>\n <ButtonsGroupText>{field.label}</ButtonsGroupText>\n <ButtonsGroupText>is</ButtonsGroupText>\n <ButtonsGroupText>{stringifyTokenValue(token.value)}</ButtonsGroupText>\n <Button\n size=\"icon-md\"\n type=\"button\"\n disabled={disabled}\n aria-label={`Remove ${field.label} filter`}\n onClick={() => removeTokenAt(index)}\n >\n <XIcon />\n </Button>\n </ButtonsGroup>\n );\n })}\n </div>\n );\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"property-filter-applied-BCeRLcXb.cjs","names":["Button","XIcon","DropdownMenu","EllipsisVerticalIcon","SaveIcon","Trash2Icon","cn","menuItemButtonClass","menuItemCheckClass","CheckIcon","useState","useMemo","_Fragment","menuSearchClasses","SearchIcon","passwordManagerOptOutProps","menuEmptyClass","Spinner","TooltipProvider","Tooltip","TooltipTrigger","ButtonsGroup","ButtonsGroupText","LockIcon","TooltipContent","useState","useRef","Input","Button","XIcon","Popover","PopoverTrigger","PopoverContent"],"sources":["../src/ds/components/PropertyFilter/property-filter-actions.tsx","../src/ds/components/PropertyFilter/pick-multi-panel.tsx","../src/ds/components/PropertyFilter/property-filter-applied.tsx"],"sourcesContent":["import { EllipsisVerticalIcon, SaveIcon, Trash2Icon, XIcon } from 'lucide-react';\nimport { Button } from '@/ds/components/Button/Button';\nimport { DropdownMenu } from '@/ds/components/DropdownMenu/dropdown-menu';\n\nexport type PropertyFilterActionsProps = {\n disabled?: boolean;\n /** Neutralize each pill's value (keep pills, clear values). Shown as a button, not a menu item. */\n onClear?: () => void;\n /** Fully remove all active filters. Rendered as \"Remove all filters\" inside the overflow menu. */\n onRemoveAll?: () => void;\n /** Persist the current filter set (typically to localStorage) for later restoration. */\n onSave?: () => void;\n /** Drop a previously-saved filter set. Wire only when a saved set actually exists. */\n onRemoveSaved?: () => void;\n};\n\n/**\n * Shared action bar for filter-driven pages (traces, logs, …). Renders a\n * Clear button and an overflow menu with Remove all / Save / Remove saved actions.\n */\nexport function PropertyFilterActions({\n disabled,\n onClear,\n onRemoveAll,\n onSave,\n onRemoveSaved,\n}: PropertyFilterActionsProps) {\n const hasMenuItems = !!(onRemoveAll || onSave || onRemoveSaved);\n if (!onClear && !hasMenuItems) return null;\n\n return (\n <div className=\"flex items-center gap-2\">\n {onClear && (\n <Button disabled={disabled} size=\"md\" onClick={onClear} icon={<XIcon />}>\n Clear\n </Button>\n )}\n\n {hasMenuItems && (\n <DropdownMenu>\n <DropdownMenu.Trigger asChild>\n <Button disabled={disabled} size=\"icon-md\" aria-label=\"More filter actions\">\n <EllipsisVerticalIcon />\n </Button>\n </DropdownMenu.Trigger>\n <DropdownMenu.Content align=\"end\">\n {onRemoveAll && (\n <DropdownMenu.Item onSelect={() => onRemoveAll()}>\n <XIcon />\n Remove all filters\n </DropdownMenu.Item>\n )}\n {onRemoveAll && (onSave || onRemoveSaved) && <DropdownMenu.Separator />}\n {onSave && (\n <DropdownMenu.Item onSelect={() => onSave()}>\n <SaveIcon />\n Save filters for next time\n </DropdownMenu.Item>\n )}\n {onRemoveSaved && (\n <DropdownMenu.Item onSelect={() => onRemoveSaved()}>\n <Trash2Icon />\n Remove saved filters\n </DropdownMenu.Item>\n )}\n </DropdownMenu.Content>\n </DropdownMenu>\n )}\n </div>\n );\n}\n","import { CheckIcon, SearchIcon } from 'lucide-react';\nimport { useMemo, useState } from 'react';\nimport type { PropertyFilterField, PropertyFilterToken } from './types';\nimport { Spinner } from '@/ds/components/Spinner/spinner';\nimport { menuEmptyClass, menuItemButtonClass, menuItemCheckClass, menuSearchClasses } from '@/ds/primitives/menu-item';\nimport { passwordManagerOptOutProps } from '@/ds/primitives/password-manager-autofill';\nimport { cn } from '@/lib/utils';\n\n// Same rendering as Combobox items: no visible control, a trailing check when selected.\n// Focus is on the item itself (roving via [data-pick-multi-item]).\nconst pickMultiItemClass = cn(menuItemButtonClass, 'min-w-0');\n\nfunction PickMultiItem({\n role,\n checked,\n label,\n onClick,\n}: {\n role: 'checkbox' | 'radio';\n checked: boolean;\n label: string;\n onClick: () => void;\n}) {\n return (\n <button\n type=\"button\"\n role={role}\n aria-checked={checked}\n data-selected={checked || undefined}\n data-pick-multi-item=\"\"\n title={label}\n className={pickMultiItemClass}\n onClick={onClick}\n >\n <span className=\"min-w-0 flex-1 truncate\">{label}</span>\n {checked && (\n <span className={menuItemCheckClass}>\n <CheckIcon />\n </span>\n )}\n </button>\n );\n}\n\ntype PickMultiField = Extract<PropertyFilterField, { kind: 'pick-multi' }>;\n\nexport type PickMultiPanelProps = {\n field: PickMultiField;\n tokens: PropertyFilterToken[];\n /** Always carries a value: an empty list is how the panel says \"nothing selected\". */\n onChange: (fieldId: string, value: string | string[]) => void;\n};\n\n/**\n * Reusable body for a pick-multi side popover: optional search input plus a\n * radio group (single-select) or checkbox list (when `field.multi` is true).\n * Shared between the Filter Creator's property-picker side popover and the\n * PropertyFilterApplied pill's inline editor so both surfaces use the exact same UI.\n */\nexport function PickMultiPanel({ field, tokens, onChange }: PickMultiPanelProps) {\n const [query, setQuery] = useState('');\n const listClassName = 'max-h-[80dvh] overflow-auto p-1';\n\n const filteredOptions = useMemo(() => {\n const q = query.trim().toLowerCase();\n if (!q) return field.options;\n return field.options.filter(o => o.label.toLowerCase().includes(q));\n }, [field.options, query]);\n\n const token = useMemo(() => tokens.find(t => t.fieldId === field.id), [tokens, field.id]);\n // Fall back to `defaultValue` when no token exists — lets view-toggle fields (e.g. List mode)\n // show their default option pre-selected before the user explicitly picks one.\n const selectedValue = typeof token?.value === 'string' ? token.value : !field.multi ? field.defaultValue : undefined;\n const selectedValues = useMemo<string[]>(() => {\n const value = token?.value;\n if (Array.isArray(value)) return value;\n if (typeof value === 'string') return [value];\n return [];\n }, [token]);\n\n return (\n <>\n {field.searchable !== false && (\n <div className={menuSearchClasses.container}>\n <SearchIcon className={menuSearchClasses.icon} />\n <input\n type=\"text\"\n value={query}\n onChange={e => setQuery(e.target.value)}\n placeholder={`Search ${field.label.toLowerCase()}...`}\n className={menuSearchClasses.input}\n {...passwordManagerOptOutProps}\n onKeyDown={e => {\n if (e.key !== 'ArrowDown') return;\n const panel = e.currentTarget.closest<HTMLElement>('[data-pick-multi-panel]');\n const first = panel?.querySelector<HTMLElement>('[data-pick-multi-item]:not([disabled])');\n if (!first) return;\n e.preventDefault();\n e.stopPropagation();\n first.focus();\n }}\n />\n </div>\n )}\n\n {field.isLoading ? (\n <div className={cn(menuEmptyClass, 'm-1')}>\n <Spinner size=\"sm\" className=\"size-3 text-muted-foreground\" />\n Loading options…\n </div>\n ) : filteredOptions.length === 0 ? (\n <div className={cn(menuEmptyClass, 'm-1')}>{field.emptyText ?? 'No option found.'}</div>\n ) : field.multi ? (\n <div className={listClassName}>\n <>\n {filteredOptions.map(option => {\n const checked = selectedValues.includes(option.value);\n return (\n <PickMultiItem\n key={option.value}\n role=\"checkbox\"\n checked={checked}\n label={option.label}\n onClick={() =>\n onChange(\n field.id,\n checked ? selectedValues.filter(v => v !== option.value) : [...selectedValues, option.value],\n )\n }\n />\n );\n })}\n </>\n </div>\n ) : (\n <div role=\"radiogroup\" className={listClassName}>\n <>\n {filteredOptions.map(option => (\n <PickMultiItem\n key={option.value}\n role=\"radio\"\n checked={selectedValue === option.value}\n label={option.label}\n onClick={() => onChange(field.id, option.value)}\n />\n ))}\n {!field.omitAnyOption && (\n <PickMultiItem\n role=\"radio\"\n checked={selectedValue === 'Any'}\n label=\"Any\"\n onClick={() => onChange(field.id, 'Any')}\n />\n )}\n </>\n </div>\n )}\n </>\n );\n}\n","import { LockIcon, XIcon } from 'lucide-react';\nimport type { ReactNode } from 'react';\nimport { useEffect, useRef, useState } from 'react';\nimport { Button } from '../Button';\nimport { ButtonsGroup, ButtonsGroupText } from '../ButtonsGroup';\nimport { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger } from '../Tooltip';\nimport { PickMultiPanel } from './pick-multi-panel';\nimport type { PropertyFilterField, PropertyFilterToken } from './types';\nimport { Input } from '@/ds/components/Input';\nimport { Popover, PopoverContent, PopoverTrigger } from '@/ds/components/Popover/popover';\nimport { MENU_SIDE_OFFSET } from '@/ds/primitives/menu-item';\n\nexport type PropertyFilterAppliedProps = {\n fields: PropertyFilterField[];\n tokens: PropertyFilterToken[];\n onTokensChange: (tokens: PropertyFilterToken[]) => void;\n disabled?: boolean;\n /**\n * Field id that was just added via the Creator — rendered pill auto-focuses\n * its input so the user can start typing immediately.\n */\n autoFocusFieldId?: string;\n /**\n * Field ids whose pills must remain visible and read-only — value stays\n * displayed but cannot be edited or removed. Use when an upstream context\n * (e.g. agent-scoped traces tab) pre-applies a filter that the user must\n * not be able to clear.\n */\n lockedFieldIds?: readonly string[];\n /** Tooltip content shown on hover/focus of any locked pill. */\n lockedTooltipContent?: ReactNode;\n};\n\nfunction stringifyTokenValue(value: string | string[]) {\n if (Array.isArray(value)) return value.length === 0 ? 'Any' : value.join(', ');\n return value;\n}\n\nconst DEFAULT_LOCKED_TOOLTIP = 'This filter is set by the current context and cannot be removed here.';\n\nfunction lookupOptionLabel(field: PropertyFilterField, value: string | string[]): string {\n if (field.kind === 'pick-multi' && field.options) {\n if (Array.isArray(value)) {\n if (value.length === 0) return 'Any';\n return value.map(v => field.options.find(o => o.value === v)?.label ?? v).join(', ');\n }\n return field.options.find(o => o.value === value)?.label ?? value;\n }\n return stringifyTokenValue(value);\n}\n\ntype LockedTokenPillProps = {\n field: PropertyFilterField;\n value: string | string[];\n tooltipContent: ReactNode;\n};\n\nfunction LockedTokenPill({ field, value, tooltipContent }: LockedTokenPillProps) {\n const display = lookupOptionLabel(field, value);\n const lockA11yLabel = `${field.label} filter is locked by context`;\n\n return (\n <TooltipProvider delayDuration={150}>\n <Tooltip>\n <TooltipTrigger asChild>\n <ButtonsGroup\n data-locked-field-id={field.id}\n data-property-filter-pill=\"locked\"\n tabIndex={0}\n aria-label={lockA11yLabel}\n >\n <ButtonsGroupText>{field.label}</ButtonsGroupText>\n <ButtonsGroupText>is</ButtonsGroupText>\n <ButtonsGroupText>{display}</ButtonsGroupText>\n <ButtonsGroupText>\n <LockIcon />\n </ButtonsGroupText>\n </ButtonsGroup>\n </TooltipTrigger>\n <TooltipContent>{tooltipContent}</TooltipContent>\n </Tooltip>\n </TooltipProvider>\n );\n}\n\ntype TextTokenPillProps = {\n field: Extract<PropertyFilterField, { kind: 'text' }>;\n value: string;\n onChange: (value: string) => void;\n onRemove: () => void;\n disabled?: boolean;\n autoFocus?: boolean;\n};\n\nfunction TextTokenPill({ field, value, onChange, onRemove, disabled, autoFocus }: TextTokenPillProps) {\n // Local draft keeps the caret stable when the URL round-trip trims the\n // stored value (e.g. trailing spaces). We only re-sync from the prop when\n // the external value is genuinely different from our current (trimmed) draft.\n const [draft, setDraft] = useState(value);\n const inputRef = useRef<HTMLInputElement>(null);\n\n useEffect(() => {\n if (draft.trim() !== value) setDraft(value);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [value]);\n\n useEffect(() => {\n if (autoFocus) inputRef.current?.focus();\n }, [autoFocus]);\n\n return (\n <ButtonsGroup>\n <ButtonsGroupText>{field.label}</ButtonsGroupText>\n <ButtonsGroupText>is</ButtonsGroupText>\n <Input\n ref={inputRef}\n disabled={disabled}\n value={draft}\n placeholder={field.placeholder ?? `Enter ${field.label}`}\n onChange={e => {\n const next = e.target.value;\n setDraft(next);\n // Apply live — URL and traces query update on every keystroke.\n // Empty values persist as empty-value tokens so the pill stays visible.\n if (next.trim() !== value) onChange(next);\n }}\n onKeyDown={e => {\n if (e.key === 'Enter') {\n e.preventDefault();\n const trimmed = draft.trim();\n if (trimmed !== value) onChange(trimmed);\n } else if (e.key === 'Escape') {\n e.preventDefault();\n setDraft(value);\n e.currentTarget.blur();\n }\n }}\n />\n <Button\n size=\"icon-md\"\n type=\"button\"\n disabled={disabled}\n aria-label={`Remove ${field.label} filter`}\n onMouseDown={e => e.preventDefault()}\n onClick={onRemove}\n >\n <XIcon />\n </Button>\n </ButtonsGroup>\n );\n}\n\ntype PickMultiTokenPillProps = {\n field: Extract<PropertyFilterField, { kind: 'pick-multi' }>;\n token: PropertyFilterToken;\n tokens: PropertyFilterToken[];\n onChange: (fieldId: string, value: string | string[]) => void;\n onRemove: () => void;\n disabled?: boolean;\n};\n\nfunction PickMultiTokenPill({ field, token, tokens, onChange, onRemove, disabled }: PickMultiTokenPillProps) {\n const [open, setOpen] = useState(false);\n\n return (\n <ButtonsGroup>\n <ButtonsGroupText>{field.label}</ButtonsGroupText>\n <ButtonsGroupText>is</ButtonsGroupText>\n <Popover open={open} onOpenChange={setOpen}>\n <PopoverTrigger asChild>\n <Button type=\"button\" disabled={disabled}>\n {stringifyTokenValue(token.value)}\n </Button>\n </PopoverTrigger>\n <PopoverContent align=\"start\" sideOffset={MENU_SIDE_OFFSET} className=\"w-64 p-0\" data-pick-multi-panel>\n <PickMultiPanel field={field} tokens={tokens} onChange={onChange} />\n </PopoverContent>\n </Popover>\n <Button\n size=\"icon-md\"\n type=\"button\"\n disabled={disabled}\n aria-label={`Remove ${field.label} filter`}\n onClick={onRemove}\n >\n <XIcon />\n </Button>\n </ButtonsGroup>\n );\n}\n\n/**\n * Applied filter pills. Text/id-style tokens render with an always-active\n * input so the user can edit the value inline (and an empty token is valid —\n * it persists in the URL until the user explicitly removes it via ×).\n * Pick-multi tokens render with a clickable value that opens the same side\n * popover as the Filter Creator so the user can update selections in place.\n * Creation lives in a separate component (PropertyFilterCreator).\n */\nexport function PropertyFilterApplied({\n fields,\n tokens,\n onTokensChange,\n disabled,\n autoFocusFieldId,\n lockedFieldIds,\n lockedTooltipContent = DEFAULT_LOCKED_TOOLTIP,\n}: PropertyFilterAppliedProps) {\n if (tokens.length === 0) return null;\n\n const lockedSet = new Set(lockedFieldIds ?? []);\n\n const replaceTokenAt = (index: number, next: PropertyFilterToken) => {\n const copy = [...tokens];\n copy[index] = next;\n onTokensChange(copy);\n };\n\n const removeTokenAt = (index: number) => {\n onTokensChange(tokens.filter((_, i) => i !== index));\n };\n\n return (\n <div className=\"flex flex-wrap items-center gap-2\">\n {tokens.map((token, index) => {\n const field = fields.find(f => f.id === token.fieldId);\n if (!field) return null;\n\n if (lockedSet.has(token.fieldId)) {\n return (\n <LockedTokenPill\n key={`${token.fieldId}-${index}`}\n field={field}\n value={token.value}\n tooltipContent={lockedTooltipContent}\n />\n );\n }\n\n if (field.kind === 'text' && !Array.isArray(token.value)) {\n return (\n <TextTokenPill\n key={`${token.fieldId}-${index}`}\n field={field}\n value={token.value}\n disabled={disabled}\n autoFocus={autoFocusFieldId === token.fieldId}\n onChange={nextValue => replaceTokenAt(index, { fieldId: token.fieldId, value: nextValue })}\n onRemove={() => removeTokenAt(index)}\n />\n );\n }\n\n if (field.kind === 'pick-multi') {\n return (\n <PickMultiTokenPill\n key={`${token.fieldId}-${index}`}\n field={field}\n token={token}\n tokens={tokens}\n disabled={disabled}\n // Unselecting everything (empty array) keeps the pill alive in a\n // neutral state — the user explicitly removes it via ×. This lets\n // the page-level Reset neutralize values without dropping the pill.\n onChange={(fieldId, value) => replaceTokenAt(index, { fieldId, value })}\n onRemove={() => removeTokenAt(index)}\n />\n );\n }\n\n return (\n <ButtonsGroup key={`${token.fieldId}-${index}`}>\n <ButtonsGroupText>{field.label}</ButtonsGroupText>\n <ButtonsGroupText>is</ButtonsGroupText>\n <ButtonsGroupText>{stringifyTokenValue(token.value)}</ButtonsGroupText>\n <Button\n size=\"icon-md\"\n type=\"button\"\n disabled={disabled}\n aria-label={`Remove ${field.label} filter`}\n onClick={() => removeTokenAt(index)}\n >\n <XIcon />\n </Button>\n </ButtonsGroup>\n );\n })}\n </div>\n );\n}\n"],"mappings":"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"}
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import { t as cn } from "./utils-DQx8TpNT.js";
|
|
2
2
|
import { i as TooltipTrigger, n as TooltipContent, r as TooltipProvider, t as Tooltip } from "./tooltip-HzcLyGtV.js";
|
|
3
|
-
import { t as Button } from "./Button-
|
|
3
|
+
import { t as Button } from "./Button-CLXTbAY8.js";
|
|
4
4
|
import { menuEmptyClass, menuItemButtonClass, menuItemCheckClass, menuSearchClasses } from "./primitives/menu-item.es.js";
|
|
5
5
|
import { passwordManagerOptOutProps } from "./primitives/password-manager-autofill.es.js";
|
|
6
6
|
import { t as Input } from "./input-0l1uzOBZ.js";
|
|
7
7
|
import { t as DropdownMenu } from "./dropdown-menu-B4jY3J9e.js";
|
|
8
|
-
import {
|
|
8
|
+
import { n as ButtonsGroupText, t as ButtonsGroup } from "./buttons-group-DkFlnMiL.js";
|
|
9
9
|
import { t as Spinner } from "./spinner-CnLgLj9R.js";
|
|
10
10
|
import { i as PopoverTrigger, n as Popover, r as PopoverContent } from "./popover-CzHvTPk2.js";
|
|
11
11
|
import { useEffect, useMemo, useRef, useState } from "react";
|
|
@@ -341,4 +341,4 @@ function PropertyFilterApplied({ fields, tokens, onTokensChange, disabled, autoF
|
|
|
341
341
|
}
|
|
342
342
|
export { PickMultiPanel as n, PropertyFilterActions as r, PropertyFilterApplied as t };
|
|
343
343
|
|
|
344
|
-
//# sourceMappingURL=property-filter-applied-
|
|
344
|
+
//# sourceMappingURL=property-filter-applied-p3dTTDdb.js.map
|
package/dist/{property-filter-applied-DRglaEj-.js.map → property-filter-applied-p3dTTDdb.js.map}
RENAMED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"property-filter-applied-DRglaEj-.js","names":["_Fragment"],"sources":["../src/ds/components/PropertyFilter/property-filter-actions.tsx","../src/ds/components/PropertyFilter/pick-multi-panel.tsx","../src/ds/components/PropertyFilter/property-filter-applied.tsx"],"sourcesContent":["import { EllipsisVerticalIcon, SaveIcon, Trash2Icon, XIcon } from 'lucide-react';\nimport { Button } from '@/ds/components/Button/Button';\nimport { DropdownMenu } from '@/ds/components/DropdownMenu/dropdown-menu';\n\nexport type PropertyFilterActionsProps = {\n disabled?: boolean;\n /** Neutralize each pill's value (keep pills, clear values). Shown as a button, not a menu item. */\n onClear?: () => void;\n /** Fully remove all active filters. Rendered as \"Remove all filters\" inside the overflow menu. */\n onRemoveAll?: () => void;\n /** Persist the current filter set (typically to localStorage) for later restoration. */\n onSave?: () => void;\n /** Drop a previously-saved filter set. Wire only when a saved set actually exists. */\n onRemoveSaved?: () => void;\n};\n\n/**\n * Shared action bar for filter-driven pages (traces, logs, …). Renders a\n * Clear button and an overflow menu with Remove all / Save / Remove saved actions.\n */\nexport function PropertyFilterActions({\n disabled,\n onClear,\n onRemoveAll,\n onSave,\n onRemoveSaved,\n}: PropertyFilterActionsProps) {\n const hasMenuItems = !!(onRemoveAll || onSave || onRemoveSaved);\n if (!onClear && !hasMenuItems) return null;\n\n return (\n <div className=\"flex items-center gap-2\">\n {onClear && (\n <Button disabled={disabled} size=\"md\" onClick={onClear} icon={<XIcon />}>\n Clear\n </Button>\n )}\n\n {hasMenuItems && (\n <DropdownMenu>\n <DropdownMenu.Trigger asChild>\n <Button disabled={disabled} size=\"icon-md\" aria-label=\"More filter actions\">\n <EllipsisVerticalIcon />\n </Button>\n </DropdownMenu.Trigger>\n <DropdownMenu.Content align=\"end\">\n {onRemoveAll && (\n <DropdownMenu.Item onSelect={() => onRemoveAll()}>\n <XIcon />\n Remove all filters\n </DropdownMenu.Item>\n )}\n {onRemoveAll && (onSave || onRemoveSaved) && <DropdownMenu.Separator />}\n {onSave && (\n <DropdownMenu.Item onSelect={() => onSave()}>\n <SaveIcon />\n Save filters for next time\n </DropdownMenu.Item>\n )}\n {onRemoveSaved && (\n <DropdownMenu.Item onSelect={() => onRemoveSaved()}>\n <Trash2Icon />\n Remove saved filters\n </DropdownMenu.Item>\n )}\n </DropdownMenu.Content>\n </DropdownMenu>\n )}\n </div>\n );\n}\n","import { CheckIcon, SearchIcon } from 'lucide-react';\nimport { useMemo, useState } from 'react';\nimport type { PropertyFilterField, PropertyFilterToken } from './types';\nimport { Spinner } from '@/ds/components/Spinner/spinner';\nimport { menuEmptyClass, menuItemButtonClass, menuItemCheckClass, menuSearchClasses } from '@/ds/primitives/menu-item';\nimport { passwordManagerOptOutProps } from '@/ds/primitives/password-manager-autofill';\nimport { cn } from '@/lib/utils';\n\n// Same rendering as Combobox items: no visible control, a trailing check when selected.\n// Focus is on the item itself (roving via [data-pick-multi-item]).\nconst pickMultiItemClass = cn(menuItemButtonClass, 'min-w-0');\n\nfunction PickMultiItem({\n role,\n checked,\n label,\n onClick,\n}: {\n role: 'checkbox' | 'radio';\n checked: boolean;\n label: string;\n onClick: () => void;\n}) {\n return (\n <button\n type=\"button\"\n role={role}\n aria-checked={checked}\n data-selected={checked || undefined}\n data-pick-multi-item=\"\"\n title={label}\n className={pickMultiItemClass}\n onClick={onClick}\n >\n <span className=\"min-w-0 flex-1 truncate\">{label}</span>\n {checked && (\n <span className={menuItemCheckClass}>\n <CheckIcon />\n </span>\n )}\n </button>\n );\n}\n\ntype PickMultiField = Extract<PropertyFilterField, { kind: 'pick-multi' }>;\n\nexport type PickMultiPanelProps = {\n field: PickMultiField;\n tokens: PropertyFilterToken[];\n /** Always carries a value: an empty list is how the panel says \"nothing selected\". */\n onChange: (fieldId: string, value: string | string[]) => void;\n};\n\n/**\n * Reusable body for a pick-multi side popover: optional search input plus a\n * radio group (single-select) or checkbox list (when `field.multi` is true).\n * Shared between the Filter Creator's property-picker side popover and the\n * PropertyFilterApplied pill's inline editor so both surfaces use the exact same UI.\n */\nexport function PickMultiPanel({ field, tokens, onChange }: PickMultiPanelProps) {\n const [query, setQuery] = useState('');\n const listClassName = 'max-h-[80dvh] overflow-auto p-1';\n\n const filteredOptions = useMemo(() => {\n const q = query.trim().toLowerCase();\n if (!q) return field.options;\n return field.options.filter(o => o.label.toLowerCase().includes(q));\n }, [field.options, query]);\n\n const token = useMemo(() => tokens.find(t => t.fieldId === field.id), [tokens, field.id]);\n // Fall back to `defaultValue` when no token exists — lets view-toggle fields (e.g. List mode)\n // show their default option pre-selected before the user explicitly picks one.\n const selectedValue = typeof token?.value === 'string' ? token.value : !field.multi ? field.defaultValue : undefined;\n const selectedValues = useMemo<string[]>(() => {\n const value = token?.value;\n if (Array.isArray(value)) return value;\n if (typeof value === 'string') return [value];\n return [];\n }, [token]);\n\n return (\n <>\n {field.searchable !== false && (\n <div className={menuSearchClasses.container}>\n <SearchIcon className={menuSearchClasses.icon} />\n <input\n type=\"text\"\n value={query}\n onChange={e => setQuery(e.target.value)}\n placeholder={`Search ${field.label.toLowerCase()}...`}\n className={menuSearchClasses.input}\n {...passwordManagerOptOutProps}\n onKeyDown={e => {\n if (e.key !== 'ArrowDown') return;\n const panel = e.currentTarget.closest<HTMLElement>('[data-pick-multi-panel]');\n const first = panel?.querySelector<HTMLElement>('[data-pick-multi-item]:not([disabled])');\n if (!first) return;\n e.preventDefault();\n e.stopPropagation();\n first.focus();\n }}\n />\n </div>\n )}\n\n {field.isLoading ? (\n <div className={cn(menuEmptyClass, 'm-1')}>\n <Spinner size=\"sm\" className=\"size-3 text-muted-foreground\" />\n Loading options…\n </div>\n ) : filteredOptions.length === 0 ? (\n <div className={cn(menuEmptyClass, 'm-1')}>{field.emptyText ?? 'No option found.'}</div>\n ) : field.multi ? (\n <div className={listClassName}>\n <>\n {filteredOptions.map(option => {\n const checked = selectedValues.includes(option.value);\n return (\n <PickMultiItem\n key={option.value}\n role=\"checkbox\"\n checked={checked}\n label={option.label}\n onClick={() =>\n onChange(\n field.id,\n checked ? selectedValues.filter(v => v !== option.value) : [...selectedValues, option.value],\n )\n }\n />\n );\n })}\n </>\n </div>\n ) : (\n <div role=\"radiogroup\" className={listClassName}>\n <>\n {filteredOptions.map(option => (\n <PickMultiItem\n key={option.value}\n role=\"radio\"\n checked={selectedValue === option.value}\n label={option.label}\n onClick={() => onChange(field.id, option.value)}\n />\n ))}\n {!field.omitAnyOption && (\n <PickMultiItem\n role=\"radio\"\n checked={selectedValue === 'Any'}\n label=\"Any\"\n onClick={() => onChange(field.id, 'Any')}\n />\n )}\n </>\n </div>\n )}\n </>\n );\n}\n","import { LockIcon, XIcon } from 'lucide-react';\nimport type { ReactNode } from 'react';\nimport { useEffect, useRef, useState } from 'react';\nimport { Button } from '../Button';\nimport { ButtonsGroup, ButtonsGroupText } from '../ButtonsGroup';\nimport { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger } from '../Tooltip';\nimport { PickMultiPanel } from './pick-multi-panel';\nimport type { PropertyFilterField, PropertyFilterToken } from './types';\nimport { Input } from '@/ds/components/Input';\nimport { Popover, PopoverContent, PopoverTrigger } from '@/ds/components/Popover/popover';\nimport { MENU_SIDE_OFFSET } from '@/ds/primitives/menu-item';\n\nexport type PropertyFilterAppliedProps = {\n fields: PropertyFilterField[];\n tokens: PropertyFilterToken[];\n onTokensChange: (tokens: PropertyFilterToken[]) => void;\n disabled?: boolean;\n /**\n * Field id that was just added via the Creator — rendered pill auto-focuses\n * its input so the user can start typing immediately.\n */\n autoFocusFieldId?: string;\n /**\n * Field ids whose pills must remain visible and read-only — value stays\n * displayed but cannot be edited or removed. Use when an upstream context\n * (e.g. agent-scoped traces tab) pre-applies a filter that the user must\n * not be able to clear.\n */\n lockedFieldIds?: readonly string[];\n /** Tooltip content shown on hover/focus of any locked pill. */\n lockedTooltipContent?: ReactNode;\n};\n\nfunction stringifyTokenValue(value: string | string[]) {\n if (Array.isArray(value)) return value.length === 0 ? 'Any' : value.join(', ');\n return value;\n}\n\nconst DEFAULT_LOCKED_TOOLTIP = 'This filter is set by the current context and cannot be removed here.';\n\nfunction lookupOptionLabel(field: PropertyFilterField, value: string | string[]): string {\n if (field.kind === 'pick-multi' && field.options) {\n if (Array.isArray(value)) {\n if (value.length === 0) return 'Any';\n return value.map(v => field.options.find(o => o.value === v)?.label ?? v).join(', ');\n }\n return field.options.find(o => o.value === value)?.label ?? value;\n }\n return stringifyTokenValue(value);\n}\n\ntype LockedTokenPillProps = {\n field: PropertyFilterField;\n value: string | string[];\n tooltipContent: ReactNode;\n};\n\nfunction LockedTokenPill({ field, value, tooltipContent }: LockedTokenPillProps) {\n const display = lookupOptionLabel(field, value);\n const lockA11yLabel = `${field.label} filter is locked by context`;\n\n return (\n <TooltipProvider delayDuration={150}>\n <Tooltip>\n <TooltipTrigger asChild>\n <ButtonsGroup\n data-locked-field-id={field.id}\n data-property-filter-pill=\"locked\"\n tabIndex={0}\n aria-label={lockA11yLabel}\n >\n <ButtonsGroupText>{field.label}</ButtonsGroupText>\n <ButtonsGroupText>is</ButtonsGroupText>\n <ButtonsGroupText>{display}</ButtonsGroupText>\n <ButtonsGroupText>\n <LockIcon />\n </ButtonsGroupText>\n </ButtonsGroup>\n </TooltipTrigger>\n <TooltipContent>{tooltipContent}</TooltipContent>\n </Tooltip>\n </TooltipProvider>\n );\n}\n\ntype TextTokenPillProps = {\n field: Extract<PropertyFilterField, { kind: 'text' }>;\n value: string;\n onChange: (value: string) => void;\n onRemove: () => void;\n disabled?: boolean;\n autoFocus?: boolean;\n};\n\nfunction TextTokenPill({ field, value, onChange, onRemove, disabled, autoFocus }: TextTokenPillProps) {\n // Local draft keeps the caret stable when the URL round-trip trims the\n // stored value (e.g. trailing spaces). We only re-sync from the prop when\n // the external value is genuinely different from our current (trimmed) draft.\n const [draft, setDraft] = useState(value);\n const inputRef = useRef<HTMLInputElement>(null);\n\n useEffect(() => {\n if (draft.trim() !== value) setDraft(value);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [value]);\n\n useEffect(() => {\n if (autoFocus) inputRef.current?.focus();\n }, [autoFocus]);\n\n return (\n <ButtonsGroup>\n <ButtonsGroupText>{field.label}</ButtonsGroupText>\n <ButtonsGroupText>is</ButtonsGroupText>\n <Input\n ref={inputRef}\n disabled={disabled}\n value={draft}\n placeholder={field.placeholder ?? `Enter ${field.label}`}\n onChange={e => {\n const next = e.target.value;\n setDraft(next);\n // Apply live — URL and traces query update on every keystroke.\n // Empty values persist as empty-value tokens so the pill stays visible.\n if (next.trim() !== value) onChange(next);\n }}\n onKeyDown={e => {\n if (e.key === 'Enter') {\n e.preventDefault();\n const trimmed = draft.trim();\n if (trimmed !== value) onChange(trimmed);\n } else if (e.key === 'Escape') {\n e.preventDefault();\n setDraft(value);\n e.currentTarget.blur();\n }\n }}\n />\n <Button\n size=\"icon-md\"\n type=\"button\"\n disabled={disabled}\n aria-label={`Remove ${field.label} filter`}\n onMouseDown={e => e.preventDefault()}\n onClick={onRemove}\n >\n <XIcon />\n </Button>\n </ButtonsGroup>\n );\n}\n\ntype PickMultiTokenPillProps = {\n field: Extract<PropertyFilterField, { kind: 'pick-multi' }>;\n token: PropertyFilterToken;\n tokens: PropertyFilterToken[];\n onChange: (fieldId: string, value: string | string[]) => void;\n onRemove: () => void;\n disabled?: boolean;\n};\n\nfunction PickMultiTokenPill({ field, token, tokens, onChange, onRemove, disabled }: PickMultiTokenPillProps) {\n const [open, setOpen] = useState(false);\n\n return (\n <ButtonsGroup>\n <ButtonsGroupText>{field.label}</ButtonsGroupText>\n <ButtonsGroupText>is</ButtonsGroupText>\n <Popover open={open} onOpenChange={setOpen}>\n <PopoverTrigger asChild>\n <Button type=\"button\" disabled={disabled}>\n {stringifyTokenValue(token.value)}\n </Button>\n </PopoverTrigger>\n <PopoverContent align=\"start\" sideOffset={MENU_SIDE_OFFSET} className=\"w-64 p-0\" data-pick-multi-panel>\n <PickMultiPanel field={field} tokens={tokens} onChange={onChange} />\n </PopoverContent>\n </Popover>\n <Button\n size=\"icon-md\"\n type=\"button\"\n disabled={disabled}\n aria-label={`Remove ${field.label} filter`}\n onClick={onRemove}\n >\n <XIcon />\n </Button>\n </ButtonsGroup>\n );\n}\n\n/**\n * Applied filter pills. Text/id-style tokens render with an always-active\n * input so the user can edit the value inline (and an empty token is valid —\n * it persists in the URL until the user explicitly removes it via ×).\n * Pick-multi tokens render with a clickable value that opens the same side\n * popover as the Filter Creator so the user can update selections in place.\n * Creation lives in a separate component (PropertyFilterCreator).\n */\nexport function PropertyFilterApplied({\n fields,\n tokens,\n onTokensChange,\n disabled,\n autoFocusFieldId,\n lockedFieldIds,\n lockedTooltipContent = DEFAULT_LOCKED_TOOLTIP,\n}: PropertyFilterAppliedProps) {\n if (tokens.length === 0) return null;\n\n const lockedSet = new Set(lockedFieldIds ?? []);\n\n const replaceTokenAt = (index: number, next: PropertyFilterToken) => {\n const copy = [...tokens];\n copy[index] = next;\n onTokensChange(copy);\n };\n\n const removeTokenAt = (index: number) => {\n onTokensChange(tokens.filter((_, i) => i !== index));\n };\n\n return (\n <div className=\"flex flex-wrap items-center gap-2\">\n {tokens.map((token, index) => {\n const field = fields.find(f => f.id === token.fieldId);\n if (!field) return null;\n\n if (lockedSet.has(token.fieldId)) {\n return (\n <LockedTokenPill\n key={`${token.fieldId}-${index}`}\n field={field}\n value={token.value}\n tooltipContent={lockedTooltipContent}\n />\n );\n }\n\n if (field.kind === 'text' && !Array.isArray(token.value)) {\n return (\n <TextTokenPill\n key={`${token.fieldId}-${index}`}\n field={field}\n value={token.value}\n disabled={disabled}\n autoFocus={autoFocusFieldId === token.fieldId}\n onChange={nextValue => replaceTokenAt(index, { fieldId: token.fieldId, value: nextValue })}\n onRemove={() => removeTokenAt(index)}\n />\n );\n }\n\n if (field.kind === 'pick-multi') {\n return (\n <PickMultiTokenPill\n key={`${token.fieldId}-${index}`}\n field={field}\n token={token}\n tokens={tokens}\n disabled={disabled}\n // Unselecting everything (empty array) keeps the pill alive in a\n // neutral state — the user explicitly removes it via ×. This lets\n // the page-level Reset neutralize values without dropping the pill.\n onChange={(fieldId, value) => replaceTokenAt(index, { fieldId, value })}\n onRemove={() => removeTokenAt(index)}\n />\n );\n }\n\n return (\n <ButtonsGroup key={`${token.fieldId}-${index}`}>\n <ButtonsGroupText>{field.label}</ButtonsGroupText>\n <ButtonsGroupText>is</ButtonsGroupText>\n <ButtonsGroupText>{stringifyTokenValue(token.value)}</ButtonsGroupText>\n <Button\n size=\"icon-md\"\n type=\"button\"\n disabled={disabled}\n aria-label={`Remove ${field.label} filter`}\n onClick={() => removeTokenAt(index)}\n >\n <XIcon />\n </Button>\n </ButtonsGroup>\n );\n })}\n </div>\n );\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"property-filter-applied-p3dTTDdb.js","names":["_Fragment"],"sources":["../src/ds/components/PropertyFilter/property-filter-actions.tsx","../src/ds/components/PropertyFilter/pick-multi-panel.tsx","../src/ds/components/PropertyFilter/property-filter-applied.tsx"],"sourcesContent":["import { EllipsisVerticalIcon, SaveIcon, Trash2Icon, XIcon } from 'lucide-react';\nimport { Button } from '@/ds/components/Button/Button';\nimport { DropdownMenu } from '@/ds/components/DropdownMenu/dropdown-menu';\n\nexport type PropertyFilterActionsProps = {\n disabled?: boolean;\n /** Neutralize each pill's value (keep pills, clear values). Shown as a button, not a menu item. */\n onClear?: () => void;\n /** Fully remove all active filters. Rendered as \"Remove all filters\" inside the overflow menu. */\n onRemoveAll?: () => void;\n /** Persist the current filter set (typically to localStorage) for later restoration. */\n onSave?: () => void;\n /** Drop a previously-saved filter set. Wire only when a saved set actually exists. */\n onRemoveSaved?: () => void;\n};\n\n/**\n * Shared action bar for filter-driven pages (traces, logs, …). Renders a\n * Clear button and an overflow menu with Remove all / Save / Remove saved actions.\n */\nexport function PropertyFilterActions({\n disabled,\n onClear,\n onRemoveAll,\n onSave,\n onRemoveSaved,\n}: PropertyFilterActionsProps) {\n const hasMenuItems = !!(onRemoveAll || onSave || onRemoveSaved);\n if (!onClear && !hasMenuItems) return null;\n\n return (\n <div className=\"flex items-center gap-2\">\n {onClear && (\n <Button disabled={disabled} size=\"md\" onClick={onClear} icon={<XIcon />}>\n Clear\n </Button>\n )}\n\n {hasMenuItems && (\n <DropdownMenu>\n <DropdownMenu.Trigger asChild>\n <Button disabled={disabled} size=\"icon-md\" aria-label=\"More filter actions\">\n <EllipsisVerticalIcon />\n </Button>\n </DropdownMenu.Trigger>\n <DropdownMenu.Content align=\"end\">\n {onRemoveAll && (\n <DropdownMenu.Item onSelect={() => onRemoveAll()}>\n <XIcon />\n Remove all filters\n </DropdownMenu.Item>\n )}\n {onRemoveAll && (onSave || onRemoveSaved) && <DropdownMenu.Separator />}\n {onSave && (\n <DropdownMenu.Item onSelect={() => onSave()}>\n <SaveIcon />\n Save filters for next time\n </DropdownMenu.Item>\n )}\n {onRemoveSaved && (\n <DropdownMenu.Item onSelect={() => onRemoveSaved()}>\n <Trash2Icon />\n Remove saved filters\n </DropdownMenu.Item>\n )}\n </DropdownMenu.Content>\n </DropdownMenu>\n )}\n </div>\n );\n}\n","import { CheckIcon, SearchIcon } from 'lucide-react';\nimport { useMemo, useState } from 'react';\nimport type { PropertyFilterField, PropertyFilterToken } from './types';\nimport { Spinner } from '@/ds/components/Spinner/spinner';\nimport { menuEmptyClass, menuItemButtonClass, menuItemCheckClass, menuSearchClasses } from '@/ds/primitives/menu-item';\nimport { passwordManagerOptOutProps } from '@/ds/primitives/password-manager-autofill';\nimport { cn } from '@/lib/utils';\n\n// Same rendering as Combobox items: no visible control, a trailing check when selected.\n// Focus is on the item itself (roving via [data-pick-multi-item]).\nconst pickMultiItemClass = cn(menuItemButtonClass, 'min-w-0');\n\nfunction PickMultiItem({\n role,\n checked,\n label,\n onClick,\n}: {\n role: 'checkbox' | 'radio';\n checked: boolean;\n label: string;\n onClick: () => void;\n}) {\n return (\n <button\n type=\"button\"\n role={role}\n aria-checked={checked}\n data-selected={checked || undefined}\n data-pick-multi-item=\"\"\n title={label}\n className={pickMultiItemClass}\n onClick={onClick}\n >\n <span className=\"min-w-0 flex-1 truncate\">{label}</span>\n {checked && (\n <span className={menuItemCheckClass}>\n <CheckIcon />\n </span>\n )}\n </button>\n );\n}\n\ntype PickMultiField = Extract<PropertyFilterField, { kind: 'pick-multi' }>;\n\nexport type PickMultiPanelProps = {\n field: PickMultiField;\n tokens: PropertyFilterToken[];\n /** Always carries a value: an empty list is how the panel says \"nothing selected\". */\n onChange: (fieldId: string, value: string | string[]) => void;\n};\n\n/**\n * Reusable body for a pick-multi side popover: optional search input plus a\n * radio group (single-select) or checkbox list (when `field.multi` is true).\n * Shared between the Filter Creator's property-picker side popover and the\n * PropertyFilterApplied pill's inline editor so both surfaces use the exact same UI.\n */\nexport function PickMultiPanel({ field, tokens, onChange }: PickMultiPanelProps) {\n const [query, setQuery] = useState('');\n const listClassName = 'max-h-[80dvh] overflow-auto p-1';\n\n const filteredOptions = useMemo(() => {\n const q = query.trim().toLowerCase();\n if (!q) return field.options;\n return field.options.filter(o => o.label.toLowerCase().includes(q));\n }, [field.options, query]);\n\n const token = useMemo(() => tokens.find(t => t.fieldId === field.id), [tokens, field.id]);\n // Fall back to `defaultValue` when no token exists — lets view-toggle fields (e.g. List mode)\n // show their default option pre-selected before the user explicitly picks one.\n const selectedValue = typeof token?.value === 'string' ? token.value : !field.multi ? field.defaultValue : undefined;\n const selectedValues = useMemo<string[]>(() => {\n const value = token?.value;\n if (Array.isArray(value)) return value;\n if (typeof value === 'string') return [value];\n return [];\n }, [token]);\n\n return (\n <>\n {field.searchable !== false && (\n <div className={menuSearchClasses.container}>\n <SearchIcon className={menuSearchClasses.icon} />\n <input\n type=\"text\"\n value={query}\n onChange={e => setQuery(e.target.value)}\n placeholder={`Search ${field.label.toLowerCase()}...`}\n className={menuSearchClasses.input}\n {...passwordManagerOptOutProps}\n onKeyDown={e => {\n if (e.key !== 'ArrowDown') return;\n const panel = e.currentTarget.closest<HTMLElement>('[data-pick-multi-panel]');\n const first = panel?.querySelector<HTMLElement>('[data-pick-multi-item]:not([disabled])');\n if (!first) return;\n e.preventDefault();\n e.stopPropagation();\n first.focus();\n }}\n />\n </div>\n )}\n\n {field.isLoading ? (\n <div className={cn(menuEmptyClass, 'm-1')}>\n <Spinner size=\"sm\" className=\"size-3 text-muted-foreground\" />\n Loading options…\n </div>\n ) : filteredOptions.length === 0 ? (\n <div className={cn(menuEmptyClass, 'm-1')}>{field.emptyText ?? 'No option found.'}</div>\n ) : field.multi ? (\n <div className={listClassName}>\n <>\n {filteredOptions.map(option => {\n const checked = selectedValues.includes(option.value);\n return (\n <PickMultiItem\n key={option.value}\n role=\"checkbox\"\n checked={checked}\n label={option.label}\n onClick={() =>\n onChange(\n field.id,\n checked ? selectedValues.filter(v => v !== option.value) : [...selectedValues, option.value],\n )\n }\n />\n );\n })}\n </>\n </div>\n ) : (\n <div role=\"radiogroup\" className={listClassName}>\n <>\n {filteredOptions.map(option => (\n <PickMultiItem\n key={option.value}\n role=\"radio\"\n checked={selectedValue === option.value}\n label={option.label}\n onClick={() => onChange(field.id, option.value)}\n />\n ))}\n {!field.omitAnyOption && (\n <PickMultiItem\n role=\"radio\"\n checked={selectedValue === 'Any'}\n label=\"Any\"\n onClick={() => onChange(field.id, 'Any')}\n />\n )}\n </>\n </div>\n )}\n </>\n );\n}\n","import { LockIcon, XIcon } from 'lucide-react';\nimport type { ReactNode } from 'react';\nimport { useEffect, useRef, useState } from 'react';\nimport { Button } from '../Button';\nimport { ButtonsGroup, ButtonsGroupText } from '../ButtonsGroup';\nimport { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger } from '../Tooltip';\nimport { PickMultiPanel } from './pick-multi-panel';\nimport type { PropertyFilterField, PropertyFilterToken } from './types';\nimport { Input } from '@/ds/components/Input';\nimport { Popover, PopoverContent, PopoverTrigger } from '@/ds/components/Popover/popover';\nimport { MENU_SIDE_OFFSET } from '@/ds/primitives/menu-item';\n\nexport type PropertyFilterAppliedProps = {\n fields: PropertyFilterField[];\n tokens: PropertyFilterToken[];\n onTokensChange: (tokens: PropertyFilterToken[]) => void;\n disabled?: boolean;\n /**\n * Field id that was just added via the Creator — rendered pill auto-focuses\n * its input so the user can start typing immediately.\n */\n autoFocusFieldId?: string;\n /**\n * Field ids whose pills must remain visible and read-only — value stays\n * displayed but cannot be edited or removed. Use when an upstream context\n * (e.g. agent-scoped traces tab) pre-applies a filter that the user must\n * not be able to clear.\n */\n lockedFieldIds?: readonly string[];\n /** Tooltip content shown on hover/focus of any locked pill. */\n lockedTooltipContent?: ReactNode;\n};\n\nfunction stringifyTokenValue(value: string | string[]) {\n if (Array.isArray(value)) return value.length === 0 ? 'Any' : value.join(', ');\n return value;\n}\n\nconst DEFAULT_LOCKED_TOOLTIP = 'This filter is set by the current context and cannot be removed here.';\n\nfunction lookupOptionLabel(field: PropertyFilterField, value: string | string[]): string {\n if (field.kind === 'pick-multi' && field.options) {\n if (Array.isArray(value)) {\n if (value.length === 0) return 'Any';\n return value.map(v => field.options.find(o => o.value === v)?.label ?? v).join(', ');\n }\n return field.options.find(o => o.value === value)?.label ?? value;\n }\n return stringifyTokenValue(value);\n}\n\ntype LockedTokenPillProps = {\n field: PropertyFilterField;\n value: string | string[];\n tooltipContent: ReactNode;\n};\n\nfunction LockedTokenPill({ field, value, tooltipContent }: LockedTokenPillProps) {\n const display = lookupOptionLabel(field, value);\n const lockA11yLabel = `${field.label} filter is locked by context`;\n\n return (\n <TooltipProvider delayDuration={150}>\n <Tooltip>\n <TooltipTrigger asChild>\n <ButtonsGroup\n data-locked-field-id={field.id}\n data-property-filter-pill=\"locked\"\n tabIndex={0}\n aria-label={lockA11yLabel}\n >\n <ButtonsGroupText>{field.label}</ButtonsGroupText>\n <ButtonsGroupText>is</ButtonsGroupText>\n <ButtonsGroupText>{display}</ButtonsGroupText>\n <ButtonsGroupText>\n <LockIcon />\n </ButtonsGroupText>\n </ButtonsGroup>\n </TooltipTrigger>\n <TooltipContent>{tooltipContent}</TooltipContent>\n </Tooltip>\n </TooltipProvider>\n );\n}\n\ntype TextTokenPillProps = {\n field: Extract<PropertyFilterField, { kind: 'text' }>;\n value: string;\n onChange: (value: string) => void;\n onRemove: () => void;\n disabled?: boolean;\n autoFocus?: boolean;\n};\n\nfunction TextTokenPill({ field, value, onChange, onRemove, disabled, autoFocus }: TextTokenPillProps) {\n // Local draft keeps the caret stable when the URL round-trip trims the\n // stored value (e.g. trailing spaces). We only re-sync from the prop when\n // the external value is genuinely different from our current (trimmed) draft.\n const [draft, setDraft] = useState(value);\n const inputRef = useRef<HTMLInputElement>(null);\n\n useEffect(() => {\n if (draft.trim() !== value) setDraft(value);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [value]);\n\n useEffect(() => {\n if (autoFocus) inputRef.current?.focus();\n }, [autoFocus]);\n\n return (\n <ButtonsGroup>\n <ButtonsGroupText>{field.label}</ButtonsGroupText>\n <ButtonsGroupText>is</ButtonsGroupText>\n <Input\n ref={inputRef}\n disabled={disabled}\n value={draft}\n placeholder={field.placeholder ?? `Enter ${field.label}`}\n onChange={e => {\n const next = e.target.value;\n setDraft(next);\n // Apply live — URL and traces query update on every keystroke.\n // Empty values persist as empty-value tokens so the pill stays visible.\n if (next.trim() !== value) onChange(next);\n }}\n onKeyDown={e => {\n if (e.key === 'Enter') {\n e.preventDefault();\n const trimmed = draft.trim();\n if (trimmed !== value) onChange(trimmed);\n } else if (e.key === 'Escape') {\n e.preventDefault();\n setDraft(value);\n e.currentTarget.blur();\n }\n }}\n />\n <Button\n size=\"icon-md\"\n type=\"button\"\n disabled={disabled}\n aria-label={`Remove ${field.label} filter`}\n onMouseDown={e => e.preventDefault()}\n onClick={onRemove}\n >\n <XIcon />\n </Button>\n </ButtonsGroup>\n );\n}\n\ntype PickMultiTokenPillProps = {\n field: Extract<PropertyFilterField, { kind: 'pick-multi' }>;\n token: PropertyFilterToken;\n tokens: PropertyFilterToken[];\n onChange: (fieldId: string, value: string | string[]) => void;\n onRemove: () => void;\n disabled?: boolean;\n};\n\nfunction PickMultiTokenPill({ field, token, tokens, onChange, onRemove, disabled }: PickMultiTokenPillProps) {\n const [open, setOpen] = useState(false);\n\n return (\n <ButtonsGroup>\n <ButtonsGroupText>{field.label}</ButtonsGroupText>\n <ButtonsGroupText>is</ButtonsGroupText>\n <Popover open={open} onOpenChange={setOpen}>\n <PopoverTrigger asChild>\n <Button type=\"button\" disabled={disabled}>\n {stringifyTokenValue(token.value)}\n </Button>\n </PopoverTrigger>\n <PopoverContent align=\"start\" sideOffset={MENU_SIDE_OFFSET} className=\"w-64 p-0\" data-pick-multi-panel>\n <PickMultiPanel field={field} tokens={tokens} onChange={onChange} />\n </PopoverContent>\n </Popover>\n <Button\n size=\"icon-md\"\n type=\"button\"\n disabled={disabled}\n aria-label={`Remove ${field.label} filter`}\n onClick={onRemove}\n >\n <XIcon />\n </Button>\n </ButtonsGroup>\n );\n}\n\n/**\n * Applied filter pills. Text/id-style tokens render with an always-active\n * input so the user can edit the value inline (and an empty token is valid —\n * it persists in the URL until the user explicitly removes it via ×).\n * Pick-multi tokens render with a clickable value that opens the same side\n * popover as the Filter Creator so the user can update selections in place.\n * Creation lives in a separate component (PropertyFilterCreator).\n */\nexport function PropertyFilterApplied({\n fields,\n tokens,\n onTokensChange,\n disabled,\n autoFocusFieldId,\n lockedFieldIds,\n lockedTooltipContent = DEFAULT_LOCKED_TOOLTIP,\n}: PropertyFilterAppliedProps) {\n if (tokens.length === 0) return null;\n\n const lockedSet = new Set(lockedFieldIds ?? []);\n\n const replaceTokenAt = (index: number, next: PropertyFilterToken) => {\n const copy = [...tokens];\n copy[index] = next;\n onTokensChange(copy);\n };\n\n const removeTokenAt = (index: number) => {\n onTokensChange(tokens.filter((_, i) => i !== index));\n };\n\n return (\n <div className=\"flex flex-wrap items-center gap-2\">\n {tokens.map((token, index) => {\n const field = fields.find(f => f.id === token.fieldId);\n if (!field) return null;\n\n if (lockedSet.has(token.fieldId)) {\n return (\n <LockedTokenPill\n key={`${token.fieldId}-${index}`}\n field={field}\n value={token.value}\n tooltipContent={lockedTooltipContent}\n />\n );\n }\n\n if (field.kind === 'text' && !Array.isArray(token.value)) {\n return (\n <TextTokenPill\n key={`${token.fieldId}-${index}`}\n field={field}\n value={token.value}\n disabled={disabled}\n autoFocus={autoFocusFieldId === token.fieldId}\n onChange={nextValue => replaceTokenAt(index, { fieldId: token.fieldId, value: nextValue })}\n onRemove={() => removeTokenAt(index)}\n />\n );\n }\n\n if (field.kind === 'pick-multi') {\n return (\n <PickMultiTokenPill\n key={`${token.fieldId}-${index}`}\n field={field}\n token={token}\n tokens={tokens}\n disabled={disabled}\n // Unselecting everything (empty array) keeps the pill alive in a\n // neutral state — the user explicitly removes it via ×. This lets\n // the page-level Reset neutralize values without dropping the pill.\n onChange={(fieldId, value) => replaceTokenAt(index, { fieldId, value })}\n onRemove={() => removeTokenAt(index)}\n />\n );\n }\n\n return (\n <ButtonsGroup key={`${token.fieldId}-${index}`}>\n <ButtonsGroupText>{field.label}</ButtonsGroupText>\n <ButtonsGroupText>is</ButtonsGroupText>\n <ButtonsGroupText>{stringifyTokenValue(token.value)}</ButtonsGroupText>\n <Button\n size=\"icon-md\"\n type=\"button\"\n disabled={disabled}\n aria-label={`Remove ${field.label} filter`}\n onClick={() => removeTokenAt(index)}\n >\n <XIcon />\n </Button>\n </ButtonsGroup>\n );\n })}\n </div>\n );\n}\n"],"mappings":"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"}
|
|
@@ -2,15 +2,14 @@ import { t as cn } from "./utils-DQx8TpNT.js";
|
|
|
2
2
|
import { FLOATING_POSITION_METHOD } from "./primitives/floating.es.js";
|
|
3
3
|
import { controlTriggerOpenState } from "./primitives/control-size.es.js";
|
|
4
4
|
import { fieldTriggerErrorBorder, fieldTriggerWidthStyle } from "./primitives/form-element.es.js";
|
|
5
|
-
import {
|
|
6
|
-
import { r as buttonVariants } from "./Button-Bw1e3ONi.js";
|
|
5
|
+
import { n as ButtonChevron, o as buttonVariants } from "./Button-CLXTbAY8.js";
|
|
7
6
|
import { n as keepOwnAccessibleName } from "./field-control-aria-BaRSUUMR.js";
|
|
8
7
|
import { menuItemCheckClass, menuItemClass, menuPopupClass, menuPositionerClass, menuSeparatorClass } from "./primitives/menu-item.es.js";
|
|
9
8
|
import { MenuScrollArea, menuScrollPopupClass } from "./primitives/menu-scroll-area.es.js";
|
|
10
9
|
import { usePortalContainer } from "./primitives/portal-container.es.js";
|
|
11
10
|
import * as React$1 from "react";
|
|
12
11
|
import { jsx, jsxs } from "react/jsx-runtime";
|
|
13
|
-
import { Check
|
|
12
|
+
import { Check } from "lucide-react";
|
|
14
13
|
import { Select } from "@base-ui/react/select";
|
|
15
14
|
// src/ds/components/Select/select.tsx
|
|
16
15
|
function isSelectItem(node) {
|
|
@@ -73,10 +72,7 @@ var SelectTrigger = React$1.forwardRef(({ className, children, size = "md", vari
|
|
|
73
72
|
}), visualVariant === "default" && "bg-field shadow-input focus-visible:outline-hidden focus-visible:[--surface-rim:var(--field-rim-focus)] disabled:bg-field-disabled aria-disabled:bg-field-disabled data-[disabled]:bg-field-disabled aria-invalid:[--field-rim:var(--destructive-indicator)] aria-invalid:[--field-rim-focus:var(--destructive-indicator)]", fieldTriggerWidthStyle, "justify-between", controlTriggerOpenState[visualVariant], "data-[placeholder]:text-muted-foreground", fieldTriggerErrorBorder, "[&>span]:truncate", className),
|
|
74
73
|
...props,
|
|
75
74
|
...keepOwnAccessibleName(props),
|
|
76
|
-
children: [children, /* @__PURE__ */ jsx(
|
|
77
|
-
className: "flex shrink-0 items-center",
|
|
78
|
-
children: /* @__PURE__ */ jsx(ChevronDown, { className: cn("size-4 text-muted-foreground", transitions.colors) })
|
|
79
|
-
}) })]
|
|
75
|
+
children: [children, /* @__PURE__ */ jsx(ButtonChevron, { size })]
|
|
80
76
|
});
|
|
81
77
|
});
|
|
82
78
|
SelectTrigger.displayName = "SelectTrigger";
|
|
@@ -134,4 +130,4 @@ var SelectSeparator = React$1.forwardRef(({ className, ...props }, ref) => /* @_
|
|
|
134
130
|
SelectSeparator.displayName = "SelectSeparator";
|
|
135
131
|
export { SelectSeparator as a, SelectItem as i, SelectContent as n, SelectTrigger as o, SelectGroup as r, SelectValue as s, Select$1 as t };
|
|
136
132
|
|
|
137
|
-
//# sourceMappingURL=select-
|
|
133
|
+
//# sourceMappingURL=select-BdIZEdcy.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"select-BdIZEdcy.js","names":["React","Select","SelectPrimitive"],"sources":["../src/ds/components/Select/select.tsx"],"sourcesContent":["import { Select as SelectPrimitive } from '@base-ui/react/select';\nimport type { SelectPopupProps, SelectPositionerProps } from '@base-ui/react/select';\nimport { Check } from 'lucide-react';\nimport * as React from 'react';\n\nimport { ButtonChevron, buttonVariants } from '../Button/Button';\nimport type { TextButtonSize } from '../Button/Button';\nimport { keepOwnAccessibleName } from '@/ds/components/Field/field-control-aria';\nimport { controlTriggerOpenState } from '@/ds/primitives/control-size';\nimport { FLOATING_POSITION_METHOD } from '@/ds/primitives/floating';\nimport { fieldTriggerErrorBorder, fieldTriggerStyle, fieldTriggerWidthStyle } from '@/ds/primitives/form-element';\nimport {\n menuItemCheckClass,\n menuItemClass,\n menuPopupClass,\n menuPositionerClass,\n menuSeparatorClass,\n} from '@/ds/primitives/menu-item';\nimport { menuScrollPopupClass, MenuScrollArea } from '@/ds/primitives/menu-scroll-area';\nimport { usePortalContainer } from '@/ds/primitives/portal-container';\nimport { cn } from '@/lib/utils';\n\n/**\n * Select migrated from `@radix-ui/react-select` to Base UI (`@base-ui/react/select`).\n *\n * The public API (`Select`, `SelectGroup`, `SelectValue`, `SelectTrigger`,\n * `SelectContent`, `SelectItem`) is intentionally kept stable so existing\n * consumers do not need changes.\n *\n * Notable behavioral differences vs. Radix that consumers should be aware of:\n * - `onValueChange` now receives a second `eventDetails` argument. Existing\n * handlers typed as `(value: string) => void` keep working (extra arg ignored).\n * - The dropdown no longer overlaps the trigger by default\n * (`alignItemWithTrigger={false}`), matching the previous Radix `popper`\n * positioning behavior.\n *\n * Implementation note: unlike Radix, Base UI's `Select.Value` can only resolve\n * a selected value to its label once the popup has mounted (it reads labels\n * from rendered items). To preserve the Radix behavior where the trigger shows\n * the selected label even while closed, `Select` auto-derives an `items` map\n * from the `SelectItem`s declared inside `SelectContent` and passes it to\n * `Select.Root`. Consumers can still pass an explicit `items` prop to override.\n */\ntype SelectItemNode = React.ReactElement<{ value: unknown; children?: React.ReactNode }>;\n\nfunction isSelectItem(node: React.ReactNode): node is SelectItemNode {\n return React.isValidElement(node) && (node.type as { displayName?: string })?.displayName === 'SelectItem';\n}\n\n/** Recursively collect `{ value, label }` pairs from declared `SelectItem`s. */\nfunction collectItems(children: React.ReactNode, acc: Array<{ value: unknown; label: React.ReactNode }>): void {\n React.Children.forEach(children, child => {\n if (!React.isValidElement(child)) return;\n if (isSelectItem(child)) {\n acc.push({ value: child.props.value, label: child.props.children });\n return;\n }\n const nested = (child.props as { children?: React.ReactNode })?.children;\n if (nested != null) collectItems(nested, acc);\n });\n}\n\ntype SelectRootProps<Value> = SelectPrimitive.Root.Props<Value>;\ntype SelectChangeDetails = Parameters<NonNullable<SelectRootProps<unknown>['onValueChange']>>[1];\n\n/**\n * `onValueChange` is intentionally narrowed to a non-null value: these selects\n * always hold a value once changed, which keeps existing `(value) => void`\n * consumer handlers valid (Base UI's own callback type is `Value | null`).\n */\ntype SelectProps<Value = string> = Omit<SelectRootProps<Value>, 'onValueChange'> & {\n onValueChange?: (value: Value, eventDetails: SelectChangeDetails) => void;\n};\n\nfunction Select<Value = string>({ children, items, onValueChange, ...props }: SelectProps<Value>) {\n const derivedItems = React.useMemo(() => {\n if (items != null) return items;\n const acc: Array<{ value: unknown; label: React.ReactNode }> = [];\n collectItems(children, acc);\n return acc.length > 0 ? acc : undefined;\n }, [items, children]);\n\n return (\n <SelectPrimitive.Root\n items={derivedItems}\n onValueChange={onValueChange ? (value, eventDetails) => onValueChange(value as Value, eventDetails) : undefined}\n {...props}\n >\n {children}\n </SelectPrimitive.Root>\n );\n}\nSelect.displayName = 'Select';\n\nconst SelectGroup = SelectPrimitive.Group;\n\nexport type SelectValueProps = Omit<SelectPrimitive.Value.Props, 'className'> & {\n className?: string;\n};\n\n/**\n * Displays the selected value. Radix's `Select.Value` took a `placeholder`\n * prop and rendered the selected item's text automatically; Base UI's\n * `Select.Value` behaves the same way (renders the value, falls back to\n * `placeholder` when nothing is selected), so this is a thin passthrough.\n */\nconst SelectValue = React.forwardRef<HTMLSpanElement, SelectValueProps>(({ className, ...props }, ref) => (\n <SelectPrimitive.Value ref={ref} className={cn('truncate', className)} {...props} />\n));\nSelectValue.displayName = 'SelectValue';\n\n/**\n * A select is a form field, so it reuses the Button's size/shape recipe with\n * these looks: `default` (the Input's overlay surface — the default here too,\n * so a select sits next to an Input as the same kind of thing) and `ghost`\n * (borderless, for dense toolbars/inline pickers). The high-emphasis `primary` look is the only one intentionally NOT\n * offered (a field is not a call-to-action).\n */\nexport type SelectTriggerVariant = 'default' | 'ghost';\ntype SelectTriggerLegacyVariant = 'primary';\n\nexport type SelectTriggerProps = Omit<SelectPrimitive.Trigger.Props, 'className'> & {\n className?: string;\n size?: TextButtonSize;\n variant?: SelectTriggerVariant | SelectTriggerLegacyVariant;\n};\n\nfunction normalizeSelectTriggerVariant(\n variant: SelectTriggerVariant | SelectTriggerLegacyVariant,\n): SelectTriggerVariant {\n return variant === 'primary' ? 'default' : variant;\n}\n\nconst SelectTrigger = React.forwardRef<HTMLButtonElement, SelectTriggerProps>(\n ({ className, children, size = 'md', variant = 'default', ...props }, ref) => {\n const visualVariant = normalizeSelectTriggerVariant(variant);\n\n return (\n <SelectPrimitive.Trigger\n ref={ref}\n data-slot=\"select-trigger\"\n // A select = a button + a trailing chevron: reuse the Button recipe\n // (variant colors, size = height/text/padding/radius, unified border\n // focus, disabled) and layer only the select-specific extras.\n className={cn(\n buttonVariants({ variant: visualVariant, size }),\n visualVariant === 'default' && fieldTriggerStyle,\n // Fill the field and push the value left / chevron right (Button's\n // base centers its content with `justify-center`).\n fieldTriggerWidthStyle,\n 'justify-between',\n // Read as \"active\" while the menu is open, per variant (see map above).\n controlTriggerOpenState[visualVariant],\n 'data-[placeholder]:text-muted-foreground',\n fieldTriggerErrorBorder,\n '[&>span]:truncate',\n className,\n )}\n {...props}\n {...keepOwnAccessibleName(props)}\n >\n {children}\n <ButtonChevron size={size} />\n </SelectPrimitive.Trigger>\n );\n },\n);\nSelectTrigger.displayName = 'SelectTrigger';\n\ntype SelectContentPositionerProps = Omit<SelectPositionerProps, keyof SelectPopupProps>;\n\nexport type SelectContentProps = Omit<SelectPopupProps, 'className'> &\n SelectContentPositionerProps & {\n className?: string;\n /**\n * Kept for API compatibility with the previous Radix API. Radix supported\n * `position=\"popper\" | \"item-aligned\"`; Base UI always uses popper-style\n * positioning so this prop is accepted but has no effect.\n */\n position?: 'popper' | 'item-aligned';\n /** Optional portal container, forwarded to `Select.Portal`. */\n container?: HTMLElement | null;\n };\n\nconst SelectContent = React.forwardRef<HTMLDivElement, SelectContentProps>(\n (\n {\n className,\n children,\n position: _position,\n container,\n side = 'bottom',\n align = 'start',\n sideOffset = 4,\n alignItemWithTrigger = false,\n anchor,\n positionMethod = FLOATING_POSITION_METHOD,\n alignOffset,\n collisionBoundary,\n collisionPadding,\n sticky,\n arrowPadding,\n disableAnchorTracking,\n collisionAvoidance,\n ...props\n },\n ref,\n ) => {\n // Default to the nearest SideDialog/Drawer popup so the dropdown stays\n // interactive inside a modal drawer; an explicit `container` still wins.\n const resolvedContainer = usePortalContainer(container);\n const positionerProps: SelectContentPositionerProps = {\n side,\n align,\n sideOffset,\n alignItemWithTrigger,\n anchor,\n positionMethod,\n alignOffset,\n collisionBoundary,\n collisionPadding,\n sticky,\n arrowPadding,\n disableAnchorTracking,\n collisionAvoidance,\n };\n\n return (\n <SelectPrimitive.Portal container={resolvedContainer}>\n <SelectPrimitive.Positioner className={menuPositionerClass} {...positionerProps}>\n <SelectPrimitive.Popup ref={ref} className={cn(menuPopupClass, menuScrollPopupClass, className)} {...props}>\n {/* The viewport is Select's list, so Select scrolls it to line the selected item up with the\n trigger. `role` is restated because the viewport's own `presentation` role would win. */}\n <MenuScrollArea viewportRender={<SelectPrimitive.List role=\"listbox\" />}>{children}</MenuScrollArea>\n </SelectPrimitive.Popup>\n </SelectPrimitive.Positioner>\n </SelectPrimitive.Portal>\n );\n },\n);\nSelectContent.displayName = 'SelectContent';\n\nexport type SelectItemProps = Omit<SelectPrimitive.Item.Props, 'className'> & {\n className?: string;\n};\n\nconst SelectItem = React.forwardRef<HTMLDivElement, SelectItemProps>(({ className, children, ...props }, ref) => (\n <SelectPrimitive.Item ref={ref} className={cn(menuItemClass, className)} {...props}>\n <SelectPrimitive.ItemText>{children}</SelectPrimitive.ItemText>\n <SelectPrimitive.ItemIndicator className={menuItemCheckClass}>\n <Check />\n </SelectPrimitive.ItemIndicator>\n </SelectPrimitive.Item>\n));\nSelectItem.displayName = 'SelectItem';\n\nexport type SelectSeparatorProps = Omit<SelectPrimitive.Separator.Props, 'className'> & {\n className?: string;\n};\n\nconst SelectSeparator = React.forwardRef<HTMLDivElement, SelectSeparatorProps>(({ className, ...props }, ref) => (\n <SelectPrimitive.Separator\n ref={ref}\n data-slot=\"select-separator\"\n className={cn(menuSeparatorClass, className)}\n {...props}\n />\n));\nSelectSeparator.displayName = 'SelectSeparator';\n\nexport { Select, SelectGroup, SelectValue, SelectTrigger, SelectContent, SelectItem, SelectSeparator };\n"],"mappings":"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"}
|
|
@@ -3,8 +3,7 @@ const require_utils = require("./utils-uDc1ofX1.cjs");
|
|
|
3
3
|
const require_primitives_floating = require("./primitives/floating.cjs.js");
|
|
4
4
|
const require_primitives_control_size = require("./primitives/control-size.cjs.js");
|
|
5
5
|
const require_primitives_form_element = require("./primitives/form-element.cjs.js");
|
|
6
|
-
const
|
|
7
|
-
const require_Button = require("./Button-YQRflC47.cjs");
|
|
6
|
+
const require_Button = require("./Button-DLcMcuUL.cjs");
|
|
8
7
|
const require_field_control_aria = require("./field-control-aria-Dw0_ObOU.cjs");
|
|
9
8
|
const require_primitives_menu_item = require("./primitives/menu-item.cjs.js");
|
|
10
9
|
const require_primitives_menu_scroll_area = require("./primitives/menu-scroll-area.cjs.js");
|
|
@@ -75,10 +74,7 @@ var SelectTrigger = react.forwardRef(({ className, children, size = "md", varian
|
|
|
75
74
|
}), visualVariant === "default" && "bg-field shadow-input focus-visible:outline-hidden focus-visible:[--surface-rim:var(--field-rim-focus)] disabled:bg-field-disabled aria-disabled:bg-field-disabled data-[disabled]:bg-field-disabled aria-invalid:[--field-rim:var(--destructive-indicator)] aria-invalid:[--field-rim-focus:var(--destructive-indicator)]", require_primitives_form_element.fieldTriggerWidthStyle, "justify-between", require_primitives_control_size.controlTriggerOpenState[visualVariant], "data-[placeholder]:text-muted-foreground", require_primitives_form_element.fieldTriggerErrorBorder, "[&>span]:truncate", className),
|
|
76
75
|
...props,
|
|
77
76
|
...require_field_control_aria.keepOwnAccessibleName(props),
|
|
78
|
-
children: [children, /* @__PURE__ */ (0, react_jsx_runtime.jsx)(
|
|
79
|
-
className: "flex shrink-0 items-center",
|
|
80
|
-
children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(lucide_react.ChevronDown, { className: require_utils.cn("size-4 text-muted-foreground", require_primitives_transitions.transitions.colors) })
|
|
81
|
-
}) })]
|
|
77
|
+
children: [children, /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_Button.ButtonChevron, { size })]
|
|
82
78
|
});
|
|
83
79
|
});
|
|
84
80
|
SelectTrigger.displayName = "SelectTrigger";
|
|
@@ -177,4 +173,4 @@ Object.defineProperty(exports, "SelectValue", {
|
|
|
177
173
|
}
|
|
178
174
|
});
|
|
179
175
|
|
|
180
|
-
//# sourceMappingURL=select-
|
|
176
|
+
//# sourceMappingURL=select-Dg8L5ROX.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"select-Dg8L5ROX.cjs","names":["React","SelectPrimitive","cn","buttonVariants","fieldTriggerWidthStyle","controlTriggerOpenState","fieldTriggerErrorBorder","keepOwnAccessibleName","ButtonChevron","FLOATING_POSITION_METHOD","usePortalContainer","menuPositionerClass","menuPopupClass","menuScrollPopupClass","MenuScrollArea","menuItemClass","menuItemCheckClass","Check","menuSeparatorClass"],"sources":["../src/ds/components/Select/select.tsx"],"sourcesContent":["import { Select as SelectPrimitive } from '@base-ui/react/select';\nimport type { SelectPopupProps, SelectPositionerProps } from '@base-ui/react/select';\nimport { Check } from 'lucide-react';\nimport * as React from 'react';\n\nimport { ButtonChevron, buttonVariants } from '../Button/Button';\nimport type { TextButtonSize } from '../Button/Button';\nimport { keepOwnAccessibleName } from '@/ds/components/Field/field-control-aria';\nimport { controlTriggerOpenState } from '@/ds/primitives/control-size';\nimport { FLOATING_POSITION_METHOD } from '@/ds/primitives/floating';\nimport { fieldTriggerErrorBorder, fieldTriggerStyle, fieldTriggerWidthStyle } from '@/ds/primitives/form-element';\nimport {\n menuItemCheckClass,\n menuItemClass,\n menuPopupClass,\n menuPositionerClass,\n menuSeparatorClass,\n} from '@/ds/primitives/menu-item';\nimport { menuScrollPopupClass, MenuScrollArea } from '@/ds/primitives/menu-scroll-area';\nimport { usePortalContainer } from '@/ds/primitives/portal-container';\nimport { cn } from '@/lib/utils';\n\n/**\n * Select migrated from `@radix-ui/react-select` to Base UI (`@base-ui/react/select`).\n *\n * The public API (`Select`, `SelectGroup`, `SelectValue`, `SelectTrigger`,\n * `SelectContent`, `SelectItem`) is intentionally kept stable so existing\n * consumers do not need changes.\n *\n * Notable behavioral differences vs. Radix that consumers should be aware of:\n * - `onValueChange` now receives a second `eventDetails` argument. Existing\n * handlers typed as `(value: string) => void` keep working (extra arg ignored).\n * - The dropdown no longer overlaps the trigger by default\n * (`alignItemWithTrigger={false}`), matching the previous Radix `popper`\n * positioning behavior.\n *\n * Implementation note: unlike Radix, Base UI's `Select.Value` can only resolve\n * a selected value to its label once the popup has mounted (it reads labels\n * from rendered items). To preserve the Radix behavior where the trigger shows\n * the selected label even while closed, `Select` auto-derives an `items` map\n * from the `SelectItem`s declared inside `SelectContent` and passes it to\n * `Select.Root`. Consumers can still pass an explicit `items` prop to override.\n */\ntype SelectItemNode = React.ReactElement<{ value: unknown; children?: React.ReactNode }>;\n\nfunction isSelectItem(node: React.ReactNode): node is SelectItemNode {\n return React.isValidElement(node) && (node.type as { displayName?: string })?.displayName === 'SelectItem';\n}\n\n/** Recursively collect `{ value, label }` pairs from declared `SelectItem`s. */\nfunction collectItems(children: React.ReactNode, acc: Array<{ value: unknown; label: React.ReactNode }>): void {\n React.Children.forEach(children, child => {\n if (!React.isValidElement(child)) return;\n if (isSelectItem(child)) {\n acc.push({ value: child.props.value, label: child.props.children });\n return;\n }\n const nested = (child.props as { children?: React.ReactNode })?.children;\n if (nested != null) collectItems(nested, acc);\n });\n}\n\ntype SelectRootProps<Value> = SelectPrimitive.Root.Props<Value>;\ntype SelectChangeDetails = Parameters<NonNullable<SelectRootProps<unknown>['onValueChange']>>[1];\n\n/**\n * `onValueChange` is intentionally narrowed to a non-null value: these selects\n * always hold a value once changed, which keeps existing `(value) => void`\n * consumer handlers valid (Base UI's own callback type is `Value | null`).\n */\ntype SelectProps<Value = string> = Omit<SelectRootProps<Value>, 'onValueChange'> & {\n onValueChange?: (value: Value, eventDetails: SelectChangeDetails) => void;\n};\n\nfunction Select<Value = string>({ children, items, onValueChange, ...props }: SelectProps<Value>) {\n const derivedItems = React.useMemo(() => {\n if (items != null) return items;\n const acc: Array<{ value: unknown; label: React.ReactNode }> = [];\n collectItems(children, acc);\n return acc.length > 0 ? acc : undefined;\n }, [items, children]);\n\n return (\n <SelectPrimitive.Root\n items={derivedItems}\n onValueChange={onValueChange ? (value, eventDetails) => onValueChange(value as Value, eventDetails) : undefined}\n {...props}\n >\n {children}\n </SelectPrimitive.Root>\n );\n}\nSelect.displayName = 'Select';\n\nconst SelectGroup = SelectPrimitive.Group;\n\nexport type SelectValueProps = Omit<SelectPrimitive.Value.Props, 'className'> & {\n className?: string;\n};\n\n/**\n * Displays the selected value. Radix's `Select.Value` took a `placeholder`\n * prop and rendered the selected item's text automatically; Base UI's\n * `Select.Value` behaves the same way (renders the value, falls back to\n * `placeholder` when nothing is selected), so this is a thin passthrough.\n */\nconst SelectValue = React.forwardRef<HTMLSpanElement, SelectValueProps>(({ className, ...props }, ref) => (\n <SelectPrimitive.Value ref={ref} className={cn('truncate', className)} {...props} />\n));\nSelectValue.displayName = 'SelectValue';\n\n/**\n * A select is a form field, so it reuses the Button's size/shape recipe with\n * these looks: `default` (the Input's overlay surface — the default here too,\n * so a select sits next to an Input as the same kind of thing) and `ghost`\n * (borderless, for dense toolbars/inline pickers). The high-emphasis `primary` look is the only one intentionally NOT\n * offered (a field is not a call-to-action).\n */\nexport type SelectTriggerVariant = 'default' | 'ghost';\ntype SelectTriggerLegacyVariant = 'primary';\n\nexport type SelectTriggerProps = Omit<SelectPrimitive.Trigger.Props, 'className'> & {\n className?: string;\n size?: TextButtonSize;\n variant?: SelectTriggerVariant | SelectTriggerLegacyVariant;\n};\n\nfunction normalizeSelectTriggerVariant(\n variant: SelectTriggerVariant | SelectTriggerLegacyVariant,\n): SelectTriggerVariant {\n return variant === 'primary' ? 'default' : variant;\n}\n\nconst SelectTrigger = React.forwardRef<HTMLButtonElement, SelectTriggerProps>(\n ({ className, children, size = 'md', variant = 'default', ...props }, ref) => {\n const visualVariant = normalizeSelectTriggerVariant(variant);\n\n return (\n <SelectPrimitive.Trigger\n ref={ref}\n data-slot=\"select-trigger\"\n // A select = a button + a trailing chevron: reuse the Button recipe\n // (variant colors, size = height/text/padding/radius, unified border\n // focus, disabled) and layer only the select-specific extras.\n className={cn(\n buttonVariants({ variant: visualVariant, size }),\n visualVariant === 'default' && fieldTriggerStyle,\n // Fill the field and push the value left / chevron right (Button's\n // base centers its content with `justify-center`).\n fieldTriggerWidthStyle,\n 'justify-between',\n // Read as \"active\" while the menu is open, per variant (see map above).\n controlTriggerOpenState[visualVariant],\n 'data-[placeholder]:text-muted-foreground',\n fieldTriggerErrorBorder,\n '[&>span]:truncate',\n className,\n )}\n {...props}\n {...keepOwnAccessibleName(props)}\n >\n {children}\n <ButtonChevron size={size} />\n </SelectPrimitive.Trigger>\n );\n },\n);\nSelectTrigger.displayName = 'SelectTrigger';\n\ntype SelectContentPositionerProps = Omit<SelectPositionerProps, keyof SelectPopupProps>;\n\nexport type SelectContentProps = Omit<SelectPopupProps, 'className'> &\n SelectContentPositionerProps & {\n className?: string;\n /**\n * Kept for API compatibility with the previous Radix API. Radix supported\n * `position=\"popper\" | \"item-aligned\"`; Base UI always uses popper-style\n * positioning so this prop is accepted but has no effect.\n */\n position?: 'popper' | 'item-aligned';\n /** Optional portal container, forwarded to `Select.Portal`. */\n container?: HTMLElement | null;\n };\n\nconst SelectContent = React.forwardRef<HTMLDivElement, SelectContentProps>(\n (\n {\n className,\n children,\n position: _position,\n container,\n side = 'bottom',\n align = 'start',\n sideOffset = 4,\n alignItemWithTrigger = false,\n anchor,\n positionMethod = FLOATING_POSITION_METHOD,\n alignOffset,\n collisionBoundary,\n collisionPadding,\n sticky,\n arrowPadding,\n disableAnchorTracking,\n collisionAvoidance,\n ...props\n },\n ref,\n ) => {\n // Default to the nearest SideDialog/Drawer popup so the dropdown stays\n // interactive inside a modal drawer; an explicit `container` still wins.\n const resolvedContainer = usePortalContainer(container);\n const positionerProps: SelectContentPositionerProps = {\n side,\n align,\n sideOffset,\n alignItemWithTrigger,\n anchor,\n positionMethod,\n alignOffset,\n collisionBoundary,\n collisionPadding,\n sticky,\n arrowPadding,\n disableAnchorTracking,\n collisionAvoidance,\n };\n\n return (\n <SelectPrimitive.Portal container={resolvedContainer}>\n <SelectPrimitive.Positioner className={menuPositionerClass} {...positionerProps}>\n <SelectPrimitive.Popup ref={ref} className={cn(menuPopupClass, menuScrollPopupClass, className)} {...props}>\n {/* The viewport is Select's list, so Select scrolls it to line the selected item up with the\n trigger. `role` is restated because the viewport's own `presentation` role would win. */}\n <MenuScrollArea viewportRender={<SelectPrimitive.List role=\"listbox\" />}>{children}</MenuScrollArea>\n </SelectPrimitive.Popup>\n </SelectPrimitive.Positioner>\n </SelectPrimitive.Portal>\n );\n },\n);\nSelectContent.displayName = 'SelectContent';\n\nexport type SelectItemProps = Omit<SelectPrimitive.Item.Props, 'className'> & {\n className?: string;\n};\n\nconst SelectItem = React.forwardRef<HTMLDivElement, SelectItemProps>(({ className, children, ...props }, ref) => (\n <SelectPrimitive.Item ref={ref} className={cn(menuItemClass, className)} {...props}>\n <SelectPrimitive.ItemText>{children}</SelectPrimitive.ItemText>\n <SelectPrimitive.ItemIndicator className={menuItemCheckClass}>\n <Check />\n </SelectPrimitive.ItemIndicator>\n </SelectPrimitive.Item>\n));\nSelectItem.displayName = 'SelectItem';\n\nexport type SelectSeparatorProps = Omit<SelectPrimitive.Separator.Props, 'className'> & {\n className?: string;\n};\n\nconst SelectSeparator = React.forwardRef<HTMLDivElement, SelectSeparatorProps>(({ className, ...props }, ref) => (\n <SelectPrimitive.Separator\n ref={ref}\n data-slot=\"select-separator\"\n className={cn(menuSeparatorClass, className)}\n {...props}\n />\n));\nSelectSeparator.displayName = 'SelectSeparator';\n\nexport { Select, SelectGroup, SelectValue, SelectTrigger, SelectContent, SelectItem, SelectSeparator };\n"],"mappings":"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"}
|
|
@@ -3,11 +3,11 @@ import { t as cn } from "./utils-DQx8TpNT.js";
|
|
|
3
3
|
import "./primitives/raised-surface.es.js";
|
|
4
4
|
import { t as ScrollArea } from "./scroll-area-C226l0v0.js";
|
|
5
5
|
import { t as Txt } from "./Txt-BM6TVV_c.js";
|
|
6
|
-
import { r as presentTool } from "./tool-presentation-
|
|
7
|
-
import { f as ActivityHeadline } from "./activity-
|
|
6
|
+
import { r as presentTool } from "./tool-presentation-DvCsb_kz.js";
|
|
7
|
+
import { f as ActivityHeadline } from "./activity-rJ1NQl_2.js";
|
|
8
8
|
import { Collapsible, CollapsibleContent, CollapsibleTrigger } from "./components/Collapsible.es.js";
|
|
9
9
|
import { DisclosureChevron } from "./components/DisclosureChevron.es.js";
|
|
10
|
-
import { t as MarkdownRenderer } from "./MarkdownRenderer-
|
|
10
|
+
import { t as MarkdownRenderer } from "./MarkdownRenderer-2GOXQJEv.js";
|
|
11
11
|
import { BadgeWrapper } from "./domains/chat/components/badge-wrapper.es.js";
|
|
12
12
|
import { t as DataKeysAndValues } from "./DataKeysAndValues-PwOmGxyp.js";
|
|
13
13
|
import { getDelegatedTool, getDelegatedToolHref } from "./domains/traces/components/span-payload/span-payload-registry.es.js";
|
|
@@ -161,4 +161,4 @@ function SpanPayloadToolCalls({ toolCalls }) {
|
|
|
161
161
|
}
|
|
162
162
|
export { SpanPayloadListName as a, SpanPayloadTool as c, SpanPayloadList as i, SpanToolNameValue as l, SpanPayloadField as n, SpanPayloadMarkdown as o, SpanPayloadLabel as r, SpanPayloadToolCalls as s, SpanPayloadCollapsible as t };
|
|
163
163
|
|
|
164
|
-
//# sourceMappingURL=span-payload-primitives-
|
|
164
|
+
//# sourceMappingURL=span-payload-primitives-B3RdahsC.js.map
|