@mastra/playground-ui 68.0.0-alpha.0 → 68.0.0-alpha.2
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/{ActionRow-BfK77pCT.cjs → ActionRow-BlC9GAef.cjs} +4 -4
- package/dist/ActionRow-BlC9GAef.cjs.map +1 -0
- package/dist/{ActionRow-Cd6tOC2K.js → ActionRow-DCrRCvBq.js} +4 -4
- package/dist/ActionRow-DCrRCvBq.js.map +1 -0
- package/dist/{Button-Bw1e3ONi.js → Button-CLXTbAY8.js} +42 -13
- package/dist/Button-CLXTbAY8.js.map +1 -0
- package/dist/{Button-YQRflC47.cjs → Button-DLcMcuUL.cjs} +58 -11
- package/dist/Button-DLcMcuUL.cjs.map +1 -0
- package/dist/{CodeEditor-CJ9jC9lu.cjs → CodeEditor-CLzs0yVc.cjs} +4 -4
- package/dist/{CodeEditor-CJ9jC9lu.cjs.map → CodeEditor-CLzs0yVc.cjs.map} +1 -1
- package/dist/{CodeEditor-CPVxj7WS.js → CodeEditor-COnz9c6B.js} +4 -4
- package/dist/{CodeEditor-CPVxj7WS.js.map → CodeEditor-COnz9c6B.js.map} +1 -1
- package/dist/{Comment-VFJq2wRp.js → Comment-0n98b_f_.js} +3 -3
- package/dist/{Comment-VFJq2wRp.js.map → Comment-0n98b_f_.js.map} +1 -1
- package/dist/{Comment-KYUQzeSu.cjs → Comment-Cg0f7eLa.cjs} +3 -3
- package/dist/{Comment-KYUQzeSu.cjs.map → Comment-Cg0f7eLa.cjs.map} +1 -1
- package/dist/{DataCodeSection-CZRPsStI.cjs → DataCodeSection-CFxXsQWH.cjs} +10 -10
- package/dist/DataCodeSection-CFxXsQWH.cjs.map +1 -0
- package/dist/{DataCodeSection-Ckd47p_S.js → DataCodeSection-PY9XEg2C.js} +8 -8
- package/dist/DataCodeSection-PY9XEg2C.js.map +1 -0
- package/dist/{DataDetailsPanel-_CK0Huk6.js → DataDetailsPanel-CohEKPm4.js} +5 -5
- package/dist/{DataDetailsPanel-_CK0Huk6.js.map → DataDetailsPanel-CohEKPm4.js.map} +1 -1
- package/dist/{DataDetailsPanel-DFhM9H5D.cjs → DataDetailsPanel-DiyjEXqK.cjs} +6 -6
- package/dist/{DataDetailsPanel-DFhM9H5D.cjs.map → DataDetailsPanel-DiyjEXqK.cjs.map} +1 -1
- package/dist/{DataList-2tIlQsLc.js → DataList-CUhRQAv6.js} +2 -2
- package/dist/{DataList-2tIlQsLc.js.map → DataList-CUhRQAv6.js.map} +1 -1
- package/dist/{DataList-Czwmwyvp.cjs → DataList-Cj0mfk19.cjs} +2 -2
- package/dist/{DataList-Czwmwyvp.cjs.map → DataList-Cj0mfk19.cjs.map} +1 -1
- package/dist/{DataPanel-C0Ll76Ne.cjs → DataPanel-Coc9h35I.cjs} +3 -3
- package/dist/{DataPanel-C0Ll76Ne.cjs.map → DataPanel-Coc9h35I.cjs.map} +1 -1
- package/dist/{DataPanel-CY1W5LHJ.js → DataPanel-IgB9D5PO.js} +3 -3
- package/dist/{DataPanel-CY1W5LHJ.js.map → DataPanel-IgB9D5PO.js.map} +1 -1
- package/dist/{Dialog-CjaiCrkv.cjs → Dialog-BvWF9HE-.cjs} +2 -2
- package/dist/{Dialog-CjaiCrkv.cjs.map → Dialog-BvWF9HE-.cjs.map} +1 -1
- package/dist/{Dialog-CKtTR8h3.js → Dialog-DaWtxwd9.js} +2 -2
- package/dist/{Dialog-CKtTR8h3.js.map → Dialog-DaWtxwd9.js.map} +1 -1
- package/dist/{ErrorBoundary-Bm0LL_b7.cjs → ErrorBoundary-B5GjmA6V.cjs} +2 -2
- package/dist/{ErrorBoundary-Bm0LL_b7.cjs.map → ErrorBoundary-B5GjmA6V.cjs.map} +1 -1
- package/dist/{ErrorBoundary-95_6A77S.js → ErrorBoundary-Cat3KU86.js} +2 -2
- package/dist/{ErrorBoundary-95_6A77S.js.map → ErrorBoundary-Cat3KU86.js.map} +1 -1
- package/dist/{FilterBar--4oguuVe.js → FilterBar-BgW2dqRQ.js} +21 -25
- package/dist/FilterBar-BgW2dqRQ.js.map +1 -0
- package/dist/{FilterBar-BUd4f7oi.cjs → FilterBar-CQl04O6t.cjs} +21 -25
- package/dist/FilterBar-CQl04O6t.cjs.map +1 -0
- package/dist/{LogsDataList-Cslabh8K.js → LogsDataList-BI2C5OJz.js} +2 -2
- package/dist/{LogsDataList-Cslabh8K.js.map → LogsDataList-BI2C5OJz.js.map} +1 -1
- package/dist/{LogsDataList-DMmxAt_t.cjs → LogsDataList-CCIfUPGo.cjs} +2 -2
- package/dist/{LogsDataList-DMmxAt_t.cjs.map → LogsDataList-CCIfUPGo.cjs.map} +1 -1
- package/dist/{MarkdownRenderer-DME2xKTk.js → MarkdownRenderer-2GOXQJEv.js} +3 -3
- package/dist/{MarkdownRenderer-DME2xKTk.js.map → MarkdownRenderer-2GOXQJEv.js.map} +1 -1
- package/dist/{MarkdownRenderer-CS6u5drO.cjs → MarkdownRenderer-CB8Z_CHc.cjs} +4 -4
- package/dist/{MarkdownRenderer-CS6u5drO.cjs.map → MarkdownRenderer-CB8Z_CHc.cjs.map} +1 -1
- package/dist/{Message-nVI6tMS3.js → Message-CWzi5F_Q.js} +2 -2
- package/dist/{Message-nVI6tMS3.js.map → Message-CWzi5F_Q.js.map} +1 -1
- package/dist/{Message-DsCNQpou.cjs → Message-jj56lxNL.cjs} +2 -2
- package/dist/{Message-DsCNQpou.cjs.map → Message-jj56lxNL.cjs.map} +1 -1
- package/dist/{MetricsTable-D-aZf3dk.cjs → MetricsTable-BSl81oNe.cjs} +44 -9
- package/dist/MetricsTable-BSl81oNe.cjs.map +1 -0
- package/dist/{MetricsTable-CRPeLHe1.js → MetricsTable-DID6LRoP.js} +44 -9
- package/dist/MetricsTable-DID6LRoP.js.map +1 -0
- package/dist/{Notice-CyKngbbv.js → Notice-C-8oOZZF.js} +2 -2
- package/dist/{Notice-CyKngbbv.js.map → Notice-C-8oOZZF.js.map} +1 -1
- package/dist/{Notice-DWNeCe-t.cjs → Notice-JZ7SW7q6.cjs} +2 -2
- package/dist/{Notice-DWNeCe-t.cjs.map → Notice-JZ7SW7q6.cjs.map} +1 -1
- package/dist/{Workflow-BVWvgDmI.js → Workflow-C3SlEdP-.js} +5 -5
- package/dist/{Workflow-BVWvgDmI.js.map → Workflow-C3SlEdP-.js.map} +1 -1
- package/dist/{Workflow-BeF6pIO9.cjs → Workflow-DSWQ-ROz.cjs} +5 -5
- package/dist/{Workflow-BeF6pIO9.cjs.map → Workflow-DSWQ-ROz.cjs.map} +1 -1
- package/dist/{activity-DAK8tj7r.cjs → activity-DyB5H3gF.cjs} +2 -2
- package/dist/{activity-DAK8tj7r.cjs.map → activity-DyB5H3gF.cjs.map} +1 -1
- package/dist/{activity-CM34JyW-.js → activity-rJ1NQl_2.js} +2 -2
- package/dist/{activity-CM34JyW-.js.map → activity-rJ1NQl_2.js.map} +1 -1
- package/dist/{ask-user-C82m_G9W.cjs → ask-user-C1p2PEYe.cjs} +3 -3
- package/dist/ask-user-C1p2PEYe.cjs.map +1 -0
- package/dist/{ask-user-BdjH9F7G.js → ask-user-DPznrqGO.js} +3 -3
- package/dist/ask-user-DPznrqGO.js.map +1 -0
- package/dist/buttons-group-Dc6R7YSs.cjs +48 -0
- package/dist/buttons-group-Dc6R7YSs.cjs.map +1 -0
- package/dist/buttons-group-DkFlnMiL.js +35 -0
- package/dist/buttons-group-DkFlnMiL.js.map +1 -0
- package/dist/{ButtonsGroup.css → buttons-group.css} +2 -0
- package/dist/chart-plot.css +5 -4
- package/dist/clear-filters-button-Buc973vw.cjs +27 -0
- package/dist/clear-filters-button-Buc973vw.cjs.map +1 -0
- package/dist/clear-filters-button-CNrRuHOY.js +22 -0
- package/dist/clear-filters-button-CNrRuHOY.js.map +1 -0
- package/dist/{combobox-wFudhN8F.js → combobox-D21no8t5.js} +5 -5
- package/dist/{combobox-wFudhN8F.js.map → combobox-D21no8t5.js.map} +1 -1
- package/dist/{combobox-8kNAJFlj.cjs → combobox-DIT_6xiG.cjs} +5 -5
- package/dist/combobox-DIT_6xiG.cjs.map +1 -0
- package/dist/{combobox-parts-BZVXwbG7.cjs → combobox-parts-C4phOq4t.cjs} +10 -18
- package/dist/combobox-parts-C4phOq4t.cjs.map +1 -0
- package/dist/{combobox-parts-W7KRQUsV.js → combobox-parts-D90ir0Py.js} +11 -19
- package/dist/combobox-parts-D90ir0Py.js.map +1 -0
- package/dist/components/ActionRow.cjs.js +1 -1
- package/dist/components/ActionRow.es.js +1 -1
- package/dist/components/AlertDialog.cjs.js +2 -2
- package/dist/components/AlertDialog.es.js +2 -2
- package/dist/components/Button.cjs.js +4 -1
- package/dist/components/Button.es.js +2 -2
- package/dist/components/ButtonsGroup.cjs.js +3 -38
- package/dist/components/ButtonsGroup.es.js +1 -35
- package/dist/components/ClampedText.cjs.js +1 -1
- package/dist/components/ClampedText.es.js +1 -1
- package/dist/components/ClearFiltersButton.cjs.js +3 -0
- package/dist/components/ClearFiltersButton.d.ts +1 -0
- package/dist/components/ClearFiltersButton.es.js +1 -0
- package/dist/components/CodeBlock.cjs.js +3 -3
- package/dist/components/CodeBlock.es.js +3 -3
- package/dist/components/CodeEditor.cjs.js +1 -1
- package/dist/components/CodeEditor.es.js +1 -1
- package/dist/components/CollapsibleBox.cjs.js +1 -1
- package/dist/components/CollapsibleBox.es.js +1 -1
- package/dist/components/Combobox.cjs.js +2 -2
- package/dist/components/Combobox.es.js +2 -2
- package/dist/components/Command.cjs.js +3 -2
- package/dist/components/Command.cjs.js.map +1 -1
- package/dist/components/Command.es.js +3 -2
- package/dist/components/Command.es.js.map +1 -1
- package/dist/components/Comment.cjs.js +1 -1
- package/dist/components/Comment.es.js +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 +1 -1
- package/dist/components/DataDetailsPanel.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 +3 -3
- package/dist/components/DateTimePicker.cjs.js.map +1 -1
- package/dist/components/DateTimePicker.es.js +3 -3
- package/dist/components/DateTimePicker.es.js.map +1 -1
- package/dist/components/DateTimeRangePicker.cjs.js +2 -2
- package/dist/components/DateTimeRangePicker.es.js +1 -1
- package/dist/components/Dialog.cjs.js +1 -1
- package/dist/components/Dialog.es.js +1 -1
- package/dist/components/DisabledFeatureButton.cjs.js +1 -1
- package/dist/components/DisabledFeatureButton.es.js +1 -1
- package/dist/components/Drawer.cjs.js +1 -1
- package/dist/components/Drawer.es.js +1 -1
- package/dist/components/EnvironmentVariablesEditor.cjs.js +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 +7 -2
- package/dist/components/FilterBar.es.js +4 -3
- package/dist/components/FormFieldBlocks.cjs.js +3 -3
- package/dist/components/FormFieldBlocks.cjs.js.map +1 -1
- package/dist/components/FormFieldBlocks.es.js +3 -3
- package/dist/components/FormFieldBlocks.es.js.map +1 -1
- package/dist/components/InputGroup.cjs.js +1 -1
- package/dist/components/InputGroup.es.js +1 -1
- package/dist/components/InputNumber.cjs.js +2 -2
- package/dist/components/InputNumber.es.js +2 -2
- package/dist/components/JSONSchemaForm.cjs.js +2 -2
- package/dist/components/JSONSchemaForm.es.js +2 -2
- package/dist/components/ListSearch.cjs.js +1 -1
- package/dist/components/ListSearch.es.js +1 -1
- package/dist/components/LogsDataList.cjs.js +2 -2
- package/dist/components/LogsDataList.es.js +2 -2
- 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/MetricsTable.cjs.js +1 -1
- package/dist/components/MetricsTable.es.js +1 -1
- package/dist/components/Notice.cjs.js +1 -1
- package/dist/components/Notice.es.js +1 -1
- package/dist/components/PrevNextNav.cjs.js +1 -1
- package/dist/components/PrevNextNav.es.js +1 -1
- package/dist/components/PropertyFilter.cjs.js +4 -4
- package/dist/components/PropertyFilter.cjs.js.map +1 -1
- package/dist/components/PropertyFilter.es.js +4 -4
- 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/SavedViews.cjs.js +4 -3
- package/dist/components/SavedViews.cjs.js.map +1 -1
- package/dist/components/SavedViews.es.js +4 -3
- package/dist/components/SavedViews.es.js.map +1 -1
- package/dist/components/SearchInput.cjs.js +5 -2
- package/dist/components/SearchInput.cjs.js.map +1 -1
- package/dist/components/SearchInput.es.js +5 -2
- package/dist/components/SearchInput.es.js.map +1 -1
- package/dist/components/Select.cjs.js +1 -1
- package/dist/components/Select.es.js +1 -1
- package/dist/components/SideDialog.cjs.js +5 -5
- package/dist/components/SideDialog.cjs.js.map +1 -1
- package/dist/components/SideDialog.es.js +4 -4
- package/dist/components/Sidebar.cjs.js +11 -11
- package/dist/components/Sidebar.cjs.js.map +1 -1
- package/dist/components/Sidebar.es.js +12 -12
- package/dist/components/Sidebar.es.js.map +1 -1
- package/dist/components/Tabs.cjs.js +2 -2
- package/dist/components/Tabs.es.js +2 -2
- package/dist/components/ThreadList.cjs.js +1 -1
- package/dist/components/ThreadList.es.js +1 -1
- package/dist/components/Toaster.cjs.js +2 -2
- package/dist/components/Toaster.es.js +2 -2
- package/dist/components/Truncate.cjs.js +1 -1
- package/dist/components/Truncate.es.js +1 -1
- package/dist/components/Workflow.cjs.js +1 -1
- package/dist/components/Workflow.es.js +1 -1
- package/dist/components/ai/activity.cjs.js +1 -1
- package/dist/components/ai/activity.es.js +1 -1
- package/dist/components/ai/ask-user.cjs.js +1 -1
- package/dist/components/ai/ask-user.es.js +1 -1
- package/dist/components/ai/plan.cjs.js +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 +1 -1
- package/dist/components/ai/tool-call.es.js +1 -1
- package/dist/{copy-button-CF-X4iDj.js → copy-button-BXrbevLn.js} +2 -2
- package/dist/{copy-button-CF-X4iDj.js.map → copy-button-BXrbevLn.js.map} +1 -1
- package/dist/{copy-button-BYEFKNpo.cjs → copy-button-DJAQ6_3o.cjs} +2 -2
- package/dist/{copy-button-BYEFKNpo.cjs.map → copy-button-DJAQ6_3o.cjs.map} +1 -1
- package/dist/{data-list-BkimqE_P.cjs → data-list-C4Vmq5HA.cjs} +2 -2
- package/dist/{data-list-BkimqE_P.cjs.map → data-list-C4Vmq5HA.cjs.map} +1 -1
- package/dist/{data-list-evmf5xWI.js → data-list-DHCOoLmj.js} +2 -2
- package/dist/{data-list-evmf5xWI.js.map → data-list-DHCOoLmj.js.map} +1 -1
- package/dist/{DateTimeRangePicker-HmPOHwAQ.cjs → date-time-range-picker-CTt7Od0P.cjs} +71 -57
- package/dist/date-time-range-picker-CTt7Od0P.cjs.map +1 -0
- package/dist/{DateTimeRangePicker-C_Lie_2P.js → date-time-range-picker-DKh1K9Iy.js} +72 -58
- package/dist/date-time-range-picker-DKh1K9Iy.js.map +1 -0
- package/dist/domains/auth/components/session-expired.cjs.js +2 -2
- package/dist/domains/auth/components/session-expired.es.js +2 -2
- package/dist/domains/chat/activity/activity-stretch-line.cjs.js +1 -1
- package/dist/domains/chat/activity/activity-stretch-line.es.js +1 -1
- package/dist/domains/chat/activity/components/activity-fold.cjs.js +1 -1
- package/dist/domains/chat/activity/components/activity-fold.es.js +1 -1
- package/dist/domains/chat/activity/components/activity-timed-trigger.cjs.js +1 -1
- package/dist/domains/chat/activity/components/activity-timed-trigger.es.js +1 -1
- package/dist/domains/chat/activity/components/calls-panel.cjs.js +1 -1
- package/dist/domains/chat/activity/components/calls-panel.es.js +1 -1
- package/dist/domains/chat/activity/components/stretch-content.cjs.js +1 -1
- package/dist/domains/chat/activity/components/stretch-content.es.js +1 -1
- package/dist/domains/chat/activity/components/stretch-thought.cjs.js +1 -1
- package/dist/domains/chat/activity/components/stretch-thought.es.js +1 -1
- package/dist/domains/chat/activity/model/activity-segments.cjs.js +1 -1
- package/dist/domains/chat/activity/model/activity-segments.es.js +1 -1
- package/dist/domains/chat/activity/model/activity-words.cjs.js +1 -1
- package/dist/domains/chat/activity/model/activity-words.es.js +1 -1
- package/dist/domains/chat/attachments/attachment-preview-dialog.cjs.js +2 -2
- package/dist/domains/chat/attachments/attachment-preview-dialog.es.js +2 -2
- package/dist/domains/chat/attachments/composer-attachment.cjs.js +1 -1
- package/dist/domains/chat/attachments/composer-attachment.es.js +1 -1
- package/dist/domains/chat/components/badge-wrapper.cjs.js +1 -1
- package/dist/domains/chat/components/badge-wrapper.es.js +1 -1
- package/dist/domains/chat/components/network-choice-metadata-dialog.cjs.js +3 -3
- package/dist/domains/chat/components/network-choice-metadata-dialog.es.js +3 -3
- package/dist/domains/chat/knowledge/pinned-knowledge.cjs.js +1 -1
- package/dist/domains/chat/knowledge/pinned-knowledge.es.js +1 -1
- package/dist/domains/chat/messages/assistant-message-actions.cjs.js +2 -2
- package/dist/domains/chat/messages/assistant-message-actions.es.js +2 -2
- package/dist/domains/chat/messages/dataset-save-action.cjs.js +5 -5
- package/dist/domains/chat/messages/dataset-save-action.es.js +5 -5
- package/dist/domains/chat/messages/message-row.cjs.js +4 -4
- package/dist/domains/chat/messages/message-row.es.js +4 -4
- package/dist/domains/chat/messages/notification-signal-notice.cjs.js +1 -1
- package/dist/domains/chat/messages/notification-signal-notice.es.js +1 -1
- package/dist/domains/chat/messages/reasoning-content.cjs.js +1 -1
- package/dist/domains/chat/messages/reasoning-content.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/reasoning-part-renderer.cjs.js +1 -1
- package/dist/domains/chat/messages/renderers/reasoning-part-renderer.es.js +1 -1
- package/dist/domains/chat/messages/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/skill-message.cjs.js +2 -2
- package/dist/domains/chat/messages/skill-message.es.js +2 -2
- package/dist/domains/chat/messages/system-reminder-badge.cjs.js +1 -1
- package/dist/domains/chat/messages/system-reminder-badge.es.js +1 -1
- package/dist/domains/chat/messages/tripwire-notice.cjs.js +2 -2
- package/dist/domains/chat/messages/tripwire-notice.es.js +2 -2
- package/dist/domains/chat/tools/badges/agent-badge-wrapper.cjs.js +1 -1
- package/dist/domains/chat/tools/badges/agent-badge-wrapper.es.js +1 -1
- package/dist/domains/chat/tools/badges/agent-badge.cjs.js +1 -1
- package/dist/domains/chat/tools/badges/agent-badge.es.js +1 -1
- package/dist/domains/chat/tools/badges/ask-user-badge.cjs.js +1 -1
- package/dist/domains/chat/tools/badges/ask-user-badge.es.js +1 -1
- package/dist/domains/chat/tools/badges/background-task-metadata-dialog.cjs.js +3 -3
- package/dist/domains/chat/tools/badges/background-task-metadata-dialog.es.js +3 -3
- package/dist/domains/chat/tools/badges/code-mode-badge.cjs.js +1 -1
- package/dist/domains/chat/tools/badges/code-mode-badge.es.js +1 -1
- package/dist/domains/chat/tools/badges/file-tree-badge.cjs.js +1 -1
- package/dist/domains/chat/tools/badges/file-tree-badge.es.js +1 -1
- package/dist/domains/chat/tools/badges/knowledge-tool-badge.cjs.js +1 -1
- package/dist/domains/chat/tools/badges/knowledge-tool-badge.es.js +1 -1
- package/dist/domains/chat/tools/badges/mcp-task-chip.cjs.js +1 -1
- package/dist/domains/chat/tools/badges/mcp-task-chip.es.js +1 -1
- package/dist/domains/chat/tools/badges/observation-marker-badge.cjs.js +2 -2
- package/dist/domains/chat/tools/badges/observation-marker-badge.es.js +2 -2
- package/dist/domains/chat/tools/badges/observation-marker-details.cjs.js +2 -2
- package/dist/domains/chat/tools/badges/observation-marker-details.es.js +2 -2
- package/dist/domains/chat/tools/badges/observation-renderer.cjs.js +1 -1
- package/dist/domains/chat/tools/badges/observation-renderer.es.js +1 -1
- package/dist/domains/chat/tools/badges/sandbox-execution-badge.cjs.js +1 -1
- package/dist/domains/chat/tools/badges/sandbox-execution-badge.es.js +1 -1
- package/dist/domains/chat/tools/badges/tool-approval-badge.cjs.js +1 -1
- package/dist/domains/chat/tools/badges/tool-approval-badge.es.js +1 -1
- package/dist/domains/chat/tools/badges/tool-badge.cjs.js +2 -2
- package/dist/domains/chat/tools/badges/tool-badge.es.js +2 -2
- package/dist/domains/chat/tools/badges/workflow-badge.cjs.js +3 -3
- package/dist/domains/chat/tools/badges/workflow-badge.es.js +3 -3
- package/dist/domains/chat/tools/connect-prompt-tool.cjs.js +3 -3
- package/dist/domains/chat/tools/connect-prompt-tool.es.js +3 -3
- package/dist/domains/chat/tools/submit-plan-tool.cjs.js +1 -1
- package/dist/domains/chat/tools/submit-plan-tool.es.js +1 -1
- package/dist/domains/chat/tools/tool-card.cjs.js +1 -1
- package/dist/domains/chat/tools/tool-card.es.js +1 -1
- package/dist/domains/chat/tools/tool-groups.cjs.js +1 -1
- package/dist/domains/chat/tools/tool-groups.es.js +1 -1
- package/dist/domains/dashboards/components/dashboard-renderer.cjs.js +1 -1
- package/dist/domains/dashboards/components/dashboard-renderer.es.js +1 -1
- package/dist/domains/dashboards/kinds/table/table-view.cjs.js +1 -1
- package/dist/domains/dashboards/kinds/table/table-view.es.js +1 -1
- package/dist/domains/dashboards/metrics-dashboard.cjs.js +1 -1
- package/dist/domains/dashboards/metrics-dashboard.cjs.js.map +1 -1
- package/dist/domains/dashboards/metrics-dashboard.es.js +1 -1
- package/dist/domains/dashboards/metrics-dashboard.es.js.map +1 -1
- package/dist/domains/datasets/components/add-dataset-item-dialog/add-dataset-item-dialog.cjs.js +4 -4
- package/dist/domains/datasets/components/add-dataset-item-dialog/add-dataset-item-dialog.es.js +4 -4
- package/dist/domains/datasets/components/add-dataset-item-dialog/dataset-picker.cjs.js +1 -1
- package/dist/domains/datasets/components/add-dataset-item-dialog/dataset-picker.es.js +1 -1
- package/dist/domains/datasets/components/add-dataset-item-dialog/trajectory-editor.cjs.js +3 -3
- package/dist/domains/datasets/components/add-dataset-item-dialog/trajectory-editor.es.js +3 -3
- package/dist/domains/datasets/components/save-as-dataset-item-dialog.cjs.js +5 -5
- package/dist/domains/datasets/components/save-as-dataset-item-dialog.es.js +5 -5
- package/dist/domains/knowledge/components/KnowledgePageDetail.cjs.js +1 -1
- package/dist/domains/knowledge/components/KnowledgePageDetail.es.js +1 -1
- package/dist/domains/logs/components/log-data-panel.cjs.js +6 -6
- package/dist/domains/logs/components/log-data-panel.cjs.js.map +1 -1
- package/dist/domains/logs/components/log-data-panel.es.js +4 -4
- package/dist/domains/logs/components/logs-list-view.cjs.js +2 -2
- package/dist/domains/logs/components/logs-list-view.es.js +2 -2
- package/dist/domains/logs/components/logs-saved-views.cjs.js +1 -1
- package/dist/domains/logs/components/logs-saved-views.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 +1 -1
- package/dist/domains/logs/components/no-logs-info.es.js +1 -1
- package/dist/domains/logs/hooks/use-logs-filter-persistence.cjs.js +1 -1
- package/dist/domains/logs/hooks/use-logs-filter-persistence.es.js +1 -1
- package/dist/domains/memory/components/flame-graph.cjs.js +1 -1
- package/dist/domains/memory/components/flame-graph.es.js +1 -1
- package/dist/domains/memory/components/memory-studio-panel.cjs.js +1 -1
- package/dist/domains/memory/components/memory-studio-panel.es.js +1 -1
- package/dist/domains/metrics/components/breakdown/breakdown-table.cjs.js +2 -2
- package/dist/domains/metrics/components/breakdown/breakdown-table.cjs.js.map +1 -1
- package/dist/domains/metrics/components/breakdown/breakdown-table.es.js +2 -2
- package/dist/domains/metrics/components/breakdown/breakdown-table.es.js.map +1 -1
- package/dist/domains/metrics/components/card-action-buttons.cjs.js +1 -1
- package/dist/domains/metrics/components/card-action-buttons.es.js +1 -1
- package/dist/domains/metrics/components/chart-card-error.cjs.js +1 -1
- package/dist/domains/metrics/components/chart-card-error.es.js +1 -1
- package/dist/domains/metrics/components/date-range-selector.cjs.js +2 -2
- package/dist/domains/metrics/components/date-range-selector.cjs.js.map +1 -1
- package/dist/domains/metrics/components/date-range-selector.es.js +1 -1
- package/dist/domains/metrics/components/metrics-time-range-chip.cjs.js +4 -4
- package/dist/domains/metrics/components/metrics-time-range-chip.cjs.js.map +1 -1
- package/dist/domains/metrics/components/metrics-time-range-chip.es.js +4 -4
- package/dist/domains/metrics/components/metrics-time-range-chip.es.js.map +1 -1
- package/dist/domains/metrics/drilldown.cjs.js +1 -1
- package/dist/domains/metrics/drilldown.es.js +1 -1
- package/dist/domains/metrics/metrics-filters.cjs.js +1 -1
- package/dist/domains/metrics/metrics-filters.es.js +1 -1
- package/dist/domains/observability/hooks/use-observability-list-filters.cjs.js +1 -1
- package/dist/domains/observability/hooks/use-observability-list-filters.es.js +1 -1
- package/dist/domains/observability/observability-list-url-state.cjs.js +1 -1
- package/dist/domains/observability/observability-list-url-state.es.js +1 -1
- package/dist/domains/observability/saved-view-state.cjs.js +1 -1
- package/dist/domains/observability/saved-view-state.es.js +1 -1
- package/dist/domains/observability/saved-views/observability-saved-views.cjs.js +1 -1
- package/dist/domains/observability/saved-views/observability-saved-views.es.js +1 -1
- package/dist/domains/observability/saved-views.cjs.js +1 -1
- package/dist/domains/observability/saved-views.es.js +1 -1
- package/dist/domains/observability.cjs.js +1 -1
- package/dist/domains/observability.es.js +1 -1
- package/dist/domains/scores/components/score-data-panel.cjs.js +2 -2
- package/dist/domains/scores/components/score-data-panel.es.js +2 -2
- package/dist/domains/scores/components/span-scoring.cjs.js +6 -6
- package/dist/domains/scores/components/span-scoring.cjs.js.map +1 -1
- package/dist/domains/scores/components/span-scoring.es.js +6 -6
- package/dist/domains/scores/components/span-scoring.es.js.map +1 -1
- package/dist/domains/scores/components/trace-scores-list.cjs.js +2 -2
- package/dist/domains/scores/components/trace-scores-list.es.js +2 -2
- package/dist/domains/scores/components/trace-scores-tab.cjs.js +1 -1
- package/dist/domains/scores/components/trace-scores-tab.es.js +1 -1
- package/dist/domains/skills/skill-simple-form.cjs.js +3 -3
- package/dist/domains/skills/skill-simple-form.cjs.js.map +1 -1
- package/dist/domains/skills/skill-simple-form.es.js +3 -3
- package/dist/domains/skills/skill-simple-form.es.js.map +1 -1
- package/dist/domains/spans/components/spans-explorer-body.cjs.js +8 -8
- package/dist/domains/spans/components/spans-explorer-body.cjs.js.map +1 -1
- package/dist/domains/spans/components/spans-explorer-body.es.js +8 -8
- package/dist/domains/spans/components/spans-explorer-body.es.js.map +1 -1
- package/dist/domains/spans/components/spans-filter-bar.cjs.js +6 -6
- package/dist/domains/spans/components/spans-filter-bar.cjs.js.map +1 -1
- package/dist/domains/spans/components/spans-filter-bar.es.js +6 -6
- package/dist/domains/spans/components/spans-filter-bar.es.js.map +1 -1
- package/dist/domains/spans/hooks/use-spans-filter-bar.cjs.js +5 -5
- package/dist/domains/spans/hooks/use-spans-filter-bar.cjs.js.map +1 -1
- package/dist/domains/spans/hooks/use-spans-filter-bar.es.js +5 -5
- package/dist/domains/spans/hooks/use-spans-filter-bar.es.js.map +1 -1
- package/dist/domains/spans/span-filters.cjs.js +2 -2
- package/dist/domains/spans/span-filters.cjs.js.map +1 -1
- package/dist/domains/spans/span-filters.es.js +2 -2
- package/dist/domains/spans/span-filters.es.js.map +1 -1
- package/dist/domains/threads/components/threads-explorer-body.cjs.js +8 -8
- package/dist/domains/threads/components/threads-explorer-body.cjs.js.map +1 -1
- package/dist/domains/threads/components/threads-explorer-body.es.js +8 -8
- package/dist/domains/threads/components/threads-explorer-body.es.js.map +1 -1
- package/dist/domains/threads/components/threads-filter-bar.cjs.js +6 -6
- package/dist/domains/threads/components/threads-filter-bar.cjs.js.map +1 -1
- package/dist/domains/threads/components/threads-filter-bar.es.js +6 -6
- package/dist/domains/threads/components/threads-filter-bar.es.js.map +1 -1
- package/dist/domains/threads/hooks/use-threads-filter-bar.cjs.js +5 -5
- package/dist/domains/threads/hooks/use-threads-filter-bar.cjs.js.map +1 -1
- package/dist/domains/threads/hooks/use-threads-filter-bar.es.js +5 -5
- package/dist/domains/threads/hooks/use-threads-filter-bar.es.js.map +1 -1
- package/dist/domains/threads/thread-filters.cjs.js +2 -2
- package/dist/domains/threads/thread-filters.cjs.js.map +1 -1
- package/dist/domains/threads/thread-filters.es.js +2 -2
- package/dist/domains/threads/thread-filters.es.js.map +1 -1
- package/dist/domains/traces/components/columns-menu/columns-menu.cjs.js +1 -1
- package/dist/domains/traces/components/columns-menu/columns-menu.es.js +1 -1
- package/dist/domains/traces/components/feedback-thread.cjs.js +4 -4
- package/dist/domains/traces/components/feedback-thread.cjs.js.map +1 -1
- package/dist/domains/traces/components/feedback-thread.es.js +4 -4
- package/dist/domains/traces/components/feedback-thread.es.js.map +1 -1
- package/dist/domains/traces/components/span-data-panel-view.cjs.js +5 -5
- package/dist/domains/traces/components/span-data-panel-view.es.js +5 -5
- package/dist/domains/traces/components/span-details-view.cjs.js +1 -1
- package/dist/domains/traces/components/span-details-view.es.js +1 -1
- package/dist/domains/traces/components/span-outcome.cjs.js +1 -1
- package/dist/domains/traces/components/span-outcome.es.js +1 -1
- package/dist/domains/traces/components/span-payload/span-error-renderer.cjs.js +2 -2
- package/dist/domains/traces/components/span-payload/span-error-renderer.es.js +2 -2
- package/dist/domains/traces/components/span-payload/span-input-renderers.cjs.js +1 -1
- package/dist/domains/traces/components/span-payload/span-input-renderers.es.js +1 -1
- package/dist/domains/traces/components/span-payload/span-output-renderers.cjs.js +3 -3
- package/dist/domains/traces/components/span-payload/span-output-renderers.es.js +3 -3
- package/dist/domains/traces/components/span-payload/span-payload-json.cjs.js +1 -1
- package/dist/domains/traces/components/span-payload/span-payload-json.es.js +1 -1
- package/dist/domains/traces/components/span-payload/span-payload-messages.cjs.js +3 -3
- package/dist/domains/traces/components/span-payload/span-payload-messages.es.js +3 -3
- package/dist/domains/traces/components/span-payload/span-payload-primitives.cjs.js +1 -1
- package/dist/domains/traces/components/span-payload/span-payload-primitives.es.js +1 -1
- package/dist/domains/traces/components/span-payload/span-payload-processor.cjs.js +1 -1
- package/dist/domains/traces/components/span-payload/span-payload-processor.es.js +1 -1
- package/dist/domains/traces/components/span-payload/span-payload-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 +1 -1
- package/dist/domains/traces/components/span-payload/span-payload-tool.es.js +1 -1
- package/dist/domains/traces/components/span-payload/span-processor-mutations.cjs.js +1 -1
- package/dist/domains/traces/components/span-payload/span-processor-mutations.es.js +1 -1
- package/dist/domains/traces/components/span-payload/span-tools-section.cjs.js +1 -1
- package/dist/domains/traces/components/span-payload/span-tools-section.es.js +1 -1
- package/dist/domains/traces/components/span-summary-description.cjs.js +1 -1
- package/dist/domains/traces/components/span-summary-description.es.js +1 -1
- package/dist/domains/traces/components/thread-trace/thread-trace-details.cjs.js +1 -1
- package/dist/domains/traces/components/thread-trace/thread-trace-details.es.js +1 -1
- package/dist/domains/traces/components/thread-trace/thread-trace-messages.cjs.js +2 -2
- package/dist/domains/traces/components/thread-trace/thread-trace-messages.es.js +2 -2
- package/dist/domains/traces/components/thread-trace/thread-trace-row.cjs.js +1 -1
- package/dist/domains/traces/components/thread-trace/thread-trace-row.es.js +1 -1
- 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/thread-view-by-trace.cjs.js +1 -1
- package/dist/domains/traces/components/thread-view-by-trace.es.js +1 -1
- package/dist/domains/traces/components/trace-columns-menu.cjs.js +5 -6
- package/dist/domains/traces/components/trace-columns-menu.cjs.js.map +1 -1
- package/dist/domains/traces/components/trace-columns-menu.es.js +5 -6
- package/dist/domains/traces/components/trace-columns-menu.es.js.map +1 -1
- package/dist/domains/traces/components/trace-data-panel-view.cjs.js +5 -5
- package/dist/domains/traces/components/trace-data-panel-view.cjs.js.map +1 -1
- package/dist/domains/traces/components/trace-data-panel-view.es.js +5 -5
- package/dist/domains/traces/components/trace-data-panel-view.es.js.map +1 -1
- package/dist/domains/traces/components/trace-data-panel.cjs.js +1 -1
- package/dist/domains/traces/components/trace-data-panel.es.js +1 -1
- package/dist/domains/traces/components/trace-details-view.cjs.js +1 -1
- package/dist/domains/traces/components/trace-details-view.es.js +1 -1
- package/dist/domains/traces/components/trace-error-cell.cjs.js +1 -1
- package/dist/domains/traces/components/trace-error-cell.es.js +1 -1
- package/dist/domains/traces/components/trace-error-summary.cjs.js +1 -1
- package/dist/domains/traces/components/trace-error-summary.es.js +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-span-panel.cjs.js +1 -1
- package/dist/domains/traces/components/trace-span-panel.es.js +1 -1
- package/dist/domains/traces/components/trace-summary-description.cjs.js +1 -1
- package/dist/domains/traces/components/trace-summary-description.es.js +1 -1
- package/dist/domains/traces/components/trace-thread-item-view.cjs.js +1 -1
- package/dist/domains/traces/components/trace-thread-item-view.es.js +1 -1
- package/dist/domains/traces/components/trace-thread-panel.cjs.js +1 -1
- package/dist/domains/traces/components/trace-thread-panel.es.js +1 -1
- package/dist/domains/traces/components/traces-explorer/traces-explorer-actions.cjs.js +1 -1
- package/dist/domains/traces/components/traces-explorer/traces-explorer-actions.es.js +1 -1
- package/dist/domains/traces/components/traces-explorer/traces-explorer-filter-bar.cjs.js +6 -6
- package/dist/domains/traces/components/traces-explorer/traces-explorer-filter-bar.cjs.js.map +1 -1
- package/dist/domains/traces/components/traces-explorer/traces-explorer-filter-bar.es.js +6 -6
- package/dist/domains/traces/components/traces-explorer/traces-explorer-filter-bar.es.js.map +1 -1
- package/dist/domains/traces/components/traces-explorer/traces-explorer-root.cjs.js +1 -1
- package/dist/domains/traces/components/traces-explorer/traces-explorer-root.es.js +1 -1
- package/dist/domains/traces/components/traces-explorer/traces-explorer-saved-views.cjs.js +1 -1
- package/dist/domains/traces/components/traces-explorer/traces-explorer-saved-views.es.js +1 -1
- package/dist/domains/traces/components/traces-explorer/use-traces-filter-bar.cjs.js +5 -5
- package/dist/domains/traces/components/traces-explorer/use-traces-filter-bar.cjs.js.map +1 -1
- package/dist/domains/traces/components/traces-explorer/use-traces-filter-bar.es.js +5 -5
- package/dist/domains/traces/components/traces-explorer/use-traces-filter-bar.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/traces-page-skeleton.cjs.js +2 -2
- package/dist/domains/traces/components/traces-page-skeleton.cjs.js.map +1 -1
- package/dist/domains/traces/components/traces-page-skeleton.es.js +2 -2
- package/dist/domains/traces/components/traces-page-skeleton.es.js.map +1 -1
- package/dist/domains/traces/components/traces-spans-switch.cjs.js +1 -1
- package/dist/domains/traces/components/traces-spans-switch.es.js +1 -1
- package/dist/domains/traces/hooks/use-download-trace-json.cjs.js +1 -1
- package/dist/domains/traces/hooks/use-download-trace-json.es.js +1 -1
- package/dist/domains/traces/trace-filters.cjs.js +1 -1
- package/dist/domains/traces/trace-filters.es.js +1 -1
- package/dist/domains/traces/trace-query-filters.cjs.js +1 -1
- package/dist/domains/traces/trace-query-filters.es.js +1 -1
- package/dist/domains/traces.cjs.js +1 -1
- package/dist/domains/traces.es.js +1 -1
- package/dist/domains/workflows/components/workflow-combobox.cjs.js +3 -3
- package/dist/domains/workflows/components/workflow-combobox.cjs.js.map +1 -1
- package/dist/domains/workflows/components/workflow-combobox.es.js +3 -3
- package/dist/domains/workflows/components/workflow-combobox.es.js.map +1 -1
- package/dist/domains/workflows/components/workflow-information.cjs.js +2 -2
- package/dist/domains/workflows/components/workflow-information.es.js +2 -2
- package/dist/domains/workflows/components/workflow-layout.cjs.js +1 -1
- package/dist/domains/workflows/components/workflow-layout.es.js +1 -1
- package/dist/domains/workflows/components/workflow-step-detail.cjs.js +2 -2
- package/dist/domains/workflows/components/workflow-step-detail.es.js +2 -2
- package/dist/domains/workflows/components/workflows-list/no-workflows-info.cjs.js +1 -1
- package/dist/domains/workflows/components/workflows-list/no-workflows-info.es.js +1 -1
- package/dist/domains/workflows/components/workflows-list/workflows-list.cjs.js +2 -2
- package/dist/domains/workflows/components/workflows-list/workflows-list.es.js +2 -2
- package/dist/domains/workflows/context/use-stream-for-run.cjs.js +1 -1
- package/dist/domains/workflows/context/use-stream-for-run.es.js +1 -1
- package/dist/domains/workflows/runs/workflow-run-list.cjs.js +1 -1
- package/dist/domains/workflows/runs/workflow-run-list.es.js +1 -1
- package/dist/domains/workflows/workflow/data/workflow-data-button.cjs.js +1 -1
- package/dist/domains/workflows/workflow/data/workflow-data-button.es.js +1 -1
- package/dist/domains/workflows/workflow/data/workflow-data-inspector.cjs.js +2 -2
- package/dist/domains/workflows/workflow/data/workflow-data-inspector.es.js +2 -2
- package/dist/domains/workflows/workflow/input/workflow-json-input.cjs.js +1 -1
- package/dist/domains/workflows/workflow/input/workflow-json-input.es.js +1 -1
- package/dist/domains/workflows/workflow/input/workflow-processor-input.cjs.js +2 -2
- package/dist/domains/workflows/workflow/input/workflow-processor-input.cjs.js.map +1 -1
- package/dist/domains/workflows/workflow/input/workflow-processor-input.es.js +2 -2
- package/dist/domains/workflows/workflow/input/workflow-processor-input.es.js.map +1 -1
- package/dist/domains/workflows/workflow/use-workflow-graph-runtime.cjs.js +1 -1
- package/dist/domains/workflows/workflow/use-workflow-graph-runtime.es.js +1 -1
- package/dist/domains/workflows/workflow/utils.cjs.js +1 -1
- package/dist/domains/workflows/workflow/utils.es.js +1 -1
- package/dist/domains/workflows/workflow/workflow-body-graph.cjs.js +1 -1
- package/dist/domains/workflows/workflow/workflow-body-graph.es.js +1 -1
- package/dist/domains/workflows/workflow/workflow-cancel-button.cjs.js +1 -1
- package/dist/domains/workflows/workflow/workflow-cancel-button.es.js +1 -1
- package/dist/domains/workflows/workflow/workflow-data-edge.cjs.js +1 -1
- package/dist/domains/workflows/workflow/workflow-data-edge.es.js +1 -1
- package/dist/domains/workflows/workflow/workflow-debug-step-controls.cjs.js +1 -1
- package/dist/domains/workflows/workflow/workflow-debug-step-controls.es.js +1 -1
- package/dist/domains/workflows/workflow/workflow-graph-boundary.cjs.js +3 -3
- package/dist/domains/workflows/workflow/workflow-graph-boundary.es.js +3 -3
- package/dist/domains/workflows/workflow/workflow-graph-inner.cjs.js +2 -2
- package/dist/domains/workflows/workflow/workflow-graph-inner.es.js +2 -2
- package/dist/domains/workflows/workflow/workflow-graph-layout.cjs.js +1 -1
- package/dist/domains/workflows/workflow/workflow-graph-layout.es.js +1 -1
- package/dist/domains/workflows/workflow/workflow-graph-node.cjs.js +1 -1
- package/dist/domains/workflows/workflow/workflow-graph-node.es.js +1 -1
- package/dist/domains/workflows/workflow/workflow-graph.cjs.js +1 -1
- package/dist/domains/workflows/workflow/workflow-graph.es.js +1 -1
- package/dist/domains/workflows/workflow/workflow-map-config-dialog.cjs.js +3 -3
- package/dist/domains/workflows/workflow/workflow-map-config-dialog.es.js +3 -3
- package/dist/domains/workflows/workflow/workflow-nested-graph.cjs.js +1 -1
- package/dist/domains/workflows/workflow/workflow-nested-graph.es.js +1 -1
- package/dist/domains/workflows/workflow/workflow-run-data.cjs.js +3 -3
- package/dist/domains/workflows/workflow/workflow-run-data.es.js +3 -3
- package/dist/domains/workflows/workflow/workflow-run-error.cjs.js +1 -1
- package/dist/domains/workflows/workflow/workflow-run-error.es.js +1 -1
- package/dist/domains/workflows/workflow/workflow-run-header.cjs.js +1 -1
- package/dist/domains/workflows/workflow/workflow-run-header.es.js +1 -1
- package/dist/domains/workflows/workflow/workflow-status.cjs.js +1 -1
- package/dist/domains/workflows/workflow/workflow-status.es.js +1 -1
- package/dist/domains/workflows/workflow/workflow-step-action-bar.cjs.js +2 -2
- package/dist/domains/workflows/workflow/workflow-step-action-bar.es.js +2 -2
- package/dist/domains/workflows/workflow/workflow-step-node-utils.cjs.js +1 -1
- package/dist/domains/workflows/workflow/workflow-step-node-utils.es.js +1 -1
- package/dist/domains/workflows/workflow/workflow-suspended-steps.cjs.js +2 -2
- package/dist/domains/workflows/workflow/workflow-suspended-steps.es.js +2 -2
- package/dist/domains/workflows/workflow/workflow-time-travel-form.cjs.js +2 -2
- package/dist/domains/workflows/workflow/workflow-time-travel-form.es.js +2 -2
- package/dist/domains/workflows/workflow/workflow-timeline-row.cjs.js +1 -1
- package/dist/domains/workflows/workflow/workflow-timeline-row.es.js +1 -1
- package/dist/domains/workflows/workflow/workflow-timeline.cjs.js +1 -1
- package/dist/domains/workflows/workflow/workflow-timeline.es.js +1 -1
- package/dist/domains/workflows/workflow/workflow-trigger-form.cjs.js +1 -1
- package/dist/domains/workflows/workflow/workflow-trigger-form.es.js +1 -1
- package/dist/domains/workflows/workflow/workflow-trigger-header.cjs.js +1 -1
- package/dist/domains/workflows/workflow/workflow-trigger-header.es.js +1 -1
- package/dist/domains/workflows/workflow/workflow-trigger.cjs.js +1 -1
- package/dist/domains/workflows/workflow/workflow-trigger.es.js +1 -1
- package/dist/domains/workspace/components/workspace-add-skill-dialog.cjs.js +4 -4
- package/dist/domains/workspace/components/workspace-add-skill-dialog.cjs.js.map +1 -1
- package/dist/domains/workspace/components/workspace-add-skill-dialog.es.js +4 -4
- package/dist/domains/workspace/components/workspace-add-skill-dialog.es.js.map +1 -1
- package/dist/domains/workspace/components/workspace-add-skill.cjs.js +1 -1
- package/dist/domains/workspace/components/workspace-add-skill.es.js +1 -1
- package/dist/domains/workspace/components/workspace-create-directory.cjs.js +2 -2
- package/dist/domains/workspace/components/workspace-create-directory.es.js +2 -2
- package/dist/domains/workspace/components/workspace-error.cjs.js +1 -1
- package/dist/domains/workspace/components/workspace-error.es.js +1 -1
- package/dist/domains/workspace/components/workspace-markdown-preview.cjs.js +1 -1
- package/dist/domains/workspace/components/workspace-markdown-preview.es.js +1 -1
- package/dist/domains/workspace/components/workspace-search.cjs.js +1 -1
- package/dist/domains/workspace/components/workspace-search.es.js +1 -1
- package/dist/domains/workspace/components/workspace-tree.cjs.js +1 -1
- package/dist/domains/workspace/components/workspace-tree.es.js +1 -1
- package/dist/ee/signals/components/entity-index-list.cjs.js +1 -1
- package/dist/ee/signals/components/entity-index-list.es.js +1 -1
- package/dist/ee/signals/components/signals-empty-state.cjs.js +1 -1
- package/dist/ee/signals/components/signals-empty-state.es.js +1 -1
- package/dist/ee/signals/components/trace-intelligence-entity-index.cjs.js +6 -6
- 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 +5 -5
- package/dist/ee/signals/examples-pager.cjs.js +1 -1
- package/dist/ee/signals/examples-pager.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 +2 -2
- package/dist/ee/signals/settings/signal-definition-form-dialog.es.js +2 -2
- package/dist/ee/signals/settings/trace-signal-settings.cjs.js +3 -3
- package/dist/ee/signals/settings/trace-signal-settings.es.js +3 -3
- package/dist/ee/signals/signals-error-state.cjs.js +1 -1
- package/dist/ee/signals/signals-error-state.es.js +1 -1
- package/dist/ee/signals/snapshot-timeline.cjs.js +1 -1
- package/dist/ee/signals/snapshot-timeline.es.js +1 -1
- package/dist/ee/signals/theme-filter-banner.cjs.js +1 -1
- package/dist/ee/signals/theme-filter-banner.es.js +1 -1
- package/dist/ee/signals/trace-insight-view.cjs.js +1 -1
- package/dist/ee/signals/trace-insight-view.es.js +1 -1
- package/dist/ee/signals/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 +2 -2
- package/dist/ee/topics/components/topic-trace-summary-list.es.js +2 -2
- package/dist/{filter-bar-chip-7O02P9Vk.js → filter-bar-chip-CABeKrtf.js} +88 -73
- package/dist/filter-bar-chip-CABeKrtf.js.map +1 -0
- package/dist/{filter-bar-chip-BUyMf8XQ.cjs → filter-bar-chip-Cg-UbIwP.cjs} +90 -81
- package/dist/filter-bar-chip-Cg-UbIwP.cjs.map +1 -0
- package/dist/filter-bar-chip.css +22 -0
- package/dist/filter-bar-time-range-BA-pXMlo.cjs +83 -0
- package/dist/filter-bar-time-range-BA-pXMlo.cjs.map +1 -0
- package/dist/filter-bar-time-range-mg9JeYue.js +60 -0
- package/dist/filter-bar-time-range-mg9JeYue.js.map +1 -0
- package/dist/hooks/use-copy-to-clipboard.cjs.js +1 -1
- package/dist/hooks/use-copy-to-clipboard.es.js +1 -1
- package/dist/{input-group-uDpFNnSW.cjs → input-group-DVJLZDBL.cjs} +6 -4
- package/dist/input-group-DVJLZDBL.cjs.map +1 -0
- package/dist/{input-group-g85FYfze.js → input-group-QKKV_ouF.js} +7 -5
- package/dist/input-group-QKKV_ouF.js.map +1 -0
- package/dist/layout/tabbed-container.cjs.js +1 -1
- package/dist/layout/tabbed-container.es.js +1 -1
- package/dist/lib/form/components/array-element-wrapper.cjs.js +1 -1
- package/dist/lib/form/components/array-element-wrapper.es.js +1 -1
- package/dist/lib/form/components/array-wrapper.cjs.js +1 -1
- package/dist/lib/form/components/array-wrapper.es.js +1 -1
- package/dist/lib/form/components/date-field.cjs.js +1 -1
- package/dist/lib/form/components/date-field.es.js +1 -1
- package/dist/lib/form/components/error-message.cjs.js +1 -1
- package/dist/lib/form/components/error-message.es.js +1 -1
- package/dist/lib/form/components/form-submit-row.cjs.js +1 -1
- package/dist/lib/form/components/form-submit-row.es.js +1 -1
- package/dist/lib/form/components/record-field.cjs.js +1 -1
- package/dist/lib/form/components/record-field.es.js +1 -1
- package/dist/lib/form/components/select-field.cjs.js +1 -1
- package/dist/lib/form/components/select-field.es.js +1 -1
- package/dist/lib/form/components/submit-button.cjs.js +1 -1
- package/dist/lib/form/components/submit-button.es.js +1 -1
- package/dist/{list-search-BEJmYa9a.cjs → list-search-BtRno5As.cjs} +2 -2
- package/dist/list-search-BtRno5As.cjs.map +1 -0
- package/dist/{list-search-bg7WzULj.js → list-search-CkhsTFdG.js} +2 -2
- package/dist/list-search-CkhsTFdG.js.map +1 -0
- package/dist/{observability-saved-views-Zlz74syw.js → observability-saved-views-CjKTEp1V.js} +4 -4
- package/dist/observability-saved-views-CjKTEp1V.js.map +1 -0
- package/dist/{observability-saved-views-BNU3GkK6.cjs → observability-saved-views-Daizz4tU.cjs} +4 -4
- package/dist/observability-saved-views-Daizz4tU.cjs.map +1 -0
- package/dist/primitives/chart-plot.cjs.js +8 -6
- package/dist/primitives/chart-plot.cjs.js.map +1 -1
- package/dist/primitives/chart-plot.es.js +8 -6
- package/dist/primitives/chart-plot.es.js.map +1 -1
- package/dist/primitives/control-icon.cjs.js +9 -0
- package/dist/primitives/control-icon.cjs.js.map +1 -0
- package/dist/primitives/control-icon.d.ts +1 -0
- package/dist/primitives/control-icon.es.js +8 -0
- package/dist/primitives/control-icon.es.js.map +1 -0
- package/dist/primitives/control-size.cjs.js +6 -0
- package/dist/primitives/control-size.cjs.js.map +1 -1
- package/dist/primitives/control-size.es.js +6 -1
- package/dist/primitives/control-size.es.js.map +1 -1
- package/dist/primitives/menu-item.cjs.js +3 -3
- package/dist/primitives/menu-item.cjs.js.map +1 -1
- package/dist/primitives/menu-item.es.js +3 -3
- 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-DRglaEj-.js → property-filter-applied--U5EZdaA.js} +4 -4
- package/dist/property-filter-applied--U5EZdaA.js.map +1 -0
- package/dist/{property-filter-applied-DqsPFbYM.cjs → property-filter-applied-BkkIObRq.cjs} +19 -19
- package/dist/property-filter-applied-BkkIObRq.cjs.map +1 -0
- package/dist/{select-BbFpEBAY.js → select-BdIZEdcy.js} +4 -8
- package/dist/select-BdIZEdcy.js.map +1 -0
- package/dist/{select-NySY9Men.cjs → select-Dg8L5ROX.cjs} +3 -7
- package/dist/select-Dg8L5ROX.cjs.map +1 -0
- package/dist/{span-payload-primitives-ChvD2RrN.js → span-payload-primitives-B3RdahsC.js} +3 -3
- package/dist/{span-payload-primitives-ChvD2RrN.js.map → span-payload-primitives-B3RdahsC.js.map} +1 -1
- package/dist/{span-payload-primitives-w1vtAXAw.cjs → span-payload-primitives-_2d-pAOD.cjs} +3 -3
- package/dist/{span-payload-primitives-w1vtAXAw.cjs.map → span-payload-primitives-_2d-pAOD.cjs.map} +1 -1
- package/dist/src/domains/metrics/components/metrics-time-range-chip.d.ts +2 -2
- package/dist/src/domains/spans/components/spans-filter-bar.d.ts +1 -1
- package/dist/src/domains/spans/hooks/use-spans-filter-bar.d.ts +1 -1
- package/dist/src/domains/spans/span-filters.d.ts +1 -1
- package/dist/src/domains/threads/components/threads-filter-bar.d.ts +1 -1
- package/dist/src/domains/threads/hooks/use-threads-filter-bar.d.ts +1 -1
- package/dist/src/domains/threads/thread-filters.d.ts +1 -1
- package/dist/src/domains/traces/components/traces-explorer/traces-explorer-filter-bar.d.ts +3 -3
- package/dist/src/domains/traces/components/traces-page-skeleton.d.ts +1 -1
- package/dist/src/ds/components/Button/Button.d.ts +15 -0
- package/dist/src/ds/components/ClearFiltersButton/clear-filters-button.d.ts +12 -0
- package/dist/src/ds/components/ClearFiltersButton/index.d.ts +1 -0
- package/dist/src/ds/components/Combobox/combobox-styles.d.ts +0 -1
- package/dist/src/ds/components/DateTimeRangePicker/date-time-range-picker.d.ts +12 -11
- package/dist/src/ds/components/FilterBar/filter-bar-chip.d.ts +10 -7
- package/dist/src/ds/components/FilterBar/filter-bar-time-range.d.ts +19 -0
- package/dist/src/ds/components/FilterBar/filter-bar.d.ts +2 -0
- package/dist/src/ds/components/FilterBar/index.d.ts +2 -0
- package/dist/src/ds/components/FilterBar/use-filter-bar-item-keys.d.ts +23 -0
- package/dist/src/ds/components/ListSearch/list-search.d.ts +1 -0
- package/dist/src/ds/components/MetricsTable/metrics-table-rows.d.ts +10 -3
- package/dist/src/ds/components/MetricsTable/metrics-table.d.ts +1 -1
- package/dist/src/ds/primitives/control-icon.d.ts +3 -0
- package/dist/src/ds/primitives/control-size.d.ts +1 -0
- package/dist/style.css +131 -65
- package/dist/{tabbed-container-CFEImJOK.cjs → tabbed-container-B4lCBgRP.cjs} +6 -6
- package/dist/{tabbed-container-CFEImJOK.cjs.map → tabbed-container-B4lCBgRP.cjs.map} +1 -1
- package/dist/{tabbed-container-BKUqfEKy.js → tabbed-container-DI1GI1Qv.js} +6 -6
- package/dist/{tabbed-container-BKUqfEKy.js.map → tabbed-container-DI1GI1Qv.js.map} +1 -1
- package/dist/{tabs-content-DgR3Hik1.cjs → tabs-content-CmXe5ML0.cjs} +2 -2
- package/dist/{tabs-content-DgR3Hik1.cjs.map → tabs-content-CmXe5ML0.cjs.map} +1 -1
- package/dist/{tabs-content-cpV6A9c3.js → tabs-content-D__B9hd-.js} +2 -2
- package/dist/{tabs-content-cpV6A9c3.js.map → tabs-content-D__B9hd-.js.map} +1 -1
- package/dist/{tabs-tab-UT1JliwK.js → tabs-tab-CYTZevdV.js} +2 -2
- package/dist/{tabs-tab-UT1JliwK.js.map → tabs-tab-CYTZevdV.js.map} +1 -1
- package/dist/{tabs-tab-Qp3RJ17z.cjs → tabs-tab-DGwfHVDr.cjs} +2 -2
- package/dist/{tabs-tab-Qp3RJ17z.cjs.map → tabs-tab-DGwfHVDr.cjs.map} +1 -1
- package/dist/{toast-api-WhxnAT9F.js → toast-api-D_rrRhNG.js} +2 -2
- package/dist/{toast-api-WhxnAT9F.js.map → toast-api-D_rrRhNG.js.map} +1 -1
- package/dist/{toast-api-Bv87KHu_.cjs → toast-api-qtkOucy2.cjs} +2 -2
- package/dist/{toast-api-Bv87KHu_.cjs.map → toast-api-qtkOucy2.cjs.map} +1 -1
- package/dist/{tool-approval-Dfi0uAKU.cjs → tool-approval-1qiB4hhG.cjs} +4 -4
- package/dist/{tool-approval-Dfi0uAKU.cjs.map → tool-approval-1qiB4hhG.cjs.map} +1 -1
- package/dist/{tool-approval-DHeCkWHT.js → tool-approval-B6MFcaKV.js} +4 -4
- package/dist/{tool-approval-DHeCkWHT.js.map → tool-approval-B6MFcaKV.js.map} +1 -1
- package/dist/{tool-call-BCsDhIhs.cjs → tool-call-Bu66PkD-.cjs} +3 -3
- package/dist/{tool-call-BCsDhIhs.cjs.map → tool-call-Bu66PkD-.cjs.map} +1 -1
- package/dist/{tool-call-CILZa3tn.js → tool-call-Ch9-jjXU.js} +3 -3
- package/dist/{tool-call-CILZa3tn.js.map → tool-call-Ch9-jjXU.js.map} +1 -1
- package/dist/{tool-card-CJ7Kxi-U.cjs → tool-card-DrqPZfPQ.cjs} +4 -4
- package/dist/{tool-card-CJ7Kxi-U.cjs.map → tool-card-DrqPZfPQ.cjs.map} +1 -1
- package/dist/{tool-card-C3sDFUWc.js → tool-card-sO6P2Qj4.js} +4 -4
- package/dist/{tool-card-C3sDFUWc.js.map → tool-card-sO6P2Qj4.js.map} +1 -1
- package/dist/{trace-filters-BJaebsxJ.js → trace-filters-CaWkw779.js} +2 -3
- package/dist/trace-filters-CaWkw779.js.map +1 -0
- package/dist/{trace-filters-BNEZ31HX.cjs → trace-filters-a0N9bf52.cjs} +1 -2
- package/dist/trace-filters-a0N9bf52.cjs.map +1 -0
- package/dist/{use-workflow-graph-runtime-deTN_q_G.js → use-workflow-graph-runtime-BKNhOKsH.js} +3 -3
- package/dist/{use-workflow-graph-runtime-deTN_q_G.js.map → use-workflow-graph-runtime-BKNhOKsH.js.map} +1 -1
- package/dist/{use-workflow-graph-runtime-DkwQjMEV.cjs → use-workflow-graph-runtime-DYao-08R.cjs} +3 -3
- package/dist/{use-workflow-graph-runtime-DkwQjMEV.cjs.map → use-workflow-graph-runtime-DYao-08R.cjs.map} +1 -1
- package/dist/utils/toast.cjs.js +1 -1
- package/dist/utils/toast.es.js +1 -1
- package/oxlint/index.js +90 -0
- package/package.json +9 -9
- package/theme.css +5 -0
- package/dist/ActionRow-BfK77pCT.cjs.map +0 -1
- package/dist/ActionRow-Cd6tOC2K.js.map +0 -1
- package/dist/Button-Bw1e3ONi.js.map +0 -1
- package/dist/Button-YQRflC47.cjs.map +0 -1
- package/dist/DataCodeSection-CZRPsStI.cjs.map +0 -1
- package/dist/DataCodeSection-Ckd47p_S.js.map +0 -1
- package/dist/DateTimeRangePicker-C_Lie_2P.js.map +0 -1
- package/dist/DateTimeRangePicker-HmPOHwAQ.cjs.map +0 -1
- package/dist/FilterBar--4oguuVe.js.map +0 -1
- package/dist/FilterBar-BUd4f7oi.cjs.map +0 -1
- package/dist/MetricsTable-CRPeLHe1.js.map +0 -1
- package/dist/MetricsTable-D-aZf3dk.cjs.map +0 -1
- package/dist/ask-user-BdjH9F7G.js.map +0 -1
- package/dist/ask-user-C82m_G9W.cjs.map +0 -1
- package/dist/combobox-8kNAJFlj.cjs.map +0 -1
- package/dist/combobox-parts-BZVXwbG7.cjs.map +0 -1
- package/dist/combobox-parts-W7KRQUsV.js.map +0 -1
- package/dist/components/ButtonsGroup.cjs.js.map +0 -1
- package/dist/components/ButtonsGroup.es.js.map +0 -1
- package/dist/domains/traces/components/trace-time-range-chip.cjs.js +0 -90
- package/dist/domains/traces/components/trace-time-range-chip.cjs.js.map +0 -1
- package/dist/domains/traces/components/trace-time-range-chip.d.ts +0 -1
- package/dist/domains/traces/components/trace-time-range-chip.es.js +0 -86
- package/dist/domains/traces/components/trace-time-range-chip.es.js.map +0 -1
- package/dist/filter-bar-chip-7O02P9Vk.js.map +0 -1
- package/dist/filter-bar-chip-BUyMf8XQ.cjs.map +0 -1
- package/dist/input-group-g85FYfze.js.map +0 -1
- package/dist/input-group-uDpFNnSW.cjs.map +0 -1
- package/dist/list-search-BEJmYa9a.cjs.map +0 -1
- package/dist/list-search-bg7WzULj.js.map +0 -1
- package/dist/observability-saved-views-BNU3GkK6.cjs.map +0 -1
- package/dist/observability-saved-views-Zlz74syw.js.map +0 -1
- package/dist/property-filter-applied-DRglaEj-.js.map +0 -1
- package/dist/property-filter-applied-DqsPFbYM.cjs.map +0 -1
- package/dist/select-BbFpEBAY.js.map +0 -1
- package/dist/select-NySY9Men.cjs.map +0 -1
- package/dist/src/domains/traces/components/trace-time-range-chip.d.ts +0 -22
- package/dist/trace-filters-BJaebsxJ.js.map +0 -1
- package/dist/trace-filters-BNEZ31HX.cjs.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Command.cjs.js","names":["React","CommandPrimitive","cn","_Fragment","Dialog","DialogContent","DialogTitle","DialogDescription","transitions","Search","passwordManagerOptOutProps","ScrollArea","ScrollAreaViewport","Txt"],"sources":["../../src/ds/components/Command/command.tsx"],"sourcesContent":["import { Command as CommandPrimitive } from 'cmdk';\nimport { Search } from 'lucide-react';\nimport * as React from 'react';\n\nimport { Dialog, DialogContent, DialogDescription, DialogTitle } from '@/ds/components/Dialog';\nimport type { DialogSize } from '@/ds/components/Dialog';\nimport { ScrollArea, ScrollAreaViewport } from '@/ds/components/ScrollArea';\nimport type { ScrollAreaMask } from '@/ds/components/ScrollArea';\nimport { Txt } from '@/ds/components/Txt';\nimport { passwordManagerOptOutProps } from '@/ds/primitives/password-manager-autofill';\nimport { heightTransition, transitions } from '@/ds/primitives/transitions';\nimport { cn } from '@/lib/utils';\n\nconst Command = React.forwardRef<\n React.ElementRef<typeof CommandPrimitive>,\n React.ComponentPropsWithoutRef<typeof CommandPrimitive>\n>(({ className, ...props }, ref) => (\n <CommandPrimitive\n ref={ref}\n className={cn(\n 'flex size-full flex-col overflow-hidden rounded-xl bg-card text-muted-foreground in-data-[slot=dialog-content]:bg-transparent',\n className,\n )}\n {...props}\n />\n));\nCommand.displayName = CommandPrimitive.displayName;\n\ntype CommandDialogVariant = 'default' | 'inset';\n\nconst commandDialogContentClasses: Record<CommandDialogVariant, string> = {\n default: 'overflow-hidden py-0',\n inset: 'overflow-hidden sm:top-1/4 sm:translate-y-0 rounded-[calc(var(--radius-xl)+--spacing(1))] bg-muted p-1',\n};\n\nconst commandDialogCommandClasses: Record<CommandDialogVariant, string> = {\n default: cn(\n '[&_[data-slot=command-input-wrapper]_svg]:size-5',\n '**:[[cmdk-input]]:h-12',\n '[&_[cmdk-item]_svg]:size-5',\n ),\n inset: cn(\n 'gap-1',\n '[&_[data-slot=command-input-wrapper]_svg]:size-icon-md',\n '**:[[cmdk-input]]:h-11 **:[[cmdk-input]]:text-label',\n '[&_[cmdk-item]_svg]:size-icon-sm',\n '**:[[cmdk-empty]]:px-4 **:[[cmdk-empty]]:pt-3 **:[[cmdk-empty]]:pb-1 **:[[cmdk-empty]]:text-left **:[[cmdk-empty]]:text-caption',\n ),\n};\n\nconst commandDialogHeadingCase: Record<CommandDialogVariant, 'upper' | 'sentence'> = {\n default: 'upper',\n inset: 'sentence',\n};\n\nconst CommandDialogVariantContext = React.createContext<CommandDialogVariant>('default');\n\nconst CommandDialogBody = ({\n variant,\n footer,\n children,\n}: {\n variant: CommandDialogVariant;\n footer?: React.ReactNode;\n children?: React.ReactNode;\n}) => {\n if (variant === 'default') return children;\n\n return (\n <>\n <div\n data-slot=\"command-dialog-panel\"\n className=\"flex min-h-0 flex-1 flex-col overflow-hidden rounded-xl bg-background\"\n >\n {children}\n </div>\n {footer && (\n <div data-slot=\"command-dialog-footer\" className=\"flex items-center justify-between gap-3 pr-1\">\n {footer}\n </div>\n )}\n </>\n );\n};\n\ntype CommandDialogBaseProps = Omit<React.ComponentPropsWithoutRef<typeof Dialog>, 'children'> & {\n children?: React.ReactNode;\n title?: string;\n description?: string;\n size?: DialogSize;\n contentClassName?: string;\n commandClassName?: string;\n commandLabel?: string;\n showOverlay?: boolean;\n overlayClassName?: string;\n};\n\ntype CommandDialogProps = CommandDialogBaseProps &\n ({ variant?: 'default'; footer?: never } | { variant: 'inset'; footer?: React.ReactNode });\n\nconst CommandDialog = ({\n children,\n variant = 'default',\n footer,\n title = 'Command Palette',\n description = 'Search for commands and actions',\n size,\n contentClassName,\n commandClassName,\n commandLabel,\n showOverlay = false,\n overlayClassName,\n ...props\n}: CommandDialogProps) => {\n const filter = React.useCallback((value: string, search: string) => {\n const normalizedValue = value.toLowerCase();\n const normalizedSearch = search.toLowerCase();\n const searchTerms = normalizedSearch.split(/\\s+/).filter(Boolean);\n\n const matches = searchTerms.every(term => normalizedValue.includes(term));\n return matches ? 1 : 0;\n }, []);\n\n const handleKeyDown = React.useCallback((e: React.KeyboardEvent) => {\n if (e.key === 'Escape') return;\n\n e.stopPropagation();\n }, []);\n\n return (\n <Dialog {...props}>\n <DialogContent\n size={size}\n showOverlay={showOverlay}\n showCloseButton={variant !== 'inset'}\n overlayClassName={overlayClassName}\n className={cn(commandDialogContentClasses[variant], contentClassName)}\n >\n <DialogTitle className=\"sr-only\">{title}</DialogTitle>\n <DialogDescription className=\"sr-only\">{description}</DialogDescription>\n <Command\n label={commandLabel}\n loop\n filter={filter}\n onKeyDown={handleKeyDown}\n data-heading-case={commandDialogHeadingCase[variant]}\n className={cn(\n '**:[[cmdk-group-heading]]:px-2 **:[[cmdk-group-heading]]:text-column **:[[cmdk-group-heading]]:text-muted-foreground',\n '[&_[cmdk-group]:not([hidden])_~[cmdk-group]]:pt-0 **:[[cmdk-group]]:px-2',\n '**:[[cmdk-item]]:p-2',\n commandDialogCommandClasses[variant],\n commandClassName,\n )}\n >\n <CommandDialogVariantContext.Provider value={variant}>\n <CommandDialogBody variant={variant} footer={footer}>\n {children}\n </CommandDialogBody>\n </CommandDialogVariantContext.Provider>\n </Command>\n </DialogContent>\n </Dialog>\n );\n};\n\ntype CommandInputProps = React.ComponentPropsWithoutRef<typeof CommandPrimitive.Input> & {\n rightSlot?: React.ReactNode;\n wrapperClassName?: string;\n};\n\nconst CommandInput = React.forwardRef<React.ElementRef<typeof CommandPrimitive.Input>, CommandInputProps>(\n ({ className, rightSlot, wrapperClassName, ...props }, ref) => (\n <div\n data-slot=\"command-input-wrapper\"\n className={cn('flex items-center border-b border-border px-3', transitions.colors, wrapperClassName)}\n >\n <Search className={cn('mr-2 size-4 shrink-0 text-muted-foreground', transitions.colors)} />\n {/* cmdk renders autocomplete=\"off\" itself; a command search is never a credential field. */}\n <CommandPrimitive.Input\n ref={ref}\n className={cn(\n 'flex h-8 min-w-0 flex-1 rounded-md bg-transparent py-2 text-body-sm text-foreground',\n 'placeholder:text-placeholder disabled:cursor-not-allowed disabled:opacity-50',\n 'outline-none focus:outline-none focus-visible:outline-none',\n transitions.colors,\n className,\n )}\n {...props}\n {...passwordManagerOptOutProps}\n />\n {rightSlot && (\n <div data-slot=\"command-input-right-slot\" className=\"ml-2 flex shrink-0 items-center text-muted-foreground\">\n {rightSlot}\n </div>\n )}\n </div>\n ),\n);\nCommandInput.displayName = CommandPrimitive.Input.displayName;\n\ntype CommandListProps = React.ComponentPropsWithoutRef<typeof CommandPrimitive.List> & {\n scrollArea?: boolean;\n scrollAreaClassName?: string;\n scrollAreaViewportClassName?: string;\n scrollAreaMask?: ScrollAreaMask;\n};\n\nconst CommandList = React.forwardRef<React.ElementRef<typeof CommandPrimitive.List>, CommandListProps>(\n (\n {\n className,\n children,\n scrollArea = false,\n scrollAreaClassName,\n scrollAreaViewportClassName,\n scrollAreaMask,\n ...props\n },\n ref,\n ) => {\n const animateHeight = React.useContext(CommandDialogVariantContext) === 'inset';\n const list = (\n <CommandPrimitive.List\n className={cn(\n 'outline-none focus:outline-none focus-visible:outline-none',\n scrollArea ? 'overflow-visible' : 'max-h-dropdown overflow-x-hidden overflow-y-auto',\n animateHeight && cn('h-(--cmdk-list-height)', heightTransition),\n className,\n )}\n {...props}\n ref={ref}\n >\n {children}\n </CommandPrimitive.List>\n );\n\n if (!scrollArea) return list;\n\n // The list fills Command's `rounded-xl` box, so its scrollbar takes that radius's inset.\n return (\n <ScrollArea className={cn('min-h-0 scrollbar-inset-xl', scrollAreaClassName)} mask={scrollAreaMask}>\n <ScrollAreaViewport className={scrollAreaViewportClassName}>{list}</ScrollAreaViewport>\n </ScrollArea>\n );\n },\n);\nCommandList.displayName = CommandPrimitive.List.displayName;\n\nconst CommandEmpty = React.forwardRef<\n React.ElementRef<typeof CommandPrimitive.Empty>,\n React.ComponentPropsWithoutRef<typeof CommandPrimitive.Empty>\n>((props, ref) => (\n <CommandPrimitive.Empty ref={ref} className=\"py-6 text-center text-body-sm text-muted-foreground\" {...props} />\n));\nCommandEmpty.displayName = CommandPrimitive.Empty.displayName;\n\nconst CommandGroup = React.forwardRef<\n React.ElementRef<typeof CommandPrimitive.Group>,\n React.ComponentPropsWithoutRef<typeof CommandPrimitive.Group>\n>(({ className, ...props }, ref) => (\n <CommandPrimitive.Group\n ref={ref}\n className={cn(\n 'overflow-hidden p-1 text-muted-foreground',\n '**:[[cmdk-group-heading]]:px-2 **:[[cmdk-group-heading]]:pt-1.5 **:[[cmdk-group-heading]]:pb-1 **:[[cmdk-group-heading]]:text-muted-foreground',\n '[&_[cmdk-group-heading]]:text-meta [&_[cmdk-group-heading]]:uppercase',\n 'in-data-[heading-case=sentence]:**:[[cmdk-group-heading]]:tracking-normal in-data-[heading-case=sentence]:**:[[cmdk-group-heading]]:normal-case',\n className,\n )}\n {...props}\n />\n));\nCommandGroup.displayName = CommandPrimitive.Group.displayName;\n\nconst CommandSeparator = React.forwardRef<\n React.ElementRef<typeof CommandPrimitive.Separator>,\n React.ComponentPropsWithoutRef<typeof CommandPrimitive.Separator>\n>(({ className, ...props }, ref) => (\n <CommandPrimitive.Separator ref={ref} className={cn('-mx-1 h-px bg-border', className)} {...props} />\n));\nCommandSeparator.displayName = CommandPrimitive.Separator.displayName;\n\nconst CommandItem = React.forwardRef<\n React.ElementRef<typeof CommandPrimitive.Item>,\n React.ComponentPropsWithoutRef<typeof CommandPrimitive.Item>\n>(({ className, ...props }, ref) => (\n <CommandPrimitive.Item\n ref={ref}\n className={cn(\n 'relative flex cursor-pointer items-center gap-2.5 rounded-lg px-2 py-1.5 text-body-sm text-muted-foreground select-none',\n 'outline-none focus:outline-none focus-visible:outline-none',\n // cmdk's selection follows both the pointer and the arrow keys; the row paints it instantly.\n 'data-[selected=true]:bg-fill data-[selected=true]:text-foreground',\n 'data-[disabled=true]:pointer-events-none data-[disabled=true]:opacity-50',\n '[&_svg]:pointer-events-none [&>svg]:size-4 [&>svg]:shrink-0 [&>svg]:text-muted-foreground data-[selected=true]:[&>svg]:text-foreground',\n className,\n )}\n {...props}\n />\n));\nCommandItem.displayName = CommandPrimitive.Item.displayName;\n\nconst CommandShortcut = ({ className, ...props }: React.HTMLAttributes<HTMLSpanElement>) => {\n return (\n <Txt\n as=\"span\"\n variant=\"meta\"\n tone=\"muted\"\n className={cn('ml-auto tracking-wider tabular-nums', className)}\n {...props}\n />\n );\n};\nCommandShortcut.displayName = 'CommandShortcut';\n\nexport {\n Command,\n CommandDialog,\n CommandInput,\n CommandList,\n CommandEmpty,\n CommandGroup,\n CommandItem,\n CommandSeparator,\n CommandShortcut,\n};\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Command.cjs.js","names":["React","CommandPrimitive","cn","_Fragment","Dialog","DialogContent","DialogTitle","DialogDescription","transitions","Search","passwordManagerOptOutProps","ScrollArea","ScrollAreaViewport","controlIconState","Txt"],"sources":["../../src/ds/components/Command/command.tsx"],"sourcesContent":["import { Command as CommandPrimitive } from 'cmdk';\nimport { Search } from 'lucide-react';\nimport * as React from 'react';\n\nimport { Dialog, DialogContent, DialogDescription, DialogTitle } from '@/ds/components/Dialog';\nimport type { DialogSize } from '@/ds/components/Dialog';\nimport { ScrollArea, ScrollAreaViewport } from '@/ds/components/ScrollArea';\nimport type { ScrollAreaMask } from '@/ds/components/ScrollArea';\nimport { Txt } from '@/ds/components/Txt';\nimport { controlIconState } from '@/ds/primitives/control-icon';\nimport { passwordManagerOptOutProps } from '@/ds/primitives/password-manager-autofill';\nimport { heightTransition, transitions } from '@/ds/primitives/transitions';\nimport { cn } from '@/lib/utils';\n\nconst Command = React.forwardRef<\n React.ElementRef<typeof CommandPrimitive>,\n React.ComponentPropsWithoutRef<typeof CommandPrimitive>\n>(({ className, ...props }, ref) => (\n <CommandPrimitive\n ref={ref}\n className={cn(\n 'flex size-full flex-col overflow-hidden rounded-xl bg-card text-muted-foreground in-data-[slot=dialog-content]:bg-transparent',\n className,\n )}\n {...props}\n />\n));\nCommand.displayName = CommandPrimitive.displayName;\n\ntype CommandDialogVariant = 'default' | 'inset';\n\nconst commandDialogContentClasses: Record<CommandDialogVariant, string> = {\n default: 'overflow-hidden py-0',\n inset: 'overflow-hidden sm:top-1/4 sm:translate-y-0 rounded-[calc(var(--radius-xl)+--spacing(1))] bg-muted p-1',\n};\n\nconst commandDialogCommandClasses: Record<CommandDialogVariant, string> = {\n default: cn(\n '[&_[data-slot=command-input-wrapper]_svg]:size-5',\n '**:[[cmdk-input]]:h-12',\n '[&_[cmdk-item]_svg]:size-5',\n ),\n inset: cn(\n 'gap-1',\n '[&_[data-slot=command-input-wrapper]_svg]:size-icon-md',\n '**:[[cmdk-input]]:h-11 **:[[cmdk-input]]:text-label',\n '[&_[cmdk-item]_svg]:size-icon-sm',\n '**:[[cmdk-empty]]:px-4 **:[[cmdk-empty]]:pt-3 **:[[cmdk-empty]]:pb-1 **:[[cmdk-empty]]:text-left **:[[cmdk-empty]]:text-caption',\n ),\n};\n\nconst commandDialogHeadingCase: Record<CommandDialogVariant, 'upper' | 'sentence'> = {\n default: 'upper',\n inset: 'sentence',\n};\n\nconst CommandDialogVariantContext = React.createContext<CommandDialogVariant>('default');\n\nconst CommandDialogBody = ({\n variant,\n footer,\n children,\n}: {\n variant: CommandDialogVariant;\n footer?: React.ReactNode;\n children?: React.ReactNode;\n}) => {\n if (variant === 'default') return children;\n\n return (\n <>\n <div\n data-slot=\"command-dialog-panel\"\n className=\"flex min-h-0 flex-1 flex-col overflow-hidden rounded-xl bg-background\"\n >\n {children}\n </div>\n {footer && (\n <div data-slot=\"command-dialog-footer\" className=\"flex items-center justify-between gap-3 pr-1\">\n {footer}\n </div>\n )}\n </>\n );\n};\n\ntype CommandDialogBaseProps = Omit<React.ComponentPropsWithoutRef<typeof Dialog>, 'children'> & {\n children?: React.ReactNode;\n title?: string;\n description?: string;\n size?: DialogSize;\n contentClassName?: string;\n commandClassName?: string;\n commandLabel?: string;\n showOverlay?: boolean;\n overlayClassName?: string;\n};\n\ntype CommandDialogProps = CommandDialogBaseProps &\n ({ variant?: 'default'; footer?: never } | { variant: 'inset'; footer?: React.ReactNode });\n\nconst CommandDialog = ({\n children,\n variant = 'default',\n footer,\n title = 'Command Palette',\n description = 'Search for commands and actions',\n size,\n contentClassName,\n commandClassName,\n commandLabel,\n showOverlay = false,\n overlayClassName,\n ...props\n}: CommandDialogProps) => {\n const filter = React.useCallback((value: string, search: string) => {\n const normalizedValue = value.toLowerCase();\n const normalizedSearch = search.toLowerCase();\n const searchTerms = normalizedSearch.split(/\\s+/).filter(Boolean);\n\n const matches = searchTerms.every(term => normalizedValue.includes(term));\n return matches ? 1 : 0;\n }, []);\n\n const handleKeyDown = React.useCallback((e: React.KeyboardEvent) => {\n if (e.key === 'Escape') return;\n\n e.stopPropagation();\n }, []);\n\n return (\n <Dialog {...props}>\n <DialogContent\n size={size}\n showOverlay={showOverlay}\n showCloseButton={variant !== 'inset'}\n overlayClassName={overlayClassName}\n className={cn(commandDialogContentClasses[variant], contentClassName)}\n >\n <DialogTitle className=\"sr-only\">{title}</DialogTitle>\n <DialogDescription className=\"sr-only\">{description}</DialogDescription>\n <Command\n label={commandLabel}\n loop\n filter={filter}\n onKeyDown={handleKeyDown}\n data-heading-case={commandDialogHeadingCase[variant]}\n className={cn(\n '**:[[cmdk-group-heading]]:px-2 **:[[cmdk-group-heading]]:text-column **:[[cmdk-group-heading]]:text-muted-foreground',\n '[&_[cmdk-group]:not([hidden])_~[cmdk-group]]:pt-0 **:[[cmdk-group]]:px-2',\n '**:[[cmdk-item]]:p-2',\n commandDialogCommandClasses[variant],\n commandClassName,\n )}\n >\n <CommandDialogVariantContext.Provider value={variant}>\n <CommandDialogBody variant={variant} footer={footer}>\n {children}\n </CommandDialogBody>\n </CommandDialogVariantContext.Provider>\n </Command>\n </DialogContent>\n </Dialog>\n );\n};\n\ntype CommandInputProps = React.ComponentPropsWithoutRef<typeof CommandPrimitive.Input> & {\n rightSlot?: React.ReactNode;\n wrapperClassName?: string;\n};\n\nconst CommandInput = React.forwardRef<React.ElementRef<typeof CommandPrimitive.Input>, CommandInputProps>(\n ({ className, rightSlot, wrapperClassName, ...props }, ref) => (\n <div\n data-slot=\"command-input-wrapper\"\n className={cn('flex items-center border-b border-border px-3', transitions.colors, wrapperClassName)}\n >\n <Search className={cn('mr-2 size-4 shrink-0 text-muted-foreground', transitions.colors)} />\n {/* cmdk renders autocomplete=\"off\" itself; a command search is never a credential field. */}\n <CommandPrimitive.Input\n ref={ref}\n className={cn(\n 'flex h-8 min-w-0 flex-1 rounded-md bg-transparent py-2 text-body-sm text-foreground',\n 'placeholder:text-placeholder disabled:cursor-not-allowed disabled:opacity-50',\n 'outline-none focus:outline-none focus-visible:outline-none',\n transitions.colors,\n className,\n )}\n {...props}\n {...passwordManagerOptOutProps}\n />\n {rightSlot && (\n <div data-slot=\"command-input-right-slot\" className=\"ml-2 flex shrink-0 items-center text-muted-foreground\">\n {rightSlot}\n </div>\n )}\n </div>\n ),\n);\nCommandInput.displayName = CommandPrimitive.Input.displayName;\n\ntype CommandListProps = React.ComponentPropsWithoutRef<typeof CommandPrimitive.List> & {\n scrollArea?: boolean;\n scrollAreaClassName?: string;\n scrollAreaViewportClassName?: string;\n scrollAreaMask?: ScrollAreaMask;\n};\n\nconst CommandList = React.forwardRef<React.ElementRef<typeof CommandPrimitive.List>, CommandListProps>(\n (\n {\n className,\n children,\n scrollArea = false,\n scrollAreaClassName,\n scrollAreaViewportClassName,\n scrollAreaMask,\n ...props\n },\n ref,\n ) => {\n const animateHeight = React.useContext(CommandDialogVariantContext) === 'inset';\n const list = (\n <CommandPrimitive.List\n className={cn(\n 'outline-none focus:outline-none focus-visible:outline-none',\n scrollArea ? 'overflow-visible' : 'max-h-dropdown overflow-x-hidden overflow-y-auto',\n animateHeight && cn('h-(--cmdk-list-height)', heightTransition),\n className,\n )}\n {...props}\n ref={ref}\n >\n {children}\n </CommandPrimitive.List>\n );\n\n if (!scrollArea) return list;\n\n // The list fills Command's `rounded-xl` box, so its scrollbar takes that radius's inset.\n return (\n <ScrollArea className={cn('min-h-0 scrollbar-inset-xl', scrollAreaClassName)} mask={scrollAreaMask}>\n <ScrollAreaViewport className={scrollAreaViewportClassName}>{list}</ScrollAreaViewport>\n </ScrollArea>\n );\n },\n);\nCommandList.displayName = CommandPrimitive.List.displayName;\n\nconst CommandEmpty = React.forwardRef<\n React.ElementRef<typeof CommandPrimitive.Empty>,\n React.ComponentPropsWithoutRef<typeof CommandPrimitive.Empty>\n>((props, ref) => (\n <CommandPrimitive.Empty ref={ref} className=\"py-6 text-center text-body-sm text-muted-foreground\" {...props} />\n));\nCommandEmpty.displayName = CommandPrimitive.Empty.displayName;\n\nconst CommandGroup = React.forwardRef<\n React.ElementRef<typeof CommandPrimitive.Group>,\n React.ComponentPropsWithoutRef<typeof CommandPrimitive.Group>\n>(({ className, ...props }, ref) => (\n <CommandPrimitive.Group\n ref={ref}\n className={cn(\n 'overflow-hidden p-1 text-muted-foreground',\n '**:[[cmdk-group-heading]]:px-2 **:[[cmdk-group-heading]]:pt-1.5 **:[[cmdk-group-heading]]:pb-1 **:[[cmdk-group-heading]]:text-muted-foreground',\n '[&_[cmdk-group-heading]]:text-meta [&_[cmdk-group-heading]]:uppercase',\n 'in-data-[heading-case=sentence]:**:[[cmdk-group-heading]]:tracking-normal in-data-[heading-case=sentence]:**:[[cmdk-group-heading]]:normal-case',\n className,\n )}\n {...props}\n />\n));\nCommandGroup.displayName = CommandPrimitive.Group.displayName;\n\nconst CommandSeparator = React.forwardRef<\n React.ElementRef<typeof CommandPrimitive.Separator>,\n React.ComponentPropsWithoutRef<typeof CommandPrimitive.Separator>\n>(({ className, ...props }, ref) => (\n <CommandPrimitive.Separator ref={ref} className={cn('-mx-1 h-px bg-border', className)} {...props} />\n));\nCommandSeparator.displayName = CommandPrimitive.Separator.displayName;\n\nconst CommandItem = React.forwardRef<\n React.ElementRef<typeof CommandPrimitive.Item>,\n React.ComponentPropsWithoutRef<typeof CommandPrimitive.Item>\n>(({ className, ...props }, ref) => (\n <CommandPrimitive.Item\n ref={ref}\n className={cn(\n 'relative flex cursor-pointer items-center gap-2.5 rounded-lg px-2 py-1.5 text-body-sm text-muted-foreground select-none',\n 'outline-none focus:outline-none focus-visible:outline-none',\n // cmdk's selection follows both the pointer and the arrow keys; the row paints it instantly.\n 'data-[selected=true]:bg-fill data-[selected=true]:text-foreground',\n 'data-[disabled=true]:pointer-events-none data-[disabled=true]:opacity-50',\n '[&_svg]:pointer-events-none [&>svg]:size-4 [&>svg]:shrink-0',\n controlIconState,\n // A selected row brightens its icon with its label, like a highlighted menu row.\n '[--control-icon-hover:var(--foreground)] data-[selected=true]:[--control-icon:var(--control-icon-hover)]',\n className,\n )}\n {...props}\n />\n));\nCommandItem.displayName = CommandPrimitive.Item.displayName;\n\nconst CommandShortcut = ({ className, ...props }: React.HTMLAttributes<HTMLSpanElement>) => {\n return (\n <Txt\n as=\"span\"\n variant=\"meta\"\n tone=\"muted\"\n className={cn('ml-auto tracking-wider tabular-nums', className)}\n {...props}\n />\n );\n};\nCommandShortcut.displayName = 'CommandShortcut';\n\nexport {\n Command,\n CommandDialog,\n CommandInput,\n CommandList,\n CommandEmpty,\n CommandGroup,\n CommandItem,\n CommandSeparator,\n CommandShortcut,\n};\n"],"mappings":"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"}
|
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
import { t as cn } from "../utils-DQx8TpNT.js";
|
|
2
|
+
import { controlIconState } from "../primitives/control-icon.es.js";
|
|
2
3
|
import { transitions } from "../primitives/transitions.es.js";
|
|
3
4
|
import { n as ScrollAreaViewport, t as ScrollArea } from "../scroll-area-C226l0v0.js";
|
|
4
5
|
import { t as Txt } from "../Txt-BM6TVV_c.js";
|
|
5
6
|
import { passwordManagerOptOutProps } from "../primitives/password-manager-autofill.es.js";
|
|
6
|
-
import { a as DialogContent, d as DialogTitle, o as DialogDescription, t as Dialog } from "../Dialog-
|
|
7
|
+
import { a as DialogContent, d as DialogTitle, o as DialogDescription, t as Dialog } from "../Dialog-DaWtxwd9.js";
|
|
7
8
|
import * as React$1 from "react";
|
|
8
9
|
import { Fragment as Fragment$1, jsx, jsxs } from "react/jsx-runtime";
|
|
9
10
|
import { Search } from "lucide-react";
|
|
@@ -144,7 +145,7 @@ var CommandSeparator = React$1.forwardRef(({ className, ...props }, ref) => /* @
|
|
|
144
145
|
CommandSeparator.displayName = Command$1.Separator.displayName;
|
|
145
146
|
var CommandItem = React$1.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(Command$1.Item, {
|
|
146
147
|
ref,
|
|
147
|
-
className: cn("relative flex cursor-pointer items-center gap-2.5 rounded-lg px-2 py-1.5 text-body-sm text-muted-foreground select-none", "outline-none focus:outline-none focus-visible:outline-none", "data-[selected=true]:bg-fill data-[selected=true]:text-foreground", "data-[disabled=true]:pointer-events-none data-[disabled=true]:opacity-50", "[&_svg]:pointer-events-none [&>svg]:size-4 [&>svg]:shrink-0 [
|
|
148
|
+
className: cn("relative flex cursor-pointer items-center gap-2.5 rounded-lg px-2 py-1.5 text-body-sm text-muted-foreground select-none", "outline-none focus:outline-none focus-visible:outline-none", "data-[selected=true]:bg-fill data-[selected=true]:text-foreground", "data-[disabled=true]:pointer-events-none data-[disabled=true]:opacity-50", "[&_svg]:pointer-events-none [&>svg]:size-4 [&>svg]:shrink-0", controlIconState, "[--control-icon-hover:var(--foreground)] data-[selected=true]:[--control-icon:var(--control-icon-hover)]", className),
|
|
148
149
|
...props
|
|
149
150
|
}));
|
|
150
151
|
CommandItem.displayName = Command$1.Item.displayName;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Command.es.js","names":["React","CommandPrimitive","_Fragment"],"sources":["../../src/ds/components/Command/command.tsx"],"sourcesContent":["import { Command as CommandPrimitive } from 'cmdk';\nimport { Search } from 'lucide-react';\nimport * as React from 'react';\n\nimport { Dialog, DialogContent, DialogDescription, DialogTitle } from '@/ds/components/Dialog';\nimport type { DialogSize } from '@/ds/components/Dialog';\nimport { ScrollArea, ScrollAreaViewport } from '@/ds/components/ScrollArea';\nimport type { ScrollAreaMask } from '@/ds/components/ScrollArea';\nimport { Txt } from '@/ds/components/Txt';\nimport { passwordManagerOptOutProps } from '@/ds/primitives/password-manager-autofill';\nimport { heightTransition, transitions } from '@/ds/primitives/transitions';\nimport { cn } from '@/lib/utils';\n\nconst Command = React.forwardRef<\n React.ElementRef<typeof CommandPrimitive>,\n React.ComponentPropsWithoutRef<typeof CommandPrimitive>\n>(({ className, ...props }, ref) => (\n <CommandPrimitive\n ref={ref}\n className={cn(\n 'flex size-full flex-col overflow-hidden rounded-xl bg-card text-muted-foreground in-data-[slot=dialog-content]:bg-transparent',\n className,\n )}\n {...props}\n />\n));\nCommand.displayName = CommandPrimitive.displayName;\n\ntype CommandDialogVariant = 'default' | 'inset';\n\nconst commandDialogContentClasses: Record<CommandDialogVariant, string> = {\n default: 'overflow-hidden py-0',\n inset: 'overflow-hidden sm:top-1/4 sm:translate-y-0 rounded-[calc(var(--radius-xl)+--spacing(1))] bg-muted p-1',\n};\n\nconst commandDialogCommandClasses: Record<CommandDialogVariant, string> = {\n default: cn(\n '[&_[data-slot=command-input-wrapper]_svg]:size-5',\n '**:[[cmdk-input]]:h-12',\n '[&_[cmdk-item]_svg]:size-5',\n ),\n inset: cn(\n 'gap-1',\n '[&_[data-slot=command-input-wrapper]_svg]:size-icon-md',\n '**:[[cmdk-input]]:h-11 **:[[cmdk-input]]:text-label',\n '[&_[cmdk-item]_svg]:size-icon-sm',\n '**:[[cmdk-empty]]:px-4 **:[[cmdk-empty]]:pt-3 **:[[cmdk-empty]]:pb-1 **:[[cmdk-empty]]:text-left **:[[cmdk-empty]]:text-caption',\n ),\n};\n\nconst commandDialogHeadingCase: Record<CommandDialogVariant, 'upper' | 'sentence'> = {\n default: 'upper',\n inset: 'sentence',\n};\n\nconst CommandDialogVariantContext = React.createContext<CommandDialogVariant>('default');\n\nconst CommandDialogBody = ({\n variant,\n footer,\n children,\n}: {\n variant: CommandDialogVariant;\n footer?: React.ReactNode;\n children?: React.ReactNode;\n}) => {\n if (variant === 'default') return children;\n\n return (\n <>\n <div\n data-slot=\"command-dialog-panel\"\n className=\"flex min-h-0 flex-1 flex-col overflow-hidden rounded-xl bg-background\"\n >\n {children}\n </div>\n {footer && (\n <div data-slot=\"command-dialog-footer\" className=\"flex items-center justify-between gap-3 pr-1\">\n {footer}\n </div>\n )}\n </>\n );\n};\n\ntype CommandDialogBaseProps = Omit<React.ComponentPropsWithoutRef<typeof Dialog>, 'children'> & {\n children?: React.ReactNode;\n title?: string;\n description?: string;\n size?: DialogSize;\n contentClassName?: string;\n commandClassName?: string;\n commandLabel?: string;\n showOverlay?: boolean;\n overlayClassName?: string;\n};\n\ntype CommandDialogProps = CommandDialogBaseProps &\n ({ variant?: 'default'; footer?: never } | { variant: 'inset'; footer?: React.ReactNode });\n\nconst CommandDialog = ({\n children,\n variant = 'default',\n footer,\n title = 'Command Palette',\n description = 'Search for commands and actions',\n size,\n contentClassName,\n commandClassName,\n commandLabel,\n showOverlay = false,\n overlayClassName,\n ...props\n}: CommandDialogProps) => {\n const filter = React.useCallback((value: string, search: string) => {\n const normalizedValue = value.toLowerCase();\n const normalizedSearch = search.toLowerCase();\n const searchTerms = normalizedSearch.split(/\\s+/).filter(Boolean);\n\n const matches = searchTerms.every(term => normalizedValue.includes(term));\n return matches ? 1 : 0;\n }, []);\n\n const handleKeyDown = React.useCallback((e: React.KeyboardEvent) => {\n if (e.key === 'Escape') return;\n\n e.stopPropagation();\n }, []);\n\n return (\n <Dialog {...props}>\n <DialogContent\n size={size}\n showOverlay={showOverlay}\n showCloseButton={variant !== 'inset'}\n overlayClassName={overlayClassName}\n className={cn(commandDialogContentClasses[variant], contentClassName)}\n >\n <DialogTitle className=\"sr-only\">{title}</DialogTitle>\n <DialogDescription className=\"sr-only\">{description}</DialogDescription>\n <Command\n label={commandLabel}\n loop\n filter={filter}\n onKeyDown={handleKeyDown}\n data-heading-case={commandDialogHeadingCase[variant]}\n className={cn(\n '**:[[cmdk-group-heading]]:px-2 **:[[cmdk-group-heading]]:text-column **:[[cmdk-group-heading]]:text-muted-foreground',\n '[&_[cmdk-group]:not([hidden])_~[cmdk-group]]:pt-0 **:[[cmdk-group]]:px-2',\n '**:[[cmdk-item]]:p-2',\n commandDialogCommandClasses[variant],\n commandClassName,\n )}\n >\n <CommandDialogVariantContext.Provider value={variant}>\n <CommandDialogBody variant={variant} footer={footer}>\n {children}\n </CommandDialogBody>\n </CommandDialogVariantContext.Provider>\n </Command>\n </DialogContent>\n </Dialog>\n );\n};\n\ntype CommandInputProps = React.ComponentPropsWithoutRef<typeof CommandPrimitive.Input> & {\n rightSlot?: React.ReactNode;\n wrapperClassName?: string;\n};\n\nconst CommandInput = React.forwardRef<React.ElementRef<typeof CommandPrimitive.Input>, CommandInputProps>(\n ({ className, rightSlot, wrapperClassName, ...props }, ref) => (\n <div\n data-slot=\"command-input-wrapper\"\n className={cn('flex items-center border-b border-border px-3', transitions.colors, wrapperClassName)}\n >\n <Search className={cn('mr-2 size-4 shrink-0 text-muted-foreground', transitions.colors)} />\n {/* cmdk renders autocomplete=\"off\" itself; a command search is never a credential field. */}\n <CommandPrimitive.Input\n ref={ref}\n className={cn(\n 'flex h-8 min-w-0 flex-1 rounded-md bg-transparent py-2 text-body-sm text-foreground',\n 'placeholder:text-placeholder disabled:cursor-not-allowed disabled:opacity-50',\n 'outline-none focus:outline-none focus-visible:outline-none',\n transitions.colors,\n className,\n )}\n {...props}\n {...passwordManagerOptOutProps}\n />\n {rightSlot && (\n <div data-slot=\"command-input-right-slot\" className=\"ml-2 flex shrink-0 items-center text-muted-foreground\">\n {rightSlot}\n </div>\n )}\n </div>\n ),\n);\nCommandInput.displayName = CommandPrimitive.Input.displayName;\n\ntype CommandListProps = React.ComponentPropsWithoutRef<typeof CommandPrimitive.List> & {\n scrollArea?: boolean;\n scrollAreaClassName?: string;\n scrollAreaViewportClassName?: string;\n scrollAreaMask?: ScrollAreaMask;\n};\n\nconst CommandList = React.forwardRef<React.ElementRef<typeof CommandPrimitive.List>, CommandListProps>(\n (\n {\n className,\n children,\n scrollArea = false,\n scrollAreaClassName,\n scrollAreaViewportClassName,\n scrollAreaMask,\n ...props\n },\n ref,\n ) => {\n const animateHeight = React.useContext(CommandDialogVariantContext) === 'inset';\n const list = (\n <CommandPrimitive.List\n className={cn(\n 'outline-none focus:outline-none focus-visible:outline-none',\n scrollArea ? 'overflow-visible' : 'max-h-dropdown overflow-x-hidden overflow-y-auto',\n animateHeight && cn('h-(--cmdk-list-height)', heightTransition),\n className,\n )}\n {...props}\n ref={ref}\n >\n {children}\n </CommandPrimitive.List>\n );\n\n if (!scrollArea) return list;\n\n // The list fills Command's `rounded-xl` box, so its scrollbar takes that radius's inset.\n return (\n <ScrollArea className={cn('min-h-0 scrollbar-inset-xl', scrollAreaClassName)} mask={scrollAreaMask}>\n <ScrollAreaViewport className={scrollAreaViewportClassName}>{list}</ScrollAreaViewport>\n </ScrollArea>\n );\n },\n);\nCommandList.displayName = CommandPrimitive.List.displayName;\n\nconst CommandEmpty = React.forwardRef<\n React.ElementRef<typeof CommandPrimitive.Empty>,\n React.ComponentPropsWithoutRef<typeof CommandPrimitive.Empty>\n>((props, ref) => (\n <CommandPrimitive.Empty ref={ref} className=\"py-6 text-center text-body-sm text-muted-foreground\" {...props} />\n));\nCommandEmpty.displayName = CommandPrimitive.Empty.displayName;\n\nconst CommandGroup = React.forwardRef<\n React.ElementRef<typeof CommandPrimitive.Group>,\n React.ComponentPropsWithoutRef<typeof CommandPrimitive.Group>\n>(({ className, ...props }, ref) => (\n <CommandPrimitive.Group\n ref={ref}\n className={cn(\n 'overflow-hidden p-1 text-muted-foreground',\n '**:[[cmdk-group-heading]]:px-2 **:[[cmdk-group-heading]]:pt-1.5 **:[[cmdk-group-heading]]:pb-1 **:[[cmdk-group-heading]]:text-muted-foreground',\n '[&_[cmdk-group-heading]]:text-meta [&_[cmdk-group-heading]]:uppercase',\n 'in-data-[heading-case=sentence]:**:[[cmdk-group-heading]]:tracking-normal in-data-[heading-case=sentence]:**:[[cmdk-group-heading]]:normal-case',\n className,\n )}\n {...props}\n />\n));\nCommandGroup.displayName = CommandPrimitive.Group.displayName;\n\nconst CommandSeparator = React.forwardRef<\n React.ElementRef<typeof CommandPrimitive.Separator>,\n React.ComponentPropsWithoutRef<typeof CommandPrimitive.Separator>\n>(({ className, ...props }, ref) => (\n <CommandPrimitive.Separator ref={ref} className={cn('-mx-1 h-px bg-border', className)} {...props} />\n));\nCommandSeparator.displayName = CommandPrimitive.Separator.displayName;\n\nconst CommandItem = React.forwardRef<\n React.ElementRef<typeof CommandPrimitive.Item>,\n React.ComponentPropsWithoutRef<typeof CommandPrimitive.Item>\n>(({ className, ...props }, ref) => (\n <CommandPrimitive.Item\n ref={ref}\n className={cn(\n 'relative flex cursor-pointer items-center gap-2.5 rounded-lg px-2 py-1.5 text-body-sm text-muted-foreground select-none',\n 'outline-none focus:outline-none focus-visible:outline-none',\n // cmdk's selection follows both the pointer and the arrow keys; the row paints it instantly.\n 'data-[selected=true]:bg-fill data-[selected=true]:text-foreground',\n 'data-[disabled=true]:pointer-events-none data-[disabled=true]:opacity-50',\n '[&_svg]:pointer-events-none [&>svg]:size-4 [&>svg]:shrink-0 [&>svg]:text-muted-foreground data-[selected=true]:[&>svg]:text-foreground',\n className,\n )}\n {...props}\n />\n));\nCommandItem.displayName = CommandPrimitive.Item.displayName;\n\nconst CommandShortcut = ({ className, ...props }: React.HTMLAttributes<HTMLSpanElement>) => {\n return (\n <Txt\n as=\"span\"\n variant=\"meta\"\n tone=\"muted\"\n className={cn('ml-auto tracking-wider tabular-nums', className)}\n {...props}\n />\n );\n};\nCommandShortcut.displayName = 'CommandShortcut';\n\nexport {\n Command,\n CommandDialog,\n CommandInput,\n CommandList,\n CommandEmpty,\n CommandGroup,\n CommandItem,\n CommandSeparator,\n CommandShortcut,\n};\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Command.es.js","names":["React","CommandPrimitive","_Fragment"],"sources":["../../src/ds/components/Command/command.tsx"],"sourcesContent":["import { Command as CommandPrimitive } from 'cmdk';\nimport { Search } from 'lucide-react';\nimport * as React from 'react';\n\nimport { Dialog, DialogContent, DialogDescription, DialogTitle } from '@/ds/components/Dialog';\nimport type { DialogSize } from '@/ds/components/Dialog';\nimport { ScrollArea, ScrollAreaViewport } from '@/ds/components/ScrollArea';\nimport type { ScrollAreaMask } from '@/ds/components/ScrollArea';\nimport { Txt } from '@/ds/components/Txt';\nimport { controlIconState } from '@/ds/primitives/control-icon';\nimport { passwordManagerOptOutProps } from '@/ds/primitives/password-manager-autofill';\nimport { heightTransition, transitions } from '@/ds/primitives/transitions';\nimport { cn } from '@/lib/utils';\n\nconst Command = React.forwardRef<\n React.ElementRef<typeof CommandPrimitive>,\n React.ComponentPropsWithoutRef<typeof CommandPrimitive>\n>(({ className, ...props }, ref) => (\n <CommandPrimitive\n ref={ref}\n className={cn(\n 'flex size-full flex-col overflow-hidden rounded-xl bg-card text-muted-foreground in-data-[slot=dialog-content]:bg-transparent',\n className,\n )}\n {...props}\n />\n));\nCommand.displayName = CommandPrimitive.displayName;\n\ntype CommandDialogVariant = 'default' | 'inset';\n\nconst commandDialogContentClasses: Record<CommandDialogVariant, string> = {\n default: 'overflow-hidden py-0',\n inset: 'overflow-hidden sm:top-1/4 sm:translate-y-0 rounded-[calc(var(--radius-xl)+--spacing(1))] bg-muted p-1',\n};\n\nconst commandDialogCommandClasses: Record<CommandDialogVariant, string> = {\n default: cn(\n '[&_[data-slot=command-input-wrapper]_svg]:size-5',\n '**:[[cmdk-input]]:h-12',\n '[&_[cmdk-item]_svg]:size-5',\n ),\n inset: cn(\n 'gap-1',\n '[&_[data-slot=command-input-wrapper]_svg]:size-icon-md',\n '**:[[cmdk-input]]:h-11 **:[[cmdk-input]]:text-label',\n '[&_[cmdk-item]_svg]:size-icon-sm',\n '**:[[cmdk-empty]]:px-4 **:[[cmdk-empty]]:pt-3 **:[[cmdk-empty]]:pb-1 **:[[cmdk-empty]]:text-left **:[[cmdk-empty]]:text-caption',\n ),\n};\n\nconst commandDialogHeadingCase: Record<CommandDialogVariant, 'upper' | 'sentence'> = {\n default: 'upper',\n inset: 'sentence',\n};\n\nconst CommandDialogVariantContext = React.createContext<CommandDialogVariant>('default');\n\nconst CommandDialogBody = ({\n variant,\n footer,\n children,\n}: {\n variant: CommandDialogVariant;\n footer?: React.ReactNode;\n children?: React.ReactNode;\n}) => {\n if (variant === 'default') return children;\n\n return (\n <>\n <div\n data-slot=\"command-dialog-panel\"\n className=\"flex min-h-0 flex-1 flex-col overflow-hidden rounded-xl bg-background\"\n >\n {children}\n </div>\n {footer && (\n <div data-slot=\"command-dialog-footer\" className=\"flex items-center justify-between gap-3 pr-1\">\n {footer}\n </div>\n )}\n </>\n );\n};\n\ntype CommandDialogBaseProps = Omit<React.ComponentPropsWithoutRef<typeof Dialog>, 'children'> & {\n children?: React.ReactNode;\n title?: string;\n description?: string;\n size?: DialogSize;\n contentClassName?: string;\n commandClassName?: string;\n commandLabel?: string;\n showOverlay?: boolean;\n overlayClassName?: string;\n};\n\ntype CommandDialogProps = CommandDialogBaseProps &\n ({ variant?: 'default'; footer?: never } | { variant: 'inset'; footer?: React.ReactNode });\n\nconst CommandDialog = ({\n children,\n variant = 'default',\n footer,\n title = 'Command Palette',\n description = 'Search for commands and actions',\n size,\n contentClassName,\n commandClassName,\n commandLabel,\n showOverlay = false,\n overlayClassName,\n ...props\n}: CommandDialogProps) => {\n const filter = React.useCallback((value: string, search: string) => {\n const normalizedValue = value.toLowerCase();\n const normalizedSearch = search.toLowerCase();\n const searchTerms = normalizedSearch.split(/\\s+/).filter(Boolean);\n\n const matches = searchTerms.every(term => normalizedValue.includes(term));\n return matches ? 1 : 0;\n }, []);\n\n const handleKeyDown = React.useCallback((e: React.KeyboardEvent) => {\n if (e.key === 'Escape') return;\n\n e.stopPropagation();\n }, []);\n\n return (\n <Dialog {...props}>\n <DialogContent\n size={size}\n showOverlay={showOverlay}\n showCloseButton={variant !== 'inset'}\n overlayClassName={overlayClassName}\n className={cn(commandDialogContentClasses[variant], contentClassName)}\n >\n <DialogTitle className=\"sr-only\">{title}</DialogTitle>\n <DialogDescription className=\"sr-only\">{description}</DialogDescription>\n <Command\n label={commandLabel}\n loop\n filter={filter}\n onKeyDown={handleKeyDown}\n data-heading-case={commandDialogHeadingCase[variant]}\n className={cn(\n '**:[[cmdk-group-heading]]:px-2 **:[[cmdk-group-heading]]:text-column **:[[cmdk-group-heading]]:text-muted-foreground',\n '[&_[cmdk-group]:not([hidden])_~[cmdk-group]]:pt-0 **:[[cmdk-group]]:px-2',\n '**:[[cmdk-item]]:p-2',\n commandDialogCommandClasses[variant],\n commandClassName,\n )}\n >\n <CommandDialogVariantContext.Provider value={variant}>\n <CommandDialogBody variant={variant} footer={footer}>\n {children}\n </CommandDialogBody>\n </CommandDialogVariantContext.Provider>\n </Command>\n </DialogContent>\n </Dialog>\n );\n};\n\ntype CommandInputProps = React.ComponentPropsWithoutRef<typeof CommandPrimitive.Input> & {\n rightSlot?: React.ReactNode;\n wrapperClassName?: string;\n};\n\nconst CommandInput = React.forwardRef<React.ElementRef<typeof CommandPrimitive.Input>, CommandInputProps>(\n ({ className, rightSlot, wrapperClassName, ...props }, ref) => (\n <div\n data-slot=\"command-input-wrapper\"\n className={cn('flex items-center border-b border-border px-3', transitions.colors, wrapperClassName)}\n >\n <Search className={cn('mr-2 size-4 shrink-0 text-muted-foreground', transitions.colors)} />\n {/* cmdk renders autocomplete=\"off\" itself; a command search is never a credential field. */}\n <CommandPrimitive.Input\n ref={ref}\n className={cn(\n 'flex h-8 min-w-0 flex-1 rounded-md bg-transparent py-2 text-body-sm text-foreground',\n 'placeholder:text-placeholder disabled:cursor-not-allowed disabled:opacity-50',\n 'outline-none focus:outline-none focus-visible:outline-none',\n transitions.colors,\n className,\n )}\n {...props}\n {...passwordManagerOptOutProps}\n />\n {rightSlot && (\n <div data-slot=\"command-input-right-slot\" className=\"ml-2 flex shrink-0 items-center text-muted-foreground\">\n {rightSlot}\n </div>\n )}\n </div>\n ),\n);\nCommandInput.displayName = CommandPrimitive.Input.displayName;\n\ntype CommandListProps = React.ComponentPropsWithoutRef<typeof CommandPrimitive.List> & {\n scrollArea?: boolean;\n scrollAreaClassName?: string;\n scrollAreaViewportClassName?: string;\n scrollAreaMask?: ScrollAreaMask;\n};\n\nconst CommandList = React.forwardRef<React.ElementRef<typeof CommandPrimitive.List>, CommandListProps>(\n (\n {\n className,\n children,\n scrollArea = false,\n scrollAreaClassName,\n scrollAreaViewportClassName,\n scrollAreaMask,\n ...props\n },\n ref,\n ) => {\n const animateHeight = React.useContext(CommandDialogVariantContext) === 'inset';\n const list = (\n <CommandPrimitive.List\n className={cn(\n 'outline-none focus:outline-none focus-visible:outline-none',\n scrollArea ? 'overflow-visible' : 'max-h-dropdown overflow-x-hidden overflow-y-auto',\n animateHeight && cn('h-(--cmdk-list-height)', heightTransition),\n className,\n )}\n {...props}\n ref={ref}\n >\n {children}\n </CommandPrimitive.List>\n );\n\n if (!scrollArea) return list;\n\n // The list fills Command's `rounded-xl` box, so its scrollbar takes that radius's inset.\n return (\n <ScrollArea className={cn('min-h-0 scrollbar-inset-xl', scrollAreaClassName)} mask={scrollAreaMask}>\n <ScrollAreaViewport className={scrollAreaViewportClassName}>{list}</ScrollAreaViewport>\n </ScrollArea>\n );\n },\n);\nCommandList.displayName = CommandPrimitive.List.displayName;\n\nconst CommandEmpty = React.forwardRef<\n React.ElementRef<typeof CommandPrimitive.Empty>,\n React.ComponentPropsWithoutRef<typeof CommandPrimitive.Empty>\n>((props, ref) => (\n <CommandPrimitive.Empty ref={ref} className=\"py-6 text-center text-body-sm text-muted-foreground\" {...props} />\n));\nCommandEmpty.displayName = CommandPrimitive.Empty.displayName;\n\nconst CommandGroup = React.forwardRef<\n React.ElementRef<typeof CommandPrimitive.Group>,\n React.ComponentPropsWithoutRef<typeof CommandPrimitive.Group>\n>(({ className, ...props }, ref) => (\n <CommandPrimitive.Group\n ref={ref}\n className={cn(\n 'overflow-hidden p-1 text-muted-foreground',\n '**:[[cmdk-group-heading]]:px-2 **:[[cmdk-group-heading]]:pt-1.5 **:[[cmdk-group-heading]]:pb-1 **:[[cmdk-group-heading]]:text-muted-foreground',\n '[&_[cmdk-group-heading]]:text-meta [&_[cmdk-group-heading]]:uppercase',\n 'in-data-[heading-case=sentence]:**:[[cmdk-group-heading]]:tracking-normal in-data-[heading-case=sentence]:**:[[cmdk-group-heading]]:normal-case',\n className,\n )}\n {...props}\n />\n));\nCommandGroup.displayName = CommandPrimitive.Group.displayName;\n\nconst CommandSeparator = React.forwardRef<\n React.ElementRef<typeof CommandPrimitive.Separator>,\n React.ComponentPropsWithoutRef<typeof CommandPrimitive.Separator>\n>(({ className, ...props }, ref) => (\n <CommandPrimitive.Separator ref={ref} className={cn('-mx-1 h-px bg-border', className)} {...props} />\n));\nCommandSeparator.displayName = CommandPrimitive.Separator.displayName;\n\nconst CommandItem = React.forwardRef<\n React.ElementRef<typeof CommandPrimitive.Item>,\n React.ComponentPropsWithoutRef<typeof CommandPrimitive.Item>\n>(({ className, ...props }, ref) => (\n <CommandPrimitive.Item\n ref={ref}\n className={cn(\n 'relative flex cursor-pointer items-center gap-2.5 rounded-lg px-2 py-1.5 text-body-sm text-muted-foreground select-none',\n 'outline-none focus:outline-none focus-visible:outline-none',\n // cmdk's selection follows both the pointer and the arrow keys; the row paints it instantly.\n 'data-[selected=true]:bg-fill data-[selected=true]:text-foreground',\n 'data-[disabled=true]:pointer-events-none data-[disabled=true]:opacity-50',\n '[&_svg]:pointer-events-none [&>svg]:size-4 [&>svg]:shrink-0',\n controlIconState,\n // A selected row brightens its icon with its label, like a highlighted menu row.\n '[--control-icon-hover:var(--foreground)] data-[selected=true]:[--control-icon:var(--control-icon-hover)]',\n className,\n )}\n {...props}\n />\n));\nCommandItem.displayName = CommandPrimitive.Item.displayName;\n\nconst CommandShortcut = ({ className, ...props }: React.HTMLAttributes<HTMLSpanElement>) => {\n return (\n <Txt\n as=\"span\"\n variant=\"meta\"\n tone=\"muted\"\n className={cn('ml-auto tracking-wider tabular-nums', className)}\n {...props}\n />\n );\n};\nCommandShortcut.displayName = 'CommandShortcut';\n\nexport {\n Command,\n CommandDialog,\n CommandInput,\n CommandList,\n CommandEmpty,\n CommandGroup,\n CommandItem,\n CommandSeparator,\n CommandShortcut,\n};\n"],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
2
|
-
const require_Comment = require("../Comment-
|
|
2
|
+
const require_Comment = require("../Comment-Cg0f7eLa.cjs");
|
|
3
3
|
exports.Comment = require_Comment.Comment;
|
|
4
4
|
exports.CommentArrival = require_Comment.CommentArrival;
|
|
5
5
|
exports.CommentComposer = require_Comment.CommentComposer;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export { s as Comment, o as CommentArrival, r as CommentComposer, i as CommentComposerInput, a as CommentComposerSend, n as CommentEditor, c as CommentItem, l as CommentItemActions, u as CommentItemAuthor, d as CommentItemAvatar, f as CommentItemBody, p as CommentItemContent, m as CommentItemHeader, h as CommentItemTimestamp, g as CommentList, t as CommentQuote } from "../Comment-
|
|
1
|
+
export { s as Comment, o as CommentArrival, r as CommentComposer, i as CommentComposerInput, a as CommentComposerSend, n as CommentEditor, c as CommentItem, l as CommentItemActions, u as CommentItemAuthor, d as CommentItemAvatar, f as CommentItemBody, p as CommentItemContent, m as CommentItemHeader, h as CommentItemTimestamp, g as CommentList, t as CommentQuote } from "../Comment-0n98b_f_.js";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export { t as CopyButton } from "../copy-button-
|
|
1
|
+
export { t as CopyButton } from "../copy-button-BXrbevLn.js";
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
2
|
-
const require_DataCodeSection = require("../DataCodeSection-
|
|
2
|
+
const require_DataCodeSection = require("../DataCodeSection-CFxXsQWH.cjs");
|
|
3
3
|
exports.DataCodeSection = require_DataCodeSection.DataCodeSection;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export { t as DataCodeSection } from "../DataCodeSection-
|
|
1
|
+
export { t as DataCodeSection } from "../DataCodeSection-PY9XEg2C.js";
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
2
|
-
const require_DataDetailsPanel = require("../DataDetailsPanel-
|
|
2
|
+
const require_DataDetailsPanel = require("../DataDetailsPanel-DiyjEXqK.cjs");
|
|
3
3
|
exports.DataDetailsPanel = require_DataDetailsPanel.DataDetailsPanel;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export { t as DataDetailsPanel } from "../DataDetailsPanel-
|
|
1
|
+
export { t as DataDetailsPanel } from "../DataDetailsPanel-CohEKPm4.js";
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
2
|
-
const require_data_list = require("../data-list-
|
|
3
|
-
const require_DataList = require("../DataList-
|
|
4
|
-
const require_tabbed_container = require("../tabbed-container-
|
|
2
|
+
const require_data_list = require("../data-list-C4Vmq5HA.cjs");
|
|
3
|
+
const require_DataList = require("../DataList-Cj0mfk19.cjs");
|
|
4
|
+
const require_tabbed_container = require("../tabbed-container-B4lCBgRP.cjs");
|
|
5
5
|
const require_use_data_list_keyboard = require("../use-data-list-keyboard-BCLBdaWR.cjs");
|
|
6
6
|
exports.DataList = require_data_list.DataList;
|
|
7
7
|
exports.DataListSkeleton = require_DataList.DataListSkeleton;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { t as DataList } from "../data-list-
|
|
2
|
-
import { i as DataListSkeletonRows, n as ScoresDataList, r as DataListSkeleton, t as TracesDataList } from "../DataList-
|
|
3
|
-
import { t as TabbedContainer } from "../tabbed-container-
|
|
1
|
+
import { t as DataList } from "../data-list-DHCOoLmj.js";
|
|
2
|
+
import { i as DataListSkeletonRows, n as ScoresDataList, r as DataListSkeleton, t as TracesDataList } from "../DataList-CUhRQAv6.js";
|
|
3
|
+
import { t as TabbedContainer } from "../tabbed-container-DI1GI1Qv.js";
|
|
4
4
|
import { t as useDataListKeyboard } from "../use-data-list-keyboard-fJXq2T3y.js";
|
|
5
5
|
export { DataList, DataListSkeleton, DataListSkeletonRows, ScoresDataList, TabbedContainer, TracesDataList, useDataListKeyboard };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export { t as DataPanel } from "../DataPanel-
|
|
1
|
+
export { t as DataPanel } from "../DataPanel-IgB9D5PO.js";
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
2
2
|
const require_utils = require("../utils-uDc1ofX1.cjs");
|
|
3
3
|
const require_primitives_transitions = require("../primitives/transitions.cjs.js");
|
|
4
|
-
const require_Button = require("../Button-
|
|
4
|
+
const require_Button = require("../Button-DLcMcuUL.cjs");
|
|
5
5
|
const require_Txt = require("../Txt-BnoSqxKE.cjs");
|
|
6
6
|
const require_popover = require("../popover-BJqa6Hz6.cjs");
|
|
7
7
|
const require_components_DateTimePicker = require("./DateTimePicker.cjs.js");
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { t as cn } from "../utils-DQx8TpNT.js";
|
|
2
2
|
import { focusRing } from "../primitives/transitions.es.js";
|
|
3
|
-
import { t as Button } from "../Button-
|
|
3
|
+
import { t as Button } from "../Button-CLXTbAY8.js";
|
|
4
4
|
import { t as Txt } from "../Txt-BM6TVV_c.js";
|
|
5
5
|
import { i as PopoverTrigger, n as Popover, r as PopoverContent } from "../popover-CzHvTPk2.js";
|
|
6
6
|
import { DatePicker } from "./DateTimePicker.es.js";
|
|
@@ -3,9 +3,9 @@ const require_rolldown_runtime = require("../rolldown-runtime-CmQyd0Gu.cjs");
|
|
|
3
3
|
const require_utils = require("../utils-uDc1ofX1.cjs");
|
|
4
4
|
const require_primitives_control_size = require("../primitives/control-size.cjs.js");
|
|
5
5
|
require("../primitives/form-element.cjs.js");
|
|
6
|
-
const require_Button = require("../Button-
|
|
6
|
+
const require_Button = require("../Button-DLcMcuUL.cjs");
|
|
7
7
|
const require_primitives_typography = require("../primitives/typography.cjs.js");
|
|
8
|
-
const require_select = require("../select-
|
|
8
|
+
const require_select = require("../select-Dg8L5ROX.cjs");
|
|
9
9
|
const require_input = require("../input-2hRXcZIu.cjs");
|
|
10
10
|
const require_components_Field = require("./Field.cjs.js");
|
|
11
11
|
const require_popover = require("../popover-BJqa6Hz6.cjs");
|
|
@@ -143,7 +143,7 @@ function TimePartSelect({ label, options, value, onValueChange }) {
|
|
|
143
143
|
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_select.SelectTrigger, {
|
|
144
144
|
size: "sm",
|
|
145
145
|
"aria-label": label,
|
|
146
|
-
children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_select.SelectValue, { placeholder: "Select
|
|
146
|
+
children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_select.SelectValue, { placeholder: "Select" })
|
|
147
147
|
}), /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_select.SelectContent, { children: options.map((option, idx) => /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_select.SelectItem, {
|
|
148
148
|
value: `${idx}`,
|
|
149
149
|
children: option
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DateTimePicker.cjs.js","names":["DayPicker","cn","quietTextHover","useState","cn","Select","SelectTrigger","SelectValue","SelectContent","SelectItem","React","Popover","PopoverTrigger","PopoverContent","isValid","format","useDebouncedCallback","cn","Field","FieldLabel","Input","FieldError","formatDate","Button","X","Check","controlTriggerOpenStateFor","CalendarIcon"],"sources":["../../src/ds/components/DateTimePicker/date-picker.tsx","../../src/ds/components/DateTimePicker/time-picker.tsx","../../src/ds/components/DateTimePicker/date-time-picker.tsx"],"sourcesContent":["import * as React from 'react';\nimport { DayPicker } from 'react-day-picker';\nimport { quietTextHover } from '@/ds/primitives/typography';\nimport { cn } from '@/lib/utils';\n\nexport type CalendarProps = React.ComponentProps<typeof DayPicker>;\n\nexport function DatePicker({ className, classNames, showOutsideDays = true, ...props }: CalendarProps) {\n return (\n <DayPicker\n showOutsideDays={showOutsideDays}\n className={cn('p-3', className)}\n classNames={{\n months: 'flex flex-col space-y-4 sm:space-y-0 ',\n month: 'space-y-4 text-caption',\n caption: 'flex justify-between pt-1 items-center pl-2',\n caption_label: 'text-label text-foreground',\n nav: 'flex items-center',\n nav_button_previous: cn(\n quietTextHover,\n 'flex size-7 items-center justify-center rounded-md bg-transparent p-0 hover:bg-fill-subtle',\n ),\n nav_button_next: cn(\n quietTextHover,\n 'flex size-7 items-center justify-center rounded-md bg-transparent p-0 hover:bg-fill-subtle',\n ),\n dropdown_month: 'w-full border-collapse space-y-1',\n weeknumber: 'flex',\n day: cn(\n 'relative p-0 text-center focus-within:relative focus-within:z-20 [&:has([aria-selected])]:bg-fill [&:has([aria-selected].day-outside)]:bg-fill-subtle [&:has([aria-selected].day-range-end)]:rounded-r-md',\n props.mode === 'range'\n ? '[&:has(>.day-range-end)]:rounded-r-md [&:has(>.day-range-start)]:rounded-l-md first:[&:has([aria-selected])]:rounded-l-md last:[&:has([aria-selected])]:rounded-r-md'\n : '[&:has([aria-selected])]:rounded-md',\n 'size-8 p-0 text-caption hover:bg-fill-subtle aria-selected:opacity-100',\n ),\n day_range_start: 'day-range-start rounded-l-md',\n day_range_end: 'day-range-end rounded-r-md',\n day_selected: cn(\n 'bg-foreground! text-sidebar! hover:bg-foreground/90! focus:bg-foreground/90! focus:text-sidebar!',\n props.mode !== 'range' && 'rounded-md',\n ),\n day_today: 'bg-fill text-foreground',\n day_outside:\n 'day-outside text-muted-foreground opacity-50 aria-selected:bg-fill-subtle aria-selected:text-muted-foreground aria-selected:opacity-30',\n day_disabled: 'text-muted-foreground opacity-50',\n day_range_middle: 'aria-selected:bg-fill aria-selected:text-foreground',\n day_hidden: 'invisible',\n head_cell: 'text-meta text-muted-foreground',\n ...classNames,\n }}\n {...props}\n />\n );\n}\n","import { useEffect, useState } from 'react';\nimport { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from '@/ds/components/Select';\nimport { cn } from '@/lib/utils';\n\nexport type TimePickerProps = {\n defaultValue?: string;\n onValueChange: (value: string) => void;\n className?: string;\n label?: string;\n};\n\nconst hourOptions = ['12', '1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11'];\nconst minuteOptions = ['00', '15', '30', '45', '59'];\nconst timePeriodOptions = ['AM', 'PM'];\n\nexport function TimePicker({ defaultValue, onValueChange, className, label = 'Time' }: TimePickerProps) {\n const [hour, setHour] = useState<string>('12');\n const [minute, setMinute] = useState<string>('00');\n const [timePeriod, setTimePeriod] = useState('AM');\n\n useEffect(() => {\n if (defaultValue) {\n const timeRegex = /^(\\d{1,2}):(\\d{2})(?::\\d{2})?\\s*(AM|PM|am|pm)?$/;\n const match = defaultValue.match(timeRegex);\n\n if (match) {\n const rawHour = match[1];\n const rawMinute = match[2];\n if (rawHour === undefined || rawMinute === undefined) return;\n\n let parsedHour = parseInt(rawHour, 10);\n const parsedMinute = parseInt(rawMinute, 10);\n const period = match[3]?.toUpperCase();\n\n if (parsedHour >= 1 && parsedHour <= 12 && parsedMinute >= 0 && parsedMinute <= 59) {\n setHour(parsedHour.toString());\n setMinute(parsedMinute === 0 ? '00' : parsedMinute.toString());\n setTimePeriod(period || 'AM');\n }\n }\n }\n }, [defaultValue]);\n\n const handleHourChange = (val: string) => {\n const nextHour = hourOptions[+val];\n if (nextHour === undefined) return;\n setHour(nextHour);\n onValueChange(`${nextHour}:${minute} ${timePeriod}`.trim());\n };\n\n const handleMinuteChange = (val: string) => {\n const nextMinute = minuteOptions[+val];\n if (nextMinute === undefined) return;\n setMinute(nextMinute);\n onValueChange(`${hour}:${nextMinute} ${timePeriod}`.trim());\n };\n\n const handleTimePeriodChange = (val: string) => {\n const nextPeriod = timePeriodOptions[+val];\n if (nextPeriod === undefined) return;\n setTimePeriod(nextPeriod);\n onValueChange(`${hour}:${minute} ${nextPeriod}`.trim());\n };\n\n return (\n <div role=\"group\" aria-label={label} className={cn('flex items-center gap-2', className)}>\n <TimePartSelect label=\"Hour\" options={hourOptions} value={hour} onValueChange={handleHourChange} />\n :\n <TimePartSelect label=\"Minute\" options={minuteOptions} value={minute} onValueChange={handleMinuteChange} />\n <TimePartSelect\n label=\"AM or PM\"\n options={timePeriodOptions}\n value={timePeriod}\n onValueChange={handleTimePeriodChange}\n />\n </div>\n );\n}\n\ntype TimePartSelectProps = {\n label: string;\n options: readonly string[];\n value: string;\n onValueChange: (index: string) => void;\n};\n\nfunction TimePartSelect({ label, options, value, onValueChange }: TimePartSelectProps) {\n return (\n <Select value={options.indexOf(value).toString()} onValueChange={onValueChange}>\n <SelectTrigger size=\"sm\" aria-label={label}>\n <SelectValue placeholder=\"Select...\" />\n </SelectTrigger>\n <SelectContent>\n {options.map((option, idx) => (\n <SelectItem key={option} value={`${idx}`}>\n {option}\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n );\n}\n","import { format, formatDate, isValid } from 'date-fns';\nimport { CalendarIcon, Check, X } from 'lucide-react';\nimport * as React from 'react';\nimport type { DayPickerSingleProps } from 'react-day-picker';\nimport { useDebouncedCallback } from 'use-debounce';\n\nimport { DatePicker } from './date-picker';\nimport { TimePicker } from './time-picker';\nimport { Button } from '@/ds/components/Button';\nimport type { ButtonProps } from '@/ds/components/Button';\nimport { Field, FieldError, FieldLabel } from '@/ds/components/Field';\nimport { Input } from '@/ds/components/Input';\nimport { Popover, PopoverContent, PopoverTrigger } from '@/ds/components/Popover';\nimport { controlTriggerOpenStateFor } from '@/ds/primitives/control-size';\nimport { fieldTriggerStyle } from '@/ds/primitives/form-element';\nimport { cn } from '@/lib/utils';\n\ntype CommonProps = Omit<DayPickerSingleProps, 'mode' | 'selected' | 'onSelect'> & {\n value: Date | undefined | null;\n minValue?: Date | null;\n maxValue?: Date | null;\n defaultTimeStrValue?: string;\n onValueChange: (date: Date | undefined) => void;\n};\n\ntype DefaultTriggerLook = Pick<ButtonProps, 'variant' | 'size'>;\n\nexport type DateTimePickerProps =\n | (CommonProps & DefaultTriggerLook & { children?: never; className?: string; placeholder?: string })\n | (CommonProps & {\n children: React.ReactNode;\n className?: never;\n placeholder?: string;\n variant?: never;\n size?: never;\n });\n\nexport const DateTimePicker: React.FC<DateTimePickerProps> = ({\n value,\n minValue,\n maxValue,\n defaultTimeStrValue,\n onValueChange,\n children,\n className,\n placeholder,\n variant,\n size,\n ...props\n}) => {\n const [openPopover, setOpenPopover] = React.useState(false);\n\n return (\n <Popover open={openPopover} onOpenChange={setOpenPopover}>\n <PopoverTrigger asChild>\n {children ? (\n children\n ) : (\n <DefaultTrigger\n value={value}\n placeholder={placeholder}\n variant={variant}\n size={size}\n className={className}\n data-testid=\"datepicker-button\"\n />\n )}\n </PopoverTrigger>\n <PopoverContent\n className=\"backdrop-blur-4xl w-auto max-w-66 bg-muted p-0!\"\n align=\"start\"\n data-testid=\"datepicker-calendar\"\n >\n <DateTimePickerContent\n value={value}\n minValue={minValue}\n maxValue={maxValue}\n onValueChange={onValueChange}\n setOpenPopover={setOpenPopover}\n defaultTimeStrValue={defaultTimeStrValue}\n {...props}\n />\n </PopoverContent>\n </Popover>\n );\n};\n\nfunction getCompoundDate({ date, timeStr = '' }: { date: Date; timeStr?: string }): Date | null {\n if (!isValid(date)) {\n return null;\n }\n\n if (timeStr) {\n const dateStr = format(date, 'yyyy-MM-dd');\n const newDate = new Date(`${dateStr} ${timeStr}`);\n if (isValid(newDate)) {\n return newDate;\n }\n }\n\n return date;\n}\n\nexport const DateTimePickerContent = ({\n value,\n minValue,\n maxValue,\n onValueChange,\n setOpenPopover,\n placeholder,\n className,\n defaultTimeStrValue,\n ...props\n}: CommonProps & {\n setOpenPopover?: (open: boolean) => void;\n placeholder?: string;\n className?: string;\n}) => {\n const [localErrorMsg, setLocalErrorMsg] = React.useState<string | null>(null);\n const [dateInputValue, setDateInputValue] = React.useState<string>(\n value ? format(getCompoundDate({ date: value, timeStr: defaultTimeStrValue }) || '', 'PP p') : '',\n );\n const [timeStrValue, setTimeStrValue] = React.useState<string>(defaultTimeStrValue || '');\n const [selected, setSelected] = React.useState<Date | undefined>(value ? new Date(value) : undefined);\n\n const debouncedDateUpdate = useDebouncedCallback((date: Date) => {\n if (isValid(date)) {\n setSelected(date);\n onValueChange?.(date);\n setOpenPopover?.(false);\n }\n }, 500);\n\n const handleInputChange: React.ChangeEventHandler<HTMLInputElement> = e => {\n setDateInputValue(e.currentTarget.value);\n const date = new Date(e.currentTarget.value);\n debouncedDateUpdate(date);\n };\n\n const updateInputValue = (date: Date | string) => {\n if (isValid(date)) {\n if (maxValue && date > maxValue) {\n setLocalErrorMsg(`The selected date should be before ${format(maxValue, 'PP p')}`);\n setDateInputValue('');\n } else if (minValue && date < minValue) {\n setLocalErrorMsg(`The selected date should be after ${format(minValue, 'PP p')}`);\n setDateInputValue('');\n } else {\n setDateInputValue(format(date, 'PP p'));\n setLocalErrorMsg('');\n }\n } else {\n setDateInputValue('');\n setLocalErrorMsg('');\n }\n };\n\n const dateInputValueDate = new Date(dateInputValue);\n const dateInputValueIsValid = isValid(dateInputValueDate);\n const newValueDefined = dateInputValueIsValid && dateInputValueDate.getTime() !== value?.getTime();\n\n const handleDaySelect = (date: Date | undefined) => {\n setSelected(date);\n if (date) {\n const newDate = getCompoundDate({ date, timeStr: timeStrValue });\n updateInputValue(newDate || '');\n } else {\n updateInputValue('');\n }\n };\n\n const handleMonthSelect = (date: Date | undefined) => {\n setSelected(date);\n if (date) {\n const newDate = getCompoundDate({ date, timeStr: timeStrValue });\n updateInputValue(newDate || '');\n } else {\n updateInputValue('');\n }\n };\n\n const handleTimeStrChange = (val: string) => {\n setTimeStrValue(val);\n\n if (dateInputValueIsValid) {\n const newDate = getCompoundDate({ date: dateInputValueDate, timeStr: val });\n updateInputValue(newDate || '');\n }\n };\n\n const handleCancel = () => {\n setOpenPopover?.(false);\n };\n\n const handleApply = () => {\n if (isValid(dateInputValueDate)) {\n onValueChange(dateInputValueDate);\n }\n setOpenPopover?.(false);\n };\n\n const handleClear = () => {\n onValueChange(undefined);\n setSelected(undefined);\n setDateInputValue('');\n setTimeStrValue('');\n setOpenPopover?.(false);\n };\n\n return (\n <div\n aria-label=\"Choose date\"\n className={cn('relative flex flex-col', className)}\n onKeyDown={e => {\n e.stopPropagation();\n if (e.key === 'Escape') {\n setOpenPopover?.(false);\n }\n }}\n >\n <Field invalid={Boolean(localErrorMsg)} className=\"m-4 mb-0 w-auto!\">\n <FieldLabel className=\"sr-only\">Date</FieldLabel>\n <Input type=\"text\" value={dateInputValue} onChange={handleInputChange} placeholder={placeholder} />\n <FieldError>{localErrorMsg}</FieldError>\n </Field>\n\n <DatePicker\n mode=\"single\"\n month={selected}\n selected={selected}\n onMonthChange={handleMonthSelect}\n onSelect={handleDaySelect}\n {...props}\n />\n\n <TimePicker\n onValueChange={handleTimeStrChange}\n className=\"m-4 mt-0 w-auto\"\n defaultValue={value ? formatDate(new Date(value), 'hh:mm a') : defaultTimeStrValue}\n />\n\n <div className=\"m-4 mt-0 grid grid-cols-[1fr_2fr] gap-2\">\n {newValueDefined && (\n <Button icon={<X />} tabIndex={0} size=\"md\" onClick={handleClear} type=\"button\">\n Clear\n </Button>\n )}\n <Button\n icon={newValueDefined ? <Check /> : <X />}\n tabIndex={0}\n type=\"button\"\n size=\"md\"\n variant={newValueDefined ? 'primary' : 'default'}\n onClick={() => {\n dateInputValueIsValid ? handleApply() : handleCancel();\n }}\n >\n {newValueDefined ? `Apply` : `Cancel`}\n </Button>\n </div>\n </div>\n );\n};\n\ntype DefaultButtonProps = Pick<ButtonProps, 'variant' | 'size' | 'tooltip' | 'disabled'> & {\n className?: string;\n placeholder?: string;\n value: Date | undefined | null;\n};\n\nexport const DefaultTrigger = React.forwardRef<HTMLButtonElement, DefaultButtonProps>(\n ({ value, placeholder, variant = 'default', size, className, ...props }, ref) => {\n return (\n <Button\n ref={ref}\n variant={variant}\n size={size}\n className={cn(\n 'justify-start',\n variant === 'default' && fieldTriggerStyle,\n controlTriggerOpenStateFor(variant),\n className,\n )}\n icon={<CalendarIcon />}\n {...props}\n >\n {value ? (\n <span className=\"text-foreground\">{format(value, 'PP p')}</span>\n ) : (\n <span className=\"text-muted-foreground\">{placeholder ?? 'Pick a date'}</span>\n )}\n </Button>\n );\n },\n);\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"DateTimePicker.cjs.js","names":["DayPicker","cn","quietTextHover","useState","cn","Select","SelectTrigger","SelectValue","SelectContent","SelectItem","React","Popover","PopoverTrigger","PopoverContent","isValid","format","useDebouncedCallback","cn","Field","FieldLabel","Input","FieldError","formatDate","Button","X","Check","controlTriggerOpenStateFor","CalendarIcon"],"sources":["../../src/ds/components/DateTimePicker/date-picker.tsx","../../src/ds/components/DateTimePicker/time-picker.tsx","../../src/ds/components/DateTimePicker/date-time-picker.tsx"],"sourcesContent":["import * as React from 'react';\nimport { DayPicker } from 'react-day-picker';\nimport { quietTextHover } from '@/ds/primitives/typography';\nimport { cn } from '@/lib/utils';\n\nexport type CalendarProps = React.ComponentProps<typeof DayPicker>;\n\nexport function DatePicker({ className, classNames, showOutsideDays = true, ...props }: CalendarProps) {\n return (\n <DayPicker\n showOutsideDays={showOutsideDays}\n className={cn('p-3', className)}\n classNames={{\n months: 'flex flex-col space-y-4 sm:space-y-0 ',\n month: 'space-y-4 text-caption',\n caption: 'flex justify-between pt-1 items-center pl-2',\n caption_label: 'text-label text-foreground',\n nav: 'flex items-center',\n nav_button_previous: cn(\n quietTextHover,\n 'flex size-7 items-center justify-center rounded-md bg-transparent p-0 hover:bg-fill-subtle',\n ),\n nav_button_next: cn(\n quietTextHover,\n 'flex size-7 items-center justify-center rounded-md bg-transparent p-0 hover:bg-fill-subtle',\n ),\n dropdown_month: 'w-full border-collapse space-y-1',\n weeknumber: 'flex',\n day: cn(\n 'relative p-0 text-center focus-within:relative focus-within:z-20 [&:has([aria-selected])]:bg-fill [&:has([aria-selected].day-outside)]:bg-fill-subtle [&:has([aria-selected].day-range-end)]:rounded-r-md',\n props.mode === 'range'\n ? '[&:has(>.day-range-end)]:rounded-r-md [&:has(>.day-range-start)]:rounded-l-md first:[&:has([aria-selected])]:rounded-l-md last:[&:has([aria-selected])]:rounded-r-md'\n : '[&:has([aria-selected])]:rounded-md',\n 'size-8 p-0 text-caption hover:bg-fill-subtle aria-selected:opacity-100',\n ),\n day_range_start: 'day-range-start rounded-l-md',\n day_range_end: 'day-range-end rounded-r-md',\n day_selected: cn(\n 'bg-foreground! text-sidebar! hover:bg-foreground/90! focus:bg-foreground/90! focus:text-sidebar!',\n props.mode !== 'range' && 'rounded-md',\n ),\n day_today: 'bg-fill text-foreground',\n day_outside:\n 'day-outside text-muted-foreground opacity-50 aria-selected:bg-fill-subtle aria-selected:text-muted-foreground aria-selected:opacity-30',\n day_disabled: 'text-muted-foreground opacity-50',\n day_range_middle: 'aria-selected:bg-fill aria-selected:text-foreground',\n day_hidden: 'invisible',\n head_cell: 'text-meta text-muted-foreground',\n ...classNames,\n }}\n {...props}\n />\n );\n}\n","import { useEffect, useState } from 'react';\nimport { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from '@/ds/components/Select';\nimport { cn } from '@/lib/utils';\n\nexport type TimePickerProps = {\n defaultValue?: string;\n onValueChange: (value: string) => void;\n className?: string;\n label?: string;\n};\n\nconst hourOptions = ['12', '1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11'];\nconst minuteOptions = ['00', '15', '30', '45', '59'];\nconst timePeriodOptions = ['AM', 'PM'];\n\nexport function TimePicker({ defaultValue, onValueChange, className, label = 'Time' }: TimePickerProps) {\n const [hour, setHour] = useState<string>('12');\n const [minute, setMinute] = useState<string>('00');\n const [timePeriod, setTimePeriod] = useState('AM');\n\n useEffect(() => {\n if (defaultValue) {\n const timeRegex = /^(\\d{1,2}):(\\d{2})(?::\\d{2})?\\s*(AM|PM|am|pm)?$/;\n const match = defaultValue.match(timeRegex);\n\n if (match) {\n const rawHour = match[1];\n const rawMinute = match[2];\n if (rawHour === undefined || rawMinute === undefined) return;\n\n let parsedHour = parseInt(rawHour, 10);\n const parsedMinute = parseInt(rawMinute, 10);\n const period = match[3]?.toUpperCase();\n\n if (parsedHour >= 1 && parsedHour <= 12 && parsedMinute >= 0 && parsedMinute <= 59) {\n setHour(parsedHour.toString());\n setMinute(parsedMinute === 0 ? '00' : parsedMinute.toString());\n setTimePeriod(period || 'AM');\n }\n }\n }\n }, [defaultValue]);\n\n const handleHourChange = (val: string) => {\n const nextHour = hourOptions[+val];\n if (nextHour === undefined) return;\n setHour(nextHour);\n onValueChange(`${nextHour}:${minute} ${timePeriod}`.trim());\n };\n\n const handleMinuteChange = (val: string) => {\n const nextMinute = minuteOptions[+val];\n if (nextMinute === undefined) return;\n setMinute(nextMinute);\n onValueChange(`${hour}:${nextMinute} ${timePeriod}`.trim());\n };\n\n const handleTimePeriodChange = (val: string) => {\n const nextPeriod = timePeriodOptions[+val];\n if (nextPeriod === undefined) return;\n setTimePeriod(nextPeriod);\n onValueChange(`${hour}:${minute} ${nextPeriod}`.trim());\n };\n\n return (\n <div role=\"group\" aria-label={label} className={cn('flex items-center gap-2', className)}>\n <TimePartSelect label=\"Hour\" options={hourOptions} value={hour} onValueChange={handleHourChange} />\n :\n <TimePartSelect label=\"Minute\" options={minuteOptions} value={minute} onValueChange={handleMinuteChange} />\n <TimePartSelect\n label=\"AM or PM\"\n options={timePeriodOptions}\n value={timePeriod}\n onValueChange={handleTimePeriodChange}\n />\n </div>\n );\n}\n\ntype TimePartSelectProps = {\n label: string;\n options: readonly string[];\n value: string;\n onValueChange: (index: string) => void;\n};\n\nfunction TimePartSelect({ label, options, value, onValueChange }: TimePartSelectProps) {\n return (\n <Select value={options.indexOf(value).toString()} onValueChange={onValueChange}>\n <SelectTrigger size=\"sm\" aria-label={label}>\n <SelectValue placeholder=\"Select\" />\n </SelectTrigger>\n <SelectContent>\n {options.map((option, idx) => (\n <SelectItem key={option} value={`${idx}`}>\n {option}\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n );\n}\n","import { format, formatDate, isValid } from 'date-fns';\nimport { CalendarIcon, Check, X } from 'lucide-react';\nimport * as React from 'react';\nimport type { DayPickerSingleProps } from 'react-day-picker';\nimport { useDebouncedCallback } from 'use-debounce';\n\nimport { DatePicker } from './date-picker';\nimport { TimePicker } from './time-picker';\nimport { Button } from '@/ds/components/Button';\nimport type { ButtonProps } from '@/ds/components/Button';\nimport { Field, FieldError, FieldLabel } from '@/ds/components/Field';\nimport { Input } from '@/ds/components/Input';\nimport { Popover, PopoverContent, PopoverTrigger } from '@/ds/components/Popover';\nimport { controlTriggerOpenStateFor } from '@/ds/primitives/control-size';\nimport { fieldTriggerStyle } from '@/ds/primitives/form-element';\nimport { cn } from '@/lib/utils';\n\ntype CommonProps = Omit<DayPickerSingleProps, 'mode' | 'selected' | 'onSelect'> & {\n value: Date | undefined | null;\n minValue?: Date | null;\n maxValue?: Date | null;\n defaultTimeStrValue?: string;\n onValueChange: (date: Date | undefined) => void;\n};\n\ntype DefaultTriggerLook = Pick<ButtonProps, 'variant' | 'size'>;\n\nexport type DateTimePickerProps =\n | (CommonProps & DefaultTriggerLook & { children?: never; className?: string; placeholder?: string })\n | (CommonProps & {\n children: React.ReactNode;\n className?: never;\n placeholder?: string;\n variant?: never;\n size?: never;\n });\n\nexport const DateTimePicker: React.FC<DateTimePickerProps> = ({\n value,\n minValue,\n maxValue,\n defaultTimeStrValue,\n onValueChange,\n children,\n className,\n placeholder,\n variant,\n size,\n ...props\n}) => {\n const [openPopover, setOpenPopover] = React.useState(false);\n\n return (\n <Popover open={openPopover} onOpenChange={setOpenPopover}>\n <PopoverTrigger asChild>\n {children ? (\n children\n ) : (\n <DefaultTrigger\n value={value}\n placeholder={placeholder}\n variant={variant}\n size={size}\n className={className}\n data-testid=\"datepicker-button\"\n />\n )}\n </PopoverTrigger>\n <PopoverContent\n className=\"backdrop-blur-4xl w-auto max-w-66 bg-muted p-0!\"\n align=\"start\"\n data-testid=\"datepicker-calendar\"\n >\n <DateTimePickerContent\n value={value}\n minValue={minValue}\n maxValue={maxValue}\n onValueChange={onValueChange}\n setOpenPopover={setOpenPopover}\n defaultTimeStrValue={defaultTimeStrValue}\n {...props}\n />\n </PopoverContent>\n </Popover>\n );\n};\n\nfunction getCompoundDate({ date, timeStr = '' }: { date: Date; timeStr?: string }): Date | null {\n if (!isValid(date)) {\n return null;\n }\n\n if (timeStr) {\n const dateStr = format(date, 'yyyy-MM-dd');\n const newDate = new Date(`${dateStr} ${timeStr}`);\n if (isValid(newDate)) {\n return newDate;\n }\n }\n\n return date;\n}\n\nexport const DateTimePickerContent = ({\n value,\n minValue,\n maxValue,\n onValueChange,\n setOpenPopover,\n placeholder,\n className,\n defaultTimeStrValue,\n ...props\n}: CommonProps & {\n setOpenPopover?: (open: boolean) => void;\n placeholder?: string;\n className?: string;\n}) => {\n const [localErrorMsg, setLocalErrorMsg] = React.useState<string | null>(null);\n const [dateInputValue, setDateInputValue] = React.useState<string>(\n value ? format(getCompoundDate({ date: value, timeStr: defaultTimeStrValue }) || '', 'PP p') : '',\n );\n const [timeStrValue, setTimeStrValue] = React.useState<string>(defaultTimeStrValue || '');\n const [selected, setSelected] = React.useState<Date | undefined>(value ? new Date(value) : undefined);\n\n const debouncedDateUpdate = useDebouncedCallback((date: Date) => {\n if (isValid(date)) {\n setSelected(date);\n onValueChange?.(date);\n setOpenPopover?.(false);\n }\n }, 500);\n\n const handleInputChange: React.ChangeEventHandler<HTMLInputElement> = e => {\n setDateInputValue(e.currentTarget.value);\n const date = new Date(e.currentTarget.value);\n debouncedDateUpdate(date);\n };\n\n const updateInputValue = (date: Date | string) => {\n if (isValid(date)) {\n if (maxValue && date > maxValue) {\n setLocalErrorMsg(`The selected date should be before ${format(maxValue, 'PP p')}`);\n setDateInputValue('');\n } else if (minValue && date < minValue) {\n setLocalErrorMsg(`The selected date should be after ${format(minValue, 'PP p')}`);\n setDateInputValue('');\n } else {\n setDateInputValue(format(date, 'PP p'));\n setLocalErrorMsg('');\n }\n } else {\n setDateInputValue('');\n setLocalErrorMsg('');\n }\n };\n\n const dateInputValueDate = new Date(dateInputValue);\n const dateInputValueIsValid = isValid(dateInputValueDate);\n const newValueDefined = dateInputValueIsValid && dateInputValueDate.getTime() !== value?.getTime();\n\n const handleDaySelect = (date: Date | undefined) => {\n setSelected(date);\n if (date) {\n const newDate = getCompoundDate({ date, timeStr: timeStrValue });\n updateInputValue(newDate || '');\n } else {\n updateInputValue('');\n }\n };\n\n const handleMonthSelect = (date: Date | undefined) => {\n setSelected(date);\n if (date) {\n const newDate = getCompoundDate({ date, timeStr: timeStrValue });\n updateInputValue(newDate || '');\n } else {\n updateInputValue('');\n }\n };\n\n const handleTimeStrChange = (val: string) => {\n setTimeStrValue(val);\n\n if (dateInputValueIsValid) {\n const newDate = getCompoundDate({ date: dateInputValueDate, timeStr: val });\n updateInputValue(newDate || '');\n }\n };\n\n const handleCancel = () => {\n setOpenPopover?.(false);\n };\n\n const handleApply = () => {\n if (isValid(dateInputValueDate)) {\n onValueChange(dateInputValueDate);\n }\n setOpenPopover?.(false);\n };\n\n const handleClear = () => {\n onValueChange(undefined);\n setSelected(undefined);\n setDateInputValue('');\n setTimeStrValue('');\n setOpenPopover?.(false);\n };\n\n return (\n <div\n aria-label=\"Choose date\"\n className={cn('relative flex flex-col', className)}\n onKeyDown={e => {\n e.stopPropagation();\n if (e.key === 'Escape') {\n setOpenPopover?.(false);\n }\n }}\n >\n <Field invalid={Boolean(localErrorMsg)} className=\"m-4 mb-0 w-auto!\">\n <FieldLabel className=\"sr-only\">Date</FieldLabel>\n <Input type=\"text\" value={dateInputValue} onChange={handleInputChange} placeholder={placeholder} />\n <FieldError>{localErrorMsg}</FieldError>\n </Field>\n\n <DatePicker\n mode=\"single\"\n month={selected}\n selected={selected}\n onMonthChange={handleMonthSelect}\n onSelect={handleDaySelect}\n {...props}\n />\n\n <TimePicker\n onValueChange={handleTimeStrChange}\n className=\"m-4 mt-0 w-auto\"\n defaultValue={value ? formatDate(new Date(value), 'hh:mm a') : defaultTimeStrValue}\n />\n\n <div className=\"m-4 mt-0 grid grid-cols-[1fr_2fr] gap-2\">\n {newValueDefined && (\n <Button icon={<X />} tabIndex={0} size=\"md\" onClick={handleClear} type=\"button\">\n Clear\n </Button>\n )}\n <Button\n icon={newValueDefined ? <Check /> : <X />}\n tabIndex={0}\n type=\"button\"\n size=\"md\"\n variant={newValueDefined ? 'primary' : 'default'}\n onClick={() => {\n dateInputValueIsValid ? handleApply() : handleCancel();\n }}\n >\n {newValueDefined ? `Apply` : `Cancel`}\n </Button>\n </div>\n </div>\n );\n};\n\ntype DefaultButtonProps = Pick<ButtonProps, 'variant' | 'size' | 'tooltip' | 'disabled'> & {\n className?: string;\n placeholder?: string;\n value: Date | undefined | null;\n};\n\nexport const DefaultTrigger = React.forwardRef<HTMLButtonElement, DefaultButtonProps>(\n ({ value, placeholder, variant = 'default', size, className, ...props }, ref) => {\n return (\n <Button\n ref={ref}\n variant={variant}\n size={size}\n className={cn(\n 'justify-start',\n variant === 'default' && fieldTriggerStyle,\n controlTriggerOpenStateFor(variant),\n className,\n )}\n icon={<CalendarIcon />}\n {...props}\n >\n {value ? (\n <span className=\"text-foreground\">{format(value, 'PP p')}</span>\n ) : (\n <span className=\"text-muted-foreground\">{placeholder ?? 'Pick a date'}</span>\n )}\n </Button>\n );\n },\n);\n"],"mappings":"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"}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { t as cn } from "../utils-DQx8TpNT.js";
|
|
2
2
|
import { controlTriggerOpenStateFor } from "../primitives/control-size.es.js";
|
|
3
3
|
import "../primitives/form-element.es.js";
|
|
4
|
-
import { t as Button } from "../Button-
|
|
4
|
+
import { t as Button } from "../Button-CLXTbAY8.js";
|
|
5
5
|
import { quietTextHover } from "../primitives/typography.es.js";
|
|
6
|
-
import { i as SelectItem, n as SelectContent, o as SelectTrigger, s as SelectValue, t as Select } from "../select-
|
|
6
|
+
import { i as SelectItem, n as SelectContent, o as SelectTrigger, s as SelectValue, t as Select } from "../select-BdIZEdcy.js";
|
|
7
7
|
import { t as Input } from "../input-0l1uzOBZ.js";
|
|
8
8
|
import { Field, FieldError, FieldLabel } from "./Field.es.js";
|
|
9
9
|
import { i as PopoverTrigger, n as Popover, r as PopoverContent } from "../popover-CzHvTPk2.js";
|
|
@@ -141,7 +141,7 @@ function TimePartSelect({ label, options, value, onValueChange }) {
|
|
|
141
141
|
children: [/* @__PURE__ */ jsx(SelectTrigger, {
|
|
142
142
|
size: "sm",
|
|
143
143
|
"aria-label": label,
|
|
144
|
-
children: /* @__PURE__ */ jsx(SelectValue, { placeholder: "Select
|
|
144
|
+
children: /* @__PURE__ */ jsx(SelectValue, { placeholder: "Select" })
|
|
145
145
|
}), /* @__PURE__ */ jsx(SelectContent, { children: options.map((option, idx) => /* @__PURE__ */ jsx(SelectItem, {
|
|
146
146
|
value: `${idx}`,
|
|
147
147
|
children: option
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DateTimePicker.es.js","names":["React"],"sources":["../../src/ds/components/DateTimePicker/date-picker.tsx","../../src/ds/components/DateTimePicker/time-picker.tsx","../../src/ds/components/DateTimePicker/date-time-picker.tsx"],"sourcesContent":["import * as React from 'react';\nimport { DayPicker } from 'react-day-picker';\nimport { quietTextHover } from '@/ds/primitives/typography';\nimport { cn } from '@/lib/utils';\n\nexport type CalendarProps = React.ComponentProps<typeof DayPicker>;\n\nexport function DatePicker({ className, classNames, showOutsideDays = true, ...props }: CalendarProps) {\n return (\n <DayPicker\n showOutsideDays={showOutsideDays}\n className={cn('p-3', className)}\n classNames={{\n months: 'flex flex-col space-y-4 sm:space-y-0 ',\n month: 'space-y-4 text-caption',\n caption: 'flex justify-between pt-1 items-center pl-2',\n caption_label: 'text-label text-foreground',\n nav: 'flex items-center',\n nav_button_previous: cn(\n quietTextHover,\n 'flex size-7 items-center justify-center rounded-md bg-transparent p-0 hover:bg-fill-subtle',\n ),\n nav_button_next: cn(\n quietTextHover,\n 'flex size-7 items-center justify-center rounded-md bg-transparent p-0 hover:bg-fill-subtle',\n ),\n dropdown_month: 'w-full border-collapse space-y-1',\n weeknumber: 'flex',\n day: cn(\n 'relative p-0 text-center focus-within:relative focus-within:z-20 [&:has([aria-selected])]:bg-fill [&:has([aria-selected].day-outside)]:bg-fill-subtle [&:has([aria-selected].day-range-end)]:rounded-r-md',\n props.mode === 'range'\n ? '[&:has(>.day-range-end)]:rounded-r-md [&:has(>.day-range-start)]:rounded-l-md first:[&:has([aria-selected])]:rounded-l-md last:[&:has([aria-selected])]:rounded-r-md'\n : '[&:has([aria-selected])]:rounded-md',\n 'size-8 p-0 text-caption hover:bg-fill-subtle aria-selected:opacity-100',\n ),\n day_range_start: 'day-range-start rounded-l-md',\n day_range_end: 'day-range-end rounded-r-md',\n day_selected: cn(\n 'bg-foreground! text-sidebar! hover:bg-foreground/90! focus:bg-foreground/90! focus:text-sidebar!',\n props.mode !== 'range' && 'rounded-md',\n ),\n day_today: 'bg-fill text-foreground',\n day_outside:\n 'day-outside text-muted-foreground opacity-50 aria-selected:bg-fill-subtle aria-selected:text-muted-foreground aria-selected:opacity-30',\n day_disabled: 'text-muted-foreground opacity-50',\n day_range_middle: 'aria-selected:bg-fill aria-selected:text-foreground',\n day_hidden: 'invisible',\n head_cell: 'text-meta text-muted-foreground',\n ...classNames,\n }}\n {...props}\n />\n );\n}\n","import { useEffect, useState } from 'react';\nimport { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from '@/ds/components/Select';\nimport { cn } from '@/lib/utils';\n\nexport type TimePickerProps = {\n defaultValue?: string;\n onValueChange: (value: string) => void;\n className?: string;\n label?: string;\n};\n\nconst hourOptions = ['12', '1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11'];\nconst minuteOptions = ['00', '15', '30', '45', '59'];\nconst timePeriodOptions = ['AM', 'PM'];\n\nexport function TimePicker({ defaultValue, onValueChange, className, label = 'Time' }: TimePickerProps) {\n const [hour, setHour] = useState<string>('12');\n const [minute, setMinute] = useState<string>('00');\n const [timePeriod, setTimePeriod] = useState('AM');\n\n useEffect(() => {\n if (defaultValue) {\n const timeRegex = /^(\\d{1,2}):(\\d{2})(?::\\d{2})?\\s*(AM|PM|am|pm)?$/;\n const match = defaultValue.match(timeRegex);\n\n if (match) {\n const rawHour = match[1];\n const rawMinute = match[2];\n if (rawHour === undefined || rawMinute === undefined) return;\n\n let parsedHour = parseInt(rawHour, 10);\n const parsedMinute = parseInt(rawMinute, 10);\n const period = match[3]?.toUpperCase();\n\n if (parsedHour >= 1 && parsedHour <= 12 && parsedMinute >= 0 && parsedMinute <= 59) {\n setHour(parsedHour.toString());\n setMinute(parsedMinute === 0 ? '00' : parsedMinute.toString());\n setTimePeriod(period || 'AM');\n }\n }\n }\n }, [defaultValue]);\n\n const handleHourChange = (val: string) => {\n const nextHour = hourOptions[+val];\n if (nextHour === undefined) return;\n setHour(nextHour);\n onValueChange(`${nextHour}:${minute} ${timePeriod}`.trim());\n };\n\n const handleMinuteChange = (val: string) => {\n const nextMinute = minuteOptions[+val];\n if (nextMinute === undefined) return;\n setMinute(nextMinute);\n onValueChange(`${hour}:${nextMinute} ${timePeriod}`.trim());\n };\n\n const handleTimePeriodChange = (val: string) => {\n const nextPeriod = timePeriodOptions[+val];\n if (nextPeriod === undefined) return;\n setTimePeriod(nextPeriod);\n onValueChange(`${hour}:${minute} ${nextPeriod}`.trim());\n };\n\n return (\n <div role=\"group\" aria-label={label} className={cn('flex items-center gap-2', className)}>\n <TimePartSelect label=\"Hour\" options={hourOptions} value={hour} onValueChange={handleHourChange} />\n :\n <TimePartSelect label=\"Minute\" options={minuteOptions} value={minute} onValueChange={handleMinuteChange} />\n <TimePartSelect\n label=\"AM or PM\"\n options={timePeriodOptions}\n value={timePeriod}\n onValueChange={handleTimePeriodChange}\n />\n </div>\n );\n}\n\ntype TimePartSelectProps = {\n label: string;\n options: readonly string[];\n value: string;\n onValueChange: (index: string) => void;\n};\n\nfunction TimePartSelect({ label, options, value, onValueChange }: TimePartSelectProps) {\n return (\n <Select value={options.indexOf(value).toString()} onValueChange={onValueChange}>\n <SelectTrigger size=\"sm\" aria-label={label}>\n <SelectValue placeholder=\"Select...\" />\n </SelectTrigger>\n <SelectContent>\n {options.map((option, idx) => (\n <SelectItem key={option} value={`${idx}`}>\n {option}\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n );\n}\n","import { format, formatDate, isValid } from 'date-fns';\nimport { CalendarIcon, Check, X } from 'lucide-react';\nimport * as React from 'react';\nimport type { DayPickerSingleProps } from 'react-day-picker';\nimport { useDebouncedCallback } from 'use-debounce';\n\nimport { DatePicker } from './date-picker';\nimport { TimePicker } from './time-picker';\nimport { Button } from '@/ds/components/Button';\nimport type { ButtonProps } from '@/ds/components/Button';\nimport { Field, FieldError, FieldLabel } from '@/ds/components/Field';\nimport { Input } from '@/ds/components/Input';\nimport { Popover, PopoverContent, PopoverTrigger } from '@/ds/components/Popover';\nimport { controlTriggerOpenStateFor } from '@/ds/primitives/control-size';\nimport { fieldTriggerStyle } from '@/ds/primitives/form-element';\nimport { cn } from '@/lib/utils';\n\ntype CommonProps = Omit<DayPickerSingleProps, 'mode' | 'selected' | 'onSelect'> & {\n value: Date | undefined | null;\n minValue?: Date | null;\n maxValue?: Date | null;\n defaultTimeStrValue?: string;\n onValueChange: (date: Date | undefined) => void;\n};\n\ntype DefaultTriggerLook = Pick<ButtonProps, 'variant' | 'size'>;\n\nexport type DateTimePickerProps =\n | (CommonProps & DefaultTriggerLook & { children?: never; className?: string; placeholder?: string })\n | (CommonProps & {\n children: React.ReactNode;\n className?: never;\n placeholder?: string;\n variant?: never;\n size?: never;\n });\n\nexport const DateTimePicker: React.FC<DateTimePickerProps> = ({\n value,\n minValue,\n maxValue,\n defaultTimeStrValue,\n onValueChange,\n children,\n className,\n placeholder,\n variant,\n size,\n ...props\n}) => {\n const [openPopover, setOpenPopover] = React.useState(false);\n\n return (\n <Popover open={openPopover} onOpenChange={setOpenPopover}>\n <PopoverTrigger asChild>\n {children ? (\n children\n ) : (\n <DefaultTrigger\n value={value}\n placeholder={placeholder}\n variant={variant}\n size={size}\n className={className}\n data-testid=\"datepicker-button\"\n />\n )}\n </PopoverTrigger>\n <PopoverContent\n className=\"backdrop-blur-4xl w-auto max-w-66 bg-muted p-0!\"\n align=\"start\"\n data-testid=\"datepicker-calendar\"\n >\n <DateTimePickerContent\n value={value}\n minValue={minValue}\n maxValue={maxValue}\n onValueChange={onValueChange}\n setOpenPopover={setOpenPopover}\n defaultTimeStrValue={defaultTimeStrValue}\n {...props}\n />\n </PopoverContent>\n </Popover>\n );\n};\n\nfunction getCompoundDate({ date, timeStr = '' }: { date: Date; timeStr?: string }): Date | null {\n if (!isValid(date)) {\n return null;\n }\n\n if (timeStr) {\n const dateStr = format(date, 'yyyy-MM-dd');\n const newDate = new Date(`${dateStr} ${timeStr}`);\n if (isValid(newDate)) {\n return newDate;\n }\n }\n\n return date;\n}\n\nexport const DateTimePickerContent = ({\n value,\n minValue,\n maxValue,\n onValueChange,\n setOpenPopover,\n placeholder,\n className,\n defaultTimeStrValue,\n ...props\n}: CommonProps & {\n setOpenPopover?: (open: boolean) => void;\n placeholder?: string;\n className?: string;\n}) => {\n const [localErrorMsg, setLocalErrorMsg] = React.useState<string | null>(null);\n const [dateInputValue, setDateInputValue] = React.useState<string>(\n value ? format(getCompoundDate({ date: value, timeStr: defaultTimeStrValue }) || '', 'PP p') : '',\n );\n const [timeStrValue, setTimeStrValue] = React.useState<string>(defaultTimeStrValue || '');\n const [selected, setSelected] = React.useState<Date | undefined>(value ? new Date(value) : undefined);\n\n const debouncedDateUpdate = useDebouncedCallback((date: Date) => {\n if (isValid(date)) {\n setSelected(date);\n onValueChange?.(date);\n setOpenPopover?.(false);\n }\n }, 500);\n\n const handleInputChange: React.ChangeEventHandler<HTMLInputElement> = e => {\n setDateInputValue(e.currentTarget.value);\n const date = new Date(e.currentTarget.value);\n debouncedDateUpdate(date);\n };\n\n const updateInputValue = (date: Date | string) => {\n if (isValid(date)) {\n if (maxValue && date > maxValue) {\n setLocalErrorMsg(`The selected date should be before ${format(maxValue, 'PP p')}`);\n setDateInputValue('');\n } else if (minValue && date < minValue) {\n setLocalErrorMsg(`The selected date should be after ${format(minValue, 'PP p')}`);\n setDateInputValue('');\n } else {\n setDateInputValue(format(date, 'PP p'));\n setLocalErrorMsg('');\n }\n } else {\n setDateInputValue('');\n setLocalErrorMsg('');\n }\n };\n\n const dateInputValueDate = new Date(dateInputValue);\n const dateInputValueIsValid = isValid(dateInputValueDate);\n const newValueDefined = dateInputValueIsValid && dateInputValueDate.getTime() !== value?.getTime();\n\n const handleDaySelect = (date: Date | undefined) => {\n setSelected(date);\n if (date) {\n const newDate = getCompoundDate({ date, timeStr: timeStrValue });\n updateInputValue(newDate || '');\n } else {\n updateInputValue('');\n }\n };\n\n const handleMonthSelect = (date: Date | undefined) => {\n setSelected(date);\n if (date) {\n const newDate = getCompoundDate({ date, timeStr: timeStrValue });\n updateInputValue(newDate || '');\n } else {\n updateInputValue('');\n }\n };\n\n const handleTimeStrChange = (val: string) => {\n setTimeStrValue(val);\n\n if (dateInputValueIsValid) {\n const newDate = getCompoundDate({ date: dateInputValueDate, timeStr: val });\n updateInputValue(newDate || '');\n }\n };\n\n const handleCancel = () => {\n setOpenPopover?.(false);\n };\n\n const handleApply = () => {\n if (isValid(dateInputValueDate)) {\n onValueChange(dateInputValueDate);\n }\n setOpenPopover?.(false);\n };\n\n const handleClear = () => {\n onValueChange(undefined);\n setSelected(undefined);\n setDateInputValue('');\n setTimeStrValue('');\n setOpenPopover?.(false);\n };\n\n return (\n <div\n aria-label=\"Choose date\"\n className={cn('relative flex flex-col', className)}\n onKeyDown={e => {\n e.stopPropagation();\n if (e.key === 'Escape') {\n setOpenPopover?.(false);\n }\n }}\n >\n <Field invalid={Boolean(localErrorMsg)} className=\"m-4 mb-0 w-auto!\">\n <FieldLabel className=\"sr-only\">Date</FieldLabel>\n <Input type=\"text\" value={dateInputValue} onChange={handleInputChange} placeholder={placeholder} />\n <FieldError>{localErrorMsg}</FieldError>\n </Field>\n\n <DatePicker\n mode=\"single\"\n month={selected}\n selected={selected}\n onMonthChange={handleMonthSelect}\n onSelect={handleDaySelect}\n {...props}\n />\n\n <TimePicker\n onValueChange={handleTimeStrChange}\n className=\"m-4 mt-0 w-auto\"\n defaultValue={value ? formatDate(new Date(value), 'hh:mm a') : defaultTimeStrValue}\n />\n\n <div className=\"m-4 mt-0 grid grid-cols-[1fr_2fr] gap-2\">\n {newValueDefined && (\n <Button icon={<X />} tabIndex={0} size=\"md\" onClick={handleClear} type=\"button\">\n Clear\n </Button>\n )}\n <Button\n icon={newValueDefined ? <Check /> : <X />}\n tabIndex={0}\n type=\"button\"\n size=\"md\"\n variant={newValueDefined ? 'primary' : 'default'}\n onClick={() => {\n dateInputValueIsValid ? handleApply() : handleCancel();\n }}\n >\n {newValueDefined ? `Apply` : `Cancel`}\n </Button>\n </div>\n </div>\n );\n};\n\ntype DefaultButtonProps = Pick<ButtonProps, 'variant' | 'size' | 'tooltip' | 'disabled'> & {\n className?: string;\n placeholder?: string;\n value: Date | undefined | null;\n};\n\nexport const DefaultTrigger = React.forwardRef<HTMLButtonElement, DefaultButtonProps>(\n ({ value, placeholder, variant = 'default', size, className, ...props }, ref) => {\n return (\n <Button\n ref={ref}\n variant={variant}\n size={size}\n className={cn(\n 'justify-start',\n variant === 'default' && fieldTriggerStyle,\n controlTriggerOpenStateFor(variant),\n className,\n )}\n icon={<CalendarIcon />}\n {...props}\n >\n {value ? (\n <span className=\"text-foreground\">{format(value, 'PP p')}</span>\n ) : (\n <span className=\"text-muted-foreground\">{placeholder ?? 'Pick a date'}</span>\n )}\n </Button>\n );\n },\n);\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"DateTimePicker.es.js","names":["React"],"sources":["../../src/ds/components/DateTimePicker/date-picker.tsx","../../src/ds/components/DateTimePicker/time-picker.tsx","../../src/ds/components/DateTimePicker/date-time-picker.tsx"],"sourcesContent":["import * as React from 'react';\nimport { DayPicker } from 'react-day-picker';\nimport { quietTextHover } from '@/ds/primitives/typography';\nimport { cn } from '@/lib/utils';\n\nexport type CalendarProps = React.ComponentProps<typeof DayPicker>;\n\nexport function DatePicker({ className, classNames, showOutsideDays = true, ...props }: CalendarProps) {\n return (\n <DayPicker\n showOutsideDays={showOutsideDays}\n className={cn('p-3', className)}\n classNames={{\n months: 'flex flex-col space-y-4 sm:space-y-0 ',\n month: 'space-y-4 text-caption',\n caption: 'flex justify-between pt-1 items-center pl-2',\n caption_label: 'text-label text-foreground',\n nav: 'flex items-center',\n nav_button_previous: cn(\n quietTextHover,\n 'flex size-7 items-center justify-center rounded-md bg-transparent p-0 hover:bg-fill-subtle',\n ),\n nav_button_next: cn(\n quietTextHover,\n 'flex size-7 items-center justify-center rounded-md bg-transparent p-0 hover:bg-fill-subtle',\n ),\n dropdown_month: 'w-full border-collapse space-y-1',\n weeknumber: 'flex',\n day: cn(\n 'relative p-0 text-center focus-within:relative focus-within:z-20 [&:has([aria-selected])]:bg-fill [&:has([aria-selected].day-outside)]:bg-fill-subtle [&:has([aria-selected].day-range-end)]:rounded-r-md',\n props.mode === 'range'\n ? '[&:has(>.day-range-end)]:rounded-r-md [&:has(>.day-range-start)]:rounded-l-md first:[&:has([aria-selected])]:rounded-l-md last:[&:has([aria-selected])]:rounded-r-md'\n : '[&:has([aria-selected])]:rounded-md',\n 'size-8 p-0 text-caption hover:bg-fill-subtle aria-selected:opacity-100',\n ),\n day_range_start: 'day-range-start rounded-l-md',\n day_range_end: 'day-range-end rounded-r-md',\n day_selected: cn(\n 'bg-foreground! text-sidebar! hover:bg-foreground/90! focus:bg-foreground/90! focus:text-sidebar!',\n props.mode !== 'range' && 'rounded-md',\n ),\n day_today: 'bg-fill text-foreground',\n day_outside:\n 'day-outside text-muted-foreground opacity-50 aria-selected:bg-fill-subtle aria-selected:text-muted-foreground aria-selected:opacity-30',\n day_disabled: 'text-muted-foreground opacity-50',\n day_range_middle: 'aria-selected:bg-fill aria-selected:text-foreground',\n day_hidden: 'invisible',\n head_cell: 'text-meta text-muted-foreground',\n ...classNames,\n }}\n {...props}\n />\n );\n}\n","import { useEffect, useState } from 'react';\nimport { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from '@/ds/components/Select';\nimport { cn } from '@/lib/utils';\n\nexport type TimePickerProps = {\n defaultValue?: string;\n onValueChange: (value: string) => void;\n className?: string;\n label?: string;\n};\n\nconst hourOptions = ['12', '1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11'];\nconst minuteOptions = ['00', '15', '30', '45', '59'];\nconst timePeriodOptions = ['AM', 'PM'];\n\nexport function TimePicker({ defaultValue, onValueChange, className, label = 'Time' }: TimePickerProps) {\n const [hour, setHour] = useState<string>('12');\n const [minute, setMinute] = useState<string>('00');\n const [timePeriod, setTimePeriod] = useState('AM');\n\n useEffect(() => {\n if (defaultValue) {\n const timeRegex = /^(\\d{1,2}):(\\d{2})(?::\\d{2})?\\s*(AM|PM|am|pm)?$/;\n const match = defaultValue.match(timeRegex);\n\n if (match) {\n const rawHour = match[1];\n const rawMinute = match[2];\n if (rawHour === undefined || rawMinute === undefined) return;\n\n let parsedHour = parseInt(rawHour, 10);\n const parsedMinute = parseInt(rawMinute, 10);\n const period = match[3]?.toUpperCase();\n\n if (parsedHour >= 1 && parsedHour <= 12 && parsedMinute >= 0 && parsedMinute <= 59) {\n setHour(parsedHour.toString());\n setMinute(parsedMinute === 0 ? '00' : parsedMinute.toString());\n setTimePeriod(period || 'AM');\n }\n }\n }\n }, [defaultValue]);\n\n const handleHourChange = (val: string) => {\n const nextHour = hourOptions[+val];\n if (nextHour === undefined) return;\n setHour(nextHour);\n onValueChange(`${nextHour}:${minute} ${timePeriod}`.trim());\n };\n\n const handleMinuteChange = (val: string) => {\n const nextMinute = minuteOptions[+val];\n if (nextMinute === undefined) return;\n setMinute(nextMinute);\n onValueChange(`${hour}:${nextMinute} ${timePeriod}`.trim());\n };\n\n const handleTimePeriodChange = (val: string) => {\n const nextPeriod = timePeriodOptions[+val];\n if (nextPeriod === undefined) return;\n setTimePeriod(nextPeriod);\n onValueChange(`${hour}:${minute} ${nextPeriod}`.trim());\n };\n\n return (\n <div role=\"group\" aria-label={label} className={cn('flex items-center gap-2', className)}>\n <TimePartSelect label=\"Hour\" options={hourOptions} value={hour} onValueChange={handleHourChange} />\n :\n <TimePartSelect label=\"Minute\" options={minuteOptions} value={minute} onValueChange={handleMinuteChange} />\n <TimePartSelect\n label=\"AM or PM\"\n options={timePeriodOptions}\n value={timePeriod}\n onValueChange={handleTimePeriodChange}\n />\n </div>\n );\n}\n\ntype TimePartSelectProps = {\n label: string;\n options: readonly string[];\n value: string;\n onValueChange: (index: string) => void;\n};\n\nfunction TimePartSelect({ label, options, value, onValueChange }: TimePartSelectProps) {\n return (\n <Select value={options.indexOf(value).toString()} onValueChange={onValueChange}>\n <SelectTrigger size=\"sm\" aria-label={label}>\n <SelectValue placeholder=\"Select\" />\n </SelectTrigger>\n <SelectContent>\n {options.map((option, idx) => (\n <SelectItem key={option} value={`${idx}`}>\n {option}\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n );\n}\n","import { format, formatDate, isValid } from 'date-fns';\nimport { CalendarIcon, Check, X } from 'lucide-react';\nimport * as React from 'react';\nimport type { DayPickerSingleProps } from 'react-day-picker';\nimport { useDebouncedCallback } from 'use-debounce';\n\nimport { DatePicker } from './date-picker';\nimport { TimePicker } from './time-picker';\nimport { Button } from '@/ds/components/Button';\nimport type { ButtonProps } from '@/ds/components/Button';\nimport { Field, FieldError, FieldLabel } from '@/ds/components/Field';\nimport { Input } from '@/ds/components/Input';\nimport { Popover, PopoverContent, PopoverTrigger } from '@/ds/components/Popover';\nimport { controlTriggerOpenStateFor } from '@/ds/primitives/control-size';\nimport { fieldTriggerStyle } from '@/ds/primitives/form-element';\nimport { cn } from '@/lib/utils';\n\ntype CommonProps = Omit<DayPickerSingleProps, 'mode' | 'selected' | 'onSelect'> & {\n value: Date | undefined | null;\n minValue?: Date | null;\n maxValue?: Date | null;\n defaultTimeStrValue?: string;\n onValueChange: (date: Date | undefined) => void;\n};\n\ntype DefaultTriggerLook = Pick<ButtonProps, 'variant' | 'size'>;\n\nexport type DateTimePickerProps =\n | (CommonProps & DefaultTriggerLook & { children?: never; className?: string; placeholder?: string })\n | (CommonProps & {\n children: React.ReactNode;\n className?: never;\n placeholder?: string;\n variant?: never;\n size?: never;\n });\n\nexport const DateTimePicker: React.FC<DateTimePickerProps> = ({\n value,\n minValue,\n maxValue,\n defaultTimeStrValue,\n onValueChange,\n children,\n className,\n placeholder,\n variant,\n size,\n ...props\n}) => {\n const [openPopover, setOpenPopover] = React.useState(false);\n\n return (\n <Popover open={openPopover} onOpenChange={setOpenPopover}>\n <PopoverTrigger asChild>\n {children ? (\n children\n ) : (\n <DefaultTrigger\n value={value}\n placeholder={placeholder}\n variant={variant}\n size={size}\n className={className}\n data-testid=\"datepicker-button\"\n />\n )}\n </PopoverTrigger>\n <PopoverContent\n className=\"backdrop-blur-4xl w-auto max-w-66 bg-muted p-0!\"\n align=\"start\"\n data-testid=\"datepicker-calendar\"\n >\n <DateTimePickerContent\n value={value}\n minValue={minValue}\n maxValue={maxValue}\n onValueChange={onValueChange}\n setOpenPopover={setOpenPopover}\n defaultTimeStrValue={defaultTimeStrValue}\n {...props}\n />\n </PopoverContent>\n </Popover>\n );\n};\n\nfunction getCompoundDate({ date, timeStr = '' }: { date: Date; timeStr?: string }): Date | null {\n if (!isValid(date)) {\n return null;\n }\n\n if (timeStr) {\n const dateStr = format(date, 'yyyy-MM-dd');\n const newDate = new Date(`${dateStr} ${timeStr}`);\n if (isValid(newDate)) {\n return newDate;\n }\n }\n\n return date;\n}\n\nexport const DateTimePickerContent = ({\n value,\n minValue,\n maxValue,\n onValueChange,\n setOpenPopover,\n placeholder,\n className,\n defaultTimeStrValue,\n ...props\n}: CommonProps & {\n setOpenPopover?: (open: boolean) => void;\n placeholder?: string;\n className?: string;\n}) => {\n const [localErrorMsg, setLocalErrorMsg] = React.useState<string | null>(null);\n const [dateInputValue, setDateInputValue] = React.useState<string>(\n value ? format(getCompoundDate({ date: value, timeStr: defaultTimeStrValue }) || '', 'PP p') : '',\n );\n const [timeStrValue, setTimeStrValue] = React.useState<string>(defaultTimeStrValue || '');\n const [selected, setSelected] = React.useState<Date | undefined>(value ? new Date(value) : undefined);\n\n const debouncedDateUpdate = useDebouncedCallback((date: Date) => {\n if (isValid(date)) {\n setSelected(date);\n onValueChange?.(date);\n setOpenPopover?.(false);\n }\n }, 500);\n\n const handleInputChange: React.ChangeEventHandler<HTMLInputElement> = e => {\n setDateInputValue(e.currentTarget.value);\n const date = new Date(e.currentTarget.value);\n debouncedDateUpdate(date);\n };\n\n const updateInputValue = (date: Date | string) => {\n if (isValid(date)) {\n if (maxValue && date > maxValue) {\n setLocalErrorMsg(`The selected date should be before ${format(maxValue, 'PP p')}`);\n setDateInputValue('');\n } else if (minValue && date < minValue) {\n setLocalErrorMsg(`The selected date should be after ${format(minValue, 'PP p')}`);\n setDateInputValue('');\n } else {\n setDateInputValue(format(date, 'PP p'));\n setLocalErrorMsg('');\n }\n } else {\n setDateInputValue('');\n setLocalErrorMsg('');\n }\n };\n\n const dateInputValueDate = new Date(dateInputValue);\n const dateInputValueIsValid = isValid(dateInputValueDate);\n const newValueDefined = dateInputValueIsValid && dateInputValueDate.getTime() !== value?.getTime();\n\n const handleDaySelect = (date: Date | undefined) => {\n setSelected(date);\n if (date) {\n const newDate = getCompoundDate({ date, timeStr: timeStrValue });\n updateInputValue(newDate || '');\n } else {\n updateInputValue('');\n }\n };\n\n const handleMonthSelect = (date: Date | undefined) => {\n setSelected(date);\n if (date) {\n const newDate = getCompoundDate({ date, timeStr: timeStrValue });\n updateInputValue(newDate || '');\n } else {\n updateInputValue('');\n }\n };\n\n const handleTimeStrChange = (val: string) => {\n setTimeStrValue(val);\n\n if (dateInputValueIsValid) {\n const newDate = getCompoundDate({ date: dateInputValueDate, timeStr: val });\n updateInputValue(newDate || '');\n }\n };\n\n const handleCancel = () => {\n setOpenPopover?.(false);\n };\n\n const handleApply = () => {\n if (isValid(dateInputValueDate)) {\n onValueChange(dateInputValueDate);\n }\n setOpenPopover?.(false);\n };\n\n const handleClear = () => {\n onValueChange(undefined);\n setSelected(undefined);\n setDateInputValue('');\n setTimeStrValue('');\n setOpenPopover?.(false);\n };\n\n return (\n <div\n aria-label=\"Choose date\"\n className={cn('relative flex flex-col', className)}\n onKeyDown={e => {\n e.stopPropagation();\n if (e.key === 'Escape') {\n setOpenPopover?.(false);\n }\n }}\n >\n <Field invalid={Boolean(localErrorMsg)} className=\"m-4 mb-0 w-auto!\">\n <FieldLabel className=\"sr-only\">Date</FieldLabel>\n <Input type=\"text\" value={dateInputValue} onChange={handleInputChange} placeholder={placeholder} />\n <FieldError>{localErrorMsg}</FieldError>\n </Field>\n\n <DatePicker\n mode=\"single\"\n month={selected}\n selected={selected}\n onMonthChange={handleMonthSelect}\n onSelect={handleDaySelect}\n {...props}\n />\n\n <TimePicker\n onValueChange={handleTimeStrChange}\n className=\"m-4 mt-0 w-auto\"\n defaultValue={value ? formatDate(new Date(value), 'hh:mm a') : defaultTimeStrValue}\n />\n\n <div className=\"m-4 mt-0 grid grid-cols-[1fr_2fr] gap-2\">\n {newValueDefined && (\n <Button icon={<X />} tabIndex={0} size=\"md\" onClick={handleClear} type=\"button\">\n Clear\n </Button>\n )}\n <Button\n icon={newValueDefined ? <Check /> : <X />}\n tabIndex={0}\n type=\"button\"\n size=\"md\"\n variant={newValueDefined ? 'primary' : 'default'}\n onClick={() => {\n dateInputValueIsValid ? handleApply() : handleCancel();\n }}\n >\n {newValueDefined ? `Apply` : `Cancel`}\n </Button>\n </div>\n </div>\n );\n};\n\ntype DefaultButtonProps = Pick<ButtonProps, 'variant' | 'size' | 'tooltip' | 'disabled'> & {\n className?: string;\n placeholder?: string;\n value: Date | undefined | null;\n};\n\nexport const DefaultTrigger = React.forwardRef<HTMLButtonElement, DefaultButtonProps>(\n ({ value, placeholder, variant = 'default', size, className, ...props }, ref) => {\n return (\n <Button\n ref={ref}\n variant={variant}\n size={size}\n className={cn(\n 'justify-start',\n variant === 'default' && fieldTriggerStyle,\n controlTriggerOpenStateFor(variant),\n className,\n )}\n icon={<CalendarIcon />}\n {...props}\n >\n {value ? (\n <span className=\"text-foreground\">{format(value, 'PP p')}</span>\n ) : (\n <span className=\"text-muted-foreground\">{placeholder ?? 'Pick a date'}</span>\n )}\n </Button>\n );\n },\n);\n"],"mappings":"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"}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
2
|
-
const
|
|
3
|
-
exports.DateTimeRangePicker =
|
|
2
|
+
const require_date_time_range_picker = require("../date-time-range-picker-CTt7Od0P.cjs");
|
|
3
|
+
exports.DateTimeRangePicker = require_date_time_range_picker.DateTimeRangePicker;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export { t as DateTimeRangePicker } from "../
|
|
1
|
+
export { t as DateTimeRangePicker } from "../date-time-range-picker-DKh1K9Iy.js";
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
2
|
-
const require_Dialog = require("../Dialog-
|
|
2
|
+
const require_Dialog = require("../Dialog-BvWF9HE-.cjs");
|
|
3
3
|
exports.Dialog = require_Dialog.Dialog;
|
|
4
4
|
exports.DialogAction = require_Dialog.DialogAction;
|
|
5
5
|
exports.DialogBody = require_Dialog.DialogBody;
|