@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 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ask-user-C82m_G9W.cjs","names":["createContext","useContext","cn","raisedSurfaceStyle","Icon","MessageCircleQuestion","Txt","FieldItem","FieldLabel","Button","Check","Badge","Fieldset","cn","RadioGroup","Checkbox","RadioGroupItem","Input","FieldItem","FieldLabel","Txt","useId","useState","_Fragment","Badge"],"sources":["../src/ds/components/ai/ask-user/ask-user-context.ts","../src/ds/components/ai/ask-user/ask-user-layout.tsx","../src/ds/components/ai/ask-user/ask-user-controls.tsx","../src/ds/components/ai/ask-user/ask-user-root.tsx","../src/ds/components/ai/ask-user/ask-user-card.tsx"],"sourcesContent":["import { createContext, useContext } from 'react';\nimport type { AskUserSelectionMode } from './ask-user-types';\n\ninterface AskUserContextValue {\n questionId: string;\n selectionMode: AskUserSelectionMode;\n disabled: boolean;\n answerText: string;\n selectedOptionLabels: string[];\n isCustomAnswerSelected: boolean;\n canSubmitAnswer: boolean;\n selectOption: (optionLabel: string) => void;\n setCustomAnswerSelected: (selected: boolean) => void;\n changeAnswerText: (text: string) => void;\n unselectEmptyCustomAnswer: () => void;\n submitAnswer: () => void;\n}\n\nexport const AskUserContext = createContext<AskUserContextValue | undefined>(undefined);\n\nexport function useOptionalAskUserContext() {\n return useContext(AskUserContext);\n}\n\nexport function useAskUserContext() {\n const context = useOptionalAskUserContext();\n if (!context) throw new Error('AskUser controls must be rendered inside AskUser.Root.');\n return context;\n}\n","import { Check, MessageCircleQuestion } from 'lucide-react';\nimport type { ComponentProps, ReactNode } from 'react';\nimport { useOptionalAskUserContext } from './ask-user-context';\nimport type { AskUserResult } from './ask-user-types';\nimport { Badge } from '@/ds/components/Badge';\nimport { Button } from '@/ds/components/Button';\nimport { FieldItem, FieldLabel } from '@/ds/components/Field';\nimport type { FieldLabelProps } from '@/ds/components/Field';\nimport { Txt } from '@/ds/components/Txt';\nimport { Icon } from '@/ds/icons/Icon';\nimport { raisedSurfaceStyle } from '@/ds/primitives/raised-surface';\nimport { cn } from '@/lib/utils';\n\nexport const AskUserContainer = ({ className, ...props }: ComponentProps<'div'>) => (\n <div\n data-slot=\"ask-user\"\n className={cn(raisedSurfaceStyle, 'w-full overflow-hidden rounded-xl', className)}\n {...props}\n />\n);\n\nexport const AskUserLabel = ({ children = 'Question', className, ...props }: ComponentProps<'div'>) => (\n <div data-slot=\"ask-user-label\" className={cn('flex min-h-10 items-center gap-2 px-4 pt-3', className)} {...props}>\n <Icon size=\"xs\" className=\"text-muted-foreground\">\n <MessageCircleQuestion />\n </Icon>\n <Txt as=\"span\" variant=\"caption\" tone=\"muted\">\n {children}\n </Txt>\n </div>\n);\n\nexport const AskUserBody = ({ className, ...props }: ComponentProps<'div'>) => (\n <div data-slot=\"ask-user-body\" className={cn('p-4', className)} {...props} />\n);\n\nconst AskUserQuestionTitle = ({ children }: { children: ReactNode }) => (\n <span className=\"flex items-start gap-2\">\n <Icon size=\"xs\" className={cn('mt-1 shrink-0', 'text-muted-foreground')} aria-hidden>\n <MessageCircleQuestion />\n </Icon>\n <span className=\"min-w-0\">{children}</span>\n </span>\n);\n\nexport const AskUserQuestion = ({ children, className, ...props }: ComponentProps<typeof Txt>) => {\n const context = useOptionalAskUserContext();\n return (\n <Txt\n as=\"p\"\n variant=\"subheading\"\n tone=\"ink\"\n {...props}\n id={context?.questionId ?? props.id}\n className={cn('mb-3', className)}\n >\n <AskUserQuestionTitle>{children}</AskUserQuestionTitle>\n </Txt>\n );\n};\n\nexport interface AskUserOptionRowProps extends Omit<FieldLabelProps, 'children'> {\n control: ReactNode;\n label: ReactNode;\n description?: string;\n disabled?: boolean;\n}\n\nexport const AskUserOptionRow = ({\n control,\n label,\n description,\n disabled = false,\n className,\n ...props\n}: AskUserOptionRowProps) => (\n <FieldItem disabled={disabled} className=\"contents\">\n <FieldLabel\n // state-layer's wash only stops at :disabled/aria-disabled, and a <label> is neither\n aria-disabled={disabled || undefined}\n className={cn('state-layer flex items-start gap-2.5 rounded-lg px-3 py-2 data-disabled:opacity-50', className)}\n {...props}\n >\n {control}\n <span className=\"grid gap-0.5\">\n <Txt as=\"span\" variant=\"body\" tone=\"ink\">\n {label}\n </Txt>\n {description ? (\n <Txt as=\"span\" variant=\"caption\" tone=\"muted\">\n {description}\n </Txt>\n ) : null}\n </span>\n </FieldLabel>\n </FieldItem>\n);\n\nexport type AskUserSubmitButtonProps = Omit<ComponentProps<typeof Button>, 'children'> & { children?: ReactNode };\n\nexport const AskUserSubmitButton = ({ children = 'Submit answer', ...props }: AskUserSubmitButtonProps) => (\n <Button icon={<Check />} type=\"button\" size=\"sm\" variant=\"primary\" {...props}>\n {children}\n </Button>\n);\n\nexport const AskUserPending = ({ children = 'Submitting…', ...props }: ComponentProps<typeof Txt>) => (\n <Txt as=\"span\" role=\"status\" variant=\"caption\" tone=\"muted\" {...props}>\n {children}\n </Txt>\n);\n\nexport interface AskUserOutputProps extends ComponentProps<'div'> {\n result: AskUserResult;\n}\n\nexport const AskUserOutput = ({ result, className, ...props }: AskUserOutputProps) => (\n <div\n data-slot=\"ask-user-output\"\n role={result.isError ? 'alert' : 'status'}\n className={cn('grid gap-2 rounded-lg bg-fill p-3', className)}\n {...props}\n >\n <Badge size=\"xs\" variant={result.isError ? 'destructive' : 'success'} className=\"justify-self-start\">\n {result.isError ? 'Error' : 'Answered'}\n </Badge>\n <Txt as=\"p\" variant=\"body\" tone=\"ink\" className={cn(result.isError && 'text-destructive-foreground')}>\n {result.content}\n </Txt>\n </div>\n);\n","import type { ChangeEvent, ComponentProps, KeyboardEvent, MouseEvent, ReactNode } from 'react';\nimport { useAskUserContext, useOptionalAskUserContext } from './ask-user-context';\nimport { AskUserOptionRow, AskUserSubmitButton } from './ask-user-layout';\nimport { Checkbox } from '@/ds/components/Checkbox';\nimport { FieldItem, FieldLabel, Fieldset } from '@/ds/components/Field';\nimport { Input } from '@/ds/components/Input';\nimport { RadioGroup, RadioGroupItem } from '@/ds/components/RadioGroup';\nimport { Txt } from '@/ds/components/Txt';\nimport { cn } from '@/lib/utils';\n\n// Keep the UI-only custom choice separate from suggested answer values.\nconst customAnswerValue = 'custom';\nconst optionValuePrefix = 'option:';\n\nfunction getOptionRadioValue(optionLabel: string): string {\n return `${optionValuePrefix}${optionLabel}`;\n}\n\nexport function AskUserOptions({ children, className, ...props }: ComponentProps<typeof Fieldset>) {\n const context = useAskUserContext();\n\n const handleSingleSelectChange = (radioValue: unknown) => {\n if (radioValue === customAnswerValue) {\n context.setCustomAnswerSelected(true);\n return;\n }\n if (typeof radioValue !== 'string' || !radioValue.startsWith(optionValuePrefix)) return;\n context.selectOption(radioValue.slice(optionValuePrefix.length));\n };\n\n if (context.selectionMode === 'multi_select') {\n return (\n <Fieldset aria-label=\"Answer options\" {...props} className={cn('gap-2', className)}>\n {children}\n </Fieldset>\n );\n }\n\n const selectedOptionLabel = context.selectedOptionLabels[0];\n const selectedOptionValue = selectedOptionLabel === undefined ? '' : getOptionRadioValue(selectedOptionLabel);\n const selectedRadioValue = context.isCustomAnswerSelected ? customAnswerValue : selectedOptionValue;\n\n return (\n <Fieldset\n {...props}\n className={cn('gap-2', className)}\n render={\n <RadioGroup\n aria-labelledby={context.questionId}\n disabled={context.disabled}\n value={selectedRadioValue}\n onValueChange={handleSingleSelectChange}\n />\n }\n >\n {children}\n </Fieldset>\n );\n}\n\nexport interface AskUserOptionItemProps {\n value: string;\n children: ReactNode;\n description?: string;\n disabled?: boolean;\n className?: string;\n}\n\nexport function AskUserOptionItem({\n value,\n children,\n description,\n disabled = false,\n className,\n}: AskUserOptionItemProps) {\n const context = useAskUserContext();\n const isDisabled = context.disabled || disabled;\n\n const handleOptionToggle = () => {\n if (!isDisabled) context.selectOption(value);\n };\n\n return (\n <AskUserOptionRow\n label={children}\n description={description}\n disabled={isDisabled}\n className={className}\n control={\n context.selectionMode === 'multi_select' ? (\n <Checkbox\n className=\"mt-0.5\"\n disabled={isDisabled}\n checked={context.selectedOptionLabels.includes(value)}\n onCheckedChange={handleOptionToggle}\n />\n ) : (\n <RadioGroupItem className=\"mt-0.5\" disabled={isDisabled} value={getOptionRadioValue(value)} />\n )\n }\n />\n );\n}\n\nexport type AskUserTextAnswerProps = Omit<\n ComponentProps<typeof Input>,\n 'value' | 'defaultValue' | 'onChange' | 'onKeyDown'\n>;\n\nexport function AskUserTextAnswer({ disabled = false, ...props }: AskUserTextAnswerProps) {\n const context = useAskUserContext();\n\n const handleAnswerTextChange = (event: ChangeEvent<HTMLInputElement>) => {\n context.changeAnswerText(event.target.value);\n };\n\n const handleAnswerTextKeyDown = (event: KeyboardEvent<HTMLInputElement>) => {\n if (event.key === 'Enter' && !event.nativeEvent.isComposing) {\n event.preventDefault();\n context.submitAnswer();\n }\n };\n\n return (\n <Input\n type=\"text\"\n aria-labelledby={props['aria-label'] ? undefined : context.questionId}\n placeholder=\"Type your answer...\"\n size=\"sm\"\n {...props}\n disabled={context.disabled || disabled}\n value={context.answerText}\n onChange={handleAnswerTextChange}\n onKeyDown={handleAnswerTextKeyDown}\n />\n );\n}\n\nexport interface AskUserCustomAnswerProps {\n className?: string;\n label?: string;\n inputLabel?: string;\n}\n\nexport function AskUserCustomAnswer({\n className,\n label = 'Other…',\n inputLabel = 'Your answer',\n}: AskUserCustomAnswerProps) {\n const context = useAskUserContext();\n\n const handleRowClick = (event: MouseEvent<HTMLDivElement>) => {\n if (context.disabled || event.target !== event.currentTarget) return;\n if (context.isCustomAnswerSelected) {\n event.currentTarget.querySelector<HTMLInputElement>('input[type=\"text\"]')?.focus();\n return;\n }\n event.currentTarget.querySelector<HTMLElement>('[role=\"radio\"], [role=\"checkbox\"]')?.click();\n };\n\n const handleControlMouseDown = (event: MouseEvent<HTMLSpanElement>) => {\n // Let the checkbox click unselect it before blur resets its controlled value.\n if (context.isCustomAnswerSelected && !context.answerText.trim()) event.preventDefault();\n };\n\n return (\n <FieldItem\n role=\"group\"\n aria-label=\"Custom answer\"\n aria-disabled={context.disabled || undefined}\n disabled={context.disabled}\n onClick={handleRowClick}\n className={cn(\n 'items-start gap-2.5 rounded-lg px-3 py-2 data-disabled:opacity-50',\n !context.isCustomAnswerSelected && 'state-layer',\n className,\n )}\n >\n {context.selectionMode === 'multi_select' ? (\n <Checkbox\n className=\"mt-0.5\"\n aria-label={label}\n disabled={context.disabled}\n checked={context.isCustomAnswerSelected}\n onMouseDown={handleControlMouseDown}\n onCheckedChange={context.setCustomAnswerSelected}\n />\n ) : (\n <RadioGroupItem aria-label={label} className=\"mt-0.5\" value={customAnswerValue} />\n )}\n {context.isCustomAnswerSelected ? (\n <AskUserTextAnswer\n aria-label={inputLabel}\n onBlur={context.unselectEmptyCustomAnswer}\n placeholder={label}\n variant=\"unstyled\"\n className={cn('h-auto min-w-0 flex-1 px-0', 'text-body')}\n autoFocus\n />\n ) : (\n <FieldLabel className=\"flex-1\">\n <Txt as=\"span\" variant=\"body\" tone=\"ink\">\n {label}\n </Txt>\n </FieldLabel>\n )}\n </FieldItem>\n );\n}\n\nexport type AskUserSubmitProps = ComponentProps<typeof AskUserSubmitButton> & {\n when?: 'always' | 'custom-answer';\n};\n\nexport function AskUserSubmit({ when = 'always', disabled = false, onClick, ...props }: AskUserSubmitProps) {\n const context = useOptionalAskUserContext();\n\n const handleSubmitClick = (event: MouseEvent<HTMLButtonElement>) => {\n onClick?.(event);\n if (!event.defaultPrevented && !disabled) context?.submitAnswer();\n };\n\n if (when === 'custom-answer' && !context?.isCustomAnswerSelected) return null;\n\n return (\n <AskUserSubmitButton\n {...props}\n disabled={disabled || (context !== undefined && !context.canSubmitAnswer)}\n onClick={handleSubmitClick}\n />\n );\n}\n","import { useId, useState } from 'react';\nimport type { ComponentProps } from 'react';\nimport { AskUserContext } from './ask-user-context';\nimport { AskUserContainer } from './ask-user-layout';\nimport type { AskUserAnswer, AskUserSelectionMode } from './ask-user-types';\n\nexport interface AskUserRootProps extends Omit<ComponentProps<typeof AskUserContainer>, 'onSubmit'> {\n selectionMode?: AskUserSelectionMode;\n disabled?: boolean;\n onSubmit: (answer: AskUserAnswer) => void;\n}\n\ninterface AskUserAnswerDraft {\n answerText: string;\n selectedOptionLabels: string[];\n selectionMode: AskUserSelectionMode;\n isCustomAnswerSelected: boolean;\n}\n\nfunction getAnswerToSubmit({\n answerText,\n selectedOptionLabels,\n selectionMode,\n isCustomAnswerSelected,\n}: AskUserAnswerDraft): AskUserAnswer | undefined {\n const trimmedAnswerText = answerText.trim();\n if (isCustomAnswerSelected && !trimmedAnswerText) return undefined;\n if (selectionMode === 'single_select') {\n // Suggested single-select answers already submit when selected.\n if (!isCustomAnswerSelected && selectedOptionLabels.length > 0) return undefined;\n return trimmedAnswerText || undefined;\n }\n\n const answerLabels = isCustomAnswerSelected ? [...selectedOptionLabels, trimmedAnswerText] : selectedOptionLabels;\n return answerLabels.length > 0 ? answerLabels : undefined;\n}\n\nfunction toggleSelectedOptionLabel(selectedOptionLabels: string[], optionLabel: string): string[] {\n if (selectedOptionLabels.includes(optionLabel)) {\n return selectedOptionLabels.filter(selectedLabel => selectedLabel !== optionLabel);\n }\n return [...selectedOptionLabels, optionLabel];\n}\n\nexport function AskUserRoot({\n selectionMode = 'single_select',\n disabled = false,\n onSubmit,\n children,\n ...props\n}: AskUserRootProps) {\n const questionId = useId();\n const [answerText, setAnswerText] = useState('');\n const [selectedOptionLabels, setSelectedOptionLabels] = useState<string[]>([]);\n const [isCustomAnswerSelected, setIsCustomAnswerSelected] = useState(false);\n const answerToSubmit = getAnswerToSubmit({\n answerText,\n selectedOptionLabels,\n selectionMode,\n isCustomAnswerSelected,\n });\n const canSubmitAnswer = !disabled && answerToSubmit !== undefined;\n\n const selectOption = (optionLabel: string) => {\n if (disabled) return;\n if (selectionMode === 'multi_select') {\n setSelectedOptionLabels(currentLabels => toggleSelectedOptionLabel(currentLabels, optionLabel));\n return;\n }\n setIsCustomAnswerSelected(false);\n setSelectedOptionLabels([optionLabel]);\n onSubmit(optionLabel);\n };\n\n const setCustomAnswerSelected = (selected: boolean) => {\n if (disabled) return;\n setIsCustomAnswerSelected(selected);\n if (selected && selectionMode === 'single_select') setSelectedOptionLabels([]);\n };\n\n const changeAnswerText = (text: string) => {\n if (!disabled) setAnswerText(text);\n };\n\n const unselectEmptyCustomAnswer = () => {\n if (!disabled && !answerText.trim()) setIsCustomAnswerSelected(false);\n };\n\n const submitAnswer = () => {\n if (disabled || answerToSubmit === undefined) return;\n onSubmit(answerToSubmit);\n };\n\n return (\n <AskUserContext.Provider\n value={{\n questionId,\n selectionMode,\n disabled,\n answerText,\n selectedOptionLabels,\n isCustomAnswerSelected,\n canSubmitAnswer,\n selectOption,\n setCustomAnswerSelected,\n changeAnswerText,\n unselectEmptyCustomAnswer,\n submitAnswer,\n }}\n >\n <AskUserContainer role=\"group\" aria-labelledby={questionId} {...props}>\n {children}\n </AskUserContainer>\n </AskUserContext.Provider>\n );\n}\n","import type { ComponentProps, ReactNode } from 'react';\nimport { useAskUserContext } from './ask-user-context';\nimport {\n AskUserCustomAnswer,\n AskUserOptionItem,\n AskUserOptions,\n AskUserSubmit,\n AskUserTextAnswer,\n} from './ask-user-controls';\nimport type { AskUserContainer } from './ask-user-layout';\nimport { AskUserBody, AskUserOutput, AskUserPending, AskUserQuestion } from './ask-user-layout';\nimport { AskUserRoot } from './ask-user-root';\nimport type { AskUserAnswer, AskUserOption, AskUserPayload, AskUserResult } from './ask-user-types';\nimport { Badge } from '@/ds/components/Badge';\n\nexport interface AskUserProps extends Omit<ComponentProps<typeof AskUserContainer>, 'children' | 'onSubmit'> {\n payload: AskUserPayload;\n result?: AskUserResult;\n isAnswered?: boolean;\n isSubmitting?: boolean;\n onSubmit: (answer: AskUserAnswer) => void;\n footer?: ReactNode;\n}\n\nfunction getValidOptions(options: AskUserPayload['options']): AskUserOption[] {\n return (\n options?.filter((option): option is AskUserOption =>\n Boolean(option && typeof option.label === 'string' && option.label),\n ) ?? []\n );\n}\n\nfunction AskUserAnswerControls({ options }: { options: AskUserOption[] }) {\n const { selectionMode } = useAskUserContext();\n const isMultiSelect = selectionMode === 'multi_select';\n if (options.length === 0) {\n return (\n <div className=\"flex items-center gap-2\">\n <AskUserTextAnswer />\n <AskUserSubmit className=\"shrink-0 whitespace-nowrap\" />\n </div>\n );\n }\n\n return (\n <>\n <AskUserOptions>\n {options.map(option => (\n <AskUserOptionItem key={option.label} value={option.label} description={option.description}>\n {option.label}\n </AskUserOptionItem>\n ))}\n <AskUserCustomAnswer />\n {isMultiSelect ? <AskUserSubmit className=\"mt-1 justify-self-start\" /> : null}\n </AskUserOptions>\n {!isMultiSelect ? <AskUserSubmit when=\"custom-answer\" className=\"mt-2\" /> : null}\n </>\n );\n}\n\ninterface AskUserCardContentProps extends Pick<AskUserProps, 'result' | 'isAnswered' | 'isSubmitting' | 'footer'> {\n options: AskUserOption[];\n}\n\nfunction AskUserCardContent({ result, isAnswered, isSubmitting, options, footer }: AskUserCardContentProps) {\n if (result) return <AskUserOutput result={result} />;\n if (isAnswered) return <Badge variant=\"success\">Answered</Badge>;\n\n return (\n <>\n <AskUserAnswerControls options={options} />\n {isSubmitting ? <AskUserPending className=\"mt-3 block\" /> : null}\n {footer}\n </>\n );\n}\n\nexport function AskUser({\n payload,\n result,\n isAnswered = false,\n isSubmitting = false,\n onSubmit,\n footer,\n ...props\n}: AskUserProps) {\n const options = getValidOptions(payload.options);\n const isMultiSelect = options.length > 0 && payload.selectionMode === 'multi_select';\n const payloadKey = JSON.stringify([payload.question, options.map(option => option.label), payload.selectionMode]);\n const hasAnswer = result !== undefined || isAnswered;\n\n return (\n <AskUserRoot\n key={payloadKey}\n data-testid=\"ask-user\"\n selectionMode={isMultiSelect ? 'multi_select' : 'single_select'}\n disabled={isSubmitting || hasAnswer}\n onSubmit={onSubmit}\n {...props}\n >\n <AskUserBody>\n <AskUserQuestion>{payload.question}</AskUserQuestion>\n <AskUserCardContent\n result={result}\n isAnswered={isAnswered}\n isSubmitting={isSubmitting}\n options={options}\n footer={footer}\n />\n </AskUserBody>\n </AskUserRoot>\n );\n}\n"],"mappings":";;;;;;;;;;;;;;AAkBA,IAAa,kBAAA,GAAiBA,MAAAA,cAAAA,CAA+C,KAAA,CAAS;AAEtF,SAAgB,4BAA4B;CAC1C,QAAA,GAAOC,MAAAA,WAAAA,CAAW,cAAc;AAClC;AAEA,SAAgB,oBAAoB;CAClC,MAAM,UAAU,0BAA0B;CAC1C,IAAI,CAAC,SAAS,MAAM,IAAI,MAAM,wDAAwD;CACtF,OAAO;AACT;;ACfA,IAAa,oBAAoB,EAAE,WAAW,GAAG,YAC/C,iBAAA,GAAA,kBAAA,IAAA,CAAC,OAAD;CACE,aAAU;CACV,WAAWC,cAAAA,GAAGC,kCAAAA,oBAAoB,qCAAqC,SAAS;CAChF,GAAI;AACL,CAAA;AAGH,IAAa,gBAAgB,EAAE,WAAW,YAAY,WAAW,GAAG,YAClE,iBAAA,GAAA,kBAAA,KAAA,CAAC,OAAD;CAAK,aAAU;CAAiB,WAAWD,cAAAA,GAAG,8CAA8C,SAAS;CAAG,GAAI;CAA5G,UAAA,CACE,iBAAA,GAAA,kBAAA,IAAA,CAACE,mBAAAA,MAAD;EAAM,MAAK;EAAK,WAAU;EACxB,UAAA,iBAAA,GAAA,kBAAA,IAAA,CAACC,aAAAA,uBAAD,CAAwB,CAAA;CACpB,CAAA,GACN,iBAAA,GAAA,kBAAA,IAAA,CAACC,YAAAA,KAAD;EAAK,IAAG;EAAO,SAAQ;EAAU,MAAK;EACnC;CACE,CAAA,CACF;;AAGP,IAAa,eAAe,EAAE,WAAW,GAAG,YAC1C,iBAAA,GAAA,kBAAA,IAAA,CAAC,OAAD;CAAK,aAAU;CAAgB,WAAWJ,cAAAA,GAAG,OAAO,SAAS;CAAG,GAAI;AAAQ,CAAA;AAG9E,IAAM,wBAAwB,EAAE,eAC9B,iBAAA,GAAA,kBAAA,KAAA,CAAC,QAAD;CAAM,WAAU;CAAhB,UAAA,CACE,iBAAA,GAAA,kBAAA,IAAA,CAACE,mBAAAA,MAAD;EAAM,MAAK;EAAK,WAAWF,cAAAA,GAAG,iBAAiB,uBAAuB;EAAG,eAAA;EACvE,UAAA,iBAAA,GAAA,kBAAA,IAAA,CAACG,aAAAA,uBAAD,CAAwB,CAAA;CACpB,CAAA,GACN,iBAAA,GAAA,kBAAA,IAAA,CAAC,QAAD;EAAM,WAAU;EAAW;CAAe,CAAA,CACtC;;AAGR,IAAa,mBAAmB,EAAE,UAAU,WAAW,GAAG,YAAwC;CAChG,MAAM,UAAU,0BAA0B;CAC1C,OACE,iBAAA,GAAA,kBAAA,IAAA,CAACC,YAAAA,KAAD;EACE,IAAG;EACH,SAAQ;EACR,MAAK;EACL,GAAI;EACJ,IAAI,SAAS,cAAc,MAAM;EACjC,WAAWJ,cAAAA,GAAG,QAAQ,SAAS;EAE/B,UAAA,iBAAA,GAAA,kBAAA,IAAA,CAAC,sBAAD,EAAuB,SAA+B,CAAA;CACnD,CAAA;AAET;AASA,IAAa,oBAAoB,EAC/B,SACA,OACA,aACA,WAAW,OACX,WACA,GAAG,YAEH,iBAAA,GAAA,kBAAA,IAAA,CAACK,yBAAAA,WAAD;CAAqB;CAAU,WAAU;CACvC,UAAA,iBAAA,GAAA,kBAAA,KAAA,CAACC,yBAAAA,YAAD;EAEE,iBAAe,YAAY,KAAA;EAC3B,WAAWN,cAAAA,GAAG,sFAAsF,SAAS;EAC7G,GAAI;EAJN,UAAA,CAMG,SACD,iBAAA,GAAA,kBAAA,KAAA,CAAC,QAAD;GAAM,WAAU;GAAhB,UAAA,CACE,iBAAA,GAAA,kBAAA,IAAA,CAACI,YAAAA,KAAD;IAAK,IAAG;IAAO,SAAQ;IAAO,MAAK;IAChC,UAAA;GACE,CAAA,GACJ,cACC,iBAAA,GAAA,kBAAA,IAAA,CAACA,YAAAA,KAAD;IAAK,IAAG;IAAO,SAAQ;IAAU,MAAK;IACnC,UAAA;GACE,CAAA,IACH,IACA;EACI,CAAA,CAAA;;AACH,CAAA;AAKb,IAAa,uBAAuB,EAAE,WAAW,iBAAiB,GAAG,YACnE,iBAAA,GAAA,kBAAA,IAAA,CAACG,eAAAA,QAAD;CAAQ,MAAM,iBAAA,GAAA,kBAAA,IAAA,CAACC,aAAAA,OAAD,CAAQ,CAAA;CAAG,MAAK;CAAS,MAAK;CAAK,SAAQ;CAAU,GAAI;CACpE;AACK,CAAA;AAGV,IAAa,kBAAkB,EAAE,WAAW,eAAe,GAAG,YAC5D,iBAAA,GAAA,kBAAA,IAAA,CAACJ,YAAAA,KAAD;CAAK,IAAG;CAAO,MAAK;CAAS,SAAQ;CAAU,MAAK;CAAQ,GAAI;CAC7D;AACE,CAAA;AAOP,IAAa,iBAAiB,EAAE,QAAQ,WAAW,GAAG,YACpD,iBAAA,GAAA,kBAAA,KAAA,CAAC,OAAD;CACE,aAAU;CACV,MAAM,OAAO,UAAU,UAAU;CACjC,WAAWJ,cAAAA,GAAG,qCAAqC,SAAS;CAC5D,GAAI;CAJN,UAAA,CAME,iBAAA,GAAA,kBAAA,IAAA,CAACS,cAAAA,OAAD;EAAO,MAAK;EAAK,SAAS,OAAO,UAAU,gBAAgB;EAAW,WAAU;EAC7E,UAAA,OAAO,UAAU,UAAU;CACvB,CAAA,GACP,iBAAA,GAAA,kBAAA,IAAA,CAACL,YAAAA,KAAD;EAAK,IAAG;EAAI,SAAQ;EAAO,MAAK;EAAM,WAAWJ,cAAAA,GAAG,OAAO,WAAW,6BAA6B;EAChG,UAAA,OAAO;CACL,CAAA,CACF;;;ACtHP,IAAM,oBAAoB;AAC1B,IAAM,oBAAoB;AAE1B,SAAS,oBAAoB,aAA6B;CACxD,OAAO,GAAG,oBAAoB;AAChC;AAEA,SAAgB,eAAe,EAAE,UAAU,WAAW,GAAG,SAA0C;CACjG,MAAM,UAAU,kBAAkB;CAElC,MAAM,4BAA4B,eAAwB;EACxD,IAAI,eAAe,mBAAmB;GACpC,QAAQ,wBAAwB,IAAI;GACpC;EACF;EACA,IAAI,OAAO,eAAe,YAAY,CAAC,WAAW,WAAW,iBAAiB,GAAG;EACjF,QAAQ,aAAa,WAAW,MAAM,CAAwB,CAAC;CACjE;CAEA,IAAI,QAAQ,kBAAkB,gBAC5B,OACE,iBAAA,GAAA,kBAAA,IAAA,CAACU,yBAAAA,UAAD;EAAU,cAAW;EAAiB,GAAI;EAAO,WAAWC,cAAAA,GAAG,SAAS,SAAS;EAC9E;CACO,CAAA;CAId,MAAM,sBAAsB,QAAQ,qBAAqB;CACzD,MAAM,sBAAsB,wBAAwB,KAAA,IAAY,KAAK,oBAAoB,mBAAmB;CAC5G,MAAM,qBAAqB,QAAQ,yBAAyB,oBAAoB;CAEhF,OACE,iBAAA,GAAA,kBAAA,IAAA,CAACD,yBAAAA,UAAD;EACE,GAAI;EACJ,WAAWC,cAAAA,GAAG,SAAS,SAAS;EAChC,QACE,iBAAA,GAAA,kBAAA,IAAA,CAACC,8BAAAA,YAAD;GACE,mBAAiB,QAAQ;GACzB,UAAU,QAAQ;GAClB,OAAO;GACP,eAAe;EAChB,CAAA;EAGF;CACO,CAAA;AAEd;AAUA,SAAgB,kBAAkB,EAChC,OACA,UACA,aACA,WAAW,OACX,aACyB;CACzB,MAAM,UAAU,kBAAkB;CAClC,MAAM,aAAa,QAAQ,YAAY;CAEvC,MAAM,2BAA2B;EAC/B,IAAI,CAAC,YAAY,QAAQ,aAAa,KAAK;CAC7C;CAEA,OACE,iBAAA,GAAA,kBAAA,IAAA,CAAC,kBAAD;EACE,OAAO;EACM;EACb,UAAU;EACC;EACX,SACE,QAAQ,kBAAkB,iBACxB,iBAAA,GAAA,kBAAA,IAAA,CAACC,4BAAAA,UAAD;GACE,WAAU;GACV,UAAU;GACV,SAAS,QAAQ,qBAAqB,SAAS,KAAK;GACpD,iBAAiB;EAClB,CAAA,IAED,iBAAA,GAAA,kBAAA,IAAA,CAACC,8BAAAA,gBAAD;GAAgB,WAAU;GAAS,UAAU;GAAY,OAAO,oBAAoB,KAAK;EAAI,CAAA;CAGlG,CAAA;AAEL;AAOA,SAAgB,kBAAkB,EAAE,WAAW,OAAO,GAAG,SAAiC;CACxF,MAAM,UAAU,kBAAkB;CAElC,MAAM,0BAA0B,UAAyC;EACvE,QAAQ,iBAAiB,MAAM,OAAO,KAAK;CAC7C;CAEA,MAAM,2BAA2B,UAA2C;EAC1E,IAAI,MAAM,QAAQ,WAAW,CAAC,MAAM,YAAY,aAAa;GAC3D,MAAM,eAAe;GACrB,QAAQ,aAAa;EACvB;CACF;CAEA,OACE,iBAAA,GAAA,kBAAA,IAAA,CAACC,cAAAA,OAAD;EACE,MAAK;EACL,mBAAiB,MAAM,gBAAgB,KAAA,IAAY,QAAQ;EAC3D,aAAY;EACZ,MAAK;EACL,GAAI;EACJ,UAAU,QAAQ,YAAY;EAC9B,OAAO,QAAQ;EACf,UAAU;EACV,WAAW;CACZ,CAAA;AAEL;AAQA,SAAgB,oBAAoB,EAClC,WACA,QAAQ,UACR,aAAa,iBACc;CAC3B,MAAM,UAAU,kBAAkB;CAElC,MAAM,kBAAkB,UAAsC;EAC5D,IAAI,QAAQ,YAAY,MAAM,WAAW,MAAM,eAAe;EAC9D,IAAI,QAAQ,wBAAwB;GAClC,MAAM,cAAc,cAAgC,sBAAoB,CAAC,EAAE,MAAM;GACjF;EACF;EACA,MAAM,cAAc,cAA2B,uCAAmC,CAAC,EAAE,MAAM;CAC7F;CAEA,MAAM,0BAA0B,UAAuC;EAErE,IAAI,QAAQ,0BAA0B,CAAC,QAAQ,WAAW,KAAK,GAAG,MAAM,eAAe;CACzF;CAEA,OACE,iBAAA,GAAA,kBAAA,KAAA,CAACC,yBAAAA,WAAD;EACE,MAAK;EACL,cAAW;EACX,iBAAe,QAAQ,YAAY,KAAA;EACnC,UAAU,QAAQ;EAClB,SAAS;EACT,WAAWL,cAAAA,GACT,qEACA,CAAC,QAAQ,0BAA0B,eACnC,SACF;EAVF,UAAA,CAYG,QAAQ,kBAAkB,iBACzB,iBAAA,GAAA,kBAAA,IAAA,CAACE,4BAAAA,UAAD;GACE,WAAU;GACV,cAAY;GACZ,UAAU,QAAQ;GAClB,SAAS,QAAQ;GACjB,aAAa;GACb,iBAAiB,QAAQ;EAC1B,CAAA,IAED,iBAAA,GAAA,kBAAA,IAAA,CAACC,8BAAAA,gBAAD;GAAgB,cAAY;GAAO,WAAU;GAAS,OAAO;EAAoB,CAAA,GAElF,QAAQ,yBACP,iBAAA,GAAA,kBAAA,IAAA,CAAC,mBAAD;GACE,cAAY;GACZ,QAAQ,QAAQ;GAChB,aAAa;GACb,SAAQ;GACR,WAAWH,cAAAA,GAAG,8BAA8B,WAAW;GACvD,WAAA;EACD,CAAA,IAED,iBAAA,GAAA,kBAAA,IAAA,CAACM,yBAAAA,YAAD;GAAY,WAAU;GACpB,UAAA,iBAAA,GAAA,kBAAA,IAAA,CAACC,YAAAA,KAAD;IAAK,IAAG;IAAO,SAAQ;IAAO,MAAK;IAChC,UAAA;GACE,CAAA;EACK,CAAA,CAEL;;AAEf;AAMA,SAAgB,cAAc,EAAE,OAAO,UAAU,WAAW,OAAO,SAAS,GAAG,SAA6B;CAC1G,MAAM,UAAU,0BAA0B;CAE1C,MAAM,qBAAqB,UAAyC;EAClE,UAAU,KAAK;EACf,IAAI,CAAC,MAAM,oBAAoB,CAAC,UAAU,SAAS,aAAa;CAClE;CAEA,IAAI,SAAS,mBAAmB,CAAC,SAAS,wBAAwB,OAAO;CAEzE,OACE,iBAAA,GAAA,kBAAA,IAAA,CAAC,qBAAD;EACE,GAAI;EACJ,UAAU,YAAa,YAAY,KAAA,KAAa,CAAC,QAAQ;EACzD,SAAS;CACV,CAAA;AAEL;;ACpNA,SAAS,kBAAkB,EACzB,YACA,sBACA,eACA,0BACgD;CAChD,MAAM,oBAAoB,WAAW,KAAK;CAC1C,IAAI,0BAA0B,CAAC,mBAAmB,OAAO,KAAA;CACzD,IAAI,kBAAkB,iBAAiB;EAErC,IAAI,CAAC,0BAA0B,qBAAqB,SAAS,GAAG,OAAO,KAAA;EACvE,OAAO,qBAAqB,KAAA;CAC9B;CAEA,MAAM,eAAe,yBAAyB,CAAC,GAAG,sBAAsB,iBAAiB,IAAI;CAC7F,OAAO,aAAa,SAAS,IAAI,eAAe,KAAA;AAClD;AAEA,SAAS,0BAA0B,sBAAgC,aAA+B;CAChG,IAAI,qBAAqB,SAAS,WAAW,GAC3C,OAAO,qBAAqB,QAAO,kBAAiB,kBAAkB,WAAW;CAEnF,OAAO,CAAC,GAAG,sBAAsB,WAAW;AAC9C;AAEA,SAAgB,YAAY,EAC1B,gBAAgB,iBAChB,WAAW,OACX,UACA,UACA,GAAG,SACgB;CACnB,MAAM,cAAA,GAAaC,MAAAA,MAAAA,CAAM;CACzB,MAAM,CAAC,YAAY,kBAAA,GAAiBC,MAAAA,SAAAA,CAAS,EAAE;CAC/C,MAAM,CAAC,sBAAsB,4BAAA,GAA2BA,MAAAA,SAAAA,CAAmB,CAAC,CAAC;CAC7E,MAAM,CAAC,wBAAwB,8BAAA,GAA6BA,MAAAA,SAAAA,CAAS,KAAK;CAC1E,MAAM,iBAAiB,kBAAkB;EACvC;EACA;EACA;EACA;CACF,CAAC;CACD,MAAM,kBAAkB,CAAC,YAAY,mBAAmB,KAAA;CAExD,MAAM,gBAAgB,gBAAwB;EAC5C,IAAI,UAAU;EACd,IAAI,kBAAkB,gBAAgB;GACpC,yBAAwB,kBAAiB,0BAA0B,eAAe,WAAW,CAAC;GAC9F;EACF;EACA,0BAA0B,KAAK;EAC/B,wBAAwB,CAAC,WAAW,CAAC;EACrC,SAAS,WAAW;CACtB;CAEA,MAAM,2BAA2B,aAAsB;EACrD,IAAI,UAAU;EACd,0BAA0B,QAAQ;EAClC,IAAI,YAAY,kBAAkB,iBAAiB,wBAAwB,CAAC,CAAC;CAC/E;CAEA,MAAM,oBAAoB,SAAiB;EACzC,IAAI,CAAC,UAAU,cAAc,IAAI;CACnC;CAEA,MAAM,kCAAkC;EACtC,IAAI,CAAC,YAAY,CAAC,WAAW,KAAK,GAAG,0BAA0B,KAAK;CACtE;CAEA,MAAM,qBAAqB;EACzB,IAAI,YAAY,mBAAmB,KAAA,GAAW;EAC9C,SAAS,cAAc;CACzB;CAEA,OACE,iBAAA,GAAA,kBAAA,IAAA,CAAC,eAAe,UAAhB;EACE,OAAO;GACL;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;EACF;EAEA,UAAA,iBAAA,GAAA,kBAAA,IAAA,CAAC,kBAAD;GAAkB,MAAK;GAAQ,mBAAiB;GAAY,GAAI;GAC7D;EACe,CAAA;CACK,CAAA;AAE7B;;AC3FA,SAAS,gBAAgB,SAAqD;CAC5E,OACE,SAAS,QAAQ,WACf,QAAQ,UAAU,OAAO,OAAO,UAAU,YAAY,OAAO,KAAK,CACpE,KAAK,CAAC;AAEV;AAEA,SAAS,sBAAsB,EAAE,WAAyC;CACxE,MAAM,EAAE,kBAAkB,kBAAkB;CAC5C,MAAM,gBAAgB,kBAAkB;CACxC,IAAI,QAAQ,WAAW,GACrB,OACE,iBAAA,GAAA,kBAAA,KAAA,CAAC,OAAD;EAAK,WAAU;EAAf,UAAA,CACE,iBAAA,GAAA,kBAAA,IAAA,CAAC,mBAAD,CAAoB,CAAA,GACpB,iBAAA,GAAA,kBAAA,IAAA,CAAC,eAAD,EAAe,WAAU,6BAA8B,CAAA,CACpD;;CAIT,OACE,iBAAA,GAAA,kBAAA,KAAA,CAAAC,kBAAAA,UAAA,EAAA,UAAA,CACE,iBAAA,GAAA,kBAAA,KAAA,CAAC,gBAAD,EAAA,UAAA;EACG,QAAQ,KAAI,WACX,iBAAA,GAAA,kBAAA,IAAA,CAAC,mBAAD;GAAsC,OAAO,OAAO;GAAO,aAAa,OAAO;GAC5E,UAAA,OAAO;EACS,GAFK,OAAO,KAEZ,CACpB;EACD,iBAAA,GAAA,kBAAA,IAAA,CAAC,qBAAD,CAAsB,CAAA;EACrB,gBAAgB,iBAAA,GAAA,kBAAA,IAAA,CAAC,eAAD,EAAe,WAAU,0BAA2B,CAAA,IAAI;CAC3D,EAAA,CAAA,GACf,CAAC,gBAAgB,iBAAA,GAAA,kBAAA,IAAA,CAAC,eAAD;EAAe,MAAK;EAAgB,WAAU;CAAQ,CAAA,IAAI,IAC5E,EAAA,CAAA;AAEN;AAMA,SAAS,mBAAmB,EAAE,QAAQ,YAAY,cAAc,SAAS,UAAmC;CAC1G,IAAI,QAAQ,OAAO,iBAAA,GAAA,kBAAA,IAAA,CAAC,eAAD,EAAuB,OAAS,CAAA;CACnD,IAAI,YAAY,OAAO,iBAAA,GAAA,kBAAA,IAAA,CAACC,cAAAA,OAAD;EAAO,SAAQ;EAAU,UAAA;CAAe,CAAA;CAE/D,OACE,iBAAA,GAAA,kBAAA,KAAA,CAAAD,kBAAAA,UAAA,EAAA,UAAA;EACE,iBAAA,GAAA,kBAAA,IAAA,CAAC,uBAAD,EAAgC,QAAU,CAAA;EACzC,eAAe,iBAAA,GAAA,kBAAA,IAAA,CAAC,gBAAD,EAAgB,WAAU,aAAc,CAAA,IAAI;EAC3D;CACD,EAAA,CAAA;AAEN;AAEA,SAAgB,QAAQ,EACtB,SACA,QACA,aAAa,OACb,eAAe,OACf,UACA,QACA,GAAG,SACY;CACf,MAAM,UAAU,gBAAgB,QAAQ,OAAO;CAC/C,MAAM,gBAAgB,QAAQ,SAAS,KAAK,QAAQ,kBAAkB;CACtE,MAAM,aAAa,KAAK,UAAU;EAAC,QAAQ;EAAU,QAAQ,KAAI,WAAU,OAAO,KAAK;EAAG,QAAQ;CAAa,CAAC;CAGhH,OACE,iBAAA,GAAA,kBAAA,IAAA,CAAC,aAAD;EAEE,eAAY;EACZ,eAAe,gBAAgB,iBAAiB;EAChD,UAAU,gBAPI,WAAW,KAAA,KAAa;EAQ5B;EACV,GAAI;EAEJ,UAAA,iBAAA,GAAA,kBAAA,KAAA,CAAC,aAAD,EAAA,UAAA,CACE,iBAAA,GAAA,kBAAA,IAAA,CAAC,iBAAD,EAAA,UAAkB,QAAQ,SAA0B,CAAA,GACpD,iBAAA,GAAA,kBAAA,IAAA,CAAC,oBAAD;GACU;GACI;GACE;GACL;GACD;EACT,CAAA,CACU,EAAA,CAAA;CACF,GAjBN,UAiBM;AAEjB"}
|
|
1
|
+
{"version":3,"file":"ask-user-DdYz56qH.cjs","names":["createContext","useContext","cn","raisedSurfaceStyle","Icon","MessageCircleQuestion","Txt","FieldItem","FieldLabel","Button","Check","Badge","Fieldset","cn","RadioGroup","Checkbox","RadioGroupItem","Input","FieldItem","FieldLabel","Txt","useId","useState","_Fragment","Badge"],"sources":["../src/ds/components/ai/ask-user/ask-user-context.ts","../src/ds/components/ai/ask-user/ask-user-layout.tsx","../src/ds/components/ai/ask-user/ask-user-controls.tsx","../src/ds/components/ai/ask-user/ask-user-root.tsx","../src/ds/components/ai/ask-user/ask-user-card.tsx"],"sourcesContent":["import { createContext, useContext } from 'react';\nimport type { AskUserSelectionMode } from './ask-user-types';\n\ninterface AskUserContextValue {\n questionId: string;\n selectionMode: AskUserSelectionMode;\n disabled: boolean;\n answerText: string;\n selectedOptionLabels: string[];\n isCustomAnswerSelected: boolean;\n canSubmitAnswer: boolean;\n selectOption: (optionLabel: string) => void;\n setCustomAnswerSelected: (selected: boolean) => void;\n changeAnswerText: (text: string) => void;\n unselectEmptyCustomAnswer: () => void;\n submitAnswer: () => void;\n}\n\nexport const AskUserContext = createContext<AskUserContextValue | undefined>(undefined);\n\nexport function useOptionalAskUserContext() {\n return useContext(AskUserContext);\n}\n\nexport function useAskUserContext() {\n const context = useOptionalAskUserContext();\n if (!context) throw new Error('AskUser controls must be rendered inside AskUser.Root.');\n return context;\n}\n","import { Check, MessageCircleQuestion } from 'lucide-react';\nimport type { ComponentProps, ReactNode } from 'react';\nimport { useOptionalAskUserContext } from './ask-user-context';\nimport type { AskUserResult } from './ask-user-types';\nimport { Badge } from '@/ds/components/Badge';\nimport { Button } from '@/ds/components/Button';\nimport { FieldItem, FieldLabel } from '@/ds/components/Field';\nimport type { FieldLabelProps } from '@/ds/components/Field';\nimport { Txt } from '@/ds/components/Txt';\nimport { Icon } from '@/ds/icons/Icon';\nimport { raisedSurfaceStyle } from '@/ds/primitives/raised-surface';\nimport { cn } from '@/lib/utils';\n\nexport const AskUserContainer = ({ className, ...props }: ComponentProps<'div'>) => (\n <div\n data-slot=\"ask-user\"\n className={cn(raisedSurfaceStyle, 'w-full overflow-hidden rounded-xl', className)}\n {...props}\n />\n);\n\nexport const AskUserLabel = ({ children = 'Question', className, ...props }: ComponentProps<'div'>) => (\n <div data-slot=\"ask-user-label\" className={cn('flex min-h-10 items-center gap-2 px-4 pt-3', className)} {...props}>\n <Icon size=\"xs\" className=\"text-muted-foreground\">\n <MessageCircleQuestion />\n </Icon>\n <Txt as=\"span\" variant=\"caption\" tone=\"muted\">\n {children}\n </Txt>\n </div>\n);\n\nexport const AskUserBody = ({ className, ...props }: ComponentProps<'div'>) => (\n <div data-slot=\"ask-user-body\" className={cn('p-4', className)} {...props} />\n);\n\nconst AskUserQuestionTitle = ({ children }: { children: ReactNode }) => (\n <span className=\"flex items-start gap-2\">\n <Icon size=\"xs\" className={cn('mt-1 shrink-0', 'text-muted-foreground')} aria-hidden>\n <MessageCircleQuestion />\n </Icon>\n <span className=\"min-w-0\">{children}</span>\n </span>\n);\n\nexport const AskUserQuestion = ({ children, className, ...props }: ComponentProps<typeof Txt>) => {\n const context = useOptionalAskUserContext();\n return (\n <Txt\n as=\"p\"\n variant=\"subheading\"\n tone=\"ink\"\n {...props}\n id={context?.questionId ?? props.id}\n className={cn('mb-3', className)}\n >\n <AskUserQuestionTitle>{children}</AskUserQuestionTitle>\n </Txt>\n );\n};\n\nexport interface AskUserOptionRowProps extends Omit<FieldLabelProps, 'children'> {\n control: ReactNode;\n label: ReactNode;\n description?: string;\n disabled?: boolean;\n}\n\nexport const AskUserOptionRow = ({\n control,\n label,\n description,\n disabled = false,\n className,\n ...props\n}: AskUserOptionRowProps) => (\n <FieldItem disabled={disabled} className=\"contents\">\n <FieldLabel\n // state-layer's wash only stops at :disabled/aria-disabled, and a <label> is neither\n aria-disabled={disabled || undefined}\n className={cn('state-layer flex items-start gap-2.5 rounded-lg px-3 py-2 data-disabled:opacity-50', className)}\n {...props}\n >\n {control}\n <span className=\"grid gap-0.5\">\n <Txt as=\"span\" variant=\"body\" tone=\"ink\">\n {label}\n </Txt>\n {description ? (\n <Txt as=\"span\" variant=\"caption\" tone=\"muted\">\n {description}\n </Txt>\n ) : null}\n </span>\n </FieldLabel>\n </FieldItem>\n);\n\nexport type AskUserSubmitButtonProps = Omit<ComponentProps<typeof Button>, 'children'> & { children?: ReactNode };\n\nexport const AskUserSubmitButton = ({ children = 'Submit answer', ...props }: AskUserSubmitButtonProps) => (\n <Button icon={<Check />} type=\"button\" size=\"sm\" variant=\"primary\" {...props}>\n {children}\n </Button>\n);\n\nexport const AskUserPending = ({ children = 'Submitting…', ...props }: ComponentProps<typeof Txt>) => (\n <Txt as=\"span\" role=\"status\" variant=\"caption\" tone=\"muted\" {...props}>\n {children}\n </Txt>\n);\n\nexport interface AskUserOutputProps extends ComponentProps<'div'> {\n result: AskUserResult;\n}\n\nexport const AskUserOutput = ({ result, className, ...props }: AskUserOutputProps) => (\n <div\n data-slot=\"ask-user-output\"\n role={result.isError ? 'alert' : 'status'}\n className={cn('grid gap-2 rounded-lg bg-fill p-3', className)}\n {...props}\n >\n <Badge size=\"xs\" variant={result.isError ? 'destructive' : 'success'} className=\"justify-self-start\">\n {result.isError ? 'Error' : 'Answered'}\n </Badge>\n <Txt as=\"p\" variant=\"body\" tone=\"ink\" className={cn(result.isError && 'text-destructive-foreground')}>\n {result.content}\n </Txt>\n </div>\n);\n","import type { ChangeEvent, ComponentProps, KeyboardEvent, MouseEvent, ReactNode } from 'react';\nimport { useAskUserContext, useOptionalAskUserContext } from './ask-user-context';\nimport { AskUserOptionRow, AskUserSubmitButton } from './ask-user-layout';\nimport { Checkbox } from '@/ds/components/Checkbox';\nimport { FieldItem, FieldLabel, Fieldset } from '@/ds/components/Field';\nimport { Input } from '@/ds/components/Input';\nimport { RadioGroup, RadioGroupItem } from '@/ds/components/RadioGroup';\nimport { Txt } from '@/ds/components/Txt';\nimport { cn } from '@/lib/utils';\n\n// Keep the UI-only custom choice separate from suggested answer values.\nconst customAnswerValue = 'custom';\nconst optionValuePrefix = 'option:';\n\nfunction getOptionRadioValue(optionLabel: string): string {\n return `${optionValuePrefix}${optionLabel}`;\n}\n\nexport function AskUserOptions({ children, className, ...props }: ComponentProps<typeof Fieldset>) {\n const context = useAskUserContext();\n\n const handleSingleSelectChange = (radioValue: unknown) => {\n if (radioValue === customAnswerValue) {\n context.setCustomAnswerSelected(true);\n return;\n }\n if (typeof radioValue !== 'string' || !radioValue.startsWith(optionValuePrefix)) return;\n context.selectOption(radioValue.slice(optionValuePrefix.length));\n };\n\n if (context.selectionMode === 'multi_select') {\n return (\n <Fieldset aria-label=\"Answer options\" {...props} className={cn('gap-2', className)}>\n {children}\n </Fieldset>\n );\n }\n\n const selectedOptionLabel = context.selectedOptionLabels[0];\n const selectedOptionValue = selectedOptionLabel === undefined ? '' : getOptionRadioValue(selectedOptionLabel);\n const selectedRadioValue = context.isCustomAnswerSelected ? customAnswerValue : selectedOptionValue;\n\n return (\n <Fieldset\n {...props}\n className={cn('gap-2', className)}\n render={\n <RadioGroup\n aria-labelledby={context.questionId}\n disabled={context.disabled}\n value={selectedRadioValue}\n onValueChange={handleSingleSelectChange}\n />\n }\n >\n {children}\n </Fieldset>\n );\n}\n\nexport interface AskUserOptionItemProps {\n value: string;\n children: ReactNode;\n description?: string;\n disabled?: boolean;\n className?: string;\n}\n\nexport function AskUserOptionItem({\n value,\n children,\n description,\n disabled = false,\n className,\n}: AskUserOptionItemProps) {\n const context = useAskUserContext();\n const isDisabled = context.disabled || disabled;\n\n const handleOptionToggle = () => {\n if (!isDisabled) context.selectOption(value);\n };\n\n return (\n <AskUserOptionRow\n label={children}\n description={description}\n disabled={isDisabled}\n className={className}\n control={\n context.selectionMode === 'multi_select' ? (\n <Checkbox\n className=\"mt-0.5\"\n disabled={isDisabled}\n checked={context.selectedOptionLabels.includes(value)}\n onCheckedChange={handleOptionToggle}\n />\n ) : (\n <RadioGroupItem className=\"mt-0.5\" disabled={isDisabled} value={getOptionRadioValue(value)} />\n )\n }\n />\n );\n}\n\nexport type AskUserTextAnswerProps = Omit<\n ComponentProps<typeof Input>,\n 'value' | 'defaultValue' | 'onChange' | 'onKeyDown'\n>;\n\nexport function AskUserTextAnswer({ disabled = false, ...props }: AskUserTextAnswerProps) {\n const context = useAskUserContext();\n\n const handleAnswerTextChange = (event: ChangeEvent<HTMLInputElement>) => {\n context.changeAnswerText(event.target.value);\n };\n\n const handleAnswerTextKeyDown = (event: KeyboardEvent<HTMLInputElement>) => {\n if (event.key === 'Enter' && !event.nativeEvent.isComposing) {\n event.preventDefault();\n context.submitAnswer();\n }\n };\n\n return (\n <Input\n type=\"text\"\n aria-labelledby={props['aria-label'] ? undefined : context.questionId}\n placeholder=\"Type your answer...\"\n size=\"sm\"\n {...props}\n disabled={context.disabled || disabled}\n value={context.answerText}\n onChange={handleAnswerTextChange}\n onKeyDown={handleAnswerTextKeyDown}\n />\n );\n}\n\nexport interface AskUserCustomAnswerProps {\n className?: string;\n label?: string;\n inputLabel?: string;\n}\n\nexport function AskUserCustomAnswer({\n className,\n label = 'Other…',\n inputLabel = 'Your answer',\n}: AskUserCustomAnswerProps) {\n const context = useAskUserContext();\n\n const handleRowClick = (event: MouseEvent<HTMLDivElement>) => {\n if (context.disabled || event.target !== event.currentTarget) return;\n if (context.isCustomAnswerSelected) {\n event.currentTarget.querySelector<HTMLInputElement>('input[type=\"text\"]')?.focus();\n return;\n }\n event.currentTarget.querySelector<HTMLElement>('[role=\"radio\"], [role=\"checkbox\"]')?.click();\n };\n\n const handleControlMouseDown = (event: MouseEvent<HTMLSpanElement>) => {\n // Let the checkbox click unselect it before blur resets its controlled value.\n if (context.isCustomAnswerSelected && !context.answerText.trim()) event.preventDefault();\n };\n\n return (\n <FieldItem\n role=\"group\"\n aria-label=\"Custom answer\"\n aria-disabled={context.disabled || undefined}\n disabled={context.disabled}\n onClick={handleRowClick}\n className={cn(\n 'items-start gap-2.5 rounded-lg px-3 py-2 data-disabled:opacity-50',\n !context.isCustomAnswerSelected && 'state-layer',\n className,\n )}\n >\n {context.selectionMode === 'multi_select' ? (\n <Checkbox\n className=\"mt-0.5\"\n aria-label={label}\n disabled={context.disabled}\n checked={context.isCustomAnswerSelected}\n onMouseDown={handleControlMouseDown}\n onCheckedChange={context.setCustomAnswerSelected}\n />\n ) : (\n <RadioGroupItem aria-label={label} className=\"mt-0.5\" value={customAnswerValue} />\n )}\n {context.isCustomAnswerSelected ? (\n <AskUserTextAnswer\n aria-label={inputLabel}\n onBlur={context.unselectEmptyCustomAnswer}\n placeholder={label}\n variant=\"unstyled\"\n className={cn('h-auto min-w-0 flex-1 px-0', 'text-body')}\n autoFocus\n />\n ) : (\n <FieldLabel className=\"flex-1\">\n <Txt as=\"span\" variant=\"body\" tone=\"ink\">\n {label}\n </Txt>\n </FieldLabel>\n )}\n </FieldItem>\n );\n}\n\nexport type AskUserSubmitProps = ComponentProps<typeof AskUserSubmitButton> & {\n when?: 'always' | 'custom-answer';\n};\n\nexport function AskUserSubmit({ when = 'always', disabled = false, onClick, ...props }: AskUserSubmitProps) {\n const context = useOptionalAskUserContext();\n\n const handleSubmitClick = (event: MouseEvent<HTMLButtonElement>) => {\n onClick?.(event);\n if (!event.defaultPrevented && !disabled) context?.submitAnswer();\n };\n\n if (when === 'custom-answer' && !context?.isCustomAnswerSelected) return null;\n\n return (\n <AskUserSubmitButton\n {...props}\n disabled={disabled || (context !== undefined && !context.canSubmitAnswer)}\n onClick={handleSubmitClick}\n />\n );\n}\n","import { useId, useState } from 'react';\nimport type { ComponentProps } from 'react';\nimport { AskUserContext } from './ask-user-context';\nimport { AskUserContainer } from './ask-user-layout';\nimport type { AskUserAnswer, AskUserSelectionMode } from './ask-user-types';\n\nexport interface AskUserRootProps extends Omit<ComponentProps<typeof AskUserContainer>, 'onSubmit'> {\n selectionMode?: AskUserSelectionMode;\n disabled?: boolean;\n onSubmit: (answer: AskUserAnswer) => void;\n}\n\ninterface AskUserAnswerDraft {\n answerText: string;\n selectedOptionLabels: string[];\n selectionMode: AskUserSelectionMode;\n isCustomAnswerSelected: boolean;\n}\n\nfunction getAnswerToSubmit({\n answerText,\n selectedOptionLabels,\n selectionMode,\n isCustomAnswerSelected,\n}: AskUserAnswerDraft): AskUserAnswer | undefined {\n const trimmedAnswerText = answerText.trim();\n if (isCustomAnswerSelected && !trimmedAnswerText) return undefined;\n if (selectionMode === 'single_select') {\n // Suggested single-select answers already submit when selected.\n if (!isCustomAnswerSelected && selectedOptionLabels.length > 0) return undefined;\n return trimmedAnswerText || undefined;\n }\n\n const answerLabels = isCustomAnswerSelected ? [...selectedOptionLabels, trimmedAnswerText] : selectedOptionLabels;\n return answerLabels.length > 0 ? answerLabels : undefined;\n}\n\nfunction toggleSelectedOptionLabel(selectedOptionLabels: string[], optionLabel: string): string[] {\n if (selectedOptionLabels.includes(optionLabel)) {\n return selectedOptionLabels.filter(selectedLabel => selectedLabel !== optionLabel);\n }\n return [...selectedOptionLabels, optionLabel];\n}\n\nexport function AskUserRoot({\n selectionMode = 'single_select',\n disabled = false,\n onSubmit,\n children,\n ...props\n}: AskUserRootProps) {\n const questionId = useId();\n const [answerText, setAnswerText] = useState('');\n const [selectedOptionLabels, setSelectedOptionLabels] = useState<string[]>([]);\n const [isCustomAnswerSelected, setIsCustomAnswerSelected] = useState(false);\n const answerToSubmit = getAnswerToSubmit({\n answerText,\n selectedOptionLabels,\n selectionMode,\n isCustomAnswerSelected,\n });\n const canSubmitAnswer = !disabled && answerToSubmit !== undefined;\n\n const selectOption = (optionLabel: string) => {\n if (disabled) return;\n if (selectionMode === 'multi_select') {\n setSelectedOptionLabels(currentLabels => toggleSelectedOptionLabel(currentLabels, optionLabel));\n return;\n }\n setIsCustomAnswerSelected(false);\n setSelectedOptionLabels([optionLabel]);\n onSubmit(optionLabel);\n };\n\n const setCustomAnswerSelected = (selected: boolean) => {\n if (disabled) return;\n setIsCustomAnswerSelected(selected);\n if (selected && selectionMode === 'single_select') setSelectedOptionLabels([]);\n };\n\n const changeAnswerText = (text: string) => {\n if (!disabled) setAnswerText(text);\n };\n\n const unselectEmptyCustomAnswer = () => {\n if (!disabled && !answerText.trim()) setIsCustomAnswerSelected(false);\n };\n\n const submitAnswer = () => {\n if (disabled || answerToSubmit === undefined) return;\n onSubmit(answerToSubmit);\n };\n\n return (\n <AskUserContext.Provider\n value={{\n questionId,\n selectionMode,\n disabled,\n answerText,\n selectedOptionLabels,\n isCustomAnswerSelected,\n canSubmitAnswer,\n selectOption,\n setCustomAnswerSelected,\n changeAnswerText,\n unselectEmptyCustomAnswer,\n submitAnswer,\n }}\n >\n <AskUserContainer role=\"group\" aria-labelledby={questionId} {...props}>\n {children}\n </AskUserContainer>\n </AskUserContext.Provider>\n );\n}\n","import type { ComponentProps, ReactNode } from 'react';\nimport { useAskUserContext } from './ask-user-context';\nimport {\n AskUserCustomAnswer,\n AskUserOptionItem,\n AskUserOptions,\n AskUserSubmit,\n AskUserTextAnswer,\n} from './ask-user-controls';\nimport type { AskUserContainer } from './ask-user-layout';\nimport { AskUserBody, AskUserOutput, AskUserPending, AskUserQuestion } from './ask-user-layout';\nimport { AskUserRoot } from './ask-user-root';\nimport type { AskUserAnswer, AskUserOption, AskUserPayload, AskUserResult } from './ask-user-types';\nimport { Badge } from '@/ds/components/Badge';\n\nexport interface AskUserProps extends Omit<ComponentProps<typeof AskUserContainer>, 'children' | 'onSubmit'> {\n payload: AskUserPayload;\n result?: AskUserResult;\n isAnswered?: boolean;\n isSubmitting?: boolean;\n onSubmit: (answer: AskUserAnswer) => void;\n footer?: ReactNode;\n}\n\nfunction getValidOptions(options: AskUserPayload['options']): AskUserOption[] {\n return (\n options?.filter((option): option is AskUserOption =>\n Boolean(option && typeof option.label === 'string' && option.label),\n ) ?? []\n );\n}\n\nfunction AskUserAnswerControls({ options }: { options: AskUserOption[] }) {\n const { selectionMode } = useAskUserContext();\n const isMultiSelect = selectionMode === 'multi_select';\n if (options.length === 0) {\n return (\n <div className=\"flex items-center gap-2\">\n <AskUserTextAnswer />\n <AskUserSubmit className=\"shrink-0 whitespace-nowrap\" />\n </div>\n );\n }\n\n return (\n <>\n <AskUserOptions>\n {options.map(option => (\n <AskUserOptionItem key={option.label} value={option.label} description={option.description}>\n {option.label}\n </AskUserOptionItem>\n ))}\n <AskUserCustomAnswer />\n {isMultiSelect ? <AskUserSubmit className=\"mt-1 justify-self-start\" /> : null}\n </AskUserOptions>\n {!isMultiSelect ? <AskUserSubmit when=\"custom-answer\" className=\"mt-2\" /> : null}\n </>\n );\n}\n\ninterface AskUserCardContentProps extends Pick<AskUserProps, 'result' | 'isAnswered' | 'isSubmitting' | 'footer'> {\n options: AskUserOption[];\n}\n\nfunction AskUserCardContent({ result, isAnswered, isSubmitting, options, footer }: AskUserCardContentProps) {\n if (result) return <AskUserOutput result={result} />;\n if (isAnswered) return <Badge variant=\"success\">Answered</Badge>;\n\n return (\n <>\n <AskUserAnswerControls options={options} />\n {isSubmitting ? <AskUserPending className=\"mt-3 block\" /> : null}\n {footer}\n </>\n );\n}\n\nexport function AskUser({\n payload,\n result,\n isAnswered = false,\n isSubmitting = false,\n onSubmit,\n footer,\n ...props\n}: AskUserProps) {\n const options = getValidOptions(payload.options);\n const isMultiSelect = options.length > 0 && payload.selectionMode === 'multi_select';\n const payloadKey = JSON.stringify([payload.question, options.map(option => option.label), payload.selectionMode]);\n const hasAnswer = result !== undefined || isAnswered;\n\n return (\n <AskUserRoot\n key={payloadKey}\n data-testid=\"ask-user\"\n selectionMode={isMultiSelect ? 'multi_select' : 'single_select'}\n disabled={isSubmitting || hasAnswer}\n onSubmit={onSubmit}\n {...props}\n >\n <AskUserBody>\n <AskUserQuestion>{payload.question}</AskUserQuestion>\n <AskUserCardContent\n result={result}\n isAnswered={isAnswered}\n isSubmitting={isSubmitting}\n options={options}\n footer={footer}\n />\n </AskUserBody>\n </AskUserRoot>\n );\n}\n"],"mappings":"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"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
require('./buttons-group.css');const require_rolldown_runtime = require("./rolldown-runtime-CmQyd0Gu.cjs");
|
|
2
|
+
const require_utils = require("./utils-uDc1ofX1.cjs");
|
|
3
|
+
const require_primitives_control_size = require("./primitives/control-size.cjs.js");
|
|
4
|
+
let react = require("react");
|
|
5
|
+
react = require_rolldown_runtime.__toESM(react, 1);
|
|
6
|
+
let react_jsx_runtime = require("react/jsx-runtime");
|
|
7
|
+
// src/ds/components/ButtonsGroup/buttons-group.tsx
|
|
8
|
+
/** Joins related actions into one pill. To pick one of several options, use `SegmentedControl` instead. */
|
|
9
|
+
var ButtonsGroup = react.forwardRef(({ children, className, orientation = "horizontal", size = "md", ...props }, ref) => {
|
|
10
|
+
return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_primitives_control_size.ControlSizeContext.Provider, {
|
|
11
|
+
value: size,
|
|
12
|
+
children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
|
|
13
|
+
ref,
|
|
14
|
+
role: "group",
|
|
15
|
+
"data-slot": "buttons-group",
|
|
16
|
+
"data-orientation": orientation,
|
|
17
|
+
"data-size": size,
|
|
18
|
+
className: require_utils.cn("flex w-fit items-stretch", orientation === "vertical" ? "flex-col" : "flex-row", className),
|
|
19
|
+
...props,
|
|
20
|
+
children
|
|
21
|
+
})
|
|
22
|
+
});
|
|
23
|
+
});
|
|
24
|
+
ButtonsGroup.displayName = "ButtonsGroup";
|
|
25
|
+
var buttonsGroupTextClassName = require_utils.cn("inline-flex items-center justify-center border border-border bg-card text-foreground select-none", "shrink-0 gap-[.75em] rounded-full px-[1em] text-label whitespace-nowrap", "[&>svg]:size-[1.1em] [&>svg]:opacity-50");
|
|
26
|
+
var ButtonsGroupText = react.forwardRef(({ className, ...props }, ref) => {
|
|
27
|
+
return /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
|
|
28
|
+
ref,
|
|
29
|
+
"data-slot": "buttons-group-text",
|
|
30
|
+
className: require_utils.cn(buttonsGroupTextClassName, className),
|
|
31
|
+
...props
|
|
32
|
+
});
|
|
33
|
+
});
|
|
34
|
+
ButtonsGroupText.displayName = "ButtonsGroupText";
|
|
35
|
+
Object.defineProperty(exports, "ButtonsGroup", {
|
|
36
|
+
enumerable: true,
|
|
37
|
+
get: function() {
|
|
38
|
+
return ButtonsGroup;
|
|
39
|
+
}
|
|
40
|
+
});
|
|
41
|
+
Object.defineProperty(exports, "ButtonsGroupText", {
|
|
42
|
+
enumerable: true,
|
|
43
|
+
get: function() {
|
|
44
|
+
return ButtonsGroupText;
|
|
45
|
+
}
|
|
46
|
+
});
|
|
47
|
+
|
|
48
|
+
//# sourceMappingURL=buttons-group-Dc6R7YSs.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"buttons-group-Dc6R7YSs.cjs","names":["React","ControlSizeContext","cn"],"sources":["../src/ds/components/ButtonsGroup/buttons-group.tsx"],"sourcesContent":["import './buttons-group.css';\nimport * as React from 'react';\n\nimport { ControlSizeContext } from '@/ds/primitives/control-size';\nimport type { ControlSize } from '@/ds/primitives/control-size';\nimport { cn } from '@/lib/utils';\n\ntype Orientation = 'horizontal' | 'vertical';\n\nexport type ButtonsGroupProps = React.ComponentPropsWithoutRef<'div'> & {\n orientation?: Orientation;\n /**\n * The rung every segment sits on. The group owns it: a child's own `size` cannot lift a\n * segment off the group's rung, so a group can never render with a step in it.\n */\n size?: ControlSize;\n};\n\n/** Joins related actions into one pill. To pick one of several options, use `SegmentedControl` instead. */\nexport const ButtonsGroup = React.forwardRef<HTMLDivElement, ButtonsGroupProps>(\n ({ children, className, orientation = 'horizontal', size = 'md', ...props }, ref) => {\n return (\n <ControlSizeContext.Provider value={size}>\n <div\n ref={ref}\n role=\"group\"\n data-slot=\"buttons-group\"\n data-orientation={orientation}\n data-size={size}\n className={cn('flex w-fit items-stretch', orientation === 'vertical' ? 'flex-col' : 'flex-row', className)}\n {...props}\n >\n {children}\n </div>\n </ControlSizeContext.Provider>\n );\n },\n);\nButtonsGroup.displayName = 'ButtonsGroup';\n\n// No size of its own: a text segment only exists inside a group, and the group sets the\n// height. `text-label` is the type role at every rung (see `controlSizeClasses`), so the\n// box grows and the type does not.\nconst buttonsGroupTextClassName = cn(\n 'inline-flex items-center justify-center border border-border bg-card text-foreground select-none',\n 'shrink-0 gap-[.75em] rounded-full px-[1em] text-label whitespace-nowrap',\n '[&>svg]:size-[1.1em] [&>svg]:opacity-50',\n);\n\nexport type ButtonsGroupTextProps = React.ComponentPropsWithoutRef<'div'>;\n\nexport const ButtonsGroupText = React.forwardRef<HTMLDivElement, ButtonsGroupTextProps>(\n ({ className, ...props }, ref) => {\n return (\n <div ref={ref} data-slot=\"buttons-group-text\" className={cn(buttonsGroupTextClassName, className)} {...props} />\n );\n },\n);\nButtonsGroupText.displayName = 'ButtonsGroupText';\n"],"mappings":";;;;;;;;AAmBA,IAAa,eAAeA,MAAM,YAC/B,EAAE,UAAU,WAAW,cAAc,cAAc,OAAO,MAAM,GAAG,SAAS,QAAQ;CACnF,OACE,iBAAA,GAAA,kBAAA,IAAA,CAACC,gCAAAA,mBAAmB,UAApB;EAA6B,OAAO;EAClC,UAAA,iBAAA,GAAA,kBAAA,IAAA,CAAC,OAAD;GACO;GACL,MAAK;GACL,aAAU;GACV,oBAAkB;GAClB,aAAW;GACX,WAAWC,cAAAA,GAAG,4BAA4B,gBAAgB,aAAa,aAAa,YAAY,SAAS;GACzG,GAAI;GAEH;EACE,CAAA;CACsB,CAAA;AAEjC,CACF;AACA,aAAa,cAAc;AAK3B,IAAM,4BAA4BA,cAAAA,GAChC,oGACA,2EACA,yCACF;AAIA,IAAa,mBAAmBF,MAAM,YACnC,EAAE,WAAW,GAAG,SAAS,QAAQ;CAChC,OACE,iBAAA,GAAA,kBAAA,IAAA,CAAC,OAAD;EAAU;EAAK,aAAU;EAAqB,WAAWE,cAAAA,GAAG,2BAA2B,SAAS;EAAG,GAAI;CAAQ,CAAA;AAEnH,CACF;AACA,iBAAiB,cAAc"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { t as cn } from "./utils-DQx8TpNT.js";
|
|
2
|
+
import { ControlSizeContext } from "./primitives/control-size.es.js";
|
|
3
|
+
import * as React$1 from "react";
|
|
4
|
+
import { jsx } from "react/jsx-runtime";
|
|
5
|
+
import './buttons-group.css';// src/ds/components/ButtonsGroup/buttons-group.tsx
|
|
6
|
+
/** Joins related actions into one pill. To pick one of several options, use `SegmentedControl` instead. */
|
|
7
|
+
var ButtonsGroup = React$1.forwardRef(({ children, className, orientation = "horizontal", size = "md", ...props }, ref) => {
|
|
8
|
+
return /* @__PURE__ */ jsx(ControlSizeContext.Provider, {
|
|
9
|
+
value: size,
|
|
10
|
+
children: /* @__PURE__ */ jsx("div", {
|
|
11
|
+
ref,
|
|
12
|
+
role: "group",
|
|
13
|
+
"data-slot": "buttons-group",
|
|
14
|
+
"data-orientation": orientation,
|
|
15
|
+
"data-size": size,
|
|
16
|
+
className: cn("flex w-fit items-stretch", orientation === "vertical" ? "flex-col" : "flex-row", className),
|
|
17
|
+
...props,
|
|
18
|
+
children
|
|
19
|
+
})
|
|
20
|
+
});
|
|
21
|
+
});
|
|
22
|
+
ButtonsGroup.displayName = "ButtonsGroup";
|
|
23
|
+
var buttonsGroupTextClassName = cn("inline-flex items-center justify-center border border-border bg-card text-foreground select-none", "shrink-0 gap-[.75em] rounded-full px-[1em] text-label whitespace-nowrap", "[&>svg]:size-[1.1em] [&>svg]:opacity-50");
|
|
24
|
+
var ButtonsGroupText = React$1.forwardRef(({ className, ...props }, ref) => {
|
|
25
|
+
return /* @__PURE__ */ jsx("div", {
|
|
26
|
+
ref,
|
|
27
|
+
"data-slot": "buttons-group-text",
|
|
28
|
+
className: cn(buttonsGroupTextClassName, className),
|
|
29
|
+
...props
|
|
30
|
+
});
|
|
31
|
+
});
|
|
32
|
+
ButtonsGroupText.displayName = "ButtonsGroupText";
|
|
33
|
+
export { ButtonsGroupText as n, ButtonsGroup as t };
|
|
34
|
+
|
|
35
|
+
//# sourceMappingURL=buttons-group-DkFlnMiL.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"buttons-group-DkFlnMiL.js","names":["React"],"sources":["../src/ds/components/ButtonsGroup/buttons-group.tsx"],"sourcesContent":["import './buttons-group.css';\nimport * as React from 'react';\n\nimport { ControlSizeContext } from '@/ds/primitives/control-size';\nimport type { ControlSize } from '@/ds/primitives/control-size';\nimport { cn } from '@/lib/utils';\n\ntype Orientation = 'horizontal' | 'vertical';\n\nexport type ButtonsGroupProps = React.ComponentPropsWithoutRef<'div'> & {\n orientation?: Orientation;\n /**\n * The rung every segment sits on. The group owns it: a child's own `size` cannot lift a\n * segment off the group's rung, so a group can never render with a step in it.\n */\n size?: ControlSize;\n};\n\n/** Joins related actions into one pill. To pick one of several options, use `SegmentedControl` instead. */\nexport const ButtonsGroup = React.forwardRef<HTMLDivElement, ButtonsGroupProps>(\n ({ children, className, orientation = 'horizontal', size = 'md', ...props }, ref) => {\n return (\n <ControlSizeContext.Provider value={size}>\n <div\n ref={ref}\n role=\"group\"\n data-slot=\"buttons-group\"\n data-orientation={orientation}\n data-size={size}\n className={cn('flex w-fit items-stretch', orientation === 'vertical' ? 'flex-col' : 'flex-row', className)}\n {...props}\n >\n {children}\n </div>\n </ControlSizeContext.Provider>\n );\n },\n);\nButtonsGroup.displayName = 'ButtonsGroup';\n\n// No size of its own: a text segment only exists inside a group, and the group sets the\n// height. `text-label` is the type role at every rung (see `controlSizeClasses`), so the\n// box grows and the type does not.\nconst buttonsGroupTextClassName = cn(\n 'inline-flex items-center justify-center border border-border bg-card text-foreground select-none',\n 'shrink-0 gap-[.75em] rounded-full px-[1em] text-label whitespace-nowrap',\n '[&>svg]:size-[1.1em] [&>svg]:opacity-50',\n);\n\nexport type ButtonsGroupTextProps = React.ComponentPropsWithoutRef<'div'>;\n\nexport const ButtonsGroupText = React.forwardRef<HTMLDivElement, ButtonsGroupTextProps>(\n ({ className, ...props }, ref) => {\n return (\n <div ref={ref} data-slot=\"buttons-group-text\" className={cn(buttonsGroupTextClassName, className)} {...props} />\n );\n },\n);\nButtonsGroupText.displayName = 'ButtonsGroupText';\n"],"mappings":";;;;;;AAmBA,IAAa,eAAeA,QAAM,YAC/B,EAAE,UAAU,WAAW,cAAc,cAAc,OAAO,MAAM,GAAG,SAAS,QAAQ;CACnF,OACE,oBAAC,mBAAmB,UAApB;EAA6B,OAAO;EAClC,UAAA,oBAAC,OAAD;GACO;GACL,MAAK;GACL,aAAU;GACV,oBAAkB;GAClB,aAAW;GACX,WAAW,GAAG,4BAA4B,gBAAgB,aAAa,aAAa,YAAY,SAAS;GACzG,GAAI;GAEH;EACE,CAAA;CACsB,CAAA;AAEjC,CACF;AACA,aAAa,cAAc;AAK3B,IAAM,4BAA4B,GAChC,oGACA,2EACA,yCACF;AAIA,IAAa,mBAAmBA,QAAM,YACnC,EAAE,WAAW,GAAG,SAAS,QAAQ;CAChC,OACE,oBAAC,OAAD;EAAU;EAAK,aAAU;EAAqB,WAAW,GAAG,2BAA2B,SAAS;EAAG,GAAI;CAAQ,CAAA;AAEnH,CACF;AACA,iBAAiB,cAAc"}
|
|
@@ -121,6 +121,8 @@
|
|
|
121
121
|
[data-slot='buttons-group'] > :is(.shadow-raised, .shadow-input) {
|
|
122
122
|
box-shadow: inset 0 0 0 9999px var(--surface-tint);
|
|
123
123
|
border-width: 1px;
|
|
124
|
+
/* Button gives a border's width back from its padding, so the label stays put. */
|
|
125
|
+
--control-border: 1px;
|
|
124
126
|
}
|
|
125
127
|
|
|
126
128
|
/* One border per seam, and no overlap. A border is a translucent alpha of the
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
const require_Button = require("./Button-DLcMcuUL.cjs");
|
|
2
|
+
let react_jsx_runtime = require("react/jsx-runtime");
|
|
3
|
+
let lucide_react = require("lucide-react");
|
|
4
|
+
// src/ds/components/ClearFiltersButton/clear-filters-button.tsx
|
|
5
|
+
/**
|
|
6
|
+
* Resets every filter in a toolbar: a round icon button at the toolbar's height, named by its
|
|
7
|
+
* tooltip. A single filter's own × removes just that filter, so this one never uses an ×.
|
|
8
|
+
*/
|
|
9
|
+
function ClearFiltersButton({ onClick, label = "Clear filters", disabled }) {
|
|
10
|
+
return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_Button.Button, {
|
|
11
|
+
type: "button",
|
|
12
|
+
size: "icon-sm",
|
|
13
|
+
"aria-label": label,
|
|
14
|
+
tooltip: label,
|
|
15
|
+
onClick,
|
|
16
|
+
disabled,
|
|
17
|
+
children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(lucide_react.RotateCcwIcon, {})
|
|
18
|
+
});
|
|
19
|
+
}
|
|
20
|
+
Object.defineProperty(exports, "ClearFiltersButton", {
|
|
21
|
+
enumerable: true,
|
|
22
|
+
get: function() {
|
|
23
|
+
return ClearFiltersButton;
|
|
24
|
+
}
|
|
25
|
+
});
|
|
26
|
+
|
|
27
|
+
//# sourceMappingURL=clear-filters-button-Buc973vw.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"clear-filters-button-Buc973vw.cjs","names":["Button","RotateCcwIcon"],"sources":["../src/ds/components/ClearFiltersButton/clear-filters-button.tsx"],"sourcesContent":["import { RotateCcwIcon } from 'lucide-react';\nimport type { MouseEventHandler } from 'react';\nimport { Button } from '@/ds/components/Button/Button';\n\nexport type ClearFiltersButtonProps = {\n onClick: MouseEventHandler<HTMLButtonElement>;\n /** Tooltip and accessible name. */\n label?: string;\n disabled?: boolean;\n};\n\n/**\n * Resets every filter in a toolbar: a round icon button at the toolbar's height, named by its\n * tooltip. A single filter's own × removes just that filter, so this one never uses an ×.\n */\nexport function ClearFiltersButton({ onClick, label = 'Clear filters', disabled }: ClearFiltersButtonProps) {\n return (\n <Button type=\"button\" size=\"icon-sm\" aria-label={label} tooltip={label} onClick={onClick} disabled={disabled}>\n <RotateCcwIcon />\n </Button>\n );\n}\n"],"mappings":";;;;;;;;AAeA,SAAgB,mBAAmB,EAAE,SAAS,QAAQ,iBAAiB,YAAqC;CAC1G,OACE,iBAAA,GAAA,kBAAA,IAAA,CAACA,eAAAA,QAAD;EAAQ,MAAK;EAAS,MAAK;EAAU,cAAY;EAAO,SAAS;EAAgB;EAAmB;EAClG,UAAA,iBAAA,GAAA,kBAAA,IAAA,CAACC,aAAAA,eAAD,CAAgB,CAAA;CACV,CAAA;AAEZ"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { t as Button } from "./Button-CLXTbAY8.js";
|
|
2
|
+
import { jsx } from "react/jsx-runtime";
|
|
3
|
+
import { RotateCcwIcon } from "lucide-react";
|
|
4
|
+
// src/ds/components/ClearFiltersButton/clear-filters-button.tsx
|
|
5
|
+
/**
|
|
6
|
+
* Resets every filter in a toolbar: a round icon button at the toolbar's height, named by its
|
|
7
|
+
* tooltip. A single filter's own × removes just that filter, so this one never uses an ×.
|
|
8
|
+
*/
|
|
9
|
+
function ClearFiltersButton({ onClick, label = "Clear filters", disabled }) {
|
|
10
|
+
return /* @__PURE__ */ jsx(Button, {
|
|
11
|
+
type: "button",
|
|
12
|
+
size: "icon-sm",
|
|
13
|
+
"aria-label": label,
|
|
14
|
+
tooltip: label,
|
|
15
|
+
onClick,
|
|
16
|
+
disabled,
|
|
17
|
+
children: /* @__PURE__ */ jsx(RotateCcwIcon, {})
|
|
18
|
+
});
|
|
19
|
+
}
|
|
20
|
+
export { ClearFiltersButton as t };
|
|
21
|
+
|
|
22
|
+
//# sourceMappingURL=clear-filters-button-CNrRuHOY.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"clear-filters-button-CNrRuHOY.js","names":[],"sources":["../src/ds/components/ClearFiltersButton/clear-filters-button.tsx"],"sourcesContent":["import { RotateCcwIcon } from 'lucide-react';\nimport type { MouseEventHandler } from 'react';\nimport { Button } from '@/ds/components/Button/Button';\n\nexport type ClearFiltersButtonProps = {\n onClick: MouseEventHandler<HTMLButtonElement>;\n /** Tooltip and accessible name. */\n label?: string;\n disabled?: boolean;\n};\n\n/**\n * Resets every filter in a toolbar: a round icon button at the toolbar's height, named by its\n * tooltip. A single filter's own × removes just that filter, so this one never uses an ×.\n */\nexport function ClearFiltersButton({ onClick, label = 'Clear filters', disabled }: ClearFiltersButtonProps) {\n return (\n <Button type=\"button\" size=\"icon-sm\" aria-label={label} tooltip={label} onClick={onClick} disabled={disabled}>\n <RotateCcwIcon />\n </Button>\n );\n}\n"],"mappings":";;;;;;;;AAeA,SAAgB,mBAAmB,EAAE,SAAS,QAAQ,iBAAiB,YAAqC;CAC1G,OACE,oBAAC,QAAD;EAAQ,MAAK;EAAS,MAAK;EAAU,cAAY;EAAO,SAAS;EAAgB;EAAmB;EAClG,UAAA,oBAAC,eAAD,CAAgB,CAAA;CACV,CAAA;AAEZ"}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
const require_rolldown_runtime = require("./rolldown-runtime-CmQyd0Gu.cjs");
|
|
2
2
|
const require_utils = require("./utils-uDc1ofX1.cjs");
|
|
3
3
|
const require_primitives_form_element = require("./primitives/form-element.cjs.js");
|
|
4
|
-
const require_Button = require("./Button-
|
|
4
|
+
const require_Button = require("./Button-DLcMcuUL.cjs");
|
|
5
5
|
const require_field_control_aria = require("./field-control-aria-Dw0_ObOU.cjs");
|
|
6
|
-
const require_combobox_parts = require("./combobox-parts-
|
|
6
|
+
const require_combobox_parts = require("./combobox-parts-ScKcYjMR.cjs");
|
|
7
7
|
const require_field_error_id = require("./field-error-id-nGAF0330.cjs");
|
|
8
8
|
let react = require("react");
|
|
9
9
|
react = require_rolldown_runtime.__toESM(react, 1);
|
|
@@ -306,4 +306,4 @@ Object.defineProperty(exports, "Combobox", {
|
|
|
306
306
|
}
|
|
307
307
|
});
|
|
308
308
|
|
|
309
|
-
//# sourceMappingURL=combobox-
|
|
309
|
+
//# sourceMappingURL=combobox-CMx2ayFN.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"combobox-8kNAJFlj.cjs","names":["isIconButtonSize","BaseCombobox","fieldErrorId","keepOwnAccessibleName","deprecatedErrorAria","cn","comboboxStyles","Button","X","ComboboxContent","ComboboxSearch","ComboboxEmpty","ComboboxList","ComboboxItem","ComboboxInput","ComboboxTrigger","ComboboxValue","ComboboxChips","_Fragment","ComboboxChip","ComboboxChipsInput","React","ComboboxRoot","useFieldAriaIds","FieldBlock"],"sources":["../src/ds/components/Combobox/combobox.tsx"],"sourcesContent":["import { Combobox as BaseCombobox } from '@base-ui/react/combobox';\nimport { X } from 'lucide-react';\nimport * as React from 'react';\nimport {\n ComboboxChip,\n ComboboxChips,\n ComboboxChipsInput,\n ComboboxContent,\n ComboboxEmpty,\n ComboboxInput,\n ComboboxItem,\n ComboboxList,\n ComboboxRoot,\n ComboboxSearch,\n ComboboxTrigger,\n ComboboxValue,\n} from './combobox-parts';\nimport { comboboxStyles } from './combobox-styles';\nimport type { ComboboxVariant } from './combobox-styles';\nimport { Button, isIconButtonSize } from '@/ds/components/Button/Button';\nimport type { ButtonSize } from '@/ds/components/Button/Button';\nimport { keepOwnAccessibleName, useFieldAriaIds } from '@/ds/components/Field/field-control-aria';\nimport { FieldBlock } from '@/ds/components/FormFieldBlocks/block/field-block';\nimport { fieldErrorId } from '@/ds/components/FormFieldBlocks/block/field-error-id';\nimport { deprecatedErrorAria } from '@/ds/primitives/form-element';\nimport type { PortalContainer } from '@/ds/primitives/portal-container';\nimport { cn } from '@/lib/utils';\n\nexport type { ComboboxVariant } from './combobox-styles';\n\nexport type ComboboxOption = {\n label: string;\n value: string;\n description?: string;\n displayLabel?: React.ReactNode;\n start?: React.ReactNode;\n end?: React.ReactNode;\n /** Extra terms the search matches besides `label` (aliases, ids, a provider name). Never displayed. */\n keywords?: readonly string[];\n};\n\ntype ComboboxSharedProps = {\n options: ComboboxOption[];\n placeholder?: React.ReactNode;\n /** The search row's placeholder for compact triggers. A field (inside a `Field`) searches in itself and shows `placeholder`. */\n searchPlaceholder?: string;\n emptyText?: string;\n className?: string;\n disabled?: boolean;\n /**\n * `default` inside a `Field` is a form field you type in to search. `ghost` (and the legacy `outline`/`link`),\n * or any variant outside a `Field`, is a compact trigger with the search inside the popup.\n */\n variant?: ComboboxVariant;\n /** Icon sizes (`icon-*`) render a chevron-only trigger with the search in the popup; pass `aria-label` to name it. */\n size?: ButtonSize;\n open?: boolean;\n onOpenChange?: (open: boolean) => void;\n container?: PortalContainer;\n id?: string;\n 'aria-label'?: string;\n 'aria-describedby'?: string;\n /** Which edge of the trigger the popup lines up with. `end` opens it leftwards (e.g. an icon trigger at the end of a row). */\n align?: 'start' | 'center' | 'end';\n showChevron?: boolean;\n iconOnlyValue?: boolean;\n allowCustomValue?: boolean;\n /** Called with the search text as it changes (and with `''` after a compact trigger's selection resets it). */\n onInputValueChange?: (value: string) => void;\n /** @deprecated Wrap the combobox in `<Field invalid>` with a `FieldError`. */\n error?: string;\n /** @deprecated Only keyed the `error` message id; a `Field` links its error without one. */\n name?: string;\n};\n\nexport type ComboboxSingleProps = ComboboxSharedProps & {\n multiple?: false;\n value?: string;\n onValueChange?: (value: string) => void;\n};\n\nexport type ComboboxMultipleProps = ComboboxSharedProps & {\n multiple: true;\n value?: readonly string[];\n onValueChange?: (value: string[]) => void;\n clearLabel?: string;\n};\n\nexport type ComboboxProps = ComboboxSingleProps | ComboboxMultipleProps;\n\nconst EMPTY_VALUES: readonly string[] = [];\n\nfunction isMultipleCombobox(props: ComboboxProps): props is ComboboxMultipleProps {\n return props.multiple === true;\n}\n\n/** The text a field shows for its value: a plain-text `displayLabel` wins over `label`. */\nfunction optionText(option: ComboboxOption) {\n return typeof option.displayLabel === 'string' ? option.displayLabel : option.label;\n}\n\n/** Inputs take a text placeholder only; a ReactNode placeholder keeps the compact trigger. */\nfunction textPlaceholder(placeholder: React.ReactNode) {\n return typeof placeholder === 'string' ? placeholder : undefined;\n}\n\n/**\n * How the combobox renders:\n * - `field`: a single select inside a `Field` searches in the field, like a text input.\n * - `chips`: a multiple select inside a `Field` shows its picks as chips and searches in the field.\n * - `trigger`: everything else (toolbars, breadcrumbs, inline pickers that callers lay out as a button)\n * keeps a compact trigger with the search inside the popup.\n */\ntype ComboboxShape = 'field' | 'chips' | 'trigger';\n\nfunction getComboboxShape({\n inFieldContext,\n multiple,\n variant,\n size,\n iconOnlyValue,\n showChevron,\n placeholder,\n}: {\n inFieldContext: boolean;\n multiple: boolean;\n variant: ComboboxVariant;\n size: ButtonSize;\n iconOnlyValue: boolean;\n showChevron: boolean;\n placeholder: React.ReactNode;\n}): ComboboxShape {\n if (!inFieldContext) return 'trigger';\n if (variant !== 'default') return 'trigger';\n if (isIconButtonSize(size)) return 'trigger';\n if (iconOnlyValue || !showChevron) return 'trigger';\n if (placeholder !== undefined && textPlaceholder(placeholder) === undefined) return 'trigger';\n if (!multiple) return 'field';\n // The chips field is tuned to the medium control height.\n if (size !== 'md') return 'trigger';\n return 'chips';\n}\n\n/** A \"Use “text”\" option for typed text that isn't one of the options yet. */\nfunction getCustomOption(options: ComboboxOption[], inputValue: string): ComboboxOption | undefined {\n const value = inputValue.trim();\n if (!value) return undefined;\n // A field shows the selected option's text while it's closed; that isn't a new value.\n if (options.some(option => option.value === value || optionText(option) === value)) return undefined;\n return { label: `Use “${value}”`, value };\n}\n\n/** Matches the label like Base UI's default filter, the text a field shows, and any keywords. */\nfunction useOptionFilter() {\n const { contains } = BaseCombobox.useFilter();\n return (option: ComboboxOption, query: string) =>\n [option.label, optionText(option), ...(option.keywords ?? [])].some(text => contains(text, query));\n}\n\n/** Names the control when nothing else does: an `id` or a `Field` links a label to it instead. */\nfunction getFallbackAriaLabel({ hasLabel, multiple }: { hasLabel: boolean; multiple: boolean }) {\n if (hasLabel) return undefined;\n return multiple ? 'Select options' : 'Select option';\n}\n\nfunction getControlProps({\n id,\n ariaLabel,\n ariaDescribedBy,\n hasLabel,\n multiple,\n error,\n errorName,\n}: {\n id?: string;\n ariaLabel?: string;\n ariaDescribedBy?: string;\n hasLabel: boolean;\n multiple: boolean;\n error?: string;\n errorName: string;\n}) {\n const describedBy = [ariaDescribedBy, error ? fieldErrorId(errorName) : undefined].filter(Boolean).join(' ');\n return {\n id,\n 'aria-label': ariaLabel ?? getFallbackAriaLabel({ hasLabel, multiple }),\n ...keepOwnAccessibleName({ 'aria-label': ariaLabel }),\n ...deprecatedErrorAria(Boolean(error)),\n 'aria-describedby': describedBy || undefined,\n };\n}\n\ntype ControlProps = ReturnType<typeof getControlProps>;\n\nfunction triggerClassName({ iconOnlyValue, className }: { iconOnlyValue: boolean; className?: string }) {\n return cn(iconOnlyValue && 'w-auto px-2.5', className);\n}\n\nfunction ComboboxOptionText({ option }: { option: ComboboxOption }) {\n return (\n <span className={comboboxStyles.optionText}>\n <span className={comboboxStyles.optionLabel}>{option.label}</span>\n {option.description && <span className={comboboxStyles.optionDescription}>{option.description}</span>}\n </span>\n );\n}\n\nfunction ComboboxClearFooter({ label, onClear }: { label: string; onClear: () => void }) {\n return (\n <div className=\"border-t border-border p-1\">\n <Button\n type=\"button\"\n variant=\"destructive-ghost\"\n size=\"sm\"\n className=\"w-full justify-start\"\n onClick={onClear}\n icon={<X />}\n >\n {label}\n </Button>\n </div>\n );\n}\n\n/** The popup: the search row for a compact trigger (a field searches in itself), then the options. */\nfunction ComboboxOptionsContent({\n showSearch,\n searchPlaceholder,\n emptyText,\n align,\n container,\n footer,\n}: {\n showSearch: boolean;\n searchPlaceholder: string;\n emptyText: string;\n align: 'start' | 'center' | 'end';\n container?: PortalContainer;\n footer?: React.ReactNode;\n}) {\n return (\n <ComboboxContent align={align} container={container}>\n {showSearch ? <ComboboxSearch placeholder={searchPlaceholder} /> : null}\n <ComboboxEmpty>{emptyText}</ComboboxEmpty>\n <ComboboxList>\n {(option: ComboboxOption) => (\n <ComboboxItem key={option.value} value={option}>\n {option.start}\n <ComboboxOptionText option={option} />\n {option.end ? <span className={comboboxStyles.optionEnd}>{option.end}</span> : null}\n </ComboboxItem>\n )}\n </ComboboxList>\n {footer}\n </ComboboxContent>\n );\n}\n\ntype TriggerLookProps = {\n variant: ComboboxVariant;\n size: ButtonSize;\n showChevron: boolean;\n iconOnlyValue: boolean;\n className?: string;\n};\n\nfunction SingleComboboxControl({\n shape,\n controlProps,\n placeholder,\n selectedOption,\n look,\n}: {\n shape: ComboboxShape;\n controlProps: ControlProps;\n placeholder: React.ReactNode;\n selectedOption?: ComboboxOption;\n look: TriggerLookProps;\n}) {\n if (shape === 'field') {\n return (\n <ComboboxInput\n {...controlProps}\n size={isIconButtonSize(look.size) ? undefined : look.size}\n placeholder={textPlaceholder(placeholder)}\n start={selectedOption?.start}\n className={look.className}\n />\n );\n }\n\n return (\n <ComboboxTrigger\n {...controlProps}\n variant={look.variant}\n size={look.size}\n showChevron={look.showChevron}\n icon={isIconButtonSize(look.size) ? undefined : selectedOption?.start}\n className={triggerClassName(look)}\n >\n {selectedOption?.displayLabel ?? <ComboboxValue placeholder={placeholder} />}\n </ComboboxTrigger>\n );\n}\n\nfunction MultipleComboboxControl({\n shape,\n controlProps,\n placeholder,\n selectedCount,\n look,\n}: {\n shape: ComboboxShape;\n controlProps: ControlProps;\n placeholder: React.ReactNode;\n selectedCount: number;\n look: TriggerLookProps;\n}) {\n if (shape === 'chips') {\n return (\n <ComboboxChips className={look.className}>\n <ComboboxValue>\n {(items: ComboboxOption[]) => (\n <>\n {items.map(item => (\n <ComboboxChip key={item.value}>{item.label}</ComboboxChip>\n ))}\n <ComboboxChipsInput\n {...controlProps}\n placeholder={items.length === 0 ? textPlaceholder(placeholder) : undefined}\n />\n </>\n )}\n </ComboboxValue>\n </ComboboxChips>\n );\n }\n\n const text = selectedCount === 0 ? placeholder : `${selectedCount} selected`;\n return (\n <ComboboxTrigger\n {...controlProps}\n variant={look.variant}\n size={look.size}\n showChevron={look.showChevron}\n className={triggerClassName(look)}\n >\n <span className={cn(selectedCount === 0 && comboboxStyles.placeholder)}>{text}</span>\n </ComboboxTrigger>\n );\n}\n\ntype ShapeProps = { shape: ComboboxShape; controlProps: ControlProps };\n\nfunction SingleCombobox({\n shape,\n controlProps,\n options,\n value,\n onValueChange,\n placeholder = 'Select option...',\n searchPlaceholder = 'Search...',\n emptyText = 'No option found.',\n className,\n disabled = false,\n variant = 'default',\n size = 'md',\n open,\n onOpenChange,\n container,\n align = 'start',\n showChevron = true,\n iconOnlyValue = false,\n allowCustomValue = false,\n onInputValueChange,\n}: ComboboxSingleProps & ShapeProps) {\n // The search text: a field's own text, or the compact trigger's popup search.\n const [inputValue, setInputValue] = React.useState('');\n const filter = useOptionFilter();\n const inField = shape === 'field';\n const selectedOption = options.find(option => option.value === value);\n const customOption = allowCustomValue ? getCustomOption(options, inputValue) : undefined;\n const items = customOption ? [customOption, ...options] : options;\n\n function handleInputValueChange(next: string) {\n setInputValue(next);\n onInputValueChange?.(next);\n }\n\n function handleValueChange(item: ComboboxOption | null) {\n if (!item) return;\n onValueChange?.(item.value);\n // A field shows the picked option; a compact trigger's popup search starts empty next time.\n if (!inField) handleInputValueChange('');\n }\n\n return (\n <ComboboxRoot\n autoHighlight\n items={items}\n filter={filter}\n itemToStringLabel={optionText}\n // Base UI's \"nothing selected\" is null.\n value={selectedOption ?? null}\n // A field owns its text (the selected option's, or the search); a compact trigger's search is reset here.\n inputValue={inField ? undefined : inputValue}\n onInputValueChange={handleInputValueChange}\n onValueChange={handleValueChange}\n disabled={disabled}\n open={open}\n onOpenChange={onOpenChange}\n >\n <SingleComboboxControl\n shape={shape}\n controlProps={controlProps}\n placeholder={placeholder}\n selectedOption={selectedOption}\n look={{ variant, size, showChevron, iconOnlyValue, className }}\n />\n <ComboboxOptionsContent\n showSearch={!inField}\n searchPlaceholder={searchPlaceholder}\n emptyText={emptyText}\n align={align}\n container={container}\n />\n </ComboboxRoot>\n );\n}\n\nfunction MultipleCombobox({\n shape,\n controlProps,\n options,\n value = EMPTY_VALUES,\n onValueChange,\n clearLabel,\n placeholder = 'Select options...',\n searchPlaceholder = 'Search...',\n emptyText = 'No option found.',\n className,\n disabled = false,\n variant = 'default',\n size = 'md',\n open,\n onOpenChange,\n container,\n align = 'start',\n showChevron = true,\n iconOnlyValue = false,\n}: ComboboxMultipleProps & ShapeProps) {\n const filter = useOptionFilter();\n const selectedValues = new Set(value);\n const selectedOptions = options.filter(option => selectedValues.has(option.value));\n const footer =\n clearLabel && selectedOptions.length > 0 ? (\n <ComboboxClearFooter label={clearLabel} onClear={() => onValueChange?.([])} />\n ) : undefined;\n\n return (\n <ComboboxRoot\n multiple\n autoHighlight\n items={options}\n filter={filter}\n value={selectedOptions}\n onValueChange={items => onValueChange?.(items.map(item => item.value))}\n disabled={disabled}\n open={open}\n onOpenChange={onOpenChange}\n >\n <MultipleComboboxControl\n shape={shape}\n controlProps={controlProps}\n placeholder={placeholder}\n selectedCount={selectedOptions.length}\n look={{ variant, size, showChevron, iconOnlyValue, className }}\n />\n <ComboboxOptionsContent\n showSearch={shape !== 'chips'}\n searchPlaceholder={searchPlaceholder}\n emptyText={emptyText}\n align={align}\n container={container}\n footer={footer}\n />\n </ComboboxRoot>\n );\n}\n\n/**\n * A searchable select driven by `options`, built on the Combobox parts.\n *\n * Inside a `Field`, a `default` combobox searches right in the field: a text field for a single value,\n * removable chips for `multiple`. Everywhere else (outside a `Field`, `ghost` and icon-size triggers,\n * custom non-text placeholders) it keeps a compact trigger with the search inside the popup. For anything\n * these props don't cover (groups, rich items), compose the parts directly (`ComboboxRoot`, ...).\n */\nexport function Combobox(props: ComboboxProps) {\n const field = useFieldAriaIds();\n const generatedName = React.useId();\n const multiple = isMultipleCombobox(props);\n const shape = getComboboxShape({\n inFieldContext: Boolean(field),\n multiple,\n variant: props.variant ?? 'default',\n size: props.size ?? 'md',\n iconOnlyValue: props.iconOnlyValue ?? false,\n showChevron: props.showChevron ?? true,\n placeholder: props.placeholder,\n });\n const errorName = props.name ?? generatedName;\n const controlProps = getControlProps({\n id: props.id,\n ariaLabel: props['aria-label'],\n ariaDescribedBy: props['aria-describedby'],\n hasLabel: Boolean(props.id || field),\n multiple,\n error: props.error,\n errorName,\n });\n\n const root = isMultipleCombobox(props) ? (\n <MultipleCombobox {...props} shape={shape} controlProps={controlProps} />\n ) : (\n <SingleCombobox {...props} shape={shape} controlProps={controlProps} />\n );\n\n if (!props.error) return root;\n\n return (\n <div className={comboboxStyles.root}>\n {root}\n <FieldBlock.ErrorMsg name={errorName}>{props.error}</FieldBlock.ErrorMsg>\n </div>\n );\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"combobox-CMx2ayFN.cjs","names":["isIconButtonSize","BaseCombobox","fieldErrorId","keepOwnAccessibleName","deprecatedErrorAria","cn","comboboxStyles","Button","X","ComboboxContent","ComboboxSearch","ComboboxEmpty","ComboboxList","ComboboxItem","ComboboxInput","ComboboxTrigger","ComboboxValue","ComboboxChips","_Fragment","ComboboxChip","ComboboxChipsInput","React","ComboboxRoot","useFieldAriaIds","FieldBlock"],"sources":["../src/ds/components/Combobox/combobox.tsx"],"sourcesContent":["import { Combobox as BaseCombobox } from '@base-ui/react/combobox';\nimport { X } from 'lucide-react';\nimport * as React from 'react';\nimport {\n ComboboxChip,\n ComboboxChips,\n ComboboxChipsInput,\n ComboboxContent,\n ComboboxEmpty,\n ComboboxInput,\n ComboboxItem,\n ComboboxList,\n ComboboxRoot,\n ComboboxSearch,\n ComboboxTrigger,\n ComboboxValue,\n} from './combobox-parts';\nimport { comboboxStyles } from './combobox-styles';\nimport type { ComboboxVariant } from './combobox-styles';\nimport { Button, isIconButtonSize } from '@/ds/components/Button/Button';\nimport type { ButtonSize } from '@/ds/components/Button/Button';\nimport { keepOwnAccessibleName, useFieldAriaIds } from '@/ds/components/Field/field-control-aria';\nimport { FieldBlock } from '@/ds/components/FormFieldBlocks/block/field-block';\nimport { fieldErrorId } from '@/ds/components/FormFieldBlocks/block/field-error-id';\nimport { deprecatedErrorAria } from '@/ds/primitives/form-element';\nimport type { PortalContainer } from '@/ds/primitives/portal-container';\nimport { cn } from '@/lib/utils';\n\nexport type { ComboboxVariant } from './combobox-styles';\n\nexport type ComboboxOption = {\n label: string;\n value: string;\n description?: string;\n displayLabel?: React.ReactNode;\n start?: React.ReactNode;\n end?: React.ReactNode;\n /** Extra terms the search matches besides `label` (aliases, ids, a provider name). Never displayed. */\n keywords?: readonly string[];\n};\n\ntype ComboboxSharedProps = {\n options: ComboboxOption[];\n placeholder?: React.ReactNode;\n /** The search row's placeholder for compact triggers. A field (inside a `Field`) searches in itself and shows `placeholder`. */\n searchPlaceholder?: string;\n emptyText?: string;\n className?: string;\n disabled?: boolean;\n /**\n * `default` inside a `Field` is a form field you type in to search. `ghost` (and the legacy `outline`/`link`),\n * or any variant outside a `Field`, is a compact trigger with the search inside the popup.\n */\n variant?: ComboboxVariant;\n /** Icon sizes (`icon-*`) render a chevron-only trigger with the search in the popup; pass `aria-label` to name it. */\n size?: ButtonSize;\n open?: boolean;\n onOpenChange?: (open: boolean) => void;\n container?: PortalContainer;\n id?: string;\n 'aria-label'?: string;\n 'aria-describedby'?: string;\n /** Which edge of the trigger the popup lines up with. `end` opens it leftwards (e.g. an icon trigger at the end of a row). */\n align?: 'start' | 'center' | 'end';\n showChevron?: boolean;\n iconOnlyValue?: boolean;\n allowCustomValue?: boolean;\n /** Called with the search text as it changes (and with `''` after a compact trigger's selection resets it). */\n onInputValueChange?: (value: string) => void;\n /** @deprecated Wrap the combobox in `<Field invalid>` with a `FieldError`. */\n error?: string;\n /** @deprecated Only keyed the `error` message id; a `Field` links its error without one. */\n name?: string;\n};\n\nexport type ComboboxSingleProps = ComboboxSharedProps & {\n multiple?: false;\n value?: string;\n onValueChange?: (value: string) => void;\n};\n\nexport type ComboboxMultipleProps = ComboboxSharedProps & {\n multiple: true;\n value?: readonly string[];\n onValueChange?: (value: string[]) => void;\n clearLabel?: string;\n};\n\nexport type ComboboxProps = ComboboxSingleProps | ComboboxMultipleProps;\n\nconst EMPTY_VALUES: readonly string[] = [];\n\nfunction isMultipleCombobox(props: ComboboxProps): props is ComboboxMultipleProps {\n return props.multiple === true;\n}\n\n/** The text a field shows for its value: a plain-text `displayLabel` wins over `label`. */\nfunction optionText(option: ComboboxOption) {\n return typeof option.displayLabel === 'string' ? option.displayLabel : option.label;\n}\n\n/** Inputs take a text placeholder only; a ReactNode placeholder keeps the compact trigger. */\nfunction textPlaceholder(placeholder: React.ReactNode) {\n return typeof placeholder === 'string' ? placeholder : undefined;\n}\n\n/**\n * How the combobox renders:\n * - `field`: a single select inside a `Field` searches in the field, like a text input.\n * - `chips`: a multiple select inside a `Field` shows its picks as chips and searches in the field.\n * - `trigger`: everything else (toolbars, breadcrumbs, inline pickers that callers lay out as a button)\n * keeps a compact trigger with the search inside the popup.\n */\ntype ComboboxShape = 'field' | 'chips' | 'trigger';\n\nfunction getComboboxShape({\n inFieldContext,\n multiple,\n variant,\n size,\n iconOnlyValue,\n showChevron,\n placeholder,\n}: {\n inFieldContext: boolean;\n multiple: boolean;\n variant: ComboboxVariant;\n size: ButtonSize;\n iconOnlyValue: boolean;\n showChevron: boolean;\n placeholder: React.ReactNode;\n}): ComboboxShape {\n if (!inFieldContext) return 'trigger';\n if (variant !== 'default') return 'trigger';\n if (isIconButtonSize(size)) return 'trigger';\n if (iconOnlyValue || !showChevron) return 'trigger';\n if (placeholder !== undefined && textPlaceholder(placeholder) === undefined) return 'trigger';\n if (!multiple) return 'field';\n // The chips field is tuned to the medium control height.\n if (size !== 'md') return 'trigger';\n return 'chips';\n}\n\n/** A \"Use “text”\" option for typed text that isn't one of the options yet. */\nfunction getCustomOption(options: ComboboxOption[], inputValue: string): ComboboxOption | undefined {\n const value = inputValue.trim();\n if (!value) return undefined;\n // A field shows the selected option's text while it's closed; that isn't a new value.\n if (options.some(option => option.value === value || optionText(option) === value)) return undefined;\n return { label: `Use “${value}”`, value };\n}\n\n/** Matches the label like Base UI's default filter, the text a field shows, and any keywords. */\nfunction useOptionFilter() {\n const { contains } = BaseCombobox.useFilter();\n return (option: ComboboxOption, query: string) =>\n [option.label, optionText(option), ...(option.keywords ?? [])].some(text => contains(text, query));\n}\n\n/** Names the control when nothing else does: an `id` or a `Field` links a label to it instead. */\nfunction getFallbackAriaLabel({ hasLabel, multiple }: { hasLabel: boolean; multiple: boolean }) {\n if (hasLabel) return undefined;\n return multiple ? 'Select options' : 'Select option';\n}\n\nfunction getControlProps({\n id,\n ariaLabel,\n ariaDescribedBy,\n hasLabel,\n multiple,\n error,\n errorName,\n}: {\n id?: string;\n ariaLabel?: string;\n ariaDescribedBy?: string;\n hasLabel: boolean;\n multiple: boolean;\n error?: string;\n errorName: string;\n}) {\n const describedBy = [ariaDescribedBy, error ? fieldErrorId(errorName) : undefined].filter(Boolean).join(' ');\n return {\n id,\n 'aria-label': ariaLabel ?? getFallbackAriaLabel({ hasLabel, multiple }),\n ...keepOwnAccessibleName({ 'aria-label': ariaLabel }),\n ...deprecatedErrorAria(Boolean(error)),\n 'aria-describedby': describedBy || undefined,\n };\n}\n\ntype ControlProps = ReturnType<typeof getControlProps>;\n\nfunction triggerClassName({ iconOnlyValue, className }: { iconOnlyValue: boolean; className?: string }) {\n return cn(iconOnlyValue && 'w-auto px-2.5', className);\n}\n\nfunction ComboboxOptionText({ option }: { option: ComboboxOption }) {\n return (\n <span className={comboboxStyles.optionText}>\n <span className={comboboxStyles.optionLabel}>{option.label}</span>\n {option.description && <span className={comboboxStyles.optionDescription}>{option.description}</span>}\n </span>\n );\n}\n\nfunction ComboboxClearFooter({ label, onClear }: { label: string; onClear: () => void }) {\n return (\n <div className=\"border-t border-border p-1\">\n <Button\n type=\"button\"\n variant=\"destructive-ghost\"\n size=\"sm\"\n className=\"w-full justify-start\"\n onClick={onClear}\n icon={<X />}\n >\n {label}\n </Button>\n </div>\n );\n}\n\n/** The popup: the search row for a compact trigger (a field searches in itself), then the options. */\nfunction ComboboxOptionsContent({\n showSearch,\n searchPlaceholder,\n emptyText,\n align,\n container,\n footer,\n}: {\n showSearch: boolean;\n searchPlaceholder: string;\n emptyText: string;\n align: 'start' | 'center' | 'end';\n container?: PortalContainer;\n footer?: React.ReactNode;\n}) {\n return (\n <ComboboxContent align={align} container={container}>\n {showSearch ? <ComboboxSearch placeholder={searchPlaceholder} /> : null}\n <ComboboxEmpty>{emptyText}</ComboboxEmpty>\n <ComboboxList>\n {(option: ComboboxOption) => (\n <ComboboxItem key={option.value} value={option}>\n {option.start}\n <ComboboxOptionText option={option} />\n {option.end ? <span className={comboboxStyles.optionEnd}>{option.end}</span> : null}\n </ComboboxItem>\n )}\n </ComboboxList>\n {footer}\n </ComboboxContent>\n );\n}\n\ntype TriggerLookProps = {\n variant: ComboboxVariant;\n size: ButtonSize;\n showChevron: boolean;\n iconOnlyValue: boolean;\n className?: string;\n};\n\nfunction SingleComboboxControl({\n shape,\n controlProps,\n placeholder,\n selectedOption,\n look,\n}: {\n shape: ComboboxShape;\n controlProps: ControlProps;\n placeholder: React.ReactNode;\n selectedOption?: ComboboxOption;\n look: TriggerLookProps;\n}) {\n if (shape === 'field') {\n return (\n <ComboboxInput\n {...controlProps}\n size={isIconButtonSize(look.size) ? undefined : look.size}\n placeholder={textPlaceholder(placeholder)}\n start={selectedOption?.start}\n className={look.className}\n />\n );\n }\n\n return (\n <ComboboxTrigger\n {...controlProps}\n variant={look.variant}\n size={look.size}\n showChevron={look.showChevron}\n icon={isIconButtonSize(look.size) ? undefined : selectedOption?.start}\n className={triggerClassName(look)}\n >\n {selectedOption?.displayLabel ?? <ComboboxValue placeholder={placeholder} />}\n </ComboboxTrigger>\n );\n}\n\nfunction MultipleComboboxControl({\n shape,\n controlProps,\n placeholder,\n selectedCount,\n look,\n}: {\n shape: ComboboxShape;\n controlProps: ControlProps;\n placeholder: React.ReactNode;\n selectedCount: number;\n look: TriggerLookProps;\n}) {\n if (shape === 'chips') {\n return (\n <ComboboxChips className={look.className}>\n <ComboboxValue>\n {(items: ComboboxOption[]) => (\n <>\n {items.map(item => (\n <ComboboxChip key={item.value}>{item.label}</ComboboxChip>\n ))}\n <ComboboxChipsInput\n {...controlProps}\n placeholder={items.length === 0 ? textPlaceholder(placeholder) : undefined}\n />\n </>\n )}\n </ComboboxValue>\n </ComboboxChips>\n );\n }\n\n const text = selectedCount === 0 ? placeholder : `${selectedCount} selected`;\n return (\n <ComboboxTrigger\n {...controlProps}\n variant={look.variant}\n size={look.size}\n showChevron={look.showChevron}\n className={triggerClassName(look)}\n >\n <span className={cn(selectedCount === 0 && comboboxStyles.placeholder)}>{text}</span>\n </ComboboxTrigger>\n );\n}\n\ntype ShapeProps = { shape: ComboboxShape; controlProps: ControlProps };\n\nfunction SingleCombobox({\n shape,\n controlProps,\n options,\n value,\n onValueChange,\n placeholder = 'Select option...',\n searchPlaceholder = 'Search...',\n emptyText = 'No option found.',\n className,\n disabled = false,\n variant = 'default',\n size = 'md',\n open,\n onOpenChange,\n container,\n align = 'start',\n showChevron = true,\n iconOnlyValue = false,\n allowCustomValue = false,\n onInputValueChange,\n}: ComboboxSingleProps & ShapeProps) {\n // The search text: a field's own text, or the compact trigger's popup search.\n const [inputValue, setInputValue] = React.useState('');\n const filter = useOptionFilter();\n const inField = shape === 'field';\n const selectedOption = options.find(option => option.value === value);\n const customOption = allowCustomValue ? getCustomOption(options, inputValue) : undefined;\n const items = customOption ? [customOption, ...options] : options;\n\n function handleInputValueChange(next: string) {\n setInputValue(next);\n onInputValueChange?.(next);\n }\n\n function handleValueChange(item: ComboboxOption | null) {\n if (!item) return;\n onValueChange?.(item.value);\n // A field shows the picked option; a compact trigger's popup search starts empty next time.\n if (!inField) handleInputValueChange('');\n }\n\n return (\n <ComboboxRoot\n autoHighlight\n items={items}\n filter={filter}\n itemToStringLabel={optionText}\n // Base UI's \"nothing selected\" is null.\n value={selectedOption ?? null}\n // A field owns its text (the selected option's, or the search); a compact trigger's search is reset here.\n inputValue={inField ? undefined : inputValue}\n onInputValueChange={handleInputValueChange}\n onValueChange={handleValueChange}\n disabled={disabled}\n open={open}\n onOpenChange={onOpenChange}\n >\n <SingleComboboxControl\n shape={shape}\n controlProps={controlProps}\n placeholder={placeholder}\n selectedOption={selectedOption}\n look={{ variant, size, showChevron, iconOnlyValue, className }}\n />\n <ComboboxOptionsContent\n showSearch={!inField}\n searchPlaceholder={searchPlaceholder}\n emptyText={emptyText}\n align={align}\n container={container}\n />\n </ComboboxRoot>\n );\n}\n\nfunction MultipleCombobox({\n shape,\n controlProps,\n options,\n value = EMPTY_VALUES,\n onValueChange,\n clearLabel,\n placeholder = 'Select options...',\n searchPlaceholder = 'Search...',\n emptyText = 'No option found.',\n className,\n disabled = false,\n variant = 'default',\n size = 'md',\n open,\n onOpenChange,\n container,\n align = 'start',\n showChevron = true,\n iconOnlyValue = false,\n}: ComboboxMultipleProps & ShapeProps) {\n const filter = useOptionFilter();\n const selectedValues = new Set(value);\n const selectedOptions = options.filter(option => selectedValues.has(option.value));\n const footer =\n clearLabel && selectedOptions.length > 0 ? (\n <ComboboxClearFooter label={clearLabel} onClear={() => onValueChange?.([])} />\n ) : undefined;\n\n return (\n <ComboboxRoot\n multiple\n autoHighlight\n items={options}\n filter={filter}\n value={selectedOptions}\n onValueChange={items => onValueChange?.(items.map(item => item.value))}\n disabled={disabled}\n open={open}\n onOpenChange={onOpenChange}\n >\n <MultipleComboboxControl\n shape={shape}\n controlProps={controlProps}\n placeholder={placeholder}\n selectedCount={selectedOptions.length}\n look={{ variant, size, showChevron, iconOnlyValue, className }}\n />\n <ComboboxOptionsContent\n showSearch={shape !== 'chips'}\n searchPlaceholder={searchPlaceholder}\n emptyText={emptyText}\n align={align}\n container={container}\n footer={footer}\n />\n </ComboboxRoot>\n );\n}\n\n/**\n * A searchable select driven by `options`, built on the Combobox parts.\n *\n * Inside a `Field`, a `default` combobox searches right in the field: a text field for a single value,\n * removable chips for `multiple`. Everywhere else (outside a `Field`, `ghost` and icon-size triggers,\n * custom non-text placeholders) it keeps a compact trigger with the search inside the popup. For anything\n * these props don't cover (groups, rich items), compose the parts directly (`ComboboxRoot`, ...).\n */\nexport function Combobox(props: ComboboxProps) {\n const field = useFieldAriaIds();\n const generatedName = React.useId();\n const multiple = isMultipleCombobox(props);\n const shape = getComboboxShape({\n inFieldContext: Boolean(field),\n multiple,\n variant: props.variant ?? 'default',\n size: props.size ?? 'md',\n iconOnlyValue: props.iconOnlyValue ?? false,\n showChevron: props.showChevron ?? true,\n placeholder: props.placeholder,\n });\n const errorName = props.name ?? generatedName;\n const controlProps = getControlProps({\n id: props.id,\n ariaLabel: props['aria-label'],\n ariaDescribedBy: props['aria-describedby'],\n hasLabel: Boolean(props.id || field),\n multiple,\n error: props.error,\n errorName,\n });\n\n const root = isMultipleCombobox(props) ? (\n <MultipleCombobox {...props} shape={shape} controlProps={controlProps} />\n ) : (\n <SingleCombobox {...props} shape={shape} controlProps={controlProps} />\n );\n\n if (!props.error) return root;\n\n return (\n <div className={comboboxStyles.root}>\n {root}\n <FieldBlock.ErrorMsg name={errorName}>{props.error}</FieldBlock.ErrorMsg>\n </div>\n );\n}\n"],"mappings":";;;;;;;;;;;;;AA0FA,IAAM,eAAkC,CAAC;AAEzC,SAAS,mBAAmB,OAAsD;CAChF,OAAO,MAAM,aAAa;AAC5B;;AAGA,SAAS,WAAW,QAAwB;CAC1C,OAAO,OAAO,OAAO,iBAAiB,WAAW,OAAO,eAAe,OAAO;AAChF;;AAGA,SAAS,gBAAgB,aAA8B;CACrD,OAAO,OAAO,gBAAgB,WAAW,cAAc,KAAA;AACzD;AAWA,SAAS,iBAAiB,EACxB,gBACA,UACA,SACA,MACA,eACA,aACA,eASgB;CAChB,IAAI,CAAC,gBAAgB,OAAO;CAC5B,IAAI,YAAY,WAAW,OAAO;CAClC,IAAIA,eAAAA,iBAAiB,IAAI,GAAG,OAAO;CACnC,IAAI,iBAAiB,CAAC,aAAa,OAAO;CAC1C,IAAI,gBAAgB,KAAA,KAAa,gBAAgB,WAAW,MAAM,KAAA,GAAW,OAAO;CACpF,IAAI,CAAC,UAAU,OAAO;CAEtB,IAAI,SAAS,MAAM,OAAO;CAC1B,OAAO;AACT;;AAGA,SAAS,gBAAgB,SAA2B,YAAgD;CAClG,MAAM,QAAQ,WAAW,KAAK;CAC9B,IAAI,CAAC,OAAO,OAAO,KAAA;CAEnB,IAAI,QAAQ,MAAK,WAAU,OAAO,UAAU,SAAS,WAAW,MAAM,MAAM,KAAK,GAAG,OAAO,KAAA;CAC3F,OAAO;EAAE,OAAO,QAAQ,MAAM;EAAI;CAAM;AAC1C;;AAGA,SAAS,kBAAkB;CACzB,MAAM,EAAE,aAAaC,wBAAAA,SAAa,UAAU;CAC5C,QAAQ,QAAwB,UAC9B;EAAC,OAAO;EAAO,WAAW,MAAM;EAAG,GAAI,OAAO,YAAY,CAAC;CAAE,CAAC,CAAC,MAAK,SAAQ,SAAS,MAAM,KAAK,CAAC;AACrG;;AAGA,SAAS,qBAAqB,EAAE,UAAU,YAAsD;CAC9F,IAAI,UAAU,OAAO,KAAA;CACrB,OAAO,WAAW,mBAAmB;AACvC;AAEA,SAAS,gBAAgB,EACvB,IACA,WACA,iBACA,UACA,UACA,OACA,aASC;CACD,MAAM,cAAc,CAAC,iBAAiB,QAAQC,uBAAAA,aAAa,SAAS,IAAI,KAAA,CAAS,CAAC,CAAC,OAAO,OAAO,CAAC,CAAC,KAAK,GAAG;CAC3G,OAAO;EACL;EACA,cAAc,aAAa,qBAAqB;GAAE;GAAU;EAAS,CAAC;EACtE,GAAGC,2BAAAA,sBAAsB,EAAE,cAAc,UAAU,CAAC;EACpD,GAAGC,gCAAAA,oBAAoB,QAAQ,KAAK,CAAC;EACrC,oBAAoB,eAAe,KAAA;CACrC;AACF;AAIA,SAAS,iBAAiB,EAAE,eAAe,aAA6D;CACtG,OAAOC,cAAAA,GAAG,iBAAiB,iBAAiB,SAAS;AACvD;AAEA,SAAS,mBAAmB,EAAE,UAAsC;CAClE,OACE,iBAAA,GAAA,kBAAA,KAAA,CAAC,QAAD;EAAM,WAAWC,uBAAAA,eAAe;EAAhC,UAAA,CACE,iBAAA,GAAA,kBAAA,IAAA,CAAC,QAAD;GAAM,WAAWA,uBAAAA,eAAe;GAAc,UAAA,OAAO;EAAY,CAAA,GAChE,OAAO,eAAe,iBAAA,GAAA,kBAAA,IAAA,CAAC,QAAD;GAAM,WAAWA,uBAAAA,eAAe;GAAoB,UAAA,OAAO;EAAkB,CAAA,CAChG;;AAEV;AAEA,SAAS,oBAAoB,EAAE,OAAO,WAAmD;CACvF,OACE,iBAAA,GAAA,kBAAA,IAAA,CAAC,OAAD;EAAK,WAAU;EACb,UAAA,iBAAA,GAAA,kBAAA,IAAA,CAACC,eAAAA,QAAD;GACE,MAAK;GACL,SAAQ;GACR,MAAK;GACL,WAAU;GACV,SAAS;GACT,MAAM,iBAAA,GAAA,kBAAA,IAAA,CAACC,aAAAA,GAAD,CAAI,CAAA;GAET,UAAA;EACK,CAAA;CACL,CAAA;AAET;;AAGA,SAAS,uBAAuB,EAC9B,YACA,mBACA,WACA,OACA,WACA,UAQC;CACD,OACE,iBAAA,GAAA,kBAAA,KAAA,CAACC,uBAAAA,iBAAD;EAAwB;EAAkB;EAA1C,UAAA;GACG,aAAa,iBAAA,GAAA,kBAAA,IAAA,CAACC,uBAAAA,gBAAD,EAAgB,aAAa,kBAAoB,CAAA,IAAI;GACnE,iBAAA,GAAA,kBAAA,IAAA,CAACC,uBAAAA,eAAD,EAAA,UAAgB,UAAyB,CAAA;GACzC,iBAAA,GAAA,kBAAA,IAAA,CAACC,uBAAAA,cAAD,EAAA,WACI,WACA,iBAAA,GAAA,kBAAA,KAAA,CAACC,uBAAAA,cAAD;IAAiC,OAAO;IAAxC,UAAA;KACG,OAAO;KACR,iBAAA,GAAA,kBAAA,IAAA,CAAC,oBAAD,EAA4B,OAAS,CAAA;KACpC,OAAO,MAAM,iBAAA,GAAA,kBAAA,IAAA,CAAC,QAAD;MAAM,WAAWP,uBAAAA,eAAe;MAAY,UAAA,OAAO;KAAU,CAAA,IAAI;IACnE;GAJK,GAAA,OAAO,KAIZ,EAEJ,CAAA;GACb;EACc;;AAErB;AAUA,SAAS,sBAAsB,EAC7B,OACA,cACA,aACA,gBACA,QAOC;CACD,IAAI,UAAU,SACZ,OACE,iBAAA,GAAA,kBAAA,IAAA,CAACQ,uBAAAA,eAAD;EACE,GAAI;EACJ,MAAMd,eAAAA,iBAAiB,KAAK,IAAI,IAAI,KAAA,IAAY,KAAK;EACrD,aAAa,gBAAgB,WAAW;EACxC,OAAO,gBAAgB;EACvB,WAAW,KAAK;CACjB,CAAA;CAIL,OACE,iBAAA,GAAA,kBAAA,IAAA,CAACe,uBAAAA,iBAAD;EACE,GAAI;EACJ,SAAS,KAAK;EACd,MAAM,KAAK;EACX,aAAa,KAAK;EAClB,MAAMf,eAAAA,iBAAiB,KAAK,IAAI,IAAI,KAAA,IAAY,gBAAgB;EAChE,WAAW,iBAAiB,IAAI;EAE/B,UAAA,gBAAgB,gBAAgB,iBAAA,GAAA,kBAAA,IAAA,CAACgB,uBAAAA,eAAD,EAA4B,YAAc,CAAA;CAC5D,CAAA;AAErB;AAEA,SAAS,wBAAwB,EAC/B,OACA,cACA,aACA,eACA,QAOC;CACD,IAAI,UAAU,SACZ,OACE,iBAAA,GAAA,kBAAA,IAAA,CAACC,uBAAAA,eAAD;EAAe,WAAW,KAAK;EAC7B,UAAA,iBAAA,GAAA,kBAAA,IAAA,CAACD,uBAAAA,eAAD,EAAA,WACI,UACA,iBAAA,GAAA,kBAAA,KAAA,CAAAE,kBAAAA,UAAA,EAAA,UAAA,CACG,MAAM,KAAI,SACT,iBAAA,GAAA,kBAAA,IAAA,CAACC,uBAAAA,cAAD,EAAA,UAAgC,KAAK,MAAoB,GAAtC,KAAK,KAAiC,CAC1D,GACD,iBAAA,GAAA,kBAAA,IAAA,CAACC,uBAAAA,oBAAD;GACE,GAAI;GACJ,aAAa,MAAM,WAAW,IAAI,gBAAgB,WAAW,IAAI,KAAA;EAClE,CAAA,CACD,EAAA,CAAA,EAES,CAAA;CACF,CAAA;CAInB,MAAM,OAAO,kBAAkB,IAAI,cAAc,GAAG,cAAc;CAClE,OACE,iBAAA,GAAA,kBAAA,IAAA,CAACL,uBAAAA,iBAAD;EACE,GAAI;EACJ,SAAS,KAAK;EACd,MAAM,KAAK;EACX,aAAa,KAAK;EAClB,WAAW,iBAAiB,IAAI;EAEhC,UAAA,iBAAA,GAAA,kBAAA,IAAA,CAAC,QAAD;GAAM,WAAWV,cAAAA,GAAG,kBAAkB,KAAKC,uBAAAA,eAAe,WAAW;GAAI,UAAA;EAAW,CAAA;CACrE,CAAA;AAErB;AAIA,SAAS,eAAe,EACtB,OACA,cACA,SACA,OACA,eACA,cAAc,oBACd,oBAAoB,aACpB,YAAY,oBACZ,WACA,WAAW,OACX,UAAU,WACV,OAAO,MACP,MACA,cACA,WACA,QAAQ,SACR,cAAc,MACd,gBAAgB,OAChB,mBAAmB,OACnB,sBACmC;CAEnC,MAAM,CAAC,YAAY,iBAAiBe,MAAM,SAAS,EAAE;CACrD,MAAM,SAAS,gBAAgB;CAC/B,MAAM,UAAU,UAAU;CAC1B,MAAM,iBAAiB,QAAQ,MAAK,WAAU,OAAO,UAAU,KAAK;CACpE,MAAM,eAAe,mBAAmB,gBAAgB,SAAS,UAAU,IAAI,KAAA;CAC/E,MAAM,QAAQ,eAAe,CAAC,cAAc,GAAG,OAAO,IAAI;CAE1D,SAAS,uBAAuB,MAAc;EAC5C,cAAc,IAAI;EAClB,qBAAqB,IAAI;CAC3B;CAEA,SAAS,kBAAkB,MAA6B;EACtD,IAAI,CAAC,MAAM;EACX,gBAAgB,KAAK,KAAK;EAE1B,IAAI,CAAC,SAAS,uBAAuB,EAAE;CACzC;CAEA,OACE,iBAAA,GAAA,kBAAA,KAAA,CAACC,uBAAAA,cAAD;EACE,eAAA;EACO;EACC;EACR,mBAAmB;EAEnB,OAAO,kBAAkB;EAEzB,YAAY,UAAU,KAAA,IAAY;EAClC,oBAAoB;EACpB,eAAe;EACL;EACJ;EACQ;EAbhB,UAAA,CAeE,iBAAA,GAAA,kBAAA,IAAA,CAAC,uBAAD;GACS;GACO;GACD;GACG;GAChB,MAAM;IAAE;IAAS;IAAM;IAAa;IAAe;GAAU;EAC9D,CAAA,GACD,iBAAA,GAAA,kBAAA,IAAA,CAAC,wBAAD;GACE,YAAY,CAAC;GACM;GACR;GACJ;GACI;EACZ,CAAA,CACW;;AAElB;AAEA,SAAS,iBAAiB,EACxB,OACA,cACA,SACA,QAAQ,cACR,eACA,YACA,cAAc,qBACd,oBAAoB,aACpB,YAAY,oBACZ,WACA,WAAW,OACX,UAAU,WACV,OAAO,MACP,MACA,cACA,WACA,QAAQ,SACR,cAAc,MACd,gBAAgB,SACqB;CACrC,MAAM,SAAS,gBAAgB;CAC/B,MAAM,iBAAiB,IAAI,IAAI,KAAK;CACpC,MAAM,kBAAkB,QAAQ,QAAO,WAAU,eAAe,IAAI,OAAO,KAAK,CAAC;CACjF,MAAM,SACJ,cAAc,gBAAgB,SAAS,IACrC,iBAAA,GAAA,kBAAA,IAAA,CAAC,qBAAD;EAAqB,OAAO;EAAY,eAAe,gBAAgB,CAAC,CAAC;CAAI,CAAA,IAC3E,KAAA;CAEN,OACE,iBAAA,GAAA,kBAAA,KAAA,CAACA,uBAAAA,cAAD;EACE,UAAA;EACA,eAAA;EACA,OAAO;EACC;EACR,OAAO;EACP,gBAAe,UAAS,gBAAgB,MAAM,KAAI,SAAQ,KAAK,KAAK,CAAC;EAC3D;EACJ;EACQ;EAThB,UAAA,CAWE,iBAAA,GAAA,kBAAA,IAAA,CAAC,yBAAD;GACS;GACO;GACD;GACb,eAAe,gBAAgB;GAC/B,MAAM;IAAE;IAAS;IAAM;IAAa;IAAe;GAAU;EAC9D,CAAA,GACD,iBAAA,GAAA,kBAAA,IAAA,CAAC,wBAAD;GACE,YAAY,UAAU;GACH;GACR;GACJ;GACI;GACH;EACT,CAAA,CACW;;AAElB;;;;;;;;;AAUA,SAAgB,SAAS,OAAsB;CAC7C,MAAM,QAAQC,2BAAAA,gBAAgB;CAC9B,MAAM,gBAAgBF,MAAM,MAAM;CAClC,MAAM,WAAW,mBAAmB,KAAK;CACzC,MAAM,QAAQ,iBAAiB;EAC7B,gBAAgB,QAAQ,KAAK;EAC7B;EACA,SAAS,MAAM,WAAW;EAC1B,MAAM,MAAM,QAAQ;EACpB,eAAe,MAAM,iBAAiB;EACtC,aAAa,MAAM,eAAe;EAClC,aAAa,MAAM;CACrB,CAAC;CACD,MAAM,YAAY,MAAM,QAAQ;CAChC,MAAM,eAAe,gBAAgB;EACnC,IAAI,MAAM;EACV,WAAW,MAAM;EACjB,iBAAiB,MAAM;EACvB,UAAU,QAAQ,MAAM,MAAM,KAAK;EACnC;EACA,OAAO,MAAM;EACb;CACF,CAAC;CAED,MAAM,OAAO,mBAAmB,KAAK,IACnC,iBAAA,GAAA,kBAAA,IAAA,CAAC,kBAAD;EAAkB,GAAI;EAAc;EAAqB;CAAe,CAAA,IAExE,iBAAA,GAAA,kBAAA,IAAA,CAAC,gBAAD;EAAgB,GAAI;EAAc;EAAqB;CAAe,CAAA;CAGxE,IAAI,CAAC,MAAM,OAAO,OAAO;CAEzB,OACE,iBAAA,GAAA,kBAAA,KAAA,CAAC,OAAD;EAAK,WAAWf,uBAAAA,eAAe;EAA/B,UAAA,CACG,MACD,iBAAA,GAAA,kBAAA,IAAA,CAACkB,uBAAAA,WAAW,UAAZ;GAAqB,MAAM;GAAY,UAAA,MAAM;EAA2B,CAAA,CACrE;;AAET"}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { t as cn } from "./utils-DQx8TpNT.js";
|
|
2
2
|
import { deprecatedErrorAria } from "./primitives/form-element.es.js";
|
|
3
|
-
import {
|
|
3
|
+
import { s as isIconButtonSize, t as Button } from "./Button-CLXTbAY8.js";
|
|
4
4
|
import { n as keepOwnAccessibleName, r as useFieldAriaIds } from "./field-control-aria-BaRSUUMR.js";
|
|
5
|
-
import { S as comboboxStyles, _ as ComboboxRoot, b as ComboboxTrigger, g as ComboboxList, l as ComboboxInput, n as ComboboxChips, o as ComboboxContent, r as ComboboxChipsInput, s as ComboboxEmpty, t as ComboboxChip, u as ComboboxItem, v as ComboboxSearch, x as ComboboxValue } from "./combobox-parts-
|
|
5
|
+
import { S as comboboxStyles, _ as ComboboxRoot, b as ComboboxTrigger, g as ComboboxList, l as ComboboxInput, n as ComboboxChips, o as ComboboxContent, r as ComboboxChipsInput, s as ComboboxEmpty, t as ComboboxChip, u as ComboboxItem, v as ComboboxSearch, x as ComboboxValue } from "./combobox-parts-C1CugUAU.js";
|
|
6
6
|
import { n as FieldBlock, t as fieldErrorId } from "./field-error-id-DBSuJ3HM.js";
|
|
7
7
|
import * as React$1 from "react";
|
|
8
8
|
import { Fragment as Fragment$1, jsx, jsxs } from "react/jsx-runtime";
|
|
@@ -299,4 +299,4 @@ function Combobox$1(props) {
|
|
|
299
299
|
}
|
|
300
300
|
export { Combobox$1 as t };
|
|
301
301
|
|
|
302
|
-
//# sourceMappingURL=combobox-
|
|
302
|
+
//# sourceMappingURL=combobox-CtCK0mNx.js.map
|