@mastra/playground-ui 65.0.0-alpha.2 → 65.0.0-alpha.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +10 -0
- package/components.css +7 -0
- package/dist/{Avatar-98bsFrSV.js → Avatar-BjaG9NU_.js} +10 -8
- package/dist/Avatar-BjaG9NU_.js.map +1 -0
- package/dist/{Avatar-BCj8SvOb.cjs → Avatar-DM90rmwx.cjs} +10 -8
- package/dist/Avatar-DM90rmwx.cjs.map +1 -0
- package/dist/{Button-DH1aTzbs.cjs → Button-C4I05uT4.cjs} +17 -10
- package/dist/Button-C4I05uT4.cjs.map +1 -0
- package/dist/{Button-EGoajBQY.js → Button-D8a5EWJ5.js} +18 -11
- package/dist/Button-D8a5EWJ5.js.map +1 -0
- package/dist/{ErrorBoundary-DQPzT6am.js → ErrorBoundary-C6JifxpQ.js} +2 -2
- package/dist/{ErrorBoundary-DQPzT6am.js.map → ErrorBoundary-C6JifxpQ.js.map} +1 -1
- package/dist/{ErrorBoundary-CpUob9SO.cjs → ErrorBoundary-DP1JqmTo.cjs} +2 -2
- package/dist/{ErrorBoundary-CpUob9SO.cjs.map → ErrorBoundary-DP1JqmTo.cjs.map} +1 -1
- package/dist/Notice-BioYTS4b.js.map +1 -1
- package/dist/Notice-DYgIy4FO.cjs.map +1 -1
- package/dist/{activity-CsTUr5_l.js → activity-B7c_nQMn.js} +2 -2
- package/dist/activity-B7c_nQMn.js.map +1 -0
- package/dist/{activity-2tovEdIP.cjs → activity-D3iI9pYN.cjs} +2 -2
- package/dist/activity-D3iI9pYN.cjs.map +1 -0
- package/dist/{alert-dialog-B7JTnkF4.js → alert-dialog-B13NSeKN.js} +3 -3
- package/dist/{alert-dialog-B7JTnkF4.js.map → alert-dialog-B13NSeKN.js.map} +1 -1
- package/dist/{alert-dialog-B1gWLQm2.cjs → alert-dialog-DY2JJAnk.cjs} +3 -3
- package/dist/{alert-dialog-B1gWLQm2.cjs.map → alert-dialog-DY2JJAnk.cjs.map} +1 -1
- package/dist/arrival-C1hkyLHm.js.map +1 -1
- package/dist/arrival-Cvxloi0B.cjs.map +1 -1
- package/dist/{ask-user-card-DroerVbm.cjs → ask-user-card-DiFQcUzM.cjs} +2 -2
- package/dist/ask-user-card-DiFQcUzM.cjs.map +1 -0
- package/dist/{ask-user-card-BCjsjimu.js → ask-user-card-DnvW7jXS.js} +2 -2
- package/dist/{ask-user-card-BCjsjimu.js.map → ask-user-card-DnvW7jXS.js.map} +1 -1
- package/dist/{avatar-size-CNR0U-LW.js → avatar-size-BXzy28Bx.js} +4 -1
- package/dist/avatar-size-BXzy28Bx.js.map +1 -0
- package/dist/{avatar-size-DxStOo5A.cjs → avatar-size-DIFE4I8A.cjs} +4 -1
- package/dist/avatar-size-DIFE4I8A.cjs.map +1 -0
- package/dist/buttons-group.css +0 -4
- package/dist/code-DJReJPSX.cjs.map +1 -1
- package/dist/code-DLuATvYu.js.map +1 -1
- package/dist/{code-block-vpcX2sDQ.cjs → code-block-C79fiykv.cjs} +4 -4
- package/dist/{code-block-vpcX2sDQ.cjs.map → code-block-C79fiykv.cjs.map} +1 -1
- package/dist/{code-block-DIDa6lg6.js → code-block-D6A1DMv-.js} +4 -4
- package/dist/{code-block-DIDa6lg6.js.map → code-block-D6A1DMv-.js.map} +1 -1
- package/dist/{code-editor-BDxYMkGm.js → code-editor-8Fpinga4.js} +2 -2
- package/dist/{code-editor-BDxYMkGm.js.map → code-editor-8Fpinga4.js.map} +1 -1
- package/dist/{code-editor-DQuJ1XXd.cjs → code-editor-Bd-Cldem.cjs} +2 -2
- package/dist/{code-editor-DQuJ1XXd.cjs.map → code-editor-Bd-Cldem.cjs.map} +1 -1
- package/dist/{collapsible-box-B9ATVQzW.cjs → collapsible-box-CzU0OwJx.cjs} +2 -2
- package/dist/{collapsible-box-B9ATVQzW.cjs.map → collapsible-box-CzU0OwJx.cjs.map} +1 -1
- package/dist/{collapsible-box-CMBYunuM.js → collapsible-box-DotFa3hr.js} +2 -2
- package/dist/{collapsible-box-CMBYunuM.js.map → collapsible-box-DotFa3hr.js.map} +1 -1
- package/dist/{combobox-Bw13EcK0.js → combobox-BCoCVZHs.js} +7 -5
- package/dist/combobox-BCoCVZHs.js.map +1 -0
- package/dist/{combobox-BNlVCFgY.cjs → combobox-DbZAWh8q.cjs} +7 -5
- package/dist/combobox-DbZAWh8q.cjs.map +1 -0
- package/dist/{combobox-styles-Dr66ofEp.js → combobox-styles-Cens2tsx.js} +2 -2
- package/dist/{combobox-styles-Dr66ofEp.js.map → combobox-styles-Cens2tsx.js.map} +1 -1
- package/dist/{combobox-styles-BK2nGTNl.cjs → combobox-styles-Cy4rpw03.cjs} +2 -2
- package/dist/{combobox-styles-BK2nGTNl.cjs.map → combobox-styles-Cy4rpw03.cjs.map} +1 -1
- package/dist/{command-UEPxVJlE.cjs → command-Duh5C_Pm.cjs} +2 -2
- package/dist/command-Duh5C_Pm.cjs.map +1 -0
- package/dist/{command-V9rsKc7P.js → command-xIH7ZTdl.js} +2 -2
- package/dist/command-xIH7ZTdl.js.map +1 -0
- package/dist/components/AlertDialog.cjs.js +1 -1
- package/dist/components/AlertDialog.es.js +1 -1
- package/dist/components/Avatar.cjs.js +1 -1
- package/dist/components/Avatar.es.js +1 -1
- package/dist/components/Breadcrumb.cjs.js +7 -4
- package/dist/components/Breadcrumb.cjs.js.map +1 -1
- package/dist/components/Breadcrumb.es.js +7 -4
- package/dist/components/Breadcrumb.es.js.map +1 -1
- package/dist/components/Button.cjs.js +1 -1
- package/dist/components/Button.es.js +2 -2
- package/dist/components/ClampedText.cjs.js +2 -2
- package/dist/components/ClampedText.cjs.js.map +1 -1
- package/dist/components/ClampedText.es.js +2 -2
- package/dist/components/ClampedText.es.js.map +1 -1
- package/dist/components/CodeBlock.cjs.js +1 -1
- package/dist/components/CodeBlock.es.js +1 -1
- 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 +1 -1
- package/dist/components/Command.es.js +1 -1
- package/dist/components/CommandPalette.cjs.js +1 -1
- package/dist/components/CommandPalette.es.js +1 -1
- package/dist/components/Comment.cjs.js +2 -2
- package/dist/components/Comment.es.js +2 -2
- 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 +2 -2
- package/dist/components/DataDetailsPanel.es.js +2 -2
- package/dist/components/DataKeysAndValues.cjs.js +1 -1
- package/dist/components/DataKeysAndValues.es.js +1 -1
- package/dist/components/DataList.cjs.js +15 -17
- package/dist/components/DataList.cjs.js.map +1 -1
- package/dist/components/DataList.es.js +4 -5
- package/dist/components/DataList.es.js.map +1 -1
- 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 +1 -1
- package/dist/components/DateTimeRangePicker.es.js +1 -1
- package/dist/components/Dialog.cjs.js +2 -2
- package/dist/components/Dialog.es.js +2 -2
- 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 +3 -3
- package/dist/components/EnvironmentVariablesEditor.cjs.js.map +1 -1
- package/dist/components/EnvironmentVariablesEditor.es.js +3 -3
- package/dist/components/EnvironmentVariablesEditor.es.js.map +1 -1
- package/dist/components/ErrorBoundary.cjs.js +1 -1
- package/dist/components/ErrorBoundary.es.js +1 -1
- package/dist/components/FilterBar.cjs.js +8 -31
- package/dist/components/FilterBar.cjs.js.map +1 -1
- package/dist/components/FilterBar.es.js +10 -33
- package/dist/components/FilterBar.es.js.map +1 -1
- package/dist/components/FormFieldBlocks.cjs.js +3 -3
- package/dist/components/FormFieldBlocks.cjs.js.map +1 -1
- package/dist/components/FormFieldBlocks.es.js +3 -3
- package/dist/components/FormFieldBlocks.es.js.map +1 -1
- 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 +5 -2
- package/dist/components/LogsDataList.cjs.js.map +1 -1
- package/dist/components/LogsDataList.es.js +5 -2
- package/dist/components/LogsDataList.es.js.map +1 -1
- package/dist/components/MarkdownRenderer.cjs.js +1 -1
- package/dist/components/MarkdownRenderer.es.js +1 -1
- package/dist/components/Message.cjs.js +1 -1
- package/dist/components/Message.es.js +1 -1
- package/dist/components/MetricsCard.cjs.js +1 -1
- package/dist/components/MetricsCard.es.js +1 -1
- package/dist/components/PrevNextNav.cjs.js +1 -1
- package/dist/components/PrevNextNav.es.js +1 -1
- package/dist/components/ProductAvatar.cjs.js +2 -1
- package/dist/components/ProductAvatar.cjs.js.map +1 -1
- package/dist/components/ProductAvatar.es.js +2 -1
- package/dist/components/ProductAvatar.es.js.map +1 -1
- package/dist/components/PropertyFilter.cjs.js +4 -4
- package/dist/components/PropertyFilter.cjs.js.map +1 -1
- package/dist/components/PropertyFilter.es.js +5 -5
- package/dist/components/PropertyFilter.es.js.map +1 -1
- package/dist/components/RuleBuilder.cjs.js +3 -2
- package/dist/components/RuleBuilder.cjs.js.map +1 -1
- package/dist/components/RuleBuilder.es.js +3 -2
- package/dist/components/RuleBuilder.es.js.map +1 -1
- package/dist/components/SavedViews.cjs.js +4 -8
- package/dist/components/SavedViews.cjs.js.map +1 -1
- package/dist/components/SavedViews.es.js +5 -9
- package/dist/components/SavedViews.es.js.map +1 -1
- package/dist/components/SearchInput.cjs.js +1 -1
- package/dist/components/SearchInput.es.js +1 -1
- package/dist/components/Select.cjs.js +1 -1
- package/dist/components/Select.es.js +1 -1
- package/dist/components/SideDialog.cjs.js +1 -1
- package/dist/components/SideDialog.es.js +1 -1
- package/dist/components/Sidebar.cjs.js +3 -3
- package/dist/components/Sidebar.cjs.js.map +1 -1
- package/dist/components/Sidebar.es.js +3 -3
- package/dist/components/Sidebar.es.js.map +1 -1
- package/dist/components/StatusIndicators.cjs.js.map +1 -1
- package/dist/components/StatusIndicators.es.js.map +1 -1
- package/dist/components/Table.cjs.js.map +1 -1
- package/dist/components/Table.es.js.map +1 -1
- package/dist/components/Tabs.cjs.js +1 -1
- package/dist/components/Tabs.es.js +1 -1
- package/dist/components/ThreadList.cjs.js +1 -1
- package/dist/components/ThreadList.es.js +1 -1
- package/dist/components/ThreadRail.cjs.js.map +1 -1
- package/dist/components/ThreadRail.es.js.map +1 -1
- package/dist/components/Truncate.cjs.js +1 -1
- package/dist/components/Truncate.es.js +1 -1
- package/dist/components/Workflow.cjs.js +6 -6
- package/dist/components/Workflow.es.js +6 -6
- package/dist/components/ai/activity.cjs.js +4 -4
- package/dist/components/ai/activity.es.js +4 -4
- 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 +1 -1
- package/dist/components/ai/plan.es.js +1 -1
- package/dist/components/ai/tool-approval.cjs.js +1 -1
- package/dist/components/ai/tool-approval.es.js +1 -1
- package/dist/components/ai/tool-call.cjs.js +4 -4
- package/dist/components/ai/tool-call.es.js +4 -4
- package/dist/composer-Bs4iyUfe.js.map +1 -1
- package/dist/composer-CDQnP3og.cjs.map +1 -1
- package/dist/context-menu-C67xhcfa.js.map +1 -1
- package/dist/context-menu-jNuzE86D.cjs.map +1 -1
- package/dist/{copy-button-Cd0keCti.cjs → copy-button-BC02oZJo.cjs} +2 -2
- package/dist/{copy-button-Cd0keCti.cjs.map → copy-button-BC02oZJo.cjs.map} +1 -1
- package/dist/{copy-button-C_M3Tu_-.js → copy-button-B_i9lwFJ.js} +2 -2
- package/dist/{copy-button-C_M3Tu_-.js.map → copy-button-B_i9lwFJ.js.map} +1 -1
- package/dist/{data-code-section-lj3PaHjc.cjs → data-code-section-BJa6NDgN.cjs} +5 -5
- package/dist/{data-code-section-lj3PaHjc.cjs.map → data-code-section-BJa6NDgN.cjs.map} +1 -1
- package/dist/{data-code-section-mpRgtM8j.js → data-code-section-Cjs-piiY.js} +5 -5
- package/dist/{data-code-section-mpRgtM8j.js.map → data-code-section-Cjs-piiY.js.map} +1 -1
- package/dist/{data-keys-and-values-1lYi60YK.cjs → data-keys-and-values-DBXIqeXt.cjs} +2 -2
- package/dist/data-keys-and-values-DBXIqeXt.cjs.map +1 -0
- package/dist/{data-keys-and-values-CHpxKsfq.js → data-keys-and-values-DHp6cHJo.js} +2 -2
- package/dist/data-keys-and-values-DHp6cHJo.js.map +1 -0
- package/dist/{data-list-top-DJh08vFA.cjs → data-list-DlXU1PLQ.cjs} +339 -13
- package/dist/data-list-DlXU1PLQ.cjs.map +1 -0
- package/dist/{data-list-top-T-mtdIUp.js → data-list-Tor18oy5.js} +332 -5
- package/dist/data-list-Tor18oy5.js.map +1 -0
- package/dist/{data-list-skeleton-bNfITSHs.js → data-list-skeleton-CXUB-u3p.js} +2 -2
- package/dist/{data-list-skeleton-bNfITSHs.js.map → data-list-skeleton-CXUB-u3p.js.map} +1 -1
- package/dist/{data-list-skeleton-sdcaabdX.cjs → data-list-skeleton-DY0F40WQ.cjs} +6 -6
- package/dist/{data-list-skeleton-sdcaabdX.cjs.map → data-list-skeleton-DY0F40WQ.cjs.map} +1 -1
- package/dist/{data-panel-BkfjzriB.cjs → data-panel-DGNV14pm.cjs} +20 -9
- package/dist/data-panel-DGNV14pm.cjs.map +1 -0
- package/dist/{data-panel-CMkR6Avv.js → data-panel-DjtnX70w.js} +20 -9
- package/dist/data-panel-DjtnX70w.js.map +1 -0
- package/dist/{date-time-range-picker-BjQVCVUM.cjs → date-time-range-picker-CXGab8Nj.cjs} +3 -3
- package/dist/{date-time-range-picker-BjQVCVUM.cjs.map → date-time-range-picker-CXGab8Nj.cjs.map} +1 -1
- package/dist/{date-time-range-picker-D-EECKzz.js → date-time-range-picker-CcnDMZJu.js} +3 -3
- package/dist/{date-time-range-picker-D-EECKzz.js.map → date-time-range-picker-CcnDMZJu.js.map} +1 -1
- package/dist/{dialog-j2e95YNV.js → dialog-AzCRnEo3.js} +3 -3
- package/dist/{dialog-j2e95YNV.js.map → dialog-AzCRnEo3.js.map} +1 -1
- package/dist/{dialog-BMUfQ9XU.cjs → dialog-SSeOqRnH.cjs} +3 -3
- package/dist/{dialog-BMUfQ9XU.cjs.map → dialog-SSeOqRnH.cjs.map} +1 -1
- package/dist/{dialog-action-CmFDNyZX.cjs → dialog-action-Caa-pb85.cjs} +3 -3
- package/dist/{dialog-action-CmFDNyZX.cjs.map → dialog-action-Caa-pb85.cjs.map} +1 -1
- package/dist/{dialog-action-zKqvuroE.js → dialog-action-DykMOK2W.js} +3 -3
- package/dist/{dialog-action-zKqvuroE.js.map → dialog-action-DykMOK2W.js.map} +1 -1
- package/dist/domains/auth/components/session-expired.cjs.js +1 -1
- package/dist/domains/auth/components/session-expired.es.js +1 -1
- 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/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/renderers/message-text.cjs.js +1 -1
- package/dist/domains/chat/messages/renderers/message-text.cjs.js.map +1 -1
- package/dist/domains/chat/messages/renderers/message-text.es.js +1 -1
- package/dist/domains/chat/messages/renderers/message-text.es.js.map +1 -1
- package/dist/domains/chat/messages/renderers/reasoning-part-renderer.cjs.js +1 -1
- package/dist/domains/chat/messages/renderers/reasoning-part-renderer.es.js +1 -1
- package/dist/domains/chat/messages/signal-badge.cjs.js +1 -1
- package/dist/domains/chat/messages/signal-badge.es.js +1 -1
- package/dist/domains/chat/messages/skill-message.cjs.js +3 -3
- package/dist/domains/chat/messages/skill-message.es.js +3 -3
- 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/om/om-parts-converter.cjs.js.map +1 -1
- package/dist/domains/chat/om/om-parts-converter.es.js.map +1 -1
- package/dist/domains/chat/tools/badges/agent-badge-wrapper.cjs.js +1 -1
- package/dist/domains/chat/tools/badges/agent-badge-wrapper.es.js +1 -1
- package/dist/domains/chat/tools/badges/agent-badge.cjs.js +4 -4
- package/dist/domains/chat/tools/badges/agent-badge.es.js +4 -4
- 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.cjs.js.map +1 -1
- package/dist/domains/chat/tools/badges/background-task-metadata-dialog.es.js +3 -3
- package/dist/domains/chat/tools/badges/background-task-metadata-dialog.es.js.map +1 -1
- package/dist/domains/chat/tools/badges/code-mode-badge.cjs.js +2 -2
- package/dist/domains/chat/tools/badges/code-mode-badge.es.js +2 -2
- 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/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 +1 -1
- package/dist/domains/chat/tools/badges/sandbox-execution-badge.es.js +1 -1
- package/dist/domains/chat/tools/badges/tool-approval-badge.cjs.js +1 -1
- package/dist/domains/chat/tools/badges/tool-approval-badge.es.js +1 -1
- package/dist/domains/chat/tools/badges/tool-badge.cjs.js +3 -3
- package/dist/domains/chat/tools/badges/tool-badge.es.js +3 -3
- package/dist/domains/chat/tools/badges/workflow-badge.cjs.js +6 -3
- package/dist/domains/chat/tools/badges/workflow-badge.cjs.js.map +1 -1
- package/dist/domains/chat/tools/badges/workflow-badge.es.js +6 -3
- package/dist/domains/chat/tools/badges/workflow-badge.es.js.map +1 -1
- package/dist/domains/chat/tools/submit-plan-tool.cjs.js +2 -2
- package/dist/domains/chat/tools/submit-plan-tool.es.js +2 -2
- 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/datasets/components/save-as-dataset-item-dialog.cjs.js +4 -4
- package/dist/domains/datasets/components/save-as-dataset-item-dialog.es.js +4 -4
- package/dist/domains/logs/components/log-data-panel.cjs.js +4 -4
- package/dist/domains/logs/components/log-data-panel.es.js +4 -4
- package/dist/domains/logs/components/logs-list-view.cjs.js +3 -2
- package/dist/domains/logs/components/logs-list-view.cjs.js.map +1 -1
- package/dist/domains/logs/components/logs-list-view.es.js +3 -2
- package/dist/domains/logs/components/logs-list-view.es.js.map +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/mcps/components/mcp-app-viewer.cjs.js.map +1 -1
- package/dist/domains/mcps/components/mcp-app-viewer.es.js.map +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/agent-runs-card.cjs.js +1 -1
- package/dist/domains/metrics/components/agent-runs-card.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-area.cjs.js +1 -1
- package/dist/domains/metrics/components/chart-area.es.js +1 -1
- package/dist/domains/metrics/components/chart-card-error.cjs.js +1 -1
- package/dist/domains/metrics/components/chart-card-error.es.js +1 -1
- package/dist/domains/metrics/components/chart-card.cjs.js +1 -1
- package/dist/domains/metrics/components/chart-card.es.js +1 -1
- package/dist/domains/metrics/components/date-range-selector.cjs.js +1 -1
- package/dist/domains/metrics/components/date-range-selector.es.js +1 -1
- package/dist/domains/metrics/components/failure-rate-card.cjs.js +1 -1
- package/dist/domains/metrics/components/failure-rate-card.es.js +1 -1
- package/dist/domains/metrics/components/latency-card.cjs.js +1 -1
- package/dist/domains/metrics/components/latency-card.es.js +1 -1
- package/dist/domains/metrics/components/scores-card.cjs.js +1 -1
- package/dist/domains/metrics/components/scores-card.es.js +1 -1
- package/dist/domains/metrics/components/token-usage-card.cjs.js +1 -1
- package/dist/domains/metrics/components/token-usage-card.es.js +1 -1
- package/dist/domains/metrics/components/trace-volume-card.cjs.js +1 -1
- package/dist/domains/metrics/components/trace-volume-card.es.js +1 -1
- package/dist/domains/metrics/components/usage-card.cjs.js +1 -1
- package/dist/domains/metrics/components/usage-card.es.js +1 -1
- package/dist/domains/observability/components/add-trace-mocks-to-item-dialog.cjs.js +4 -4
- package/dist/domains/observability/components/add-trace-mocks-to-item-dialog.es.js +4 -4
- package/dist/domains/scores/components/score-data-panel.cjs.js +3 -3
- package/dist/domains/scores/components/score-data-panel.es.js +3 -3
- package/dist/domains/scores/components/span-scoring.cjs.js +3 -3
- package/dist/domains/scores/components/span-scoring.es.js +3 -3
- package/dist/domains/scores/components/trace-scores-tab.cjs.js +2 -1
- package/dist/domains/scores/components/trace-scores-tab.cjs.js.map +1 -1
- package/dist/domains/scores/components/trace-scores-tab.es.js +2 -1
- package/dist/domains/scores/components/trace-scores-tab.es.js.map +1 -1
- package/dist/domains/traces/components/feedback-thread.cjs.js +4 -4
- package/dist/domains/traces/components/feedback-thread.cjs.js.map +1 -1
- package/dist/domains/traces/components/feedback-thread.es.js +4 -4
- package/dist/domains/traces/components/feedback-thread.es.js.map +1 -1
- package/dist/domains/traces/components/shared.cjs.js +4 -3
- package/dist/domains/traces/components/shared.cjs.js.map +1 -1
- package/dist/domains/traces/components/shared.es.js +5 -4
- package/dist/domains/traces/components/shared.es.js.map +1 -1
- package/dist/domains/traces/components/span-data-panel-view.cjs.js +4 -4
- package/dist/domains/traces/components/span-data-panel-view.cjs.js.map +1 -1
- package/dist/domains/traces/components/span-data-panel-view.es.js +4 -4
- package/dist/domains/traces/components/span-data-panel-view.es.js.map +1 -1
- 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-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 +2 -2
- package/dist/domains/traces/components/span-payload/span-input-renderers.es.js +2 -2
- 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-messages.cjs.js +2 -2
- package/dist/domains/traces/components/span-payload/span-payload-messages.es.js +2 -2
- package/dist/domains/traces/components/span-payload/span-payload-primitives.cjs.js +2 -2
- package/dist/domains/traces/components/span-payload/span-payload-primitives.es.js +2 -2
- package/dist/domains/traces/components/span-payload/span-payload-processor.cjs.js +2 -2
- package/dist/domains/traces/components/span-payload/span-payload-processor.es.js +2 -2
- package/dist/domains/traces/components/span-payload/span-payload-registry.cjs.js.map +1 -1
- package/dist/domains/traces/components/span-payload/span-payload-registry.es.js.map +1 -1
- package/dist/domains/traces/components/span-payload/span-payload-section.cjs.js +3 -3
- package/dist/domains/traces/components/span-payload/span-payload-section.es.js +3 -3
- package/dist/domains/traces/components/span-payload/span-payload-tool.cjs.js +2 -2
- package/dist/domains/traces/components/span-payload/span-payload-tool.es.js +2 -2
- package/dist/domains/traces/components/span-payload/span-processor-attributes.cjs.js +2 -2
- package/dist/domains/traces/components/span-payload/span-processor-attributes.es.js +2 -2
- package/dist/domains/traces/components/span-rows.cjs.js +5 -0
- package/dist/domains/traces/components/span-rows.cjs.js.map +1 -1
- package/dist/domains/traces/components/span-rows.es.js +5 -0
- package/dist/domains/traces/components/span-rows.es.js.map +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/span-timeline-row.cjs.js +34 -28
- package/dist/domains/traces/components/span-timeline-row.cjs.js.map +1 -1
- package/dist/domains/traces/components/span-timeline-row.es.js +34 -28
- package/dist/domains/traces/components/span-timeline-row.es.js.map +1 -1
- package/dist/domains/traces/components/span-timing-hover-card.cjs.js +1 -1
- package/dist/domains/traces/components/span-timing-hover-card.es.js +1 -1
- package/dist/domains/traces/components/span-token-usage.cjs.js +1 -1
- package/dist/domains/traces/components/span-token-usage.es.js +1 -1
- package/dist/domains/traces/components/span-tree-rail.cjs.js +50 -0
- package/dist/domains/traces/components/span-tree-rail.cjs.js.map +1 -0
- package/dist/domains/traces/components/span-tree-rail.d.ts +2 -0
- package/dist/domains/traces/components/span-tree-rail.es.js +42 -0
- package/dist/domains/traces/components/span-tree-rail.es.js.map +1 -0
- package/dist/domains/traces/components/span-tree-row.cjs.js +2 -2
- package/dist/domains/traces/components/span-tree-row.cjs.js.map +1 -1
- package/dist/domains/traces/components/span-tree-row.es.js +2 -2
- package/dist/domains/traces/components/span-tree-row.es.js.map +1 -1
- package/dist/domains/traces/components/span-type-badge.cjs.js +29 -0
- package/dist/domains/traces/components/span-type-badge.cjs.js.map +1 -0
- package/dist/domains/traces/components/span-type-badge.d.ts +2 -0
- package/dist/domains/traces/components/span-type-badge.es.js +25 -0
- package/dist/domains/traces/components/span-type-badge.es.js.map +1 -0
- package/dist/domains/traces/components/span-type-legend.cjs.js +2 -2
- package/dist/domains/traces/components/span-type-legend.cjs.js.map +1 -1
- package/dist/domains/traces/components/span-type-legend.es.js +2 -2
- package/dist/domains/traces/components/span-type-legend.es.js.map +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 +1 -1
- package/dist/domains/traces/components/thread-trace/thread-trace-messages.es.js +1 -1
- package/dist/domains/traces/components/thread-trace/thread-trace-row.cjs.js.map +1 -1
- package/dist/domains/traces/components/thread-trace/thread-trace-row.es.js.map +1 -1
- package/dist/domains/traces/components/thread-trace/thread-trace-spans.cjs.js +2 -2
- package/dist/domains/traces/components/thread-trace/thread-trace-spans.es.js +2 -2
- package/dist/domains/traces/components/thread-view-by-trace.cjs.js +2 -1
- package/dist/domains/traces/components/thread-view-by-trace.cjs.js.map +1 -1
- package/dist/domains/traces/components/thread-view-by-trace.es.js +2 -1
- package/dist/domains/traces/components/thread-view-by-trace.es.js.map +1 -1
- package/dist/domains/traces/components/timeline-name-col.cjs.js +53 -27
- package/dist/domains/traces/components/timeline-name-col.cjs.js.map +1 -1
- package/dist/domains/traces/components/timeline-name-col.es.js +54 -28
- package/dist/domains/traces/components/timeline-name-col.es.js.map +1 -1
- package/dist/domains/traces/components/timeline-structure-sign.cjs.js +23 -14
- package/dist/domains/traces/components/timeline-structure-sign.cjs.js.map +1 -1
- package/dist/domains/traces/components/timeline-structure-sign.es.js +24 -15
- package/dist/domains/traces/components/timeline-structure-sign.es.js.map +1 -1
- package/dist/domains/traces/components/trace-columns-menu.cjs.js +4 -4
- package/dist/domains/traces/components/trace-columns-menu.cjs.js.map +1 -1
- package/dist/domains/traces/components/trace-columns-menu.es.js +4 -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 +32 -5
- package/dist/domains/traces/components/trace-data-panel-view.cjs.js.map +1 -1
- package/dist/domains/traces/components/trace-data-panel-view.es.js +32 -5
- package/dist/domains/traces/components/trace-data-panel-view.es.js.map +1 -1
- package/dist/domains/traces/components/trace-data-panel.cjs.js +5 -2
- package/dist/domains/traces/components/trace-data-panel.cjs.js.map +1 -1
- package/dist/domains/traces/components/trace-data-panel.es.js +5 -2
- package/dist/domains/traces/components/trace-data-panel.es.js.map +1 -1
- package/dist/domains/traces/components/trace-error-cell.cjs.js +35 -0
- package/dist/domains/traces/components/trace-error-cell.cjs.js.map +1 -0
- package/dist/domains/traces/components/trace-error-cell.d.ts +2 -0
- package/dist/domains/traces/components/trace-error-cell.es.js +31 -0
- package/dist/domains/traces/components/trace-error-cell.es.js.map +1 -0
- package/dist/domains/traces/components/trace-error-details.cjs.js +22 -0
- package/dist/domains/traces/components/trace-error-details.cjs.js.map +1 -0
- package/dist/domains/traces/components/trace-error-details.d.ts +2 -0
- package/dist/domains/traces/components/trace-error-details.es.js +18 -0
- package/dist/domains/traces/components/trace-error-details.es.js.map +1 -0
- package/dist/domains/traces/components/trace-error-summary.cjs.js +31 -0
- package/dist/domains/traces/components/trace-error-summary.cjs.js.map +1 -0
- package/dist/domains/traces/components/trace-error-summary.d.ts +2 -0
- package/dist/domains/traces/components/trace-error-summary.es.js +27 -0
- package/dist/domains/traces/components/trace-error-summary.es.js.map +1 -0
- 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-span-tree-skeleton.cjs.js +7 -7
- package/dist/domains/traces/components/trace-span-tree-skeleton.cjs.js.map +1 -1
- package/dist/domains/traces/components/trace-span-tree-skeleton.es.js +7 -7
- package/dist/domains/traces/components/trace-span-tree-skeleton.es.js.map +1 -1
- package/dist/domains/traces/components/trace-span-tree.cjs.js +1 -2
- package/dist/domains/traces/components/trace-span-tree.cjs.js.map +1 -1
- package/dist/domains/traces/components/trace-span-tree.es.js +2 -3
- package/dist/domains/traces/components/trace-span-tree.es.js.map +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/trace-time-range-chip.cjs.js +2 -2
- package/dist/domains/traces/components/trace-time-range-chip.es.js +2 -2
- 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 +10 -7
- package/dist/domains/traces/components/traces-list-view.cjs.js.map +1 -1
- package/dist/domains/traces/components/traces-list-view.es.js +9 -6
- package/dist/domains/traces/components/traces-list-view.es.js.map +1 -1
- package/dist/domains/traces/components/traces-page-skeleton.cjs.js +4 -1
- package/dist/domains/traces/components/traces-page-skeleton.cjs.js.map +1 -1
- package/dist/domains/traces/components/traces-page-skeleton.es.js +4 -1
- package/dist/domains/traces/components/traces-page-skeleton.es.js.map +1 -1
- package/dist/domains/traces/hooks/use-trace-list-navigation.cjs.js.map +1 -1
- package/dist/domains/traces/hooks/use-trace-list-navigation.es.js.map +1 -1
- package/dist/domains/traces/utils/flatten-to-search-text.cjs.js.map +1 -1
- package/dist/domains/traces/utils/flatten-to-search-text.es.js.map +1 -1
- package/dist/domains/workflows/components/workflow-combobox.cjs.js +1 -1
- package/dist/domains/workflows/components/workflow-combobox.es.js +1 -1
- package/dist/domains/workflows/components/workflow-information.cjs.js +1 -1
- package/dist/domains/workflows/components/workflow-information.es.js +1 -1
- package/dist/domains/workflows/components/workflow-step-detail.cjs.js +3 -3
- package/dist/domains/workflows/components/workflow-step-detail.es.js +3 -3
- 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/runs/workflow-run-list.cjs.js +2 -2
- package/dist/domains/workflows/runs/workflow-run-list.es.js +2 -2
- 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 +2 -2
- package/dist/domains/workflows/workflow/use-workflow-graph-runtime.es.js +2 -2
- package/dist/domains/workflows/workflow/workflow-body-graph.cjs.js +1 -1
- package/dist/domains/workflows/workflow/workflow-body-graph.es.js +1 -1
- package/dist/domains/workflows/workflow/workflow-cancel-button.cjs.js +1 -1
- package/dist/domains/workflows/workflow/workflow-cancel-button.es.js +1 -1
- package/dist/domains/workflows/workflow/workflow-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-node.cjs.js +2 -2
- package/dist/domains/workflows/workflow/workflow-graph-node.es.js +2 -2
- package/dist/domains/workflows/workflow/workflow-input-data.cjs.js +1 -1
- package/dist/domains/workflows/workflow/workflow-input-data.cjs.js.map +1 -1
- package/dist/domains/workflows/workflow/workflow-input-data.es.js +1 -1
- package/dist/domains/workflows/workflow/workflow-input-data.es.js.map +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 +3 -3
- package/dist/domains/workflows/workflow/workflow-nested-graph.es.js +3 -3
- package/dist/domains/workflows/workflow/workflow-run-data.cjs.js +2 -2
- package/dist/domains/workflows/workflow/workflow-run-data.es.js +2 -2
- 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 +3 -3
- package/dist/domains/workflows/workflow/workflow-step-action-bar.es.js +3 -3
- package/dist/domains/workflows/workflow/workflow-suspended-steps.cjs.js +1 -1
- package/dist/domains/workflows/workflow/workflow-suspended-steps.es.js +1 -1
- package/dist/domains/workflows/workflow/workflow-time-travel-form.cjs.js +1 -1
- package/dist/domains/workflows/workflow/workflow-time-travel-form.es.js +1 -1
- 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/workspace/components/workspace-active-file.cjs.js +1 -1
- package/dist/domains/workspace/components/workspace-active-file.es.js +1 -1
- package/dist/domains/workspace/components/workspace-add-skill-dialog.cjs.js +5 -5
- package/dist/domains/workspace/components/workspace-add-skill-dialog.es.js +5 -5
- 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-markdown-preview.cjs.js +2 -2
- package/dist/domains/workspace/components/workspace-markdown-preview.es.js +2 -2
- 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 +2 -2
- package/dist/domains/workspace/components/workspace-tree.es.js +2 -2
- package/dist/{drawer-DROYPMUm.cjs → drawer-DdTU-nBR.cjs} +2 -2
- package/dist/{drawer-DROYPMUm.cjs.map → drawer-DdTU-nBR.cjs.map} +1 -1
- package/dist/{drawer-C-8E9yHN.js → drawer-mj-G7-Tu.js} +2 -2
- package/dist/{drawer-C-8E9yHN.js.map → drawer-mj-G7-Tu.js.map} +1 -1
- package/dist/dropdown-menu-CQ_48tVI.js.map +1 -1
- package/dist/dropdown-menu-CsynT1aD.cjs.map +1 -1
- package/dist/ee/signals/components/entity-index-list.cjs.js +3 -1
- package/dist/ee/signals/components/entity-index-list.cjs.js.map +1 -1
- package/dist/ee/signals/components/entity-index-list.es.js +3 -1
- package/dist/ee/signals/components/entity-index-list.es.js.map +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-detail.cjs.js.map +1 -1
- package/dist/ee/signals/components/trace-intelligence-entity-detail.es.js.map +1 -1
- package/dist/ee/signals/components/trace-intelligence-entity-index.cjs.js +6 -4
- 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 +6 -4
- package/dist/ee/signals/components/trace-intelligence-entity-index.es.js.map +1 -1
- package/dist/ee/signals/examples-pager.cjs.js +1 -1
- package/dist/ee/signals/examples-pager.es.js +1 -1
- package/dist/ee/signals/noise-detail-panel.cjs.js +1 -1
- package/dist/ee/signals/noise-detail-panel.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 +1 -1
- package/dist/ee/signals/settings/trace-signal-settings.es.js +1 -1
- 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-detail-panel.cjs.js +1 -1
- package/dist/ee/signals/theme-detail-panel.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/trace-intelligence-provider.cjs.js.map +1 -1
- package/dist/ee/signals/trace-intelligence-provider.es.js.map +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 +3 -3
- package/dist/ee/topics/components/topic-trace-summary-list.es.js +3 -3
- package/dist/{field-error-id-Dbe6IInA.cjs → field-error-id-0yYYU0ar.cjs} +2 -2
- package/dist/{field-error-id-Dbe6IInA.cjs.map → field-error-id-0yYYU0ar.cjs.map} +1 -1
- package/dist/{field-error-id-Sqhk00e4.js → field-error-id-CdzuQK5c.js} +2 -2
- package/dist/{field-error-id-Sqhk00e4.js.map → field-error-id-CdzuQK5c.js.map} +1 -1
- package/dist/{filter-bar-chip-BarAq1S2.js → filter-bar-chip-C9CXOudu.js} +3 -3
- package/dist/filter-bar-chip-C9CXOudu.js.map +1 -0
- package/dist/{filter-bar-chip-BJJ6ytJ4.cjs → filter-bar-chip-DgvuQv6c.cjs} +3 -3
- package/dist/filter-bar-chip-DgvuQv6c.cjs.map +1 -0
- package/dist/hooks/use-environment-variables-editor.cjs.js.map +1 -1
- package/dist/hooks/use-environment-variables-editor.es.js.map +1 -1
- package/dist/hooks/use-fluid-hover.cjs.js.map +1 -1
- package/dist/hooks/use-fluid-hover.es.js.map +1 -1
- package/dist/icons/Icon.cjs.js.map +1 -1
- package/dist/icons/Icon.es.js.map +1 -1
- package/dist/icons/SkillIcon.cjs.js.map +1 -1
- package/dist/icons/SkillIcon.es.js.map +1 -1
- package/dist/icons/icon-size-classes.cjs.js +4 -4
- package/dist/icons/icon-size-classes.cjs.js.map +1 -1
- package/dist/icons/icon-size-classes.es.js +4 -4
- package/dist/icons/icon-size-classes.es.js.map +1 -1
- package/dist/{input-group-CiBbTaPP.js → input-group-BAg6iSIe.js} +2 -2
- package/dist/{input-group-CiBbTaPP.js.map → input-group-BAg6iSIe.js.map} +1 -1
- package/dist/{input-group-DSW5WoSU.cjs → input-group-DRXUthxe.cjs} +2 -2
- package/dist/{input-group-DSW5WoSU.cjs.map → input-group-DRXUthxe.cjs.map} +1 -1
- package/dist/keyboard/keyboard-dispatcher.cjs.js +2 -4
- package/dist/keyboard/keyboard-dispatcher.cjs.js.map +1 -1
- package/dist/keyboard/keyboard-dispatcher.es.js +2 -4
- package/dist/keyboard/keyboard-dispatcher.es.js.map +1 -1
- package/dist/keyboard/keyboard-shortcuts-context.cjs.js.map +1 -1
- package/dist/keyboard/keyboard-shortcuts-context.es.js.map +1 -1
- package/dist/keyboard/use-keydown.cjs.js +2 -0
- package/dist/keyboard/use-keydown.cjs.js.map +1 -1
- package/dist/keyboard/use-keydown.es.js +2 -0
- package/dist/keyboard/use-keydown.es.js.map +1 -1
- package/dist/layout/tabbed-container.cjs.js +4 -4
- package/dist/layout/tabbed-container.es.js +4 -4
- 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/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/zod-provider.cjs.js.map +1 -1
- package/dist/lib/form/zod-provider.es.js.map +1 -1
- package/dist/{list-search-D3I6xt0B.js → list-search-ByJdIxIh.js} +2 -2
- package/dist/{list-search-D3I6xt0B.js.map → list-search-ByJdIxIh.js.map} +1 -1
- package/dist/{list-search-DHiQ1-O6.cjs → list-search-DNJVeHmK.cjs} +2 -2
- package/dist/{list-search-DHiQ1-O6.cjs.map → list-search-DNJVeHmK.cjs.map} +1 -1
- package/dist/{logs-data-list-Cb85LPcT.js → logs-data-list-CGerYgSd.js} +2 -3
- package/dist/{logs-data-list-Cb85LPcT.js.map → logs-data-list-CGerYgSd.js.map} +1 -1
- package/dist/{logs-data-list-DlQxxrNw.cjs → logs-data-list-DEZuSjqt.cjs} +21 -22
- package/dist/{logs-data-list-DlQxxrNw.cjs.map → logs-data-list-DEZuSjqt.cjs.map} +1 -1
- package/dist/{markdown-renderer-HIfFphpI.cjs → markdown-renderer-BcpwvSl9.cjs} +3 -3
- package/dist/{markdown-renderer-HIfFphpI.cjs.map → markdown-renderer-BcpwvSl9.cjs.map} +1 -1
- package/dist/{markdown-renderer-BYxWiHRj.js → markdown-renderer-CHLpv5n5.js} +3 -3
- package/dist/{markdown-renderer-BYxWiHRj.js.map → markdown-renderer-CHLpv5n5.js.map} +1 -1
- package/dist/{message-copy-button-CnVgCy9y.cjs → message-copy-button-D3O4hWDV.cjs} +2 -2
- package/dist/{message-copy-button-CnVgCy9y.cjs.map → message-copy-button-D3O4hWDV.cjs.map} +1 -1
- package/dist/{message-copy-button-Ctew41Rr.js → message-copy-button-OI1mwAaS.js} +2 -2
- package/dist/{message-copy-button-Ctew41Rr.js.map → message-copy-button-OI1mwAaS.js.map} +1 -1
- package/dist/{metrics-card-DaFApxZY.cjs → metrics-card-CpjGYNBP.cjs} +2 -2
- package/dist/{metrics-card-DaFApxZY.cjs.map → metrics-card-CpjGYNBP.cjs.map} +1 -1
- package/dist/{metrics-card-Z_moDiV5.js → metrics-card-D6ty6a6Z.js} +2 -2
- package/dist/{metrics-card-Z_moDiV5.js.map → metrics-card-D6ty6a6Z.js.map} +1 -1
- package/dist/{notification-activity-MR63WqZm.cjs → notification-activity-BSNuqJDd.cjs} +2 -2
- package/dist/{notification-activity-MR63WqZm.cjs.map → notification-activity-BSNuqJDd.cjs.map} +1 -1
- package/dist/{notification-activity-FJcMFxIj.js → notification-activity-BWXHmlTn.js} +2 -2
- package/dist/{notification-activity-FJcMFxIj.js.map → notification-activity-BWXHmlTn.js.map} +1 -1
- package/dist/{plan-BoOK_LAB.cjs → plan-Cm3yHvs3.cjs} +4 -4
- package/dist/{plan-BoOK_LAB.cjs.map → plan-Cm3yHvs3.cjs.map} +1 -1
- package/dist/{plan-m0hj6Zgv.js → plan-TtrepVnQ.js} +4 -4
- package/dist/{plan-m0hj6Zgv.js.map → plan-TtrepVnQ.js.map} +1 -1
- package/dist/primitives/form-element.cjs.js.map +1 -1
- package/dist/primitives/form-element.es.js.map +1 -1
- package/dist/primitives/menu-item.cjs.js +4 -2
- package/dist/primitives/menu-item.cjs.js.map +1 -1
- package/dist/primitives/menu-item.es.js +4 -2
- package/dist/primitives/menu-item.es.js.map +1 -1
- package/dist/primitives/popup-anchor.cjs.js +34 -0
- package/dist/primitives/popup-anchor.cjs.js.map +1 -0
- package/dist/primitives/popup-anchor.d.ts +2 -0
- package/dist/primitives/popup-anchor.es.js +10 -0
- package/dist/primitives/popup-anchor.es.js.map +1 -0
- package/dist/primitives/trigger-button.cjs.js +1 -1
- package/dist/primitives/trigger-button.es.js +1 -1
- package/dist/{property-filter-applied-J9ob_Rss.js → property-filter-applied-BMmMf4DE.js} +2 -2
- package/dist/property-filter-applied-BMmMf4DE.js.map +1 -0
- package/dist/{property-filter-applied-CtSglSaH.cjs → property-filter-applied-Bj-bh9gv.cjs} +2 -2
- package/dist/property-filter-applied-Bj-bh9gv.cjs.map +1 -0
- package/dist/{reasoning-activity-5MFE3mzw.js → reasoning-activity-C-sJt2A9.js} +3 -3
- package/dist/{reasoning-activity-5MFE3mzw.js.map → reasoning-activity-C-sJt2A9.js.map} +1 -1
- package/dist/{reasoning-activity-DMvughvN.cjs → reasoning-activity-DpYFjxuL.cjs} +3 -3
- package/dist/{reasoning-activity-DMvughvN.cjs.map → reasoning-activity-DpYFjxuL.cjs.map} +1 -1
- package/dist/resize/panel-drawer.cjs.js +1 -1
- package/dist/resize/panel-drawer.es.js +1 -1
- package/dist/{search-input-BPqubJZC.js → search-input-C9qFBzn6.js} +2 -2
- package/dist/{search-input-BPqubJZC.js.map → search-input-C9qFBzn6.js.map} +1 -1
- package/dist/{search-input-BUMYRaUW.cjs → search-input-CMNy0JWd.cjs} +2 -2
- package/dist/{search-input-BUMYRaUW.cjs.map → search-input-CMNy0JWd.cjs.map} +1 -1
- package/dist/section-CctlZIXp.cjs.map +1 -1
- package/dist/section-D0hKTVXt.js.map +1 -1
- package/dist/{select-CQtsggxJ.js → select-7rYaECQf.js} +2 -2
- package/dist/select-7rYaECQf.js.map +1 -0
- package/dist/{select-CbNLtiAs.cjs → select-A3AFKLd9.cjs} +2 -2
- package/dist/select-A3AFKLd9.cjs.map +1 -0
- package/dist/shimmer-BCSr3Rqf.js.map +1 -1
- package/dist/shimmer-Co-XPvF9.cjs.map +1 -1
- package/dist/{side-dialog-bm8NPDXy.js → side-dialog-DSvj8H6x.js} +4 -4
- package/dist/{side-dialog-bm8NPDXy.js.map → side-dialog-DSvj8H6x.js.map} +1 -1
- package/dist/{side-dialog-BzULMBaH.cjs → side-dialog-SJCWBnbw.cjs} +4 -4
- package/dist/{side-dialog-BzULMBaH.cjs.map → side-dialog-SJCWBnbw.cjs.map} +1 -1
- package/dist/{signal-activity-D-_u7DFm.cjs → signal-activity-C_bihjcd.cjs} +2 -2
- package/dist/{signal-activity-D-_u7DFm.cjs.map → signal-activity-C_bihjcd.cjs.map} +1 -1
- package/dist/{signal-activity-BkFexFiJ.js → signal-activity-J9kpnwAF.js} +2 -2
- package/dist/{signal-activity-BkFexFiJ.js.map → signal-activity-J9kpnwAF.js.map} +1 -1
- package/dist/{span-payload-primitives-wujxDKfA.cjs → span-payload-primitives-C0KYtmtV.cjs} +3 -3
- package/dist/{span-payload-primitives-wujxDKfA.cjs.map → span-payload-primitives-C0KYtmtV.cjs.map} +1 -1
- package/dist/{span-payload-primitives-jQiJK0qI.js → span-payload-primitives-D_N9LeLk.js} +3 -3
- package/dist/{span-payload-primitives-jQiJK0qI.js.map → span-payload-primitives-D_N9LeLk.js.map} +1 -1
- package/dist/src/domains/traces/components/span-rows.d.ts +2 -0
- package/dist/src/domains/traces/components/span-tree-rail.d.ts +23 -0
- package/dist/src/domains/traces/components/span-type-badge.d.ts +9 -0
- package/dist/src/domains/traces/components/timeline-name-col.d.ts +2 -2
- package/dist/src/domains/traces/components/timeline-structure-sign.d.ts +14 -1
- package/dist/src/domains/traces/components/trace-error-cell.d.ts +8 -0
- package/dist/src/domains/traces/components/trace-error-details.d.ts +10 -0
- package/dist/src/domains/traces/components/trace-error-summary.d.ts +8 -0
- package/dist/src/domains/traces/components/trace-span-tree-skeleton.d.ts +1 -1
- package/dist/src/domains/traces/hooks/use-traces-list-source.d.ts +1 -0
- package/dist/src/ds/components/Avatar/avatar-size.d.ts +1 -1
- package/dist/src/ds/components/Breadcrumb/crumb-switcher.d.ts +0 -1
- package/dist/src/ds/components/Button/Button.d.ts +1 -1
- package/dist/src/ds/components/EnvironmentVariablesEditor/environment-variables-editor-context.d.ts +1 -2
- package/dist/src/ds/components/SavedViews/saved-view-editor.d.ts +1 -1
- package/dist/src/ds/components/Select/select.d.ts +1 -1
- package/dist/src/ds/primitives/popup-anchor.d.ts +4 -0
- package/dist/src/hooks/use-environment-variables-editor.d.ts +1 -1
- package/dist/src/lib/keyboard/keyboard-dispatcher.d.ts +2 -0
- package/dist/src/lib/keyboard/use-keydown.d.ts +8 -1
- package/dist/style.css +121 -143
- package/dist/{tabs-tab-DRaRUvQ3.cjs → tabs-tab-B0W25Dm2.cjs} +2 -2
- package/dist/{tabs-tab-DRaRUvQ3.cjs.map → tabs-tab-B0W25Dm2.cjs.map} +1 -1
- package/dist/{tabs-tab-CIVJEMoY.js → tabs-tab-CkLyKrL0.js} +2 -2
- package/dist/{tabs-tab-CIVJEMoY.js.map → tabs-tab-CkLyKrL0.js.map} +1 -1
- package/dist/{thread-list-BANpytn3.cjs → thread-list-BBPZYHh8.cjs} +2 -2
- package/dist/thread-list-BBPZYHh8.cjs.map +1 -0
- package/dist/{thread-list-lXnXsPul.js → thread-list-BGjKZfEH.js} +2 -2
- package/dist/thread-list-BGjKZfEH.js.map +1 -0
- package/dist/{time-picker-BpCfTfoe.js → time-picker-Bzdboi4W.js} +2 -2
- package/dist/{time-picker-BpCfTfoe.js.map → time-picker-Bzdboi4W.js.map} +1 -1
- package/dist/{time-picker-DhekkO5t.cjs → time-picker-CyvG-fwX.cjs} +2 -2
- package/dist/{time-picker-DhekkO5t.cjs.map → time-picker-CyvG-fwX.cjs.map} +1 -1
- package/dist/{tool-approval-BrqoN_mP.js → tool-approval-P8rUFAYp.js} +4 -4
- package/dist/{tool-approval-BrqoN_mP.js.map → tool-approval-P8rUFAYp.js.map} +1 -1
- package/dist/{tool-approval-zBfJ20iR.cjs → tool-approval-zhWdp8i6.cjs} +4 -4
- package/dist/{tool-approval-zBfJ20iR.cjs.map → tool-approval-zhWdp8i6.cjs.map} +1 -1
- package/dist/{tool-call-arguments-DwMeGQHD.cjs → tool-call-arguments-DzpFckIm.cjs} +3 -3
- package/dist/{tool-call-arguments-DwMeGQHD.cjs.map → tool-call-arguments-DzpFckIm.cjs.map} +1 -1
- package/dist/{tool-call-arguments-Dx4LW1Ni.js → tool-call-arguments-goEdIs4f.js} +3 -3
- package/dist/{tool-call-arguments-Dx4LW1Ni.js.map → tool-call-arguments-goEdIs4f.js.map} +1 -1
- package/dist/{tool-call-group-DJsiIb-B.cjs → tool-call-group-C56oARyx.cjs} +4 -4
- package/dist/tool-call-group-C56oARyx.cjs.map +1 -0
- package/dist/{tool-call-group-ZDNZog5K.js → tool-call-group-DU4T72Xn.js} +4 -4
- package/dist/tool-call-group-DU4T72Xn.js.map +1 -0
- package/dist/{tool-call-mono-Bs7y-1Cq.js → tool-call-mono-DPW6hN91.js} +2 -2
- package/dist/{tool-call-mono-Bs7y-1Cq.js.map → tool-call-mono-DPW6hN91.js.map} +1 -1
- package/dist/{tool-call-mono-I-vdqzCe.cjs → tool-call-mono-aheL8CkL.cjs} +2 -2
- package/dist/{tool-call-mono-I-vdqzCe.cjs.map → tool-call-mono-aheL8CkL.cjs.map} +1 -1
- package/dist/{tool-call-output-Dd8zlhLd.js → tool-call-output-BQYzMMMi.js} +2 -2
- package/dist/{tool-call-output-Dd8zlhLd.js.map → tool-call-output-BQYzMMMi.js.map} +1 -1
- package/dist/{tool-call-output-BrNg0Lkd.cjs → tool-call-output-CuwM5IHd.cjs} +2 -2
- package/dist/{tool-call-output-BrNg0Lkd.cjs.map → tool-call-output-CuwM5IHd.cjs.map} +1 -1
- package/dist/{tool-card-D4yrR2AE.js → tool-card-aclA3iVz.js} +4 -4
- package/dist/{tool-card-D4yrR2AE.js.map → tool-card-aclA3iVz.js.map} +1 -1
- package/dist/{tool-card-D6UdNzIX.cjs → tool-card-yii3vGHu.cjs} +4 -4
- package/dist/{tool-card-D6UdNzIX.cjs.map → tool-card-yii3vGHu.cjs.map} +1 -1
- package/dist/{traces-data-list-Bhhg9drs.cjs → traces-data-list-Co9k5J4f.cjs} +18 -20
- package/dist/{traces-data-list-Bhhg9drs.cjs.map → traces-data-list-Co9k5J4f.cjs.map} +1 -1
- package/dist/{traces-data-list-DMWPJFBc.js → traces-data-list-TCKjOldO.js} +2 -4
- package/dist/{traces-data-list-DMWPJFBc.js.map → traces-data-list-TCKjOldO.js.map} +1 -1
- package/dist/use-data-list-keyboard-DF3tLe10.cjs.map +1 -1
- package/dist/use-data-list-keyboard-DFQr4t38.js.map +1 -1
- package/dist/{use-workflow-graph-runtime-DF-56pIR.cjs → use-workflow-graph-runtime-DcQD5eA6.cjs} +3 -3
- package/dist/{use-workflow-graph-runtime-DF-56pIR.cjs.map → use-workflow-graph-runtime-DcQD5eA6.cjs.map} +1 -1
- package/dist/{use-workflow-graph-runtime-BrHXo49Q.js → use-workflow-graph-runtime-xq_aSXPh.js} +3 -3
- package/dist/{use-workflow-graph-runtime-BrHXo49Q.js.map → use-workflow-graph-runtime-xq_aSXPh.js.map} +1 -1
- package/dist/utils/workspace-compat.cjs.js.map +1 -1
- package/dist/utils/workspace-compat.es.js.map +1 -1
- package/dist/{workflow-code-dialog-content-CfVy6bGG.cjs → workflow-code-dialog-content-B_BQCuFW.cjs} +3 -3
- package/dist/{workflow-code-dialog-content-CfVy6bGG.cjs.map → workflow-code-dialog-content-B_BQCuFW.cjs.map} +1 -1
- package/dist/{workflow-code-dialog-content-DviJz1jB.js → workflow-code-dialog-content-CFEaeYUX.js} +3 -3
- package/dist/{workflow-code-dialog-content-DviJz1jB.js.map → workflow-code-dialog-content-CFEaeYUX.js.map} +1 -1
- package/dist/{workflow-condition-card-BRwhMmNO.cjs → workflow-condition-card-CMzoK307.cjs} +3 -3
- package/dist/{workflow-condition-card-BRwhMmNO.cjs.map → workflow-condition-card-CMzoK307.cjs.map} +1 -1
- package/dist/{workflow-condition-card-sFdOjlab.js → workflow-condition-card-CbQ4fCxY.js} +3 -3
- package/dist/{workflow-condition-card-sFdOjlab.js.map → workflow-condition-card-CbQ4fCxY.js.map} +1 -1
- package/dist/{workflow-data-edge-view-DpPhr9gZ.cjs → workflow-data-edge-view-0utEB4Yb.cjs} +2 -2
- package/dist/{workflow-data-edge-view-DpPhr9gZ.cjs.map → workflow-data-edge-view-0utEB4Yb.cjs.map} +1 -1
- package/dist/{workflow-data-edge-view-CuSzc6YI.js → workflow-data-edge-view-gwwJEvXz.js} +2 -2
- package/dist/{workflow-data-edge-view-CuSzc6YI.js.map → workflow-data-edge-view-gwwJEvXz.js.map} +1 -1
- package/dist/{workflow-debug-controls-CAn_6S8K.cjs → workflow-debug-controls-B5zqE_rm.cjs} +2 -2
- package/dist/{workflow-debug-controls-CAn_6S8K.cjs.map → workflow-debug-controls-B5zqE_rm.cjs.map} +1 -1
- package/dist/{workflow-debug-controls-CLzbxd5O.js → workflow-debug-controls-CPpdNzD9.js} +2 -2
- package/dist/{workflow-debug-controls-CLzbxd5O.js.map → workflow-debug-controls-CPpdNzD9.js.map} +1 -1
- package/dist/{workflow-edge-data-button-Dtt_OUz9.js → workflow-edge-data-button-YWjfx-W0.js} +4 -4
- package/dist/{workflow-edge-data-button-Dtt_OUz9.js.map → workflow-edge-data-button-YWjfx-W0.js.map} +1 -1
- package/dist/{workflow-edge-data-button-B8rQaAoK.cjs → workflow-edge-data-button-tDvziS5v.cjs} +4 -4
- package/dist/{workflow-edge-data-button-B8rQaAoK.cjs.map → workflow-edge-data-button-tDvziS5v.cjs.map} +1 -1
- package/dist/{workflow-step-action-DqFjktfs.js → workflow-step-action-D8MVfEIl.js} +2 -2
- package/dist/{workflow-step-action-DqFjktfs.js.map → workflow-step-action-D8MVfEIl.js.map} +1 -1
- package/dist/{workflow-step-action-Cu01omgz.cjs → workflow-step-action-DZgS0_fL.cjs} +2 -2
- package/dist/{workflow-step-action-Cu01omgz.cjs.map → workflow-step-action-DZgS0_fL.cjs.map} +1 -1
- package/package.json +11 -13
- package/theme/scale.css +7 -0
- package/dist/Avatar-98bsFrSV.js.map +0 -1
- package/dist/Avatar-BCj8SvOb.cjs.map +0 -1
- package/dist/Button-DH1aTzbs.cjs.map +0 -1
- package/dist/Button-EGoajBQY.js.map +0 -1
- package/dist/activity-2tovEdIP.cjs.map +0 -1
- package/dist/activity-CsTUr5_l.js.map +0 -1
- package/dist/ask-user-card-DroerVbm.cjs.map +0 -1
- package/dist/avatar-size-CNR0U-LW.js.map +0 -1
- package/dist/avatar-size-DxStOo5A.cjs.map +0 -1
- package/dist/combobox-BNlVCFgY.cjs.map +0 -1
- package/dist/combobox-Bw13EcK0.js.map +0 -1
- package/dist/command-UEPxVJlE.cjs.map +0 -1
- package/dist/command-V9rsKc7P.js.map +0 -1
- package/dist/data-keys-and-values-1lYi60YK.cjs.map +0 -1
- package/dist/data-keys-and-values-CHpxKsfq.js.map +0 -1
- package/dist/data-list-CmjTe8xE.cjs +0 -142
- package/dist/data-list-CmjTe8xE.cjs.map +0 -1
- package/dist/data-list-DT1LVR29.js +0 -138
- package/dist/data-list-DT1LVR29.js.map +0 -1
- package/dist/data-list-spacer-CdlT6bDd.cjs +0 -218
- package/dist/data-list-spacer-CdlT6bDd.cjs.map +0 -1
- package/dist/data-list-spacer-D--gDmOm.js +0 -209
- package/dist/data-list-spacer-D--gDmOm.js.map +0 -1
- package/dist/data-list-top-DJh08vFA.cjs.map +0 -1
- package/dist/data-list-top-T-mtdIUp.js.map +0 -1
- package/dist/data-panel-BkfjzriB.cjs.map +0 -1
- package/dist/data-panel-CMkR6Avv.js.map +0 -1
- package/dist/filter-bar-chip-BJJ6ytJ4.cjs.map +0 -1
- package/dist/filter-bar-chip-BarAq1S2.js.map +0 -1
- package/dist/property-filter-applied-CtSglSaH.cjs.map +0 -1
- package/dist/property-filter-applied-J9ob_Rss.js.map +0 -1
- package/dist/select-CQtsggxJ.js.map +0 -1
- package/dist/select-CbNLtiAs.cjs.map +0 -1
- package/dist/thread-list-BANpytn3.cjs.map +0 -1
- package/dist/thread-list-lXnXsPul.js.map +0 -1
- package/dist/tool-call-group-DJsiIb-B.cjs.map +0 -1
- package/dist/tool-call-group-ZDNZog5K.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FilterBar.es.js","sources":["../../src/ds/components/FilterBar/filter-bar-input.tsx","../../src/ds/components/FilterBar/use-settle-on-leave.ts","../../src/ds/components/FilterBar/filter-bar-group-editor.tsx","../../src/ds/components/FilterBar/filter-bar-advanced-chip.tsx","../../src/ds/components/FilterBar/filter-bar-clear.tsx","../../src/ds/components/FilterBar/filter-bar.tsx","../../src/ds/components/FilterBar/default-operators.ts"],"sourcesContent":["import type { BaseUIEvent } from '@base-ui/react/types';\nimport { BracesIcon, ListFilterIcon, Search } from 'lucide-react';\nimport { useCallback, useEffect, useMemo, useRef, useState } from 'react';\nimport type { KeyboardEvent } from 'react';\nimport { flushSync } from 'react-dom';\nimport { FILTER_BAR_CONTROL_SIZE, FilterBarFieldLabel, alwaysHighlightProps } from './filter-bar-chip';\nimport { useFilterBarContext } from './filter-bar-context';\nimport { FilterBarOptionLabel, FilterBarOptionList } from './filter-bar-option-list';\nimport { findGroup } from './filter-bar-tree';\nimport { matchesQueryFilter } from './match-query';\nimport type { FilterBarDraft, FilterBarField, FilterBarOperator, FilterBarOption, FilterBarValue } from './types';\nimport { parseFieldValue } from './types';\nimport { useValueStep } from './use-value-step';\nimport { Button } from '@/ds/components/Button/Button';\nimport { ComboboxPrimitive, comboboxStyles } from '@/ds/components/Combobox';\nimport { comboboxTriggerClass } from '@/ds/components/Combobox/combobox-styles';\nimport { Kbd } from '@/ds/components/Kbd/kbd';\nimport { Txt } from '@/ds/components/Txt';\nimport { FLOATING_POSITION_METHOD } from '@/ds/primitives/floating';\nimport { inputFocusBorderWithin, unstyledFormElementStyle } from '@/ds/primitives/form-element';\nimport { MENU_SIDE_OFFSET } from '@/ds/primitives/menu-item';\nimport { passwordManagerOptOutProps } from '@/ds/primitives/password-manager-autofill';\nimport { usePortalContainer } from '@/ds/primitives/portal-container';\nimport { useIsApplePlatform } from '@/hooks/use-keyboard-shortcut-label';\nimport { cn } from '@/lib/utils';\n\ntype Step = 'field' | 'operator' | 'value';\n\ntype Item = FilterBarField | FilterBarOperator | FilterBarOption;\n\nconst getItemLabel = (item: Item) => ('label' in item && item.label ? item.label : 'value' in item ? item.value : '');\n\nconst EMPTY_ITEMS: readonly Item[] = [];\n/** Pinned last entry of the field list that spawns an advanced filter (an `or` group) instead of a filter. */\nconst ADVANCED_FIELD_ID = '__filter-bar-advanced__';\nconst ADVANCED_FIELD: FilterBarField = {\n id: ADVANCED_FIELD_ID,\n label: 'Advanced filter…',\n icon: BracesIcon,\n operators: [],\n};\n\nexport type FilterBarInputProps = {\n placeholder?: string;\n className?: string;\n 'aria-label'?: string;\n /**\n * Group this instance commits into; omit for the bar's own input. Only the instance whose\n * `groupId` matches the provider's `inputTarget` renders, so a single input is ever mounted.\n */\n groupId?: string;\n /** Called when Escape is pressed on an empty query inside a group, after the input hands back to the bar. */\n onLeave?: () => void;\n};\n\n/**\n * Typeahead entry point: type to pick a field, then an operator, then a value.\n * Focus never leaves the input; the popup is driven with the arrow keys.\n */\nexport function FilterBarInput(props: FilterBarInputProps) {\n const ctx = useFilterBarContext();\n if (ctx.inputTarget !== props.groupId) return null;\n return <FilterBarInputImpl {...props} />;\n}\n\nfunction FilterBarInputImpl({\n placeholder = 'Filter…',\n className,\n 'aria-label': ariaLabel = 'Add filter',\n groupId,\n onLeave,\n}: FilterBarInputProps) {\n const ctx = useFilterBarContext();\n const container = usePortalContainer();\n const inputRef = useRef<HTMLInputElement | null>(null);\n const [open, setOpen] = useState(false);\n const [query, setQuery] = useState('');\n const [highlighted, setHighlighted] = useState<Item | null>(null);\n const [emptyForStepChange, setEmptyForStepChange] = useState(false);\n const modEnterLabel = useIsApplePlatform() ? '⌘↵' : 'Ctrl ↵';\n\n // The draft lives in the provider so the chip list can render it; the step follows from it.\n const { draft, setDraft: setDraftState, commitDraft } = ctx;\n const step: Step = !draft ? 'field' : !draft.operatorId ? 'operator' : 'value';\n const field = draft ? ctx.getField(draft.fieldId) : undefined;\n const operator = draft?.operatorId ? ctx.getOperator(draft.operatorId) : undefined;\n const fieldOperators = useMemo(() => (field ? ctx.getFieldOperators(field) : []), [ctx, field]);\n // The advanced option lives in the bar only; inside a popover, nesting is the editor's `+ Group`.\n const offerAdvanced = ctx.groupsEnabled && groupId === undefined;\n const visibleFields = useMemo(() => {\n const fields = ctx.fields.filter(f => !f.hidden);\n return offerAdvanced ? [...fields, ADVANCED_FIELD] : fields;\n }, [ctx.fields, offerAdvanced]);\n const targetGroup = groupId ? findGroup(ctx.expression, groupId) : undefined;\n\n // A group's input mounts on demand (see `openGroupInput`) and takes focus itself.\n useEffect(() => {\n if (groupId) inputRef.current?.focus();\n }, [groupId]);\n\n // Base UI owns the highlight index and keeps it when the list content changes, so a row\n // reached with ArrowDown would carry over into the step that follows. An empty list committed\n // first drops that index, and `autoHighlight` re-anchors on the first row of the new step.\n const withHighlightReset = useCallback((change: () => void) => {\n flushSync(() => setEmptyForStepChange(true));\n change();\n setEmptyForStepChange(false);\n }, []);\n\n const setDraft = useCallback(\n (next: Omit<FilterBarDraft, 'id' | 'from'> | null) => withHighlightReset(() => setDraftState(next)),\n [withHighlightReset, setDraftState],\n );\n\n const reset = useCallback(() => {\n setDraftState(null);\n setQuery('');\n }, [setDraftState]);\n\n const close = useCallback(() => {\n setOpen(false);\n reset();\n }, [reset]);\n\n const commit = useCallback(\n (fieldId: string, operatorId: string, value: FilterBarValue) => {\n withHighlightReset(() => commitDraft({ fieldId, operatorId }, value));\n setQuery('');\n inputRef.current?.focus();\n },\n [withHighlightReset, commitDraft],\n );\n\n const selectOperator = useCallback(\n (fieldId: string, next: FilterBarOperator) => {\n if (next.arity === 'none') {\n commit(fieldId, next.id, '');\n return;\n }\n setDraft({ fieldId, operatorId: next.id });\n setQuery('');\n },\n [commit, setDraft],\n );\n\n const selectField = useCallback(\n (next: FilterBarField) => {\n if (next.id === ADVANCED_FIELD_ID) {\n // `or` is the useful default: an `and` group is indistinguishable from the root.\n const id = ctx.addGroup(undefined, 'or');\n ctx.setOpenGroup(id);\n ctx.openGroupInput(id);\n setQuery('');\n setOpen(false);\n return;\n }\n const [only, ...rest] = ctx.getFieldOperators(next);\n // Free-text entry with text already typed: that text is the value, so neither the\n // operator nor the value step has anything left to ask.\n if (next.search && only && query.trim() !== '') {\n commit(next.id, only.id, parseFieldValue(next.type, query));\n return;\n }\n // A single allowed operator is implied: skip straight to the value step.\n if (only && rest.length === 0) {\n selectOperator(next.id, only);\n return;\n }\n setDraft({ fieldId: next.id });\n setQuery('');\n },\n [ctx, commit, query, selectOperator, setDraft],\n );\n\n const valueStep = useValueStep({\n field,\n operator,\n query,\n enabled: open && step === 'value',\n setQuery,\n onCommit: value => {\n if (draft?.operatorId) commit(draft.fieldId, draft.operatorId, value);\n },\n });\n\n // Leaving a group's input hands the target back to the bar; empty groups are pruned when the\n // popover closes, never here.\n const leaveGroup = useCallback(() => {\n if (!groupId) return false;\n ctx.openGroupInput(undefined);\n onLeave?.();\n return true;\n }, [ctx, groupId, onLeave]);\n\n const stepBack = useCallback(() => {\n if (step === 'value' && draft) {\n // Back to the field step when the operator was implied (single operator).\n const skipOperator = field ? fieldOperators.length === 1 : false;\n setDraft(skipOperator ? null : { fieldId: draft.fieldId });\n } else if (step === 'operator') setDraft(null);\n else if (!leaveGroup()) setOpen(false);\n setQuery('');\n }, [step, draft, field, fieldOperators, setDraft, leaveGroup]);\n\n // Selection is routed per step and never kept by Base UI (`value` stays null).\n const handleSelect = (item: Item) => {\n if (step === 'field') selectField(item as FilterBarField);\n else if (step === 'operator' && draft) selectOperator(draft.fieldId, item as FilterBarOperator);\n else valueStep.handleSelect(item as FilterBarOption);\n };\n\n // App-level keys run before Base UI's own input handling.\n const handleKeyDown = (event: BaseUIEvent<KeyboardEvent<HTMLInputElement>>) => {\n if (event.key === 'Escape') {\n event.preventDefault();\n // Consumed here: an enclosing popover (advanced filter) must not close on it.\n event.stopPropagation();\n event.preventBaseUIHandler();\n stepBack();\n return;\n }\n if (!open && (event.key === 'ArrowDown' || event.key === 'Enter')) {\n event.preventDefault();\n event.preventBaseUIHandler();\n setOpen(true);\n return;\n }\n if (query === '') {\n if (event.key === 'Backspace') {\n event.preventDefault();\n event.preventBaseUIHandler();\n if (step !== 'field') stepBack();\n else if (targetGroup) {\n // Inside a group: eat its last chip, or drop the group once it is empty.\n const last = targetGroup.nodes.findLast(node => !ctx.leaving.has(node.id));\n if (last) ctx.removeItem(last.id);\n else leaveGroup();\n } else {\n // Chips still animating out are already gone from the value: skip them.\n const last = ctx.items.findLast(item => !ctx.leaving.has(item.id));\n if (last) ctx.removeItem(last.id);\n }\n return;\n }\n if (event.key === 'ArrowLeft' && step === 'field') {\n if (ctx.focusChip(ctx.items.length - 1, -1, 'remove')) event.preventDefault();\n return;\n }\n }\n if (!open) return;\n\n if (event.key === 'Tab' && highlighted && step !== 'value' && (step === 'operator' || query !== '')) {\n event.preventDefault();\n event.preventBaseUIHandler();\n handleSelect(highlighted);\n return;\n }\n if (step === 'value') {\n const highlightedOption = valueStep.hasSuggestions ? (highlighted as FilterBarOption | null) : null;\n const handled = valueStep.handleKeyDown(event, highlightedOption);\n // Base UI closes on Enter when nothing is highlighted (form submission); the draft must stay open.\n if (handled || (event.key === 'Enter' && highlightedOption === null)) event.preventBaseUIHandler();\n }\n };\n\n const optionsForStep: Record<Step, readonly Item[]> = {\n field: visibleFields,\n operator: fieldOperators,\n value: valueStep.options,\n };\n const items: readonly Item[] = emptyForStepChange ? EMPTY_ITEMS : optionsForStep[step];\n\n // A search field is the way out for text that names no field, so it survives the field\n // step's own filtering whatever was typed; every other item matches on its label.\n const filterItem = useCallback(\n (item: Item, text: string, itemToString?: (item: Item) => string) =>\n ('search' in item && item.search === true) || matchesQueryFilter(item, text, itemToString),\n [],\n );\n\n const searchPlaceholder =\n step === 'field' ? 'Search fields…' : step === 'operator' ? 'Search operators…' : 'Search values…';\n\n const inputPlaceholder =\n step === 'field'\n ? placeholder\n : step === 'operator'\n ? 'Operator…'\n : valueStep.hasSuggestions && valueStep.allowFreeText\n ? 'Search or type a value…'\n : field?.type === 'number'\n ? 'Number…'\n : 'Value…';\n\n return (\n <>\n <ComboboxPrimitive.Root<Item>\n items={items}\n itemToStringLabel={getItemLabel}\n // The value step is already filtered (locally or server-side) by useValueSuggestions.\n filter={step === 'value' ? null : filterItem}\n value={null}\n onValueChange={(item, details) => {\n // Never let Base UI keep the selection, fill the input or close: each step routes it.\n details.cancel();\n if (item) handleSelect(item);\n }}\n inputValue={query}\n onInputValueChange={(next, details) => {\n if (details.reason !== 'input-change') return;\n setQuery(next);\n if (!open) setOpen(true);\n }}\n onItemHighlighted={item => setHighlighted(item ?? null)}\n open={open}\n onOpenChange={(next, details) => {\n // Escape is handled by the input (it steps back rather than closing).\n if (!next && details.reason === 'escape-key') return;\n // The input is the anchor, not a trigger: clicking it must keep the draft open.\n if (\n !next &&\n details.reason === 'outside-press' &&\n details.event.target instanceof Node &&\n inputRef.current?.contains(details.event.target)\n ) {\n return;\n }\n if (next) setOpen(true);\n else close();\n }}\n {...alwaysHighlightProps}\n modal={false}\n >\n <div\n data-slot=\"filter-bar-input-trigger\"\n className={cn(\n // Same trigger recipe as every other DS Combobox (fill, radius, `[&>svg]` icon sizing\n // and the Button icon offset); the bar itself has no chrome. Focus lives on the\n // nested input, so the recipe's `focus-visible` border becomes `focus-within`.\n comboboxTriggerClass({ variant: 'default', size: FILTER_BAR_CONTROL_SIZE }),\n 'w-auto cursor-text',\n 'focus-within:bg-fill-hover',\n inputFocusBorderWithin,\n step === 'field' ? 'min-w-40' : 'min-w-28',\n className,\n )}\n >\n <ListFilterIcon aria-hidden className=\"-ml-[.3em] shrink-0 text-muted-foreground\" />\n <ComboboxPrimitive.Input\n ref={el => {\n inputRef.current = el;\n ctx.registerInput(el);\n }}\n aria-label={ariaLabel}\n spellCheck={false}\n {...passwordManagerOptOutProps}\n data-slot=\"filter-bar-input\"\n data-step={step}\n data-target={targetGroup?.id}\n inputMode={step === 'value' && field?.type === 'number' ? 'decimal' : undefined}\n placeholder={inputPlaceholder}\n className={cn(\n unstyledFormElementStyle,\n 'min-w-0 flex-1 bg-transparent',\n 'placeholder:text-muted-foreground placeholder:transition-opacity placeholder:duration-normal focus:placeholder:opacity-70',\n )}\n onFocus={() => setOpen(true)}\n onKeyDown={handleKeyDown}\n />\n </div>\n <ComboboxPrimitive.Portal container={container}>\n <ComboboxPrimitive.Positioner\n align=\"start\"\n sideOffset={MENU_SIDE_OFFSET}\n positionMethod={FLOATING_POSITION_METHOD}\n className={comboboxStyles.positioner}\n >\n <ComboboxPrimitive.Popup // The input stretches across the bar, so drop the anchor-width floor: size to content.\n className={cn(comboboxStyles.popup, 'min-w-56')}\n data-slot=\"filter-bar-editor\"\n >\n {(step !== 'value' || valueStep.hasSuggestions) && (\n // Search row mirroring the bar input, so the popup reads as a searchable combobox.\n // The bar input stays the only real input: focus and keyboard navigation never move.\n <div\n className={cn(comboboxStyles.searchContainer, 'cursor-text')}\n data-slot=\"filter-bar-search\"\n onMouseDown={e => e.preventDefault()}\n onClick={() => inputRef.current?.focus()}\n >\n <Search className={comboboxStyles.searchIcon} />\n <span\n className={cn(\n comboboxStyles.searchInput,\n 'flex items-center truncate',\n query === '' && comboboxStyles.placeholder,\n )}\n >\n {query === '' ? searchPlaceholder : query}\n </span>\n </div>\n )}\n {step === 'field' && (\n <FilterBarOptionList<FilterBarField>\n aria-label=\"Fields\"\n getKey={f => f.id}\n renderOption={f => (\n <>\n <FilterBarFieldLabel field={f} />\n {f.search && query !== '' && (\n <span className=\"min-w-0 truncate text-muted-foreground\">\n {ctx.getFieldOperators(f)[0]?.label} \"{query}\"\n </span>\n )}\n </>\n )}\n emptyText=\"No matching field.\"\n />\n )}\n {step === 'operator' && (\n <FilterBarOptionList<FilterBarOperator>\n aria-label=\"Operators\"\n getKey={o => o.id}\n renderOption={o => o.label}\n emptyText=\"No matching operator.\"\n />\n )}\n {step === 'value' && valueStep.hasOptions && (\n <FilterBarOptionList<FilterBarOption>\n aria-label=\"Values\"\n aria-multiselectable={valueStep.isMany || undefined}\n getKey={o => o.value}\n renderOption={option => <FilterBarOptionLabel option={option} />}\n isSelected={o => valueStep.isMany && valueStep.selected.includes(o.value)}\n isLoading={valueStep.isLoading}\n error={valueStep.error}\n emptyText={\n valueStep.allowFreeText ? 'No suggestions — press Enter to use your text.' : 'No matching value.'\n }\n />\n )}\n {step === 'value' && !valueStep.hasSuggestions && (\n <div className=\"flex items-center justify-between gap-2 py-1 pr-1 pl-[.9em]\">\n <Txt variant=\"caption\" tone=\"muted\">\n Type a value\n </Txt>\n <Button\n size=\"sm\"\n variant=\"default\"\n disabled={!valueStep.canCommitQuery}\n onMouseDown={e => e.preventDefault()}\n onClick={() => valueStep.submitFreeText()}\n >\n Apply\n <Kbd size=\"xs\">↵</Kbd>\n </Button>\n </div>\n )}\n {step === 'value' && valueStep.isMany && (\n <div className=\"flex items-center justify-end gap-1 border-t border-border p-1\">\n <Button\n size=\"sm\"\n variant=\"default\"\n onMouseDown={e => e.preventDefault()}\n onClick={() => valueStep.commitDone()}\n >\n Done\n <Kbd size=\"xs\">{modEnterLabel}</Kbd>\n </Button>\n </div>\n )}\n </ComboboxPrimitive.Popup>\n </ComboboxPrimitive.Positioner>\n </ComboboxPrimitive.Portal>\n </ComboboxPrimitive.Root>\n </>\n );\n}\n","import { useEffect } from 'react';\nimport { useFilterBarContext } from './filter-bar-context';\n\n/** Keeps a leaving node in the DOM until its exit animation has played, then releases it. */\nexport function useSettleOnLeave(id: string, leaving: boolean, rootRef: React.RefObject<HTMLElement | null>) {\n const { settleRemove } = useFilterBarContext();\n useEffect(() => {\n const root = rootRef.current;\n if (!leaving || !root) return;\n const animations = typeof root.getAnimations === 'function' ? root.getAnimations({ subtree: true }) : [];\n if (animations.length === 0) {\n settleRemove(id);\n return;\n }\n let cancelled = false;\n Promise.all(animations.map(animation => animation.finished))\n .then(() => {\n if (!cancelled) settleRemove(id);\n })\n .catch(() => {});\n return () => {\n cancelled = true;\n };\n }, [leaving, id, settleRemove, rootRef]);\n}\n","import { FolderIcon, FolderPlusIcon, PlusIcon, Trash2Icon } from 'lucide-react';\nimport { Fragment, useEffect, useRef } from 'react';\nimport type { ReactNode } from 'react';\nimport { FilterBarChip } from './filter-bar-chip';\nimport { useFilterBarContext } from './filter-bar-context';\nimport { FilterBarInput } from './filter-bar-input';\nimport { countLeaves } from './filter-bar-tree';\nimport type { FilterBarGroup, FilterBarLogic } from './types';\nimport { isFilterBarGroup } from './types';\nimport { useSettleOnLeave } from './use-settle-on-leave';\nimport { Button } from '@/ds/components/Button/Button';\nimport { Txt } from '@/ds/components/Txt';\nimport { cn } from '@/lib/utils';\n\nconst connectorClass =\n 'flex h-control-sm w-14 shrink-0 items-center justify-center rounded-md text-column tracking-wide text-muted-foreground uppercase';\n\nexport type FilterBarLogicToggleProps = {\n groupId: string;\n logic: FilterBarLogic;\n className?: string;\n};\n\n/** `and` / `or` connector in front of a row; every connector of a group shares its logic. */\nexport function FilterBarLogicToggle({ groupId, logic, className }: FilterBarLogicToggleProps) {\n const ctx = useFilterBarContext();\n const next: FilterBarLogic = logic === 'and' ? 'or' : 'and';\n return (\n <button\n type=\"button\"\n data-slot=\"filter-bar-logic\"\n data-logic={logic}\n aria-label={`Joined with ${logic}, switch to ${next}`}\n title={`Switch to ${next}`}\n className={cn(\n connectorClass,\n 'filter-bar-logic cursor-pointer border border-border bg-fill-subtle outline-none',\n 'hover:bg-fill-hover hover:text-foreground focus-visible:bg-fill-hover focus-visible:text-foreground',\n className,\n )}\n onClick={() => ctx.setLogic(groupId, next)}\n >\n {logic}\n </button>\n );\n}\n\n/** Segmented `and | or` control shown in a nested group's header. */\nfunction FilterBarLogicSwitch({ groupId, logic }: { groupId: string; logic: FilterBarLogic }) {\n const ctx = useFilterBarContext();\n return (\n <div\n role=\"radiogroup\"\n aria-label=\"Group logic\"\n className=\"flex h-control-sm items-center gap-0.5 rounded-md border border-border bg-fill-subtle p-0.5\"\n >\n {(['and', 'or'] as const).map(value => (\n <button\n key={value}\n type=\"button\"\n role=\"radio\"\n aria-checked={logic === value}\n aria-label={`Join with ${value}`}\n className={cn(\n 'h-full cursor-pointer rounded-sm px-1.5 text-column tracking-wide uppercase outline-none',\n 'focus-visible:bg-fill-hover',\n logic === value ? 'bg-fill-hover text-foreground' : 'text-muted-foreground hover:text-foreground',\n )}\n onClick={() => logic !== value && ctx.setLogic(groupId, value)}\n >\n {value}\n </button>\n ))}\n </div>\n );\n}\n\nexport type FilterBarGroupEditorProps = {\n group: FilterBarGroup;\n /** Nesting level of `group` (root-level group = 1). */\n depth: number;\n /** Drops this group; rendered as a trailing `Clear all` in the footer. */\n onRemove?: () => void;\n removeLabel?: string;\n className?: string;\n};\n\n/**\n * Recursive rule builder shown in an advanced-filter popover. Rows are laid out as\n * `connector | condition`: the first row reads `where`, the following ones carry the\n * group's `and` / `or` toggle. Nested groups render as bordered cards with their own\n * header (logic switch + remove) and footer. The shared typeahead input renders as the\n * last row of the group it is pointed at.\n */\nexport function FilterBarGroupEditor({\n group,\n depth,\n onRemove,\n removeLabel = 'Remove group',\n className,\n}: FilterBarGroupEditorProps) {\n const ctx = useFilterBarContext();\n const addFilterRef = useRef<HTMLButtonElement>(null);\n const focusAddFilter = useRef(false);\n const targeted = ctx.inputTarget === group.id;\n const canNest = depth < ctx.maxDepth;\n\n // `+ Condition` is hidden while the input is open; focus it once it remounts.\n useEffect(() => {\n if (targeted || !focusAddFilter.current) return;\n focusAddFilter.current = false;\n addFilterRef.current?.focus();\n }, [targeted]);\n\n const rows: ReactNode[] = [];\n const connector = (key: string) =>\n rows.length === 0 ? (\n <span key={`${key}:where`} className={connectorClass}>\n where\n </span>\n ) : (\n <FilterBarLogicToggle key={`${key}:logic`} groupId={group.id} logic={group.logic} />\n );\n for (const node of group.nodes) {\n rows.push(\n <Fragment key={node.id}>\n {connector(node.id)}\n {isFilterBarGroup(node) ? (\n <NestedGroupCard group={node} depth={depth + 1} />\n ) : (\n <FilterBarChip item={node} className=\"w-fit\" />\n )}\n </Fragment>,\n );\n }\n if (ctx.draft && ctx.draft.groupId === group.id) {\n const { id, fieldId, operatorId = '' } = ctx.draft;\n rows.push(\n <Fragment key={id}>\n {connector(id)}\n <FilterBarChip draft item={{ id, fieldId, operatorId, value: '' }} className=\"w-fit\" />\n </Fragment>,\n );\n }\n if (targeted) {\n rows.push(\n <Fragment key=\"input\">\n {connector('input')}\n <FilterBarInput\n groupId={group.id}\n placeholder=\"Add condition…\"\n onLeave={() => {\n focusAddFilter.current = true;\n }}\n />\n </Fragment>,\n );\n }\n\n return (\n <div\n data-slot=\"filter-bar-group-editor\"\n data-depth={depth}\n role=\"group\"\n aria-label={`Conditions joined with ${group.logic}`}\n className={cn('flex min-w-0 flex-col', className)}\n >\n {rows.length > 0 && (\n <div className=\"grid grid-cols-[auto_minmax(0,1fr)] items-start gap-x-2 gap-y-1.5 p-2\">{rows}</div>\n )}\n <div\n data-slot=\"filter-bar-editor-actions\"\n className={cn('flex w-full items-center gap-1 p-1', rows.length > 0 && 'border-t border-border')}\n >\n {!targeted && (\n <Button\n ref={addFilterRef}\n variant=\"ghost\"\n size=\"sm\"\n icon={<PlusIcon />}\n onClick={() => ctx.openGroupInput(group.id)}\n >\n Condition\n </Button>\n )}\n <Button\n variant=\"ghost\"\n size=\"sm\"\n icon={<FolderPlusIcon />}\n className=\"text-muted-foreground\"\n tooltip={canNest ? undefined : `Groups can nest ${ctx.maxDepth} levels deep`}\n disabled={!canNest}\n onClick={() => ctx.addGroup(group.id, group.logic === 'and' ? 'or' : 'and')}\n >\n Group\n </Button>\n {onRemove && (\n <Button\n variant=\"ghost\"\n size=\"sm\"\n icon={<Trash2Icon />}\n className=\"ml-auto text-muted-foreground\"\n aria-label={removeLabel}\n onClick={onRemove}\n >\n Clear all\n </Button>\n )}\n </div>\n </div>\n );\n}\n\nfunction NestedGroupCard({ group, depth }: { group: FilterBarGroup; depth: number }) {\n const ctx = useFilterBarContext();\n const rootRef = useRef<HTMLDivElement>(null);\n const leaving = ctx.leaving.has(group.id);\n useSettleOnLeave(group.id, leaving, rootRef);\n const count = countLeaves(group);\n\n return (\n <div\n ref={rootRef}\n data-slot=\"filter-bar-editor-nested\"\n data-leaving={leaving || undefined}\n aria-hidden={leaving || undefined}\n className={cn(\n 'filter-bar-editor-nested w-full overflow-hidden rounded-lg border border-border',\n leaving && 'pointer-events-none',\n )}\n >\n <div className=\"flex items-center gap-2 border-b border-border px-2 py-1\">\n <FolderIcon className=\"size-3.5 text-muted-foreground\" />\n <Txt as=\"span\" variant=\"label\" tone=\"ink\">\n Group\n </Txt>\n <Txt as=\"span\" variant=\"label\" tone=\"muted\">\n · {count} {count === 1 ? 'condition' : 'conditions'}\n </Txt>\n <div className=\"ml-auto flex items-center gap-1\">\n <FilterBarLogicSwitch groupId={group.id} logic={group.logic} />\n <Button\n variant=\"ghost\"\n size=\"icon-sm\"\n tooltip=\"Remove group\"\n disabled={leaving}\n onClick={() => ctx.removeGroup(group.id)}\n >\n <Trash2Icon />\n </Button>\n </div>\n </div>\n <FilterBarGroupEditor group={group} depth={depth} />\n </div>\n );\n}\n","import { BracesIcon, XIcon } from 'lucide-react';\nimport { useRef } from 'react';\nimport type { KeyboardEvent } from 'react';\nimport { chipClass, editableSegmentClass } from './filter-bar-chip';\nimport { FILTER_BAR_SCOPE_ATTR, useFilterBarContext } from './filter-bar-context';\nimport { FilterBarGroupEditor } from './filter-bar-group-editor';\nimport { countLeaves } from './filter-bar-tree';\nimport type { FilterBarGroup } from './types';\nimport { useSettleOnLeave } from './use-settle-on-leave';\nimport { Button } from '@/ds/components/Button/Button';\nimport { Popover, PopoverContent, PopoverTrigger } from '@/ds/components/Popover';\nimport { Txt } from '@/ds/components/Txt';\nimport { cn } from '@/lib/utils';\n\nexport type FilterBarAdvancedChipProps = {\n group: FilterBarGroup;\n className?: string;\n};\n\n/**\n * A root-level group rendered as one \"Advanced filter\" chip. Its popover hosts the\n * recursive rule builder; the chip's remove button drops the whole subtree.\n */\nexport function FilterBarAdvancedChip({ group, className }: FilterBarAdvancedChipProps) {\n const ctx = useFilterBarContext();\n const rootRef = useRef<HTMLDivElement>(null);\n const triggerRef = useRef<HTMLButtonElement>(null);\n const leaving = ctx.leaving.has(group.id);\n const open = ctx.openGroupId === group.id;\n const count = countLeaves(group);\n // Position in the flattened item list: navigation from the chip continues from its first leaf.\n const firstLeafIndex = ctx.items.findIndex(item => isUnder(group, item.id));\n const index = firstLeafIndex === -1 ? ctx.items.length : firstLeafIndex;\n useSettleOnLeave(group.id, leaving, rootRef);\n\n const handleKeyDown = (event: KeyboardEvent<HTMLDivElement>) => {\n if (leaving) return;\n const segments = Array.from(rootRef.current?.querySelectorAll<HTMLElement>('[data-filter-bar-segment]') ?? []);\n const current = segments.findIndex(el => el === event.target);\n if (current === -1) return;\n switch (event.key) {\n case 'ArrowRight': {\n event.preventDefault();\n const next = segments[current + 1];\n if (next) next.focus();\n else if (!ctx.focusChip(index + count, 1, 'field')) ctx.focusInput();\n return;\n }\n case 'ArrowLeft': {\n event.preventDefault();\n const prev = segments[current - 1];\n if (prev) prev.focus();\n else ctx.focusChip(index - 1, -1, 'remove');\n return;\n }\n case 'Delete':\n case 'Backspace':\n event.preventDefault();\n remove();\n return;\n default:\n }\n };\n\n const remove = () => {\n ctx.removeGroup(group.id);\n ctx.focusAfterRemove(index);\n };\n\n return (\n <Popover open={open} onOpenChange={next => ctx.setOpenGroup(next ? group.id : null)}>\n <div\n ref={rootRef}\n role=\"group\"\n aria-label={`Advanced filter, ${count} ${count === 1 ? 'condition' : 'conditions'}`}\n aria-hidden={leaving || undefined}\n data-slot=\"filter-bar-advanced\"\n data-leaving={leaving || undefined}\n className={cn('filter-bar-advanced', chipClass, leaving && 'pointer-events-none', className)}\n onKeyDown={handleKeyDown}\n >\n <PopoverTrigger\n ref={el => {\n triggerRef.current = el;\n ctx.registerSegment(group.id, 'field', leaving ? null : el);\n }}\n render={<button type=\"button\" />}\n data-filter-bar-segment=\"field\"\n className={cn(editableSegmentClass, 'gap-1.5')}\n title=\"Edit advanced filter\"\n >\n <BracesIcon className=\"size-[1.1em] shrink-0\" aria-hidden />\n <span className=\"truncate\">Advanced filter</span>\n {count > 0 && (\n <Txt as=\"span\" variant=\"column\" tone=\"muted\" aria-hidden>\n {count}\n </Txt>\n )}\n </PopoverTrigger>\n {leaving ? (\n <span aria-hidden className={cn(editableSegmentClass, 'px-1.5')}>\n <XIcon className=\"size-[1.1em]\" />\n </span>\n ) : (\n <button\n type=\"button\"\n ref={el => ctx.registerSegment(group.id, 'remove', el)}\n data-filter-bar-segment=\"remove\"\n aria-label=\"Remove advanced filter\"\n title=\"Remove advanced filter\"\n className={cn(editableSegmentClass, 'px-1.5')}\n onClick={remove}\n >\n <XIcon className=\"size-[1.1em]\" />\n </button>\n )}\n </div>\n <PopoverContent\n align=\"start\"\n className=\"w-[min(92vw,44rem)] p-0\"\n {...{ [FILTER_BAR_SCOPE_ATTR]: 'advanced' }}\n finalFocus={triggerRef}\n >\n <div className=\"flex items-center gap-2 border-b border-border px-3 py-2\">\n <BracesIcon className=\"size-3.5 text-muted-foreground\" />\n <Txt as=\"span\" variant=\"label\" tone=\"ink\">\n Advanced filter\n </Txt>\n <Txt as=\"span\" variant=\"column\" tone=\"muted\" className=\"rounded-md bg-fill-subtle px-1.5\">\n {count}\n </Txt>\n <Button\n variant=\"ghost\"\n size=\"icon-sm\"\n className=\"ml-auto\"\n tooltip=\"Close\"\n onClick={() => ctx.setOpenGroup(null)}\n >\n <XIcon />\n </Button>\n </div>\n <FilterBarGroupEditor\n group={group}\n depth={1}\n removeLabel=\"Remove advanced filter\"\n onRemove={() => {\n ctx.setOpenGroup(null);\n remove();\n }}\n />\n </PopoverContent>\n </Popover>\n );\n}\n\nconst isUnder = (group: FilterBarGroup, itemId: string): boolean =>\n group.nodes.some(node => (node.id === itemId ? true : 'kind' in node && isUnder(node, itemId)));\n","import { XIcon } from 'lucide-react';\nimport { useFilterBarContext } from './filter-bar-context';\nimport { Button } from '@/ds/components/Button/Button';\n\n/** Removes every removable filter. Rendered by FilterBar at its trailing edge; hidden while nothing can be removed. */\nexport function FilterBarClear({ label }: { label: string }) {\n const ctx = useFilterBarContext();\n if (!ctx.hasRemovableItems) return null;\n return (\n <Button\n variant=\"ghost\"\n size=\"icon-sm\"\n aria-label={label}\n tooltip={label}\n onClick={event => {\n event.stopPropagation();\n ctx.clear();\n ctx.focusInput();\n }}\n >\n <XIcon />\n </Button>\n );\n}\n","import { Fragment } from 'react';\nimport type { ReactNode } from 'react';\nimport { FilterBarAdvancedChip } from './filter-bar-advanced-chip';\nimport { FilterBarChip } from './filter-bar-chip';\nimport { FilterBarClear } from './filter-bar-clear';\nimport { FILTER_BAR_SCOPE_ATTR, FilterBarProvider, useFilterBarContext } from './filter-bar-context';\nimport { FilterBarInput } from './filter-bar-input';\nimport { isFilterBarGroup } from './types';\nimport type { FilterBarExpression, FilterBarField, FilterBarItem, FilterBarOperator } from './types';\nimport { VisuallyHidden } from '@/ds/primitives/visually-hidden';\nimport { cn } from '@/lib/utils';\n\ntype FilterBarValueProps =\n | {\n /** Flat list of filters, implicitly joined with `and`. Advanced filters are never offered. */\n value: FilterBarItem[];\n onValueChange: (items: FilterBarItem[]) => void;\n }\n | {\n /**\n * Tree of filters and groups. Root nodes are joined with `and`; each root group renders\n * as one \"Advanced filter\" chip whose popover edits the nested `and` / `or` logic.\n */\n value: FilterBarExpression;\n onValueChange: (expression: FilterBarExpression) => void;\n };\n\nexport type FilterBarProps = FilterBarValueProps & {\n fields: FilterBarField[];\n operators: FilterBarOperator[];\n /**\n * Id given to a newly added item. Defaults to a random id. Consumers that rebuild `value` from\n * their own store (URL, query params…) should return the id they will rebuild it with, so the\n * draft chip and the committed chip are the same element.\n */\n createItemId?: (fieldId: string) => string;\n /** How deep advanced-filter groups may nest (root-level group = 1). Defaults to 3. */\n maxDepth?: number;\n 'aria-label'?: string;\n /**\n * Text shown in a value list when the field's `suggestions` resolver rejects, for example\n * to explain a server limit. Return `undefined` to keep the default \"Couldn't load values.\".\n */\n describeSuggestionsError?: (error: unknown) => string | undefined;\n /** Accessible label of the trailing \"remove every filter\" button. */\n clearLabel?: string;\n className?: string;\n children: ReactNode;\n};\n\nfunction FilterBarSurface({\n className,\n clearLabel,\n children,\n}: {\n className?: string;\n clearLabel: string;\n children: ReactNode;\n}) {\n const ctx = useFilterBarContext();\n return (\n <div\n role=\"group\"\n aria-label={ctx.ariaLabel}\n data-slot=\"filter-bar\"\n {...{ [FILTER_BAR_SCOPE_ATTR]: 'bar' }}\n className={cn(\n // No chrome of its own: chips and the typeahead input sit directly on the parent surface.\n // Layout: chips, input, then Clear right beside the input — all in one wrapping row so\n // Clear never drifts to the far edge of a wide container.\n 'flex w-full flex-wrap items-center gap-1',\n className,\n )}\n >\n {children}\n <span className=\"flex shrink-0 items-center empty:hidden\">\n <FilterBarClear label={clearLabel} />\n </span>\n <VisuallyHidden aria-live=\"polite\">{ctx.announcement}</VisuallyHidden>\n </div>\n );\n}\n\n/**\n * Braintrust-style filter bar: `field → operator → value` filters built from a\n * single typeahead input, rendered as inline editable chips. Domain-agnostic —\n * fields, operators and values are plain strings supplied by the consumer.\n *\n * Pass a `FilterBarExpression` as `value` to enable Linear-style advanced filters:\n * the input offers \"Advanced filter…\", which adds one chip whose popover hosts a\n * recursive rule builder (`and` / `or` connectors, nested groups). The bar itself\n * stays flat. A flat `FilterBarItem[]` stays flat.\n *\n * @example\n * <FilterBar value={items} onValueChange={setItems} fields={fields} operators={DEFAULT_FILTER_OPERATORS}>\n * <FilterBar.Chips />\n * <FilterBar.Input />\n * </FilterBar>\n */\nexport function FilterBar({\n fields,\n operators,\n value,\n onValueChange,\n createItemId,\n maxDepth,\n 'aria-label': ariaLabel = 'Filters',\n describeSuggestionsError,\n clearLabel = 'Clear filters',\n className,\n children,\n}: FilterBarProps) {\n return (\n <FilterBarProvider\n fields={fields}\n operators={operators}\n value={value}\n onValueChange={onValueChange}\n createItemId={createItemId}\n maxDepth={maxDepth}\n ariaLabel={ariaLabel}\n describeSuggestionsError={describeSuggestionsError}\n >\n <FilterBarSurface className={className} clearLabel={clearLabel}>\n {children}\n </FilterBarSurface>\n </FilterBarProvider>\n );\n}\n\n/**\n * Default layout: one editable chip per root item, one \"Advanced filter\" chip per root\n * group, in order, then the chip of the filter being built in the bar's input (which\n * becomes the last item's chip once committed).\n */\nexport function FilterBarChips({ renderChip = defaultRenderChip }: FilterBarChipsProps) {\n const ctx = useFilterBarContext();\n // One keyed array: the draft chip and the item it becomes share a key, so React\n // keeps the element across the commit instead of mounting a new chip.\n const chips: ReactNode[] = [];\n for (const node of ctx.expression.nodes) {\n const chip = isFilterBarGroup(node) ? <FilterBarAdvancedChip group={node} /> : renderChip(node);\n if (chip !== null) chips.push(<Fragment key={node.id}>{chip}</Fragment>);\n }\n if (ctx.draft && !ctx.draft.groupId) {\n // `FilterBarChip` needs a full item; the draft's missing parts are blank until picked.\n const { id, fieldId, operatorId = '' } = ctx.draft;\n chips.push(\n <Fragment key={id}>\n <FilterBarChip draft item={{ id, fieldId, operatorId, value: '' }} />\n </Fragment>,\n );\n }\n return <>{chips}</>;\n}\n\nexport type FilterBarChipsProps = {\n /**\n * Chip for an item; return `null` to render none (e.g. an item only held in the\n * value for scoping). Defaults to a plain editable `FilterBar.Chip`.\n */\n renderChip?: (item: FilterBarItem) => ReactNode;\n};\n\nconst defaultRenderChip = (item: FilterBarItem) => <FilterBarChip item={item} />;\n\nFilterBar.Chips = FilterBarChips;\nFilterBar.Chip = FilterBarChip;\nFilterBar.AdvancedChip = FilterBarAdvancedChip;\nFilterBar.Input = FilterBarInput;\n","import type { FilterBarOperator } from './types';\n\n/** Opt-in starter set. Pure data: the component attaches no semantics to ids. */\nexport const DEFAULT_FILTER_OPERATORS: FilterBarOperator[] = [\n { id: 'is', label: 'is', widensTo: 'in' },\n { id: 'is-not', label: 'is not' },\n { id: 'contains', label: 'contains' },\n { id: 'not-contains', label: 'does not contain' },\n { id: 'starts-with', label: 'starts with' },\n { id: 'gt', label: '>' },\n { id: 'lt', label: '<' },\n { id: 'gte', label: '>=' },\n { id: 'lte', label: '<=' },\n { id: 'is-empty', label: 'is empty', arity: 'none' },\n { id: 'is-not-empty', label: 'is not empty', arity: 'none' },\n { id: 'in', label: 'in', arity: 'many' },\n];\n"],"names":["ComboboxPrimitive","Fragment"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"FilterBar.es.js","sources":["../../src/ds/components/FilterBar/filter-bar-input.tsx","../../src/ds/components/FilterBar/use-settle-on-leave.ts","../../src/ds/components/FilterBar/filter-bar-group-editor.tsx","../../src/ds/components/FilterBar/filter-bar-advanced-chip.tsx","../../src/ds/components/FilterBar/filter-bar-clear.tsx","../../src/ds/components/FilterBar/filter-bar.tsx","../../src/ds/components/FilterBar/default-operators.ts"],"sourcesContent":["import type { BaseUIEvent } from '@base-ui/react/types';\nimport { BracesIcon, ListFilterIcon } from 'lucide-react';\nimport { useCallback, useEffect, useMemo, useRef, useState } from 'react';\nimport type { KeyboardEvent } from 'react';\nimport { flushSync } from 'react-dom';\nimport { FILTER_BAR_CONTROL_SIZE, FilterBarFieldLabel, alwaysHighlightProps } from './filter-bar-chip';\nimport { useFilterBarContext } from './filter-bar-context';\nimport { FilterBarOptionLabel, FilterBarOptionList } from './filter-bar-option-list';\nimport { findGroup } from './filter-bar-tree';\nimport { matchesQueryFilter } from './match-query';\nimport type { FilterBarDraft, FilterBarField, FilterBarOperator, FilterBarOption, FilterBarValue } from './types';\nimport { parseFieldValue } from './types';\nimport { useValueStep } from './use-value-step';\nimport { Button } from '@/ds/components/Button/Button';\nimport { ComboboxPrimitive, comboboxStyles } from '@/ds/components/Combobox';\nimport { comboboxTriggerClass } from '@/ds/components/Combobox/combobox-styles';\nimport { Kbd } from '@/ds/components/Kbd/kbd';\nimport { Txt } from '@/ds/components/Txt';\nimport { FLOATING_POSITION_METHOD } from '@/ds/primitives/floating';\nimport { inputFocusBorderWithin, unstyledFormElementStyle } from '@/ds/primitives/form-element';\nimport { MENU_SIDE_OFFSET } from '@/ds/primitives/menu-item';\nimport { passwordManagerOptOutProps } from '@/ds/primitives/password-manager-autofill';\nimport { usePortalContainer } from '@/ds/primitives/portal-container';\nimport { useIsApplePlatform } from '@/hooks/use-keyboard-shortcut-label';\nimport { cn } from '@/lib/utils';\n\ntype Step = 'field' | 'operator' | 'value';\n\ntype Item = FilterBarField | FilterBarOperator | FilterBarOption;\n\nconst getItemLabel = (item: Item) => ('label' in item && item.label ? item.label : 'value' in item ? item.value : '');\n\nconst EMPTY_ITEMS: readonly Item[] = [];\n/** Pinned last entry of the field list that spawns an advanced filter (an `or` group) instead of a filter. */\nconst ADVANCED_FIELD_ID = '__filter-bar-advanced__';\nconst ADVANCED_FIELD: FilterBarField = {\n id: ADVANCED_FIELD_ID,\n label: 'Advanced filter…',\n icon: BracesIcon,\n operators: [],\n};\n\nexport type FilterBarInputProps = {\n placeholder?: string;\n className?: string;\n 'aria-label'?: string;\n /**\n * Group this instance commits into; omit for the bar's own input. Only the instance whose\n * `groupId` matches the provider's `inputTarget` renders, so a single input is ever mounted.\n */\n groupId?: string;\n /** Called when Escape is pressed on an empty query inside a group, after the input hands back to the bar. */\n onLeave?: () => void;\n};\n\n/**\n * Typeahead entry point: type to pick a field, then an operator, then a value.\n * Focus never leaves the input; the popup is driven with the arrow keys.\n */\nexport function FilterBarInput(props: FilterBarInputProps) {\n const ctx = useFilterBarContext();\n if (ctx.inputTarget !== props.groupId) return null;\n return <FilterBarInputImpl {...props} />;\n}\n\nfunction FilterBarInputImpl({\n placeholder = 'Filter…',\n className,\n 'aria-label': ariaLabel = 'Add filter',\n groupId,\n onLeave,\n}: FilterBarInputProps) {\n const ctx = useFilterBarContext();\n const container = usePortalContainer();\n const inputRef = useRef<HTMLInputElement | null>(null);\n const anchorRef = useRef<HTMLDivElement>(null);\n const [open, setOpen] = useState(false);\n const [query, setQuery] = useState('');\n const [highlighted, setHighlighted] = useState<Item | null>(null);\n const [emptyForStepChange, setEmptyForStepChange] = useState(false);\n const modEnterLabel = useIsApplePlatform() ? '⌘↵' : 'Ctrl ↵';\n\n // The draft lives in the provider so the chip list can render it; the step follows from it.\n const { draft, setDraft: setDraftState, commitDraft } = ctx;\n const step: Step = !draft ? 'field' : !draft.operatorId ? 'operator' : 'value';\n const field = draft ? ctx.getField(draft.fieldId) : undefined;\n const operator = draft?.operatorId ? ctx.getOperator(draft.operatorId) : undefined;\n const fieldOperators = useMemo(() => (field ? ctx.getFieldOperators(field) : []), [ctx, field]);\n // The advanced option lives in the bar only; inside a popover, nesting is the editor's `+ Group`.\n const offerAdvanced = ctx.groupsEnabled && groupId === undefined;\n const visibleFields = useMemo(() => {\n const fields = ctx.fields.filter(f => !f.hidden);\n return offerAdvanced ? [...fields, ADVANCED_FIELD] : fields;\n }, [ctx.fields, offerAdvanced]);\n const targetGroup = groupId ? findGroup(ctx.expression, groupId) : undefined;\n\n // A group's input mounts on demand (see `openGroupInput`) and takes focus itself.\n useEffect(() => {\n if (groupId) inputRef.current?.focus();\n }, [groupId]);\n\n // Base UI owns the highlight index and keeps it when the list content changes, so a row\n // reached with ArrowDown would carry over into the step that follows. An empty list committed\n // first drops that index, and `autoHighlight` re-anchors on the first row of the new step.\n const withHighlightReset = useCallback((change: () => void) => {\n flushSync(() => setEmptyForStepChange(true));\n change();\n setEmptyForStepChange(false);\n }, []);\n\n const setDraft = useCallback(\n (next: Omit<FilterBarDraft, 'id' | 'from'> | null) => withHighlightReset(() => setDraftState(next)),\n [withHighlightReset, setDraftState],\n );\n\n const reset = useCallback(() => {\n setDraftState(null);\n setQuery('');\n }, [setDraftState]);\n\n const close = useCallback(() => {\n setOpen(false);\n reset();\n }, [reset]);\n\n const commit = useCallback(\n (fieldId: string, operatorId: string, value: FilterBarValue) => {\n withHighlightReset(() => commitDraft({ fieldId, operatorId }, value));\n setQuery('');\n inputRef.current?.focus();\n },\n [withHighlightReset, commitDraft],\n );\n\n const selectOperator = useCallback(\n (fieldId: string, next: FilterBarOperator) => {\n if (next.arity === 'none') {\n commit(fieldId, next.id, '');\n return;\n }\n setDraft({ fieldId, operatorId: next.id });\n setQuery('');\n },\n [commit, setDraft],\n );\n\n const selectField = useCallback(\n (next: FilterBarField) => {\n if (next.id === ADVANCED_FIELD_ID) {\n // `or` is the useful default: an `and` group is indistinguishable from the root.\n const id = ctx.addGroup(undefined, 'or');\n ctx.setOpenGroup(id);\n ctx.openGroupInput(id);\n setQuery('');\n setOpen(false);\n return;\n }\n const [only, ...rest] = ctx.getFieldOperators(next);\n // Free-text entry with text already typed: that text is the value, so neither the\n // operator nor the value step has anything left to ask.\n if (next.search && only && query.trim() !== '') {\n commit(next.id, only.id, parseFieldValue(next.type, query));\n return;\n }\n // A single allowed operator is implied: skip straight to the value step.\n if (only && rest.length === 0) {\n selectOperator(next.id, only);\n return;\n }\n setDraft({ fieldId: next.id });\n setQuery('');\n },\n [ctx, commit, query, selectOperator, setDraft],\n );\n\n const valueStep = useValueStep({\n field,\n operator,\n query,\n enabled: open && step === 'value',\n setQuery,\n onCommit: value => {\n if (draft?.operatorId) commit(draft.fieldId, draft.operatorId, value);\n },\n });\n\n // Leaving a group's input hands the target back to the bar; empty groups are pruned when the\n // popover closes, never here.\n const leaveGroup = useCallback(() => {\n if (!groupId) return false;\n ctx.openGroupInput(undefined);\n onLeave?.();\n return true;\n }, [ctx, groupId, onLeave]);\n\n const stepBack = useCallback(() => {\n if (step === 'value' && draft) {\n // Back to the field step when the operator was implied (single operator).\n const skipOperator = field ? fieldOperators.length === 1 : false;\n setDraft(skipOperator ? null : { fieldId: draft.fieldId });\n } else if (step === 'operator') setDraft(null);\n else if (!leaveGroup()) setOpen(false);\n setQuery('');\n }, [step, draft, field, fieldOperators, setDraft, leaveGroup]);\n\n // Selection is routed per step and never kept by Base UI (`value` stays null).\n const handleSelect = (item: Item) => {\n if (step === 'field') selectField(item as FilterBarField);\n else if (step === 'operator' && draft) selectOperator(draft.fieldId, item as FilterBarOperator);\n else valueStep.handleSelect(item as FilterBarOption);\n };\n\n // App-level keys run before Base UI's own input handling.\n const handleKeyDown = (event: BaseUIEvent<KeyboardEvent<HTMLInputElement>>) => {\n if (event.key === 'Escape') {\n event.preventDefault();\n // Consumed here: an enclosing popover (advanced filter) must not close on it.\n event.stopPropagation();\n event.preventBaseUIHandler();\n stepBack();\n return;\n }\n if (!open && (event.key === 'ArrowDown' || event.key === 'Enter')) {\n event.preventDefault();\n event.preventBaseUIHandler();\n setOpen(true);\n return;\n }\n if (query === '') {\n if (event.key === 'Backspace') {\n event.preventDefault();\n event.preventBaseUIHandler();\n if (step !== 'field') stepBack();\n else if (targetGroup) {\n // Inside a group: eat its last chip, or drop the group once it is empty.\n const last = targetGroup.nodes.findLast(node => !ctx.leaving.has(node.id));\n if (last) ctx.removeItem(last.id);\n else leaveGroup();\n } else {\n // Chips still animating out are already gone from the value: skip them.\n const last = ctx.items.findLast(item => !ctx.leaving.has(item.id));\n if (last) ctx.removeItem(last.id);\n }\n return;\n }\n if (event.key === 'ArrowLeft' && step === 'field') {\n if (ctx.focusChip(ctx.items.length - 1, -1, 'remove')) event.preventDefault();\n return;\n }\n }\n if (!open) return;\n\n if (event.key === 'Tab' && highlighted && step !== 'value' && (step === 'operator' || query !== '')) {\n event.preventDefault();\n event.preventBaseUIHandler();\n handleSelect(highlighted);\n return;\n }\n if (step === 'value') {\n const highlightedOption = valueStep.hasSuggestions ? (highlighted as FilterBarOption | null) : null;\n const handled = valueStep.handleKeyDown(event, highlightedOption);\n // Base UI closes on Enter when nothing is highlighted (form submission); the draft must stay open.\n if (handled || (event.key === 'Enter' && highlightedOption === null)) event.preventBaseUIHandler();\n }\n };\n\n const optionsForStep: Record<Step, readonly Item[]> = {\n field: visibleFields,\n operator: fieldOperators,\n value: valueStep.options,\n };\n const items: readonly Item[] = emptyForStepChange ? EMPTY_ITEMS : optionsForStep[step];\n\n // A search field is the way out for text that names no field, so it survives the field\n // step's own filtering whatever was typed; every other item matches on its label.\n const filterItem = useCallback(\n (item: Item, text: string, itemToString?: (item: Item) => string) =>\n ('search' in item && item.search === true) || matchesQueryFilter(item, text, itemToString),\n [],\n );\n\n const inputPlaceholder =\n step === 'field'\n ? placeholder\n : step === 'operator'\n ? 'Operator…'\n : valueStep.hasSuggestions && valueStep.allowFreeText\n ? 'Search or type a value…'\n : field?.type === 'number'\n ? 'Number…'\n : 'Value…';\n\n return (\n <>\n <ComboboxPrimitive.Root<Item>\n items={items}\n itemToStringLabel={getItemLabel}\n // The value step is already filtered (locally or server-side) by useValueSuggestions.\n filter={step === 'value' ? null : filterItem}\n value={null}\n onValueChange={(item, details) => {\n // Never let Base UI keep the selection, fill the input or close: each step routes it.\n details.cancel();\n if (item) handleSelect(item);\n }}\n inputValue={query}\n onInputValueChange={(next, details) => {\n if (details.reason !== 'input-change') return;\n setQuery(next);\n if (!open) setOpen(true);\n }}\n onItemHighlighted={item => setHighlighted(item ?? null)}\n open={open}\n onOpenChange={(next, details) => {\n // Escape is handled by the input (it steps back rather than closing).\n if (!next && details.reason === 'escape-key') return;\n // The input is the anchor, not a trigger: clicking it must keep the draft open.\n if (\n !next &&\n details.reason === 'outside-press' &&\n details.event.target instanceof Node &&\n inputRef.current?.contains(details.event.target)\n ) {\n return;\n }\n if (next) setOpen(true);\n else close();\n }}\n {...alwaysHighlightProps}\n modal={false}\n >\n <div\n ref={anchorRef}\n data-slot=\"filter-bar-input-trigger\"\n className={cn(\n // Same trigger recipe as every other DS Combobox (fill, radius, `[&>svg]` icon sizing\n // and the Button icon offset); the bar itself has no chrome. Focus lives on the\n // nested input, so the recipe's `focus-visible` border becomes `focus-within`.\n comboboxTriggerClass({ variant: 'default', size: FILTER_BAR_CONTROL_SIZE }),\n 'w-auto cursor-text',\n 'focus-within:bg-fill-hover',\n inputFocusBorderWithin,\n step === 'field' ? 'min-w-40' : 'min-w-28',\n className,\n )}\n >\n <ListFilterIcon aria-hidden className=\"ml-[-.3em] shrink-0 text-muted-foreground\" />\n <ComboboxPrimitive.Input\n ref={el => {\n inputRef.current = el;\n ctx.registerInput(el);\n }}\n aria-label={ariaLabel}\n spellCheck={false}\n {...passwordManagerOptOutProps}\n data-slot=\"filter-bar-input\"\n data-step={step}\n data-target={targetGroup?.id}\n inputMode={step === 'value' && field?.type === 'number' ? 'decimal' : undefined}\n placeholder={inputPlaceholder}\n className={cn(\n unstyledFormElementStyle,\n 'min-w-0 flex-1 bg-transparent',\n 'placeholder:text-muted-foreground placeholder:transition-opacity placeholder:duration-normal focus:placeholder:opacity-70',\n )}\n onFocus={() => setOpen(true)}\n onKeyDown={handleKeyDown}\n />\n </div>\n <ComboboxPrimitive.Portal container={container}>\n <ComboboxPrimitive.Positioner\n // Base UI anchors to the input, which starts after the filter icon; align with the pill instead.\n anchor={anchorRef}\n align=\"start\"\n sideOffset={MENU_SIDE_OFFSET}\n positionMethod={FLOATING_POSITION_METHOD}\n className={comboboxStyles.positioner}\n >\n <ComboboxPrimitive.Popup // Match the pill, with the DS Combobox's 11rem floor (replaces the menu's anchor-width minimum).\n className={cn(comboboxStyles.popup, 'w-(--anchor-width) min-w-44')}\n data-slot=\"filter-bar-editor\"\n >\n {step === 'field' && (\n <FilterBarOptionList<FilterBarField>\n aria-label=\"Fields\"\n getKey={f => f.id}\n renderOption={f => (\n <>\n <FilterBarFieldLabel field={f} />\n {f.search && query !== '' && (\n <span className=\"min-w-0 truncate text-muted-foreground\">\n {ctx.getFieldOperators(f)[0]?.label} \"{query}\"\n </span>\n )}\n </>\n )}\n emptyText=\"No matching field.\"\n />\n )}\n {step === 'operator' && (\n <FilterBarOptionList<FilterBarOperator>\n aria-label=\"Operators\"\n getKey={o => o.id}\n renderOption={o => o.label}\n emptyText=\"No matching operator.\"\n />\n )}\n {step === 'value' && valueStep.hasOptions && (\n <FilterBarOptionList<FilterBarOption>\n aria-label=\"Values\"\n aria-multiselectable={valueStep.isMany || undefined}\n getKey={o => o.value}\n renderOption={option => <FilterBarOptionLabel option={option} />}\n isSelected={o => valueStep.isMany && valueStep.selected.includes(o.value)}\n isLoading={valueStep.isLoading}\n error={valueStep.error}\n emptyText={\n valueStep.allowFreeText ? 'No suggestions — press Enter to use your text.' : 'No matching value.'\n }\n />\n )}\n {step === 'value' && !valueStep.hasSuggestions && (\n <div className=\"flex items-center justify-between gap-2 py-1 pr-1 pl-[.9em]\">\n <Txt variant=\"caption\" tone=\"muted\">\n Type a value\n </Txt>\n <Button\n size=\"sm\"\n variant=\"default\"\n disabled={!valueStep.canCommitQuery}\n onMouseDown={e => e.preventDefault()}\n onClick={() => valueStep.submitFreeText()}\n >\n Apply\n <Kbd size=\"xs\">↵</Kbd>\n </Button>\n </div>\n )}\n {step === 'value' && valueStep.isMany && (\n <div className=\"flex items-center justify-end gap-1 border-t border-border p-1\">\n <Button\n size=\"sm\"\n variant=\"default\"\n onMouseDown={e => e.preventDefault()}\n onClick={() => valueStep.commitDone()}\n >\n Done\n <Kbd size=\"xs\">{modEnterLabel}</Kbd>\n </Button>\n </div>\n )}\n </ComboboxPrimitive.Popup>\n </ComboboxPrimitive.Positioner>\n </ComboboxPrimitive.Portal>\n </ComboboxPrimitive.Root>\n </>\n );\n}\n","import { useEffect } from 'react';\nimport { useFilterBarContext } from './filter-bar-context';\n\n/** Keeps a leaving node in the DOM until its exit animation has played, then releases it. */\nexport function useSettleOnLeave(id: string, leaving: boolean, rootRef: React.RefObject<HTMLElement | null>) {\n const { settleRemove } = useFilterBarContext();\n useEffect(() => {\n const root = rootRef.current;\n if (!leaving || !root) return;\n const animations = typeof root.getAnimations === 'function' ? root.getAnimations({ subtree: true }) : [];\n if (animations.length === 0) {\n settleRemove(id);\n return;\n }\n let cancelled = false;\n Promise.all(animations.map(animation => animation.finished))\n .then(() => {\n if (!cancelled) settleRemove(id);\n })\n .catch(() => {});\n return () => {\n cancelled = true;\n };\n }, [leaving, id, settleRemove, rootRef]);\n}\n","import { FolderIcon, FolderPlusIcon, PlusIcon, Trash2Icon } from 'lucide-react';\nimport { Fragment, useEffect, useRef } from 'react';\nimport type { ReactNode } from 'react';\nimport { FilterBarChip } from './filter-bar-chip';\nimport { useFilterBarContext } from './filter-bar-context';\nimport { FilterBarInput } from './filter-bar-input';\nimport { countLeaves } from './filter-bar-tree';\nimport type { FilterBarGroup, FilterBarLogic } from './types';\nimport { isFilterBarGroup } from './types';\nimport { useSettleOnLeave } from './use-settle-on-leave';\nimport { Button } from '@/ds/components/Button/Button';\nimport { Txt } from '@/ds/components/Txt';\nimport { cn } from '@/lib/utils';\n\nconst connectorClass =\n 'flex h-control-sm w-14 shrink-0 items-center justify-center rounded-md text-column tracking-wide text-muted-foreground uppercase';\n\nexport type FilterBarLogicToggleProps = {\n groupId: string;\n logic: FilterBarLogic;\n className?: string;\n};\n\n/** `and` / `or` connector in front of a row; every connector of a group shares its logic. */\nexport function FilterBarLogicToggle({ groupId, logic, className }: FilterBarLogicToggleProps) {\n const ctx = useFilterBarContext();\n const next: FilterBarLogic = logic === 'and' ? 'or' : 'and';\n return (\n <button\n type=\"button\"\n data-slot=\"filter-bar-logic\"\n data-logic={logic}\n aria-label={`Joined with ${logic}, switch to ${next}`}\n title={`Switch to ${next}`}\n className={cn(\n connectorClass,\n 'filter-bar-logic cursor-pointer border border-border bg-fill-subtle outline-none',\n 'hover:bg-fill-hover hover:text-foreground focus-visible:bg-fill-hover focus-visible:text-foreground',\n className,\n )}\n onClick={() => ctx.setLogic(groupId, next)}\n >\n {logic}\n </button>\n );\n}\n\n/** Segmented `and | or` control shown in a nested group's header. */\nfunction FilterBarLogicSwitch({ groupId, logic }: { groupId: string; logic: FilterBarLogic }) {\n const ctx = useFilterBarContext();\n return (\n <div\n role=\"radiogroup\"\n aria-label=\"Group logic\"\n className=\"flex h-control-sm items-center gap-0.5 rounded-md border border-border bg-fill-subtle p-0.5\"\n >\n {(['and', 'or'] as const).map(value => (\n <button\n key={value}\n type=\"button\"\n role=\"radio\"\n aria-checked={logic === value}\n aria-label={`Join with ${value}`}\n className={cn(\n 'h-full cursor-pointer rounded-sm px-1.5 text-column tracking-wide uppercase outline-none',\n 'focus-visible:bg-fill-hover',\n logic === value ? 'bg-fill-hover text-foreground' : 'text-muted-foreground hover:text-foreground',\n )}\n onClick={() => logic !== value && ctx.setLogic(groupId, value)}\n >\n {value}\n </button>\n ))}\n </div>\n );\n}\n\nexport type FilterBarGroupEditorProps = {\n group: FilterBarGroup;\n /** Nesting level of `group` (root-level group = 1). */\n depth: number;\n /** Drops this group; rendered as a trailing `Clear all` in the footer. */\n onRemove?: () => void;\n removeLabel?: string;\n className?: string;\n};\n\n/**\n * Recursive rule builder shown in an advanced-filter popover. Rows are laid out as\n * `connector | condition`: the first row reads `where`, the following ones carry the\n * group's `and` / `or` toggle. Nested groups render as bordered cards with their own\n * header (logic switch + remove) and footer. The shared typeahead input renders as the\n * last row of the group it is pointed at.\n */\nexport function FilterBarGroupEditor({\n group,\n depth,\n onRemove,\n removeLabel = 'Remove group',\n className,\n}: FilterBarGroupEditorProps) {\n const ctx = useFilterBarContext();\n const addFilterRef = useRef<HTMLButtonElement>(null);\n const focusAddFilter = useRef(false);\n const targeted = ctx.inputTarget === group.id;\n const canNest = depth < ctx.maxDepth;\n\n // `+ Condition` is hidden while the input is open; focus it once it remounts.\n useEffect(() => {\n if (targeted || !focusAddFilter.current) return;\n focusAddFilter.current = false;\n addFilterRef.current?.focus();\n }, [targeted]);\n\n const rows: ReactNode[] = [];\n const connector = (key: string) =>\n rows.length === 0 ? (\n <span key={`${key}:where`} className={connectorClass}>\n where\n </span>\n ) : (\n <FilterBarLogicToggle key={`${key}:logic`} groupId={group.id} logic={group.logic} />\n );\n for (const node of group.nodes) {\n rows.push(\n <Fragment key={node.id}>\n {connector(node.id)}\n {isFilterBarGroup(node) ? (\n <NestedGroupCard group={node} depth={depth + 1} />\n ) : (\n <FilterBarChip item={node} className=\"w-fit\" />\n )}\n </Fragment>,\n );\n }\n if (ctx.draft && ctx.draft.groupId === group.id) {\n const { id, fieldId, operatorId = '' } = ctx.draft;\n rows.push(\n <Fragment key={id}>\n {connector(id)}\n <FilterBarChip draft item={{ id, fieldId, operatorId, value: '' }} className=\"w-fit\" />\n </Fragment>,\n );\n }\n if (targeted) {\n rows.push(\n <Fragment key=\"input\">\n {connector('input')}\n <FilterBarInput\n groupId={group.id}\n placeholder=\"Add condition…\"\n onLeave={() => {\n focusAddFilter.current = true;\n }}\n />\n </Fragment>,\n );\n }\n\n return (\n <div\n data-slot=\"filter-bar-group-editor\"\n data-depth={depth}\n role=\"group\"\n aria-label={`Conditions joined with ${group.logic}`}\n className={cn('flex min-w-0 flex-col', className)}\n >\n {rows.length > 0 && (\n <div className=\"grid grid-cols-[auto_minmax(0,1fr)] items-start gap-x-2 gap-y-1.5 p-2\">{rows}</div>\n )}\n <div\n data-slot=\"filter-bar-editor-actions\"\n className={cn('flex w-full items-center gap-1 p-1', rows.length > 0 && 'border-t border-border')}\n >\n {!targeted && (\n <Button\n ref={addFilterRef}\n variant=\"ghost\"\n size=\"sm\"\n icon={<PlusIcon />}\n onClick={() => ctx.openGroupInput(group.id)}\n >\n Condition\n </Button>\n )}\n <Button\n variant=\"ghost\"\n size=\"sm\"\n icon={<FolderPlusIcon />}\n className=\"text-muted-foreground\"\n tooltip={canNest ? undefined : `Groups can nest ${ctx.maxDepth} levels deep`}\n disabled={!canNest}\n onClick={() => ctx.addGroup(group.id, group.logic === 'and' ? 'or' : 'and')}\n >\n Group\n </Button>\n {onRemove && (\n <Button\n variant=\"ghost\"\n size=\"sm\"\n icon={<Trash2Icon />}\n className=\"ml-auto text-muted-foreground\"\n aria-label={removeLabel}\n onClick={onRemove}\n >\n Clear all\n </Button>\n )}\n </div>\n </div>\n );\n}\n\nfunction NestedGroupCard({ group, depth }: { group: FilterBarGroup; depth: number }) {\n const ctx = useFilterBarContext();\n const rootRef = useRef<HTMLDivElement>(null);\n const leaving = ctx.leaving.has(group.id);\n useSettleOnLeave(group.id, leaving, rootRef);\n const count = countLeaves(group);\n\n return (\n <div\n ref={rootRef}\n data-slot=\"filter-bar-editor-nested\"\n data-leaving={leaving || undefined}\n aria-hidden={leaving || undefined}\n className={cn(\n 'filter-bar-editor-nested w-full overflow-hidden rounded-lg border border-border',\n leaving && 'pointer-events-none',\n )}\n >\n <div className=\"flex items-center gap-2 border-b border-border px-2 py-1\">\n <FolderIcon className=\"size-3.5 text-muted-foreground\" />\n <Txt as=\"span\" variant=\"label\" tone=\"ink\">\n Group\n </Txt>\n <Txt as=\"span\" variant=\"label\" tone=\"muted\">\n · {count} {count === 1 ? 'condition' : 'conditions'}\n </Txt>\n <div className=\"ml-auto flex items-center gap-1\">\n <FilterBarLogicSwitch groupId={group.id} logic={group.logic} />\n <Button\n variant=\"ghost\"\n size=\"icon-sm\"\n tooltip=\"Remove group\"\n disabled={leaving}\n onClick={() => ctx.removeGroup(group.id)}\n >\n <Trash2Icon />\n </Button>\n </div>\n </div>\n <FilterBarGroupEditor group={group} depth={depth} />\n </div>\n );\n}\n","import { BracesIcon, XIcon } from 'lucide-react';\nimport { useRef } from 'react';\nimport type { KeyboardEvent } from 'react';\nimport { chipClass, editableSegmentClass } from './filter-bar-chip';\nimport { FILTER_BAR_SCOPE_ATTR, useFilterBarContext } from './filter-bar-context';\nimport { FilterBarGroupEditor } from './filter-bar-group-editor';\nimport { countLeaves } from './filter-bar-tree';\nimport type { FilterBarGroup } from './types';\nimport { useSettleOnLeave } from './use-settle-on-leave';\nimport { Button } from '@/ds/components/Button/Button';\nimport { Popover, PopoverContent, PopoverTrigger } from '@/ds/components/Popover';\nimport { Txt } from '@/ds/components/Txt';\nimport { cn } from '@/lib/utils';\n\nexport type FilterBarAdvancedChipProps = {\n group: FilterBarGroup;\n className?: string;\n};\n\n/**\n * A root-level group rendered as one \"Advanced filter\" chip. Its popover hosts the\n * recursive rule builder; the chip's remove button drops the whole subtree.\n */\nexport function FilterBarAdvancedChip({ group, className }: FilterBarAdvancedChipProps) {\n const ctx = useFilterBarContext();\n const rootRef = useRef<HTMLDivElement>(null);\n const triggerRef = useRef<HTMLButtonElement>(null);\n const leaving = ctx.leaving.has(group.id);\n const open = ctx.openGroupId === group.id;\n const count = countLeaves(group);\n // Position in the flattened item list: navigation from the chip continues from its first leaf.\n const firstLeafIndex = ctx.items.findIndex(item => isUnder(group, item.id));\n const index = firstLeafIndex === -1 ? ctx.items.length : firstLeafIndex;\n useSettleOnLeave(group.id, leaving, rootRef);\n\n const handleKeyDown = (event: KeyboardEvent<HTMLDivElement>) => {\n if (leaving) return;\n const segments = Array.from(rootRef.current?.querySelectorAll<HTMLElement>('[data-filter-bar-segment]') ?? []);\n const current = segments.findIndex(el => el === event.target);\n if (current === -1) return;\n switch (event.key) {\n case 'ArrowRight': {\n event.preventDefault();\n const next = segments[current + 1];\n if (next) next.focus();\n else if (!ctx.focusChip(index + count, 1, 'field')) ctx.focusInput();\n return;\n }\n case 'ArrowLeft': {\n event.preventDefault();\n const prev = segments[current - 1];\n if (prev) prev.focus();\n else ctx.focusChip(index - 1, -1, 'remove');\n return;\n }\n case 'Delete':\n case 'Backspace':\n event.preventDefault();\n remove();\n return;\n default:\n }\n };\n\n const remove = () => {\n ctx.removeGroup(group.id);\n ctx.focusAfterRemove(index);\n };\n\n return (\n <Popover open={open} onOpenChange={next => ctx.setOpenGroup(next ? group.id : null)}>\n <div\n ref={rootRef}\n role=\"group\"\n aria-label={`Advanced filter, ${count} ${count === 1 ? 'condition' : 'conditions'}`}\n aria-hidden={leaving || undefined}\n data-slot=\"filter-bar-advanced\"\n data-leaving={leaving || undefined}\n className={cn('filter-bar-advanced', chipClass, leaving && 'pointer-events-none', className)}\n onKeyDown={handleKeyDown}\n >\n <PopoverTrigger\n ref={el => {\n triggerRef.current = el;\n ctx.registerSegment(group.id, 'field', leaving ? null : el);\n }}\n render={<button type=\"button\" />}\n data-filter-bar-segment=\"field\"\n className={cn(editableSegmentClass, 'gap-1.5')}\n title=\"Edit advanced filter\"\n >\n <BracesIcon className=\"size-[1.1em] shrink-0\" aria-hidden />\n <span className=\"truncate\">Advanced filter</span>\n {count > 0 && (\n <Txt as=\"span\" variant=\"column\" tone=\"muted\" aria-hidden>\n {count}\n </Txt>\n )}\n </PopoverTrigger>\n {leaving ? (\n <span aria-hidden className={cn(editableSegmentClass, 'px-1.5')}>\n <XIcon className=\"size-[1.1em]\" />\n </span>\n ) : (\n <button\n type=\"button\"\n ref={el => ctx.registerSegment(group.id, 'remove', el)}\n data-filter-bar-segment=\"remove\"\n aria-label=\"Remove advanced filter\"\n title=\"Remove advanced filter\"\n className={cn(editableSegmentClass, 'px-1.5')}\n onClick={remove}\n >\n <XIcon className=\"size-[1.1em]\" />\n </button>\n )}\n </div>\n <PopoverContent\n align=\"start\"\n className=\"w-[min(92vw,44rem)] p-0\"\n {...{ [FILTER_BAR_SCOPE_ATTR]: 'advanced' }}\n finalFocus={triggerRef}\n >\n <div className=\"flex items-center gap-2 border-b border-border px-3 py-2\">\n <BracesIcon className=\"size-3.5 text-muted-foreground\" />\n <Txt as=\"span\" variant=\"label\" tone=\"ink\">\n Advanced filter\n </Txt>\n <Txt as=\"span\" variant=\"column\" tone=\"muted\" className=\"rounded-md bg-fill-subtle px-1.5\">\n {count}\n </Txt>\n <Button\n variant=\"ghost\"\n size=\"icon-sm\"\n className=\"ml-auto\"\n tooltip=\"Close\"\n onClick={() => ctx.setOpenGroup(null)}\n >\n <XIcon />\n </Button>\n </div>\n <FilterBarGroupEditor\n group={group}\n depth={1}\n removeLabel=\"Remove advanced filter\"\n onRemove={() => {\n ctx.setOpenGroup(null);\n remove();\n }}\n />\n </PopoverContent>\n </Popover>\n );\n}\n\nconst isUnder = (group: FilterBarGroup, itemId: string): boolean =>\n group.nodes.some(node => (node.id === itemId ? true : 'kind' in node && isUnder(node, itemId)));\n","import { XIcon } from 'lucide-react';\nimport { useFilterBarContext } from './filter-bar-context';\nimport { Button } from '@/ds/components/Button/Button';\n\n/** Removes every removable filter. Rendered by FilterBar at its trailing edge; hidden while nothing can be removed. */\nexport function FilterBarClear({ label }: { label: string }) {\n const ctx = useFilterBarContext();\n if (!ctx.hasRemovableItems) return null;\n return (\n <Button\n variant=\"ghost\"\n size=\"icon-sm\"\n aria-label={label}\n tooltip={label}\n onClick={event => {\n event.stopPropagation();\n ctx.clear();\n ctx.focusInput();\n }}\n >\n <XIcon />\n </Button>\n );\n}\n","import { Fragment } from 'react';\nimport type { ReactNode } from 'react';\nimport { FilterBarAdvancedChip } from './filter-bar-advanced-chip';\nimport { FilterBarChip } from './filter-bar-chip';\nimport { FilterBarClear } from './filter-bar-clear';\nimport { FILTER_BAR_SCOPE_ATTR, FilterBarProvider, useFilterBarContext } from './filter-bar-context';\nimport { FilterBarInput } from './filter-bar-input';\nimport { isFilterBarGroup } from './types';\nimport type { FilterBarExpression, FilterBarField, FilterBarItem, FilterBarOperator } from './types';\nimport { VisuallyHidden } from '@/ds/primitives/visually-hidden';\nimport { cn } from '@/lib/utils';\n\ntype FilterBarValueProps =\n | {\n /** Flat list of filters, implicitly joined with `and`. Advanced filters are never offered. */\n value: FilterBarItem[];\n onValueChange: (items: FilterBarItem[]) => void;\n }\n | {\n /**\n * Tree of filters and groups. Root nodes are joined with `and`; each root group renders\n * as one \"Advanced filter\" chip whose popover edits the nested `and` / `or` logic.\n */\n value: FilterBarExpression;\n onValueChange: (expression: FilterBarExpression) => void;\n };\n\nexport type FilterBarProps = FilterBarValueProps & {\n fields: FilterBarField[];\n operators: FilterBarOperator[];\n /**\n * Id given to a newly added item. Defaults to a random id. Consumers that rebuild `value` from\n * their own store (URL, query params…) should return the id they will rebuild it with, so the\n * draft chip and the committed chip are the same element.\n */\n createItemId?: (fieldId: string) => string;\n /** How deep advanced-filter groups may nest (root-level group = 1). Defaults to 3. */\n maxDepth?: number;\n 'aria-label'?: string;\n /**\n * Text shown in a value list when the field's `suggestions` resolver rejects, for example\n * to explain a server limit. Return `undefined` to keep the default \"Couldn't load values.\".\n */\n describeSuggestionsError?: (error: unknown) => string | undefined;\n /** Accessible label of the trailing \"remove every filter\" button. */\n clearLabel?: string;\n className?: string;\n children: ReactNode;\n};\n\nfunction FilterBarSurface({\n className,\n clearLabel,\n children,\n}: {\n className?: string;\n clearLabel: string;\n children: ReactNode;\n}) {\n const ctx = useFilterBarContext();\n return (\n <div\n role=\"group\"\n aria-label={ctx.ariaLabel}\n data-slot=\"filter-bar\"\n {...{ [FILTER_BAR_SCOPE_ATTR]: 'bar' }}\n className={cn(\n // No chrome of its own: chips and the typeahead input sit directly on the parent surface.\n // Layout: chips, input, then Clear right beside the input — all in one wrapping row so\n // Clear never drifts to the far edge of a wide container.\n 'flex w-full flex-wrap items-center gap-1',\n className,\n )}\n >\n {children}\n <span className=\"flex shrink-0 items-center empty:hidden\">\n <FilterBarClear label={clearLabel} />\n </span>\n <VisuallyHidden aria-live=\"polite\">{ctx.announcement}</VisuallyHidden>\n </div>\n );\n}\n\n/**\n * Braintrust-style filter bar: `field → operator → value` filters built from a\n * single typeahead input, rendered as inline editable chips. Domain-agnostic —\n * fields, operators and values are plain strings supplied by the consumer.\n *\n * Pass a `FilterBarExpression` as `value` to enable Linear-style advanced filters:\n * the input offers \"Advanced filter…\", which adds one chip whose popover hosts a\n * recursive rule builder (`and` / `or` connectors, nested groups). The bar itself\n * stays flat. A flat `FilterBarItem[]` stays flat.\n *\n * @example\n * <FilterBar value={items} onValueChange={setItems} fields={fields} operators={DEFAULT_FILTER_OPERATORS}>\n * <FilterBar.Chips />\n * <FilterBar.Input />\n * </FilterBar>\n */\nexport function FilterBar({\n fields,\n operators,\n value,\n onValueChange,\n createItemId,\n maxDepth,\n 'aria-label': ariaLabel = 'Filters',\n describeSuggestionsError,\n clearLabel = 'Clear filters',\n className,\n children,\n}: FilterBarProps) {\n return (\n <FilterBarProvider\n fields={fields}\n operators={operators}\n value={value}\n onValueChange={onValueChange}\n createItemId={createItemId}\n maxDepth={maxDepth}\n ariaLabel={ariaLabel}\n describeSuggestionsError={describeSuggestionsError}\n >\n <FilterBarSurface className={className} clearLabel={clearLabel}>\n {children}\n </FilterBarSurface>\n </FilterBarProvider>\n );\n}\n\n/**\n * Default layout: one editable chip per root item, one \"Advanced filter\" chip per root\n * group, in order, then the chip of the filter being built in the bar's input (which\n * becomes the last item's chip once committed).\n */\nexport function FilterBarChips({ renderChip = defaultRenderChip }: FilterBarChipsProps) {\n const ctx = useFilterBarContext();\n // One keyed array: the draft chip and the item it becomes share a key, so React\n // keeps the element across the commit instead of mounting a new chip.\n const chips: ReactNode[] = [];\n for (const node of ctx.expression.nodes) {\n const chip = isFilterBarGroup(node) ? <FilterBarAdvancedChip group={node} /> : renderChip(node);\n if (chip !== null) chips.push(<Fragment key={node.id}>{chip}</Fragment>);\n }\n if (ctx.draft && !ctx.draft.groupId) {\n // `FilterBarChip` needs a full item; the draft's missing parts are blank until picked.\n const { id, fieldId, operatorId = '' } = ctx.draft;\n chips.push(\n <Fragment key={id}>\n <FilterBarChip draft item={{ id, fieldId, operatorId, value: '' }} />\n </Fragment>,\n );\n }\n return <>{chips}</>;\n}\n\nexport type FilterBarChipsProps = {\n /**\n * Chip for an item; return `null` to render none (e.g. an item only held in the\n * value for scoping). Defaults to a plain editable `FilterBar.Chip`.\n */\n renderChip?: (item: FilterBarItem) => ReactNode;\n};\n\nconst defaultRenderChip = (item: FilterBarItem) => <FilterBarChip item={item} />;\n\nFilterBar.Chips = FilterBarChips;\nFilterBar.Chip = FilterBarChip;\nFilterBar.AdvancedChip = FilterBarAdvancedChip;\nFilterBar.Input = FilterBarInput;\n","import type { FilterBarOperator } from './types';\n\n/** Opt-in starter set. Pure data: the component attaches no semantics to ids. */\nexport const DEFAULT_FILTER_OPERATORS: FilterBarOperator[] = [\n { id: 'is', label: 'is', widensTo: 'in' },\n { id: 'is-not', label: 'is not' },\n { id: 'contains', label: 'contains' },\n { id: 'not-contains', label: 'does not contain' },\n { id: 'starts-with', label: 'starts with' },\n { id: 'gt', label: '>' },\n { id: 'lt', label: '<' },\n { id: 'gte', label: '>=' },\n { id: 'lte', label: '<=' },\n { id: 'is-empty', label: 'is empty', arity: 'none' },\n { id: 'is-not-empty', label: 'is not empty', arity: 'none' },\n { id: 'in', label: 'in', arity: 'many' },\n];\n"],"names":["ComboboxPrimitive","Fragment"],"mappings":"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"}
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
|
|
4
4
|
|
|
5
|
-
const fieldErrorId = require('../field-error-id-
|
|
5
|
+
const fieldErrorId = require('../field-error-id-0yYYU0ar.cjs');
|
|
6
6
|
const jsxRuntime = require('react/jsx-runtime');
|
|
7
7
|
const utils_cn = require('../cn-DlOJCxrS.cjs');
|
|
8
8
|
const input = require('../input-4_GFK4ik.cjs');
|
|
@@ -10,9 +10,9 @@ const reactVisuallyHidden = require('@radix-ui/react-visually-hidden');
|
|
|
10
10
|
const textarea = require('../textarea-asdqiC_R.cjs');
|
|
11
11
|
const lucideReact = require('lucide-react');
|
|
12
12
|
const React = require('react');
|
|
13
|
-
const Button = require('../Button-
|
|
13
|
+
const Button = require('../Button-C4I05uT4.cjs');
|
|
14
14
|
const tooltip = require('../tooltip-BppwIf6Y.cjs');
|
|
15
|
-
const select = require('../select-
|
|
15
|
+
const select = require('../select-A3AFKLd9.cjs');
|
|
16
16
|
|
|
17
17
|
function FieldBlocksLayoutColumn({ children, className }) {
|
|
18
18
|
return /* @__PURE__ */ jsxRuntime.jsx("div", { className: utils_cn.cn("grid content-start gap-6", className), children });
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FormFieldBlocks.cjs.js","sources":["../../src/ds/components/FormFieldBlocks/layout/field-blocks-layout-column.tsx","../../src/ds/components/FormFieldBlocks/layout/field-blocks-layout-root.tsx","../../src/ds/components/FormFieldBlocks/layout/field-blocks-layout.tsx","../../src/ds/components/FormFieldBlocks/fields/text-field-block.tsx","../../src/ds/components/FormFieldBlocks/fields/textarea-field-block.tsx","../../src/ds/components/FormFieldBlocks/fields/search-field-block.tsx","../../src/ds/components/FormFieldBlocks/fields/select-field-block.tsx"],"sourcesContent":["import { cn } from '@/lib/utils';\n\nexport type FieldBlocksLayoutColumnProps = {\n children: React.ReactNode;\n className?: string;\n};\n\nexport function FieldBlocksLayoutColumn({ children, className }: FieldBlocksLayoutColumnProps) {\n return <div className={cn('grid content-start gap-6', className)}>{children}</div>;\n}\n","import { cn } from '@/lib/utils';\n\nexport type FieldBlocksLayoutRootProps = {\n children: React.ReactNode;\n className?: string;\n columns?: 1 | 2;\n gap?: string;\n};\n\nexport function FieldBlocksLayoutRoot({ children, className, columns = 1, gap }: FieldBlocksLayoutRootProps) {\n return (\n <div\n className={cn(\n 'grid',\n {\n 'grid-cols-1': columns === 1,\n 'grid-cols-2': columns === 2,\n },\n gap ?? 'gap-6',\n className,\n )}\n >\n {children}\n </div>\n );\n}\n","import { FieldBlocksLayoutColumn } from './field-blocks-layout-column';\nimport { FieldBlocksLayoutRoot } from './field-blocks-layout-root';\n\n/** @deprecated Lay fields out with plain grid or flex classes; `FieldGroup` stacks related fields. */\nexport const FieldBlocksLayout = Object.assign(FieldBlocksLayoutRoot, {\n Column: FieldBlocksLayoutColumn,\n});\n","import { Input } from '../../Input';\nimport type { InputProps } from '../../Input';\nimport { FieldBlock } from '../block/field-block';\nimport type { FieldBlockErrorMsgProps } from '../block/field-block-error-msg';\nimport type { FieldBlockHelpTextProps } from '../block/field-block-help-text';\nimport type { FieldBlockLabelProps } from '../block/field-block-label';\nimport type { FieldBlockLayoutProps } from '../block/field-block-layout';\nimport { fieldErrorId } from '../block/field-error-id';\nimport { VisuallyHidden } from '@/ds/primitives/visually-hidden';\n\nexport type TextFieldBlockProps = Pick<FieldBlockLayoutProps, 'layout' | 'labelColumnWidth'> &\n Omit<InputProps, 'name' | 'size'> & {\n name: string;\n labelIsHidden?: boolean;\n label?: FieldBlockLabelProps['children'];\n labelSize?: FieldBlockLabelProps['size'];\n helpText?: FieldBlockHelpTextProps['children'];\n errorMsg?: FieldBlockErrorMsgProps['children'];\n size?: InputProps['size'];\n };\n\n/** @deprecated Use `Field` + `FieldLabel` + `Input`. */\nexport function TextFieldBlock({\n name,\n value,\n label,\n labelIsHidden = false,\n labelColumnWidth,\n helpText,\n error,\n errorMsg,\n required = false,\n disabled = false,\n labelSize,\n layout = 'vertical',\n placeholder,\n size = 'md',\n testId,\n className,\n 'aria-describedby': ariaDescribedBy,\n ...props\n}: TextFieldBlockProps) {\n const describedBy =\n [ariaDescribedBy, errorMsg ? fieldErrorId(name) : undefined].filter(Boolean).join(' ') || undefined;\n\n return (\n <FieldBlock.Layout layout={layout} labelColumnWidth={labelColumnWidth} className={className}>\n {layout === 'horizontal' ? (\n <FieldBlock.Column>\n <FieldBlock.Label name={name} required={required} disabled={disabled} size={labelSize || 'bigger'}>\n {labelIsHidden ? <VisuallyHidden>{label}</VisuallyHidden> : label}\n </FieldBlock.Label>\n </FieldBlock.Column>\n ) : null}\n <FieldBlock.Column>\n {!labelIsHidden && layout === 'vertical' ? (\n <FieldBlock.Label name={name} required={required} disabled={disabled} size={labelSize || 'default'}>\n {label}\n </FieldBlock.Label>\n ) : null}\n <FieldBlock.Column className=\"gap-1\">\n <Input\n id={`input-${name}`}\n name={name}\n disabled={disabled}\n required={required}\n value={value}\n placeholder={placeholder}\n data-testid={testId}\n size={size}\n error={error || Boolean(errorMsg)}\n aria-describedby={describedBy}\n {...props}\n />\n {helpText || errorMsg ? <FieldBlock.Message name={name} helpText={helpText} errorMsg={errorMsg} /> : null}\n </FieldBlock.Column>\n </FieldBlock.Column>\n </FieldBlock.Layout>\n );\n}\n","import { Textarea } from '../../Textarea';\nimport type { TextareaProps } from '../../Textarea';\nimport { FieldBlock } from '../block/field-block';\nimport type { FieldBlockErrorMsgProps } from '../block/field-block-error-msg';\nimport type { FieldBlockHelpTextProps } from '../block/field-block-help-text';\nimport type { FieldBlockLabelProps } from '../block/field-block-label';\nimport type { FieldBlockLayoutProps } from '../block/field-block-layout';\nimport { fieldErrorId } from '../block/field-error-id';\nimport { VisuallyHidden } from '@/ds/primitives/visually-hidden';\n\nexport type TextareaFieldBlockProps = Pick<FieldBlockLayoutProps, 'layout' | 'labelColumnWidth'> &\n Omit<TextareaProps, 'name' | 'size'> & {\n name: string;\n labelIsHidden?: boolean;\n label?: FieldBlockLabelProps['children'];\n labelSize?: FieldBlockLabelProps['size'];\n helpText?: FieldBlockHelpTextProps['children'];\n errorMsg?: FieldBlockErrorMsgProps['children'];\n size?: TextareaProps['size'];\n };\n\n/** @deprecated Use `Field` + `FieldLabel` + `Textarea`. */\nexport function TextareaFieldBlock({\n name,\n label,\n labelIsHidden = false,\n labelColumnWidth,\n helpText,\n error,\n errorMsg,\n required = false,\n disabled = false,\n labelSize,\n layout = 'vertical',\n size = 'md',\n testId,\n className,\n 'aria-describedby': ariaDescribedBy,\n ...props\n}: TextareaFieldBlockProps) {\n const describedBy =\n [ariaDescribedBy, errorMsg ? fieldErrorId(name) : undefined].filter(Boolean).join(' ') || undefined;\n\n return (\n <FieldBlock.Layout layout={layout} labelColumnWidth={labelColumnWidth} className={className}>\n {layout === 'horizontal' ? (\n <FieldBlock.Column>\n <FieldBlock.Label name={name} required={required} disabled={disabled} size={labelSize || 'bigger'}>\n {labelIsHidden ? <VisuallyHidden>{label}</VisuallyHidden> : label}\n </FieldBlock.Label>\n </FieldBlock.Column>\n ) : null}\n <FieldBlock.Column>\n {!labelIsHidden && layout === 'vertical' ? (\n <FieldBlock.Label name={name} required={required} disabled={disabled} size={labelSize || 'default'}>\n {label}\n </FieldBlock.Label>\n ) : null}\n <FieldBlock.Column className=\"gap-1\">\n <Textarea\n id={`input-${name}`}\n name={name}\n disabled={disabled}\n required={required}\n size={size}\n data-testid={testId}\n error={error || Boolean(errorMsg)}\n aria-describedby={describedBy}\n {...props}\n />\n {helpText || errorMsg ? <FieldBlock.Message name={name} helpText={helpText} errorMsg={errorMsg} /> : null}\n </FieldBlock.Column>\n </FieldBlock.Column>\n </FieldBlock.Layout>\n );\n}\n","import { SearchIcon, XIcon } from 'lucide-react';\nimport { useEffect, useRef, type RefObject } from 'react';\nimport { Button } from '../../Button';\nimport { Input } from '../../Input';\nimport type { InputProps } from '../../Input';\nimport { Tooltip, TooltipContent, TooltipTrigger } from '../../Tooltip';\nimport { FieldBlock } from '../block/field-block';\nimport { fieldErrorId } from '../block/field-error-id';\nimport { cn } from '@/lib/utils';\n\nexport type SearchFieldBlockProps = {\n name: string;\n testId?: string;\n label?: string;\n labelIsHidden?: boolean;\n required?: boolean;\n disabled?: boolean;\n value?: string;\n placeholder?: string;\n onChange?: (e: React.ChangeEvent<HTMLInputElement>) => void;\n onReset?: () => void;\n helpText?: string;\n error?: boolean;\n errorMsg?: string;\n layout?: 'horizontal' | 'vertical';\n className?: string;\n size?: InputProps['size'];\n isMinimized?: boolean;\n onMinimizedChange?: (minimized: boolean) => void;\n /** Gives the caller access to the underlying input, e.g. to focus it from a keyboard shortcut. */\n inputRef?: RefObject<HTMLInputElement | null>;\n};\n\n/** @deprecated Use `SearchInput`. */\nexport function SearchFieldBlock({\n name,\n helpText,\n error,\n errorMsg,\n required = false,\n disabled = false,\n value,\n label,\n labelIsHidden = false,\n layout = 'vertical',\n placeholder = 'Search...',\n onChange,\n onReset,\n className,\n size,\n isMinimized,\n onMinimizedChange,\n inputRef: externalInputRef,\n}: SearchFieldBlockProps) {\n const inputRef = useRef<HTMLInputElement>(null);\n\n const setInputRef = (element: HTMLInputElement | null) => {\n inputRef.current = element;\n if (externalInputRef) externalInputRef.current = element;\n };\n useEffect(() => {\n if (isMinimized === false) {\n inputRef.current?.focus();\n }\n }, [isMinimized]);\n\n if (isMinimized) {\n return (\n <Tooltip>\n <TooltipTrigger asChild>\n <Button\n size={size || 'sm'}\n aria-label={label || 'Search'}\n disabled={disabled}\n onClick={() => onMinimizedChange?.(false)}\n >\n <SearchIcon />\n </Button>\n </TooltipTrigger>\n <TooltipContent>{label || 'Search'}</TooltipContent>\n </Tooltip>\n );\n }\n\n return (\n <FieldBlock.Layout layout={layout} className={className}>\n {layout === 'horizontal' ? (\n <FieldBlock.Column className={labelIsHidden ? 'sr-only' : undefined}>\n <FieldBlock.Label name={name} required={required} disabled={disabled}>\n {label}\n </FieldBlock.Label>\n </FieldBlock.Column>\n ) : null}\n <FieldBlock.Column className={layout === 'horizontal' && labelIsHidden ? 'col-span-full' : undefined}>\n {layout === 'vertical' && label ? (\n <FieldBlock.Label\n name={name}\n required={required}\n disabled={disabled}\n className={labelIsHidden ? 'sr-only' : undefined}\n >\n {label}\n </FieldBlock.Label>\n ) : null}\n <FieldBlock.Column className=\"gap-1\">\n <div className=\"group relative\">\n <Input\n ref={setInputRef}\n id={`input-${name}`}\n name={name}\n disabled={disabled}\n value={value}\n placeholder={placeholder}\n onChange={onChange}\n size={size}\n error={error || Boolean(errorMsg)}\n aria-describedby={errorMsg ? fieldErrorId(name) : undefined}\n className={cn(size === 'sm' && 'px-8', (!size || size === 'md') && 'px-9', size === 'lg' && 'px-10')}\n />\n <SearchIcon\n aria-hidden=\"true\"\n className={cn(\n 'absolute top-1/2 left-3 -translate-y-1/2 text-muted-foreground',\n size === 'sm' && 'size-3.5',\n (!size || size === 'md') && 'size-4',\n size === 'lg' && 'size-[1.125rem]',\n )}\n />\n {onReset && (value || isMinimized === false) && (\n <Button\n variant=\"ghost\"\n size={size || 'md'}\n aria-label=\"Clear search\"\n onClick={() => {\n if (value) {\n onReset();\n }\n if (isMinimized === false) {\n onMinimizedChange?.(true);\n }\n }}\n className=\"absolute top-1/2 right-0 -translate-y-1/2\"\n >\n <XIcon />\n </Button>\n )}\n </div>\n {helpText || errorMsg ? <FieldBlock.Message name={name} helpText={helpText} errorMsg={errorMsg} /> : null}\n </FieldBlock.Column>\n </FieldBlock.Column>\n </FieldBlock.Layout>\n );\n}\n","import type { SelectTriggerProps } from '../../Select/select';\nimport { FieldBlock } from '../block/field-block';\nimport type { FieldBlockErrorMsgProps } from '../block/field-block-error-msg';\nimport type { FieldBlockHelpTextProps } from '../block/field-block-help-text';\nimport type { FieldBlockLabelProps } from '../block/field-block-label';\nimport type { FieldBlockLayoutProps } from '../block/field-block-layout';\nimport { fieldErrorId } from '../block/field-error-id';\nimport { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from '@/ds/components/Select';\nimport { VisuallyHidden } from '@/ds/primitives/visually-hidden';\n\nexport type SelectFieldBlockProps = Pick<FieldBlockLayoutProps, 'layout' | 'labelColumnWidth'> &\n Pick<FieldBlockLabelProps, 'name' | 'required'> & {\n testId?: string;\n label?: string | null;\n labelIsHidden?: boolean;\n labelSize?: FieldBlockLabelProps['size'];\n disabled?: boolean;\n value?: string;\n options: { value: string; label: string }[];\n placeholder?: string;\n onValueChange: (value: string) => void;\n helpText?: FieldBlockHelpTextProps['children'];\n errorMsg?: FieldBlockErrorMsgProps['children'];\n error?: boolean;\n className?: string;\n size?: SelectTriggerProps['size'];\n };\n\n/** @deprecated Use `Field` + `FieldLabel` + `Select`. */\nexport function SelectFieldBlock({\n name,\n helpText,\n errorMsg,\n required = false,\n disabled = false,\n size = 'md',\n value,\n label,\n labelIsHidden = false,\n layout = 'vertical',\n labelColumnWidth,\n options,\n placeholder = 'Select an option',\n onValueChange,\n className,\n}: SelectFieldBlockProps) {\n return (\n <FieldBlock.Layout layout={layout} labelColumnWidth={labelColumnWidth} className={className}>\n {layout === 'horizontal' ? (\n <FieldBlock.Column>\n <FieldBlock.Label name={name} required={required} disabled={disabled}>\n {labelIsHidden ? <VisuallyHidden>{label}</VisuallyHidden> : label}\n </FieldBlock.Label>\n </FieldBlock.Column>\n ) : null}\n <FieldBlock.Column>\n {layout === 'vertical' && label && !labelIsHidden ? (\n <FieldBlock.Label name={name} required={required} disabled={disabled}>\n {label}\n </FieldBlock.Label>\n ) : null}\n <FieldBlock.Column className=\"gap-1\">\n <Select\n aria-label={labelIsHidden ? label : undefined}\n name={name}\n value={value}\n onValueChange={onValueChange}\n disabled={disabled}\n >\n <SelectTrigger\n id={`input-${name}`}\n size={size}\n aria-invalid={errorMsg ? true : undefined}\n aria-describedby={errorMsg ? fieldErrorId(name) : undefined}\n >\n <SelectValue placeholder={placeholder} />\n </SelectTrigger>\n <SelectContent>\n {options.map(option => (\n <SelectItem key={option.value} value={option.value}>\n {option.label}\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n {helpText || errorMsg ? <FieldBlock.Message name={name} helpText={helpText} errorMsg={errorMsg} /> : null}\n </FieldBlock.Column>\n </FieldBlock.Column>\n </FieldBlock.Layout>\n );\n}\n"],"names":["cn","jsx","fieldErrorId","FieldBlock","VisuallyHidden","jsxs","Input","Textarea","useRef","useEffect","Tooltip","TooltipTrigger","Button","SearchIcon","TooltipContent","XIcon","Select","SelectTrigger","SelectValue","SelectContent","SelectItem"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"FormFieldBlocks.cjs.js","sources":["../../src/ds/components/FormFieldBlocks/layout/field-blocks-layout-column.tsx","../../src/ds/components/FormFieldBlocks/layout/field-blocks-layout-root.tsx","../../src/ds/components/FormFieldBlocks/layout/field-blocks-layout.tsx","../../src/ds/components/FormFieldBlocks/fields/text-field-block.tsx","../../src/ds/components/FormFieldBlocks/fields/textarea-field-block.tsx","../../src/ds/components/FormFieldBlocks/fields/search-field-block.tsx","../../src/ds/components/FormFieldBlocks/fields/select-field-block.tsx"],"sourcesContent":["import { cn } from '@/lib/utils';\n\nexport type FieldBlocksLayoutColumnProps = {\n children: React.ReactNode;\n className?: string;\n};\n\nexport function FieldBlocksLayoutColumn({ children, className }: FieldBlocksLayoutColumnProps) {\n return <div className={cn('grid content-start gap-6', className)}>{children}</div>;\n}\n","import { cn } from '@/lib/utils';\n\nexport type FieldBlocksLayoutRootProps = {\n children: React.ReactNode;\n className?: string;\n columns?: 1 | 2;\n gap?: string;\n};\n\nexport function FieldBlocksLayoutRoot({ children, className, columns = 1, gap }: FieldBlocksLayoutRootProps) {\n return (\n <div\n className={cn(\n 'grid',\n {\n 'grid-cols-1': columns === 1,\n 'grid-cols-2': columns === 2,\n },\n gap ?? 'gap-6',\n className,\n )}\n >\n {children}\n </div>\n );\n}\n","import { FieldBlocksLayoutColumn } from './field-blocks-layout-column';\nimport { FieldBlocksLayoutRoot } from './field-blocks-layout-root';\n\n/** @deprecated Lay fields out with plain grid or flex classes; `FieldGroup` stacks related fields. */\nexport const FieldBlocksLayout = Object.assign(FieldBlocksLayoutRoot, {\n Column: FieldBlocksLayoutColumn,\n});\n","import { Input } from '../../Input';\nimport type { InputProps } from '../../Input';\nimport { FieldBlock } from '../block/field-block';\nimport type { FieldBlockErrorMsgProps } from '../block/field-block-error-msg';\nimport type { FieldBlockHelpTextProps } from '../block/field-block-help-text';\nimport type { FieldBlockLabelProps } from '../block/field-block-label';\nimport type { FieldBlockLayoutProps } from '../block/field-block-layout';\nimport { fieldErrorId } from '../block/field-error-id';\nimport { VisuallyHidden } from '@/ds/primitives/visually-hidden';\n\nexport type TextFieldBlockProps = Pick<FieldBlockLayoutProps, 'layout' | 'labelColumnWidth'> &\n Omit<InputProps, 'name' | 'size'> & {\n name: string;\n labelIsHidden?: boolean;\n label?: FieldBlockLabelProps['children'];\n labelSize?: FieldBlockLabelProps['size'];\n helpText?: FieldBlockHelpTextProps['children'];\n errorMsg?: FieldBlockErrorMsgProps['children'];\n size?: InputProps['size'];\n };\n\n/** @deprecated Use `Field` + `FieldLabel` + `Input`. */\nexport function TextFieldBlock({\n name,\n value,\n label,\n labelIsHidden = false,\n labelColumnWidth,\n helpText,\n error,\n errorMsg,\n required = false,\n disabled = false,\n labelSize,\n layout = 'vertical',\n placeholder,\n size = 'md',\n testId,\n className,\n 'aria-describedby': ariaDescribedBy,\n ...props\n}: TextFieldBlockProps) {\n const describedBy =\n [ariaDescribedBy, errorMsg ? fieldErrorId(name) : undefined].filter(Boolean).join(' ') || undefined;\n\n return (\n <FieldBlock.Layout layout={layout} labelColumnWidth={labelColumnWidth} className={className}>\n {layout === 'horizontal' ? (\n <FieldBlock.Column>\n <FieldBlock.Label name={name} required={required} disabled={disabled} size={labelSize || 'bigger'}>\n {labelIsHidden ? <VisuallyHidden>{label}</VisuallyHidden> : label}\n </FieldBlock.Label>\n </FieldBlock.Column>\n ) : null}\n <FieldBlock.Column>\n {!labelIsHidden && layout === 'vertical' ? (\n <FieldBlock.Label name={name} required={required} disabled={disabled} size={labelSize || 'default'}>\n {label}\n </FieldBlock.Label>\n ) : null}\n <FieldBlock.Column className=\"gap-1\">\n <Input\n id={`input-${name}`}\n name={name}\n disabled={disabled}\n required={required}\n value={value}\n placeholder={placeholder}\n data-testid={testId}\n size={size}\n error={error || Boolean(errorMsg)}\n aria-describedby={describedBy}\n {...props}\n />\n {helpText || errorMsg ? <FieldBlock.Message name={name} helpText={helpText} errorMsg={errorMsg} /> : null}\n </FieldBlock.Column>\n </FieldBlock.Column>\n </FieldBlock.Layout>\n );\n}\n","import { Textarea } from '../../Textarea';\nimport type { TextareaProps } from '../../Textarea';\nimport { FieldBlock } from '../block/field-block';\nimport type { FieldBlockErrorMsgProps } from '../block/field-block-error-msg';\nimport type { FieldBlockHelpTextProps } from '../block/field-block-help-text';\nimport type { FieldBlockLabelProps } from '../block/field-block-label';\nimport type { FieldBlockLayoutProps } from '../block/field-block-layout';\nimport { fieldErrorId } from '../block/field-error-id';\nimport { VisuallyHidden } from '@/ds/primitives/visually-hidden';\n\nexport type TextareaFieldBlockProps = Pick<FieldBlockLayoutProps, 'layout' | 'labelColumnWidth'> &\n Omit<TextareaProps, 'name' | 'size'> & {\n name: string;\n labelIsHidden?: boolean;\n label?: FieldBlockLabelProps['children'];\n labelSize?: FieldBlockLabelProps['size'];\n helpText?: FieldBlockHelpTextProps['children'];\n errorMsg?: FieldBlockErrorMsgProps['children'];\n size?: TextareaProps['size'];\n };\n\n/** @deprecated Use `Field` + `FieldLabel` + `Textarea`. */\nexport function TextareaFieldBlock({\n name,\n label,\n labelIsHidden = false,\n labelColumnWidth,\n helpText,\n error,\n errorMsg,\n required = false,\n disabled = false,\n labelSize,\n layout = 'vertical',\n size = 'md',\n testId,\n className,\n 'aria-describedby': ariaDescribedBy,\n ...props\n}: TextareaFieldBlockProps) {\n const describedBy =\n [ariaDescribedBy, errorMsg ? fieldErrorId(name) : undefined].filter(Boolean).join(' ') || undefined;\n\n return (\n <FieldBlock.Layout layout={layout} labelColumnWidth={labelColumnWidth} className={className}>\n {layout === 'horizontal' ? (\n <FieldBlock.Column>\n <FieldBlock.Label name={name} required={required} disabled={disabled} size={labelSize || 'bigger'}>\n {labelIsHidden ? <VisuallyHidden>{label}</VisuallyHidden> : label}\n </FieldBlock.Label>\n </FieldBlock.Column>\n ) : null}\n <FieldBlock.Column>\n {!labelIsHidden && layout === 'vertical' ? (\n <FieldBlock.Label name={name} required={required} disabled={disabled} size={labelSize || 'default'}>\n {label}\n </FieldBlock.Label>\n ) : null}\n <FieldBlock.Column className=\"gap-1\">\n <Textarea\n id={`input-${name}`}\n name={name}\n disabled={disabled}\n required={required}\n size={size}\n data-testid={testId}\n error={error || Boolean(errorMsg)}\n aria-describedby={describedBy}\n {...props}\n />\n {helpText || errorMsg ? <FieldBlock.Message name={name} helpText={helpText} errorMsg={errorMsg} /> : null}\n </FieldBlock.Column>\n </FieldBlock.Column>\n </FieldBlock.Layout>\n );\n}\n","import { SearchIcon, XIcon } from 'lucide-react';\nimport { useEffect, useRef } from 'react';\nimport type { RefObject } from 'react';\nimport { Button } from '../../Button';\nimport { Input } from '../../Input';\nimport type { InputProps } from '../../Input';\nimport { Tooltip, TooltipContent, TooltipTrigger } from '../../Tooltip';\nimport { FieldBlock } from '../block/field-block';\nimport { fieldErrorId } from '../block/field-error-id';\nimport { cn } from '@/lib/utils';\n\nexport type SearchFieldBlockProps = {\n name: string;\n testId?: string;\n label?: string;\n labelIsHidden?: boolean;\n required?: boolean;\n disabled?: boolean;\n value?: string;\n placeholder?: string;\n onChange?: (e: React.ChangeEvent<HTMLInputElement>) => void;\n onReset?: () => void;\n helpText?: string;\n error?: boolean;\n errorMsg?: string;\n layout?: 'horizontal' | 'vertical';\n className?: string;\n size?: InputProps['size'];\n isMinimized?: boolean;\n onMinimizedChange?: (minimized: boolean) => void;\n /** Gives the caller access to the underlying input, e.g. to focus it from a keyboard shortcut. */\n inputRef?: RefObject<HTMLInputElement | null>;\n};\n\n/** @deprecated Use `SearchInput`. */\nexport function SearchFieldBlock({\n name,\n helpText,\n error,\n errorMsg,\n required = false,\n disabled = false,\n value,\n label,\n labelIsHidden = false,\n layout = 'vertical',\n placeholder = 'Search...',\n onChange,\n onReset,\n className,\n size,\n isMinimized,\n onMinimizedChange,\n inputRef: externalInputRef,\n}: SearchFieldBlockProps) {\n const inputRef = useRef<HTMLInputElement>(null);\n\n const setInputRef = (element: HTMLInputElement | null) => {\n inputRef.current = element;\n if (externalInputRef) externalInputRef.current = element;\n };\n useEffect(() => {\n if (isMinimized === false) {\n inputRef.current?.focus();\n }\n }, [isMinimized]);\n\n if (isMinimized) {\n return (\n <Tooltip>\n <TooltipTrigger asChild>\n <Button\n size={size || 'sm'}\n aria-label={label || 'Search'}\n disabled={disabled}\n onClick={() => onMinimizedChange?.(false)}\n >\n <SearchIcon />\n </Button>\n </TooltipTrigger>\n <TooltipContent>{label || 'Search'}</TooltipContent>\n </Tooltip>\n );\n }\n\n return (\n <FieldBlock.Layout layout={layout} className={className}>\n {layout === 'horizontal' ? (\n <FieldBlock.Column className={labelIsHidden ? 'sr-only' : undefined}>\n <FieldBlock.Label name={name} required={required} disabled={disabled}>\n {label}\n </FieldBlock.Label>\n </FieldBlock.Column>\n ) : null}\n <FieldBlock.Column className={layout === 'horizontal' && labelIsHidden ? 'col-span-full' : undefined}>\n {layout === 'vertical' && label ? (\n <FieldBlock.Label\n name={name}\n required={required}\n disabled={disabled}\n className={labelIsHidden ? 'sr-only' : undefined}\n >\n {label}\n </FieldBlock.Label>\n ) : null}\n <FieldBlock.Column className=\"gap-1\">\n <div className=\"group relative\">\n <Input\n ref={setInputRef}\n id={`input-${name}`}\n name={name}\n disabled={disabled}\n value={value}\n placeholder={placeholder}\n onChange={onChange}\n size={size}\n error={error || Boolean(errorMsg)}\n aria-describedby={errorMsg ? fieldErrorId(name) : undefined}\n className={cn(size === 'sm' && 'px-8', (!size || size === 'md') && 'px-9', size === 'lg' && 'px-10')}\n />\n <SearchIcon\n aria-hidden=\"true\"\n className={cn(\n 'absolute top-1/2 left-3 -translate-y-1/2 text-muted-foreground',\n size === 'sm' && 'size-3.5',\n (!size || size === 'md') && 'size-4',\n size === 'lg' && 'size-[1.125rem]',\n )}\n />\n {onReset && (value || isMinimized === false) && (\n <Button\n variant=\"ghost\"\n size={size || 'md'}\n aria-label=\"Clear search\"\n onClick={() => {\n if (value) {\n onReset();\n }\n if (isMinimized === false) {\n onMinimizedChange?.(true);\n }\n }}\n className=\"absolute top-1/2 right-0 -translate-y-1/2\"\n >\n <XIcon />\n </Button>\n )}\n </div>\n {helpText || errorMsg ? <FieldBlock.Message name={name} helpText={helpText} errorMsg={errorMsg} /> : null}\n </FieldBlock.Column>\n </FieldBlock.Column>\n </FieldBlock.Layout>\n );\n}\n","import type { SelectTriggerProps } from '../../Select/select';\nimport { FieldBlock } from '../block/field-block';\nimport type { FieldBlockErrorMsgProps } from '../block/field-block-error-msg';\nimport type { FieldBlockHelpTextProps } from '../block/field-block-help-text';\nimport type { FieldBlockLabelProps } from '../block/field-block-label';\nimport type { FieldBlockLayoutProps } from '../block/field-block-layout';\nimport { fieldErrorId } from '../block/field-error-id';\nimport { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from '@/ds/components/Select';\nimport { VisuallyHidden } from '@/ds/primitives/visually-hidden';\n\nexport type SelectFieldBlockProps = Pick<FieldBlockLayoutProps, 'layout' | 'labelColumnWidth'> &\n Pick<FieldBlockLabelProps, 'name' | 'required'> & {\n testId?: string;\n label?: string | null;\n labelIsHidden?: boolean;\n labelSize?: FieldBlockLabelProps['size'];\n disabled?: boolean;\n value?: string;\n options: { value: string; label: string }[];\n placeholder?: string;\n onValueChange: (value: string) => void;\n helpText?: FieldBlockHelpTextProps['children'];\n errorMsg?: FieldBlockErrorMsgProps['children'];\n error?: boolean;\n className?: string;\n size?: SelectTriggerProps['size'];\n };\n\n/** @deprecated Use `Field` + `FieldLabel` + `Select`. */\nexport function SelectFieldBlock({\n name,\n helpText,\n errorMsg,\n required = false,\n disabled = false,\n size = 'md',\n value,\n label,\n labelIsHidden = false,\n layout = 'vertical',\n labelColumnWidth,\n options,\n placeholder = 'Select an option',\n onValueChange,\n className,\n}: SelectFieldBlockProps) {\n return (\n <FieldBlock.Layout layout={layout} labelColumnWidth={labelColumnWidth} className={className}>\n {layout === 'horizontal' ? (\n <FieldBlock.Column>\n <FieldBlock.Label name={name} required={required} disabled={disabled}>\n {labelIsHidden ? <VisuallyHidden>{label}</VisuallyHidden> : label}\n </FieldBlock.Label>\n </FieldBlock.Column>\n ) : null}\n <FieldBlock.Column>\n {layout === 'vertical' && label && !labelIsHidden ? (\n <FieldBlock.Label name={name} required={required} disabled={disabled}>\n {label}\n </FieldBlock.Label>\n ) : null}\n <FieldBlock.Column className=\"gap-1\">\n <Select\n aria-label={labelIsHidden ? label : undefined}\n name={name}\n value={value}\n onValueChange={onValueChange}\n disabled={disabled}\n >\n <SelectTrigger\n id={`input-${name}`}\n size={size}\n aria-invalid={errorMsg ? true : undefined}\n aria-describedby={errorMsg ? fieldErrorId(name) : undefined}\n >\n <SelectValue placeholder={placeholder} />\n </SelectTrigger>\n <SelectContent>\n {options.map(option => (\n <SelectItem key={option.value} value={option.value}>\n {option.label}\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n {helpText || errorMsg ? <FieldBlock.Message name={name} helpText={helpText} errorMsg={errorMsg} /> : null}\n </FieldBlock.Column>\n </FieldBlock.Column>\n </FieldBlock.Layout>\n );\n}\n"],"names":["cn","jsx","fieldErrorId","FieldBlock","VisuallyHidden","jsxs","Input","Textarea","useRef","useEffect","Tooltip","TooltipTrigger","Button","SearchIcon","TooltipContent","XIcon","Select","SelectTrigger","SelectValue","SelectContent","SelectItem"],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { F as FieldBlock, f as fieldErrorId } from '../field-error-id-
|
|
1
|
+
import { F as FieldBlock, f as fieldErrorId } from '../field-error-id-CdzuQK5c.js';
|
|
2
2
|
import { jsx, jsxs } from 'react/jsx-runtime';
|
|
3
3
|
import { c as cn } from '../cn-CQUhN5Jx.js';
|
|
4
4
|
import { I as Input } from '../input-_gvb6P8T.js';
|
|
@@ -6,9 +6,9 @@ import { VisuallyHidden } from '@radix-ui/react-visually-hidden';
|
|
|
6
6
|
import { T as Textarea } from '../textarea-BqLXWxqJ.js';
|
|
7
7
|
import { SearchIcon, XIcon } from 'lucide-react';
|
|
8
8
|
import { useRef, useEffect } from 'react';
|
|
9
|
-
import { B as Button } from '../Button-
|
|
9
|
+
import { B as Button } from '../Button-D8a5EWJ5.js';
|
|
10
10
|
import { T as Tooltip, c as TooltipTrigger, a as TooltipContent } from '../tooltip-DrsXZDAj.js';
|
|
11
|
-
import { S as Select, d as SelectTrigger, e as SelectValue, a as SelectContent, c as SelectItem } from '../select-
|
|
11
|
+
import { S as Select, d as SelectTrigger, e as SelectValue, a as SelectContent, c as SelectItem } from '../select-7rYaECQf.js';
|
|
12
12
|
|
|
13
13
|
function FieldBlocksLayoutColumn({ children, className }) {
|
|
14
14
|
return /* @__PURE__ */ jsx("div", { className: cn("grid content-start gap-6", className), children });
|