@mastra/playground-ui 56.0.0 → 57.0.0-alpha.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{EmptyState-CdRjFB06.cjs → EmptyState-0MgNiP40.cjs} +11 -5
- package/dist/EmptyState-0MgNiP40.cjs.map +1 -0
- package/dist/{EmptyState-UWXhBp5U.js → EmptyState-CiZVWvpH.js} +11 -5
- package/dist/EmptyState-CiZVWvpH.js.map +1 -0
- package/dist/ErrorState-C7-4A-rB.cjs +21 -0
- package/dist/ErrorState-C7-4A-rB.cjs.map +1 -0
- package/dist/ErrorState-l5gg5Nzw.js +19 -0
- package/dist/ErrorState-l5gg5Nzw.js.map +1 -0
- package/dist/Header-BVnFQlzE.js +31 -0
- package/dist/Header-BVnFQlzE.js.map +1 -0
- package/dist/Header-CGjhJ0nQ.cjs +36 -0
- package/dist/Header-CGjhJ0nQ.cjs.map +1 -0
- package/dist/{PermissionDenied-Dz5qXpQj.cjs → PermissionDenied-CwLIzjpC.cjs} +11 -6
- package/dist/PermissionDenied-CwLIzjpC.cjs.map +1 -0
- package/dist/{PermissionDenied-B6TSGolC.js → PermissionDenied-DPM04x0a.js} +11 -6
- package/dist/PermissionDenied-DPM04x0a.js.map +1 -0
- package/dist/{SessionExpired-CF0BGNo_.cjs → SessionExpired-07Lz91i3.cjs} +4 -5
- package/dist/SessionExpired-07Lz91i3.cjs.map +1 -0
- package/dist/{SessionExpired-Bq5LcsDu.js → SessionExpired-CnJ8zr5Y.js} +4 -5
- package/dist/SessionExpired-CnJ8zr5Y.js.map +1 -0
- package/dist/ask-user-B_O3GEjY.cjs +216 -0
- package/dist/ask-user-B_O3GEjY.cjs.map +1 -0
- package/dist/ask-user-gT9rODOe.js +206 -0
- package/dist/ask-user-gT9rODOe.js.map +1 -0
- package/dist/{combobox-BWM3VH-n.cjs → combobox-BTZyTiyL.cjs} +3 -4
- package/dist/{combobox-BWM3VH-n.cjs.map → combobox-BTZyTiyL.cjs.map} +1 -1
- package/dist/{combobox-D7xJFZuO.js → combobox-B_gv8nUN.js} +2 -3
- package/dist/{combobox-D7xJFZuO.js.map → combobox-B_gv8nUN.js.map} +1 -1
- package/dist/components/ActionRow.cjs.js +38 -0
- package/dist/components/ActionRow.cjs.js.map +1 -0
- package/dist/components/ActionRow.d.ts +2 -0
- package/dist/components/ActionRow.es.js +34 -0
- package/dist/components/ActionRow.es.js.map +1 -0
- package/dist/components/Combobox.cjs.js +1 -1
- package/dist/components/Combobox.es.js +1 -1
- package/dist/components/Comment.cjs.js +2 -3
- package/dist/components/Comment.cjs.js.map +1 -1
- package/dist/components/Comment.es.js +1 -2
- package/dist/components/Comment.es.js.map +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.cjs.js.map +1 -1
- package/dist/components/DataDetailsPanel.es.js +2 -2
- package/dist/components/DataDetailsPanel.es.js.map +1 -1
- package/dist/components/DataPanel.cjs.js +1 -1
- package/dist/components/DataPanel.es.js +1 -1
- package/dist/components/DateTimePicker.cjs.js +1 -1
- package/dist/components/DateTimePicker.es.js +1 -1
- package/dist/components/DateTimeRangePicker.cjs.js +1 -1
- package/dist/components/DateTimeRangePicker.es.js +1 -1
- package/dist/components/EmptyState.cjs.js +1 -1
- package/dist/components/EmptyState.es.js +1 -1
- package/dist/components/EnvironmentVariablesEditor.cjs.js +7 -8
- package/dist/components/EnvironmentVariablesEditor.cjs.js.map +1 -1
- package/dist/components/EnvironmentVariablesEditor.es.js +1 -2
- package/dist/components/EnvironmentVariablesEditor.es.js.map +1 -1
- package/dist/components/ErrorState.cjs.js +1 -1
- package/dist/components/ErrorState.es.js +1 -1
- package/dist/components/FilterBar.cjs.js +490 -38
- package/dist/components/FilterBar.cjs.js.map +1 -1
- package/dist/components/FilterBar.es.js +490 -42
- package/dist/components/FilterBar.es.js.map +1 -1
- package/dist/components/FormFieldBlocks.cjs.js +11 -12
- package/dist/components/FormFieldBlocks.cjs.js.map +1 -1
- package/dist/components/FormFieldBlocks.es.js +4 -5
- package/dist/components/FormFieldBlocks.es.js.map +1 -1
- package/dist/components/Header.cjs.js +6 -31
- package/dist/components/Header.cjs.js.map +1 -1
- package/dist/components/Header.es.js +1 -30
- package/dist/components/Header.es.js.map +1 -1
- package/dist/components/IntegrationDialog.cjs.js +1 -1
- package/dist/components/IntegrationDialog.es.js +1 -1
- package/dist/components/JSONSchemaForm.cjs.js +2 -2
- package/dist/components/JSONSchemaForm.es.js +2 -2
- package/dist/components/ListSearch.cjs.js +1 -1
- package/dist/components/ListSearch.es.js +1 -1
- package/dist/components/LogsDataList.cjs.js +2 -0
- package/dist/components/LogsDataList.cjs.js.map +1 -1
- package/dist/components/LogsDataList.es.js +2 -0
- package/dist/components/LogsDataList.es.js.map +1 -1
- package/dist/components/Message.cjs.js +1 -1
- package/dist/components/Message.es.js +2 -2
- package/dist/components/MetricsCard.cjs.js +1 -1
- package/dist/components/MetricsCard.es.js +1 -1
- package/dist/components/MetricsKpiCard.cjs.js +1 -1
- package/dist/components/MetricsKpiCard.es.js +1 -1
- package/dist/components/PageLayout.cjs.js +30 -8
- package/dist/components/PageLayout.cjs.js.map +1 -1
- package/dist/components/PageLayout.es.js +32 -3
- package/dist/components/PageLayout.es.js.map +1 -1
- package/dist/components/PermissionDenied.cjs.js +1 -1
- package/dist/components/PermissionDenied.es.js +1 -1
- package/dist/components/PropertyFilter.cjs.js +2 -2
- package/dist/components/PropertyFilter.es.js +3 -3
- package/dist/components/RadioGroup.cjs.js +3 -56
- package/dist/components/RadioGroup.cjs.js.map +1 -1
- package/dist/components/RadioGroup.es.js +1 -39
- package/dist/components/RadioGroup.es.js.map +1 -1
- package/dist/components/SessionExpired.cjs.js +1 -1
- package/dist/components/SessionExpired.es.js +1 -1
- package/dist/components/SideDialog.cjs.js +10 -2
- package/dist/components/SideDialog.cjs.js.map +1 -1
- package/dist/components/SideDialog.es.js +10 -2
- package/dist/components/SideDialog.es.js.map +1 -1
- package/dist/components/Spinner.cjs.js +1 -1
- package/dist/components/Spinner.es.js +1 -1
- package/dist/components/Steps.cjs.js +1 -1
- package/dist/components/Steps.es.js +1 -1
- package/dist/components/Workflow.cjs.js +6 -6
- package/dist/components/Workflow.cjs.js.map +1 -1
- package/dist/components/Workflow.es.js +6 -6
- package/dist/components/Workflow.es.js.map +1 -1
- package/dist/components/ai/ask-user.cjs.js +4 -3
- package/dist/components/ai/ask-user.cjs.js.map +1 -1
- package/dist/components/ai/ask-user.es.js +1 -1
- package/dist/components/ai/tool-call.cjs.js +1 -1
- package/dist/components/ai/tool-call.es.js +2 -2
- package/dist/{data-code-section-qujvEc6j.cjs → data-code-section-Dpd2hzmU.cjs} +4 -4
- package/dist/{data-code-section-qujvEc6j.cjs.map → data-code-section-Dpd2hzmU.cjs.map} +1 -1
- package/dist/{data-code-section-DKz9Okaz.js → data-code-section-O-DRRO6N.js} +4 -4
- package/dist/{data-code-section-DKz9Okaz.js.map → data-code-section-O-DRRO6N.js.map} +1 -1
- package/dist/{data-panel-CWjgS1Gh.js → data-panel-CDJMMCvz.js} +3 -3
- package/dist/{data-panel-CWjgS1Gh.js.map → data-panel-CDJMMCvz.js.map} +1 -1
- package/dist/{data-panel-CWZJKBeW.cjs → data-panel-DNPcL38C.cjs} +3 -3
- package/dist/{data-panel-CWZJKBeW.cjs.map → data-panel-DNPcL38C.cjs.map} +1 -1
- package/dist/{date-time-range-picker-BcjLbkGu.js → date-time-range-picker-B-C-PPI4.js} +2 -3
- package/dist/{date-time-range-picker-BcjLbkGu.js.map → date-time-range-picker-B-C-PPI4.js.map} +1 -1
- package/dist/{date-time-range-picker-C6hjZswK.cjs → date-time-range-picker-D_mHYCx_.cjs} +3 -4
- package/dist/{date-time-range-picker-C6hjZswK.cjs.map → date-time-range-picker-D_mHYCx_.cjs.map} +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/loading-badge.cjs.js +1 -1
- package/dist/domains/chat/components/loading-badge.es.js +1 -1
- package/dist/domains/chat/messages/reasoning.cjs.js +1 -1
- package/dist/domains/chat/messages/reasoning.cjs.js.map +1 -1
- package/dist/domains/chat/messages/reasoning.es.js +1 -1
- package/dist/domains/chat/messages/reasoning.es.js.map +1 -1
- package/dist/domains/chat/tools/badges/ask-user-badge.cjs.js +2 -2
- package/dist/domains/chat/tools/badges/ask-user-badge.cjs.js.map +1 -1
- package/dist/domains/chat/tools/badges/ask-user-badge.es.js +2 -2
- package/dist/domains/chat/tools/badges/ask-user-badge.es.js.map +1 -1
- package/dist/domains/logs/components/logs-error-content.cjs.js +4 -7
- package/dist/domains/logs/components/logs-error-content.cjs.js.map +1 -1
- package/dist/domains/logs/components/logs-error-content.es.js +4 -7
- package/dist/domains/logs/components/logs-error-content.es.js.map +1 -1
- package/dist/domains/logs/components/logs-toolbar.cjs.js +1 -1
- package/dist/domains/logs/components/logs-toolbar.cjs.js.map +1 -1
- package/dist/domains/logs/components/logs-toolbar.es.js +1 -1
- package/dist/domains/logs/components/logs-toolbar.es.js.map +1 -1
- package/dist/domains/logs/components/no-logs-info.cjs.js +5 -5
- package/dist/domains/logs/components/no-logs-info.cjs.js.map +1 -1
- package/dist/domains/logs/components/no-logs-info.es.js +6 -6
- package/dist/domains/logs/components/no-logs-info.es.js.map +1 -1
- package/dist/domains/memory/components/flame-graph.cjs.js +6 -6
- package/dist/domains/memory/components/flame-graph.cjs.js.map +1 -1
- package/dist/domains/memory/components/flame-graph.es.js +6 -6
- package/dist/domains/memory/components/flame-graph.es.js.map +1 -1
- package/dist/domains/memory/components/observation-detail-view.cjs.js +10 -11
- package/dist/domains/memory/components/observation-detail-view.cjs.js.map +1 -1
- package/dist/domains/memory/components/observation-detail-view.es.js +10 -11
- package/dist/domains/memory/components/observation-detail-view.es.js.map +1 -1
- package/dist/domains/metrics/components/date-range-selector.cjs.js +1 -1
- package/dist/domains/metrics/components/date-range-selector.es.js +1 -1
- package/dist/domains/metrics/components/kpi-card-view.cjs.js +1 -1
- package/dist/domains/metrics/components/kpi-card-view.es.js +1 -1
- package/dist/domains/metrics/components/latency-card-view.cjs.js +1 -1
- package/dist/domains/metrics/components/latency-card-view.es.js +1 -1
- package/dist/domains/metrics/components/memory-card-view.cjs.js +1 -1
- package/dist/domains/metrics/components/memory-card-view.es.js +1 -1
- package/dist/domains/metrics/components/model-usage-cost-card-view.cjs.js +1 -1
- package/dist/domains/metrics/components/model-usage-cost-card-view.es.js +1 -1
- package/dist/domains/metrics/components/scores-card-view.cjs.js +1 -1
- package/dist/domains/metrics/components/scores-card-view.es.js +1 -1
- package/dist/domains/metrics/components/token-usage-by-agent-card-view.cjs.js +1 -1
- package/dist/domains/metrics/components/token-usage-by-agent-card-view.es.js +1 -1
- package/dist/domains/metrics/components/token-usage-timeline-card-view.cjs.js +1 -1
- package/dist/domains/metrics/components/token-usage-timeline-card-view.es.js +1 -1
- package/dist/domains/metrics/components/traces-volume-card-view.cjs.js +1 -1
- package/dist/domains/metrics/components/traces-volume-card-view.es.js +1 -1
- package/dist/domains/traces/components/no-traces-info.cjs.js +2 -3
- package/dist/domains/traces/components/no-traces-info.cjs.js.map +1 -1
- package/dist/domains/traces/components/no-traces-info.es.js +2 -3
- package/dist/domains/traces/components/no-traces-info.es.js.map +1 -1
- package/dist/domains/traces/components/span-data-panel-view.cjs.js +1 -1
- package/dist/domains/traces/components/span-data-panel-view.es.js +1 -1
- package/dist/domains/traces/components/span-payload/span-error-renderer.cjs.js +1 -1
- package/dist/domains/traces/components/span-payload/span-error-renderer.es.js +1 -1
- package/dist/domains/traces/components/span-payload/span-input-renderers.cjs.js +1 -1
- package/dist/domains/traces/components/span-payload/span-input-renderers.es.js +1 -1
- package/dist/domains/traces/components/span-payload/span-output-renderers.cjs.js +1 -1
- package/dist/domains/traces/components/span-payload/span-output-renderers.es.js +1 -1
- 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 +1 -1
- package/dist/domains/traces/components/span-payload/span-payload-primitives.es.js +1 -1
- package/dist/domains/traces/components/span-payload/span-payload-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-summary-description.cjs.js +1 -1
- package/dist/domains/traces/components/span-summary-description.es.js +1 -1
- package/dist/domains/traces/components/thread-trace/thread-trace-details.cjs.js +1 -1
- package/dist/domains/traces/components/thread-trace/thread-trace-details.es.js +1 -1
- package/dist/domains/traces/components/thread-trace/thread-trace-messages.cjs.js +1 -1
- package/dist/domains/traces/components/thread-trace/thread-trace-messages.es.js +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 +2 -2
- package/dist/domains/traces/components/trace-data-panel-view.cjs.js +2 -2
- package/dist/domains/traces/components/trace-data-panel-view.es.js +2 -2
- package/dist/domains/traces/components/trace-id-button.cjs.js +1 -1
- package/dist/domains/traces/components/trace-id-button.es.js +1 -1
- package/dist/domains/traces/components/trace-summary-description.cjs.js +1 -1
- package/dist/domains/traces/components/trace-summary-description.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-error-content.cjs.js +3 -3
- package/dist/domains/traces/components/traces-error-content.cjs.js.map +1 -1
- package/dist/domains/traces/components/traces-error-content.es.js +3 -3
- package/dist/domains/traces/components/traces-error-content.es.js.map +1 -1
- package/dist/domains/traces/components/traces-page-skeleton.cjs.js +2 -0
- package/dist/domains/traces/components/traces-page-skeleton.cjs.js.map +1 -1
- package/dist/domains/traces/components/traces-page-skeleton.es.js +2 -0
- package/dist/domains/traces/components/traces-page-skeleton.es.js.map +1 -1
- package/dist/domains/traces/hooks/use-trace-url-state.cjs.js +4 -2
- package/dist/domains/traces/hooks/use-trace-url-state.cjs.js.map +1 -1
- package/dist/domains/traces/hooks/use-trace-url-state.es.js +5 -3
- package/dist/domains/traces/hooks/use-trace-url-state.es.js.map +1 -1
- package/dist/domains/traces/trace-filters.cjs.js +92 -11
- package/dist/domains/traces/trace-filters.cjs.js.map +1 -1
- package/dist/domains/traces/trace-filters.es.js +87 -13
- package/dist/domains/traces/trace-filters.es.js.map +1 -1
- package/dist/domains/traces/trace-query-filters.cjs.js +76 -45
- package/dist/domains/traces/trace-query-filters.cjs.js.map +1 -1
- package/dist/domains/traces/trace-query-filters.es.js +76 -46
- package/dist/domains/traces/trace-query-filters.es.js.map +1 -1
- package/dist/domains/traces.cjs.js +7 -0
- package/dist/domains/traces.cjs.js.map +1 -1
- package/dist/domains/traces.es.js +2 -2
- package/dist/ee/signals/components/entity-index-list.cjs.js +2 -0
- package/dist/ee/signals/components/entity-index-list.cjs.js.map +1 -1
- package/dist/ee/signals/components/entity-index-list.es.js +2 -0
- package/dist/ee/signals/components/entity-index-list.es.js.map +1 -1
- package/dist/ee/signals/components/trace-intelligence-entity-detail.cjs.js +5 -7
- 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 +5 -7
- 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 +11 -13
- 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 +12 -14
- package/dist/ee/signals/components/trace-intelligence-entity-index.es.js.map +1 -1
- package/dist/ee/signals/sankey-signals.cjs.js +2 -2
- package/dist/ee/signals/sankey-signals.cjs.js.map +1 -1
- package/dist/ee/signals/sankey-signals.es.js +2 -2
- package/dist/ee/signals/sankey-signals.es.js.map +1 -1
- package/dist/ee/signals/settings/signal-definition-form-dialog.cjs.js +10 -11
- package/dist/ee/signals/settings/signal-definition-form-dialog.cjs.js.map +1 -1
- package/dist/ee/signals/settings/signal-definition-form-dialog.es.js +3 -4
- package/dist/ee/signals/settings/signal-definition-form-dialog.es.js.map +1 -1
- package/dist/ee/topics/components/topics-layout.cjs.js +1 -1
- package/dist/ee/topics/components/topics-layout.cjs.js.map +1 -1
- package/dist/ee/topics/components/topics-layout.es.js +1 -1
- package/dist/ee/topics/components/topics-layout.es.js.map +1 -1
- package/dist/{field-block-DWkbNcsV.js → field-error-id-BLxISyNV.js} +4 -2
- package/dist/field-error-id-BLxISyNV.js.map +1 -0
- package/dist/{field-block-Dy1IaWbv.cjs → field-error-id-CXi0XkjZ.cjs} +4 -1
- package/dist/field-error-id-CXi0XkjZ.cjs.map +1 -0
- package/dist/{filter-bar-chip-BxI0NgEz.cjs → filter-bar-chip-D-IRgccJ.cjs} +296 -65
- package/dist/filter-bar-chip-D-IRgccJ.cjs.map +1 -0
- package/dist/{filter-bar-chip-C-JxWUU8.js → filter-bar-chip-luoMVy8-.js} +293 -67
- package/dist/filter-bar-chip-luoMVy8-.js.map +1 -0
- package/dist/filter-bar-chip.css +33 -1
- package/dist/layout/tabbed-container.cjs.js +2 -2
- package/dist/layout/tabbed-container.es.js +2 -2
- package/dist/{list-search-vyxsZMAK.cjs → list-search-BEDvqI5f.cjs} +2 -2
- package/dist/{list-search-vyxsZMAK.cjs.map → list-search-BEDvqI5f.cjs.map} +1 -1
- package/dist/{list-search-BTW0Neuc.js → list-search-BcOawrgy.js} +2 -2
- package/dist/{list-search-BTW0Neuc.js.map → list-search-BcOawrgy.js.map} +1 -1
- package/dist/{message-BrwbcLPi.js → message-Cs8NW-MR.js} +2 -2
- package/dist/{message-BrwbcLPi.js.map → message-Cs8NW-MR.js.map} +1 -1
- package/dist/{message-CszposMZ.cjs → message-D9b33Pf_.cjs} +2 -2
- package/dist/{message-CszposMZ.cjs.map → message-D9b33Pf_.cjs.map} +1 -1
- package/dist/{metrics-card-BUJxiwec.cjs → metrics-card-D-VjFkUM.cjs} +3 -3
- package/dist/{metrics-card-BUJxiwec.cjs.map → metrics-card-D-VjFkUM.cjs.map} +1 -1
- package/dist/{metrics-card-BlBt1WHw.js → metrics-card-jjLRvic4.js} +3 -3
- package/dist/{metrics-card-BlBt1WHw.js.map → metrics-card-jjLRvic4.js.map} +1 -1
- package/dist/{metrics-kpi-card-CBSNmtc5.js → metrics-kpi-card-CY6F7nTX.js} +2 -2
- package/dist/{metrics-kpi-card-CBSNmtc5.js.map → metrics-kpi-card-CY6F7nTX.js.map} +1 -1
- package/dist/{metrics-kpi-card-CgqmNcEC.cjs → metrics-kpi-card-krK6uG7U.cjs} +2 -2
- package/dist/{metrics-kpi-card-CgqmNcEC.cjs.map → metrics-kpi-card-krK6uG7U.cjs.map} +1 -1
- package/dist/new/layout/app-shell.cjs.js +23 -28
- package/dist/new/layout/app-shell.cjs.js.map +1 -1
- package/dist/new/layout/app-shell.es.js +23 -28
- package/dist/new/layout/app-shell.es.js.map +1 -1
- package/dist/{property-filter-applied-BmxCPe2d.cjs → property-filter-applied-CAiO4FBw.cjs} +2 -2
- package/dist/{property-filter-applied-BmxCPe2d.cjs.map → property-filter-applied-CAiO4FBw.cjs.map} +1 -1
- package/dist/{property-filter-applied-BBiUbtr0.js → property-filter-applied-MIKU9okW.js} +2 -2
- package/dist/{property-filter-applied-BBiUbtr0.js.map → property-filter-applied-MIKU9okW.js.map} +1 -1
- package/dist/radio-group-BdEPWGzi.cjs +62 -0
- package/dist/radio-group-BdEPWGzi.cjs.map +1 -0
- package/dist/radio-group-CFZXUXZ5.js +40 -0
- package/dist/radio-group-CFZXUXZ5.js.map +1 -0
- package/dist/{search-field-block-D0PUUCAE.cjs → search-field-block-DAdvPs1N.cjs} +8 -9
- package/dist/{search-field-block-D0PUUCAE.cjs.map → search-field-block-DAdvPs1N.cjs.map} +1 -1
- package/dist/{search-field-block-B5vUVTpl.js → search-field-block-DjN9AgLw.js} +2 -3
- package/dist/{search-field-block-B5vUVTpl.js.map → search-field-block-DjN9AgLw.js.map} +1 -1
- package/dist/{select-field-block-W2u2WmN3.cjs → select-field-block-7EHxArfT.cjs} +8 -9
- package/dist/{select-field-block-W2u2WmN3.cjs.map → select-field-block-7EHxArfT.cjs.map} +1 -1
- package/dist/{select-field-block-Bu7UXI2H.js → select-field-block-CBte2DyW.js} +2 -3
- package/dist/{select-field-block-Bu7UXI2H.js.map → select-field-block-CBte2DyW.js.map} +1 -1
- package/dist/{span-payload-primitives-DnRsP93D.cjs → span-payload-primitives-BLKf0qn0.cjs} +2 -2
- package/dist/{span-payload-primitives-DnRsP93D.cjs.map → span-payload-primitives-BLKf0qn0.cjs.map} +1 -1
- package/dist/{span-payload-primitives-sbxk4CHC.js → span-payload-primitives-CDLOoJfp.js} +2 -2
- package/dist/{span-payload-primitives-sbxk4CHC.js.map → span-payload-primitives-CDLOoJfp.js.map} +1 -1
- package/dist/{spinner-CqP-NaB2.cjs → spinner-BCpN7LL9.cjs} +9 -3
- package/dist/spinner-BCpN7LL9.cjs.map +1 -0
- package/dist/{spinner-D2C2DYw8.js → spinner-ylbE0TJA.js} +9 -3
- package/dist/spinner-ylbE0TJA.js.map +1 -0
- package/dist/src/domains/traces/components/traces-error-content.d.ts +2 -2
- package/dist/src/domains/traces/hooks/use-trace-url-state.d.ts +5 -3
- package/dist/src/domains/traces/trace-filters.d.ts +19 -4
- package/dist/src/domains/traces/trace-query-filters.d.ts +13 -1
- package/dist/src/ds/components/ActionRow/action-row.d.ts +9 -0
- package/dist/src/ds/components/ActionRow/action-row.stories.d.ts +8 -0
- package/dist/src/ds/components/ActionRow/index.d.ts +5 -0
- package/dist/src/ds/components/ButtonsGroup/buttons-group.stories.d.ts +7 -5
- package/dist/src/ds/components/EmptyState/EmptyState.d.ts +8 -2
- package/dist/src/ds/components/EmptyState/empty-state.stories.d.ts +1 -0
- package/dist/src/ds/components/ErrorState/ErrorState.d.ts +3 -1
- package/dist/src/ds/components/ErrorState/error-state.stories.d.ts +1 -0
- package/dist/src/ds/components/FilterBar/filter-bar-advanced-chip.d.ts +10 -0
- package/dist/src/ds/components/FilterBar/filter-bar-context.d.ts +46 -9
- package/dist/src/ds/components/FilterBar/filter-bar-group-editor.d.ts +25 -0
- package/dist/src/ds/components/FilterBar/filter-bar-input.d.ts +8 -1
- package/dist/src/ds/components/FilterBar/filter-bar-option-list.d.ts +5 -0
- package/dist/src/ds/components/FilterBar/filter-bar-tree.d.ts +36 -0
- package/dist/src/ds/components/FilterBar/filter-bar.d.ts +28 -7
- package/dist/src/ds/components/FilterBar/filter-bar.stories.d.ts +3 -0
- package/dist/src/ds/components/FilterBar/index.d.ts +6 -1
- package/dist/src/ds/components/FilterBar/types.d.ts +36 -0
- package/dist/src/ds/components/FilterBar/use-settle-on-leave.d.ts +2 -0
- package/dist/src/ds/components/PageLayout/index.d.ts +1 -2
- package/dist/src/ds/components/PageLayout/page-layout.d.ts +13 -11
- package/dist/src/ds/components/PageLayout/page-layout.stories.d.ts +1 -2
- package/dist/src/ds/components/PermissionDenied/PermissionDenied.d.ts +3 -1
- package/dist/src/ds/components/PermissionDenied/permission-denied.stories.d.ts +1 -0
- package/dist/src/ds/components/SessionExpired/SessionExpired.d.ts +3 -1
- package/dist/src/ds/components/SessionExpired/session-expired.stories.d.ts +1 -0
- package/dist/src/ds/components/Spinner/spinner.d.ts +6 -3
- package/dist/src/ds/components/Spinner/spinner.stories.d.ts +1 -0
- package/dist/src/ds/components/ai/ask-user/ask-user.d.ts +13 -8
- package/dist/src/ds/new/layout/app-shell/app-shell.d.ts +2 -8
- package/dist/src/ds/new/layout/app-shell/app-shell.stories.d.ts +0 -1
- package/dist/style.css +42 -92
- package/dist/{text-field-block--EUJKlY_.js → text-field-block-DBesvdaa.js} +2 -3
- package/dist/{text-field-block--EUJKlY_.js.map → text-field-block-DBesvdaa.js.map} +1 -1
- package/dist/{text-field-block-BLpLWmu8.cjs → text-field-block-DUMc8MTJ.cjs} +8 -9
- package/dist/{text-field-block-BLpLWmu8.cjs.map → text-field-block-DUMc8MTJ.cjs.map} +1 -1
- package/dist/{tool-call-K147tCug.js → tool-call-Du8XIzfo.js} +2 -2
- package/dist/{tool-call-K147tCug.js.map → tool-call-Du8XIzfo.js.map} +1 -1
- package/dist/{tool-call-CMRvRE-v.cjs → tool-call-ZKSbU3LR.cjs} +2 -2
- package/dist/{tool-call-CMRvRE-v.cjs.map → tool-call-ZKSbU3LR.cjs.map} +1 -1
- package/dist/types-CIPrYAzY.js +9 -0
- package/dist/types-CIPrYAzY.js.map +1 -0
- package/dist/types-Ns4ZNp-g.cjs +12 -0
- package/dist/types-Ns4ZNp-g.cjs.map +1 -0
- package/package.json +6 -6
- package/dist/EmptyState-CdRjFB06.cjs.map +0 -1
- package/dist/EmptyState-UWXhBp5U.js.map +0 -1
- package/dist/ErrorState-B3uTRAEd.cjs +0 -16
- package/dist/ErrorState-B3uTRAEd.cjs.map +0 -1
- package/dist/ErrorState-DqRx8Dw_.js +0 -14
- package/dist/ErrorState-DqRx8Dw_.js.map +0 -1
- package/dist/PermissionDenied-B6TSGolC.js.map +0 -1
- package/dist/PermissionDenied-Dz5qXpQj.cjs.map +0 -1
- package/dist/SessionExpired-Bq5LcsDu.js.map +0 -1
- package/dist/SessionExpired-CF0BGNo_.cjs.map +0 -1
- package/dist/ask-user-CS2e6Re4.cjs +0 -147
- package/dist/ask-user-CS2e6Re4.cjs.map +0 -1
- package/dist/ask-user-gS3Y1bCc.js +0 -138
- package/dist/ask-user-gS3Y1bCc.js.map +0 -1
- package/dist/components/MainContent.cjs.js +0 -81
- package/dist/components/MainContent.cjs.js.map +0 -1
- package/dist/components/MainContent.d.ts +0 -2
- package/dist/components/MainContent.es.js +0 -75
- package/dist/components/MainContent.es.js.map +0 -1
- package/dist/field-block-DWkbNcsV.js.map +0 -1
- package/dist/field-block-Dy1IaWbv.cjs.map +0 -1
- package/dist/field-error-id-B3Z2Zu5y.cjs +0 -6
- package/dist/field-error-id-B3Z2Zu5y.cjs.map +0 -1
- package/dist/field-error-id-D3yg1nBh.js +0 -4
- package/dist/field-error-id-D3yg1nBh.js.map +0 -1
- package/dist/filter-bar-chip-BxI0NgEz.cjs.map +0 -1
- package/dist/filter-bar-chip-C-JxWUU8.js.map +0 -1
- package/dist/new/layout/page-shell.cjs.js +0 -34
- package/dist/new/layout/page-shell.cjs.js.map +0 -1
- package/dist/new/layout/page-shell.d.ts +0 -2
- package/dist/new/layout/page-shell.es.js +0 -30
- package/dist/new/layout/page-shell.es.js.map +0 -1
- package/dist/no-data-page-layout-DcVPjj-J.js +0 -9
- package/dist/no-data-page-layout-DcVPjj-J.js.map +0 -1
- package/dist/no-data-page-layout-Drzbg_w8.cjs +0 -11
- package/dist/no-data-page-layout-Drzbg_w8.cjs.map +0 -1
- package/dist/page-heading-context-D3yjYoJE.js +0 -9
- package/dist/page-heading-context-D3yjYoJE.js.map +0 -1
- package/dist/page-heading-context-Du-CpxAx.cjs +0 -12
- package/dist/page-heading-context-Du-CpxAx.cjs.map +0 -1
- package/dist/page-layout-C9ifD9Q8.cjs +0 -99
- package/dist/page-layout-C9ifD9Q8.cjs.map +0 -1
- package/dist/page-layout-xcM8IR-B.js +0 -97
- package/dist/page-layout-xcM8IR-B.js.map +0 -1
- package/dist/spinner-CqP-NaB2.cjs.map +0 -1
- package/dist/spinner-D2C2DYw8.js.map +0 -1
- package/dist/src/ds/components/MainContent/index.d.ts +0 -1
- package/dist/src/ds/components/MainContent/main-content.d.ts +0 -21
- package/dist/src/ds/components/MainContent/main-content.stories.d.ts +0 -10
- package/dist/src/ds/components/PageLayout/no-data-page-layout.d.ts +0 -6
- package/dist/src/ds/components/PageLayout/page-heading-context.d.ts +0 -2
- package/dist/src/ds/components/PageLayout/page-layout-column.d.ts +0 -5
- package/dist/src/ds/components/PageLayout/page-layout-main-area.d.ts +0 -7
- package/dist/src/ds/components/PageLayout/page-layout-root.d.ts +0 -7
- package/dist/src/ds/components/PageLayout/page-layout-row.d.ts +0 -11
- package/dist/src/ds/components/PageLayout/page-layout-top-area.d.ts +0 -5
- package/dist/src/ds/new/layout/page-shell/index.d.ts +0 -1
- package/dist/src/ds/new/layout/page-shell/page-shell.d.ts +0 -24
- package/dist/src/ds/new/layout/page-shell/page-shell.stories.d.ts +0 -63
|
@@ -1,75 +0,0 @@
|
|
|
1
|
-
import { jsx, jsxs } from 'react/jsx-runtime';
|
|
2
|
-
import { u as usePageHeading } from '../page-heading-context-D3yjYoJE.js';
|
|
3
|
-
import { c as cn } from '../cn-65Adrsfj.js';
|
|
4
|
-
|
|
5
|
-
function MainContentLayout({
|
|
6
|
-
children,
|
|
7
|
-
className,
|
|
8
|
-
style
|
|
9
|
-
}) {
|
|
10
|
-
const devStyleRequested = devUIStyleRequested("MainContentLayout");
|
|
11
|
-
const pageHeading = usePageHeading();
|
|
12
|
-
return /* @__PURE__ */ jsxs(
|
|
13
|
-
"main",
|
|
14
|
-
{
|
|
15
|
-
className: cn(`grid h-full grid-rows-[auto_1fr] content-start items-start`, className),
|
|
16
|
-
style: { ...style, ...devStyleRequested ? { border: "3px dotted red" } : {} },
|
|
17
|
-
children: [
|
|
18
|
-
pageHeading && /* @__PURE__ */ jsx("h1", { className: "sr-only", children: pageHeading }),
|
|
19
|
-
children
|
|
20
|
-
]
|
|
21
|
-
}
|
|
22
|
-
);
|
|
23
|
-
}
|
|
24
|
-
function MainContentContent({
|
|
25
|
-
children,
|
|
26
|
-
className,
|
|
27
|
-
isCentered = false,
|
|
28
|
-
isDivided = false,
|
|
29
|
-
hasLeftServiceColumn = false,
|
|
30
|
-
style
|
|
31
|
-
}) {
|
|
32
|
-
const devStyleRequested = devUIStyleRequested("MainContentContent");
|
|
33
|
-
const contentClassName = getMainContentContentClassName({ isCentered, isDivided, hasLeftServiceColumn, className });
|
|
34
|
-
return /* @__PURE__ */ jsx(
|
|
35
|
-
"div",
|
|
36
|
-
{
|
|
37
|
-
className: contentClassName,
|
|
38
|
-
style: { ...style, ...devStyleRequested ? { border: "3px dotted orange" } : {} },
|
|
39
|
-
children
|
|
40
|
-
}
|
|
41
|
-
);
|
|
42
|
-
}
|
|
43
|
-
const getMainContentContentClassName = ({
|
|
44
|
-
isCentered,
|
|
45
|
-
isDivided,
|
|
46
|
-
hasLeftServiceColumn,
|
|
47
|
-
className
|
|
48
|
-
}) => {
|
|
49
|
-
return cn(
|
|
50
|
-
`grid h-full overflow-y-auto `,
|
|
51
|
-
`min-w-min overflow-x-auto`,
|
|
52
|
-
{
|
|
53
|
-
"items-start content-start": !isCentered && !isDivided && !hasLeftServiceColumn,
|
|
54
|
-
"grid place-items-center": isCentered,
|
|
55
|
-
"grid-cols-[1fr_1fr]": isDivided && !hasLeftServiceColumn,
|
|
56
|
-
"grid-cols-[12rem_1fr_1fr]": isDivided && hasLeftServiceColumn,
|
|
57
|
-
"grid-cols-[auto_1fr]": !isDivided && hasLeftServiceColumn
|
|
58
|
-
},
|
|
59
|
-
className
|
|
60
|
-
);
|
|
61
|
-
};
|
|
62
|
-
function devUIStyleRequested(name) {
|
|
63
|
-
try {
|
|
64
|
-
const raw = localStorage.getItem("add-dev-style-to-components");
|
|
65
|
-
if (!raw) return false;
|
|
66
|
-
const components = raw.split(",").map((c) => c.trim()).filter(Boolean);
|
|
67
|
-
return components.includes(name);
|
|
68
|
-
} catch (error) {
|
|
69
|
-
console.error("Error reading or parsing localStorage:", error);
|
|
70
|
-
return false;
|
|
71
|
-
}
|
|
72
|
-
}
|
|
73
|
-
|
|
74
|
-
export { MainContentContent, MainContentLayout, getMainContentContentClassName };
|
|
75
|
-
//# sourceMappingURL=MainContent.es.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"MainContent.es.js","sources":["../../src/ds/components/MainContent/main-content.tsx"],"sourcesContent":["import { usePageHeading } from '../PageLayout/page-heading-context';\nimport { cn } from '@/lib/utils';\n\nexport function MainContentLayout({\n children,\n className,\n style,\n}: {\n children: React.ReactNode;\n className?: string;\n style?: React.CSSProperties;\n}) {\n const devStyleRequested = devUIStyleRequested('MainContentLayout');\n const pageHeading = usePageHeading();\n\n return (\n <main\n className={cn(`grid h-full grid-rows-[auto_1fr] content-start items-start`, className)}\n style={{ ...style, ...(devStyleRequested ? { border: '3px dotted red' } : {}) }}\n >\n {pageHeading && <h1 className=\"sr-only\">{pageHeading}</h1>}\n {children}\n </main>\n );\n}\n\nexport type MainContentContentProps = {\n children: React.ReactNode;\n className?: string;\n style?: React.CSSProperties;\n // content is centered in the middle of the page e.g. for empty state\n isCentered?: boolean;\n // content is split into two columns equal width columns\n isDivided?: boolean;\n // used when the left column is a service column (e.g. agent history nav)\n hasLeftServiceColumn?: boolean;\n};\n\nexport function MainContentContent({\n children,\n className,\n isCentered = false,\n isDivided = false,\n hasLeftServiceColumn = false,\n style,\n}: MainContentContentProps) {\n const devStyleRequested = devUIStyleRequested('MainContentContent');\n const contentClassName = getMainContentContentClassName({ isCentered, isDivided, hasLeftServiceColumn, className });\n\n return (\n <div\n className={contentClassName}\n style={{ ...style, ...(devStyleRequested ? { border: '3px dotted orange' } : {}) }}\n >\n {children}\n </div>\n );\n}\n\nexport type GetMainContentContentClassNameArgs = {\n isCentered: boolean;\n isDivided: boolean;\n hasLeftServiceColumn: boolean;\n className?: string;\n};\n\nexport const getMainContentContentClassName = ({\n isCentered,\n isDivided,\n hasLeftServiceColumn,\n className,\n}: GetMainContentContentClassNameArgs) => {\n return cn(\n `grid h-full overflow-y-auto `,\n `min-w-min overflow-x-auto`,\n {\n 'items-start content-start': !isCentered && !isDivided && !hasLeftServiceColumn,\n 'grid place-items-center': isCentered,\n 'grid-cols-[1fr_1fr]': isDivided && !hasLeftServiceColumn,\n 'grid-cols-[12rem_1fr_1fr]': isDivided && hasLeftServiceColumn,\n 'grid-cols-[auto_1fr]': !isDivided && hasLeftServiceColumn,\n },\n className,\n );\n};\n\nfunction devUIStyleRequested(name: string) {\n try {\n const raw = localStorage.getItem('add-dev-style-to-components');\n if (!raw) return false;\n\n const components = raw\n .split(',')\n .map(c => c.trim())\n .filter(Boolean); // remove empty strings\n\n return components.includes(name);\n } catch (error) {\n console.error('Error reading or parsing localStorage:', error);\n return false;\n }\n}\n"],"names":[],"mappings":";;;;AAGO,SAAS,iBAAA,CAAkB;AAAA,EAChC,QAAA;AAAA,EACA,SAAA;AAAA,EACA;AACF,CAAA,EAIG;AACD,EAAA,MAAM,iBAAA,GAAoB,oBAAoB,mBAAmB,CAAA;AACjE,EAAA,MAAM,cAAc,cAAA,EAAe;AAEnC,EAAA,uBACE,IAAA;AAAA,IAAC,MAAA;AAAA,IAAA;AAAA,MACC,SAAA,EAAW,EAAA,CAAG,CAAA,0DAAA,CAAA,EAA8D,SAAS,CAAA;AAAA,MACrF,KAAA,EAAO,EAAE,GAAG,KAAA,EAAO,GAAI,iBAAA,GAAoB,EAAE,MAAA,EAAQ,gBAAA,EAAiB,GAAI,EAAC,EAAG;AAAA,MAE7E,QAAA,EAAA;AAAA,QAAA,WAAA,oBAAe,GAAA,CAAC,IAAA,EAAA,EAAG,SAAA,EAAU,SAAA,EAAW,QAAA,EAAA,WAAA,EAAY,CAAA;AAAA,QACpD;AAAA;AAAA;AAAA,GACH;AAEJ;AAcO,SAAS,kBAAA,CAAmB;AAAA,EACjC,QAAA;AAAA,EACA,SAAA;AAAA,EACA,UAAA,GAAa,KAAA;AAAA,EACb,SAAA,GAAY,KAAA;AAAA,EACZ,oBAAA,GAAuB,KAAA;AAAA,EACvB;AACF,CAAA,EAA4B;AAC1B,EAAA,MAAM,iBAAA,GAAoB,oBAAoB,oBAAoB,CAAA;AAClE,EAAA,MAAM,mBAAmB,8BAAA,CAA+B,EAAE,YAAY,SAAA,EAAW,oBAAA,EAAsB,WAAW,CAAA;AAElH,EAAA,uBACE,GAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,SAAA,EAAW,gBAAA;AAAA,MACX,KAAA,EAAO,EAAE,GAAG,KAAA,EAAO,GAAI,iBAAA,GAAoB,EAAE,MAAA,EAAQ,mBAAA,EAAoB,GAAI,EAAC,EAAG;AAAA,MAEhF;AAAA;AAAA,GACH;AAEJ;AASO,MAAM,iCAAiC,CAAC;AAAA,EAC7C,UAAA;AAAA,EACA,SAAA;AAAA,EACA,oBAAA;AAAA,EACA;AACF,CAAA,KAA0C;AACxC,EAAA,OAAO,EAAA;AAAA,IACL,CAAA,4BAAA,CAAA;AAAA,IACA,CAAA,yBAAA,CAAA;AAAA,IACA;AAAA,MACE,2BAAA,EAA6B,CAAC,UAAA,IAAc,CAAC,aAAa,CAAC,oBAAA;AAAA,MAC3D,yBAAA,EAA2B,UAAA;AAAA,MAC3B,qBAAA,EAAuB,aAAa,CAAC,oBAAA;AAAA,MACrC,6BAA6B,SAAA,IAAa,oBAAA;AAAA,MAC1C,sBAAA,EAAwB,CAAC,SAAA,IAAa;AAAA,KACxC;AAAA,IACA;AAAA,GACF;AACF;AAEA,SAAS,oBAAoB,IAAA,EAAc;AACzC,EAAA,IAAI;AACF,IAAA,MAAM,GAAA,GAAM,YAAA,CAAa,OAAA,CAAQ,6BAA6B,CAAA;AAC9D,IAAA,IAAI,CAAC,KAAK,OAAO,KAAA;AAEjB,IAAA,MAAM,UAAA,GAAa,GAAA,CAChB,KAAA,CAAM,GAAG,CAAA,CACT,GAAA,CAAI,CAAA,CAAA,KAAK,CAAA,CAAE,IAAA,EAAM,CAAA,CACjB,MAAA,CAAO,OAAO,CAAA;AAEjB,IAAA,OAAO,UAAA,CAAW,SAAS,IAAI,CAAA;AAAA,EACjC,SAAS,KAAA,EAAO;AACd,IAAA,OAAA,CAAQ,KAAA,CAAM,0CAA0C,KAAK,CAAA;AAC7D,IAAA,OAAO,KAAA;AAAA,EACT;AACF;;;;"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"field-block-DWkbNcsV.js","sources":["../src/ds/components/FormFieldBlocks/block/field-block-column.tsx","../src/ds/components/FormFieldBlocks/block/field-block-error-msg.tsx","../src/ds/components/FormFieldBlocks/block/field-block-help-text.tsx","../src/ds/components/FormFieldBlocks/block/field-block-label.tsx","../src/ds/components/FormFieldBlocks/block/field-block-layout.tsx","../src/ds/components/FormFieldBlocks/block/field-block-message.tsx","../src/ds/components/FormFieldBlocks/block/field-block.tsx"],"sourcesContent":["import { cn } from '@/lib/utils';\n\nexport type FieldBlockColumnProps = {\n children: React.ReactNode;\n className?: string;\n};\n\nexport function FieldBlockColumn({ children, className }: FieldBlockColumnProps) {\n return <div className={cn('grid gap-2 text-foreground', className)}>{children}</div>;\n}\n","import { cn } from '@/lib/utils';\n\nexport type FieldBlockErrorMsgProps = {\n children?: React.ReactNode;\n /**\n * The field this message belongs to, matching the `name` given to `FieldBlock.Label`.\n * Sets a stable `error-<name>` id so the control can point at it with\n * `aria-describedby` and a screen reader reads the message with the field.\n */\n name?: string;\n className?: string;\n};\n\nexport function FieldBlockErrorMsg({ children, name, className }: FieldBlockErrorMsgProps) {\n return (\n <p\n // `role=\"alert\"` lives here rather than in a wrapper at every call site, so an\n // error announces itself wherever it is used instead of depending on each caller\n // remembering to wrap it.\n role=\"alert\"\n id={name !== undefined ? `error-${name}` : undefined}\n className={cn('text-caption text-destructive', className)}\n >\n {children}\n </p>\n );\n}\n","export type FieldBlockHelpTextProps = {\n children?: React.ReactNode;\n};\n\nexport function FieldBlockHelpText({ children }: FieldBlockHelpTextProps) {\n return <p className=\"text-caption text-muted-foreground\">{children}</p>;\n}\n","import { cn } from '@/lib/utils';\n\nexport type FieldBlockLabelProps = {\n children: React.ReactNode;\n name: string;\n htmlFor?: string;\n required?: boolean;\n disabled?: boolean;\n size?: 'default' | 'bigger';\n className?: string;\n};\n\nexport function FieldBlockLabel({\n children,\n name,\n htmlFor = `input-${name}`,\n required,\n disabled = false,\n size = 'default',\n className,\n}: FieldBlockLabelProps) {\n return (\n <label\n htmlFor={htmlFor}\n className={cn(\n 'inline-flex items-center text-label',\n {\n 'text-body': size === 'bigger',\n 'text-foreground': !disabled,\n 'text-muted-foreground': disabled,\n },\n className,\n )}\n >\n {children}\n {required ? (\n <>\n <span aria-hidden className={cn('ml-0.5', disabled ? 'text-muted-foreground' : 'text-destructive')}>\n *\n </span>\n <span className=\"sr-only\"> (required)</span>\n </>\n ) : null}\n </label>\n );\n}\n","import { cn } from '@/lib/utils';\n\nexport type FieldBlockLayoutProps = {\n children: React.ReactNode;\n className?: string;\n layout?: 'vertical' | 'horizontal';\n // Optional prop to specify label column width in horizontal layout\n labelColumnWidth?: string; // e.g., '150px' or '30%'\n};\n\nexport function FieldBlockLayout({\n children,\n className,\n layout = 'vertical',\n labelColumnWidth,\n}: FieldBlockLayoutProps) {\n return (\n <div\n className={cn(\n 'relative grid gap-2 text-foreground',\n {\n 'horizontal-field-block grid-cols-[auto_1fr] items-baseline': layout === 'horizontal',\n },\n className,\n )}\n style={\n layout === 'horizontal' && labelColumnWidth ? { gridTemplateColumns: `${labelColumnWidth} 1fr` } : undefined\n }\n >\n {children}\n </div>\n );\n}\n","import { FieldBlockErrorMsg } from './field-block-error-msg';\nimport { FieldBlockHelpText } from './field-block-help-text';\n\nexport type FieldBlockMessageProps = {\n name: string;\n helpText?: React.ReactNode;\n errorMsg?: React.ReactNode;\n};\n\nexport function FieldBlockMessage({ name, helpText, errorMsg }: FieldBlockMessageProps) {\n return (\n <div className=\"text-caption h-[1lh] min-w-0 overflow-hidden [&>p]:truncate\">\n {errorMsg ? (\n <FieldBlockErrorMsg name={name} className=\"truncate\">\n {errorMsg}\n </FieldBlockErrorMsg>\n ) : helpText ? (\n <FieldBlockHelpText>{helpText}</FieldBlockHelpText>\n ) : null}\n </div>\n );\n}\n","import { FieldBlockColumn } from './field-block-column';\nimport { FieldBlockErrorMsg } from './field-block-error-msg';\nimport { FieldBlockHelpText } from './field-block-help-text';\nimport { FieldBlockLabel } from './field-block-label';\nimport { FieldBlockLayout } from './field-block-layout';\nimport { FieldBlockMessage } from './field-block-message';\n\nexport const FieldBlock = Object.assign(\n {},\n {\n Layout: FieldBlockLayout,\n Column: FieldBlockColumn,\n Label: FieldBlockLabel,\n HelpText: FieldBlockHelpText,\n ErrorMsg: FieldBlockErrorMsg,\n Message: FieldBlockMessage,\n },\n);\n"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"field-block-Dy1IaWbv.cjs","sources":["../src/ds/components/FormFieldBlocks/block/field-block-column.tsx","../src/ds/components/FormFieldBlocks/block/field-block-error-msg.tsx","../src/ds/components/FormFieldBlocks/block/field-block-help-text.tsx","../src/ds/components/FormFieldBlocks/block/field-block-label.tsx","../src/ds/components/FormFieldBlocks/block/field-block-layout.tsx","../src/ds/components/FormFieldBlocks/block/field-block-message.tsx","../src/ds/components/FormFieldBlocks/block/field-block.tsx"],"sourcesContent":["import { cn } from '@/lib/utils';\n\nexport type FieldBlockColumnProps = {\n children: React.ReactNode;\n className?: string;\n};\n\nexport function FieldBlockColumn({ children, className }: FieldBlockColumnProps) {\n return <div className={cn('grid gap-2 text-foreground', className)}>{children}</div>;\n}\n","import { cn } from '@/lib/utils';\n\nexport type FieldBlockErrorMsgProps = {\n children?: React.ReactNode;\n /**\n * The field this message belongs to, matching the `name` given to `FieldBlock.Label`.\n * Sets a stable `error-<name>` id so the control can point at it with\n * `aria-describedby` and a screen reader reads the message with the field.\n */\n name?: string;\n className?: string;\n};\n\nexport function FieldBlockErrorMsg({ children, name, className }: FieldBlockErrorMsgProps) {\n return (\n <p\n // `role=\"alert\"` lives here rather than in a wrapper at every call site, so an\n // error announces itself wherever it is used instead of depending on each caller\n // remembering to wrap it.\n role=\"alert\"\n id={name !== undefined ? `error-${name}` : undefined}\n className={cn('text-caption text-destructive', className)}\n >\n {children}\n </p>\n );\n}\n","export type FieldBlockHelpTextProps = {\n children?: React.ReactNode;\n};\n\nexport function FieldBlockHelpText({ children }: FieldBlockHelpTextProps) {\n return <p className=\"text-caption text-muted-foreground\">{children}</p>;\n}\n","import { cn } from '@/lib/utils';\n\nexport type FieldBlockLabelProps = {\n children: React.ReactNode;\n name: string;\n htmlFor?: string;\n required?: boolean;\n disabled?: boolean;\n size?: 'default' | 'bigger';\n className?: string;\n};\n\nexport function FieldBlockLabel({\n children,\n name,\n htmlFor = `input-${name}`,\n required,\n disabled = false,\n size = 'default',\n className,\n}: FieldBlockLabelProps) {\n return (\n <label\n htmlFor={htmlFor}\n className={cn(\n 'inline-flex items-center text-label',\n {\n 'text-body': size === 'bigger',\n 'text-foreground': !disabled,\n 'text-muted-foreground': disabled,\n },\n className,\n )}\n >\n {children}\n {required ? (\n <>\n <span aria-hidden className={cn('ml-0.5', disabled ? 'text-muted-foreground' : 'text-destructive')}>\n *\n </span>\n <span className=\"sr-only\"> (required)</span>\n </>\n ) : null}\n </label>\n );\n}\n","import { cn } from '@/lib/utils';\n\nexport type FieldBlockLayoutProps = {\n children: React.ReactNode;\n className?: string;\n layout?: 'vertical' | 'horizontal';\n // Optional prop to specify label column width in horizontal layout\n labelColumnWidth?: string; // e.g., '150px' or '30%'\n};\n\nexport function FieldBlockLayout({\n children,\n className,\n layout = 'vertical',\n labelColumnWidth,\n}: FieldBlockLayoutProps) {\n return (\n <div\n className={cn(\n 'relative grid gap-2 text-foreground',\n {\n 'horizontal-field-block grid-cols-[auto_1fr] items-baseline': layout === 'horizontal',\n },\n className,\n )}\n style={\n layout === 'horizontal' && labelColumnWidth ? { gridTemplateColumns: `${labelColumnWidth} 1fr` } : undefined\n }\n >\n {children}\n </div>\n );\n}\n","import { FieldBlockErrorMsg } from './field-block-error-msg';\nimport { FieldBlockHelpText } from './field-block-help-text';\n\nexport type FieldBlockMessageProps = {\n name: string;\n helpText?: React.ReactNode;\n errorMsg?: React.ReactNode;\n};\n\nexport function FieldBlockMessage({ name, helpText, errorMsg }: FieldBlockMessageProps) {\n return (\n <div className=\"text-caption h-[1lh] min-w-0 overflow-hidden [&>p]:truncate\">\n {errorMsg ? (\n <FieldBlockErrorMsg name={name} className=\"truncate\">\n {errorMsg}\n </FieldBlockErrorMsg>\n ) : helpText ? (\n <FieldBlockHelpText>{helpText}</FieldBlockHelpText>\n ) : null}\n </div>\n );\n}\n","import { FieldBlockColumn } from './field-block-column';\nimport { FieldBlockErrorMsg } from './field-block-error-msg';\nimport { FieldBlockHelpText } from './field-block-help-text';\nimport { FieldBlockLabel } from './field-block-label';\nimport { FieldBlockLayout } from './field-block-layout';\nimport { FieldBlockMessage } from './field-block-message';\n\nexport const FieldBlock = Object.assign(\n {},\n {\n Layout: FieldBlockLayout,\n Column: FieldBlockColumn,\n Label: FieldBlockLabel,\n HelpText: FieldBlockHelpText,\n ErrorMsg: FieldBlockErrorMsg,\n Message: FieldBlockMessage,\n },\n);\n"],"names":["cn","jsx","jsxs","Fragment"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"field-error-id-B3Z2Zu5y.cjs","sources":["../src/ds/components/FormFieldBlocks/block/field-error-id.ts"],"sourcesContent":["/**\n * Id of the error message for a field, so a control can point at its message with\n * `aria-describedby`. Lives apart from the component file: exporting it alongside a\n * component breaks fast refresh.\n */\nexport const fieldErrorId = (name: string) => `error-${name}`;\n"],"names":[],"mappings":";;AAKO,MAAM,YAAA,GAAe,CAAC,IAAA,KAAiB,CAAA,MAAA,EAAS,IAAI,CAAA;;;;"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"field-error-id-D3yg1nBh.js","sources":["../src/ds/components/FormFieldBlocks/block/field-error-id.ts"],"sourcesContent":["/**\n * Id of the error message for a field, so a control can point at its message with\n * `aria-describedby`. Lives apart from the component file: exporting it alongside a\n * component breaks fast refresh.\n */\nexport const fieldErrorId = (name: string) => `error-${name}`;\n"],"names":[],"mappings":"AAKO,MAAM,YAAA,GAAe,CAAC,IAAA,KAAiB,CAAA,MAAA,EAAS,IAAI,CAAA;;;;"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"filter-bar-chip-BxI0NgEz.cjs","sources":["../src/ds/components/FilterBar/filter-bar-context.tsx","../src/ds/components/FilterBar/filter-bar-option-list.tsx","../src/ds/components/FilterBar/match-query.ts","../src/ds/components/FilterBar/types.ts","../src/ds/components/FilterBar/use-value-suggestions.ts","../src/ds/components/FilterBar/use-value-step.ts","../src/ds/components/FilterBar/filter-bar-chip.tsx"],"sourcesContent":["/* eslint-disable react-refresh/only-export-components */\nimport { createContext, useCallback, useContext, useMemo, useRef, useState } from 'react';\nimport type { ReactNode } from 'react';\nimport type {\n DraftStage,\n FilterBarCommit,\n FilterBarDraft,\n FilterBarField,\n FilterBarItem,\n FilterBarOperator,\n FilterBarSegment,\n FilterBarValue,\n} from './types';\n\ntype SegmentKey = `${string}:${FilterBarSegment}`;\n\nconst SEGMENTS_LEFT_TO_RIGHT: FilterBarSegment[] = ['field', 'operator', 'value', 'remove'];\nconst SEGMENTS_RIGHT_TO_LEFT: FilterBarSegment[] = [...SEGMENTS_LEFT_TO_RIGHT].reverse();\n\nconst stageOf = (draft: FilterBarDraft | null): DraftStage => {\n if (!draft) return 'none';\n return draft.operatorId ? 'operator' : 'field';\n};\n\nexport type FilterBarContextValue = {\n fields: FilterBarField[];\n operators: FilterBarOperator[];\n items: FilterBarItem[];\n /** Filter under construction in the input, once a field is picked; `null` otherwise. */\n draft: FilterBarDraft | null;\n /** Progress or reset the draft. Its id is assigned on first field pick and kept afterwards. */\n setDraft: (next: Omit<FilterBarDraft, 'id' | 'from'> | null) => void;\n /** Append an item for the draft, reusing its id so the draft chip becomes the item's chip. */\n commitDraft: (next: Required<Omit<FilterBarDraft, 'id' | 'from'>>, value: FilterBarValue) => void;\n /** The draft that just became an item, until its chip has glinted or the bar moves on. */\n lastCommit: FilterBarCommit | null;\n settleCommit: () => void;\n updateItem: (id: string, patch: Partial<Omit<FilterBarItem, 'id'>>) => void;\n removeItem: (id: string) => void;\n /** Ids of removed items still rendered while their chip plays its exit animation. */\n leaving: ReadonlySet<string>;\n /** Called by a leaving chip once its exit animation has finished (or when nothing animates). */\n settleRemove: (id: string) => void;\n /** Removes every removable item (chips rendered with `removable={false}` stay). */\n clear: () => void;\n /** Whether at least one item can be removed, i.e. whether Clear has anything to do. */\n hasRemovableItems: boolean;\n /** Called by chips so `clear` and the Clear button know which items are pinned. */\n registerNonRemovable: (itemId: string, nonRemovable: boolean) => void;\n getField: (fieldId: string) => FilterBarField | undefined;\n getOperator: (operatorId: string) => FilterBarOperator | undefined;\n /** Operators allowed for a field (`field.operators` or every root operator). */\n getFieldOperators: (field: FilterBarField) => FilterBarOperator[];\n registerSegment: (itemId: string, segment: FilterBarSegment, el: HTMLElement | null) => void;\n registerInput: (el: HTMLInputElement | null) => void;\n /**\n * Focus a segment of the nearest editable chip starting at `fromIndex` and\n * walking in `direction` (read-only chips register no segments and are skipped).\n * Returns false if nothing was focused.\n */\n focusChip: (fromIndex: number, direction: -1 | 1, segment: FilterBarSegment) => boolean;\n focusInput: () => void;\n /** Called by chips to move focus after a removal. */\n focusAfterRemove: (removedIndex: number) => void;\n announce: (message: string) => void;\n announcement: string;\n ariaLabel: string;\n};\n\nconst FilterBarContext = createContext<FilterBarContextValue | null>(null);\n\nexport function useFilterBarContext(): FilterBarContextValue {\n const ctx = useContext(FilterBarContext);\n if (!ctx) throw new Error('FilterBar compound components must be rendered inside <FilterBar>.');\n return ctx;\n}\n\nlet idCounter = 0;\nexport function createFilterId(): string {\n if (typeof crypto !== 'undefined' && typeof crypto.randomUUID === 'function') return crypto.randomUUID();\n idCounter += 1;\n return `filter-${idCounter}`;\n}\n\nexport function emptyValueFor(operator: FilterBarOperator | undefined): string | string[] {\n return operator?.arity === 'many' ? [] : '';\n}\n\nexport type FilterBarProviderProps = {\n fields: FilterBarField[];\n operators: FilterBarOperator[];\n value: FilterBarItem[];\n onValueChange: (items: FilterBarItem[]) => void;\n createItemId?: (fieldId: string) => string;\n ariaLabel: string;\n children: ReactNode;\n};\n\nexport function FilterBarProvider({\n fields,\n operators,\n value,\n onValueChange,\n createItemId,\n ariaLabel,\n children,\n}: FilterBarProviderProps) {\n const segments = useRef(new Map<SegmentKey, HTMLElement>());\n const inputRef = useRef<HTMLInputElement | null>(null);\n const itemsRef = useRef(value);\n itemsRef.current = value;\n const [announcement, setAnnouncement] = useState('');\n const [nonRemovableIds, setNonRemovableIds] = useState<ReadonlySet<string>>(() => new Set());\n\n const getField = useCallback((fieldId: string) => fields.find(f => f.id === fieldId), [fields]);\n const getOperator = useCallback((operatorId: string) => operators.find(o => o.id === operatorId), [operators]);\n const getFieldOperators = useCallback(\n (field: FilterBarField) => {\n if (!field.operators) return operators;\n const allowed = new Set(field.operators);\n return operators.filter(o => allowed.has(o.id));\n },\n [operators],\n );\n\n const announce = useCallback((message: string) => setAnnouncement(message), []);\n\n const [draft, setDraftState] = useState<FilterBarDraft | null>(null);\n const draftRef = useRef(draft);\n draftRef.current = draft;\n const [lastCommit, setLastCommit] = useState<FilterBarCommit | null>(null);\n const settleCommit = useCallback(() => setLastCommit(prev => (prev ? { ...prev, glint: false } : null)), []);\n // Removed items stay rendered at their old position until their chip has animated out.\n const [leavingItems, setLeavingItems] = useState<ReadonlyMap<string, { item: FilterBarItem; index: number }>>(\n () => new Map(),\n );\n const settleRemove = useCallback((id: string) => {\n setLeavingItems(prev => {\n if (!prev.has(id)) return prev;\n const next = new Map(prev);\n next.delete(id);\n return next;\n });\n }, []);\n const markLeaving = useCallback((removed: { item: FilterBarItem; index: number }[]) => {\n if (removed.length === 0) return;\n setLeavingItems(prev => {\n const next = new Map(prev);\n for (const entry of removed) next.set(entry.item.id, entry);\n return next;\n });\n }, []);\n\n // Until the consumer reflects the commit in `value`, the committed item is ours to show;\n // items on their way out are spliced back in where they were. An id the consumer put back\n // in `value` while it was leaving is simply shown as a live item again.\n const { items, leaving } = useMemo(() => {\n const present = new Set(value.map(item => item.id));\n const items = lastCommit && !present.has(lastCommit.item.id) ? [...value, lastCommit.item] : [...value];\n const leaving = new Set<string>();\n const pending = [...leavingItems.values()]\n .filter(entry => !present.has(entry.item.id))\n .sort((a, b) => a.index - b.index);\n for (const entry of pending) {\n items.splice(Math.min(entry.index, items.length), 0, entry.item);\n leaving.add(entry.item.id);\n }\n return { items, leaving };\n }, [value, lastCommit, leavingItems]);\n\n // The draft chip is keyed by the id the committed item will carry, so React keeps the same\n // element through the commit. Consumers who derive ids themselves supply `createItemId` so\n // the id we hand back in `onValueChange` is the one they'll hand back in `value`.\n const newItemId = useCallback(\n (fieldId: string) => (createItemId ? createItemId(fieldId) : createFilterId()),\n [createItemId],\n );\n\n const setDraft = useCallback(\n (next: Omit<FilterBarDraft, 'id' | 'from'> | null) => {\n setLastCommit(null);\n setDraftState(prev =>\n next\n ? { ...next, id: prev?.fieldId === next.fieldId ? prev.id : newItemId(next.fieldId), from: stageOf(prev) }\n : null,\n );\n },\n [newItemId],\n );\n\n const commitDraft = useCallback(\n ({ fieldId, operatorId }: Required<Omit<FilterBarDraft, 'id' | 'from'>>, value: FilterBarValue) => {\n // Operators without a value commit straight from the operator step, before a draft exists.\n const id = draftRef.current?.id ?? newItemId(fieldId);\n const item = { id, fieldId, operatorId, value };\n onValueChange([...itemsRef.current, item]);\n setLastCommit({ item, from: stageOf(draftRef.current), glint: true });\n setDraftState(null);\n announce('Filter added');\n },\n [onValueChange, announce, newItemId],\n );\n\n const updateItem = useCallback(\n (id: string, patch: Partial<Omit<FilterBarItem, 'id'>>) => {\n onValueChange(itemsRef.current.map(item => (item.id === id ? { ...item, ...patch } : item)));\n },\n [onValueChange],\n );\n\n const removeItem = useCallback(\n (id: string) => {\n const index = itemsRef.current.findIndex(item => item.id === id);\n const item = itemsRef.current[index];\n if (item) markLeaving([{ item, index }]);\n onValueChange(itemsRef.current.filter(item => item.id !== id));\n setLastCommit(null);\n announce('Filter removed');\n },\n [onValueChange, announce, markLeaving],\n );\n\n const clear = useCallback(() => {\n const removed = itemsRef.current\n .map((item, index) => ({ item, index }))\n .filter(({ item }) => !nonRemovableIds.has(item.id));\n markLeaving(removed);\n onValueChange(itemsRef.current.filter(item => nonRemovableIds.has(item.id)));\n announce('All filters removed');\n }, [onValueChange, announce, nonRemovableIds, markLeaving]);\n\n const hasRemovableItems = value.some(item => !nonRemovableIds.has(item.id));\n\n const registerNonRemovable = useCallback((itemId: string, nonRemovable: boolean) => {\n setNonRemovableIds(prev => {\n if (prev.has(itemId) === nonRemovable) return prev;\n const next = new Set(prev);\n if (nonRemovable) next.add(itemId);\n else next.delete(itemId);\n return next;\n });\n }, []);\n\n const registerSegment = useCallback((itemId: string, segment: FilterBarSegment, el: HTMLElement | null) => {\n const key: SegmentKey = `${itemId}:${segment}`;\n if (el) segments.current.set(key, el);\n else segments.current.delete(key);\n }, []);\n\n const registerInput = useCallback((el: HTMLInputElement | null) => {\n inputRef.current = el;\n }, []);\n\n const focusInput = useCallback(() => {\n inputRef.current?.focus();\n }, []);\n\n // Chip indices refer to the rendered list (which may still hold leaving chips), not `value`.\n const renderedRef = useRef(items);\n renderedRef.current = items;\n\n const focusChip = useCallback((fromIndex: number, direction: -1 | 1, segment: FilterBarSegment) => {\n const items = renderedRef.current;\n // Custom chips may register only some segments (e.g. just `value`): when the\n // requested one is missing, land on the chip's outermost segment on the side\n // we arrive from.\n const fallbacks: FilterBarSegment[] = direction === -1 ? SEGMENTS_RIGHT_TO_LEFT : SEGMENTS_LEFT_TO_RIGHT;\n for (let i = fromIndex; i >= 0 && i < items.length; i += direction) {\n const item = items[i];\n if (!item) break;\n for (const candidate of [segment, ...fallbacks]) {\n const el = segments.current.get(`${item.id}:${candidate}`);\n if (el) {\n el.focus();\n return true;\n }\n }\n }\n return false;\n }, []);\n\n const focusAfterRemove = useCallback(\n (removedIndex: number) => {\n // Called synchronously after `removeItem`, before React re-renders: the rendered list\n // still holds the removed chip and every neighbour's DOM node is still mounted.\n // Leaving neighbours register no segments, so they are skipped over.\n if (focusChip(removedIndex + 1, 1, 'value') || focusChip(removedIndex - 1, -1, 'value')) return;\n focusInput();\n },\n [focusChip, focusInput],\n );\n\n const ctx = useMemo<FilterBarContextValue>(\n () => ({\n fields,\n operators,\n items,\n draft,\n setDraft,\n commitDraft,\n lastCommit,\n settleCommit,\n updateItem,\n removeItem,\n leaving,\n settleRemove,\n clear,\n hasRemovableItems,\n registerNonRemovable,\n getField,\n getOperator,\n getFieldOperators,\n registerSegment,\n registerInput,\n focusChip,\n focusInput,\n focusAfterRemove,\n announce,\n announcement,\n ariaLabel,\n }),\n [\n fields,\n operators,\n items,\n draft,\n setDraft,\n commitDraft,\n lastCommit,\n settleCommit,\n updateItem,\n removeItem,\n leaving,\n settleRemove,\n clear,\n hasRemovableItems,\n registerNonRemovable,\n getField,\n getOperator,\n getFieldOperators,\n registerSegment,\n registerInput,\n focusChip,\n focusInput,\n focusAfterRemove,\n announce,\n announcement,\n ariaLabel,\n ],\n );\n\n return <FilterBarContext.Provider value={ctx}>{children}</FilterBarContext.Provider>;\n}\n","import { CheckIcon } from 'lucide-react';\nimport { forwardRef } from 'react';\nimport type { ReactNode } from 'react';\nimport { ComboboxPrimitive, comboboxStyles } from '@/ds/components/Combobox';\nimport { Spinner } from '@/ds/components/Spinner/spinner';\nimport { FluidMenuItems, useFluidMenu, useFluidMenuItemRef } from '@/ds/primitives/fluid-menu';\nimport { cn } from '@/lib/utils';\n\nexport type FilterBarOptionListProps<T> = {\n getKey: (option: T) => string;\n renderOption: (option: T) => ReactNode;\n /** Explicit check mark, used where Base UI's selection state is not the source of truth (multi-value step). */\n isSelected?: (option: T) => boolean;\n isLoading?: boolean;\n error?: unknown;\n emptyText?: string;\n 'aria-label': string;\n 'aria-multiselectable'?: boolean;\n};\n\nconst FluidItem = forwardRef<HTMLDivElement, ComboboxPrimitive.Item.Props>((props, ref) => (\n <ComboboxPrimitive.Item ref={useFluidMenuItemRef(ref)} {...props} />\n));\nFluidItem.displayName = 'FilterBarOptionItem';\n\n/**\n * List/status/empty rows for a `ComboboxPrimitive.Root`, laid out like the DS\n * `Combobox` popup (fluid hover highlight, scroller around the list). Items come\n * from the root's `items`; highlight and keyboard navigation are owned by Base UI.\n */\nexport function FilterBarOptionList<T>({\n getKey,\n renderOption,\n isSelected,\n isLoading,\n error,\n emptyText = 'No results.',\n 'aria-label': ariaLabel,\n 'aria-multiselectable': multiselectable,\n}: FilterBarOptionListProps<T>) {\n const idle = !isLoading && error === undefined;\n const menu = useFluidMenu<HTMLDivElement>();\n return (\n <>\n {isLoading && (\n <ComboboxPrimitive.Status className={comboboxStyles.empty}>\n <Spinner size=\"sm\" />\n <span>Loading…</span>\n </ComboboxPrimitive.Status>\n )}\n {!isLoading && error !== undefined && (\n <ComboboxPrimitive.Status className={comboboxStyles.empty}>Couldn't load values.</ComboboxPrimitive.Status>\n )}\n <ComboboxPrimitive.Empty className={comboboxStyles.empty}>{idle ? emptyText : null}</ComboboxPrimitive.Empty>\n <div\n className={cn(\n comboboxStyles.listScroller,\n 'max-h-[min(var(--spacing-dropdown),60dvh)]',\n menu.containerClassName,\n )}\n {...menu.getContainerProps({})}\n >\n <FluidMenuItems menu={menu}>\n <ComboboxPrimitive.List\n aria-label={ariaLabel}\n aria-multiselectable={multiselectable}\n className={comboboxStyles.list}\n >\n {(option: T) => {\n const selected = isSelected?.(option) ?? false;\n return (\n <FluidItem\n key={getKey(option)}\n value={option}\n data-selected={selected || undefined}\n className={cn(comboboxStyles.item, 'min-w-0')}\n >\n <span className=\"flex min-w-0 flex-1 items-center gap-1.5 truncate\">{renderOption(option)}</span>\n <span className={comboboxStyles.itemRightSlot}>\n <span className={comboboxStyles.checkContainer}>\n {isSelected ? (\n selected && <CheckIcon className={comboboxStyles.checkIcon} />\n ) : (\n <ComboboxPrimitive.ItemIndicator>\n <CheckIcon className={comboboxStyles.checkIcon} />\n </ComboboxPrimitive.ItemIndicator>\n )}\n </span>\n </span>\n </FluidItem>\n );\n }}\n </ComboboxPrimitive.List>\n </FluidMenuItems>\n </div>\n </>\n );\n}\n","/** Every whitespace-separated term of `query` must appear in `text` (case-insensitive). */\nexport function matchesQuery(text: string, query: string): boolean {\n const terms = query.toLowerCase().split(/\\s+/).filter(Boolean);\n if (terms.length === 0) return true;\n const haystack = text.toLowerCase();\n return terms.every(term => haystack.includes(term));\n}\n\n/** Base UI `filter` for `ComboboxPrimitive.Root`, matching on the item label. */\nexport function matchesQueryFilter<T>(item: T, query: string, itemToString?: (item: T) => string): boolean {\n return matchesQuery(itemToString ? itemToString(item) : String(item), query);\n}\n","import type { LucideIcon } from 'lucide-react';\n\n/** How many values an operator takes: `none` (is empty), `one` (default) or `many` (string[]). */\nexport type FilterBarArity = 'none' | 'one' | 'many';\n\nexport type FilterBarOperator = {\n id: string;\n label: string;\n arity?: FilterBarArity;\n};\n\nexport type FilterBarOption = {\n value: string;\n label?: string;\n};\n\nexport type FilterBarSuggestionsContext = {\n query: string;\n operatorId: string;\n signal: AbortSignal;\n};\n\nexport type FilterBarSuggestionsResolver = (\n ctx: FilterBarSuggestionsContext,\n) => FilterBarOption[] | Promise<FilterBarOption[]>;\n\n/**\n * Value kind of a field. Defaults to `text`.\n * - `number`: free text must parse as a finite number; the input gets a decimal keyboard.\n * - `boolean`: strict `true` / `false` suggestions are provided unless the field supplies its own.\n */\nexport type FilterBarFieldType = 'text' | 'number' | 'boolean';\n\n/** A committed scalar value, typed according to the field's `type`. */\nexport type FilterBarScalar = string | number | boolean;\nexport type FilterBarValue = FilterBarScalar | FilterBarScalar[];\n\n/** Parses raw input text into the field's value type. Suggestion values and free text both go through this. */\nexport const parseFieldValue = (type: FilterBarFieldType | undefined, text: string): FilterBarScalar => {\n if (type === 'number') return Number(text);\n if (type === 'boolean') return text.toLowerCase() === 'true';\n return text;\n};\n\nexport type FilterBarField = {\n id: string;\n label: string;\n /** Leading icon, shown in the field step and on the chip's field segment. */\n icon?: LucideIcon;\n /** Accent (any CSS color) applied to the chip's field segment (label + icon). */\n color?: string;\n type?: FilterBarFieldType;\n /** Operator ids allowed for this field. Defaults to every root operator. */\n operators?: string[];\n /**\n * Optional value suggestions. Absent → free text.\n * - array: static list, filtered locally by the query.\n * - function: lazy resolver, called only once the value step opens (never at\n * mount), re-invoked (debounced) when the query changes. Receives an\n * AbortSignal; stale responses are discarded.\n */\n suggestions?: FilterBarOption[] | FilterBarSuggestionsResolver;\n /** When true, the value must come from suggestions (no free text). */\n strict?: boolean;\n /** Never offered in the input's field step; existing chips for it still render with the field label. */\n hidden?: boolean;\n};\n\nexport type FilterBarItem = {\n id: string;\n fieldId: string;\n operatorId: string;\n value: FilterBarValue;\n};\n\n/**\n * The filter being built in the typeahead input. Its `id` is kept when it becomes an\n * item, so the chip rendered for the draft is the very node the committed chip lands on.\n */\nexport type FilterBarDraft = {\n id: string;\n fieldId: string;\n operatorId?: string;\n /** What the draft chip showed before this step, so only the new segments animate in. */\n from: DraftStage;\n};\n\n/** How far a draft had progressed: nothing yet, its field, or its field and operator. */\nexport type DraftStage = 'none' | 'field' | 'operator';\n\n/**\n * The draft that just became an item. The provider keeps showing it until the consumer's\n * `value` includes it (URL-backed consumers update a tick later); the chip glints once, then settles.\n */\nexport type FilterBarCommit = {\n item: FilterBarItem;\n from: DraftStage;\n glint: boolean;\n};\n\nexport type FilterBarSegment = 'field' | 'operator' | 'value' | 'remove';\n","import { useEffect, useMemo, useRef, useState } from 'react';\nimport { matchesQuery } from './match-query';\nimport type { FilterBarField, FilterBarOption } from './types';\n\nconst DEBOUNCE_MS = 150;\n\nconst BOOLEAN_OPTIONS: FilterBarOption[] = [\n { value: 'true', label: 'True' },\n { value: 'false', label: 'False' },\n];\n\n/** The field's suggestions, defaulting to True/False for boolean fields. */\nexport const getFieldSuggestions = (field: FilterBarField | undefined) =>\n field?.suggestions ?? (field?.type === 'boolean' ? BOOLEAN_OPTIONS : undefined);\n\nexport type UseValueSuggestionsOptions = {\n field: FilterBarField | undefined;\n operatorId: string;\n query: string;\n /** Resolver only runs while true (the value editor is open). */\n enabled: boolean;\n};\n\nexport type UseValueSuggestionsResult = {\n options: FilterBarOption[];\n isLoading: boolean;\n error: unknown;\n /** True when the field has any suggestions (static or lazy). */\n hasSuggestions: boolean;\n};\n\n/**\n * Value suggestions for a field. Static lists are filtered locally. Lazy\n * resolvers run only while `enabled`, are debounced on `query`, receive an\n * AbortSignal, and only the latest response is applied.\n */\nexport function useValueSuggestions({\n field,\n operatorId,\n query,\n enabled,\n}: UseValueSuggestionsOptions): UseValueSuggestionsResult {\n const suggestions = getFieldSuggestions(field);\n const resolver = typeof suggestions === 'function' ? suggestions : undefined;\n const staticOptions = Array.isArray(suggestions) ? suggestions : undefined;\n\n const [remote, setRemote] = useState<FilterBarOption[]>([]);\n const [isLoading, setIsLoading] = useState(false);\n const [error, setError] = useState<unknown>(undefined);\n const requestId = useRef(0);\n // Consumers typically define the resolver inline; a new identity must not refire (and abort) the request.\n const resolverRef = useRef(resolver);\n resolverRef.current = resolver;\n const hasResolver = Boolean(resolver);\n\n useEffect(() => {\n if (!hasResolver || !enabled) {\n setRemote([]);\n setIsLoading(false);\n setError(undefined);\n return;\n }\n\n const id = ++requestId.current;\n const controller = new AbortController();\n setIsLoading(true);\n\n const timer = setTimeout(() => {\n Promise.resolve()\n .then(() => resolverRef.current?.({ query, operatorId, signal: controller.signal }) ?? [])\n .then(result => {\n if (id !== requestId.current) return;\n setRemote(result);\n setError(undefined);\n setIsLoading(false);\n })\n .catch(err => {\n if (id !== requestId.current || controller.signal.aborted) return;\n setError(err);\n setIsLoading(false);\n });\n }, DEBOUNCE_MS);\n\n return () => {\n clearTimeout(timer);\n controller.abort();\n };\n }, [hasResolver, enabled, query, operatorId]);\n\n const options = useMemo(() => {\n if (staticOptions) return staticOptions.filter(o => matchesQuery(o.label ?? o.value, query));\n return remote;\n }, [staticOptions, remote, query]);\n\n return {\n options,\n isLoading: Boolean(resolver) && isLoading,\n error,\n hasSuggestions: Boolean(suggestions),\n };\n}\n","import { useCallback, useEffect, useRef, useState } from 'react';\nimport type { KeyboardEvent } from 'react';\nimport type { FilterBarField, FilterBarOperator, FilterBarOption, FilterBarValue } from './types';\nimport { parseFieldValue } from './types';\nimport { useValueSuggestions } from './use-value-suggestions';\n\nexport type UseValueStepOptions = {\n field: FilterBarField | undefined;\n operator: FilterBarOperator | undefined;\n query: string;\n enabled: boolean;\n initialValue?: FilterBarValue;\n onCommit: (value: FilterBarValue) => void;\n};\n\nconst toStrings = (value: FilterBarValue | undefined): string[] => (Array.isArray(value) ? value.map(String) : []);\n\n/**\n * Shared value-editing logic for the typeahead value step and the chip value\n * editor. Single arity: picking an option (or Enter on free text) commits.\n * Many arity: Enter/click toggles the highlighted option; Ctrl/Meta+Enter (or\n * `commitSelection`) commits the selection. List navigation itself is owned by\n * the surrounding `ComboboxPrimitive.Root`.\n */\nexport function useValueStep({ field, operator, query, enabled, initialValue, onCommit }: UseValueStepOptions) {\n const isMany = operator?.arity === 'many';\n // Selection is tracked as option strings; values are parsed to the field type on commit.\n const [selected, setSelected] = useState<string[]>(() => toStrings(initialValue));\n const initialValueRef = useRef(initialValue);\n initialValueRef.current = initialValue;\n\n // The editor stays mounted across opens: re-seed from the current value each time it opens.\n useEffect(() => {\n setSelected(enabled ? toStrings(initialValueRef.current) : []);\n }, [enabled]);\n\n const suggestions = useValueSuggestions({ field, operatorId: operator?.id ?? '', query, enabled });\n const type = field?.type;\n const allowFreeText = !field?.strict && type !== 'boolean';\n\n const toggle = useCallback((value: string) => {\n setSelected(current => (current.includes(value) ? current.filter(v => v !== value) : [...current, value]));\n }, []);\n\n const commit = useCallback(\n (values: string | string[]) =>\n onCommit(Array.isArray(values) ? values.map(v => parseFieldValue(type, v)) : parseFieldValue(type, values)),\n [onCommit, type],\n );\n\n const handleSelect = useCallback(\n (option: FilterBarOption) => {\n if (isMany) toggle(option.value);\n else commit(option.value);\n },\n [isMany, toggle, commit],\n );\n\n const commitSelection = useCallback(() => {\n if (selected.length === 0) return false;\n commit(selected);\n return true;\n }, [selected, commit]);\n\n const canCommitFreeText = useCallback(\n (text: string) => allowFreeText && text.length > 0 && (type !== 'number' || Number.isFinite(Number(text))),\n [allowFreeText, type],\n );\n\n const commitFreeText = useCallback(() => {\n const text = query.trim();\n if (!canCommitFreeText(text)) return false;\n commit(isMany ? (selected.includes(text) ? selected : [...selected, text]) : text);\n return true;\n }, [canCommitFreeText, query, isMany, selected, commit]);\n\n /**\n * Enter handling that Base UI does not cover: Ctrl/Meta+Enter commits a\n * multi-selection; plain Enter with nothing highlighted commits free text.\n * Returns `true` when the event was consumed.\n */\n const handleKeyDown = useCallback(\n (event: KeyboardEvent, highlighted: FilterBarOption | null): boolean => {\n if (event.key !== 'Enter') return false;\n if (isMany && (event.ctrlKey || event.metaKey)) {\n event.preventDefault();\n return commitSelection() || commitFreeText();\n }\n if (highlighted === null) {\n event.preventDefault();\n return commitFreeText();\n }\n return false;\n },\n [isMany, commitSelection, commitFreeText],\n );\n\n return {\n isMany,\n selected,\n toggle,\n options: suggestions.options,\n isLoading: suggestions.isLoading,\n error: suggestions.error,\n hasSuggestions: suggestions.hasSuggestions,\n allowFreeText,\n /** True when the current query can be committed as free text (non-empty, numeric when the field is a number). */\n canCommitQuery: canCommitFreeText(query.trim()),\n handleSelect,\n handleKeyDown,\n commitSelection,\n commitFreeText,\n };\n}\n","/* eslint-disable react-refresh/only-export-components */\nimport type { BaseUIEvent } from '@base-ui/react/types';\nimport { LockIcon, PencilIcon, SearchIcon, XIcon } from 'lucide-react';\nimport type { LucideIcon } from 'lucide-react';\nimport { createContext, useCallback, useContext, useEffect, useMemo, useRef, useState } from 'react';\nimport type { AnimationEvent, CSSProperties, ComponentProps, KeyboardEvent, MouseEvent, ReactNode } from 'react';\nimport { emptyValueFor, useFilterBarContext } from './filter-bar-context';\nimport { FilterBarOptionList } from './filter-bar-option-list';\nimport { matchesQueryFilter } from './match-query';\nimport type {\n DraftStage,\n FilterBarField,\n FilterBarFieldType,\n FilterBarItem,\n FilterBarOperator,\n FilterBarOption,\n FilterBarScalar,\n FilterBarSegment,\n FilterBarValue,\n} from './types';\nimport { useValueStep } from './use-value-step';\nimport { getFieldSuggestions } from './use-value-suggestions';\nimport { Button } from '@/ds/components/Button/Button';\nimport { ComboboxPrimitive, comboboxStyles } from '@/ds/components/Combobox';\nimport { Kbd } from '@/ds/components/Kbd/kbd';\nimport { controlHeight } from '@/ds/primitives/control-size';\nimport type { ControlSize } from '@/ds/primitives/control-size';\nimport { FLOATING_POSITION_METHOD } from '@/ds/primitives/floating';\nimport { inputSurfaceAndFocusWithinStyle } from '@/ds/primitives/form-element';\nimport './filter-bar-chip.css';\nimport { MENU_SIDE_OFFSET } from '@/ds/primitives/menu-item';\nimport { usePortalContainer } from '@/ds/primitives/portal-container';\nimport { useIsApplePlatform } from '@/hooks/use-keyboard-shortcut-label';\nimport { cn } from '@/lib/utils';\n\n// `filter-bar-segment` carries the left-to-right entrance (see filter-bar-chip.css).\n// No `first:`/`last:` rounding here: a segment is not reliably the first or last child.\n// Base UI interleaves a hidden input after every combobox and wraps an open trigger in\n// focus guards, so the rounded end would silently drop the moment a popup opened and the\n// segment's own state fill — the one state a chip has — would paint square corners\n// straight through the chip's pill edge. The chip clips instead (see `chipClass`).\nexport const segmentClass = cn(\n 'filter-bar-segment flex max-w-48 min-w-0 items-center gap-1 overflow-hidden px-2 text-label whitespace-nowrap outline-none',\n);\n\n// A filter bar is a dense row: it sits above a list, carries many chips at once, and never\n// competes with the page's own controls. Chip and typeahead pill read this one rung so they\n// stay the same height by construction rather than by two call sites agreeing.\nexport const FILTER_BAR_CONTROL_SIZE: ControlSize = 'sm';\n\n// A chip is a field whose value is edited in place, so it wears the field material rather than a\n// fill rung: on a light canvas a `bg-fill` chip read as a grey slab beside the white typeahead\n// pill it belongs to. The segments layer their own state over that card, which is why the chip\n// keeps `divide-border` for the internal seams and takes its outer edge from the material's rim.\n// `overflow-hidden` is what gives every segment its end cap: the chip is the only node that\n// knows where the pill ends, and it keeps knowing it while a framework injects children.\nexport const chipClass = cn(\n 'filter-bar-chip relative flex max-w-full items-stretch divide-x divide-border overflow-hidden rounded-full',\n inputSurfaceAndFocusWithinStyle,\n controlHeight[FILTER_BAR_CONTROL_SIZE],\n);\n\nexport const editableSegmentClass = cn(\n segmentClass,\n 'cursor-pointer hover:bg-fill-subtle hover:text-foreground',\n 'focus-visible:bg-fill-hover focus-visible:text-foreground data-[popup-open]:bg-fill-hover data-[popup-open]:text-foreground',\n);\n\n/** Field label with its optional leading icon — used by chips, the draft chip and field option lists. */\nexport function FilterBarFieldLabel({ field, label }: { field: FilterBarField | undefined; label?: string }) {\n const Icon = field?.icon;\n return (\n <>\n {Icon && <Icon className=\"size-[1.1em] shrink-0\" aria-hidden />}\n <span className=\"truncate\">{label ?? field?.label}</span>\n </>\n );\n}\n\n/** Inline style carrying a field's accent onto its field segment (text + icon). */\nexport const fieldSegmentAccentStyle = (field: FilterBarField | undefined) =>\n field?.color ? { color: field.color } : undefined;\n\n/** Segments a chip already showed before its latest step, given how far its draft had got. */\nconst settledSegments = (from: DraftStage, operatorImplied: boolean): number => {\n if (from === 'none') return 0;\n if (from === 'field' || operatorImplied) return 1;\n return 2;\n};\n\nexport const formatValue = (value: FilterBarValue, field: FilterBarField | undefined): string => {\n const suggestions = getFieldSuggestions(field);\n const options = Array.isArray(suggestions) ? suggestions : undefined;\n const label = (v: FilterBarScalar) => options?.find(o => o.value === String(v))?.label ?? String(v);\n return Array.isArray(value) ? value.map(label).join(', ') : label(value);\n};\n\ntype ChipContext = {\n item: FilterBarItem;\n index: number;\n field: FilterBarField | undefined;\n operator: FilterBarOperator | undefined;\n openSegment: FilterBarSegment | null;\n setOpenSegment: (segment: FilterBarSegment | null) => void;\n readOnly: boolean;\n /** Filter still being built in the input: segments are inert labels. */\n draft: boolean;\n /** Filter already removed from the value, playing its exit: segments are inert labels. */\n leaving: boolean;\n /** The field allows a single operator, so the operator segment is not shown. */\n operatorImplied: boolean;\n};\n\nconst ChipContext = createContext<ChipContext | null>(null);\nconst useChip = () => {\n const chip = useContext(ChipContext);\n if (!chip) throw new Error('FilterBarChip segments must be rendered inside <FilterBarChip>.');\n return chip;\n};\n\nexport type FilterBarChipProps = {\n item: FilterBarItem;\n /** Locked chip: plain labels, no editors, no remove button. */\n readOnly?: boolean;\n /** `false` keeps the chip editable but drops the remove button and ignores Backspace/Delete. */\n removable?: boolean;\n /**\n * Render the filter being built in the input (see `FilterBarContextValue.draft`): only\n * the picked segments show, as inert labels. Keyed by the draft id, the same element\n * carries on as the editable chip once the value is committed.\n */\n draft?: boolean;\n className?: string;\n /** Custom segment composition; defaults to Field · Operator · Value · Remove. */\n children?: ReactNode;\n};\n\nfunction isInsidePopup(target: EventTarget | null) {\n return target instanceof Element && Boolean(target.closest('[data-slot=\"filter-bar-editor\"]'));\n}\n\nexport function FilterBarChip({\n item,\n readOnly = false,\n removable = true,\n draft = false,\n className,\n children,\n}: FilterBarChipProps) {\n const ctx = useFilterBarContext();\n const [openSegment, setOpenSegment] = useState<FilterBarSegment | null>(null);\n const field = ctx.getField(item.fieldId);\n const operator = ctx.getOperator(item.operatorId);\n const index = ctx.items.findIndex(i => i.id === item.id);\n const rootRef = useRef<HTMLDivElement>(null);\n const leaving = ctx.leaving.has(item.id);\n\n const pinned = !draft && (readOnly || !removable);\n const { registerNonRemovable, settleRemove } = ctx;\n useEffect(() => {\n registerNonRemovable(item.id, pinned);\n return () => registerNonRemovable(item.id, false);\n }, [registerNonRemovable, item.id, pinned]);\n\n // A leaving chip is released once its exit animation has finished. With nothing to\n // animate (no `interpolate-size`, reduced motion, jsdom) it is released straight away.\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(item.id);\n return;\n }\n let cancelled = false;\n Promise.all(animations.map(animation => animation.finished))\n .then(() => {\n if (!cancelled) settleRemove(item.id);\n })\n // Animations cancelled by an unmount reject `finished`; nothing left to settle.\n .catch(() => {});\n return () => {\n cancelled = true;\n };\n }, [leaving, item.id, settleRemove]);\n\n const operatorImplied = field ? ctx.getFieldOperators(field).length === 1 : false;\n const label = [\n field?.label ?? item.fieldId,\n operatorImplied ? '' : (operator?.label ?? item.operatorId),\n draft ? '' : formatValue(item.value, field),\n ]\n .filter(Boolean)\n .join(' ');\n\n // The provider records where each draft step (and the final commit) started from, so\n // the entrance stagger resumes after the segments already on screen and the chip\n // glints once when it lands as a filter (see filter-bar-chip.css).\n const commit = !draft && ctx.lastCommit?.item.id === item.id ? ctx.lastCommit : null;\n const from = draft ? (ctx.draft?.from ?? 'none') : (commit?.from ?? 'none');\n const settled = settledSegments(from, operatorImplied);\n const shine = commit?.glint ?? false;\n\n const handleKeyDown = useCallback(\n (event: KeyboardEvent<HTMLDivElement>) => {\n if (readOnly || draft || leaving || isInsidePopup(event.target)) return;\n const segments = Array.from(rootRef.current?.querySelectorAll<HTMLElement>('[data-filter-bar-segment]') ?? []);\n const current = segments.findIndex(el => el === event.target);\n\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 + 1, 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 if (!removable) return;\n event.preventDefault();\n ctx.removeItem(item.id);\n ctx.focusAfterRemove(index);\n return;\n default:\n }\n },\n [readOnly, draft, leaving, removable, ctx, index, item.id],\n );\n\n const chipValue = useMemo<ChipContext>(\n () => ({ item, index, field, operator, openSegment, setOpenSegment, readOnly, draft, leaving, operatorImplied }),\n [item, index, field, operator, openSegment, readOnly, draft, leaving, operatorImplied],\n );\n const content = children ?? (\n <>\n <FilterBarChipField />\n <FilterBarChipOperator />\n <FilterBarChipValue />\n {removable && <FilterBarChipRemove />}\n </>\n );\n return (\n <ChipContext.Provider value={chipValue}>\n <div\n ref={rootRef}\n role=\"group\"\n aria-label={label}\n // The input already announces the draft's progress through its placeholder.\n aria-hidden={draft || leaving || undefined}\n data-slot=\"filter-bar-chip\"\n data-draft={draft || undefined}\n data-readonly={readOnly || undefined}\n data-leaving={leaving || undefined}\n data-shine={(shine && !leaving) || undefined}\n className={cn(chipClass, leaving && 'pointer-events-none', className)}\n style={\n {\n '--filter-bar-segments-settled': settled,\n '--filter-bar-chip-shine': field?.color ?? 'currentColor',\n } as CSSProperties\n }\n onKeyDown={handleKeyDown}\n onClick={(event: MouseEvent) => event.stopPropagation()}\n onAnimationEnd={(event: AnimationEvent) => {\n if (event.animationName === 'filter-bar-chip-shine') ctx.settleCommit();\n }}\n >\n {readOnly && (\n <span\n className={cn(segmentClass, 'pr-0 text-muted-foreground [--filter-bar-segment-padding:0.5rem_0]')}\n title=\"This filter is locked\"\n >\n <LockIcon className=\"size-[1.1em]\" />\n </span>\n )}\n {content}\n </div>\n </ChipContext.Provider>\n );\n}\n\ntype SegmentComboboxProps<T> = {\n segment: Exclude<FilterBarSegment, 'remove'>;\n label: string;\n ariaLabel: string;\n items: readonly T[];\n itemToString: (item: T) => string;\n /** `null` when `items` are already filtered. */\n filter: null | ((item: T, query: string, itemToString?: (item: T) => string) => boolean);\n /** Current selection, surfaced through Base UI's `ItemIndicator`. */\n value?: T | null;\n query: string;\n onQueryChange: (query: string) => void;\n onSelect: (item: T) => void;\n onOpen?: () => void;\n /** Popup content: typically a `SegmentSearchInput` followed by a `FilterBarOptionList`. */\n children: ReactNode;\n};\n\n// Highlighted item of the enclosing SegmentCombobox, for popup inputs that route Enter.\nconst SegmentPopupContext = createContext<{ highlighted: unknown }>({ highlighted: null });\n\ntype SegmentSearchInputProps<T> = {\n placeholder: string;\n /** Leading icon. Defaults to a search glass; free-text editing uses a pencil. */\n icon?: LucideIcon;\n inputMode?: ComponentProps<'input'>['inputMode'];\n onKeyDown?: (event: BaseUIEvent<KeyboardEvent<HTMLInputElement>>, highlighted: T | null) => void;\n};\n\n/** The search/free-text input at the top of a segment popup. */\nfunction SegmentSearchInput<T>({\n placeholder,\n icon: Icon = SearchIcon,\n inputMode,\n onKeyDown,\n}: SegmentSearchInputProps<T>) {\n const { highlighted } = useContext(SegmentPopupContext);\n return (\n <div className={comboboxStyles.searchContainer}>\n <Icon className={comboboxStyles.searchIcon} />\n <ComboboxPrimitive.Input\n className={comboboxStyles.searchInput}\n placeholder={placeholder}\n inputMode={inputMode}\n onKeyDown={event => onKeyDown?.(event, highlighted as T | null)}\n />\n </div>\n );\n}\n\n/**\n * A chip segment: a button trigger that opens an option popup. The editor\n * owning the segment supplies items, filtering, selection routing and the\n * popup content.\n */\nfunction SegmentCombobox<T>({\n segment,\n label,\n ariaLabel,\n items,\n itemToString,\n filter,\n value = null,\n query,\n onQueryChange,\n onSelect,\n onOpen,\n children,\n}: SegmentComboboxProps<T>) {\n const ctx = useFilterBarContext();\n const chip = useChip();\n const container = usePortalContainer();\n const open = chip.openSegment === segment;\n const [highlighted, setHighlighted] = useState<T | null>(null);\n\n const isField = segment === 'field';\n const content = isField ? (\n <FilterBarFieldLabel field={chip.field} label={label} />\n ) : (\n <span className=\"truncate\">{label}</span>\n );\n\n if (chip.readOnly || chip.draft || chip.leaving) {\n return (\n <span\n className={cn(segmentClass, isField && 'text-foreground')}\n style={isField ? fieldSegmentAccentStyle(chip.field) : undefined}\n title={label}\n >\n {content}\n </span>\n );\n }\n\n return (\n <ComboboxPrimitive.Root<T>\n items={items}\n itemToStringLabel={itemToString}\n filter={filter}\n value={value}\n onValueChange={(item, details) => {\n // The editor decides what a pick means (and when to close); Base UI must not keep it.\n details.cancel();\n if (item !== null) onSelect(item);\n }}\n inputValue={query}\n onInputValueChange={(next, details) => {\n if (details.reason === 'input-change') onQueryChange(next);\n }}\n onItemHighlighted={item => setHighlighted(item ?? null)}\n open={open}\n onOpenChange={next => {\n if (next) onOpen?.();\n else onQueryChange('');\n chip.setOpenSegment(next ? segment : null);\n }}\n // See FilterBarInput: the runtime supports 'always' although ComboboxRoot types it as boolean.\n autoHighlight={'always' as unknown as boolean}\n modal={false}\n >\n <ComboboxPrimitive.Trigger\n ref={el => ctx.registerSegment(chip.item.id, segment, el)}\n render={\n <button\n type=\"button\"\n data-filter-bar-segment=\"\"\n tabIndex={segment === 'value' ? 0 : -1}\n aria-label={`${ariaLabel}: ${label}`}\n title={label}\n className={cn(editableSegmentClass, isField && 'text-foreground')}\n style={isField ? fieldSegmentAccentStyle(chip.field) : undefined}\n />\n }\n >\n {content}\n </ComboboxPrimitive.Trigger>\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 className={cn(comboboxStyles.popup, 'min-w-44')} data-slot=\"filter-bar-editor\">\n <SegmentPopupContext.Provider value={{ highlighted }}>{children}</SegmentPopupContext.Provider>\n </ComboboxPrimitive.Popup>\n </ComboboxPrimitive.Positioner>\n </ComboboxPrimitive.Portal>\n </ComboboxPrimitive.Root>\n );\n}\n\nconst fieldLabel = (field: FilterBarField) => field.label;\nconst operatorLabel = (operator: FilterBarOperator) => operator.label;\nconst optionLabel = (option: FilterBarOption) => option.label ?? option.value;\n\nfunction FieldEditor() {\n const ctx = useFilterBarContext();\n const chip = useChip();\n const [query, setQuery] = useState('');\n\n const onSelect = useCallback(\n (field: FilterBarField) => {\n const allowed = ctx.getFieldOperators(field);\n const nextOperator = allowed.find(o => o.id === chip.item.operatorId) ?? allowed[0];\n const arityChanged = nextOperator?.arity !== chip.operator?.arity;\n ctx.updateItem(chip.item.id, {\n fieldId: field.id,\n operatorId: nextOperator?.id ?? chip.item.operatorId,\n value: arityChanged || field.id !== chip.item.fieldId ? emptyValueFor(nextOperator) : chip.item.value,\n });\n chip.setOpenSegment(null);\n },\n [ctx, chip],\n );\n\n return (\n <SegmentCombobox<FilterBarField>\n segment=\"field\"\n ariaLabel=\"Field\"\n label={chip.field?.label ?? chip.item.fieldId}\n items={ctx.fields}\n itemToString={fieldLabel}\n filter={matchesQueryFilter}\n value={chip.field}\n query={query}\n onQueryChange={setQuery}\n onSelect={onSelect}\n >\n <SegmentSearchInput placeholder=\"Change field…\" />\n <FilterBarOptionList<FilterBarField>\n aria-label=\"Fields\"\n getKey={f => f.id}\n renderOption={f => <FilterBarFieldLabel field={f} />}\n emptyText=\"No matching field.\"\n />\n </SegmentCombobox>\n );\n}\n\nfunction OperatorEditor() {\n const ctx = useFilterBarContext();\n const chip = useChip();\n const [query, setQuery] = useState('');\n const options = useMemo(() => (chip.field ? ctx.getFieldOperators(chip.field) : ctx.operators), [ctx, chip.field]);\n\n const onSelect = useCallback(\n (operator: FilterBarOperator) => {\n const arityChanged = (operator.arity ?? 'one') !== (chip.operator?.arity ?? 'one');\n ctx.updateItem(chip.item.id, {\n operatorId: operator.id,\n value: arityChanged ? emptyValueFor(operator) : chip.item.value,\n });\n chip.setOpenSegment(null);\n },\n [ctx, chip],\n );\n\n return (\n <SegmentCombobox<FilterBarOperator>\n segment=\"operator\"\n ariaLabel=\"Operator\"\n label={chip.operator?.label ?? chip.item.operatorId}\n items={options}\n itemToString={operatorLabel}\n filter={matchesQueryFilter}\n value={chip.operator}\n query={query}\n onQueryChange={setQuery}\n onSelect={onSelect}\n >\n <SegmentSearchInput placeholder=\"Change 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 </SegmentCombobox>\n );\n}\n\nfunction ValueEditor() {\n const ctx = useFilterBarContext();\n const chip = useChip();\n const open = chip.openSegment === 'value';\n const [query, setQuery] = useState('');\n\n const close = useCallback(() => chip.setOpenSegment(null), [chip]);\n const onCommit = useCallback(\n (value: FilterBarValue) => {\n ctx.updateItem(chip.item.id, { value });\n close();\n },\n [ctx, chip.item.id, close],\n );\n\n const step = useValueStep({\n field: chip.field,\n operator: chip.operator,\n query,\n enabled: open,\n initialValue: chip.item.value,\n onCommit,\n });\n\n const ValueInput = VALUE_INPUTS[chip.field?.type ?? 'text'];\n\n return (\n <SegmentCombobox<FilterBarOption>\n segment=\"value\"\n ariaLabel=\"Value\"\n label={formatValue(chip.item.value, chip.field) || '…'}\n items={step.options}\n itemToString={optionLabel}\n filter={null}\n query={query}\n onQueryChange={setQuery}\n onSelect={step.handleSelect}\n // Prefill free-text values only; with suggestions, the current value is shown as checked instead.\n onOpen={() =>\n setQuery(!Array.isArray(chip.item.value) && !chip.field?.suggestions ? String(chip.item.value) : '')\n }\n >\n <ValueInput step={step} onCancel={close} />\n </SegmentCombobox>\n );\n}\n\ntype ValueInputProps = {\n step: ReturnType<typeof useValueStep>;\n onCancel: () => void;\n};\n\n/** Suggestion list + multi-select footer, shared by every value input. */\nfunction ValueOptions({ step, onCancel }: ValueInputProps) {\n const chip = useChip();\n const modEnterLabel = useIsApplePlatform() ? '⌘↵' : 'Ctrl ↵';\n return (\n <>\n {step.hasSuggestions && (\n <FilterBarOptionList<FilterBarOption>\n aria-label=\"Values\"\n aria-multiselectable={step.isMany || undefined}\n getKey={o => o.value}\n renderOption={o => o.label ?? o.value}\n isSelected={o => (step.isMany ? step.selected.includes(o.value) : String(chip.item.value) === o.value)}\n isLoading={step.isLoading}\n error={step.error}\n emptyText={step.allowFreeText ? 'No suggestions — press Enter to use your text.' : 'No matching value.'}\n />\n )}\n {step.isMany && (\n <div className=\"border-border flex items-center justify-end gap-1 border-t p-1\">\n <Button size=\"sm\" variant=\"ghost\" onClick={onCancel}>\n Cancel\n </Button>\n <Button size=\"sm\" variant=\"default\" onClick={() => step.commitSelection() || step.commitFreeText()}>\n Done\n <Kbd size=\"xs\">{modEnterLabel}</Kbd>\n </Button>\n </div>\n )}\n </>\n );\n}\n\n/** Free-text (optionally suggestion-backed) value input; text and number share it. */\nfunction FreeTextValueInput({\n step,\n onCancel,\n inputMode,\n noun,\n}: ValueInputProps & { inputMode?: ComponentProps<'input'>['inputMode']; noun: string }) {\n return (\n <>\n <SegmentSearchInput<FilterBarOption>\n icon={step.hasSuggestions ? SearchIcon : PencilIcon}\n inputMode={inputMode}\n placeholder={\n step.hasSuggestions\n ? step.allowFreeText\n ? `Search or type a ${noun}…`\n : `Search ${noun}s…`\n : `Type a ${noun}…`\n }\n onKeyDown={(event, highlighted) => {\n const highlightedOption = step.hasSuggestions ? highlighted : null;\n const handled = step.handleKeyDown(event, highlightedOption);\n // Base UI closes on Enter when nothing is highlighted; a rejected free-text value must keep the editor open.\n if (handled || (event.key === 'Enter' && highlightedOption === null)) event.preventBaseUIHandler();\n }}\n />\n <ValueOptions step={step} onCancel={onCancel} />\n </>\n );\n}\n\nfunction TextValueInput(props: ValueInputProps) {\n return <FreeTextValueInput {...props} noun=\"value\" />;\n}\n\nfunction NumberValueInput(props: ValueInputProps) {\n return <FreeTextValueInput {...props} inputMode=\"decimal\" noun=\"number\" />;\n}\n\n/** Select-like: no search input, just the True/False (or custom) options. */\nfunction BooleanValueInput(props: ValueInputProps) {\n return <ValueOptions {...props} />;\n}\n\nconst VALUE_INPUTS: Record<FilterBarFieldType, (props: ValueInputProps) => ReactNode> = {\n text: TextValueInput,\n number: NumberValueInput,\n boolean: BooleanValueInput,\n};\n\nexport function FilterBarChipField() {\n return <FieldEditor />;\n}\n\nexport function FilterBarChipOperator() {\n const chip = useChip();\n if (chip.operatorImplied) return null;\n if (chip.draft && !chip.operator) return null;\n return <OperatorEditor />;\n}\n\nexport function FilterBarChipValue() {\n const chip = useChip();\n if (chip.draft || (chip.operator?.arity ?? 'one') === 'none') return null;\n return <ValueEditor />;\n}\n\nexport function FilterBarChipRemove() {\n const ctx = useFilterBarContext();\n const chip = useChip();\n if (chip.readOnly || chip.draft) return null;\n const removeClass = cn(editableSegmentClass, 'px-1.5 text-muted-foreground [--filter-bar-segment-padding:0.375rem]');\n if (chip.leaving) {\n // Keep the × on screen so it folds away with the other segments.\n return (\n <span className={removeClass}>\n <XIcon className=\"size-[1.1em]\" />\n </span>\n );\n }\n const label = `Remove ${chip.field?.label ?? chip.item.fieldId} filter`;\n return (\n <button\n type=\"button\"\n data-filter-bar-segment=\"\"\n tabIndex={-1}\n aria-label={label}\n title={label}\n ref={el => ctx.registerSegment(chip.item.id, 'remove', el)}\n className={removeClass}\n onClick={() => {\n ctx.removeItem(chip.item.id);\n ctx.focusAfterRemove(chip.index);\n }}\n >\n <XIcon className=\"size-[1.1em]\" />\n </button>\n );\n}\n\nFilterBarChip.Field = FilterBarChipField;\nFilterBarChip.Operator = FilterBarChipOperator;\nFilterBarChip.Value = FilterBarChipValue;\nFilterBarChip.Remove = FilterBarChipRemove;\n"],"names":["createContext","useContext","useRef","useState","useCallback","useMemo","items","leaving","value","item","forwardRef","jsx","ComboboxPrimitive","useFluidMenuItemRef","useFluidMenu","jsxs","Fragment","comboboxStyles","Spinner","cn","FluidMenuItems","CheckIcon","useEffect","inputSurfaceAndFocusWithinStyle","controlHeight","LockIcon","SearchIcon","usePortalContainer","MENU_SIDE_OFFSET","FLOATING_POSITION_METHOD","useIsApplePlatform","Button","Kbd","PencilIcon","XIcon"],"mappings":"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"}
|