@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
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
const parseFieldValue = (type, text) => {
|
|
4
|
+
if (type === "number") return Number(text);
|
|
5
|
+
if (type === "boolean") return text.toLowerCase() === "true";
|
|
6
|
+
return text;
|
|
7
|
+
};
|
|
8
|
+
const isFilterBarGroup = (node) => "kind" in node && node.kind === "group";
|
|
9
|
+
|
|
10
|
+
exports.isFilterBarGroup = isFilterBarGroup;
|
|
11
|
+
exports.parseFieldValue = parseFieldValue;
|
|
12
|
+
//# sourceMappingURL=types-Ns4ZNp-g.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types-Ns4ZNp-g.cjs","sources":["../src/ds/components/FilterBar/types.ts"],"sourcesContent":["import type { LucideIcon } from 'lucide-react';\nimport type { ReactNode } from '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 /** Leading node (avatar, swatch, icon) rendered before the label in value lists. */\n start?: ReactNode;\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 * Free-text entry point. The field stays offered in the input's field step whatever the\n * query, so typed text never dead-ends on \"No matching field\"; picking it with text typed\n * commits that text as the value under the field's first operator, skipping both steps.\n * List it first to make it the default landing option.\n */\n search?: boolean;\n};\n\nexport type FilterBarItem = {\n id: string;\n fieldId: string;\n operatorId: string;\n value: FilterBarValue;\n};\n\nexport type FilterBarLogic = 'and' | 'or';\n\n/**\n * Sub-filters joined by a single logic connector. Groups nest recursively (bounded by the\n * bar's `maxDepth`); a root-level group renders as one \"Advanced filter\" chip whose popover\n * edits the whole subtree.\n */\nexport type FilterBarGroup = {\n id: string;\n kind: 'group';\n logic: FilterBarLogic;\n nodes: FilterBarNode[];\n};\n\nexport type FilterBarNode = FilterBarItem | FilterBarGroup;\n\n/**\n * Tree-shaped value: root nodes joined by `logic`, groups nest their own. The bar itself\n * always joins root nodes with `'and'`; `logic` is kept on the type for symmetry with groups.\n */\nexport type FilterBarExpression = {\n logic: FilterBarLogic;\n nodes: FilterBarNode[];\n};\n\nexport const isFilterBarGroup = (node: FilterBarNode): node is FilterBarGroup =>\n 'kind' in node && node.kind === 'group';\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 /** Group the draft is being built inside; `undefined` = root. */\n groupId?: string;\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 /** Group the item was committed into; `undefined` = root. */\n groupId?: string;\n};\n\nexport type FilterBarSegment = 'field' | 'operator' | 'value' | 'remove';\n"],"names":[],"mappings":";;AAyCO,MAAM,eAAA,GAAkB,CAAC,IAAA,EAAsC,IAAA,KAAkC;AACtG,EAAA,IAAI,IAAA,KAAS,QAAA,EAAU,OAAO,MAAA,CAAO,IAAI,CAAA;AACzC,EAAA,IAAI,IAAA,KAAS,SAAA,EAAW,OAAO,IAAA,CAAK,aAAY,KAAM,MAAA;AACtD,EAAA,OAAO,IAAA;AACT;AAiEO,MAAM,mBAAmB,CAAC,IAAA,KAC/B,MAAA,IAAU,IAAA,IAAQ,KAAK,IAAA,KAAS;;;;;"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@mastra/playground-ui",
|
|
3
3
|
"type": "module",
|
|
4
|
-
"version": "
|
|
4
|
+
"version": "57.0.0-alpha.0",
|
|
5
5
|
"description": "Mastra Playground components",
|
|
6
6
|
"sideEffects": [
|
|
7
7
|
"**/*.css"
|
|
@@ -211,8 +211,8 @@
|
|
|
211
211
|
"react": ">=19.0.0",
|
|
212
212
|
"react-dom": ">=19.0.0",
|
|
213
213
|
"tailwindcss": "^4.0.0",
|
|
214
|
-
"@mastra/client-js": "^1.
|
|
215
|
-
"@mastra/react": "1.6.0"
|
|
214
|
+
"@mastra/client-js": "^1.48.0-alpha.0",
|
|
215
|
+
"@mastra/react": "1.6.1-alpha.0"
|
|
216
216
|
},
|
|
217
217
|
"devDependencies": {
|
|
218
218
|
"@storybook/addon-a11y": "^10.4.1",
|
|
@@ -255,10 +255,10 @@
|
|
|
255
255
|
"vite-plugin-lib-inject-css": "^2.2.2",
|
|
256
256
|
"vitest": "4.1.11",
|
|
257
257
|
"@internal/lint": "0.0.134",
|
|
258
|
-
"@mastra/client-js": "^1.
|
|
258
|
+
"@mastra/client-js": "^1.48.0-alpha.0",
|
|
259
|
+
"@mastra/core": "1.69.0-alpha.0",
|
|
259
260
|
"@mastra/memory": "1.31.0",
|
|
260
|
-
"@mastra/
|
|
261
|
-
"@mastra/react": "1.6.0"
|
|
261
|
+
"@mastra/react": "1.6.1-alpha.0"
|
|
262
262
|
},
|
|
263
263
|
"homepage": "https://mastra.ai",
|
|
264
264
|
"repository": {
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"EmptyState-CdRjFB06.cjs","sources":["../src/ds/components/EmptyState/EmptyState.tsx"],"sourcesContent":["import * as React from 'react';\nimport { cn } from '@/lib/utils';\n\nexport type EmptyStateProps = {\n iconSlot: React.ReactNode;\n titleSlot: React.ReactNode;\n descriptionSlot?: React.ReactNode;\n actionSlot?: React.ReactNode;\n className?: string;\n as?: 'h1' | 'h2' | 'h3' | 'h4' | 'h5' | 'h6';\n};\n\nexport function EmptyState({\n iconSlot,\n titleSlot,\n descriptionSlot,\n actionSlot,\n className,\n as: HeadingTag = 'h3',\n}: EmptyStateProps) {\n return (\n <div\n className={cn(\n 'flex flex-col items-center justify-center px-4 py-6 text-center',\n 'duration-normal transition-opacity ease-out-custom',\n className,\n )}\n >\n {iconSlot && <div className=\"mb-3\">{iconSlot}</div>}\n <HeadingTag className=\"text-subheading text-foreground\">{titleSlot}</HeadingTag>\n {descriptionSlot && <p className=\"text-caption text-muted-foreground mt-1.5 max-w-md\">{descriptionSlot}</p>}\n {actionSlot && <div className=\"mt-4\">{actionSlot}</div>}\n </div>\n );\n}\n"],"names":["jsxs","cn","jsx"],"mappings":";;;;;AAYO,SAAS,UAAA,CAAW;AAAA,EACzB,QAAA;AAAA,EACA,SAAA;AAAA,EACA,eAAA;AAAA,EACA,UAAA;AAAA,EACA,SAAA;AAAA,EACA,IAAI,UAAA,GAAa;AACnB,CAAA,EAAoB;AAClB,EAAA,uBACEA,eAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,SAAA,EAAWC,WAAA;AAAA,QACT,iEAAA;AAAA,QACA,oDAAA;AAAA,QACA;AAAA,OACF;AAAA,MAEC,QAAA,EAAA;AAAA,QAAA,QAAA,oBAAYC,cAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,MAAA,EAAQ,QAAA,EAAA,QAAA,EAAS,CAAA;AAAA,wBAC7CA,cAAA,CAAC,UAAA,EAAA,EAAW,SAAA,EAAU,iCAAA,EAAmC,QAAA,EAAA,SAAA,EAAU,CAAA;AAAA,QAClE,eAAA,oBAAmBA,cAAA,CAAC,GAAA,EAAA,EAAE,SAAA,EAAU,sDAAsD,QAAA,EAAA,eAAA,EAAgB,CAAA;AAAA,QACtG,UAAA,oBAAcA,cAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,QAAQ,QAAA,EAAA,UAAA,EAAW;AAAA;AAAA;AAAA,GACnD;AAEJ;;;;"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"EmptyState-UWXhBp5U.js","sources":["../src/ds/components/EmptyState/EmptyState.tsx"],"sourcesContent":["import * as React from 'react';\nimport { cn } from '@/lib/utils';\n\nexport type EmptyStateProps = {\n iconSlot: React.ReactNode;\n titleSlot: React.ReactNode;\n descriptionSlot?: React.ReactNode;\n actionSlot?: React.ReactNode;\n className?: string;\n as?: 'h1' | 'h2' | 'h3' | 'h4' | 'h5' | 'h6';\n};\n\nexport function EmptyState({\n iconSlot,\n titleSlot,\n descriptionSlot,\n actionSlot,\n className,\n as: HeadingTag = 'h3',\n}: EmptyStateProps) {\n return (\n <div\n className={cn(\n 'flex flex-col items-center justify-center px-4 py-6 text-center',\n 'duration-normal transition-opacity ease-out-custom',\n className,\n )}\n >\n {iconSlot && <div className=\"mb-3\">{iconSlot}</div>}\n <HeadingTag className=\"text-subheading text-foreground\">{titleSlot}</HeadingTag>\n {descriptionSlot && <p className=\"text-caption text-muted-foreground mt-1.5 max-w-md\">{descriptionSlot}</p>}\n {actionSlot && <div className=\"mt-4\">{actionSlot}</div>}\n </div>\n );\n}\n"],"names":[],"mappings":";;;AAYO,SAAS,UAAA,CAAW;AAAA,EACzB,QAAA;AAAA,EACA,SAAA;AAAA,EACA,eAAA;AAAA,EACA,UAAA;AAAA,EACA,SAAA;AAAA,EACA,IAAI,UAAA,GAAa;AACnB,CAAA,EAAoB;AAClB,EAAA,uBACE,IAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,SAAA,EAAW,EAAA;AAAA,QACT,iEAAA;AAAA,QACA,oDAAA;AAAA,QACA;AAAA,OACF;AAAA,MAEC,QAAA,EAAA;AAAA,QAAA,QAAA,oBAAY,GAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,MAAA,EAAQ,QAAA,EAAA,QAAA,EAAS,CAAA;AAAA,wBAC7C,GAAA,CAAC,UAAA,EAAA,EAAW,SAAA,EAAU,iCAAA,EAAmC,QAAA,EAAA,SAAA,EAAU,CAAA;AAAA,QAClE,eAAA,oBAAmB,GAAA,CAAC,GAAA,EAAA,EAAE,SAAA,EAAU,sDAAsD,QAAA,EAAA,eAAA,EAAgB,CAAA;AAAA,QACtG,UAAA,oBAAc,GAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,QAAQ,QAAA,EAAA,UAAA,EAAW;AAAA;AAAA;AAAA,GACnD;AAEJ;;;;"}
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
|
-
const jsxRuntime = require('react/jsx-runtime');
|
|
4
|
-
const lucideReact = require('lucide-react');
|
|
5
|
-
|
|
6
|
-
function ErrorState({ title, message, action }) {
|
|
7
|
-
return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex h-[30vh] items-center justify-center", children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col items-center justify-center px-6 py-10 text-center", children: [
|
|
8
|
-
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "mb-4", children: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.CircleXIcon, { className: "size-8 text-red-900" }) }),
|
|
9
|
-
/* @__PURE__ */ jsxRuntime.jsx("h3", { className: "text-subheading text-muted-foreground", children: title }),
|
|
10
|
-
/* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-body text-placeholder mt-1.5 max-w-md", children: message }),
|
|
11
|
-
action && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex items-center justify-center pt-4", children: action })
|
|
12
|
-
] }) });
|
|
13
|
-
}
|
|
14
|
-
|
|
15
|
-
exports.ErrorState = ErrorState;
|
|
16
|
-
//# sourceMappingURL=ErrorState-B3uTRAEd.cjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ErrorState-B3uTRAEd.cjs","sources":["../src/ds/components/ErrorState/ErrorState.tsx"],"sourcesContent":["import { CircleXIcon } from 'lucide-react';\n\nexport type ErrorStateProps = {\n title: string;\n message: string;\n action?: React.ReactNode;\n};\n\nexport function ErrorState({ title, message, action }: ErrorStateProps) {\n return (\n <div className=\"flex h-[30vh] items-center justify-center\">\n <div className=\"flex flex-col items-center justify-center px-6 py-10 text-center\">\n <div className=\"mb-4\">\n <CircleXIcon className=\"size-8 text-red-900\" />\n </div>\n <h3 className=\"text-subheading text-muted-foreground\">{title}</h3>\n <p className=\"text-body text-placeholder mt-1.5 max-w-md\">{message}</p>\n {action && <div className=\"flex items-center justify-center pt-4\">{action}</div>}\n </div>\n </div>\n );\n}\n"],"names":["jsxs","jsx","CircleXIcon"],"mappings":";;;;;AAQO,SAAS,UAAA,CAAW,EAAE,KAAA,EAAO,OAAA,EAAS,QAAO,EAAoB;AACtE,EAAA,sCACG,KAAA,EAAA,EAAI,SAAA,EAAU,6CACb,QAAA,kBAAAA,eAAA,CAAC,KAAA,EAAA,EAAI,WAAU,kEAAA,EACb,QAAA,EAAA;AAAA,oBAAAC,cAAA,CAAC,SAAI,SAAA,EAAU,MAAA,EACb,yCAACC,uBAAA,EAAA,EAAY,SAAA,EAAU,uBAAsB,CAAA,EAC/C,CAAA;AAAA,oBACAD,cAAA,CAAC,IAAA,EAAA,EAAG,SAAA,EAAU,uCAAA,EAAyC,QAAA,EAAA,KAAA,EAAM,CAAA;AAAA,oBAC7DA,cAAA,CAAC,GAAA,EAAA,EAAE,SAAA,EAAU,4CAAA,EAA8C,QAAA,EAAA,OAAA,EAAQ,CAAA;AAAA,IAClE,MAAA,oBAAUA,cAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,yCAAyC,QAAA,EAAA,MAAA,EAAO;AAAA,GAAA,EAC5E,CAAA,EACF,CAAA;AAEJ;;;;"}
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
import { jsx, jsxs } from 'react/jsx-runtime';
|
|
2
|
-
import { CircleXIcon } from 'lucide-react';
|
|
3
|
-
|
|
4
|
-
function ErrorState({ title, message, action }) {
|
|
5
|
-
return /* @__PURE__ */ jsx("div", { className: "flex h-[30vh] items-center justify-center", children: /* @__PURE__ */ jsxs("div", { className: "flex flex-col items-center justify-center px-6 py-10 text-center", children: [
|
|
6
|
-
/* @__PURE__ */ jsx("div", { className: "mb-4", children: /* @__PURE__ */ jsx(CircleXIcon, { className: "size-8 text-red-900" }) }),
|
|
7
|
-
/* @__PURE__ */ jsx("h3", { className: "text-subheading text-muted-foreground", children: title }),
|
|
8
|
-
/* @__PURE__ */ jsx("p", { className: "text-body text-placeholder mt-1.5 max-w-md", children: message }),
|
|
9
|
-
action && /* @__PURE__ */ jsx("div", { className: "flex items-center justify-center pt-4", children: action })
|
|
10
|
-
] }) });
|
|
11
|
-
}
|
|
12
|
-
|
|
13
|
-
export { ErrorState as E };
|
|
14
|
-
//# sourceMappingURL=ErrorState-DqRx8Dw_.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ErrorState-DqRx8Dw_.js","sources":["../src/ds/components/ErrorState/ErrorState.tsx"],"sourcesContent":["import { CircleXIcon } from 'lucide-react';\n\nexport type ErrorStateProps = {\n title: string;\n message: string;\n action?: React.ReactNode;\n};\n\nexport function ErrorState({ title, message, action }: ErrorStateProps) {\n return (\n <div className=\"flex h-[30vh] items-center justify-center\">\n <div className=\"flex flex-col items-center justify-center px-6 py-10 text-center\">\n <div className=\"mb-4\">\n <CircleXIcon className=\"size-8 text-red-900\" />\n </div>\n <h3 className=\"text-subheading text-muted-foreground\">{title}</h3>\n <p className=\"text-body text-placeholder mt-1.5 max-w-md\">{message}</p>\n {action && <div className=\"flex items-center justify-center pt-4\">{action}</div>}\n </div>\n </div>\n );\n}\n"],"names":[],"mappings":";;;AAQO,SAAS,UAAA,CAAW,EAAE,KAAA,EAAO,OAAA,EAAS,QAAO,EAAoB;AACtE,EAAA,2BACG,KAAA,EAAA,EAAI,SAAA,EAAU,6CACb,QAAA,kBAAA,IAAA,CAAC,KAAA,EAAA,EAAI,WAAU,kEAAA,EACb,QAAA,EAAA;AAAA,oBAAA,GAAA,CAAC,SAAI,SAAA,EAAU,MAAA,EACb,8BAAC,WAAA,EAAA,EAAY,SAAA,EAAU,uBAAsB,CAAA,EAC/C,CAAA;AAAA,oBACA,GAAA,CAAC,IAAA,EAAA,EAAG,SAAA,EAAU,uCAAA,EAAyC,QAAA,EAAA,KAAA,EAAM,CAAA;AAAA,oBAC7D,GAAA,CAAC,GAAA,EAAA,EAAE,SAAA,EAAU,4CAAA,EAA8C,QAAA,EAAA,OAAA,EAAQ,CAAA;AAAA,IAClE,MAAA,oBAAU,GAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,yCAAyC,QAAA,EAAA,MAAA,EAAO;AAAA,GAAA,EAC5E,CAAA,EACF,CAAA;AAEJ;;;;"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"PermissionDenied-B6TSGolC.js","sources":["../src/ds/components/PermissionDenied/PermissionDenied.tsx"],"sourcesContent":["import { ShieldX } from 'lucide-react';\nimport * as React from 'react';\nimport { Icon } from '../../icons/Icon';\nimport { EmptyState } from '../EmptyState';\n\nexport interface PermissionDeniedProps {\n /** Resource type (e.g., \"agents\", \"workflows\") */\n resource?: string;\n /** Custom title override */\n title?: string;\n /** Custom description override */\n description?: string;\n /** Optional action slot (e.g., contact admin button) */\n actionSlot?: React.ReactNode;\n /** Additional CSS classes */\n className?: string;\n}\n\nexport function PermissionDenied({ resource, title, description, actionSlot, className }: PermissionDeniedProps) {\n const defaultTitle = 'Permission Denied';\n const defaultDescription = resource\n ? `You don't have permission to access ${resource}. Contact your administrator for access.`\n : \"You don't have permission to access this resource. Contact your administrator for access.\";\n\n return (\n <EmptyState\n className={className}\n iconSlot={\n <Icon size=\"lg\" className=\"text-muted-foreground\">\n <ShieldX />\n </Icon>\n }\n titleSlot={title ?? defaultTitle}\n descriptionSlot={description ?? defaultDescription}\n actionSlot={actionSlot}\n />\n );\n}\n"],"names":[],"mappings":";;;;;AAkBO,SAAS,iBAAiB,EAAE,QAAA,EAAU,OAAO,WAAA,EAAa,UAAA,EAAY,WAAU,EAA0B;AAC/G,EAAA,MAAM,YAAA,GAAe,mBAAA;AACrB,EAAA,MAAM,kBAAA,GAAqB,QAAA,GACvB,CAAA,oCAAA,EAAuC,QAAQ,CAAA,wCAAA,CAAA,GAC/C,2FAAA;AAEJ,EAAA,uBACE,GAAA;AAAA,IAAC,UAAA;AAAA,IAAA;AAAA,MACC,SAAA;AAAA,MACA,QAAA,sBACG,IAAA,EAAA,EAAK,IAAA,EAAK,MAAK,SAAA,EAAU,uBAAA,EACxB,QAAA,kBAAA,GAAA,CAAC,OAAA,EAAA,EAAQ,CAAA,EACX,CAAA;AAAA,MAEF,WAAW,KAAA,IAAS,YAAA;AAAA,MACpB,iBAAiB,WAAA,IAAe,kBAAA;AAAA,MAChC;AAAA;AAAA,GACF;AAEJ;;;;"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"PermissionDenied-Dz5qXpQj.cjs","sources":["../src/ds/components/PermissionDenied/PermissionDenied.tsx"],"sourcesContent":["import { ShieldX } from 'lucide-react';\nimport * as React from 'react';\nimport { Icon } from '../../icons/Icon';\nimport { EmptyState } from '../EmptyState';\n\nexport interface PermissionDeniedProps {\n /** Resource type (e.g., \"agents\", \"workflows\") */\n resource?: string;\n /** Custom title override */\n title?: string;\n /** Custom description override */\n description?: string;\n /** Optional action slot (e.g., contact admin button) */\n actionSlot?: React.ReactNode;\n /** Additional CSS classes */\n className?: string;\n}\n\nexport function PermissionDenied({ resource, title, description, actionSlot, className }: PermissionDeniedProps) {\n const defaultTitle = 'Permission Denied';\n const defaultDescription = resource\n ? `You don't have permission to access ${resource}. Contact your administrator for access.`\n : \"You don't have permission to access this resource. Contact your administrator for access.\";\n\n return (\n <EmptyState\n className={className}\n iconSlot={\n <Icon size=\"lg\" className=\"text-muted-foreground\">\n <ShieldX />\n </Icon>\n }\n titleSlot={title ?? defaultTitle}\n descriptionSlot={description ?? defaultDescription}\n actionSlot={actionSlot}\n />\n );\n}\n"],"names":["jsx","EmptyState","Icon","ShieldX"],"mappings":";;;;;;;AAkBO,SAAS,iBAAiB,EAAE,QAAA,EAAU,OAAO,WAAA,EAAa,UAAA,EAAY,WAAU,EAA0B;AAC/G,EAAA,MAAM,YAAA,GAAe,mBAAA;AACrB,EAAA,MAAM,kBAAA,GAAqB,QAAA,GACvB,CAAA,oCAAA,EAAuC,QAAQ,CAAA,wCAAA,CAAA,GAC/C,2FAAA;AAEJ,EAAA,uBACEA,cAAA;AAAA,IAACC,qBAAA;AAAA,IAAA;AAAA,MACC,SAAA;AAAA,MACA,QAAA,iCACGC,eAAA,EAAA,EAAK,IAAA,EAAK,MAAK,SAAA,EAAU,uBAAA,EACxB,QAAA,kBAAAF,cAAA,CAACG,mBAAA,EAAA,EAAQ,CAAA,EACX,CAAA;AAAA,MAEF,WAAW,KAAA,IAAS,YAAA;AAAA,MACpB,iBAAiB,WAAA,IAAe,kBAAA;AAAA,MAChC;AAAA;AAAA,GACF;AAEJ;;;;"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"SessionExpired-Bq5LcsDu.js","sources":["../src/ds/components/SessionExpired/SessionExpired.tsx"],"sourcesContent":["import { useMastraClient } from '@mastra/react';\nimport { LogIn } from 'lucide-react';\nimport { useState, useCallback } from 'react';\n\nimport { Icon } from '../../icons/Icon';\nimport { Button } from '../Button';\nimport { EmptyState } from '../EmptyState';\n\nexport interface SessionExpiredProps {\n /** Custom title override */\n title?: string;\n /** Custom description override */\n description?: string;\n /** Additional CSS classes */\n className?: string;\n}\n\nexport function SessionExpired({ title, description, className }: SessionExpiredProps) {\n const [isPending, setIsPending] = useState(false);\n const client = useMastraClient();\n\n const handleLogin = useCallback(async () => {\n try {\n setIsPending(true);\n const { baseUrl = '', apiPrefix } = (client as any).options || {};\n const raw = (apiPrefix || '/api').trim();\n const prefix = (raw.startsWith('/') ? raw : `/${raw}`).replace(/\\/$/, '');\n const params = new URLSearchParams({ redirect_uri: window.location.href });\n const url = `${baseUrl}${prefix}/auth/sso/login?${params}`;\n\n const response = await fetch(url, {\n credentials: 'include',\n headers: { 'Content-Type': 'application/json' },\n });\n\n if (response.ok) {\n const data = await response.json();\n window.location.href = data.url;\n }\n } finally {\n setIsPending(false);\n }\n }, [client]);\n\n return (\n <EmptyState\n className={className}\n iconSlot={\n <Icon size=\"lg\" className=\"text-muted-foreground\">\n <LogIn />\n </Icon>\n }\n titleSlot={title ?? 'Session Expired'}\n descriptionSlot={description ?? 'Your session has expired. Please log in again to continue.'}\n actionSlot={\n <Button icon={<LogIn />} variant=\"default\" onClick={handleLogin} disabled={isPending}>\n {isPending ? 'Redirecting...' : 'Log in'}\n </Button>\n }\n />\n );\n}\n"],"names":[],"mappings":";;;;;;;;AAiBO,SAAS,cAAA,CAAe,EAAE,KAAA,EAAO,WAAA,EAAa,WAAU,EAAwB;AACrF,EAAA,MAAM,CAAC,SAAA,EAAW,YAAY,CAAA,GAAI,SAAS,KAAK,CAAA;AAChD,EAAA,MAAM,SAAS,eAAA,EAAgB;AAE/B,EAAA,MAAM,WAAA,GAAc,YAAY,YAAY;AAC1C,IAAA,IAAI;AACF,MAAA,YAAA,CAAa,IAAI,CAAA;AACjB,MAAA,MAAM,EAAE,OAAA,GAAU,EAAA,EAAI,WAAU,GAAK,MAAA,CAAe,WAAW,EAAC;AAChE,MAAA,MAAM,GAAA,GAAA,CAAO,SAAA,IAAa,MAAA,EAAQ,IAAA,EAAK;AACvC,MAAA,MAAM,MAAA,GAAA,CAAU,GAAA,CAAI,UAAA,CAAW,GAAG,CAAA,GAAI,GAAA,GAAM,CAAA,CAAA,EAAI,GAAG,CAAA,CAAA,EAAI,OAAA,CAAQ,KAAA,EAAO,EAAE,CAAA;AACxE,MAAA,MAAM,MAAA,GAAS,IAAI,eAAA,CAAgB,EAAE,cAAc,MAAA,CAAO,QAAA,CAAS,MAAM,CAAA;AACzE,MAAA,MAAM,MAAM,CAAA,EAAG,OAAO,CAAA,EAAG,MAAM,mBAAmB,MAAM,CAAA,CAAA;AAExD,MAAA,MAAM,QAAA,GAAW,MAAM,KAAA,CAAM,GAAA,EAAK;AAAA,QAChC,WAAA,EAAa,SAAA;AAAA,QACb,OAAA,EAAS,EAAE,cAAA,EAAgB,kBAAA;AAAmB,OAC/C,CAAA;AAED,MAAA,IAAI,SAAS,EAAA,EAAI;AACf,QAAA,MAAM,IAAA,GAAO,MAAM,QAAA,CAAS,IAAA,EAAK;AACjC,QAAA,MAAA,CAAO,QAAA,CAAS,OAAO,IAAA,CAAK,GAAA;AAAA,MAC9B;AAAA,IACF,CAAA,SAAE;AACA,MAAA,YAAA,CAAa,KAAK,CAAA;AAAA,IACpB;AAAA,EACF,CAAA,EAAG,CAAC,MAAM,CAAC,CAAA;AAEX,EAAA,uBACE,GAAA;AAAA,IAAC,UAAA;AAAA,IAAA;AAAA,MACC,SAAA;AAAA,MACA,QAAA,sBACG,IAAA,EAAA,EAAK,IAAA,EAAK,MAAK,SAAA,EAAU,uBAAA,EACxB,QAAA,kBAAA,GAAA,CAAC,KAAA,EAAA,EAAM,CAAA,EACT,CAAA;AAAA,MAEF,WAAW,KAAA,IAAS,iBAAA;AAAA,MACpB,iBAAiB,WAAA,IAAe,4DAAA;AAAA,MAChC,UAAA,kBACE,GAAA,CAAC,MAAA,EAAA,EAAO,IAAA,sBAAO,KAAA,EAAA,EAAM,CAAA,EAAI,OAAA,EAAQ,SAAA,EAAU,SAAS,WAAA,EAAa,QAAA,EAAU,SAAA,EACxE,QAAA,EAAA,SAAA,GAAY,mBAAmB,QAAA,EAClC;AAAA;AAAA,GAEJ;AAEJ;;;;"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"SessionExpired-CF0BGNo_.cjs","sources":["../src/ds/components/SessionExpired/SessionExpired.tsx"],"sourcesContent":["import { useMastraClient } from '@mastra/react';\nimport { LogIn } from 'lucide-react';\nimport { useState, useCallback } from 'react';\n\nimport { Icon } from '../../icons/Icon';\nimport { Button } from '../Button';\nimport { EmptyState } from '../EmptyState';\n\nexport interface SessionExpiredProps {\n /** Custom title override */\n title?: string;\n /** Custom description override */\n description?: string;\n /** Additional CSS classes */\n className?: string;\n}\n\nexport function SessionExpired({ title, description, className }: SessionExpiredProps) {\n const [isPending, setIsPending] = useState(false);\n const client = useMastraClient();\n\n const handleLogin = useCallback(async () => {\n try {\n setIsPending(true);\n const { baseUrl = '', apiPrefix } = (client as any).options || {};\n const raw = (apiPrefix || '/api').trim();\n const prefix = (raw.startsWith('/') ? raw : `/${raw}`).replace(/\\/$/, '');\n const params = new URLSearchParams({ redirect_uri: window.location.href });\n const url = `${baseUrl}${prefix}/auth/sso/login?${params}`;\n\n const response = await fetch(url, {\n credentials: 'include',\n headers: { 'Content-Type': 'application/json' },\n });\n\n if (response.ok) {\n const data = await response.json();\n window.location.href = data.url;\n }\n } finally {\n setIsPending(false);\n }\n }, [client]);\n\n return (\n <EmptyState\n className={className}\n iconSlot={\n <Icon size=\"lg\" className=\"text-muted-foreground\">\n <LogIn />\n </Icon>\n }\n titleSlot={title ?? 'Session Expired'}\n descriptionSlot={description ?? 'Your session has expired. Please log in again to continue.'}\n actionSlot={\n <Button icon={<LogIn />} variant=\"default\" onClick={handleLogin} disabled={isPending}>\n {isPending ? 'Redirecting...' : 'Log in'}\n </Button>\n }\n />\n );\n}\n"],"names":["useState","useMastraClient","useCallback","jsx","EmptyState","Icon","LogIn","Button"],"mappings":";;;;;;;;;;AAiBO,SAAS,cAAA,CAAe,EAAE,KAAA,EAAO,WAAA,EAAa,WAAU,EAAwB;AACrF,EAAA,MAAM,CAAC,SAAA,EAAW,YAAY,CAAA,GAAIA,eAAS,KAAK,CAAA;AAChD,EAAA,MAAM,SAASC,qBAAA,EAAgB;AAE/B,EAAA,MAAM,WAAA,GAAcC,kBAAY,YAAY;AAC1C,IAAA,IAAI;AACF,MAAA,YAAA,CAAa,IAAI,CAAA;AACjB,MAAA,MAAM,EAAE,OAAA,GAAU,EAAA,EAAI,WAAU,GAAK,MAAA,CAAe,WAAW,EAAC;AAChE,MAAA,MAAM,GAAA,GAAA,CAAO,SAAA,IAAa,MAAA,EAAQ,IAAA,EAAK;AACvC,MAAA,MAAM,MAAA,GAAA,CAAU,GAAA,CAAI,UAAA,CAAW,GAAG,CAAA,GAAI,GAAA,GAAM,CAAA,CAAA,EAAI,GAAG,CAAA,CAAA,EAAI,OAAA,CAAQ,KAAA,EAAO,EAAE,CAAA;AACxE,MAAA,MAAM,MAAA,GAAS,IAAI,eAAA,CAAgB,EAAE,cAAc,MAAA,CAAO,QAAA,CAAS,MAAM,CAAA;AACzE,MAAA,MAAM,MAAM,CAAA,EAAG,OAAO,CAAA,EAAG,MAAM,mBAAmB,MAAM,CAAA,CAAA;AAExD,MAAA,MAAM,QAAA,GAAW,MAAM,KAAA,CAAM,GAAA,EAAK;AAAA,QAChC,WAAA,EAAa,SAAA;AAAA,QACb,OAAA,EAAS,EAAE,cAAA,EAAgB,kBAAA;AAAmB,OAC/C,CAAA;AAED,MAAA,IAAI,SAAS,EAAA,EAAI;AACf,QAAA,MAAM,IAAA,GAAO,MAAM,QAAA,CAAS,IAAA,EAAK;AACjC,QAAA,MAAA,CAAO,QAAA,CAAS,OAAO,IAAA,CAAK,GAAA;AAAA,MAC9B;AAAA,IACF,CAAA,SAAE;AACA,MAAA,YAAA,CAAa,KAAK,CAAA;AAAA,IACpB;AAAA,EACF,CAAA,EAAG,CAAC,MAAM,CAAC,CAAA;AAEX,EAAA,uBACEC,cAAA;AAAA,IAACC,qBAAA;AAAA,IAAA;AAAA,MACC,SAAA;AAAA,MACA,QAAA,iCACGC,eAAA,EAAA,EAAK,IAAA,EAAK,MAAK,SAAA,EAAU,uBAAA,EACxB,QAAA,kBAAAF,cAAA,CAACG,iBAAA,EAAA,EAAM,CAAA,EACT,CAAA;AAAA,MAEF,WAAW,KAAA,IAAS,iBAAA;AAAA,MACpB,iBAAiB,WAAA,IAAe,4DAAA;AAAA,MAChC,UAAA,kBACEH,cAAA,CAACI,aAAA,EAAA,EAAO,IAAA,iCAAOD,iBAAA,EAAA,EAAM,CAAA,EAAI,OAAA,EAAQ,SAAA,EAAU,SAAS,WAAA,EAAa,QAAA,EAAU,SAAA,EACxE,QAAA,EAAA,SAAA,GAAY,mBAAmB,QAAA,EAClC;AAAA;AAAA,GAEJ;AAEJ;;;;"}
|
|
@@ -1,147 +0,0 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
|
-
const jsxRuntime = require('react/jsx-runtime');
|
|
4
|
-
const lucideReact = require('lucide-react');
|
|
5
|
-
const React = require('react');
|
|
6
|
-
const Badge = require('./Badge-BEeYtjmv.cjs');
|
|
7
|
-
const Button = require('./Button-CVewl8nT.cjs');
|
|
8
|
-
const fieldBlock = require('./field-block-Dy1IaWbv.cjs');
|
|
9
|
-
const input = require('./input-CDLMprJS.cjs');
|
|
10
|
-
const utils_cn = require('./cn-DG0X1KEP.cjs');
|
|
11
|
-
|
|
12
|
-
const AskUserContainer = ({ className, ...props }) => /* @__PURE__ */ jsxRuntime.jsx("div", { className: utils_cn.cn("rounded-lg border border-border bg-background p-3 text-body", className), ...props });
|
|
13
|
-
const AskUserQuestion = ({ className, ...props }) => /* @__PURE__ */ jsxRuntime.jsx("legend", { className: utils_cn.cn("mb-3 text-subheading text-foreground", className), ...props });
|
|
14
|
-
const AskUserOptionDescription = ({ className, ...props }) => /* @__PURE__ */ jsxRuntime.jsx("span", { className: utils_cn.cn("block text-meta text-muted-foreground", className), ...props });
|
|
15
|
-
const AskUserOptionControl = ({ type, label, description, className, ...props }) => /* @__PURE__ */ jsxRuntime.jsxs(
|
|
16
|
-
"label",
|
|
17
|
-
{
|
|
18
|
-
className: utils_cn.cn(
|
|
19
|
-
"state-layer bg-card shadow-raised flex cursor-pointer items-start gap-2 rounded-md px-3 py-2 text-foreground transition-colors has-[:checked]:[--surface-tint:var(--fill-hover)] has-[:checked]:[--surface-rim:var(--border-strong)] has-[:disabled]:cursor-not-allowed has-[:disabled]:opacity-50",
|
|
20
|
-
className
|
|
21
|
-
),
|
|
22
|
-
children: [
|
|
23
|
-
/* @__PURE__ */ jsxRuntime.jsx("input", { type, className: "mt-0.5 accent-current", ...props }),
|
|
24
|
-
/* @__PURE__ */ jsxRuntime.jsxs("span", { children: [
|
|
25
|
-
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "block", children: label }),
|
|
26
|
-
description ? /* @__PURE__ */ jsxRuntime.jsx(AskUserOptionDescription, { children: description }) : null
|
|
27
|
-
] })
|
|
28
|
-
]
|
|
29
|
-
}
|
|
30
|
-
);
|
|
31
|
-
const AskUserSubmit = ({ children = "Submit answer", ...props }) => /* @__PURE__ */ jsxRuntime.jsx(Button.Button, { icon: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Check, {}), type: "button", size: "sm", variant: "primary", ...props, children });
|
|
32
|
-
const AskUserPending = ({ children = "Submitting…", className, ...props }) => /* @__PURE__ */ jsxRuntime.jsx("span", { role: "status", className: utils_cn.cn("text-meta text-muted-foreground", className), ...props, children });
|
|
33
|
-
const AskUserOutput = ({ result, className, ...props }) => /* @__PURE__ */ jsxRuntime.jsxs(
|
|
34
|
-
"div",
|
|
35
|
-
{
|
|
36
|
-
role: result.isError ? "alert" : "status",
|
|
37
|
-
className: utils_cn.cn("space-y-2 rounded-md bg-card p-3 text-foreground", result.isError && "text-error", className),
|
|
38
|
-
...props,
|
|
39
|
-
children: [
|
|
40
|
-
/* @__PURE__ */ jsxRuntime.jsx(Badge.Badge, { size: "xs", variant: result.isError ? "red" : "green", children: result.isError ? "Error" : "Answered" }),
|
|
41
|
-
/* @__PURE__ */ jsxRuntime.jsx("p", { children: result.content })
|
|
42
|
-
]
|
|
43
|
-
}
|
|
44
|
-
);
|
|
45
|
-
const validOptions = (options) => options?.filter(
|
|
46
|
-
(option) => Boolean(option && typeof option.label === "string" && option.label)
|
|
47
|
-
) ?? [];
|
|
48
|
-
const AskUserInput = ({
|
|
49
|
-
payload,
|
|
50
|
-
options,
|
|
51
|
-
result,
|
|
52
|
-
isAnswered = false,
|
|
53
|
-
isSubmitting = false,
|
|
54
|
-
onSubmit,
|
|
55
|
-
footer,
|
|
56
|
-
...props
|
|
57
|
-
}) => {
|
|
58
|
-
const inputId = React.useId();
|
|
59
|
-
const [text, setText] = React.useState("");
|
|
60
|
-
const [selected, setSelected] = React.useState([]);
|
|
61
|
-
if (result || isAnswered) {
|
|
62
|
-
return /* @__PURE__ */ jsxRuntime.jsxs(AskUserContainer, { "data-testid": "ask-user", ...props, children: [
|
|
63
|
-
/* @__PURE__ */ jsxRuntime.jsx("p", { className: "text-foreground text-subheading mb-2", children: payload.question }),
|
|
64
|
-
result ? /* @__PURE__ */ jsxRuntime.jsx(AskUserOutput, { result }) : /* @__PURE__ */ jsxRuntime.jsx(Badge.Badge, { variant: "green", children: "Answered" })
|
|
65
|
-
] });
|
|
66
|
-
}
|
|
67
|
-
const submitText = () => {
|
|
68
|
-
const answer = text.trim();
|
|
69
|
-
if (answer && !isSubmitting) onSubmit(answer);
|
|
70
|
-
};
|
|
71
|
-
const handleTextKeyDown = (event) => {
|
|
72
|
-
if (event.key === "Enter") {
|
|
73
|
-
event.preventDefault();
|
|
74
|
-
submitText();
|
|
75
|
-
}
|
|
76
|
-
};
|
|
77
|
-
if (options.length === 0) {
|
|
78
|
-
return /* @__PURE__ */ jsxRuntime.jsxs(AskUserContainer, { "data-testid": "ask-user", ...props, children: [
|
|
79
|
-
/* @__PURE__ */ jsxRuntime.jsx(fieldBlock.FieldBlock.Label, { name: inputId, htmlFor: inputId, className: "mb-2", children: payload.question }),
|
|
80
|
-
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2", children: [
|
|
81
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
82
|
-
input.Input,
|
|
83
|
-
{
|
|
84
|
-
id: inputId,
|
|
85
|
-
value: text,
|
|
86
|
-
onChange: (event) => setText(event.target.value),
|
|
87
|
-
onKeyDown: handleTextKeyDown,
|
|
88
|
-
placeholder: "Type your answer...",
|
|
89
|
-
disabled: isSubmitting,
|
|
90
|
-
size: "sm"
|
|
91
|
-
}
|
|
92
|
-
),
|
|
93
|
-
/* @__PURE__ */ jsxRuntime.jsx(AskUserSubmit, { "aria-label": "Submit answer", disabled: isSubmitting || !text.trim(), onClick: submitText, children: "Submit" })
|
|
94
|
-
] }),
|
|
95
|
-
isSubmitting ? /* @__PURE__ */ jsxRuntime.jsx(AskUserPending, { className: "mt-2 block" }) : null,
|
|
96
|
-
footer
|
|
97
|
-
] });
|
|
98
|
-
}
|
|
99
|
-
const isMulti = payload.selectionMode === "multi_select";
|
|
100
|
-
return /* @__PURE__ */ jsxRuntime.jsx(AskUserContainer, { "data-testid": "ask-user", ...props, children: /* @__PURE__ */ jsxRuntime.jsxs("fieldset", { disabled: isSubmitting, className: "space-y-2", children: [
|
|
101
|
-
/* @__PURE__ */ jsxRuntime.jsx(AskUserQuestion, { children: payload.question }),
|
|
102
|
-
options.map((option) => {
|
|
103
|
-
const checked = selected.includes(option.label);
|
|
104
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
105
|
-
AskUserOptionControl,
|
|
106
|
-
{
|
|
107
|
-
type: isMulti ? "checkbox" : "radio",
|
|
108
|
-
name: inputId,
|
|
109
|
-
label: option.label,
|
|
110
|
-
description: option.description,
|
|
111
|
-
disabled: isSubmitting,
|
|
112
|
-
checked,
|
|
113
|
-
onChange: () => {
|
|
114
|
-
if (isSubmitting) return;
|
|
115
|
-
if (!isMulti) {
|
|
116
|
-
setSelected([option.label]);
|
|
117
|
-
onSubmit(option.label);
|
|
118
|
-
return;
|
|
119
|
-
}
|
|
120
|
-
setSelected(
|
|
121
|
-
(current) => current.includes(option.label) ? current.filter((selectedLabel) => selectedLabel !== option.label) : [...current, option.label]
|
|
122
|
-
);
|
|
123
|
-
}
|
|
124
|
-
},
|
|
125
|
-
option.label
|
|
126
|
-
);
|
|
127
|
-
}),
|
|
128
|
-
isMulti ? /* @__PURE__ */ jsxRuntime.jsx(AskUserSubmit, { disabled: isSubmitting || selected.length === 0, onClick: () => onSubmit(selected), children: "Submit answer" }) : null,
|
|
129
|
-
isSubmitting ? /* @__PURE__ */ jsxRuntime.jsx(AskUserPending, {}) : null,
|
|
130
|
-
footer
|
|
131
|
-
] }) });
|
|
132
|
-
};
|
|
133
|
-
const AskUser = ({ payload, ...props }) => {
|
|
134
|
-
const options = validOptions(payload.options);
|
|
135
|
-
const payloadKey = JSON.stringify([payload.question, options.map((option) => option.label), payload.selectionMode]);
|
|
136
|
-
return /* @__PURE__ */ jsxRuntime.jsx(AskUserInput, { payload, options, ...props }, payloadKey);
|
|
137
|
-
};
|
|
138
|
-
|
|
139
|
-
exports.AskUser = AskUser;
|
|
140
|
-
exports.AskUserContainer = AskUserContainer;
|
|
141
|
-
exports.AskUserOptionControl = AskUserOptionControl;
|
|
142
|
-
exports.AskUserOptionDescription = AskUserOptionDescription;
|
|
143
|
-
exports.AskUserOutput = AskUserOutput;
|
|
144
|
-
exports.AskUserPending = AskUserPending;
|
|
145
|
-
exports.AskUserQuestion = AskUserQuestion;
|
|
146
|
-
exports.AskUserSubmit = AskUserSubmit;
|
|
147
|
-
//# sourceMappingURL=ask-user-CS2e6Re4.cjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ask-user-CS2e6Re4.cjs","sources":["../src/ds/components/ai/ask-user/ask-user.tsx"],"sourcesContent":["import { Check } from 'lucide-react';\nimport { useId, useState } from 'react';\nimport type { ComponentProps, KeyboardEvent, ReactNode } from 'react';\nimport { Badge } from '@/ds/components/Badge';\nimport { Button } from '@/ds/components/Button';\nimport { FieldBlock } from '@/ds/components/FormFieldBlocks';\nimport { Input } from '@/ds/components/Input';\nimport { cn } from '@/lib/utils';\n\nexport type AskUserSelectionMode = 'single_select' | 'multi_select';\nexport type AskUserAnswer = string | string[];\n\nexport interface AskUserOption {\n label: string;\n description?: string;\n}\n\nexport interface AskUserPayload {\n question: string;\n options?: AskUserOption[];\n selectionMode?: AskUserSelectionMode;\n}\n\nexport interface AskUserResult {\n content: string;\n isError?: boolean;\n}\n\nexport const AskUserContainer = ({ className, ...props }: ComponentProps<'div'>) => (\n <div className={cn('rounded-lg border border-border bg-background p-3 text-body', className)} {...props} />\n);\n\nexport const AskUserQuestion = ({ className, ...props }: ComponentProps<'legend'>) => (\n <legend className={cn('mb-3 text-subheading text-foreground', className)} {...props} />\n);\n\nexport const AskUserOptionDescription = ({ className, ...props }: ComponentProps<'span'>) => (\n <span className={cn('block text-meta text-muted-foreground', className)} {...props} />\n);\n\ninterface AskUserOptionControlProps extends Omit<ComponentProps<'input'>, 'type'> {\n type: 'radio' | 'checkbox';\n label: string;\n description?: string;\n}\n\nexport const AskUserOptionControl = ({ type, label, description, className, ...props }: AskUserOptionControlProps) => (\n <label\n className={cn(\n 'state-layer bg-card shadow-raised flex cursor-pointer items-start gap-2 rounded-md px-3 py-2 text-foreground transition-colors has-[:checked]:[--surface-tint:var(--fill-hover)] has-[:checked]:[--surface-rim:var(--border-strong)] has-[:disabled]:cursor-not-allowed has-[:disabled]:opacity-50',\n className,\n )}\n >\n <input type={type} className=\"mt-0.5 accent-current\" {...props} />\n <span>\n <span className=\"block\">{label}</span>\n {description ? <AskUserOptionDescription>{description}</AskUserOptionDescription> : null}\n </span>\n </label>\n);\n\nexport const AskUserSubmit = ({ children = 'Submit answer', ...props }: ComponentProps<typeof Button>) => (\n <Button icon={<Check />} type=\"button\" size=\"sm\" variant=\"primary\" {...props}>\n {children}\n </Button>\n);\n\nexport const AskUserPending = ({ children = 'Submitting…', className, ...props }: ComponentProps<'span'>) => (\n <span role=\"status\" className={cn('text-meta text-muted-foreground', className)} {...props}>\n {children}\n </span>\n);\n\nexport interface AskUserOutputProps extends ComponentProps<'div'> {\n result: AskUserResult;\n}\n\nexport const AskUserOutput = ({ result, className, ...props }: AskUserOutputProps) => (\n <div\n role={result.isError ? 'alert' : 'status'}\n className={cn('space-y-2 rounded-md bg-card p-3 text-foreground', result.isError && 'text-error', className)}\n {...props}\n >\n <Badge size=\"xs\" variant={result.isError ? 'red' : 'green'}>\n {result.isError ? 'Error' : 'Answered'}\n </Badge>\n <p>{result.content}</p>\n </div>\n);\n\nexport interface AskUserProps extends Omit<ComponentProps<typeof AskUserContainer>, 'children' | 'onSubmit'> {\n payload: AskUserPayload;\n result?: AskUserResult;\n isAnswered?: boolean;\n isSubmitting?: boolean;\n onSubmit: (answer: AskUserAnswer) => void;\n footer?: ReactNode;\n}\n\nconst validOptions = (options: AskUserPayload['options']): AskUserOption[] =>\n options?.filter((option): option is AskUserOption =>\n Boolean(option && typeof option.label === 'string' && option.label),\n ) ?? [];\n\ninterface AskUserInputProps extends AskUserProps {\n options: AskUserOption[];\n}\n\nconst AskUserInput = ({\n payload,\n options,\n result,\n isAnswered = false,\n isSubmitting = false,\n onSubmit,\n footer,\n ...props\n}: AskUserInputProps) => {\n const inputId = useId();\n const [text, setText] = useState('');\n const [selected, setSelected] = useState<string[]>([]);\n\n if (result || isAnswered) {\n return (\n <AskUserContainer data-testid=\"ask-user\" {...props}>\n <p className=\"text-foreground text-subheading mb-2\">{payload.question}</p>\n {result ? <AskUserOutput result={result} /> : <Badge variant=\"green\">Answered</Badge>}\n </AskUserContainer>\n );\n }\n\n const submitText = () => {\n const answer = text.trim();\n if (answer && !isSubmitting) onSubmit(answer);\n };\n\n const handleTextKeyDown = (event: KeyboardEvent<HTMLInputElement>) => {\n if (event.key === 'Enter') {\n event.preventDefault();\n submitText();\n }\n };\n\n if (options.length === 0) {\n return (\n <AskUserContainer data-testid=\"ask-user\" {...props}>\n <FieldBlock.Label name={inputId} htmlFor={inputId} className=\"mb-2\">\n {payload.question}\n </FieldBlock.Label>\n <div className=\"flex items-center gap-2\">\n <Input\n id={inputId}\n value={text}\n onChange={event => setText(event.target.value)}\n onKeyDown={handleTextKeyDown}\n placeholder=\"Type your answer...\"\n disabled={isSubmitting}\n size=\"sm\"\n />\n <AskUserSubmit aria-label=\"Submit answer\" disabled={isSubmitting || !text.trim()} onClick={submitText}>\n Submit\n </AskUserSubmit>\n </div>\n {isSubmitting ? <AskUserPending className=\"mt-2 block\" /> : null}\n {footer}\n </AskUserContainer>\n );\n }\n\n const isMulti = payload.selectionMode === 'multi_select';\n return (\n <AskUserContainer data-testid=\"ask-user\" {...props}>\n <fieldset disabled={isSubmitting} className=\"space-y-2\">\n <AskUserQuestion>{payload.question}</AskUserQuestion>\n {options.map(option => {\n const checked = selected.includes(option.label);\n return (\n <AskUserOptionControl\n key={option.label}\n type={isMulti ? 'checkbox' : 'radio'}\n name={inputId}\n label={option.label}\n description={option.description}\n disabled={isSubmitting}\n checked={checked}\n onChange={() => {\n if (isSubmitting) return;\n if (!isMulti) {\n setSelected([option.label]);\n onSubmit(option.label);\n return;\n }\n setSelected(current =>\n current.includes(option.label)\n ? current.filter(selectedLabel => selectedLabel !== option.label)\n : [...current, option.label],\n );\n }}\n />\n );\n })}\n {isMulti ? (\n <AskUserSubmit disabled={isSubmitting || selected.length === 0} onClick={() => onSubmit(selected)}>\n Submit answer\n </AskUserSubmit>\n ) : null}\n {isSubmitting ? <AskUserPending /> : null}\n {footer}\n </fieldset>\n </AskUserContainer>\n );\n};\n\nexport const AskUser = ({ payload, ...props }: AskUserProps) => {\n const options = validOptions(payload.options);\n const payloadKey = JSON.stringify([payload.question, options.map(option => option.label), payload.selectionMode]);\n\n return <AskUserInput key={payloadKey} payload={payload} options={options} {...props} />;\n};\n"],"names":["jsx","cn","jsxs","Button","Check","Badge","useId","useState","FieldBlock","Input"],"mappings":"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"}
|
|
@@ -1,138 +0,0 @@
|
|
|
1
|
-
import { jsx, jsxs } from 'react/jsx-runtime';
|
|
2
|
-
import { Check } from 'lucide-react';
|
|
3
|
-
import { useId, useState } from 'react';
|
|
4
|
-
import { B as Badge } from './Badge-TD55_qZJ.js';
|
|
5
|
-
import { B as Button } from './Button-cWcBEd-G.js';
|
|
6
|
-
import { F as FieldBlock } from './field-block-DWkbNcsV.js';
|
|
7
|
-
import { I as Input } from './input-B1RysHyq.js';
|
|
8
|
-
import { c as cn } from './cn-65Adrsfj.js';
|
|
9
|
-
|
|
10
|
-
const AskUserContainer = ({ className, ...props }) => /* @__PURE__ */ jsx("div", { className: cn("rounded-lg border border-border bg-background p-3 text-body", className), ...props });
|
|
11
|
-
const AskUserQuestion = ({ className, ...props }) => /* @__PURE__ */ jsx("legend", { className: cn("mb-3 text-subheading text-foreground", className), ...props });
|
|
12
|
-
const AskUserOptionDescription = ({ className, ...props }) => /* @__PURE__ */ jsx("span", { className: cn("block text-meta text-muted-foreground", className), ...props });
|
|
13
|
-
const AskUserOptionControl = ({ type, label, description, className, ...props }) => /* @__PURE__ */ jsxs(
|
|
14
|
-
"label",
|
|
15
|
-
{
|
|
16
|
-
className: cn(
|
|
17
|
-
"state-layer bg-card shadow-raised flex cursor-pointer items-start gap-2 rounded-md px-3 py-2 text-foreground transition-colors has-[:checked]:[--surface-tint:var(--fill-hover)] has-[:checked]:[--surface-rim:var(--border-strong)] has-[:disabled]:cursor-not-allowed has-[:disabled]:opacity-50",
|
|
18
|
-
className
|
|
19
|
-
),
|
|
20
|
-
children: [
|
|
21
|
-
/* @__PURE__ */ jsx("input", { type, className: "mt-0.5 accent-current", ...props }),
|
|
22
|
-
/* @__PURE__ */ jsxs("span", { children: [
|
|
23
|
-
/* @__PURE__ */ jsx("span", { className: "block", children: label }),
|
|
24
|
-
description ? /* @__PURE__ */ jsx(AskUserOptionDescription, { children: description }) : null
|
|
25
|
-
] })
|
|
26
|
-
]
|
|
27
|
-
}
|
|
28
|
-
);
|
|
29
|
-
const AskUserSubmit = ({ children = "Submit answer", ...props }) => /* @__PURE__ */ jsx(Button, { icon: /* @__PURE__ */ jsx(Check, {}), type: "button", size: "sm", variant: "primary", ...props, children });
|
|
30
|
-
const AskUserPending = ({ children = "Submitting…", className, ...props }) => /* @__PURE__ */ jsx("span", { role: "status", className: cn("text-meta text-muted-foreground", className), ...props, children });
|
|
31
|
-
const AskUserOutput = ({ result, className, ...props }) => /* @__PURE__ */ jsxs(
|
|
32
|
-
"div",
|
|
33
|
-
{
|
|
34
|
-
role: result.isError ? "alert" : "status",
|
|
35
|
-
className: cn("space-y-2 rounded-md bg-card p-3 text-foreground", result.isError && "text-error", className),
|
|
36
|
-
...props,
|
|
37
|
-
children: [
|
|
38
|
-
/* @__PURE__ */ jsx(Badge, { size: "xs", variant: result.isError ? "red" : "green", children: result.isError ? "Error" : "Answered" }),
|
|
39
|
-
/* @__PURE__ */ jsx("p", { children: result.content })
|
|
40
|
-
]
|
|
41
|
-
}
|
|
42
|
-
);
|
|
43
|
-
const validOptions = (options) => options?.filter(
|
|
44
|
-
(option) => Boolean(option && typeof option.label === "string" && option.label)
|
|
45
|
-
) ?? [];
|
|
46
|
-
const AskUserInput = ({
|
|
47
|
-
payload,
|
|
48
|
-
options,
|
|
49
|
-
result,
|
|
50
|
-
isAnswered = false,
|
|
51
|
-
isSubmitting = false,
|
|
52
|
-
onSubmit,
|
|
53
|
-
footer,
|
|
54
|
-
...props
|
|
55
|
-
}) => {
|
|
56
|
-
const inputId = useId();
|
|
57
|
-
const [text, setText] = useState("");
|
|
58
|
-
const [selected, setSelected] = useState([]);
|
|
59
|
-
if (result || isAnswered) {
|
|
60
|
-
return /* @__PURE__ */ jsxs(AskUserContainer, { "data-testid": "ask-user", ...props, children: [
|
|
61
|
-
/* @__PURE__ */ jsx("p", { className: "text-foreground text-subheading mb-2", children: payload.question }),
|
|
62
|
-
result ? /* @__PURE__ */ jsx(AskUserOutput, { result }) : /* @__PURE__ */ jsx(Badge, { variant: "green", children: "Answered" })
|
|
63
|
-
] });
|
|
64
|
-
}
|
|
65
|
-
const submitText = () => {
|
|
66
|
-
const answer = text.trim();
|
|
67
|
-
if (answer && !isSubmitting) onSubmit(answer);
|
|
68
|
-
};
|
|
69
|
-
const handleTextKeyDown = (event) => {
|
|
70
|
-
if (event.key === "Enter") {
|
|
71
|
-
event.preventDefault();
|
|
72
|
-
submitText();
|
|
73
|
-
}
|
|
74
|
-
};
|
|
75
|
-
if (options.length === 0) {
|
|
76
|
-
return /* @__PURE__ */ jsxs(AskUserContainer, { "data-testid": "ask-user", ...props, children: [
|
|
77
|
-
/* @__PURE__ */ jsx(FieldBlock.Label, { name: inputId, htmlFor: inputId, className: "mb-2", children: payload.question }),
|
|
78
|
-
/* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2", children: [
|
|
79
|
-
/* @__PURE__ */ jsx(
|
|
80
|
-
Input,
|
|
81
|
-
{
|
|
82
|
-
id: inputId,
|
|
83
|
-
value: text,
|
|
84
|
-
onChange: (event) => setText(event.target.value),
|
|
85
|
-
onKeyDown: handleTextKeyDown,
|
|
86
|
-
placeholder: "Type your answer...",
|
|
87
|
-
disabled: isSubmitting,
|
|
88
|
-
size: "sm"
|
|
89
|
-
}
|
|
90
|
-
),
|
|
91
|
-
/* @__PURE__ */ jsx(AskUserSubmit, { "aria-label": "Submit answer", disabled: isSubmitting || !text.trim(), onClick: submitText, children: "Submit" })
|
|
92
|
-
] }),
|
|
93
|
-
isSubmitting ? /* @__PURE__ */ jsx(AskUserPending, { className: "mt-2 block" }) : null,
|
|
94
|
-
footer
|
|
95
|
-
] });
|
|
96
|
-
}
|
|
97
|
-
const isMulti = payload.selectionMode === "multi_select";
|
|
98
|
-
return /* @__PURE__ */ jsx(AskUserContainer, { "data-testid": "ask-user", ...props, children: /* @__PURE__ */ jsxs("fieldset", { disabled: isSubmitting, className: "space-y-2", children: [
|
|
99
|
-
/* @__PURE__ */ jsx(AskUserQuestion, { children: payload.question }),
|
|
100
|
-
options.map((option) => {
|
|
101
|
-
const checked = selected.includes(option.label);
|
|
102
|
-
return /* @__PURE__ */ jsx(
|
|
103
|
-
AskUserOptionControl,
|
|
104
|
-
{
|
|
105
|
-
type: isMulti ? "checkbox" : "radio",
|
|
106
|
-
name: inputId,
|
|
107
|
-
label: option.label,
|
|
108
|
-
description: option.description,
|
|
109
|
-
disabled: isSubmitting,
|
|
110
|
-
checked,
|
|
111
|
-
onChange: () => {
|
|
112
|
-
if (isSubmitting) return;
|
|
113
|
-
if (!isMulti) {
|
|
114
|
-
setSelected([option.label]);
|
|
115
|
-
onSubmit(option.label);
|
|
116
|
-
return;
|
|
117
|
-
}
|
|
118
|
-
setSelected(
|
|
119
|
-
(current) => current.includes(option.label) ? current.filter((selectedLabel) => selectedLabel !== option.label) : [...current, option.label]
|
|
120
|
-
);
|
|
121
|
-
}
|
|
122
|
-
},
|
|
123
|
-
option.label
|
|
124
|
-
);
|
|
125
|
-
}),
|
|
126
|
-
isMulti ? /* @__PURE__ */ jsx(AskUserSubmit, { disabled: isSubmitting || selected.length === 0, onClick: () => onSubmit(selected), children: "Submit answer" }) : null,
|
|
127
|
-
isSubmitting ? /* @__PURE__ */ jsx(AskUserPending, {}) : null,
|
|
128
|
-
footer
|
|
129
|
-
] }) });
|
|
130
|
-
};
|
|
131
|
-
const AskUser = ({ payload, ...props }) => {
|
|
132
|
-
const options = validOptions(payload.options);
|
|
133
|
-
const payloadKey = JSON.stringify([payload.question, options.map((option) => option.label), payload.selectionMode]);
|
|
134
|
-
return /* @__PURE__ */ jsx(AskUserInput, { payload, options, ...props }, payloadKey);
|
|
135
|
-
};
|
|
136
|
-
|
|
137
|
-
export { AskUser as A, AskUserContainer as a, AskUserOptionControl as b, AskUserOptionDescription as c, AskUserOutput as d, AskUserPending as e, AskUserQuestion as f, AskUserSubmit as g };
|
|
138
|
-
//# sourceMappingURL=ask-user-gS3Y1bCc.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ask-user-gS3Y1bCc.js","sources":["../src/ds/components/ai/ask-user/ask-user.tsx"],"sourcesContent":["import { Check } from 'lucide-react';\nimport { useId, useState } from 'react';\nimport type { ComponentProps, KeyboardEvent, ReactNode } from 'react';\nimport { Badge } from '@/ds/components/Badge';\nimport { Button } from '@/ds/components/Button';\nimport { FieldBlock } from '@/ds/components/FormFieldBlocks';\nimport { Input } from '@/ds/components/Input';\nimport { cn } from '@/lib/utils';\n\nexport type AskUserSelectionMode = 'single_select' | 'multi_select';\nexport type AskUserAnswer = string | string[];\n\nexport interface AskUserOption {\n label: string;\n description?: string;\n}\n\nexport interface AskUserPayload {\n question: string;\n options?: AskUserOption[];\n selectionMode?: AskUserSelectionMode;\n}\n\nexport interface AskUserResult {\n content: string;\n isError?: boolean;\n}\n\nexport const AskUserContainer = ({ className, ...props }: ComponentProps<'div'>) => (\n <div className={cn('rounded-lg border border-border bg-background p-3 text-body', className)} {...props} />\n);\n\nexport const AskUserQuestion = ({ className, ...props }: ComponentProps<'legend'>) => (\n <legend className={cn('mb-3 text-subheading text-foreground', className)} {...props} />\n);\n\nexport const AskUserOptionDescription = ({ className, ...props }: ComponentProps<'span'>) => (\n <span className={cn('block text-meta text-muted-foreground', className)} {...props} />\n);\n\ninterface AskUserOptionControlProps extends Omit<ComponentProps<'input'>, 'type'> {\n type: 'radio' | 'checkbox';\n label: string;\n description?: string;\n}\n\nexport const AskUserOptionControl = ({ type, label, description, className, ...props }: AskUserOptionControlProps) => (\n <label\n className={cn(\n 'state-layer bg-card shadow-raised flex cursor-pointer items-start gap-2 rounded-md px-3 py-2 text-foreground transition-colors has-[:checked]:[--surface-tint:var(--fill-hover)] has-[:checked]:[--surface-rim:var(--border-strong)] has-[:disabled]:cursor-not-allowed has-[:disabled]:opacity-50',\n className,\n )}\n >\n <input type={type} className=\"mt-0.5 accent-current\" {...props} />\n <span>\n <span className=\"block\">{label}</span>\n {description ? <AskUserOptionDescription>{description}</AskUserOptionDescription> : null}\n </span>\n </label>\n);\n\nexport const AskUserSubmit = ({ children = 'Submit answer', ...props }: ComponentProps<typeof Button>) => (\n <Button icon={<Check />} type=\"button\" size=\"sm\" variant=\"primary\" {...props}>\n {children}\n </Button>\n);\n\nexport const AskUserPending = ({ children = 'Submitting…', className, ...props }: ComponentProps<'span'>) => (\n <span role=\"status\" className={cn('text-meta text-muted-foreground', className)} {...props}>\n {children}\n </span>\n);\n\nexport interface AskUserOutputProps extends ComponentProps<'div'> {\n result: AskUserResult;\n}\n\nexport const AskUserOutput = ({ result, className, ...props }: AskUserOutputProps) => (\n <div\n role={result.isError ? 'alert' : 'status'}\n className={cn('space-y-2 rounded-md bg-card p-3 text-foreground', result.isError && 'text-error', className)}\n {...props}\n >\n <Badge size=\"xs\" variant={result.isError ? 'red' : 'green'}>\n {result.isError ? 'Error' : 'Answered'}\n </Badge>\n <p>{result.content}</p>\n </div>\n);\n\nexport interface AskUserProps extends Omit<ComponentProps<typeof AskUserContainer>, 'children' | 'onSubmit'> {\n payload: AskUserPayload;\n result?: AskUserResult;\n isAnswered?: boolean;\n isSubmitting?: boolean;\n onSubmit: (answer: AskUserAnswer) => void;\n footer?: ReactNode;\n}\n\nconst validOptions = (options: AskUserPayload['options']): AskUserOption[] =>\n options?.filter((option): option is AskUserOption =>\n Boolean(option && typeof option.label === 'string' && option.label),\n ) ?? [];\n\ninterface AskUserInputProps extends AskUserProps {\n options: AskUserOption[];\n}\n\nconst AskUserInput = ({\n payload,\n options,\n result,\n isAnswered = false,\n isSubmitting = false,\n onSubmit,\n footer,\n ...props\n}: AskUserInputProps) => {\n const inputId = useId();\n const [text, setText] = useState('');\n const [selected, setSelected] = useState<string[]>([]);\n\n if (result || isAnswered) {\n return (\n <AskUserContainer data-testid=\"ask-user\" {...props}>\n <p className=\"text-foreground text-subheading mb-2\">{payload.question}</p>\n {result ? <AskUserOutput result={result} /> : <Badge variant=\"green\">Answered</Badge>}\n </AskUserContainer>\n );\n }\n\n const submitText = () => {\n const answer = text.trim();\n if (answer && !isSubmitting) onSubmit(answer);\n };\n\n const handleTextKeyDown = (event: KeyboardEvent<HTMLInputElement>) => {\n if (event.key === 'Enter') {\n event.preventDefault();\n submitText();\n }\n };\n\n if (options.length === 0) {\n return (\n <AskUserContainer data-testid=\"ask-user\" {...props}>\n <FieldBlock.Label name={inputId} htmlFor={inputId} className=\"mb-2\">\n {payload.question}\n </FieldBlock.Label>\n <div className=\"flex items-center gap-2\">\n <Input\n id={inputId}\n value={text}\n onChange={event => setText(event.target.value)}\n onKeyDown={handleTextKeyDown}\n placeholder=\"Type your answer...\"\n disabled={isSubmitting}\n size=\"sm\"\n />\n <AskUserSubmit aria-label=\"Submit answer\" disabled={isSubmitting || !text.trim()} onClick={submitText}>\n Submit\n </AskUserSubmit>\n </div>\n {isSubmitting ? <AskUserPending className=\"mt-2 block\" /> : null}\n {footer}\n </AskUserContainer>\n );\n }\n\n const isMulti = payload.selectionMode === 'multi_select';\n return (\n <AskUserContainer data-testid=\"ask-user\" {...props}>\n <fieldset disabled={isSubmitting} className=\"space-y-2\">\n <AskUserQuestion>{payload.question}</AskUserQuestion>\n {options.map(option => {\n const checked = selected.includes(option.label);\n return (\n <AskUserOptionControl\n key={option.label}\n type={isMulti ? 'checkbox' : 'radio'}\n name={inputId}\n label={option.label}\n description={option.description}\n disabled={isSubmitting}\n checked={checked}\n onChange={() => {\n if (isSubmitting) return;\n if (!isMulti) {\n setSelected([option.label]);\n onSubmit(option.label);\n return;\n }\n setSelected(current =>\n current.includes(option.label)\n ? current.filter(selectedLabel => selectedLabel !== option.label)\n : [...current, option.label],\n );\n }}\n />\n );\n })}\n {isMulti ? (\n <AskUserSubmit disabled={isSubmitting || selected.length === 0} onClick={() => onSubmit(selected)}>\n Submit answer\n </AskUserSubmit>\n ) : null}\n {isSubmitting ? <AskUserPending /> : null}\n {footer}\n </fieldset>\n </AskUserContainer>\n );\n};\n\nexport const AskUser = ({ payload, ...props }: AskUserProps) => {\n const options = validOptions(payload.options);\n const payloadKey = JSON.stringify([payload.question, options.map(option => option.label), payload.selectionMode]);\n\n return <AskUserInput key={payloadKey} payload={payload} options={options} {...props} />;\n};\n"],"names":[],"mappings":"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"}
|
|
@@ -1,81 +0,0 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
|
|
4
|
-
|
|
5
|
-
const jsxRuntime = require('react/jsx-runtime');
|
|
6
|
-
const pageHeadingContext = require('../page-heading-context-Du-CpxAx.cjs');
|
|
7
|
-
const utils_cn = require('../cn-DG0X1KEP.cjs');
|
|
8
|
-
|
|
9
|
-
function MainContentLayout({
|
|
10
|
-
children,
|
|
11
|
-
className,
|
|
12
|
-
style
|
|
13
|
-
}) {
|
|
14
|
-
const devStyleRequested = devUIStyleRequested("MainContentLayout");
|
|
15
|
-
const pageHeading = pageHeadingContext.usePageHeading();
|
|
16
|
-
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
17
|
-
"main",
|
|
18
|
-
{
|
|
19
|
-
className: utils_cn.cn(`grid h-full grid-rows-[auto_1fr] content-start items-start`, className),
|
|
20
|
-
style: { ...style, ...devStyleRequested ? { border: "3px dotted red" } : {} },
|
|
21
|
-
children: [
|
|
22
|
-
pageHeading && /* @__PURE__ */ jsxRuntime.jsx("h1", { className: "sr-only", children: pageHeading }),
|
|
23
|
-
children
|
|
24
|
-
]
|
|
25
|
-
}
|
|
26
|
-
);
|
|
27
|
-
}
|
|
28
|
-
function MainContentContent({
|
|
29
|
-
children,
|
|
30
|
-
className,
|
|
31
|
-
isCentered = false,
|
|
32
|
-
isDivided = false,
|
|
33
|
-
hasLeftServiceColumn = false,
|
|
34
|
-
style
|
|
35
|
-
}) {
|
|
36
|
-
const devStyleRequested = devUIStyleRequested("MainContentContent");
|
|
37
|
-
const contentClassName = getMainContentContentClassName({ isCentered, isDivided, hasLeftServiceColumn, className });
|
|
38
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
39
|
-
"div",
|
|
40
|
-
{
|
|
41
|
-
className: contentClassName,
|
|
42
|
-
style: { ...style, ...devStyleRequested ? { border: "3px dotted orange" } : {} },
|
|
43
|
-
children
|
|
44
|
-
}
|
|
45
|
-
);
|
|
46
|
-
}
|
|
47
|
-
const getMainContentContentClassName = ({
|
|
48
|
-
isCentered,
|
|
49
|
-
isDivided,
|
|
50
|
-
hasLeftServiceColumn,
|
|
51
|
-
className
|
|
52
|
-
}) => {
|
|
53
|
-
return utils_cn.cn(
|
|
54
|
-
`grid h-full overflow-y-auto `,
|
|
55
|
-
`min-w-min overflow-x-auto`,
|
|
56
|
-
{
|
|
57
|
-
"items-start content-start": !isCentered && !isDivided && !hasLeftServiceColumn,
|
|
58
|
-
"grid place-items-center": isCentered,
|
|
59
|
-
"grid-cols-[1fr_1fr]": isDivided && !hasLeftServiceColumn,
|
|
60
|
-
"grid-cols-[12rem_1fr_1fr]": isDivided && hasLeftServiceColumn,
|
|
61
|
-
"grid-cols-[auto_1fr]": !isDivided && hasLeftServiceColumn
|
|
62
|
-
},
|
|
63
|
-
className
|
|
64
|
-
);
|
|
65
|
-
};
|
|
66
|
-
function devUIStyleRequested(name) {
|
|
67
|
-
try {
|
|
68
|
-
const raw = localStorage.getItem("add-dev-style-to-components");
|
|
69
|
-
if (!raw) return false;
|
|
70
|
-
const components = raw.split(",").map((c) => c.trim()).filter(Boolean);
|
|
71
|
-
return components.includes(name);
|
|
72
|
-
} catch (error) {
|
|
73
|
-
console.error("Error reading or parsing localStorage:", error);
|
|
74
|
-
return false;
|
|
75
|
-
}
|
|
76
|
-
}
|
|
77
|
-
|
|
78
|
-
exports.MainContentContent = MainContentContent;
|
|
79
|
-
exports.MainContentLayout = MainContentLayout;
|
|
80
|
-
exports.getMainContentContentClassName = getMainContentContentClassName;
|
|
81
|
-
//# sourceMappingURL=MainContent.cjs.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"MainContent.cjs.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":["usePageHeading","jsxs","cn","jsx"],"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,cAAcA,iCAAA,EAAe;AAEnC,EAAA,uBACEC,eAAA;AAAA,IAAC,MAAA;AAAA,IAAA;AAAA,MACC,SAAA,EAAWC,WAAA,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,oBAAeC,cAAA,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,uBACEA,cAAA;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,OAAOD,WAAA;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;;;;;;"}
|