@mastra/playground-ui 57.0.0 → 57.1.0-alpha.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{Button-KUj0U-5I.js → Button-B8nF87ai.js} +2 -8
- package/dist/Button-B8nF87ai.js.map +1 -0
- package/dist/{Button-MMZPEb_q.cjs → Button-BAMnPqos.cjs} +1 -7
- package/dist/Button-BAMnPqos.cjs.map +1 -0
- package/dist/{Card-DwGasv0K.cjs → Card-BbwF20OW.cjs} +3 -3
- package/dist/Card-BbwF20OW.cjs.map +1 -0
- package/dist/{Card-B_buJ5yF.js → Card-DmT57Pve.js} +3 -3
- package/dist/Card-DmT57Pve.js.map +1 -0
- package/dist/{EmptyState-DiSP6UIy.cjs → EmptyState-2XQgeju6.cjs} +12 -3
- package/dist/EmptyState-2XQgeju6.cjs.map +1 -0
- package/dist/{EmptyState-B6cyZw6m.js → EmptyState-Bc4nJ9QH.js} +13 -4
- package/dist/EmptyState-Bc4nJ9QH.js.map +1 -0
- package/dist/{Notice-CPyYcX5J.cjs → Notice-AUNd8fqT.cjs} +2 -2
- package/dist/{Notice-CPyYcX5J.cjs.map → Notice-AUNd8fqT.cjs.map} +1 -1
- package/dist/{Notice-KC18b8Nd.js → Notice-WT8G4OA6.js} +2 -2
- package/dist/{Notice-KC18b8Nd.js.map → Notice-WT8G4OA6.js.map} +1 -1
- package/dist/{ask-user-DaRRR4qQ.cjs → ask-user--Samf9gv.cjs} +2 -2
- package/dist/{ask-user-DaRRR4qQ.cjs.map → ask-user--Samf9gv.cjs.map} +1 -1
- package/dist/{ask-user-C4DTzEQF.js → ask-user-C-B3dhNP.js} +2 -2
- package/dist/{ask-user-C4DTzEQF.js.map → ask-user-C-B3dhNP.js.map} +1 -1
- package/dist/buttons-group.css +2 -14
- package/dist/{chat-notification-DeKD1Ifx.js → chat-notification-CmdRGO_D.js} +2 -2
- package/dist/{chat-notification-DeKD1Ifx.js.map → chat-notification-CmdRGO_D.js.map} +1 -1
- package/dist/{chat-notification-C5Ox5tuS.cjs → chat-notification-DJykWtoj.cjs} +2 -2
- package/dist/{chat-notification-C5Ox5tuS.cjs.map → chat-notification-DJykWtoj.cjs.map} +1 -1
- package/dist/{chat-signal-DiAHks6_.js → chat-signal-Vg8pGXwH.js} +2 -2
- package/dist/{chat-signal-DiAHks6_.js.map → chat-signal-Vg8pGXwH.js.map} +1 -1
- package/dist/{chat-signal-ClyJeml8.cjs → chat-signal-xs3FkPts.cjs} +2 -2
- package/dist/{chat-signal-ClyJeml8.cjs.map → chat-signal-xs3FkPts.cjs.map} +1 -1
- package/dist/{code-block-D37olB3O.js → code-block-CoKMTAdr.js} +5 -5
- package/dist/{code-block-D37olB3O.js.map → code-block-CoKMTAdr.js.map} +1 -1
- package/dist/{code-block-BoTq0TMr.cjs → code-block-FTEGH9VP.cjs} +5 -5
- package/dist/{code-block-BoTq0TMr.cjs.map → code-block-FTEGH9VP.cjs.map} +1 -1
- package/dist/{code-editor-BfoJXq9l.cjs → code-editor-D0wHkvDt.cjs} +2 -2
- package/dist/{code-editor-BfoJXq9l.cjs.map → code-editor-D0wHkvDt.cjs.map} +1 -1
- package/dist/{code-editor-BQTDma1I.js → code-editor-DmvGc1jj.js} +2 -2
- package/dist/{code-editor-BQTDma1I.js.map → code-editor-DmvGc1jj.js.map} +1 -1
- package/dist/{combobox-Bn_uyUSB.cjs → combobox-1tyP_dy-.cjs} +3 -3
- package/dist/{combobox-Bn_uyUSB.cjs.map → combobox-1tyP_dy-.cjs.map} +1 -1
- package/dist/{combobox-Cykfy5wc.js → combobox-gPiXyJgX.js} +3 -3
- package/dist/{combobox-Cykfy5wc.js.map → combobox-gPiXyJgX.js.map} +1 -1
- package/dist/{combobox-styles-CSsS2LEx.cjs → combobox-styles-CeTbTVnX.cjs} +2 -2
- package/dist/combobox-styles-CeTbTVnX.cjs.map +1 -0
- package/dist/{combobox-styles-iuJUkJEQ.js → combobox-styles-DZbWnLlE.js} +2 -2
- package/dist/combobox-styles-DZbWnLlE.js.map +1 -0
- package/dist/{command-Bmy4PznC.js → command-6BKuiTWd.js} +2 -2
- package/dist/{command-Bmy4PznC.js.map → command-6BKuiTWd.js.map} +1 -1
- package/dist/{command-B7H-emho.cjs → command-ByQRbkpW.cjs} +2 -2
- package/dist/{command-B7H-emho.cjs.map → command-ByQRbkpW.cjs.map} +1 -1
- package/dist/components/AlertDialog.cjs.js +1 -1
- package/dist/components/AlertDialog.es.js +1 -1
- package/dist/components/Button.cjs.js +1 -1
- package/dist/components/Button.es.js +2 -2
- package/dist/components/Card.cjs.js +1 -1
- package/dist/components/Card.es.js +1 -1
- package/dist/components/ClampedText.cjs.js +1 -1
- package/dist/components/ClampedText.es.js +1 -1
- package/dist/components/CodeBlock.cjs.js +1 -1
- package/dist/components/CodeBlock.es.js +1 -1
- package/dist/components/CodeEditor.cjs.js +1 -1
- package/dist/components/CodeEditor.es.js +1 -1
- package/dist/components/Columns.cjs.js +2 -106
- package/dist/components/Columns.cjs.js.map +1 -1
- package/dist/components/Columns.es.js +4 -107
- package/dist/components/Columns.es.js.map +1 -1
- package/dist/components/Combobox.cjs.js +2 -2
- package/dist/components/Combobox.es.js +2 -2
- package/dist/components/Command.cjs.js +1 -1
- package/dist/components/Command.es.js +1 -1
- package/dist/components/CommandPalette.cjs.js +1 -1
- package/dist/components/CommandPalette.es.js +1 -1
- package/dist/components/Comment.cjs.js +3 -3
- package/dist/components/Comment.cjs.js.map +1 -1
- package/dist/components/Comment.es.js +3 -3
- package/dist/components/Comment.es.js.map +1 -1
- package/dist/components/CopyButton.cjs.js +1 -1
- package/dist/components/CopyButton.es.js +1 -1
- package/dist/components/DataCodeSection.cjs.js +1 -1
- package/dist/components/DataCodeSection.es.js +1 -1
- package/dist/components/DataDetailsPanel.cjs.js +2 -2
- package/dist/components/DataDetailsPanel.es.js +2 -2
- package/dist/components/DataKeysAndValues.cjs.js +1 -1
- package/dist/components/DataKeysAndValues.es.js +1 -1
- package/dist/components/DataList.cjs.js +3 -3
- package/dist/components/DataList.es.js +3 -3
- package/dist/components/DataPanel.cjs.js +1 -1
- package/dist/components/DataPanel.es.js +1 -1
- package/dist/components/DateRangeTimeline.cjs.js +1 -1
- package/dist/components/DateRangeTimeline.es.js +1 -1
- package/dist/components/DateTimePicker.cjs.js +2 -2
- package/dist/components/DateTimePicker.es.js +2 -2
- package/dist/components/DateTimeRangePicker.cjs.js +1 -1
- package/dist/components/DateTimeRangePicker.es.js +1 -1
- package/dist/components/Dialog.cjs.js +2 -2
- package/dist/components/Dialog.es.js +3 -3
- package/dist/components/DisabledFeatureButton.cjs.js +1 -1
- package/dist/components/DisabledFeatureButton.es.js +1 -1
- package/dist/components/Drawer.cjs.js +1 -1
- package/dist/components/Drawer.es.js +1 -1
- package/dist/components/EmptyState.cjs.js +1 -1
- package/dist/components/EmptyState.es.js +1 -1
- package/dist/components/EnvironmentVariablesEditor.cjs.js +4 -4
- package/dist/components/EnvironmentVariablesEditor.es.js +4 -4
- package/dist/components/ErrorBoundary.cjs.js +1 -1
- package/dist/components/ErrorBoundary.es.js +1 -1
- package/dist/components/FilterBar.cjs.js +3 -3
- package/dist/components/FilterBar.es.js +4 -4
- package/dist/components/FormFieldBlocks.cjs.js +2 -2
- package/dist/components/FormFieldBlocks.es.js +2 -2
- package/dist/components/InputGroup.cjs.js +1 -1
- package/dist/components/InputGroup.es.js +1 -1
- package/dist/components/IntegrationDialog.cjs.js +2 -2
- package/dist/components/IntegrationDialog.es.js +2 -2
- package/dist/components/JSONSchemaForm.cjs.js +2 -2
- package/dist/components/JSONSchemaForm.es.js +2 -2
- package/dist/components/ListSearch.cjs.js +1 -1
- package/dist/components/ListSearch.es.js +1 -1
- package/dist/components/LogsDataList.cjs.js +1 -1
- package/dist/components/LogsDataList.es.js +1 -1
- package/dist/components/MainSidebar.cjs.js +125 -11
- package/dist/components/MainSidebar.cjs.js.map +1 -1
- package/dist/components/MainSidebar.es.js +120 -1
- package/dist/components/MainSidebar.es.js.map +1 -1
- package/dist/components/MarkdownRenderer.cjs.js +1 -1
- package/dist/components/MarkdownRenderer.es.js +1 -1
- package/dist/components/Message.cjs.js +1 -1
- package/dist/components/Message.es.js +1 -1
- package/dist/components/MetricsCard.cjs.js +1 -1
- package/dist/components/MetricsCard.es.js +1 -1
- package/dist/components/MetricsKpiCard.cjs.js +1 -1
- package/dist/components/MetricsKpiCard.es.js +1 -1
- package/dist/components/Notice.cjs.js +1 -1
- package/dist/components/Notice.es.js +1 -1
- package/dist/components/PageHeader.cjs.js +1 -1
- package/dist/components/PageHeader.es.js +1 -1
- package/dist/components/PageLayout.cjs.js +26 -3
- package/dist/components/PageLayout.cjs.js.map +1 -1
- package/dist/components/PageLayout.es.js +27 -4
- package/dist/components/PageLayout.es.js.map +1 -1
- package/dist/components/PrevNextNav.cjs.js +1 -1
- package/dist/components/PrevNextNav.es.js +1 -1
- package/dist/components/PropertyFilter.cjs.js +5 -5
- package/dist/components/PropertyFilter.cjs.js.map +1 -1
- package/dist/components/PropertyFilter.es.js +6 -6
- package/dist/components/PropertyFilter.es.js.map +1 -1
- package/dist/components/RuleBuilder.cjs.js +2 -2
- package/dist/components/RuleBuilder.es.js +2 -2
- package/dist/components/Select.cjs.js +1 -1
- package/dist/components/Select.es.js +1 -1
- package/dist/components/SideDialog.cjs.js +3 -3
- package/dist/components/SideDialog.es.js +3 -3
- package/dist/components/Tabs.cjs.js +3 -3
- package/dist/components/Tabs.es.js +3 -3
- package/dist/components/ThreadList.cjs.js +1 -1
- package/dist/components/ThreadList.es.js +1 -1
- package/dist/components/Truncate.cjs.js +1 -1
- package/dist/components/Truncate.es.js +1 -1
- package/dist/components/Workflow.cjs.js +4 -4
- package/dist/components/Workflow.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/chat-event.cjs.js +3 -3
- package/dist/components/ai/chat-event.es.js +4 -4
- package/dist/components/ai/plan.cjs.js +2 -2
- package/dist/components/ai/plan.es.js +2 -2
- package/dist/components/ai/tool-approval.cjs.js +1 -1
- package/dist/components/ai/tool-approval.es.js +1 -1
- package/dist/components/ai/tool-call.cjs.js +2 -2
- package/dist/components/ai/tool-call.es.js +3 -3
- package/dist/{copy-button-B5ZCtnTb.cjs → copy-button-D2MTGxq_.cjs} +2 -2
- package/dist/{copy-button-B5ZCtnTb.cjs.map → copy-button-D2MTGxq_.cjs.map} +1 -1
- package/dist/{copy-button-DZqxEuiE.js → copy-button-DcZ1mdw4.js} +2 -2
- package/dist/{copy-button-DZqxEuiE.js.map → copy-button-DcZ1mdw4.js.map} +1 -1
- package/dist/{data-code-section-iXzoOYMX.cjs → data-code-section-C10eY4qv.cjs} +5 -5
- package/dist/{data-code-section-iXzoOYMX.cjs.map → data-code-section-C10eY4qv.cjs.map} +1 -1
- package/dist/{data-code-section-DJRr65hS.js → data-code-section-CW9vy-nF.js} +5 -5
- package/dist/{data-code-section-DJRr65hS.js.map → data-code-section-CW9vy-nF.js.map} +1 -1
- package/dist/{data-keys-and-values-DhC4U4Yl.js → data-keys-and-values-BTYDB-K2.js} +3 -20
- package/dist/data-keys-and-values-BTYDB-K2.js.map +1 -0
- package/dist/{data-keys-and-values-BduKvvC5.cjs → data-keys-and-values-CMJ9zHKm.cjs} +3 -20
- package/dist/data-keys-and-values-CMJ9zHKm.cjs.map +1 -0
- package/dist/{data-list-DSbuTWLI.cjs → data-list-CH3HAhK5.cjs} +5 -5
- package/dist/data-list-CH3HAhK5.cjs.map +1 -0
- package/dist/{data-list-Cn0Ls4l2.js → data-list-DXjH5wkB.js} +5 -5
- package/dist/data-list-DXjH5wkB.js.map +1 -0
- package/dist/{data-list-spacer-C0YimRXC.js → data-list-spacer-BQ4_YeyT.js} +2 -2
- package/dist/{data-list-spacer-C0YimRXC.js.map → data-list-spacer-BQ4_YeyT.js.map} +1 -1
- package/dist/{data-list-spacer-DUBpzv_H.cjs → data-list-spacer-GIVW2hB1.cjs} +2 -2
- package/dist/{data-list-spacer-DUBpzv_H.cjs.map → data-list-spacer-GIVW2hB1.cjs.map} +1 -1
- package/dist/{data-panel-Bd_Xsz-W.cjs → data-panel-BG7wlPAX.cjs} +3 -3
- package/dist/{data-panel-Bd_Xsz-W.cjs.map → data-panel-BG7wlPAX.cjs.map} +1 -1
- package/dist/{data-panel-Y7wD0xlR.js → data-panel-Dclh0gKS.js} +3 -3
- package/dist/{data-panel-Y7wD0xlR.js.map → data-panel-Dclh0gKS.js.map} +1 -1
- package/dist/{date-time-range-picker-D2g3RU5B.cjs → date-time-range-picker-CiWpvWGR.cjs} +3 -3
- package/dist/{date-time-range-picker-D2g3RU5B.cjs.map → date-time-range-picker-CiWpvWGR.cjs.map} +1 -1
- package/dist/{date-time-range-picker-Cb86jLFc.js → date-time-range-picker-YGP0bTkl.js} +3 -3
- package/dist/{date-time-range-picker-Cb86jLFc.js.map → date-time-range-picker-YGP0bTkl.js.map} +1 -1
- package/dist/{dialog-Bilo4jEU.cjs → dialog-B2DGYuyi.cjs} +2 -2
- package/dist/{dialog-Bilo4jEU.cjs.map → dialog-B2DGYuyi.cjs.map} +1 -1
- package/dist/{dialog-DMOXPT0N.js → dialog-BvDeW4yR.js} +2 -2
- package/dist/{dialog-DMOXPT0N.js.map → dialog-BvDeW4yR.js.map} +1 -1
- package/dist/domains/auth/components/permission-denied.cjs.js +22 -0
- package/dist/domains/auth/components/permission-denied.cjs.js.map +1 -0
- package/dist/domains/auth/components/permission-denied.d.ts +2 -0
- package/dist/domains/auth/components/permission-denied.es.js +18 -0
- package/dist/domains/auth/components/permission-denied.es.js.map +1 -0
- package/dist/domains/auth/components/session-expired.cjs.js +40 -0
- package/dist/domains/auth/components/session-expired.cjs.js.map +1 -0
- package/dist/domains/auth/components/session-expired.d.ts +2 -0
- package/dist/domains/auth/components/session-expired.es.js +36 -0
- package/dist/domains/auth/components/session-expired.es.js.map +1 -0
- package/dist/domains/auth/services/sso-login.cjs.js +28 -0
- package/dist/domains/auth/services/sso-login.cjs.js.map +1 -0
- package/dist/domains/auth/services/sso-login.d.ts +2 -0
- package/dist/domains/auth/services/sso-login.es.js +24 -0
- package/dist/domains/auth/services/sso-login.es.js.map +1 -0
- package/dist/domains/chat/attachments/attachment-preview-dialog.cjs.js +2 -3
- package/dist/domains/chat/attachments/attachment-preview-dialog.cjs.js.map +1 -1
- package/dist/domains/chat/attachments/attachment-preview-dialog.es.js +2 -3
- package/dist/domains/chat/attachments/attachment-preview-dialog.es.js.map +1 -1
- package/dist/domains/chat/attachments/composer-attachment.cjs.js +1 -2
- package/dist/domains/chat/attachments/composer-attachment.cjs.js.map +1 -1
- package/dist/domains/chat/attachments/composer-attachment.es.js +1 -2
- package/dist/domains/chat/attachments/composer-attachment.es.js.map +1 -1
- package/dist/domains/chat/components/badge-wrapper.cjs.js +1 -1
- package/dist/domains/chat/components/badge-wrapper.es.js +1 -1
- package/dist/domains/chat/components/network-choice-metadata-dialog.cjs.js +3 -3
- package/dist/domains/chat/components/network-choice-metadata-dialog.es.js +3 -3
- package/dist/domains/chat/messages/notification-signal-notice.cjs.js +1 -1
- package/dist/domains/chat/messages/notification-signal-notice.es.js +1 -1
- package/dist/domains/chat/messages/reasoning.cjs.js +1 -1
- package/dist/domains/chat/messages/reasoning.es.js +1 -1
- package/dist/domains/chat/messages/renderers/message-text.cjs.js +2 -2
- package/dist/domains/chat/messages/renderers/message-text.es.js +2 -2
- package/dist/domains/chat/messages/renderers/status-renderers.cjs.js +1 -1
- package/dist/domains/chat/messages/renderers/status-renderers.es.js +1 -1
- package/dist/domains/chat/messages/signal-badge.cjs.js +1 -1
- package/dist/domains/chat/messages/signal-badge.es.js +1 -1
- package/dist/domains/chat/messages/tripwire-notice.cjs.js +1 -1
- package/dist/domains/chat/messages/tripwire-notice.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/code-mode-badge.cjs.js +2 -2
- package/dist/domains/chat/tools/badges/code-mode-badge.es.js +2 -2
- package/dist/domains/chat/tools/badges/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-renderer.cjs.js +1 -1
- package/dist/domains/chat/tools/badges/observation-renderer.es.js +1 -1
- package/dist/domains/chat/tools/badges/tool-approval-buttons.cjs.js +1 -1
- package/dist/domains/chat/tools/badges/tool-approval-buttons.es.js +1 -1
- package/dist/domains/logs/components/log-details-view.cjs.js +2 -2
- package/dist/domains/logs/components/log-details-view.es.js +2 -2
- package/dist/domains/logs/components/logs-error-content.cjs.js +6 -7
- package/dist/domains/logs/components/logs-error-content.cjs.js.map +1 -1
- package/dist/domains/logs/components/logs-error-content.es.js +4 -5
- package/dist/domains/logs/components/logs-error-content.es.js.map +1 -1
- package/dist/domains/logs/components/logs-list-view.cjs.js +1 -1
- package/dist/domains/logs/components/logs-list-view.es.js +1 -1
- package/dist/domains/logs/components/logs-toolbar.cjs.js +1 -1
- package/dist/domains/logs/components/logs-toolbar.es.js +1 -1
- package/dist/domains/logs/components/no-logs-info.cjs.js +2 -2
- package/dist/domains/logs/components/no-logs-info.es.js +2 -2
- package/dist/domains/memory/components/flame-graph.cjs.js +1 -1
- package/dist/domains/memory/components/flame-graph.es.js +1 -1
- package/dist/domains/memory/components/memory-studio-panel.cjs.js +1 -1
- package/dist/domains/memory/components/memory-studio-panel.es.js +1 -1
- package/dist/domains/memory/components/observation-detail-view.cjs.js +1 -1
- package/dist/domains/memory/components/observation-detail-view.es.js +1 -1
- package/dist/domains/metrics/components/card-action-buttons.cjs.js +1 -1
- package/dist/domains/metrics/components/card-action-buttons.es.js +1 -1
- package/dist/domains/metrics/components/date-range-selector.cjs.js +1 -1
- package/dist/domains/metrics/components/date-range-selector.es.js +1 -1
- package/dist/domains/metrics/components/kpi-card-view.cjs.js +1 -1
- package/dist/domains/metrics/components/kpi-card-view.es.js +1 -1
- package/dist/domains/metrics/components/latency-card-view.cjs.js +4 -4
- package/dist/domains/metrics/components/latency-card-view.es.js +4 -4
- package/dist/domains/metrics/components/memory-card-view.cjs.js +5 -5
- package/dist/domains/metrics/components/memory-card-view.es.js +5 -5
- package/dist/domains/metrics/components/model-usage-cost-card-view.cjs.js +2 -2
- package/dist/domains/metrics/components/model-usage-cost-card-view.es.js +2 -2
- package/dist/domains/metrics/components/scores-card-view.cjs.js +5 -5
- package/dist/domains/metrics/components/scores-card-view.es.js +5 -5
- package/dist/domains/metrics/components/token-usage-by-agent-card-view.cjs.js +4 -4
- package/dist/domains/metrics/components/token-usage-by-agent-card-view.es.js +4 -4
- package/dist/domains/metrics/components/token-usage-timeline-card-view.cjs.js +4 -4
- package/dist/domains/metrics/components/token-usage-timeline-card-view.es.js +4 -4
- package/dist/domains/metrics/components/traces-volume-card-view.cjs.js +4 -4
- package/dist/domains/metrics/components/traces-volume-card-view.es.js +4 -4
- package/dist/domains/traces/components/no-traces-info.cjs.js +1 -1
- package/dist/domains/traces/components/no-traces-info.es.js +1 -1
- package/dist/domains/traces/components/span-data-panel-view.cjs.js +19 -8
- package/dist/domains/traces/components/span-data-panel-view.cjs.js.map +1 -1
- package/dist/domains/traces/components/span-data-panel-view.es.js +20 -9
- package/dist/domains/traces/components/span-data-panel-view.es.js.map +1 -1
- package/dist/domains/traces/components/span-details-view.cjs.js +5 -3
- package/dist/domains/traces/components/span-details-view.cjs.js.map +1 -1
- package/dist/domains/traces/components/span-details-view.es.js +6 -4
- package/dist/domains/traces/components/span-details-view.es.js.map +1 -1
- package/dist/domains/traces/components/span-payload/span-error-renderer.cjs.js +3 -3
- package/dist/domains/traces/components/span-payload/span-error-renderer.es.js +3 -3
- package/dist/domains/traces/components/span-payload/span-input-renderers.cjs.js +5 -3
- package/dist/domains/traces/components/span-payload/span-input-renderers.cjs.js.map +1 -1
- package/dist/domains/traces/components/span-payload/span-input-renderers.es.js +5 -3
- package/dist/domains/traces/components/span-payload/span-input-renderers.es.js.map +1 -1
- package/dist/domains/traces/components/span-payload/span-output-renderers.cjs.js +13 -12
- package/dist/domains/traces/components/span-payload/span-output-renderers.cjs.js.map +1 -1
- package/dist/domains/traces/components/span-payload/span-output-renderers.es.js +7 -6
- package/dist/domains/traces/components/span-payload/span-output-renderers.es.js.map +1 -1
- package/dist/domains/traces/components/span-payload/span-payload-messages.cjs.js +1 -1
- package/dist/domains/traces/components/span-payload/span-payload-messages.es.js +1 -1
- package/dist/domains/traces/components/span-payload/span-payload-primitives.cjs.js +2 -2
- package/dist/domains/traces/components/span-payload/span-payload-primitives.es.js +2 -2
- package/dist/domains/traces/components/span-payload/span-payload-processor.cjs.js +79 -0
- package/dist/domains/traces/components/span-payload/span-payload-processor.cjs.js.map +1 -0
- package/dist/domains/traces/components/span-payload/span-payload-processor.d.ts +2 -0
- package/dist/domains/traces/components/span-payload/span-payload-processor.es.js +75 -0
- package/dist/domains/traces/components/span-payload/span-payload-processor.es.js.map +1 -0
- package/dist/domains/traces/components/span-payload/span-payload-registry.cjs.js +2 -0
- package/dist/domains/traces/components/span-payload/span-payload-registry.cjs.js.map +1 -1
- package/dist/domains/traces/components/span-payload/span-payload-registry.es.js +2 -1
- package/dist/domains/traces/components/span-payload/span-payload-registry.es.js.map +1 -1
- package/dist/domains/traces/components/span-payload/span-payload-section.cjs.js +2 -2
- package/dist/domains/traces/components/span-payload/span-payload-section.es.js +2 -2
- package/dist/domains/traces/components/span-payload/span-payload-tool.cjs.js +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 +85 -0
- package/dist/domains/traces/components/span-payload/span-processor-attributes.cjs.js.map +1 -0
- package/dist/domains/traces/components/span-payload/span-processor-attributes.d.ts +2 -0
- package/dist/domains/traces/components/span-payload/span-processor-attributes.es.js +81 -0
- package/dist/domains/traces/components/span-payload/span-processor-attributes.es.js.map +1 -0
- package/dist/domains/traces/components/span-payload.cjs.js +4 -0
- package/dist/domains/traces/components/span-payload.cjs.js.map +1 -1
- package/dist/domains/traces/components/span-payload.es.js +2 -0
- package/dist/domains/traces/components/span-payload.es.js.map +1 -1
- package/dist/domains/traces/components/span-summary-description.cjs.js +1 -1
- package/dist/domains/traces/components/span-summary-description.es.js +1 -1
- package/dist/domains/traces/components/span-timing-hover-card.cjs.js +1 -1
- package/dist/domains/traces/components/span-timing-hover-card.es.js +1 -1
- package/dist/domains/traces/components/span-token-usage.cjs.js +1 -1
- package/dist/domains/traces/components/span-token-usage.es.js +1 -1
- package/dist/domains/traces/components/thread-trace/thread-trace-details.cjs.js +1 -1
- package/dist/domains/traces/components/thread-trace/thread-trace-details.es.js +1 -1
- package/dist/domains/traces/components/thread-trace/thread-trace-messages.cjs.js +4 -4
- package/dist/domains/traces/components/thread-trace/thread-trace-messages.es.js +4 -4
- package/dist/domains/traces/components/thread-trace/thread-trace-spans.cjs.js +1 -1
- package/dist/domains/traces/components/thread-trace/thread-trace-spans.es.js +1 -1
- package/dist/domains/traces/components/trace-columns-menu.cjs.js +4 -4
- package/dist/domains/traces/components/trace-columns-menu.cjs.js.map +1 -1
- package/dist/domains/traces/components/trace-columns-menu.es.js +4 -4
- package/dist/domains/traces/components/trace-columns-menu.es.js.map +1 -1
- package/dist/domains/traces/components/trace-data-panel-view.cjs.js +12 -16
- 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 +12 -16
- package/dist/domains/traces/components/trace-data-panel-view.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 +8 -1
- package/dist/domains/traces/components/trace-summary-description.cjs.js.map +1 -1
- package/dist/domains/traces/components/trace-summary-description.es.js +8 -1
- package/dist/domains/traces/components/trace-summary-description.es.js.map +1 -1
- package/dist/domains/traces/components/trace-time-range-chip.cjs.js +2 -2
- package/dist/domains/traces/components/trace-time-range-chip.es.js +2 -2
- package/dist/domains/traces/components/traces-error-content.cjs.js +6 -6
- package/dist/domains/traces/components/traces-error-content.cjs.js.map +1 -1
- package/dist/domains/traces/components/traces-error-content.es.js +4 -4
- package/dist/domains/traces/components/traces-error-content.es.js.map +1 -1
- package/dist/domains/traces/components/traces-list-mode-toggle.cjs.js +1 -1
- package/dist/domains/traces/components/traces-list-mode-toggle.es.js +1 -1
- package/dist/domains/traces/components/traces-list-view.cjs.js +2 -2
- package/dist/domains/traces/components/traces-list-view.es.js +2 -2
- package/dist/domains/traces/components.cjs.js +4 -2
- package/dist/domains/traces/components.cjs.js.map +1 -1
- package/dist/domains/traces/components.es.js +2 -1
- package/dist/domains/traces/components.es.js.map +1 -1
- package/dist/domains/traces.cjs.js +4 -2
- package/dist/domains/traces.cjs.js.map +1 -1
- package/dist/domains/traces.es.js +2 -1
- package/dist/domains/traces.es.js.map +1 -1
- package/dist/{drawer-B6Ftum77.cjs → drawer-CmzM8WKh.cjs} +2 -2
- package/dist/{drawer-B6Ftum77.cjs.map → drawer-CmzM8WKh.cjs.map} +1 -1
- package/dist/{drawer-CnCsgToD.js → drawer-b_iqX4G0.js} +2 -2
- package/dist/{drawer-CnCsgToD.js.map → drawer-b_iqX4G0.js.map} +1 -1
- package/dist/ee/signals/components/entity-index-compact-grid.cjs.js +1 -1
- package/dist/ee/signals/components/entity-index-compact-grid.es.js +1 -1
- package/dist/ee/signals/components/entity-index-list.cjs.js +1 -1
- package/dist/ee/signals/components/entity-index-list.es.js +1 -1
- package/dist/ee/signals/components/signals-empty-state.cjs.js +2 -3
- package/dist/ee/signals/components/signals-empty-state.cjs.js.map +1 -1
- package/dist/ee/signals/components/signals-empty-state.es.js +2 -3
- package/dist/ee/signals/components/signals-empty-state.es.js.map +1 -1
- package/dist/ee/signals/components/trace-intelligence-entity-detail.cjs.js +1 -1
- package/dist/ee/signals/components/trace-intelligence-entity-detail.es.js +1 -1
- package/dist/ee/signals/components/trace-intelligence-entity-index.cjs.js +11 -12
- package/dist/ee/signals/components/trace-intelligence-entity-index.cjs.js.map +1 -1
- package/dist/ee/signals/components/trace-intelligence-entity-index.es.js +9 -10
- package/dist/ee/signals/components/trace-intelligence-entity-index.es.js.map +1 -1
- package/dist/ee/signals/examples-pager.cjs.js +1 -3
- package/dist/ee/signals/examples-pager.cjs.js.map +1 -1
- package/dist/ee/signals/examples-pager.es.js +1 -3
- package/dist/ee/signals/examples-pager.es.js.map +1 -1
- package/dist/ee/signals/flow-card.cjs.js +1 -1
- package/dist/ee/signals/flow-card.es.js +1 -1
- package/dist/ee/signals/noise-detail-panel.cjs.js +1 -1
- package/dist/ee/signals/noise-detail-panel.es.js +1 -1
- package/dist/ee/signals/sankey-signals.cjs.js +1 -1
- package/dist/ee/signals/sankey-signals.es.js +1 -1
- package/dist/ee/signals/settings/signal-definition-form-dialog.cjs.js +3 -3
- package/dist/ee/signals/settings/signal-definition-form-dialog.es.js +3 -3
- package/dist/ee/signals/settings/trace-signal-settings.cjs.js +2 -2
- package/dist/ee/signals/settings/trace-signal-settings.es.js +2 -2
- package/dist/ee/signals/signals-error-state.cjs.js +2 -2
- package/dist/ee/signals/signals-error-state.cjs.js.map +1 -1
- package/dist/ee/signals/signals-error-state.es.js +2 -2
- package/dist/ee/signals/signals-error-state.es.js.map +1 -1
- package/dist/ee/signals/snapshot-timeline.cjs.js +1 -2
- package/dist/ee/signals/snapshot-timeline.cjs.js.map +1 -1
- package/dist/ee/signals/snapshot-timeline.es.js +1 -2
- package/dist/ee/signals/snapshot-timeline.es.js.map +1 -1
- package/dist/ee/signals/theme-detail-panel.cjs.js +1 -1
- package/dist/ee/signals/theme-detail-panel.es.js +1 -1
- package/dist/ee/signals/theme-filter-banner.cjs.js +1 -1
- package/dist/ee/signals/theme-filter-banner.es.js +1 -1
- package/dist/ee/signals/trace-insight-view.cjs.js +3 -12
- package/dist/ee/signals/trace-insight-view.cjs.js.map +1 -1
- package/dist/ee/signals/trace-insight-view.es.js +3 -12
- package/dist/ee/signals/trace-insight-view.es.js.map +1 -1
- package/dist/ee/signals/view-mode-tab.cjs.js +1 -1
- package/dist/ee/signals/view-mode-tab.es.js +1 -1
- package/dist/ee/topics/components/topic-trace-summary-list.cjs.js +10 -19
- package/dist/ee/topics/components/topic-trace-summary-list.cjs.js.map +1 -1
- package/dist/ee/topics/components/topic-trace-summary-list.es.js +10 -19
- package/dist/ee/topics/components/topic-trace-summary-list.es.js.map +1 -1
- package/dist/{filter-bar-chip-B_k_vbip.cjs → filter-bar-chip-Y_lejyj9.cjs} +3 -3
- package/dist/{filter-bar-chip-B_k_vbip.cjs.map → filter-bar-chip-Y_lejyj9.cjs.map} +1 -1
- package/dist/{filter-bar-chip-BlvuAPve.js → filter-bar-chip-yvB9JA0r.js} +3 -3
- package/dist/{filter-bar-chip-BlvuAPve.js.map → filter-bar-chip-yvB9JA0r.js.map} +1 -1
- package/dist/hooks/use-fluid-hover.cjs.js +2 -4
- package/dist/hooks/use-fluid-hover.cjs.js.map +1 -1
- package/dist/hooks/use-fluid-hover.es.js +2 -4
- package/dist/hooks/use-fluid-hover.es.js.map +1 -1
- package/dist/{input-group-DaIV9Orp.cjs → input-group-Dt7PI7Bh.cjs} +2 -2
- package/dist/{input-group-DaIV9Orp.cjs.map → input-group-Dt7PI7Bh.cjs.map} +1 -1
- package/dist/{input-group-B-pskRGt.js → input-group-QyOyAe2m.js} +2 -2
- package/dist/{input-group-B-pskRGt.js.map → input-group-QyOyAe2m.js.map} +1 -1
- package/dist/layout/tabbed-container.cjs.js +6 -6
- package/dist/layout/tabbed-container.es.js +6 -6
- package/dist/{list-search-DhReauU5.cjs → list-search-CspJ7pQa.cjs} +2 -2
- package/dist/{list-search-DhReauU5.cjs.map → list-search-CspJ7pQa.cjs.map} +1 -1
- package/dist/{list-search-DK2yMiME.js → list-search-hX4N3d_Y.js} +2 -2
- package/dist/{list-search-DK2yMiME.js.map → list-search-hX4N3d_Y.js.map} +1 -1
- package/dist/{logs-data-list-DgoCLb6k.cjs → logs-data-list-BGJTRyO_.cjs} +2 -2
- package/dist/{logs-data-list-DgoCLb6k.cjs.map → logs-data-list-BGJTRyO_.cjs.map} +1 -1
- package/dist/{logs-data-list-B24gfDle.js → logs-data-list-XU1hCwI5.js} +2 -2
- package/dist/{logs-data-list-B24gfDle.js.map → logs-data-list-XU1hCwI5.js.map} +1 -1
- package/dist/{main-sidebar-DYfRxFn4.cjs → main-sidebar-link-active-CYZwvfPC.cjs} +5 -118
- package/dist/main-sidebar-link-active-CYZwvfPC.cjs.map +1 -0
- package/dist/{main-sidebar-Cf5G9iaC.js → main-sidebar-link-active-NW5N8nMT.js} +7 -119
- package/dist/main-sidebar-link-active-NW5N8nMT.js.map +1 -0
- package/dist/{markdown-renderer-BUqHHH4y.js → markdown-renderer-4cVz18hI.js} +3 -3
- package/dist/{markdown-renderer-BUqHHH4y.js.map → markdown-renderer-4cVz18hI.js.map} +1 -1
- package/dist/{markdown-renderer-CZLwgva-.cjs → markdown-renderer-zbO5SMQg.cjs} +3 -3
- package/dist/{markdown-renderer-CZLwgva-.cjs.map → markdown-renderer-zbO5SMQg.cjs.map} +1 -1
- package/dist/{metrics-card-CN4VRQQJ.js → metrics-card-Bzm6m1dy.js} +3 -3
- package/dist/{metrics-card-CN4VRQQJ.js.map → metrics-card-Bzm6m1dy.js.map} +1 -1
- package/dist/{metrics-card-DStXI6yn.cjs → metrics-card-DCCHIG-z.cjs} +3 -3
- package/dist/{metrics-card-DStXI6yn.cjs.map → metrics-card-DCCHIG-z.cjs.map} +1 -1
- package/dist/{metrics-kpi-card-CvOXyEGn.cjs → metrics-kpi-card-Bhb4R4z0.cjs} +2 -2
- package/dist/{metrics-kpi-card-CvOXyEGn.cjs.map → metrics-kpi-card-Bhb4R4z0.cjs.map} +1 -1
- package/dist/{metrics-kpi-card-C-XLN_Us.js → metrics-kpi-card-BrnFhFQm.js} +2 -2
- package/dist/{metrics-kpi-card-C-XLN_Us.js.map → metrics-kpi-card-BrnFhFQm.js.map} +1 -1
- package/dist/new/layout/app-shell.cjs.js +13 -0
- package/dist/new/layout/app-shell.cjs.js.map +1 -1
- package/dist/new/layout/app-shell.es.js +13 -1
- package/dist/new/layout/app-shell.es.js.map +1 -1
- package/dist/new/layout/page-header.cjs.js +1 -1
- package/dist/new/layout/page-header.es.js +1 -1
- package/dist/new/settings.cjs.js +42 -2
- package/dist/new/settings.cjs.js.map +1 -1
- package/dist/new/settings.es.js +43 -3
- package/dist/new/settings.es.js.map +1 -1
- package/dist/new/sidebar.cjs.js +33 -33
- package/dist/new/sidebar.cjs.js.map +1 -1
- package/dist/new/sidebar.es.js +3 -3
- package/dist/new/sidebar.es.js.map +1 -1
- package/dist/{page-header-CSigVThQ.js → page-header-CyXAezlZ.js} +25 -26
- package/dist/page-header-CyXAezlZ.js.map +1 -0
- package/dist/{page-header-DzEEkOca.cjs → page-header-Dk3s3XtC.cjs} +25 -26
- package/dist/page-header-Dk3s3XtC.cjs.map +1 -0
- package/dist/primitives/control-size.cjs.js +1 -2
- package/dist/primitives/control-size.cjs.js.map +1 -1
- package/dist/primitives/control-size.es.js +1 -2
- package/dist/primitives/control-size.es.js.map +1 -1
- package/dist/primitives/form-element.cjs.js +0 -2
- package/dist/primitives/form-element.cjs.js.map +1 -1
- package/dist/primitives/form-element.es.js +1 -2
- package/dist/primitives/form-element.es.js.map +1 -1
- package/dist/primitives/menu-item.cjs.js +1 -1
- package/dist/primitives/menu-item.cjs.js.map +1 -1
- package/dist/primitives/menu-item.es.js +1 -1
- package/dist/primitives/menu-item.es.js.map +1 -1
- package/dist/primitives/trigger-button.cjs.js +1 -1
- package/dist/primitives/trigger-button.es.js +1 -1
- package/dist/{property-filter-applied-uYr-sCdm.js → property-filter-applied-CVVhhWGf.js} +2 -2
- package/dist/{property-filter-applied-uYr-sCdm.js.map → property-filter-applied-CVVhhWGf.js.map} +1 -1
- package/dist/{property-filter-applied-DxSZN3Om.cjs → property-filter-applied-DEeqrI0g.cjs} +2 -2
- package/dist/{property-filter-applied-DxSZN3Om.cjs.map → property-filter-applied-DEeqrI0g.cjs.map} +1 -1
- package/dist/resize/panel-drawer.cjs.js +1 -1
- package/dist/resize/panel-drawer.es.js +1 -1
- package/dist/{search-field-block-Bg9GPPaA.cjs → search-field-block-D34NmyvF.cjs} +2 -2
- package/dist/{search-field-block-Bg9GPPaA.cjs.map → search-field-block-D34NmyvF.cjs.map} +1 -1
- package/dist/{search-field-block-B0twxGWI.js → search-field-block-DCWcRx4k.js} +2 -2
- package/dist/{search-field-block-B0twxGWI.js.map → search-field-block-DCWcRx4k.js.map} +1 -1
- package/dist/{select-65j5NjtJ.cjs → select-DjXJeDlO.cjs} +2 -2
- package/dist/select-DjXJeDlO.cjs.map +1 -0
- package/dist/{select-BiY-SoMJ.js → select-TslOr65J.js} +2 -2
- package/dist/select-TslOr65J.js.map +1 -0
- package/dist/{select-field-block-D_b9N7od.js → select-field-block-660lYYtx.js} +2 -2
- package/dist/{select-field-block-D_b9N7od.js.map → select-field-block-660lYYtx.js.map} +1 -1
- package/dist/{select-field-block-CZbN1w__.cjs → select-field-block-BPSwJ76v.cjs} +2 -2
- package/dist/{select-field-block-CZbN1w__.cjs.map → select-field-block-BPSwJ76v.cjs.map} +1 -1
- package/dist/{span-payload-primitives-DlIOpCII.js → span-payload-primitives-DIIZ42fv.js} +3 -3
- package/dist/{span-payload-primitives-DlIOpCII.js.map → span-payload-primitives-DIIZ42fv.js.map} +1 -1
- package/dist/{span-payload-primitives-BjBTICfq.cjs → span-payload-primitives-c6C46Zp1.cjs} +3 -3
- package/dist/{span-payload-primitives-BjBTICfq.cjs.map → span-payload-primitives-c6C46Zp1.cjs.map} +1 -1
- package/dist/src/domains/auth/components/permission-denied.d.ts +6 -0
- package/dist/src/{ds/components/PermissionDenied → domains/auth/components}/permission-denied.stories.d.ts +1 -3
- package/dist/src/domains/auth/components/session-expired.d.ts +5 -0
- package/dist/src/{ds/components/SessionExpired → domains/auth/components}/session-expired.stories.d.ts +1 -2
- package/dist/src/domains/auth/services/sso-login.d.ts +7 -0
- package/dist/src/domains/logs/components/logs-error-content.d.ts +2 -2
- package/dist/src/domains/traces/components/index.d.ts +0 -1
- package/dist/src/domains/traces/components/span-payload/index.d.ts +2 -0
- package/dist/src/domains/traces/components/span-payload/span-payload-processor.d.ts +10 -0
- package/dist/src/domains/traces/components/span-payload/span-payload-registry.d.ts +1 -0
- package/dist/src/domains/traces/components/span-payload/span-payload.stories.d.ts +2 -0
- package/dist/src/domains/traces/components/span-payload/span-processor-attributes.d.ts +10 -0
- package/dist/src/domains/traces/components/trace-data-panel-view.stories.d.ts +94 -0
- package/dist/src/domains/traces/components/trace-summary-description.d.ts +1 -0
- package/dist/src/domains/traces/components/traces-error-content.d.ts +2 -2
- package/dist/src/ds/components/Button/Button.d.ts +1 -1
- package/dist/src/ds/components/ButtonsGroup/buttons-group.stories.d.ts +2 -2
- package/dist/src/ds/components/Columns/column-root.d.ts +1 -3
- package/dist/src/ds/components/Columns/columns.stories.d.ts +0 -1
- package/dist/src/ds/components/Columns/index.d.ts +0 -1
- package/dist/src/ds/components/Combobox/combobox-styles.d.ts +1 -2
- package/dist/src/ds/components/DataKeysAndValues/data-keys-and-values-root.d.ts +1 -2
- package/dist/src/ds/components/DataKeysAndValues/data-keys-and-values.stories.d.ts +1 -2
- package/dist/src/ds/components/EmptyState/EmptyState.d.ts +6 -2
- package/dist/src/ds/components/EmptyState/empty-state.stories.d.ts +1 -0
- package/dist/src/ds/components/PageLayout/page-layout.d.ts +8 -3
- package/dist/src/ds/components/PageLayout/page-layout.stories.d.ts +3 -0
- package/dist/src/ds/components/Select/select.d.ts +3 -4
- package/dist/src/ds/components/Select/select.stories.d.ts +2 -2
- package/dist/src/ds/new/layout/app-shell/index.d.ts +1 -0
- package/dist/src/ds/new/layout/app-shell/main-card.d.ts +5 -0
- package/dist/src/ds/new/settings/index.d.ts +1 -1
- package/dist/src/ds/new/settings/settings.stories.d.ts +2 -0
- package/dist/src/ds/primitives/control-size.d.ts +1 -1
- package/dist/src/ds/primitives/form-element.d.ts +0 -1
- package/dist/src/hooks/stories/browser/use-autoscroll.stories.d.ts +22 -0
- package/dist/src/hooks/stories/browser/use-copy-to-clipboard.stories.d.ts +22 -0
- package/dist/src/hooks/stories/browser/use-fluid-hover.stories.d.ts +17 -0
- package/dist/src/hooks/stories/browser/use-in-view.stories.d.ts +17 -0
- package/dist/src/hooks/stories/browser/use-is-apple-platform.stories.d.ts +17 -0
- package/dist/src/hooks/stories/browser/use-is-mobile.stories.d.ts +32 -0
- package/dist/src/hooks/stories/browser/use-isomorphic-layout-effect.stories.d.ts +32 -0
- package/dist/src/hooks/stories/browser/use-keyboard-shortcut-label.stories.d.ts +22 -0
- package/dist/src/hooks/stories/browser/use-register-fluid-hover-item.stories.d.ts +17 -0
- package/dist/src/hooks/stories/environment/use-custom-environment-variables-editor.stories.d.ts +17 -0
- package/dist/src/hooks/stories/environment/use-environment-variables-editor.stories.d.ts +17 -0
- package/dist/src/hooks/stories/state/use-debounced-value.stories.d.ts +32 -0
- package/dist/src/hooks/stories/state/use-expiring-local-storage-state.stories.d.ts +17 -0
- package/dist/src/hooks/stories/state/use-local-storage-state.stories.d.ts +17 -0
- package/dist/src/hooks/stories/text/use-is-clamped.stories.d.ts +17 -0
- package/dist/src/hooks/stories/text/use-measured-auto-height.stories.d.ts +17 -0
- package/dist/src/hooks/stories/text/use-scroll-to-first-highlight.stories.d.ts +17 -0
- package/dist/src/hooks/stories/text/use-text-highlight.stories.d.ts +17 -0
- package/dist/src/lib/keyboard/use-keyboard-scope-depth.stories.d.ts +17 -0
- package/dist/src/lib/keyboard/use-keyboard-shortcuts-context.stories.d.ts +17 -0
- package/dist/src/lib/keyboard/use-table-keydown.stories.d.ts +15 -0
- package/dist/style.css +28 -91
- package/dist/{tabs-content-DMrffE9p.js → tabs-content-7ODUUdQ0.js} +2 -2
- package/dist/{tabs-content-DMrffE9p.js.map → tabs-content-7ODUUdQ0.js.map} +1 -1
- package/dist/{tabs-content-CuUlcS67.cjs → tabs-content-DlCJoQUW.cjs} +2 -2
- package/dist/{tabs-content-CuUlcS67.cjs.map → tabs-content-DlCJoQUW.cjs.map} +1 -1
- package/dist/{tabs-root-DrK1hxeV.cjs → tabs-root-COCL6jcx.cjs} +2 -2
- package/dist/{tabs-root-DrK1hxeV.cjs.map → tabs-root-COCL6jcx.cjs.map} +1 -1
- package/dist/{tabs-root-B2sdkQ3A.js → tabs-root-UNPxoGhW.js} +2 -2
- package/dist/{tabs-root-B2sdkQ3A.js.map → tabs-root-UNPxoGhW.js.map} +1 -1
- package/dist/{tabs-tab-ClmulJmM.cjs → tabs-tab-DFmRMdi3.cjs} +2 -2
- package/dist/{tabs-tab-ClmulJmM.cjs.map → tabs-tab-DFmRMdi3.cjs.map} +1 -1
- package/dist/{tabs-tab-u6LS5twu.js → tabs-tab-DluwCnDF.js} +2 -2
- package/dist/{tabs-tab-u6LS5twu.js.map → tabs-tab-DluwCnDF.js.map} +1 -1
- package/dist/{time-picker-PXFCgAuR.cjs → time-picker-BokshW_l.cjs} +2 -2
- package/dist/{time-picker-PXFCgAuR.cjs.map → time-picker-BokshW_l.cjs.map} +1 -1
- package/dist/{time-picker-DMroqHbw.js → time-picker-D0GksHc0.js} +2 -2
- package/dist/{time-picker-DMroqHbw.js.map → time-picker-D0GksHc0.js.map} +1 -1
- package/dist/{tool-approval-DzOGIKRh.js → tool-approval-DXUFyrSl.js} +2 -2
- package/dist/{tool-approval-DzOGIKRh.js.map → tool-approval-DXUFyrSl.js.map} +1 -1
- package/dist/{tool-approval-DYX_ZNWc.cjs → tool-approval-LIy1nZZJ.cjs} +2 -2
- package/dist/{tool-approval-DYX_ZNWc.cjs.map → tool-approval-LIy1nZZJ.cjs.map} +1 -1
- package/dist/{tool-call-HNNRcirD.js → tool-call-Bs-9Cah5.js} +2 -2
- package/dist/{tool-call-HNNRcirD.js.map → tool-call-Bs-9Cah5.js.map} +1 -1
- package/dist/{tool-call-vZeZ5XT5.cjs → tool-call-C0JeHe8Z.cjs} +2 -2
- package/dist/{tool-call-vZeZ5XT5.cjs.map → tool-call-C0JeHe8Z.cjs.map} +1 -1
- package/dist/{traces-data-list-DHrC158-.js → traces-data-list-Cjy5a-1f.js} +3 -3
- package/dist/{traces-data-list-DHrC158-.js.map → traces-data-list-Cjy5a-1f.js.map} +1 -1
- package/dist/{traces-data-list-DNOtQze4.cjs → traces-data-list-DLeKSbaZ.cjs} +3 -3
- package/dist/{traces-data-list-DNOtQze4.cjs.map → traces-data-list-DLeKSbaZ.cjs.map} +1 -1
- package/package.json +13 -13
- package/dist/Button-KUj0U-5I.js.map +0 -1
- package/dist/Button-MMZPEb_q.cjs.map +0 -1
- package/dist/Card-B_buJ5yF.js.map +0 -1
- package/dist/Card-DwGasv0K.cjs.map +0 -1
- package/dist/EmptyState-B6cyZw6m.js.map +0 -1
- package/dist/EmptyState-DiSP6UIy.cjs.map +0 -1
- package/dist/ErrorState-B0839u-q.cjs +0 -21
- package/dist/ErrorState-B0839u-q.cjs.map +0 -1
- package/dist/ErrorState-HyRJdaA2.js +0 -19
- package/dist/ErrorState-HyRJdaA2.js.map +0 -1
- package/dist/PermissionDenied-CTqnE57B.js +0 -27
- package/dist/PermissionDenied-CTqnE57B.js.map +0 -1
- package/dist/PermissionDenied-fdVmTjjf.cjs +0 -29
- package/dist/PermissionDenied-fdVmTjjf.cjs.map +0 -1
- package/dist/SessionExpired-B9e1Kx4I.js +0 -44
- package/dist/SessionExpired-B9e1Kx4I.js.map +0 -1
- package/dist/SessionExpired-GSQkcV9f.cjs +0 -46
- package/dist/SessionExpired-GSQkcV9f.cjs.map +0 -1
- package/dist/combobox-styles-CSsS2LEx.cjs.map +0 -1
- package/dist/combobox-styles-iuJUkJEQ.js.map +0 -1
- package/dist/components/DataFilter.cjs.js +0 -173
- package/dist/components/DataFilter.cjs.js.map +0 -1
- package/dist/components/DataFilter.d.ts +0 -2
- package/dist/components/DataFilter.es.js +0 -169
- package/dist/components/DataFilter.es.js.map +0 -1
- package/dist/components/ErrorState.cjs.js +0 -10
- package/dist/components/ErrorState.cjs.js.map +0 -1
- package/dist/components/ErrorState.d.ts +0 -2
- package/dist/components/ErrorState.es.js +0 -2
- package/dist/components/ErrorState.es.js.map +0 -1
- package/dist/components/PermissionDenied.cjs.js +0 -10
- package/dist/components/PermissionDenied.cjs.js.map +0 -1
- package/dist/components/PermissionDenied.d.ts +0 -2
- package/dist/components/PermissionDenied.es.js +0 -2
- package/dist/components/PermissionDenied.es.js.map +0 -1
- package/dist/components/Sections.cjs.js +0 -13
- package/dist/components/Sections.cjs.js.map +0 -1
- package/dist/components/Sections.d.ts +0 -2
- package/dist/components/Sections.es.js +0 -9
- package/dist/components/Sections.es.js.map +0 -1
- package/dist/components/SessionExpired.cjs.js +0 -10
- package/dist/components/SessionExpired.cjs.js.map +0 -1
- package/dist/components/SessionExpired.d.ts +0 -2
- package/dist/components/SessionExpired.es.js +0 -2
- package/dist/components/SessionExpired.es.js.map +0 -1
- package/dist/components/SettingsLayout.cjs.js +0 -10
- package/dist/components/SettingsLayout.cjs.js.map +0 -1
- package/dist/components/SettingsLayout.d.ts +0 -2
- package/dist/components/SettingsLayout.es.js +0 -2
- package/dist/components/SettingsLayout.es.js.map +0 -1
- package/dist/data-keys-and-values-BduKvvC5.cjs.map +0 -1
- package/dist/data-keys-and-values-DhC4U4Yl.js.map +0 -1
- package/dist/data-list-Cn0Ls4l2.js.map +0 -1
- package/dist/data-list-DSbuTWLI.cjs.map +0 -1
- package/dist/domains/traces/components/trace-keys-and-values.cjs.js +0 -70
- package/dist/domains/traces/components/trace-keys-and-values.cjs.js.map +0 -1
- package/dist/domains/traces/components/trace-keys-and-values.d.ts +0 -2
- package/dist/domains/traces/components/trace-keys-and-values.es.js +0 -66
- package/dist/domains/traces/components/trace-keys-and-values.es.js.map +0 -1
- package/dist/main-sidebar-Cf5G9iaC.js.map +0 -1
- package/dist/main-sidebar-DYfRxFn4.cjs.map +0 -1
- package/dist/page-header-CSigVThQ.js.map +0 -1
- package/dist/page-header-DzEEkOca.cjs.map +0 -1
- package/dist/select-65j5NjtJ.cjs.map +0 -1
- package/dist/select-BiY-SoMJ.js.map +0 -1
- package/dist/settings-layout-BGvMSClL.cjs +0 -49
- package/dist/settings-layout-BGvMSClL.cjs.map +0 -1
- package/dist/settings-layout-DA-JWqW3.js +0 -47
- package/dist/settings-layout-DA-JWqW3.js.map +0 -1
- package/dist/src/domains/traces/components/trace-keys-and-values.d.ts +0 -24
- package/dist/src/domains/traces/components/trace-keys-and-values.stories.d.ts +0 -28
- package/dist/src/ds/components/Columns/multi-column.d.ts +0 -7
- package/dist/src/ds/components/DataFilter/index.d.ts +0 -2
- package/dist/src/ds/components/DataFilter/select-data-filter.d.ts +0 -40
- package/dist/src/ds/components/DataFilter/select-data-filter.stories.d.ts +0 -8
- package/dist/src/ds/components/ErrorState/ErrorState.d.ts +0 -8
- package/dist/src/ds/components/ErrorState/error-state.stories.d.ts +0 -8
- package/dist/src/ds/components/ErrorState/index.d.ts +0 -2
- package/dist/src/ds/components/PermissionDenied/PermissionDenied.d.ts +0 -16
- package/dist/src/ds/components/PermissionDenied/index.d.ts +0 -2
- package/dist/src/ds/components/Sections/index.d.ts +0 -1
- package/dist/src/ds/components/Sections/sections.d.ts +0 -5
- package/dist/src/ds/components/Sections/sections.stories.d.ts +0 -8
- package/dist/src/ds/components/SessionExpired/SessionExpired.d.ts +0 -11
- package/dist/src/ds/components/SessionExpired/index.d.ts +0 -2
- package/dist/src/ds/components/SettingsLayout/index.d.ts +0 -1
- package/dist/src/ds/components/SettingsLayout/settings-layout.stories.d.ts +0 -52
- /package/dist/src/ds/{components/SettingsLayout → new/settings}/settings-layout.d.ts +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"data-panel-Y7wD0xlR.js","sources":["../src/ds/components/DataPanel/data-panel-close-button.tsx","../src/ds/components/DataPanel/data-panel-content.tsx","../src/ds/components/DataPanel/data-panel-copy-id.tsx","../src/ds/components/DataPanel/data-panel-header.tsx","../src/ds/components/DataPanel/data-panel-header-actions.tsx","../src/ds/components/DataPanel/data-panel-header-content.tsx","../src/ds/components/DataPanel/data-panel-heading.tsx","../src/ds/components/DataPanel/data-panel-loading-data.tsx","../src/ds/components/DataPanel/data-panel-metadata.tsx","../src/ds/components/DataPanel/data-panel-next-prev-nav.tsx","../src/ds/components/DataPanel/data-panel-no-data.tsx","../src/ds/components/DataPanel/data-panel-root.tsx","../src/ds/components/DataPanel/data-panel.tsx"],"sourcesContent":["import { ArrowLeftIcon, XIcon } from 'lucide-react';\nimport { Button } from '@/ds/components/Button';\nimport type { ButtonProps } from '@/ds/components/Button';\nimport { cn } from '@/lib/utils';\n\nexport interface DataPanelCloseButtonProps {\n onClick: () => void;\n tooltip?: string;\n /** Accessible name; override it when the arrow leads somewhere other than \"closed\" (e.g. back to a parent view). */\n label?: string;\n /**\n * `arrow` (default) is the leading \"leave this panel\" control, rendered first in the header.\n * `x` dismisses a nested column in place and belongs in `HeaderActions`, on the right.\n */\n icon?: 'arrow' | 'x';\n className?: string;\n variant?: ButtonProps['variant'];\n}\n\nexport function DataPanelCloseButton({\n onClick,\n tooltip = 'Close panel',\n label = 'Close Panel',\n icon = 'arrow',\n className,\n variant = 'ghost',\n}: DataPanelCloseButtonProps) {\n return (\n <Button\n size=\"sm\"\n variant={variant}\n onClick={onClick}\n aria-label={label}\n tooltip={tooltip}\n className={cn('shrink-0', className)}\n >\n {icon === 'x' ? <XIcon /> : <ArrowLeftIcon />}\n </Button>\n );\n}\n","import { Drawer as DrawerPrimitive } from '@base-ui/react/drawer';\nimport type { ReactNode, Ref } from 'react';\n\nimport { cn } from '@/lib/utils';\n\nexport interface DataPanelContentProps {\n children: ReactNode;\n ref?: Ref<HTMLDivElement>;\n /** Layout overrides (e.g. padding) for the scroll container. */\n className?: string;\n}\n\n// `DrawerPrimitive.Content` marks the region as swipe-exempt so scrolling or\n// selecting text inside the panel body doesn't start a swipe-to-dismiss.\nexport function DataPanelContent({ children, ref, className }: DataPanelContentProps) {\n return (\n <DrawerPrimitive.Content ref={ref} className={cn('min-h-0 flex-1 overflow-y-auto px-2 py-3', className)}>\n {children}\n </DrawerPrimitive.Content>\n );\n}\n","import { useState } from 'react';\nimport { Button } from '@/ds/components/Button';\nimport { Tooltip, TooltipContent, TooltipTrigger } from '@/ds/components/Tooltip';\nimport { useCopyToClipboard } from '@/hooks/use-copy-to-clipboard';\nimport { truncateString } from '@/lib/truncate-string';\n\nexport interface DataPanelCopyIdProps {\n id: string;\n /** Characters kept before the ellipsis. Defaults to 12. */\n maxLength?: number;\n}\n\n/**\n * Truncated identifier rendered inline in a `DataPanel.Heading`; clicking copies the full value.\n */\nexport function DataPanelCopyId({ id, maxLength = 12 }: DataPanelCopyIdProps) {\n const { isCopied, handleCopy } = useCopyToClipboard({ text: id, showToast: false });\n const [open, setOpen] = useState(false);\n\n return (\n <Tooltip open={isCopied || open} onOpenChange={setOpen}>\n <TooltipTrigger\n render={\n <Button type=\"button\" variant=\"ghost\" size=\"sm\" onClick={handleCopy}>\n {truncateString(id, maxLength)}\n </Button>\n }\n />\n <TooltipContent>{isCopied ? 'Copied to clipboard' : 'Copy to clipboard'}</TooltipContent>\n </Tooltip>\n );\n}\n","import { cn } from '@/lib/utils';\n\nexport interface DataPanelHeaderProps {\n className?: string;\n children: React.ReactNode;\n}\n\nexport function DataPanelHeader({ className, children }: DataPanelHeaderProps) {\n return (\n <div\n className={cn(\n // Same box as the app `Header`. Single row: leading `CloseButton`, then the heading\n // (+ inline metadata via `HeaderContent`), then `HeaderActions` pushed to the right edge.\n // `gap-0.5` is the slight gap between the close arrow and the heading.\n 'flex min-h-header-default w-full items-center gap-0.5 px-2 py-1.5',\n // Bottom border only when something follows the header (i.e. the panel is expanded).\n // When the panel is collapsed and the header is the only child, the border auto-hides.\n 'not-last:border-b not-last:border-border',\n className,\n )}\n >\n {children}\n </div>\n );\n}\n","export interface DataPanelHeaderActionsProps {\n children: React.ReactNode;\n}\n\n/**\n * Right-side action slot of a `DataPanel.Header`. Mirrors `HeaderAction` with `gap-2`\n * (these are `size=\"sm\"` controls, like the page header actions) and wraps when the panel is too narrow.\n */\nexport function DataPanelHeaderActions({ children }: DataPanelHeaderActionsProps) {\n return <div className=\"ml-auto flex shrink-0 flex-wrap items-center justify-end gap-2 self-center\">{children}</div>;\n}\n","import { Children } from 'react';\n\nexport interface DataPanelHeaderContentProps {\n children: React.ReactNode;\n}\n\n/**\n * Left block of a `DataPanel.Header`: heading followed inline by optional `Metadata`, truncated when too long.\n * A vertical separator is rendered between the heading and the metadata when both are present.\n */\nexport function DataPanelHeaderContent({ children }: DataPanelHeaderContentProps) {\n const [heading, ...metadata] = Children.toArray(children);\n\n return (\n <div className=\"flex min-w-0 flex-1 items-center gap-1 overflow-hidden\">\n {heading}\n {metadata.length > 0 && (\n <>\n <div role=\"separator\" aria-orientation=\"vertical\" className=\"mx-1 h-4 w-px shrink-0 bg-border-strong\" />\n {metadata}\n </>\n )}\n </div>\n );\n}\n","import { controlSizeClasses } from '@/ds/primitives/control-size';\nimport { cn } from '@/lib/utils';\n\nexport interface DataPanelHeadingProps {\n className?: string;\n children: React.ReactNode;\n}\n\nexport function DataPanelHeading({ className, children }: DataPanelHeadingProps) {\n return (\n <h3\n className={cn(\n // Same recipe as a current `Crumb` in the page header, with tight horizontal spacing:\n // inline children like `TraceIdButton` carry their own padding, so `gap-1` + `px-1`\n // is enough to keep the title close to the leading close arrow and the inline metadata.\n // `shrink-0`: the heading keeps its text; the inline `Metadata` row is what gets clipped.\n 'inline-flex max-w-full min-w-0 shrink-0 items-center gap-1 rounded-full px-1',\n controlSizeClasses.sm,\n 'cursor-default text-foreground [&>b]:text-caption [&>b]:text-muted-foreground',\n className,\n )}\n >\n {children}\n </h3>\n );\n}\n","import type { ReactNode } from 'react';\nimport { Spinner } from '@/ds/components/Spinner';\n\nexport interface DataPanelLoadingDataProps {\n children?: ReactNode;\n}\n\nexport function DataPanelLoadingData({ children }: DataPanelLoadingDataProps) {\n return (\n <div className=\"flex min-h-32 items-center justify-center gap-2 px-3 py-4 text-caption text-placeholder\">\n <Spinner size=\"sm\" variant=\"pulse\" className=\"text-placeholder\" /> {children ?? 'Loading...'}\n </div>\n );\n}\n","import { Tooltip, TooltipContent, TooltipTrigger } from '@/ds/components/Tooltip';\nimport { Icon } from '@/ds/icons/Icon';\nimport { controlSizeClasses } from '@/ds/primitives/control-size';\nimport { controlStateColorTransition, transitions } from '@/ds/primitives/transitions';\nimport { quietTextHover } from '@/ds/primitives/typography';\nimport { cn } from '@/lib/utils';\n\nexport interface DataPanelMetadataProps {\n children: React.ReactNode;\n}\n\n/** Row of `Meta` pills next to a `DataPanel.Heading`. Never wraps; overflowing pills are clipped. */\nexport function DataPanelMetadata({ children }: DataPanelMetadataProps) {\n return <ul className=\"flex min-w-0 flex-nowrap items-center gap-0.5 overflow-hidden\">{children}</ul>;\n}\n\nexport interface DataPanelMetaProps extends Omit<React.HTMLAttributes<HTMLElement>, 'children' | 'title'> {\n /** Element/component to render as (e.g. a router `Link`). Defaults to `span`. */\n as?: React.ElementType;\n href?: string;\n to?: string;\n /** Prefix icon (bare SVG). */\n icon?: React.ReactNode;\n /** Shown on hover/focus; for a static (non-link) meta a string tooltip also becomes the accessible name. */\n tooltip?: React.ReactNode;\n children: React.ReactNode;\n 'data-testid'?: string;\n}\n\nexport function DataPanelMeta({ as, icon, tooltip, children, className, ...props }: DataPanelMetaProps) {\n const Root = as ?? 'span';\n const isInteractive = Boolean(as || props.href || props.to || props.onClick);\n\n const hasTooltip = tooltip != null;\n const root = (\n <Root\n aria-label={!isInteractive && typeof tooltip === 'string' ? tooltip : undefined}\n tabIndex={!isInteractive && hasTooltip ? 0 : undefined}\n className={cn(\n // Same box as a `size=\"sm\"` ghost `Button` (e.g. `TraceIdButton`), so pills line up\n // with the heading and the trace ID on the same header row.\n 'inline-flex min-w-0 items-center gap-1.5 overflow-hidden rounded-full px-2',\n controlSizeClasses.sm,\n controlStateColorTransition,\n isInteractive\n ? cn(quietTextHover, 'cursor-pointer hover:bg-fill-subtle active:bg-fill')\n : cn('text-muted-foreground', hasTooltip && 'cursor-help'),\n className,\n )}\n {...props}\n >\n {icon && (\n <Icon size=\"xs\" className={cn('shrink-0 opacity-50 group-hover:opacity-100', transitions.opacity)}>\n {icon}\n </Icon>\n )}\n <span className=\"min-w-0 truncate\">{children}</span>\n </Root>\n );\n\n return (\n <li className=\"group flex h-control-sm min-w-0 shrink-0 items-center\">\n {!hasTooltip ? (\n root\n ) : (\n <Tooltip>\n <TooltipTrigger render={root} />\n <TooltipContent>{tooltip}</TooltipContent>\n </Tooltip>\n )}\n </li>\n );\n}\n","import { ArrowDownIcon, ArrowUpIcon } from 'lucide-react';\nimport { Button } from '@/ds/components/Button';\nimport type { ButtonProps } from '@/ds/components/Button';\n\nexport interface DataPanelNextPrevNavProps {\n onPrevious?: () => void;\n onNext?: () => void;\n previousLabel?: string;\n nextLabel?: string;\n variant?: ButtonProps['variant'];\n}\n\n/** Two independent previous/next buttons, laid out by the parent `HeaderActions` gap. */\nexport function DataPanelNextPrevNav({\n onPrevious,\n onNext,\n previousLabel = 'Go to previous',\n nextLabel = 'Go to next',\n variant = 'ghost',\n}: DataPanelNextPrevNavProps) {\n return (\n <>\n <Button size=\"sm\" variant={variant} tooltip={previousLabel} onClick={onPrevious} disabled={!onPrevious}>\n <ArrowUpIcon />\n </Button>\n <Button size=\"sm\" variant={variant} tooltip={nextLabel} onClick={onNext} disabled={!onNext}>\n <ArrowDownIcon />\n </Button>\n </>\n );\n}\n","export interface DataPanelNoDataProps {\n children?: React.ReactNode;\n}\n\nexport function DataPanelNoData({ children }: DataPanelNoDataProps) {\n return <p className=\"px-3 py-4 text-caption text-placeholder\">{children ?? 'No data found.'}</p>;\n}\n","import { Drawer as DrawerPrimitive } from '@base-ui/react/drawer';\nimport * as React from 'react';\n\nimport { PortalContainerProvider } from '@/ds/primitives/portal-container';\nimport { cn } from '@/lib/utils';\n\n// `drawer-popup` / `drawer-backdrop` carry the slide + fade transitions.\nimport '../Drawer/drawer.css';\n\nexport interface DataPanelProps {\n /** Whether the panel is shown. The panel is always a modal Drawer dialog. */\n open: boolean;\n /** Called when the user dismisses the panel (close button, Escape, backdrop, swipe). */\n onClose?: () => void;\n /** Accessible dialog name (screen-reader only; the visible title comes from `DataPanel.Heading`). */\n title: string;\n /** Accessible dialog description (screen-reader only). */\n description?: string;\n /**\n * Elevation level when several sibling panels are open at once (not nested in\n * the React tree, so Base UI's own stacking doesn't apply). A deeper panel is\n * narrower so the one beneath peeks out on the left. Siblings stack in mount\n * order: render the deeper panel after the shallower one.\n */\n depth?: 1 | 2 | 3;\n /**\n * Drawer width. `md` (default) is a narrow detail panel whose width shrinks\n * with `depth`. `half`/`wide`/`full` are for multi-column content (e.g. the\n * trace panel); each `depth` level trims them by a small fixed amount so a\n * same-size parent still peeks out beneath. Changing `size` while open\n * animates the width.\n */\n size?: 'md' | 'half' | 'wide' | 'full';\n children: React.ReactNode;\n className?: string;\n}\n\nconst DEPTH_WIDTH = { 1: 'w-xl', 2: 'w-lg', 3: 'w-md' } as const;\nconst SIZE_WIDTH = { half: 'w-1/2', wide: 'w-4/5', full: 'w-full' } as const;\nconst SIZE_PERCENT = { half: '50%', wide: '80%', full: '100%' } as const;\n// Each extra depth level trims a stacked non-`md` panel so the parent peeks out beneath it.\nconst DEPTH_PEEK_REM = 1.5;\n\nexport function DataPanelRoot({\n open,\n onClose,\n title,\n description,\n depth = 1,\n size = 'md',\n children,\n className,\n}: DataPanelProps) {\n // Swipe-exempt mount point for nested popups (Select, DropdownMenu, …) so they\n // stay inside Base UI's modal focus region and don't start a drawer swipe on\n // pointerdown. Same pattern as `SideDialogRoot`; see `portal-container.tsx`.\n const [portalHost, setPortalHost] = React.useState<HTMLDivElement | null>(null);\n\n return (\n <DrawerPrimitive.Root\n open={open}\n onOpenChange={nextOpen => {\n if (!nextOpen) onClose?.();\n }}\n swipeDirection=\"right\"\n >\n <DrawerPrimitive.Portal>\n {/* Lighter than the shared `--scrim`: a side panel should keep the page beneath readable. */}\n <DrawerPrimitive.Backdrop className=\"drawer-backdrop fixed inset-0 z-50 bg-scrim/30\" />\n <DrawerPrimitive.Viewport className=\"fixed inset-0 z-50\">\n <DrawerPrimitive.Popup\n data-slot=\"data-panel-popup\"\n data-depth={depth}\n data-size={size}\n className={cn(\n 'drawer-popup fixed inset-y-0 right-0 z-50 flex max-w-full p-4 outline-none',\n size === 'md' ? DEPTH_WIDTH[depth] : SIZE_WIDTH[size],\n )}\n style={\n size !== 'md' && depth > 1\n ? { width: `calc(${SIZE_PERCENT[size]} - ${(depth - 1) * DEPTH_PEEK_REM}rem)` }\n : undefined\n }\n >\n {/* Not a heading: the visible `DataPanel.Heading` already is one; this only names the dialog. */}\n <DrawerPrimitive.Title render={<span />} className=\"sr-only\">\n {title}\n </DrawerPrimitive.Title>\n {description && (\n <DrawerPrimitive.Description className=\"sr-only\">{description}</DrawerPrimitive.Description>\n )}\n\n <DrawerPrimitive.Content render={<div ref={setPortalHost} className=\"absolute\" />} />\n\n <PortalContainerProvider container={portalHost}>\n {/* Whole card is swipe-exempt: pointerdown on tabs/buttons/text must not start a dismiss gesture. */}\n <DrawerPrimitive.Content\n render={<section />}\n className={cn(\n 'flex max-h-full w-full flex-col overflow-hidden rounded-xl border border-border bg-background',\n className,\n )}\n >\n {children}\n </DrawerPrimitive.Content>\n </PortalContainerProvider>\n </DrawerPrimitive.Popup>\n </DrawerPrimitive.Viewport>\n </DrawerPrimitive.Portal>\n </DrawerPrimitive.Root>\n );\n}\n","import { DataPanelCloseButton } from './data-panel-close-button';\nimport { DataPanelContent } from './data-panel-content';\nimport { DataPanelCopyId } from './data-panel-copy-id';\nimport { DataPanelHeader } from './data-panel-header';\nimport { DataPanelHeaderActions } from './data-panel-header-actions';\nimport { DataPanelHeaderContent } from './data-panel-header-content';\nimport { DataPanelHeading } from './data-panel-heading';\nimport { DataPanelLoadingData } from './data-panel-loading-data';\nimport { DataPanelMeta, DataPanelMetadata } from './data-panel-metadata';\nimport { DataPanelNextPrevNav } from './data-panel-next-prev-nav';\nimport { DataPanelNoData } from './data-panel-no-data';\nimport { DataPanelRoot } from './data-panel-root';\nimport { DataPanelSectionHeading } from './data-panel-section-heading';\nimport { DataCodeSection } from '@/ds/components/DataCodeSection';\n\nexport const DataPanel = Object.assign(DataPanelRoot, {\n Header: DataPanelHeader,\n HeaderContent: DataPanelHeaderContent,\n HeaderActions: DataPanelHeaderActions,\n Heading: DataPanelHeading,\n Metadata: DataPanelMetadata,\n Meta: DataPanelMeta,\n CloseButton: DataPanelCloseButton,\n CopyId: DataPanelCopyId,\n NextPrevNav: DataPanelNextPrevNav,\n LoadingData: DataPanelLoadingData,\n NoData: DataPanelNoData,\n Content: DataPanelContent,\n CodeSection: DataCodeSection,\n SectionHeading: DataPanelSectionHeading,\n});\n"],"names":["DrawerPrimitive"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"data-panel-Dclh0gKS.js","sources":["../src/ds/components/DataPanel/data-panel-close-button.tsx","../src/ds/components/DataPanel/data-panel-content.tsx","../src/ds/components/DataPanel/data-panel-copy-id.tsx","../src/ds/components/DataPanel/data-panel-header.tsx","../src/ds/components/DataPanel/data-panel-header-actions.tsx","../src/ds/components/DataPanel/data-panel-header-content.tsx","../src/ds/components/DataPanel/data-panel-heading.tsx","../src/ds/components/DataPanel/data-panel-loading-data.tsx","../src/ds/components/DataPanel/data-panel-metadata.tsx","../src/ds/components/DataPanel/data-panel-next-prev-nav.tsx","../src/ds/components/DataPanel/data-panel-no-data.tsx","../src/ds/components/DataPanel/data-panel-root.tsx","../src/ds/components/DataPanel/data-panel.tsx"],"sourcesContent":["import { ArrowLeftIcon, XIcon } from 'lucide-react';\nimport { Button } from '@/ds/components/Button';\nimport type { ButtonProps } from '@/ds/components/Button';\nimport { cn } from '@/lib/utils';\n\nexport interface DataPanelCloseButtonProps {\n onClick: () => void;\n tooltip?: string;\n /** Accessible name; override it when the arrow leads somewhere other than \"closed\" (e.g. back to a parent view). */\n label?: string;\n /**\n * `arrow` (default) is the leading \"leave this panel\" control, rendered first in the header.\n * `x` dismisses a nested column in place and belongs in `HeaderActions`, on the right.\n */\n icon?: 'arrow' | 'x';\n className?: string;\n variant?: ButtonProps['variant'];\n}\n\nexport function DataPanelCloseButton({\n onClick,\n tooltip = 'Close panel',\n label = 'Close Panel',\n icon = 'arrow',\n className,\n variant = 'ghost',\n}: DataPanelCloseButtonProps) {\n return (\n <Button\n size=\"sm\"\n variant={variant}\n onClick={onClick}\n aria-label={label}\n tooltip={tooltip}\n className={cn('shrink-0', className)}\n >\n {icon === 'x' ? <XIcon /> : <ArrowLeftIcon />}\n </Button>\n );\n}\n","import { Drawer as DrawerPrimitive } from '@base-ui/react/drawer';\nimport type { ReactNode, Ref } from 'react';\n\nimport { cn } from '@/lib/utils';\n\nexport interface DataPanelContentProps {\n children: ReactNode;\n ref?: Ref<HTMLDivElement>;\n /** Layout overrides (e.g. padding) for the scroll container. */\n className?: string;\n}\n\n// `DrawerPrimitive.Content` marks the region as swipe-exempt so scrolling or\n// selecting text inside the panel body doesn't start a swipe-to-dismiss.\nexport function DataPanelContent({ children, ref, className }: DataPanelContentProps) {\n return (\n <DrawerPrimitive.Content ref={ref} className={cn('min-h-0 flex-1 overflow-y-auto px-2 py-3', className)}>\n {children}\n </DrawerPrimitive.Content>\n );\n}\n","import { useState } from 'react';\nimport { Button } from '@/ds/components/Button';\nimport { Tooltip, TooltipContent, TooltipTrigger } from '@/ds/components/Tooltip';\nimport { useCopyToClipboard } from '@/hooks/use-copy-to-clipboard';\nimport { truncateString } from '@/lib/truncate-string';\n\nexport interface DataPanelCopyIdProps {\n id: string;\n /** Characters kept before the ellipsis. Defaults to 12. */\n maxLength?: number;\n}\n\n/**\n * Truncated identifier rendered inline in a `DataPanel.Heading`; clicking copies the full value.\n */\nexport function DataPanelCopyId({ id, maxLength = 12 }: DataPanelCopyIdProps) {\n const { isCopied, handleCopy } = useCopyToClipboard({ text: id, showToast: false });\n const [open, setOpen] = useState(false);\n\n return (\n <Tooltip open={isCopied || open} onOpenChange={setOpen}>\n <TooltipTrigger\n render={\n <Button type=\"button\" variant=\"ghost\" size=\"sm\" onClick={handleCopy}>\n {truncateString(id, maxLength)}\n </Button>\n }\n />\n <TooltipContent>{isCopied ? 'Copied to clipboard' : 'Copy to clipboard'}</TooltipContent>\n </Tooltip>\n );\n}\n","import { cn } from '@/lib/utils';\n\nexport interface DataPanelHeaderProps {\n className?: string;\n children: React.ReactNode;\n}\n\nexport function DataPanelHeader({ className, children }: DataPanelHeaderProps) {\n return (\n <div\n className={cn(\n // Same box as the app `Header`. Single row: leading `CloseButton`, then the heading\n // (+ inline metadata via `HeaderContent`), then `HeaderActions` pushed to the right edge.\n // `gap-0.5` is the slight gap between the close arrow and the heading.\n 'flex min-h-header-default w-full items-center gap-0.5 px-2 py-1.5',\n // Bottom border only when something follows the header (i.e. the panel is expanded).\n // When the panel is collapsed and the header is the only child, the border auto-hides.\n 'not-last:border-b not-last:border-border',\n className,\n )}\n >\n {children}\n </div>\n );\n}\n","export interface DataPanelHeaderActionsProps {\n children: React.ReactNode;\n}\n\n/**\n * Right-side action slot of a `DataPanel.Header`. Mirrors `HeaderAction` with `gap-2`\n * (these are `size=\"sm\"` controls, like the page header actions) and wraps when the panel is too narrow.\n */\nexport function DataPanelHeaderActions({ children }: DataPanelHeaderActionsProps) {\n return <div className=\"ml-auto flex shrink-0 flex-wrap items-center justify-end gap-2 self-center\">{children}</div>;\n}\n","import { Children } from 'react';\n\nexport interface DataPanelHeaderContentProps {\n children: React.ReactNode;\n}\n\n/**\n * Left block of a `DataPanel.Header`: heading followed inline by optional `Metadata`, truncated when too long.\n * A vertical separator is rendered between the heading and the metadata when both are present.\n */\nexport function DataPanelHeaderContent({ children }: DataPanelHeaderContentProps) {\n const [heading, ...metadata] = Children.toArray(children);\n\n return (\n <div className=\"flex min-w-0 flex-1 items-center gap-1 overflow-hidden\">\n {heading}\n {metadata.length > 0 && (\n <>\n <div role=\"separator\" aria-orientation=\"vertical\" className=\"mx-1 h-4 w-px shrink-0 bg-border-strong\" />\n {metadata}\n </>\n )}\n </div>\n );\n}\n","import { controlSizeClasses } from '@/ds/primitives/control-size';\nimport { cn } from '@/lib/utils';\n\nexport interface DataPanelHeadingProps {\n className?: string;\n children: React.ReactNode;\n}\n\nexport function DataPanelHeading({ className, children }: DataPanelHeadingProps) {\n return (\n <h3\n className={cn(\n // Same recipe as a current `Crumb` in the page header, with tight horizontal spacing:\n // inline children like `TraceIdButton` carry their own padding, so `gap-1` + `px-1`\n // is enough to keep the title close to the leading close arrow and the inline metadata.\n // `shrink-0`: the heading keeps its text; the inline `Metadata` row is what gets clipped.\n 'inline-flex max-w-full min-w-0 shrink-0 items-center gap-1 rounded-full px-1',\n controlSizeClasses.sm,\n 'cursor-default text-foreground [&>b]:text-caption [&>b]:text-muted-foreground',\n className,\n )}\n >\n {children}\n </h3>\n );\n}\n","import type { ReactNode } from 'react';\nimport { Spinner } from '@/ds/components/Spinner';\n\nexport interface DataPanelLoadingDataProps {\n children?: ReactNode;\n}\n\nexport function DataPanelLoadingData({ children }: DataPanelLoadingDataProps) {\n return (\n <div className=\"flex min-h-32 items-center justify-center gap-2 px-3 py-4 text-caption text-placeholder\">\n <Spinner size=\"sm\" variant=\"pulse\" className=\"text-placeholder\" /> {children ?? 'Loading...'}\n </div>\n );\n}\n","import { Tooltip, TooltipContent, TooltipTrigger } from '@/ds/components/Tooltip';\nimport { Icon } from '@/ds/icons/Icon';\nimport { controlSizeClasses } from '@/ds/primitives/control-size';\nimport { controlStateColorTransition, transitions } from '@/ds/primitives/transitions';\nimport { quietTextHover } from '@/ds/primitives/typography';\nimport { cn } from '@/lib/utils';\n\nexport interface DataPanelMetadataProps {\n children: React.ReactNode;\n}\n\n/** Row of `Meta` pills next to a `DataPanel.Heading`. Never wraps; overflowing pills are clipped. */\nexport function DataPanelMetadata({ children }: DataPanelMetadataProps) {\n return <ul className=\"flex min-w-0 flex-nowrap items-center gap-0.5 overflow-hidden\">{children}</ul>;\n}\n\nexport interface DataPanelMetaProps extends Omit<React.HTMLAttributes<HTMLElement>, 'children' | 'title'> {\n /** Element/component to render as (e.g. a router `Link`). Defaults to `span`. */\n as?: React.ElementType;\n href?: string;\n to?: string;\n /** Prefix icon (bare SVG). */\n icon?: React.ReactNode;\n /** Shown on hover/focus; for a static (non-link) meta a string tooltip also becomes the accessible name. */\n tooltip?: React.ReactNode;\n children: React.ReactNode;\n 'data-testid'?: string;\n}\n\nexport function DataPanelMeta({ as, icon, tooltip, children, className, ...props }: DataPanelMetaProps) {\n const Root = as ?? 'span';\n const isInteractive = Boolean(as || props.href || props.to || props.onClick);\n\n const hasTooltip = tooltip != null;\n const root = (\n <Root\n aria-label={!isInteractive && typeof tooltip === 'string' ? tooltip : undefined}\n tabIndex={!isInteractive && hasTooltip ? 0 : undefined}\n className={cn(\n // Same box as a `size=\"sm\"` ghost `Button` (e.g. `TraceIdButton`), so pills line up\n // with the heading and the trace ID on the same header row.\n 'inline-flex min-w-0 items-center gap-1.5 overflow-hidden rounded-full px-2',\n controlSizeClasses.sm,\n controlStateColorTransition,\n isInteractive\n ? cn(quietTextHover, 'cursor-pointer hover:bg-fill-subtle active:bg-fill')\n : cn('text-muted-foreground', hasTooltip && 'cursor-help'),\n className,\n )}\n {...props}\n >\n {icon && (\n <Icon size=\"xs\" className={cn('shrink-0 opacity-50 group-hover:opacity-100', transitions.opacity)}>\n {icon}\n </Icon>\n )}\n <span className=\"min-w-0 truncate\">{children}</span>\n </Root>\n );\n\n return (\n <li className=\"group flex h-control-sm min-w-0 shrink-0 items-center\">\n {!hasTooltip ? (\n root\n ) : (\n <Tooltip>\n <TooltipTrigger render={root} />\n <TooltipContent>{tooltip}</TooltipContent>\n </Tooltip>\n )}\n </li>\n );\n}\n","import { ArrowDownIcon, ArrowUpIcon } from 'lucide-react';\nimport { Button } from '@/ds/components/Button';\nimport type { ButtonProps } from '@/ds/components/Button';\n\nexport interface DataPanelNextPrevNavProps {\n onPrevious?: () => void;\n onNext?: () => void;\n previousLabel?: string;\n nextLabel?: string;\n variant?: ButtonProps['variant'];\n}\n\n/** Two independent previous/next buttons, laid out by the parent `HeaderActions` gap. */\nexport function DataPanelNextPrevNav({\n onPrevious,\n onNext,\n previousLabel = 'Go to previous',\n nextLabel = 'Go to next',\n variant = 'ghost',\n}: DataPanelNextPrevNavProps) {\n return (\n <>\n <Button size=\"sm\" variant={variant} tooltip={previousLabel} onClick={onPrevious} disabled={!onPrevious}>\n <ArrowUpIcon />\n </Button>\n <Button size=\"sm\" variant={variant} tooltip={nextLabel} onClick={onNext} disabled={!onNext}>\n <ArrowDownIcon />\n </Button>\n </>\n );\n}\n","export interface DataPanelNoDataProps {\n children?: React.ReactNode;\n}\n\nexport function DataPanelNoData({ children }: DataPanelNoDataProps) {\n return <p className=\"px-3 py-4 text-caption text-placeholder\">{children ?? 'No data found.'}</p>;\n}\n","import { Drawer as DrawerPrimitive } from '@base-ui/react/drawer';\nimport * as React from 'react';\n\nimport { PortalContainerProvider } from '@/ds/primitives/portal-container';\nimport { cn } from '@/lib/utils';\n\n// `drawer-popup` / `drawer-backdrop` carry the slide + fade transitions.\nimport '../Drawer/drawer.css';\n\nexport interface DataPanelProps {\n /** Whether the panel is shown. The panel is always a modal Drawer dialog. */\n open: boolean;\n /** Called when the user dismisses the panel (close button, Escape, backdrop, swipe). */\n onClose?: () => void;\n /** Accessible dialog name (screen-reader only; the visible title comes from `DataPanel.Heading`). */\n title: string;\n /** Accessible dialog description (screen-reader only). */\n description?: string;\n /**\n * Elevation level when several sibling panels are open at once (not nested in\n * the React tree, so Base UI's own stacking doesn't apply). A deeper panel is\n * narrower so the one beneath peeks out on the left. Siblings stack in mount\n * order: render the deeper panel after the shallower one.\n */\n depth?: 1 | 2 | 3;\n /**\n * Drawer width. `md` (default) is a narrow detail panel whose width shrinks\n * with `depth`. `half`/`wide`/`full` are for multi-column content (e.g. the\n * trace panel); each `depth` level trims them by a small fixed amount so a\n * same-size parent still peeks out beneath. Changing `size` while open\n * animates the width.\n */\n size?: 'md' | 'half' | 'wide' | 'full';\n children: React.ReactNode;\n className?: string;\n}\n\nconst DEPTH_WIDTH = { 1: 'w-xl', 2: 'w-lg', 3: 'w-md' } as const;\nconst SIZE_WIDTH = { half: 'w-1/2', wide: 'w-4/5', full: 'w-full' } as const;\nconst SIZE_PERCENT = { half: '50%', wide: '80%', full: '100%' } as const;\n// Each extra depth level trims a stacked non-`md` panel so the parent peeks out beneath it.\nconst DEPTH_PEEK_REM = 1.5;\n\nexport function DataPanelRoot({\n open,\n onClose,\n title,\n description,\n depth = 1,\n size = 'md',\n children,\n className,\n}: DataPanelProps) {\n // Swipe-exempt mount point for nested popups (Select, DropdownMenu, …) so they\n // stay inside Base UI's modal focus region and don't start a drawer swipe on\n // pointerdown. Same pattern as `SideDialogRoot`; see `portal-container.tsx`.\n const [portalHost, setPortalHost] = React.useState<HTMLDivElement | null>(null);\n\n return (\n <DrawerPrimitive.Root\n open={open}\n onOpenChange={nextOpen => {\n if (!nextOpen) onClose?.();\n }}\n swipeDirection=\"right\"\n >\n <DrawerPrimitive.Portal>\n {/* Lighter than the shared `--scrim`: a side panel should keep the page beneath readable. */}\n <DrawerPrimitive.Backdrop className=\"drawer-backdrop fixed inset-0 z-50 bg-scrim/30\" />\n <DrawerPrimitive.Viewport className=\"fixed inset-0 z-50\">\n <DrawerPrimitive.Popup\n data-slot=\"data-panel-popup\"\n data-depth={depth}\n data-size={size}\n className={cn(\n 'drawer-popup fixed inset-y-0 right-0 z-50 flex max-w-full p-4 outline-none',\n size === 'md' ? DEPTH_WIDTH[depth] : SIZE_WIDTH[size],\n )}\n style={\n size !== 'md' && depth > 1\n ? { width: `calc(${SIZE_PERCENT[size]} - ${(depth - 1) * DEPTH_PEEK_REM}rem)` }\n : undefined\n }\n >\n {/* Not a heading: the visible `DataPanel.Heading` already is one; this only names the dialog. */}\n <DrawerPrimitive.Title render={<span />} className=\"sr-only\">\n {title}\n </DrawerPrimitive.Title>\n {description && (\n <DrawerPrimitive.Description className=\"sr-only\">{description}</DrawerPrimitive.Description>\n )}\n\n <DrawerPrimitive.Content render={<div ref={setPortalHost} className=\"absolute\" />} />\n\n <PortalContainerProvider container={portalHost}>\n {/* Whole card is swipe-exempt: pointerdown on tabs/buttons/text must not start a dismiss gesture. */}\n <DrawerPrimitive.Content\n render={<section />}\n className={cn(\n 'flex max-h-full w-full flex-col overflow-hidden rounded-xl border border-border bg-background',\n className,\n )}\n >\n {children}\n </DrawerPrimitive.Content>\n </PortalContainerProvider>\n </DrawerPrimitive.Popup>\n </DrawerPrimitive.Viewport>\n </DrawerPrimitive.Portal>\n </DrawerPrimitive.Root>\n );\n}\n","import { DataPanelCloseButton } from './data-panel-close-button';\nimport { DataPanelContent } from './data-panel-content';\nimport { DataPanelCopyId } from './data-panel-copy-id';\nimport { DataPanelHeader } from './data-panel-header';\nimport { DataPanelHeaderActions } from './data-panel-header-actions';\nimport { DataPanelHeaderContent } from './data-panel-header-content';\nimport { DataPanelHeading } from './data-panel-heading';\nimport { DataPanelLoadingData } from './data-panel-loading-data';\nimport { DataPanelMeta, DataPanelMetadata } from './data-panel-metadata';\nimport { DataPanelNextPrevNav } from './data-panel-next-prev-nav';\nimport { DataPanelNoData } from './data-panel-no-data';\nimport { DataPanelRoot } from './data-panel-root';\nimport { DataPanelSectionHeading } from './data-panel-section-heading';\nimport { DataCodeSection } from '@/ds/components/DataCodeSection';\n\nexport const DataPanel = Object.assign(DataPanelRoot, {\n Header: DataPanelHeader,\n HeaderContent: DataPanelHeaderContent,\n HeaderActions: DataPanelHeaderActions,\n Heading: DataPanelHeading,\n Metadata: DataPanelMetadata,\n Meta: DataPanelMeta,\n CloseButton: DataPanelCloseButton,\n CopyId: DataPanelCopyId,\n NextPrevNav: DataPanelNextPrevNav,\n LoadingData: DataPanelLoadingData,\n NoData: DataPanelNoData,\n Content: DataPanelContent,\n CodeSection: DataCodeSection,\n SectionHeading: DataPanelSectionHeading,\n});\n"],"names":["DrawerPrimitive"],"mappings":"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"}
|
|
@@ -4,9 +4,9 @@ const jsxRuntime = require('react/jsx-runtime');
|
|
|
4
4
|
const dateFns = require('date-fns');
|
|
5
5
|
const lucideReact = require('lucide-react');
|
|
6
6
|
const React = require('react');
|
|
7
|
-
const Button = require('./Button-
|
|
7
|
+
const Button = require('./Button-BAMnPqos.cjs');
|
|
8
8
|
const datePicker = require('./date-picker-dRZF8frf.cjs');
|
|
9
|
-
const timePicker = require('./time-picker-
|
|
9
|
+
const timePicker = require('./time-picker-BokshW_l.cjs');
|
|
10
10
|
const dropdownMenu = require('./dropdown-menu-j2y37TL5.cjs');
|
|
11
11
|
const fieldErrorId = require('./field-error-id-6EfqmQ4C.cjs');
|
|
12
12
|
const popover = require('./popover-lBqKiPtp.cjs');
|
|
@@ -176,4 +176,4 @@ function DateTimeRangePicker({
|
|
|
176
176
|
}
|
|
177
177
|
|
|
178
178
|
exports.DateTimeRangePicker = DateTimeRangePicker;
|
|
179
|
-
//# sourceMappingURL=date-time-range-picker-
|
|
179
|
+
//# sourceMappingURL=date-time-range-picker-CiWpvWGR.cjs.map
|
package/dist/{date-time-range-picker-D2g3RU5B.cjs.map → date-time-range-picker-CiWpvWGR.cjs.map}
RENAMED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"date-time-range-picker-D2g3RU5B.cjs","sources":["../src/ds/components/DateTimeRangePicker/date-time-range-picker.tsx"],"sourcesContent":["import { isValid, parse } from 'date-fns';\nimport { CalendarIcon, Check } from 'lucide-react';\nimport { useId, useState } from 'react';\nimport type { ReactElement } from 'react';\nimport { Button } from '@/ds/components/Button/Button';\nimport type { ButtonProps } from '@/ds/components/Button/Button';\nimport { DatePicker, TimePicker } from '@/ds/components/DateTimePicker';\nimport { DropdownMenu } from '@/ds/components/DropdownMenu/dropdown-menu';\nimport { FieldBlock, fieldErrorId } from '@/ds/components/FormFieldBlocks';\nimport { Popover, PopoverTrigger, PopoverContent } from '@/ds/components/Popover/popover';\nimport { cn } from '@/lib/utils';\n\nexport type DateRangePreset = 'all' | 'last-24h' | 'last-3d' | 'last-7d' | 'last-14d' | 'last-30d' | 'custom';\n\nconst DATE_PRESETS: { value: DateRangePreset; label: string; ms?: number }[] = [\n { value: 'all', label: 'All' },\n { value: 'last-24h', label: 'Last 24 hours', ms: 24 * 60 * 60 * 1000 },\n { value: 'last-3d', label: 'Last 3 days', ms: 3 * 24 * 60 * 60 * 1000 },\n { value: 'last-7d', label: 'Last 7 days', ms: 7 * 24 * 60 * 60 * 1000 },\n { value: 'last-14d', label: 'Last 14 days', ms: 14 * 24 * 60 * 60 * 1000 },\n { value: 'last-30d', label: 'Last 30 days', ms: 30 * 24 * 60 * 60 * 1000 },\n { value: 'custom', label: 'Custom range...' },\n];\n\nfunction buildDateWithTime(date: Date, timeStr: string): Date | null {\n const dateOnly = new Date(date.getFullYear(), date.getMonth(), date.getDate());\n const combined = parse(timeStr, 'h:mm a', dateOnly);\n return isValid(combined) ? combined : null;\n}\n\nexport interface DateTimeRangePickerProps {\n preset?: DateRangePreset;\n onPresetChange?: (preset: DateRangePreset) => void;\n dateFrom?: Date;\n dateTo?: Date;\n onDateChange?: (value: Date | undefined, type: 'from' | 'to') => void;\n /**\n * Called once with both ends when a custom range is applied. When provided it replaces\n * the two `onDateChange` calls for that step, so consumers can write the range atomically.\n */\n onDateRangeChange?: (from: Date | undefined, to: Date | undefined) => void;\n disabled?: boolean;\n /** Subset of presets to show. If omitted, all presets are shown. */\n presets?: readonly DateRangePreset[];\n /** Size passed through to the trigger Button. Defaults to 'md'. */\n size?: ButtonProps['size'];\n /**\n * Replace the default Button trigger. Receives the current label (preset name or\n * custom range) and must return an element the menu/popover can attach to.\n */\n renderTrigger?: (props: { label: string; disabled?: boolean }) => ReactElement;\n}\n\nexport function DateTimeRangePicker({\n preset = 'all',\n onPresetChange,\n dateFrom,\n dateTo,\n onDateChange,\n onDateRangeChange,\n disabled,\n presets,\n size = 'md',\n renderTrigger,\n}: DateTimeRangePickerProps) {\n const visiblePresets = presets ? DATE_PRESETS.filter(p => presets.includes(p.value)) : DATE_PRESETS;\n const fallbackPreset: DateRangePreset = visiblePresets.find(p => p.value !== 'custom')?.value ?? 'all';\n const [customRangeOpen, setCustomRangeOpen] = useState(false);\n const [draftDateFrom, setDraftDateFrom] = useState<Date | undefined>(dateFrom);\n const [draftDateTo, setDraftDateTo] = useState<Date | undefined>(dateTo);\n const [draftTimeFrom, setDraftTimeFrom] = useState('12:00 AM');\n const [draftTimeTo, setDraftTimeTo] = useState('11:59 PM');\n const [customRangeError, setCustomRangeError] = useState<string | undefined>();\n const customRangeFieldName = useId();\n\n const datePresetLabel = DATE_PRESETS.find(p => p.value === preset)?.label ?? 'All';\n\n const handlePresetSelect = (value: DateRangePreset) => {\n onPresetChange?.(value);\n if (value === 'custom') {\n setDraftDateFrom(dateFrom);\n setDraftDateTo(dateTo);\n setDraftTimeFrom('12:00 AM');\n setDraftTimeTo('11:59 PM');\n setCustomRangeOpen(true);\n return;\n }\n const entry = DATE_PRESETS.find(p => p.value === value);\n if (entry?.ms) {\n onDateChange?.(new Date(Date.now() - entry.ms), 'from');\n onDateChange?.(undefined, 'to');\n } else {\n onDateChange?.(undefined, 'from');\n onDateChange?.(undefined, 'to');\n }\n };\n\n const applyCustomRange = () => {\n const fromDate = draftDateFrom ? (buildDateWithTime(draftDateFrom, draftTimeFrom) ?? draftDateFrom) : undefined;\n const toDate = draftDateTo ? (buildDateWithTime(draftDateTo, draftTimeTo) ?? draftDateTo) : undefined;\n if (fromDate && toDate && fromDate.getTime() > toDate.getTime()) {\n setCustomRangeError('Start date/time must be before end date/time');\n return;\n }\n setCustomRangeError(undefined);\n if (onDateRangeChange) {\n onDateRangeChange(fromDate, toDate);\n } else {\n onDateChange?.(fromDate, 'from');\n onDateChange?.(toDate, 'to');\n }\n setCustomRangeOpen(false);\n };\n\n if (preset === 'custom') {\n const customLabel = `${dateFrom ? dateFrom.toLocaleDateString() : 'Start'} \\u2013 ${dateTo ? dateTo.toLocaleDateString() : 'End'}`;\n return (\n <Popover open={customRangeOpen} onOpenChange={setCustomRangeOpen}>\n {renderTrigger ? (\n <PopoverTrigger render={renderTrigger({ label: customLabel, disabled })} />\n ) : (\n <PopoverTrigger asChild>\n <Button size={size} disabled={disabled} icon={<CalendarIcon />}>\n {customLabel}\n </Button>\n </PopoverTrigger>\n )}\n <PopoverContent align=\"start\" className={cn('w-auto p-0')}>\n <div\n role=\"group\"\n aria-label=\"Custom date range\"\n aria-invalid={customRangeError ? true : undefined}\n aria-describedby={customRangeError ? fieldErrorId(customRangeFieldName) : undefined}\n >\n <div className={cn('flex')}>\n <div className={cn('border-r border-border')}>\n <span className={cn('block px-4 pt-3 text-column text-muted-foreground')}>Start</span>\n <DatePicker\n mode=\"single\"\n selected={draftDateFrom}\n month={draftDateFrom}\n onSelect={setDraftDateFrom}\n disabled={disabled}\n toDate={draftDateTo}\n />\n <TimePicker\n className=\"mx-4 mb-3 w-auto\"\n defaultValue={draftTimeFrom}\n onValueChange={v => {\n if (!disabled) setDraftTimeFrom(v);\n }}\n />\n </div>\n <div>\n <span className={cn('block px-4 pt-3 text-column text-muted-foreground')}>End</span>\n <DatePicker\n mode=\"single\"\n selected={draftDateTo}\n month={draftDateTo}\n onSelect={setDraftDateTo}\n disabled={disabled}\n fromDate={draftDateFrom}\n />\n <TimePicker\n className=\"mx-4 mb-3 w-auto\"\n defaultValue={draftTimeTo}\n onValueChange={v => {\n if (!disabled) setDraftTimeTo(v);\n }}\n />\n </div>\n </div>\n {customRangeError && (\n <FieldBlock.ErrorMsg name={customRangeFieldName} className=\"px-4 pb-1\">\n {customRangeError}\n </FieldBlock.ErrorMsg>\n )}\n </div>\n <div className={cn('flex items-center justify-between px-4 pb-3')}>\n <Button\n variant=\"ghost\"\n size=\"sm\"\n disabled={disabled}\n onClick={() => {\n setCustomRangeError(undefined);\n handlePresetSelect(fallbackPreset);\n }}\n >\n ← Presets\n </Button>\n <Button icon={<Check />} variant=\"primary\" size=\"sm\" onClick={applyCustomRange} disabled={disabled}>\n Apply\n </Button>\n </div>\n </PopoverContent>\n </Popover>\n );\n }\n\n return (\n <DropdownMenu>\n {renderTrigger ? (\n <DropdownMenu.Trigger render={renderTrigger({ label: datePresetLabel, disabled })} />\n ) : (\n <DropdownMenu.Trigger asChild>\n <Button size={size} disabled={disabled} icon={<CalendarIcon />}>\n {datePresetLabel}\n </Button>\n </DropdownMenu.Trigger>\n )}\n <DropdownMenu.Content align=\"start\">\n {visiblePresets.map(p => (\n <DropdownMenu.Item key={p.value} onSelect={() => handlePresetSelect(p.value)}>\n {p.label}\n </DropdownMenu.Item>\n ))}\n </DropdownMenu.Content>\n </DropdownMenu>\n );\n}\n"],"names":["parse","isValid","useState","useId","jsxs","Popover","jsx","PopoverTrigger","Button","CalendarIcon","PopoverContent","cn","fieldErrorId","DatePicker","TimePicker","FieldBlock","Check","DropdownMenu"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"date-time-range-picker-CiWpvWGR.cjs","sources":["../src/ds/components/DateTimeRangePicker/date-time-range-picker.tsx"],"sourcesContent":["import { isValid, parse } from 'date-fns';\nimport { CalendarIcon, Check } from 'lucide-react';\nimport { useId, useState } from 'react';\nimport type { ReactElement } from 'react';\nimport { Button } from '@/ds/components/Button/Button';\nimport type { ButtonProps } from '@/ds/components/Button/Button';\nimport { DatePicker, TimePicker } from '@/ds/components/DateTimePicker';\nimport { DropdownMenu } from '@/ds/components/DropdownMenu/dropdown-menu';\nimport { FieldBlock, fieldErrorId } from '@/ds/components/FormFieldBlocks';\nimport { Popover, PopoverTrigger, PopoverContent } from '@/ds/components/Popover/popover';\nimport { cn } from '@/lib/utils';\n\nexport type DateRangePreset = 'all' | 'last-24h' | 'last-3d' | 'last-7d' | 'last-14d' | 'last-30d' | 'custom';\n\nconst DATE_PRESETS: { value: DateRangePreset; label: string; ms?: number }[] = [\n { value: 'all', label: 'All' },\n { value: 'last-24h', label: 'Last 24 hours', ms: 24 * 60 * 60 * 1000 },\n { value: 'last-3d', label: 'Last 3 days', ms: 3 * 24 * 60 * 60 * 1000 },\n { value: 'last-7d', label: 'Last 7 days', ms: 7 * 24 * 60 * 60 * 1000 },\n { value: 'last-14d', label: 'Last 14 days', ms: 14 * 24 * 60 * 60 * 1000 },\n { value: 'last-30d', label: 'Last 30 days', ms: 30 * 24 * 60 * 60 * 1000 },\n { value: 'custom', label: 'Custom range...' },\n];\n\nfunction buildDateWithTime(date: Date, timeStr: string): Date | null {\n const dateOnly = new Date(date.getFullYear(), date.getMonth(), date.getDate());\n const combined = parse(timeStr, 'h:mm a', dateOnly);\n return isValid(combined) ? combined : null;\n}\n\nexport interface DateTimeRangePickerProps {\n preset?: DateRangePreset;\n onPresetChange?: (preset: DateRangePreset) => void;\n dateFrom?: Date;\n dateTo?: Date;\n onDateChange?: (value: Date | undefined, type: 'from' | 'to') => void;\n /**\n * Called once with both ends when a custom range is applied. When provided it replaces\n * the two `onDateChange` calls for that step, so consumers can write the range atomically.\n */\n onDateRangeChange?: (from: Date | undefined, to: Date | undefined) => void;\n disabled?: boolean;\n /** Subset of presets to show. If omitted, all presets are shown. */\n presets?: readonly DateRangePreset[];\n /** Size passed through to the trigger Button. Defaults to 'md'. */\n size?: ButtonProps['size'];\n /**\n * Replace the default Button trigger. Receives the current label (preset name or\n * custom range) and must return an element the menu/popover can attach to.\n */\n renderTrigger?: (props: { label: string; disabled?: boolean }) => ReactElement;\n}\n\nexport function DateTimeRangePicker({\n preset = 'all',\n onPresetChange,\n dateFrom,\n dateTo,\n onDateChange,\n onDateRangeChange,\n disabled,\n presets,\n size = 'md',\n renderTrigger,\n}: DateTimeRangePickerProps) {\n const visiblePresets = presets ? DATE_PRESETS.filter(p => presets.includes(p.value)) : DATE_PRESETS;\n const fallbackPreset: DateRangePreset = visiblePresets.find(p => p.value !== 'custom')?.value ?? 'all';\n const [customRangeOpen, setCustomRangeOpen] = useState(false);\n const [draftDateFrom, setDraftDateFrom] = useState<Date | undefined>(dateFrom);\n const [draftDateTo, setDraftDateTo] = useState<Date | undefined>(dateTo);\n const [draftTimeFrom, setDraftTimeFrom] = useState('12:00 AM');\n const [draftTimeTo, setDraftTimeTo] = useState('11:59 PM');\n const [customRangeError, setCustomRangeError] = useState<string | undefined>();\n const customRangeFieldName = useId();\n\n const datePresetLabel = DATE_PRESETS.find(p => p.value === preset)?.label ?? 'All';\n\n const handlePresetSelect = (value: DateRangePreset) => {\n onPresetChange?.(value);\n if (value === 'custom') {\n setDraftDateFrom(dateFrom);\n setDraftDateTo(dateTo);\n setDraftTimeFrom('12:00 AM');\n setDraftTimeTo('11:59 PM');\n setCustomRangeOpen(true);\n return;\n }\n const entry = DATE_PRESETS.find(p => p.value === value);\n if (entry?.ms) {\n onDateChange?.(new Date(Date.now() - entry.ms), 'from');\n onDateChange?.(undefined, 'to');\n } else {\n onDateChange?.(undefined, 'from');\n onDateChange?.(undefined, 'to');\n }\n };\n\n const applyCustomRange = () => {\n const fromDate = draftDateFrom ? (buildDateWithTime(draftDateFrom, draftTimeFrom) ?? draftDateFrom) : undefined;\n const toDate = draftDateTo ? (buildDateWithTime(draftDateTo, draftTimeTo) ?? draftDateTo) : undefined;\n if (fromDate && toDate && fromDate.getTime() > toDate.getTime()) {\n setCustomRangeError('Start date/time must be before end date/time');\n return;\n }\n setCustomRangeError(undefined);\n if (onDateRangeChange) {\n onDateRangeChange(fromDate, toDate);\n } else {\n onDateChange?.(fromDate, 'from');\n onDateChange?.(toDate, 'to');\n }\n setCustomRangeOpen(false);\n };\n\n if (preset === 'custom') {\n const customLabel = `${dateFrom ? dateFrom.toLocaleDateString() : 'Start'} \\u2013 ${dateTo ? dateTo.toLocaleDateString() : 'End'}`;\n return (\n <Popover open={customRangeOpen} onOpenChange={setCustomRangeOpen}>\n {renderTrigger ? (\n <PopoverTrigger render={renderTrigger({ label: customLabel, disabled })} />\n ) : (\n <PopoverTrigger asChild>\n <Button size={size} disabled={disabled} icon={<CalendarIcon />}>\n {customLabel}\n </Button>\n </PopoverTrigger>\n )}\n <PopoverContent align=\"start\" className={cn('w-auto p-0')}>\n <div\n role=\"group\"\n aria-label=\"Custom date range\"\n aria-invalid={customRangeError ? true : undefined}\n aria-describedby={customRangeError ? fieldErrorId(customRangeFieldName) : undefined}\n >\n <div className={cn('flex')}>\n <div className={cn('border-r border-border')}>\n <span className={cn('block px-4 pt-3 text-column text-muted-foreground')}>Start</span>\n <DatePicker\n mode=\"single\"\n selected={draftDateFrom}\n month={draftDateFrom}\n onSelect={setDraftDateFrom}\n disabled={disabled}\n toDate={draftDateTo}\n />\n <TimePicker\n className=\"mx-4 mb-3 w-auto\"\n defaultValue={draftTimeFrom}\n onValueChange={v => {\n if (!disabled) setDraftTimeFrom(v);\n }}\n />\n </div>\n <div>\n <span className={cn('block px-4 pt-3 text-column text-muted-foreground')}>End</span>\n <DatePicker\n mode=\"single\"\n selected={draftDateTo}\n month={draftDateTo}\n onSelect={setDraftDateTo}\n disabled={disabled}\n fromDate={draftDateFrom}\n />\n <TimePicker\n className=\"mx-4 mb-3 w-auto\"\n defaultValue={draftTimeTo}\n onValueChange={v => {\n if (!disabled) setDraftTimeTo(v);\n }}\n />\n </div>\n </div>\n {customRangeError && (\n <FieldBlock.ErrorMsg name={customRangeFieldName} className=\"px-4 pb-1\">\n {customRangeError}\n </FieldBlock.ErrorMsg>\n )}\n </div>\n <div className={cn('flex items-center justify-between px-4 pb-3')}>\n <Button\n variant=\"ghost\"\n size=\"sm\"\n disabled={disabled}\n onClick={() => {\n setCustomRangeError(undefined);\n handlePresetSelect(fallbackPreset);\n }}\n >\n ← Presets\n </Button>\n <Button icon={<Check />} variant=\"primary\" size=\"sm\" onClick={applyCustomRange} disabled={disabled}>\n Apply\n </Button>\n </div>\n </PopoverContent>\n </Popover>\n );\n }\n\n return (\n <DropdownMenu>\n {renderTrigger ? (\n <DropdownMenu.Trigger render={renderTrigger({ label: datePresetLabel, disabled })} />\n ) : (\n <DropdownMenu.Trigger asChild>\n <Button size={size} disabled={disabled} icon={<CalendarIcon />}>\n {datePresetLabel}\n </Button>\n </DropdownMenu.Trigger>\n )}\n <DropdownMenu.Content align=\"start\">\n {visiblePresets.map(p => (\n <DropdownMenu.Item key={p.value} onSelect={() => handlePresetSelect(p.value)}>\n {p.label}\n </DropdownMenu.Item>\n ))}\n </DropdownMenu.Content>\n </DropdownMenu>\n );\n}\n"],"names":["parse","isValid","useState","useId","jsxs","Popover","jsx","PopoverTrigger","Button","CalendarIcon","PopoverContent","cn","fieldErrorId","DatePicker","TimePicker","FieldBlock","Check","DropdownMenu"],"mappings":"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"}
|
|
@@ -2,9 +2,9 @@ import { jsxs, jsx } from 'react/jsx-runtime';
|
|
|
2
2
|
import { parse, isValid } from 'date-fns';
|
|
3
3
|
import { CalendarIcon, Check } from 'lucide-react';
|
|
4
4
|
import { useState, useId } from 'react';
|
|
5
|
-
import { B as Button } from './Button-
|
|
5
|
+
import { B as Button } from './Button-B8nF87ai.js';
|
|
6
6
|
import { D as DatePicker } from './date-picker-DgWTsiJ7.js';
|
|
7
|
-
import { T as TimePicker } from './time-picker-
|
|
7
|
+
import { T as TimePicker } from './time-picker-D0GksHc0.js';
|
|
8
8
|
import { D as DropdownMenu } from './dropdown-menu-DpEn6HwK.js';
|
|
9
9
|
import { F as FieldBlock, f as fieldErrorId } from './field-error-id-DyWx33Fu.js';
|
|
10
10
|
import { P as Popover, b as PopoverTrigger, a as PopoverContent } from './popover-Dg70UGyn.js';
|
|
@@ -174,4 +174,4 @@ function DateTimeRangePicker({
|
|
|
174
174
|
}
|
|
175
175
|
|
|
176
176
|
export { DateTimeRangePicker as D };
|
|
177
|
-
//# sourceMappingURL=date-time-range-picker-
|
|
177
|
+
//# sourceMappingURL=date-time-range-picker-YGP0bTkl.js.map
|
package/dist/{date-time-range-picker-Cb86jLFc.js.map → date-time-range-picker-YGP0bTkl.js.map}
RENAMED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"date-time-range-picker-Cb86jLFc.js","sources":["../src/ds/components/DateTimeRangePicker/date-time-range-picker.tsx"],"sourcesContent":["import { isValid, parse } from 'date-fns';\nimport { CalendarIcon, Check } from 'lucide-react';\nimport { useId, useState } from 'react';\nimport type { ReactElement } from 'react';\nimport { Button } from '@/ds/components/Button/Button';\nimport type { ButtonProps } from '@/ds/components/Button/Button';\nimport { DatePicker, TimePicker } from '@/ds/components/DateTimePicker';\nimport { DropdownMenu } from '@/ds/components/DropdownMenu/dropdown-menu';\nimport { FieldBlock, fieldErrorId } from '@/ds/components/FormFieldBlocks';\nimport { Popover, PopoverTrigger, PopoverContent } from '@/ds/components/Popover/popover';\nimport { cn } from '@/lib/utils';\n\nexport type DateRangePreset = 'all' | 'last-24h' | 'last-3d' | 'last-7d' | 'last-14d' | 'last-30d' | 'custom';\n\nconst DATE_PRESETS: { value: DateRangePreset; label: string; ms?: number }[] = [\n { value: 'all', label: 'All' },\n { value: 'last-24h', label: 'Last 24 hours', ms: 24 * 60 * 60 * 1000 },\n { value: 'last-3d', label: 'Last 3 days', ms: 3 * 24 * 60 * 60 * 1000 },\n { value: 'last-7d', label: 'Last 7 days', ms: 7 * 24 * 60 * 60 * 1000 },\n { value: 'last-14d', label: 'Last 14 days', ms: 14 * 24 * 60 * 60 * 1000 },\n { value: 'last-30d', label: 'Last 30 days', ms: 30 * 24 * 60 * 60 * 1000 },\n { value: 'custom', label: 'Custom range...' },\n];\n\nfunction buildDateWithTime(date: Date, timeStr: string): Date | null {\n const dateOnly = new Date(date.getFullYear(), date.getMonth(), date.getDate());\n const combined = parse(timeStr, 'h:mm a', dateOnly);\n return isValid(combined) ? combined : null;\n}\n\nexport interface DateTimeRangePickerProps {\n preset?: DateRangePreset;\n onPresetChange?: (preset: DateRangePreset) => void;\n dateFrom?: Date;\n dateTo?: Date;\n onDateChange?: (value: Date | undefined, type: 'from' | 'to') => void;\n /**\n * Called once with both ends when a custom range is applied. When provided it replaces\n * the two `onDateChange` calls for that step, so consumers can write the range atomically.\n */\n onDateRangeChange?: (from: Date | undefined, to: Date | undefined) => void;\n disabled?: boolean;\n /** Subset of presets to show. If omitted, all presets are shown. */\n presets?: readonly DateRangePreset[];\n /** Size passed through to the trigger Button. Defaults to 'md'. */\n size?: ButtonProps['size'];\n /**\n * Replace the default Button trigger. Receives the current label (preset name or\n * custom range) and must return an element the menu/popover can attach to.\n */\n renderTrigger?: (props: { label: string; disabled?: boolean }) => ReactElement;\n}\n\nexport function DateTimeRangePicker({\n preset = 'all',\n onPresetChange,\n dateFrom,\n dateTo,\n onDateChange,\n onDateRangeChange,\n disabled,\n presets,\n size = 'md',\n renderTrigger,\n}: DateTimeRangePickerProps) {\n const visiblePresets = presets ? DATE_PRESETS.filter(p => presets.includes(p.value)) : DATE_PRESETS;\n const fallbackPreset: DateRangePreset = visiblePresets.find(p => p.value !== 'custom')?.value ?? 'all';\n const [customRangeOpen, setCustomRangeOpen] = useState(false);\n const [draftDateFrom, setDraftDateFrom] = useState<Date | undefined>(dateFrom);\n const [draftDateTo, setDraftDateTo] = useState<Date | undefined>(dateTo);\n const [draftTimeFrom, setDraftTimeFrom] = useState('12:00 AM');\n const [draftTimeTo, setDraftTimeTo] = useState('11:59 PM');\n const [customRangeError, setCustomRangeError] = useState<string | undefined>();\n const customRangeFieldName = useId();\n\n const datePresetLabel = DATE_PRESETS.find(p => p.value === preset)?.label ?? 'All';\n\n const handlePresetSelect = (value: DateRangePreset) => {\n onPresetChange?.(value);\n if (value === 'custom') {\n setDraftDateFrom(dateFrom);\n setDraftDateTo(dateTo);\n setDraftTimeFrom('12:00 AM');\n setDraftTimeTo('11:59 PM');\n setCustomRangeOpen(true);\n return;\n }\n const entry = DATE_PRESETS.find(p => p.value === value);\n if (entry?.ms) {\n onDateChange?.(new Date(Date.now() - entry.ms), 'from');\n onDateChange?.(undefined, 'to');\n } else {\n onDateChange?.(undefined, 'from');\n onDateChange?.(undefined, 'to');\n }\n };\n\n const applyCustomRange = () => {\n const fromDate = draftDateFrom ? (buildDateWithTime(draftDateFrom, draftTimeFrom) ?? draftDateFrom) : undefined;\n const toDate = draftDateTo ? (buildDateWithTime(draftDateTo, draftTimeTo) ?? draftDateTo) : undefined;\n if (fromDate && toDate && fromDate.getTime() > toDate.getTime()) {\n setCustomRangeError('Start date/time must be before end date/time');\n return;\n }\n setCustomRangeError(undefined);\n if (onDateRangeChange) {\n onDateRangeChange(fromDate, toDate);\n } else {\n onDateChange?.(fromDate, 'from');\n onDateChange?.(toDate, 'to');\n }\n setCustomRangeOpen(false);\n };\n\n if (preset === 'custom') {\n const customLabel = `${dateFrom ? dateFrom.toLocaleDateString() : 'Start'} \\u2013 ${dateTo ? dateTo.toLocaleDateString() : 'End'}`;\n return (\n <Popover open={customRangeOpen} onOpenChange={setCustomRangeOpen}>\n {renderTrigger ? (\n <PopoverTrigger render={renderTrigger({ label: customLabel, disabled })} />\n ) : (\n <PopoverTrigger asChild>\n <Button size={size} disabled={disabled} icon={<CalendarIcon />}>\n {customLabel}\n </Button>\n </PopoverTrigger>\n )}\n <PopoverContent align=\"start\" className={cn('w-auto p-0')}>\n <div\n role=\"group\"\n aria-label=\"Custom date range\"\n aria-invalid={customRangeError ? true : undefined}\n aria-describedby={customRangeError ? fieldErrorId(customRangeFieldName) : undefined}\n >\n <div className={cn('flex')}>\n <div className={cn('border-r border-border')}>\n <span className={cn('block px-4 pt-3 text-column text-muted-foreground')}>Start</span>\n <DatePicker\n mode=\"single\"\n selected={draftDateFrom}\n month={draftDateFrom}\n onSelect={setDraftDateFrom}\n disabled={disabled}\n toDate={draftDateTo}\n />\n <TimePicker\n className=\"mx-4 mb-3 w-auto\"\n defaultValue={draftTimeFrom}\n onValueChange={v => {\n if (!disabled) setDraftTimeFrom(v);\n }}\n />\n </div>\n <div>\n <span className={cn('block px-4 pt-3 text-column text-muted-foreground')}>End</span>\n <DatePicker\n mode=\"single\"\n selected={draftDateTo}\n month={draftDateTo}\n onSelect={setDraftDateTo}\n disabled={disabled}\n fromDate={draftDateFrom}\n />\n <TimePicker\n className=\"mx-4 mb-3 w-auto\"\n defaultValue={draftTimeTo}\n onValueChange={v => {\n if (!disabled) setDraftTimeTo(v);\n }}\n />\n </div>\n </div>\n {customRangeError && (\n <FieldBlock.ErrorMsg name={customRangeFieldName} className=\"px-4 pb-1\">\n {customRangeError}\n </FieldBlock.ErrorMsg>\n )}\n </div>\n <div className={cn('flex items-center justify-between px-4 pb-3')}>\n <Button\n variant=\"ghost\"\n size=\"sm\"\n disabled={disabled}\n onClick={() => {\n setCustomRangeError(undefined);\n handlePresetSelect(fallbackPreset);\n }}\n >\n ← Presets\n </Button>\n <Button icon={<Check />} variant=\"primary\" size=\"sm\" onClick={applyCustomRange} disabled={disabled}>\n Apply\n </Button>\n </div>\n </PopoverContent>\n </Popover>\n );\n }\n\n return (\n <DropdownMenu>\n {renderTrigger ? (\n <DropdownMenu.Trigger render={renderTrigger({ label: datePresetLabel, disabled })} />\n ) : (\n <DropdownMenu.Trigger asChild>\n <Button size={size} disabled={disabled} icon={<CalendarIcon />}>\n {datePresetLabel}\n </Button>\n </DropdownMenu.Trigger>\n )}\n <DropdownMenu.Content align=\"start\">\n {visiblePresets.map(p => (\n <DropdownMenu.Item key={p.value} onSelect={() => handlePresetSelect(p.value)}>\n {p.label}\n </DropdownMenu.Item>\n ))}\n </DropdownMenu.Content>\n </DropdownMenu>\n );\n}\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"date-time-range-picker-YGP0bTkl.js","sources":["../src/ds/components/DateTimeRangePicker/date-time-range-picker.tsx"],"sourcesContent":["import { isValid, parse } from 'date-fns';\nimport { CalendarIcon, Check } from 'lucide-react';\nimport { useId, useState } from 'react';\nimport type { ReactElement } from 'react';\nimport { Button } from '@/ds/components/Button/Button';\nimport type { ButtonProps } from '@/ds/components/Button/Button';\nimport { DatePicker, TimePicker } from '@/ds/components/DateTimePicker';\nimport { DropdownMenu } from '@/ds/components/DropdownMenu/dropdown-menu';\nimport { FieldBlock, fieldErrorId } from '@/ds/components/FormFieldBlocks';\nimport { Popover, PopoverTrigger, PopoverContent } from '@/ds/components/Popover/popover';\nimport { cn } from '@/lib/utils';\n\nexport type DateRangePreset = 'all' | 'last-24h' | 'last-3d' | 'last-7d' | 'last-14d' | 'last-30d' | 'custom';\n\nconst DATE_PRESETS: { value: DateRangePreset; label: string; ms?: number }[] = [\n { value: 'all', label: 'All' },\n { value: 'last-24h', label: 'Last 24 hours', ms: 24 * 60 * 60 * 1000 },\n { value: 'last-3d', label: 'Last 3 days', ms: 3 * 24 * 60 * 60 * 1000 },\n { value: 'last-7d', label: 'Last 7 days', ms: 7 * 24 * 60 * 60 * 1000 },\n { value: 'last-14d', label: 'Last 14 days', ms: 14 * 24 * 60 * 60 * 1000 },\n { value: 'last-30d', label: 'Last 30 days', ms: 30 * 24 * 60 * 60 * 1000 },\n { value: 'custom', label: 'Custom range...' },\n];\n\nfunction buildDateWithTime(date: Date, timeStr: string): Date | null {\n const dateOnly = new Date(date.getFullYear(), date.getMonth(), date.getDate());\n const combined = parse(timeStr, 'h:mm a', dateOnly);\n return isValid(combined) ? combined : null;\n}\n\nexport interface DateTimeRangePickerProps {\n preset?: DateRangePreset;\n onPresetChange?: (preset: DateRangePreset) => void;\n dateFrom?: Date;\n dateTo?: Date;\n onDateChange?: (value: Date | undefined, type: 'from' | 'to') => void;\n /**\n * Called once with both ends when a custom range is applied. When provided it replaces\n * the two `onDateChange` calls for that step, so consumers can write the range atomically.\n */\n onDateRangeChange?: (from: Date | undefined, to: Date | undefined) => void;\n disabled?: boolean;\n /** Subset of presets to show. If omitted, all presets are shown. */\n presets?: readonly DateRangePreset[];\n /** Size passed through to the trigger Button. Defaults to 'md'. */\n size?: ButtonProps['size'];\n /**\n * Replace the default Button trigger. Receives the current label (preset name or\n * custom range) and must return an element the menu/popover can attach to.\n */\n renderTrigger?: (props: { label: string; disabled?: boolean }) => ReactElement;\n}\n\nexport function DateTimeRangePicker({\n preset = 'all',\n onPresetChange,\n dateFrom,\n dateTo,\n onDateChange,\n onDateRangeChange,\n disabled,\n presets,\n size = 'md',\n renderTrigger,\n}: DateTimeRangePickerProps) {\n const visiblePresets = presets ? DATE_PRESETS.filter(p => presets.includes(p.value)) : DATE_PRESETS;\n const fallbackPreset: DateRangePreset = visiblePresets.find(p => p.value !== 'custom')?.value ?? 'all';\n const [customRangeOpen, setCustomRangeOpen] = useState(false);\n const [draftDateFrom, setDraftDateFrom] = useState<Date | undefined>(dateFrom);\n const [draftDateTo, setDraftDateTo] = useState<Date | undefined>(dateTo);\n const [draftTimeFrom, setDraftTimeFrom] = useState('12:00 AM');\n const [draftTimeTo, setDraftTimeTo] = useState('11:59 PM');\n const [customRangeError, setCustomRangeError] = useState<string | undefined>();\n const customRangeFieldName = useId();\n\n const datePresetLabel = DATE_PRESETS.find(p => p.value === preset)?.label ?? 'All';\n\n const handlePresetSelect = (value: DateRangePreset) => {\n onPresetChange?.(value);\n if (value === 'custom') {\n setDraftDateFrom(dateFrom);\n setDraftDateTo(dateTo);\n setDraftTimeFrom('12:00 AM');\n setDraftTimeTo('11:59 PM');\n setCustomRangeOpen(true);\n return;\n }\n const entry = DATE_PRESETS.find(p => p.value === value);\n if (entry?.ms) {\n onDateChange?.(new Date(Date.now() - entry.ms), 'from');\n onDateChange?.(undefined, 'to');\n } else {\n onDateChange?.(undefined, 'from');\n onDateChange?.(undefined, 'to');\n }\n };\n\n const applyCustomRange = () => {\n const fromDate = draftDateFrom ? (buildDateWithTime(draftDateFrom, draftTimeFrom) ?? draftDateFrom) : undefined;\n const toDate = draftDateTo ? (buildDateWithTime(draftDateTo, draftTimeTo) ?? draftDateTo) : undefined;\n if (fromDate && toDate && fromDate.getTime() > toDate.getTime()) {\n setCustomRangeError('Start date/time must be before end date/time');\n return;\n }\n setCustomRangeError(undefined);\n if (onDateRangeChange) {\n onDateRangeChange(fromDate, toDate);\n } else {\n onDateChange?.(fromDate, 'from');\n onDateChange?.(toDate, 'to');\n }\n setCustomRangeOpen(false);\n };\n\n if (preset === 'custom') {\n const customLabel = `${dateFrom ? dateFrom.toLocaleDateString() : 'Start'} \\u2013 ${dateTo ? dateTo.toLocaleDateString() : 'End'}`;\n return (\n <Popover open={customRangeOpen} onOpenChange={setCustomRangeOpen}>\n {renderTrigger ? (\n <PopoverTrigger render={renderTrigger({ label: customLabel, disabled })} />\n ) : (\n <PopoverTrigger asChild>\n <Button size={size} disabled={disabled} icon={<CalendarIcon />}>\n {customLabel}\n </Button>\n </PopoverTrigger>\n )}\n <PopoverContent align=\"start\" className={cn('w-auto p-0')}>\n <div\n role=\"group\"\n aria-label=\"Custom date range\"\n aria-invalid={customRangeError ? true : undefined}\n aria-describedby={customRangeError ? fieldErrorId(customRangeFieldName) : undefined}\n >\n <div className={cn('flex')}>\n <div className={cn('border-r border-border')}>\n <span className={cn('block px-4 pt-3 text-column text-muted-foreground')}>Start</span>\n <DatePicker\n mode=\"single\"\n selected={draftDateFrom}\n month={draftDateFrom}\n onSelect={setDraftDateFrom}\n disabled={disabled}\n toDate={draftDateTo}\n />\n <TimePicker\n className=\"mx-4 mb-3 w-auto\"\n defaultValue={draftTimeFrom}\n onValueChange={v => {\n if (!disabled) setDraftTimeFrom(v);\n }}\n />\n </div>\n <div>\n <span className={cn('block px-4 pt-3 text-column text-muted-foreground')}>End</span>\n <DatePicker\n mode=\"single\"\n selected={draftDateTo}\n month={draftDateTo}\n onSelect={setDraftDateTo}\n disabled={disabled}\n fromDate={draftDateFrom}\n />\n <TimePicker\n className=\"mx-4 mb-3 w-auto\"\n defaultValue={draftTimeTo}\n onValueChange={v => {\n if (!disabled) setDraftTimeTo(v);\n }}\n />\n </div>\n </div>\n {customRangeError && (\n <FieldBlock.ErrorMsg name={customRangeFieldName} className=\"px-4 pb-1\">\n {customRangeError}\n </FieldBlock.ErrorMsg>\n )}\n </div>\n <div className={cn('flex items-center justify-between px-4 pb-3')}>\n <Button\n variant=\"ghost\"\n size=\"sm\"\n disabled={disabled}\n onClick={() => {\n setCustomRangeError(undefined);\n handlePresetSelect(fallbackPreset);\n }}\n >\n ← Presets\n </Button>\n <Button icon={<Check />} variant=\"primary\" size=\"sm\" onClick={applyCustomRange} disabled={disabled}>\n Apply\n </Button>\n </div>\n </PopoverContent>\n </Popover>\n );\n }\n\n return (\n <DropdownMenu>\n {renderTrigger ? (\n <DropdownMenu.Trigger render={renderTrigger({ label: datePresetLabel, disabled })} />\n ) : (\n <DropdownMenu.Trigger asChild>\n <Button size={size} disabled={disabled} icon={<CalendarIcon />}>\n {datePresetLabel}\n </Button>\n </DropdownMenu.Trigger>\n )}\n <DropdownMenu.Content align=\"start\">\n {visiblePresets.map(p => (\n <DropdownMenu.Item key={p.value} onSelect={() => handlePresetSelect(p.value)}>\n {p.label}\n </DropdownMenu.Item>\n ))}\n </DropdownMenu.Content>\n </DropdownMenu>\n );\n}\n"],"names":[],"mappings":"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"}
|
|
@@ -4,7 +4,7 @@ const jsxRuntime = require('react/jsx-runtime');
|
|
|
4
4
|
const dialog = require('@base-ui/react/dialog');
|
|
5
5
|
const lucideReact = require('lucide-react');
|
|
6
6
|
const React = require('react');
|
|
7
|
-
const Button = require('./Button-
|
|
7
|
+
const Button = require('./Button-BAMnPqos.cjs');
|
|
8
8
|
const scrollArea = require('./scroll-area-BzOyuS8Y.cjs');
|
|
9
9
|
const primitives_raisedSurface = require('./primitives/raised-surface.cjs.js');
|
|
10
10
|
const dialog$1 = require('./dialog-75R05iBY.cjs');
|
|
@@ -277,4 +277,4 @@ exports.DialogTrigger = DialogTrigger;
|
|
|
277
277
|
exports.dialogActionLayoutClasses = dialogActionLayoutClasses;
|
|
278
278
|
exports.dialogActionSizeClasses = dialogActionSizeClasses;
|
|
279
279
|
exports.useDialogContext = useDialogContext;
|
|
280
|
-
//# sourceMappingURL=dialog-
|
|
280
|
+
//# sourceMappingURL=dialog-B2DGYuyi.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dialog-Bilo4jEU.cjs","sources":["../src/ds/components/Dialog/dialog-context.ts","../src/ds/components/Dialog/dialog.tsx"],"sourcesContent":["import { createContext, useContext } from 'react';\n\nexport type DialogVariant = 'default' | 'new';\nexport type DialogIntent = 'default' | 'destructive';\n\nexport type DialogContextValue = {\n variant: DialogVariant;\n intent: DialogIntent;\n pending: boolean;\n};\n\nexport const DialogContext = createContext<DialogContextValue>({\n variant: 'default',\n intent: 'default',\n pending: false,\n});\n\nexport function useDialogContext() {\n return useContext(DialogContext);\n}\n\nexport const dialogActionSizeClasses = {\n sm: 'min-h-control-sm',\n md: 'min-h-control-md',\n lg: 'min-h-control-lg',\n} as const;\n\nexport const dialogActionLayoutClasses = 'h-auto min-w-0 max-w-full whitespace-normal wrap-anywhere max-[22rem]:w-full';\n","import { Dialog as DialogPrimitive } from '@base-ui/react/dialog';\nimport { X } from 'lucide-react';\nimport * as React from 'react';\n\nimport { DialogAction } from './dialog-action';\nimport { DialogContext, dialogActionLayoutClasses, dialogActionSizeClasses, useDialogContext } from './dialog-context';\nimport type { DialogIntent, DialogVariant } from './dialog-context';\nimport { Button } from '@/ds/components/Button';\nimport type { TextButtonSize } from '@/ds/components/Button';\nimport { ScrollArea } from '@/ds/components/ScrollArea';\nimport { overlaySurfaceStyle } from '@/ds/primitives/raised-surface';\nimport { asChildRenderProps } from '@/lib/as-child';\nimport { cn } from '@/lib/utils';\n\nimport './dialog.css';\n\nexport type DialogProps = DialogPrimitive.Root.Props & {\n variant?: DialogVariant;\n intent?: DialogIntent;\n pending?: boolean;\n};\n\nfunction Dialog({ variant = 'default', intent = 'default', pending = false, onOpenChange, ...props }: DialogProps) {\n const isNew = variant === 'new';\n return (\n <DialogContext.Provider value={{ variant, intent, pending }}>\n <DialogPrimitive.Root\n {...props}\n disablePointerDismissal={props.disablePointerDismissal ?? (isNew && intent === 'destructive')}\n onOpenChange={(open, details) => {\n if (!open && pending) {\n details.cancel();\n return;\n }\n onOpenChange?.(open, details);\n }}\n />\n </DialogContext.Provider>\n );\n}\n\ntype DialogTriggerProps = DialogPrimitive.Trigger.Props & {\n /** @deprecated Use Base UI's native `render` prop instead for stronger composition typing. */\n asChild?: boolean;\n};\n\nconst DialogTrigger = React.forwardRef<HTMLButtonElement, DialogTriggerProps>(\n ({ asChild, children, ...props }, ref) => {\n return (\n <DialogPrimitive.Trigger ref={ref} {...asChildRenderProps(asChild, children)} {...props}>\n {asChild ? undefined : children}\n </DialogPrimitive.Trigger>\n );\n },\n);\nDialogTrigger.displayName = 'DialogTrigger';\n\nconst DialogPortal = DialogPrimitive.Portal;\n\ntype DialogCloseProps = DialogPrimitive.Close.Props & {\n /** @deprecated Use Base UI's native `render` prop instead for stronger composition typing. */\n asChild?: boolean;\n};\n\nconst DialogClose = React.forwardRef<HTMLButtonElement, DialogCloseProps>(({ asChild, children, ...props }, ref) => {\n return (\n <DialogPrimitive.Close ref={ref} {...asChildRenderProps(asChild, children)} {...props}>\n {asChild ? undefined : children}\n </DialogPrimitive.Close>\n );\n});\nDialogClose.displayName = 'DialogClose';\n\ntype DialogOverlayProps = Omit<DialogPrimitive.Backdrop.Props, 'className'> & {\n className?: string;\n};\n\nconst DialogOverlay = React.forwardRef<HTMLDivElement, DialogOverlayProps>(({ className, ...props }, ref) => {\n const { variant } = useDialogContext();\n return (\n <DialogPrimitive.Backdrop\n ref={ref}\n className={cn(\n variant === 'new'\n ? 'transition-opacity duration-normal ease-out data-[ending-style]:opacity-0 data-[starting-style]:opacity-0 motion-reduce:transition-none'\n : 'dialog-overlay-anim',\n 'fixed inset-0 z-50 bg-scrim backdrop-blur-xs',\n className,\n )}\n {...props}\n />\n );\n});\nDialogOverlay.displayName = 'DialogOverlay';\n\ntype DialogContentProps = Omit<DialogPrimitive.Popup.Props, 'className'> & {\n className?: string;\n showOverlay?: boolean;\n overlayClassName?: string;\n};\n\nconst DialogContent = React.forwardRef<HTMLDivElement, DialogContentProps>(\n ({ className, children, showOverlay = true, overlayClassName, initialFocus, ...props }, ref) => {\n const { variant, intent, pending } = useDialogContext();\n const closeRef = React.useRef<HTMLButtonElement>(null);\n if (variant === 'new') {\n return (\n <DialogPortal>\n {showOverlay && <DialogOverlay className={overlayClassName} />}\n <DialogPrimitive.Popup\n ref={ref}\n data-slot=\"dialog-content\"\n data-variant=\"new\"\n data-intent={intent}\n role={intent === 'destructive' ? 'alertdialog' : 'dialog'}\n initialFocus={initialFocus ?? (intent === 'destructive' ? closeRef : true)}\n aria-busy={pending || undefined}\n className={cn(\n 'fixed top-1/2 left-1/2 z-50 flex max-h-[calc(100dvh-2rem)] w-[calc(100%-2rem)] max-w-sm translate-[-50%] flex-col overflow-y-auto overscroll-contain rounded-xl outline-hidden',\n overlaySurfaceStyle,\n 'data-[ending-style]:scale-0.98 data-[starting-style]:scale-0.98 transition-[opacity,scale] duration-normal ease-out data-[ending-style]:opacity-0 data-[starting-style]:opacity-0 motion-reduce:transition-none',\n className,\n )}\n {...props}\n >\n {children}\n <div className=\"absolute top-2.5 right-3\">\n <DialogPrimitive.Close\n ref={closeRef}\n disabled={pending}\n render={\n <Button variant=\"ghost\" size=\"icon-sm\" aria-label=\"Close dialog\">\n <X />\n </Button>\n }\n />\n </div>\n </DialogPrimitive.Popup>\n </DialogPortal>\n );\n }\n return (\n <DialogPortal>\n {showOverlay && <DialogOverlay className={overlayClassName} />}\n <DialogPrimitive.Popup\n ref={ref}\n data-slot=\"dialog-content\"\n initialFocus={initialFocus}\n className={cn(\n 'dialog-content-anim',\n 'fixed top-[50%] left-[50%] z-50 grid translate-[-50%]',\n 'w-full max-w-[calc(100%-2rem)] sm:max-w-lg',\n 'rounded-xl backdrop-blur-md',\n overlaySurfaceStyle,\n 'focus-visible:outline-hidden',\n className,\n )}\n {...props}\n >\n {children}\n <DialogPrimitive.Close\n render={\n <Button variant=\"ghost\" size=\"sm\" className=\"absolute top-3 right-3\" aria-label=\"Close\">\n <X />\n </Button>\n }\n />\n </DialogPrimitive.Popup>\n </DialogPortal>\n );\n },\n);\nDialogContent.displayName = 'DialogContent';\n\nconst DialogHeader = ({ className, ...props }: React.HTMLAttributes<HTMLDivElement>) => {\n const { variant } = useDialogContext();\n return (\n <div\n className={cn(\n variant === 'new'\n ? 'flex min-w-0 shrink-0 flex-col gap-2 px-4 pt-3 pb-2'\n : 'flex flex-col gap-0.5 px-3 py-2.5 text-left',\n className,\n )}\n {...props}\n />\n );\n};\nDialogHeader.displayName = 'DialogHeader';\n\nconst DialogFooter = ({ className, ...props }: React.HTMLAttributes<HTMLDivElement>) => {\n const { variant } = useDialogContext();\n return (\n <div\n className={cn(\n variant === 'new'\n ? 'flex shrink-0 flex-wrap justify-end gap-2 px-4 pt-2 pb-3'\n : 'flex flex-col-reverse gap-1.5 px-3 py-2 sm:flex-row sm:justify-end',\n className,\n )}\n {...props}\n />\n );\n};\nDialogFooter.displayName = 'DialogFooter';\n\nconst DialogBody = React.forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>(\n ({ className, children, ...props }, ref) => {\n const { variant } = useDialogContext();\n if (variant === 'new') {\n return (\n <ScrollArea className=\"flex min-h-0 min-w-0 shrink flex-col\" viewPortClassName=\"h-auto min-h-0\" mask>\n <div\n ref={ref}\n className={cn(\n 'flex flex-col gap-3 px-4 py-2 text-body [overflow-wrap:anywhere] text-muted-foreground',\n className,\n )}\n {...props}\n >\n {children}\n </div>\n </ScrollArea>\n );\n }\n return (\n <div ref={ref} className={cn('max-h-[50vh] overflow-y-auto p-3', className)} {...props}>\n {children}\n </div>\n );\n },\n);\nDialogBody.displayName = 'DialogBody';\n\ntype DialogTitleProps = Omit<DialogPrimitive.Title.Props, 'className'> & {\n className?: string;\n};\n\nconst DialogTitle = React.forwardRef<HTMLHeadingElement, DialogTitleProps>(({ className, ...props }, ref) => {\n const { variant } = useDialogContext();\n return (\n <DialogPrimitive.Title\n ref={ref}\n className={cn('text-subheading text-foreground', variant === 'new' && 'pr-8 [overflow-wrap:anywhere]', className)}\n {...props}\n />\n );\n});\nDialogTitle.displayName = 'DialogTitle';\n\ntype DialogDescriptionProps = Omit<DialogPrimitive.Description.Props, 'className'> & {\n className?: string;\n};\n\nconst DialogDescription = React.forwardRef<HTMLParagraphElement, DialogDescriptionProps>(\n ({ className, ...props }, ref) => {\n const { variant } = useDialogContext();\n return (\n <DialogPrimitive.Description\n ref={ref}\n className={cn(\n variant === 'new' ? cn('text-caption text-muted-foreground', '[overflow-wrap:anywhere]') : 'sr-only',\n className,\n )}\n {...props}\n />\n );\n },\n);\nDialogDescription.displayName = 'DialogDescription';\n\ntype DialogCancelProps = DialogPrimitive.Close.Props & { size?: TextButtonSize };\n\nconst DialogCancel = React.forwardRef<HTMLButtonElement, DialogCancelProps>(\n ({ disabled, size = 'md', ...props }, ref) => {\n const { pending } = useDialogContext();\n return (\n <DialogPrimitive.Close\n ref={ref}\n render={\n <Button\n size={size}\n variant=\"ghost\"\n className={cn(dialogActionLayoutClasses, dialogActionSizeClasses[size])}\n children={props.children}\n />\n }\n {...props}\n disabled={disabled || pending}\n />\n );\n },\n);\nDialogCancel.displayName = 'DialogCancel';\n\nexport {\n Dialog,\n DialogPortal,\n DialogOverlay,\n DialogTrigger,\n DialogClose,\n DialogContent,\n DialogHeader,\n DialogFooter,\n DialogBody,\n DialogTitle,\n DialogDescription,\n DialogCancel,\n DialogAction,\n};\n"],"names":["createContext","useContext","jsx","DialogPrimitive","React","asChildRenderProps","cn","jsxs","overlaySurfaceStyle","Button","X","ScrollArea"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"dialog-B2DGYuyi.cjs","sources":["../src/ds/components/Dialog/dialog-context.ts","../src/ds/components/Dialog/dialog.tsx"],"sourcesContent":["import { createContext, useContext } from 'react';\n\nexport type DialogVariant = 'default' | 'new';\nexport type DialogIntent = 'default' | 'destructive';\n\nexport type DialogContextValue = {\n variant: DialogVariant;\n intent: DialogIntent;\n pending: boolean;\n};\n\nexport const DialogContext = createContext<DialogContextValue>({\n variant: 'default',\n intent: 'default',\n pending: false,\n});\n\nexport function useDialogContext() {\n return useContext(DialogContext);\n}\n\nexport const dialogActionSizeClasses = {\n sm: 'min-h-control-sm',\n md: 'min-h-control-md',\n lg: 'min-h-control-lg',\n} as const;\n\nexport const dialogActionLayoutClasses = 'h-auto min-w-0 max-w-full whitespace-normal wrap-anywhere max-[22rem]:w-full';\n","import { Dialog as DialogPrimitive } from '@base-ui/react/dialog';\nimport { X } from 'lucide-react';\nimport * as React from 'react';\n\nimport { DialogAction } from './dialog-action';\nimport { DialogContext, dialogActionLayoutClasses, dialogActionSizeClasses, useDialogContext } from './dialog-context';\nimport type { DialogIntent, DialogVariant } from './dialog-context';\nimport { Button } from '@/ds/components/Button';\nimport type { TextButtonSize } from '@/ds/components/Button';\nimport { ScrollArea } from '@/ds/components/ScrollArea';\nimport { overlaySurfaceStyle } from '@/ds/primitives/raised-surface';\nimport { asChildRenderProps } from '@/lib/as-child';\nimport { cn } from '@/lib/utils';\n\nimport './dialog.css';\n\nexport type DialogProps = DialogPrimitive.Root.Props & {\n variant?: DialogVariant;\n intent?: DialogIntent;\n pending?: boolean;\n};\n\nfunction Dialog({ variant = 'default', intent = 'default', pending = false, onOpenChange, ...props }: DialogProps) {\n const isNew = variant === 'new';\n return (\n <DialogContext.Provider value={{ variant, intent, pending }}>\n <DialogPrimitive.Root\n {...props}\n disablePointerDismissal={props.disablePointerDismissal ?? (isNew && intent === 'destructive')}\n onOpenChange={(open, details) => {\n if (!open && pending) {\n details.cancel();\n return;\n }\n onOpenChange?.(open, details);\n }}\n />\n </DialogContext.Provider>\n );\n}\n\ntype DialogTriggerProps = DialogPrimitive.Trigger.Props & {\n /** @deprecated Use Base UI's native `render` prop instead for stronger composition typing. */\n asChild?: boolean;\n};\n\nconst DialogTrigger = React.forwardRef<HTMLButtonElement, DialogTriggerProps>(\n ({ asChild, children, ...props }, ref) => {\n return (\n <DialogPrimitive.Trigger ref={ref} {...asChildRenderProps(asChild, children)} {...props}>\n {asChild ? undefined : children}\n </DialogPrimitive.Trigger>\n );\n },\n);\nDialogTrigger.displayName = 'DialogTrigger';\n\nconst DialogPortal = DialogPrimitive.Portal;\n\ntype DialogCloseProps = DialogPrimitive.Close.Props & {\n /** @deprecated Use Base UI's native `render` prop instead for stronger composition typing. */\n asChild?: boolean;\n};\n\nconst DialogClose = React.forwardRef<HTMLButtonElement, DialogCloseProps>(({ asChild, children, ...props }, ref) => {\n return (\n <DialogPrimitive.Close ref={ref} {...asChildRenderProps(asChild, children)} {...props}>\n {asChild ? undefined : children}\n </DialogPrimitive.Close>\n );\n});\nDialogClose.displayName = 'DialogClose';\n\ntype DialogOverlayProps = Omit<DialogPrimitive.Backdrop.Props, 'className'> & {\n className?: string;\n};\n\nconst DialogOverlay = React.forwardRef<HTMLDivElement, DialogOverlayProps>(({ className, ...props }, ref) => {\n const { variant } = useDialogContext();\n return (\n <DialogPrimitive.Backdrop\n ref={ref}\n className={cn(\n variant === 'new'\n ? 'transition-opacity duration-normal ease-out data-[ending-style]:opacity-0 data-[starting-style]:opacity-0 motion-reduce:transition-none'\n : 'dialog-overlay-anim',\n 'fixed inset-0 z-50 bg-scrim backdrop-blur-xs',\n className,\n )}\n {...props}\n />\n );\n});\nDialogOverlay.displayName = 'DialogOverlay';\n\ntype DialogContentProps = Omit<DialogPrimitive.Popup.Props, 'className'> & {\n className?: string;\n showOverlay?: boolean;\n overlayClassName?: string;\n};\n\nconst DialogContent = React.forwardRef<HTMLDivElement, DialogContentProps>(\n ({ className, children, showOverlay = true, overlayClassName, initialFocus, ...props }, ref) => {\n const { variant, intent, pending } = useDialogContext();\n const closeRef = React.useRef<HTMLButtonElement>(null);\n if (variant === 'new') {\n return (\n <DialogPortal>\n {showOverlay && <DialogOverlay className={overlayClassName} />}\n <DialogPrimitive.Popup\n ref={ref}\n data-slot=\"dialog-content\"\n data-variant=\"new\"\n data-intent={intent}\n role={intent === 'destructive' ? 'alertdialog' : 'dialog'}\n initialFocus={initialFocus ?? (intent === 'destructive' ? closeRef : true)}\n aria-busy={pending || undefined}\n className={cn(\n 'fixed top-1/2 left-1/2 z-50 flex max-h-[calc(100dvh-2rem)] w-[calc(100%-2rem)] max-w-sm translate-[-50%] flex-col overflow-y-auto overscroll-contain rounded-xl outline-hidden',\n overlaySurfaceStyle,\n 'data-[ending-style]:scale-0.98 data-[starting-style]:scale-0.98 transition-[opacity,scale] duration-normal ease-out data-[ending-style]:opacity-0 data-[starting-style]:opacity-0 motion-reduce:transition-none',\n className,\n )}\n {...props}\n >\n {children}\n <div className=\"absolute top-2.5 right-3\">\n <DialogPrimitive.Close\n ref={closeRef}\n disabled={pending}\n render={\n <Button variant=\"ghost\" size=\"icon-sm\" aria-label=\"Close dialog\">\n <X />\n </Button>\n }\n />\n </div>\n </DialogPrimitive.Popup>\n </DialogPortal>\n );\n }\n return (\n <DialogPortal>\n {showOverlay && <DialogOverlay className={overlayClassName} />}\n <DialogPrimitive.Popup\n ref={ref}\n data-slot=\"dialog-content\"\n initialFocus={initialFocus}\n className={cn(\n 'dialog-content-anim',\n 'fixed top-[50%] left-[50%] z-50 grid translate-[-50%]',\n 'w-full max-w-[calc(100%-2rem)] sm:max-w-lg',\n 'rounded-xl backdrop-blur-md',\n overlaySurfaceStyle,\n 'focus-visible:outline-hidden',\n className,\n )}\n {...props}\n >\n {children}\n <DialogPrimitive.Close\n render={\n <Button variant=\"ghost\" size=\"sm\" className=\"absolute top-3 right-3\" aria-label=\"Close\">\n <X />\n </Button>\n }\n />\n </DialogPrimitive.Popup>\n </DialogPortal>\n );\n },\n);\nDialogContent.displayName = 'DialogContent';\n\nconst DialogHeader = ({ className, ...props }: React.HTMLAttributes<HTMLDivElement>) => {\n const { variant } = useDialogContext();\n return (\n <div\n className={cn(\n variant === 'new'\n ? 'flex min-w-0 shrink-0 flex-col gap-2 px-4 pt-3 pb-2'\n : 'flex flex-col gap-0.5 px-3 py-2.5 text-left',\n className,\n )}\n {...props}\n />\n );\n};\nDialogHeader.displayName = 'DialogHeader';\n\nconst DialogFooter = ({ className, ...props }: React.HTMLAttributes<HTMLDivElement>) => {\n const { variant } = useDialogContext();\n return (\n <div\n className={cn(\n variant === 'new'\n ? 'flex shrink-0 flex-wrap justify-end gap-2 px-4 pt-2 pb-3'\n : 'flex flex-col-reverse gap-1.5 px-3 py-2 sm:flex-row sm:justify-end',\n className,\n )}\n {...props}\n />\n );\n};\nDialogFooter.displayName = 'DialogFooter';\n\nconst DialogBody = React.forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>(\n ({ className, children, ...props }, ref) => {\n const { variant } = useDialogContext();\n if (variant === 'new') {\n return (\n <ScrollArea className=\"flex min-h-0 min-w-0 shrink flex-col\" viewPortClassName=\"h-auto min-h-0\" mask>\n <div\n ref={ref}\n className={cn(\n 'flex flex-col gap-3 px-4 py-2 text-body [overflow-wrap:anywhere] text-muted-foreground',\n className,\n )}\n {...props}\n >\n {children}\n </div>\n </ScrollArea>\n );\n }\n return (\n <div ref={ref} className={cn('max-h-[50vh] overflow-y-auto p-3', className)} {...props}>\n {children}\n </div>\n );\n },\n);\nDialogBody.displayName = 'DialogBody';\n\ntype DialogTitleProps = Omit<DialogPrimitive.Title.Props, 'className'> & {\n className?: string;\n};\n\nconst DialogTitle = React.forwardRef<HTMLHeadingElement, DialogTitleProps>(({ className, ...props }, ref) => {\n const { variant } = useDialogContext();\n return (\n <DialogPrimitive.Title\n ref={ref}\n className={cn('text-subheading text-foreground', variant === 'new' && 'pr-8 [overflow-wrap:anywhere]', className)}\n {...props}\n />\n );\n});\nDialogTitle.displayName = 'DialogTitle';\n\ntype DialogDescriptionProps = Omit<DialogPrimitive.Description.Props, 'className'> & {\n className?: string;\n};\n\nconst DialogDescription = React.forwardRef<HTMLParagraphElement, DialogDescriptionProps>(\n ({ className, ...props }, ref) => {\n const { variant } = useDialogContext();\n return (\n <DialogPrimitive.Description\n ref={ref}\n className={cn(\n variant === 'new' ? cn('text-caption text-muted-foreground', '[overflow-wrap:anywhere]') : 'sr-only',\n className,\n )}\n {...props}\n />\n );\n },\n);\nDialogDescription.displayName = 'DialogDescription';\n\ntype DialogCancelProps = DialogPrimitive.Close.Props & { size?: TextButtonSize };\n\nconst DialogCancel = React.forwardRef<HTMLButtonElement, DialogCancelProps>(\n ({ disabled, size = 'md', ...props }, ref) => {\n const { pending } = useDialogContext();\n return (\n <DialogPrimitive.Close\n ref={ref}\n render={\n <Button\n size={size}\n variant=\"ghost\"\n className={cn(dialogActionLayoutClasses, dialogActionSizeClasses[size])}\n children={props.children}\n />\n }\n {...props}\n disabled={disabled || pending}\n />\n );\n },\n);\nDialogCancel.displayName = 'DialogCancel';\n\nexport {\n Dialog,\n DialogPortal,\n DialogOverlay,\n DialogTrigger,\n DialogClose,\n DialogContent,\n DialogHeader,\n DialogFooter,\n DialogBody,\n DialogTitle,\n DialogDescription,\n DialogCancel,\n DialogAction,\n};\n"],"names":["createContext","useContext","jsx","DialogPrimitive","React","asChildRenderProps","cn","jsxs","overlaySurfaceStyle","Button","X","ScrollArea"],"mappings":"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"}
|
|
@@ -3,7 +3,7 @@ import { Dialog as Dialog$1 } from '@base-ui/react/dialog';
|
|
|
3
3
|
import { X } from 'lucide-react';
|
|
4
4
|
import * as React from 'react';
|
|
5
5
|
import { createContext, useContext } from 'react';
|
|
6
|
-
import { B as Button } from './Button-
|
|
6
|
+
import { B as Button } from './Button-B8nF87ai.js';
|
|
7
7
|
import { S as ScrollArea } from './scroll-area-DyTZoISq.js';
|
|
8
8
|
import { overlaySurfaceStyle } from './primitives/raised-surface.es.js';
|
|
9
9
|
import { a as asChildRenderProps } from './dialog-BpW3qHc1.js';
|
|
@@ -243,4 +243,4 @@ const DialogCancel = React.forwardRef(
|
|
|
243
243
|
DialogCancel.displayName = "DialogCancel";
|
|
244
244
|
|
|
245
245
|
export { Dialog as D, DialogContent as a, DialogHeader as b, DialogTitle as c, DialogDescription as d, DialogBody as e, DialogClose as f, DialogFooter as g, dialogActionSizeClasses as h, dialogActionLayoutClasses as i, DialogCancel as j, DialogOverlay as k, DialogPortal as l, DialogTrigger as m, useDialogContext as u };
|
|
246
|
-
//# sourceMappingURL=dialog-
|
|
246
|
+
//# sourceMappingURL=dialog-BvDeW4yR.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dialog-DMOXPT0N.js","sources":["../src/ds/components/Dialog/dialog-context.ts","../src/ds/components/Dialog/dialog.tsx"],"sourcesContent":["import { createContext, useContext } from 'react';\n\nexport type DialogVariant = 'default' | 'new';\nexport type DialogIntent = 'default' | 'destructive';\n\nexport type DialogContextValue = {\n variant: DialogVariant;\n intent: DialogIntent;\n pending: boolean;\n};\n\nexport const DialogContext = createContext<DialogContextValue>({\n variant: 'default',\n intent: 'default',\n pending: false,\n});\n\nexport function useDialogContext() {\n return useContext(DialogContext);\n}\n\nexport const dialogActionSizeClasses = {\n sm: 'min-h-control-sm',\n md: 'min-h-control-md',\n lg: 'min-h-control-lg',\n} as const;\n\nexport const dialogActionLayoutClasses = 'h-auto min-w-0 max-w-full whitespace-normal wrap-anywhere max-[22rem]:w-full';\n","import { Dialog as DialogPrimitive } from '@base-ui/react/dialog';\nimport { X } from 'lucide-react';\nimport * as React from 'react';\n\nimport { DialogAction } from './dialog-action';\nimport { DialogContext, dialogActionLayoutClasses, dialogActionSizeClasses, useDialogContext } from './dialog-context';\nimport type { DialogIntent, DialogVariant } from './dialog-context';\nimport { Button } from '@/ds/components/Button';\nimport type { TextButtonSize } from '@/ds/components/Button';\nimport { ScrollArea } from '@/ds/components/ScrollArea';\nimport { overlaySurfaceStyle } from '@/ds/primitives/raised-surface';\nimport { asChildRenderProps } from '@/lib/as-child';\nimport { cn } from '@/lib/utils';\n\nimport './dialog.css';\n\nexport type DialogProps = DialogPrimitive.Root.Props & {\n variant?: DialogVariant;\n intent?: DialogIntent;\n pending?: boolean;\n};\n\nfunction Dialog({ variant = 'default', intent = 'default', pending = false, onOpenChange, ...props }: DialogProps) {\n const isNew = variant === 'new';\n return (\n <DialogContext.Provider value={{ variant, intent, pending }}>\n <DialogPrimitive.Root\n {...props}\n disablePointerDismissal={props.disablePointerDismissal ?? (isNew && intent === 'destructive')}\n onOpenChange={(open, details) => {\n if (!open && pending) {\n details.cancel();\n return;\n }\n onOpenChange?.(open, details);\n }}\n />\n </DialogContext.Provider>\n );\n}\n\ntype DialogTriggerProps = DialogPrimitive.Trigger.Props & {\n /** @deprecated Use Base UI's native `render` prop instead for stronger composition typing. */\n asChild?: boolean;\n};\n\nconst DialogTrigger = React.forwardRef<HTMLButtonElement, DialogTriggerProps>(\n ({ asChild, children, ...props }, ref) => {\n return (\n <DialogPrimitive.Trigger ref={ref} {...asChildRenderProps(asChild, children)} {...props}>\n {asChild ? undefined : children}\n </DialogPrimitive.Trigger>\n );\n },\n);\nDialogTrigger.displayName = 'DialogTrigger';\n\nconst DialogPortal = DialogPrimitive.Portal;\n\ntype DialogCloseProps = DialogPrimitive.Close.Props & {\n /** @deprecated Use Base UI's native `render` prop instead for stronger composition typing. */\n asChild?: boolean;\n};\n\nconst DialogClose = React.forwardRef<HTMLButtonElement, DialogCloseProps>(({ asChild, children, ...props }, ref) => {\n return (\n <DialogPrimitive.Close ref={ref} {...asChildRenderProps(asChild, children)} {...props}>\n {asChild ? undefined : children}\n </DialogPrimitive.Close>\n );\n});\nDialogClose.displayName = 'DialogClose';\n\ntype DialogOverlayProps = Omit<DialogPrimitive.Backdrop.Props, 'className'> & {\n className?: string;\n};\n\nconst DialogOverlay = React.forwardRef<HTMLDivElement, DialogOverlayProps>(({ className, ...props }, ref) => {\n const { variant } = useDialogContext();\n return (\n <DialogPrimitive.Backdrop\n ref={ref}\n className={cn(\n variant === 'new'\n ? 'transition-opacity duration-normal ease-out data-[ending-style]:opacity-0 data-[starting-style]:opacity-0 motion-reduce:transition-none'\n : 'dialog-overlay-anim',\n 'fixed inset-0 z-50 bg-scrim backdrop-blur-xs',\n className,\n )}\n {...props}\n />\n );\n});\nDialogOverlay.displayName = 'DialogOverlay';\n\ntype DialogContentProps = Omit<DialogPrimitive.Popup.Props, 'className'> & {\n className?: string;\n showOverlay?: boolean;\n overlayClassName?: string;\n};\n\nconst DialogContent = React.forwardRef<HTMLDivElement, DialogContentProps>(\n ({ className, children, showOverlay = true, overlayClassName, initialFocus, ...props }, ref) => {\n const { variant, intent, pending } = useDialogContext();\n const closeRef = React.useRef<HTMLButtonElement>(null);\n if (variant === 'new') {\n return (\n <DialogPortal>\n {showOverlay && <DialogOverlay className={overlayClassName} />}\n <DialogPrimitive.Popup\n ref={ref}\n data-slot=\"dialog-content\"\n data-variant=\"new\"\n data-intent={intent}\n role={intent === 'destructive' ? 'alertdialog' : 'dialog'}\n initialFocus={initialFocus ?? (intent === 'destructive' ? closeRef : true)}\n aria-busy={pending || undefined}\n className={cn(\n 'fixed top-1/2 left-1/2 z-50 flex max-h-[calc(100dvh-2rem)] w-[calc(100%-2rem)] max-w-sm translate-[-50%] flex-col overflow-y-auto overscroll-contain rounded-xl outline-hidden',\n overlaySurfaceStyle,\n 'data-[ending-style]:scale-0.98 data-[starting-style]:scale-0.98 transition-[opacity,scale] duration-normal ease-out data-[ending-style]:opacity-0 data-[starting-style]:opacity-0 motion-reduce:transition-none',\n className,\n )}\n {...props}\n >\n {children}\n <div className=\"absolute top-2.5 right-3\">\n <DialogPrimitive.Close\n ref={closeRef}\n disabled={pending}\n render={\n <Button variant=\"ghost\" size=\"icon-sm\" aria-label=\"Close dialog\">\n <X />\n </Button>\n }\n />\n </div>\n </DialogPrimitive.Popup>\n </DialogPortal>\n );\n }\n return (\n <DialogPortal>\n {showOverlay && <DialogOverlay className={overlayClassName} />}\n <DialogPrimitive.Popup\n ref={ref}\n data-slot=\"dialog-content\"\n initialFocus={initialFocus}\n className={cn(\n 'dialog-content-anim',\n 'fixed top-[50%] left-[50%] z-50 grid translate-[-50%]',\n 'w-full max-w-[calc(100%-2rem)] sm:max-w-lg',\n 'rounded-xl backdrop-blur-md',\n overlaySurfaceStyle,\n 'focus-visible:outline-hidden',\n className,\n )}\n {...props}\n >\n {children}\n <DialogPrimitive.Close\n render={\n <Button variant=\"ghost\" size=\"sm\" className=\"absolute top-3 right-3\" aria-label=\"Close\">\n <X />\n </Button>\n }\n />\n </DialogPrimitive.Popup>\n </DialogPortal>\n );\n },\n);\nDialogContent.displayName = 'DialogContent';\n\nconst DialogHeader = ({ className, ...props }: React.HTMLAttributes<HTMLDivElement>) => {\n const { variant } = useDialogContext();\n return (\n <div\n className={cn(\n variant === 'new'\n ? 'flex min-w-0 shrink-0 flex-col gap-2 px-4 pt-3 pb-2'\n : 'flex flex-col gap-0.5 px-3 py-2.5 text-left',\n className,\n )}\n {...props}\n />\n );\n};\nDialogHeader.displayName = 'DialogHeader';\n\nconst DialogFooter = ({ className, ...props }: React.HTMLAttributes<HTMLDivElement>) => {\n const { variant } = useDialogContext();\n return (\n <div\n className={cn(\n variant === 'new'\n ? 'flex shrink-0 flex-wrap justify-end gap-2 px-4 pt-2 pb-3'\n : 'flex flex-col-reverse gap-1.5 px-3 py-2 sm:flex-row sm:justify-end',\n className,\n )}\n {...props}\n />\n );\n};\nDialogFooter.displayName = 'DialogFooter';\n\nconst DialogBody = React.forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>(\n ({ className, children, ...props }, ref) => {\n const { variant } = useDialogContext();\n if (variant === 'new') {\n return (\n <ScrollArea className=\"flex min-h-0 min-w-0 shrink flex-col\" viewPortClassName=\"h-auto min-h-0\" mask>\n <div\n ref={ref}\n className={cn(\n 'flex flex-col gap-3 px-4 py-2 text-body [overflow-wrap:anywhere] text-muted-foreground',\n className,\n )}\n {...props}\n >\n {children}\n </div>\n </ScrollArea>\n );\n }\n return (\n <div ref={ref} className={cn('max-h-[50vh] overflow-y-auto p-3', className)} {...props}>\n {children}\n </div>\n );\n },\n);\nDialogBody.displayName = 'DialogBody';\n\ntype DialogTitleProps = Omit<DialogPrimitive.Title.Props, 'className'> & {\n className?: string;\n};\n\nconst DialogTitle = React.forwardRef<HTMLHeadingElement, DialogTitleProps>(({ className, ...props }, ref) => {\n const { variant } = useDialogContext();\n return (\n <DialogPrimitive.Title\n ref={ref}\n className={cn('text-subheading text-foreground', variant === 'new' && 'pr-8 [overflow-wrap:anywhere]', className)}\n {...props}\n />\n );\n});\nDialogTitle.displayName = 'DialogTitle';\n\ntype DialogDescriptionProps = Omit<DialogPrimitive.Description.Props, 'className'> & {\n className?: string;\n};\n\nconst DialogDescription = React.forwardRef<HTMLParagraphElement, DialogDescriptionProps>(\n ({ className, ...props }, ref) => {\n const { variant } = useDialogContext();\n return (\n <DialogPrimitive.Description\n ref={ref}\n className={cn(\n variant === 'new' ? cn('text-caption text-muted-foreground', '[overflow-wrap:anywhere]') : 'sr-only',\n className,\n )}\n {...props}\n />\n );\n },\n);\nDialogDescription.displayName = 'DialogDescription';\n\ntype DialogCancelProps = DialogPrimitive.Close.Props & { size?: TextButtonSize };\n\nconst DialogCancel = React.forwardRef<HTMLButtonElement, DialogCancelProps>(\n ({ disabled, size = 'md', ...props }, ref) => {\n const { pending } = useDialogContext();\n return (\n <DialogPrimitive.Close\n ref={ref}\n render={\n <Button\n size={size}\n variant=\"ghost\"\n className={cn(dialogActionLayoutClasses, dialogActionSizeClasses[size])}\n children={props.children}\n />\n }\n {...props}\n disabled={disabled || pending}\n />\n );\n },\n);\nDialogCancel.displayName = 'DialogCancel';\n\nexport {\n Dialog,\n DialogPortal,\n DialogOverlay,\n DialogTrigger,\n DialogClose,\n DialogContent,\n DialogHeader,\n DialogFooter,\n DialogBody,\n DialogTitle,\n DialogDescription,\n DialogCancel,\n DialogAction,\n};\n"],"names":["DialogPrimitive"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"dialog-BvDeW4yR.js","sources":["../src/ds/components/Dialog/dialog-context.ts","../src/ds/components/Dialog/dialog.tsx"],"sourcesContent":["import { createContext, useContext } from 'react';\n\nexport type DialogVariant = 'default' | 'new';\nexport type DialogIntent = 'default' | 'destructive';\n\nexport type DialogContextValue = {\n variant: DialogVariant;\n intent: DialogIntent;\n pending: boolean;\n};\n\nexport const DialogContext = createContext<DialogContextValue>({\n variant: 'default',\n intent: 'default',\n pending: false,\n});\n\nexport function useDialogContext() {\n return useContext(DialogContext);\n}\n\nexport const dialogActionSizeClasses = {\n sm: 'min-h-control-sm',\n md: 'min-h-control-md',\n lg: 'min-h-control-lg',\n} as const;\n\nexport const dialogActionLayoutClasses = 'h-auto min-w-0 max-w-full whitespace-normal wrap-anywhere max-[22rem]:w-full';\n","import { Dialog as DialogPrimitive } from '@base-ui/react/dialog';\nimport { X } from 'lucide-react';\nimport * as React from 'react';\n\nimport { DialogAction } from './dialog-action';\nimport { DialogContext, dialogActionLayoutClasses, dialogActionSizeClasses, useDialogContext } from './dialog-context';\nimport type { DialogIntent, DialogVariant } from './dialog-context';\nimport { Button } from '@/ds/components/Button';\nimport type { TextButtonSize } from '@/ds/components/Button';\nimport { ScrollArea } from '@/ds/components/ScrollArea';\nimport { overlaySurfaceStyle } from '@/ds/primitives/raised-surface';\nimport { asChildRenderProps } from '@/lib/as-child';\nimport { cn } from '@/lib/utils';\n\nimport './dialog.css';\n\nexport type DialogProps = DialogPrimitive.Root.Props & {\n variant?: DialogVariant;\n intent?: DialogIntent;\n pending?: boolean;\n};\n\nfunction Dialog({ variant = 'default', intent = 'default', pending = false, onOpenChange, ...props }: DialogProps) {\n const isNew = variant === 'new';\n return (\n <DialogContext.Provider value={{ variant, intent, pending }}>\n <DialogPrimitive.Root\n {...props}\n disablePointerDismissal={props.disablePointerDismissal ?? (isNew && intent === 'destructive')}\n onOpenChange={(open, details) => {\n if (!open && pending) {\n details.cancel();\n return;\n }\n onOpenChange?.(open, details);\n }}\n />\n </DialogContext.Provider>\n );\n}\n\ntype DialogTriggerProps = DialogPrimitive.Trigger.Props & {\n /** @deprecated Use Base UI's native `render` prop instead for stronger composition typing. */\n asChild?: boolean;\n};\n\nconst DialogTrigger = React.forwardRef<HTMLButtonElement, DialogTriggerProps>(\n ({ asChild, children, ...props }, ref) => {\n return (\n <DialogPrimitive.Trigger ref={ref} {...asChildRenderProps(asChild, children)} {...props}>\n {asChild ? undefined : children}\n </DialogPrimitive.Trigger>\n );\n },\n);\nDialogTrigger.displayName = 'DialogTrigger';\n\nconst DialogPortal = DialogPrimitive.Portal;\n\ntype DialogCloseProps = DialogPrimitive.Close.Props & {\n /** @deprecated Use Base UI's native `render` prop instead for stronger composition typing. */\n asChild?: boolean;\n};\n\nconst DialogClose = React.forwardRef<HTMLButtonElement, DialogCloseProps>(({ asChild, children, ...props }, ref) => {\n return (\n <DialogPrimitive.Close ref={ref} {...asChildRenderProps(asChild, children)} {...props}>\n {asChild ? undefined : children}\n </DialogPrimitive.Close>\n );\n});\nDialogClose.displayName = 'DialogClose';\n\ntype DialogOverlayProps = Omit<DialogPrimitive.Backdrop.Props, 'className'> & {\n className?: string;\n};\n\nconst DialogOverlay = React.forwardRef<HTMLDivElement, DialogOverlayProps>(({ className, ...props }, ref) => {\n const { variant } = useDialogContext();\n return (\n <DialogPrimitive.Backdrop\n ref={ref}\n className={cn(\n variant === 'new'\n ? 'transition-opacity duration-normal ease-out data-[ending-style]:opacity-0 data-[starting-style]:opacity-0 motion-reduce:transition-none'\n : 'dialog-overlay-anim',\n 'fixed inset-0 z-50 bg-scrim backdrop-blur-xs',\n className,\n )}\n {...props}\n />\n );\n});\nDialogOverlay.displayName = 'DialogOverlay';\n\ntype DialogContentProps = Omit<DialogPrimitive.Popup.Props, 'className'> & {\n className?: string;\n showOverlay?: boolean;\n overlayClassName?: string;\n};\n\nconst DialogContent = React.forwardRef<HTMLDivElement, DialogContentProps>(\n ({ className, children, showOverlay = true, overlayClassName, initialFocus, ...props }, ref) => {\n const { variant, intent, pending } = useDialogContext();\n const closeRef = React.useRef<HTMLButtonElement>(null);\n if (variant === 'new') {\n return (\n <DialogPortal>\n {showOverlay && <DialogOverlay className={overlayClassName} />}\n <DialogPrimitive.Popup\n ref={ref}\n data-slot=\"dialog-content\"\n data-variant=\"new\"\n data-intent={intent}\n role={intent === 'destructive' ? 'alertdialog' : 'dialog'}\n initialFocus={initialFocus ?? (intent === 'destructive' ? closeRef : true)}\n aria-busy={pending || undefined}\n className={cn(\n 'fixed top-1/2 left-1/2 z-50 flex max-h-[calc(100dvh-2rem)] w-[calc(100%-2rem)] max-w-sm translate-[-50%] flex-col overflow-y-auto overscroll-contain rounded-xl outline-hidden',\n overlaySurfaceStyle,\n 'data-[ending-style]:scale-0.98 data-[starting-style]:scale-0.98 transition-[opacity,scale] duration-normal ease-out data-[ending-style]:opacity-0 data-[starting-style]:opacity-0 motion-reduce:transition-none',\n className,\n )}\n {...props}\n >\n {children}\n <div className=\"absolute top-2.5 right-3\">\n <DialogPrimitive.Close\n ref={closeRef}\n disabled={pending}\n render={\n <Button variant=\"ghost\" size=\"icon-sm\" aria-label=\"Close dialog\">\n <X />\n </Button>\n }\n />\n </div>\n </DialogPrimitive.Popup>\n </DialogPortal>\n );\n }\n return (\n <DialogPortal>\n {showOverlay && <DialogOverlay className={overlayClassName} />}\n <DialogPrimitive.Popup\n ref={ref}\n data-slot=\"dialog-content\"\n initialFocus={initialFocus}\n className={cn(\n 'dialog-content-anim',\n 'fixed top-[50%] left-[50%] z-50 grid translate-[-50%]',\n 'w-full max-w-[calc(100%-2rem)] sm:max-w-lg',\n 'rounded-xl backdrop-blur-md',\n overlaySurfaceStyle,\n 'focus-visible:outline-hidden',\n className,\n )}\n {...props}\n >\n {children}\n <DialogPrimitive.Close\n render={\n <Button variant=\"ghost\" size=\"sm\" className=\"absolute top-3 right-3\" aria-label=\"Close\">\n <X />\n </Button>\n }\n />\n </DialogPrimitive.Popup>\n </DialogPortal>\n );\n },\n);\nDialogContent.displayName = 'DialogContent';\n\nconst DialogHeader = ({ className, ...props }: React.HTMLAttributes<HTMLDivElement>) => {\n const { variant } = useDialogContext();\n return (\n <div\n className={cn(\n variant === 'new'\n ? 'flex min-w-0 shrink-0 flex-col gap-2 px-4 pt-3 pb-2'\n : 'flex flex-col gap-0.5 px-3 py-2.5 text-left',\n className,\n )}\n {...props}\n />\n );\n};\nDialogHeader.displayName = 'DialogHeader';\n\nconst DialogFooter = ({ className, ...props }: React.HTMLAttributes<HTMLDivElement>) => {\n const { variant } = useDialogContext();\n return (\n <div\n className={cn(\n variant === 'new'\n ? 'flex shrink-0 flex-wrap justify-end gap-2 px-4 pt-2 pb-3'\n : 'flex flex-col-reverse gap-1.5 px-3 py-2 sm:flex-row sm:justify-end',\n className,\n )}\n {...props}\n />\n );\n};\nDialogFooter.displayName = 'DialogFooter';\n\nconst DialogBody = React.forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>(\n ({ className, children, ...props }, ref) => {\n const { variant } = useDialogContext();\n if (variant === 'new') {\n return (\n <ScrollArea className=\"flex min-h-0 min-w-0 shrink flex-col\" viewPortClassName=\"h-auto min-h-0\" mask>\n <div\n ref={ref}\n className={cn(\n 'flex flex-col gap-3 px-4 py-2 text-body [overflow-wrap:anywhere] text-muted-foreground',\n className,\n )}\n {...props}\n >\n {children}\n </div>\n </ScrollArea>\n );\n }\n return (\n <div ref={ref} className={cn('max-h-[50vh] overflow-y-auto p-3', className)} {...props}>\n {children}\n </div>\n );\n },\n);\nDialogBody.displayName = 'DialogBody';\n\ntype DialogTitleProps = Omit<DialogPrimitive.Title.Props, 'className'> & {\n className?: string;\n};\n\nconst DialogTitle = React.forwardRef<HTMLHeadingElement, DialogTitleProps>(({ className, ...props }, ref) => {\n const { variant } = useDialogContext();\n return (\n <DialogPrimitive.Title\n ref={ref}\n className={cn('text-subheading text-foreground', variant === 'new' && 'pr-8 [overflow-wrap:anywhere]', className)}\n {...props}\n />\n );\n});\nDialogTitle.displayName = 'DialogTitle';\n\ntype DialogDescriptionProps = Omit<DialogPrimitive.Description.Props, 'className'> & {\n className?: string;\n};\n\nconst DialogDescription = React.forwardRef<HTMLParagraphElement, DialogDescriptionProps>(\n ({ className, ...props }, ref) => {\n const { variant } = useDialogContext();\n return (\n <DialogPrimitive.Description\n ref={ref}\n className={cn(\n variant === 'new' ? cn('text-caption text-muted-foreground', '[overflow-wrap:anywhere]') : 'sr-only',\n className,\n )}\n {...props}\n />\n );\n },\n);\nDialogDescription.displayName = 'DialogDescription';\n\ntype DialogCancelProps = DialogPrimitive.Close.Props & { size?: TextButtonSize };\n\nconst DialogCancel = React.forwardRef<HTMLButtonElement, DialogCancelProps>(\n ({ disabled, size = 'md', ...props }, ref) => {\n const { pending } = useDialogContext();\n return (\n <DialogPrimitive.Close\n ref={ref}\n render={\n <Button\n size={size}\n variant=\"ghost\"\n className={cn(dialogActionLayoutClasses, dialogActionSizeClasses[size])}\n children={props.children}\n />\n }\n {...props}\n disabled={disabled || pending}\n />\n );\n },\n);\nDialogCancel.displayName = 'DialogCancel';\n\nexport {\n Dialog,\n DialogPortal,\n DialogOverlay,\n DialogTrigger,\n DialogClose,\n DialogContent,\n DialogHeader,\n DialogFooter,\n DialogBody,\n DialogTitle,\n DialogDescription,\n DialogCancel,\n DialogAction,\n};\n"],"names":["DialogPrimitive"],"mappings":";;;;;;;;;;;AAWO,MAAM,gBAAgB,aAAA,CAAkC;AAAA,EAC7D,OAAA,EAAS,SAAA;AAAA,EACT,MAAA,EAAQ,SAAA;AAAA,EACR,OAAA,EAAS;AACX,CAAC,CAAA;AAEM,SAAS,gBAAA,GAAmB;AACjC,EAAA,OAAO,WAAW,aAAa,CAAA;AACjC;AAEO,MAAM,uBAAA,GAA0B;AAAA,EACrC,EAAA,EAAI,kBAAA;AAAA,EACJ,EAAA,EAAI,kBAAA;AAAA,EACJ,EAAA,EAAI;AACN;AAEO,MAAM,yBAAA,GAA4B;;ACLzC,SAAS,MAAA,CAAO,EAAE,OAAA,GAAU,SAAA,EAAW,MAAA,GAAS,SAAA,EAAW,OAAA,GAAU,KAAA,EAAO,YAAA,EAAc,GAAG,KAAA,EAAM,EAAgB;AACjH,EAAA,MAAM,QAAQ,OAAA,KAAY,KAAA;AAC1B,EAAA,uBACE,GAAA,CAAC,cAAc,QAAA,EAAd,EAAuB,OAAO,EAAE,OAAA,EAAS,MAAA,EAAQ,OAAA,EAAQ,EACxD,QAAA,kBAAA,GAAA;AAAA,IAACA,QAAA,CAAgB,IAAA;AAAA,IAAhB;AAAA,MACE,GAAG,KAAA;AAAA,MACJ,uBAAA,EAAyB,KAAA,CAAM,uBAAA,KAA4B,KAAA,IAAS,MAAA,KAAW,aAAA,CAAA;AAAA,MAC/E,YAAA,EAAc,CAAC,IAAA,EAAM,OAAA,KAAY;AAC/B,QAAA,IAAI,CAAC,QAAQ,OAAA,EAAS;AACpB,UAAA,OAAA,CAAQ,MAAA,EAAO;AACf,UAAA;AAAA,QACF;AACA,QAAA,YAAA,GAAe,MAAM,OAAO,CAAA;AAAA,MAC9B;AAAA;AAAA,GACF,EACF,CAAA;AAEJ;AAOA,MAAM,gBAAgB,KAAA,CAAM,UAAA;AAAA,EAC1B,CAAC,EAAE,OAAA,EAAS,UAAU,GAAG,KAAA,IAAS,GAAA,KAAQ;AACxC,IAAA,uBACE,GAAA,CAACA,QAAA,CAAgB,OAAA,EAAhB,EAAwB,KAAW,GAAG,kBAAA,CAAmB,OAAA,EAAS,QAAQ,CAAA,EAAI,GAAG,KAAA,EAC/E,QAAA,EAAA,OAAA,GAAU,SAAY,QAAA,EACzB,CAAA;AAAA,EAEJ;AACF;AACA,aAAA,CAAc,WAAA,GAAc,eAAA;AAE5B,MAAM,eAAeA,QAAA,CAAgB;AAOrC,MAAM,WAAA,GAAc,KAAA,CAAM,UAAA,CAAgD,CAAC,EAAE,SAAS,QAAA,EAAU,GAAG,KAAA,EAAM,EAAG,GAAA,KAAQ;AAClH,EAAA,uBACE,GAAA,CAACA,QAAA,CAAgB,KAAA,EAAhB,EAAsB,KAAW,GAAG,kBAAA,CAAmB,OAAA,EAAS,QAAQ,CAAA,EAAI,GAAG,KAAA,EAC7E,QAAA,EAAA,OAAA,GAAU,SAAY,QAAA,EACzB,CAAA;AAEJ,CAAC;AACD,WAAA,CAAY,WAAA,GAAc,aAAA;AAM1B,MAAM,aAAA,GAAgB,MAAM,UAAA,CAA+C,CAAC,EAAE,SAAA,EAAW,GAAG,KAAA,EAAM,EAAG,GAAA,KAAQ;AAC3G,EAAA,MAAM,EAAE,OAAA,EAAQ,GAAI,gBAAA,EAAiB;AACrC,EAAA,uBACE,GAAA;AAAA,IAACA,QAAA,CAAgB,QAAA;AAAA,IAAhB;AAAA,MACC,GAAA;AAAA,MACA,SAAA,EAAW,EAAA;AAAA,QACT,OAAA,KAAY,QACR,yIAAA,GACA,qBAAA;AAAA,QACJ,8CAAA;AAAA,QACA;AAAA,OACF;AAAA,MACC,GAAG;AAAA;AAAA,GACN;AAEJ,CAAC;AACD,aAAA,CAAc,WAAA,GAAc,eAAA;AAQ5B,MAAM,gBAAgB,KAAA,CAAM,UAAA;AAAA,EAC1B,CAAC,EAAE,SAAA,EAAW,QAAA,EAAU,WAAA,GAAc,IAAA,EAAM,gBAAA,EAAkB,YAAA,EAAc,GAAG,KAAA,EAAM,EAAG,GAAA,KAAQ;AAC9F,IAAA,MAAM,EAAE,OAAA,EAAS,MAAA,EAAQ,OAAA,KAAY,gBAAA,EAAiB;AACtD,IAAA,MAAM,QAAA,GAAW,KAAA,CAAM,MAAA,CAA0B,IAAI,CAAA;AACrD,IAAA,IAAI,YAAY,KAAA,EAAO;AACrB,MAAA,4BACG,YAAA,EAAA,EACE,QAAA,EAAA;AAAA,QAAA,WAAA,oBAAe,GAAA,CAAC,aAAA,EAAA,EAAc,SAAA,EAAW,gBAAA,EAAkB,CAAA;AAAA,wBAC5D,IAAA;AAAA,UAACA,QAAA,CAAgB,KAAA;AAAA,UAAhB;AAAA,YACC,GAAA;AAAA,YACA,WAAA,EAAU,gBAAA;AAAA,YACV,cAAA,EAAa,KAAA;AAAA,YACb,aAAA,EAAa,MAAA;AAAA,YACb,IAAA,EAAM,MAAA,KAAW,aAAA,GAAgB,aAAA,GAAgB,QAAA;AAAA,YACjD,YAAA,EAAc,YAAA,KAAiB,MAAA,KAAW,aAAA,GAAgB,QAAA,GAAW,IAAA,CAAA;AAAA,YACrE,aAAW,OAAA,IAAW,MAAA;AAAA,YACtB,SAAA,EAAW,EAAA;AAAA,cACT,gLAAA;AAAA,cACA,mBAAA;AAAA,cACA,iNAAA;AAAA,cACA;AAAA,aACF;AAAA,YACC,GAAG,KAAA;AAAA,YAEH,QAAA,EAAA;AAAA,cAAA,QAAA;AAAA,8BACD,GAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,0BAAA,EACb,QAAA,kBAAA,GAAA;AAAA,gBAACA,QAAA,CAAgB,KAAA;AAAA,gBAAhB;AAAA,kBACC,GAAA,EAAK,QAAA;AAAA,kBACL,QAAA,EAAU,OAAA;AAAA,kBACV,MAAA,kBACE,GAAA,CAAC,MAAA,EAAA,EAAO,OAAA,EAAQ,OAAA,EAAQ,IAAA,EAAK,SAAA,EAAU,YAAA,EAAW,cAAA,EAChD,QAAA,kBAAA,GAAA,CAAC,CAAA,EAAA,EAAE,CAAA,EACL;AAAA;AAAA,eAEJ,EACF;AAAA;AAAA;AAAA;AACF,OAAA,EACF,CAAA;AAAA,IAEJ;AACA,IAAA,4BACG,YAAA,EAAA,EACE,QAAA,EAAA;AAAA,MAAA,WAAA,oBAAe,GAAA,CAAC,aAAA,EAAA,EAAc,SAAA,EAAW,gBAAA,EAAkB,CAAA;AAAA,sBAC5D,IAAA;AAAA,QAACA,QAAA,CAAgB,KAAA;AAAA,QAAhB;AAAA,UACC,GAAA;AAAA,UACA,WAAA,EAAU,gBAAA;AAAA,UACV,YAAA;AAAA,UACA,SAAA,EAAW,EAAA;AAAA,YACT,qBAAA;AAAA,YACA,uDAAA;AAAA,YACA,4CAAA;AAAA,YACA,6BAAA;AAAA,YACA,mBAAA;AAAA,YACA,8BAAA;AAAA,YACA;AAAA,WACF;AAAA,UACC,GAAG,KAAA;AAAA,UAEH,QAAA,EAAA;AAAA,YAAA,QAAA;AAAA,4BACD,GAAA;AAAA,cAACA,QAAA,CAAgB,KAAA;AAAA,cAAhB;AAAA,gBACC,MAAA,kBACE,GAAA,CAAC,MAAA,EAAA,EAAO,OAAA,EAAQ,OAAA,EAAQ,IAAA,EAAK,IAAA,EAAK,SAAA,EAAU,wBAAA,EAAyB,YAAA,EAAW,OAAA,EAC9E,QAAA,kBAAA,GAAA,CAAC,KAAE,CAAA,EACL;AAAA;AAAA;AAEJ;AAAA;AAAA;AACF,KAAA,EACF,CAAA;AAAA,EAEJ;AACF;AACA,aAAA,CAAc,WAAA,GAAc,eAAA;AAE5B,MAAM,eAAe,CAAC,EAAE,SAAA,EAAW,GAAG,OAAM,KAA4C;AACtF,EAAA,MAAM,EAAE,OAAA,EAAQ,GAAI,gBAAA,EAAiB;AACrC,EAAA,uBACE,GAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,SAAA,EAAW,EAAA;AAAA,QACT,OAAA,KAAY,QACR,qDAAA,GACA,6CAAA;AAAA,QACJ;AAAA,OACF;AAAA,MACC,GAAG;AAAA;AAAA,GACN;AAEJ;AACA,YAAA,CAAa,WAAA,GAAc,cAAA;AAE3B,MAAM,eAAe,CAAC,EAAE,SAAA,EAAW,GAAG,OAAM,KAA4C;AACtF,EAAA,MAAM,EAAE,OAAA,EAAQ,GAAI,gBAAA,EAAiB;AACrC,EAAA,uBACE,GAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,SAAA,EAAW,EAAA;AAAA,QACT,OAAA,KAAY,QACR,0DAAA,GACA,oEAAA;AAAA,QACJ;AAAA,OACF;AAAA,MACC,GAAG;AAAA;AAAA,GACN;AAEJ;AACA,YAAA,CAAa,WAAA,GAAc,cAAA;AAE3B,MAAM,aAAa,KAAA,CAAM,UAAA;AAAA,EACvB,CAAC,EAAE,SAAA,EAAW,UAAU,GAAG,KAAA,IAAS,GAAA,KAAQ;AAC1C,IAAA,MAAM,EAAE,OAAA,EAAQ,GAAI,gBAAA,EAAiB;AACrC,IAAA,IAAI,YAAY,KAAA,EAAO;AACrB,MAAA,2BACG,UAAA,EAAA,EAAW,SAAA,EAAU,wCAAuC,iBAAA,EAAkB,gBAAA,EAAiB,MAAI,IAAA,EAClG,QAAA,kBAAA,GAAA;AAAA,QAAC,KAAA;AAAA,QAAA;AAAA,UACC,GAAA;AAAA,UACA,SAAA,EAAW,EAAA;AAAA,YACT,wFAAA;AAAA,YACA;AAAA,WACF;AAAA,UACC,GAAG,KAAA;AAAA,UAEH;AAAA;AAAA,OACH,EACF,CAAA;AAAA,IAEJ;AACA,IAAA,uBACE,GAAA,CAAC,KAAA,EAAA,EAAI,GAAA,EAAU,SAAA,EAAW,EAAA,CAAG,oCAAoC,SAAS,CAAA,EAAI,GAAG,KAAA,EAC9E,QAAA,EACH,CAAA;AAAA,EAEJ;AACF;AACA,UAAA,CAAW,WAAA,GAAc,YAAA;AAMzB,MAAM,WAAA,GAAc,MAAM,UAAA,CAAiD,CAAC,EAAE,SAAA,EAAW,GAAG,KAAA,EAAM,EAAG,GAAA,KAAQ;AAC3G,EAAA,MAAM,EAAE,OAAA,EAAQ,GAAI,gBAAA,EAAiB;AACrC,EAAA,uBACE,GAAA;AAAA,IAACA,QAAA,CAAgB,KAAA;AAAA,IAAhB;AAAA,MACC,GAAA;AAAA,MACA,WAAW,EAAA,CAAG,iCAAA,EAAmC,OAAA,KAAY,KAAA,IAAS,iCAAiC,SAAS,CAAA;AAAA,MAC/G,GAAG;AAAA;AAAA,GACN;AAEJ,CAAC;AACD,WAAA,CAAY,WAAA,GAAc,aAAA;AAM1B,MAAM,oBAAoB,KAAA,CAAM,UAAA;AAAA,EAC9B,CAAC,EAAE,SAAA,EAAW,GAAG,KAAA,IAAS,GAAA,KAAQ;AAChC,IAAA,MAAM,EAAE,OAAA,EAAQ,GAAI,gBAAA,EAAiB;AACrC,IAAA,uBACE,GAAA;AAAA,MAACA,QAAA,CAAgB,WAAA;AAAA,MAAhB;AAAA,QACC,GAAA;AAAA,QACA,SAAA,EAAW,EAAA;AAAA,UACT,OAAA,KAAY,KAAA,GAAQ,EAAA,CAAG,oCAAA,EAAsC,0BAA0B,CAAA,GAAI,SAAA;AAAA,UAC3F;AAAA,SACF;AAAA,QACC,GAAG;AAAA;AAAA,KACN;AAAA,EAEJ;AACF;AACA,iBAAA,CAAkB,WAAA,GAAc,mBAAA;AAIhC,MAAM,eAAe,KAAA,CAAM,UAAA;AAAA,EACzB,CAAC,EAAE,QAAA,EAAU,IAAA,GAAO,MAAM,GAAG,KAAA,IAAS,GAAA,KAAQ;AAC5C,IAAA,MAAM,EAAE,OAAA,EAAQ,GAAI,gBAAA,EAAiB;AACrC,IAAA,uBACE,GAAA;AAAA,MAACA,QAAA,CAAgB,KAAA;AAAA,MAAhB;AAAA,QACC,GAAA;AAAA,QACA,MAAA,kBACE,GAAA;AAAA,UAAC,MAAA;AAAA,UAAA;AAAA,YACC,IAAA;AAAA,YACA,OAAA,EAAQ,OAAA;AAAA,YACR,SAAA,EAAW,EAAA,CAAG,yBAAA,EAA2B,uBAAA,CAAwB,IAAI,CAAC,CAAA;AAAA,YACtE,UAAU,KAAA,CAAM;AAAA;AAAA,SAClB;AAAA,QAED,GAAG,KAAA;AAAA,QACJ,UAAU,QAAA,IAAY;AAAA;AAAA,KACxB;AAAA,EAEJ;AACF;AACA,YAAA,CAAa,WAAA,GAAc,cAAA;;;;"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
|
|
4
|
+
|
|
5
|
+
const jsxRuntime = require('react/jsx-runtime');
|
|
6
|
+
const lucideReact = require('lucide-react');
|
|
7
|
+
const EmptyState = require('../../../EmptyState-2XQgeju6.cjs');
|
|
8
|
+
|
|
9
|
+
function PermissionDenied({ resource, variant }) {
|
|
10
|
+
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
11
|
+
EmptyState.EmptyState,
|
|
12
|
+
{
|
|
13
|
+
variant,
|
|
14
|
+
iconSlot: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.LockIcon, {}),
|
|
15
|
+
titleSlot: "Permission Denied",
|
|
16
|
+
descriptionSlot: `You don't have permission to access ${resource}. Contact your administrator for access.`
|
|
17
|
+
}
|
|
18
|
+
);
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
exports.PermissionDenied = PermissionDenied;
|
|
22
|
+
//# sourceMappingURL=permission-denied.cjs.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"permission-denied.cjs.js","sources":["../../../../src/domains/auth/components/permission-denied.tsx"],"sourcesContent":["import { LockIcon } from 'lucide-react';\nimport { EmptyState } from '@/ds/components/EmptyState';\nimport type { EmptyStateProps } from '@/ds/components/EmptyState';\n\nexport type PermissionDeniedProps = {\n resource: string;\n variant?: EmptyStateProps['variant'];\n};\n\nexport function PermissionDenied({ resource, variant }: PermissionDeniedProps) {\n return (\n <EmptyState\n variant={variant}\n iconSlot={<LockIcon />}\n titleSlot=\"Permission Denied\"\n descriptionSlot={`You don't have permission to access ${resource}. Contact your administrator for access.`}\n />\n );\n}\n"],"names":["jsx","EmptyState","LockIcon"],"mappings":";;;;;;;;AASO,SAAS,gBAAA,CAAiB,EAAE,QAAA,EAAU,OAAA,EAAQ,EAA0B;AAC7E,EAAA,uBACEA,cAAA;AAAA,IAACC,qBAAA;AAAA,IAAA;AAAA,MACC,OAAA;AAAA,MACA,QAAA,iCAAWC,oBAAA,EAAA,EAAS,CAAA;AAAA,MACpB,SAAA,EAAU,mBAAA;AAAA,MACV,eAAA,EAAiB,uCAAuC,QAAQ,CAAA,wCAAA;AAAA;AAAA,GAClE;AAEJ;;;;"}
|