@mastra/playground-ui 60.2.0 → 61.0.0-alpha.1
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/README.md +18 -0
- package/dist/{Avatar-bHcyExU7.js → Avatar-Bg_EZRgZ.js} +2 -2
- package/dist/{Avatar-bHcyExU7.js.map → Avatar-Bg_EZRgZ.js.map} +1 -1
- package/dist/{Avatar-B3PwGdWv.cjs → Avatar-DchBEEMO.cjs} +2 -2
- package/dist/{Avatar-B3PwGdWv.cjs.map → Avatar-DchBEEMO.cjs.map} +1 -1
- package/dist/{Badge-D3EctKQo.cjs → Badge-DB59RxT5.cjs} +3 -3
- package/dist/Badge-DB59RxT5.cjs.map +1 -0
- package/dist/{Badge-DmOqFpXW.js → Badge-DId-8rYY.js} +3 -3
- package/dist/Badge-DId-8rYY.js.map +1 -0
- package/dist/{EmptyState-DyyUFpzY.js → EmptyState-DGzBN0Ix.js} +2 -2
- package/dist/{EmptyState-DyyUFpzY.js.map → EmptyState-DGzBN0Ix.js.map} +1 -1
- package/dist/{EmptyState-CuoMGNP0.cjs → EmptyState-DvSib3QC.cjs} +2 -2
- package/dist/{EmptyState-CuoMGNP0.cjs.map → EmptyState-DvSib3QC.cjs.map} +1 -1
- package/dist/{Header-hTHhO02b.js → Header-BXl3AZgO.js} +2 -2
- package/dist/{Header-hTHhO02b.js.map → Header-BXl3AZgO.js.map} +1 -1
- package/dist/{Header-y51Sfo3G.cjs → Header-W3PBmXia.cjs} +2 -2
- package/dist/{Header-y51Sfo3G.cjs.map → Header-W3PBmXia.cjs.map} +1 -1
- package/dist/{Notice-B8RIClJD.js → Notice-D4gMAkVI.js} +2 -2
- package/dist/{Notice-B8RIClJD.js.map → Notice-D4gMAkVI.js.map} +1 -1
- package/dist/{Notice-C4Tgmtgb.cjs → Notice-D4zc_oTj.cjs} +2 -2
- package/dist/{Notice-C4Tgmtgb.cjs.map → Notice-D4zc_oTj.cjs.map} +1 -1
- package/dist/{Txt-BP1SRHmL.js → Txt-C3cYJgKU.js} +4 -1
- package/dist/Txt-C3cYJgKU.js.map +1 -0
- package/dist/{Txt-DPmEpNbp.cjs → Txt-DNnvlrBo.cjs} +4 -1
- package/dist/Txt-DNnvlrBo.cjs.map +1 -0
- package/dist/{activity-CbQG59Oc.cjs → activity-ClKZR5_o.cjs} +2 -2
- package/dist/{activity-CbQG59Oc.cjs.map → activity-ClKZR5_o.cjs.map} +1 -1
- package/dist/{activity-BoXbE4Kz.js → activity-D0SefV4r.js} +2 -2
- package/dist/{activity-BoXbE4Kz.js.map → activity-D0SefV4r.js.map} +1 -1
- package/dist/{ask-user-DE8TaPhb.js → ask-user-CqCUiZRR.js} +4 -4
- package/dist/{ask-user-DE8TaPhb.js.map → ask-user-CqCUiZRR.js.map} +1 -1
- package/dist/{ask-user-XYY0fUoI.cjs → ask-user-DBb0lUh2.cjs} +4 -4
- package/dist/{ask-user-XYY0fUoI.cjs.map → ask-user-DBb0lUh2.cjs.map} +1 -1
- package/dist/buttons-group.css +1 -1
- package/dist/{code-block-Bnz7Pq0Q.js → code-block-C04dJD3G.js} +5 -4
- package/dist/{code-block-Bnz7Pq0Q.js.map → code-block-C04dJD3G.js.map} +1 -1
- package/dist/{code-block-C3DbSINk.cjs → code-block-CMI2oLXm.cjs} +6 -5
- package/dist/{code-block-C3DbSINk.cjs.map → code-block-CMI2oLXm.cjs.map} +1 -1
- package/dist/collapsible-box-DW-y0Oi1.js +67 -0
- package/dist/collapsible-box-DW-y0Oi1.js.map +1 -0
- package/dist/collapsible-box-DdUueeh6.cjs +69 -0
- package/dist/collapsible-box-DdUueeh6.cjs.map +1 -0
- package/dist/{combobox-RzEkcOuu.cjs → combobox-DPpiBLWV.cjs} +3 -3
- package/dist/{combobox-RzEkcOuu.cjs.map → combobox-DPpiBLWV.cjs.map} +1 -1
- package/dist/{combobox-DKFPbNMB.js → combobox-DoJgbq9N.js} +3 -3
- package/dist/{combobox-DKFPbNMB.js.map → combobox-DoJgbq9N.js.map} +1 -1
- package/dist/{combobox-styles-mbcWlNZQ.js → combobox-styles-BuHYzri9.js} +3 -3
- package/dist/combobox-styles-BuHYzri9.js.map +1 -0
- package/dist/{combobox-styles-qL3FSgmU.cjs → combobox-styles-zdW4cHSq.cjs} +3 -3
- package/dist/combobox-styles-zdW4cHSq.cjs.map +1 -0
- package/dist/{command-DFin7kHN.js → command-CXPbrw66.js} +7 -4
- package/dist/command-CXPbrw66.js.map +1 -0
- package/dist/{command-Bm0VcX7X.cjs → command-DD3WIrQX.cjs} +7 -4
- package/dist/command-DD3WIrQX.cjs.map +1 -0
- package/dist/{comment-DKWkzdMj.js → comment-B1Cf9w4Z.js} +2 -2
- package/dist/{comment-DKWkzdMj.js.map → comment-B1Cf9w4Z.js.map} +1 -1
- package/dist/{comment-DWY6D0pZ.cjs → comment-DnbibTOe.cjs} +2 -2
- package/dist/{comment-DWY6D0pZ.cjs.map → comment-DnbibTOe.cjs.map} +1 -1
- package/dist/components/Avatar.cjs.js +1 -1
- package/dist/components/Avatar.es.js +1 -1
- package/dist/components/Badge.cjs.js +1 -1
- package/dist/components/Badge.es.js +1 -1
- package/dist/components/ClampedText.cjs.js +1 -1
- package/dist/components/ClampedText.es.js +1 -1
- package/dist/components/CodeBlock.cjs.js +1 -1
- package/dist/components/CodeBlock.es.js +1 -1
- package/dist/components/CollapsibleBox.cjs.js +3 -2
- package/dist/components/CollapsibleBox.cjs.js.map +1 -1
- package/dist/components/CollapsibleBox.es.js +2 -1
- package/dist/components/CollapsibleBox.es.js.map +1 -1
- package/dist/components/Combobox.cjs.js +2 -2
- package/dist/components/Combobox.es.js +2 -2
- package/dist/components/Command.cjs.js +1 -1
- package/dist/components/Command.es.js +1 -1
- package/dist/components/CommandPalette.cjs.js +2 -2
- package/dist/components/CommandPalette.es.js +2 -2
- package/dist/components/Comment.cjs.js +4 -4
- package/dist/components/Comment.es.js +5 -5
- 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 +4 -4
- package/dist/components/DataList.es.js +4 -4
- package/dist/components/DataPanel.cjs.js +1 -1
- package/dist/components/DataPanel.es.js +1 -1
- package/dist/components/DateRangeTimeline.cjs.js +1 -1
- package/dist/components/DateRangeTimeline.es.js +1 -1
- package/dist/components/DateTimePicker.cjs.js +2 -2
- package/dist/components/DateTimePicker.es.js +2 -2
- package/dist/components/DateTimeRangePicker.cjs.js +1 -1
- package/dist/components/DateTimeRangePicker.es.js +1 -1
- package/dist/components/EmptyState.cjs.js +1 -1
- package/dist/components/EmptyState.es.js +1 -1
- package/dist/components/Entity.cjs.js +1 -1
- package/dist/components/Entity.es.js +1 -1
- package/dist/components/EntityHeader.cjs.js +1 -1
- package/dist/components/EntityHeader.es.js +1 -1
- package/dist/components/Entry.cjs.js +1 -1
- package/dist/components/Entry.es.js +1 -1
- package/dist/components/EnvironmentVariablesEditor.cjs.js +5 -5
- package/dist/components/EnvironmentVariablesEditor.es.js +5 -5
- package/dist/components/Field.cjs.js +1 -1
- package/dist/components/Field.es.js +1 -1
- package/dist/components/FileDropBackdrop.cjs.js +1 -1
- package/dist/components/FileDropBackdrop.es.js +1 -1
- package/dist/components/FilterBar.cjs.js +3 -3
- package/dist/components/FilterBar.es.js +4 -4
- package/dist/components/FormFieldBlocks.cjs.js +2 -2
- package/dist/components/FormFieldBlocks.es.js +2 -2
- package/dist/components/Header.cjs.js +1 -1
- package/dist/components/Header.es.js +1 -1
- package/dist/components/HorizontalBars.cjs.js +1 -1
- package/dist/components/HorizontalBars.es.js +1 -1
- package/dist/components/InputGroup.cjs.js +3 -1
- package/dist/components/InputGroup.cjs.js.map +1 -1
- package/dist/components/InputGroup.es.js +1 -1
- package/dist/components/InputNumber.cjs.js +95 -0
- package/dist/components/InputNumber.cjs.js.map +1 -0
- package/dist/components/InputNumber.d.ts +2 -0
- package/dist/components/InputNumber.es.js +68 -0
- package/dist/components/InputNumber.es.js.map +1 -0
- package/dist/components/JSONSchemaForm.cjs.js +2 -2
- package/dist/components/JSONSchemaForm.es.js +2 -2
- package/dist/components/KeyValueList.cjs.js +1 -1
- package/dist/components/KeyValueList.es.js +1 -1
- package/dist/components/ListSearch.cjs.js +1 -1
- package/dist/components/ListSearch.es.js +1 -1
- package/dist/components/LogsDataList.cjs.js +3 -1
- package/dist/components/LogsDataList.cjs.js.map +1 -1
- package/dist/components/LogsDataList.es.js +3 -1
- package/dist/components/LogsDataList.es.js.map +1 -1
- package/dist/components/MainHeader.cjs.js +1 -1
- package/dist/components/MainHeader.es.js +1 -1
- package/dist/components/MarkdownRenderer.cjs.js +1 -1
- package/dist/components/MarkdownRenderer.es.js +1 -1
- package/dist/components/Message.cjs.js +1 -1
- package/dist/components/Message.es.js +2 -2
- package/dist/components/MetricsCard.cjs.js +1 -1
- package/dist/components/MetricsCard.es.js +1 -1
- package/dist/components/MetricsKpiCard.cjs.js +1 -1
- package/dist/components/MetricsKpiCard.es.js +1 -1
- package/dist/components/MetricsLineChart.cjs.js +2 -2
- package/dist/components/MetricsLineChart.es.js +2 -2
- package/dist/components/MetricsStackedBarChart.cjs.js +1 -1
- package/dist/components/MetricsStackedBarChart.es.js +1 -1
- package/dist/components/Notice.cjs.js +1 -1
- package/dist/components/Notice.es.js +1 -1
- package/dist/components/PageHeader.cjs.js +1 -1
- package/dist/components/PageHeader.es.js +1 -1
- package/dist/components/PageLayout.cjs.js +1 -1
- package/dist/components/PageLayout.es.js +1 -1
- package/dist/components/ProductBadge.cjs.js +1 -1
- package/dist/components/ProductBadge.es.js +1 -1
- package/dist/components/PropertyFilter.cjs.js +3 -3
- package/dist/components/PropertyFilter.es.js +3 -3
- package/dist/components/RelativeTimestamp.cjs.js +1 -1
- package/dist/components/RelativeTimestamp.es.js +1 -1
- package/dist/components/RuleBuilder.cjs.js +2 -2
- package/dist/components/RuleBuilder.es.js +2 -2
- package/dist/components/ScatterPlotChart.cjs.js +1 -1
- package/dist/components/ScatterPlotChart.es.js +1 -1
- package/dist/components/SearchInput.cjs.js +1 -1
- package/dist/components/SearchInput.es.js +1 -1
- package/dist/components/Section.cjs.js +1 -1
- package/dist/components/Section.es.js +1 -1
- package/dist/components/SectionCard.cjs.js +1 -1
- package/dist/components/SectionCard.es.js +1 -1
- package/dist/components/Select.cjs.js +1 -1
- package/dist/components/Select.es.js +1 -1
- package/dist/components/SideDialog.cjs.js +1 -1
- package/dist/components/SideDialog.es.js +1 -1
- package/dist/components/StatusIndicators.cjs.js +1 -1
- package/dist/components/StatusIndicators.es.js +1 -1
- package/dist/components/Steps.cjs.js +1 -1
- package/dist/components/Steps.es.js +1 -1
- package/dist/components/Table.cjs.js +1 -1
- package/dist/components/Table.es.js +1 -1
- package/dist/components/Tabs.cjs.js +5 -4
- package/dist/components/Tabs.cjs.js.map +1 -1
- package/dist/components/Tabs.es.js +4 -3
- package/dist/components/Tabs.es.js.map +1 -1
- package/dist/components/Text.cjs.js +1 -1
- package/dist/components/Text.es.js +1 -1
- package/dist/components/ThinkingLevel.cjs.js +230 -0
- package/dist/components/ThinkingLevel.cjs.js.map +1 -0
- package/dist/components/ThinkingLevel.d.ts +2 -0
- package/dist/components/ThinkingLevel.es.js +223 -0
- package/dist/components/ThinkingLevel.es.js.map +1 -0
- package/dist/components/ThreadList.cjs.js +1 -1
- package/dist/components/ThreadList.es.js +1 -1
- package/dist/components/ThreadRail.cjs.js +1 -1
- package/dist/components/ThreadRail.es.js +1 -1
- package/dist/components/TokenBudget.cjs.js +1 -1
- package/dist/components/TokenBudget.es.js +1 -1
- package/dist/components/Tree.cjs.js +2 -487
- package/dist/components/Tree.cjs.js.map +1 -1
- package/dist/components/Tree.es.js +1 -471
- package/dist/components/Tree.es.js.map +1 -1
- package/dist/components/Truncate.cjs.js +1 -1
- package/dist/components/Truncate.es.js +1 -1
- package/dist/components/Txt.cjs.js +1 -1
- package/dist/components/Txt.es.js +1 -1
- package/dist/components/Workflow.cjs.js +4 -4
- package/dist/components/Workflow.es.js +4 -4
- package/dist/components/ai/activity.cjs.js +4 -4
- package/dist/components/ai/activity.es.js +4 -4
- package/dist/components/ai/ask-user.cjs.js +1 -1
- package/dist/components/ai/ask-user.es.js +1 -1
- package/dist/components/ai/plan.cjs.js +1 -1
- package/dist/components/ai/plan.es.js +1 -1
- package/dist/components/ai/task-list.cjs.js +1 -1
- package/dist/components/ai/task-list.es.js +1 -1
- package/dist/components/ai/tool-call.cjs.js +2 -2
- package/dist/components/ai/tool-call.es.js +2 -2
- package/dist/components/ai/transcript-divider.cjs.js +3 -11
- package/dist/components/ai/transcript-divider.cjs.js.map +1 -1
- package/dist/components/ai/transcript-divider.es.js +1 -13
- package/dist/components/ai/transcript-divider.es.js.map +1 -1
- package/dist/{data-code-section-Ds79F6W-.cjs → data-code-section-DIj4CMvD.cjs} +2 -2
- package/dist/{data-code-section-Ds79F6W-.cjs.map → data-code-section-DIj4CMvD.cjs.map} +1 -1
- package/dist/{data-code-section-DFxE6ckH.js → data-code-section-K-2Bj1zO.js} +2 -2
- package/dist/{data-code-section-DFxE6ckH.js.map → data-code-section-K-2Bj1zO.js.map} +1 -1
- package/dist/{data-list-CEIYm7FY.js → data-list-DdsyfT8B.js} +3 -3
- package/dist/{data-list-CEIYm7FY.js.map → data-list-DdsyfT8B.js.map} +1 -1
- package/dist/{data-list-Bqf-fhMx.cjs → data-list-DoKc-wSe.cjs} +3 -3
- package/dist/{data-list-Bqf-fhMx.cjs.map → data-list-DoKc-wSe.cjs.map} +1 -1
- package/dist/{data-list-spacer-BH2DjRdk.js → data-list-spacer-7QVTcgIS.js} +2 -2
- package/dist/{data-list-spacer-BH2DjRdk.js.map → data-list-spacer-7QVTcgIS.js.map} +1 -1
- package/dist/{data-list-spacer-DFvaAEqo.cjs → data-list-spacer-CD4hD-As.cjs} +2 -2
- package/dist/{data-list-spacer-DFvaAEqo.cjs.map → data-list-spacer-CD4hD-As.cjs.map} +1 -1
- package/dist/{data-panel-CbomKGJt.js → data-panel-CKvpHRUM.js} +4 -4
- package/dist/data-panel-CKvpHRUM.js.map +1 -0
- package/dist/{data-panel-o-QLWuFV.cjs → data-panel-YCvno_Di.cjs} +4 -4
- package/dist/data-panel-YCvno_Di.cjs.map +1 -0
- package/dist/{date-time-range-picker-Bb-CGVEL.cjs → date-time-range-picker-BbX8F_LY.cjs} +4 -4
- package/dist/{date-time-range-picker-Bb-CGVEL.cjs.map → date-time-range-picker-BbX8F_LY.cjs.map} +1 -1
- package/dist/{date-time-range-picker-B1zYIQTC.js → date-time-range-picker-DzPLKJol.js} +4 -4
- package/dist/{date-time-range-picker-B1zYIQTC.js.map → date-time-range-picker-DzPLKJol.js.map} +1 -1
- package/dist/domains/auth/components/permission-denied.cjs.js +1 -1
- package/dist/domains/auth/components/permission-denied.es.js +1 -1
- package/dist/domains/auth/components/session-expired.cjs.js +1 -1
- package/dist/domains/auth/components/session-expired.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 +1 -1
- package/dist/domains/chat/components/network-choice-metadata-dialog.es.js +1 -1
- package/dist/domains/chat/components/section-label.cjs.js +1 -1
- package/dist/domains/chat/components/section-label.es.js +1 -1
- package/dist/domains/chat/messages/assistant-message-actions.cjs.js +1 -1
- package/dist/domains/chat/messages/assistant-message-actions.es.js +1 -1
- package/dist/domains/chat/messages/dataset-save-action.cjs.js +2 -2
- package/dist/domains/chat/messages/dataset-save-action.es.js +2 -2
- 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/renderers/message-text.cjs.js +3 -3
- package/dist/domains/chat/messages/renderers/message-text.es.js +3 -3
- 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 +3 -3
- package/dist/domains/chat/messages/skill-message.es.js +3 -3
- 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/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 +1 -1
- package/dist/domains/chat/tools/badges/background-task-metadata-dialog.es.js +1 -1
- 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 +3 -3
- package/dist/domains/chat/tools/badges/file-tree-badge.es.js +3 -3
- package/dist/domains/chat/tools/badges/observation-marker-badge.cjs.js +1 -1
- package/dist/domains/chat/tools/badges/observation-marker-badge.es.js +1 -1
- package/dist/domains/chat/tools/badges/observation-marker-details.cjs.js +3 -3
- package/dist/domains/chat/tools/badges/observation-marker-details.es.js +3 -3
- package/dist/domains/chat/tools/badges/observation-renderer.cjs.js +2 -2
- package/dist/domains/chat/tools/badges/observation-renderer.es.js +2 -2
- package/dist/domains/chat/tools/badges/sandbox-execution-badge.cjs.js +2 -2
- package/dist/domains/chat/tools/badges/sandbox-execution-badge.es.js +2 -2
- 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 +1 -1
- package/dist/domains/chat/tools/badges/workflow-badge.es.js +1 -1
- package/dist/domains/chat/tools/badges/workspace-link.cjs.js +1 -1
- package/dist/domains/chat/tools/badges/workspace-link.es.js +1 -1
- package/dist/domains/chat/tools/submit-plan-tool.cjs.js +2 -2
- package/dist/domains/chat/tools/submit-plan-tool.es.js +2 -2
- package/dist/domains/datasets/components/save-as-dataset-item-dialog.cjs.js +4 -4
- package/dist/domains/datasets/components/save-as-dataset-item-dialog.es.js +4 -4
- package/dist/domains/logs/components/log-data-panel.cjs.js +2 -2
- package/dist/domains/logs/components/log-data-panel.es.js +2 -2
- package/dist/domains/logs/components/logs-error-content.cjs.js +1 -1
- package/dist/domains/logs/components/logs-error-content.es.js +1 -1
- package/dist/domains/logs/components/logs-list-view.cjs.js +1 -1
- package/dist/domains/logs/components/logs-list-view.es.js +1 -1
- package/dist/domains/logs/components/no-logs-info.cjs.js +1 -1
- package/dist/domains/logs/components/no-logs-info.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/memory/components/observation-detail-view.cjs.js +3 -3
- package/dist/domains/memory/components/observation-detail-view.es.js +3 -3
- package/dist/domains/metrics/components/bar-list.cjs.js +1 -1
- package/dist/domains/metrics/components/bar-list.es.js +1 -1
- package/dist/domains/metrics/components/date-range-selector.cjs.js +1 -1
- package/dist/domains/metrics/components/date-range-selector.es.js +1 -1
- package/dist/domains/metrics/components/kpi-card-view.cjs.js +1 -1
- package/dist/domains/metrics/components/kpi-card-view.es.js +1 -1
- package/dist/domains/metrics/components/latency-card-view.cjs.js +8 -7
- package/dist/domains/metrics/components/latency-card-view.cjs.js.map +1 -1
- package/dist/domains/metrics/components/latency-card-view.es.js +7 -6
- package/dist/domains/metrics/components/latency-card-view.es.js.map +1 -1
- package/dist/domains/metrics/components/memory-card-view.cjs.js +7 -6
- package/dist/domains/metrics/components/memory-card-view.cjs.js.map +1 -1
- package/dist/domains/metrics/components/memory-card-view.es.js +6 -5
- package/dist/domains/metrics/components/memory-card-view.es.js.map +1 -1
- package/dist/domains/metrics/components/model-usage-cost-card-view.cjs.js +2 -2
- package/dist/domains/metrics/components/model-usage-cost-card-view.es.js +2 -2
- package/dist/domains/metrics/components/scores-card-view.cjs.js +8 -7
- package/dist/domains/metrics/components/scores-card-view.cjs.js.map +1 -1
- package/dist/domains/metrics/components/scores-card-view.es.js +7 -6
- package/dist/domains/metrics/components/scores-card-view.es.js.map +1 -1
- package/dist/domains/metrics/components/token-usage-by-agent-card-view.cjs.js +7 -6
- package/dist/domains/metrics/components/token-usage-by-agent-card-view.cjs.js.map +1 -1
- package/dist/domains/metrics/components/token-usage-by-agent-card-view.es.js +6 -5
- package/dist/domains/metrics/components/token-usage-by-agent-card-view.es.js.map +1 -1
- package/dist/domains/metrics/components/token-usage-timeline-card-view.cjs.js +8 -7
- package/dist/domains/metrics/components/token-usage-timeline-card-view.cjs.js.map +1 -1
- package/dist/domains/metrics/components/token-usage-timeline-card-view.es.js +7 -6
- package/dist/domains/metrics/components/token-usage-timeline-card-view.es.js.map +1 -1
- package/dist/domains/metrics/components/traces-volume-card-view.cjs.js +7 -6
- package/dist/domains/metrics/components/traces-volume-card-view.cjs.js.map +1 -1
- package/dist/domains/metrics/components/traces-volume-card-view.es.js +6 -5
- package/dist/domains/metrics/components/traces-volume-card-view.es.js.map +1 -1
- package/dist/domains/observability/components/add-trace-mocks-to-item-dialog.cjs.js +4 -4
- package/dist/domains/observability/components/add-trace-mocks-to-item-dialog.es.js +4 -4
- package/dist/domains/observability/components/trace-as-item-dialog.cjs.js +1 -1
- package/dist/domains/observability/components/trace-as-item-dialog.es.js +1 -1
- package/dist/domains/request-context/components/request-context-label.cjs.js +1 -1
- package/dist/domains/request-context/components/request-context-label.es.js +1 -1
- package/dist/domains/review/components/review-status-badge.cjs.js +1 -1
- package/dist/domains/review/components/review-status-badge.es.js +1 -1
- package/dist/domains/scores/components/score-as-item-dialog.cjs.js +1 -1
- package/dist/domains/scores/components/score-as-item-dialog.es.js +1 -1
- package/dist/domains/scores/components/score-data-panel.cjs.js +1 -1
- package/dist/domains/scores/components/score-data-panel.es.js +1 -1
- package/dist/domains/scores/components/span-scoring.cjs.js +3 -3
- package/dist/domains/scores/components/span-scoring.es.js +3 -3
- package/dist/domains/scores/components/trace-scores-tab.cjs.js +5 -4
- package/dist/domains/scores/components/trace-scores-tab.cjs.js.map +1 -1
- package/dist/domains/scores/components/trace-scores-tab.es.js +5 -4
- package/dist/domains/scores/components/trace-scores-tab.es.js.map +1 -1
- package/dist/domains/traces/components/feedback-thread.cjs.js +4 -4
- package/dist/domains/traces/components/feedback-thread.es.js +4 -4
- package/dist/domains/traces/components/no-traces-info.cjs.js +1 -1
- package/dist/domains/traces/components/no-traces-info.es.js +1 -1
- package/dist/domains/traces/components/span-data-panel-view.cjs.js +20 -15
- package/dist/domains/traces/components/span-data-panel-view.cjs.js.map +1 -1
- package/dist/domains/traces/components/span-data-panel-view.es.js +19 -14
- package/dist/domains/traces/components/span-data-panel-view.es.js.map +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-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 +2 -2
- package/dist/domains/traces/components/span-payload/span-payload-primitives.es.js +2 -2
- package/dist/domains/traces/components/span-payload/span-payload-processor.cjs.js +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 +3 -2
- package/dist/domains/traces/components/span-payload/span-payload-section.cjs.js.map +1 -1
- package/dist/domains/traces/components/span-payload/span-payload-section.es.js +2 -1
- package/dist/domains/traces/components/span-payload/span-payload-section.es.js.map +1 -1
- package/dist/domains/traces/components/span-payload/span-payload-tool.cjs.js +2 -2
- package/dist/domains/traces/components/span-payload/span-payload-tool.es.js +2 -2
- package/dist/domains/traces/components/span-payload/span-processor-attributes.cjs.js +3 -3
- package/dist/domains/traces/components/span-payload/span-processor-attributes.es.js +3 -3
- package/dist/domains/traces/components/span-summary-description.cjs.js +1 -1
- package/dist/domains/traces/components/span-summary-description.es.js +1 -1
- package/dist/domains/traces/components/span-timeline-row.cjs.js +1 -1
- package/dist/domains/traces/components/span-timeline-row.es.js +1 -1
- package/dist/domains/traces/components/span-token-usage.cjs.js +1 -1
- package/dist/domains/traces/components/span-token-usage.es.js +1 -1
- package/dist/domains/traces/components/span-type-legend.cjs.js +1 -1
- package/dist/domains/traces/components/span-type-legend.es.js +1 -1
- package/dist/domains/traces/components/thread-trace/thread-trace-details.cjs.js +5 -3
- package/dist/domains/traces/components/thread-trace/thread-trace-details.cjs.js.map +1 -1
- package/dist/domains/traces/components/thread-trace/thread-trace-details.es.js +5 -3
- package/dist/domains/traces/components/thread-trace/thread-trace-details.es.js.map +1 -1
- package/dist/domains/traces/components/thread-trace/thread-trace-list.cjs.js +3 -2
- package/dist/domains/traces/components/thread-trace/thread-trace-list.cjs.js.map +1 -1
- package/dist/domains/traces/components/thread-trace/thread-trace-list.es.js +3 -2
- package/dist/domains/traces/components/thread-trace/thread-trace-list.es.js.map +1 -1
- package/dist/domains/traces/components/thread-trace/thread-trace-messages.cjs.js +8 -16
- package/dist/domains/traces/components/thread-trace/thread-trace-messages.cjs.js.map +1 -1
- package/dist/domains/traces/components/thread-trace/thread-trace-messages.es.js +8 -15
- package/dist/domains/traces/components/thread-trace/thread-trace-messages.es.js.map +1 -1
- package/dist/domains/traces/components/thread-trace/thread-trace-root.cjs.js +2 -15
- package/dist/domains/traces/components/thread-trace/thread-trace-root.cjs.js.map +1 -1
- package/dist/domains/traces/components/thread-trace/thread-trace-root.es.js +2 -15
- package/dist/domains/traces/components/thread-trace/thread-trace-root.es.js.map +1 -1
- package/dist/domains/traces/components/thread-trace/thread-trace-row.cjs.js +26 -4
- package/dist/domains/traces/components/thread-trace/thread-trace-row.cjs.js.map +1 -1
- package/dist/domains/traces/components/thread-trace/thread-trace-row.es.js +26 -6
- package/dist/domains/traces/components/thread-trace/thread-trace-row.es.js.map +1 -1
- package/dist/domains/traces/components/thread-trace/thread-trace-span-panel.cjs.js +29 -24
- package/dist/domains/traces/components/thread-trace/thread-trace-span-panel.cjs.js.map +1 -1
- package/dist/domains/traces/components/thread-trace/thread-trace-span-panel.es.js +30 -25
- package/dist/domains/traces/components/thread-trace/thread-trace-span-panel.es.js.map +1 -1
- package/dist/domains/traces/components/thread-trace/thread-trace-spans.cjs.js +45 -45
- package/dist/domains/traces/components/thread-trace/thread-trace-spans.cjs.js.map +1 -1
- package/dist/domains/traces/components/thread-trace/thread-trace-spans.es.js +47 -47
- package/dist/domains/traces/components/thread-trace/thread-trace-spans.es.js.map +1 -1
- package/dist/domains/traces/components/thread-trace.cjs.js +2 -1
- package/dist/domains/traces/components/thread-trace.cjs.js.map +1 -1
- package/dist/domains/traces/components/thread-trace.es.js +4 -3
- package/dist/domains/traces/components/thread-trace.es.js.map +1 -1
- package/dist/domains/traces/components/thread-view-by-trace.cjs.js +43 -24
- package/dist/domains/traces/components/thread-view-by-trace.cjs.js.map +1 -1
- package/dist/domains/traces/components/thread-view-by-trace.es.js +46 -27
- package/dist/domains/traces/components/thread-view-by-trace.es.js.map +1 -1
- package/dist/domains/traces/components/thread-view-skeleton.cjs.js +28 -13
- package/dist/domains/traces/components/thread-view-skeleton.cjs.js.map +1 -1
- package/dist/domains/traces/components/thread-view-skeleton.es.js +28 -13
- package/dist/domains/traces/components/thread-view-skeleton.es.js.map +1 -1
- package/dist/domains/traces/components/timeline-name-col.cjs.js +5 -5
- package/dist/domains/traces/components/timeline-name-col.cjs.js.map +1 -1
- package/dist/domains/traces/components/timeline-name-col.es.js +5 -5
- package/dist/domains/traces/components/timeline-name-col.es.js.map +1 -1
- package/dist/domains/traces/components/timeline-timing-col.cjs.js +1 -1
- package/dist/domains/traces/components/timeline-timing-col.es.js +1 -1
- package/dist/domains/traces/components/trace-columns-menu.cjs.js +3 -3
- package/dist/domains/traces/components/trace-columns-menu.es.js +3 -3
- package/dist/domains/traces/components/trace-data-panel-view.cjs.js +72 -50
- 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 +72 -50
- 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-id-button.cjs.js +1 -1
- package/dist/domains/traces/components/trace-id-button.es.js +1 -1
- package/dist/domains/traces/components/trace-messages-panel.cjs.js +2 -16
- package/dist/domains/traces/components/trace-messages-panel.cjs.js.map +1 -1
- package/dist/domains/traces/components/trace-messages-panel.es.js +3 -17
- package/dist/domains/traces/components/trace-messages-panel.es.js.map +1 -1
- package/dist/domains/traces/components/trace-messages-skeleton.cjs.js +18 -15
- package/dist/domains/traces/components/trace-messages-skeleton.cjs.js.map +1 -1
- package/dist/domains/traces/components/trace-messages-skeleton.es.js +18 -15
- package/dist/domains/traces/components/trace-messages-skeleton.es.js.map +1 -1
- package/dist/domains/traces/components/trace-span-panel.cjs.js +77 -66
- package/dist/domains/traces/components/trace-span-panel.cjs.js.map +1 -1
- package/dist/domains/traces/components/trace-span-panel.es.js +78 -67
- package/dist/domains/traces/components/trace-span-panel.es.js.map +1 -1
- package/dist/domains/traces/components/trace-span-tree-skeleton.cjs.js +11 -13
- package/dist/domains/traces/components/trace-span-tree-skeleton.cjs.js.map +1 -1
- package/dist/domains/traces/components/trace-span-tree-skeleton.es.js +11 -13
- package/dist/domains/traces/components/trace-span-tree-skeleton.es.js.map +1 -1
- package/dist/domains/traces/components/trace-span-tree.cjs.js +1 -1
- package/dist/domains/traces/components/trace-span-tree.es.js +1 -1
- package/dist/domains/traces/components/trace-summary-description.cjs.js +2 -2
- package/dist/domains/traces/components/trace-summary-description.es.js +2 -2
- package/dist/domains/traces/components/trace-thread-item-view.cjs.js +2 -2
- package/dist/domains/traces/components/trace-thread-item-view.cjs.js.map +1 -1
- package/dist/domains/traces/components/trace-thread-item-view.es.js +2 -2
- package/dist/domains/traces/components/trace-thread-item-view.es.js.map +1 -1
- package/dist/domains/traces/components/trace-thread-panel.cjs.js +32 -21
- package/dist/domains/traces/components/trace-thread-panel.cjs.js.map +1 -1
- package/dist/domains/traces/components/trace-thread-panel.es.js +32 -21
- package/dist/domains/traces/components/trace-thread-panel.es.js.map +1 -1
- package/dist/domains/traces/components/trace-time-range-chip.cjs.js +2 -2
- package/dist/domains/traces/components/trace-time-range-chip.es.js +2 -2
- package/dist/domains/traces/components/traces-error-content.cjs.js +1 -1
- package/dist/domains/traces/components/traces-error-content.es.js +1 -1
- package/dist/domains/traces/components/traces-list-view.cjs.js +3 -3
- package/dist/domains/traces/components/traces-list-view.es.js +3 -3
- package/dist/domains/traces/components/traces-page-skeleton.cjs.js +2 -0
- package/dist/domains/traces/components/traces-page-skeleton.cjs.js.map +1 -1
- package/dist/domains/traces/components/traces-page-skeleton.es.js +2 -0
- package/dist/domains/traces/components/traces-page-skeleton.es.js.map +1 -1
- package/dist/domains/traces/hooks/use-branch.cjs.js +0 -3
- package/dist/domains/traces/hooks/use-branch.cjs.js.map +1 -1
- package/dist/domains/traces/hooks/use-branch.es.js +0 -3
- package/dist/domains/traces/hooks/use-branch.es.js.map +1 -1
- package/dist/domains/traces/hooks/use-trace-light-spans.cjs.js +0 -3
- package/dist/domains/traces/hooks/use-trace-light-spans.cjs.js.map +1 -1
- package/dist/domains/traces/hooks/use-trace-light-spans.es.js +0 -3
- package/dist/domains/traces/hooks/use-trace-light-spans.es.js.map +1 -1
- package/dist/domains/traces/hooks/use-trace-or-branch-spans.cjs.js.map +1 -1
- package/dist/domains/traces/hooks/use-trace-or-branch-spans.es.js.map +1 -1
- package/dist/domains/traces/hooks/use-trace-query.cjs.js +2 -0
- package/dist/domains/traces/hooks/use-trace-query.cjs.js.map +1 -1
- package/dist/domains/traces/hooks/use-trace-query.es.js +2 -0
- package/dist/domains/traces/hooks/use-trace-query.es.js.map +1 -1
- package/dist/domains/traces/hooks/use-trace-search.cjs.js +7 -2
- package/dist/domains/traces/hooks/use-trace-search.cjs.js.map +1 -1
- package/dist/domains/traces/hooks/use-trace-search.es.js +7 -2
- package/dist/domains/traces/hooks/use-trace-search.es.js.map +1 -1
- package/dist/domains/traces/hooks/use-trace-spans.cjs.js +1 -5
- package/dist/domains/traces/hooks/use-trace-spans.cjs.js.map +1 -1
- package/dist/domains/traces/hooks/use-trace-spans.es.js +1 -5
- package/dist/domains/traces/hooks/use-trace-spans.es.js.map +1 -1
- package/dist/domains/traces/utils/to-searchable-spans.cjs.js +0 -5
- package/dist/domains/traces/utils/to-searchable-spans.cjs.js.map +1 -1
- package/dist/domains/traces/utils/to-searchable-spans.es.js +1 -5
- package/dist/domains/traces/utils/to-searchable-spans.es.js.map +1 -1
- package/dist/domains/traces/utils.cjs.js +0 -1
- package/dist/domains/traces/utils.cjs.js.map +1 -1
- package/dist/domains/traces/utils.es.js +1 -1
- package/dist/domains/traces.cjs.js +0 -1
- package/dist/domains/traces.cjs.js.map +1 -1
- package/dist/domains/traces.es.js +1 -1
- package/dist/domains/workflows/components/workflow-combobox.cjs.js +1 -1
- package/dist/domains/workflows/components/workflow-combobox.es.js +1 -1
- package/dist/domains/workflows/components/workflow-entity-header.cjs.js +2 -2
- package/dist/domains/workflows/components/workflow-entity-header.es.js +2 -2
- package/dist/domains/workflows/components/workflow-step-detail.cjs.js +3 -3
- package/dist/domains/workflows/components/workflow-step-detail.es.js +3 -3
- 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 +3 -3
- package/dist/domains/workflows/components/workflows-list/workflows-list.es.js +3 -3
- package/dist/domains/workflows/runs/workflow-run-details.cjs.js +1 -1
- package/dist/domains/workflows/runs/workflow-run-details.es.js +1 -1
- package/dist/domains/workflows/runs/workflow-run-list.cjs.js +2 -2
- package/dist/domains/workflows/runs/workflow-run-list.es.js +2 -2
- 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.es.js +2 -2
- package/dist/domains/workflows/workflow/use-workflow-graph-runtime.cjs.js +2 -2
- package/dist/domains/workflows/workflow/use-workflow-graph-runtime.es.js +2 -2
- package/dist/domains/workflows/workflow/workflow-body-graph.cjs.js +2 -2
- package/dist/domains/workflows/workflow/workflow-body-graph.es.js +2 -2
- 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-mode-switch.cjs.js +1 -1
- package/dist/domains/workflows/workflow/workflow-debug-mode-switch.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 +1 -1
- package/dist/domains/workflows/workflow/workflow-graph-boundary.es.js +1 -1
- package/dist/domains/workflows/workflow/workflow-graph-inner.cjs.js +2 -2
- package/dist/domains/workflows/workflow/workflow-graph-inner.es.js +2 -2
- package/dist/domains/workflows/workflow/workflow-graph-node.cjs.js +2 -2
- package/dist/domains/workflows/workflow/workflow-graph-node.es.js +2 -2
- package/dist/domains/workflows/workflow/workflow-input-data.cjs.js +1 -1
- package/dist/domains/workflows/workflow/workflow-input-data.es.js +1 -1
- package/dist/domains/workflows/workflow/workflow-input-type-toggle.cjs.js +1 -1
- package/dist/domains/workflows/workflow/workflow-input-type-toggle.es.js +1 -1
- package/dist/domains/workflows/workflow/workflow-nested-graph.cjs.js +4 -4
- package/dist/domains/workflows/workflow/workflow-nested-graph.es.js +4 -4
- package/dist/domains/workflows/workflow/workflow-run-data.cjs.js +6 -5
- package/dist/domains/workflows/workflow/workflow-run-data.cjs.js.map +1 -1
- package/dist/domains/workflows/workflow/workflow-run-data.es.js +5 -4
- package/dist/domains/workflows/workflow/workflow-run-data.es.js.map +1 -1
- 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 +3 -3
- package/dist/domains/workflows/workflow/workflow-run-header.es.js +3 -3
- 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-steps-status.cjs.js +1 -1
- package/dist/domains/workflows/workflow/workflow-steps-status.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 +3 -3
- package/dist/domains/workflows/workflow/workflow-time-travel-form.es.js +3 -3
- 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-header.cjs.js +2 -2
- package/dist/domains/workflows/workflow/workflow-trigger-header.es.js +2 -2
- 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/frontmatter.cjs.js +13 -0
- package/dist/domains/workspace/components/frontmatter.cjs.js.map +1 -0
- package/dist/domains/workspace/components/frontmatter.d.ts +2 -0
- package/dist/domains/workspace/components/frontmatter.es.js +9 -0
- package/dist/domains/workspace/components/frontmatter.es.js.map +1 -0
- package/dist/domains/workspace/components/mount-icon.cjs.js +42 -0
- package/dist/domains/workspace/components/mount-icon.cjs.js.map +1 -0
- package/dist/domains/workspace/components/mount-icon.d.ts +2 -0
- package/dist/domains/workspace/components/mount-icon.es.js +38 -0
- package/dist/domains/workspace/components/mount-icon.es.js.map +1 -0
- package/dist/domains/workspace/components/use-workspace-context.cjs.js +16 -0
- package/dist/domains/workspace/components/use-workspace-context.cjs.js.map +1 -0
- package/dist/domains/workspace/components/use-workspace-context.d.ts +2 -0
- package/dist/domains/workspace/components/use-workspace-context.es.js +11 -0
- package/dist/domains/workspace/components/use-workspace-context.es.js.map +1 -0
- package/dist/domains/workspace/components/workspace-active-file.cjs.js +72 -0
- package/dist/domains/workspace/components/workspace-active-file.cjs.js.map +1 -0
- package/dist/domains/workspace/components/workspace-active-file.d.ts +2 -0
- package/dist/domains/workspace/components/workspace-active-file.es.js +67 -0
- package/dist/domains/workspace/components/workspace-active-file.es.js.map +1 -0
- package/dist/domains/workspace/components/workspace-add-skill-dialog.cjs.js +282 -0
- package/dist/domains/workspace/components/workspace-add-skill-dialog.cjs.js.map +1 -0
- package/dist/domains/workspace/components/workspace-add-skill-dialog.d.ts +2 -0
- package/dist/domains/workspace/components/workspace-add-skill-dialog.es.js +278 -0
- package/dist/domains/workspace/components/workspace-add-skill-dialog.es.js.map +1 -0
- package/dist/domains/workspace/components/workspace-add-skill.cjs.js +48 -0
- package/dist/domains/workspace/components/workspace-add-skill.cjs.js.map +1 -0
- package/dist/domains/workspace/components/workspace-add-skill.d.ts +2 -0
- package/dist/domains/workspace/components/workspace-add-skill.es.js +44 -0
- package/dist/domains/workspace/components/workspace-add-skill.es.js.map +1 -0
- package/dist/domains/workspace/components/workspace-context.cjs.js +88 -0
- package/dist/domains/workspace/components/workspace-context.cjs.js.map +1 -0
- package/dist/domains/workspace/components/workspace-context.d.ts +2 -0
- package/dist/domains/workspace/components/workspace-context.es.js +84 -0
- package/dist/domains/workspace/components/workspace-context.es.js.map +1 -0
- package/dist/domains/workspace/components/workspace-create-directory.cjs.js +68 -0
- package/dist/domains/workspace/components/workspace-create-directory.cjs.js.map +1 -0
- package/dist/domains/workspace/components/workspace-create-directory.d.ts +2 -0
- package/dist/domains/workspace/components/workspace-create-directory.es.js +64 -0
- package/dist/domains/workspace/components/workspace-create-directory.es.js.map +1 -0
- package/dist/domains/workspace/components/workspace-error.cjs.js +26 -0
- package/dist/domains/workspace/components/workspace-error.cjs.js.map +1 -0
- package/dist/domains/workspace/components/workspace-error.d.ts +2 -0
- package/dist/domains/workspace/components/workspace-error.es.js +22 -0
- package/dist/domains/workspace/components/workspace-error.es.js.map +1 -0
- package/dist/domains/workspace/components/workspace-markdown-preview.cjs.js +27 -0
- package/dist/domains/workspace/components/workspace-markdown-preview.cjs.js.map +1 -0
- package/dist/domains/workspace/components/workspace-markdown-preview.d.ts +2 -0
- package/dist/domains/workspace/components/workspace-markdown-preview.es.js +23 -0
- package/dist/domains/workspace/components/workspace-markdown-preview.es.js.map +1 -0
- package/dist/domains/workspace/components/workspace-parts.cjs.js +94 -0
- package/dist/domains/workspace/components/workspace-parts.cjs.js.map +1 -0
- package/dist/domains/workspace/components/workspace-parts.d.ts +2 -0
- package/dist/domains/workspace/components/workspace-parts.es.js +84 -0
- package/dist/domains/workspace/components/workspace-parts.es.js.map +1 -0
- package/dist/domains/workspace/components/workspace-search.cjs.js +117 -0
- package/dist/domains/workspace/components/workspace-search.cjs.js.map +1 -0
- package/dist/domains/workspace/components/workspace-search.d.ts +2 -0
- package/dist/domains/workspace/components/workspace-search.es.js +111 -0
- package/dist/domains/workspace/components/workspace-search.es.js.map +1 -0
- package/dist/domains/workspace/components/workspace-tree-view.cjs.js +34 -0
- package/dist/domains/workspace/components/workspace-tree-view.cjs.js.map +1 -0
- package/dist/domains/workspace/components/workspace-tree-view.d.ts +2 -0
- package/dist/domains/workspace/components/workspace-tree-view.es.js +30 -0
- package/dist/domains/workspace/components/workspace-tree-view.es.js.map +1 -0
- package/dist/domains/workspace/components/workspace-tree.cjs.js +245 -0
- package/dist/domains/workspace/components/workspace-tree.cjs.js.map +1 -0
- package/dist/domains/workspace/components/workspace-tree.d.ts +2 -0
- package/dist/domains/workspace/components/workspace-tree.es.js +241 -0
- package/dist/domains/workspace/components/workspace-tree.es.js.map +1 -0
- package/dist/domains/workspace/components/workspace.cjs.js +25 -0
- package/dist/domains/workspace/components/workspace.cjs.js.map +1 -0
- package/dist/domains/workspace/components/workspace.d.ts +2 -0
- package/dist/domains/workspace/components/workspace.es.js +21 -0
- package/dist/domains/workspace/components/workspace.es.js.map +1 -0
- package/dist/domains/workspace/file-type.cjs.js +25 -0
- package/dist/domains/workspace/file-type.cjs.js.map +1 -0
- package/dist/domains/workspace/file-type.d.ts +2 -0
- package/dist/domains/workspace/file-type.es.js +17 -0
- package/dist/domains/workspace/file-type.es.js.map +1 -0
- package/dist/domains/workspace/hooks/use-skills-sh.cjs.js +72 -0
- package/dist/domains/workspace/hooks/use-skills-sh.cjs.js.map +1 -0
- package/dist/domains/workspace/hooks/use-skills-sh.d.ts +2 -0
- package/dist/domains/workspace/hooks/use-skills-sh.es.js +65 -0
- package/dist/domains/workspace/hooks/use-skills-sh.es.js.map +1 -0
- package/dist/domains/workspace/hooks/use-workspace-directory.cjs.js +21 -0
- package/dist/domains/workspace/hooks/use-workspace-directory.cjs.js.map +1 -0
- package/dist/domains/workspace/hooks/use-workspace-directory.d.ts +2 -0
- package/dist/domains/workspace/hooks/use-workspace-directory.es.js +16 -0
- package/dist/domains/workspace/hooks/use-workspace-directory.es.js.map +1 -0
- package/dist/domains/workspace/hooks/use-workspace-file-content.cjs.js +22 -0
- package/dist/domains/workspace/hooks/use-workspace-file-content.cjs.js.map +1 -0
- package/dist/domains/workspace/hooks/use-workspace-file-content.d.ts +2 -0
- package/dist/domains/workspace/hooks/use-workspace-file-content.es.js +18 -0
- package/dist/domains/workspace/hooks/use-workspace-file-content.es.js.map +1 -0
- package/dist/domains/workspace/hooks/use-workspace-search.cjs.js +53 -0
- package/dist/domains/workspace/hooks/use-workspace-search.cjs.js.map +1 -0
- package/dist/domains/workspace/hooks/use-workspace-search.d.ts +2 -0
- package/dist/domains/workspace/hooks/use-workspace-search.es.js +49 -0
- package/dist/domains/workspace/hooks/use-workspace-search.es.js.map +1 -0
- package/dist/domains/workspace/path.cjs.js +17 -0
- package/dist/domains/workspace/path.cjs.js.map +1 -0
- package/dist/domains/workspace/path.d.ts +2 -0
- package/dist/domains/workspace/path.es.js +10 -0
- package/dist/domains/workspace/path.es.js.map +1 -0
- package/dist/domains/workspace.cjs.js +24 -0
- package/dist/domains/workspace.cjs.js.map +1 -0
- package/dist/domains/workspace.d.ts +2 -0
- package/dist/domains/workspace.es.js +9 -0
- package/dist/domains/workspace.es.js.map +1 -0
- package/dist/ee/signals/components/entity-index-compact-grid.cjs.js +2 -2
- package/dist/ee/signals/components/entity-index-compact-grid.es.js +2 -2
- package/dist/ee/signals/components/entity-index-list.cjs.js +4 -2
- package/dist/ee/signals/components/entity-index-list.cjs.js.map +1 -1
- package/dist/ee/signals/components/entity-index-list.es.js +4 -2
- package/dist/ee/signals/components/entity-index-list.es.js.map +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-detail.cjs.js +1 -1
- package/dist/ee/signals/components/trace-intelligence-entity-detail.es.js +1 -1
- package/dist/ee/signals/components/trace-intelligence-entity-index.cjs.js +4 -3
- 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 +4 -3
- package/dist/ee/signals/components/trace-intelligence-entity-index.es.js.map +1 -1
- package/dist/ee/signals/examples-pager.cjs.js +1 -1
- package/dist/ee/signals/examples-pager.es.js +1 -1
- package/dist/ee/signals/flow-card.cjs.js +1 -1
- package/dist/ee/signals/flow-card.es.js +1 -1
- package/dist/ee/signals/lifeline-row.cjs.js +1 -1
- package/dist/ee/signals/lifeline-row.es.js +1 -1
- package/dist/ee/signals/noise-detail-panel.cjs.js +1 -1
- package/dist/ee/signals/noise-detail-panel.es.js +1 -1
- package/dist/ee/signals/sankey-signals.cjs.js +4 -3
- package/dist/ee/signals/sankey-signals.cjs.js.map +1 -1
- package/dist/ee/signals/sankey-signals.es.js +3 -2
- package/dist/ee/signals/sankey-signals.es.js.map +1 -1
- package/dist/ee/signals/settings/signal-definition-form-dialog.cjs.js +3 -3
- package/dist/ee/signals/settings/signal-definition-form-dialog.es.js +3 -3
- package/dist/ee/signals/settings/trace-signal-settings.cjs.js +3 -3
- package/dist/ee/signals/settings/trace-signal-settings.es.js +3 -3
- package/dist/ee/signals/signal-delta-column.cjs.js +1 -1
- package/dist/ee/signals/signal-delta-column.es.js +1 -1
- package/dist/ee/signals/signal-lifelines.cjs.js +1 -1
- package/dist/ee/signals/signal-lifelines.es.js +1 -1
- 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-compare.cjs.js +1 -1
- package/dist/ee/signals/theme-compare.es.js +1 -1
- package/dist/ee/signals/theme-detail-panel.cjs.js +1 -1
- package/dist/ee/signals/theme-detail-panel.es.js +1 -1
- package/dist/ee/signals/theme-filter-banner.cjs.js +1 -1
- package/dist/ee/signals/theme-filter-banner.es.js +1 -1
- package/dist/ee/signals/theme-lifelines.cjs.js +1 -1
- package/dist/ee/signals/theme-lifelines.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/trace-intelligence-explainer.cjs.js +1 -1
- package/dist/ee/signals/trace-intelligence-explainer.es.js +1 -1
- package/dist/ee/signals/view-mode-tab.cjs.js +2 -2
- package/dist/ee/signals/view-mode-tab.es.js +2 -2
- package/dist/ee/topics/components/topic-trace-details-panel.cjs.js +2 -1
- package/dist/ee/topics/components/topic-trace-details-panel.cjs.js.map +1 -1
- package/dist/ee/topics/components/topic-trace-details-panel.es.js +2 -1
- package/dist/ee/topics/components/topic-trace-details-panel.es.js.map +1 -1
- package/dist/ee/topics/components/topic-trace-summary-list.cjs.js +2 -2
- package/dist/ee/topics/components/topic-trace-summary-list.es.js +2 -2
- package/dist/{entity-header-DEjkHoqj.cjs → entity-header-By57lpH8.cjs} +2 -2
- package/dist/{entity-header-DEjkHoqj.cjs.map → entity-header-By57lpH8.cjs.map} +1 -1
- package/dist/{entity-header-9qzr-3xQ.js → entity-header-DMjzE4Za.js} +2 -2
- package/dist/{entity-header-9qzr-3xQ.js.map → entity-header-DMjzE4Za.js.map} +1 -1
- package/dist/{field-BtvEQ68O.js → field-BiMIiq2Y.js} +3 -3
- package/dist/field-BiMIiq2Y.js.map +1 -0
- package/dist/{field-ip9xiOVa.cjs → field-BkeKcz_6.cjs} +3 -3
- package/dist/field-BkeKcz_6.cjs.map +1 -0
- package/dist/{field-error-id-4DYu4KZ2.cjs → field-error-id-4xiCVBJ_.cjs} +5 -5
- package/dist/field-error-id-4xiCVBJ_.cjs.map +1 -0
- package/dist/{field-error-id-BSQLcfHo.js → field-error-id-CSvLKtJE.js} +5 -5
- package/dist/field-error-id-CSvLKtJE.js.map +1 -0
- package/dist/{filter-bar-chip-Dmboyu1t.js → filter-bar-chip-CRejLco-.js} +2 -2
- package/dist/{filter-bar-chip-Dmboyu1t.js.map → filter-bar-chip-CRejLco-.js.map} +1 -1
- package/dist/{filter-bar-chip-BsWm7SQr.cjs → filter-bar-chip-Cr7kUN9G.cjs} +2 -2
- package/dist/{filter-bar-chip-BsWm7SQr.cjs.map → filter-bar-chip-Cr7kUN9G.cjs.map} +1 -1
- package/dist/hooks/use-fluid-hover.cjs.js +11 -0
- package/dist/hooks/use-fluid-hover.cjs.js.map +1 -1
- package/dist/hooks/use-fluid-hover.es.js +11 -0
- package/dist/hooks/use-fluid-hover.es.js.map +1 -1
- package/dist/{horizontal-bars-BSRESJsp.js → horizontal-bars-BL-GHeFh.js} +2 -2
- package/dist/{horizontal-bars-BSRESJsp.js.map → horizontal-bars-BL-GHeFh.js.map} +1 -1
- package/dist/{horizontal-bars-DRD7JkHL.cjs → horizontal-bars-D-rFCRbH.cjs} +2 -2
- package/dist/{horizontal-bars-DRD7JkHL.cjs.map → horizontal-bars-D-rFCRbH.cjs.map} +1 -1
- package/dist/icons/FileIcon.cjs.js +18 -0
- package/dist/icons/FileIcon.cjs.js.map +1 -0
- package/dist/icons/FileIcon.d.ts +2 -0
- package/dist/icons/FileIcon.es.js +14 -0
- package/dist/icons/FileIcon.es.js.map +1 -0
- package/dist/icons/SearchIcon.cjs.js +18 -0
- package/dist/icons/SearchIcon.cjs.js.map +1 -0
- package/dist/icons/SearchIcon.d.ts +2 -0
- package/dist/icons/SearchIcon.es.js +14 -0
- package/dist/icons/SearchIcon.es.js.map +1 -0
- package/dist/icons/TrashIcon.cjs.js +18 -0
- package/dist/icons/TrashIcon.cjs.js.map +1 -0
- package/dist/icons/TrashIcon.d.ts +2 -0
- package/dist/icons/TrashIcon.es.js +14 -0
- package/dist/icons/TrashIcon.es.js.map +1 -0
- package/dist/{input-group-wzirc-1k.js → input-group-D1XvzgI2.js} +10 -7
- package/dist/input-group-D1XvzgI2.js.map +1 -0
- package/dist/{input-group-BgCXLSRV.cjs → input-group-DBRe9V5t.cjs} +11 -6
- package/dist/input-group-DBRe9V5t.cjs.map +1 -0
- package/dist/layout/tabbed-container.cjs.js +11 -9
- package/dist/layout/tabbed-container.cjs.js.map +1 -1
- package/dist/layout/tabbed-container.es.js +9 -7
- package/dist/layout/tabbed-container.es.js.map +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/boolean-field.cjs.js +1 -1
- package/dist/lib/form/components/boolean-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/field-wrapper.cjs.js +1 -1
- package/dist/lib/form/components/field-wrapper.es.js +1 -1
- package/dist/lib/form/components/object-wrapper.cjs.js +1 -1
- package/dist/lib/form/components/object-wrapper.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/union-field.cjs.js +1 -1
- package/dist/lib/form/components/union-field.es.js +1 -1
- package/dist/{list-search-CTGQJCh1.cjs → list-search-CCHN2OMB.cjs} +2 -2
- package/dist/{list-search-CTGQJCh1.cjs.map → list-search-CCHN2OMB.cjs.map} +1 -1
- package/dist/{list-search-CmOCmTwL.js → list-search-DcACBmNB.js} +2 -2
- package/dist/{list-search-CmOCmTwL.js.map → list-search-DcACBmNB.js.map} +1 -1
- package/dist/{logs-data-list-B9CAqAHD.cjs → logs-data-list-BITdSK12.cjs} +4 -4
- package/dist/{logs-data-list-B9CAqAHD.cjs.map → logs-data-list-BITdSK12.cjs.map} +1 -1
- package/dist/{logs-data-list-DfzdzgXB.js → logs-data-list-PlH4_hgq.js} +4 -4
- package/dist/{logs-data-list-DfzdzgXB.js.map → logs-data-list-PlH4_hgq.js.map} +1 -1
- package/dist/{markdown-renderer-DPwN7Vtm.cjs → markdown-renderer-DRo-Hcuu.cjs} +2 -2
- package/dist/{markdown-renderer-DPwN7Vtm.cjs.map → markdown-renderer-DRo-Hcuu.cjs.map} +1 -1
- package/dist/{markdown-renderer-zvB6a8uj.js → markdown-renderer-XfWPF-B7.js} +2 -2
- package/dist/{markdown-renderer-zvB6a8uj.js.map → markdown-renderer-XfWPF-B7.js.map} +1 -1
- package/dist/{message-C1c5oZE7.cjs → message-DGDmsmOT.cjs} +2 -2
- package/dist/{message-C1c5oZE7.cjs.map → message-DGDmsmOT.cjs.map} +1 -1
- package/dist/{message-C7hocqft.js → message-DoxVrgBX.js} +2 -2
- package/dist/{message-C7hocqft.js.map → message-DoxVrgBX.js.map} +1 -1
- package/dist/{metrics-card-C1rTkbcn.js → metrics-card-DFEWxFkJ.js} +3 -3
- package/dist/{metrics-card-C1rTkbcn.js.map → metrics-card-DFEWxFkJ.js.map} +1 -1
- package/dist/{metrics-card-D7J9JDgn.cjs → metrics-card-xX9SHUpB.cjs} +3 -3
- package/dist/{metrics-card-D7J9JDgn.cjs.map → metrics-card-xX9SHUpB.cjs.map} +1 -1
- package/dist/{metrics-kpi-card-1hbihR2T.cjs → metrics-kpi-card-9L0j_oGY.cjs} +5 -14
- package/dist/metrics-kpi-card-9L0j_oGY.cjs.map +1 -0
- package/dist/{metrics-kpi-card-CiB88L41.js → metrics-kpi-card-DxcLqbDU.js} +5 -14
- package/dist/metrics-kpi-card-DxcLqbDU.js.map +1 -0
- package/dist/{metrics-line-chart-C3UMBQ38.js → metrics-line-chart-C9_EMuHK.js} +2 -2
- package/dist/{metrics-line-chart-C3UMBQ38.js.map → metrics-line-chart-C9_EMuHK.js.map} +1 -1
- package/dist/{metrics-line-chart-CjJxBbM-.cjs → metrics-line-chart-R-T_jyeP.cjs} +2 -2
- package/dist/{metrics-line-chart-CjJxBbM-.cjs.map → metrics-line-chart-R-T_jyeP.cjs.map} +1 -1
- package/dist/{metrics-line-chart-tooltip-DiXCgpik.cjs → metrics-line-chart-tooltip-BoG8nbkO.cjs} +2 -2
- package/dist/{metrics-line-chart-tooltip-DiXCgpik.cjs.map → metrics-line-chart-tooltip-BoG8nbkO.cjs.map} +1 -1
- package/dist/{metrics-line-chart-tooltip-mZXPH1yH.js → metrics-line-chart-tooltip-C3WAk3DN.js} +2 -2
- package/dist/{metrics-line-chart-tooltip-mZXPH1yH.js.map → metrics-line-chart-tooltip-C3WAk3DN.js.map} +1 -1
- package/dist/new/layout/page-header.cjs.js +1 -1
- package/dist/new/layout/page-header.es.js +1 -1
- package/dist/new/settings.cjs.js +2 -2
- package/dist/new/settings.es.js +2 -2
- package/dist/new/sidebar.cjs.js +1 -1
- package/dist/new/sidebar.es.js +1 -1
- package/dist/{notification-activity-CFR_b8eA.js → notification-activity-BDoleJAA.js} +4 -4
- package/dist/{notification-activity-CFR_b8eA.js.map → notification-activity-BDoleJAA.js.map} +1 -1
- package/dist/{notification-activity-Dk50wcE4.cjs → notification-activity-C_vZiswj.cjs} +4 -4
- package/dist/{notification-activity-Dk50wcE4.cjs.map → notification-activity-C_vZiswj.cjs.map} +1 -1
- package/dist/{page-header-DIS8V2TK.js → page-header-D5a7qrVc.js} +2 -2
- package/dist/{page-header-DIS8V2TK.js.map → page-header-D5a7qrVc.js.map} +1 -1
- package/dist/{page-header-C1WiOrTE.cjs → page-header-Dc2KSbnw.cjs} +2 -2
- package/dist/{page-header-C1WiOrTE.cjs.map → page-header-Dc2KSbnw.cjs.map} +1 -1
- package/dist/{plan-D8rM4i4S.cjs → plan-BBf7ONr7.cjs} +7 -6
- package/dist/{plan-D8rM4i4S.cjs.map → plan-BBf7ONr7.cjs.map} +1 -1
- package/dist/{plan-BtOryfz5.js → plan-BgvXKTEM.js} +6 -5
- package/dist/{plan-BtOryfz5.js.map → plan-BgvXKTEM.js.map} +1 -1
- package/dist/primitives/form-element.cjs.js +1 -1
- package/dist/primitives/form-element.cjs.js.map +1 -1
- package/dist/primitives/form-element.es.js +1 -1
- package/dist/primitives/form-element.es.js.map +1 -1
- package/dist/{reasoning-activity-6VkIbDT4.js → reasoning-activity-DTmKCDZ-.js} +3 -3
- package/dist/{reasoning-activity-6VkIbDT4.js.map → reasoning-activity-DTmKCDZ-.js.map} +1 -1
- package/dist/{reasoning-activity-DaXMgyr3.cjs → reasoning-activity-Dc6VbiMr.cjs} +3 -3
- package/dist/{reasoning-activity-DaXMgyr3.cjs.map → reasoning-activity-Dc6VbiMr.cjs.map} +1 -1
- package/dist/{relative-timestamp-BlmN8Vjn.cjs → relative-timestamp-Nnwtw7Rp.cjs} +2 -2
- package/dist/{relative-timestamp-BlmN8Vjn.cjs.map → relative-timestamp-Nnwtw7Rp.cjs.map} +1 -1
- package/dist/{relative-timestamp-Cnp4VeLp.js → relative-timestamp-Rn8mAobA.js} +2 -2
- package/dist/{relative-timestamp-Cnp4VeLp.js.map → relative-timestamp-Rn8mAobA.js.map} +1 -1
- package/dist/resize/panel-group.cjs.js +14 -2
- package/dist/resize/panel-group.cjs.js.map +1 -1
- package/dist/resize/panel-group.es.js +14 -2
- package/dist/resize/panel-group.es.js.map +1 -1
- package/dist/{search-input-BKXiYeed.js → search-input-63Y1_wgA.js} +3 -3
- package/dist/{search-input-BKXiYeed.js.map → search-input-63Y1_wgA.js.map} +1 -1
- package/dist/{search-input-T0orZ7Jf.cjs → search-input-CBhT3N4z.cjs} +3 -3
- package/dist/{search-input-T0orZ7Jf.cjs.map → search-input-CBhT3N4z.cjs.map} +1 -1
- package/dist/{section-Byml9qxH.cjs → section-C5r-Mtxk.cjs} +3 -3
- package/dist/{section-Byml9qxH.cjs.map → section-C5r-Mtxk.cjs.map} +1 -1
- package/dist/{section-DTooysg2.js → section-DYrbH35K.js} +3 -3
- package/dist/{section-DTooysg2.js.map → section-DYrbH35K.js.map} +1 -1
- package/dist/{select--ArpXYDc.js → select-CWxcmE3F.js} +2 -2
- package/dist/select-CWxcmE3F.js.map +1 -0
- package/dist/{select-DJQYAVcm.cjs → select-KV77JIvp.cjs} +2 -2
- package/dist/select-KV77JIvp.cjs.map +1 -0
- package/dist/{settings-row-B0jGFpVw.js → settings-row-Dc6ECXjj.js} +2 -2
- package/dist/{settings-row-B0jGFpVw.js.map → settings-row-Dc6ECXjj.js.map} +1 -1
- package/dist/{settings-row-Dt4WnnRf.cjs → settings-row-UPZXTcx1.cjs} +2 -2
- package/dist/{settings-row-Dt4WnnRf.cjs.map → settings-row-UPZXTcx1.cjs.map} +1 -1
- package/dist/{side-dialog-lQUx6B_M.cjs → side-dialog-CFTgnDXu.cjs} +2 -2
- package/dist/{side-dialog-lQUx6B_M.cjs.map → side-dialog-CFTgnDXu.cjs.map} +1 -1
- package/dist/{side-dialog-DZJc85m3.js → side-dialog-yvAvCday.js} +2 -2
- package/dist/{side-dialog-DZJc85m3.js.map → side-dialog-yvAvCday.js.map} +1 -1
- package/dist/{signal-activity-byCTRP86.cjs → signal-activity-BI-DRdjw.cjs} +4 -4
- package/dist/{signal-activity-byCTRP86.cjs.map → signal-activity-BI-DRdjw.cjs.map} +1 -1
- package/dist/{signal-activity-DW2ExjIp.js → signal-activity-_ChAbNsW.js} +4 -4
- package/dist/{signal-activity-DW2ExjIp.js.map → signal-activity-_ChAbNsW.js.map} +1 -1
- package/dist/{span-payload-primitives-CGamdu2t.js → span-payload-primitives-188dDV5s.js} +3 -3
- package/dist/{span-payload-primitives-CGamdu2t.js.map → span-payload-primitives-188dDV5s.js.map} +1 -1
- package/dist/{span-payload-primitives-SkL3U9hR.cjs → span-payload-primitives-DrKJXIc3.cjs} +3 -3
- package/dist/{span-payload-primitives-SkL3U9hR.cjs.map → span-payload-primitives-DrKJXIc3.cjs.map} +1 -1
- package/dist/src/domains/traces/components/span-data-panel-view.d.ts +3 -1
- package/dist/src/domains/traces/components/thread-trace/index.d.ts +23 -20
- package/dist/src/domains/traces/components/thread-trace/thread-trace-details.d.ts +1 -1
- package/dist/src/domains/traces/components/thread-trace/thread-trace-messages.d.ts +5 -15
- package/dist/src/domains/traces/components/thread-trace/thread-trace-root.d.ts +2 -2
- package/dist/src/domains/traces/components/thread-trace/thread-trace-row.d.ts +17 -2
- package/dist/src/domains/traces/components/thread-trace/thread-trace-span-panel.d.ts +3 -3
- package/dist/src/domains/traces/components/thread-trace/thread-trace-spans.d.ts +3 -4
- package/dist/src/domains/traces/components/thread-view-skeleton.d.ts +10 -4
- package/dist/src/domains/traces/components/trace-data-panel-view.d.ts +10 -3
- package/dist/src/domains/traces/components/trace-data-panel-view.stories.d.ts +7 -5
- package/dist/src/domains/traces/components/trace-messages-panel.d.ts +2 -10
- package/dist/src/domains/traces/components/trace-messages-skeleton.d.ts +9 -6
- package/dist/src/domains/traces/components/trace-span-panel.d.ts +1 -1
- package/dist/src/domains/traces/components/trace-span-tree-skeleton.d.ts +4 -6
- package/dist/src/domains/traces/components/trace-thread-panel.d.ts +7 -5
- package/dist/src/domains/traces/hooks/use-branch.d.ts +2 -2
- package/dist/src/domains/traces/hooks/use-trace-light-spans.d.ts +2 -2
- package/dist/src/domains/traces/hooks/use-trace-or-branch-spans.d.ts +2 -2
- package/dist/src/domains/traces/hooks/use-trace-query.d.ts +2 -0
- package/dist/src/domains/traces/hooks/use-trace-search.d.ts +11 -8
- package/dist/src/domains/traces/hooks/use-trace-spans.d.ts +1 -7
- package/dist/src/domains/traces/hooks/use-traces-list-source.d.ts +1 -0
- package/dist/src/domains/traces/utils/index.d.ts +1 -1
- package/dist/src/domains/traces/utils/to-searchable-spans.d.ts +2 -26
- package/dist/src/domains/workspace/components/frontmatter.d.ts +4 -0
- package/dist/src/domains/workspace/components/mount-icon.d.ts +6 -0
- package/dist/src/domains/workspace/components/use-workspace-context.d.ts +32 -0
- package/dist/src/domains/workspace/components/workspace-active-file.d.ts +13 -0
- package/dist/src/domains/workspace/components/workspace-add-skill-dialog.d.ts +39 -0
- package/dist/src/domains/workspace/components/workspace-add-skill.d.ts +10 -0
- package/dist/src/domains/workspace/components/workspace-context.d.ts +28 -0
- package/dist/src/domains/workspace/components/workspace-create-directory.d.ts +4 -0
- package/dist/src/domains/workspace/components/workspace-error.d.ts +5 -0
- package/dist/src/domains/workspace/components/workspace-markdown-preview.d.ts +4 -0
- package/dist/src/domains/workspace/components/workspace-parts.d.ts +25 -0
- package/dist/src/domains/workspace/components/workspace-search.d.ts +5 -0
- package/dist/src/domains/workspace/components/workspace-tree-view.d.ts +32 -0
- package/dist/src/domains/workspace/components/workspace-tree.d.ts +1 -0
- package/dist/src/domains/workspace/components/workspace.d.ts +18 -0
- package/dist/src/domains/workspace/file-type.d.ts +6 -0
- package/dist/src/domains/workspace/hooks/use-skills-sh.d.ts +51 -0
- package/dist/src/domains/workspace/hooks/use-workspace-directory.d.ts +17 -0
- package/dist/src/domains/workspace/hooks/use-workspace-file-content.d.ts +8 -0
- package/dist/src/domains/workspace/hooks/use-workspace-search.d.ts +11 -0
- package/dist/src/domains/workspace/index.d.ts +14 -0
- package/dist/src/domains/workspace/path.d.ts +6 -0
- package/dist/src/ds/components/Button/button.stories.d.ts +1 -0
- package/dist/src/ds/components/CollapsibleBox/collapsible-box.d.ts +5 -2
- package/dist/src/ds/components/CollapsibleBox/collapsible-box.stories.d.ts +1 -0
- package/dist/src/ds/components/Combobox/combobox-styles.d.ts +1 -1
- package/dist/src/ds/components/Command/command.stories.d.ts +1 -0
- package/dist/src/ds/components/InputGroup/input-group.d.ts +2 -0
- package/dist/src/ds/components/InputGroup/input-group.stories.d.ts +0 -1
- package/dist/src/ds/components/InputNumber/index.d.ts +1 -0
- package/dist/src/ds/components/InputNumber/input-number.d.ts +26 -0
- package/dist/src/ds/components/InputNumber/input-number.stories.d.ts +11 -0
- package/dist/src/ds/components/Tabs/tabs-context.d.ts +0 -1
- package/dist/src/ds/components/Tabs/tabs-list.d.ts +0 -7
- package/dist/src/ds/components/Tabs/tabs-root.d.ts +1 -1
- package/dist/src/ds/components/Tabs/tabs-tab.d.ts +3 -1
- package/dist/src/ds/components/Tabs/tabs.stories.d.ts +0 -1
- package/dist/src/ds/components/ThinkingLevel/index.d.ts +4 -0
- package/dist/src/ds/components/ThinkingLevel/thinking-level-picker.d.ts +17 -0
- package/dist/src/ds/components/ThinkingLevel/thinking-level-ramp.d.ts +9 -0
- package/dist/src/ds/components/ThinkingLevel/thinking-level-slider.d.ts +13 -0
- package/dist/src/ds/components/ThinkingLevel/thinking-level.stories.d.ts +14 -0
- package/dist/src/ds/components/ThinkingLevel/use-thinking-level-stop.d.ts +29 -0
- package/dist/src/ds/components/ai/transcript-divider/stories/transcript-divider.stories.d.ts +3 -0
- package/dist/src/ds/components/ai/transcript-divider/transcript-divider.d.ts +6 -1
- package/dist/src/ds/icons/FileIcon.d.ts +2 -0
- package/dist/src/ds/icons/SearchIcon.d.ts +2 -0
- package/dist/src/ds/icons/TrashIcon.d.ts +2 -0
- package/dist/src/ds/icons/index.d.ts +3 -0
- package/dist/src/ds/layout/tabbed-container/tabbed-container-root.d.ts +2 -1
- package/dist/src/ds/tokens/fonts.d.ts +1 -1
- package/dist/src/lib/resize/panel-group.d.ts +3 -1
- package/dist/style.css +270 -121
- package/dist/{tabs-content-DnscxcLI.cjs → tabs-content-DfH1hhpU.cjs} +3 -3
- package/dist/{tabs-content-DnscxcLI.cjs.map → tabs-content-DfH1hhpU.cjs.map} +1 -1
- package/dist/{tabs-content-CwbkTutf.js → tabs-content-OWF8un_n.js} +2 -2
- package/dist/{tabs-content-CwbkTutf.js.map → tabs-content-OWF8un_n.js.map} +1 -1
- package/dist/tabs-context-Cbuw7i0u.js +7 -0
- package/dist/tabs-context-Cbuw7i0u.js.map +1 -0
- package/dist/tabs-context-pnspPkI-.cjs +10 -0
- package/dist/tabs-context-pnspPkI-.cjs.map +1 -0
- package/dist/{tabs-root-C-ePF1y9.cjs → tabs-list-Tqj36HIL.cjs} +10 -43
- package/dist/tabs-list-Tqj36HIL.cjs.map +1 -0
- package/dist/{tabs-root-lrZZ3KwH.js → tabs-list-tLx5fgP0.js} +12 -44
- package/dist/tabs-list-tLx5fgP0.js.map +1 -0
- package/dist/tabs-root-BbzhUZl4.js +40 -0
- package/dist/tabs-root-BbzhUZl4.js.map +1 -0
- package/dist/tabs-root-Hkt7A6oq.cjs +42 -0
- package/dist/tabs-root-Hkt7A6oq.cjs.map +1 -0
- package/dist/tabs-root.css +0 -70
- package/dist/{tabs-tab-BmIBFifi.cjs → tabs-tab-C-C2vX-D.cjs} +10 -7
- package/dist/tabs-tab-C-C2vX-D.cjs.map +1 -0
- package/dist/{tabs-tab-DoPSW-1s.js → tabs-tab-ClLIOGiC.js} +11 -6
- package/dist/tabs-tab-ClLIOGiC.js.map +1 -0
- package/dist/{text-and-icon-CuBm-Wjm.js → text-and-icon-Bo6NLLBl.js} +2 -2
- package/dist/{text-and-icon-CuBm-Wjm.js.map → text-and-icon-Bo6NLLBl.js.map} +1 -1
- package/dist/{text-and-icon-4eVhfmbb.cjs → text-and-icon-CvakH4YL.cjs} +2 -2
- package/dist/{text-and-icon-4eVhfmbb.cjs.map → text-and-icon-CvakH4YL.cjs.map} +1 -1
- package/dist/{thread-list-BTpezI4f.js → thread-list-D2zSEQWK.js} +2 -2
- package/dist/{thread-list-BTpezI4f.js.map → thread-list-D2zSEQWK.js.map} +1 -1
- package/dist/{thread-list-Drcptd4x.cjs → thread-list-DKBwiGfX.cjs} +2 -2
- package/dist/{thread-list-Drcptd4x.cjs.map → thread-list-DKBwiGfX.cjs.map} +1 -1
- package/dist/{time-picker-KE48KlpH.cjs → time-picker-Uz05Y0qU.cjs} +2 -2
- package/dist/{time-picker-KE48KlpH.cjs.map → time-picker-Uz05Y0qU.cjs.map} +1 -1
- package/dist/{time-picker-DRSAkFuj.js → time-picker-eQkyOP4X.js} +2 -2
- package/dist/{time-picker-DRSAkFuj.js.map → time-picker-eQkyOP4X.js.map} +1 -1
- package/dist/tokens.cjs.js +3 -0
- package/dist/tokens.cjs.js.map +1 -1
- package/dist/tokens.es.js +3 -0
- package/dist/tokens.es.js.map +1 -1
- package/dist/{tool-call-arguments-CtUKj7IB.js → tool-call-arguments-Cm5qfywz.js} +2 -2
- package/dist/{tool-call-arguments-CtUKj7IB.js.map → tool-call-arguments-Cm5qfywz.js.map} +1 -1
- package/dist/{tool-call-arguments-BemKsB9v.cjs → tool-call-arguments-cML2FFBk.cjs} +2 -2
- package/dist/{tool-call-arguments-BemKsB9v.cjs.map → tool-call-arguments-cML2FFBk.cjs.map} +1 -1
- package/dist/{tool-call-group-D_ioE9hT.cjs → tool-call-group-CALHT0zr.cjs} +3 -3
- package/dist/{tool-call-group-D_ioE9hT.cjs.map → tool-call-group-CALHT0zr.cjs.map} +1 -1
- package/dist/{tool-call-group-ZuYxpyDs.js → tool-call-group-UoMplOy2.js} +3 -3
- package/dist/{tool-call-group-ZuYxpyDs.js.map → tool-call-group-UoMplOy2.js.map} +1 -1
- package/dist/{traces-data-list-Dd8vMPQK.cjs → traces-data-list-D-wz-Je3.cjs} +5 -5
- package/dist/{traces-data-list-Dd8vMPQK.cjs.map → traces-data-list-D-wz-Je3.cjs.map} +1 -1
- package/dist/{traces-data-list-Fvl8mlih.js → traces-data-list-DmCgejAx.js} +5 -5
- package/dist/{traces-data-list-Fvl8mlih.js.map → traces-data-list-DmCgejAx.js.map} +1 -1
- package/dist/transcript-divider-273Bsdjs.cjs +30 -0
- package/dist/transcript-divider-273Bsdjs.cjs.map +1 -0
- package/dist/transcript-divider-CPIo8NUj.js +28 -0
- package/dist/transcript-divider-CPIo8NUj.js.map +1 -0
- package/dist/tree-DOVwqiSm.cjs +493 -0
- package/dist/tree-DOVwqiSm.cjs.map +1 -0
- package/dist/tree-DixCN7B0.js +472 -0
- package/dist/tree-DixCN7B0.js.map +1 -0
- package/dist/use-collapsible-box-B0t2_SvP.js +20 -0
- package/dist/use-collapsible-box-B0t2_SvP.js.map +1 -0
- package/dist/use-collapsible-box-BI80L4h_.cjs +23 -0
- package/dist/use-collapsible-box-BI80L4h_.cjs.map +1 -0
- package/dist/{use-workflow-graph-runtime-JQwLwNBD.js → use-workflow-graph-runtime-IZ-er4hs.js} +4 -4
- package/dist/{use-workflow-graph-runtime-JQwLwNBD.js.map → use-workflow-graph-runtime-IZ-er4hs.js.map} +1 -1
- package/dist/{use-workflow-graph-runtime-BNAtEa06.cjs → use-workflow-graph-runtime-t17K6Hkf.cjs} +4 -4
- package/dist/{use-workflow-graph-runtime-BNAtEa06.cjs.map → use-workflow-graph-runtime-t17K6Hkf.cjs.map} +1 -1
- package/dist/{workflow-condition-card-BjEAp0t6.cjs → workflow-condition-card-B_oDiQ6I.cjs} +3 -3
- package/dist/{workflow-condition-card-BjEAp0t6.cjs.map → workflow-condition-card-B_oDiQ6I.cjs.map} +1 -1
- package/dist/{workflow-condition-card-3J-As62x.js → workflow-condition-card-CLyskv_B.js} +3 -3
- package/dist/{workflow-condition-card-3J-As62x.js.map → workflow-condition-card-CLyskv_B.js.map} +1 -1
- package/dist/{workflow-data-edge-view-C4nbA2Fa.js → workflow-data-edge-view-JmkSlDp1.js} +2 -2
- package/dist/{workflow-data-edge-view-C4nbA2Fa.js.map → workflow-data-edge-view-JmkSlDp1.js.map} +1 -1
- package/dist/{workflow-data-edge-view-aHAZkZOH.cjs → workflow-data-edge-view-aNTgHQUk.cjs} +2 -2
- package/dist/{workflow-data-edge-view-aHAZkZOH.cjs.map → workflow-data-edge-view-aNTgHQUk.cjs.map} +1 -1
- package/dist/{workflow-debug-controls-tty6gLX2.js → workflow-debug-controls-CQc8ljAI.js} +3 -3
- package/dist/{workflow-debug-controls-tty6gLX2.js.map → workflow-debug-controls-CQc8ljAI.js.map} +1 -1
- package/dist/{workflow-debug-controls-VbxiluNZ.cjs → workflow-debug-controls-WXT05idC.cjs} +3 -3
- package/dist/{workflow-debug-controls-VbxiluNZ.cjs.map → workflow-debug-controls-WXT05idC.cjs.map} +1 -1
- package/dist/{workflow-edge-data-button-2aIkzgev.js → workflow-edge-data-button-B7bM7UqW.js} +2 -2
- package/dist/{workflow-edge-data-button-2aIkzgev.js.map → workflow-edge-data-button-B7bM7UqW.js.map} +1 -1
- package/dist/{workflow-edge-data-button-BFNO-TRL.cjs → workflow-edge-data-button-CHoNrfef.cjs} +2 -2
- package/dist/{workflow-edge-data-button-BFNO-TRL.cjs.map → workflow-edge-data-button-CHoNrfef.cjs.map} +1 -1
- package/package.json +10 -10
- package/theme/colors.css +1 -1
- package/theme/typography.css +19 -2
- package/dist/Badge-D3EctKQo.cjs.map +0 -1
- package/dist/Badge-DmOqFpXW.js.map +0 -1
- package/dist/Txt-BP1SRHmL.js.map +0 -1
- package/dist/Txt-DPmEpNbp.cjs.map +0 -1
- package/dist/combobox-styles-mbcWlNZQ.js.map +0 -1
- package/dist/combobox-styles-qL3FSgmU.cjs.map +0 -1
- package/dist/command-Bm0VcX7X.cjs.map +0 -1
- package/dist/command-DFin7kHN.js.map +0 -1
- package/dist/data-panel-CbomKGJt.js.map +0 -1
- package/dist/data-panel-o-QLWuFV.cjs.map +0 -1
- package/dist/field-BtvEQ68O.js.map +0 -1
- package/dist/field-error-id-4DYu4KZ2.cjs.map +0 -1
- package/dist/field-error-id-BSQLcfHo.js.map +0 -1
- package/dist/field-ip9xiOVa.cjs.map +0 -1
- package/dist/input-group-BgCXLSRV.cjs.map +0 -1
- package/dist/input-group-wzirc-1k.js.map +0 -1
- package/dist/metrics-kpi-card-1hbihR2T.cjs.map +0 -1
- package/dist/metrics-kpi-card-CiB88L41.js.map +0 -1
- package/dist/select--ArpXYDc.js.map +0 -1
- package/dist/select-DJQYAVcm.cjs.map +0 -1
- package/dist/tabs-root-C-ePF1y9.cjs.map +0 -1
- package/dist/tabs-root-lrZZ3KwH.js.map +0 -1
- package/dist/tabs-tab-BmIBFifi.cjs.map +0 -1
- package/dist/tabs-tab-DoPSW-1s.js.map +0 -1
- package/dist/use-collapsible-box-CCvsF_a9.js +0 -54
- package/dist/use-collapsible-box-CCvsF_a9.js.map +0 -1
- package/dist/use-collapsible-box-CbQOkokQ.cjs +0 -58
- package/dist/use-collapsible-box-CbQOkokQ.cjs.map +0 -1
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"field-ip9xiOVa.cjs","sources":["../src/ds/components/Field/field.tsx"],"sourcesContent":["import { Field as FieldPrimitive } from '@base-ui/react/field';\nimport { Fieldset as FieldsetPrimitive } from '@base-ui/react/fieldset';\nimport { CircleAlertIcon } from 'lucide-react';\nimport * as React from 'react';\n\nimport { FieldAriaContext, useFieldAriaIds } from './field-control-aria';\nimport { Icon } from '@/ds/icons/Icon';\nimport { cn } from '@/lib/utils';\n\ntype FieldProps = Omit<FieldPrimitive.Root.Props, 'className'> & {\n className?: string;\n orientation?: 'vertical' | 'horizontal' | 'responsive';\n};\n\nconst orientationClassName = {\n vertical: 'grid gap-2',\n horizontal: 'flex items-center gap-2 has-[>[data-slot=field-label]:first-child]:justify-between',\n responsive: 'flex flex-col gap-2 sm:flex-row sm:items-center',\n} satisfies Record<NonNullable<FieldProps['orientation']>, string>;\n\nfunction Field({ className, orientation = 'vertical', invalid = false, ...props }: FieldProps) {\n const id = React.useId();\n const [hasDescription, setHasDescription] = React.useState(false);\n const ariaIds = React.useMemo(\n () => ({\n labelId: `${id}-label`,\n descriptionId: `${id}-description`,\n errorId: `${id}-error`,\n controlId: `${id}-control`,\n invalid,\n hasDescription,\n setHasDescription,\n }),\n [id, invalid, hasDescription],\n );\n\n return (\n <FieldAriaContext.Provider value={ariaIds}>\n <FieldPrimitive.Root\n invalid={invalid}\n data-slot=\"field\"\n data-orientation={orientation}\n className={cn('min-w-0 text-foreground', orientationClassName[orientation], className)}\n {...props}\n />\n </FieldAriaContext.Provider>\n );\n}\n\ntype FieldContentProps = React.ComponentProps<'div'>;\n\nfunction FieldContent({ className, ...props }: FieldContentProps) {\n return <div data-slot=\"field-content\" className={cn('grid min-w-0 flex-1 gap-2', className)} {...props} />;\n}\n\ntype FieldItemProps = Omit<FieldPrimitive.Item.Props, 'className'> & {\n className?: string;\n};\n\nfunction FieldItem({ className, ...props }: FieldItemProps) {\n const isInsideField = useFieldAriaIds() !== null;\n const ItemScope = isInsideField ? FieldPrimitive.Item : FieldPrimitive.Root;\n\n return (\n <FieldAriaContext.Provider value={null}>\n <ItemScope data-slot=\"field-item\" className={cn('flex min-w-0 items-center gap-2', className)} {...props} />\n </FieldAriaContext.Provider>\n );\n}\n\nfunction RequiredMark() {\n return (\n <>\n <span aria-hidden className=\"ml-0.5 text-destructive-foreground in-data-disabled:text-muted-foreground\">\n *\n </span>{' '}\n <span className=\"sr-only\">(required)</span>\n </>\n );\n}\n\ntype FieldLabelProps = Omit<FieldPrimitive.Label.Props, 'className' | 'id'> & {\n className?: string;\n required?: boolean;\n size?: 'smaller' | 'default' | 'bigger';\n};\n\nfunction FieldLabel({ className, required = false, size = 'default', children, onClick, ...props }: FieldLabelProps) {\n const field = useFieldAriaIds();\n\n const focusManualControl: FieldLabelProps['onClick'] = event => {\n onClick?.(event);\n if (!field || event.defaultPrevented) return;\n event.currentTarget.ownerDocument.getElementById(field.controlId)?.focus();\n };\n\n return (\n <FieldPrimitive.Label\n id={field?.labelId}\n data-slot=\"field-label\"\n className={cn(\n 'inline-flex shrink-0 items-center text-label text-foreground data-disabled:text-muted-foreground',\n 'not-data-disabled:has-[[role=checkbox],[role=switch],[role=radio]]:cursor-pointer',\n 'not-data-disabled:[:is([data-slot=field],[data-slot=field-item]):has(>[role=checkbox],>[role=switch],>[role=radio])_&]:cursor-pointer',\n 'data-disabled:cursor-not-allowed',\n size === 'smaller' && 'text-column',\n size === 'bigger' && 'text-body',\n className,\n )}\n onClick={focusManualControl}\n {...props}\n >\n {children}\n {required ? <RequiredMark /> : null}\n </FieldPrimitive.Label>\n );\n}\n\ntype FieldDescriptionProps = Omit<FieldPrimitive.Description.Props, 'className' | 'id'> & {\n className?: string;\n};\n\nfunction FieldDescription({ className, ...props }: FieldDescriptionProps) {\n const field = useFieldAriaIds();\n const setHasDescription = field?.setHasDescription;\n\n React.useEffect(() => {\n if (!setHasDescription) return;\n setHasDescription(true);\n return () => setHasDescription(false);\n }, [setHasDescription]);\n\n return (\n <FieldPrimitive.Description\n id={field?.descriptionId}\n data-slot=\"field-description\"\n className={cn('-mt-1 text-caption text-muted-foreground', className)}\n {...props}\n />\n );\n}\n\ntype FieldErrorProps = Omit<FieldPrimitive.Error.Props, 'className' | 'match' | 'render'> & {\n className?: string;\n};\n\nconst fieldErrorClassName = '-mt-1 flex gap-1 text-caption text-destructive-foreground';\n\nfunction FieldErrorIcon() {\n return (\n <Icon size=\"xs\" className=\"mt-0.75 shrink-0\" aria-hidden>\n <CircleAlertIcon />\n </Icon>\n );\n}\n\nfunction FieldError({ className, children, ...props }: FieldErrorProps) {\n const field = useFieldAriaIds();\n\n if (children) {\n return (\n <FieldPrimitive.Error\n key=\"external\"\n id={field?.errorId}\n match\n role=\"alert\"\n data-slot=\"field-error\"\n className={cn(fieldErrorClassName, className)}\n {...props}\n >\n <FieldErrorIcon />\n <span className=\"min-w-0\">{children}</span>\n </FieldPrimitive.Error>\n );\n }\n\n return (\n <FieldPrimitive.Error\n key=\"native\"\n id={field?.errorId}\n role=\"alert\"\n data-slot=\"field-error\"\n className={cn(fieldErrorClassName, className)}\n {...props}\n render={({ children: message, ...errorProps }) => (\n <div {...errorProps}>\n <FieldErrorIcon />\n <span className=\"min-w-0\">{message}</span>\n </div>\n )}\n />\n );\n}\n\ntype FieldsetProps = Omit<FieldsetPrimitive.Root.Props, 'className'> & {\n className?: string;\n};\n\nfunction Fieldset({ className, ...props }: FieldsetProps) {\n return (\n <FieldsetPrimitive.Root\n data-slot=\"fieldset\"\n className={cn('m-0 grid min-w-0 gap-3 border-0 p-0', className)}\n {...props}\n />\n );\n}\n\ntype FieldsetLegendProps = Omit<FieldsetPrimitive.Legend.Props, 'className'> & {\n className?: string;\n required?: boolean;\n};\n\nfunction FieldsetLegend({ className, required = false, children, ...props }: FieldsetLegendProps) {\n return (\n <FieldsetPrimitive.Legend\n data-slot=\"fieldset-legend\"\n className={cn('text-label text-foreground data-disabled:text-muted-foreground', className)}\n {...props}\n >\n {children}\n {required ? <RequiredMark /> : null}\n </FieldsetPrimitive.Legend>\n );\n}\n\nexport { Field, FieldContent, FieldItem, FieldLabel, FieldDescription, FieldError, Fieldset, FieldsetLegend };\nexport type {\n FieldProps,\n FieldContentProps,\n FieldItemProps,\n FieldLabelProps,\n FieldDescriptionProps,\n FieldErrorProps,\n FieldsetProps,\n FieldsetLegendProps,\n};\n"],"names":["React","jsx","FieldAriaContext","FieldPrimitive","cn","useFieldAriaIds","jsxs","Fragment","field","Icon","CircleAlertIcon","FieldsetPrimitive"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"input-group-BgCXLSRV.cjs","sources":["../src/ds/components/InputGroup/input-group.tsx"],"sourcesContent":["import { Input as InputPrimitive } from '@base-ui/react/input';\nimport { cva } from 'class-variance-authority';\nimport type { VariantProps } from 'class-variance-authority';\nimport * as React from 'react';\n\nimport { Button } from '@/ds/components/Button';\nimport type { ButtonProps } from '@/ds/components/Button/Button';\nimport { keepOwnAccessibleName } from '@/ds/components/Field/field-control-aria';\nimport { ControlSizeContext, controlHeight } from '@/ds/primitives/control-size';\nimport type { ControlSize } from '@/ds/primitives/control-size';\nimport {\n deprecatedErrorAria,\n fieldErrorRimWithin,\n inputSurfaceAndFocusWithinStyle,\n} from '@/ds/primitives/form-element';\nimport { TextareaControl } from '@/ds/primitives/textarea-control';\nimport { cn } from '@/lib/utils';\n\n// Size flows down as `data-size` on the named group root (`group/input-group`), read by the\n// control through `group-data-[size=…]` variants — no prop drilling. The one context read is\n// upward: a wrapper that owns the rung (ButtonsGroup) hands it to the field.\n\nconst inputGroupBaseClassName = cn(\n // `flex-1` (not `min-w-0`) lets the root fill a flex row while keeping its content-floor\n // so it never collapses to 0. `items-center` centres the control: it carries its own\n // h-form-* (2px taller than the root's content box), so stretch would push its text low\n // / overflow the bottom border, while centring overlaps the (transparent) borders cleanly.\n 'group/input-group relative flex w-full flex-1 items-center',\n // The wrapper owns its control's width — a bare control has no width of its own,\n // so the group is the one that decides the input fills the remaining space.\n '[&>[data-slot=input-group-control]]:min-w-0 [&>[data-slot=input-group-control]]:flex-1',\n 'text-foreground',\n 'has-[:disabled]:cursor-not-allowed has-[:disabled]:text-muted-foreground',\n // Height is on the root (border-box) so the group matches a same-size sibling control.\n // Auto height when vertical (block-* addon) or wrapping a textarea.\n 'has-[>[data-align=block-start]]:h-auto has-[>[data-align=block-start]]:flex-col',\n 'has-[>[data-align=block-end]]:h-auto has-[>[data-align=block-end]]:flex-col',\n 'has-[textarea]:h-auto',\n 'has-[>[data-align=inline-start]]:[&>[data-slot=input-group-control]]:pl-0',\n 'has-[>[data-align=inline-end]]:[&>[data-slot=input-group-control]]:pr-0',\n // In flex-col, flex-1 zeroes the control's height; force flex-none + w-full instead.\n 'has-[>[data-align=block-start]]:[&>[data-slot=input-group-control]]:w-full has-[>[data-align=block-start]]:[&>[data-slot=input-group-control]]:flex-none',\n 'has-[>[data-align=block-end]]:[&>[data-slot=input-group-control]]:w-full has-[>[data-align=block-end]]:[&>[data-slot=input-group-control]]:flex-none',\n);\n\nconst inputGroupRoundedTextareaClassName = cn(\n // Pill (rounded-full) only fits single-line inline shapes. Fall back to rounded-xl\n // whenever the group goes vertical (block-* addon) or wraps a textarea.\n 'has-[>[data-align=block-start]]:rounded-xl',\n 'has-[>[data-align=block-end]]:rounded-xl',\n 'has-[textarea]:rounded-xl',\n);\n\n// A group wears the field material — the same `bg-card` plus rim an Input wears — so a\n// group and a bare field beside it are one surface. Its states move the rim, and they\n// read the nested control's focus (`focus-within`) because the wrapper never takes focus\n// itself. There is no second look: a transparent `outline` group existed alongside this\n// one and only ever produced two boundary languages for the same control, which is why\n// four of its call sites had wrapped it in a hand-made `bg-card rounded-full` div to get\n// the material back.\nconst inputGroupClassName = cn(\n inputGroupBaseClassName,\n 'rounded-full',\n inputSurfaceAndFocusWithinStyle,\n fieldErrorRimWithin,\n inputGroupRoundedTextareaClassName,\n);\n\nexport type InputGroupProps = React.ComponentProps<'div'> & {\n size?: ControlSize;\n};\n\nfunction InputGroup({ className, size, ...props }: InputGroupProps) {\n // A wrapper's rung wins over the field's own: inside a ButtonsGroup the group owns the\n // height of every segment, so a field that kept its own type scale would sit at one rung\n // and read at another.\n const groupSize = React.useContext(ControlSizeContext);\n const resolved = groupSize ?? size ?? 'md';\n return (\n <div\n role=\"group\"\n data-slot=\"input-group\"\n data-size={resolved}\n className={cn(inputGroupClassName, controlHeight[resolved], className)}\n {...props}\n />\n );\n}\n\nconst inputGroupControlTextBySize = cn(\n 'group-data-[size=sm]/input-group:text-caption',\n 'group-data-[size=md]/input-group:text-body-sm',\n 'group-data-[size=lg]/input-group:text-body',\n);\n\nconst inputGroupAddonVariants = cva(\n cn(\n 'flex items-center justify-center gap-2 text-muted-foreground select-none',\n inputGroupControlTextBySize,\n 'group-has-[:disabled]/input-group:text-muted-foreground',\n \"[&>svg:not([class*='size-'])]:size-4\",\n ),\n {\n variants: {\n align: {\n 'inline-start': 'order-first pr-1 pl-3 has-[>button]:pl-1',\n 'inline-end': 'order-last pr-3 pl-1 has-[>button]:pr-1',\n 'block-start': 'order-first w-full justify-start border-b border-border px-3 pt-2 pb-1',\n 'block-end': 'order-last w-full justify-start border-t border-border px-3 pt-1 pb-2',\n },\n },\n defaultVariants: {\n align: 'inline-start',\n },\n },\n);\n\nexport type InputGroupAddonProps = React.ComponentProps<'div'> & VariantProps<typeof inputGroupAddonVariants>;\n\nfunction InputGroupAddon({ className, align = 'inline-start', onClick, ...props }: InputGroupAddonProps) {\n return (\n <div\n role=\"group\"\n data-slot=\"input-group-addon\"\n data-align={align}\n className={cn(inputGroupAddonVariants({ align }), className)}\n onClick={event => {\n // Click on non-interactive addon area focuses the control inside the group.\n // Skip when a button/input handled the click itself.\n const target = event.target as HTMLElement;\n if (!target.closest('button, input, textarea, [role=\"button\"]')) {\n event.currentTarget.parentElement\n ?.querySelector<HTMLInputElement | HTMLTextAreaElement>('[data-slot=input-group-control]')\n ?.focus();\n }\n onClick?.(event);\n }}\n {...props}\n />\n );\n}\n\n// Size flows from the parent group's `data-size` (no React context). All four sizes are\n// written out so Tailwind's scanner emits them. The control is sized to the root's\n// content box (token height minus the 1px border on each side) so it never overflows the\n// root — otherwise, in a flex-column parent, the root's content-based minimum would win\n// over its explicit height and the group would render 2px taller than a sibling control.\n// The explicit height also keeps the control from collapsing to the line-height in block\n// mode (flex-col + flex-none).\nconst inputGroupControlHeightBySize = cn(\n 'group-data-[size=sm]/input-group:h-[calc(var(--spacing-control-sm)-2px)]',\n 'group-data-[size=md]/input-group:h-[calc(var(--spacing-control-md)-2px)]',\n 'group-data-[size=lg]/input-group:h-[calc(var(--spacing-control-lg)-2px)]',\n);\n\nexport type InputGroupInputProps = Omit<React.ComponentProps<'input'>, 'size'> & {\n testId?: string;\n /** @deprecated Wrap the group in `<Field invalid>`, or set `aria-invalid` on a control outside a `Field`. */\n error?: boolean;\n};\n\nfunction InputGroupInput({ className, testId, error, type = 'text', ...props }: InputGroupInputProps) {\n return (\n <InputPrimitive\n type={type}\n data-slot=\"input-group-control\"\n data-testid={testId}\n className={cn(\n 'min-w-0 flex-1 bg-transparent px-3 text-label text-foreground outline-hidden',\n inputGroupControlHeightBySize,\n 'placeholder:text-muted-foreground placeholder:transition-opacity placeholder:duration-normal',\n 'focus:placeholder:opacity-70',\n 'disabled:cursor-not-allowed',\n // WebKit and Firefox use different selectors for native number spinners.\n '[&::-webkit-outer-spin-button]:m-0 [&::-webkit-outer-spin-button]:appearance-none',\n '[&::-webkit-inner-spin-button]:m-0 [&::-webkit-inner-spin-button]:appearance-none',\n '[&[type=number]]:[appearance:textfield]',\n // type=\"search\": drop WebKit's native clear button so it doesn't double up with a\n // custom clear control (e.g. the scorers toolbar's InputGroupButton).\n '[&::-webkit-search-cancel-button]:appearance-none',\n className,\n )}\n {...deprecatedErrorAria(error)}\n {...props}\n {...keepOwnAccessibleName(props)}\n />\n );\n}\n\nexport type InputGroupTextareaProps = React.ComponentProps<'textarea'> & {\n testId?: string;\n /** @deprecated Wrap the group in `<Field invalid>`, or set `aria-invalid` on a control outside a `Field`. */\n error?: boolean;\n};\n\nfunction InputGroupTextarea({ className, testId, error, ...props }: InputGroupTextareaProps) {\n return (\n <TextareaControl\n data-slot=\"input-group-control\"\n data-testid={testId}\n className={cn(\n 'min-h-15 min-w-0 flex-1 resize-y bg-transparent px-3 py-2 text-foreground outline-hidden',\n inputGroupControlTextBySize,\n 'placeholder:text-muted-foreground placeholder:transition-opacity placeholder:duration-normal',\n 'focus:placeholder:opacity-70',\n 'disabled:cursor-not-allowed',\n className,\n )}\n {...deprecatedErrorAria(error)}\n {...props}\n />\n );\n}\n\nexport type InputGroupTextProps = React.ComponentProps<'span'>;\n\nfunction InputGroupText({ className, ...props }: InputGroupTextProps) {\n return (\n <span\n className={cn(\n 'flex items-center gap-2 text-caption text-muted-foreground [&_svg]:pointer-events-none',\n \"[&_svg:not([class*='size-'])]:size-4\",\n className,\n )}\n {...props}\n />\n );\n}\n\nexport type InputGroupButtonProps = Omit<React.ComponentProps<typeof Button>, 'size' | 'variant'> & {\n size?: ButtonProps['size'];\n variant?: ButtonProps['variant'];\n};\n\nfunction InputGroupButton({ size = 'icon-sm', variant = 'ghost', type = 'button', ...props }: InputGroupButtonProps) {\n return <Button type={type} size={size} variant={variant} {...props} />;\n}\n\nexport { InputGroup, InputGroupAddon, InputGroupInput, InputGroupTextarea, InputGroupText, InputGroupButton };\n"],"names":["cn","inputSurfaceAndFocusWithinStyle","fieldErrorRimWithin","React","ControlSizeContext","jsx","controlHeight","cva","InputPrimitive","deprecatedErrorAria","keepOwnAccessibleName","TextareaControl","Button"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAsBA,MAAM,uBAAA,GAA0BA,WAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAK9B,4DAAA;AAAA;AAAA;AAAA,EAGA,wFAAA;AAAA,EACA,iBAAA;AAAA,EACA,0EAAA;AAAA;AAAA;AAAA,EAGA,iFAAA;AAAA,EACA,6EAAA;AAAA,EACA,uBAAA;AAAA,EACA,2EAAA;AAAA,EACA,yEAAA;AAAA;AAAA,EAEA,0JAAA;AAAA,EACA;AACF,CAAA;AAEA,MAAM,kCAAA,GAAqCA,WAAA;AAAA;AAAA;AAAA,EAGzC,4CAAA;AAAA,EACA,0CAAA;AAAA,EACA;AACF,CAAA;AASA,MAAM,mBAAA,GAAsBA,WAAA;AAAA,EAC1B,uBAAA;AAAA,EACA,cAAA;AAAA,EACAC,sDAAA;AAAA,EACAC,0CAAA;AAAA,EACA;AACF,CAAA;AAMA,SAAS,WAAW,EAAE,SAAA,EAAW,IAAA,EAAM,GAAG,OAAM,EAAoB;AAIlE,EAAA,MAAM,SAAA,GAAYC,gBAAA,CAAM,UAAA,CAAWC,yCAAkB,CAAA;AACrD,EAAA,MAAM,QAAA,GAAW,aAAa,IAAA,IAAQ,IAAA;AACtC,EAAA,uBACEC,cAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,IAAA,EAAK,OAAA;AAAA,MACL,WAAA,EAAU,aAAA;AAAA,MACV,WAAA,EAAW,QAAA;AAAA,MACX,WAAWL,WAAA,CAAG,mBAAA,EAAqBM,oCAAA,CAAc,QAAQ,GAAG,SAAS,CAAA;AAAA,MACpE,GAAG;AAAA;AAAA,GACN;AAEJ;AAEA,MAAM,2BAAA,GAA8BN,WAAA;AAAA,EAClC,+CAAA;AAAA,EACA,+CAAA;AAAA,EACA;AACF,CAAA;AAEA,MAAM,uBAAA,GAA0BO,SAAA;AAAA,EAC9BP,WAAA;AAAA,IACE,0EAAA;AAAA,IACA,2BAAA;AAAA,IACA,yDAAA;AAAA,IACA;AAAA,GACF;AAAA,EACA;AAAA,IACE,QAAA,EAAU;AAAA,MACR,KAAA,EAAO;AAAA,QACL,cAAA,EAAgB,0CAAA;AAAA,QAChB,YAAA,EAAc,yCAAA;AAAA,QACd,aAAA,EAAe,wEAAA;AAAA,QACf,WAAA,EAAa;AAAA;AACf,KACF;AAAA,IACA,eAAA,EAAiB;AAAA,MACf,KAAA,EAAO;AAAA;AACT;AAEJ,CAAA;AAIA,SAAS,eAAA,CAAgB,EAAE,SAAA,EAAW,KAAA,GAAQ,gBAAgB,OAAA,EAAS,GAAG,OAAM,EAAyB;AACvG,EAAA,uBACEK,cAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,IAAA,EAAK,OAAA;AAAA,MACL,WAAA,EAAU,mBAAA;AAAA,MACV,YAAA,EAAY,KAAA;AAAA,MACZ,WAAWL,WAAA,CAAG,uBAAA,CAAwB,EAAE,KAAA,EAAO,GAAG,SAAS,CAAA;AAAA,MAC3D,SAAS,CAAA,KAAA,KAAS;AAGhB,QAAA,MAAM,SAAS,KAAA,CAAM,MAAA;AACrB,QAAA,IAAI,CAAC,MAAA,CAAO,OAAA,CAAQ,0CAA0C,CAAA,EAAG;AAC/D,UAAA,KAAA,CAAM,aAAA,CAAc,aAAA,EAChB,aAAA,CAAsD,iCAAiC,GACvF,KAAA,EAAM;AAAA,QACZ;AACA,QAAA,OAAA,GAAU,KAAK,CAAA;AAAA,MACjB,CAAA;AAAA,MACC,GAAG;AAAA;AAAA,GACN;AAEJ;AASA,MAAM,6BAAA,GAAgCA,WAAA;AAAA,EACpC,0EAAA;AAAA,EACA,0EAAA;AAAA,EACA;AACF,CAAA;AAQA,SAAS,eAAA,CAAgB,EAAE,SAAA,EAAW,MAAA,EAAQ,OAAO,IAAA,GAAO,MAAA,EAAQ,GAAG,KAAA,EAAM,EAAyB;AACpG,EAAA,uBACEK,cAAA;AAAA,IAACG,WAAA;AAAA,IAAA;AAAA,MACC,IAAA;AAAA,MACA,WAAA,EAAU,qBAAA;AAAA,MACV,aAAA,EAAa,MAAA;AAAA,MACb,SAAA,EAAWR,WAAA;AAAA,QACT,8EAAA;AAAA,QACA,6BAAA;AAAA,QACA,8FAAA;AAAA,QACA,8BAAA;AAAA,QACA,6BAAA;AAAA;AAAA,QAEA,mFAAA;AAAA,QACA,mFAAA;AAAA,QACA,yCAAA;AAAA;AAAA;AAAA,QAGA,mDAAA;AAAA,QACA;AAAA,OACF;AAAA,MACC,GAAGS,2CAAoB,KAAK,CAAA;AAAA,MAC5B,GAAG,KAAA;AAAA,MACH,GAAGC,uCAAsB,KAAK;AAAA;AAAA,GACjC;AAEJ;AAQA,SAAS,mBAAmB,EAAE,SAAA,EAAW,QAAQ,KAAA,EAAO,GAAG,OAAM,EAA4B;AAC3F,EAAA,uBACEL,cAAA;AAAA,IAACM,0CAAA;AAAA,IAAA;AAAA,MACC,WAAA,EAAU,qBAAA;AAAA,MACV,aAAA,EAAa,MAAA;AAAA,MACb,SAAA,EAAWX,WAAA;AAAA,QACT,0FAAA;AAAA,QACA,2BAAA;AAAA,QACA,8FAAA;AAAA,QACA,8BAAA;AAAA,QACA,6BAAA;AAAA,QACA;AAAA,OACF;AAAA,MACC,GAAGS,2CAAoB,KAAK,CAAA;AAAA,MAC5B,GAAG;AAAA;AAAA,GACN;AAEJ;AAIA,SAAS,cAAA,CAAe,EAAE,SAAA,EAAW,GAAG,OAAM,EAAwB;AACpE,EAAA,uBACEJ,cAAA;AAAA,IAAC,MAAA;AAAA,IAAA;AAAA,MACC,SAAA,EAAWL,WAAA;AAAA,QACT,wFAAA;AAAA,QACA,sCAAA;AAAA,QACA;AAAA,OACF;AAAA,MACC,GAAG;AAAA;AAAA,GACN;AAEJ;AAOA,SAAS,gBAAA,CAAiB,EAAE,IAAA,GAAO,SAAA,EAAW,OAAA,GAAU,SAAS,IAAA,GAAO,QAAA,EAAU,GAAG,KAAA,EAAM,EAA0B;AACnH,EAAA,sCAAQY,aAAA,EAAA,EAAO,IAAA,EAAY,IAAA,EAAY,OAAA,EAAmB,GAAG,KAAA,EAAO,CAAA;AACtE;;;;;;;;;"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"input-group-wzirc-1k.js","sources":["../src/ds/components/InputGroup/input-group.tsx"],"sourcesContent":["import { Input as InputPrimitive } from '@base-ui/react/input';\nimport { cva } from 'class-variance-authority';\nimport type { VariantProps } from 'class-variance-authority';\nimport * as React from 'react';\n\nimport { Button } from '@/ds/components/Button';\nimport type { ButtonProps } from '@/ds/components/Button/Button';\nimport { keepOwnAccessibleName } from '@/ds/components/Field/field-control-aria';\nimport { ControlSizeContext, controlHeight } from '@/ds/primitives/control-size';\nimport type { ControlSize } from '@/ds/primitives/control-size';\nimport {\n deprecatedErrorAria,\n fieldErrorRimWithin,\n inputSurfaceAndFocusWithinStyle,\n} from '@/ds/primitives/form-element';\nimport { TextareaControl } from '@/ds/primitives/textarea-control';\nimport { cn } from '@/lib/utils';\n\n// Size flows down as `data-size` on the named group root (`group/input-group`), read by the\n// control through `group-data-[size=…]` variants — no prop drilling. The one context read is\n// upward: a wrapper that owns the rung (ButtonsGroup) hands it to the field.\n\nconst inputGroupBaseClassName = cn(\n // `flex-1` (not `min-w-0`) lets the root fill a flex row while keeping its content-floor\n // so it never collapses to 0. `items-center` centres the control: it carries its own\n // h-form-* (2px taller than the root's content box), so stretch would push its text low\n // / overflow the bottom border, while centring overlaps the (transparent) borders cleanly.\n 'group/input-group relative flex w-full flex-1 items-center',\n // The wrapper owns its control's width — a bare control has no width of its own,\n // so the group is the one that decides the input fills the remaining space.\n '[&>[data-slot=input-group-control]]:min-w-0 [&>[data-slot=input-group-control]]:flex-1',\n 'text-foreground',\n 'has-[:disabled]:cursor-not-allowed has-[:disabled]:text-muted-foreground',\n // Height is on the root (border-box) so the group matches a same-size sibling control.\n // Auto height when vertical (block-* addon) or wrapping a textarea.\n 'has-[>[data-align=block-start]]:h-auto has-[>[data-align=block-start]]:flex-col',\n 'has-[>[data-align=block-end]]:h-auto has-[>[data-align=block-end]]:flex-col',\n 'has-[textarea]:h-auto',\n 'has-[>[data-align=inline-start]]:[&>[data-slot=input-group-control]]:pl-0',\n 'has-[>[data-align=inline-end]]:[&>[data-slot=input-group-control]]:pr-0',\n // In flex-col, flex-1 zeroes the control's height; force flex-none + w-full instead.\n 'has-[>[data-align=block-start]]:[&>[data-slot=input-group-control]]:w-full has-[>[data-align=block-start]]:[&>[data-slot=input-group-control]]:flex-none',\n 'has-[>[data-align=block-end]]:[&>[data-slot=input-group-control]]:w-full has-[>[data-align=block-end]]:[&>[data-slot=input-group-control]]:flex-none',\n);\n\nconst inputGroupRoundedTextareaClassName = cn(\n // Pill (rounded-full) only fits single-line inline shapes. Fall back to rounded-xl\n // whenever the group goes vertical (block-* addon) or wraps a textarea.\n 'has-[>[data-align=block-start]]:rounded-xl',\n 'has-[>[data-align=block-end]]:rounded-xl',\n 'has-[textarea]:rounded-xl',\n);\n\n// A group wears the field material — the same `bg-card` plus rim an Input wears — so a\n// group and a bare field beside it are one surface. Its states move the rim, and they\n// read the nested control's focus (`focus-within`) because the wrapper never takes focus\n// itself. There is no second look: a transparent `outline` group existed alongside this\n// one and only ever produced two boundary languages for the same control, which is why\n// four of its call sites had wrapped it in a hand-made `bg-card rounded-full` div to get\n// the material back.\nconst inputGroupClassName = cn(\n inputGroupBaseClassName,\n 'rounded-full',\n inputSurfaceAndFocusWithinStyle,\n fieldErrorRimWithin,\n inputGroupRoundedTextareaClassName,\n);\n\nexport type InputGroupProps = React.ComponentProps<'div'> & {\n size?: ControlSize;\n};\n\nfunction InputGroup({ className, size, ...props }: InputGroupProps) {\n // A wrapper's rung wins over the field's own: inside a ButtonsGroup the group owns the\n // height of every segment, so a field that kept its own type scale would sit at one rung\n // and read at another.\n const groupSize = React.useContext(ControlSizeContext);\n const resolved = groupSize ?? size ?? 'md';\n return (\n <div\n role=\"group\"\n data-slot=\"input-group\"\n data-size={resolved}\n className={cn(inputGroupClassName, controlHeight[resolved], className)}\n {...props}\n />\n );\n}\n\nconst inputGroupControlTextBySize = cn(\n 'group-data-[size=sm]/input-group:text-caption',\n 'group-data-[size=md]/input-group:text-body-sm',\n 'group-data-[size=lg]/input-group:text-body',\n);\n\nconst inputGroupAddonVariants = cva(\n cn(\n 'flex items-center justify-center gap-2 text-muted-foreground select-none',\n inputGroupControlTextBySize,\n 'group-has-[:disabled]/input-group:text-muted-foreground',\n \"[&>svg:not([class*='size-'])]:size-4\",\n ),\n {\n variants: {\n align: {\n 'inline-start': 'order-first pr-1 pl-3 has-[>button]:pl-1',\n 'inline-end': 'order-last pr-3 pl-1 has-[>button]:pr-1',\n 'block-start': 'order-first w-full justify-start border-b border-border px-3 pt-2 pb-1',\n 'block-end': 'order-last w-full justify-start border-t border-border px-3 pt-1 pb-2',\n },\n },\n defaultVariants: {\n align: 'inline-start',\n },\n },\n);\n\nexport type InputGroupAddonProps = React.ComponentProps<'div'> & VariantProps<typeof inputGroupAddonVariants>;\n\nfunction InputGroupAddon({ className, align = 'inline-start', onClick, ...props }: InputGroupAddonProps) {\n return (\n <div\n role=\"group\"\n data-slot=\"input-group-addon\"\n data-align={align}\n className={cn(inputGroupAddonVariants({ align }), className)}\n onClick={event => {\n // Click on non-interactive addon area focuses the control inside the group.\n // Skip when a button/input handled the click itself.\n const target = event.target as HTMLElement;\n if (!target.closest('button, input, textarea, [role=\"button\"]')) {\n event.currentTarget.parentElement\n ?.querySelector<HTMLInputElement | HTMLTextAreaElement>('[data-slot=input-group-control]')\n ?.focus();\n }\n onClick?.(event);\n }}\n {...props}\n />\n );\n}\n\n// Size flows from the parent group's `data-size` (no React context). All four sizes are\n// written out so Tailwind's scanner emits them. The control is sized to the root's\n// content box (token height minus the 1px border on each side) so it never overflows the\n// root — otherwise, in a flex-column parent, the root's content-based minimum would win\n// over its explicit height and the group would render 2px taller than a sibling control.\n// The explicit height also keeps the control from collapsing to the line-height in block\n// mode (flex-col + flex-none).\nconst inputGroupControlHeightBySize = cn(\n 'group-data-[size=sm]/input-group:h-[calc(var(--spacing-control-sm)-2px)]',\n 'group-data-[size=md]/input-group:h-[calc(var(--spacing-control-md)-2px)]',\n 'group-data-[size=lg]/input-group:h-[calc(var(--spacing-control-lg)-2px)]',\n);\n\nexport type InputGroupInputProps = Omit<React.ComponentProps<'input'>, 'size'> & {\n testId?: string;\n /** @deprecated Wrap the group in `<Field invalid>`, or set `aria-invalid` on a control outside a `Field`. */\n error?: boolean;\n};\n\nfunction InputGroupInput({ className, testId, error, type = 'text', ...props }: InputGroupInputProps) {\n return (\n <InputPrimitive\n type={type}\n data-slot=\"input-group-control\"\n data-testid={testId}\n className={cn(\n 'min-w-0 flex-1 bg-transparent px-3 text-label text-foreground outline-hidden',\n inputGroupControlHeightBySize,\n 'placeholder:text-muted-foreground placeholder:transition-opacity placeholder:duration-normal',\n 'focus:placeholder:opacity-70',\n 'disabled:cursor-not-allowed',\n // WebKit and Firefox use different selectors for native number spinners.\n '[&::-webkit-outer-spin-button]:m-0 [&::-webkit-outer-spin-button]:appearance-none',\n '[&::-webkit-inner-spin-button]:m-0 [&::-webkit-inner-spin-button]:appearance-none',\n '[&[type=number]]:[appearance:textfield]',\n // type=\"search\": drop WebKit's native clear button so it doesn't double up with a\n // custom clear control (e.g. the scorers toolbar's InputGroupButton).\n '[&::-webkit-search-cancel-button]:appearance-none',\n className,\n )}\n {...deprecatedErrorAria(error)}\n {...props}\n {...keepOwnAccessibleName(props)}\n />\n );\n}\n\nexport type InputGroupTextareaProps = React.ComponentProps<'textarea'> & {\n testId?: string;\n /** @deprecated Wrap the group in `<Field invalid>`, or set `aria-invalid` on a control outside a `Field`. */\n error?: boolean;\n};\n\nfunction InputGroupTextarea({ className, testId, error, ...props }: InputGroupTextareaProps) {\n return (\n <TextareaControl\n data-slot=\"input-group-control\"\n data-testid={testId}\n className={cn(\n 'min-h-15 min-w-0 flex-1 resize-y bg-transparent px-3 py-2 text-foreground outline-hidden',\n inputGroupControlTextBySize,\n 'placeholder:text-muted-foreground placeholder:transition-opacity placeholder:duration-normal',\n 'focus:placeholder:opacity-70',\n 'disabled:cursor-not-allowed',\n className,\n )}\n {...deprecatedErrorAria(error)}\n {...props}\n />\n );\n}\n\nexport type InputGroupTextProps = React.ComponentProps<'span'>;\n\nfunction InputGroupText({ className, ...props }: InputGroupTextProps) {\n return (\n <span\n className={cn(\n 'flex items-center gap-2 text-caption text-muted-foreground [&_svg]:pointer-events-none',\n \"[&_svg:not([class*='size-'])]:size-4\",\n className,\n )}\n {...props}\n />\n );\n}\n\nexport type InputGroupButtonProps = Omit<React.ComponentProps<typeof Button>, 'size' | 'variant'> & {\n size?: ButtonProps['size'];\n variant?: ButtonProps['variant'];\n};\n\nfunction InputGroupButton({ size = 'icon-sm', variant = 'ghost', type = 'button', ...props }: InputGroupButtonProps) {\n return <Button type={type} size={size} variant={variant} {...props} />;\n}\n\nexport { InputGroup, InputGroupAddon, InputGroupInput, InputGroupTextarea, InputGroupText, InputGroupButton };\n"],"names":["InputPrimitive"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"metrics-kpi-card-1hbihR2T.cjs","sources":["../src/ds/components/MetricsKpiCard/metrics-kpi-card-change.tsx","../src/ds/components/MetricsKpiCard/metrics-kpi-card-error.tsx","../src/ds/components/MetricsKpiCard/metrics-kpi-card-label.tsx","../src/ds/components/MetricsKpiCard/metrics-kpi-card-loading.tsx","../src/ds/components/MetricsKpiCard/metrics-kpi-card-no-change.tsx","../src/ds/components/MetricsKpiCard/metrics-kpi-card-no-data.tsx","../src/ds/components/MetricsKpiCard/metrics-kpi-card-root.tsx","../src/ds/components/MetricsKpiCard/metrics-kpi-card-value.tsx","../src/ds/components/MetricsKpiCard/metrics-kpi-card-value-row.tsx","../src/ds/components/MetricsKpiCard/metrics-kpi-card.tsx"],"sourcesContent":["import { ArrowDownRightIcon, ArrowUpRightIcon } from 'lucide-react';\nimport { Badge } from '@/ds/components/Badge';\nimport { Txt } from '@/ds/components/Txt';\nimport { cn } from '@/lib/utils';\n\nconst compact = new Intl.NumberFormat('en', { notation: 'compact', maximumFractionDigits: 1 });\n\n// Past +1000% a percentage is unreadable, so show how many times bigger the value got instead.\nfunction formatChange(changePct: number) {\n if (changePct >= 1000) return `×${compact.format(1 + changePct / 100)}`;\n const digits = Math.abs(changePct) < 10 ? 1 : 0;\n return `${changePct > 0 ? '+' : ''}${changePct.toFixed(digits)}%`;\n}\n\nexport function MetricsKpiCardChange({\n changePct,\n prevValue,\n lowerIsBetter,\n className,\n}: {\n changePct: number;\n prevValue?: string;\n lowerIsBetter?: boolean;\n className?: string;\n}) {\n const isGood = lowerIsBetter ? changePct < 0 : changePct >= 0;\n const Icon = changePct >= 0 ? ArrowUpRightIcon : ArrowDownRightIcon;\n const formattedChange = formatChange(changePct);\n\n return (\n <div className={cn('flex items-center gap-1.5', className)}>\n <Badge\n variant={isGood ? 'success' : 'destructive'}\n emphasis=\"subtle\"\n size=\"xs\"\n icon={<Icon />}\n className=\"tabular-nums\"\n >\n {formattedChange}\n </Badge>\n <Txt as=\"span\" variant=\"meta\" tone=\"faint\">\n vs prior period\n {prevValue ? <span className=\"sr-only\">, previous value {prevValue}</span> : null}\n </Txt>\n </div>\n );\n}\n","import { Txt } from '@/ds/components/Txt';\nimport { cn } from '@/lib/utils';\n\nexport function MetricsKpiCardError({\n message = 'Failed to load data',\n className,\n}: {\n message?: string;\n className?: string;\n}) {\n return (\n <Txt as=\"span\" variant=\"meta\" className={cn('text-destructive-foreground', className)}>\n {message}\n </Txt>\n );\n}\n","import { Txt } from '@/ds/components/Txt';\nimport { cn } from '@/lib/utils';\n\nexport function MetricsKpiCardLabel({ children, className }: { children: string; className?: string }) {\n return (\n <Txt as=\"span\" tone=\"ink\" className={cn('font-medium', className)}>\n {children}\n </Txt>\n );\n}\n","import { Spinner } from '@/ds/components/Spinner/spinner';\nimport { Txt } from '@/ds/components/Txt';\n\nexport function MetricsKpiCardLoading({ className }: { className?: string }) {\n return (\n <Txt as=\"span\" className={className}>\n <Spinner size=\"md\" variant=\"pulse\" className=\"text-placeholder\" />\n </Txt>\n );\n}\n","import { Txt } from '@/ds/components/Txt';\n\nexport function MetricsKpiCardNoChange({\n message = 'No previous value to compare',\n className,\n}: {\n message?: string;\n className?: string;\n}) {\n return (\n <Txt as=\"span\" variant=\"meta\" tone=\"faint\" className={className}>\n {message}\n </Txt>\n );\n}\n","import { Txt } from '@/ds/components/Txt';\n\nexport function MetricsKpiCardNoData({ message = 'No data yet', className }: { message?: string; className?: string }) {\n return (\n <Txt as=\"span\" variant=\"meta\" tone=\"faint\" className={className}>\n {message}\n </Txt>\n );\n}\n","import type { ReactNode } from 'react';\nimport { Card } from '@/ds/components/Card';\nimport { cn } from '@/lib/utils';\n\nexport function MetricsKpiCardRoot({ children, className }: { children: ReactNode; className?: string }) {\n return (\n <Card className={cn('min-w-72 flex-1 px-5 py-4', className)}>\n <div className=\"grid gap-1.5\">{children}</div>\n </Card>\n );\n}\n","import type { ReactNode } from 'react';\nimport { cn } from '@/lib/utils';\n\nexport function MetricsKpiCardValue({ children, className }: { children: ReactNode; className?: string }) {\n return (\n <strong\n className={cn(\n 'text-title font-semibold text-foreground tabular-nums [text-box:trim-both_cap_alphabetic]',\n className,\n )}\n >\n {children}\n </strong>\n );\n}\n","import type { ReactNode } from 'react';\nimport { cn } from '@/lib/utils';\n\nexport function MetricsKpiCardValueRow({ children, className }: { children: ReactNode; className?: string }) {\n return <div className={cn('flex min-h-6 flex-wrap items-center gap-x-2 gap-y-1', className)}>{children}</div>;\n}\n","import { MetricsKpiCardChange } from './metrics-kpi-card-change';\nimport { MetricsKpiCardError } from './metrics-kpi-card-error';\nimport { MetricsKpiCardLabel } from './metrics-kpi-card-label';\nimport { MetricsKpiCardLoading } from './metrics-kpi-card-loading';\nimport { MetricsKpiCardNoChange } from './metrics-kpi-card-no-change';\nimport { MetricsKpiCardNoData } from './metrics-kpi-card-no-data';\nimport { MetricsKpiCardRoot } from './metrics-kpi-card-root';\nimport { MetricsKpiCardValue } from './metrics-kpi-card-value';\nimport { MetricsKpiCardValueRow } from './metrics-kpi-card-value-row';\n\nexport const MetricsKpiCard = Object.assign(MetricsKpiCardRoot, {\n Label: MetricsKpiCardLabel,\n ValueRow: MetricsKpiCardValueRow,\n Value: MetricsKpiCardValue,\n Change: MetricsKpiCardChange,\n NoChange: MetricsKpiCardNoChange,\n NoData: MetricsKpiCardNoData,\n Error: MetricsKpiCardError,\n Loading: MetricsKpiCardLoading,\n});\n"],"names":["ArrowUpRightIcon","ArrowDownRightIcon","cn","jsx","Badge","Txt","jsxs","Spinner","Card"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"metrics-kpi-card-CiB88L41.js","sources":["../src/ds/components/MetricsKpiCard/metrics-kpi-card-change.tsx","../src/ds/components/MetricsKpiCard/metrics-kpi-card-error.tsx","../src/ds/components/MetricsKpiCard/metrics-kpi-card-label.tsx","../src/ds/components/MetricsKpiCard/metrics-kpi-card-loading.tsx","../src/ds/components/MetricsKpiCard/metrics-kpi-card-no-change.tsx","../src/ds/components/MetricsKpiCard/metrics-kpi-card-no-data.tsx","../src/ds/components/MetricsKpiCard/metrics-kpi-card-root.tsx","../src/ds/components/MetricsKpiCard/metrics-kpi-card-value.tsx","../src/ds/components/MetricsKpiCard/metrics-kpi-card-value-row.tsx","../src/ds/components/MetricsKpiCard/metrics-kpi-card.tsx"],"sourcesContent":["import { ArrowDownRightIcon, ArrowUpRightIcon } from 'lucide-react';\nimport { Badge } from '@/ds/components/Badge';\nimport { Txt } from '@/ds/components/Txt';\nimport { cn } from '@/lib/utils';\n\nconst compact = new Intl.NumberFormat('en', { notation: 'compact', maximumFractionDigits: 1 });\n\n// Past +1000% a percentage is unreadable, so show how many times bigger the value got instead.\nfunction formatChange(changePct: number) {\n if (changePct >= 1000) return `×${compact.format(1 + changePct / 100)}`;\n const digits = Math.abs(changePct) < 10 ? 1 : 0;\n return `${changePct > 0 ? '+' : ''}${changePct.toFixed(digits)}%`;\n}\n\nexport function MetricsKpiCardChange({\n changePct,\n prevValue,\n lowerIsBetter,\n className,\n}: {\n changePct: number;\n prevValue?: string;\n lowerIsBetter?: boolean;\n className?: string;\n}) {\n const isGood = lowerIsBetter ? changePct < 0 : changePct >= 0;\n const Icon = changePct >= 0 ? ArrowUpRightIcon : ArrowDownRightIcon;\n const formattedChange = formatChange(changePct);\n\n return (\n <div className={cn('flex items-center gap-1.5', className)}>\n <Badge\n variant={isGood ? 'success' : 'destructive'}\n emphasis=\"subtle\"\n size=\"xs\"\n icon={<Icon />}\n className=\"tabular-nums\"\n >\n {formattedChange}\n </Badge>\n <Txt as=\"span\" variant=\"meta\" tone=\"faint\">\n vs prior period\n {prevValue ? <span className=\"sr-only\">, previous value {prevValue}</span> : null}\n </Txt>\n </div>\n );\n}\n","import { Txt } from '@/ds/components/Txt';\nimport { cn } from '@/lib/utils';\n\nexport function MetricsKpiCardError({\n message = 'Failed to load data',\n className,\n}: {\n message?: string;\n className?: string;\n}) {\n return (\n <Txt as=\"span\" variant=\"meta\" className={cn('text-destructive-foreground', className)}>\n {message}\n </Txt>\n );\n}\n","import { Txt } from '@/ds/components/Txt';\nimport { cn } from '@/lib/utils';\n\nexport function MetricsKpiCardLabel({ children, className }: { children: string; className?: string }) {\n return (\n <Txt as=\"span\" tone=\"ink\" className={cn('font-medium', className)}>\n {children}\n </Txt>\n );\n}\n","import { Spinner } from '@/ds/components/Spinner/spinner';\nimport { Txt } from '@/ds/components/Txt';\n\nexport function MetricsKpiCardLoading({ className }: { className?: string }) {\n return (\n <Txt as=\"span\" className={className}>\n <Spinner size=\"md\" variant=\"pulse\" className=\"text-placeholder\" />\n </Txt>\n );\n}\n","import { Txt } from '@/ds/components/Txt';\n\nexport function MetricsKpiCardNoChange({\n message = 'No previous value to compare',\n className,\n}: {\n message?: string;\n className?: string;\n}) {\n return (\n <Txt as=\"span\" variant=\"meta\" tone=\"faint\" className={className}>\n {message}\n </Txt>\n );\n}\n","import { Txt } from '@/ds/components/Txt';\n\nexport function MetricsKpiCardNoData({ message = 'No data yet', className }: { message?: string; className?: string }) {\n return (\n <Txt as=\"span\" variant=\"meta\" tone=\"faint\" className={className}>\n {message}\n </Txt>\n );\n}\n","import type { ReactNode } from 'react';\nimport { Card } from '@/ds/components/Card';\nimport { cn } from '@/lib/utils';\n\nexport function MetricsKpiCardRoot({ children, className }: { children: ReactNode; className?: string }) {\n return (\n <Card className={cn('min-w-72 flex-1 px-5 py-4', className)}>\n <div className=\"grid gap-1.5\">{children}</div>\n </Card>\n );\n}\n","import type { ReactNode } from 'react';\nimport { cn } from '@/lib/utils';\n\nexport function MetricsKpiCardValue({ children, className }: { children: ReactNode; className?: string }) {\n return (\n <strong\n className={cn(\n 'text-title font-semibold text-foreground tabular-nums [text-box:trim-both_cap_alphabetic]',\n className,\n )}\n >\n {children}\n </strong>\n );\n}\n","import type { ReactNode } from 'react';\nimport { cn } from '@/lib/utils';\n\nexport function MetricsKpiCardValueRow({ children, className }: { children: ReactNode; className?: string }) {\n return <div className={cn('flex min-h-6 flex-wrap items-center gap-x-2 gap-y-1', className)}>{children}</div>;\n}\n","import { MetricsKpiCardChange } from './metrics-kpi-card-change';\nimport { MetricsKpiCardError } from './metrics-kpi-card-error';\nimport { MetricsKpiCardLabel } from './metrics-kpi-card-label';\nimport { MetricsKpiCardLoading } from './metrics-kpi-card-loading';\nimport { MetricsKpiCardNoChange } from './metrics-kpi-card-no-change';\nimport { MetricsKpiCardNoData } from './metrics-kpi-card-no-data';\nimport { MetricsKpiCardRoot } from './metrics-kpi-card-root';\nimport { MetricsKpiCardValue } from './metrics-kpi-card-value';\nimport { MetricsKpiCardValueRow } from './metrics-kpi-card-value-row';\n\nexport const MetricsKpiCard = Object.assign(MetricsKpiCardRoot, {\n Label: MetricsKpiCardLabel,\n ValueRow: MetricsKpiCardValueRow,\n Value: MetricsKpiCardValue,\n Change: MetricsKpiCardChange,\n NoChange: MetricsKpiCardNoChange,\n NoData: MetricsKpiCardNoData,\n Error: MetricsKpiCardError,\n Loading: MetricsKpiCardLoading,\n});\n"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"select--ArpXYDc.js","sources":["../src/ds/components/Select/select.tsx"],"sourcesContent":["import { Select as SelectPrimitive } from '@base-ui/react/select';\nimport type { SelectPopupProps, SelectPositionerProps } from '@base-ui/react/select';\nimport { Check, ChevronDown } from 'lucide-react';\nimport * as React from 'react';\n\nimport { buttonVariants } from '../Button/Button';\nimport type { TextButtonSize } from '../Button/Button';\nimport { keepOwnAccessibleName } from '@/ds/components/Field/field-control-aria';\nimport { controlTriggerOpenState } from '@/ds/primitives/control-size';\nimport { FLOATING_POSITION_METHOD } from '@/ds/primitives/floating';\nimport { FluidMenuItems, useFluidMenu, useFluidMenuItemRef } from '@/ds/primitives/fluid-menu';\nimport { fieldTriggerErrorBorder, fieldTriggerStyle, fieldTriggerWidthStyle } from '@/ds/primitives/form-element';\nimport { menuItemCheckClass, menuItemClass, menuPopupClass, menuPositionerClass } from '@/ds/primitives/menu-item';\nimport { usePortalContainer } from '@/ds/primitives/portal-container';\nimport { transitions } from '@/ds/primitives/transitions';\nimport { cn } from '@/lib/utils';\n\n/**\n * Select migrated from `@radix-ui/react-select` to Base UI (`@base-ui/react/select`).\n *\n * The public API (`Select`, `SelectGroup`, `SelectValue`, `SelectTrigger`,\n * `SelectContent`, `SelectItem`) is intentionally kept stable so existing\n * consumers do not need changes.\n *\n * Notable behavioral differences vs. Radix that consumers should be aware of:\n * - `onValueChange` now receives a second `eventDetails` argument. Existing\n * handlers typed as `(value: string) => void` keep working (extra arg ignored).\n * - The dropdown no longer overlaps the trigger by default\n * (`alignItemWithTrigger={false}`), matching the previous Radix `popper`\n * positioning behavior.\n *\n * Implementation note: unlike Radix, Base UI's `Select.Value` can only resolve\n * a selected value to its label once the popup has mounted (it reads labels\n * from rendered items). To preserve the Radix behavior where the trigger shows\n * the selected label even while closed, `Select` auto-derives an `items` map\n * from the `SelectItem`s declared inside `SelectContent` and passes it to\n * `Select.Root`. Consumers can still pass an explicit `items` prop to override.\n */\ntype SelectItemNode = React.ReactElement<{ value: unknown; children?: React.ReactNode }>;\n\nfunction isSelectItem(node: React.ReactNode): node is SelectItemNode {\n return React.isValidElement(node) && (node.type as { displayName?: string })?.displayName === 'SelectItem';\n}\n\n/** Recursively collect `{ value, label }` pairs from declared `SelectItem`s. */\nfunction collectItems(children: React.ReactNode, acc: Array<{ value: unknown; label: React.ReactNode }>): void {\n React.Children.forEach(children, child => {\n if (!React.isValidElement(child)) return;\n if (isSelectItem(child)) {\n acc.push({ value: child.props.value, label: child.props.children });\n return;\n }\n const nested = (child.props as { children?: React.ReactNode })?.children;\n if (nested != null) collectItems(nested, acc);\n });\n}\n\ntype SelectRootProps<Value> = SelectPrimitive.Root.Props<Value, false>;\ntype SelectChangeDetails = Parameters<NonNullable<SelectRootProps<unknown>['onValueChange']>>[1];\n\n/**\n * `onValueChange` is intentionally narrowed to a non-null value: these selects\n * always hold a value once changed, which keeps existing `(value) => void`\n * consumer handlers valid (Base UI's own callback type is `Value | null`).\n */\ntype SelectProps<Value = string> = Omit<SelectRootProps<Value>, 'onValueChange'> & {\n onValueChange?: (value: Value, eventDetails: SelectChangeDetails) => void;\n};\n\nfunction Select<Value = string>({ children, items, onValueChange, ...props }: SelectProps<Value>) {\n const derivedItems = React.useMemo(() => {\n if (items != null) return items;\n const acc: Array<{ value: unknown; label: React.ReactNode }> = [];\n collectItems(children, acc);\n return acc.length > 0 ? acc : undefined;\n }, [items, children]);\n\n return (\n <SelectPrimitive.Root\n items={derivedItems as SelectRootProps<Value>['items']}\n onValueChange={onValueChange ? (value, eventDetails) => onValueChange(value as Value, eventDetails) : undefined}\n {...props}\n >\n {children}\n </SelectPrimitive.Root>\n );\n}\nSelect.displayName = 'Select';\n\nconst SelectGroup = SelectPrimitive.Group;\n\nexport type SelectValueProps = Omit<SelectPrimitive.Value.Props, 'className'> & {\n className?: string;\n};\n\n/**\n * Displays the selected value. Radix's `Select.Value` took a `placeholder`\n * prop and rendered the selected item's text automatically; Base UI's\n * `Select.Value` behaves the same way (renders the value, falls back to\n * `placeholder` when nothing is selected), so this is a thin passthrough.\n */\nconst SelectValue = React.forwardRef<HTMLSpanElement, SelectValueProps>(({ className, ...props }, ref) => (\n <SelectPrimitive.Value ref={ref} className={cn('truncate', className)} {...props} />\n));\nSelectValue.displayName = 'SelectValue';\n\n/**\n * A select is a form field, so it reuses the Button's size/shape recipe with\n * these looks: `default` (the Input's overlay surface — the default here too,\n * so a select sits next to an Input as the same kind of thing) and `ghost`\n * (borderless, for dense toolbars/inline pickers). The high-emphasis `primary` look is the only one intentionally NOT\n * offered (a field is not a call-to-action).\n */\nexport type SelectTriggerVariant = 'default' | 'ghost';\ntype SelectTriggerLegacyVariant = 'primary';\n\nexport type SelectTriggerProps = Omit<SelectPrimitive.Trigger.Props, 'className'> & {\n className?: string;\n size?: TextButtonSize;\n variant?: SelectTriggerVariant | SelectTriggerLegacyVariant;\n};\n\nfunction normalizeSelectTriggerVariant(\n variant: SelectTriggerVariant | SelectTriggerLegacyVariant,\n): SelectTriggerVariant {\n return variant === 'primary' ? 'default' : variant;\n}\n\nconst SelectTrigger = React.forwardRef<HTMLButtonElement, SelectTriggerProps>(\n ({ className, children, size = 'md', variant = 'default', ...props }, ref) => {\n const visualVariant = normalizeSelectTriggerVariant(variant);\n\n return (\n <SelectPrimitive.Trigger\n ref={ref}\n data-slot=\"select-trigger\"\n // A select = a button + a trailing chevron: reuse the Button recipe\n // (variant colors, size = height/text/padding/radius, unified border\n // focus, disabled) and layer only the select-specific extras.\n className={cn(\n buttonVariants({ variant: visualVariant, size }),\n visualVariant === 'default' && fieldTriggerStyle,\n // Fill the field and push the value left / chevron right (Button's\n // base centers its content with `justify-center`).\n fieldTriggerWidthStyle,\n 'justify-between text-body-sm',\n // Read as \"active\" while the menu is open, per variant (see map above).\n controlTriggerOpenState[visualVariant],\n 'data-[placeholder]:text-muted-foreground',\n fieldTriggerErrorBorder,\n '[&>span]:truncate',\n className,\n )}\n {...props}\n {...keepOwnAccessibleName(props)}\n >\n {children}\n {/* `SelectPrimitive.Icon` renders the provided element in place of its\n default `<span>`, so the chevron would land as a *direct* `<svg>`\n child of the trigger — where Button's `TEXT_MODE_ADORNMENTS`\n `[&>svg]` rules (negative `mx`, forced 50% opacity, 1.1em sizing)\n would distort and mis-position it. Wrapping it in a `<span>` keeps\n the svg one level deep so those rules can't reach it, leaving the\n chevron pinned at the right edge at its intended size and color. */}\n <SelectPrimitive.Icon\n render={\n <span className=\"flex shrink-0 items-center\">\n <ChevronDown className={cn('size-4 text-muted-foreground', transitions.colors)} />\n </span>\n }\n />\n </SelectPrimitive.Trigger>\n );\n },\n);\nSelectTrigger.displayName = 'SelectTrigger';\n\ntype SelectContentPositionerProps = Omit<SelectPositionerProps, keyof SelectPopupProps>;\n\nexport type SelectContentProps = Omit<SelectPopupProps, 'className'> &\n SelectContentPositionerProps & {\n className?: string;\n /**\n * Kept for API compatibility with the previous Radix API. Radix supported\n * `position=\"popper\" | \"item-aligned\"`; Base UI always uses popper-style\n * positioning so this prop is accepted but has no effect.\n */\n position?: 'popper' | 'item-aligned';\n /** Optional portal container, forwarded to `Select.Portal`. */\n container?: HTMLElement | null;\n };\n\nconst SelectContent = React.forwardRef<HTMLDivElement, SelectContentProps>(\n (\n {\n className,\n children,\n position: _position,\n container,\n side = 'bottom',\n align = 'start',\n sideOffset = 4,\n alignItemWithTrigger = false,\n anchor,\n positionMethod = FLOATING_POSITION_METHOD,\n alignOffset,\n collisionBoundary,\n collisionPadding,\n sticky,\n arrowPadding,\n disableAnchorTracking,\n collisionAvoidance,\n ...props\n },\n ref,\n ) => {\n // Default to the nearest SideDialog/Drawer popup so the dropdown stays\n // interactive inside a modal drawer; an explicit `container` still wins.\n const resolvedContainer = usePortalContainer(container);\n const menu = useFluidMenu<HTMLDivElement>();\n const positionerProps: SelectContentPositionerProps = {\n side,\n align,\n sideOffset,\n alignItemWithTrigger,\n anchor,\n positionMethod,\n alignOffset,\n collisionBoundary,\n collisionPadding,\n sticky,\n arrowPadding,\n disableAnchorTracking,\n collisionAvoidance,\n };\n\n return (\n <SelectPrimitive.Portal container={resolvedContainer}>\n <SelectPrimitive.Positioner className={menuPositionerClass} {...positionerProps}>\n <SelectPrimitive.Popup ref={ref} className={cn(menuPopupClass, className)} {...props}>\n <SelectPrimitive.List className={menu.containerClassName} {...menu.getContainerProps({})}>\n <FluidMenuItems menu={menu}>{children}</FluidMenuItems>\n </SelectPrimitive.List>\n </SelectPrimitive.Popup>\n </SelectPrimitive.Positioner>\n </SelectPrimitive.Portal>\n );\n },\n);\nSelectContent.displayName = 'SelectContent';\n\nexport type SelectItemProps = Omit<SelectPrimitive.Item.Props, 'className'> & {\n className?: string;\n};\n\nconst SelectItem = React.forwardRef<HTMLDivElement, SelectItemProps>(({ className, children, ...props }, ref) => (\n <SelectPrimitive.Item ref={useFluidMenuItemRef(ref)} className={cn(menuItemClass, className)} {...props}>\n <SelectPrimitive.ItemText>{children}</SelectPrimitive.ItemText>\n <SelectPrimitive.ItemIndicator className={menuItemCheckClass}>\n <Check />\n </SelectPrimitive.ItemIndicator>\n </SelectPrimitive.Item>\n));\nSelectItem.displayName = 'SelectItem';\n\nexport { Select, SelectGroup, SelectValue, SelectTrigger, SelectContent, SelectItem };\n"],"names":["SelectPrimitive"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"select-DJQYAVcm.cjs","sources":["../src/ds/components/Select/select.tsx"],"sourcesContent":["import { Select as SelectPrimitive } from '@base-ui/react/select';\nimport type { SelectPopupProps, SelectPositionerProps } from '@base-ui/react/select';\nimport { Check, ChevronDown } from 'lucide-react';\nimport * as React from 'react';\n\nimport { buttonVariants } from '../Button/Button';\nimport type { TextButtonSize } from '../Button/Button';\nimport { keepOwnAccessibleName } from '@/ds/components/Field/field-control-aria';\nimport { controlTriggerOpenState } from '@/ds/primitives/control-size';\nimport { FLOATING_POSITION_METHOD } from '@/ds/primitives/floating';\nimport { FluidMenuItems, useFluidMenu, useFluidMenuItemRef } from '@/ds/primitives/fluid-menu';\nimport { fieldTriggerErrorBorder, fieldTriggerStyle, fieldTriggerWidthStyle } from '@/ds/primitives/form-element';\nimport { menuItemCheckClass, menuItemClass, menuPopupClass, menuPositionerClass } from '@/ds/primitives/menu-item';\nimport { usePortalContainer } from '@/ds/primitives/portal-container';\nimport { transitions } from '@/ds/primitives/transitions';\nimport { cn } from '@/lib/utils';\n\n/**\n * Select migrated from `@radix-ui/react-select` to Base UI (`@base-ui/react/select`).\n *\n * The public API (`Select`, `SelectGroup`, `SelectValue`, `SelectTrigger`,\n * `SelectContent`, `SelectItem`) is intentionally kept stable so existing\n * consumers do not need changes.\n *\n * Notable behavioral differences vs. Radix that consumers should be aware of:\n * - `onValueChange` now receives a second `eventDetails` argument. Existing\n * handlers typed as `(value: string) => void` keep working (extra arg ignored).\n * - The dropdown no longer overlaps the trigger by default\n * (`alignItemWithTrigger={false}`), matching the previous Radix `popper`\n * positioning behavior.\n *\n * Implementation note: unlike Radix, Base UI's `Select.Value` can only resolve\n * a selected value to its label once the popup has mounted (it reads labels\n * from rendered items). To preserve the Radix behavior where the trigger shows\n * the selected label even while closed, `Select` auto-derives an `items` map\n * from the `SelectItem`s declared inside `SelectContent` and passes it to\n * `Select.Root`. Consumers can still pass an explicit `items` prop to override.\n */\ntype SelectItemNode = React.ReactElement<{ value: unknown; children?: React.ReactNode }>;\n\nfunction isSelectItem(node: React.ReactNode): node is SelectItemNode {\n return React.isValidElement(node) && (node.type as { displayName?: string })?.displayName === 'SelectItem';\n}\n\n/** Recursively collect `{ value, label }` pairs from declared `SelectItem`s. */\nfunction collectItems(children: React.ReactNode, acc: Array<{ value: unknown; label: React.ReactNode }>): void {\n React.Children.forEach(children, child => {\n if (!React.isValidElement(child)) return;\n if (isSelectItem(child)) {\n acc.push({ value: child.props.value, label: child.props.children });\n return;\n }\n const nested = (child.props as { children?: React.ReactNode })?.children;\n if (nested != null) collectItems(nested, acc);\n });\n}\n\ntype SelectRootProps<Value> = SelectPrimitive.Root.Props<Value, false>;\ntype SelectChangeDetails = Parameters<NonNullable<SelectRootProps<unknown>['onValueChange']>>[1];\n\n/**\n * `onValueChange` is intentionally narrowed to a non-null value: these selects\n * always hold a value once changed, which keeps existing `(value) => void`\n * consumer handlers valid (Base UI's own callback type is `Value | null`).\n */\ntype SelectProps<Value = string> = Omit<SelectRootProps<Value>, 'onValueChange'> & {\n onValueChange?: (value: Value, eventDetails: SelectChangeDetails) => void;\n};\n\nfunction Select<Value = string>({ children, items, onValueChange, ...props }: SelectProps<Value>) {\n const derivedItems = React.useMemo(() => {\n if (items != null) return items;\n const acc: Array<{ value: unknown; label: React.ReactNode }> = [];\n collectItems(children, acc);\n return acc.length > 0 ? acc : undefined;\n }, [items, children]);\n\n return (\n <SelectPrimitive.Root\n items={derivedItems as SelectRootProps<Value>['items']}\n onValueChange={onValueChange ? (value, eventDetails) => onValueChange(value as Value, eventDetails) : undefined}\n {...props}\n >\n {children}\n </SelectPrimitive.Root>\n );\n}\nSelect.displayName = 'Select';\n\nconst SelectGroup = SelectPrimitive.Group;\n\nexport type SelectValueProps = Omit<SelectPrimitive.Value.Props, 'className'> & {\n className?: string;\n};\n\n/**\n * Displays the selected value. Radix's `Select.Value` took a `placeholder`\n * prop and rendered the selected item's text automatically; Base UI's\n * `Select.Value` behaves the same way (renders the value, falls back to\n * `placeholder` when nothing is selected), so this is a thin passthrough.\n */\nconst SelectValue = React.forwardRef<HTMLSpanElement, SelectValueProps>(({ className, ...props }, ref) => (\n <SelectPrimitive.Value ref={ref} className={cn('truncate', className)} {...props} />\n));\nSelectValue.displayName = 'SelectValue';\n\n/**\n * A select is a form field, so it reuses the Button's size/shape recipe with\n * these looks: `default` (the Input's overlay surface — the default here too,\n * so a select sits next to an Input as the same kind of thing) and `ghost`\n * (borderless, for dense toolbars/inline pickers). The high-emphasis `primary` look is the only one intentionally NOT\n * offered (a field is not a call-to-action).\n */\nexport type SelectTriggerVariant = 'default' | 'ghost';\ntype SelectTriggerLegacyVariant = 'primary';\n\nexport type SelectTriggerProps = Omit<SelectPrimitive.Trigger.Props, 'className'> & {\n className?: string;\n size?: TextButtonSize;\n variant?: SelectTriggerVariant | SelectTriggerLegacyVariant;\n};\n\nfunction normalizeSelectTriggerVariant(\n variant: SelectTriggerVariant | SelectTriggerLegacyVariant,\n): SelectTriggerVariant {\n return variant === 'primary' ? 'default' : variant;\n}\n\nconst SelectTrigger = React.forwardRef<HTMLButtonElement, SelectTriggerProps>(\n ({ className, children, size = 'md', variant = 'default', ...props }, ref) => {\n const visualVariant = normalizeSelectTriggerVariant(variant);\n\n return (\n <SelectPrimitive.Trigger\n ref={ref}\n data-slot=\"select-trigger\"\n // A select = a button + a trailing chevron: reuse the Button recipe\n // (variant colors, size = height/text/padding/radius, unified border\n // focus, disabled) and layer only the select-specific extras.\n className={cn(\n buttonVariants({ variant: visualVariant, size }),\n visualVariant === 'default' && fieldTriggerStyle,\n // Fill the field and push the value left / chevron right (Button's\n // base centers its content with `justify-center`).\n fieldTriggerWidthStyle,\n 'justify-between text-body-sm',\n // Read as \"active\" while the menu is open, per variant (see map above).\n controlTriggerOpenState[visualVariant],\n 'data-[placeholder]:text-muted-foreground',\n fieldTriggerErrorBorder,\n '[&>span]:truncate',\n className,\n )}\n {...props}\n {...keepOwnAccessibleName(props)}\n >\n {children}\n {/* `SelectPrimitive.Icon` renders the provided element in place of its\n default `<span>`, so the chevron would land as a *direct* `<svg>`\n child of the trigger — where Button's `TEXT_MODE_ADORNMENTS`\n `[&>svg]` rules (negative `mx`, forced 50% opacity, 1.1em sizing)\n would distort and mis-position it. Wrapping it in a `<span>` keeps\n the svg one level deep so those rules can't reach it, leaving the\n chevron pinned at the right edge at its intended size and color. */}\n <SelectPrimitive.Icon\n render={\n <span className=\"flex shrink-0 items-center\">\n <ChevronDown className={cn('size-4 text-muted-foreground', transitions.colors)} />\n </span>\n }\n />\n </SelectPrimitive.Trigger>\n );\n },\n);\nSelectTrigger.displayName = 'SelectTrigger';\n\ntype SelectContentPositionerProps = Omit<SelectPositionerProps, keyof SelectPopupProps>;\n\nexport type SelectContentProps = Omit<SelectPopupProps, 'className'> &\n SelectContentPositionerProps & {\n className?: string;\n /**\n * Kept for API compatibility with the previous Radix API. Radix supported\n * `position=\"popper\" | \"item-aligned\"`; Base UI always uses popper-style\n * positioning so this prop is accepted but has no effect.\n */\n position?: 'popper' | 'item-aligned';\n /** Optional portal container, forwarded to `Select.Portal`. */\n container?: HTMLElement | null;\n };\n\nconst SelectContent = React.forwardRef<HTMLDivElement, SelectContentProps>(\n (\n {\n className,\n children,\n position: _position,\n container,\n side = 'bottom',\n align = 'start',\n sideOffset = 4,\n alignItemWithTrigger = false,\n anchor,\n positionMethod = FLOATING_POSITION_METHOD,\n alignOffset,\n collisionBoundary,\n collisionPadding,\n sticky,\n arrowPadding,\n disableAnchorTracking,\n collisionAvoidance,\n ...props\n },\n ref,\n ) => {\n // Default to the nearest SideDialog/Drawer popup so the dropdown stays\n // interactive inside a modal drawer; an explicit `container` still wins.\n const resolvedContainer = usePortalContainer(container);\n const menu = useFluidMenu<HTMLDivElement>();\n const positionerProps: SelectContentPositionerProps = {\n side,\n align,\n sideOffset,\n alignItemWithTrigger,\n anchor,\n positionMethod,\n alignOffset,\n collisionBoundary,\n collisionPadding,\n sticky,\n arrowPadding,\n disableAnchorTracking,\n collisionAvoidance,\n };\n\n return (\n <SelectPrimitive.Portal container={resolvedContainer}>\n <SelectPrimitive.Positioner className={menuPositionerClass} {...positionerProps}>\n <SelectPrimitive.Popup ref={ref} className={cn(menuPopupClass, className)} {...props}>\n <SelectPrimitive.List className={menu.containerClassName} {...menu.getContainerProps({})}>\n <FluidMenuItems menu={menu}>{children}</FluidMenuItems>\n </SelectPrimitive.List>\n </SelectPrimitive.Popup>\n </SelectPrimitive.Positioner>\n </SelectPrimitive.Portal>\n );\n },\n);\nSelectContent.displayName = 'SelectContent';\n\nexport type SelectItemProps = Omit<SelectPrimitive.Item.Props, 'className'> & {\n className?: string;\n};\n\nconst SelectItem = React.forwardRef<HTMLDivElement, SelectItemProps>(({ className, children, ...props }, ref) => (\n <SelectPrimitive.Item ref={useFluidMenuItemRef(ref)} className={cn(menuItemClass, className)} {...props}>\n <SelectPrimitive.ItemText>{children}</SelectPrimitive.ItemText>\n <SelectPrimitive.ItemIndicator className={menuItemCheckClass}>\n <Check />\n </SelectPrimitive.ItemIndicator>\n </SelectPrimitive.Item>\n));\nSelectItem.displayName = 'SelectItem';\n\nexport { Select, SelectGroup, SelectValue, SelectTrigger, SelectContent, SelectItem };\n"],"names":["React","jsx","SelectPrimitive","cn","jsxs","buttonVariants","fieldTriggerStyle","fieldTriggerWidthStyle","controlTriggerOpenState","fieldTriggerErrorBorder","keepOwnAccessibleName","ChevronDown","transitions","FLOATING_POSITION_METHOD","usePortalContainer","useFluidMenu","menuPositionerClass","menuPopupClass","FluidMenuItems","useFluidMenuItemRef","menuItemClass","menuItemCheckClass","Check"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAwCA,SAAS,aAAa,IAAA,EAA+C;AACnE,EAAA,OAAOA,iBAAM,cAAA,CAAe,IAAI,CAAA,IAAM,IAAA,CAAK,MAAmC,WAAA,KAAgB,YAAA;AAChG;AAGA,SAAS,YAAA,CAAa,UAA2B,GAAA,EAA8D;AAC7G,EAAAA,gBAAA,CAAM,QAAA,CAAS,OAAA,CAAQ,QAAA,EAAU,CAAA,KAAA,KAAS;AACxC,IAAA,IAAI,CAACA,gBAAA,CAAM,cAAA,CAAe,KAAK,CAAA,EAAG;AAClC,IAAA,IAAI,YAAA,CAAa,KAAK,CAAA,EAAG;AACvB,MAAA,GAAA,CAAI,IAAA,CAAK,EAAE,KAAA,EAAO,KAAA,CAAM,KAAA,CAAM,OAAO,KAAA,EAAO,KAAA,CAAM,KAAA,CAAM,QAAA,EAAU,CAAA;AAClE,MAAA;AAAA,IACF;AACA,IAAA,MAAM,MAAA,GAAU,MAAM,KAAA,EAA0C,QAAA;AAChE,IAAA,IAAI,MAAA,IAAU,IAAA,EAAM,YAAA,CAAa,MAAA,EAAQ,GAAG,CAAA;AAAA,EAC9C,CAAC,CAAA;AACH;AAcA,SAAS,OAAuB,EAAE,QAAA,EAAU,OAAO,aAAA,EAAe,GAAG,OAAM,EAAuB;AAChG,EAAA,MAAM,YAAA,GAAeA,gBAAA,CAAM,OAAA,CAAQ,MAAM;AACvC,IAAA,IAAI,KAAA,IAAS,MAAM,OAAO,KAAA;AAC1B,IAAA,MAAM,MAAyD,EAAC;AAChE,IAAA,YAAA,CAAa,UAAU,GAAG,CAAA;AAC1B,IAAA,OAAO,GAAA,CAAI,MAAA,GAAS,CAAA,GAAI,GAAA,GAAM,MAAA;AAAA,EAChC,CAAA,EAAG,CAAC,KAAA,EAAO,QAAQ,CAAC,CAAA;AAEpB,EAAA,uBACEC,cAAA;AAAA,IAACC,aAAA,CAAgB,IAAA;AAAA,IAAhB;AAAA,MACC,KAAA,EAAO,YAAA;AAAA,MACP,aAAA,EAAe,gBAAgB,CAAC,KAAA,EAAO,iBAAiB,aAAA,CAAc,KAAA,EAAgB,YAAY,CAAA,GAAI,MAAA;AAAA,MACrG,GAAG,KAAA;AAAA,MAEH;AAAA;AAAA,GACH;AAEJ;AACA,MAAA,CAAO,WAAA,GAAc,QAAA;AAErB,MAAM,cAAcA,aAAA,CAAgB;AAYpC,MAAM,WAAA,GAAcF,iBAAM,UAAA,CAA8C,CAAC,EAAE,SAAA,EAAW,GAAG,KAAA,EAAM,EAAG,GAAA,qBAChGC,cAAA,CAACC,cAAgB,KAAA,EAAhB,EAAsB,KAAU,SAAA,EAAWC,WAAA,CAAG,YAAY,SAAS,CAAA,EAAI,GAAG,KAAA,EAAO,CACnF;AACD,WAAA,CAAY,WAAA,GAAc,aAAA;AAkB1B,SAAS,8BACP,OAAA,EACsB;AACtB,EAAA,OAAO,OAAA,KAAY,YAAY,SAAA,GAAY,OAAA;AAC7C;AAEA,MAAM,gBAAgBH,gBAAA,CAAM,UAAA;AAAA,EAC1B,CAAC,EAAE,SAAA,EAAW,QAAA,EAAU,IAAA,GAAO,IAAA,EAAM,OAAA,GAAU,SAAA,EAAW,GAAG,KAAA,EAAM,EAAG,GAAA,KAAQ;AAC5E,IAAA,MAAM,aAAA,GAAgB,8BAA8B,OAAO,CAAA;AAE3D,IAAA,uBACEI,eAAA;AAAA,MAACF,aAAA,CAAgB,OAAA;AAAA,MAAhB;AAAA,QACC,GAAA;AAAA,QACA,WAAA,EAAU,gBAAA;AAAA,QAIV,SAAA,EAAWC,WAAA;AAAA,UACTE,qBAAA,CAAe,EAAE,OAAA,EAAS,aAAA,EAAe,MAAM,CAAA;AAAA,UAC/C,kBAAkB,SAAA,IAAaC,wCAAA;AAAA;AAAA;AAAA,UAG/BC,6CAAA;AAAA,UACA,8BAAA;AAAA;AAAA,UAEAC,+CAAwB,aAAa,CAAA;AAAA,UACrC,0CAAA;AAAA,UACAC,8CAAA;AAAA,UACA,mBAAA;AAAA,UACA;AAAA,SACF;AAAA,QACC,GAAG,KAAA;AAAA,QACH,GAAGC,uCAAsB,KAAK,CAAA;AAAA,QAE9B,QAAA,EAAA;AAAA,UAAA,QAAA;AAAA,0BAQDT,cAAA;AAAA,YAACC,aAAA,CAAgB,IAAA;AAAA,YAAhB;AAAA,cACC,MAAA,kBACED,cAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,4BAAA,EACd,QAAA,kBAAAA,cAAA,CAACU,uBAAA,EAAA,EAAY,SAAA,EAAWR,WAAA,CAAG,8BAAA,EAAgCS,kCAAA,CAAY,MAAM,GAAG,CAAA,EAClF;AAAA;AAAA;AAEJ;AAAA;AAAA,KACF;AAAA,EAEJ;AACF;AACA,aAAA,CAAc,WAAA,GAAc,eAAA;AAiB5B,MAAM,gBAAgBZ,gBAAA,CAAM,UAAA;AAAA,EAC1B,CACE;AAAA,IACE,SAAA;AAAA,IACA,QAAA;AAAA,IACA,QAAA,EAAU,SAAA;AAAA,IACV,SAAA;AAAA,IACA,IAAA,GAAO,QAAA;AAAA,IACP,KAAA,GAAQ,OAAA;AAAA,IACR,UAAA,GAAa,CAAA;AAAA,IACb,oBAAA,GAAuB,KAAA;AAAA,IACvB,MAAA;AAAA,IACA,cAAA,GAAiBa,4CAAA;AAAA,IACjB,WAAA;AAAA,IACA,iBAAA;AAAA,IACA,gBAAA;AAAA,IACA,MAAA;AAAA,IACA,YAAA;AAAA,IACA,qBAAA;AAAA,IACA,kBAAA;AAAA,IACA,GAAG;AAAA,KAEL,GAAA,KACG;AAGH,IAAA,MAAM,iBAAA,GAAoBC,8CAAmB,SAAS,CAAA;AACtD,IAAA,MAAM,OAAOC,iCAAA,EAA6B;AAC1C,IAAA,MAAM,eAAA,GAAgD;AAAA,MACpD,IAAA;AAAA,MACA,KAAA;AAAA,MACA,UAAA;AAAA,MACA,oBAAA;AAAA,MACA,MAAA;AAAA,MACA,cAAA;AAAA,MACA,WAAA;AAAA,MACA,iBAAA;AAAA,MACA,gBAAA;AAAA,MACA,MAAA;AAAA,MACA,YAAA;AAAA,MACA,qBAAA;AAAA,MACA;AAAA,KACF;AAEA,IAAA,uBACEd,cAAA,CAACC,cAAgB,MAAA,EAAhB,EAAuB,WAAW,iBAAA,EACjC,QAAA,kBAAAD,cAAA,CAACC,cAAgB,UAAA,EAAhB,EAA2B,WAAWc,uCAAA,EAAsB,GAAG,iBAC9D,QAAA,kBAAAf,cAAA,CAACC,aAAA,CAAgB,OAAhB,EAAsB,GAAA,EAAU,SAAA,EAAWC,WAAA,CAAGc,kCAAA,EAAgB,SAAS,GAAI,GAAG,KAAA,EAC7E,yCAACf,aAAA,CAAgB,IAAA,EAAhB,EAAqB,SAAA,EAAW,IAAA,CAAK,oBAAqB,GAAG,IAAA,CAAK,kBAAkB,EAAE,GACrF,QAAA,kBAAAD,cAAA,CAACiB,mCAAA,EAAA,EAAe,MAAa,QAAA,EAAS,CAAA,EACxC,CAAA,EACF,CAAA,EACF,CAAA,EACF,CAAA;AAAA,EAEJ;AACF;AACA,aAAA,CAAc,WAAA,GAAc,eAAA;AAM5B,MAAM,UAAA,GAAalB,gBAAA,CAAM,UAAA,CAA4C,CAAC,EAAE,WAAW,QAAA,EAAU,GAAG,KAAA,EAAM,EAAG,GAAA,qBACvGI,eAAA,CAACF,cAAgB,IAAA,EAAhB,EAAqB,GAAA,EAAKiB,wCAAA,CAAoB,GAAG,CAAA,EAAG,SAAA,EAAWhB,WAAA,CAAGiB,iCAAA,EAAe,SAAS,CAAA,EAAI,GAAG,KAAA,EAChG,QAAA,EAAA;AAAA,kBAAAnB,cAAA,CAACC,aAAA,CAAgB,QAAA,EAAhB,EAA0B,QAAA,EAAS,CAAA;AAAA,kBACpCD,cAAA,CAACC,cAAgB,aAAA,EAAhB,EAA8B,WAAWmB,sCAAA,EACxC,QAAA,kBAAApB,cAAA,CAACqB,qBAAM,CAAA,EACT;AAAA,CAAA,EACF,CACD;AACD,UAAA,CAAW,WAAA,GAAc,YAAA;;;;;;;;;"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"tabs-root-C-ePF1y9.cjs","sources":["../src/ds/components/Tabs/tabs-list.tsx","../src/ds/components/Tabs/tabs-root.tsx"],"sourcesContent":["import { Tabs as BaseTabs } from '@base-ui/react/tabs';\nimport { cva } from 'class-variance-authority';\nimport type { VariantProps } from 'class-variance-authority';\nimport { ChevronDown, X } from 'lucide-react';\nimport { Fragment, useCallback, useContext, useLayoutEffect, useMemo, useRef, useState } from 'react';\nimport { DropdownMenu } from '../DropdownMenu/dropdown-menu';\nimport { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger } from '../Tooltip/tooltip';\nimport { TabListContext, TabsContext } from './tabs-context';\nimport type { TabMeasurement } from './tabs-context';\nimport { transitions } from '@/ds/primitives/transitions';\nimport { cn } from '@/lib/utils';\n\nconst tabListVariants = cva('relative flex items-center text-body', {\n variants: {\n variant: {\n pill: 'w-fit gap-1 rounded-full bg-fill-subtle p-1',\n 'pill-ghost': 'w-fit gap-0.5 rounded-full',\n },\n },\n defaultVariants: {\n variant: 'pill',\n },\n});\n\ntype TabListVariantsProps = VariantProps<typeof tabListVariants>;\n\nexport type TabListVariant = NonNullable<TabListVariantsProps['variant']>;\n\nexport type TabListSize = 'sm' | 'md';\n\nexport type TabListProps = Omit<TabListVariantsProps, 'variant'> & {\n children: React.ReactNode;\n className?: string;\n sticky?: boolean;\n /** Control height of each tab; `sm` lines up with `size=\"sm\"` buttons (e.g. inside a `DataPanel.Header`). */\n size?: TabListSize;\n /** `pill` sits the selected tab on a track; `pill-ghost` drops the track. */\n variant?: TabListVariant | null;\n /**\n * Optional inline styles applied to the underlying tab list element.\n * To override the active tab indicator color, set the `--tab-indicator-color`\n * CSS variable, e.g. `style={{ '--tab-indicator-color': 'var(--info-indicator)' } as React.CSSProperties}`.\n */\n style?: React.CSSProperties;\n};\n\nexport const TabList = ({ children, className, variant, size = 'md', sticky, style }: TabListProps) => {\n const resolvedVariant = variant ?? 'pill';\n const tabs = useContext(TabsContext);\n const scrollRef = useRef<HTMLDivElement>(null);\n const closeRefs = useRef(new Map<string, HTMLDivElement>());\n const tabPositions = useRef(new Map<string, number>());\n const selectedValue = useRef(tabs?.value);\n const [available, setAvailable] = useState<number | null>(null);\n const [measurements, setMeasurements] = useState<TabMeasurement[]>([]);\n const register = useCallback((tab: TabMeasurement) => {\n setMeasurements(previous => {\n const existing = previous.find(item => item.value === tab.value);\n if (\n existing &&\n existing.element === tab.element &&\n existing.width === tab.width &&\n existing.label === tab.label &&\n existing.disabled === tab.disabled &&\n existing.onClick === tab.onClick &&\n existing.onClose === tab.onClose\n )\n return previous;\n const next = existing ? previous.map(item => (item.value === tab.value ? tab : item)) : [...previous, tab];\n return next.sort((a, b) => {\n if (a.element === b.element) return 0;\n return a.element.compareDocumentPosition(b.element) & Node.DOCUMENT_POSITION_FOLLOWING ? -1 : 1;\n });\n });\n }, []);\n const unregister = useCallback(\n (value: string) => setMeasurements(previous => previous.filter(tab => tab.value !== value)),\n [],\n );\n const contained = tabs?.appearance === 'contained';\n useLayoutEffect(() => {\n const viewport = scrollRef.current;\n if (!viewport || !contained) return;\n const measure = () => setAvailable(viewport.clientWidth);\n measure();\n if (!('ResizeObserver' in globalThis)) return;\n const observer = new ResizeObserver(measure);\n observer.observe(viewport);\n return () => observer.disconnect();\n }, [contained]);\n const gap = tabs?.frame === 'inset' ? 4 : 0;\n const frameReserve = tabs?.frame === 'inset' ? 30 : 0;\n const hiddenValues = useMemo(() => {\n const hidden = new Set<string>();\n if (!contained || available === null) return hidden;\n const tabTotal = measurements.reduce((sum, tab) => sum + tab.width, 0) + gap * Math.max(measurements.length - 1, 0);\n if (tabTotal + frameReserve <= available) return hidden;\n let remaining = available - frameReserve - 48;\n const active = measurements.find(tab => tab.value === tabs?.value);\n if (active) remaining -= active.width + gap;\n let full = false;\n for (const tab of measurements) {\n if (tab === active) continue;\n if (full || tab.width + gap > remaining) {\n full = true;\n hidden.add(tab.value);\n } else remaining -= tab.width + gap;\n }\n return hidden;\n }, [contained, available, measurements, gap, frameReserve, tabs?.value]);\n const hiddenTabs = measurements.filter(tab => hiddenValues.has(tab.value));\n const overflowX = measurements\n .filter(tab => !hiddenValues.has(tab.value))\n .reduce((sum, tab) => sum + tab.width + gap, tabs?.frame === 'inset' ? 4 : 0);\n const visibleClosableTabs = measurements.filter(tab => !hiddenValues.has(tab.value) && tab.onClose);\n const listContext = useMemo(\n () => ({ variant: resolvedVariant, size, hiddenValues, register, unregister }),\n [resolvedVariant, size, hiddenValues, register, unregister],\n );\n useLayoutEffect(() => {\n const nextPositions = new Map(tabPositions.current);\n const reduceMotion = window.matchMedia?.('(prefers-reduced-motion: reduce)').matches ?? false;\n for (const tab of measurements) {\n if (hiddenValues.has(tab.value)) continue;\n const left = tab.element.offsetLeft;\n const previousLeft = tabPositions.current.get(tab.value);\n const close = closeRefs.current.get(tab.value);\n if (close) {\n close.style.left = `${left}px`;\n close.style.top = `${tab.element.offsetTop}px`;\n close.style.width = `${tab.element.offsetWidth}px`;\n close.style.height = `${tab.element.offsetHeight}px`;\n }\n const delta = previousLeft === undefined ? 0 : previousLeft - left;\n const shouldAnimate = tab.value !== tabs?.value && Math.abs(delta) <= 32;\n if (!reduceMotion && shouldAnimate && delta !== 0 && 'animate' in tab.element) {\n tab.element.animate([{ transform: `translateX(${delta}px)` }, { transform: 'translateX(0)' }], {\n duration: 180,\n easing: 'cubic-bezier(0.32, 0.72, 0, 1)',\n });\n }\n nextPositions.set(tab.value, left);\n }\n for (const value of nextPositions.keys()) {\n if (!measurements.some(tab => tab.value === value)) nextPositions.delete(value);\n }\n tabPositions.current = nextPositions;\n }, [hiddenValues, measurements, tabs?.value]);\n useLayoutEffect(() => {\n const previousValue = selectedValue.current;\n selectedValue.current = tabs?.value;\n const reduceMotion = window.matchMedia?.('(prefers-reduced-motion: reduce)').matches ?? false;\n if (!contained || tabs?.frame !== 'inset' || previousValue === tabs?.value || reduceMotion) return;\n const indicator = scrollRef.current?.querySelector<HTMLElement>('[data-slot=\"tabs-indicator\"]');\n if (!indicator || !('animate' in indicator)) return;\n indicator.animate(\n [\n { opacity: 0.72, scale: '0.97' },\n { opacity: 1, scale: '1' },\n ],\n {\n duration: 140,\n easing: 'cubic-bezier(0.32, 0.72, 0, 1)',\n },\n );\n }, [contained, tabs?.frame, tabs?.value]);\n\n return (\n <TabListContext.Provider value={listContext}>\n <TooltipProvider delay={200}>\n <div\n ref={scrollRef}\n data-slot=\"tabs-list-scroll\"\n className={cn('relative w-full overflow-x-auto', sticky && 'sticky top-0 z-10 bg-background')}\n >\n <BaseTabs.List\n data-slot=\"tabs-list\"\n data-overflow={hiddenTabs.length > 0 || undefined}\n data-variant={resolvedVariant}\n data-size={size}\n className={cn('group/tabs-list', tabListVariants({ variant: resolvedVariant }), className)}\n style={style}\n >\n {children}\n <BaseTabs.Indicator\n className={cn(\n 'absolute top-1/2 left-0 z-0 rounded-full bg-[var(--tab-indicator-color,var(--fill-hover))]',\n resolvedVariant === 'pill' ? 'h-[calc(100%-0.5rem)]' : 'h-full',\n 'w-[var(--active-tab-width)]',\n 'transition-[width,transform] duration-200 ease-in-out motion-reduce:transition-none',\n )}\n data-slot=\"tabs-indicator\"\n style={{ transform: 'translateY(var(--tabs-indicator-y, -50%)) translateX(var(--active-tab-left))' }}\n />\n </BaseTabs.List>\n <div data-slot=\"tabs-close-actions\">\n {visibleClosableTabs.map(tab => (\n <div\n key={tab.value}\n ref={element => {\n if (element) closeRefs.current.set(tab.value, element);\n else closeRefs.current.delete(tab.value);\n }}\n data-slot=\"tab-close-item\"\n data-visible={tabs?.value === tab.value || undefined}\n >\n <Tooltip>\n <TooltipTrigger\n render={\n <button\n type=\"button\"\n tabIndex={tabs?.value === tab.value ? 0 : -1}\n data-slot=\"tab-close\"\n onClick={tab.onClose}\n className={cn(\n 'rounded p-0.5 hover:bg-fill-hover hover:text-destructive-foreground',\n transitions.colors,\n )}\n />\n }\n >\n <span className=\"sr-only\">Close {tab.label}</span>\n <X aria-hidden=\"true\" className=\"size-3\" />\n </TooltipTrigger>\n <TooltipContent>Close {tab.label}</TooltipContent>\n </Tooltip>\n </div>\n ))}\n </div>\n {hiddenTabs.length > 0 && (\n <div\n data-slot=\"tabs-overflow\"\n style={{ transform: `translateX(${overflowX}px)` }}\n className=\"tabs-overflow\"\n >\n <DropdownMenu>\n <DropdownMenu.Trigger\n aria-label={`${hiddenTabs.length} more tabs`}\n variant=\"ghost\"\n size=\"sm\"\n className=\"tabular-nums\"\n >\n +{hiddenTabs.length}\n <ChevronDown aria-hidden=\"true\" className=\"size-3\" />\n </DropdownMenu.Trigger>\n <DropdownMenu.Content className=\"grid\">\n {hiddenTabs.map((tab, index) => (\n <Fragment key={tab.value}>\n <DropdownMenu.Item\n data-slot=\"tabs-overflow-tab\"\n disabled={tab.disabled}\n className={tab.onClose ? 'pr-9' : undefined}\n style={{ gridArea: `${index + 1} / 1` }}\n onClick={() => {\n tabs?.select(tab.value);\n tab.onClick?.();\n }}\n >\n {tab.label}\n </DropdownMenu.Item>\n {tab.onClose ? (\n <Tooltip>\n <TooltipTrigger\n render={\n <DropdownMenu.Item\n data-slot=\"tabs-overflow-close\"\n className=\"pointer-events-none z-10 m-1 size-6 self-center justify-self-end p-0 opacity-0 hover:text-destructive-foreground data-[highlighted]:text-destructive-foreground\"\n style={{ gridArea: `${index + 1} / 1` }}\n onClick={tab.onClose}\n />\n }\n >\n <span className=\"sr-only\">Close {tab.label}</span>\n <X aria-hidden=\"true\" className=\"size-3\" />\n </TooltipTrigger>\n <TooltipContent side=\"right\">Close {tab.label}</TooltipContent>\n </Tooltip>\n ) : null}\n </Fragment>\n ))}\n </DropdownMenu.Content>\n </DropdownMenu>\n </div>\n )}\n </div>\n </TooltipProvider>\n </TabListContext.Provider>\n );\n};\n","import { Tabs as BaseTabs } from '@base-ui/react/tabs';\nimport { useState } from 'react';\nimport type { ComponentProps, ReactNode } from 'react';\nimport { TabsContext } from './tabs-context';\nimport './tabs.css';\nimport { cn } from '@/lib/utils';\n\nexport type TabsRootProps<T extends string> = Omit<\n ComponentProps<'div'>,\n 'children' | 'defaultValue' | 'value' | 'onChange'\n> & {\n children: ReactNode;\n defaultTab: T;\n value?: T;\n onValueChange?: (value: T) => void;\n appearance?: 'default' | 'contained';\n frame?: 'stroke' | 'inset';\n className?: string;\n};\n\nexport const Tabs = <T extends string>({\n children,\n defaultTab,\n value,\n onValueChange,\n appearance = 'default',\n frame = 'stroke',\n className,\n ...props\n}: TabsRootProps<T>) => {\n const [uncontrolledValue, setUncontrolledValue] = useState(defaultTab);\n const selectedValue = value ?? uncontrolledValue;\n const select = (next: T) => {\n setUncontrolledValue(next);\n onValueChange?.(next);\n };\n return (\n <TabsContext.Provider value={{ appearance, frame, value: selectedValue, select }}>\n <BaseTabs.Root\n defaultValue={defaultTab}\n value={selectedValue}\n onValueChange={select}\n data-slot=\"tabs\"\n data-appearance={appearance}\n data-frame={frame}\n className={cn('group/tabs', appearance === 'default' ? 'overflow-y-auto' : 'w-full min-w-0', className)}\n {...props}\n >\n {children}\n </BaseTabs.Root>\n </TabsContext.Provider>\n );\n};\n"],"names":["cva","tabs","useContext","TabsContext","useRef","useState","useCallback","useLayoutEffect","useMemo","jsx","TabListContext","TooltipProvider","jsxs","cn","BaseTabs","Tooltip","TooltipTrigger","transitions","X","TooltipContent","DropdownMenu","ChevronDown","Fragment"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"tabs-root-lrZZ3KwH.js","sources":["../src/ds/components/Tabs/tabs-list.tsx","../src/ds/components/Tabs/tabs-root.tsx"],"sourcesContent":["import { Tabs as BaseTabs } from '@base-ui/react/tabs';\nimport { cva } from 'class-variance-authority';\nimport type { VariantProps } from 'class-variance-authority';\nimport { ChevronDown, X } from 'lucide-react';\nimport { Fragment, useCallback, useContext, useLayoutEffect, useMemo, useRef, useState } from 'react';\nimport { DropdownMenu } from '../DropdownMenu/dropdown-menu';\nimport { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger } from '../Tooltip/tooltip';\nimport { TabListContext, TabsContext } from './tabs-context';\nimport type { TabMeasurement } from './tabs-context';\nimport { transitions } from '@/ds/primitives/transitions';\nimport { cn } from '@/lib/utils';\n\nconst tabListVariants = cva('relative flex items-center text-body', {\n variants: {\n variant: {\n pill: 'w-fit gap-1 rounded-full bg-fill-subtle p-1',\n 'pill-ghost': 'w-fit gap-0.5 rounded-full',\n },\n },\n defaultVariants: {\n variant: 'pill',\n },\n});\n\ntype TabListVariantsProps = VariantProps<typeof tabListVariants>;\n\nexport type TabListVariant = NonNullable<TabListVariantsProps['variant']>;\n\nexport type TabListSize = 'sm' | 'md';\n\nexport type TabListProps = Omit<TabListVariantsProps, 'variant'> & {\n children: React.ReactNode;\n className?: string;\n sticky?: boolean;\n /** Control height of each tab; `sm` lines up with `size=\"sm\"` buttons (e.g. inside a `DataPanel.Header`). */\n size?: TabListSize;\n /** `pill` sits the selected tab on a track; `pill-ghost` drops the track. */\n variant?: TabListVariant | null;\n /**\n * Optional inline styles applied to the underlying tab list element.\n * To override the active tab indicator color, set the `--tab-indicator-color`\n * CSS variable, e.g. `style={{ '--tab-indicator-color': 'var(--info-indicator)' } as React.CSSProperties}`.\n */\n style?: React.CSSProperties;\n};\n\nexport const TabList = ({ children, className, variant, size = 'md', sticky, style }: TabListProps) => {\n const resolvedVariant = variant ?? 'pill';\n const tabs = useContext(TabsContext);\n const scrollRef = useRef<HTMLDivElement>(null);\n const closeRefs = useRef(new Map<string, HTMLDivElement>());\n const tabPositions = useRef(new Map<string, number>());\n const selectedValue = useRef(tabs?.value);\n const [available, setAvailable] = useState<number | null>(null);\n const [measurements, setMeasurements] = useState<TabMeasurement[]>([]);\n const register = useCallback((tab: TabMeasurement) => {\n setMeasurements(previous => {\n const existing = previous.find(item => item.value === tab.value);\n if (\n existing &&\n existing.element === tab.element &&\n existing.width === tab.width &&\n existing.label === tab.label &&\n existing.disabled === tab.disabled &&\n existing.onClick === tab.onClick &&\n existing.onClose === tab.onClose\n )\n return previous;\n const next = existing ? previous.map(item => (item.value === tab.value ? tab : item)) : [...previous, tab];\n return next.sort((a, b) => {\n if (a.element === b.element) return 0;\n return a.element.compareDocumentPosition(b.element) & Node.DOCUMENT_POSITION_FOLLOWING ? -1 : 1;\n });\n });\n }, []);\n const unregister = useCallback(\n (value: string) => setMeasurements(previous => previous.filter(tab => tab.value !== value)),\n [],\n );\n const contained = tabs?.appearance === 'contained';\n useLayoutEffect(() => {\n const viewport = scrollRef.current;\n if (!viewport || !contained) return;\n const measure = () => setAvailable(viewport.clientWidth);\n measure();\n if (!('ResizeObserver' in globalThis)) return;\n const observer = new ResizeObserver(measure);\n observer.observe(viewport);\n return () => observer.disconnect();\n }, [contained]);\n const gap = tabs?.frame === 'inset' ? 4 : 0;\n const frameReserve = tabs?.frame === 'inset' ? 30 : 0;\n const hiddenValues = useMemo(() => {\n const hidden = new Set<string>();\n if (!contained || available === null) return hidden;\n const tabTotal = measurements.reduce((sum, tab) => sum + tab.width, 0) + gap * Math.max(measurements.length - 1, 0);\n if (tabTotal + frameReserve <= available) return hidden;\n let remaining = available - frameReserve - 48;\n const active = measurements.find(tab => tab.value === tabs?.value);\n if (active) remaining -= active.width + gap;\n let full = false;\n for (const tab of measurements) {\n if (tab === active) continue;\n if (full || tab.width + gap > remaining) {\n full = true;\n hidden.add(tab.value);\n } else remaining -= tab.width + gap;\n }\n return hidden;\n }, [contained, available, measurements, gap, frameReserve, tabs?.value]);\n const hiddenTabs = measurements.filter(tab => hiddenValues.has(tab.value));\n const overflowX = measurements\n .filter(tab => !hiddenValues.has(tab.value))\n .reduce((sum, tab) => sum + tab.width + gap, tabs?.frame === 'inset' ? 4 : 0);\n const visibleClosableTabs = measurements.filter(tab => !hiddenValues.has(tab.value) && tab.onClose);\n const listContext = useMemo(\n () => ({ variant: resolvedVariant, size, hiddenValues, register, unregister }),\n [resolvedVariant, size, hiddenValues, register, unregister],\n );\n useLayoutEffect(() => {\n const nextPositions = new Map(tabPositions.current);\n const reduceMotion = window.matchMedia?.('(prefers-reduced-motion: reduce)').matches ?? false;\n for (const tab of measurements) {\n if (hiddenValues.has(tab.value)) continue;\n const left = tab.element.offsetLeft;\n const previousLeft = tabPositions.current.get(tab.value);\n const close = closeRefs.current.get(tab.value);\n if (close) {\n close.style.left = `${left}px`;\n close.style.top = `${tab.element.offsetTop}px`;\n close.style.width = `${tab.element.offsetWidth}px`;\n close.style.height = `${tab.element.offsetHeight}px`;\n }\n const delta = previousLeft === undefined ? 0 : previousLeft - left;\n const shouldAnimate = tab.value !== tabs?.value && Math.abs(delta) <= 32;\n if (!reduceMotion && shouldAnimate && delta !== 0 && 'animate' in tab.element) {\n tab.element.animate([{ transform: `translateX(${delta}px)` }, { transform: 'translateX(0)' }], {\n duration: 180,\n easing: 'cubic-bezier(0.32, 0.72, 0, 1)',\n });\n }\n nextPositions.set(tab.value, left);\n }\n for (const value of nextPositions.keys()) {\n if (!measurements.some(tab => tab.value === value)) nextPositions.delete(value);\n }\n tabPositions.current = nextPositions;\n }, [hiddenValues, measurements, tabs?.value]);\n useLayoutEffect(() => {\n const previousValue = selectedValue.current;\n selectedValue.current = tabs?.value;\n const reduceMotion = window.matchMedia?.('(prefers-reduced-motion: reduce)').matches ?? false;\n if (!contained || tabs?.frame !== 'inset' || previousValue === tabs?.value || reduceMotion) return;\n const indicator = scrollRef.current?.querySelector<HTMLElement>('[data-slot=\"tabs-indicator\"]');\n if (!indicator || !('animate' in indicator)) return;\n indicator.animate(\n [\n { opacity: 0.72, scale: '0.97' },\n { opacity: 1, scale: '1' },\n ],\n {\n duration: 140,\n easing: 'cubic-bezier(0.32, 0.72, 0, 1)',\n },\n );\n }, [contained, tabs?.frame, tabs?.value]);\n\n return (\n <TabListContext.Provider value={listContext}>\n <TooltipProvider delay={200}>\n <div\n ref={scrollRef}\n data-slot=\"tabs-list-scroll\"\n className={cn('relative w-full overflow-x-auto', sticky && 'sticky top-0 z-10 bg-background')}\n >\n <BaseTabs.List\n data-slot=\"tabs-list\"\n data-overflow={hiddenTabs.length > 0 || undefined}\n data-variant={resolvedVariant}\n data-size={size}\n className={cn('group/tabs-list', tabListVariants({ variant: resolvedVariant }), className)}\n style={style}\n >\n {children}\n <BaseTabs.Indicator\n className={cn(\n 'absolute top-1/2 left-0 z-0 rounded-full bg-[var(--tab-indicator-color,var(--fill-hover))]',\n resolvedVariant === 'pill' ? 'h-[calc(100%-0.5rem)]' : 'h-full',\n 'w-[var(--active-tab-width)]',\n 'transition-[width,transform] duration-200 ease-in-out motion-reduce:transition-none',\n )}\n data-slot=\"tabs-indicator\"\n style={{ transform: 'translateY(var(--tabs-indicator-y, -50%)) translateX(var(--active-tab-left))' }}\n />\n </BaseTabs.List>\n <div data-slot=\"tabs-close-actions\">\n {visibleClosableTabs.map(tab => (\n <div\n key={tab.value}\n ref={element => {\n if (element) closeRefs.current.set(tab.value, element);\n else closeRefs.current.delete(tab.value);\n }}\n data-slot=\"tab-close-item\"\n data-visible={tabs?.value === tab.value || undefined}\n >\n <Tooltip>\n <TooltipTrigger\n render={\n <button\n type=\"button\"\n tabIndex={tabs?.value === tab.value ? 0 : -1}\n data-slot=\"tab-close\"\n onClick={tab.onClose}\n className={cn(\n 'rounded p-0.5 hover:bg-fill-hover hover:text-destructive-foreground',\n transitions.colors,\n )}\n />\n }\n >\n <span className=\"sr-only\">Close {tab.label}</span>\n <X aria-hidden=\"true\" className=\"size-3\" />\n </TooltipTrigger>\n <TooltipContent>Close {tab.label}</TooltipContent>\n </Tooltip>\n </div>\n ))}\n </div>\n {hiddenTabs.length > 0 && (\n <div\n data-slot=\"tabs-overflow\"\n style={{ transform: `translateX(${overflowX}px)` }}\n className=\"tabs-overflow\"\n >\n <DropdownMenu>\n <DropdownMenu.Trigger\n aria-label={`${hiddenTabs.length} more tabs`}\n variant=\"ghost\"\n size=\"sm\"\n className=\"tabular-nums\"\n >\n +{hiddenTabs.length}\n <ChevronDown aria-hidden=\"true\" className=\"size-3\" />\n </DropdownMenu.Trigger>\n <DropdownMenu.Content className=\"grid\">\n {hiddenTabs.map((tab, index) => (\n <Fragment key={tab.value}>\n <DropdownMenu.Item\n data-slot=\"tabs-overflow-tab\"\n disabled={tab.disabled}\n className={tab.onClose ? 'pr-9' : undefined}\n style={{ gridArea: `${index + 1} / 1` }}\n onClick={() => {\n tabs?.select(tab.value);\n tab.onClick?.();\n }}\n >\n {tab.label}\n </DropdownMenu.Item>\n {tab.onClose ? (\n <Tooltip>\n <TooltipTrigger\n render={\n <DropdownMenu.Item\n data-slot=\"tabs-overflow-close\"\n className=\"pointer-events-none z-10 m-1 size-6 self-center justify-self-end p-0 opacity-0 hover:text-destructive-foreground data-[highlighted]:text-destructive-foreground\"\n style={{ gridArea: `${index + 1} / 1` }}\n onClick={tab.onClose}\n />\n }\n >\n <span className=\"sr-only\">Close {tab.label}</span>\n <X aria-hidden=\"true\" className=\"size-3\" />\n </TooltipTrigger>\n <TooltipContent side=\"right\">Close {tab.label}</TooltipContent>\n </Tooltip>\n ) : null}\n </Fragment>\n ))}\n </DropdownMenu.Content>\n </DropdownMenu>\n </div>\n )}\n </div>\n </TooltipProvider>\n </TabListContext.Provider>\n );\n};\n","import { Tabs as BaseTabs } from '@base-ui/react/tabs';\nimport { useState } from 'react';\nimport type { ComponentProps, ReactNode } from 'react';\nimport { TabsContext } from './tabs-context';\nimport './tabs.css';\nimport { cn } from '@/lib/utils';\n\nexport type TabsRootProps<T extends string> = Omit<\n ComponentProps<'div'>,\n 'children' | 'defaultValue' | 'value' | 'onChange'\n> & {\n children: ReactNode;\n defaultTab: T;\n value?: T;\n onValueChange?: (value: T) => void;\n appearance?: 'default' | 'contained';\n frame?: 'stroke' | 'inset';\n className?: string;\n};\n\nexport const Tabs = <T extends string>({\n children,\n defaultTab,\n value,\n onValueChange,\n appearance = 'default',\n frame = 'stroke',\n className,\n ...props\n}: TabsRootProps<T>) => {\n const [uncontrolledValue, setUncontrolledValue] = useState(defaultTab);\n const selectedValue = value ?? uncontrolledValue;\n const select = (next: T) => {\n setUncontrolledValue(next);\n onValueChange?.(next);\n };\n return (\n <TabsContext.Provider value={{ appearance, frame, value: selectedValue, select }}>\n <BaseTabs.Root\n defaultValue={defaultTab}\n value={selectedValue}\n onValueChange={select}\n data-slot=\"tabs\"\n data-appearance={appearance}\n data-frame={frame}\n className={cn('group/tabs', appearance === 'default' ? 'overflow-y-auto' : 'w-full min-w-0', className)}\n {...props}\n >\n {children}\n </BaseTabs.Root>\n </TabsContext.Provider>\n );\n};\n"],"names":["BaseTabs"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"tabs-tab-BmIBFifi.cjs","sources":["../src/ds/components/Tabs/tabs-context.ts","../src/ds/components/Tabs/tabs-tab.tsx"],"sourcesContent":["import { createContext } from 'react';\nimport type { ReactNode } from 'react';\n\nexport type TabMeasurement = {\n value: string;\n label: ReactNode;\n disabled: boolean;\n width: number;\n element: HTMLElement;\n onClick?: () => void;\n onClose?: () => void;\n};\n\nexport const TabsContext = createContext<{\n appearance: 'default' | 'contained';\n frame: 'stroke' | 'inset';\n value: string;\n select(value: string): void;\n} | null>(null);\n\nexport const TabListContext = createContext<{\n variant: 'line' | 'pill' | 'pill-ghost';\n size: 'sm' | 'md';\n hiddenValues: ReadonlySet<string>;\n register(tab: TabMeasurement): void;\n unregister(value: string): void;\n} | null>(null);\n","import { Tabs as BaseTabs } from '@base-ui/react/tabs';\nimport { useContext, useEffect, useRef } from 'react';\nimport { buttonVariants } from '../Button/Button';\nimport { Tooltip, TooltipContent, TooltipTrigger } from '../Tooltip/tooltip';\nimport { TabListContext } from './tabs-context';\nimport { controlSizeClasses } from '@/ds/primitives/control-size';\nimport { controlStateColorTransition, focusRing } from '@/ds/primitives/transitions';\nimport { quietTextHover } from '@/ds/primitives/typography';\nimport { cn } from '@/lib/utils';\n\nexport type TabProps = {\n children: React.ReactNode;\n value: string;\n onClick?: () => void;\n onClose?: () => void;\n disabled?: boolean;\n attention?: boolean;\n disabledTooltip?: React.ReactNode;\n className?: string;\n};\n\nexport const Tab = ({\n children,\n value,\n onClick,\n onClose,\n disabled,\n disabledTooltip,\n attention = false,\n className,\n}: TabProps) => {\n const list = useContext(TabListContext);\n const ref = useRef<HTMLDivElement>(null);\n const register = list?.register;\n const unregister = list?.unregister;\n const overflowed = list?.hiddenValues.has(value) ?? false;\n useEffect(() => {\n const element = ref.current;\n if (!element || !register) return;\n const measure = () =>\n register({\n value,\n label: children,\n disabled: disabled ?? false,\n width: element.getBoundingClientRect().width,\n element,\n onClick,\n onClose,\n });\n measure();\n if (!('ResizeObserver' in globalThis)) return;\n const observer = new ResizeObserver(measure);\n observer.observe(element);\n return () => observer.disconnect();\n }, [register, value, children, disabled, onClick, onClose]);\n useEffect(() => () => unregister?.(value), [unregister, value]);\n // The tab renders as a <div>, so the recipe's `disabled:` pseudo never matches; mirror it on the\n // aria/data attributes Base UI sets.\n const size = list?.size ?? 'md';\n const tabClassName =\n list?.variant === 'pill-ghost'\n ? cn(\n buttonVariants({ variant: 'ghost', size }),\n 'relative z-10 whitespace-nowrap',\n 'data-[active]:text-foreground',\n 'aria-disabled:cursor-not-allowed aria-disabled:opacity-50',\n 'data-[disabled]:cursor-not-allowed data-[disabled]:opacity-50',\n className,\n )\n : cn(\n // `sm` mirrors the `sm` button box so tabs sit level with sibling `size=\"sm\"` controls.\n size === 'sm' ? controlSizeClasses.sm : 'text-label',\n quietTextHover,\n attention && 'relative',\n 'flex cursor-pointer items-center justify-center gap-1.5 whitespace-nowrap outline-none',\n controlStateColorTransition,\n focusRing,\n 'data-[active]:text-foreground',\n 'disabled:cursor-not-allowed disabled:opacity-50 disabled:hover:text-muted-foreground',\n 'aria-disabled:cursor-not-allowed aria-disabled:opacity-50 aria-disabled:hover:text-muted-foreground',\n 'data-[disabled]:cursor-not-allowed data-[disabled]:opacity-50 data-[disabled]:hover:text-muted-foreground',\n className,\n );\n const tab = (\n <BaseTabs.Tab\n ref={ref}\n render={<div />}\n nativeButton={false}\n data-overflowed={overflowed || undefined}\n aria-hidden={overflowed || undefined}\n value={value}\n disabled={disabled || overflowed}\n data-slot=\"tab\"\n data-closable={onClose ? '' : undefined}\n className={tabClassName}\n onClick={onClick}\n >\n {children}\n {attention && (\n <>\n <span aria-hidden=\"true\" data-slot=\"tab-attention\" />\n <span className=\"sr-only\"> Needs attention</span>\n </>\n )}\n </BaseTabs.Tab>\n );\n if (disabled && disabledTooltip) {\n return (\n <Tooltip>\n <TooltipTrigger render={<span tabIndex={0} className=\"inline-flex\" />}>{tab}</TooltipTrigger>\n <TooltipContent>{disabledTooltip}</TooltipContent>\n </Tooltip>\n );\n }\n\n return tab;\n};\n"],"names":["createContext","useContext","useRef","useEffect","cn","buttonVariants","controlSizeClasses","quietTextHover","controlStateColorTransition","focusRing","jsxs","BaseTabs","Fragment","jsx","Tooltip","TooltipTrigger","TooltipContent"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"tabs-tab-DoPSW-1s.js","sources":["../src/ds/components/Tabs/tabs-context.ts","../src/ds/components/Tabs/tabs-tab.tsx"],"sourcesContent":["import { createContext } from 'react';\nimport type { ReactNode } from 'react';\n\nexport type TabMeasurement = {\n value: string;\n label: ReactNode;\n disabled: boolean;\n width: number;\n element: HTMLElement;\n onClick?: () => void;\n onClose?: () => void;\n};\n\nexport const TabsContext = createContext<{\n appearance: 'default' | 'contained';\n frame: 'stroke' | 'inset';\n value: string;\n select(value: string): void;\n} | null>(null);\n\nexport const TabListContext = createContext<{\n variant: 'line' | 'pill' | 'pill-ghost';\n size: 'sm' | 'md';\n hiddenValues: ReadonlySet<string>;\n register(tab: TabMeasurement): void;\n unregister(value: string): void;\n} | null>(null);\n","import { Tabs as BaseTabs } from '@base-ui/react/tabs';\nimport { useContext, useEffect, useRef } from 'react';\nimport { buttonVariants } from '../Button/Button';\nimport { Tooltip, TooltipContent, TooltipTrigger } from '../Tooltip/tooltip';\nimport { TabListContext } from './tabs-context';\nimport { controlSizeClasses } from '@/ds/primitives/control-size';\nimport { controlStateColorTransition, focusRing } from '@/ds/primitives/transitions';\nimport { quietTextHover } from '@/ds/primitives/typography';\nimport { cn } from '@/lib/utils';\n\nexport type TabProps = {\n children: React.ReactNode;\n value: string;\n onClick?: () => void;\n onClose?: () => void;\n disabled?: boolean;\n attention?: boolean;\n disabledTooltip?: React.ReactNode;\n className?: string;\n};\n\nexport const Tab = ({\n children,\n value,\n onClick,\n onClose,\n disabled,\n disabledTooltip,\n attention = false,\n className,\n}: TabProps) => {\n const list = useContext(TabListContext);\n const ref = useRef<HTMLDivElement>(null);\n const register = list?.register;\n const unregister = list?.unregister;\n const overflowed = list?.hiddenValues.has(value) ?? false;\n useEffect(() => {\n const element = ref.current;\n if (!element || !register) return;\n const measure = () =>\n register({\n value,\n label: children,\n disabled: disabled ?? false,\n width: element.getBoundingClientRect().width,\n element,\n onClick,\n onClose,\n });\n measure();\n if (!('ResizeObserver' in globalThis)) return;\n const observer = new ResizeObserver(measure);\n observer.observe(element);\n return () => observer.disconnect();\n }, [register, value, children, disabled, onClick, onClose]);\n useEffect(() => () => unregister?.(value), [unregister, value]);\n // The tab renders as a <div>, so the recipe's `disabled:` pseudo never matches; mirror it on the\n // aria/data attributes Base UI sets.\n const size = list?.size ?? 'md';\n const tabClassName =\n list?.variant === 'pill-ghost'\n ? cn(\n buttonVariants({ variant: 'ghost', size }),\n 'relative z-10 whitespace-nowrap',\n 'data-[active]:text-foreground',\n 'aria-disabled:cursor-not-allowed aria-disabled:opacity-50',\n 'data-[disabled]:cursor-not-allowed data-[disabled]:opacity-50',\n className,\n )\n : cn(\n // `sm` mirrors the `sm` button box so tabs sit level with sibling `size=\"sm\"` controls.\n size === 'sm' ? controlSizeClasses.sm : 'text-label',\n quietTextHover,\n attention && 'relative',\n 'flex cursor-pointer items-center justify-center gap-1.5 whitespace-nowrap outline-none',\n controlStateColorTransition,\n focusRing,\n 'data-[active]:text-foreground',\n 'disabled:cursor-not-allowed disabled:opacity-50 disabled:hover:text-muted-foreground',\n 'aria-disabled:cursor-not-allowed aria-disabled:opacity-50 aria-disabled:hover:text-muted-foreground',\n 'data-[disabled]:cursor-not-allowed data-[disabled]:opacity-50 data-[disabled]:hover:text-muted-foreground',\n className,\n );\n const tab = (\n <BaseTabs.Tab\n ref={ref}\n render={<div />}\n nativeButton={false}\n data-overflowed={overflowed || undefined}\n aria-hidden={overflowed || undefined}\n value={value}\n disabled={disabled || overflowed}\n data-slot=\"tab\"\n data-closable={onClose ? '' : undefined}\n className={tabClassName}\n onClick={onClick}\n >\n {children}\n {attention && (\n <>\n <span aria-hidden=\"true\" data-slot=\"tab-attention\" />\n <span className=\"sr-only\"> Needs attention</span>\n </>\n )}\n </BaseTabs.Tab>\n );\n if (disabled && disabledTooltip) {\n return (\n <Tooltip>\n <TooltipTrigger render={<span tabIndex={0} className=\"inline-flex\" />}>{tab}</TooltipTrigger>\n <TooltipContent>{disabledTooltip}</TooltipContent>\n </Tooltip>\n );\n }\n\n return tab;\n};\n"],"names":["BaseTabs"],"mappings":"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"}
|
|
@@ -1,54 +0,0 @@
|
|
|
1
|
-
import { jsx } from 'react/jsx-runtime';
|
|
2
|
-
import { useRef, useLayoutEffect, useState } from 'react';
|
|
3
|
-
import { c as cn } from './cn-65Adrsfj.js';
|
|
4
|
-
|
|
5
|
-
function CollapsibleBox({ state, children, className, style, ...props }) {
|
|
6
|
-
const { collapsedHeight, isExpanded, isClipped, setClipped } = state;
|
|
7
|
-
const contentRef = useRef(null);
|
|
8
|
-
useLayoutEffect(() => {
|
|
9
|
-
const element = contentRef.current;
|
|
10
|
-
if (!element) return;
|
|
11
|
-
const measure = () => setClipped(element.scrollHeight > collapsedHeight);
|
|
12
|
-
measure();
|
|
13
|
-
if (typeof ResizeObserver === "undefined") return;
|
|
14
|
-
const observer = new ResizeObserver(measure);
|
|
15
|
-
observer.observe(element);
|
|
16
|
-
return () => observer.disconnect();
|
|
17
|
-
}, [collapsedHeight, setClipped]);
|
|
18
|
-
const showClipHint = !isExpanded && isClipped;
|
|
19
|
-
return /* @__PURE__ */ jsx(
|
|
20
|
-
"div",
|
|
21
|
-
{
|
|
22
|
-
"data-slot": "collapsible-box",
|
|
23
|
-
...showClipHint ? { "data-clipped": "" } : {},
|
|
24
|
-
className: cn(
|
|
25
|
-
"relative min-w-0",
|
|
26
|
-
!isExpanded && "overflow-hidden",
|
|
27
|
-
showClipHint && "mask-b-from-60% mask-b-to-100%",
|
|
28
|
-
className
|
|
29
|
-
),
|
|
30
|
-
style: isExpanded ? style : { ...style, maxHeight: collapsedHeight },
|
|
31
|
-
...props,
|
|
32
|
-
children: /* @__PURE__ */ jsx("div", { ref: contentRef, children })
|
|
33
|
-
}
|
|
34
|
-
);
|
|
35
|
-
}
|
|
36
|
-
|
|
37
|
-
const DEFAULT_COLLAPSED_HEIGHT = 220;
|
|
38
|
-
function useCollapsibleBox({
|
|
39
|
-
collapsedHeight = DEFAULT_COLLAPSED_HEIGHT
|
|
40
|
-
} = {}) {
|
|
41
|
-
const [isExpanded, setExpanded] = useState(false);
|
|
42
|
-
const [isClipped, setClipped] = useState(false);
|
|
43
|
-
return {
|
|
44
|
-
collapsedHeight,
|
|
45
|
-
isExpanded,
|
|
46
|
-
isClipped,
|
|
47
|
-
setClipped,
|
|
48
|
-
setExpanded,
|
|
49
|
-
toggleExpanded: () => setExpanded((current) => !current)
|
|
50
|
-
};
|
|
51
|
-
}
|
|
52
|
-
|
|
53
|
-
export { CollapsibleBox as C, DEFAULT_COLLAPSED_HEIGHT as D, useCollapsibleBox as u };
|
|
54
|
-
//# sourceMappingURL=use-collapsible-box-CCvsF_a9.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"use-collapsible-box-CCvsF_a9.js","sources":["../src/ds/components/CollapsibleBox/collapsible-box.tsx","../src/ds/components/CollapsibleBox/use-collapsible-box.ts"],"sourcesContent":["import { useLayoutEffect, useRef } from 'react';\nimport type { ComponentProps } from 'react';\nimport type { CollapsibleBoxState } from './use-collapsible-box';\nimport { cn } from '@/lib/utils';\n\nexport interface CollapsibleBoxProps extends ComponentProps<'div'> {\n state: CollapsibleBoxState;\n}\n\n/**\n * Clips its content to `state.collapsedHeight` and fades the bottom when it overflows.\n * The overflow is measured on the rendered content, so it tracks resizes and late content.\n */\nexport function CollapsibleBox({ state, children, className, style, ...props }: CollapsibleBoxProps) {\n const { collapsedHeight, isExpanded, isClipped, setClipped } = state;\n const contentRef = useRef<HTMLDivElement>(null);\n\n useLayoutEffect(() => {\n const element = contentRef.current;\n if (!element) return;\n\n const measure = () => setClipped(element.scrollHeight > collapsedHeight);\n measure();\n\n if (typeof ResizeObserver === 'undefined') return;\n const observer = new ResizeObserver(measure);\n observer.observe(element);\n return () => observer.disconnect();\n }, [collapsedHeight, setClipped]);\n\n const showClipHint = !isExpanded && isClipped;\n\n return (\n <div\n data-slot=\"collapsible-box\"\n // The hint masks the content itself, so it reads correctly on any background.\n {...(showClipHint ? { 'data-clipped': '' } : {})}\n className={cn(\n 'relative min-w-0',\n !isExpanded && 'overflow-hidden',\n showClipHint && 'mask-b-from-60% mask-b-to-100%',\n className,\n )}\n style={isExpanded ? style : { ...style, maxHeight: collapsedHeight }}\n {...props}\n >\n <div ref={contentRef}>{children}</div>\n </div>\n );\n}\n","import { useState } from 'react';\n\nexport const DEFAULT_COLLAPSED_HEIGHT = 220;\n\nexport interface CollapsibleBoxState {\n collapsedHeight: number;\n isExpanded: boolean;\n /** Whether the rendered content overflows the collapsed height (measured, not estimated). */\n isClipped: boolean;\n setClipped: (clipped: boolean) => void;\n setExpanded: (expanded: boolean) => void;\n toggleExpanded: () => void;\n}\n\n/** State for a `CollapsibleBox`. Keep it next to your own expand control, which can live anywhere. */\nexport function useCollapsibleBox({\n collapsedHeight = DEFAULT_COLLAPSED_HEIGHT,\n}: { collapsedHeight?: number } = {}): CollapsibleBoxState {\n const [isExpanded, setExpanded] = useState(false);\n const [isClipped, setClipped] = useState(false);\n\n return {\n collapsedHeight,\n isExpanded,\n isClipped,\n setClipped,\n setExpanded,\n toggleExpanded: () => setExpanded(current => !current),\n };\n}\n"],"names":[],"mappings":";;;;AAaO,SAAS,cAAA,CAAe,EAAE,KAAA,EAAO,QAAA,EAAU,WAAW,KAAA,EAAO,GAAG,OAAM,EAAwB;AACnG,EAAA,MAAM,EAAE,eAAA,EAAiB,UAAA,EAAY,SAAA,EAAW,YAAW,GAAI,KAAA;AAC/D,EAAA,MAAM,UAAA,GAAa,OAAuB,IAAI,CAAA;AAE9C,EAAA,eAAA,CAAgB,MAAM;AACpB,IAAA,MAAM,UAAU,UAAA,CAAW,OAAA;AAC3B,IAAA,IAAI,CAAC,OAAA,EAAS;AAEd,IAAA,MAAM,OAAA,GAAU,MAAM,UAAA,CAAW,OAAA,CAAQ,eAAe,eAAe,CAAA;AACvE,IAAA,OAAA,EAAQ;AAER,IAAA,IAAI,OAAO,mBAAmB,WAAA,EAAa;AAC3C,IAAA,MAAM,QAAA,GAAW,IAAI,cAAA,CAAe,OAAO,CAAA;AAC3C,IAAA,QAAA,CAAS,QAAQ,OAAO,CAAA;AACxB,IAAA,OAAO,MAAM,SAAS,UAAA,EAAW;AAAA,EACnC,CAAA,EAAG,CAAC,eAAA,EAAiB,UAAU,CAAC,CAAA;AAEhC,EAAA,MAAM,YAAA,GAAe,CAAC,UAAA,IAAc,SAAA;AAEpC,EAAA,uBACE,GAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,WAAA,EAAU,iBAAA;AAAA,MAET,GAAI,YAAA,GAAe,EAAE,cAAA,EAAgB,EAAA,KAAO,EAAC;AAAA,MAC9C,SAAA,EAAW,EAAA;AAAA,QACT,kBAAA;AAAA,QACA,CAAC,UAAA,IAAc,iBAAA;AAAA,QACf,YAAA,IAAgB,gCAAA;AAAA,QAChB;AAAA,OACF;AAAA,MACA,OAAO,UAAA,GAAa,KAAA,GAAQ,EAAE,GAAG,KAAA,EAAO,WAAW,eAAA,EAAgB;AAAA,MAClE,GAAG,KAAA;AAAA,MAEJ,QAAA,kBAAA,GAAA,CAAC,KAAA,EAAA,EAAI,GAAA,EAAK,UAAA,EAAa,QAAA,EAAS;AAAA;AAAA,GAClC;AAEJ;;AC/CO,MAAM,wBAAA,GAA2B;AAajC,SAAS,iBAAA,CAAkB;AAAA,EAChC,eAAA,GAAkB;AACpB,CAAA,GAAkC,EAAC,EAAwB;AACzD,EAAA,MAAM,CAAC,UAAA,EAAY,WAAW,CAAA,GAAI,SAAS,KAAK,CAAA;AAChD,EAAA,MAAM,CAAC,SAAA,EAAW,UAAU,CAAA,GAAI,SAAS,KAAK,CAAA;AAE9C,EAAA,OAAO;AAAA,IACL,eAAA;AAAA,IACA,UAAA;AAAA,IACA,SAAA;AAAA,IACA,UAAA;AAAA,IACA,WAAA;AAAA,IACA,cAAA,EAAgB,MAAM,WAAA,CAAY,CAAA,OAAA,KAAW,CAAC,OAAO;AAAA,GACvD;AACF;;;;"}
|
|
@@ -1,58 +0,0 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
|
-
const jsxRuntime = require('react/jsx-runtime');
|
|
4
|
-
const React = require('react');
|
|
5
|
-
const utils_cn = require('./cn-DG0X1KEP.cjs');
|
|
6
|
-
|
|
7
|
-
function CollapsibleBox({ state, children, className, style, ...props }) {
|
|
8
|
-
const { collapsedHeight, isExpanded, isClipped, setClipped } = state;
|
|
9
|
-
const contentRef = React.useRef(null);
|
|
10
|
-
React.useLayoutEffect(() => {
|
|
11
|
-
const element = contentRef.current;
|
|
12
|
-
if (!element) return;
|
|
13
|
-
const measure = () => setClipped(element.scrollHeight > collapsedHeight);
|
|
14
|
-
measure();
|
|
15
|
-
if (typeof ResizeObserver === "undefined") return;
|
|
16
|
-
const observer = new ResizeObserver(measure);
|
|
17
|
-
observer.observe(element);
|
|
18
|
-
return () => observer.disconnect();
|
|
19
|
-
}, [collapsedHeight, setClipped]);
|
|
20
|
-
const showClipHint = !isExpanded && isClipped;
|
|
21
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
22
|
-
"div",
|
|
23
|
-
{
|
|
24
|
-
"data-slot": "collapsible-box",
|
|
25
|
-
...showClipHint ? { "data-clipped": "" } : {},
|
|
26
|
-
className: utils_cn.cn(
|
|
27
|
-
"relative min-w-0",
|
|
28
|
-
!isExpanded && "overflow-hidden",
|
|
29
|
-
showClipHint && "mask-b-from-60% mask-b-to-100%",
|
|
30
|
-
className
|
|
31
|
-
),
|
|
32
|
-
style: isExpanded ? style : { ...style, maxHeight: collapsedHeight },
|
|
33
|
-
...props,
|
|
34
|
-
children: /* @__PURE__ */ jsxRuntime.jsx("div", { ref: contentRef, children })
|
|
35
|
-
}
|
|
36
|
-
);
|
|
37
|
-
}
|
|
38
|
-
|
|
39
|
-
const DEFAULT_COLLAPSED_HEIGHT = 220;
|
|
40
|
-
function useCollapsibleBox({
|
|
41
|
-
collapsedHeight = DEFAULT_COLLAPSED_HEIGHT
|
|
42
|
-
} = {}) {
|
|
43
|
-
const [isExpanded, setExpanded] = React.useState(false);
|
|
44
|
-
const [isClipped, setClipped] = React.useState(false);
|
|
45
|
-
return {
|
|
46
|
-
collapsedHeight,
|
|
47
|
-
isExpanded,
|
|
48
|
-
isClipped,
|
|
49
|
-
setClipped,
|
|
50
|
-
setExpanded,
|
|
51
|
-
toggleExpanded: () => setExpanded((current) => !current)
|
|
52
|
-
};
|
|
53
|
-
}
|
|
54
|
-
|
|
55
|
-
exports.CollapsibleBox = CollapsibleBox;
|
|
56
|
-
exports.DEFAULT_COLLAPSED_HEIGHT = DEFAULT_COLLAPSED_HEIGHT;
|
|
57
|
-
exports.useCollapsibleBox = useCollapsibleBox;
|
|
58
|
-
//# sourceMappingURL=use-collapsible-box-CbQOkokQ.cjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"use-collapsible-box-CbQOkokQ.cjs","sources":["../src/ds/components/CollapsibleBox/collapsible-box.tsx","../src/ds/components/CollapsibleBox/use-collapsible-box.ts"],"sourcesContent":["import { useLayoutEffect, useRef } from 'react';\nimport type { ComponentProps } from 'react';\nimport type { CollapsibleBoxState } from './use-collapsible-box';\nimport { cn } from '@/lib/utils';\n\nexport interface CollapsibleBoxProps extends ComponentProps<'div'> {\n state: CollapsibleBoxState;\n}\n\n/**\n * Clips its content to `state.collapsedHeight` and fades the bottom when it overflows.\n * The overflow is measured on the rendered content, so it tracks resizes and late content.\n */\nexport function CollapsibleBox({ state, children, className, style, ...props }: CollapsibleBoxProps) {\n const { collapsedHeight, isExpanded, isClipped, setClipped } = state;\n const contentRef = useRef<HTMLDivElement>(null);\n\n useLayoutEffect(() => {\n const element = contentRef.current;\n if (!element) return;\n\n const measure = () => setClipped(element.scrollHeight > collapsedHeight);\n measure();\n\n if (typeof ResizeObserver === 'undefined') return;\n const observer = new ResizeObserver(measure);\n observer.observe(element);\n return () => observer.disconnect();\n }, [collapsedHeight, setClipped]);\n\n const showClipHint = !isExpanded && isClipped;\n\n return (\n <div\n data-slot=\"collapsible-box\"\n // The hint masks the content itself, so it reads correctly on any background.\n {...(showClipHint ? { 'data-clipped': '' } : {})}\n className={cn(\n 'relative min-w-0',\n !isExpanded && 'overflow-hidden',\n showClipHint && 'mask-b-from-60% mask-b-to-100%',\n className,\n )}\n style={isExpanded ? style : { ...style, maxHeight: collapsedHeight }}\n {...props}\n >\n <div ref={contentRef}>{children}</div>\n </div>\n );\n}\n","import { useState } from 'react';\n\nexport const DEFAULT_COLLAPSED_HEIGHT = 220;\n\nexport interface CollapsibleBoxState {\n collapsedHeight: number;\n isExpanded: boolean;\n /** Whether the rendered content overflows the collapsed height (measured, not estimated). */\n isClipped: boolean;\n setClipped: (clipped: boolean) => void;\n setExpanded: (expanded: boolean) => void;\n toggleExpanded: () => void;\n}\n\n/** State for a `CollapsibleBox`. Keep it next to your own expand control, which can live anywhere. */\nexport function useCollapsibleBox({\n collapsedHeight = DEFAULT_COLLAPSED_HEIGHT,\n}: { collapsedHeight?: number } = {}): CollapsibleBoxState {\n const [isExpanded, setExpanded] = useState(false);\n const [isClipped, setClipped] = useState(false);\n\n return {\n collapsedHeight,\n isExpanded,\n isClipped,\n setClipped,\n setExpanded,\n toggleExpanded: () => setExpanded(current => !current),\n };\n}\n"],"names":["useRef","useLayoutEffect","jsx","cn","useState"],"mappings":";;;;;;AAaO,SAAS,cAAA,CAAe,EAAE,KAAA,EAAO,QAAA,EAAU,WAAW,KAAA,EAAO,GAAG,OAAM,EAAwB;AACnG,EAAA,MAAM,EAAE,eAAA,EAAiB,UAAA,EAAY,SAAA,EAAW,YAAW,GAAI,KAAA;AAC/D,EAAA,MAAM,UAAA,GAAaA,aAAuB,IAAI,CAAA;AAE9C,EAAAC,qBAAA,CAAgB,MAAM;AACpB,IAAA,MAAM,UAAU,UAAA,CAAW,OAAA;AAC3B,IAAA,IAAI,CAAC,OAAA,EAAS;AAEd,IAAA,MAAM,OAAA,GAAU,MAAM,UAAA,CAAW,OAAA,CAAQ,eAAe,eAAe,CAAA;AACvE,IAAA,OAAA,EAAQ;AAER,IAAA,IAAI,OAAO,mBAAmB,WAAA,EAAa;AAC3C,IAAA,MAAM,QAAA,GAAW,IAAI,cAAA,CAAe,OAAO,CAAA;AAC3C,IAAA,QAAA,CAAS,QAAQ,OAAO,CAAA;AACxB,IAAA,OAAO,MAAM,SAAS,UAAA,EAAW;AAAA,EACnC,CAAA,EAAG,CAAC,eAAA,EAAiB,UAAU,CAAC,CAAA;AAEhC,EAAA,MAAM,YAAA,GAAe,CAAC,UAAA,IAAc,SAAA;AAEpC,EAAA,uBACEC,cAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,WAAA,EAAU,iBAAA;AAAA,MAET,GAAI,YAAA,GAAe,EAAE,cAAA,EAAgB,EAAA,KAAO,EAAC;AAAA,MAC9C,SAAA,EAAWC,WAAA;AAAA,QACT,kBAAA;AAAA,QACA,CAAC,UAAA,IAAc,iBAAA;AAAA,QACf,YAAA,IAAgB,gCAAA;AAAA,QAChB;AAAA,OACF;AAAA,MACA,OAAO,UAAA,GAAa,KAAA,GAAQ,EAAE,GAAG,KAAA,EAAO,WAAW,eAAA,EAAgB;AAAA,MAClE,GAAG,KAAA;AAAA,MAEJ,QAAA,kBAAAD,cAAA,CAAC,KAAA,EAAA,EAAI,GAAA,EAAK,UAAA,EAAa,QAAA,EAAS;AAAA;AAAA,GAClC;AAEJ;;AC/CO,MAAM,wBAAA,GAA2B;AAajC,SAAS,iBAAA,CAAkB;AAAA,EAChC,eAAA,GAAkB;AACpB,CAAA,GAAkC,EAAC,EAAwB;AACzD,EAAA,MAAM,CAAC,UAAA,EAAY,WAAW,CAAA,GAAIE,eAAS,KAAK,CAAA;AAChD,EAAA,MAAM,CAAC,SAAA,EAAW,UAAU,CAAA,GAAIA,eAAS,KAAK,CAAA;AAE9C,EAAA,OAAO;AAAA,IACL,eAAA;AAAA,IACA,UAAA;AAAA,IACA,SAAA;AAAA,IACA,UAAA;AAAA,IACA,WAAA;AAAA,IACA,cAAA,EAAgB,MAAM,WAAA,CAAY,CAAA,OAAA,KAAW,CAAC,OAAO;AAAA,GACvD;AACF;;;;;;"}
|