@mastra/playground-ui 62.0.0-alpha.2 → 62.0.0-alpha.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{activity-maXCNWZp.js → activity-BsrB5ADa.js} +7 -5
- package/dist/activity-BsrB5ADa.js.map +1 -0
- package/dist/{activity-pXCpwxxi.cjs → activity-CaFdLiPz.cjs} +6 -4
- package/dist/activity-CaFdLiPz.cjs.map +1 -0
- package/dist/app-shell.css +7 -0
- package/dist/{ask-user-card-C14RGsoO.cjs → ask-user-card-BHIYyRdy.cjs} +2 -2
- package/dist/{ask-user-card-C14RGsoO.cjs.map → ask-user-card-BHIYyRdy.cjs.map} +1 -1
- package/dist/{ask-user-card-C01JQ7bo.js → ask-user-card-BaaCfWFs.js} +2 -2
- package/dist/{ask-user-card-C01JQ7bo.js.map → ask-user-card-BaaCfWFs.js.map} +1 -1
- package/dist/{collapsible-BzlQAuym.cjs → collapsible-C6BZhVRG.cjs} +2 -10
- package/dist/collapsible-C6BZhVRG.cjs.map +1 -0
- package/dist/{collapsible-8h5KBZPX.js → collapsible-DglEffBF.js} +2 -10
- package/dist/collapsible-DglEffBF.js.map +1 -0
- package/dist/{combobox-8_JEWMYs.js → combobox-CMu7NDj6.js} +10 -2
- package/dist/combobox-CMu7NDj6.js.map +1 -0
- package/dist/{combobox-Csiduxme.cjs → combobox-DW7-4bGp.cjs} +10 -2
- package/dist/combobox-DW7-4bGp.cjs.map +1 -0
- package/dist/{command-C-i5cx8D.js → command-BW5Jyad6.js} +4 -2
- package/dist/command-BW5Jyad6.js.map +1 -0
- package/dist/{command-Cq-K24jI.cjs → command-Bv53_kMY.cjs} +4 -2
- package/dist/command-Bv53_kMY.cjs.map +1 -0
- package/dist/components/ClampedText.cjs.js +2 -2
- package/dist/components/ClampedText.cjs.js.map +1 -1
- package/dist/components/ClampedText.es.js +2 -2
- package/dist/components/ClampedText.es.js.map +1 -1
- package/dist/components/Collapsible.cjs.js +1 -1
- package/dist/components/Collapsible.es.js +1 -1
- package/dist/components/Combobox.cjs.js +1 -1
- package/dist/components/Combobox.es.js +1 -1
- package/dist/components/Command.cjs.js +1 -1
- package/dist/components/Command.es.js +1 -1
- package/dist/components/CommandPalette.cjs.js +1 -1
- package/dist/components/CommandPalette.es.js +1 -1
- package/dist/components/Comment.cjs.js +1 -1
- package/dist/components/Comment.es.js +1 -1
- package/dist/components/Composer.cjs.js +1 -1
- package/dist/components/Composer.es.js +1 -1
- package/dist/components/DataCodeSection.cjs.js +1 -1
- package/dist/components/DataCodeSection.es.js +1 -1
- package/dist/components/DataList.cjs.js +3 -3
- package/dist/components/DataList.es.js +4 -4
- 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/DisclosureChevron.cjs.js +10 -0
- package/dist/components/DisclosureChevron.cjs.js.map +1 -0
- package/dist/components/DisclosureChevron.d.ts +2 -0
- package/dist/components/DisclosureChevron.es.js +2 -0
- package/dist/components/DisclosureChevron.es.js.map +1 -0
- package/dist/components/EnvironmentVariablesEditor.cjs.js +2 -2
- package/dist/components/EnvironmentVariablesEditor.es.js +2 -2
- package/dist/components/FilterBar.cjs.js +3 -1
- package/dist/components/FilterBar.cjs.js.map +1 -1
- package/dist/components/FilterBar.es.js +4 -2
- package/dist/components/FilterBar.es.js.map +1 -1
- package/dist/components/FormFieldBlocks.cjs.js +1 -1
- package/dist/components/FormFieldBlocks.es.js +1 -1
- package/dist/components/Input.cjs.js +1 -1
- package/dist/components/Input.es.js +1 -1
- package/dist/components/InputGroup.cjs.js +1 -1
- package/dist/components/InputGroup.es.js +1 -1
- package/dist/components/InputNumber.cjs.js +5 -3
- package/dist/components/InputNumber.cjs.js.map +1 -1
- package/dist/components/InputNumber.es.js +5 -3
- package/dist/components/InputNumber.es.js.map +1 -1
- package/dist/components/JSONSchemaForm.cjs.js +1 -1
- package/dist/components/JSONSchemaForm.es.js +1 -1
- package/dist/components/ListSearch.cjs.js +1 -1
- package/dist/components/ListSearch.es.js +1 -1
- package/dist/components/LogsDataList.cjs.js +3 -3
- package/dist/components/LogsDataList.es.js +3 -3
- package/dist/components/PageLayout.cjs.js +1 -1
- package/dist/components/PageLayout.cjs.js.map +1 -1
- package/dist/components/PageLayout.es.js +1 -1
- package/dist/components/PageLayout.es.js.map +1 -1
- package/dist/components/PropertyFilter.cjs.js +2 -2
- package/dist/components/PropertyFilter.es.js +3 -3
- package/dist/components/RuleBuilder.cjs.js +1 -1
- package/dist/components/RuleBuilder.es.js +1 -1
- package/dist/components/SavedViews.cjs.js +3 -1
- package/dist/components/SavedViews.cjs.js.map +1 -1
- package/dist/components/SavedViews.es.js +3 -1
- package/dist/components/SavedViews.es.js.map +1 -1
- package/dist/components/SearchInput.cjs.js +1 -1
- package/dist/components/SearchInput.es.js +1 -1
- package/dist/components/Sidebar.cjs.js +5 -4
- package/dist/components/Sidebar.cjs.js.map +1 -1
- package/dist/components/Sidebar.es.js +5 -4
- package/dist/components/Sidebar.es.js.map +1 -1
- package/dist/components/Tree.cjs.js +1 -1
- package/dist/components/Tree.es.js +1 -1
- package/dist/components/Workflow.cjs.js +1 -1
- package/dist/components/Workflow.es.js +1 -1
- package/dist/components/ai/activity.cjs.js +4 -4
- package/dist/components/ai/activity.es.js +4 -4
- package/dist/components/ai/ask-user.cjs.js +1 -1
- package/dist/components/ai/ask-user.es.js +1 -1
- package/dist/components/ai/tool-approval.cjs.js +1 -1
- package/dist/components/ai/tool-approval.es.js +1 -1
- package/dist/components/ai/tool-call.cjs.js +1 -1
- package/dist/components/ai/tool-call.es.js +1 -1
- package/dist/{composer-DhxSetWI.cjs → composer-Cg5bXN1r.cjs} +5 -3
- package/dist/composer-Cg5bXN1r.cjs.map +1 -0
- package/dist/{composer-CIfMr8q5.js → composer-CxmOOUX8.js} +5 -3
- package/dist/composer-CxmOOUX8.js.map +1 -0
- package/dist/{data-code-section-CvLs4lM8.js → data-code-section-B1dGZ0ds.js} +2 -2
- package/dist/{data-code-section-CvLs4lM8.js.map → data-code-section-B1dGZ0ds.js.map} +1 -1
- package/dist/{data-code-section-D0NR1REP.cjs → data-code-section-BTZPG2zM.cjs} +2 -2
- package/dist/{data-code-section-D0NR1REP.cjs.map → data-code-section-BTZPG2zM.cjs.map} +1 -1
- package/dist/{data-list-BfepBJLG.js → data-list-4UMxoFNU.js} +192 -11
- package/dist/data-list-4UMxoFNU.js.map +1 -0
- package/dist/{data-list-oQsJVUa6.cjs → data-list-CqVYt2aN.cjs} +191 -10
- package/dist/data-list-CqVYt2aN.cjs.map +1 -0
- package/dist/{data-list-skeleton-BE7yRNks.cjs → data-list-skeleton-BMGppDAy.cjs} +3 -3
- package/dist/data-list-skeleton-BMGppDAy.cjs.map +1 -0
- package/dist/{data-list-skeleton-DnVnqTGL.js → data-list-skeleton-DGNzfd4Y.js} +3 -3
- package/dist/data-list-skeleton-DGNzfd4Y.js.map +1 -0
- package/dist/{data-panel-BLk0mZe6.js → data-panel-VYp4slDb.js} +2 -2
- package/dist/{data-panel-BLk0mZe6.js.map → data-panel-VYp4slDb.js.map} +1 -1
- package/dist/{data-panel-BaqnMzRn.cjs → data-panel-r1LYHphg.cjs} +2 -2
- package/dist/{data-panel-BaqnMzRn.cjs.map → data-panel-r1LYHphg.cjs.map} +1 -1
- package/dist/date-time-range-picker-BBbF3LWF.cjs +210 -0
- package/dist/date-time-range-picker-BBbF3LWF.cjs.map +1 -0
- package/dist/date-time-range-picker-CUUg0sIl.js +208 -0
- package/dist/date-time-range-picker-CUUg0sIl.js.map +1 -0
- package/dist/disclosure-chevron-BWZ8Alz1.js +33 -0
- package/dist/disclosure-chevron-BWZ8Alz1.js.map +1 -0
- package/dist/disclosure-chevron-B_gmYFR5.cjs +35 -0
- package/dist/disclosure-chevron-B_gmYFR5.cjs.map +1 -0
- package/dist/domains/chat/attachments/composer-attachment-list.cjs.js +1 -1
- package/dist/domains/chat/attachments/composer-attachment-list.es.js +1 -1
- package/dist/domains/chat/components/badge-wrapper.cjs.js +1 -1
- package/dist/domains/chat/components/badge-wrapper.es.js +1 -1
- package/dist/domains/chat/context/chat-context.cjs.js.map +1 -1
- package/dist/domains/chat/context/chat-context.es.js.map +1 -1
- package/dist/domains/chat/messages/message-row.cjs.js +2 -2
- package/dist/domains/chat/messages/message-row.es.js +2 -2
- package/dist/domains/chat/messages/notification-signal-notice.cjs.js +1 -1
- package/dist/domains/chat/messages/notification-signal-notice.es.js +1 -1
- package/dist/domains/chat/messages/renderers/message-text.cjs.js +16 -8
- package/dist/domains/chat/messages/renderers/message-text.cjs.js.map +1 -1
- package/dist/domains/chat/messages/renderers/message-text.es.js +17 -9
- package/dist/domains/chat/messages/renderers/message-text.es.js.map +1 -1
- package/dist/domains/chat/messages/renderers/reasoning-part-renderer.cjs.js +1 -1
- package/dist/domains/chat/messages/renderers/reasoning-part-renderer.es.js +1 -1
- package/dist/domains/chat/messages/signal-badge.cjs.js +1 -1
- package/dist/domains/chat/messages/signal-badge.es.js +1 -1
- package/dist/domains/chat/messages/skill-message.cjs.js +2 -2
- package/dist/domains/chat/messages/skill-message.es.js +2 -2
- package/dist/domains/chat/messages/system-reminder-badge.cjs.js +1 -1
- package/dist/domains/chat/messages/system-reminder-badge.es.js +1 -1
- package/dist/domains/chat/tools/badges/agent-badge-wrapper.cjs.js +1 -1
- package/dist/domains/chat/tools/badges/agent-badge-wrapper.es.js +1 -1
- package/dist/domains/chat/tools/badges/agent-badge.cjs.js +1 -1
- package/dist/domains/chat/tools/badges/agent-badge.es.js +1 -1
- package/dist/domains/chat/tools/badges/ask-user-badge.cjs.js +1 -1
- package/dist/domains/chat/tools/badges/ask-user-badge.es.js +1 -1
- package/dist/domains/chat/tools/badges/observation-marker-badge.cjs.js +1 -1
- package/dist/domains/chat/tools/badges/observation-marker-badge.es.js +1 -1
- package/dist/domains/chat/tools/badges/observation-marker-details.cjs.js +1 -1
- package/dist/domains/chat/tools/badges/observation-marker-details.es.js +1 -1
- package/dist/domains/chat/tools/badges/tool-approval-badge.cjs.js +1 -1
- package/dist/domains/chat/tools/badges/tool-approval-badge.es.js +1 -1
- package/dist/domains/chat/tools/badges/workflow-badge.cjs.js +1 -2
- package/dist/domains/chat/tools/badges/workflow-badge.cjs.js.map +1 -1
- package/dist/domains/chat/tools/badges/workflow-badge.es.js +1 -2
- package/dist/domains/chat/tools/badges/workflow-badge.es.js.map +1 -1
- package/dist/domains/chat/tools/tool-card.cjs.js +1 -1
- package/dist/domains/chat/tools/tool-card.es.js +1 -1
- package/dist/domains/logs/components/log-data-panel.cjs.js +1 -1
- package/dist/domains/logs/components/log-data-panel.es.js +1 -1
- package/dist/domains/logs/components/logs-list-view.cjs.js +3 -3
- package/dist/domains/logs/components/logs-list-view.es.js +3 -3
- package/dist/domains/logs/components/logs-toolbar.cjs.js +1 -1
- package/dist/domains/logs/components/logs-toolbar.es.js +1 -1
- package/dist/domains/metrics/components/agent-runs-card.cjs.js +0 -1
- package/dist/domains/metrics/components/agent-runs-card.cjs.js.map +1 -1
- package/dist/domains/metrics/components/agent-runs-card.es.js +0 -1
- package/dist/domains/metrics/components/agent-runs-card.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/failure-rate-card.cjs.js +2 -1
- package/dist/domains/metrics/components/failure-rate-card.cjs.js.map +1 -1
- package/dist/domains/metrics/components/failure-rate-card.es.js +2 -1
- package/dist/domains/metrics/components/failure-rate-card.es.js.map +1 -1
- package/dist/domains/metrics/components/latency-card.cjs.js +0 -1
- package/dist/domains/metrics/components/latency-card.cjs.js.map +1 -1
- package/dist/domains/metrics/components/latency-card.es.js +0 -1
- package/dist/domains/metrics/components/latency-card.es.js.map +1 -1
- package/dist/domains/metrics/components/scores-card.cjs.js +0 -1
- package/dist/domains/metrics/components/scores-card.cjs.js.map +1 -1
- package/dist/domains/metrics/components/scores-card.es.js +0 -1
- package/dist/domains/metrics/components/scores-card.es.js.map +1 -1
- package/dist/domains/metrics/components/token-usage-card.cjs.js +0 -1
- package/dist/domains/metrics/components/token-usage-card.cjs.js.map +1 -1
- package/dist/domains/metrics/components/token-usage-card.es.js +0 -1
- package/dist/domains/metrics/components/token-usage-card.es.js.map +1 -1
- package/dist/domains/scores/components/score-data-panel.cjs.js +13 -11
- package/dist/domains/scores/components/score-data-panel.cjs.js.map +1 -1
- package/dist/domains/scores/components/score-data-panel.es.js +13 -11
- package/dist/domains/scores/components/score-data-panel.es.js.map +1 -1
- package/dist/domains/scores/components/span-scoring.cjs.js +1 -1
- package/dist/domains/scores/components/span-scoring.es.js +1 -1
- package/dist/domains/scores/components/trace-scores-tab.cjs.js +5 -21
- package/dist/domains/scores/components/trace-scores-tab.cjs.js.map +1 -1
- package/dist/domains/scores/components/trace-scores-tab.es.js +5 -21
- package/dist/domains/scores/components/trace-scores-tab.es.js.map +1 -1
- package/dist/domains/traces/components/feedback-thread.cjs.js +1 -1
- package/dist/domains/traces/components/feedback-thread.es.js +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 +2 -2
- package/dist/domains/traces/components/span-payload/span-output-renderers.es.js +2 -2
- 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 +3 -3
- package/dist/domains/traces/components/span-payload/span-payload-primitives.es.js +3 -3
- package/dist/domains/traces/components/span-payload/span-payload-processor.cjs.js +1 -1
- package/dist/domains/traces/components/span-payload/span-payload-processor.es.js +1 -1
- package/dist/domains/traces/components/span-payload/span-payload-tool.cjs.js +2 -2
- package/dist/domains/traces/components/span-payload/span-payload-tool.es.js +2 -2
- package/dist/domains/traces/components/span-payload/span-processor-attributes.cjs.js +1 -1
- package/dist/domains/traces/components/span-payload/span-processor-attributes.es.js +1 -1
- package/dist/domains/traces/components/span-summary-description.cjs.js +1 -1
- package/dist/domains/traces/components/span-summary-description.es.js +1 -1
- package/dist/domains/traces/components/thread-trace/thread-trace-details.cjs.js +1 -1
- package/dist/domains/traces/components/thread-trace/thread-trace-details.es.js +1 -1
- package/dist/domains/traces/components/thread-view-by-trace.cjs.js +0 -1
- package/dist/domains/traces/components/thread-view-by-trace.cjs.js.map +1 -1
- package/dist/domains/traces/components/thread-view-by-trace.es.js +0 -1
- package/dist/domains/traces/components/thread-view-by-trace.es.js.map +1 -1
- package/dist/domains/traces/components/trace-columns-menu.cjs.js +1 -1
- package/dist/domains/traces/components/trace-columns-menu.es.js +1 -1
- package/dist/domains/traces/components/trace-data-panel-view.cjs.js +56 -21
- package/dist/domains/traces/components/trace-data-panel-view.cjs.js.map +1 -1
- package/dist/domains/traces/components/trace-data-panel-view.es.js +57 -22
- package/dist/domains/traces/components/trace-data-panel-view.es.js.map +1 -1
- package/dist/domains/traces/components/trace-data-panel.cjs.js +4 -5
- package/dist/domains/traces/components/trace-data-panel.cjs.js.map +1 -1
- package/dist/domains/traces/components/trace-data-panel.es.js +4 -5
- package/dist/domains/traces/components/trace-data-panel.es.js.map +1 -1
- package/dist/domains/traces/components/trace-id-button.cjs.js +1 -1
- package/dist/domains/traces/components/trace-id-button.es.js +1 -1
- package/dist/domains/traces/components/trace-summary-description.cjs.js +1 -1
- package/dist/domains/traces/components/trace-summary-description.es.js +1 -1
- package/dist/domains/traces/components/trace-thread-panel.cjs.js +1 -1
- package/dist/domains/traces/components/trace-thread-panel.es.js +1 -1
- package/dist/domains/traces/components/trace-time-range-chip.cjs.js +2 -2
- package/dist/domains/traces/components/trace-time-range-chip.es.js +2 -2
- package/dist/domains/traces/components/traces-list-view.cjs.js +126 -112
- package/dist/domains/traces/components/traces-list-view.cjs.js.map +1 -1
- package/dist/domains/traces/components/traces-list-view.es.js +127 -113
- package/dist/domains/traces/components/traces-list-view.es.js.map +1 -1
- package/dist/domains/traces/components/traces-page-skeleton.cjs.js +2 -2
- package/dist/domains/traces/components/traces-page-skeleton.es.js +2 -2
- package/dist/domains/traces/trace-list-columns.cjs.js +15 -0
- package/dist/domains/traces/trace-list-columns.cjs.js.map +1 -1
- package/dist/domains/traces/trace-list-columns.es.js +15 -1
- package/dist/domains/traces/trace-list-columns.es.js.map +1 -1
- package/dist/domains/workflows/components/workflow-combobox.cjs.js +1 -1
- package/dist/domains/workflows/components/workflow-combobox.es.js +1 -1
- package/dist/domains/workflows/components/workflow-information.cjs.js +3 -2
- package/dist/domains/workflows/components/workflow-information.cjs.js.map +1 -1
- package/dist/domains/workflows/components/workflow-information.es.js +4 -3
- package/dist/domains/workflows/components/workflow-information.es.js.map +1 -1
- package/dist/domains/workflows/components/workflow-step-detail.cjs.js +2 -2
- package/dist/domains/workflows/components/workflow-step-detail.es.js +2 -2
- package/dist/domains/workflows/components/workflows-list/workflows-list.cjs.js +4 -3
- package/dist/domains/workflows/components/workflows-list/workflows-list.cjs.js.map +1 -1
- package/dist/domains/workflows/components/workflows-list/workflows-list.es.js +5 -4
- package/dist/domains/workflows/components/workflows-list/workflows-list.es.js.map +1 -1
- package/dist/domains/workflows/runs/workflow-run-list.cjs.js +3 -3
- package/dist/domains/workflows/runs/workflow-run-list.cjs.js.map +1 -1
- package/dist/domains/workflows/runs/workflow-run-list.es.js +3 -3
- package/dist/domains/workflows/runs/workflow-run-list.es.js.map +1 -1
- package/dist/domains/workflows/workflow/use-workflow-graph-runtime.cjs.js +2 -2
- package/dist/domains/workflows/workflow/use-workflow-graph-runtime.es.js +2 -2
- package/dist/domains/workflows/workflow/workflow-body-graph.cjs.js +1 -1
- package/dist/domains/workflows/workflow/workflow-body-graph.es.js +1 -1
- package/dist/domains/workflows/workflow/workflow-card.cjs.js +13 -11
- package/dist/domains/workflows/workflow/workflow-card.cjs.js.map +1 -1
- package/dist/domains/workflows/workflow/workflow-card.es.js +13 -11
- package/dist/domains/workflows/workflow/workflow-card.es.js.map +1 -1
- package/dist/domains/workflows/workflow/workflow-graph-inner.cjs.js +2 -2
- package/dist/domains/workflows/workflow/workflow-graph-inner.es.js +2 -2
- package/dist/domains/workflows/workflow/workflow-graph-node.cjs.js +2 -2
- package/dist/domains/workflows/workflow/workflow-graph-node.es.js +2 -2
- package/dist/domains/workflows/workflow/workflow-input-data.cjs.js +3 -2
- package/dist/domains/workflows/workflow/workflow-input-data.cjs.js.map +1 -1
- package/dist/domains/workflows/workflow/workflow-input-data.es.js +4 -3
- package/dist/domains/workflows/workflow/workflow-input-data.es.js.map +1 -1
- package/dist/domains/workflows/workflow/workflow-nested-graph.cjs.js +2 -2
- package/dist/domains/workflows/workflow/workflow-nested-graph.es.js +2 -2
- package/dist/domains/workflows/workflow/workflow-run-data.cjs.js +3 -2
- package/dist/domains/workflows/workflow/workflow-run-data.cjs.js.map +1 -1
- package/dist/domains/workflows/workflow/workflow-run-data.es.js +4 -3
- package/dist/domains/workflows/workflow/workflow-run-data.es.js.map +1 -1
- package/dist/domains/workflows/workflow/workflow-suspended-steps.cjs.js +3 -9
- package/dist/domains/workflows/workflow/workflow-suspended-steps.cjs.js.map +1 -1
- package/dist/domains/workflows/workflow/workflow-suspended-steps.es.js +4 -10
- package/dist/domains/workflows/workflow/workflow-suspended-steps.es.js.map +1 -1
- package/dist/domains/workflows/workflow/workflow-time-travel-form.cjs.js +3 -2
- package/dist/domains/workflows/workflow/workflow-time-travel-form.cjs.js.map +1 -1
- package/dist/domains/workflows/workflow/workflow-time-travel-form.es.js +4 -3
- package/dist/domains/workflows/workflow/workflow-time-travel-form.es.js.map +1 -1
- package/dist/domains/workflows/workflow/workflow-timeline.cjs.js +3 -8
- package/dist/domains/workflows/workflow/workflow-timeline.cjs.js.map +1 -1
- package/dist/domains/workflows/workflow/workflow-timeline.es.js +4 -9
- package/dist/domains/workflows/workflow/workflow-timeline.es.js.map +1 -1
- package/dist/domains/workspace/components/workspace-add-skill-dialog.cjs.js +1 -1
- package/dist/domains/workspace/components/workspace-add-skill-dialog.es.js +1 -1
- package/dist/domains/workspace/components/workspace-create-directory.cjs.js +1 -1
- package/dist/domains/workspace/components/workspace-create-directory.es.js +1 -1
- package/dist/domains/workspace/components/workspace-search.cjs.js +1 -1
- package/dist/domains/workspace/components/workspace-search.es.js +1 -1
- package/dist/domains/workspace/components/workspace-tree.cjs.js +1 -1
- package/dist/domains/workspace/components/workspace-tree.es.js +1 -1
- package/dist/ee/signals/components/entity-index-list.cjs.js +1 -1
- package/dist/ee/signals/components/entity-index-list.es.js +1 -1
- package/dist/ee/signals/components/trace-intelligence-entity-index.cjs.js +3 -3
- package/dist/ee/signals/components/trace-intelligence-entity-index.es.js +3 -3
- package/dist/ee/signals/settings/signal-definition-form-dialog.cjs.js +1 -1
- package/dist/ee/signals/settings/signal-definition-form-dialog.es.js +1 -1
- package/dist/ee/signals/signal-lifelines.cjs.js +2 -8
- package/dist/ee/signals/signal-lifelines.cjs.js.map +1 -1
- package/dist/ee/signals/signal-lifelines.es.js +2 -8
- package/dist/ee/signals/signal-lifelines.es.js.map +1 -1
- package/dist/ee/topics/components/topic-trace-summary-list.cjs.js +2 -2
- package/dist/ee/topics/components/topic-trace-summary-list.es.js +2 -2
- package/dist/{filter-bar-chip-BBPHw-rX.cjs → filter-bar-chip-BUlEVUgT.cjs} +3 -1
- package/dist/filter-bar-chip-BUlEVUgT.cjs.map +1 -0
- package/dist/{filter-bar-chip-SX3vDA7h.js → filter-bar-chip-DBjcrQFh.js} +3 -1
- package/dist/filter-bar-chip-DBjcrQFh.js.map +1 -0
- package/dist/hooks/use-local-storage-state.es.js +1 -1
- package/dist/{input-vi0ICZHe.js → input-DQFUjtnh.js} +4 -2
- package/dist/input-DQFUjtnh.js.map +1 -0
- package/dist/{input-group-C7WC6xGL.js → input-group-C_2SrLdX.js} +4 -2
- package/dist/input-group-C_2SrLdX.js.map +1 -0
- package/dist/{input-group-CGbhXsmd.cjs → input-group-Cxfp0mxQ.cjs} +4 -2
- package/dist/input-group-Cxfp0mxQ.cjs.map +1 -0
- package/dist/{input-HPE241gI.cjs → input-zdqTky_C.cjs} +4 -2
- package/dist/input-zdqTky_C.cjs.map +1 -0
- package/dist/layout/tabbed-container.cjs.js +3 -3
- package/dist/layout/tabbed-container.es.js +3 -3
- package/dist/lib/form/components/array-element-wrapper.cjs.js +3 -2
- package/dist/lib/form/components/array-element-wrapper.cjs.js.map +1 -1
- package/dist/lib/form/components/array-element-wrapper.es.js +4 -3
- package/dist/lib/form/components/array-element-wrapper.es.js.map +1 -1
- package/dist/lib/form/components/number-field.cjs.js +1 -1
- package/dist/lib/form/components/number-field.es.js +1 -1
- package/dist/lib/form/components/object-wrapper.cjs.js +3 -2
- package/dist/lib/form/components/object-wrapper.cjs.js.map +1 -1
- package/dist/lib/form/components/object-wrapper.es.js +4 -3
- package/dist/lib/form/components/object-wrapper.es.js.map +1 -1
- package/dist/lib/form/components/record-field.cjs.js +1 -1
- package/dist/lib/form/components/record-field.es.js +1 -1
- package/dist/{list-search-DTVH9Fbj.cjs → list-search-CA5w3QHa.cjs} +2 -2
- package/dist/{list-search-DTVH9Fbj.cjs.map → list-search-CA5w3QHa.cjs.map} +1 -1
- package/dist/{list-search-CTZVTRUd.js → list-search-Ce89eOzO.js} +2 -2
- package/dist/{list-search-CTZVTRUd.js.map → list-search-Ce89eOzO.js.map} +1 -1
- package/dist/{logs-data-list-BgFT_0qi.cjs → logs-data-list-C5UGLFo1.cjs} +2 -2
- package/dist/{logs-data-list-BgFT_0qi.cjs.map → logs-data-list-C5UGLFo1.cjs.map} +1 -1
- package/dist/{logs-data-list-C-F2jh04.js → logs-data-list-CgrUlafS.js} +2 -2
- package/dist/{logs-data-list-C-F2jh04.js.map → logs-data-list-CgrUlafS.js.map} +1 -1
- package/dist/new/layout/app-shell.cjs.js +1 -1
- package/dist/new/layout/app-shell.cjs.js.map +1 -1
- package/dist/new/layout/app-shell.es.js +1 -1
- package/dist/new/layout/app-shell.es.js.map +1 -1
- package/dist/{notification-activity-Bz0h5LOR.cjs → notification-activity-C2AcNOyq.cjs} +2 -2
- package/dist/{notification-activity-Bz0h5LOR.cjs.map → notification-activity-C2AcNOyq.cjs.map} +1 -1
- package/dist/{notification-activity-DTXzghFr.js → notification-activity-DquzIOZw.js} +2 -2
- package/dist/{notification-activity-DTXzghFr.js.map → notification-activity-DquzIOZw.js.map} +1 -1
- package/dist/primitives/chart-frame.cjs.js +1 -1
- package/dist/primitives/chart-frame.cjs.js.map +1 -1
- package/dist/primitives/chart-frame.es.js +1 -1
- package/dist/primitives/chart-frame.es.js.map +1 -1
- package/dist/primitives/password-manager-autofill.cjs.js +34 -0
- package/dist/primitives/password-manager-autofill.cjs.js.map +1 -0
- package/dist/primitives/password-manager-autofill.d.ts +2 -0
- package/dist/primitives/password-manager-autofill.es.js +28 -0
- package/dist/primitives/password-manager-autofill.es.js.map +1 -0
- package/dist/primitives/textarea-control.cjs.js +12 -2
- package/dist/primitives/textarea-control.cjs.js.map +1 -1
- package/dist/primitives/textarea-control.es.js +12 -2
- package/dist/primitives/textarea-control.es.js.map +1 -1
- package/dist/{property-filter-applied-7dHzckeW.cjs → property-filter-applied-ACNa3kYG.cjs} +4 -2
- package/dist/property-filter-applied-ACNa3kYG.cjs.map +1 -0
- package/dist/{property-filter-applied-CdbOixsW.js → property-filter-applied-e0Vg1895.js} +4 -2
- package/dist/property-filter-applied-e0Vg1895.js.map +1 -0
- package/dist/{reasoning-activity-D2sXBAxE.cjs → reasoning-activity-Cl7kaqgZ.cjs} +2 -2
- package/dist/{reasoning-activity-D2sXBAxE.cjs.map → reasoning-activity-Cl7kaqgZ.cjs.map} +1 -1
- package/dist/{reasoning-activity-Cpp4iYTw.js → reasoning-activity-D8AF1htp.js} +2 -2
- package/dist/{reasoning-activity-Cpp4iYTw.js.map → reasoning-activity-D8AF1htp.js.map} +1 -1
- package/dist/{search-input-CUGl4cVg.cjs → search-input-BHF2RziH.cjs} +2 -2
- package/dist/{search-input-CUGl4cVg.cjs.map → search-input-BHF2RziH.cjs.map} +1 -1
- package/dist/{search-input-iS3IW0Qo.js → search-input-BgVjoPtF.js} +2 -2
- package/dist/{search-input-iS3IW0Qo.js.map → search-input-BgVjoPtF.js.map} +1 -1
- package/dist/{signal-activity-CtSExTzh.js → signal-activity-BiWlOFhu.js} +2 -2
- package/dist/{signal-activity-CtSExTzh.js.map → signal-activity-BiWlOFhu.js.map} +1 -1
- package/dist/{signal-activity-Rh1YO0x6.cjs → signal-activity-aXcUgxDg.cjs} +2 -2
- package/dist/{signal-activity-Rh1YO0x6.cjs.map → signal-activity-aXcUgxDg.cjs.map} +1 -1
- package/dist/{span-payload-primitives-wxQ0IDhF.js → span-payload-primitives-D_Z6D-Aj.js} +6 -6
- package/dist/span-payload-primitives-D_Z6D-Aj.js.map +1 -0
- package/dist/{span-payload-primitives-DqZn_Q29.cjs → span-payload-primitives-XZgE4FGT.cjs} +6 -6
- package/dist/span-payload-primitives-XZgE4FGT.cjs.map +1 -0
- package/dist/src/domains/chat/context/chat-context.d.ts +5 -1
- package/dist/src/domains/traces/components/traces-list-view.d.ts +3 -1
- package/dist/src/domains/traces/trace-list-columns.d.ts +2 -0
- package/dist/src/ds/components/DataList/data-list-column-order.d.ts +22 -0
- package/dist/src/ds/components/DataList/data-list-reorder-context.d.ts +9 -0
- package/dist/src/ds/components/DataList/data-list-root.d.ts +16 -1
- package/dist/src/ds/components/DateTimeRangePicker/custom-range-editor.d.ts +12 -0
- package/dist/src/ds/components/DisclosureChevron/disclosure-chevron.d.ts +13 -0
- package/dist/src/ds/components/DisclosureChevron/index.d.ts +1 -0
- package/dist/src/ds/components/Input/input.d.ts +12 -1
- package/dist/src/ds/components/InputGroup/input-group.d.ts +1 -1
- package/dist/src/ds/components/InputNumber/input-number.d.ts +1 -1
- package/dist/src/ds/components/Tree/tree-context.d.ts +1 -0
- package/dist/src/ds/primitives/chart-frame.d.ts +4 -1
- package/dist/src/ds/primitives/password-manager-autofill.d.ts +29 -0
- package/dist/src/ds/primitives/textarea-control.d.ts +1 -1
- package/dist/style.css +18 -23
- package/dist/{tool-approval-CWOuZz47.cjs → tool-approval-DEfU8dPG.cjs} +2 -2
- package/dist/{tool-approval-CWOuZz47.cjs.map → tool-approval-DEfU8dPG.cjs.map} +1 -1
- package/dist/{tool-approval-BabMPJSL.js → tool-approval-DM8lvaCK.js} +2 -2
- package/dist/{tool-approval-BabMPJSL.js.map → tool-approval-DM8lvaCK.js.map} +1 -1
- package/dist/{tool-call-group-BPQTXJST.cjs → tool-call-group-CFpdexuw.cjs} +2 -2
- package/dist/{tool-call-group-BPQTXJST.cjs.map → tool-call-group-CFpdexuw.cjs.map} +1 -1
- package/dist/{tool-call-group-bE2C2hCK.js → tool-call-group-CZBqGjMh.js} +2 -2
- package/dist/{tool-call-group-bE2C2hCK.js.map → tool-call-group-CZBqGjMh.js.map} +1 -1
- package/dist/{tool-card-D-w1SgXq.js → tool-card-B0HX-uhD.js} +2 -2
- package/dist/tool-card-B0HX-uhD.js.map +1 -0
- package/dist/{tool-card-LNK49o-E.cjs → tool-card-CHyHNezE.cjs} +2 -2
- package/dist/tool-card-CHyHNezE.cjs.map +1 -0
- package/dist/{traces-data-list-DRSy_7KT.cjs → traces-data-list-DCa7QLQ3.cjs} +2 -2
- package/dist/{traces-data-list-DRSy_7KT.cjs.map → traces-data-list-DCa7QLQ3.cjs.map} +1 -1
- package/dist/{traces-data-list-C89IFLf8.js → traces-data-list-Dig7T40-.js} +2 -2
- package/dist/{traces-data-list-C89IFLf8.js.map → traces-data-list-Dig7T40-.js.map} +1 -1
- package/dist/{tree-DyVaMIwA.js → tree-BodKFJWV.js} +8 -5
- package/dist/tree-BodKFJWV.js.map +1 -0
- package/dist/{tree-JtAQw7a7.cjs → tree-vhKmzihm.cjs} +7 -4
- package/dist/tree-vhKmzihm.cjs.map +1 -0
- package/dist/{use-workflow-graph-runtime-FHoQYtWa.cjs → use-workflow-graph-runtime-B_ihs9Ev.cjs} +2 -2
- package/dist/{use-workflow-graph-runtime-FHoQYtWa.cjs.map → use-workflow-graph-runtime-B_ihs9Ev.cjs.map} +1 -1
- package/dist/{use-workflow-graph-runtime-XT_aoo-Z.js → use-workflow-graph-runtime-OyDXm_6V.js} +2 -2
- package/dist/{use-workflow-graph-runtime-XT_aoo-Z.js.map → use-workflow-graph-runtime-OyDXm_6V.js.map} +1 -1
- package/dist/{workflow-condition-card-Dy-0c_PT.cjs → workflow-condition-card-BF0PmJDV.cjs} +5 -4
- package/dist/workflow-condition-card-BF0PmJDV.cjs.map +1 -0
- package/dist/{workflow-condition-card-D30tufXt.js → workflow-condition-card-BVnfl6Zi.js} +5 -4
- package/dist/workflow-condition-card-BVnfl6Zi.js.map +1 -0
- package/package.json +9 -9
- package/dist/activity-maXCNWZp.js.map +0 -1
- package/dist/activity-pXCpwxxi.cjs.map +0 -1
- package/dist/collapsible-8h5KBZPX.js.map +0 -1
- package/dist/collapsible-BzlQAuym.cjs.map +0 -1
- package/dist/combobox-8_JEWMYs.js.map +0 -1
- package/dist/combobox-Csiduxme.cjs.map +0 -1
- package/dist/command-C-i5cx8D.js.map +0 -1
- package/dist/command-Cq-K24jI.cjs.map +0 -1
- package/dist/composer-CIfMr8q5.js.map +0 -1
- package/dist/composer-DhxSetWI.cjs.map +0 -1
- package/dist/data-list-BfepBJLG.js.map +0 -1
- package/dist/data-list-oQsJVUa6.cjs.map +0 -1
- package/dist/data-list-skeleton-BE7yRNks.cjs.map +0 -1
- package/dist/data-list-skeleton-DnVnqTGL.js.map +0 -1
- package/dist/date-time-range-picker-BA3e2LFA.js +0 -180
- package/dist/date-time-range-picker-BA3e2LFA.js.map +0 -1
- package/dist/date-time-range-picker-BNepacnP.cjs +0 -182
- package/dist/date-time-range-picker-BNepacnP.cjs.map +0 -1
- package/dist/filter-bar-chip-BBPHw-rX.cjs.map +0 -1
- package/dist/filter-bar-chip-SX3vDA7h.js.map +0 -1
- package/dist/input-HPE241gI.cjs.map +0 -1
- package/dist/input-group-C7WC6xGL.js.map +0 -1
- package/dist/input-group-CGbhXsmd.cjs.map +0 -1
- package/dist/input-vi0ICZHe.js.map +0 -1
- package/dist/property-filter-applied-7dHzckeW.cjs.map +0 -1
- package/dist/property-filter-applied-CdbOixsW.js.map +0 -1
- package/dist/span-payload-primitives-DqZn_Q29.cjs.map +0 -1
- package/dist/span-payload-primitives-wxQ0IDhF.js.map +0 -1
- package/dist/tool-card-D-w1SgXq.js.map +0 -1
- package/dist/tool-card-LNK49o-E.cjs.map +0 -1
- package/dist/tree-DyVaMIwA.js.map +0 -1
- package/dist/tree-JtAQw7a7.cjs.map +0 -1
- package/dist/workflow-condition-card-D30tufXt.js.map +0 -1
- package/dist/workflow-condition-card-Dy-0c_PT.cjs.map +0 -1
|
@@ -16,7 +16,7 @@ function PageLayout({
|
|
|
16
16
|
}) {
|
|
17
17
|
const headerSlot = header ? /* @__PURE__ */ jsxRuntime.jsx("div", { "data-slot": "page-layout-header", className: utils_cn.cn(variant === "fit" && "p-4"), children: header }) : null;
|
|
18
18
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { "data-slot": "page-layout", className: "flex h-full min-h-0 flex-col", children: [
|
|
19
|
-
(breadcrumbs || headerActions) && /* @__PURE__ */ jsxRuntime.jsxs(Header.Header, { className: "
|
|
19
|
+
(breadcrumbs || headerActions) && /* @__PURE__ */ jsxRuntime.jsxs(Header.Header, { className: "min-h-header-default shrink-0 gap-2 overflow-hidden px-2", children: [
|
|
20
20
|
breadcrumbs,
|
|
21
21
|
headerActions && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "ml-auto flex shrink-0 items-center gap-2 overflow-hidden", children: headerActions })
|
|
22
22
|
] }),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PageLayout.cjs.js","sources":["../../src/ds/components/PageLayout/page-layout.tsx"],"sourcesContent":["import type { ReactNode } from 'react';\nimport { Header } from '../Header';\nimport { cn } from '@/lib/utils';\n\nexport interface PageLayoutProps {\n children: ReactNode;\n /** Left side of the page header row. */\n breadcrumbs?: ReactNode;\n /** Right side of the page header row. */\n headerActions?: ReactNode;\n /** Controls pinned between the header and the scrollable body (search, filters, toggles…). */\n actionRow?: ReactNode;\n /** Page-level header (e.g. `PageHeader`) rendered inside the body container, above children. */\n header?: ReactNode;\n /**\n * `container` pads the body (default); `narrow` centers the body in a max-width column;\n * `fit` lets the body fill the page edge to edge.\n */\n variant?: 'container' | 'fit' | 'narrow';\n}\n\nexport function PageLayout({\n children,\n breadcrumbs,\n headerActions,\n actionRow,\n header,\n variant = 'container',\n}: PageLayoutProps) {\n const headerSlot = header ? (\n <div data-slot=\"page-layout-header\" className={cn(variant === 'fit' && 'p-4')}>\n {header}\n </div>\n ) : null;\n\n return (\n <div data-slot=\"page-layout\" className=\"flex h-full min-h-0 flex-col\">\n {(breadcrumbs || headerActions) && (\n <Header className=\"
|
|
1
|
+
{"version":3,"file":"PageLayout.cjs.js","sources":["../../src/ds/components/PageLayout/page-layout.tsx"],"sourcesContent":["import type { ReactNode } from 'react';\nimport { Header } from '../Header';\nimport { cn } from '@/lib/utils';\n\nexport interface PageLayoutProps {\n children: ReactNode;\n /** Left side of the page header row. */\n breadcrumbs?: ReactNode;\n /** Right side of the page header row. */\n headerActions?: ReactNode;\n /** Controls pinned between the header and the scrollable body (search, filters, toggles…). */\n actionRow?: ReactNode;\n /** Page-level header (e.g. `PageHeader`) rendered inside the body container, above children. */\n header?: ReactNode;\n /**\n * `container` pads the body (default); `narrow` centers the body in a max-width column;\n * `fit` lets the body fill the page edge to edge.\n */\n variant?: 'container' | 'fit' | 'narrow';\n}\n\nexport function PageLayout({\n children,\n breadcrumbs,\n headerActions,\n actionRow,\n header,\n variant = 'container',\n}: PageLayoutProps) {\n const headerSlot = header ? (\n <div data-slot=\"page-layout-header\" className={cn(variant === 'fit' && 'p-4')}>\n {header}\n </div>\n ) : null;\n\n return (\n <div data-slot=\"page-layout\" className=\"flex h-full min-h-0 flex-col\">\n {(breadcrumbs || headerActions) && (\n <Header className=\"min-h-header-default shrink-0 gap-2 overflow-hidden px-2\">\n {breadcrumbs}\n {headerActions && (\n <div className=\"ml-auto flex shrink-0 items-center gap-2 overflow-hidden\">{headerActions}</div>\n )}\n </Header>\n )}\n {actionRow && (\n <div data-slot=\"page-layout-action-row\" className=\"flex shrink-0 flex-col gap-2 px-4 pt-4\">\n {actionRow}\n </div>\n )}\n <main\n className={cn(\n 'min-h-0 flex-1 overflow-y-auto',\n variant === 'container' && 'p-4',\n // `fit` hands the remaining body height to its child (panels, graphs, tables that own their scroll).\n variant === 'fit' &&\n (header ? 'grid grid-cols-1 grid-rows-[auto_minmax(0,1fr)]' : 'grid grid-cols-1 grid-rows-1'),\n )}\n >\n {variant === 'narrow' ? (\n // Horizontal gutter is the variant's contract; keep px/py explicit rather than the `p-4` shorthand.\n // eslint-disable-next-line tailwindcss/enforces-shorthand\n <div\n data-slot=\"page-layout-container\"\n className={cn(\n 'mx-auto grid min-h-full w-full max-w-5xl grid-cols-1 p-4',\n header ? 'grid-rows-[auto_1fr]' : 'grid-rows-[1fr]',\n )}\n >\n {headerSlot}\n {children}\n </div>\n ) : (\n <>\n {headerSlot}\n {children}\n </>\n )}\n </main>\n </div>\n );\n}\n"],"names":["jsx","cn","jsxs","Header","Fragment"],"mappings":";;;;;;;;AAqBO,SAAS,UAAA,CAAW;AAAA,EACzB,QAAA;AAAA,EACA,WAAA;AAAA,EACA,aAAA;AAAA,EACA,SAAA;AAAA,EACA,MAAA;AAAA,EACA,OAAA,GAAU;AACZ,CAAA,EAAoB;AAClB,EAAA,MAAM,UAAA,GAAa,MAAA,mBACjBA,cAAA,CAAC,KAAA,EAAA,EAAI,WAAA,EAAU,oBAAA,EAAqB,SAAA,EAAWC,WAAA,CAAG,OAAA,KAAY,KAAA,IAAS,KAAK,CAAA,EACzE,kBACH,CAAA,GACE,IAAA;AAEJ,EAAA,uBACEC,eAAA,CAAC,KAAA,EAAA,EAAI,WAAA,EAAU,aAAA,EAAc,WAAU,8BAAA,EACnC,QAAA,EAAA;AAAA,IAAA,CAAA,WAAA,IAAe,aAAA,qBACfA,eAAA,CAACC,aAAA,EAAA,EAAO,SAAA,EAAU,0DAAA,EACf,QAAA,EAAA;AAAA,MAAA,WAAA;AAAA,MACA,aAAA,oBACCH,cAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,4DAA4D,QAAA,EAAA,aAAA,EAAc;AAAA,KAAA,EAE7F,CAAA;AAAA,IAED,6BACCA,cAAA,CAAC,KAAA,EAAA,EAAI,aAAU,wBAAA,EAAyB,SAAA,EAAU,0CAC/C,QAAA,EAAA,SAAA,EACH,CAAA;AAAA,oBAEFA,cAAA;AAAA,MAAC,MAAA;AAAA,MAAA;AAAA,QACC,SAAA,EAAWC,WAAA;AAAA,UACT,gCAAA;AAAA,UACA,YAAY,WAAA,IAAe,KAAA;AAAA;AAAA,UAE3B,OAAA,KAAY,KAAA,KACT,MAAA,GAAS,iDAAA,GAAoD,8BAAA;AAAA,SAClE;AAAA,QAEC,QAAA,EAAA,OAAA,KAAY,QAAA;AAAA;AAAA;AAAA,0BAGXC,eAAA;AAAA,YAAC,KAAA;AAAA,YAAA;AAAA,cACC,WAAA,EAAU,uBAAA;AAAA,cACV,SAAA,EAAWD,WAAA;AAAA,gBACT,0DAAA;AAAA,gBACA,SAAS,sBAAA,GAAyB;AAAA,eACpC;AAAA,cAEC,QAAA,EAAA;AAAA,gBAAA,UAAA;AAAA,gBACA;AAAA;AAAA;AAAA;AACH,4BAEAC,eAAA,CAAAE,mBAAA,EAAA,EACG,QAAA,EAAA;AAAA,UAAA,UAAA;AAAA,UACA;AAAA,SAAA,EACH;AAAA;AAAA;AAEJ,GAAA,EACF,CAAA;AAEJ;;;;"}
|
|
@@ -12,7 +12,7 @@ function PageLayout({
|
|
|
12
12
|
}) {
|
|
13
13
|
const headerSlot = header ? /* @__PURE__ */ jsx("div", { "data-slot": "page-layout-header", className: cn(variant === "fit" && "p-4"), children: header }) : null;
|
|
14
14
|
return /* @__PURE__ */ jsxs("div", { "data-slot": "page-layout", className: "flex h-full min-h-0 flex-col", children: [
|
|
15
|
-
(breadcrumbs || headerActions) && /* @__PURE__ */ jsxs(Header, { className: "
|
|
15
|
+
(breadcrumbs || headerActions) && /* @__PURE__ */ jsxs(Header, { className: "min-h-header-default shrink-0 gap-2 overflow-hidden px-2", children: [
|
|
16
16
|
breadcrumbs,
|
|
17
17
|
headerActions && /* @__PURE__ */ jsx("div", { className: "ml-auto flex shrink-0 items-center gap-2 overflow-hidden", children: headerActions })
|
|
18
18
|
] }),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PageLayout.es.js","sources":["../../src/ds/components/PageLayout/page-layout.tsx"],"sourcesContent":["import type { ReactNode } from 'react';\nimport { Header } from '../Header';\nimport { cn } from '@/lib/utils';\n\nexport interface PageLayoutProps {\n children: ReactNode;\n /** Left side of the page header row. */\n breadcrumbs?: ReactNode;\n /** Right side of the page header row. */\n headerActions?: ReactNode;\n /** Controls pinned between the header and the scrollable body (search, filters, toggles…). */\n actionRow?: ReactNode;\n /** Page-level header (e.g. `PageHeader`) rendered inside the body container, above children. */\n header?: ReactNode;\n /**\n * `container` pads the body (default); `narrow` centers the body in a max-width column;\n * `fit` lets the body fill the page edge to edge.\n */\n variant?: 'container' | 'fit' | 'narrow';\n}\n\nexport function PageLayout({\n children,\n breadcrumbs,\n headerActions,\n actionRow,\n header,\n variant = 'container',\n}: PageLayoutProps) {\n const headerSlot = header ? (\n <div data-slot=\"page-layout-header\" className={cn(variant === 'fit' && 'p-4')}>\n {header}\n </div>\n ) : null;\n\n return (\n <div data-slot=\"page-layout\" className=\"flex h-full min-h-0 flex-col\">\n {(breadcrumbs || headerActions) && (\n <Header className=\"
|
|
1
|
+
{"version":3,"file":"PageLayout.es.js","sources":["../../src/ds/components/PageLayout/page-layout.tsx"],"sourcesContent":["import type { ReactNode } from 'react';\nimport { Header } from '../Header';\nimport { cn } from '@/lib/utils';\n\nexport interface PageLayoutProps {\n children: ReactNode;\n /** Left side of the page header row. */\n breadcrumbs?: ReactNode;\n /** Right side of the page header row. */\n headerActions?: ReactNode;\n /** Controls pinned between the header and the scrollable body (search, filters, toggles…). */\n actionRow?: ReactNode;\n /** Page-level header (e.g. `PageHeader`) rendered inside the body container, above children. */\n header?: ReactNode;\n /**\n * `container` pads the body (default); `narrow` centers the body in a max-width column;\n * `fit` lets the body fill the page edge to edge.\n */\n variant?: 'container' | 'fit' | 'narrow';\n}\n\nexport function PageLayout({\n children,\n breadcrumbs,\n headerActions,\n actionRow,\n header,\n variant = 'container',\n}: PageLayoutProps) {\n const headerSlot = header ? (\n <div data-slot=\"page-layout-header\" className={cn(variant === 'fit' && 'p-4')}>\n {header}\n </div>\n ) : null;\n\n return (\n <div data-slot=\"page-layout\" className=\"flex h-full min-h-0 flex-col\">\n {(breadcrumbs || headerActions) && (\n <Header className=\"min-h-header-default shrink-0 gap-2 overflow-hidden px-2\">\n {breadcrumbs}\n {headerActions && (\n <div className=\"ml-auto flex shrink-0 items-center gap-2 overflow-hidden\">{headerActions}</div>\n )}\n </Header>\n )}\n {actionRow && (\n <div data-slot=\"page-layout-action-row\" className=\"flex shrink-0 flex-col gap-2 px-4 pt-4\">\n {actionRow}\n </div>\n )}\n <main\n className={cn(\n 'min-h-0 flex-1 overflow-y-auto',\n variant === 'container' && 'p-4',\n // `fit` hands the remaining body height to its child (panels, graphs, tables that own their scroll).\n variant === 'fit' &&\n (header ? 'grid grid-cols-1 grid-rows-[auto_minmax(0,1fr)]' : 'grid grid-cols-1 grid-rows-1'),\n )}\n >\n {variant === 'narrow' ? (\n // Horizontal gutter is the variant's contract; keep px/py explicit rather than the `p-4` shorthand.\n // eslint-disable-next-line tailwindcss/enforces-shorthand\n <div\n data-slot=\"page-layout-container\"\n className={cn(\n 'mx-auto grid min-h-full w-full max-w-5xl grid-cols-1 p-4',\n header ? 'grid-rows-[auto_1fr]' : 'grid-rows-[1fr]',\n )}\n >\n {headerSlot}\n {children}\n </div>\n ) : (\n <>\n {headerSlot}\n {children}\n </>\n )}\n </main>\n </div>\n );\n}\n"],"names":[],"mappings":";;;;AAqBO,SAAS,UAAA,CAAW;AAAA,EACzB,QAAA;AAAA,EACA,WAAA;AAAA,EACA,aAAA;AAAA,EACA,SAAA;AAAA,EACA,MAAA;AAAA,EACA,OAAA,GAAU;AACZ,CAAA,EAAoB;AAClB,EAAA,MAAM,UAAA,GAAa,MAAA,mBACjB,GAAA,CAAC,KAAA,EAAA,EAAI,WAAA,EAAU,oBAAA,EAAqB,SAAA,EAAW,EAAA,CAAG,OAAA,KAAY,KAAA,IAAS,KAAK,CAAA,EACzE,kBACH,CAAA,GACE,IAAA;AAEJ,EAAA,uBACE,IAAA,CAAC,KAAA,EAAA,EAAI,WAAA,EAAU,aAAA,EAAc,WAAU,8BAAA,EACnC,QAAA,EAAA;AAAA,IAAA,CAAA,WAAA,IAAe,aAAA,qBACf,IAAA,CAAC,MAAA,EAAA,EAAO,SAAA,EAAU,0DAAA,EACf,QAAA,EAAA;AAAA,MAAA,WAAA;AAAA,MACA,aAAA,oBACC,GAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,4DAA4D,QAAA,EAAA,aAAA,EAAc;AAAA,KAAA,EAE7F,CAAA;AAAA,IAED,6BACC,GAAA,CAAC,KAAA,EAAA,EAAI,aAAU,wBAAA,EAAyB,SAAA,EAAU,0CAC/C,QAAA,EAAA,SAAA,EACH,CAAA;AAAA,oBAEF,GAAA;AAAA,MAAC,MAAA;AAAA,MAAA;AAAA,QACC,SAAA,EAAW,EAAA;AAAA,UACT,gCAAA;AAAA,UACA,YAAY,WAAA,IAAe,KAAA;AAAA;AAAA,UAE3B,OAAA,KAAY,KAAA,KACT,MAAA,GAAS,iDAAA,GAAoD,8BAAA;AAAA,SAClE;AAAA,QAEC,QAAA,EAAA,OAAA,KAAY,QAAA;AAAA;AAAA;AAAA,0BAGX,IAAA;AAAA,YAAC,KAAA;AAAA,YAAA;AAAA,cACC,WAAA,EAAU,uBAAA;AAAA,cACV,SAAA,EAAW,EAAA;AAAA,gBACT,0DAAA;AAAA,gBACA,SAAS,sBAAA,GAAyB;AAAA,eACpC;AAAA,cAEC,QAAA,EAAA;AAAA,gBAAA,UAAA;AAAA,gBACA;AAAA;AAAA;AAAA;AACH,4BAEA,IAAA,CAAA,QAAA,EAAA,EACG,QAAA,EAAA;AAAA,UAAA,UAAA;AAAA,UACA;AAAA,SAAA,EACH;AAAA;AAAA;AAEJ,GAAA,EACF,CAAA;AAEJ;;;;"}
|
|
@@ -2,12 +2,12 @@
|
|
|
2
2
|
|
|
3
3
|
Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
|
|
4
4
|
|
|
5
|
-
const propertyFilterApplied = require('../property-filter-applied-
|
|
5
|
+
const propertyFilterApplied = require('../property-filter-applied-ACNa3kYG.cjs');
|
|
6
6
|
const jsxRuntime = require('react/jsx-runtime');
|
|
7
7
|
const lucideReact = require('lucide-react');
|
|
8
8
|
const React = require('react');
|
|
9
9
|
const Button = require('../Button-BpSkkuzG.cjs');
|
|
10
|
-
const combobox = require('../combobox-
|
|
10
|
+
const combobox = require('../combobox-DW7-4bGp.cjs');
|
|
11
11
|
const field = require('../field-D1SVMPMz.cjs');
|
|
12
12
|
require('../field-control-aria-WzMGs0A4.cjs');
|
|
13
13
|
const popover = require('../popover-CWHYNPp8.cjs');
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import { b as PickMultiPanel } from '../property-filter-applied-
|
|
2
|
-
export { a as PropertyFilterActions, P as PropertyFilterApplied } from '../property-filter-applied-
|
|
1
|
+
import { b as PickMultiPanel } from '../property-filter-applied-e0Vg1895.js';
|
|
2
|
+
export { a as PropertyFilterActions, P as PropertyFilterApplied } from '../property-filter-applied-e0Vg1895.js';
|
|
3
3
|
import { jsxs, jsx } from 'react/jsx-runtime';
|
|
4
4
|
import { ListFilterPlusIcon, ArrowLeftIcon, FilterIcon, PlusIcon, X, ListFilterPlus, ChevronRightIcon } from 'lucide-react';
|
|
5
5
|
import { useMemo, useState, useRef, useCallback, useEffect, forwardRef } from 'react';
|
|
6
6
|
import { B as Button } from '../Button-MHlMpc97.js';
|
|
7
|
-
import { C as Combobox } from '../combobox-
|
|
7
|
+
import { C as Combobox } from '../combobox-CMu7NDj6.js';
|
|
8
8
|
import { F as Field, c as FieldError } from '../field-B89BEZg4.js';
|
|
9
9
|
import '../field-control-aria-DB6y41tQ.js';
|
|
10
10
|
import { P as Popover, b as PopoverTrigger, a as PopoverContent } from '../popover-Jf2UUdQ1.js';
|
|
@@ -10,7 +10,7 @@ const select = require('../select-Cnf7ilWA.cjs');
|
|
|
10
10
|
const Txt = require('../Txt-DXjXpX9r.cjs');
|
|
11
11
|
const icons_Icon = require('../icons/Icon.cjs.js');
|
|
12
12
|
const utils_cn = require('../cn-TqD01zH-.cjs');
|
|
13
|
-
const input = require('../input-
|
|
13
|
+
const input = require('../input-zdqTky_C.cjs');
|
|
14
14
|
const Button = require('../Button-BpSkkuzG.cjs');
|
|
15
15
|
const primitives_transitions = require('../primitives/transitions.cjs.js');
|
|
16
16
|
const primitives_typography = require('../primitives/typography.cjs.js');
|
|
@@ -6,7 +6,7 @@ import { S as Select, d as SelectTrigger, e as SelectValue, a as SelectContent,
|
|
|
6
6
|
import { T as Txt } from '../Txt-BuzYj7Vy.js';
|
|
7
7
|
import { Icon } from '../icons/Icon.es.js';
|
|
8
8
|
import { c as cn } from '../cn-coERSHz5.js';
|
|
9
|
-
import { I as Input } from '../input-
|
|
9
|
+
import { I as Input } from '../input-DQFUjtnh.js';
|
|
10
10
|
import { B as Button } from '../Button-MHlMpc97.js';
|
|
11
11
|
import { controlStateColorTransition } from '../primitives/transitions.es.js';
|
|
12
12
|
import { quietTextHover } from '../primitives/typography.es.js';
|
|
@@ -6,7 +6,8 @@ const jsxRuntime = require('react/jsx-runtime');
|
|
|
6
6
|
const lucideReact = require('lucide-react');
|
|
7
7
|
const React = require('react');
|
|
8
8
|
const v4 = require('zod/v4');
|
|
9
|
-
const
|
|
9
|
+
const primitives_passwordManagerAutofill = require('../primitives/password-manager-autofill.cjs.js');
|
|
10
|
+
const filterBarChip = require('../filter-bar-chip-BUlEVUgT.cjs');
|
|
10
11
|
const Txt = require('../Txt-DXjXpX9r.cjs');
|
|
11
12
|
const Button = require('../Button-BpSkkuzG.cjs');
|
|
12
13
|
const contextMenu = require('../context-menu-Dpm8dBLw.cjs');
|
|
@@ -67,6 +68,7 @@ function SavedViewNameInput({ name, onCommit }) {
|
|
|
67
68
|
"aria-label": "View name",
|
|
68
69
|
defaultValue: name,
|
|
69
70
|
maxLength: MAX_SAVED_VIEW_NAME_CHARS,
|
|
71
|
+
...primitives_passwordManagerAutofill.passwordManagerOptOutProps,
|
|
70
72
|
onFocus: (event) => event.currentTarget.select(),
|
|
71
73
|
onBlur: (event) => onCommit(event.currentTarget.value),
|
|
72
74
|
onKeyDown: (event) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SavedViews.cjs.js","sources":["../../src/ds/components/SavedViews/saved-view-schema.ts","../../src/ds/components/SavedViews/saved-view-name-input.tsx","../../src/ds/components/SavedViews/saved-view-summary.tsx","../../src/ds/components/SavedViews/saved-view-tabs.tsx","../../src/ds/components/SavedViews/saved-view-editor.tsx","../../src/ds/components/SavedViews/saved-views-storage.ts","../../src/ds/components/SavedViews/use-saved-views.ts"],"sourcesContent":["import { z } from 'zod/v4';\nimport type { FilterBarItem } from '@/ds/components/FilterBar/types';\n\nexport const MAX_SAVED_VIEW_NAME_CHARS = 80;\n\nconst SAVED_VIEWS_STORAGE_VERSION = 1;\n\nconst filterBarScalarSchema = z.union([z.string(), z.number(), z.boolean()]);\n\nconst savedViewFilterSchema = z.object({\n id: z.string().min(1),\n fieldId: z.string().min(1),\n operatorId: z.string().min(1),\n value: z.union([filterBarScalarSchema, z.array(filterBarScalarSchema)]),\n}) satisfies z.ZodType<FilterBarItem>;\n\nexport const savedViewNameSchema = z.string().trim().min(1).max(MAX_SAVED_VIEW_NAME_CHARS);\n\nconst storedSavedViewSchema = z.object({\n id: z.string().min(1),\n name: savedViewNameSchema,\n filters: z.array(savedViewFilterSchema),\n settings: z.unknown(),\n});\n\n// Views stay `unknown` so one malformed view is dropped on its own, not the whole list.\nconst savedViewsDocumentSchema = z.object({\n version: z.literal(SAVED_VIEWS_STORAGE_VERSION),\n views: z.array(z.unknown()),\n});\n\n// Only `safeParse` is used, so the consumer's Zod version never has to match this package's.\nexport type SavedViewSettingsSchema<TSettings> = {\n safeParse: (value: unknown) => { success: true; data: TSettings } | { success: false };\n};\n\nexport type SavedView<TSettings> = {\n id: string;\n name: string;\n filters: FilterBarItem[];\n settings: TSettings;\n};\n\nexport function parseSavedViews<TSettings>(\n raw: string | null,\n settingsSchema: SavedViewSettingsSchema<TSettings>,\n): SavedView<TSettings>[] {\n if (!raw) return [];\n let json: unknown;\n try {\n json = JSON.parse(raw);\n } catch {\n return [];\n }\n const document = savedViewsDocumentSchema.safeParse(json);\n if (!document.success) return [];\n return document.data.views.flatMap(candidate => {\n const view = storedSavedViewSchema.safeParse(candidate);\n if (!view.success) return [];\n const settings = settingsSchema.safeParse(view.data.settings);\n if (!settings.success) return [];\n return [{ ...view.data, settings: settings.data }];\n });\n}\n\nexport function serializeSavedViews<TSettings>(views: readonly SavedView<TSettings>[]): string {\n return JSON.stringify({ version: SAVED_VIEWS_STORAGE_VERSION, views });\n}\n","import { MAX_SAVED_VIEW_NAME_CHARS } from './saved-view-schema';\n\n// Uncontrolled so blur is the one exit: Enter blurs, Escape restores the name first, blur commits.\nexport function SavedViewNameInput({ name, onCommit }: { name: string; onCommit: (name: string) => void }) {\n return (\n <input\n autoFocus\n aria-label=\"View name\"\n defaultValue={name}\n maxLength={MAX_SAVED_VIEW_NAME_CHARS}\n onFocus={event => event.currentTarget.select()}\n onBlur={event => onCommit(event.currentTarget.value)}\n onKeyDown={event => {\n if (event.key === 'Escape') event.currentTarget.value = name;\n if (event.key === 'Enter' || event.key === 'Escape') {\n event.preventDefault();\n event.currentTarget.blur();\n }\n }}\n className=\"field-sizing-content min-w-12 bg-transparent text-foreground outline-hidden\"\n />\n );\n}\n","import type { ReactNode } from 'react';\nimport { FilterBarFieldLabel, formatValue } from '@/ds/components/FilterBar/filter-bar-chip';\nimport type { FilterBarField, FilterBarItem, FilterBarOperator } from '@/ds/components/FilterBar/types';\nimport { Txt } from '@/ds/components/Txt';\n\ntype SavedViewSummaryProps = {\n filters: readonly FilterBarItem[];\n fields: readonly FilterBarField[];\n operators: readonly FilterBarOperator[];\n settings?: ReactNode;\n};\n\nexport function SavedViewSummary({ filters, fields, operators, settings }: SavedViewSummaryProps) {\n return (\n <div className=\"flex min-w-48 flex-col gap-2\">\n {filters.length === 0 ? (\n <Txt variant=\"caption\" tone=\"muted\">\n No filters\n </Txt>\n ) : (\n <ul aria-label=\"Filters\" className=\"flex flex-col gap-1.5\">\n {filters.map(filter => {\n const field = fields.find(candidate => candidate.id === filter.fieldId);\n const operatorStated = (field?.operators?.length ?? operators.length) > 1;\n const operator = operators.find(candidate => candidate.id === filter.operatorId);\n return (\n <li key={filter.id} className=\"min-w-0\">\n <Txt as=\"span\" variant=\"body-sm\" className=\"flex min-w-0 items-center gap-1.5\">\n <span className=\"flex min-w-0 shrink-0 items-center gap-1 text-muted-foreground\">\n <FilterBarFieldLabel field={field} label={field?.label ?? filter.fieldId} />\n </span>\n {operatorStated && <span className=\"shrink-0 text-muted-foreground\">{operator?.label}</span>}\n <span className=\"min-w-0 truncate\">{formatValue(filter.value, field)}</span>\n </Txt>\n </li>\n );\n })}\n </ul>\n )}\n {settings}\n </div>\n );\n}\n","import {\n ChevronDownIcon,\n CopyIcon,\n LayersIcon,\n LayersPlusIcon,\n PencilIcon,\n TextCursorInputIcon,\n Trash2Icon,\n} from 'lucide-react';\nimport { Fragment, useState } from 'react';\nimport type { ReactNode } from 'react';\nimport { SavedViewNameInput } from './saved-view-name-input';\nimport type { SavedView } from './saved-view-schema';\nimport { SavedViewSummary } from './saved-view-summary';\nimport type { SavedViewsController } from './use-saved-views';\nimport { Button, buttonVariants } from '@/ds/components/Button/Button';\nimport { ContextMenu } from '@/ds/components/ContextMenu';\nimport { DropdownMenu } from '@/ds/components/DropdownMenu';\nimport type { FilterBarField, FilterBarOperator } from '@/ds/components/FilterBar/types';\nimport { HoverCard, HoverCardContent, HoverCardTrigger } from '@/ds/components/HoverCard';\nimport { Txt } from '@/ds/components/Txt';\nimport { Icon } from '@/ds/icons/Icon';\nimport { controlHeight } from '@/ds/primitives/control-size';\nimport { VisuallyHidden } from '@/ds/primitives/visually-hidden';\nimport { cn } from '@/lib/utils';\n\nconst restingTabClass = buttonVariants({ variant: 'default', size: 'sm' });\nconst selectedTabClass = cn(\n buttonVariants({ variant: 'ghost', size: 'sm' }),\n 'bg-fill-hover text-foreground not-disabled:hover:bg-fill-hover',\n);\nconst editingTabClass = cn(\n controlHeight.sm,\n 'inline-flex items-center gap-1.5 rounded-full border border-dashed border-border-strong bg-fill-hover px-[.9em] text-label text-foreground',\n '[&_svg]:size-3.5 [&_svg]:shrink-0',\n);\n\nexport type SavedViewTabsProps<TSettings> = {\n views: SavedViewsController<TSettings>;\n fields: readonly FilterBarField[];\n operators: readonly FilterBarOperator[];\n defaultLabel: string;\n newViewSettings: NoInfer<TSettings>;\n describeSettings?: (settings: TSettings) => ReactNode;\n 'aria-label'?: string;\n className?: string;\n};\n\nexport function SavedViewTabs<TSettings>({\n views,\n fields,\n operators,\n defaultLabel,\n newViewSettings,\n describeSettings,\n 'aria-label': ariaLabel = 'Views',\n className,\n}: SavedViewTabsProps<TSettings>) {\n const [renamingViewId, setRenamingViewId] = useState<string>();\n const { draft } = views;\n const creating = draft !== undefined && draft.viewId === undefined;\n const defaultSelected = views.activeView === undefined && !creating;\n\n return (\n <div role=\"group\" aria-label={ariaLabel} className={cn('flex flex-wrap items-center gap-1.5', className)}>\n <button\n type=\"button\"\n aria-pressed={defaultSelected}\n className={defaultSelected ? selectedTabClass : restingTabClass}\n onClick={() => views.select(undefined)}\n >\n {defaultLabel}\n </button>\n {views.views.map(view => {\n if (renamingViewId === view.id) {\n return (\n <RenamingViewTab\n key={view.id}\n name={view.name}\n onCommit={name => {\n setRenamingViewId(undefined);\n views.rename(view.id, name);\n }}\n />\n );\n }\n return (\n <SavedViewTab\n key={view.id}\n view={view}\n selected={views.activeView?.id === view.id && !creating}\n unsaved={draft?.viewId === view.id && views.unsaved}\n fields={fields}\n operators={operators}\n settings={describeSettings?.(view.settings)}\n onSelect={() => views.select(view.id)}\n onEdit={() => views.edit(view.id)}\n onRename={() => setRenamingViewId(view.id)}\n onDuplicate={() => views.duplicate(view.id)}\n onDelete={() => views.remove(view.id)}\n />\n );\n })}\n {views.storageError && (\n <Txt role=\"alert\" variant=\"caption\" className=\"w-full text-destructive-foreground\">\n {views.storageError}\n </Txt>\n )}\n {creating ? (\n <EditingViewTab name={draft.name} unsaved onRename={name => views.change({ name })} />\n ) : (\n <Button\n type=\"button\"\n variant=\"ghost\"\n size=\"icon-sm\"\n tooltip=\"New view\"\n disabled={draft !== undefined}\n onClick={() => views.create(newViewSettings)}\n >\n <LayersPlusIcon />\n </Button>\n )}\n </div>\n );\n}\n\nfunction EditingViewTab({\n name,\n unsaved,\n onRename,\n}: {\n name: string;\n unsaved: boolean;\n onRename: (name: string) => void;\n}) {\n const [renaming, setRenaming] = useState(false);\n return (\n <span aria-current=\"true\" className={editingTabClass}>\n <LayersIcon aria-hidden />\n {renaming ? (\n <SavedViewNameInput\n name={name}\n onCommit={next => {\n setRenaming(false);\n if (next.trim()) onRename(next);\n }}\n />\n ) : (\n <>\n <span className=\"max-w-48 truncate\">{name}</span>\n {unsaved && (\n <>\n <span className=\"size-1.5 shrink-0 rounded-full bg-warning-indicator\" aria-hidden />\n <VisuallyHidden>Unsaved changes</VisuallyHidden>\n </>\n )}\n <Button\n type=\"button\"\n variant=\"ghost\"\n size=\"icon-sm\"\n tooltip=\"Rename view\"\n className=\"-mr-2 size-6\"\n onClick={() => setRenaming(true)}\n >\n <PencilIcon />\n </Button>\n </>\n )}\n </span>\n );\n}\n\nfunction RenamingViewTab({ name, onCommit }: { name: string; onCommit: (name: string) => void }) {\n return (\n <span className={cn(restingTabClass, 'gap-1.5')}>\n <SavedViewTabIcon />\n <SavedViewNameInput name={name} onCommit={onCommit} />\n </span>\n );\n}\n\nfunction SavedViewTabIcon() {\n return (\n <Icon data-slot=\"button-icon\" size=\"sm\">\n <LayersIcon aria-hidden />\n </Icon>\n );\n}\n\nfunction SavedViewTab<TSettings>({\n view,\n selected,\n unsaved,\n fields,\n operators,\n settings,\n onSelect,\n onEdit,\n onRename,\n onDuplicate,\n onDelete,\n}: {\n view: SavedView<TSettings>;\n selected: boolean;\n unsaved: boolean;\n fields: readonly FilterBarField[];\n operators: readonly FilterBarOperator[];\n settings: ReactNode;\n onSelect: () => void;\n onEdit: () => void;\n onRename: () => void;\n onDuplicate: () => void;\n onDelete: () => void;\n}) {\n const actions: ViewAction[] = [\n { label: 'Edit view', icon: <PencilIcon aria-hidden />, onClick: onEdit },\n { label: 'Rename', icon: <TextCursorInputIcon aria-hidden />, onClick: onRename },\n { label: 'Duplicate', icon: <CopyIcon aria-hidden />, onClick: onDuplicate },\n { label: 'Delete view', icon: <Trash2Icon aria-hidden />, onClick: onDelete, destructive: true },\n ];\n const [menuOpen, setMenuOpen] = useState(false);\n const [previewOpen, setPreviewOpen] = useState(false);\n const changeMenuOpen = (open: boolean) => {\n setMenuOpen(selected && open);\n if (open) setPreviewOpen(false);\n };\n\n return (\n <ContextMenu>\n <DropdownMenu open={selected && menuOpen} onOpenChange={changeMenuOpen}>\n <HoverCard open={!selected && previewOpen} onOpenChange={setPreviewOpen}>\n <ContextMenu.Trigger\n render={\n <HoverCardTrigger\n delay={400}\n render={\n <DropdownMenu.Trigger\n render={\n <button\n type=\"button\"\n aria-pressed={selected}\n aria-haspopup={selected ? 'menu' : undefined}\n onClick={() => {\n if (selected) return;\n setPreviewOpen(false);\n onSelect();\n }}\n className={cn(selected ? selectedTabClass : restingTabClass, 'gap-1.5')}\n />\n }\n />\n }\n />\n }\n >\n <SavedViewTabIcon />\n <span className=\"max-w-48 truncate\">{view.name}</span>\n {unsaved && <span className=\"size-1.5 shrink-0 rounded-full bg-warning-indicator\" aria-hidden />}\n {selected && <ChevronDownIcon aria-hidden className=\"size-3\" />}\n </ContextMenu.Trigger>\n <HoverCardContent side=\"bottom\" align=\"start\" showArrow={false}>\n <SavedViewSummary filters={view.filters} fields={fields} operators={operators} settings={settings} />\n </HoverCardContent>\n </HoverCard>\n <DropdownMenu.Content align=\"start\">\n {actions.map(action => (\n <Fragment key={action.label}>\n {action.destructive && <DropdownMenu.Separator />}\n <DropdownMenu.Item variant={action.destructive ? 'destructive' : 'default'} onClick={action.onClick}>\n {action.icon}\n {action.label}\n </DropdownMenu.Item>\n </Fragment>\n ))}\n </DropdownMenu.Content>\n </DropdownMenu>\n <ContextMenu.Content>\n {actions.map(action => (\n <Fragment key={action.label}>\n {action.destructive && <ContextMenu.Separator />}\n <ContextMenu.Item variant={action.destructive ? 'destructive' : 'default'} onClick={action.onClick}>\n {action.icon}\n {action.label}\n </ContextMenu.Item>\n </Fragment>\n ))}\n </ContextMenu.Content>\n </ContextMenu>\n );\n}\n\ntype ViewAction = { label: string; icon: ReactNode; onClick: () => void; destructive?: boolean };\n","import type { ReactNode } from 'react';\nimport type { SavedViewsController } from './use-saved-views';\nimport { Button } from '@/ds/components/Button/Button';\nimport { Txt } from '@/ds/components/Txt';\nimport { cn } from '@/lib/utils';\n\nexport type SavedViewEditorProps<TSettings> = {\n views: SavedViewsController<TSettings>;\n children: ReactNode;\n className?: string;\n};\n\nexport function SavedViewEditor<TSettings>({ views, children, className }: SavedViewEditorProps<TSettings>) {\n const { draft } = views;\n const creating = draft?.viewId === undefined;\n return (\n <div\n role={draft ? 'group' : undefined}\n aria-label={draft ? `Edit view ${draft.name}` : undefined}\n className={cn('flex min-w-0 flex-wrap items-center gap-2', className)}\n >\n {children}\n {draft && (\n <>\n {!creating && views.unsaved && (\n <Txt as=\"span\" variant=\"caption\" tone=\"muted\">\n Unsaved changes\n </Txt>\n )}\n <div className=\"ml-auto flex shrink-0 items-center gap-3\">\n {creating && (\n <Txt as=\"span\" variant=\"caption\" tone=\"muted\" className=\"max-sm:hidden\">\n Saved in this browser\n </Txt>\n )}\n <div className=\"flex items-center gap-1\">\n <Button type=\"button\" variant=\"ghost\" size=\"sm\" onClick={views.discard}>\n {creating ? 'Cancel' : 'Reset'}\n </Button>\n <Button type=\"button\" variant=\"primary\" size=\"sm\" disabled={!views.unsaved} onClick={views.save}>\n {creating ? 'Save view' : 'Save changes'}\n </Button>\n </div>\n </div>\n </>\n )}\n </div>\n );\n}\n","type SavedViewsSubscribe = (listener: () => void) => () => void;\n\nconst listenersByKey = new Map<string, Set<() => void>>();\nconst subscribeByKey = new Map<string, SavedViewsSubscribe>();\n\nexport function readSavedViewsRaw(key: string): string | null {\n try {\n return window.localStorage.getItem(key);\n } catch {\n return null;\n }\n}\n\nexport function writeSavedViewsRaw(key: string, raw: string): boolean {\n try {\n window.localStorage.setItem(key, raw);\n } catch {\n return false;\n }\n listenersByKey.get(key)?.forEach(listener => listener());\n return true;\n}\n\nexport function savedViewsSubscriber(key: string): SavedViewsSubscribe {\n const cached = subscribeByKey.get(key);\n if (cached) return cached;\n const subscribe: SavedViewsSubscribe = listener => subscribeSavedViews(key, listener);\n subscribeByKey.set(key, subscribe);\n return subscribe;\n}\n\nfunction subscribeSavedViews(key: string, listener: () => void): () => void {\n const listeners = listenersByKey.get(key) ?? new Set<() => void>();\n listenersByKey.set(key, listeners);\n listeners.add(listener);\n const onStorage = (event: StorageEvent) => {\n if (event.key === key || event.key === null) listener();\n };\n window.addEventListener('storage', onStorage);\n return () => {\n listeners.delete(listener);\n window.removeEventListener('storage', onStorage);\n };\n}\n","import { useState, useSyncExternalStore } from 'react';\nimport { parseSavedViews, savedViewNameSchema, serializeSavedViews } from './saved-view-schema';\nimport type { SavedView, SavedViewSettingsSchema } from './saved-view-schema';\nimport { readSavedViewsRaw, savedViewsSubscriber, writeSavedViewsRaw } from './saved-views-storage';\nimport type { FilterBarItem } from '@/ds/components/FilterBar/types';\n\nconst NEW_SAVED_VIEW_NAME = 'Untitled view';\n\nexport type SavedViewContent<TSettings> = {\n filters: FilterBarItem[];\n settings: TSettings;\n};\n\nexport type SavedViewDraft<TSettings> = SavedViewContent<TSettings> & {\n viewId?: string;\n name: string;\n};\n\nexport type SavedViewDraftChange<TSettings> = Partial<Omit<SavedViewDraft<TSettings>, 'viewId'>>;\n\nexport type UseSavedViewsOptions<TSettings> = {\n storageKey: string;\n settingsSchema: SavedViewSettingsSchema<TSettings>;\n activeViewId: string | undefined;\n onActiveViewChange: (viewId: string | undefined) => void;\n};\n\nexport type SavedViewsController<TSettings> = {\n views: SavedView<TSettings>[];\n activeView: SavedView<TSettings> | undefined;\n draft: SavedViewDraft<TSettings> | undefined;\n unsaved: boolean;\n storageError: string | undefined;\n applied: SavedViewContent<TSettings> | undefined;\n select: (viewId: string | undefined) => void;\n create: (settings: TSettings, filters?: FilterBarItem[]) => void;\n edit: (viewId: string) => void;\n change: (patch: SavedViewDraftChange<TSettings>) => void;\n save: () => void;\n discard: () => void;\n rename: (viewId: string, name: string) => void;\n duplicate: (viewId: string) => void;\n remove: (viewId: string) => void;\n};\n\nfunction createSavedViewId(): string {\n if (typeof crypto !== 'undefined' && typeof crypto.randomUUID === 'function') return crypto.randomUUID();\n return `view-${Date.now().toString(36)}-${Math.random().toString(36).slice(2)}`;\n}\n\nfunction validViewName(name: string): string | undefined {\n const parsed = savedViewNameSchema.safeParse(name);\n return parsed.success ? parsed.data : undefined;\n}\n\nfunction sameViewContent<TSettings>(draft: SavedViewDraft<TSettings>, view: SavedView<TSettings>): boolean {\n return (\n JSON.stringify([draft.name, draft.filters, draft.settings]) ===\n JSON.stringify([view.name, view.filters, view.settings])\n );\n}\n\nexport function useSavedViews<TSettings>({\n storageKey,\n settingsSchema,\n activeViewId,\n onActiveViewChange,\n}: UseSavedViewsOptions<TSettings>): SavedViewsController<TSettings> {\n const raw = useSyncExternalStore(\n savedViewsSubscriber(storageKey),\n () => readSavedViewsRaw(storageKey),\n () => null,\n );\n const views = parseSavedViews(raw, settingsSchema);\n const [failedStorageKey, setFailedStorageKey] = useState<string>();\n const [pendingDraft, setDraft] = useState<SavedViewDraft<TSettings>>();\n const [draftScope, setDraftScope] = useState({ storageKey, activeViewId });\n const draftView = views.find(view => view.id === pendingDraft?.viewId);\n const draftViewDeleted = pendingDraft?.viewId !== undefined && !draftView;\n const storageKeyChanged = draftScope.storageKey !== storageKey;\n if (storageKeyChanged || draftScope.activeViewId !== activeViewId || draftViewDeleted) {\n setDraftScope({ storageKey, activeViewId });\n if (storageKeyChanged || draftViewDeleted || pendingDraft?.viewId !== activeViewId) setDraft(undefined);\n }\n const draft = pendingDraft?.viewId === undefined || pendingDraft.viewId === activeViewId ? pendingDraft : undefined;\n const unsaved = draft !== undefined && (!draftView || !sameViewContent(draft, draftView));\n\n const activeView = views.find(view => view.id === activeViewId);\n const write = (next: SavedView<TSettings>[]) => {\n const saved = writeSavedViewsRaw(storageKey, serializeSavedViews(next));\n setFailedStorageKey(saved ? undefined : storageKey);\n return saved;\n };\n\n return {\n views,\n activeView,\n draft,\n unsaved,\n storageError:\n failedStorageKey === storageKey\n ? 'Could not save changes. Check your browser storage settings and try again.'\n : undefined,\n applied: draft ?? activeView,\n select: viewId => {\n setFailedStorageKey(undefined);\n setDraft(undefined);\n onActiveViewChange(viewId);\n },\n create: (settings, filters = []) => setDraft({ name: NEW_SAVED_VIEW_NAME, filters, settings }),\n edit: viewId => {\n if (draft?.viewId === viewId) return;\n const view = views.find(candidate => candidate.id === viewId);\n if (!view) return;\n const { id, ...content } = view;\n setDraft({ ...content, viewId: id });\n if (viewId !== activeViewId) onActiveViewChange(viewId);\n },\n change: patch => {\n if (draft) {\n setDraft({ ...draft, ...patch });\n return;\n }\n if (!activeView) return;\n const { id, ...content } = activeView;\n setDraft({ ...content, ...patch, viewId: id });\n },\n save: () => {\n if (!draft) return;\n const { viewId, ...content } = draft;\n const saved: SavedView<TSettings> = {\n ...content,\n id: viewId ?? createSavedViewId(),\n name: validViewName(content.name) ?? views.find(view => view.id === viewId)?.name ?? NEW_SAVED_VIEW_NAME,\n };\n if (!write(viewId ? views.map(view => (view.id === viewId ? saved : view)) : [...views, saved])) return;\n setDraft(undefined);\n if (saved.id !== activeViewId) onActiveViewChange(saved.id);\n },\n discard: () => {\n setFailedStorageKey(undefined);\n setDraft(undefined);\n },\n rename: (viewId, name) => {\n const nextName = validViewName(name);\n if (!nextName) return;\n if (!write(views.map(view => (view.id === viewId ? { ...view, name: nextName } : view)))) return;\n if (draft?.viewId === viewId) setDraft({ ...draft, name: nextName });\n },\n duplicate: viewId => {\n const index = views.findIndex(view => view.id === viewId);\n const original = views[index];\n if (!original) return;\n const copy: SavedView<TSettings> = {\n ...original,\n id: createSavedViewId(),\n name: validViewName(`${original.name} copy`) ?? original.name,\n };\n if (!write(views.toSpliced(index + 1, 0, copy))) return;\n setDraft(undefined);\n onActiveViewChange(copy.id);\n },\n remove: viewId => {\n if (!write(views.filter(view => view.id !== viewId))) return;\n if (draft?.viewId === viewId) setDraft(undefined);\n if (activeViewId === viewId) onActiveViewChange(undefined);\n },\n };\n}\n"],"names":["z","jsx","jsxs","Txt","FilterBarFieldLabel","buttonVariants","cn","controlHeight","useState","Button","LayersPlusIcon","LayersIcon","Fragment","VisuallyHidden","PencilIcon","Icon","TextCursorInputIcon","CopyIcon","Trash2Icon","ContextMenu","DropdownMenu","HoverCard","HoverCardTrigger","ChevronDownIcon","HoverCardContent","useSyncExternalStore"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"SavedViews.cjs.js","sources":["../../src/ds/components/SavedViews/saved-view-schema.ts","../../src/ds/components/SavedViews/saved-view-name-input.tsx","../../src/ds/components/SavedViews/saved-view-summary.tsx","../../src/ds/components/SavedViews/saved-view-tabs.tsx","../../src/ds/components/SavedViews/saved-view-editor.tsx","../../src/ds/components/SavedViews/saved-views-storage.ts","../../src/ds/components/SavedViews/use-saved-views.ts"],"sourcesContent":["import { z } from 'zod/v4';\nimport type { FilterBarItem } from '@/ds/components/FilterBar/types';\n\nexport const MAX_SAVED_VIEW_NAME_CHARS = 80;\n\nconst SAVED_VIEWS_STORAGE_VERSION = 1;\n\nconst filterBarScalarSchema = z.union([z.string(), z.number(), z.boolean()]);\n\nconst savedViewFilterSchema = z.object({\n id: z.string().min(1),\n fieldId: z.string().min(1),\n operatorId: z.string().min(1),\n value: z.union([filterBarScalarSchema, z.array(filterBarScalarSchema)]),\n}) satisfies z.ZodType<FilterBarItem>;\n\nexport const savedViewNameSchema = z.string().trim().min(1).max(MAX_SAVED_VIEW_NAME_CHARS);\n\nconst storedSavedViewSchema = z.object({\n id: z.string().min(1),\n name: savedViewNameSchema,\n filters: z.array(savedViewFilterSchema),\n settings: z.unknown(),\n});\n\n// Views stay `unknown` so one malformed view is dropped on its own, not the whole list.\nconst savedViewsDocumentSchema = z.object({\n version: z.literal(SAVED_VIEWS_STORAGE_VERSION),\n views: z.array(z.unknown()),\n});\n\n// Only `safeParse` is used, so the consumer's Zod version never has to match this package's.\nexport type SavedViewSettingsSchema<TSettings> = {\n safeParse: (value: unknown) => { success: true; data: TSettings } | { success: false };\n};\n\nexport type SavedView<TSettings> = {\n id: string;\n name: string;\n filters: FilterBarItem[];\n settings: TSettings;\n};\n\nexport function parseSavedViews<TSettings>(\n raw: string | null,\n settingsSchema: SavedViewSettingsSchema<TSettings>,\n): SavedView<TSettings>[] {\n if (!raw) return [];\n let json: unknown;\n try {\n json = JSON.parse(raw);\n } catch {\n return [];\n }\n const document = savedViewsDocumentSchema.safeParse(json);\n if (!document.success) return [];\n return document.data.views.flatMap(candidate => {\n const view = storedSavedViewSchema.safeParse(candidate);\n if (!view.success) return [];\n const settings = settingsSchema.safeParse(view.data.settings);\n if (!settings.success) return [];\n return [{ ...view.data, settings: settings.data }];\n });\n}\n\nexport function serializeSavedViews<TSettings>(views: readonly SavedView<TSettings>[]): string {\n return JSON.stringify({ version: SAVED_VIEWS_STORAGE_VERSION, views });\n}\n","import { MAX_SAVED_VIEW_NAME_CHARS } from './saved-view-schema';\nimport { passwordManagerOptOutProps } from '@/ds/primitives/password-manager-autofill';\n\n// Uncontrolled so blur is the one exit: Enter blurs, Escape restores the name first, blur commits.\nexport function SavedViewNameInput({ name, onCommit }: { name: string; onCommit: (name: string) => void }) {\n return (\n <input\n autoFocus\n aria-label=\"View name\"\n defaultValue={name}\n maxLength={MAX_SAVED_VIEW_NAME_CHARS}\n {...passwordManagerOptOutProps}\n onFocus={event => event.currentTarget.select()}\n onBlur={event => onCommit(event.currentTarget.value)}\n onKeyDown={event => {\n if (event.key === 'Escape') event.currentTarget.value = name;\n if (event.key === 'Enter' || event.key === 'Escape') {\n event.preventDefault();\n event.currentTarget.blur();\n }\n }}\n className=\"field-sizing-content min-w-12 bg-transparent text-foreground outline-hidden\"\n />\n );\n}\n","import type { ReactNode } from 'react';\nimport { FilterBarFieldLabel, formatValue } from '@/ds/components/FilterBar/filter-bar-chip';\nimport type { FilterBarField, FilterBarItem, FilterBarOperator } from '@/ds/components/FilterBar/types';\nimport { Txt } from '@/ds/components/Txt';\n\ntype SavedViewSummaryProps = {\n filters: readonly FilterBarItem[];\n fields: readonly FilterBarField[];\n operators: readonly FilterBarOperator[];\n settings?: ReactNode;\n};\n\nexport function SavedViewSummary({ filters, fields, operators, settings }: SavedViewSummaryProps) {\n return (\n <div className=\"flex min-w-48 flex-col gap-2\">\n {filters.length === 0 ? (\n <Txt variant=\"caption\" tone=\"muted\">\n No filters\n </Txt>\n ) : (\n <ul aria-label=\"Filters\" className=\"flex flex-col gap-1.5\">\n {filters.map(filter => {\n const field = fields.find(candidate => candidate.id === filter.fieldId);\n const operatorStated = (field?.operators?.length ?? operators.length) > 1;\n const operator = operators.find(candidate => candidate.id === filter.operatorId);\n return (\n <li key={filter.id} className=\"min-w-0\">\n <Txt as=\"span\" variant=\"body-sm\" className=\"flex min-w-0 items-center gap-1.5\">\n <span className=\"flex min-w-0 shrink-0 items-center gap-1 text-muted-foreground\">\n <FilterBarFieldLabel field={field} label={field?.label ?? filter.fieldId} />\n </span>\n {operatorStated && <span className=\"shrink-0 text-muted-foreground\">{operator?.label}</span>}\n <span className=\"min-w-0 truncate\">{formatValue(filter.value, field)}</span>\n </Txt>\n </li>\n );\n })}\n </ul>\n )}\n {settings}\n </div>\n );\n}\n","import {\n ChevronDownIcon,\n CopyIcon,\n LayersIcon,\n LayersPlusIcon,\n PencilIcon,\n TextCursorInputIcon,\n Trash2Icon,\n} from 'lucide-react';\nimport { Fragment, useState } from 'react';\nimport type { ReactNode } from 'react';\nimport { SavedViewNameInput } from './saved-view-name-input';\nimport type { SavedView } from './saved-view-schema';\nimport { SavedViewSummary } from './saved-view-summary';\nimport type { SavedViewsController } from './use-saved-views';\nimport { Button, buttonVariants } from '@/ds/components/Button/Button';\nimport { ContextMenu } from '@/ds/components/ContextMenu';\nimport { DropdownMenu } from '@/ds/components/DropdownMenu';\nimport type { FilterBarField, FilterBarOperator } from '@/ds/components/FilterBar/types';\nimport { HoverCard, HoverCardContent, HoverCardTrigger } from '@/ds/components/HoverCard';\nimport { Txt } from '@/ds/components/Txt';\nimport { Icon } from '@/ds/icons/Icon';\nimport { controlHeight } from '@/ds/primitives/control-size';\nimport { VisuallyHidden } from '@/ds/primitives/visually-hidden';\nimport { cn } from '@/lib/utils';\n\nconst restingTabClass = buttonVariants({ variant: 'default', size: 'sm' });\nconst selectedTabClass = cn(\n buttonVariants({ variant: 'ghost', size: 'sm' }),\n 'bg-fill-hover text-foreground not-disabled:hover:bg-fill-hover',\n);\nconst editingTabClass = cn(\n controlHeight.sm,\n 'inline-flex items-center gap-1.5 rounded-full border border-dashed border-border-strong bg-fill-hover px-[.9em] text-label text-foreground',\n '[&_svg]:size-3.5 [&_svg]:shrink-0',\n);\n\nexport type SavedViewTabsProps<TSettings> = {\n views: SavedViewsController<TSettings>;\n fields: readonly FilterBarField[];\n operators: readonly FilterBarOperator[];\n defaultLabel: string;\n newViewSettings: NoInfer<TSettings>;\n describeSettings?: (settings: TSettings) => ReactNode;\n 'aria-label'?: string;\n className?: string;\n};\n\nexport function SavedViewTabs<TSettings>({\n views,\n fields,\n operators,\n defaultLabel,\n newViewSettings,\n describeSettings,\n 'aria-label': ariaLabel = 'Views',\n className,\n}: SavedViewTabsProps<TSettings>) {\n const [renamingViewId, setRenamingViewId] = useState<string>();\n const { draft } = views;\n const creating = draft !== undefined && draft.viewId === undefined;\n const defaultSelected = views.activeView === undefined && !creating;\n\n return (\n <div role=\"group\" aria-label={ariaLabel} className={cn('flex flex-wrap items-center gap-1.5', className)}>\n <button\n type=\"button\"\n aria-pressed={defaultSelected}\n className={defaultSelected ? selectedTabClass : restingTabClass}\n onClick={() => views.select(undefined)}\n >\n {defaultLabel}\n </button>\n {views.views.map(view => {\n if (renamingViewId === view.id) {\n return (\n <RenamingViewTab\n key={view.id}\n name={view.name}\n onCommit={name => {\n setRenamingViewId(undefined);\n views.rename(view.id, name);\n }}\n />\n );\n }\n return (\n <SavedViewTab\n key={view.id}\n view={view}\n selected={views.activeView?.id === view.id && !creating}\n unsaved={draft?.viewId === view.id && views.unsaved}\n fields={fields}\n operators={operators}\n settings={describeSettings?.(view.settings)}\n onSelect={() => views.select(view.id)}\n onEdit={() => views.edit(view.id)}\n onRename={() => setRenamingViewId(view.id)}\n onDuplicate={() => views.duplicate(view.id)}\n onDelete={() => views.remove(view.id)}\n />\n );\n })}\n {views.storageError && (\n <Txt role=\"alert\" variant=\"caption\" className=\"w-full text-destructive-foreground\">\n {views.storageError}\n </Txt>\n )}\n {creating ? (\n <EditingViewTab name={draft.name} unsaved onRename={name => views.change({ name })} />\n ) : (\n <Button\n type=\"button\"\n variant=\"ghost\"\n size=\"icon-sm\"\n tooltip=\"New view\"\n disabled={draft !== undefined}\n onClick={() => views.create(newViewSettings)}\n >\n <LayersPlusIcon />\n </Button>\n )}\n </div>\n );\n}\n\nfunction EditingViewTab({\n name,\n unsaved,\n onRename,\n}: {\n name: string;\n unsaved: boolean;\n onRename: (name: string) => void;\n}) {\n const [renaming, setRenaming] = useState(false);\n return (\n <span aria-current=\"true\" className={editingTabClass}>\n <LayersIcon aria-hidden />\n {renaming ? (\n <SavedViewNameInput\n name={name}\n onCommit={next => {\n setRenaming(false);\n if (next.trim()) onRename(next);\n }}\n />\n ) : (\n <>\n <span className=\"max-w-48 truncate\">{name}</span>\n {unsaved && (\n <>\n <span className=\"size-1.5 shrink-0 rounded-full bg-warning-indicator\" aria-hidden />\n <VisuallyHidden>Unsaved changes</VisuallyHidden>\n </>\n )}\n <Button\n type=\"button\"\n variant=\"ghost\"\n size=\"icon-sm\"\n tooltip=\"Rename view\"\n className=\"-mr-2 size-6\"\n onClick={() => setRenaming(true)}\n >\n <PencilIcon />\n </Button>\n </>\n )}\n </span>\n );\n}\n\nfunction RenamingViewTab({ name, onCommit }: { name: string; onCommit: (name: string) => void }) {\n return (\n <span className={cn(restingTabClass, 'gap-1.5')}>\n <SavedViewTabIcon />\n <SavedViewNameInput name={name} onCommit={onCommit} />\n </span>\n );\n}\n\nfunction SavedViewTabIcon() {\n return (\n <Icon data-slot=\"button-icon\" size=\"sm\">\n <LayersIcon aria-hidden />\n </Icon>\n );\n}\n\nfunction SavedViewTab<TSettings>({\n view,\n selected,\n unsaved,\n fields,\n operators,\n settings,\n onSelect,\n onEdit,\n onRename,\n onDuplicate,\n onDelete,\n}: {\n view: SavedView<TSettings>;\n selected: boolean;\n unsaved: boolean;\n fields: readonly FilterBarField[];\n operators: readonly FilterBarOperator[];\n settings: ReactNode;\n onSelect: () => void;\n onEdit: () => void;\n onRename: () => void;\n onDuplicate: () => void;\n onDelete: () => void;\n}) {\n const actions: ViewAction[] = [\n { label: 'Edit view', icon: <PencilIcon aria-hidden />, onClick: onEdit },\n { label: 'Rename', icon: <TextCursorInputIcon aria-hidden />, onClick: onRename },\n { label: 'Duplicate', icon: <CopyIcon aria-hidden />, onClick: onDuplicate },\n { label: 'Delete view', icon: <Trash2Icon aria-hidden />, onClick: onDelete, destructive: true },\n ];\n const [menuOpen, setMenuOpen] = useState(false);\n const [previewOpen, setPreviewOpen] = useState(false);\n const changeMenuOpen = (open: boolean) => {\n setMenuOpen(selected && open);\n if (open) setPreviewOpen(false);\n };\n\n return (\n <ContextMenu>\n <DropdownMenu open={selected && menuOpen} onOpenChange={changeMenuOpen}>\n <HoverCard open={!selected && previewOpen} onOpenChange={setPreviewOpen}>\n <ContextMenu.Trigger\n render={\n <HoverCardTrigger\n delay={400}\n render={\n <DropdownMenu.Trigger\n render={\n <button\n type=\"button\"\n aria-pressed={selected}\n aria-haspopup={selected ? 'menu' : undefined}\n onClick={() => {\n if (selected) return;\n setPreviewOpen(false);\n onSelect();\n }}\n className={cn(selected ? selectedTabClass : restingTabClass, 'gap-1.5')}\n />\n }\n />\n }\n />\n }\n >\n <SavedViewTabIcon />\n <span className=\"max-w-48 truncate\">{view.name}</span>\n {unsaved && <span className=\"size-1.5 shrink-0 rounded-full bg-warning-indicator\" aria-hidden />}\n {selected && <ChevronDownIcon aria-hidden className=\"size-3\" />}\n </ContextMenu.Trigger>\n <HoverCardContent side=\"bottom\" align=\"start\" showArrow={false}>\n <SavedViewSummary filters={view.filters} fields={fields} operators={operators} settings={settings} />\n </HoverCardContent>\n </HoverCard>\n <DropdownMenu.Content align=\"start\">\n {actions.map(action => (\n <Fragment key={action.label}>\n {action.destructive && <DropdownMenu.Separator />}\n <DropdownMenu.Item variant={action.destructive ? 'destructive' : 'default'} onClick={action.onClick}>\n {action.icon}\n {action.label}\n </DropdownMenu.Item>\n </Fragment>\n ))}\n </DropdownMenu.Content>\n </DropdownMenu>\n <ContextMenu.Content>\n {actions.map(action => (\n <Fragment key={action.label}>\n {action.destructive && <ContextMenu.Separator />}\n <ContextMenu.Item variant={action.destructive ? 'destructive' : 'default'} onClick={action.onClick}>\n {action.icon}\n {action.label}\n </ContextMenu.Item>\n </Fragment>\n ))}\n </ContextMenu.Content>\n </ContextMenu>\n );\n}\n\ntype ViewAction = { label: string; icon: ReactNode; onClick: () => void; destructive?: boolean };\n","import type { ReactNode } from 'react';\nimport type { SavedViewsController } from './use-saved-views';\nimport { Button } from '@/ds/components/Button/Button';\nimport { Txt } from '@/ds/components/Txt';\nimport { cn } from '@/lib/utils';\n\nexport type SavedViewEditorProps<TSettings> = {\n views: SavedViewsController<TSettings>;\n children: ReactNode;\n className?: string;\n};\n\nexport function SavedViewEditor<TSettings>({ views, children, className }: SavedViewEditorProps<TSettings>) {\n const { draft } = views;\n const creating = draft?.viewId === undefined;\n return (\n <div\n role={draft ? 'group' : undefined}\n aria-label={draft ? `Edit view ${draft.name}` : undefined}\n className={cn('flex min-w-0 flex-wrap items-center gap-2', className)}\n >\n {children}\n {draft && (\n <>\n {!creating && views.unsaved && (\n <Txt as=\"span\" variant=\"caption\" tone=\"muted\">\n Unsaved changes\n </Txt>\n )}\n <div className=\"ml-auto flex shrink-0 items-center gap-3\">\n {creating && (\n <Txt as=\"span\" variant=\"caption\" tone=\"muted\" className=\"max-sm:hidden\">\n Saved in this browser\n </Txt>\n )}\n <div className=\"flex items-center gap-1\">\n <Button type=\"button\" variant=\"ghost\" size=\"sm\" onClick={views.discard}>\n {creating ? 'Cancel' : 'Reset'}\n </Button>\n <Button type=\"button\" variant=\"primary\" size=\"sm\" disabled={!views.unsaved} onClick={views.save}>\n {creating ? 'Save view' : 'Save changes'}\n </Button>\n </div>\n </div>\n </>\n )}\n </div>\n );\n}\n","type SavedViewsSubscribe = (listener: () => void) => () => void;\n\nconst listenersByKey = new Map<string, Set<() => void>>();\nconst subscribeByKey = new Map<string, SavedViewsSubscribe>();\n\nexport function readSavedViewsRaw(key: string): string | null {\n try {\n return window.localStorage.getItem(key);\n } catch {\n return null;\n }\n}\n\nexport function writeSavedViewsRaw(key: string, raw: string): boolean {\n try {\n window.localStorage.setItem(key, raw);\n } catch {\n return false;\n }\n listenersByKey.get(key)?.forEach(listener => listener());\n return true;\n}\n\nexport function savedViewsSubscriber(key: string): SavedViewsSubscribe {\n const cached = subscribeByKey.get(key);\n if (cached) return cached;\n const subscribe: SavedViewsSubscribe = listener => subscribeSavedViews(key, listener);\n subscribeByKey.set(key, subscribe);\n return subscribe;\n}\n\nfunction subscribeSavedViews(key: string, listener: () => void): () => void {\n const listeners = listenersByKey.get(key) ?? new Set<() => void>();\n listenersByKey.set(key, listeners);\n listeners.add(listener);\n const onStorage = (event: StorageEvent) => {\n if (event.key === key || event.key === null) listener();\n };\n window.addEventListener('storage', onStorage);\n return () => {\n listeners.delete(listener);\n window.removeEventListener('storage', onStorage);\n };\n}\n","import { useState, useSyncExternalStore } from 'react';\nimport { parseSavedViews, savedViewNameSchema, serializeSavedViews } from './saved-view-schema';\nimport type { SavedView, SavedViewSettingsSchema } from './saved-view-schema';\nimport { readSavedViewsRaw, savedViewsSubscriber, writeSavedViewsRaw } from './saved-views-storage';\nimport type { FilterBarItem } from '@/ds/components/FilterBar/types';\n\nconst NEW_SAVED_VIEW_NAME = 'Untitled view';\n\nexport type SavedViewContent<TSettings> = {\n filters: FilterBarItem[];\n settings: TSettings;\n};\n\nexport type SavedViewDraft<TSettings> = SavedViewContent<TSettings> & {\n viewId?: string;\n name: string;\n};\n\nexport type SavedViewDraftChange<TSettings> = Partial<Omit<SavedViewDraft<TSettings>, 'viewId'>>;\n\nexport type UseSavedViewsOptions<TSettings> = {\n storageKey: string;\n settingsSchema: SavedViewSettingsSchema<TSettings>;\n activeViewId: string | undefined;\n onActiveViewChange: (viewId: string | undefined) => void;\n};\n\nexport type SavedViewsController<TSettings> = {\n views: SavedView<TSettings>[];\n activeView: SavedView<TSettings> | undefined;\n draft: SavedViewDraft<TSettings> | undefined;\n unsaved: boolean;\n storageError: string | undefined;\n applied: SavedViewContent<TSettings> | undefined;\n select: (viewId: string | undefined) => void;\n create: (settings: TSettings, filters?: FilterBarItem[]) => void;\n edit: (viewId: string) => void;\n change: (patch: SavedViewDraftChange<TSettings>) => void;\n save: () => void;\n discard: () => void;\n rename: (viewId: string, name: string) => void;\n duplicate: (viewId: string) => void;\n remove: (viewId: string) => void;\n};\n\nfunction createSavedViewId(): string {\n if (typeof crypto !== 'undefined' && typeof crypto.randomUUID === 'function') return crypto.randomUUID();\n return `view-${Date.now().toString(36)}-${Math.random().toString(36).slice(2)}`;\n}\n\nfunction validViewName(name: string): string | undefined {\n const parsed = savedViewNameSchema.safeParse(name);\n return parsed.success ? parsed.data : undefined;\n}\n\nfunction sameViewContent<TSettings>(draft: SavedViewDraft<TSettings>, view: SavedView<TSettings>): boolean {\n return (\n JSON.stringify([draft.name, draft.filters, draft.settings]) ===\n JSON.stringify([view.name, view.filters, view.settings])\n );\n}\n\nexport function useSavedViews<TSettings>({\n storageKey,\n settingsSchema,\n activeViewId,\n onActiveViewChange,\n}: UseSavedViewsOptions<TSettings>): SavedViewsController<TSettings> {\n const raw = useSyncExternalStore(\n savedViewsSubscriber(storageKey),\n () => readSavedViewsRaw(storageKey),\n () => null,\n );\n const views = parseSavedViews(raw, settingsSchema);\n const [failedStorageKey, setFailedStorageKey] = useState<string>();\n const [pendingDraft, setDraft] = useState<SavedViewDraft<TSettings>>();\n const [draftScope, setDraftScope] = useState({ storageKey, activeViewId });\n const draftView = views.find(view => view.id === pendingDraft?.viewId);\n const draftViewDeleted = pendingDraft?.viewId !== undefined && !draftView;\n const storageKeyChanged = draftScope.storageKey !== storageKey;\n if (storageKeyChanged || draftScope.activeViewId !== activeViewId || draftViewDeleted) {\n setDraftScope({ storageKey, activeViewId });\n if (storageKeyChanged || draftViewDeleted || pendingDraft?.viewId !== activeViewId) setDraft(undefined);\n }\n const draft = pendingDraft?.viewId === undefined || pendingDraft.viewId === activeViewId ? pendingDraft : undefined;\n const unsaved = draft !== undefined && (!draftView || !sameViewContent(draft, draftView));\n\n const activeView = views.find(view => view.id === activeViewId);\n const write = (next: SavedView<TSettings>[]) => {\n const saved = writeSavedViewsRaw(storageKey, serializeSavedViews(next));\n setFailedStorageKey(saved ? undefined : storageKey);\n return saved;\n };\n\n return {\n views,\n activeView,\n draft,\n unsaved,\n storageError:\n failedStorageKey === storageKey\n ? 'Could not save changes. Check your browser storage settings and try again.'\n : undefined,\n applied: draft ?? activeView,\n select: viewId => {\n setFailedStorageKey(undefined);\n setDraft(undefined);\n onActiveViewChange(viewId);\n },\n create: (settings, filters = []) => setDraft({ name: NEW_SAVED_VIEW_NAME, filters, settings }),\n edit: viewId => {\n if (draft?.viewId === viewId) return;\n const view = views.find(candidate => candidate.id === viewId);\n if (!view) return;\n const { id, ...content } = view;\n setDraft({ ...content, viewId: id });\n if (viewId !== activeViewId) onActiveViewChange(viewId);\n },\n change: patch => {\n if (draft) {\n setDraft({ ...draft, ...patch });\n return;\n }\n if (!activeView) return;\n const { id, ...content } = activeView;\n setDraft({ ...content, ...patch, viewId: id });\n },\n save: () => {\n if (!draft) return;\n const { viewId, ...content } = draft;\n const saved: SavedView<TSettings> = {\n ...content,\n id: viewId ?? createSavedViewId(),\n name: validViewName(content.name) ?? views.find(view => view.id === viewId)?.name ?? NEW_SAVED_VIEW_NAME,\n };\n if (!write(viewId ? views.map(view => (view.id === viewId ? saved : view)) : [...views, saved])) return;\n setDraft(undefined);\n if (saved.id !== activeViewId) onActiveViewChange(saved.id);\n },\n discard: () => {\n setFailedStorageKey(undefined);\n setDraft(undefined);\n },\n rename: (viewId, name) => {\n const nextName = validViewName(name);\n if (!nextName) return;\n if (!write(views.map(view => (view.id === viewId ? { ...view, name: nextName } : view)))) return;\n if (draft?.viewId === viewId) setDraft({ ...draft, name: nextName });\n },\n duplicate: viewId => {\n const index = views.findIndex(view => view.id === viewId);\n const original = views[index];\n if (!original) return;\n const copy: SavedView<TSettings> = {\n ...original,\n id: createSavedViewId(),\n name: validViewName(`${original.name} copy`) ?? original.name,\n };\n if (!write(views.toSpliced(index + 1, 0, copy))) return;\n setDraft(undefined);\n onActiveViewChange(copy.id);\n },\n remove: viewId => {\n if (!write(views.filter(view => view.id !== viewId))) return;\n if (draft?.viewId === viewId) setDraft(undefined);\n if (activeViewId === viewId) onActiveViewChange(undefined);\n },\n };\n}\n"],"names":["z","jsx","passwordManagerOptOutProps","jsxs","Txt","FilterBarFieldLabel","buttonVariants","cn","controlHeight","useState","Button","LayersPlusIcon","LayersIcon","Fragment","VisuallyHidden","PencilIcon","Icon","TextCursorInputIcon","CopyIcon","Trash2Icon","ContextMenu","DropdownMenu","HoverCard","HoverCardTrigger","ChevronDownIcon","HoverCardContent","useSyncExternalStore"],"mappings":"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"}
|
|
@@ -2,7 +2,8 @@ import { jsx, jsxs, Fragment as Fragment$1 } from 'react/jsx-runtime';
|
|
|
2
2
|
import { LayersPlusIcon, ChevronDownIcon, LayersIcon, PencilIcon, TextCursorInputIcon, CopyIcon, Trash2Icon } from 'lucide-react';
|
|
3
3
|
import { useState, Fragment, useSyncExternalStore } from 'react';
|
|
4
4
|
import { z } from 'zod/v4';
|
|
5
|
-
import {
|
|
5
|
+
import { passwordManagerOptOutProps } from '../primitives/password-manager-autofill.es.js';
|
|
6
|
+
import { a as FilterBarFieldLabel, t as formatValue } from '../filter-bar-chip-DBjcrQFh.js';
|
|
6
7
|
import { T as Txt } from '../Txt-BuzYj7Vy.js';
|
|
7
8
|
import { B as Button, b as buttonVariants } from '../Button-MHlMpc97.js';
|
|
8
9
|
import { C as ContextMenu } from '../context-menu-BVth1SD9.js';
|
|
@@ -63,6 +64,7 @@ function SavedViewNameInput({ name, onCommit }) {
|
|
|
63
64
|
"aria-label": "View name",
|
|
64
65
|
defaultValue: name,
|
|
65
66
|
maxLength: MAX_SAVED_VIEW_NAME_CHARS,
|
|
67
|
+
...passwordManagerOptOutProps,
|
|
66
68
|
onFocus: (event) => event.currentTarget.select(),
|
|
67
69
|
onBlur: (event) => onCommit(event.currentTarget.value),
|
|
68
70
|
onKeyDown: (event) => {
|